<?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>314460</bug_id>
          
          <creation_ts>2026-05-08 20:51:28 -0700</creation_ts>
          <short_desc>[cleanup] Rename aspect ratio helpers on RenderReplaced and RenderBox</short_desc>
          <delta_ts>2026-05-10 14:11:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>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="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2209261</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2026-05-08 20:51:28 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2209262</commentid>
    <comment_count>1</comment_count>
      <attachid>479539</attachid>
    <who name="alan">zalan</who>
    <bug_when>2026-05-08 20:54:05 -0700</bug_when>
    <thetext>Created attachment 479539
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2209395</commentid>
    <comment_count>2</comment_count>
      <attachid>479552</attachid>
    <who name="alan">zalan</who>
    <bug_when>2026-05-09 16:01:52 -0700</bug_when>
    <thetext>Created attachment 479552
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2209396</commentid>
    <comment_count>3</comment_count>
      <attachid>479553</attachid>
    <who name="alan">zalan</who>
    <bug_when>2026-05-09 16:03:04 -0700</bug_when>
    <thetext>Created attachment 479553
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2209410</commentid>
    <comment_count>4</comment_count>
      <attachid>479556</attachid>
    <who name="alan">zalan</who>
    <bug_when>2026-05-09 17:55:20 -0700</bug_when>
    <thetext>Created attachment 479556
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2209421</commentid>
    <comment_count>5</comment_count>
      <attachid>479561</attachid>
    <who name="alan">zalan</who>
    <bug_when>2026-05-09 18:35:49 -0700</bug_when>
    <thetext>Created attachment 479561
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2209503</commentid>
    <comment_count>6</comment_count>
      <attachid>479575</attachid>
    <who name="alan">zalan</who>
    <bug_when>2026-05-10 12:35:08 -0700</bug_when>
    <thetext>Created attachment 479575
[fast-cq]Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2209510</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2026-05-10 14:10:15 -0700</bug_when>
    <thetext>Committed 312974@main (1935c806544b): &lt;https://commits.webkit.org/312974@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 479575.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2209511</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2026-05-10 14:11:11 -0700</bug_when>
    <thetext>&lt;rdar://problem/176744202&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>479539</attachid>
            <date>2026-05-08 20:54:05 -0700</date>
            <delta_ts>2026-05-09 16:01:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-314460-20260508205404.patch</filename>
            <type>text/plain</type>
            <size>12821</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBiMjMwNzRiMzBiNzkzNjdjOGI3MzNiZWI3YTBhZDAyZTBmNzQ4NzU0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IEZyaSwgOCBNYXkgMjAyNiAyMDo1MDo0MyAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFJlbmFtZSBh
c3BlY3QgcmF0aW8gaGVscGVycyBvbiBSZW5kZXJSZXBsYWNlZCBhbmQgUmVuZGVyQm94CiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE0NDYwCgpSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KCi0gUmVtb3ZlIGNvbXB1dGVJbnRyaW5zaWNBc3BlY3RSYXRpbygpIC0t
IGl0IHdhcyBqdXN0CiAgcHJlZmVycmVkQXNwZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0RvdWJsZSgp
LiBJbmxpbmVkIGF0IGFsbCBjYWxsIHNpdGVzLgotIFJlbmFtZSByZXNvbHZlQXNwZWN0UmF0aW8o
KSB0byBhc3BlY3RSYXRpb1ZhbHVlKCkgLS0gaXQgZG9lcyBub3QgcmVzb2x2ZQogIGFueXRoaW5n
LCBqdXN0IHJldHVybnMgdGhlIGFwcGxpY2FibGUgcmF0aW8gYXMgYSBkb3VibGUuCi0gUmVuYW1l
IGlzUmVuZGVyUmVwbGFjZWRXaXRoSW50cmluc2ljUmF0aW8oKSB0bwogIGlzUmVwbGFjZWRXaXRo
UHJlZmVycmVkQXNwZWN0UmF0aW8oKSAtLSBjbGVhcmVyIGFib3V0IHdoYXQgaXQgY2hlY2tzLgoK
KiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKFdlYkNvcmU6OlJlbmRl
ckJveDo6Y29uc3RyYWluTG9naWNhbE1pbk1heFNpemVzQnlBc3BlY3RSYXRpbyBjb25zdCk6CihX
ZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVJbnRyaW5zaWNLZXl3b3JkTG9naWNhbFdpZHRocyBj
b25zdCk6CihXZWJDb3JlOjpSZW5kZXJCb3g6OmlzUmVwbGFjZWRXaXRoUHJlZmVycmVkQXNwZWN0
UmF0aW8gY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyQm94Ojphc3BlY3RSYXRpb1ZhbHVlIGNvbnN0
KToKKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZU1pbk1heExvZ2ljYWxXaWR0aEZyb21Bc3Bl
Y3RSYXRpbyBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVNaW5NYXhMb2dpY2Fs
SGVpZ2h0RnJvbUFzcGVjdFJhdGlvIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckJveDo6aXNSZW5k
ZXJSZXBsYWNlZFdpdGhJbnRyaW5zaWNSYXRpbyBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpS
ZW5kZXJCb3g6OnJlc29sdmVBc3BlY3RSYXRpbyBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGbGV4aWJsZUJveC5jcHA6CihXZWJDb3JlOjppc1NWR1Jvb3RXaXRoSW50cmluc2ljQXNw
ZWN0UmF0aW8pOgooV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OnByZWZlcnJlZEFzcGVjdFJh
dGlvRm9yRmxleEl0ZW0gY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
ZXBsYWNlZC5jcHA6CihXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUFzcGVjdFJhdGlv
QWRqdXN0ZWRJbnRyaW5zaWNMb2dpY2FsV2lkdGhzIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclJl
cGxhY2VkOjpjb21wdXRlSW50cmluc2ljS2V5d29yZExvZ2ljYWxXaWR0aHMgY29uc3QpOgooV2Vi
Q29yZTo6UmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVJbnRyaW5zaWNBc3BlY3RSYXRpbyBjb25zdCk6
IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmg6Ciog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcDoKKFdlYkNvcmU6
OlJlbmRlclNWR1Jvb3Q6Omhhc0ludHJpbnNpY0FzcGVjdFJhdGlvIGNvbnN0KToKKiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lSZW5kZXJTVkdSb290LmNwcDoKKFdl
YkNvcmU6OkxlZ2FjeVJlbmRlclNWR1Jvb3Q6Omhhc0ludHJpbnNpY0FzcGVjdFJhdGlvIGNvbnN0
KToKLS0tCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCAgICAgICAgfCAy
MCArKysrKysrKystLS0tLS0tLS0tCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmggICAgICAgICAgfCAgNCArKy0tCiAuLi4vV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGli
bGVCb3guY3BwICAgfCAgNiArKystLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
ZXBsYWNlZC5jcHAgICB8ICA5ICsrLS0tLS0tLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlcGxhY2VkLmggICAgIHwgIDEgLQogLi4uL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSb290LmNwcCAgIHwgIDIgKy0KIC4uLi9zdmcvbGVnYWN5L0xlZ2FjeVJlbmRlclNWR1Jv
b3QuY3BwICAgICAgICB8ICAyICstCiA3IGZpbGVzIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKyks
IDI1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5k
ZXggM2Q0MjQ2ZWM1M2I2Li5iZTUzZDE3NWNjY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guY3BwCkBAIC03MTEsNyArNzExLDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbnN0cmFp
bkxvZ2ljYWxNaW5NYXhTaXplc0J5QXNwZWN0UmF0aW8oTGF5b3V0VW5pdCYgY29tcHV0ZWRNaW4K
ICAgICAvLyBhIHNpemUgb2YgdGhlIGluaXRpYWwgY29udGFpbmluZyBibG9jayBhbmQgdGhlIOKA
nHN0cmV0Y2gtZml04oCdIHNpemluZyBvZiBub24tcmVwbGFjZWQgYmxvY2tzIGlmIHRoZXkgaGF2
ZSBkZWZpbml0ZSB2YWx1ZXMuCiAgICAgLy8gU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3Mt
c2l6aW5nLTMvI2RlZmluaXRlCiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlVG9Vc2UgPSBz
dHlsZSgpOwotICAgIEFTU0VSVChzdHlsZVRvVXNlLmFzcGVjdFJhdGlvKCkuaGFzUmF0aW8oKSB8
fCBpc1JlbmRlclJlcGxhY2VkV2l0aEludHJpbnNpY1JhdGlvKCkpOworICAgIEFTU0VSVChzdHls
ZVRvVXNlLmFzcGVjdFJhdGlvKCkuaGFzUmF0aW8oKSB8fCBpc1JlcGxhY2VkV2l0aFByZWZlcnJl
ZEFzcGVjdFJhdGlvKCkpOwogICAgIGF1dG8gbG9naWNhbFNpemUgPSBkaW1lbnNpb24gPT0gQ29u
c3RyYWluRGltZW5zaW9uOjpXaWR0aCA/IHN0eWxlVG9Vc2UubG9naWNhbFdpZHRoKCkgOiBzdHls
ZVRvVXNlLmxvZ2ljYWxIZWlnaHQoKTsKICAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvY3Nz
LXNpemluZy00LyNhc3BlY3QtcmF0aW8tbWluaW11bQogICAgIGlmIChtaW5pbXVtU2l6ZVR5cGUg
PT0gTWluaW11bVNpemVJc0F1dG9tYXRpY0NvbnRlbnRCYXNlZDo6WWVzKSB7CkBAIC0yOTU0LDEx
ICsyOTU0LDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIEtleXdvcmQ+IHZvaWQgUmVuZGVyQm94Ojpj
b21wdXRlSW50cmluc2ljS2V5d29yZExvZ2ljYWxXaWR0aHMoCiAgICAgICAgICAgICAgICAgbWlu
TG9naWNhbFdpZHRoID0gc3RkOjptYXgobWluTG9naWNhbFdpZHRoLCBtaW5DaGlsZHJlbkxvZ2lj
YWxXaWR0aCk7CiAgICAgICAgICAgICAgICAgbWF4TG9naWNhbFdpZHRoID0gc3RkOjptYXgobWF4
TG9naWNhbFdpZHRoLCBtYXhDaGlsZHJlbkxvZ2ljYWxXaWR0aCk7CiAgICAgICAgICAgICB9Ci0g
ICAgICAgIH0gZWxzZSBpZiAoaXNSZW5kZXJSZXBsYWNlZFdpdGhJbnRyaW5zaWNSYXRpbygpICYm
IHN0eWxlKCkubG9naWNhbEhlaWdodCgpLmlzU3BlY2lmaWVkKCkpIHsKKyAgICAgICAgfSBlbHNl
IGlmIChpc1JlcGxhY2VkV2l0aFByZWZlcnJlZEFzcGVjdFJhdGlvKCkgJiYgc3R5bGUoKS5sb2dp
Y2FsSGVpZ2h0KCkuaXNTcGVjaWZpZWQoKSkgewogICAgICAgICAgICAgLy8gRm9yIHJlcGxhY2Vk
IGVsZW1lbnRzIHdpdGggYW4gaW50cmluc2ljIGFzcGVjdCByYXRpbyAoZS5nLiA8aW1nPikgYW5k
IGEKICAgICAgICAgICAgIC8vIHNwZWNpZmllZCBibG9jayBzaXplLCBjb21wdXRlIHRoZSB0cmFu
c2ZlcnJlZCBtaW4vbWF4LWNvbnRlbnQgaW5saW5lIHNpemUKICAgICAgICAgICAgIC8vIHRocm91
Z2ggdGhlIGludHJpbnNpYyByYXRpbyByYXRoZXIgdGhhbiB1c2luZyB0aGUgcmF3IG5hdHVyYWwg
d2lkdGguCi0gICAgICAgICAgICBhdXRvIGludHJpbnNpY1JhdGlvID0gZG93bmNhc3Q8UmVuZGVy
UmVwbGFjZWQ+KCp0aGlzKS5jb21wdXRlSW50cmluc2ljQXNwZWN0UmF0aW8oKTsKKyAgICAgICAg
ICAgIGF1dG8gaW50cmluc2ljUmF0aW8gPSBkb3duY2FzdDxSZW5kZXJSZXBsYWNlZD4oKnRoaXMp
LnByZWZlcnJlZEFzcGVjdFJhdGlvKCkuYXNwZWN0UmF0aW9Eb3VibGUoKTsKICAgICAgICAgICAg
IGF1dG8gY29tcHV0ZWRWYWx1ZXMgPSBjb21wdXRlTG9naWNhbEhlaWdodChsb2dpY2FsSGVpZ2h0
KCksIGxvZ2ljYWxUb3AoKSk7CiAgICAgICAgICAgICBhdXRvIGNvbnRlbnRCbG9ja1NpemUgPSBz
dGQ6Om1heCgwX2x1LCBjb21wdXRlZFZhbHVlcy5leHRlbnQgLSBib3JkZXJBbmRQYWRkaW5nTG9n
aWNhbEhlaWdodCgpKTsKICAgICAgICAgICAgIG1pbkxvZ2ljYWxXaWR0aCA9IG1heExvZ2ljYWxX
aWR0aCA9IExheW91dFVuaXQoY29udGVudEJsb2NrU2l6ZSAqIGludHJpbnNpY1JhdGlvKTsKQEAg
LTUyNzQsMTcgKzUyNzQsMTcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2Fs
V2lkdGhGcm9tQXNwZWN0UmF0aW8oKSBjb25zdAogICAgIHJldHVybiBjb25zdHJhaW5Mb2dpY2Fs
V2lkdGhCeU1pbk1heChsb2dpY2FsV2lkdGgsIGNvbnRhaW5lcldpZHRoSW5JbmxpbmVEaXJlY3Rp
b24sICpjb250YWluaW5nQmxvY2soKSwgQWxsb3dJbnRyaW5zaWM6Ok5vKTsKIH0KIAotYm9vbCBS
ZW5kZXJCb3g6OmlzUmVuZGVyUmVwbGFjZWRXaXRoSW50cmluc2ljUmF0aW8oKSBjb25zdAorYm9v
bCBSZW5kZXJCb3g6OmlzUmVwbGFjZWRXaXRoUHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdAog
ewogICAgIGlmIChhdXRvKiByZXBsYWNlZCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJSZXBsYWNl
ZD4odGhpcykpCi0gICAgICAgIHJldHVybiByZXBsYWNlZC0+Y29tcHV0ZUludHJpbnNpY0FzcGVj
dFJhdGlvKCk7CisgICAgICAgIHJldHVybiByZXBsYWNlZC0+cHJlZmVycmVkQXNwZWN0UmF0aW8o
KS5hc3BlY3RSYXRpb0RvdWJsZSgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RkOjpvcHRp
b25hbDxkb3VibGU+IFJlbmRlckJveDo6cmVzb2x2ZUFzcGVjdFJhdGlvKCkgY29uc3QKK3N0ZDo6
b3B0aW9uYWw8ZG91YmxlPiBSZW5kZXJCb3g6OmFzcGVjdFJhdGlvVmFsdWUoKSBjb25zdAogewot
ICAgIGlmIChhdXRvKiByZXBsYWNlZEVsZW1lbnQgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyUmVw
bGFjZWQ+KHRoaXMpKSAKLSAgICAgICAgcmV0dXJuIHJlcGxhY2VkRWxlbWVudC0+Y29tcHV0ZUlu
dHJpbnNpY0FzcGVjdFJhdGlvKCk7CisgICAgaWYgKENoZWNrZWRQdHIgcmVwbGFjZWRFbGVtZW50
ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclJlcGxhY2VkPih0aGlzKSkKKyAgICAgICAgcmV0dXJu
IHJlcGxhY2VkRWxlbWVudC0+cHJlZmVycmVkQXNwZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0RvdWJs
ZSgpOwogICAgIGlmIChzdHlsZSgpLmFzcGVjdFJhdGlvKCkuaGFzUmF0aW8oKSkKICAgICAgICAg
cmV0dXJuIHN0eWxlKCkubG9naWNhbEFzcGVjdFJhdGlvKCk7CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CkBAIC01Mjk1LDcgKzUyOTUsNyBAQCBzdGQ6OnBhaXI8TGF5b3V0VW5pdCwgTGF5b3V0
VW5pdD4gUmVuZGVyQm94Ojpjb21wdXRlTWluTWF4TG9naWNhbFdpZHRoRnJvbUFzcGVjdAogewog
ICAgIExheW91dFVuaXQgdHJhbnNmZXJyZWRNaW5TaXplID0gTGF5b3V0VW5pdCgpOwogICAgIExh
eW91dFVuaXQgdHJhbnNmZXJyZWRNYXhTaXplID0gTGF5b3V0VW5pdDo6bWF4KCk7Ci0gICAgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IGFzcGVjdFJhdGlvID0gcmVzb2x2ZUFzcGVjdFJhdGlvKCk7Cisg
ICAgYXV0byBhc3BlY3RSYXRpbyA9IGFzcGVjdFJhdGlvVmFsdWUoKTsKICAgICBpZiAoIWFzcGVj
dFJhdGlvKQogICAgICAgICByZXR1cm4geyB0cmFuc2ZlcnJlZE1pblNpemUsIHRyYW5zZmVycmVk
TWF4U2l6ZSB9OwogCkBAIC01MzE2LDcgKzUzMTYsNyBAQCBzdGQ6OnBhaXI8TGF5b3V0VW5pdCwg
TGF5b3V0VW5pdD4gUmVuZGVyQm94Ojpjb21wdXRlTWluTWF4TG9naWNhbEhlaWdodEZyb21Bc3Bl
YwogewogICAgIExheW91dFVuaXQgdHJhbnNmZXJyZWRNaW5TaXplID0gTGF5b3V0VW5pdCgpOwog
ICAgIExheW91dFVuaXQgdHJhbnNmZXJyZWRNYXhTaXplID0gTGF5b3V0VW5pdDo6bWF4KCk7Ci0g
ICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFzcGVjdFJhdGlvID0gcmVzb2x2ZUFzcGVjdFJhdGlv
KCk7CisgICAgYXV0byBhc3BlY3RSYXRpbyA9IGFzcGVjdFJhdGlvVmFsdWUoKTsKICAgICBpZiAo
IWFzcGVjdFJhdGlvKQogICAgICAgICByZXR1cm4geyB0cmFuc2ZlcnJlZE1pblNpemUsIHRyYW5z
ZmVycmVkTWF4U2l6ZSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXgg
MTg3OGM3ZGVmYmVlLi41NDJjOWFiZGJjMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmgKQEAgLTY4NSw5ICs2ODUsOSBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIGluY3JlbWVu
dFZpc3VhbGx5Tm9uRW1wdHlQaXhlbENvdW50SWZOZWVkZWQoY29uc3QgSW50U2l6ZSYpOwogCi0g
ICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHJlc29sdmVBc3BlY3RSYXRpbygpIGNvbnN0OworICAg
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhc3BlY3RSYXRpb1ZhbHVlKCkgY29uc3Q7CiAgICAgYm9v
bCBOT0RFTEVURSBzaG91bGRJZ25vcmVBc3BlY3RSYXRpbygpIGNvbnN0OwotICAgIGJvb2wgaXNS
ZW5kZXJSZXBsYWNlZFdpdGhJbnRyaW5zaWNSYXRpbygpIGNvbnN0OworICAgIGJvb2wgaXNSZXBs
YWNlZFdpdGhQcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0OwogICAgIGJvb2wgc2hvdWxkQ29t
cHV0ZUxvZ2ljYWxXaWR0aEZyb21Bc3BlY3RSYXRpbygpIGNvbnN0OwogICAgIGJvb2wgaXNSZXNv
bHZlYWJsZVN0cmV0Y2hTaXplKGNvbnN0IGF1dG8mIHNpemUpIGNvbnN0IHsgcmV0dXJuIHNpemUu
aXNTdHJldGNoKCkgJiYgY29udGFpbmluZ0Jsb2NrSGFzRGVmaW5pdGVCbG9ja1NpemUoKTsgfQog
ICAgIGJvb2wgaXNVbnJlc29sdmVhYmxlU3RyZXRjaFNpemUoY29uc3QgYXV0byYgc2l6ZSkgY29u
c3QgeyByZXR1cm4gc2l6ZS5pc1N0cmV0Y2goKSAmJiAhY29udGFpbmluZ0Jsb2NrSGFzRGVmaW5p
dGVCbG9ja1NpemUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4
aWJsZUJveC5jcHAKaW5kZXggNzRiM2UwYjhkMmNhLi4xZmVkOTZkMzg2ODYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcApAQCAtODc5LDcgKzg3
OSw3IEBAIHN0YXRpYyBib29sIGlzU1ZHUm9vdFdpdGhJbnRyaW5zaWNBc3BlY3RSYXRpbyhjb25z
dCBSZW5kZXJCb3gmIGZsZXhJdGVtKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgLy8gSXQn
cyBjb21tb24gZm9yIHNvbWUgcmVwbGFjZWQgZWxlbWVudHMsIHN1Y2ggYXMgU1ZHcywgdG8gaGF2
ZSBpbnRyaW5zaWMgYXNwZWN0IHJhdGlvcyBidXQgbm8gaW50cmluc2ljIHNpemVzLgogICAgIC8v
IFRoYXQncyB3aHkgaXQgaXNuJ3QgZW5vdWdoIGp1c3QgdG8gY2hlY2sgZm9yIGludHJpbnNpYyBz
aXplcyBpbiB0aG9zZSBjYXNlcy4KLSAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+
KGZsZXhJdGVtKS5jb21wdXRlSW50cmluc2ljQXNwZWN0UmF0aW8oKSA+IDA7CisgICAgcmV0dXJu
IGRvd25jYXN0PFJlbmRlclJlcGxhY2VkPihmbGV4SXRlbSkucHJlZmVycmVkQXNwZWN0UmF0aW8o
KS5hc3BlY3RSYXRpb0RvdWJsZSgpID4gMDsKIH07CiAKIHN0YXRpYyBib29sIGZsZXhJdGVtSGFz
QXNwZWN0UmF0aW8oY29uc3QgUmVuZGVyQm94JiBmbGV4SXRlbSkKQEAgLTEyNjIsMTEgKzEyNjIs
MTEgQEAgZG91YmxlIFJlbmRlckZsZXhpYmxlQm94OjpwcmVmZXJyZWRBc3BlY3RSYXRpb0ZvckZs
ZXhJdGVtKGNvbnN0IFJlbmRlckJveCYgZmxleEkKICAgICBhdXRvIGZsZXhJdGVtQXNwZWN0UmF0
aW8gPSBbJl0gewogICAgICAgICBhdXRvIGZsZXhJdGVtSW50cmluc2ljU2l6ZSA9IExheW91dFNp
emUgeyBmbGV4SXRlbS5pbnRyaW5zaWNMb2dpY2FsV2lkdGgoKSwgZmxleEl0ZW0uaW50cmluc2lj
TG9naWNhbEhlaWdodCgpIH07CiAgICAgICAgIGlmIChmbGV4SXRlbS5pc1JlbmRlck9yTGVnYWN5
UmVuZGVyU1ZHUm9vdCgpKQotICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlclJlcGxh
Y2VkPihmbGV4SXRlbSkuY29tcHV0ZUludHJpbnNpY0FzcGVjdFJhdGlvKCk7CisgICAgICAgICAg
ICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+KGZsZXhJdGVtKS5wcmVmZXJyZWRBc3Bl
Y3RSYXRpbygpLmFzcGVjdFJhdGlvRG91YmxlKCk7CiAgICAgICAgIGlmIChmbGV4SXRlbS5zdHls
ZSgpLmFzcGVjdFJhdGlvKCkuaXNSYXRpbygpIHx8IChmbGV4SXRlbS5zdHlsZSgpLmFzcGVjdFJh
dGlvKCkuaXNBdXRvQW5kUmF0aW8oKSAmJiBmbGV4SXRlbUludHJpbnNpY1NpemUuaXNFbXB0eSgp
KSkKICAgICAgICAgICAgIHJldHVybiBmbGV4SXRlbS5zdHlsZSgpLmxvZ2ljYWxBc3BlY3RSYXRp
bygpOwogICAgICAgICBpZiAoYXV0byogcmVwbGFjZWRFbGVtZW50ID0gZHluYW1pY0Rvd25jYXN0
PFJlbmRlclJlcGxhY2VkPihmbGV4SXRlbSkpCi0gICAgICAgICAgICByZXR1cm4gcmVwbGFjZWRF
bGVtZW50LT5jb21wdXRlSW50cmluc2ljQXNwZWN0UmF0aW8oKTsKKyAgICAgICAgICAgIHJldHVy
biByZXBsYWNlZEVsZW1lbnQtPnByZWZlcnJlZEFzcGVjdFJhdGlvKCkuYXNwZWN0UmF0aW9Eb3Vi
bGUoKTsKIAogICAgICAgICBBU1NFUlQoZmxleEl0ZW0uaW50cmluc2ljTG9naWNhbEhlaWdodCgp
KTsKICAgICAgICAgcmV0dXJuIGZsZXhJdGVtLmludHJpbnNpY0xvZ2ljYWxXaWR0aCgpLnRvRG91
YmxlKCkgLyBmbGV4SXRlbS5pbnRyaW5zaWNMb2dpY2FsSGVpZ2h0KCkudG9Eb3VibGUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCmluZGV4IGUzNzZkYmI1
NzJiNi4uNjUxMDZhOWYwMTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUmVwbGFjZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
ZXBsYWNlZC5jcHAKQEAgLTU1OCwxMSArNTU4LDYgQEAgTGF5b3V0UmVjdCBSZW5kZXJSZXBsYWNl
ZDo6cmVwbGFjZWRDb250ZW50UmVjdChjb25zdCBMYXlvdXRTaXplJiBpbnRyaW5zaWNTaXplKQog
ICAgIHJldHVybiBmaW5hbFJlY3Q7CiB9CiAKLWRvdWJsZSBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0
ZUludHJpbnNpY0FzcGVjdFJhdGlvKCkgY29uc3QKLXsKLSAgICByZXR1cm4gcHJlZmVycmVkQXNw
ZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0RvdWJsZSgpOwotfQotCiBGbG9hdFNpemUgUmVuZGVyUmVw
bGFjZWQ6OmNvbXB1dGVJbnRyaW5zaWNTaXplKCkgY29uc3QKIHsKICAgICByZXR1cm4geyBpbnRy
aW5zaWNMb2dpY2FsV2lkdGgoKSwgaW50cmluc2ljTG9naWNhbEhlaWdodCgpIH07CkBAIC02Mjks
NyArNjI0LDcgQEAgdm9pZCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUFzcGVjdFJhdGlvQWRqdXN0
ZWRJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgYXV0byYgc3R5bGUgPSB0aGlzLT5zdHlsZSgpOwotICAgIGF1dG8gY29tcHV0ZWRBc3BlY3RS
YXRpbyA9IGNvbXB1dGVJbnRyaW5zaWNBc3BlY3RSYXRpbygpOworICAgIGF1dG8gY29tcHV0ZWRB
c3BlY3RSYXRpbyA9IHByZWZlcnJlZEFzcGVjdFJhdGlvKCkuYXNwZWN0UmF0aW9Eb3VibGUoKTsK
ICAgICBhdXRvIGNvbXB1dGVkSW50cmluc2ljTG9naWNhbFdpZHRoID0gbWluTG9naWNhbFdpZHRo
OwogCiAgICAgaWYgKGF1dG8gZml4ZWRMb2dpY2FsSGVpZ2h0ID0gc3R5bGUubG9naWNhbEhlaWdo
dCgpLnRyeUZpeGVkKCkpCkBAIC04MDYsNyArODAxLDcgQEAgdm9pZCBSZW5kZXJSZXBsYWNlZDo6
Y29tcHV0ZUludHJpbnNpY0tleXdvcmRMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2lj
YWwKIHsKICAgICBpZiAoaGFzSW50cmluc2ljQXNwZWN0UmF0aW8oKSAmJiAhc3R5bGUoKS5sb2dp
Y2FsSGVpZ2h0KCkuaXNBdXRvKCkpIHsKICAgICAgICAgaWYgKGF1dG8gZml4ZWRIZWlnaHQgPSBz
dHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS50cnlGaXhlZCgpKSB7Ci0gICAgICAgICAgICBhdXRvIGhl
aWdodERlcml2ZWRXaWR0aCA9IExheW91dFVuaXQgeyBmaXhlZEhlaWdodC0+cmVzb2x2ZVpvb20o
c3R5bGUoKS51c2VkWm9vbUZvckxlbmd0aCgpKSAqIGNvbXB1dGVJbnRyaW5zaWNBc3BlY3RSYXRp
bygpIH07CisgICAgICAgICAgICBhdXRvIGhlaWdodERlcml2ZWRXaWR0aCA9IExheW91dFVuaXQg
eyBmaXhlZEhlaWdodC0+cmVzb2x2ZVpvb20oc3R5bGUoKS51c2VkWm9vbUZvckxlbmd0aCgpKSAq
IHByZWZlcnJlZEFzcGVjdFJhdGlvKCkuYXNwZWN0UmF0aW9Eb3VibGUoKSB9OwogICAgICAgICAg
ICAgbWluTG9naWNhbFdpZHRoID0gaGVpZ2h0RGVyaXZlZFdpZHRoOwogICAgICAgICAgICAgbWF4
TG9naWNhbFdpZHRoID0gaGVpZ2h0RGVyaXZlZFdpZHRoOwogICAgICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaAppbmRleCA2YjI2NjI0OGRk
MWMuLmI0NzRjM2Q2Y2QwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlcGxhY2VkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxh
Y2VkLmgKQEAgLTQ3LDcgKzQ3LDYgQEAgcHVibGljOgogICAgIGJvb2wgaXNDb250ZW50TGlrZWx5
VmlzaWJsZUluVmlld3BvcnQoKTsKICAgICBib29sIHNob3VsZEludmFsaWRhdGVQcmVmZXJyZWRX
aWR0aHMoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIGRvdWJsZSBjb21wdXRlSW50cmluc2ljQXNw
ZWN0UmF0aW8oKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBwYWludHNDb250ZW50KCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSb290LmNwcAppbmRleCA2ZDgxNGVlNzRlZmMuLmU2OTgwMjE2ZGU2ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCkBAIC05MSw3
ICs5MSw3IEBAIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyKiBSZW5kZXJTVkdSb290Ojp2aWV3
cG9ydENvbnRhaW5lcigpIGNvbnN0CiAKIGJvb2wgUmVuZGVyU1ZHUm9vdDo6aGFzSW50cmluc2lj
QXNwZWN0UmF0aW8oKSBjb25zdAogewotICAgIHJldHVybiBjb21wdXRlSW50cmluc2ljQXNwZWN0
UmF0aW8oKTsKKyAgICByZXR1cm4gcHJlZmVycmVkQXNwZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0Rv
dWJsZSgpOwogfQogCiBGbG9hdFNpemUgUmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUludHJpbnNpY1Np
emUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9sZWdh
Y3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L2xlZ2FjeS9MZWdhY3lSZW5kZXJTVkdSb290LmNwcAppbmRleCAzNmQzZTM4NTlkYjYuLmViYWI1
NmM4ZTNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9sZWdhY3kv
TGVnYWN5UmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9sZWdhY3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgU1ZHU1ZH
RWxlbWVudCYgTGVnYWN5UmVuZGVyU1ZHUm9vdDo6c3ZnU1ZHRWxlbWVudCgpIGNvbnN0CiAKIGJv
b2wgTGVnYWN5UmVuZGVyU1ZHUm9vdDo6aGFzSW50cmluc2ljQXNwZWN0UmF0aW8oKSBjb25zdAog
ewotICAgIHJldHVybiBjb21wdXRlSW50cmluc2ljQXNwZWN0UmF0aW8oKTsKKyAgICByZXR1cm4g
cHJlZmVycmVkQXNwZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0RvdWJsZSgpOwogfQogCiBGbG9hdFNp
emUgTGVnYWN5UmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUludHJpbnNpY1NpemUoKSBjb25zdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>479552</attachid>
            <date>2026-05-09 16:01:52 -0700</date>
            <delta_ts>2026-05-10 12:35:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-314460-20260509160151.patch</filename>
            <type>text/plain</type>
            <size>12785</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBmYmM4MTliMGI0YWMxMjVjMTk4N2RmZjE5NDE0ZTg4Njc5MmIyMWEwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IEZyaSwgOCBNYXkgMjAyNiAyMDo1MDo0MyAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFJlbmFtZSBh
c3BlY3QgcmF0aW8gaGVscGVycyBvbiBSZW5kZXJSZXBsYWNlZCBhbmQgUmVuZGVyQm94CiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE0NDYwCgpSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KCi0gUmVtb3ZlIGNvbXB1dGVJbnRyaW5zaWNBc3BlY3RSYXRpbygpIC0g
aXQgd2FzIGp1c3QgcHJlZmVycmVkQXNwZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0RvdWJsZSgpLgot
IFJlbmFtZSByZXNvbHZlQXNwZWN0UmF0aW8oKSB0byBhc3BlY3RSYXRpb1ZhbHVlKCkgLSBpdCBk
b2VzIG5vdCByZXNvbHZlIGFueXRoaW5nLCBqdXN0IHJldHVybnMgdGhlIGFwcGxpY2FibGUgcmF0
aW8gYXMgYSBkb3VibGUuCi0gUmVuYW1lIGlzUmVuZGVyUmVwbGFjZWRXaXRoSW50cmluc2ljUmF0
aW8oKSB0byBpc1JlcGxhY2VkV2l0aFByZWZlcnJlZEFzcGVjdFJhdGlvKCkgLSBjbGVhcmVyIGFi
b3V0IHdoYXQgaXQgY2hlY2tzLgoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcDoKKFdlYkNvcmU6OlJlbmRlckJveDo6Y29uc3RyYWluTG9naWNhbE1pbk1heFNpemVzQnlB
c3BlY3RSYXRpbyBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVJbnRyaW5zaWNL
ZXl3b3JkTG9naWNhbFdpZHRocyBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJCb3g6OmlzUmVwbGFj
ZWRXaXRoUHJlZmVycmVkQXNwZWN0UmF0aW8gY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyQm94Ojph
c3BlY3RSYXRpb1ZhbHVlIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZU1pbk1h
eExvZ2ljYWxXaWR0aEZyb21Bc3BlY3RSYXRpbyBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJCb3g6
OmNvbXB1dGVNaW5NYXhMb2dpY2FsSGVpZ2h0RnJvbUFzcGVjdFJhdGlvIGNvbnN0KToKKFdlYkNv
cmU6OlJlbmRlckJveDo6aXNSZW5kZXJSZXBsYWNlZFdpdGhJbnRyaW5zaWNSYXRpbyBjb25zdCk6
IERlbGV0ZWQuCihXZWJDb3JlOjpSZW5kZXJCb3g6OnJlc29sdmVBc3BlY3RSYXRpbyBjb25zdCk6
IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oOgoqIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHA6CihXZWJDb3JlOjppc1NW
R1Jvb3RXaXRoSW50cmluc2ljQXNwZWN0UmF0aW8pOgooV2ViQ29yZTo6UmVuZGVyRmxleGlibGVC
b3g6OnByZWZlcnJlZEFzcGVjdFJhdGlvRm9yRmxleEl0ZW0gY29uc3QpOgoqIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHA6CihXZWJDb3JlOjpSZW5kZXJSZXBsYWNl
ZDo6Y29tcHV0ZUFzcGVjdFJhdGlvQWRqdXN0ZWRJbnRyaW5zaWNMb2dpY2FsV2lkdGhzIGNvbnN0
KToKKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljS2V5d29yZExvZ2lj
YWxXaWR0aHMgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVJbnRyaW5z
aWNBc3BlY3RSYXRpbyBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJlcGxhY2VkLmg6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSb290LmNwcDoKKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6Omhhc0ludHJpbnNpY0FzcGVjdFJh
dGlvIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lS
ZW5kZXJTVkdSb290LmNwcDoKKFdlYkNvcmU6OkxlZ2FjeVJlbmRlclNWR1Jvb3Q6Omhhc0ludHJp
bnNpY0FzcGVjdFJhdGlvIGNvbnN0KToKLS0tCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcCAgICAgICAgfCAyMCArKysrKysrKystLS0tLS0tLS0tCiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggICAgICAgICAgfCAgNCArKy0tCiAuLi4vV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwICAgfCAgNiArKystLS0KIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAgICB8ICA5ICsrLS0tLS0tLQogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmggICAgIHwgIDEgLQogLi4uL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcCAgIHwgIDIgKy0KIC4uLi9zdmcvbGVn
YWN5L0xlZ2FjeVJlbmRlclNWR1Jvb3QuY3BwICAgICAgICB8ICAyICstCiA3IGZpbGVzIGNoYW5n
ZWQsIDE5IGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5jcHAKaW5kZXggM2Q0MjQ2ZWM1M2I2Li5iZTUzZDE3NWNjY2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC03MTEsNyArNzExLDcgQEAgdm9p
ZCBSZW5kZXJCb3g6OmNvbnN0cmFpbkxvZ2ljYWxNaW5NYXhTaXplc0J5QXNwZWN0UmF0aW8oTGF5
b3V0VW5pdCYgY29tcHV0ZWRNaW4KICAgICAvLyBhIHNpemUgb2YgdGhlIGluaXRpYWwgY29udGFp
bmluZyBibG9jayBhbmQgdGhlIOKAnHN0cmV0Y2gtZml04oCdIHNpemluZyBvZiBub24tcmVwbGFj
ZWQgYmxvY2tzIGlmIHRoZXkgaGF2ZSBkZWZpbml0ZSB2YWx1ZXMuCiAgICAgLy8gU2VlIGh0dHBz
Oi8vd3d3LnczLm9yZy9UUi9jc3Mtc2l6aW5nLTMvI2RlZmluaXRlCiAgICAgY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlVG9Vc2UgPSBzdHlsZSgpOwotICAgIEFTU0VSVChzdHlsZVRvVXNlLmFzcGVj
dFJhdGlvKCkuaGFzUmF0aW8oKSB8fCBpc1JlbmRlclJlcGxhY2VkV2l0aEludHJpbnNpY1JhdGlv
KCkpOworICAgIEFTU0VSVChzdHlsZVRvVXNlLmFzcGVjdFJhdGlvKCkuaGFzUmF0aW8oKSB8fCBp
c1JlcGxhY2VkV2l0aFByZWZlcnJlZEFzcGVjdFJhdGlvKCkpOwogICAgIGF1dG8gbG9naWNhbFNp
emUgPSBkaW1lbnNpb24gPT0gQ29uc3RyYWluRGltZW5zaW9uOjpXaWR0aCA/IHN0eWxlVG9Vc2Uu
bG9naWNhbFdpZHRoKCkgOiBzdHlsZVRvVXNlLmxvZ2ljYWxIZWlnaHQoKTsKICAgICAvLyBodHRw
czovL3d3dy53My5vcmcvVFIvY3NzLXNpemluZy00LyNhc3BlY3QtcmF0aW8tbWluaW11bQogICAg
IGlmIChtaW5pbXVtU2l6ZVR5cGUgPT0gTWluaW11bVNpemVJc0F1dG9tYXRpY0NvbnRlbnRCYXNl
ZDo6WWVzKSB7CkBAIC0yOTU0LDExICsyOTU0LDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIEtleXdv
cmQ+IHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlSW50cmluc2ljS2V5d29yZExvZ2ljYWxXaWR0aHMo
CiAgICAgICAgICAgICAgICAgbWluTG9naWNhbFdpZHRoID0gc3RkOjptYXgobWluTG9naWNhbFdp
ZHRoLCBtaW5DaGlsZHJlbkxvZ2ljYWxXaWR0aCk7CiAgICAgICAgICAgICAgICAgbWF4TG9naWNh
bFdpZHRoID0gc3RkOjptYXgobWF4TG9naWNhbFdpZHRoLCBtYXhDaGlsZHJlbkxvZ2ljYWxXaWR0
aCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNSZW5kZXJSZXBsYWNlZFdp
dGhJbnRyaW5zaWNSYXRpbygpICYmIHN0eWxlKCkubG9naWNhbEhlaWdodCgpLmlzU3BlY2lmaWVk
KCkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChpc1JlcGxhY2VkV2l0aFByZWZlcnJlZEFzcGVjdFJh
dGlvKCkgJiYgc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCkuaXNTcGVjaWZpZWQoKSkgewogICAgICAg
ICAgICAgLy8gRm9yIHJlcGxhY2VkIGVsZW1lbnRzIHdpdGggYW4gaW50cmluc2ljIGFzcGVjdCBy
YXRpbyAoZS5nLiA8aW1nPikgYW5kIGEKICAgICAgICAgICAgIC8vIHNwZWNpZmllZCBibG9jayBz
aXplLCBjb21wdXRlIHRoZSB0cmFuc2ZlcnJlZCBtaW4vbWF4LWNvbnRlbnQgaW5saW5lIHNpemUK
ICAgICAgICAgICAgIC8vIHRocm91Z2ggdGhlIGludHJpbnNpYyByYXRpbyByYXRoZXIgdGhhbiB1
c2luZyB0aGUgcmF3IG5hdHVyYWwgd2lkdGguCi0gICAgICAgICAgICBhdXRvIGludHJpbnNpY1Jh
dGlvID0gZG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+KCp0aGlzKS5jb21wdXRlSW50cmluc2ljQXNw
ZWN0UmF0aW8oKTsKKyAgICAgICAgICAgIGF1dG8gaW50cmluc2ljUmF0aW8gPSBkb3duY2FzdDxS
ZW5kZXJSZXBsYWNlZD4oKnRoaXMpLnByZWZlcnJlZEFzcGVjdFJhdGlvKCkuYXNwZWN0UmF0aW9E
b3VibGUoKTsKICAgICAgICAgICAgIGF1dG8gY29tcHV0ZWRWYWx1ZXMgPSBjb21wdXRlTG9naWNh
bEhlaWdodChsb2dpY2FsSGVpZ2h0KCksIGxvZ2ljYWxUb3AoKSk7CiAgICAgICAgICAgICBhdXRv
IGNvbnRlbnRCbG9ja1NpemUgPSBzdGQ6Om1heCgwX2x1LCBjb21wdXRlZFZhbHVlcy5leHRlbnQg
LSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpKTsKICAgICAgICAgICAgIG1pbkxvZ2lj
YWxXaWR0aCA9IG1heExvZ2ljYWxXaWR0aCA9IExheW91dFVuaXQoY29udGVudEJsb2NrU2l6ZSAq
IGludHJpbnNpY1JhdGlvKTsKQEAgLTUyNzQsMTcgKzUyNzQsMTcgQEAgTGF5b3V0VW5pdCBSZW5k
ZXJCb3g6OmNvbXB1dGVMb2dpY2FsV2lkdGhGcm9tQXNwZWN0UmF0aW8oKSBjb25zdAogICAgIHJl
dHVybiBjb25zdHJhaW5Mb2dpY2FsV2lkdGhCeU1pbk1heChsb2dpY2FsV2lkdGgsIGNvbnRhaW5l
cldpZHRoSW5JbmxpbmVEaXJlY3Rpb24sICpjb250YWluaW5nQmxvY2soKSwgQWxsb3dJbnRyaW5z
aWM6Ok5vKTsKIH0KIAotYm9vbCBSZW5kZXJCb3g6OmlzUmVuZGVyUmVwbGFjZWRXaXRoSW50cmlu
c2ljUmF0aW8oKSBjb25zdAorYm9vbCBSZW5kZXJCb3g6OmlzUmVwbGFjZWRXaXRoUHJlZmVycmVk
QXNwZWN0UmF0aW8oKSBjb25zdAogewogICAgIGlmIChhdXRvKiByZXBsYWNlZCA9IGR5bmFtaWNE
b3duY2FzdDxSZW5kZXJSZXBsYWNlZD4odGhpcykpCi0gICAgICAgIHJldHVybiByZXBsYWNlZC0+
Y29tcHV0ZUludHJpbnNpY0FzcGVjdFJhdGlvKCk7CisgICAgICAgIHJldHVybiByZXBsYWNlZC0+
cHJlZmVycmVkQXNwZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0RvdWJsZSgpOwogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotc3RkOjpvcHRpb25hbDxkb3VibGU+IFJlbmRlckJveDo6cmVzb2x2ZUFzcGVj
dFJhdGlvKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8ZG91YmxlPiBSZW5kZXJCb3g6OmFzcGVjdFJh
dGlvVmFsdWUoKSBjb25zdAogewotICAgIGlmIChhdXRvKiByZXBsYWNlZEVsZW1lbnQgPSBkeW5h
bWljRG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+KHRoaXMpKSAKLSAgICAgICAgcmV0dXJuIHJlcGxh
Y2VkRWxlbWVudC0+Y29tcHV0ZUludHJpbnNpY0FzcGVjdFJhdGlvKCk7CisgICAgaWYgKENoZWNr
ZWRQdHIgcmVwbGFjZWRFbGVtZW50ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclJlcGxhY2VkPih0
aGlzKSkKKyAgICAgICAgcmV0dXJuIHJlcGxhY2VkRWxlbWVudC0+cHJlZmVycmVkQXNwZWN0UmF0
aW8oKS5hc3BlY3RSYXRpb0RvdWJsZSgpOwogICAgIGlmIChzdHlsZSgpLmFzcGVjdFJhdGlvKCku
aGFzUmF0aW8oKSkKICAgICAgICAgcmV0dXJuIHN0eWxlKCkubG9naWNhbEFzcGVjdFJhdGlvKCk7
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01Mjk1LDcgKzUyOTUsNyBAQCBzdGQ6OnBh
aXI8TGF5b3V0VW5pdCwgTGF5b3V0VW5pdD4gUmVuZGVyQm94Ojpjb21wdXRlTWluTWF4TG9naWNh
bFdpZHRoRnJvbUFzcGVjdAogewogICAgIExheW91dFVuaXQgdHJhbnNmZXJyZWRNaW5TaXplID0g
TGF5b3V0VW5pdCgpOwogICAgIExheW91dFVuaXQgdHJhbnNmZXJyZWRNYXhTaXplID0gTGF5b3V0
VW5pdDo6bWF4KCk7Ci0gICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFzcGVjdFJhdGlvID0gcmVz
b2x2ZUFzcGVjdFJhdGlvKCk7CisgICAgYXV0byBhc3BlY3RSYXRpbyA9IGFzcGVjdFJhdGlvVmFs
dWUoKTsKICAgICBpZiAoIWFzcGVjdFJhdGlvKQogICAgICAgICByZXR1cm4geyB0cmFuc2ZlcnJl
ZE1pblNpemUsIHRyYW5zZmVycmVkTWF4U2l6ZSB9OwogCkBAIC01MzE2LDcgKzUzMTYsNyBAQCBz
dGQ6OnBhaXI8TGF5b3V0VW5pdCwgTGF5b3V0VW5pdD4gUmVuZGVyQm94Ojpjb21wdXRlTWluTWF4
TG9naWNhbEhlaWdodEZyb21Bc3BlYwogewogICAgIExheW91dFVuaXQgdHJhbnNmZXJyZWRNaW5T
aXplID0gTGF5b3V0VW5pdCgpOwogICAgIExheW91dFVuaXQgdHJhbnNmZXJyZWRNYXhTaXplID0g
TGF5b3V0VW5pdDo6bWF4KCk7Ci0gICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFzcGVjdFJhdGlv
ID0gcmVzb2x2ZUFzcGVjdFJhdGlvKCk7CisgICAgYXV0byBhc3BlY3RSYXRpbyA9IGFzcGVjdFJh
dGlvVmFsdWUoKTsKICAgICBpZiAoIWFzcGVjdFJhdGlvKQogICAgICAgICByZXR1cm4geyB0cmFu
c2ZlcnJlZE1pblNpemUsIHRyYW5zZmVycmVkTWF4U2l6ZSB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmgKaW5kZXggMTg3OGM3ZGVmYmVlLi41NDJjOWFiZGJjMjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTY4NSw5ICs2ODUsOSBAQCBwcm90ZWN0ZWQ6
CiAKICAgICB2b2lkIGluY3JlbWVudFZpc3VhbGx5Tm9uRW1wdHlQaXhlbENvdW50SWZOZWVkZWQo
Y29uc3QgSW50U2l6ZSYpOwogCi0gICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHJlc29sdmVBc3Bl
Y3RSYXRpbygpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhc3BlY3RSYXRpb1Zh
bHVlKCkgY29uc3Q7CiAgICAgYm9vbCBOT0RFTEVURSBzaG91bGRJZ25vcmVBc3BlY3RSYXRpbygp
IGNvbnN0OwotICAgIGJvb2wgaXNSZW5kZXJSZXBsYWNlZFdpdGhJbnRyaW5zaWNSYXRpbygpIGNv
bnN0OworICAgIGJvb2wgaXNSZXBsYWNlZFdpdGhQcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0
OwogICAgIGJvb2wgc2hvdWxkQ29tcHV0ZUxvZ2ljYWxXaWR0aEZyb21Bc3BlY3RSYXRpbygpIGNv
bnN0OwogICAgIGJvb2wgaXNSZXNvbHZlYWJsZVN0cmV0Y2hTaXplKGNvbnN0IGF1dG8mIHNpemUp
IGNvbnN0IHsgcmV0dXJuIHNpemUuaXNTdHJldGNoKCkgJiYgY29udGFpbmluZ0Jsb2NrSGFzRGVm
aW5pdGVCbG9ja1NpemUoKTsgfQogICAgIGJvb2wgaXNVbnJlc29sdmVhYmxlU3RyZXRjaFNpemUo
Y29uc3QgYXV0byYgc2l6ZSkgY29uc3QgeyByZXR1cm4gc2l6ZS5pc1N0cmV0Y2goKSAmJiAhY29u
dGFpbmluZ0Jsb2NrSGFzRGVmaW5pdGVCbG9ja1NpemUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKaW5kZXggNzRiM2UwYjhkMmNhLi4xZmVk
OTZkMzg2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4
aWJsZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxl
Qm94LmNwcApAQCAtODc5LDcgKzg3OSw3IEBAIHN0YXRpYyBib29sIGlzU1ZHUm9vdFdpdGhJbnRy
aW5zaWNBc3BlY3RSYXRpbyhjb25zdCBSZW5kZXJCb3gmIGZsZXhJdGVtKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgLy8gSXQncyBjb21tb24gZm9yIHNvbWUgcmVwbGFjZWQgZWxlbWVudHMs
IHN1Y2ggYXMgU1ZHcywgdG8gaGF2ZSBpbnRyaW5zaWMgYXNwZWN0IHJhdGlvcyBidXQgbm8gaW50
cmluc2ljIHNpemVzLgogICAgIC8vIFRoYXQncyB3aHkgaXQgaXNuJ3QgZW5vdWdoIGp1c3QgdG8g
Y2hlY2sgZm9yIGludHJpbnNpYyBzaXplcyBpbiB0aG9zZSBjYXNlcy4KLSAgICByZXR1cm4gZG93
bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+KGZsZXhJdGVtKS5jb21wdXRlSW50cmluc2ljQXNwZWN0UmF0
aW8oKSA+IDA7CisgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlclJlcGxhY2VkPihmbGV4SXRlbSku
cHJlZmVycmVkQXNwZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0RvdWJsZSgpID4gMDsKIH07CiAKIHN0
YXRpYyBib29sIGZsZXhJdGVtSGFzQXNwZWN0UmF0aW8oY29uc3QgUmVuZGVyQm94JiBmbGV4SXRl
bSkKQEAgLTEyNjIsMTEgKzEyNjIsMTEgQEAgZG91YmxlIFJlbmRlckZsZXhpYmxlQm94OjpwcmVm
ZXJyZWRBc3BlY3RSYXRpb0ZvckZsZXhJdGVtKGNvbnN0IFJlbmRlckJveCYgZmxleEkKICAgICBh
dXRvIGZsZXhJdGVtQXNwZWN0UmF0aW8gPSBbJl0gewogICAgICAgICBhdXRvIGZsZXhJdGVtSW50
cmluc2ljU2l6ZSA9IExheW91dFNpemUgeyBmbGV4SXRlbS5pbnRyaW5zaWNMb2dpY2FsV2lkdGgo
KSwgZmxleEl0ZW0uaW50cmluc2ljTG9naWNhbEhlaWdodCgpIH07CiAgICAgICAgIGlmIChmbGV4
SXRlbS5pc1JlbmRlck9yTGVnYWN5UmVuZGVyU1ZHUm9vdCgpKQotICAgICAgICAgICAgcmV0dXJu
IGRvd25jYXN0PFJlbmRlclJlcGxhY2VkPihmbGV4SXRlbSkuY29tcHV0ZUludHJpbnNpY0FzcGVj
dFJhdGlvKCk7CisgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+KGZs
ZXhJdGVtKS5wcmVmZXJyZWRBc3BlY3RSYXRpbygpLmFzcGVjdFJhdGlvRG91YmxlKCk7CiAgICAg
ICAgIGlmIChmbGV4SXRlbS5zdHlsZSgpLmFzcGVjdFJhdGlvKCkuaXNSYXRpbygpIHx8IChmbGV4
SXRlbS5zdHlsZSgpLmFzcGVjdFJhdGlvKCkuaXNBdXRvQW5kUmF0aW8oKSAmJiBmbGV4SXRlbUlu
dHJpbnNpY1NpemUuaXNFbXB0eSgpKSkKICAgICAgICAgICAgIHJldHVybiBmbGV4SXRlbS5zdHls
ZSgpLmxvZ2ljYWxBc3BlY3RSYXRpbygpOwogICAgICAgICBpZiAoYXV0byogcmVwbGFjZWRFbGVt
ZW50ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclJlcGxhY2VkPihmbGV4SXRlbSkpCi0gICAgICAg
ICAgICByZXR1cm4gcmVwbGFjZWRFbGVtZW50LT5jb21wdXRlSW50cmluc2ljQXNwZWN0UmF0aW8o
KTsKKyAgICAgICAgICAgIHJldHVybiByZXBsYWNlZEVsZW1lbnQtPnByZWZlcnJlZEFzcGVjdFJh
dGlvKCkuYXNwZWN0UmF0aW9Eb3VibGUoKTsKIAogICAgICAgICBBU1NFUlQoZmxleEl0ZW0uaW50
cmluc2ljTG9naWNhbEhlaWdodCgpKTsKICAgICAgICAgcmV0dXJuIGZsZXhJdGVtLmludHJpbnNp
Y0xvZ2ljYWxXaWR0aCgpLnRvRG91YmxlKCkgLyBmbGV4SXRlbS5pbnRyaW5zaWNMb2dpY2FsSGVp
Z2h0KCkudG9Eb3VibGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSZXBsYWNlZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFj
ZWQuY3BwCmluZGV4IGUzNzZkYmI1NzJiNi4uNjUxMDZhOWYwMTg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKQEAgLTU1OCwxMSArNTU4LDYgQEAgTGF5
b3V0UmVjdCBSZW5kZXJSZXBsYWNlZDo6cmVwbGFjZWRDb250ZW50UmVjdChjb25zdCBMYXlvdXRT
aXplJiBpbnRyaW5zaWNTaXplKQogICAgIHJldHVybiBmaW5hbFJlY3Q7CiB9CiAKLWRvdWJsZSBS
ZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY0FzcGVjdFJhdGlvKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gcHJlZmVycmVkQXNwZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0RvdWJsZSgpOwotfQot
CiBGbG9hdFNpemUgUmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVJbnRyaW5zaWNTaXplKCkgY29uc3QK
IHsKICAgICByZXR1cm4geyBpbnRyaW5zaWNMb2dpY2FsV2lkdGgoKSwgaW50cmluc2ljTG9naWNh
bEhlaWdodCgpIH07CkBAIC02MjksNyArNjI0LDcgQEAgdm9pZCBSZW5kZXJSZXBsYWNlZDo6Y29t
cHV0ZUFzcGVjdFJhdGlvQWRqdXN0ZWRJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byYgc3R5bGUgPSB0aGlzLT5zdHlsZSgpOwotICAg
IGF1dG8gY29tcHV0ZWRBc3BlY3RSYXRpbyA9IGNvbXB1dGVJbnRyaW5zaWNBc3BlY3RSYXRpbygp
OworICAgIGF1dG8gY29tcHV0ZWRBc3BlY3RSYXRpbyA9IHByZWZlcnJlZEFzcGVjdFJhdGlvKCku
YXNwZWN0UmF0aW9Eb3VibGUoKTsKICAgICBhdXRvIGNvbXB1dGVkSW50cmluc2ljTG9naWNhbFdp
ZHRoID0gbWluTG9naWNhbFdpZHRoOwogCiAgICAgaWYgKGF1dG8gZml4ZWRMb2dpY2FsSGVpZ2h0
ID0gc3R5bGUubG9naWNhbEhlaWdodCgpLnRyeUZpeGVkKCkpCkBAIC04MDYsNyArODAxLDcgQEAg
dm9pZCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY0tleXdvcmRMb2dpY2FsV2lkdGhz
KExheW91dFVuaXQmIG1pbkxvZ2ljYWwKIHsKICAgICBpZiAoaGFzSW50cmluc2ljQXNwZWN0UmF0
aW8oKSAmJiAhc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCkuaXNBdXRvKCkpIHsKICAgICAgICAgaWYg
KGF1dG8gZml4ZWRIZWlnaHQgPSBzdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS50cnlGaXhlZCgpKSB7
Ci0gICAgICAgICAgICBhdXRvIGhlaWdodERlcml2ZWRXaWR0aCA9IExheW91dFVuaXQgeyBmaXhl
ZEhlaWdodC0+cmVzb2x2ZVpvb20oc3R5bGUoKS51c2VkWm9vbUZvckxlbmd0aCgpKSAqIGNvbXB1
dGVJbnRyaW5zaWNBc3BlY3RSYXRpbygpIH07CisgICAgICAgICAgICBhdXRvIGhlaWdodERlcml2
ZWRXaWR0aCA9IExheW91dFVuaXQgeyBmaXhlZEhlaWdodC0+cmVzb2x2ZVpvb20oc3R5bGUoKS51
c2VkWm9vbUZvckxlbmd0aCgpKSAqIHByZWZlcnJlZEFzcGVjdFJhdGlvKCkuYXNwZWN0UmF0aW9E
b3VibGUoKSB9OwogICAgICAgICAgICAgbWluTG9naWNhbFdpZHRoID0gaGVpZ2h0RGVyaXZlZFdp
ZHRoOwogICAgICAgICAgICAgbWF4TG9naWNhbFdpZHRoID0gaGVpZ2h0RGVyaXZlZFdpZHRoOwog
ICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJlcGxhY2VkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFj
ZWQuaAppbmRleCA2YjI2NjI0OGRkMWMuLmI0NzRjM2Q2Y2QwYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKQEAgLTQ3LDcgKzQ3LDYgQEAgcHVibGljOgogICAg
IGJvb2wgaXNDb250ZW50TGlrZWx5VmlzaWJsZUluVmlld3BvcnQoKTsKICAgICBib29sIHNob3Vs
ZEludmFsaWRhdGVQcmVmZXJyZWRXaWR0aHMoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIGRvdWJs
ZSBjb21wdXRlSW50cmluc2ljQXNwZWN0UmF0aW8oKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9v
bCBwYWludHNDb250ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAppbmRleCBkZTI5NDM2MjQyOTgu
LmJjNzU1YzFlM2EyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jvb3QuY3BwCkBAIC05MSw3ICs5MSw3IEBAIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVy
KiBSZW5kZXJTVkdSb290Ojp2aWV3cG9ydENvbnRhaW5lcigpIGNvbnN0CiAKIGJvb2wgUmVuZGVy
U1ZHUm9vdDo6aGFzSW50cmluc2ljQXNwZWN0UmF0aW8oKSBjb25zdAogewotICAgIHJldHVybiBj
b21wdXRlSW50cmluc2ljQXNwZWN0UmF0aW8oKTsKKyAgICByZXR1cm4gcHJlZmVycmVkQXNwZWN0
UmF0aW8oKS5hc3BlY3RSYXRpb0RvdWJsZSgpOwogfQogCiBGbG9hdFNpemUgUmVuZGVyU1ZHUm9v
dDo6Y29tcHV0ZUludHJpbnNpY1NpemUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9sZWdhY3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lSZW5kZXJTVkdSb290LmNwcAppbmRl
eCAzNmQzZTM4NTlkYjYuLmViYWI1NmM4ZTNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9sZWdhY3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9sZWdhY3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5jcHAKQEAg
LTgxLDcgKzgxLDcgQEAgU1ZHU1ZHRWxlbWVudCYgTGVnYWN5UmVuZGVyU1ZHUm9vdDo6c3ZnU1ZH
RWxlbWVudCgpIGNvbnN0CiAKIGJvb2wgTGVnYWN5UmVuZGVyU1ZHUm9vdDo6aGFzSW50cmluc2lj
QXNwZWN0UmF0aW8oKSBjb25zdAogewotICAgIHJldHVybiBjb21wdXRlSW50cmluc2ljQXNwZWN0
UmF0aW8oKTsKKyAgICByZXR1cm4gcHJlZmVycmVkQXNwZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0Rv
dWJsZSgpOwogfQogCiBGbG9hdFNpemUgTGVnYWN5UmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUludHJp
bnNpY1NpemUoKSBjb25zdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>479553</attachid>
            <date>2026-05-09 16:03:04 -0700</date>
            <delta_ts>2026-05-09 17:53:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-314460-20260509160303.patch</filename>
            <type>text/plain</type>
            <size>38846</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSAwZjM3MWQxYzdmYjExZTc2NDY2NDkzZDE0NmRjNmI5NGRlOWZjMGUyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFNhdCwgOSBNYXkgMjAyNiAxNjowMjoxNCAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFJlbmFtZSBh
c3BlY3QgcmF0aW8gaGVscGVycyBvbiBSZW5kZXJSZXBsYWNlZCBhbmQgUmVuZGVyQm94CiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE0NDYwCgpSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KCkVXUyAoUFIgd2l0aCBkZXBlbmRlbmNpZXMpLgoKKiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3LmNwcDoKKFdlYkNvcmU6OkxvY2FsRnJhbWVWaWV3Ojpm
b3JjZUxheW91dFBhcmVudFZpZXdJZk5lZWRlZCk6CihXZWJDb3JlOjpMb2NhbEZyYW1lVmlldzo6
ZW1iZWRkZWRTVkdSb290IGNvbnN0KToKKFdlYkNvcmU6OkxvY2FsRnJhbWVWaWV3OjplbWJlZGRl
ZENvbnRlbnRCb3ggY29uc3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYWxG
cmFtZVZpZXcuaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKFdl
YkNvcmU6OlJlbmRlckJveDo6Y29uc3RyYWluTG9naWNhbE1pbk1heFNpemVzQnlBc3BlY3RSYXRp
byBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVJbnRyaW5zaWNLZXl3b3JkTG9n
aWNhbFdpZHRocyBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJCb3g6OmlzUmVwbGFjZWRXaXRoUHJl
ZmVycmVkQXNwZWN0UmF0aW8gY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyQm94Ojphc3BlY3RSYXRp
b1ZhbHVlIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZU1pbk1heExvZ2ljYWxX
aWR0aEZyb21Bc3BlY3RSYXRpbyBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVN
aW5NYXhMb2dpY2FsSGVpZ2h0RnJvbUFzcGVjdFJhdGlvIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRl
ckJveDo6aXNSZW5kZXJSZXBsYWNlZFdpdGhJbnRyaW5zaWNSYXRpbyBjb25zdCk6IERlbGV0ZWQu
CihXZWJDb3JlOjpSZW5kZXJCb3g6OnJlc29sdmVBc3BlY3RSYXRpbyBjb25zdCk6IERlbGV0ZWQu
CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oOgoqIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHA6CihXZWJDb3JlOjppc1NWR1Jvb3RXaXRo
SW50cmluc2ljQXNwZWN0UmF0aW8pOgooV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OnByZWZl
cnJlZEFzcGVjdFJhdGlvRm9yRmxleEl0ZW0gY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZS5jcHA6CihXZWJDb3JlOjpSZW5kZXJJbWFnZTo6Y29tcHV0ZUludHJp
bnNpY1NpemUgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnByZWZlcnJlZEFzcGVjdFJh
dGlvIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckltYWdlOjpzaG91bGRJbnZhbGlkYXRlUHJlZmVy
cmVkV2lkdGhzIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckltYWdlOjplbWJlZGRlZFNWR1Jvb3Qg
Y29uc3QpOgooV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmVtYmVkZGVkQ29udGVudEJveCBjb25zdCk6
IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6CiogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcDoKKFdlYkNvcmU6OlJlbmRl
clJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljU2l6ZXNDb25zdHJhaW5lZEJ5VHJhbnNmZXJyZWRN
aW5NYXhTaXplcyBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJp
bnNpY1NpemUgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVj
dFJhdGlvIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjb21wdXRlQXNwZWN0UmF0
aW9BZGp1c3RlZEludHJpbnNpY0xvZ2ljYWxXaWR0aHMgY29uc3QpOgooV2ViQ29yZTo6aGFzSW50
cmluc2ljU2l6ZSk6CihXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZVJlcGxhY2VkTG9n
aWNhbFdpZHRoIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjb21wdXRlUmVwbGFj
ZWRMb2dpY2FsSGVpZ2h0IGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjb21wdXRl
SW50cmluc2ljS2V5d29yZExvZ2ljYWxXaWR0aHMgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyUmVw
bGFjZWQ6OmludHJpbnNpY1JhdGlvIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpj
b21wdXRlQXNwZWN0UmF0aW9JbmZvcm1hdGlvbkZvclJlbmRlckJveCBjb25zdCk6IERlbGV0ZWQu
CihXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY0FzcGVjdFJhdGlvIGNv
bnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQu
aDoKKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjplbWJlZGRlZFNWR1Jvb3QgY29uc3QpOgooV2Vi
Q29yZTo6UmVuZGVyUmVwbGFjZWQ6OmVtYmVkZGVkQ29udGVudEJveCBjb25zdCk6IERlbGV0ZWQu
CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CihXZWJDb3JlOjpS
ZW5kZXJXaWRnZXQ6OnNob3VsZEludmFsaWRhdGVQcmVmZXJyZWRXaWR0aHMgY29uc3QpOgooV2Vi
Q29yZTo6UmVuZGVyV2lkZ2V0OjplbWJlZGRlZFNWR1Jvb3QgY29uc3QpOgooV2ViQ29yZTo6UmVu
ZGVyV2lkZ2V0Ojpjb21wdXRlSW50cmluc2ljU2l6ZSBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJX
aWRnZXQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlcldpZGdl
dDo6ZW1iZWRkZWRDb250ZW50Qm94IGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyV2lkZ2V0Lmg6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSb290LmNwcDoKKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6Omhhc0ludHJpbnNpY0Fz
cGVjdFJhdGlvIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL2xlZ2FjeS9M
ZWdhY3lSZW5kZXJTVkdSb290LmNwcDoKKFdlYkNvcmU6OkxlZ2FjeVJlbmRlclNWR1Jvb3Q6Omhh
c0ludHJpbnNpY0FzcGVjdFJhdGlvIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuY3BwOgooV2ViQ29yZTo6U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKToKKFdlYkNv
cmU6OlNWR0ltYWdlOjplbWJlZGRlZFNWR1Jvb3QgY29uc3QpOgooV2ViQ29yZTo6U1ZHSW1hZ2U6
OmVtYmVkZGVkQ29udGVudEJveCBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmg6Ci0tLQogU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1l
Vmlldy5jcHAgICAgICAgIHwgIDI4ICsrLS0tCiBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJh
bWVWaWV3LmggICAgICAgICAgfCAgIDMgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwICAgICAgICB8ICAyMCArKy0tCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmggICAgICAgICAgfCAgIDQgKy0KIC4uLi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
bGV4aWJsZUJveC5jcHAgICB8ICAgNiArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcCAgICAgIHwgIDI3ICsrKystCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW1hZ2UuaCAgICAgICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZXBsYWNlZC5jcHAgICB8IDEwMCArKysrLS0tLS0tLS0tLS0tLS0KIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oICAgICB8ICAxMiArLS0KIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwICAgICB8ICAzNyArKysrKystCiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmggICAgICAgfCAgIDQgKy0KIC4uLi9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAgICB8ICAgMiArLQogLi4uL3N2Zy9sZWdh
Y3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5jcHAgICAgICAgIHwgICAyICstCiBTb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwICAgICAgfCAgIDggKy0KIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oICAgICAgICB8ICAgNCArLQogMTUgZmlsZXMgY2hhbmdl
ZCwgMTIwIGluc2VydGlvbnMoKyksIDEzOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TG9jYWxGcmFtZVZpZXcuY3BwCmluZGV4IGRlZGU2YjUwNDVhNi4uYzdhZjI0OGYwOTIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3LmNwcApAQCAtMTIxMywyNSArMTIxMywxOCBA
QCB2b2lkIExvY2FsRnJhbWVWaWV3Ojpmb3JjZUxheW91dFBhcmVudFZpZXdJZk5lZWRlZCgpCiAg
ICAgaWYgKCFvd25lclJlbmRlcmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBDaGVja2VkUHRy
IGNvbnRlbnRCb3ggPSBlbWJlZGRlZENvbnRlbnRCb3goKTsKLSAgICBpZiAoIWNvbnRlbnRCb3gp
CisgICAgQ2hlY2tlZFB0ciBzdmdSb290ID0gZW1iZWRkZWRTVkdSb290KCk7CisgICAgaWYgKCFz
dmdSb290KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoYXV0byogc3ZnUm9vdCA9IGR5bmFt
aWNEb3duY2FzdDxMZWdhY3lSZW5kZXJTVkdSb290Pihjb250ZW50Qm94LmdldCgpKSkgewotICAg
ICAgICBpZiAoc3ZnUm9vdC0+ZXZlckhhZExheW91dCgpICYmICFzdmdSb290LT5uZWVkc0xheW91
dCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdXRvKiBzdmdSb290
ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclNWR1Jvb3Q+KGNvbnRlbnRCb3guZ2V0KCkpKSB7Ci0g
ICAgICAgIGlmIChzdmdSb290LT5ldmVySGFkTGF5b3V0KCkgJiYgIXN2Z1Jvb3QtPm5lZWRzTGF5
b3V0KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChzdmdSb290LT5ldmVy
SGFkTGF5b3V0KCkgJiYgIXN2Z1Jvb3QtPm5lZWRzTGF5b3V0KCkpCisgICAgICAgIHJldHVybjsK
IAogICAgIExPRyhMYXlvdXQsICJMb2NhbEZyYW1lVmlldyAlcCBmb3JjZUxheW91dFBhcmVudFZp
ZXdJZk5lZWRlZCBzY2hlZHVsaW5nIGxheW91dCBvbiBwYXJlbnQgTG9jYWxGcmFtZVZpZXcgJXAi
LCB0aGlzLCAmb3duZXJSZW5kZXJlci0+dmlldygpLmZyYW1lVmlldygpKTsKIAogICAgIC8vIElm
IHRoZSBlbWJlZGRlZCBTVkcgZG9jdW1lbnQgYXBwZWFycyB0aGUgZmlyc3QgdGltZSwgdGhlIG93
bmVyUmVuZGVyZXIgaGFzIGFscmVhZHkgZmluaXNoZWQKICAgICAvLyBsYXlvdXQgd2l0aG91dCBr
bm93aW5nIGFib3V0IHRoZSBleGlzdGVuY2Ugb2YgdGhlIGVtYmVkZGVkIFNWRyBkb2N1bWVudCwg
YmVjYXVzZSBSZW5kZXJSZXBsYWNlZAotICAgIC8vIGVtYmVkZGVkQ29udGVudEJveCgpIHJldHVy
bnMgbnVsbHB0ciwgYXMgbG9uZyBhcyB0aGUgZW1iZWRkZWQgZG9jdW1lbnQgaXNuJ3QgbG9hZGVk
IHlldC4gQmVmb3JlCisgICAgLy8gZW1iZWRkZWRTVkdSb290KCkgcmV0dXJucyBudWxscHRyLCBh
cyBsb25nIGFzIHRoZSBlbWJlZGRlZCBkb2N1bWVudCBpc24ndCBsb2FkZWQgeWV0LiBCZWZvcmUK
ICAgICAvLyBib3RoZXJpbmcgdG8gbGF5IG91dCB0aGUgU1ZHIGRvY3VtZW50LCBtYXJrIHRoZSBv
d25lclJlbmRlcmVyIG5lZWRpbmcgbGF5b3V0IGFuZCBhc2sgaXRzCiAgICAgLy8gTG9jYWxGcmFt
ZVZpZXcgZm9yIGEgbGF5b3V0LiBBZnRlciB0aGF0IHRoZSBSZW5kZXJFbWJlZGRlZE9iamVjdCAo
b3duZXJSZW5kZXJlcikgY2FycmllcyB0aGUKICAgICAvLyBjb3JyZWN0IHNpemUsIHdoaWNoIExl
Z2FjeVJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aC9IZWlnaHQgcmVs
eSBvbiwgd2hlbiBsYXlpbmcKQEAgLTE1MjAsMjIgKzE1MTMsMTkgQEAgYm9vbCBMb2NhbEZyYW1l
Vmlldzo6c2hvdWxkRGVmZXJTY3JvbGxVcGRhdGVBZnRlckNvbnRlbnRTaXplQ2hhbmdlKCkKICAg
ICByZXR1cm4gKGxheW91dENvbnRleHQoKS5sYXlvdXRQaGFzZSgpIDwgTG9jYWxGcmFtZVZpZXdM
YXlvdXRDb250ZXh0OjpMYXlvdXRQaGFzZTo6SW5Qb3N0TGF5b3V0KSAmJiAobGF5b3V0Q29udGV4
dCgpLmxheW91dFBoYXNlKCkgIT0gTG9jYWxGcmFtZVZpZXdMYXlvdXRDb250ZXh0OjpMYXlvdXRQ
aGFzZTo6T3V0c2lkZUxheW91dCk7CiB9CiAKLVJlbmRlckJveCogTG9jYWxGcmFtZVZpZXc6OmVt
YmVkZGVkQ29udGVudEJveCgpIGNvbnN0CitSZW5kZXJSZXBsYWNlZCogTG9jYWxGcmFtZVZpZXc6
OmVtYmVkZGVkU1ZHUm9vdCgpIGNvbnN0CiB7CiAgICAgQ2hlY2tlZFB0ciByZW5kZXJWaWV3ID0g
dGhpcy0+cmVuZGVyVmlldygpOwogICAgIGlmICghcmVuZGVyVmlldykKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICBSZW5kZXJPYmplY3QqIGZpcnN0Q2hpbGQgPSByZW5kZXJWaWV3LT5m
aXJzdENoaWxkKCk7CisgICAgYXV0byogZmlyc3RDaGlsZCA9IHJlbmRlclZpZXctPmZpcnN0Q2hp
bGQoKTsKIAotICAgIC8vIEN1cmVudGx5IG9ubHkgZW1iZWRkZWQgU1ZHIGRvY3VtZW50cyBwYXJ0
aWNpcGF0ZSBpbiB0aGUgc2l6ZS1uZWdvdGlhdGlvbiBsb2dpYy4KKyAgICAvLyBDdXJyZW50bHkg
b25seSBlbWJlZGRlZCBTVkcgZG9jdW1lbnRzIHBhcnRpY2lwYXRlIGluIHRoZSBzaXplLW5lZ290
aWF0aW9uIGxvZ2ljLgogICAgIGlmIChhdXRvKiBzdmdSb290ID0gZHluYW1pY0Rvd25jYXN0PExl
Z2FjeVJlbmRlclNWR1Jvb3Q+KGZpcnN0Q2hpbGQpKQogICAgICAgICByZXR1cm4gc3ZnUm9vdDsK
IAotICAgIGlmIChhdXRvKiBzdmdSb290ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclNWR1Jvb3Q+
KGZpcnN0Q2hpbGQpKQotICAgICAgICByZXR1cm4gc3ZnUm9vdDsKLQotICAgIHJldHVybiBudWxs
cHRyOworICAgIHJldHVybiBkeW5hbWljRG93bmNhc3Q8UmVuZGVyU1ZHUm9vdD4oZmlyc3RDaGls
ZCk7CiB9CiAKIHZvaWQgTG9jYWxGcmFtZVZpZXc6OmFkZEVtYmVkZGVkT2JqZWN0VG9VcGRhdGUo
UmVuZGVyRW1iZWRkZWRPYmplY3QmIGVtYmVkZGVkT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2Nh
bEZyYW1lVmlldy5oCmluZGV4IDFiMWM3MGJjYzI0OS4uMDU5OWJhMTZiMzYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5oCkBAIC02NSw2ICs2NSw3IEBAIGNsYXNzIFJlbmRlckVt
YmVkZGVkT2JqZWN0OwogY2xhc3MgUmVuZGVyTGF5ZXI7CiBjbGFzcyBSZW5kZXJMYXllck1vZGVs
T2JqZWN0OwogY2xhc3MgUmVuZGVyT2JqZWN0OworY2xhc3MgUmVuZGVyUmVwbGFjZWQ7CiBjbGFz
cyBSZW5kZXJTY3JvbGxiYXJQYXJ0OwogY2xhc3MgUmVuZGVyU3R5bGU7CiBjbGFzcyBSZW5kZXJW
aWV3OwpAQCAtNTc4LDcgKzU3OSw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgTk9ERUxFVEUgc2hv
dWxkU3VzcGVuZFNjcm9sbEFuaW1hdGlvbnMoKSBjb25zdCBmaW5hbDsKIAotICAgIFJlbmRlckJv
eCogZW1iZWRkZWRDb250ZW50Qm94KCkgY29uc3Q7CisgICAgUmVuZGVyUmVwbGFjZWQqIGVtYmVk
ZGVkU1ZHUm9vdCgpIGNvbnN0OwogICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VHJh
Y2tzUmVwYWludHMoYm9vbCk7CiAgICAgYm9vbCBpc1RyYWNraW5nUmVwYWludHMoKSBjb25zdCB7
IHJldHVybiBtX2lzVHJhY2tpbmdSZXBhaW50czsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcAppbmRleCAzZDQyNDZlYzUzYjYuLmJlNTNkMTc1Y2NjYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTcxMSw3ICs3MTEsNyBAQCB2b2lkIFJlbmRl
ckJveDo6Y29uc3RyYWluTG9naWNhbE1pbk1heFNpemVzQnlBc3BlY3RSYXRpbyhMYXlvdXRVbml0
JiBjb21wdXRlZE1pbgogICAgIC8vIGEgc2l6ZSBvZiB0aGUgaW5pdGlhbCBjb250YWluaW5nIGJs
b2NrIGFuZCB0aGUg4oCcc3RyZXRjaC1maXTigJ0gc2l6aW5nIG9mIG5vbi1yZXBsYWNlZCBibG9j
a3MgaWYgdGhleSBoYXZlIGRlZmluaXRlIHZhbHVlcy4KICAgICAvLyBTZWUgaHR0cHM6Ly93d3cu
dzMub3JnL1RSL2Nzcy1zaXppbmctMy8jZGVmaW5pdGUKICAgICBjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGVUb1VzZSA9IHN0eWxlKCk7Ci0gICAgQVNTRVJUKHN0eWxlVG9Vc2UuYXNwZWN0UmF0aW8o
KS5oYXNSYXRpbygpIHx8IGlzUmVuZGVyUmVwbGFjZWRXaXRoSW50cmluc2ljUmF0aW8oKSk7Cisg
ICAgQVNTRVJUKHN0eWxlVG9Vc2UuYXNwZWN0UmF0aW8oKS5oYXNSYXRpbygpIHx8IGlzUmVwbGFj
ZWRXaXRoUHJlZmVycmVkQXNwZWN0UmF0aW8oKSk7CiAgICAgYXV0byBsb2dpY2FsU2l6ZSA9IGRp
bWVuc2lvbiA9PSBDb25zdHJhaW5EaW1lbnNpb246OldpZHRoID8gc3R5bGVUb1VzZS5sb2dpY2Fs
V2lkdGgoKSA6IHN0eWxlVG9Vc2UubG9naWNhbEhlaWdodCgpOwogICAgIC8vIGh0dHBzOi8vd3d3
LnczLm9yZy9UUi9jc3Mtc2l6aW5nLTQvI2FzcGVjdC1yYXRpby1taW5pbXVtCiAgICAgaWYgKG1p
bmltdW1TaXplVHlwZSA9PSBNaW5pbXVtU2l6ZUlzQXV0b21hdGljQ29udGVudEJhc2VkOjpZZXMp
IHsKQEAgLTI5NTQsMTEgKzI5NTQsMTEgQEAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5d29yZD4gdm9p
ZCBSZW5kZXJCb3g6OmNvbXB1dGVJbnRyaW5zaWNLZXl3b3JkTG9naWNhbFdpZHRocygKICAgICAg
ICAgICAgICAgICBtaW5Mb2dpY2FsV2lkdGggPSBzdGQ6Om1heChtaW5Mb2dpY2FsV2lkdGgsIG1p
bkNoaWxkcmVuTG9naWNhbFdpZHRoKTsKICAgICAgICAgICAgICAgICBtYXhMb2dpY2FsV2lkdGgg
PSBzdGQ6Om1heChtYXhMb2dpY2FsV2lkdGgsIG1heENoaWxkcmVuTG9naWNhbFdpZHRoKTsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChpc1JlbmRlclJlcGxhY2VkV2l0aEludHJp
bnNpY1JhdGlvKCkgJiYgc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCkuaXNTcGVjaWZpZWQoKSkgewor
ICAgICAgICB9IGVsc2UgaWYgKGlzUmVwbGFjZWRXaXRoUHJlZmVycmVkQXNwZWN0UmF0aW8oKSAm
JiBzdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc1NwZWNpZmllZCgpKSB7CiAgICAgICAgICAgICAv
LyBGb3IgcmVwbGFjZWQgZWxlbWVudHMgd2l0aCBhbiBpbnRyaW5zaWMgYXNwZWN0IHJhdGlvIChl
LmcuIDxpbWc+KSBhbmQgYQogICAgICAgICAgICAgLy8gc3BlY2lmaWVkIGJsb2NrIHNpemUsIGNv
bXB1dGUgdGhlIHRyYW5zZmVycmVkIG1pbi9tYXgtY29udGVudCBpbmxpbmUgc2l6ZQogICAgICAg
ICAgICAgLy8gdGhyb3VnaCB0aGUgaW50cmluc2ljIHJhdGlvIHJhdGhlciB0aGFuIHVzaW5nIHRo
ZSByYXcgbmF0dXJhbCB3aWR0aC4KLSAgICAgICAgICAgIGF1dG8gaW50cmluc2ljUmF0aW8gPSBk
b3duY2FzdDxSZW5kZXJSZXBsYWNlZD4oKnRoaXMpLmNvbXB1dGVJbnRyaW5zaWNBc3BlY3RSYXRp
bygpOworICAgICAgICAgICAgYXV0byBpbnRyaW5zaWNSYXRpbyA9IGRvd25jYXN0PFJlbmRlclJl
cGxhY2VkPigqdGhpcykucHJlZmVycmVkQXNwZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0RvdWJsZSgp
OwogICAgICAgICAgICAgYXV0byBjb21wdXRlZFZhbHVlcyA9IGNvbXB1dGVMb2dpY2FsSGVpZ2h0
KGxvZ2ljYWxIZWlnaHQoKSwgbG9naWNhbFRvcCgpKTsKICAgICAgICAgICAgIGF1dG8gY29udGVu
dEJsb2NrU2l6ZSA9IHN0ZDo6bWF4KDBfbHUsIGNvbXB1dGVkVmFsdWVzLmV4dGVudCAtIGJvcmRl
ckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCkpOwogICAgICAgICAgICAgbWluTG9naWNhbFdpZHRo
ID0gbWF4TG9naWNhbFdpZHRoID0gTGF5b3V0VW5pdChjb250ZW50QmxvY2tTaXplICogaW50cmlu
c2ljUmF0aW8pOwpAQCAtNTI3NCwxNyArNTI3NCwxNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6
Y29tcHV0ZUxvZ2ljYWxXaWR0aEZyb21Bc3BlY3RSYXRpbygpIGNvbnN0CiAgICAgcmV0dXJuIGNv
bnN0cmFpbkxvZ2ljYWxXaWR0aEJ5TWluTWF4KGxvZ2ljYWxXaWR0aCwgY29udGFpbmVyV2lkdGhJ
bklubGluZURpcmVjdGlvbiwgKmNvbnRhaW5pbmdCbG9jaygpLCBBbGxvd0ludHJpbnNpYzo6Tm8p
OwogfQogCi1ib29sIFJlbmRlckJveDo6aXNSZW5kZXJSZXBsYWNlZFdpdGhJbnRyaW5zaWNSYXRp
bygpIGNvbnN0Citib29sIFJlbmRlckJveDo6aXNSZXBsYWNlZFdpdGhQcmVmZXJyZWRBc3BlY3RS
YXRpbygpIGNvbnN0CiB7CiAgICAgaWYgKGF1dG8qIHJlcGxhY2VkID0gZHluYW1pY0Rvd25jYXN0
PFJlbmRlclJlcGxhY2VkPih0aGlzKSkKLSAgICAgICAgcmV0dXJuIHJlcGxhY2VkLT5jb21wdXRl
SW50cmluc2ljQXNwZWN0UmF0aW8oKTsKKyAgICAgICAgcmV0dXJuIHJlcGxhY2VkLT5wcmVmZXJy
ZWRBc3BlY3RSYXRpbygpLmFzcGVjdFJhdGlvRG91YmxlKCk7CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1zdGQ6Om9wdGlvbmFsPGRvdWJsZT4gUmVuZGVyQm94OjpyZXNvbHZlQXNwZWN0UmF0aW8o
KSBjb25zdAorc3RkOjpvcHRpb25hbDxkb3VibGU+IFJlbmRlckJveDo6YXNwZWN0UmF0aW9WYWx1
ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKGF1dG8qIHJlcGxhY2VkRWxlbWVudCA9IGR5bmFtaWNEb3du
Y2FzdDxSZW5kZXJSZXBsYWNlZD4odGhpcykpIAotICAgICAgICByZXR1cm4gcmVwbGFjZWRFbGVt
ZW50LT5jb21wdXRlSW50cmluc2ljQXNwZWN0UmF0aW8oKTsKKyAgICBpZiAoQ2hlY2tlZFB0ciBy
ZXBsYWNlZEVsZW1lbnQgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+KHRoaXMpKQor
ICAgICAgICByZXR1cm4gcmVwbGFjZWRFbGVtZW50LT5wcmVmZXJyZWRBc3BlY3RSYXRpbygpLmFz
cGVjdFJhdGlvRG91YmxlKCk7CiAgICAgaWYgKHN0eWxlKCkuYXNwZWN0UmF0aW8oKS5oYXNSYXRp
bygpKQogICAgICAgICByZXR1cm4gc3R5bGUoKS5sb2dpY2FsQXNwZWN0UmF0aW8oKTsKICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTUyOTUsNyArNTI5NSw3IEBAIHN0ZDo6cGFpcjxMYXlv
dXRVbml0LCBMYXlvdXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVNaW5NYXhMb2dpY2FsV2lkdGhG
cm9tQXNwZWN0CiB7CiAgICAgTGF5b3V0VW5pdCB0cmFuc2ZlcnJlZE1pblNpemUgPSBMYXlvdXRV
bml0KCk7CiAgICAgTGF5b3V0VW5pdCB0cmFuc2ZlcnJlZE1heFNpemUgPSBMYXlvdXRVbml0Ojpt
YXgoKTsKLSAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYXNwZWN0UmF0aW8gPSByZXNvbHZlQXNw
ZWN0UmF0aW8oKTsKKyAgICBhdXRvIGFzcGVjdFJhdGlvID0gYXNwZWN0UmF0aW9WYWx1ZSgpOwog
ICAgIGlmICghYXNwZWN0UmF0aW8pCiAgICAgICAgIHJldHVybiB7IHRyYW5zZmVycmVkTWluU2l6
ZSwgdHJhbnNmZXJyZWRNYXhTaXplIH07CiAKQEAgLTUzMTYsNyArNTMxNiw3IEBAIHN0ZDo6cGFp
cjxMYXlvdXRVbml0LCBMYXlvdXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVNaW5NYXhMb2dpY2Fs
SGVpZ2h0RnJvbUFzcGVjCiB7CiAgICAgTGF5b3V0VW5pdCB0cmFuc2ZlcnJlZE1pblNpemUgPSBM
YXlvdXRVbml0KCk7CiAgICAgTGF5b3V0VW5pdCB0cmFuc2ZlcnJlZE1heFNpemUgPSBMYXlvdXRV
bml0OjptYXgoKTsKLSAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYXNwZWN0UmF0aW8gPSByZXNv
bHZlQXNwZWN0UmF0aW8oKTsKKyAgICBhdXRvIGFzcGVjdFJhdGlvID0gYXNwZWN0UmF0aW9WYWx1
ZSgpOwogICAgIGlmICghYXNwZWN0UmF0aW8pCiAgICAgICAgIHJldHVybiB7IHRyYW5zZmVycmVk
TWluU2l6ZSwgdHJhbnNmZXJyZWRNYXhTaXplIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guaAppbmRleCAxODc4YzdkZWZiZWUuLjU0MmM5YWJkYmMyMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guaApAQCAtNjg1LDkgKzY4NSw5IEBAIHByb3RlY3RlZDoKIAogICAg
IHZvaWQgaW5jcmVtZW50VmlzdWFsbHlOb25FbXB0eVBpeGVsQ291bnRJZk5lZWRlZChjb25zdCBJ
bnRTaXplJik7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcmVzb2x2ZUFzcGVjdFJhdGlv
KCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFzcGVjdFJhdGlvVmFsdWUoKSBj
b25zdDsKICAgICBib29sIE5PREVMRVRFIHNob3VsZElnbm9yZUFzcGVjdFJhdGlvKCkgY29uc3Q7
Ci0gICAgYm9vbCBpc1JlbmRlclJlcGxhY2VkV2l0aEludHJpbnNpY1JhdGlvKCkgY29uc3Q7Cisg
ICAgYm9vbCBpc1JlcGxhY2VkV2l0aFByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3Q7CiAgICAg
Ym9vbCBzaG91bGRDb21wdXRlTG9naWNhbFdpZHRoRnJvbUFzcGVjdFJhdGlvKCkgY29uc3Q7CiAg
ICAgYm9vbCBpc1Jlc29sdmVhYmxlU3RyZXRjaFNpemUoY29uc3QgYXV0byYgc2l6ZSkgY29uc3Qg
eyByZXR1cm4gc2l6ZS5pc1N0cmV0Y2goKSAmJiBjb250YWluaW5nQmxvY2tIYXNEZWZpbml0ZUJs
b2NrU2l6ZSgpOyB9CiAgICAgYm9vbCBpc1VucmVzb2x2ZWFibGVTdHJldGNoU2l6ZShjb25zdCBh
dXRvJiBzaXplKSBjb25zdCB7IHJldHVybiBzaXplLmlzU3RyZXRjaCgpICYmICFjb250YWluaW5n
QmxvY2tIYXNEZWZpbml0ZUJsb2NrU2l6ZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAppbmRleCA3NGIzZTBiOGQyY2EuLjFmZWQ5NmQzODY4
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3Bw
CkBAIC04NzksNyArODc5LDcgQEAgc3RhdGljIGJvb2wgaXNTVkdSb290V2l0aEludHJpbnNpY0Fz
cGVjdFJhdGlvKGNvbnN0IFJlbmRlckJveCYgZmxleEl0ZW0pCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAvLyBJdCdzIGNvbW1vbiBmb3Igc29tZSByZXBsYWNlZCBlbGVtZW50cywgc3VjaCBh
cyBTVkdzLCB0byBoYXZlIGludHJpbnNpYyBhc3BlY3QgcmF0aW9zIGJ1dCBubyBpbnRyaW5zaWMg
c2l6ZXMuCiAgICAgLy8gVGhhdCdzIHdoeSBpdCBpc24ndCBlbm91Z2gganVzdCB0byBjaGVjayBm
b3IgaW50cmluc2ljIHNpemVzIGluIHRob3NlIGNhc2VzLgotICAgIHJldHVybiBkb3duY2FzdDxS
ZW5kZXJSZXBsYWNlZD4oZmxleEl0ZW0pLmNvbXB1dGVJbnRyaW5zaWNBc3BlY3RSYXRpbygpID4g
MDsKKyAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+KGZsZXhJdGVtKS5wcmVmZXJy
ZWRBc3BlY3RSYXRpbygpLmFzcGVjdFJhdGlvRG91YmxlKCkgPiAwOwogfTsKIAogc3RhdGljIGJv
b2wgZmxleEl0ZW1IYXNBc3BlY3RSYXRpbyhjb25zdCBSZW5kZXJCb3gmIGZsZXhJdGVtKQpAQCAt
MTI2MiwxMSArMTI2MiwxMSBAQCBkb3VibGUgUmVuZGVyRmxleGlibGVCb3g6OnByZWZlcnJlZEFz
cGVjdFJhdGlvRm9yRmxleEl0ZW0oY29uc3QgUmVuZGVyQm94JiBmbGV4SQogICAgIGF1dG8gZmxl
eEl0ZW1Bc3BlY3RSYXRpbyA9IFsmXSB7CiAgICAgICAgIGF1dG8gZmxleEl0ZW1JbnRyaW5zaWNT
aXplID0gTGF5b3V0U2l6ZSB7IGZsZXhJdGVtLmludHJpbnNpY0xvZ2ljYWxXaWR0aCgpLCBmbGV4
SXRlbS5pbnRyaW5zaWNMb2dpY2FsSGVpZ2h0KCkgfTsKICAgICAgICAgaWYgKGZsZXhJdGVtLmlz
UmVuZGVyT3JMZWdhY3lSZW5kZXJTVkdSb290KCkpCi0gICAgICAgICAgICByZXR1cm4gZG93bmNh
c3Q8UmVuZGVyUmVwbGFjZWQ+KGZsZXhJdGVtKS5jb21wdXRlSW50cmluc2ljQXNwZWN0UmF0aW8o
KTsKKyAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJSZXBsYWNlZD4oZmxleEl0ZW0p
LnByZWZlcnJlZEFzcGVjdFJhdGlvKCkuYXNwZWN0UmF0aW9Eb3VibGUoKTsKICAgICAgICAgaWYg
KGZsZXhJdGVtLnN0eWxlKCkuYXNwZWN0UmF0aW8oKS5pc1JhdGlvKCkgfHwgKGZsZXhJdGVtLnN0
eWxlKCkuYXNwZWN0UmF0aW8oKS5pc0F1dG9BbmRSYXRpbygpICYmIGZsZXhJdGVtSW50cmluc2lj
U2l6ZS5pc0VtcHR5KCkpKQogICAgICAgICAgICAgcmV0dXJuIGZsZXhJdGVtLnN0eWxlKCkubG9n
aWNhbEFzcGVjdFJhdGlvKCk7CiAgICAgICAgIGlmIChhdXRvKiByZXBsYWNlZEVsZW1lbnQgPSBk
eW5hbWljRG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+KGZsZXhJdGVtKSkKLSAgICAgICAgICAgIHJl
dHVybiByZXBsYWNlZEVsZW1lbnQtPmNvbXB1dGVJbnRyaW5zaWNBc3BlY3RSYXRpbygpOworICAg
ICAgICAgICAgcmV0dXJuIHJlcGxhY2VkRWxlbWVudC0+cHJlZmVycmVkQXNwZWN0UmF0aW8oKS5h
c3BlY3RSYXRpb0RvdWJsZSgpOwogCiAgICAgICAgIEFTU0VSVChmbGV4SXRlbS5pbnRyaW5zaWNM
b2dpY2FsSGVpZ2h0KCkpOwogICAgICAgICByZXR1cm4gZmxleEl0ZW0uaW50cmluc2ljTG9naWNh
bFdpZHRoKCkudG9Eb3VibGUoKSAvIGZsZXhJdGVtLmludHJpbnNpY0xvZ2ljYWxIZWlnaHQoKS50
b0RvdWJsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXgg
OWIyMDk5NWJiM2ZiLi5kMDI1NjFiOTk4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmNwcApAQCAtOTQxLDYgKzk0MSwxNiBAQCB2b2lkIFJlbmRlckltYWdlOjpsYXlv
dXQoKQogRmxvYXRTaXplIFJlbmRlckltYWdlOjpjb21wdXRlSW50cmluc2ljU2l6ZSgpIGNvbnN0
CiB7CiAgICAgQVNTRVJUKCFzaG91bGRBcHBseVNpemVDb250YWlubWVudCgpKTsKKworICAgIGlm
IChDaGVja2VkUHRyIHN2Z1Jvb3QgPSBlbWJlZGRlZFNWR1Jvb3QoKSkgeworICAgICAgICBhdXRv
IGludHJpbnNpY1NpemUgPSBzdmdSb290LT5jb21wdXRlSW50cmluc2ljU2l6ZSgpOworICAgICAg
ICBpbnRyaW5zaWNTaXplLnNjYWxlKHN0eWxlKCkudXNlZFpvb20oKSk7CisgICAgICAgIGludHJp
bnNpY1NpemUuc2NhbGUoaW1hZ2VEZXZpY2VQaXhlbFJhdGlvKCkpOworICAgICAgICBpZiAoIWlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCisgICAgICAgICAgICBpbnRyaW5zaWNTaXplID0gaW50
cmluc2ljU2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOworICAgICAgICByZXR1cm4gaW50cmluc2ljU2l6
ZTsKKyAgICB9CisKICAgICBhdXRvIGludHJpbnNpY1NpemUgPSBSZW5kZXJSZXBsYWNlZDo6Y29t
cHV0ZUludHJpbnNpY1NpemUoKTsKIAogICAgIC8vIE91ciBpbnRyaW5zaWNTaXplIGlzIGVtcHR5
IGlmIHdlJ3JlIHJlbmRlcmluZyBnZW5lcmF0ZWQgaW1hZ2VzIHdpdGggcmVsYXRpdmUgd2lkdGgv
aGVpZ2h0LiBGaWd1cmUgb3V0IHRoZSByaWdodCBpbnRyaW5zaWMgc2l6ZSB0byB1c2UuCkBAIC05
NjYsNiArOTc2LDE3IEBAIEZsb2F0U2l6ZSBSZW5kZXJJbWFnZTo6cHJlZmVycmVkQXNwZWN0UmF0
aW8oKSBjb25zdAogICAgICAgICByZXR1cm4geyAxLjAsIDEuMCB9OwogICAgIH0KIAorICAgIGlm
IChDaGVja2VkUHRyIHN2Z1Jvb3QgPSBlbWJlZGRlZFNWR1Jvb3QoKSkgeworICAgICAgICBhdXRv
IHJhdGlvID0gc3ZnUm9vdC0+cHJlZmVycmVkQXNwZWN0UmF0aW8oKTsKKyAgICAgICAgaWYgKCFp
c0hvcml6b250YWxXcml0aW5nTW9kZSgpICYmICFyYXRpby5pc0VtcHR5KCkpCisgICAgICAgICAg
ICByYXRpbyA9IHJhdGlvLnRyYW5zcG9zZWRTaXplKCk7CisKKyAgICAgICAgaWYgKHN0eWxlKCku
YXNwZWN0UmF0aW8oKS5pc1JhdGlvKCkgfHwgKHN0eWxlKCkuYXNwZWN0UmF0aW8oKS5pc0F1dG9B
bmRSYXRpbygpICYmIHJhdGlvLmlzRW1wdHkoKSkpCisgICAgICAgICAgICByYXRpbyA9IEZsb2F0
U2l6ZTo6bmFycm93UHJlY2lzaW9uKHN0eWxlKCkuYXNwZWN0UmF0aW9Mb2dpY2FsV2lkdGgoKS52
YWx1ZSwgc3R5bGUoKS5hc3BlY3RSYXRpb0xvZ2ljYWxIZWlnaHQoKS52YWx1ZSk7CisKKyAgICAg
ICAgcmV0dXJuIHJhdGlvOworICAgIH0KKwogICAgIHJldHVybiBSZW5kZXJSZXBsYWNlZDo6cHJl
ZmVycmVkQXNwZWN0UmF0aW8oKTsKIH0KIApAQCAtOTczLDE0ICs5OTQsMTQgQEAgYm9vbCBSZW5k
ZXJJbWFnZTo6c2hvdWxkSW52YWxpZGF0ZVByZWZlcnJlZFdpZHRocygpIGNvbnN0CiB7CiAgICAg
aWYgKFJlbmRlclJlcGxhY2VkOjpzaG91bGRJbnZhbGlkYXRlUHJlZmVycmVkV2lkdGhzKCkpCiAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBlbWJlZGRlZENvbnRlbnRCb3goKTsKKyAg
ICByZXR1cm4gZW1iZWRkZWRTVkdSb290KCk7CiB9CiAKLVJlbmRlckJveCogUmVuZGVySW1hZ2U6
OmVtYmVkZGVkQ29udGVudEJveCgpIGNvbnN0CitSZW5kZXJSZXBsYWNlZCogUmVuZGVySW1hZ2U6
OmVtYmVkZGVkU1ZHUm9vdCgpIGNvbnN0CiB7CiAgICAgaWYgKFJlZlB0ciBjYWNoZWRJbWFnZSA9
IHRoaXMtPmNhY2hlZEltYWdlKCkpIHsKICAgICAgICAgaWYgKFJlZlB0ciBpbWFnZSA9IGR5bmFt
aWNEb3duY2FzdDxTVkdJbWFnZT4oY2FjaGVkSW1hZ2UtPmltYWdlKCkpKQotICAgICAgICAgICAg
cmV0dXJuIGltYWdlLT5lbWJlZGRlZENvbnRlbnRCb3goKTsKKyAgICAgICAgICAgIHJldHVybiBp
bWFnZS0+ZW1iZWRkZWRTVkdSb290KCk7CiAgICAgfQogICAgIHJldHVybiBudWxscHRyOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAppbmRleCAyY2U3NTQ5NTJhZmUuLjVl
YWY5MmE2MTc2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKQEAgLTg5
LDcgKzg5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgb3ZlcnJp
ZGU7CiAKICAgICBib29sIHNob3VsZEludmFsaWRhdGVQcmVmZXJyZWRXaWR0aHMoKSBjb25zdCBm
aW5hbDsKLSAgICBSZW5kZXJCb3gqIGVtYmVkZGVkQ29udGVudEJveCgpIGNvbnN0IGZpbmFsOwor
ICAgIFJlbmRlclJlcGxhY2VkKiBlbWJlZGRlZFNWR1Jvb3QoKSBjb25zdCBmaW5hbDsKICAgICBG
bG9hdFNpemUgY29tcHV0ZUludHJpbnNpY1NpemUoKSBjb25zdCBmaW5hbDsKICAgICBGbG9hdFNp
emUgcHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdCBmaW5hbDsKICAgICBib29sIGZvcmVncm91
bmRJc0tub3duVG9CZU9wYXF1ZUluUmVjdChjb25zdCBMYXlvdXRSZWN0JiBsb2NhbFJlY3QsIHVu
c2lnbmVkIG1heERlcHRoVG9UZXN0KSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCmluZGV4IGYwM2ExM2Y3ZWIxMC4uNjUxMDZhOWYw
MTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKQEAg
LTQ3MCw2NCArNDcwLDI1IEBAIHN0YXRpYyBib29sIGlzVmlkZW9XaXRoRGVmYXVsdE9iamVjdFNp
emUoY29uc3QgUmVuZGVyUmVwbGFjZWQqIG1heWJlVmlkZW8pCiAgICAgcmV0dXJuIGZhbHNlOwog
fSAKIAotdm9pZCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUFzcGVjdFJhdGlvSW5mb3JtYXRpb25G
b3JSZW5kZXJCb3goUmVuZGVyQm94KiBjb250ZW50UmVuZGVyZXIsIEZsb2F0U2l6ZSYgY29uc3Ry
YWluZWRTaXplLCBGbG9hdFNpemUmIHByZWZlcnJlZEFzcGVjdFJhdGlvKSBjb25zdAordm9pZCBS
ZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY1NpemVzQ29uc3RyYWluZWRCeVRyYW5zZmVy
cmVkTWluTWF4U2l6ZXMoRmxvYXRTaXplJiBpbnRyaW5zaWNTaXplLCBGbG9hdFNpemUmIGludHJp
bnNpY1JhdGlvKSBjb25zdAogewotICAgIEZsb2F0U2l6ZSBpbnRyaW5zaWNTaXplOwogICAgIGlm
IChzaG91bGRBcHBseVNpemVPcklubGluZVNpemVDb250YWlubWVudCgpKSB7CiAgICAgICAgIGlu
dHJpbnNpY1NpemUgPSBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY1NpemUoKTsKLSAg
ICAgICAgcHJlZmVycmVkQXNwZWN0UmF0aW8gPSBSZW5kZXJSZXBsYWNlZDo6cHJlZmVycmVkQXNw
ZWN0UmF0aW8oKTsKLSAgICB9IGVsc2UgaWYgKGNvbnRlbnRSZW5kZXJlcikgewotICAgICAgICBi
b29sIGNvbnRlbnRJc1JlbmRlclJlcGxhY2VkID0gZmFsc2U7Ci0gICAgICAgIGlmIChhdXRvKiBy
ZW5kZXJSZXBsYWNlZCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJSZXBsYWNlZD4oY29udGVudFJl
bmRlcmVyKSkgewotICAgICAgICAgICAgaW50cmluc2ljU2l6ZSA9IHJlbmRlclJlcGxhY2VkLT5j
b21wdXRlSW50cmluc2ljU2l6ZSgpOwotICAgICAgICAgICAgcHJlZmVycmVkQXNwZWN0UmF0aW8g
PSByZW5kZXJSZXBsYWNlZC0+cHJlZmVycmVkQXNwZWN0UmF0aW8oKTsKLSAgICAgICAgICAgIGNv
bnRlbnRJc1JlbmRlclJlcGxhY2VkID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoc3R5
bGUoKS5hc3BlY3RSYXRpbygpLmlzUmF0aW8oKSB8fCAoc3R5bGUoKS5hc3BlY3RSYXRpbygpLmlz
QXV0b0FuZFJhdGlvKCkgJiYgcHJlZmVycmVkQXNwZWN0UmF0aW8uaXNFbXB0eSgpKSkKLSAgICAg
ICAgICAgIHByZWZlcnJlZEFzcGVjdFJhdGlvID0gRmxvYXRTaXplOjpuYXJyb3dQcmVjaXNpb24o
c3R5bGUoKS5hc3BlY3RSYXRpbygpLndpZHRoKCkudmFsdWUsIHN0eWxlKCkuYXNwZWN0UmF0aW8o
KS5oZWlnaHQoKS52YWx1ZSk7Ci0KLSAgICAgICAgLy8gSGFuZGxlIHpvb20gJiB2ZXJ0aWNhbCB3
cml0aW5nIG1vZGVzIGhlcmUsIGFzIHRoZSBlbWJlZGRlZCBkb2N1bWVudCBkb2Vzbid0IGtub3cg
YWJvdXQgdGhlbS4KLSAgICAgICAgaW50cmluc2ljU2l6ZS5zY2FsZShzdHlsZSgpLnVzZWRab29t
KCkpOwotCi0gICAgICAgIGlmIChhdXRvKiBpbWFnZSA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJJ
bWFnZT4oKnRoaXMpKQotICAgICAgICAgICAgaW50cmluc2ljU2l6ZS5zY2FsZShpbWFnZS0+aW1h
Z2VEZXZpY2VQaXhlbFJhdGlvKCkpOwotCi0gICAgICAgIC8vIFVwZGF0ZSBvdXIgaW50cmluc2lj
IHNpemUgdG8gbWF0Y2ggd2hhdCB0aGUgY29udGVudCByZW5kZXJlciBoYXMgY29tcHV0ZWQsIHNv
IHRoYXQgd2hlbiB3ZQotICAgICAgICAvLyBjb25zdHJhaW4gdGhlIHNpemUgYmVsb3csIHRoZSBj
b3JyZWN0IGludHJpbnNpYyBzaXplIHdpbGwgYmUgb2J0YWluZWQgZm9yIGNvbXBhcmlzb24gYWdh
aW5zdAotICAgICAgICAvLyBtaW4gYW5kIG1heCB3aWR0aHMuCi0gICAgICAgIGlmIChjb250ZW50
SXNSZW5kZXJSZXBsYWNlZCAmJiBpc1JlbmRlcldpZGdldCgpKSB7Ci0gICAgICAgICAgICAvLyBG
b3IgUmVuZGVyV2lkZ2V0IGNvbnRlbnQgKGUuZy4gPG9iamVjdD4gZW1iZWRkaW5nIGFuIFNWRyBk
b2N1bWVudCksIGFsd2F5cyB1cGRhdGUKLSAgICAgICAgICAgIC8vIG1faW50cmluc2ljU2l6ZSB0
byByZWZsZWN0IGN1cnJlbnQgaW50cmluc2ljIGRpbWVuc2lvbnMsIGFwcGx5aW5nIENTUyBkZWZh
dWx0IGZhbGxiYWNrCi0gICAgICAgICAgICAvLyB2YWx1ZXMgKDMwMHgxNTApIGZvciBkaW1lbnNp
b25zIHdpdGggbm8gaW50cmluc2ljIHZhbHVlIChlLmcuIHBlcmNlbnRhZ2Utc2l6ZWQgb3IKLSAg
ICAgICAgICAgIC8vIHJlbW92ZWQgYXR0cmlidXRlcykuIFRoaXMgcHJldmVudHMgc3RhbGUgY2Fj
aGVkIHNpemVzIHdoZW4gYXR0cmlidXRlcyBsaWtlIHdpZHRoL2hlaWdodAotICAgICAgICAgICAg
Ly8gYXJlIHJlbW92ZWQuIE5vdGU6IHRoaXMgZG9lcyBub3QgYXBwbHkgdG8gUmVuZGVySW1hZ2Ug
KDxpbWcgc3JjPSJzdmciPiksIHdoaWNoIG1hbmFnZXMKLSAgICAgICAgICAgIC8vIGl0cyBvd24g
aW50cmluc2ljIHNpemUgdmlhIHNldEludHJpbnNpY1NpemUoKSBkdXJpbmcgaW1hZ2UgbG9hZC4K
LSAgICAgICAgICAgIGF1dG8gc2l6ZVRvQ2FjaGUgPSBpbnRyaW5zaWNTaXplOworICAgICAgICBp
bnRyaW5zaWNSYXRpbyA9IFJlbmRlclJlcGxhY2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIGludHJpbnNpY1NpemUgPSBjb21wdXRlSW50cmluc2ljU2l6
ZSgpOworICAgICAgICBpbnRyaW5zaWNSYXRpbyA9IHByZWZlcnJlZEFzcGVjdFJhdGlvKCk7CisK
KyAgICAgICAgYXV0byBzaXplVG9DYWNoZSA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBp
bnRyaW5zaWNTaXplIDogaW50cmluc2ljU2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOworICAgICAgICBp
ZiAoZW1iZWRkZWRTVkdSb290KCkgJiYgaXNSZW5kZXJXaWRnZXQoKSkgewogICAgICAgICAgICAg
aWYgKCFzaXplVG9DYWNoZS53aWR0aCgpKQogICAgICAgICAgICAgICAgIHNpemVUb0NhY2hlLnNl
dFdpZHRoKGNEZWZhdWx0V2lkdGgpOwogICAgICAgICAgICAgaWYgKCFzaXplVG9DYWNoZS5oZWln
aHQoKSkKICAgICAgICAgICAgICAgICBzaXplVG9DYWNoZS5zZXRIZWlnaHQoY0RlZmF1bHRIZWln
aHQpOwogICAgICAgICAgICAgbV9pbnRyaW5zaWNTaXplID0gTGF5b3V0U2l6ZShzaXplVG9DYWNo
ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIXByZWZlcnJlZEFzcGVjdFJhdGlvLmlzRW1wdHkoKSAm
JiAhaW50cmluc2ljU2l6ZS5pc1plcm8oKSkKLSAgICAgICAgICAgIG1faW50cmluc2ljU2l6ZSA9
IExheW91dFNpemUoaW50cmluc2ljU2l6ZSk7Ci0KLSAgICAgICAgaWYgKCFpc0hvcml6b250YWxX
cml0aW5nTW9kZSgpKSB7Ci0gICAgICAgICAgICBpZiAoIXByZWZlcnJlZEFzcGVjdFJhdGlvLmlz
RW1wdHkoKSkKLSAgICAgICAgICAgICAgICBwcmVmZXJyZWRBc3BlY3RSYXRpbyA9IHByZWZlcnJl
ZEFzcGVjdFJhdGlvLnRyYW5zcG9zZWRTaXplKCk7Ci0gICAgICAgICAgICBpbnRyaW5zaWNTaXpl
ID0gaW50cmluc2ljU2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOwotICAgICAgICB9Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgaW50cmluc2ljU2l6ZSA9IGNvbXB1dGVJbnRyaW5zaWNTaXplKCk7Ci0gICAg
ICAgIHByZWZlcnJlZEFzcGVjdFJhdGlvID0gdGhpcy0+cHJlZmVycmVkQXNwZWN0UmF0aW8oKTsK
LSAgICAgICAgaWYgKCFwcmVmZXJyZWRBc3BlY3RSYXRpby5pc0VtcHR5KCkgJiYgIWludHJpbnNp
Y1NpemUuaXNaZXJvKCkpCi0gICAgICAgICAgICBtX2ludHJpbnNpY1NpemUgPSBMYXlvdXRTaXpl
KGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBpbnRyaW5zaWNTaXplIDogaW50cmluc2ljU2l6
ZS50cmFuc3Bvc2VkU2l6ZSgpKTsKKyAgICAgICAgfSBlbHNlIGlmICghaW50cmluc2ljUmF0aW8u
aXNFbXB0eSgpICYmICFpbnRyaW5zaWNTaXplLmlzWmVybygpKQorICAgICAgICAgICAgbV9pbnRy
aW5zaWNTaXplID0gTGF5b3V0U2l6ZShzaXplVG9DYWNoZSk7CiAgICAgfQotICAgIGNvbnN0cmFp
bmVkU2l6ZSA9IGludHJpbnNpY1NpemU7Ci19Ci0KLXZvaWQgUmVuZGVyUmVwbGFjZWQ6OmNvbXB1
dGVJbnRyaW5zaWNTaXplc0NvbnN0cmFpbmVkQnlUcmFuc2ZlcnJlZE1pbk1heFNpemVzKFJlbmRl
ckJveCogY29udGVudFJlbmRlcmVyLCBGbG9hdFNpemUmIGludHJpbnNpY1NpemUsIEZsb2F0U2l6
ZSYgaW50cmluc2ljUmF0aW8pIGNvbnN0Ci17Ci0gICAgY29tcHV0ZUFzcGVjdFJhdGlvSW5mb3Jt
YXRpb25Gb3JSZW5kZXJCb3goY29udGVudFJlbmRlcmVyLCBpbnRyaW5zaWNTaXplLCBpbnRyaW5z
aWNSYXRpbyk7CiAKICAgICAvLyBOb3cgY29uc3RyYWluIHRoZSBpbnRyaW5zaWMgc2l6ZSBhbG9u
ZyBlYWNoIGF4aXMgYWNjb3JkaW5nIHRvIG1pbmltdW0gYW5kIG1heGltdW0gd2lkdGgvaGVpZ2h0
cyBhbG9uZyB0aGUKICAgICAvLyBvcHBvc2l0ZSBheGlzLiBTbyBmb3IgZXhhbXBsZSBhIG1heGlt
dW0gd2lkdGggdGhhdCBzaHJpbmtzIG91ciB3aWR0aCB3aWxsIHJlc3VsdCBpbiB0aGUgaGVpZ2h0
IHdlIGNvbXB1dGUgaGVyZQpAQCAtNTk3LDI1ICs1NTgsMTMgQEAgTGF5b3V0UmVjdCBSZW5kZXJS
ZXBsYWNlZDo6cmVwbGFjZWRDb250ZW50UmVjdChjb25zdCBMYXlvdXRTaXplJiBpbnRyaW5zaWNT
aXplKQogICAgIHJldHVybiBmaW5hbFJlY3Q7CiB9CiAKLWRvdWJsZSBSZW5kZXJSZXBsYWNlZDo6
Y29tcHV0ZUludHJpbnNpY0FzcGVjdFJhdGlvKCkgY29uc3QKLXsKLSAgICBGbG9hdFNpemUgaW50
cmluc2ljUmF0aW87Ci0gICAgRmxvYXRTaXplIGludHJpbnNpY1NpemU7Ci0gICAgY29tcHV0ZUFz
cGVjdFJhdGlvSW5mb3JtYXRpb25Gb3JSZW5kZXJCb3goZW1iZWRkZWRDb250ZW50Qm94KCksIGlu
dHJpbnNpY1NpemUsIGludHJpbnNpY1JhdGlvKTsKLSAgICByZXR1cm4gaW50cmluc2ljUmF0aW8u
YXNwZWN0UmF0aW9Eb3VibGUoKTsKLX0KLQogRmxvYXRTaXplIFJlbmRlclJlcGxhY2VkOjpjb21w
dXRlSW50cmluc2ljU2l6ZSgpIGNvbnN0CiB7Ci0gICAgLy8gSWYgdGhlcmUncyBhbiBlbWJlZGRl
ZENvbnRlbnRCb3goKSBvZiBhIHJlbW90ZSwgcmVmZXJlbmNlZCBkb2N1bWVudCBhdmFpbGFibGUs
IHRoaXMgY29kZS1wYXRoIHNob3VsZCBuZXZlciBiZSB1c2VkLgotICAgIEFTU0VSVCghZW1iZWRk
ZWRDb250ZW50Qm94KCkgfHwgc2hvdWxkQXBwbHlTaXplT3JJbmxpbmVTaXplQ29udGFpbm1lbnQo
KSk7CiAgICAgcmV0dXJuIHsgaW50cmluc2ljTG9naWNhbFdpZHRoKCksIGludHJpbnNpY0xvZ2lj
YWxIZWlnaHQoKSB9OwogfQogCiBGbG9hdFNpemUgUmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFz
cGVjdFJhdGlvKCkgY29uc3QKIHsKLSAgICAvLyBJZiB0aGVyZSdzIGFuIGVtYmVkZGVkQ29udGVu
dEJveCgpIG9mIGEgcmVtb3RlLCByZWZlcmVuY2VkIGRvY3VtZW50IGF2YWlsYWJsZSwgdGhpcyBj
b2RlLXBhdGggc2hvdWxkIG5ldmVyIGJlIHVzZWQuCi0gICAgQVNTRVJUKCFlbWJlZGRlZENvbnRl
bnRCb3goKSB8fCBzaG91bGRBcHBseVNpemVPcklubGluZVNpemVDb250YWlubWVudCgpKTsKICAg
ICBhdXRvIGludHJpbnNpY1NpemUgPSBGbG9hdFNpemUoaW50cmluc2ljTG9naWNhbFdpZHRoKCks
IGludHJpbnNpY0xvZ2ljYWxIZWlnaHQoKSk7CiAgICAgRmxvYXRTaXplIHByZWZlcnJlZEFzcGVj
dFJhdGlvOwogCkBAIC02NzUsNyArNjI0LDcgQEAgdm9pZCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0
ZUFzcGVjdFJhdGlvQWRqdXN0ZWRJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgYXV0byYgc3R5bGUgPSB0aGlzLT5zdHlsZSgpOwotICAgIGF1
dG8gY29tcHV0ZWRBc3BlY3RSYXRpbyA9IGNvbXB1dGVJbnRyaW5zaWNBc3BlY3RSYXRpbygpOwor
ICAgIGF1dG8gY29tcHV0ZWRBc3BlY3RSYXRpbyA9IHByZWZlcnJlZEFzcGVjdFJhdGlvKCkuYXNw
ZWN0UmF0aW9Eb3VibGUoKTsKICAgICBhdXRvIGNvbXB1dGVkSW50cmluc2ljTG9naWNhbFdpZHRo
ID0gbWluTG9naWNhbFdpZHRoOwogCiAgICAgaWYgKGF1dG8gZml4ZWRMb2dpY2FsSGVpZ2h0ID0g
c3R5bGUubG9naWNhbEhlaWdodCgpLnRyeUZpeGVkKCkpCkBAIC02OTgsMTMgKzY0Nyw5IEBAIHN0
YXRpYyBpbmxpbmUgTGF5b3V0VW5pdCBOT0RFTEVURSByZXNvbHZlV2lkdGhGb3JSYXRpbyhMYXlv
dXRVbml0IGJvcmRlckFuZFBhZGRpCiAgICAgcmV0dXJuIExheW91dFVuaXQobG9naWNhbEhlaWdo
dCAqIGFzcGVjdFJhdGlvKTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIE5PREVMRVRFIGhhc0lu
dHJpbnNpY1NpemUoUmVuZGVyQm94KmNvbnRlbnRSZW5kZXJlciwgYm9vbCBoYXNJbnRyaW5zaWNX
aWR0aCwgYm9vbCBoYXNJbnRyaW5zaWNIZWlnaHQgKQorc3RhdGljIGlubGluZSBib29sIE5PREVM
RVRFIGhhc0ludHJpbnNpY1NpemUoY29uc3QgUmVuZGVyUmVwbGFjZWQqIHN2Z1Jvb3QsIGJvb2wg
aGFzSW50cmluc2ljV2lkdGgsIGJvb2wgaGFzSW50cmluc2ljSGVpZ2h0KQogewotICAgIGlmICho
YXNJbnRyaW5zaWNXaWR0aCAmJiBoYXNJbnRyaW5zaWNIZWlnaHQpCi0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIGlmIChoYXNJbnRyaW5zaWNXaWR0aCB8fCBoYXNJbnRyaW5zaWNIZWlnaHQpCi0g
ICAgICAgIHJldHVybiBjb250ZW50UmVuZGVyZXIgJiYgY29udGVudFJlbmRlcmVyLT5pc1JlbmRl
ck9yTGVnYWN5UmVuZGVyU1ZHUm9vdCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4g
KGhhc0ludHJpbnNpY1dpZHRoICYmIGhhc0ludHJpbnNpY0hlaWdodCkgfHwgKChoYXNJbnRyaW5z
aWNXaWR0aCB8fCBoYXNJbnRyaW5zaWNIZWlnaHQpICYmIHN2Z1Jvb3QpOwogfQogCiBMYXlvdXRV
bml0IFJlbmRlclJlcGxhY2VkOjpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgoU2hvdWxkQ29t
cHV0ZVByZWZlcnJlZCBzaG91bGRDb21wdXRlUHJlZmVycmVkKSBjb25zdApAQCAtNzE1LDEyICs2
NjAsMTAgQEAgTGF5b3V0VW5pdCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNh
bFdpZHRoKFNob3VsZENvbXB1dGVQcmVmZXJyZWQgc2gKICAgICBpZiAoc3R5bGUubG9naWNhbFdp
ZHRoKCkuaXNJbnRyaW5zaWNPclN0cmV0Y2goKSkKICAgICAgICAgcmV0dXJuIGNvbXB1dGVSZXBs
YWNlZExvZ2ljYWxXaWR0aFJlc3BlY3RpbmdNaW5NYXhXaWR0aChjb21wdXRlUmVwbGFjZWRMb2dp
Y2FsV2lkdGhVc2luZyhzdHlsZS5sb2dpY2FsV2lkdGgoKSksIHNob3VsZENvbXB1dGVQcmVmZXJy
ZWQpOwogCi0gICAgUmVuZGVyQm94KiBjb250ZW50UmVuZGVyZXIgPSBlbWJlZGRlZENvbnRlbnRC
b3goKTsKLQogICAgIC8vIDEwLjMuMiBJbmxpbmUsIHJlcGxhY2VkIGVsZW1lbnRzOiBodHRwOi8v
d3d3LnczLm9yZy9UUi9DU1MyMS92aXN1ZGV0Lmh0bWwjaW5saW5lLXJlcGxhY2VkLXdpZHRoCiAg
ICAgRmxvYXRTaXplIGludHJpbnNpY1JhdGlvOwogICAgIEZsb2F0U2l6ZSBjb25zdHJhaW5lZFNp
emU7Ci0gICAgY29tcHV0ZUludHJpbnNpY1NpemVzQ29uc3RyYWluZWRCeVRyYW5zZmVycmVkTWlu
TWF4U2l6ZXMoY29udGVudFJlbmRlcmVyLCBjb25zdHJhaW5lZFNpemUsIGludHJpbnNpY1JhdGlv
KTsKKyAgICBjb21wdXRlSW50cmluc2ljU2l6ZXNDb25zdHJhaW5lZEJ5VHJhbnNmZXJyZWRNaW5N
YXhTaXplcyhjb25zdHJhaW5lZFNpemUsIGludHJpbnNpY1JhdGlvKTsKIAogICAgIGlmIChzdHls
ZS5sb2dpY2FsV2lkdGgoKS5pc0F1dG8oKSkgewogICAgICAgICBib29sIGNvbXB1dGVkSGVpZ2h0
SXNBdXRvID0gc3R5bGUubG9naWNhbEhlaWdodCgpLmlzQXV0bygpOwpAQCAtNzMwLDcgKzY3Myw3
IEBAIExheW91dFVuaXQgUmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0
aChTaG91bGRDb21wdXRlUHJlZmVycmVkIHNoCiAgICAgICAgIC8vIEZvciBmbGV4IG9yIGdyaWQg
aXRlbXMgd2hlcmUgdGhlIGxvZ2ljYWwgaGVpZ2h0IGhhcyBiZWVuIG92ZXJyaWRlbiB0aGVuIHdl
IHNob3VsZCB1c2UgdGhhdCBzaXplIHRvIGNvbXB1dGUgdGhlIHJlcGxhY2VkIHdpZHRoIGFzIGxv
bmcgYXMgdGhlIGZsZXggb3IKICAgICAgICAgLy8gZ3JpZCBpdGVtIGhhcyBhbiBpbnRyaW5zaWMg
c2l6ZS4gSXQgaXMgcG9zc2libGUgKGluZGVlZCwgY29tbW9uKSBmb3IgYW4gU1ZHIGdyYXBoaWMg
dG8gaGF2ZSBhbiBpbnRyaW5zaWMgYXNwZWN0IHJhdGlvIGJ1dCBub3QgdG8gaGF2ZSBhbiBpbnRy
aW5zaWMKICAgICAgICAgLy8gd2lkdGggb3IgaGVpZ2h0LiBUaGVyZSBhcmUgYWxzbyBlbGVtZW50
cyB3aXRoIGludHJpbnNpYyBzaXplcyBidXQgd2l0aG91dCBpbnRyaW5zaWMgcmF0aW8gKGxpa2Ug
YW4gaWZyYW1lKS4KLSAgICAgICAgaWYgKGF1dG8gb3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQgPSAo
IWludHJpbnNpY1JhdGlvLmlzRW1wdHkoKSAmJiAoaXNGbGV4SXRlbSgpIHx8IGlzR3JpZEl0ZW0o
KSkgJiYgaGFzSW50cmluc2ljU2l6ZShjb250ZW50UmVuZGVyZXIsIGhhc0ludHJpbnNpY1dpZHRo
LCBoYXNJbnRyaW5zaWNIZWlnaHQpID8gdGhpcy0+b3ZlcnJpZGluZ0JvcmRlckJveExvZ2ljYWxI
ZWlnaHQoKSA6IHN0ZDo6bnVsbG9wdCkpCisgICAgICAgIGlmIChhdXRvIG92ZXJyaWRpbmdMb2dp
Y2FsSGVpZ2h0ID0gKCFpbnRyaW5zaWNSYXRpby5pc0VtcHR5KCkgJiYgKGlzRmxleEl0ZW0oKSB8
fCBpc0dyaWRJdGVtKCkpICYmIGhhc0ludHJpbnNpY1NpemUoZW1iZWRkZWRTVkdSb290KCksIGhh
c0ludHJpbnNpY1dpZHRoLCBoYXNJbnRyaW5zaWNIZWlnaHQpID8gdGhpcy0+b3ZlcnJpZGluZ0Jv
cmRlckJveExvZ2ljYWxIZWlnaHQoKSA6IHN0ZDo6bnVsbG9wdCkpCiAgICAgICAgICAgICByZXR1
cm4gY29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoUmVzcGVjdGluZ01pbk1heFdpZHRoKGNvbnRl
bnRCb3hMb2dpY2FsSGVpZ2h0KCpvdmVycmlkaW5nTG9naWNhbEhlaWdodCkgKiBpbnRyaW5zaWNS
YXRpby5hc3BlY3RSYXRpb0RvdWJsZSgpLCBzaG91bGRDb21wdXRlUHJlZmVycmVkKTsKIAogICAg
ICAgICAvLyBJZiAnaGVpZ2h0JyBhbmQgJ3dpZHRoJyBib3RoIGhhdmUgY29tcHV0ZWQgdmFsdWVz
IG9mICdhdXRvJyBhbmQgdGhlIGVsZW1lbnQgYWxzbyBoYXMgYW4gaW50cmluc2ljIHdpZHRoLCB0
aGVuIHRoYXQgaW50cmluc2ljIHdpZHRoIGlzIHRoZSB1c2VkIHZhbHVlIG9mICd3aWR0aCcuCkBA
IC04MTMsMTkgKzc1NiwxNyBAQCBMYXlvdXRVbml0IFJlbmRlclJlcGxhY2VkOjpjb21wdXRlUmVw
bGFjZWRMb2dpY2FsSGVpZ2h0KHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdAogICAgIGlmIChoYXNS
ZXBsYWNlZExvZ2ljYWxIZWlnaHQoKSkKICAgICAgICAgcmV0dXJuIGNvbXB1dGVSZXBsYWNlZExv
Z2ljYWxIZWlnaHRSZXNwZWN0aW5nTWluTWF4SGVpZ2h0KGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxI
ZWlnaHRVc2luZyhzdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKSkpOwogCi0gICAgUmVuZGVyQm94KiBj
b250ZW50UmVuZGVyZXIgPSBlbWJlZGRlZENvbnRlbnRCb3goKTsKLQogICAgIC8vIDEwLjYuMiBJ
bmxpbmUsIHJlcGxhY2VkIGVsZW1lbnRzOiBodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS92aXN1
ZGV0Lmh0bWwjaW5saW5lLXJlcGxhY2VkLWhlaWdodAogICAgIEZsb2F0U2l6ZSBpbnRyaW5zaWNS
YXRpbzsKICAgICBGbG9hdFNpemUgY29uc3RyYWluZWRTaXplOwotICAgIGNvbXB1dGVJbnRyaW5z
aWNTaXplc0NvbnN0cmFpbmVkQnlUcmFuc2ZlcnJlZE1pbk1heFNpemVzKGNvbnRlbnRSZW5kZXJl
ciwgY29uc3RyYWluZWRTaXplLCBpbnRyaW5zaWNSYXRpbyk7CisgICAgY29tcHV0ZUludHJpbnNp
Y1NpemVzQ29uc3RyYWluZWRCeVRyYW5zZmVycmVkTWluTWF4U2l6ZXMoY29uc3RyYWluZWRTaXpl
LCBpbnRyaW5zaWNSYXRpbyk7CiAKICAgICBib29sIHdpZHRoSXNBdXRvID0gc3R5bGUoKS5sb2dp
Y2FsV2lkdGgoKS5pc0F1dG8oKTsKICAgICBib29sIGhhc0ludHJpbnNpY1dpZHRoID0gY29uc3Ry
YWluZWRTaXplLndpZHRoKCkgPiAwIHx8ICghY29uc3RyYWluZWRTaXplLndpZHRoKCkgJiYgc2hv
dWxkUmVzcGVjdFplcm9JbnRyaW5zaWNXaWR0aCgpKSB8fCBzaG91bGRBcHBseVNpemVPcklubGlu
ZVNpemVDb250YWlubWVudCgpOwogICAgIGJvb2wgaGFzSW50cmluc2ljSGVpZ2h0ID0gY29uc3Ry
YWluZWRTaXplLmhlaWdodCgpID4gMCB8fCBzaG91bGRBcHBseVNpemVDb250YWlubWVudCgpOwog
CiAgICAgLy8gU2VlIGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQoKSBmb3IgYSBzaW1pbGFy
IGNoZWNrIGZvciBoZWlnaHRzLgotICAgIGlmIChhdXRvIG92ZXJyaWRpbmdsb2dpY2FsV2lkdGgg
PSAoIWludHJpbnNpY1JhdGlvLmlzRW1wdHkoKSAmJiAoaXNGbGV4SXRlbSgpIHx8IGlzR3JpZEl0
ZW0oKSkgJiYgaGFzSW50cmluc2ljU2l6ZShjb250ZW50UmVuZGVyZXIsIGhhc0ludHJpbnNpY1dp
ZHRoLCBoYXNJbnRyaW5zaWNIZWlnaHQpID8gb3ZlcnJpZGluZ0JvcmRlckJveExvZ2ljYWxXaWR0
aCgpIDogc3RkOjpudWxsb3B0KSkKKyAgICBpZiAoYXV0byBvdmVycmlkaW5nbG9naWNhbFdpZHRo
ID0gKCFpbnRyaW5zaWNSYXRpby5pc0VtcHR5KCkgJiYgKGlzRmxleEl0ZW0oKSB8fCBpc0dyaWRJ
dGVtKCkpICYmIGhhc0ludHJpbnNpY1NpemUoZW1iZWRkZWRTVkdSb290KCksIGhhc0ludHJpbnNp
Y1dpZHRoLCBoYXNJbnRyaW5zaWNIZWlnaHQpID8gb3ZlcnJpZGluZ0JvcmRlckJveExvZ2ljYWxX
aWR0aCgpIDogc3RkOjpudWxsb3B0KSkKICAgICAgICAgcmV0dXJuIGNvbXB1dGVSZXBsYWNlZExv
Z2ljYWxIZWlnaHRSZXNwZWN0aW5nTWluTWF4SGVpZ2h0KGNvbnRlbnRCb3hMb2dpY2FsV2lkdGgo
Km92ZXJyaWRpbmdsb2dpY2FsV2lkdGgpICogaW50cmluc2ljUmF0aW8udHJhbnNwb3NlZFNpemUo
KS5hc3BlY3RSYXRpb0RvdWJsZSgpKTsKIAogICAgIC8vIElmICdoZWlnaHQnIGFuZCAnd2lkdGgn
IGJvdGggaGF2ZSBjb21wdXRlZCB2YWx1ZXMgb2YgJ2F1dG8nIGFuZCB0aGUgZWxlbWVudCBhbHNv
IGhhcyBhbiBpbnRyaW5zaWMgaGVpZ2h0LCB0aGVuIHRoYXQgaW50cmluc2ljIGhlaWdodCBpcyB0
aGUgdXNlZCB2YWx1ZSBvZiAnaGVpZ2h0Jy4KQEAgLTg2MCw3ICs4MDEsNyBAQCB2b2lkIFJlbmRl
clJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljS2V5d29yZExvZ2ljYWxXaWR0aHMoTGF5b3V0VW5p
dCYgbWluTG9naWNhbAogewogICAgIGlmIChoYXNJbnRyaW5zaWNBc3BlY3RSYXRpbygpICYmICFz
dHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc0F1dG8oKSkgewogICAgICAgICBpZiAoYXV0byBmaXhl
ZEhlaWdodCA9IHN0eWxlKCkubG9naWNhbEhlaWdodCgpLnRyeUZpeGVkKCkpIHsKLSAgICAgICAg
ICAgIGF1dG8gaGVpZ2h0RGVyaXZlZFdpZHRoID0gTGF5b3V0VW5pdCB7IGZpeGVkSGVpZ2h0LT5y
ZXNvbHZlWm9vbShzdHlsZSgpLnVzZWRab29tRm9yTGVuZ3RoKCkpICogY29tcHV0ZUludHJpbnNp
Y0FzcGVjdFJhdGlvKCkgfTsKKyAgICAgICAgICAgIGF1dG8gaGVpZ2h0RGVyaXZlZFdpZHRoID0g
TGF5b3V0VW5pdCB7IGZpeGVkSGVpZ2h0LT5yZXNvbHZlWm9vbShzdHlsZSgpLnVzZWRab29tRm9y
TGVuZ3RoKCkpICogcHJlZmVycmVkQXNwZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0RvdWJsZSgpIH07
CiAgICAgICAgICAgICBtaW5Mb2dpY2FsV2lkdGggPSBoZWlnaHREZXJpdmVkV2lkdGg7CiAgICAg
ICAgICAgICBtYXhMb2dpY2FsV2lkdGggPSBoZWlnaHREZXJpdmVkV2lkdGg7CiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0xMDczLDEwICsxMDE0LDcgQEAgdm9pZCBSZW5kZXJSZXBsYWNlZDo6bGF5
b3V0U2hhZG93Q29udGVudChjb25zdCBMYXlvdXRTaXplJiBvbGRTaXplKQogCiBGbG9hdFNpemUg
UmVuZGVyUmVwbGFjZWQ6OmludHJpbnNpY1JhdGlvKCkgY29uc3QKIHsKLSAgICBGbG9hdFNpemUg
aW50cmluc2ljUmF0aW87Ci0gICAgRmxvYXRTaXplIGNvbnN0cmFpbmVkU2l6ZTsKLSAgICBjb21w
dXRlQXNwZWN0UmF0aW9JbmZvcm1hdGlvbkZvclJlbmRlckJveChlbWJlZGRlZENvbnRlbnRCb3go
KSwgY29uc3RyYWluZWRTaXplLCBpbnRyaW5zaWNSYXRpbyk7Ci0gICAgcmV0dXJuIGludHJpbnNp
Y1JhdGlvOworICAgIHJldHVybiBwcmVmZXJyZWRBc3BlY3RSYXRpbygpOwogfQogCiB2b2lkIFJl
bmRlclJlcGxhY2VkOjpjb21wdXRlUmVwbGFjZWRPdXRPZkZsb3dQb3NpdGlvbmVkTG9naWNhbFdp
ZHRoKExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyYgY29tcHV0ZWRWYWx1ZXMpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCmluZGV4IGFiM2Y0NzEwYWE5
MC4uYjQ3NGMzZDZjZDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVwbGFjZWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFj
ZWQuaApAQCAtNDcsNyArNDcsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0NvbnRlbnRMaWtlbHlW
aXNpYmxlSW5WaWV3cG9ydCgpOwogICAgIGJvb2wgc2hvdWxkSW52YWxpZGF0ZVByZWZlcnJlZFdp
ZHRocygpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgZG91YmxlIGNvbXB1dGVJbnRyaW5zaWNBc3Bl
Y3RSYXRpbygpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIHBhaW50c0NvbnRlbnQoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CiAKQEAgLTYxLDYgKzYwLDkgQEAgcHVibGljOgogICAgIGJvb2wg
cmVwbGFjZWRNaW5Mb2dpY2FsSGVpZ2h0Q29tcHV0ZXNBc05vbmUoKSBjb25zdDsKICAgICBib29s
IHJlcGxhY2VkTWF4TG9naWNhbEhlaWdodENvbXB1dGVzQXNOb25lKCkgY29uc3Q7CiAKKyAgICB2
aXJ0dWFsIEZsb2F0U2l6ZSBjb21wdXRlSW50cmluc2ljU2l6ZSgpIGNvbnN0OworICAgIHZpcnR1
YWwgRmxvYXRTaXplIHByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3Q7CisKIHByb3RlY3RlZDoK
ICAgICBSZW5kZXJSZXBsYWNlZChUeXBlLCBFbGVtZW50JiwgUmVuZGVyU3R5bGUmJiwgT3B0aW9u
U2V0PFJlcGxhY2VkRmxhZz4gPSB7IH0pOwogICAgIFJlbmRlclJlcGxhY2VkKFR5cGUsIEVsZW1l
bnQmLCBSZW5kZXJTdHlsZSYmLCBjb25zdCBMYXlvdXRTaXplJiBpbnRyaW5zaWNTaXplLCBPcHRp
b25TZXQ8UmVwbGFjZWRGbGFnPiA9IHsgfSk7CkBAIC03Nyw5ICs3OSw2IEBAIHByb3RlY3RlZDoK
IAogICAgIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGU6OkRpZmZlcmVuY2UsIGNvbnN0IFJlbmRl
clN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBjb21w
dXRlSW50cmluc2ljU2l6ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgRmxvYXRTaXplIHByZWZlcnJl
ZEFzcGVjdFJhdGlvKCkgY29uc3Q7Ci0KICAgICB2b2lkIHNldEludHJpbnNpY1NpemUoY29uc3Qg
TGF5b3V0U2l6ZSYgaW50cmluc2ljU2l6ZSkgeyBtX2ludHJpbnNpY1NpemUgPSBpbnRyaW5zaWNT
aXplOyB9CiAgICAgdmlydHVhbCB2b2lkIGludHJpbnNpY1NpemVDaGFuZ2VkKCk7CiAgICAgdmly
dHVhbCBib29sIGhhc1JlbGF0aXZlSW50cmluc2ljTG9naWNhbFdpZHRoKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KQEAgLTEwNiw3ICsxMDUsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb21w
dXRlQXNwZWN0UmF0aW9BZGp1c3RlZEludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYg
bWluTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0OwogCi0g
ICAgdmlydHVhbCBSZW5kZXJCb3gqIGVtYmVkZGVkQ29udGVudEJveCgpIGNvbnN0IHsgcmV0dXJu
IDA7IH0KKyAgICB2aXJ0dWFsIFJlbmRlclJlcGxhY2VkKiBlbWJlZGRlZFNWR1Jvb3QoKSBjb25z
dCB7IHJldHVybiAwOyB9CiAgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAiUmVuZGVyUmVwbGFjZWQiX3M7IH0KIAogICAgIGJvb2wgY2FuSGF2ZUNo
aWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTEyMSw4ICsxMjAs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgY2FuQmVTZWxlY3Rpb25MZWFmKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0Rm9yUmVw
YWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29s
IGNsaXBUb1Zpc2libGVDb250ZW50ID0gdHJ1ZSkgZmluYWw7Ci0gICAgdm9pZCBjb21wdXRlQXNw
ZWN0UmF0aW9JbmZvcm1hdGlvbkZvclJlbmRlckJveChSZW5kZXJCb3gqLCBGbG9hdFNpemUmIGNv
bnN0cmFpbmVkU2l6ZSwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykgY29uc3Q7Ci0gICAgdm9p
ZCBjb21wdXRlSW50cmluc2ljU2l6ZXNDb25zdHJhaW5lZEJ5VHJhbnNmZXJyZWRNaW5NYXhTaXpl
cyhSZW5kZXJCb3gqIGNvbnRlbnRSZW5kZXJlciwgRmxvYXRTaXplJiBjb25zdHJhaW5lZFNpemUs
IEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pIGNvbnN0OworICAgIHZvaWQgY29tcHV0ZUludHJp
bnNpY1NpemVzQ29uc3RyYWluZWRCeVRyYW5zZmVycmVkTWluTWF4U2l6ZXMoRmxvYXRTaXplJiBj
b25zdHJhaW5lZFNpemUsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pIGNvbnN0OwogCiAgICAg
dmlydHVhbCBib29sIHNob3VsZERyYXdTZWxlY3Rpb25UaW50KCkgY29uc3Q7CiAgICAgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCmluZGV4IDRkYTUwOGI2YTczYS4u
ZDk1ODNkZTY1YmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
V2lkZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNw
cApAQCAtNDg3LDE1ICs0ODcsNDYgQEAgYm9vbCBSZW5kZXJXaWRnZXQ6OnNob3VsZEludmFsaWRh
dGVQcmVmZXJyZWRXaWR0aHMoKSBjb25zdAogewogICAgIGlmIChSZW5kZXJSZXBsYWNlZDo6c2hv
dWxkSW52YWxpZGF0ZVByZWZlcnJlZFdpZHRocygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICByZXR1cm4gZW1iZWRkZWRDb250ZW50Qm94KCk7CisgICAgcmV0dXJuIGVtYmVkZGVkU1ZHUm9v
dCgpOwogfQogCi1SZW5kZXJCb3gqIFJlbmRlcldpZGdldDo6ZW1iZWRkZWRDb250ZW50Qm94KCkg
Y29uc3QKK1JlbmRlclJlcGxhY2VkKiBSZW5kZXJXaWRnZXQ6OmVtYmVkZGVkU1ZHUm9vdCgpIGNv
bnN0CiB7CiAgICAgaWYgKCFpczxSZW5kZXJFbWJlZGRlZE9iamVjdD4odGhpcykpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIFJlZlB0ciBmcmFtZVZpZXcgPSBkeW5hbWljRG93bmNhc3Q8
TG9jYWxGcmFtZVZpZXc+KHdpZGdldCgpKTsKLSAgICByZXR1cm4gZnJhbWVWaWV3ID8gZnJhbWVW
aWV3LT5lbWJlZGRlZENvbnRlbnRCb3goKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIGZyYW1lVmll
dyA/IGZyYW1lVmlldy0+ZW1iZWRkZWRTVkdSb290KCkgOiBudWxscHRyOworfQorCitGbG9hdFNp
emUgUmVuZGVyV2lkZ2V0Ojpjb21wdXRlSW50cmluc2ljU2l6ZSgpIGNvbnN0Cit7CisgICAgQ2hl
Y2tlZFB0ciBzdmdSb290ID0gZW1iZWRkZWRTVkdSb290KCk7CisgICAgaWYgKCFzdmdSb290KQor
ICAgICAgICByZXR1cm4gUmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVJbnRyaW5zaWNTaXplKCk7CisK
KyAgICBhdXRvIGludHJpbnNpY1NpemUgPSBzdmdSb290LT5jb21wdXRlSW50cmluc2ljU2l6ZSgp
OworICAgIGludHJpbnNpY1NpemUuc2NhbGUoc3R5bGUoKS51c2VkWm9vbSgpKTsKKworICAgIGlm
ICghaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKKyAgICAgICAgaW50cmluc2ljU2l6ZSA9IGlu
dHJpbnNpY1NpemUudHJhbnNwb3NlZFNpemUoKTsKKworICAgIHJldHVybiBpbnRyaW5zaWNTaXpl
OworfQorCitGbG9hdFNpemUgUmVuZGVyV2lkZ2V0OjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNv
bnN0Cit7CisgICAgQ2hlY2tlZFB0ciBzdmdSb290ID0gZW1iZWRkZWRTVkdSb290KCk7CisgICAg
aWYgKCFzdmdSb290KQorICAgICAgICByZXR1cm4gUmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFz
cGVjdFJhdGlvKCk7CisKKyAgICBhdXRvIHJhdGlvID0gc3ZnUm9vdC0+cHJlZmVycmVkQXNwZWN0
UmF0aW8oKTsKKyAgICBpZiAoIWlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgJiYgIXJhdGlvLmlz
RW1wdHkoKSkKKyAgICAgICAgcmF0aW8gPSByYXRpby50cmFuc3Bvc2VkU2l6ZSgpOworCisgICAg
aWYgKHN0eWxlKCkuYXNwZWN0UmF0aW8oKS5pc1JhdGlvKCkgfHwgKHN0eWxlKCkuYXNwZWN0UmF0
aW8oKS5pc0F1dG9BbmRSYXRpbygpICYmIHJhdGlvLmlzRW1wdHkoKSkpCisgICAgICAgIHJhdGlv
ID0gRmxvYXRTaXplOjpuYXJyb3dQcmVjaXNpb24oc3R5bGUoKS5hc3BlY3RSYXRpb0xvZ2ljYWxX
aWR0aCgpLnZhbHVlLCBzdHlsZSgpLmFzcGVjdFJhdGlvTG9naWNhbEhlaWdodCgpLnZhbHVlKTsK
KworICAgIHJldHVybiByYXRpbzsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCmluZGV4IGUwMTc4MTYyMDBkZi4uOTJmMjgx
MzhjYWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCkBAIC05MSw3
ICs5MSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAK
ICAgICBib29sIHNob3VsZEludmFsaWRhdGVQcmVmZXJyZWRXaWR0aHMoKSBjb25zdCBmaW5hbDsK
LSAgICBSZW5kZXJCb3gqIGVtYmVkZGVkQ29udGVudEJveCgpIGNvbnN0IGZpbmFsOworICAgIFJl
bmRlclJlcGxhY2VkKiBlbWJlZGRlZFNWR1Jvb3QoKSBjb25zdCBmaW5hbDsKKyAgICBGbG9hdFNp
emUgY29tcHV0ZUludHJpbnNpY1NpemUoKSBjb25zdCBmaW5hbDsKKyAgICBGbG9hdFNpemUgcHJl
ZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgc2V0U2VsZWN0aW9u
U3RhdGUoSGlnaGxpZ2h0U3RhdGUpIGZpbmFsOwogICAgIHZvaWQgc2V0T3ZlcmxhcFRlc3RSZXN1
bHQoYm9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSb290LmNwcAppbmRleCBkZTI5NDM2MjQyOTguLmJjNzU1YzFlM2EyYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCkBAIC05MSw3ICs5MSw3
IEBAIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyKiBSZW5kZXJTVkdSb290Ojp2aWV3cG9ydENv
bnRhaW5lcigpIGNvbnN0CiAKIGJvb2wgUmVuZGVyU1ZHUm9vdDo6aGFzSW50cmluc2ljQXNwZWN0
UmF0aW8oKSBjb25zdAogewotICAgIHJldHVybiBjb21wdXRlSW50cmluc2ljQXNwZWN0UmF0aW8o
KTsKKyAgICByZXR1cm4gcHJlZmVycmVkQXNwZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0RvdWJsZSgp
OwogfQogCiBGbG9hdFNpemUgUmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUludHJpbnNpY1NpemUoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9sZWdhY3kvTGVn
YWN5UmVuZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL2xlZ2Fj
eS9MZWdhY3lSZW5kZXJTVkdSb290LmNwcAppbmRleCAzNmQzZTM4NTlkYjYuLmViYWI1NmM4ZTNi
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9sZWdhY3kvTGVnYWN5
UmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9sZWdh
Y3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgU1ZHU1ZHRWxlbWVu
dCYgTGVnYWN5UmVuZGVyU1ZHUm9vdDo6c3ZnU1ZHRWxlbWVudCgpIGNvbnN0CiAKIGJvb2wgTGVn
YWN5UmVuZGVyU1ZHUm9vdDo6aGFzSW50cmluc2ljQXNwZWN0UmF0aW8oKSBjb25zdAogewotICAg
IHJldHVybiBjb21wdXRlSW50cmluc2ljQXNwZWN0UmF0aW8oKTsKKyAgICByZXR1cm4gcHJlZmVy
cmVkQXNwZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0RvdWJsZSgpOwogfQogCiBGbG9hdFNpemUgTGVn
YWN5UmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUludHJpbnNpY1NpemUoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggOWEwZDQ4MjZhNjkwLi44NjI5ZTBl
ZDIxNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAtMjc2
LDggKzI3Niw4IEBAIFJlZlB0cjxOYXRpdmVJbWFnZT4gU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgRGVzdGluYXRpCiAgICAgYXV0byByZW5kZXJpbmdN
b2RlID0gbV9wYWdlLT5zZXR0aW5ncygpLmFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQoKSA/IFJl
bmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkIDogUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZDsK
IAogICAgIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cgPSBudWxscHRyOwotICAgIGlmIChDaGVja2Vk
UHRyIGNvbnRlbnRSZW5kZXJlciA9IGVtYmVkZGVkQ29udGVudEJveCgpKQotICAgICAgICBob3N0
V2luZG93ID0gY29udGVudFJlbmRlcmVyLT5ob3N0V2luZG93KCk7CisgICAgaWYgKENoZWNrZWRQ
dHIgc3ZnUm9vdCA9IGVtYmVkZGVkU1ZHUm9vdCgpKQorICAgICAgICBob3N0V2luZG93ID0gc3Zn
Um9vdC0+aG9zdFdpbmRvdygpOwogCiAgICAgUmVmUHRyIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlOjpET00sIDEs
IGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCwgaG9zdFdpbmRvdyk7CiAgICAgaWYgKCFp
bWFnZUJ1ZmZlcikKQEAgLTM5MiwxMiArMzkyLDEyIEBAIEltYWdlRHJhd1Jlc3VsdCBTVkdJbWFn
ZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
CiAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkRHJhdzsKIH0KIAotUmVuZGVyQm94KiBT
VkdJbWFnZTo6ZW1iZWRkZWRDb250ZW50Qm94KCkgY29uc3QKK1JlbmRlclJlcGxhY2VkKiBTVkdJ
bWFnZTo6ZW1iZWRkZWRTVkdSb290KCkgY29uc3QKIHsKICAgICBSZWZQdHIgcm9vdEVsZW1lbnQg
PSB0aGlzLT5yb290RWxlbWVudCgpOwogICAgIGlmICghcm9vdEVsZW1lbnQpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJCb3g+KHJvb3RFbGVtZW50
LT5yZW5kZXJlcigpKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+KHJvb3RF
bGVtZW50LT5yZW5kZXJlcigpKTsKIH0KIAogTG9jYWxGcmFtZVZpZXcqIFNWR0ltYWdlOjpmcmFt
ZVZpZXcoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAppbmRleCBm
NDU3N2Q1Y2YwNDIuLmY3NDNhMzcwMzJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgRWxlbWVudDsKIGNsYXNzIEltYWdlQnVm
ZmVyOwogY2xhc3MgTG9jYWxGcmFtZVZpZXc7CiBjbGFzcyBQYWdlOwotY2xhc3MgUmVuZGVyQm94
OworY2xhc3MgUmVuZGVyUmVwbGFjZWQ7CiBjbGFzcyBTVkdTVkdFbGVtZW50OwogY2xhc3MgU1ZH
SW1hZ2VDaHJvbWVDbGllbnQ7CiBjbGFzcyBTVkdJbWFnZUZvckNvbnRhaW5lcjsKQEAgLTQ4LDcg
KzQ4LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHRyeUNyZWF0
ZUZyb21EYXRhKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZWZQdHI8U1ZHSW1hZ2U+JiYpPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9v
bCBpc0RhdGFEZWNvZGFibGUoY29uc3QgU2V0dGluZ3MmLCBzdGQ6OnNwYW48Y29uc3QgdWludDhf
dD4pOwogCi0gICAgUmVuZGVyQm94KiBlbWJlZGRlZENvbnRlbnRCb3goKSBjb25zdDsKKyAgICBS
ZW5kZXJSZXBsYWNlZCogZW1iZWRkZWRTVkdSb290KCkgY29uc3Q7CiAgICAgTG9jYWxGcmFtZVZp
ZXcqIE5PREVMRVRFIGZyYW1lVmlldygpIGNvbnN0OwogCiAgICAgYm9vbCBpc1NWR0ltYWdlKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQo=
</data>
<flag name="commit-queue"
          id="500758"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>479556</attachid>
            <date>2026-05-09 17:55:20 -0700</date>
            <delta_ts>2026-05-09 18:34:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-314460-20260509175519.patch</filename>
            <type>text/plain</type>
            <size>42019</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSAyZDFiOTU0NWZiZjdlZjhhZjM2NDNhN2Y3ZDY3ODllZDI5MzIyMWFkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFNhdCwgOSBNYXkgMjAyNiAxNzo1NDoxNiAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFJlbmFtZSBh
c3BlY3QgcmF0aW8gaGVscGVycyBvbiBSZW5kZXJSZXBsYWNlZCBhbmQgUmVuZGVyQm94CiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE0NDYwCgpSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KCkVXUyAoUFIgd2l0aCBkZXBlbmRlbmNpZXMpLgoKKiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3LmNwcDoKKFdlYkNvcmU6OkxvY2FsRnJhbWVWaWV3Ojpm
b3JjZUxheW91dFBhcmVudFZpZXdJZk5lZWRlZCk6CihXZWJDb3JlOjpMb2NhbEZyYW1lVmlldzo6
ZW1iZWRkZWRTVkdSb290IGNvbnN0KToKKFdlYkNvcmU6OkxvY2FsRnJhbWVWaWV3OjplbWJlZGRl
ZENvbnRlbnRCb3ggY29uc3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYWxG
cmFtZVZpZXcuaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKFdl
YkNvcmU6OlJlbmRlckJveDo6Y29uc3RyYWluTG9naWNhbE1pbk1heFNpemVzQnlBc3BlY3RSYXRp
byBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVJbnRyaW5zaWNLZXl3b3JkTG9n
aWNhbFdpZHRocyBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJCb3g6OmlzUmVwbGFjZWRXaXRoUHJl
ZmVycmVkQXNwZWN0UmF0aW8gY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyQm94Ojphc3BlY3RSYXRp
b1ZhbHVlIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZU1pbk1heExvZ2ljYWxX
aWR0aEZyb21Bc3BlY3RSYXRpbyBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVN
aW5NYXhMb2dpY2FsSGVpZ2h0RnJvbUFzcGVjdFJhdGlvIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRl
ckJveDo6aXNSZW5kZXJSZXBsYWNlZFdpdGhJbnRyaW5zaWNSYXRpbyBjb25zdCk6IERlbGV0ZWQu
CihXZWJDb3JlOjpSZW5kZXJCb3g6OnJlc29sdmVBc3BlY3RSYXRpbyBjb25zdCk6IERlbGV0ZWQu
CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oOgoqIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHA6CihXZWJDb3JlOjppc1NWR1Jvb3RXaXRo
SW50cmluc2ljQXNwZWN0UmF0aW8pOgooV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OnByZWZl
cnJlZEFzcGVjdFJhdGlvRm9yRmxleEl0ZW0gY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZS5jcHA6CihXZWJDb3JlOjpSZW5kZXJJbWFnZTo6Y29tcHV0ZUludHJp
bnNpY1NpemUgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnByZWZlcnJlZEFzcGVjdFJh
dGlvIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckltYWdlOjpzaG91bGRJbnZhbGlkYXRlUHJlZmVy
cmVkV2lkdGhzIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckltYWdlOjplbWJlZGRlZFNWR1Jvb3Qg
Y29uc3QpOgooV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmVtYmVkZGVkQ29udGVudEJveCBjb25zdCk6
IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6CiogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcDoKKFdlYkNvcmU6OlJlbmRl
clJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljU2l6ZXNDb25zdHJhaW5lZEJ5VHJhbnNmZXJyZWRN
aW5NYXhTaXplcyBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJp
bnNpY1NpemUgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVj
dFJhdGlvIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjb21wdXRlQXNwZWN0UmF0
aW9BZGp1c3RlZEludHJpbnNpY0xvZ2ljYWxXaWR0aHMgY29uc3QpOgooV2ViQ29yZTo6aGFzSW50
cmluc2ljU2l6ZSk6CihXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZVJlcGxhY2VkTG9n
aWNhbFdpZHRoIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjb21wdXRlUmVwbGFj
ZWRMb2dpY2FsSGVpZ2h0IGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjb21wdXRl
SW50cmluc2ljS2V5d29yZExvZ2ljYWxXaWR0aHMgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyUmVw
bGFjZWQ6OmludHJpbnNpY1JhdGlvIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpj
b21wdXRlQXNwZWN0UmF0aW9JbmZvcm1hdGlvbkZvclJlbmRlckJveCBjb25zdCk6IERlbGV0ZWQu
CihXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY0FzcGVjdFJhdGlvIGNv
bnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQu
aDoKKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjplbWJlZGRlZFNWR1Jvb3QgY29uc3QpOgooV2Vi
Q29yZTo6UmVuZGVyUmVwbGFjZWQ6OmVtYmVkZGVkQ29udGVudEJveCBjb25zdCk6IERlbGV0ZWQu
CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CihXZWJDb3JlOjpS
ZW5kZXJXaWRnZXQ6OnNob3VsZEludmFsaWRhdGVQcmVmZXJyZWRXaWR0aHMgY29uc3QpOgooV2Vi
Q29yZTo6UmVuZGVyV2lkZ2V0OjplbWJlZGRlZFNWR1Jvb3QgY29uc3QpOgooV2ViQ29yZTo6UmVu
ZGVyV2lkZ2V0Ojpjb21wdXRlSW50cmluc2ljU2l6ZSBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJX
aWRnZXQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlcldpZGdl
dDo6ZW1iZWRkZWRDb250ZW50Qm94IGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyV2lkZ2V0Lmg6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSb290LmNwcDoKKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6Omhhc0ludHJpbnNpY0Fz
cGVjdFJhdGlvIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVJbnRyaW5z
aWNTaXplIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OnByZWZlcnJlZEFzcGVjdFJh
dGlvIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lS
ZW5kZXJTVkdSb290LmNwcDoKKFdlYkNvcmU6OkxlZ2FjeVJlbmRlclNWR1Jvb3Q6Omhhc0ludHJp
bnNpY0FzcGVjdFJhdGlvIGNvbnN0KToKKFdlYkNvcmU6OkxlZ2FjeVJlbmRlclNWR1Jvb3Q6OmNv
bXB1dGVJbnRyaW5zaWNTaXplIGNvbnN0KToKKFdlYkNvcmU6OkxlZ2FjeVJlbmRlclNWR1Jvb3Q6
OnByZWZlcnJlZEFzcGVjdFJhdGlvIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuY3BwOgooV2ViQ29yZTo6U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKToKKFdlYkNv
cmU6OlNWR0ltYWdlOjplbWJlZGRlZFNWR1Jvb3QgY29uc3QpOgooV2ViQ29yZTo6U1ZHSW1hZ2U6
OmVtYmVkZGVkQ29udGVudEJveCBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmg6Ci0tLQogU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1l
Vmlldy5jcHAgICAgICAgIHwgIDI4ICsrLS0tCiBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJh
bWVWaWV3LmggICAgICAgICAgfCAgIDMgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwICAgICAgICB8ICAyMCArKy0tCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmggICAgICAgICAgfCAgIDQgKy0KIC4uLi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
bGV4aWJsZUJveC5jcHAgICB8ICAgNiArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcCAgICAgIHwgIDM5ICsrKysrKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5oICAgICAgICB8ICAgMiArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlcGxhY2VkLmNwcCAgIHwgMTAwICsrKystLS0tLS0tLS0tLS0tLQogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmggICAgIHwgIDEyICstLQogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAgICAgIHwgIDM3ICsrKysrKy0KIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaCAgICAgICB8ICAgNCArLQogLi4uL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcCAgIHwgIDEwICstCiAuLi4vc3ZnL2xl
Z2FjeS9MZWdhY3lSZW5kZXJTVkdSb290LmNwcCAgICAgICAgfCAgMTAgKy0KIFNvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgICAgICB8ICAgOCArLQogU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmggICAgICAgIHwgICA0ICstCiAxNSBmaWxlcyBjaGFu
Z2VkLCAxNDIgaW5zZXJ0aW9ucygrKSwgMTQ1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvTG9jYWxGcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9Mb2NhbEZyYW1lVmlldy5jcHAKaW5kZXggZGVkZTZiNTA0NWE2Li5jN2FmMjQ4ZjA5MjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYWxGcmFtZVZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvTG9jYWxGcmFtZVZpZXcuY3BwCkBAIC0xMjEzLDI1ICsxMjEzLDE4
IEBAIHZvaWQgTG9jYWxGcmFtZVZpZXc6OmZvcmNlTGF5b3V0UGFyZW50Vmlld0lmTmVlZGVkKCkK
ICAgICBpZiAoIW93bmVyUmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIENoZWNrZWRQ
dHIgY29udGVudEJveCA9IGVtYmVkZGVkQ29udGVudEJveCgpOwotICAgIGlmICghY29udGVudEJv
eCkKKyAgICBDaGVja2VkUHRyIHN2Z1Jvb3QgPSBlbWJlZGRlZFNWR1Jvb3QoKTsKKyAgICBpZiAo
IXN2Z1Jvb3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChhdXRvKiBzdmdSb290ID0gZHlu
YW1pY0Rvd25jYXN0PExlZ2FjeVJlbmRlclNWR1Jvb3Q+KGNvbnRlbnRCb3guZ2V0KCkpKSB7Ci0g
ICAgICAgIGlmIChzdmdSb290LT5ldmVySGFkTGF5b3V0KCkgJiYgIXN2Z1Jvb3QtPm5lZWRzTGF5
b3V0KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF1dG8qIHN2Z1Jv
b3QgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyU1ZHUm9vdD4oY29udGVudEJveC5nZXQoKSkpIHsK
LSAgICAgICAgaWYgKHN2Z1Jvb3QtPmV2ZXJIYWRMYXlvdXQoKSAmJiAhc3ZnUm9vdC0+bmVlZHNM
YXlvdXQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKHN2Z1Jvb3QtPmV2
ZXJIYWRMYXlvdXQoKSAmJiAhc3ZnUm9vdC0+bmVlZHNMYXlvdXQoKSkKKyAgICAgICAgcmV0dXJu
OwogCiAgICAgTE9HKExheW91dCwgIkxvY2FsRnJhbWVWaWV3ICVwIGZvcmNlTGF5b3V0UGFyZW50
Vmlld0lmTmVlZGVkIHNjaGVkdWxpbmcgbGF5b3V0IG9uIHBhcmVudCBMb2NhbEZyYW1lVmlldyAl
cCIsIHRoaXMsICZvd25lclJlbmRlcmVyLT52aWV3KCkuZnJhbWVWaWV3KCkpOwogCiAgICAgLy8g
SWYgdGhlIGVtYmVkZGVkIFNWRyBkb2N1bWVudCBhcHBlYXJzIHRoZSBmaXJzdCB0aW1lLCB0aGUg
b3duZXJSZW5kZXJlciBoYXMgYWxyZWFkeSBmaW5pc2hlZAogICAgIC8vIGxheW91dCB3aXRob3V0
IGtub3dpbmcgYWJvdXQgdGhlIGV4aXN0ZW5jZSBvZiB0aGUgZW1iZWRkZWQgU1ZHIGRvY3VtZW50
LCBiZWNhdXNlIFJlbmRlclJlcGxhY2VkCi0gICAgLy8gZW1iZWRkZWRDb250ZW50Qm94KCkgcmV0
dXJucyBudWxscHRyLCBhcyBsb25nIGFzIHRoZSBlbWJlZGRlZCBkb2N1bWVudCBpc24ndCBsb2Fk
ZWQgeWV0LiBCZWZvcmUKKyAgICAvLyBlbWJlZGRlZFNWR1Jvb3QoKSByZXR1cm5zIG51bGxwdHIs
IGFzIGxvbmcgYXMgdGhlIGVtYmVkZGVkIGRvY3VtZW50IGlzbid0IGxvYWRlZCB5ZXQuIEJlZm9y
ZQogICAgIC8vIGJvdGhlcmluZyB0byBsYXkgb3V0IHRoZSBTVkcgZG9jdW1lbnQsIG1hcmsgdGhl
IG93bmVyUmVuZGVyZXIgbmVlZGluZyBsYXlvdXQgYW5kIGFzayBpdHMKICAgICAvLyBMb2NhbEZy
YW1lVmlldyBmb3IgYSBsYXlvdXQuIEFmdGVyIHRoYXQgdGhlIFJlbmRlckVtYmVkZGVkT2JqZWN0
IChvd25lclJlbmRlcmVyKSBjYXJyaWVzIHRoZQogICAgIC8vIGNvcnJlY3Qgc2l6ZSwgd2hpY2gg
TGVnYWN5UmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoL0hlaWdodCBy
ZWx5IG9uLCB3aGVuIGxheWluZwpAQCAtMTUyMCwyMiArMTUxMywxOSBAQCBib29sIExvY2FsRnJh
bWVWaWV3OjpzaG91bGREZWZlclNjcm9sbFVwZGF0ZUFmdGVyQ29udGVudFNpemVDaGFuZ2UoKQog
ICAgIHJldHVybiAobGF5b3V0Q29udGV4dCgpLmxheW91dFBoYXNlKCkgPCBMb2NhbEZyYW1lVmll
d0xheW91dENvbnRleHQ6OkxheW91dFBoYXNlOjpJblBvc3RMYXlvdXQpICYmIChsYXlvdXRDb250
ZXh0KCkubGF5b3V0UGhhc2UoKSAhPSBMb2NhbEZyYW1lVmlld0xheW91dENvbnRleHQ6OkxheW91
dFBoYXNlOjpPdXRzaWRlTGF5b3V0KTsKIH0KIAotUmVuZGVyQm94KiBMb2NhbEZyYW1lVmlldzo6
ZW1iZWRkZWRDb250ZW50Qm94KCkgY29uc3QKK1JlbmRlclJlcGxhY2VkKiBMb2NhbEZyYW1lVmll
dzo6ZW1iZWRkZWRTVkdSb290KCkgY29uc3QKIHsKICAgICBDaGVja2VkUHRyIHJlbmRlclZpZXcg
PSB0aGlzLT5yZW5kZXJWaWV3KCk7CiAgICAgaWYgKCFyZW5kZXJWaWV3KQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIFJlbmRlck9iamVjdCogZmlyc3RDaGlsZCA9IHJlbmRlclZpZXct
PmZpcnN0Q2hpbGQoKTsKKyAgICBhdXRvKiBmaXJzdENoaWxkID0gcmVuZGVyVmlldy0+Zmlyc3RD
aGlsZCgpOwogCi0gICAgLy8gQ3VyZW50bHkgb25seSBlbWJlZGRlZCBTVkcgZG9jdW1lbnRzIHBh
cnRpY2lwYXRlIGluIHRoZSBzaXplLW5lZ290aWF0aW9uIGxvZ2ljLgorICAgIC8vIEN1cnJlbnRs
eSBvbmx5IGVtYmVkZGVkIFNWRyBkb2N1bWVudHMgcGFydGljaXBhdGUgaW4gdGhlIHNpemUtbmVn
b3RpYXRpb24gbG9naWMuCiAgICAgaWYgKGF1dG8qIHN2Z1Jvb3QgPSBkeW5hbWljRG93bmNhc3Q8
TGVnYWN5UmVuZGVyU1ZHUm9vdD4oZmlyc3RDaGlsZCkpCiAgICAgICAgIHJldHVybiBzdmdSb290
OwogCi0gICAgaWYgKGF1dG8qIHN2Z1Jvb3QgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyU1ZHUm9v
dD4oZmlyc3RDaGlsZCkpCi0gICAgICAgIHJldHVybiBzdmdSb290OwotCi0gICAgcmV0dXJuIG51
bGxwdHI7CisgICAgcmV0dXJuIGR5bmFtaWNEb3duY2FzdDxSZW5kZXJTVkdSb290PihmaXJzdENo
aWxkKTsKIH0KIAogdm9pZCBMb2NhbEZyYW1lVmlldzo6YWRkRW1iZWRkZWRPYmplY3RUb1VwZGF0
ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYgZW1iZWRkZWRPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xv
Y2FsRnJhbWVWaWV3LmgKaW5kZXggMWIxYzcwYmNjMjQ5Li4wNTk5YmExNmIzNjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYWxGcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3LmgKQEAgLTY1LDYgKzY1LDcgQEAgY2xhc3MgUmVuZGVy
RW1iZWRkZWRPYmplY3Q7CiBjbGFzcyBSZW5kZXJMYXllcjsKIGNsYXNzIFJlbmRlckxheWVyTW9k
ZWxPYmplY3Q7CiBjbGFzcyBSZW5kZXJPYmplY3Q7CitjbGFzcyBSZW5kZXJSZXBsYWNlZDsKIGNs
YXNzIFJlbmRlclNjcm9sbGJhclBhcnQ7CiBjbGFzcyBSZW5kZXJTdHlsZTsKIGNsYXNzIFJlbmRl
clZpZXc7CkBAIC01NzgsNyArNTc5LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBOT0RFTEVURSBz
aG91bGRTdXNwZW5kU2Nyb2xsQW5pbWF0aW9ucygpIGNvbnN0IGZpbmFsOwogCi0gICAgUmVuZGVy
Qm94KiBlbWJlZGRlZENvbnRlbnRCb3goKSBjb25zdDsKKyAgICBSZW5kZXJSZXBsYWNlZCogZW1i
ZWRkZWRTVkdSb290KCkgY29uc3Q7CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRU
cmFja3NSZXBhaW50cyhib29sKTsKICAgICBib29sIGlzVHJhY2tpbmdSZXBhaW50cygpIGNvbnN0
IHsgcmV0dXJuIG1faXNUcmFja2luZ1JlcGFpbnRzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guY3BwCmluZGV4IDNkNDI0NmVjNTNiNi4uYmU1M2QxNzVjY2NjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtNzExLDcgKzcxMSw3IEBAIHZvaWQgUmVu
ZGVyQm94Ojpjb25zdHJhaW5Mb2dpY2FsTWluTWF4U2l6ZXNCeUFzcGVjdFJhdGlvKExheW91dFVu
aXQmIGNvbXB1dGVkTWluCiAgICAgLy8gYSBzaXplIG9mIHRoZSBpbml0aWFsIGNvbnRhaW5pbmcg
YmxvY2sgYW5kIHRoZSDigJxzdHJldGNoLWZpdOKAnSBzaXppbmcgb2Ygbm9uLXJlcGxhY2VkIGJs
b2NrcyBpZiB0aGV5IGhhdmUgZGVmaW5pdGUgdmFsdWVzLgogICAgIC8vIFNlZSBodHRwczovL3d3
dy53My5vcmcvVFIvY3NzLXNpemluZy0zLyNkZWZpbml0ZQogICAgIGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZVRvVXNlID0gc3R5bGUoKTsKLSAgICBBU1NFUlQoc3R5bGVUb1VzZS5hc3BlY3RSYXRp
bygpLmhhc1JhdGlvKCkgfHwgaXNSZW5kZXJSZXBsYWNlZFdpdGhJbnRyaW5zaWNSYXRpbygpKTsK
KyAgICBBU1NFUlQoc3R5bGVUb1VzZS5hc3BlY3RSYXRpbygpLmhhc1JhdGlvKCkgfHwgaXNSZXBs
YWNlZFdpdGhQcmVmZXJyZWRBc3BlY3RSYXRpbygpKTsKICAgICBhdXRvIGxvZ2ljYWxTaXplID0g
ZGltZW5zaW9uID09IENvbnN0cmFpbkRpbWVuc2lvbjo6V2lkdGggPyBzdHlsZVRvVXNlLmxvZ2lj
YWxXaWR0aCgpIDogc3R5bGVUb1VzZS5sb2dpY2FsSGVpZ2h0KCk7CiAgICAgLy8gaHR0cHM6Ly93
d3cudzMub3JnL1RSL2Nzcy1zaXppbmctNC8jYXNwZWN0LXJhdGlvLW1pbmltdW0KICAgICBpZiAo
bWluaW11bVNpemVUeXBlID09IE1pbmltdW1TaXplSXNBdXRvbWF0aWNDb250ZW50QmFzZWQ6Olll
cykgewpAQCAtMjk1NCwxMSArMjk1NCwxMSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXl3b3JkPiB2
b2lkIFJlbmRlckJveDo6Y29tcHV0ZUludHJpbnNpY0tleXdvcmRMb2dpY2FsV2lkdGhzKAogICAg
ICAgICAgICAgICAgIG1pbkxvZ2ljYWxXaWR0aCA9IHN0ZDo6bWF4KG1pbkxvZ2ljYWxXaWR0aCwg
bWluQ2hpbGRyZW5Mb2dpY2FsV2lkdGgpOwogICAgICAgICAgICAgICAgIG1heExvZ2ljYWxXaWR0
aCA9IHN0ZDo6bWF4KG1heExvZ2ljYWxXaWR0aCwgbWF4Q2hpbGRyZW5Mb2dpY2FsV2lkdGgpOwog
ICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKGlzUmVuZGVyUmVwbGFjZWRXaXRoSW50
cmluc2ljUmF0aW8oKSAmJiBzdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc1NwZWNpZmllZCgpKSB7
CisgICAgICAgIH0gZWxzZSBpZiAoaXNSZXBsYWNlZFdpdGhQcmVmZXJyZWRBc3BlY3RSYXRpbygp
ICYmIHN0eWxlKCkubG9naWNhbEhlaWdodCgpLmlzU3BlY2lmaWVkKCkpIHsKICAgICAgICAgICAg
IC8vIEZvciByZXBsYWNlZCBlbGVtZW50cyB3aXRoIGFuIGludHJpbnNpYyBhc3BlY3QgcmF0aW8g
KGUuZy4gPGltZz4pIGFuZCBhCiAgICAgICAgICAgICAvLyBzcGVjaWZpZWQgYmxvY2sgc2l6ZSwg
Y29tcHV0ZSB0aGUgdHJhbnNmZXJyZWQgbWluL21heC1jb250ZW50IGlubGluZSBzaXplCiAgICAg
ICAgICAgICAvLyB0aHJvdWdoIHRoZSBpbnRyaW5zaWMgcmF0aW8gcmF0aGVyIHRoYW4gdXNpbmcg
dGhlIHJhdyBuYXR1cmFsIHdpZHRoLgotICAgICAgICAgICAgYXV0byBpbnRyaW5zaWNSYXRpbyA9
IGRvd25jYXN0PFJlbmRlclJlcGxhY2VkPigqdGhpcykuY29tcHV0ZUludHJpbnNpY0FzcGVjdFJh
dGlvKCk7CisgICAgICAgICAgICBhdXRvIGludHJpbnNpY1JhdGlvID0gZG93bmNhc3Q8UmVuZGVy
UmVwbGFjZWQ+KCp0aGlzKS5wcmVmZXJyZWRBc3BlY3RSYXRpbygpLmFzcGVjdFJhdGlvRG91Ymxl
KCk7CiAgICAgICAgICAgICBhdXRvIGNvbXB1dGVkVmFsdWVzID0gY29tcHV0ZUxvZ2ljYWxIZWln
aHQobG9naWNhbEhlaWdodCgpLCBsb2dpY2FsVG9wKCkpOwogICAgICAgICAgICAgYXV0byBjb250
ZW50QmxvY2tTaXplID0gc3RkOjptYXgoMF9sdSwgY29tcHV0ZWRWYWx1ZXMuZXh0ZW50IC0gYm9y
ZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSk7CiAgICAgICAgICAgICBtaW5Mb2dpY2FsV2lk
dGggPSBtYXhMb2dpY2FsV2lkdGggPSBMYXlvdXRVbml0KGNvbnRlbnRCbG9ja1NpemUgKiBpbnRy
aW5zaWNSYXRpbyk7CkBAIC01Mjc0LDE3ICs1Mjc0LDE3IEBAIExheW91dFVuaXQgUmVuZGVyQm94
Ojpjb21wdXRlTG9naWNhbFdpZHRoRnJvbUFzcGVjdFJhdGlvKCkgY29uc3QKICAgICByZXR1cm4g
Y29uc3RyYWluTG9naWNhbFdpZHRoQnlNaW5NYXgobG9naWNhbFdpZHRoLCBjb250YWluZXJXaWR0
aEluSW5saW5lRGlyZWN0aW9uLCAqY29udGFpbmluZ0Jsb2NrKCksIEFsbG93SW50cmluc2ljOjpO
byk7CiB9CiAKLWJvb2wgUmVuZGVyQm94Ojppc1JlbmRlclJlcGxhY2VkV2l0aEludHJpbnNpY1Jh
dGlvKCkgY29uc3QKK2Jvb2wgUmVuZGVyQm94Ojppc1JlcGxhY2VkV2l0aFByZWZlcnJlZEFzcGVj
dFJhdGlvKCkgY29uc3QKIHsKICAgICBpZiAoYXV0byogcmVwbGFjZWQgPSBkeW5hbWljRG93bmNh
c3Q8UmVuZGVyUmVwbGFjZWQ+KHRoaXMpKQotICAgICAgICByZXR1cm4gcmVwbGFjZWQtPmNvbXB1
dGVJbnRyaW5zaWNBc3BlY3RSYXRpbygpOworICAgICAgICByZXR1cm4gcmVwbGFjZWQtPnByZWZl
cnJlZEFzcGVjdFJhdGlvKCkuYXNwZWN0UmF0aW9Eb3VibGUoKTsKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBSZW5kZXJCb3g6OnJlc29sdmVBc3BlY3RSYXRp
bygpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gUmVuZGVyQm94Ojphc3BlY3RSYXRpb1Zh
bHVlKCkgY29uc3QKIHsKLSAgICBpZiAoYXV0byogcmVwbGFjZWRFbGVtZW50ID0gZHluYW1pY0Rv
d25jYXN0PFJlbmRlclJlcGxhY2VkPih0aGlzKSkgCi0gICAgICAgIHJldHVybiByZXBsYWNlZEVs
ZW1lbnQtPmNvbXB1dGVJbnRyaW5zaWNBc3BlY3RSYXRpbygpOworICAgIGlmIChDaGVja2VkUHRy
IHJlcGxhY2VkRWxlbWVudCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJSZXBsYWNlZD4odGhpcykp
CisgICAgICAgIHJldHVybiByZXBsYWNlZEVsZW1lbnQtPnByZWZlcnJlZEFzcGVjdFJhdGlvKCku
YXNwZWN0UmF0aW9Eb3VibGUoKTsKICAgICBpZiAoc3R5bGUoKS5hc3BlY3RSYXRpbygpLmhhc1Jh
dGlvKCkpCiAgICAgICAgIHJldHVybiBzdHlsZSgpLmxvZ2ljYWxBc3BlY3RSYXRpbygpOwogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNTI5NSw3ICs1Mjk1LDcgQEAgc3RkOjpwYWlyPExh
eW91dFVuaXQsIExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0ZU1pbk1heExvZ2ljYWxXaWR0
aEZyb21Bc3BlY3QKIHsKICAgICBMYXlvdXRVbml0IHRyYW5zZmVycmVkTWluU2l6ZSA9IExheW91
dFVuaXQoKTsKICAgICBMYXlvdXRVbml0IHRyYW5zZmVycmVkTWF4U2l6ZSA9IExheW91dFVuaXQ6
Om1heCgpOwotICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhc3BlY3RSYXRpbyA9IHJlc29sdmVB
c3BlY3RSYXRpbygpOworICAgIGF1dG8gYXNwZWN0UmF0aW8gPSBhc3BlY3RSYXRpb1ZhbHVlKCk7
CiAgICAgaWYgKCFhc3BlY3RSYXRpbykKICAgICAgICAgcmV0dXJuIHsgdHJhbnNmZXJyZWRNaW5T
aXplLCB0cmFuc2ZlcnJlZE1heFNpemUgfTsKIApAQCAtNTMxNiw3ICs1MzE2LDcgQEAgc3RkOjpw
YWlyPExheW91dFVuaXQsIExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0ZU1pbk1heExvZ2lj
YWxIZWlnaHRGcm9tQXNwZWMKIHsKICAgICBMYXlvdXRVbml0IHRyYW5zZmVycmVkTWluU2l6ZSA9
IExheW91dFVuaXQoKTsKICAgICBMYXlvdXRVbml0IHRyYW5zZmVycmVkTWF4U2l6ZSA9IExheW91
dFVuaXQ6Om1heCgpOwotICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhc3BlY3RSYXRpbyA9IHJl
c29sdmVBc3BlY3RSYXRpbygpOworICAgIGF1dG8gYXNwZWN0UmF0aW8gPSBhc3BlY3RSYXRpb1Zh
bHVlKCk7CiAgICAgaWYgKCFhc3BlY3RSYXRpbykKICAgICAgICAgcmV0dXJuIHsgdHJhbnNmZXJy
ZWRNaW5TaXplLCB0cmFuc2ZlcnJlZE1heFNpemUgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5oCmluZGV4IDE4NzhjN2RlZmJlZS4uNTQyYzlhYmRiYzIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5oCkBAIC02ODUsOSArNjg1LDkgQEAgcHJvdGVjdGVkOgogCiAg
ICAgdm9pZCBpbmNyZW1lbnRWaXN1YWxseU5vbkVtcHR5UGl4ZWxDb3VudElmTmVlZGVkKGNvbnN0
IEludFNpemUmKTsKIAotICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiByZXNvbHZlQXNwZWN0UmF0
aW8oKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYXNwZWN0UmF0aW9WYWx1ZSgp
IGNvbnN0OwogICAgIGJvb2wgTk9ERUxFVEUgc2hvdWxkSWdub3JlQXNwZWN0UmF0aW8oKSBjb25z
dDsKLSAgICBib29sIGlzUmVuZGVyUmVwbGFjZWRXaXRoSW50cmluc2ljUmF0aW8oKSBjb25zdDsK
KyAgICBib29sIGlzUmVwbGFjZWRXaXRoUHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdDsKICAg
ICBib29sIHNob3VsZENvbXB1dGVMb2dpY2FsV2lkdGhGcm9tQXNwZWN0UmF0aW8oKSBjb25zdDsK
ICAgICBib29sIGlzUmVzb2x2ZWFibGVTdHJldGNoU2l6ZShjb25zdCBhdXRvJiBzaXplKSBjb25z
dCB7IHJldHVybiBzaXplLmlzU3RyZXRjaCgpICYmIGNvbnRhaW5pbmdCbG9ja0hhc0RlZmluaXRl
QmxvY2tTaXplKCk7IH0KICAgICBib29sIGlzVW5yZXNvbHZlYWJsZVN0cmV0Y2hTaXplKGNvbnN0
IGF1dG8mIHNpemUpIGNvbnN0IHsgcmV0dXJuIHNpemUuaXNTdHJldGNoKCkgJiYgIWNvbnRhaW5p
bmdCbG9ja0hhc0RlZmluaXRlQmxvY2tTaXplKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCmluZGV4IDc0YjNlMGI4ZDJjYS4uMWZlZDk2ZDM4
Njg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVC
b3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5j
cHAKQEAgLTg3OSw3ICs4NzksNyBAQCBzdGF0aWMgYm9vbCBpc1NWR1Jvb3RXaXRoSW50cmluc2lj
QXNwZWN0UmF0aW8oY29uc3QgUmVuZGVyQm94JiBmbGV4SXRlbSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIC8vIEl0J3MgY29tbW9uIGZvciBzb21lIHJlcGxhY2VkIGVsZW1lbnRzLCBzdWNo
IGFzIFNWR3MsIHRvIGhhdmUgaW50cmluc2ljIGFzcGVjdCByYXRpb3MgYnV0IG5vIGludHJpbnNp
YyBzaXplcy4KICAgICAvLyBUaGF0J3Mgd2h5IGl0IGlzbid0IGVub3VnaCBqdXN0IHRvIGNoZWNr
IGZvciBpbnRyaW5zaWMgc2l6ZXMgaW4gdGhvc2UgY2FzZXMuCi0gICAgcmV0dXJuIGRvd25jYXN0
PFJlbmRlclJlcGxhY2VkPihmbGV4SXRlbSkuY29tcHV0ZUludHJpbnNpY0FzcGVjdFJhdGlvKCkg
PiAwOworICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJSZXBsYWNlZD4oZmxleEl0ZW0pLnByZWZl
cnJlZEFzcGVjdFJhdGlvKCkuYXNwZWN0UmF0aW9Eb3VibGUoKSA+IDA7CiB9OwogCiBzdGF0aWMg
Ym9vbCBmbGV4SXRlbUhhc0FzcGVjdFJhdGlvKGNvbnN0IFJlbmRlckJveCYgZmxleEl0ZW0pCkBA
IC0xMjYyLDExICsxMjYyLDExIEBAIGRvdWJsZSBSZW5kZXJGbGV4aWJsZUJveDo6cHJlZmVycmVk
QXNwZWN0UmF0aW9Gb3JGbGV4SXRlbShjb25zdCBSZW5kZXJCb3gmIGZsZXhJCiAgICAgYXV0byBm
bGV4SXRlbUFzcGVjdFJhdGlvID0gWyZdIHsKICAgICAgICAgYXV0byBmbGV4SXRlbUludHJpbnNp
Y1NpemUgPSBMYXlvdXRTaXplIHsgZmxleEl0ZW0uaW50cmluc2ljTG9naWNhbFdpZHRoKCksIGZs
ZXhJdGVtLmludHJpbnNpY0xvZ2ljYWxIZWlnaHQoKSB9OwogICAgICAgICBpZiAoZmxleEl0ZW0u
aXNSZW5kZXJPckxlZ2FjeVJlbmRlclNWR1Jvb3QoKSkKLSAgICAgICAgICAgIHJldHVybiBkb3du
Y2FzdDxSZW5kZXJSZXBsYWNlZD4oZmxleEl0ZW0pLmNvbXB1dGVJbnRyaW5zaWNBc3BlY3RSYXRp
bygpOworICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlclJlcGxhY2VkPihmbGV4SXRl
bSkucHJlZmVycmVkQXNwZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0RvdWJsZSgpOwogICAgICAgICBp
ZiAoZmxleEl0ZW0uc3R5bGUoKS5hc3BlY3RSYXRpbygpLmlzUmF0aW8oKSB8fCAoZmxleEl0ZW0u
c3R5bGUoKS5hc3BlY3RSYXRpbygpLmlzQXV0b0FuZFJhdGlvKCkgJiYgZmxleEl0ZW1JbnRyaW5z
aWNTaXplLmlzRW1wdHkoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmxleEl0ZW0uc3R5bGUoKS5s
b2dpY2FsQXNwZWN0UmF0aW8oKTsKICAgICAgICAgaWYgKGF1dG8qIHJlcGxhY2VkRWxlbWVudCA9
IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJSZXBsYWNlZD4oZmxleEl0ZW0pKQotICAgICAgICAgICAg
cmV0dXJuIHJlcGxhY2VkRWxlbWVudC0+Y29tcHV0ZUludHJpbnNpY0FzcGVjdFJhdGlvKCk7Cisg
ICAgICAgICAgICByZXR1cm4gcmVwbGFjZWRFbGVtZW50LT5wcmVmZXJyZWRBc3BlY3RSYXRpbygp
LmFzcGVjdFJhdGlvRG91YmxlKCk7CiAKICAgICAgICAgQVNTRVJUKGZsZXhJdGVtLmludHJpbnNp
Y0xvZ2ljYWxIZWlnaHQoKSk7CiAgICAgICAgIHJldHVybiBmbGV4SXRlbS5pbnRyaW5zaWNMb2dp
Y2FsV2lkdGgoKS50b0RvdWJsZSgpIC8gZmxleEl0ZW0uaW50cmluc2ljTG9naWNhbEhlaWdodCgp
LnRvRG91YmxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRl
eCA5YjIwOTk1YmIzZmIuLjEyM2Y3M2Q3ZjE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2UuY3BwCkBAIC05NDAsNyArOTQwLDIxIEBAIHZvaWQgUmVuZGVySW1hZ2U6Omxh
eW91dCgpCiAKIEZsb2F0U2l6ZSBSZW5kZXJJbWFnZTo6Y29tcHV0ZUludHJpbnNpY1NpemUoKSBj
b25zdAogewotICAgIEFTU0VSVCghc2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKSk7CisgICAg
Ly8gU2l6ZSBjb250YWlubWVudCBzdXBwcmVzc2VzIGludHJpbnNpYyBkaW1lbnNpb25zIGZyb20g
Y29udGVudC4gVGhlIGJhc2UKKyAgICAvLyBjbGFzcyByZXR1cm5zIHZhbHVlcyBmcm9tIHRoZSBj
YWNoZSAvIGNvbnRhaW4taW50cmluc2ljLXNpemUgd2l0aG91dAorICAgIC8vIHF1ZXJ5aW5nIGlt
YWdlIGRhdGEuCisgICAgaWYgKHNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCkpCisgICAgICAg
IHJldHVybiBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY1NpemUoKTsKKworICAgIGlm
IChDaGVja2VkUHRyIHN2Z1Jvb3QgPSBlbWJlZGRlZFNWR1Jvb3QoKSkgeworICAgICAgICBhdXRv
IGludHJpbnNpY1NpemUgPSBzdmdSb290LT5jb21wdXRlSW50cmluc2ljU2l6ZSgpOworICAgICAg
ICBpbnRyaW5zaWNTaXplLnNjYWxlKHN0eWxlKCkudXNlZFpvb20oKSk7CisgICAgICAgIGludHJp
bnNpY1NpemUuc2NhbGUoaW1hZ2VEZXZpY2VQaXhlbFJhdGlvKCkpOworICAgICAgICBpZiAoIWlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCisgICAgICAgICAgICBpbnRyaW5zaWNTaXplID0gaW50
cmluc2ljU2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOworICAgICAgICByZXR1cm4gaW50cmluc2ljU2l6
ZTsKKyAgICB9CisKICAgICBhdXRvIGludHJpbnNpY1NpemUgPSBSZW5kZXJSZXBsYWNlZDo6Y29t
cHV0ZUludHJpbnNpY1NpemUoKTsKIAogICAgIC8vIE91ciBpbnRyaW5zaWNTaXplIGlzIGVtcHR5
IGlmIHdlJ3JlIHJlbmRlcmluZyBnZW5lcmF0ZWQgaW1hZ2VzIHdpdGggcmVsYXRpdmUgd2lkdGgv
aGVpZ2h0LiBGaWd1cmUgb3V0IHRoZSByaWdodCBpbnRyaW5zaWMgc2l6ZSB0byB1c2UuCkBAIC05
NTcsNyArOTcxLDExIEBAIEZsb2F0U2l6ZSBSZW5kZXJJbWFnZTo6Y29tcHV0ZUludHJpbnNpY1Np
emUoKSBjb25zdAogCiBGbG9hdFNpemUgUmVuZGVySW1hZ2U6OnByZWZlcnJlZEFzcGVjdFJhdGlv
KCkgY29uc3QKIHsKLSAgICBBU1NFUlQoIXNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCkpOwor
ICAgIC8vIFNpemUgY29udGFpbm1lbnQgc3VwcHJlc3NlcyBpbnRyaW5zaWMgZGltZW5zaW9ucyBm
cm9tIGNvbnRlbnQsIGJ1dCB0aGUKKyAgICAvLyBhc3BlY3QgcmF0aW8gZnJvbSB0aGUgQ1NTIGFz
cGVjdC1yYXRpbyBwcm9wZXJ0eSBpcyBzdGlsbCBhdmFpbGFibGUgdmlhIHRoZQorICAgIC8vIGJh
c2UgY2xhc3MgKHdoaWNoIGRvZXNuJ3QgcXVlcnkgaW1hZ2UgZGF0YSkuCisgICAgaWYgKHNob3Vs
ZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCkpCisgICAgICAgIHJldHVybiBSZW5kZXJSZXBsYWNlZDo6
cHJlZmVycmVkQXNwZWN0UmF0aW8oKTsKIAogICAgIC8vIERvbid0IGNvbXB1dGUgYW4gaW50cmlu
c2ljIHJhdGlvIHRvIHByZXNlcnZlIGhpc3RvcmljYWwgV2ViS2l0IGJlaGF2aW9yIGlmIHdlJ3Jl
IHBhaW50aW5nIGFsdCB0ZXh0IGFuZC9vciBhIGJyb2tlbiBpbWFnZS4KICAgICBpZiAoc2hvdWxk
RGlzcGxheUJyb2tlbkltYWdlSWNvbigpKSB7CkBAIC05NjYsNiArOTg0LDE3IEBAIEZsb2F0U2l6
ZSBSZW5kZXJJbWFnZTo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdAogICAgICAgICByZXR1
cm4geyAxLjAsIDEuMCB9OwogICAgIH0KIAorICAgIGlmIChDaGVja2VkUHRyIHN2Z1Jvb3QgPSBl
bWJlZGRlZFNWR1Jvb3QoKSkgeworICAgICAgICBhdXRvIHJhdGlvID0gc3ZnUm9vdC0+cHJlZmVy
cmVkQXNwZWN0UmF0aW8oKTsKKyAgICAgICAgaWYgKCFpc0hvcml6b250YWxXcml0aW5nTW9kZSgp
ICYmICFyYXRpby5pc0VtcHR5KCkpCisgICAgICAgICAgICByYXRpbyA9IHJhdGlvLnRyYW5zcG9z
ZWRTaXplKCk7CisKKyAgICAgICAgaWYgKHN0eWxlKCkuYXNwZWN0UmF0aW8oKS5pc1JhdGlvKCkg
fHwgKHN0eWxlKCkuYXNwZWN0UmF0aW8oKS5pc0F1dG9BbmRSYXRpbygpICYmIHJhdGlvLmlzRW1w
dHkoKSkpCisgICAgICAgICAgICByYXRpbyA9IEZsb2F0U2l6ZTo6bmFycm93UHJlY2lzaW9uKHN0
eWxlKCkuYXNwZWN0UmF0aW9Mb2dpY2FsV2lkdGgoKS52YWx1ZSwgc3R5bGUoKS5hc3BlY3RSYXRp
b0xvZ2ljYWxIZWlnaHQoKS52YWx1ZSk7CisKKyAgICAgICAgcmV0dXJuIHJhdGlvOworICAgIH0K
KwogICAgIHJldHVybiBSZW5kZXJSZXBsYWNlZDo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKTsKIH0K
IApAQCAtOTczLDE0ICsxMDAyLDE0IEBAIGJvb2wgUmVuZGVySW1hZ2U6OnNob3VsZEludmFsaWRh
dGVQcmVmZXJyZWRXaWR0aHMoKSBjb25zdAogewogICAgIGlmIChSZW5kZXJSZXBsYWNlZDo6c2hv
dWxkSW52YWxpZGF0ZVByZWZlcnJlZFdpZHRocygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICByZXR1cm4gZW1iZWRkZWRDb250ZW50Qm94KCk7CisgICAgcmV0dXJuIGVtYmVkZGVkU1ZHUm9v
dCgpOwogfQogCi1SZW5kZXJCb3gqIFJlbmRlckltYWdlOjplbWJlZGRlZENvbnRlbnRCb3goKSBj
b25zdAorUmVuZGVyUmVwbGFjZWQqIFJlbmRlckltYWdlOjplbWJlZGRlZFNWR1Jvb3QoKSBjb25z
dAogewogICAgIGlmIChSZWZQdHIgY2FjaGVkSW1hZ2UgPSB0aGlzLT5jYWNoZWRJbWFnZSgpKSB7
CiAgICAgICAgIGlmIChSZWZQdHIgaW1hZ2UgPSBkeW5hbWljRG93bmNhc3Q8U1ZHSW1hZ2U+KGNh
Y2hlZEltYWdlLT5pbWFnZSgpKSkKLSAgICAgICAgICAgIHJldHVybiBpbWFnZS0+ZW1iZWRkZWRD
b250ZW50Qm94KCk7CisgICAgICAgICAgICByZXR1cm4gaW1hZ2UtPmVtYmVkZGVkU1ZHUm9vdCgp
OwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmgKaW5kZXggMmNlNzU0OTUyYWZlLi41ZWFmOTJhNjE3NmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCkBAIC04OSw3ICs4OSw3IEBAIHByb3RlY3RlZDoK
ICAgICB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGRJ
bnZhbGlkYXRlUHJlZmVycmVkV2lkdGhzKCkgY29uc3QgZmluYWw7Ci0gICAgUmVuZGVyQm94KiBl
bWJlZGRlZENvbnRlbnRCb3goKSBjb25zdCBmaW5hbDsKKyAgICBSZW5kZXJSZXBsYWNlZCogZW1i
ZWRkZWRTVkdSb290KCkgY29uc3QgZmluYWw7CiAgICAgRmxvYXRTaXplIGNvbXB1dGVJbnRyaW5z
aWNTaXplKCkgY29uc3QgZmluYWw7CiAgICAgRmxvYXRTaXplIHByZWZlcnJlZEFzcGVjdFJhdGlv
KCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBmb3JlZ3JvdW5kSXNLbm93blRvQmVPcGFxdWVJblJl
Y3QoY29uc3QgTGF5b3V0UmVjdCYgbG9jYWxSZWN0LCB1bnNpZ25lZCBtYXhEZXB0aFRvVGVzdCkg
Y29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVwbGFjZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2Vk
LmNwcAppbmRleCBmMDNhMTNmN2ViMTAuLjY1MTA2YTlmMDE4NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCkBAIC00NzAsNjQgKzQ3MCwyNSBAQCBzdGF0
aWMgYm9vbCBpc1ZpZGVvV2l0aERlZmF1bHRPYmplY3RTaXplKGNvbnN0IFJlbmRlclJlcGxhY2Vk
KiBtYXliZVZpZGVvKQogICAgIHJldHVybiBmYWxzZTsKIH0gCiAKLXZvaWQgUmVuZGVyUmVwbGFj
ZWQ6OmNvbXB1dGVBc3BlY3RSYXRpb0luZm9ybWF0aW9uRm9yUmVuZGVyQm94KFJlbmRlckJveCog
Y29udGVudFJlbmRlcmVyLCBGbG9hdFNpemUmIGNvbnN0cmFpbmVkU2l6ZSwgRmxvYXRTaXplJiBw
cmVmZXJyZWRBc3BlY3RSYXRpbykgY29uc3QKK3ZvaWQgUmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVJ
bnRyaW5zaWNTaXplc0NvbnN0cmFpbmVkQnlUcmFuc2ZlcnJlZE1pbk1heFNpemVzKEZsb2F0U2l6
ZSYgaW50cmluc2ljU2l6ZSwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykgY29uc3QKIHsKLSAg
ICBGbG9hdFNpemUgaW50cmluc2ljU2l6ZTsKICAgICBpZiAoc2hvdWxkQXBwbHlTaXplT3JJbmxp
bmVTaXplQ29udGFpbm1lbnQoKSkgewogICAgICAgICBpbnRyaW5zaWNTaXplID0gUmVuZGVyUmVw
bGFjZWQ6OmNvbXB1dGVJbnRyaW5zaWNTaXplKCk7Ci0gICAgICAgIHByZWZlcnJlZEFzcGVjdFJh
dGlvID0gUmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvKCk7Ci0gICAgfSBlbHNl
IGlmIChjb250ZW50UmVuZGVyZXIpIHsKLSAgICAgICAgYm9vbCBjb250ZW50SXNSZW5kZXJSZXBs
YWNlZCA9IGZhbHNlOwotICAgICAgICBpZiAoYXV0byogcmVuZGVyUmVwbGFjZWQgPSBkeW5hbWlj
RG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+KGNvbnRlbnRSZW5kZXJlcikpIHsKLSAgICAgICAgICAg
IGludHJpbnNpY1NpemUgPSByZW5kZXJSZXBsYWNlZC0+Y29tcHV0ZUludHJpbnNpY1NpemUoKTsK
LSAgICAgICAgICAgIHByZWZlcnJlZEFzcGVjdFJhdGlvID0gcmVuZGVyUmVwbGFjZWQtPnByZWZl
cnJlZEFzcGVjdFJhdGlvKCk7Ci0gICAgICAgICAgICBjb250ZW50SXNSZW5kZXJSZXBsYWNlZCA9
IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHN0eWxlKCkuYXNwZWN0UmF0aW8oKS5pc1Jh
dGlvKCkgfHwgKHN0eWxlKCkuYXNwZWN0UmF0aW8oKS5pc0F1dG9BbmRSYXRpbygpICYmIHByZWZl
cnJlZEFzcGVjdFJhdGlvLmlzRW1wdHkoKSkpCi0gICAgICAgICAgICBwcmVmZXJyZWRBc3BlY3RS
YXRpbyA9IEZsb2F0U2l6ZTo6bmFycm93UHJlY2lzaW9uKHN0eWxlKCkuYXNwZWN0UmF0aW8oKS53
aWR0aCgpLnZhbHVlLCBzdHlsZSgpLmFzcGVjdFJhdGlvKCkuaGVpZ2h0KCkudmFsdWUpOwotCi0g
ICAgICAgIC8vIEhhbmRsZSB6b29tICYgdmVydGljYWwgd3JpdGluZyBtb2RlcyBoZXJlLCBhcyB0
aGUgZW1iZWRkZWQgZG9jdW1lbnQgZG9lc24ndCBrbm93IGFib3V0IHRoZW0uCi0gICAgICAgIGlu
dHJpbnNpY1NpemUuc2NhbGUoc3R5bGUoKS51c2VkWm9vbSgpKTsKLQotICAgICAgICBpZiAoYXV0
byogaW1hZ2UgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVySW1hZ2U+KCp0aGlzKSkKLSAgICAgICAg
ICAgIGludHJpbnNpY1NpemUuc2NhbGUoaW1hZ2UtPmltYWdlRGV2aWNlUGl4ZWxSYXRpbygpKTsK
LQotICAgICAgICAvLyBVcGRhdGUgb3VyIGludHJpbnNpYyBzaXplIHRvIG1hdGNoIHdoYXQgdGhl
IGNvbnRlbnQgcmVuZGVyZXIgaGFzIGNvbXB1dGVkLCBzbyB0aGF0IHdoZW4gd2UKLSAgICAgICAg
Ly8gY29uc3RyYWluIHRoZSBzaXplIGJlbG93LCB0aGUgY29ycmVjdCBpbnRyaW5zaWMgc2l6ZSB3
aWxsIGJlIG9idGFpbmVkIGZvciBjb21wYXJpc29uIGFnYWluc3QKLSAgICAgICAgLy8gbWluIGFu
ZCBtYXggd2lkdGhzLgotICAgICAgICBpZiAoY29udGVudElzUmVuZGVyUmVwbGFjZWQgJiYgaXNS
ZW5kZXJXaWRnZXQoKSkgewotICAgICAgICAgICAgLy8gRm9yIFJlbmRlcldpZGdldCBjb250ZW50
IChlLmcuIDxvYmplY3Q+IGVtYmVkZGluZyBhbiBTVkcgZG9jdW1lbnQpLCBhbHdheXMgdXBkYXRl
Ci0gICAgICAgICAgICAvLyBtX2ludHJpbnNpY1NpemUgdG8gcmVmbGVjdCBjdXJyZW50IGludHJp
bnNpYyBkaW1lbnNpb25zLCBhcHBseWluZyBDU1MgZGVmYXVsdCBmYWxsYmFjawotICAgICAgICAg
ICAgLy8gdmFsdWVzICgzMDB4MTUwKSBmb3IgZGltZW5zaW9ucyB3aXRoIG5vIGludHJpbnNpYyB2
YWx1ZSAoZS5nLiBwZXJjZW50YWdlLXNpemVkIG9yCi0gICAgICAgICAgICAvLyByZW1vdmVkIGF0
dHJpYnV0ZXMpLiBUaGlzIHByZXZlbnRzIHN0YWxlIGNhY2hlZCBzaXplcyB3aGVuIGF0dHJpYnV0
ZXMgbGlrZSB3aWR0aC9oZWlnaHQKLSAgICAgICAgICAgIC8vIGFyZSByZW1vdmVkLiBOb3RlOiB0
aGlzIGRvZXMgbm90IGFwcGx5IHRvIFJlbmRlckltYWdlICg8aW1nIHNyYz0ic3ZnIj4pLCB3aGlj
aCBtYW5hZ2VzCi0gICAgICAgICAgICAvLyBpdHMgb3duIGludHJpbnNpYyBzaXplIHZpYSBzZXRJ
bnRyaW5zaWNTaXplKCkgZHVyaW5nIGltYWdlIGxvYWQuCi0gICAgICAgICAgICBhdXRvIHNpemVU
b0NhY2hlID0gaW50cmluc2ljU2l6ZTsKKyAgICAgICAgaW50cmluc2ljUmF0aW8gPSBSZW5kZXJS
ZXBsYWNlZDo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKTsKKyAgICB9IGVsc2UgeworICAgICAgICBp
bnRyaW5zaWNTaXplID0gY29tcHV0ZUludHJpbnNpY1NpemUoKTsKKyAgICAgICAgaW50cmluc2lj
UmF0aW8gPSBwcmVmZXJyZWRBc3BlY3RSYXRpbygpOworCisgICAgICAgIGF1dG8gc2l6ZVRvQ2Fj
aGUgPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gaW50cmluc2ljU2l6ZSA6IGludHJpbnNp
Y1NpemUudHJhbnNwb3NlZFNpemUoKTsKKyAgICAgICAgaWYgKGVtYmVkZGVkU1ZHUm9vdCgpICYm
IGlzUmVuZGVyV2lkZ2V0KCkpIHsKICAgICAgICAgICAgIGlmICghc2l6ZVRvQ2FjaGUud2lkdGgo
KSkKICAgICAgICAgICAgICAgICBzaXplVG9DYWNoZS5zZXRXaWR0aChjRGVmYXVsdFdpZHRoKTsK
ICAgICAgICAgICAgIGlmICghc2l6ZVRvQ2FjaGUuaGVpZ2h0KCkpCiAgICAgICAgICAgICAgICAg
c2l6ZVRvQ2FjaGUuc2V0SGVpZ2h0KGNEZWZhdWx0SGVpZ2h0KTsKICAgICAgICAgICAgIG1faW50
cmluc2ljU2l6ZSA9IExheW91dFNpemUoc2l6ZVRvQ2FjaGUpOwotICAgICAgICB9IGVsc2UgaWYg
KCFwcmVmZXJyZWRBc3BlY3RSYXRpby5pc0VtcHR5KCkgJiYgIWludHJpbnNpY1NpemUuaXNaZXJv
KCkpCi0gICAgICAgICAgICBtX2ludHJpbnNpY1NpemUgPSBMYXlvdXRTaXplKGludHJpbnNpY1Np
emUpOwotCi0gICAgICAgIGlmICghaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkgewotICAgICAg
ICAgICAgaWYgKCFwcmVmZXJyZWRBc3BlY3RSYXRpby5pc0VtcHR5KCkpCi0gICAgICAgICAgICAg
ICAgcHJlZmVycmVkQXNwZWN0UmF0aW8gPSBwcmVmZXJyZWRBc3BlY3RSYXRpby50cmFuc3Bvc2Vk
U2l6ZSgpOwotICAgICAgICAgICAgaW50cmluc2ljU2l6ZSA9IGludHJpbnNpY1NpemUudHJhbnNw
b3NlZFNpemUoKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGludHJpbnNpY1Np
emUgPSBjb21wdXRlSW50cmluc2ljU2l6ZSgpOwotICAgICAgICBwcmVmZXJyZWRBc3BlY3RSYXRp
byA9IHRoaXMtPnByZWZlcnJlZEFzcGVjdFJhdGlvKCk7Ci0gICAgICAgIGlmICghcHJlZmVycmVk
QXNwZWN0UmF0aW8uaXNFbXB0eSgpICYmICFpbnRyaW5zaWNTaXplLmlzWmVybygpKQotICAgICAg
ICAgICAgbV9pbnRyaW5zaWNTaXplID0gTGF5b3V0U2l6ZShpc0hvcml6b250YWxXcml0aW5nTW9k
ZSgpID8gaW50cmluc2ljU2l6ZSA6IGludHJpbnNpY1NpemUudHJhbnNwb3NlZFNpemUoKSk7Cisg
ICAgICAgIH0gZWxzZSBpZiAoIWludHJpbnNpY1JhdGlvLmlzRW1wdHkoKSAmJiAhaW50cmluc2lj
U2l6ZS5pc1plcm8oKSkKKyAgICAgICAgICAgIG1faW50cmluc2ljU2l6ZSA9IExheW91dFNpemUo
c2l6ZVRvQ2FjaGUpOwogICAgIH0KLSAgICBjb25zdHJhaW5lZFNpemUgPSBpbnRyaW5zaWNTaXpl
OwotfQotCi12b2lkIFJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljU2l6ZXNDb25zdHJh
aW5lZEJ5VHJhbnNmZXJyZWRNaW5NYXhTaXplcyhSZW5kZXJCb3gqIGNvbnRlbnRSZW5kZXJlciwg
RmxvYXRTaXplJiBpbnRyaW5zaWNTaXplLCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKSBjb25z
dAotewotICAgIGNvbXB1dGVBc3BlY3RSYXRpb0luZm9ybWF0aW9uRm9yUmVuZGVyQm94KGNvbnRl
bnRSZW5kZXJlciwgaW50cmluc2ljU2l6ZSwgaW50cmluc2ljUmF0aW8pOwogCiAgICAgLy8gTm93
IGNvbnN0cmFpbiB0aGUgaW50cmluc2ljIHNpemUgYWxvbmcgZWFjaCBheGlzIGFjY29yZGluZyB0
byBtaW5pbXVtIGFuZCBtYXhpbXVtIHdpZHRoL2hlaWdodHMgYWxvbmcgdGhlCiAgICAgLy8gb3Bw
b3NpdGUgYXhpcy4gU28gZm9yIGV4YW1wbGUgYSBtYXhpbXVtIHdpZHRoIHRoYXQgc2hyaW5rcyBv
dXIgd2lkdGggd2lsbCByZXN1bHQgaW4gdGhlIGhlaWdodCB3ZSBjb21wdXRlIGhlcmUKQEAgLTU5
NywyNSArNTU4LDEzIEBAIExheW91dFJlY3QgUmVuZGVyUmVwbGFjZWQ6OnJlcGxhY2VkQ29udGVu
dFJlY3QoY29uc3QgTGF5b3V0U2l6ZSYgaW50cmluc2ljU2l6ZSkKICAgICByZXR1cm4gZmluYWxS
ZWN0OwogfQogCi1kb3VibGUgUmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVJbnRyaW5zaWNBc3BlY3RS
YXRpbygpIGNvbnN0Ci17Ci0gICAgRmxvYXRTaXplIGludHJpbnNpY1JhdGlvOwotICAgIEZsb2F0
U2l6ZSBpbnRyaW5zaWNTaXplOwotICAgIGNvbXB1dGVBc3BlY3RSYXRpb0luZm9ybWF0aW9uRm9y
UmVuZGVyQm94KGVtYmVkZGVkQ29udGVudEJveCgpLCBpbnRyaW5zaWNTaXplLCBpbnRyaW5zaWNS
YXRpbyk7Ci0gICAgcmV0dXJuIGludHJpbnNpY1JhdGlvLmFzcGVjdFJhdGlvRG91YmxlKCk7Ci19
Ci0KIEZsb2F0U2l6ZSBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY1NpemUoKSBjb25z
dAogewotICAgIC8vIElmIHRoZXJlJ3MgYW4gZW1iZWRkZWRDb250ZW50Qm94KCkgb2YgYSByZW1v
dGUsIHJlZmVyZW5jZWQgZG9jdW1lbnQgYXZhaWxhYmxlLCB0aGlzIGNvZGUtcGF0aCBzaG91bGQg
bmV2ZXIgYmUgdXNlZC4KLSAgICBBU1NFUlQoIWVtYmVkZGVkQ29udGVudEJveCgpIHx8IHNob3Vs
ZEFwcGx5U2l6ZU9ySW5saW5lU2l6ZUNvbnRhaW5tZW50KCkpOwogICAgIHJldHVybiB7IGludHJp
bnNpY0xvZ2ljYWxXaWR0aCgpLCBpbnRyaW5zaWNMb2dpY2FsSGVpZ2h0KCkgfTsKIH0KIAogRmxv
YXRTaXplIFJlbmRlclJlcGxhY2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0CiB7Ci0g
ICAgLy8gSWYgdGhlcmUncyBhbiBlbWJlZGRlZENvbnRlbnRCb3goKSBvZiBhIHJlbW90ZSwgcmVm
ZXJlbmNlZCBkb2N1bWVudCBhdmFpbGFibGUsIHRoaXMgY29kZS1wYXRoIHNob3VsZCBuZXZlciBi
ZSB1c2VkLgotICAgIEFTU0VSVCghZW1iZWRkZWRDb250ZW50Qm94KCkgfHwgc2hvdWxkQXBwbHlT
aXplT3JJbmxpbmVTaXplQ29udGFpbm1lbnQoKSk7CiAgICAgYXV0byBpbnRyaW5zaWNTaXplID0g
RmxvYXRTaXplKGludHJpbnNpY0xvZ2ljYWxXaWR0aCgpLCBpbnRyaW5zaWNMb2dpY2FsSGVpZ2h0
KCkpOwogICAgIEZsb2F0U2l6ZSBwcmVmZXJyZWRBc3BlY3RSYXRpbzsKIApAQCAtNjc1LDcgKzYy
NCw3IEBAIHZvaWQgUmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVBc3BlY3RSYXRpb0FkanVzdGVkSW50
cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0CiAgICAgICAgIHJldHVybjsKIAogICAgIGF1
dG8mIHN0eWxlID0gdGhpcy0+c3R5bGUoKTsKLSAgICBhdXRvIGNvbXB1dGVkQXNwZWN0UmF0aW8g
PSBjb21wdXRlSW50cmluc2ljQXNwZWN0UmF0aW8oKTsKKyAgICBhdXRvIGNvbXB1dGVkQXNwZWN0
UmF0aW8gPSBwcmVmZXJyZWRBc3BlY3RSYXRpbygpLmFzcGVjdFJhdGlvRG91YmxlKCk7CiAgICAg
YXV0byBjb21wdXRlZEludHJpbnNpY0xvZ2ljYWxXaWR0aCA9IG1pbkxvZ2ljYWxXaWR0aDsKIAog
ICAgIGlmIChhdXRvIGZpeGVkTG9naWNhbEhlaWdodCA9IHN0eWxlLmxvZ2ljYWxIZWlnaHQoKS50
cnlGaXhlZCgpKQpAQCAtNjk4LDEzICs2NDcsOSBAQCBzdGF0aWMgaW5saW5lIExheW91dFVuaXQg
Tk9ERUxFVEUgcmVzb2x2ZVdpZHRoRm9yUmF0aW8oTGF5b3V0VW5pdCBib3JkZXJBbmRQYWRkaQog
ICAgIHJldHVybiBMYXlvdXRVbml0KGxvZ2ljYWxIZWlnaHQgKiBhc3BlY3RSYXRpbyk7CiB9CiAK
LXN0YXRpYyBpbmxpbmUgYm9vbCBOT0RFTEVURSBoYXNJbnRyaW5zaWNTaXplKFJlbmRlckJveCpj
b250ZW50UmVuZGVyZXIsIGJvb2wgaGFzSW50cmluc2ljV2lkdGgsIGJvb2wgaGFzSW50cmluc2lj
SGVpZ2h0ICkKK3N0YXRpYyBpbmxpbmUgYm9vbCBOT0RFTEVURSBoYXNJbnRyaW5zaWNTaXplKGNv
bnN0IFJlbmRlclJlcGxhY2VkKiBzdmdSb290LCBib29sIGhhc0ludHJpbnNpY1dpZHRoLCBib29s
IGhhc0ludHJpbnNpY0hlaWdodCkKIHsKLSAgICBpZiAoaGFzSW50cmluc2ljV2lkdGggJiYgaGFz
SW50cmluc2ljSGVpZ2h0KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoaGFzSW50cmlu
c2ljV2lkdGggfHwgaGFzSW50cmluc2ljSGVpZ2h0KQotICAgICAgICByZXR1cm4gY29udGVudFJl
bmRlcmVyICYmIGNvbnRlbnRSZW5kZXJlci0+aXNSZW5kZXJPckxlZ2FjeVJlbmRlclNWR1Jvb3Qo
KTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIChoYXNJbnRyaW5zaWNXaWR0aCAmJiBo
YXNJbnRyaW5zaWNIZWlnaHQpIHx8ICgoaGFzSW50cmluc2ljV2lkdGggfHwgaGFzSW50cmluc2lj
SGVpZ2h0KSAmJiBzdmdSb290KTsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJSZXBsYWNlZDo6Y29t
cHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoKFNob3VsZENvbXB1dGVQcmVmZXJyZWQgc2hvdWxkQ29t
cHV0ZVByZWZlcnJlZCkgY29uc3QKQEAgLTcxNSwxMiArNjYwLDEwIEBAIExheW91dFVuaXQgUmVu
ZGVyUmVwbGFjZWQ6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aChTaG91bGRDb21wdXRlUHJl
ZmVycmVkIHNoCiAgICAgaWYgKHN0eWxlLmxvZ2ljYWxXaWR0aCgpLmlzSW50cmluc2ljT3JTdHJl
dGNoKCkpCiAgICAgICAgIHJldHVybiBjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhSZXNwZWN0
aW5nTWluTWF4V2lkdGgoY29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoVXNpbmcoc3R5bGUubG9n
aWNhbFdpZHRoKCkpLCBzaG91bGRDb21wdXRlUHJlZmVycmVkKTsKIAotICAgIFJlbmRlckJveCog
Y29udGVudFJlbmRlcmVyID0gZW1iZWRkZWRDb250ZW50Qm94KCk7Ci0KICAgICAvLyAxMC4zLjIg
SW5saW5lLCByZXBsYWNlZCBlbGVtZW50czogaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvdmlz
dWRldC5odG1sI2lubGluZS1yZXBsYWNlZC13aWR0aAogICAgIEZsb2F0U2l6ZSBpbnRyaW5zaWNS
YXRpbzsKICAgICBGbG9hdFNpemUgY29uc3RyYWluZWRTaXplOwotICAgIGNvbXB1dGVJbnRyaW5z
aWNTaXplc0NvbnN0cmFpbmVkQnlUcmFuc2ZlcnJlZE1pbk1heFNpemVzKGNvbnRlbnRSZW5kZXJl
ciwgY29uc3RyYWluZWRTaXplLCBpbnRyaW5zaWNSYXRpbyk7CisgICAgY29tcHV0ZUludHJpbnNp
Y1NpemVzQ29uc3RyYWluZWRCeVRyYW5zZmVycmVkTWluTWF4U2l6ZXMoY29uc3RyYWluZWRTaXpl
LCBpbnRyaW5zaWNSYXRpbyk7CiAKICAgICBpZiAoc3R5bGUubG9naWNhbFdpZHRoKCkuaXNBdXRv
KCkpIHsKICAgICAgICAgYm9vbCBjb21wdXRlZEhlaWdodElzQXV0byA9IHN0eWxlLmxvZ2ljYWxI
ZWlnaHQoKS5pc0F1dG8oKTsKQEAgLTczMCw3ICs2NzMsNyBAQCBMYXlvdXRVbml0IFJlbmRlclJl
cGxhY2VkOjpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgoU2hvdWxkQ29tcHV0ZVByZWZlcnJl
ZCBzaAogICAgICAgICAvLyBGb3IgZmxleCBvciBncmlkIGl0ZW1zIHdoZXJlIHRoZSBsb2dpY2Fs
IGhlaWdodCBoYXMgYmVlbiBvdmVycmlkZW4gdGhlbiB3ZSBzaG91bGQgdXNlIHRoYXQgc2l6ZSB0
byBjb21wdXRlIHRoZSByZXBsYWNlZCB3aWR0aCBhcyBsb25nIGFzIHRoZSBmbGV4IG9yCiAgICAg
ICAgIC8vIGdyaWQgaXRlbSBoYXMgYW4gaW50cmluc2ljIHNpemUuIEl0IGlzIHBvc3NpYmxlIChp
bmRlZWQsIGNvbW1vbikgZm9yIGFuIFNWRyBncmFwaGljIHRvIGhhdmUgYW4gaW50cmluc2ljIGFz
cGVjdCByYXRpbyBidXQgbm90IHRvIGhhdmUgYW4gaW50cmluc2ljCiAgICAgICAgIC8vIHdpZHRo
IG9yIGhlaWdodC4gVGhlcmUgYXJlIGFsc28gZWxlbWVudHMgd2l0aCBpbnRyaW5zaWMgc2l6ZXMg
YnV0IHdpdGhvdXQgaW50cmluc2ljIHJhdGlvIChsaWtlIGFuIGlmcmFtZSkuCi0gICAgICAgIGlm
IChhdXRvIG92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0ID0gKCFpbnRyaW5zaWNSYXRpby5pc0VtcHR5
KCkgJiYgKGlzRmxleEl0ZW0oKSB8fCBpc0dyaWRJdGVtKCkpICYmIGhhc0ludHJpbnNpY1NpemUo
Y29udGVudFJlbmRlcmVyLCBoYXNJbnRyaW5zaWNXaWR0aCwgaGFzSW50cmluc2ljSGVpZ2h0KSA/
IHRoaXMtPm92ZXJyaWRpbmdCb3JkZXJCb3hMb2dpY2FsSGVpZ2h0KCkgOiBzdGQ6Om51bGxvcHQp
KQorICAgICAgICBpZiAoYXV0byBvdmVycmlkaW5nTG9naWNhbEhlaWdodCA9ICghaW50cmluc2lj
UmF0aW8uaXNFbXB0eSgpICYmIChpc0ZsZXhJdGVtKCkgfHwgaXNHcmlkSXRlbSgpKSAmJiBoYXNJ
bnRyaW5zaWNTaXplKGVtYmVkZGVkU1ZHUm9vdCgpLCBoYXNJbnRyaW5zaWNXaWR0aCwgaGFzSW50
cmluc2ljSGVpZ2h0KSA/IHRoaXMtPm92ZXJyaWRpbmdCb3JkZXJCb3hMb2dpY2FsSGVpZ2h0KCkg
OiBzdGQ6Om51bGxvcHQpKQogICAgICAgICAgICAgcmV0dXJuIGNvbXB1dGVSZXBsYWNlZExvZ2lj
YWxXaWR0aFJlc3BlY3RpbmdNaW5NYXhXaWR0aChjb250ZW50Qm94TG9naWNhbEhlaWdodCgqb3Zl
cnJpZGluZ0xvZ2ljYWxIZWlnaHQpICogaW50cmluc2ljUmF0aW8uYXNwZWN0UmF0aW9Eb3VibGUo
KSwgc2hvdWxkQ29tcHV0ZVByZWZlcnJlZCk7CiAKICAgICAgICAgLy8gSWYgJ2hlaWdodCcgYW5k
ICd3aWR0aCcgYm90aCBoYXZlIGNvbXB1dGVkIHZhbHVlcyBvZiAnYXV0bycgYW5kIHRoZSBlbGVt
ZW50IGFsc28gaGFzIGFuIGludHJpbnNpYyB3aWR0aCwgdGhlbiB0aGF0IGludHJpbnNpYyB3aWR0
aCBpcyB0aGUgdXNlZCB2YWx1ZSBvZiAnd2lkdGgnLgpAQCAtODEzLDE5ICs3NTYsMTcgQEAgTGF5
b3V0VW5pdCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodChzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQKICAgICBpZiAoaGFzUmVwbGFjZWRMb2dpY2FsSGVpZ2h0KCkp
CiAgICAgICAgIHJldHVybiBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0UmVzcGVjdGluZ01p
bk1heEhlaWdodChjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0VXNpbmcoc3R5bGUoKS5sb2dp
Y2FsSGVpZ2h0KCkpKTsKIAotICAgIFJlbmRlckJveCogY29udGVudFJlbmRlcmVyID0gZW1iZWRk
ZWRDb250ZW50Qm94KCk7Ci0KICAgICAvLyAxMC42LjIgSW5saW5lLCByZXBsYWNlZCBlbGVtZW50
czogaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvdmlzdWRldC5odG1sI2lubGluZS1yZXBsYWNl
ZC1oZWlnaHQKICAgICBGbG9hdFNpemUgaW50cmluc2ljUmF0aW87CiAgICAgRmxvYXRTaXplIGNv
bnN0cmFpbmVkU2l6ZTsKLSAgICBjb21wdXRlSW50cmluc2ljU2l6ZXNDb25zdHJhaW5lZEJ5VHJh
bnNmZXJyZWRNaW5NYXhTaXplcyhjb250ZW50UmVuZGVyZXIsIGNvbnN0cmFpbmVkU2l6ZSwgaW50
cmluc2ljUmF0aW8pOworICAgIGNvbXB1dGVJbnRyaW5zaWNTaXplc0NvbnN0cmFpbmVkQnlUcmFu
c2ZlcnJlZE1pbk1heFNpemVzKGNvbnN0cmFpbmVkU2l6ZSwgaW50cmluc2ljUmF0aW8pOwogCiAg
ICAgYm9vbCB3aWR0aElzQXV0byA9IHN0eWxlKCkubG9naWNhbFdpZHRoKCkuaXNBdXRvKCk7CiAg
ICAgYm9vbCBoYXNJbnRyaW5zaWNXaWR0aCA9IGNvbnN0cmFpbmVkU2l6ZS53aWR0aCgpID4gMCB8
fCAoIWNvbnN0cmFpbmVkU2l6ZS53aWR0aCgpICYmIHNob3VsZFJlc3BlY3RaZXJvSW50cmluc2lj
V2lkdGgoKSkgfHwgc2hvdWxkQXBwbHlTaXplT3JJbmxpbmVTaXplQ29udGFpbm1lbnQoKTsKICAg
ICBib29sIGhhc0ludHJpbnNpY0hlaWdodCA9IGNvbnN0cmFpbmVkU2l6ZS5oZWlnaHQoKSA+IDAg
fHwgc2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKTsKIAogICAgIC8vIFNlZSBjb21wdXRlUmVw
bGFjZWRMb2dpY2FsSGVpZ2h0KCkgZm9yIGEgc2ltaWxhciBjaGVjayBmb3IgaGVpZ2h0cy4KLSAg
ICBpZiAoYXV0byBvdmVycmlkaW5nbG9naWNhbFdpZHRoID0gKCFpbnRyaW5zaWNSYXRpby5pc0Vt
cHR5KCkgJiYgKGlzRmxleEl0ZW0oKSB8fCBpc0dyaWRJdGVtKCkpICYmIGhhc0ludHJpbnNpY1Np
emUoY29udGVudFJlbmRlcmVyLCBoYXNJbnRyaW5zaWNXaWR0aCwgaGFzSW50cmluc2ljSGVpZ2h0
KSA/IG92ZXJyaWRpbmdCb3JkZXJCb3hMb2dpY2FsV2lkdGgoKSA6IHN0ZDo6bnVsbG9wdCkpCisg
ICAgaWYgKGF1dG8gb3ZlcnJpZGluZ2xvZ2ljYWxXaWR0aCA9ICghaW50cmluc2ljUmF0aW8uaXNF
bXB0eSgpICYmIChpc0ZsZXhJdGVtKCkgfHwgaXNHcmlkSXRlbSgpKSAmJiBoYXNJbnRyaW5zaWNT
aXplKGVtYmVkZGVkU1ZHUm9vdCgpLCBoYXNJbnRyaW5zaWNXaWR0aCwgaGFzSW50cmluc2ljSGVp
Z2h0KSA/IG92ZXJyaWRpbmdCb3JkZXJCb3hMb2dpY2FsV2lkdGgoKSA6IHN0ZDo6bnVsbG9wdCkp
CiAgICAgICAgIHJldHVybiBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0UmVzcGVjdGluZ01p
bk1heEhlaWdodChjb250ZW50Qm94TG9naWNhbFdpZHRoKCpvdmVycmlkaW5nbG9naWNhbFdpZHRo
KSAqIGludHJpbnNpY1JhdGlvLnRyYW5zcG9zZWRTaXplKCkuYXNwZWN0UmF0aW9Eb3VibGUoKSk7
CiAKICAgICAvLyBJZiAnaGVpZ2h0JyBhbmQgJ3dpZHRoJyBib3RoIGhhdmUgY29tcHV0ZWQgdmFs
dWVzIG9mICdhdXRvJyBhbmQgdGhlIGVsZW1lbnQgYWxzbyBoYXMgYW4gaW50cmluc2ljIGhlaWdo
dCwgdGhlbiB0aGF0IGludHJpbnNpYyBoZWlnaHQgaXMgdGhlIHVzZWQgdmFsdWUgb2YgJ2hlaWdo
dCcuCkBAIC04NjAsNyArODAxLDcgQEAgdm9pZCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJp
bnNpY0tleXdvcmRMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWwKIHsKICAgICBp
ZiAoaGFzSW50cmluc2ljQXNwZWN0UmF0aW8oKSAmJiAhc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCku
aXNBdXRvKCkpIHsKICAgICAgICAgaWYgKGF1dG8gZml4ZWRIZWlnaHQgPSBzdHlsZSgpLmxvZ2lj
YWxIZWlnaHQoKS50cnlGaXhlZCgpKSB7Ci0gICAgICAgICAgICBhdXRvIGhlaWdodERlcml2ZWRX
aWR0aCA9IExheW91dFVuaXQgeyBmaXhlZEhlaWdodC0+cmVzb2x2ZVpvb20oc3R5bGUoKS51c2Vk
Wm9vbUZvckxlbmd0aCgpKSAqIGNvbXB1dGVJbnRyaW5zaWNBc3BlY3RSYXRpbygpIH07CisgICAg
ICAgICAgICBhdXRvIGhlaWdodERlcml2ZWRXaWR0aCA9IExheW91dFVuaXQgeyBmaXhlZEhlaWdo
dC0+cmVzb2x2ZVpvb20oc3R5bGUoKS51c2VkWm9vbUZvckxlbmd0aCgpKSAqIHByZWZlcnJlZEFz
cGVjdFJhdGlvKCkuYXNwZWN0UmF0aW9Eb3VibGUoKSB9OwogICAgICAgICAgICAgbWluTG9naWNh
bFdpZHRoID0gaGVpZ2h0RGVyaXZlZFdpZHRoOwogICAgICAgICAgICAgbWF4TG9naWNhbFdpZHRo
ID0gaGVpZ2h0RGVyaXZlZFdpZHRoOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTA3MywxMCAr
MTAxNCw3IEBAIHZvaWQgUmVuZGVyUmVwbGFjZWQ6OmxheW91dFNoYWRvd0NvbnRlbnQoY29uc3Qg
TGF5b3V0U2l6ZSYgb2xkU2l6ZSkKIAogRmxvYXRTaXplIFJlbmRlclJlcGxhY2VkOjppbnRyaW5z
aWNSYXRpbygpIGNvbnN0CiB7Ci0gICAgRmxvYXRTaXplIGludHJpbnNpY1JhdGlvOwotICAgIEZs
b2F0U2l6ZSBjb25zdHJhaW5lZFNpemU7Ci0gICAgY29tcHV0ZUFzcGVjdFJhdGlvSW5mb3JtYXRp
b25Gb3JSZW5kZXJCb3goZW1iZWRkZWRDb250ZW50Qm94KCksIGNvbnN0cmFpbmVkU2l6ZSwgaW50
cmluc2ljUmF0aW8pOwotICAgIHJldHVybiBpbnRyaW5zaWNSYXRpbzsKKyAgICByZXR1cm4gcHJl
ZmVycmVkQXNwZWN0UmF0aW8oKTsKIH0KIAogdm9pZCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZVJl
cGxhY2VkT3V0T2ZGbG93UG9zaXRpb25lZExvZ2ljYWxXaWR0aChMb2dpY2FsRXh0ZW50Q29tcHV0
ZWRWYWx1ZXMmIGNvbXB1dGVkVmFsdWVzKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUmVwbGFjZWQuaAppbmRleCBhYjNmNDcxMGFhOTAuLmI0NzRjM2Q2Y2QwYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKQEAgLTQ3LDcgKzQ3LDYgQEAg
cHVibGljOgogICAgIGJvb2wgaXNDb250ZW50TGlrZWx5VmlzaWJsZUluVmlld3BvcnQoKTsKICAg
ICBib29sIHNob3VsZEludmFsaWRhdGVQcmVmZXJyZWRXaWR0aHMoKSBjb25zdCBvdmVycmlkZTsK
IAotICAgIGRvdWJsZSBjb21wdXRlSW50cmluc2ljQXNwZWN0UmF0aW8oKSBjb25zdDsKIAogICAg
IHZpcnR1YWwgYm9vbCBwYWludHNDb250ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCkBA
IC02MSw2ICs2MCw5IEBAIHB1YmxpYzoKICAgICBib29sIHJlcGxhY2VkTWluTG9naWNhbEhlaWdo
dENvbXB1dGVzQXNOb25lKCkgY29uc3Q7CiAgICAgYm9vbCByZXBsYWNlZE1heExvZ2ljYWxIZWln
aHRDb21wdXRlc0FzTm9uZSgpIGNvbnN0OwogCisgICAgdmlydHVhbCBGbG9hdFNpemUgY29tcHV0
ZUludHJpbnNpY1NpemUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBwcmVmZXJyZWRB
c3BlY3RSYXRpbygpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgUmVuZGVyUmVwbGFjZWQoVHlw
ZSwgRWxlbWVudCYsIFJlbmRlclN0eWxlJiYsIE9wdGlvblNldDxSZXBsYWNlZEZsYWc+ID0geyB9
KTsKICAgICBSZW5kZXJSZXBsYWNlZChUeXBlLCBFbGVtZW50JiwgUmVuZGVyU3R5bGUmJiwgY29u
c3QgTGF5b3V0U2l6ZSYgaW50cmluc2ljU2l6ZSwgT3B0aW9uU2V0PFJlcGxhY2VkRmxhZz4gPSB7
IH0pOwpAQCAtNzcsOSArNzksNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIHN0eWxlRGlkQ2hh
bmdlKFN0eWxlOjpEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJy
aWRlOwogCi0gICAgdmlydHVhbCBGbG9hdFNpemUgY29tcHV0ZUludHJpbnNpY1NpemUoKSBjb25z
dDsKLSAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0Owot
CiAgICAgdm9pZCBzZXRJbnRyaW5zaWNTaXplKGNvbnN0IExheW91dFNpemUmIGludHJpbnNpY1Np
emUpIHsgbV9pbnRyaW5zaWNTaXplID0gaW50cmluc2ljU2l6ZTsgfQogICAgIHZpcnR1YWwgdm9p
ZCBpbnRyaW5zaWNTaXplQ2hhbmdlZCgpOwogICAgIHZpcnR1YWwgYm9vbCBoYXNSZWxhdGl2ZUlu
dHJpbnNpY0xvZ2ljYWxXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xMDYsNyAr
MTA1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29tcHV0ZUFzcGVjdFJhdGlvQWRqdXN0ZWRJ
bnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0
VW5pdCYgbWF4TG9naWNhbFdpZHRoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgUmVuZGVyQm94KiBl
bWJlZGRlZENvbnRlbnRCb3goKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBSZW5k
ZXJSZXBsYWNlZCogZW1iZWRkZWRTVkdSb290KCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIEFT
Q0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclJl
cGxhY2VkIl9zOyB9CiAKICAgICBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xMjEsOCArMTIwLDcgQEAgcHJpdmF0ZToKICAgICBib29s
IGNhbkJlU2VsZWN0aW9uTGVhZigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAog
ICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCA9
IHRydWUpIGZpbmFsOwotICAgIHZvaWQgY29tcHV0ZUFzcGVjdFJhdGlvSW5mb3JtYXRpb25Gb3JS
ZW5kZXJCb3goUmVuZGVyQm94KiwgRmxvYXRTaXplJiBjb25zdHJhaW5lZFNpemUsIEZsb2F0U2l6
ZSYgaW50cmluc2ljUmF0aW8pIGNvbnN0OwotICAgIHZvaWQgY29tcHV0ZUludHJpbnNpY1NpemVz
Q29uc3RyYWluZWRCeVRyYW5zZmVycmVkTWluTWF4U2l6ZXMoUmVuZGVyQm94KiBjb250ZW50UmVu
ZGVyZXIsIEZsb2F0U2l6ZSYgY29uc3RyYWluZWRTaXplLCBGbG9hdFNpemUmIGludHJpbnNpY1Jh
dGlvKSBjb25zdDsKKyAgICB2b2lkIGNvbXB1dGVJbnRyaW5zaWNTaXplc0NvbnN0cmFpbmVkQnlU
cmFuc2ZlcnJlZE1pbk1heFNpemVzKEZsb2F0U2l6ZSYgY29uc3RyYWluZWRTaXplLCBGbG9hdFNp
emUmIGludHJpbnNpY1JhdGlvKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGREcmF3
U2VsZWN0aW9uVGludCgpIGNvbnN0OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyV2lkZ2V0LmNwcAppbmRleCA0ZGE1MDhiNmE3M2EuLmQ5NTgzZGU2NWJkYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKQEAgLTQ4NywxNSArNDg3LDQ2IEBA
IGJvb2wgUmVuZGVyV2lkZ2V0OjpzaG91bGRJbnZhbGlkYXRlUHJlZmVycmVkV2lkdGhzKCkgY29u
c3QKIHsKICAgICBpZiAoUmVuZGVyUmVwbGFjZWQ6OnNob3VsZEludmFsaWRhdGVQcmVmZXJyZWRX
aWR0aHMoKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGVtYmVkZGVkQ29udGVu
dEJveCgpOworICAgIHJldHVybiBlbWJlZGRlZFNWR1Jvb3QoKTsKIH0KIAotUmVuZGVyQm94KiBS
ZW5kZXJXaWRnZXQ6OmVtYmVkZGVkQ29udGVudEJveCgpIGNvbnN0CitSZW5kZXJSZXBsYWNlZCog
UmVuZGVyV2lkZ2V0OjplbWJlZGRlZFNWR1Jvb3QoKSBjb25zdAogewogICAgIGlmICghaXM8UmVu
ZGVyRW1iZWRkZWRPYmplY3Q+KHRoaXMpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBS
ZWZQdHIgZnJhbWVWaWV3ID0gZHluYW1pY0Rvd25jYXN0PExvY2FsRnJhbWVWaWV3Pih3aWRnZXQo
KSk7Ci0gICAgcmV0dXJuIGZyYW1lVmlldyA/IGZyYW1lVmlldy0+ZW1iZWRkZWRDb250ZW50Qm94
KCkgOiBudWxscHRyOworICAgIHJldHVybiBmcmFtZVZpZXcgPyBmcmFtZVZpZXctPmVtYmVkZGVk
U1ZHUm9vdCgpIDogbnVsbHB0cjsKK30KKworRmxvYXRTaXplIFJlbmRlcldpZGdldDo6Y29tcHV0
ZUludHJpbnNpY1NpemUoKSBjb25zdAoreworICAgIENoZWNrZWRQdHIgc3ZnUm9vdCA9IGVtYmVk
ZGVkU1ZHUm9vdCgpOworICAgIGlmICghc3ZnUm9vdCkKKyAgICAgICAgcmV0dXJuIFJlbmRlclJl
cGxhY2VkOjpjb21wdXRlSW50cmluc2ljU2l6ZSgpOworCisgICAgYXV0byBpbnRyaW5zaWNTaXpl
ID0gc3ZnUm9vdC0+Y29tcHV0ZUludHJpbnNpY1NpemUoKTsKKyAgICBpbnRyaW5zaWNTaXplLnNj
YWxlKHN0eWxlKCkudXNlZFpvb20oKSk7CisKKyAgICBpZiAoIWlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlKCkpCisgICAgICAgIGludHJpbnNpY1NpemUgPSBpbnRyaW5zaWNTaXplLnRyYW5zcG9zZWRT
aXplKCk7CisKKyAgICByZXR1cm4gaW50cmluc2ljU2l6ZTsKK30KKworRmxvYXRTaXplIFJlbmRl
cldpZGdldDo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdAoreworICAgIENoZWNrZWRQdHIg
c3ZnUm9vdCA9IGVtYmVkZGVkU1ZHUm9vdCgpOworICAgIGlmICghc3ZnUm9vdCkKKyAgICAgICAg
cmV0dXJuIFJlbmRlclJlcGxhY2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpOworCisgICAgYXV0
byByYXRpbyA9IHN2Z1Jvb3QtPnByZWZlcnJlZEFzcGVjdFJhdGlvKCk7CisgICAgaWYgKCFpc0hv
cml6b250YWxXcml0aW5nTW9kZSgpICYmICFyYXRpby5pc0VtcHR5KCkpCisgICAgICAgIHJhdGlv
ID0gcmF0aW8udHJhbnNwb3NlZFNpemUoKTsKKworICAgIGlmIChzdHlsZSgpLmFzcGVjdFJhdGlv
KCkuaXNSYXRpbygpIHx8IChzdHlsZSgpLmFzcGVjdFJhdGlvKCkuaXNBdXRvQW5kUmF0aW8oKSAm
JiByYXRpby5pc0VtcHR5KCkpKQorICAgICAgICByYXRpbyA9IEZsb2F0U2l6ZTo6bmFycm93UHJl
Y2lzaW9uKHN0eWxlKCkuYXNwZWN0UmF0aW9Mb2dpY2FsV2lkdGgoKS52YWx1ZSwgc3R5bGUoKS5h
c3BlY3RSYXRpb0xvZ2ljYWxIZWlnaHQoKS52YWx1ZSk7CisKKyAgICByZXR1cm4gcmF0aW87CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJXaWRnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJX
aWRnZXQuaAppbmRleCBlMDE3ODE2MjAwZGYuLjkyZjI4MTM4Y2FhZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaApAQCAtOTEsNyArOTEsOSBAQCBwcml2YXRlOgogICAg
IHZvaWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCiAgICAgYm9vbCBzaG91bGRJbnZhbGlk
YXRlUHJlZmVycmVkV2lkdGhzKCkgY29uc3QgZmluYWw7Ci0gICAgUmVuZGVyQm94KiBlbWJlZGRl
ZENvbnRlbnRCb3goKSBjb25zdCBmaW5hbDsKKyAgICBSZW5kZXJSZXBsYWNlZCogZW1iZWRkZWRT
VkdSb290KCkgY29uc3QgZmluYWw7CisgICAgRmxvYXRTaXplIGNvbXB1dGVJbnRyaW5zaWNTaXpl
KCkgY29uc3QgZmluYWw7CisgICAgRmxvYXRTaXplIHByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29u
c3QgZmluYWw7CiAKICAgICB2b2lkIHNldFNlbGVjdGlvblN0YXRlKEhpZ2hsaWdodFN0YXRlKSBm
aW5hbDsKICAgICB2b2lkIHNldE92ZXJsYXBUZXN0UmVzdWx0KGJvb2wpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKaW5kZXggZGUyOTQz
NjI0Mjk4Li41NjJiYzUzN2QzZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSb290LmNwcApAQCAtOTEsMTIgKzkxLDE0IEBAIFJlbmRlclNWR1ZpZXdwb3J0
Q29udGFpbmVyKiBSZW5kZXJTVkdSb290Ojp2aWV3cG9ydENvbnRhaW5lcigpIGNvbnN0CiAKIGJv
b2wgUmVuZGVyU1ZHUm9vdDo6aGFzSW50cmluc2ljQXNwZWN0UmF0aW8oKSBjb25zdAogewotICAg
IHJldHVybiBjb21wdXRlSW50cmluc2ljQXNwZWN0UmF0aW8oKTsKKyAgICByZXR1cm4gcHJlZmVy
cmVkQXNwZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0RvdWJsZSgpOwogfQogCiBGbG9hdFNpemUgUmVu
ZGVyU1ZHUm9vdDo6Y29tcHV0ZUludHJpbnNpY1NpemUoKSBjb25zdAogewotICAgIEFTU0VSVF9J
TVBMSUVTKHZpZXcoKS5mcmFtZVZpZXcoKS5sYXlvdXRDb250ZXh0KCkuaXNJblJlbmRlclRyZWVM
YXlvdXQoKSwgIXNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCkpOworICAgIC8vIFNpemUgY29u
dGFpbm1lbnQgc3VwcHJlc3NlcyBpbnRyaW5zaWMgZGltZW5zaW9ucyBmcm9tIGNvbnRlbnQuCisg
ICAgaWYgKHNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCkpCisgICAgICAgIHJldHVybiBSZW5k
ZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY1NpemUoKTsKICAgICAvLyBodHRwczovL3d3dy53
My5vcmcvVFIvU1ZHL2Nvb3Jkcy5odG1sI0ludHJpbnNpY1NpemluZwogICAgIEZsb2F0U2l6ZSBp
bnRyaW5zaWNTaXplID0geyBzdmdTVkdFbGVtZW50KCkuaW50cmluc2ljV2lkdGgoKSwgc3ZnU1ZH
RWxlbWVudCgpLmludHJpbnNpY0hlaWdodCgpIH07CiAgICAgLy8gVHJhbnNwb3NlIGZvciB2ZXJ0
aWNhbCB3cml0aW5nIG1vZGUKQEAgLTEwNyw3ICsxMDksOSBAQCBGbG9hdFNpemUgUmVuZGVyU1ZH
Um9vdDo6Y29tcHV0ZUludHJpbnNpY1NpemUoKSBjb25zdAogCiBGbG9hdFNpemUgUmVuZGVyU1ZH
Um9vdDo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdAogewotICAgIEFTU0VSVCghc2hvdWxk
QXBwbHlTaXplQ29udGFpbm1lbnQoKSk7CisgICAgLy8gU2l6ZSBjb250YWlubWVudCBzdXBwcmVz
c2VzIGludHJpbnNpYyBkaW1lbnNpb25zIGZyb20gY29udGVudC4KKyAgICBpZiAoc2hvdWxkQXBw
bHlTaXplQ29udGFpbm1lbnQoKSkKKyAgICAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpwcmVm
ZXJyZWRBc3BlY3RSYXRpbygpOwogCiAgICAgaWYgKHN0eWxlKCkuYXNwZWN0UmF0aW8oKS5pc1Jh
dGlvKCkpCiAgICAgICAgIHJldHVybiBGbG9hdFNpemU6Om5hcnJvd1ByZWNpc2lvbihzdHlsZSgp
LmFzcGVjdFJhdGlvTG9naWNhbFdpZHRoKCkudmFsdWUsIHN0eWxlKCkuYXNwZWN0UmF0aW9Mb2dp
Y2FsSGVpZ2h0KCkudmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9sZWdhY3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lSZW5kZXJTVkdSb290LmNwcAppbmRleCAzNmQzZTM4NTlk
YjYuLmM3YTI5NzFmN2FlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9sZWdhY3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9sZWdhY3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5jcHAKQEAgLTgxLDEyICs4MSwx
NCBAQCBTVkdTVkdFbGVtZW50JiBMZWdhY3lSZW5kZXJTVkdSb290OjpzdmdTVkdFbGVtZW50KCkg
Y29uc3QKIAogYm9vbCBMZWdhY3lSZW5kZXJTVkdSb290OjpoYXNJbnRyaW5zaWNBc3BlY3RSYXRp
bygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvbXB1dGVJbnRyaW5zaWNBc3BlY3RSYXRpbygpOwor
ICAgIHJldHVybiBwcmVmZXJyZWRBc3BlY3RSYXRpbygpLmFzcGVjdFJhdGlvRG91YmxlKCk7CiB9
CiAKIEZsb2F0U2l6ZSBMZWdhY3lSZW5kZXJTVkdSb290Ojpjb21wdXRlSW50cmluc2ljU2l6ZSgp
IGNvbnN0CiB7Ci0gICAgQVNTRVJUX0lNUExJRVModmlldygpLmZyYW1lVmlldygpLmxheW91dENv
bnRleHQoKS5pc0luUmVuZGVyVHJlZUxheW91dCgpLCAhc2hvdWxkQXBwbHlTaXplQ29udGFpbm1l
bnQoKSk7CisgICAgLy8gU2l6ZSBjb250YWlubWVudCBzdXBwcmVzc2VzIGludHJpbnNpYyBkaW1l
bnNpb25zIGZyb20gY29udGVudC4KKyAgICBpZiAoc2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQo
KSkKKyAgICAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljU2l6ZSgp
OwogICAgIEZsb2F0U2l6ZSBpbnRyaW5zaWNTaXplID0geyBzdmdTVkdFbGVtZW50KCkuaW50cmlu
c2ljV2lkdGgoKSwgc3ZnU1ZHRWxlbWVudCgpLmludHJpbnNpY0hlaWdodCgpIH07CiAgICAgLy8g
VHJhbnNwb3NlIGZvciB2ZXJ0aWNhbCB3cml0aW5nIG1vZGUKICAgICBpZiAoIWlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlKCkpCkBAIC05Niw3ICs5OCw5IEBAIEZsb2F0U2l6ZSBMZWdhY3lSZW5kZXJT
VkdSb290Ojpjb21wdXRlSW50cmluc2ljU2l6ZSgpIGNvbnN0CiAKIEZsb2F0U2l6ZSBMZWdhY3lS
ZW5kZXJTVkdSb290OjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0CiB7Ci0gICAgQVNTRVJU
KCFzaG91bGRBcHBseVNpemVDb250YWlubWVudCgpKTsKKyAgICAvLyBTaXplIGNvbnRhaW5tZW50
IHN1cHByZXNzZXMgaW50cmluc2ljIGRpbWVuc2lvbnMgZnJvbSBjb250ZW50LgorICAgIGlmIChz
aG91bGRBcHBseVNpemVDb250YWlubWVudCgpKQorICAgICAgICByZXR1cm4gUmVuZGVyUmVwbGFj
ZWQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvKCk7CiAKICAgICBpZiAoc3R5bGUoKS5hc3BlY3RSYXRp
bygpLmlzUmF0aW8oKSkKICAgICAgICAgcmV0dXJuIEZsb2F0U2l6ZTo6bmFycm93UHJlY2lzaW9u
KHN0eWxlKCkuYXNwZWN0UmF0aW9Mb2dpY2FsV2lkdGgoKS52YWx1ZSwgc3R5bGUoKS5hc3BlY3RS
YXRpb0xvZ2ljYWxIZWlnaHQoKS52YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmNwcAppbmRleCA5YTBkNDgyNmE2OTAuLjg2MjllMGVkMjE2YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC0yNzYsOCArMjc2LDggQEAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBTVkdJbWFnZTo6bmF0aXZlSW1hZ2UoY29uc3QgRmxvYXRTaXplJiBzaXpl
LCBjb25zdCBEZXN0aW5hdGkKICAgICBhdXRvIHJlbmRlcmluZ01vZGUgPSBtX3BhZ2UtPnNldHRp
bmdzKCkuYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCgpID8gUmVuZGVyaW5nTW9kZTo6QWNjZWxl
cmF0ZWQgOiBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkOwogCiAgICAgSG9zdFdpbmRvdyog
aG9zdFdpbmRvdyA9IG51bGxwdHI7Ci0gICAgaWYgKENoZWNrZWRQdHIgY29udGVudFJlbmRlcmVy
ID0gZW1iZWRkZWRDb250ZW50Qm94KCkpCi0gICAgICAgIGhvc3RXaW5kb3cgPSBjb250ZW50UmVu
ZGVyZXItPmhvc3RXaW5kb3coKTsKKyAgICBpZiAoQ2hlY2tlZFB0ciBzdmdSb290ID0gZW1iZWRk
ZWRTVkdSb290KCkpCisgICAgICAgIGhvc3RXaW5kb3cgPSBzdmdSb290LT5ob3N0V2luZG93KCk7
CiAKICAgICBSZWZQdHIgaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJl
bmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2U6OkRPTSwgMSwgY29sb3JTcGFjZSwgUGl4ZWxG
b3JtYXQ6OkJHUkE4LCBob3N0V2luZG93KTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQpAQCAtMzky
LDEyICszOTIsMTIgQEAgSW1hZ2VEcmF3UmVzdWx0IFNWR0ltYWdlOjpkcmF3KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWMKICAgICByZXR1cm4gSW1hZ2VE
cmF3UmVzdWx0OjpEaWREcmF3OwogfQogCi1SZW5kZXJCb3gqIFNWR0ltYWdlOjplbWJlZGRlZENv
bnRlbnRCb3goKSBjb25zdAorUmVuZGVyUmVwbGFjZWQqIFNWR0ltYWdlOjplbWJlZGRlZFNWR1Jv
b3QoKSBjb25zdAogewogICAgIFJlZlB0ciByb290RWxlbWVudCA9IHRoaXMtPnJvb3RFbGVtZW50
KCk7CiAgICAgaWYgKCFyb290RWxlbWVudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
cmV0dXJuIGRvd25jYXN0PFJlbmRlckJveD4ocm9vdEVsZW1lbnQtPnJlbmRlcmVyKCkpOworICAg
IHJldHVybiBkb3duY2FzdDxSZW5kZXJSZXBsYWNlZD4ocm9vdEVsZW1lbnQtPnJlbmRlcmVyKCkp
OwogfQogCiBMb2NhbEZyYW1lVmlldyogU1ZHSW1hZ2U6OmZyYW1lVmlldygpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCmluZGV4IGY0NTc3ZDVjZjA0Mi4uZjc0M2Ez
NzAzMmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaApAQCAtMzYsNyAr
MzYsNyBAQCBjbGFzcyBFbGVtZW50OwogY2xhc3MgSW1hZ2VCdWZmZXI7CiBjbGFzcyBMb2NhbEZy
YW1lVmlldzsKIGNsYXNzIFBhZ2U7Ci1jbGFzcyBSZW5kZXJCb3g7CitjbGFzcyBSZW5kZXJSZXBs
YWNlZDsKIGNsYXNzIFNWR1NWR0VsZW1lbnQ7CiBjbGFzcyBTVkdJbWFnZUNocm9tZUNsaWVudDsK
IGNsYXNzIFNWR0ltYWdlRm9yQ29udGFpbmVyOwpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgdHJ5Q3JlYXRlRnJvbURhdGEoc3RkOjpzcGFu
PGNvbnN0IHVpbnQ4X3Q+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTVkdJbWFnZT4m
Jik+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzRGF0YURlY29kYWJsZShj
b25zdCBTZXR0aW5ncyYsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pik7CiAKLSAgICBSZW5kZXJC
b3gqIGVtYmVkZGVkQ29udGVudEJveCgpIGNvbnN0OworICAgIFJlbmRlclJlcGxhY2VkKiBlbWJl
ZGRlZFNWR1Jvb3QoKSBjb25zdDsKICAgICBMb2NhbEZyYW1lVmlldyogTk9ERUxFVEUgZnJhbWVW
aWV3KCkgY29uc3Q7CiAKICAgICBib29sIGlzU1ZHSW1hZ2UoKSBjb25zdCBmaW5hbCB7IHJldHVy
biB0cnVlOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>479561</attachid>
            <date>2026-05-09 18:35:49 -0700</date>
            <delta_ts>2026-05-10 12:32:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-314460-20260509183549.patch</filename>
            <type>text/plain</type>
            <size>43106</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA1MTVhOWI4ZmJjMTM0NmNjZTllNmEzY2ZkZDg0YjI0OTgwYTg0Yzk4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFNhdCwgOSBNYXkgMjAyNiAxODozNTowOSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFJlbmFtZSBh
c3BlY3QgcmF0aW8gaGVscGVycyBvbiBSZW5kZXJSZXBsYWNlZCBhbmQgUmVuZGVyQm94CiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE0NDYwCgpSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KCkVXUyAoUFIgd2l0aCBkZXBlbmRlbmNpZXMpLgoKKiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3LmNwcDoKKFdlYkNvcmU6OkxvY2FsRnJhbWVWaWV3Ojpm
b3JjZUxheW91dFBhcmVudFZpZXdJZk5lZWRlZCk6CihXZWJDb3JlOjpMb2NhbEZyYW1lVmlldzo6
ZW1iZWRkZWRTVkdSb290IGNvbnN0KToKKFdlYkNvcmU6OkxvY2FsRnJhbWVWaWV3OjplbWJlZGRl
ZENvbnRlbnRCb3ggY29uc3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYWxG
cmFtZVZpZXcuaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKFdl
YkNvcmU6OlJlbmRlckJveDo6Y29uc3RyYWluTG9naWNhbE1pbk1heFNpemVzQnlBc3BlY3RSYXRp
byBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVJbnRyaW5zaWNLZXl3b3JkTG9n
aWNhbFdpZHRocyBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJCb3g6OmlzUmVwbGFjZWRXaXRoUHJl
ZmVycmVkQXNwZWN0UmF0aW8gY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyQm94Ojphc3BlY3RSYXRp
b1ZhbHVlIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZU1pbk1heExvZ2ljYWxX
aWR0aEZyb21Bc3BlY3RSYXRpbyBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVN
aW5NYXhMb2dpY2FsSGVpZ2h0RnJvbUFzcGVjdFJhdGlvIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRl
ckJveDo6aXNSZW5kZXJSZXBsYWNlZFdpdGhJbnRyaW5zaWNSYXRpbyBjb25zdCk6IERlbGV0ZWQu
CihXZWJDb3JlOjpSZW5kZXJCb3g6OnJlc29sdmVBc3BlY3RSYXRpbyBjb25zdCk6IERlbGV0ZWQu
CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oOgoqIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHA6CihXZWJDb3JlOjppc1NWR1Jvb3RXaXRo
SW50cmluc2ljQXNwZWN0UmF0aW8pOgooV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OnByZWZl
cnJlZEFzcGVjdFJhdGlvRm9yRmxleEl0ZW0gY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZS5jcHA6CihXZWJDb3JlOjpSZW5kZXJJbWFnZTo6Y29tcHV0ZUludHJp
bnNpY1NpemUgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnByZWZlcnJlZEFzcGVjdFJh
dGlvIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckltYWdlOjpzaG91bGRJbnZhbGlkYXRlUHJlZmVy
cmVkV2lkdGhzIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckltYWdlOjplbWJlZGRlZFNWR1Jvb3Qg
Y29uc3QpOgooV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmVtYmVkZGVkQ29udGVudEJveCBjb25zdCk6
IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6CiogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcDoKKFdlYkNvcmU6OlJlbmRl
clJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljU2l6ZXNDb25zdHJhaW5lZEJ5VHJhbnNmZXJyZWRN
aW5NYXhTaXplcyBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJp
bnNpY1NpemUgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVj
dFJhdGlvIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjb21wdXRlQXNwZWN0UmF0
aW9BZGp1c3RlZEludHJpbnNpY0xvZ2ljYWxXaWR0aHMgY29uc3QpOgooV2ViQ29yZTo6aGFzSW50
cmluc2ljU2l6ZSk6CihXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZVJlcGxhY2VkTG9n
aWNhbFdpZHRoIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjb21wdXRlUmVwbGFj
ZWRMb2dpY2FsSGVpZ2h0IGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjb21wdXRl
SW50cmluc2ljS2V5d29yZExvZ2ljYWxXaWR0aHMgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyUmVw
bGFjZWQ6OmludHJpbnNpY1JhdGlvIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpj
b21wdXRlQXNwZWN0UmF0aW9JbmZvcm1hdGlvbkZvclJlbmRlckJveCBjb25zdCk6IERlbGV0ZWQu
CihXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY0FzcGVjdFJhdGlvIGNv
bnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQu
aDoKKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjplbWJlZGRlZFNWR1Jvb3QgY29uc3QpOgooV2Vi
Q29yZTo6UmVuZGVyUmVwbGFjZWQ6OmVtYmVkZGVkQ29udGVudEJveCBjb25zdCk6IERlbGV0ZWQu
CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CihXZWJDb3JlOjpS
ZW5kZXJXaWRnZXQ6OnNob3VsZEludmFsaWRhdGVQcmVmZXJyZWRXaWR0aHMgY29uc3QpOgooV2Vi
Q29yZTo6UmVuZGVyV2lkZ2V0OjplbWJlZGRlZFNWR1Jvb3QgY29uc3QpOgooV2ViQ29yZTo6UmVu
ZGVyV2lkZ2V0Ojpjb21wdXRlSW50cmluc2ljU2l6ZSBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJX
aWRnZXQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlcldpZGdl
dDo6ZW1iZWRkZWRDb250ZW50Qm94IGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyV2lkZ2V0Lmg6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSb290LmNwcDoKKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6Omhhc0ludHJpbnNpY0Fz
cGVjdFJhdGlvIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVJbnRyaW5z
aWNTaXplIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OnByZWZlcnJlZEFzcGVjdFJh
dGlvIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lS
ZW5kZXJTVkdSb290LmNwcDoKKFdlYkNvcmU6OkxlZ2FjeVJlbmRlclNWR1Jvb3Q6Omhhc0ludHJp
bnNpY0FzcGVjdFJhdGlvIGNvbnN0KToKKFdlYkNvcmU6OkxlZ2FjeVJlbmRlclNWR1Jvb3Q6OmNv
bXB1dGVJbnRyaW5zaWNTaXplIGNvbnN0KToKKFdlYkNvcmU6OkxlZ2FjeVJlbmRlclNWR1Jvb3Q6
OnByZWZlcnJlZEFzcGVjdFJhdGlvIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuY3BwOgooV2ViQ29yZTo6U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKToKKFdlYkNv
cmU6OlNWR0ltYWdlOjplbWJlZGRlZFNWR1Jvb3QgY29uc3QpOgooV2ViQ29yZTo6U1ZHSW1hZ2U6
OmVtYmVkZGVkQ29udGVudEJveCBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmg6Ci0tLQogU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1l
Vmlldy5jcHAgICAgICAgIHwgIDI4ICsrLS0tCiBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJh
bWVWaWV3LmggICAgICAgICAgfCAgIDMgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwICAgICAgICB8ICAyMCArKy0tCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmggICAgICAgICAgfCAgIDQgKy0KIC4uLi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
bGV4aWJsZUJveC5jcHAgICB8ICAgNiArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcCAgICAgIHwgIDM4ICsrKysrKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5oICAgICAgICB8ICAgMiArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlcGxhY2VkLmNwcCAgIHwgMTAwICsrKystLS0tLS0tLS0tLS0tLQogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmggICAgIHwgIDEyICstLQogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAgICAgIHwgIDQ4ICsrKysrKysrLQogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oICAgICAgIHwgICA0ICstCiAuLi4vV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwICAgfCAgMTMgKystCiAuLi4vc3Zn
L2xlZ2FjeS9MZWdhY3lSZW5kZXJTVkdSb290LmNwcCAgICAgICAgfCAgMTMgKystCiBTb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwICAgICAgfCAgIDggKy0KIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oICAgICAgICB8ICAgNCArLQogMTUgZmlsZXMg
Y2hhbmdlZCwgMTU4IGluc2VydGlvbnMoKyksIDE0NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvTG9jYWxGcmFtZVZpZXcuY3BwCmluZGV4IGRlZGU2YjUwNDVhNi4uYzdhZjI0OGYwOTIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3LmNwcApAQCAtMTIxMywyNSArMTIx
MywxOCBAQCB2b2lkIExvY2FsRnJhbWVWaWV3Ojpmb3JjZUxheW91dFBhcmVudFZpZXdJZk5lZWRl
ZCgpCiAgICAgaWYgKCFvd25lclJlbmRlcmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBDaGVj
a2VkUHRyIGNvbnRlbnRCb3ggPSBlbWJlZGRlZENvbnRlbnRCb3goKTsKLSAgICBpZiAoIWNvbnRl
bnRCb3gpCisgICAgQ2hlY2tlZFB0ciBzdmdSb290ID0gZW1iZWRkZWRTVkdSb290KCk7CisgICAg
aWYgKCFzdmdSb290KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoYXV0byogc3ZnUm9vdCA9
IGR5bmFtaWNEb3duY2FzdDxMZWdhY3lSZW5kZXJTVkdSb290Pihjb250ZW50Qm94LmdldCgpKSkg
ewotICAgICAgICBpZiAoc3ZnUm9vdC0+ZXZlckhhZExheW91dCgpICYmICFzdmdSb290LT5uZWVk
c0xheW91dCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdXRvKiBz
dmdSb290ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclNWR1Jvb3Q+KGNvbnRlbnRCb3guZ2V0KCkp
KSB7Ci0gICAgICAgIGlmIChzdmdSb290LT5ldmVySGFkTGF5b3V0KCkgJiYgIXN2Z1Jvb3QtPm5l
ZWRzTGF5b3V0KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChzdmdSb290
LT5ldmVySGFkTGF5b3V0KCkgJiYgIXN2Z1Jvb3QtPm5lZWRzTGF5b3V0KCkpCisgICAgICAgIHJl
dHVybjsKIAogICAgIExPRyhMYXlvdXQsICJMb2NhbEZyYW1lVmlldyAlcCBmb3JjZUxheW91dFBh
cmVudFZpZXdJZk5lZWRlZCBzY2hlZHVsaW5nIGxheW91dCBvbiBwYXJlbnQgTG9jYWxGcmFtZVZp
ZXcgJXAiLCB0aGlzLCAmb3duZXJSZW5kZXJlci0+dmlldygpLmZyYW1lVmlldygpKTsKIAogICAg
IC8vIElmIHRoZSBlbWJlZGRlZCBTVkcgZG9jdW1lbnQgYXBwZWFycyB0aGUgZmlyc3QgdGltZSwg
dGhlIG93bmVyUmVuZGVyZXIgaGFzIGFscmVhZHkgZmluaXNoZWQKICAgICAvLyBsYXlvdXQgd2l0
aG91dCBrbm93aW5nIGFib3V0IHRoZSBleGlzdGVuY2Ugb2YgdGhlIGVtYmVkZGVkIFNWRyBkb2N1
bWVudCwgYmVjYXVzZSBSZW5kZXJSZXBsYWNlZAotICAgIC8vIGVtYmVkZGVkQ29udGVudEJveCgp
IHJldHVybnMgbnVsbHB0ciwgYXMgbG9uZyBhcyB0aGUgZW1iZWRkZWQgZG9jdW1lbnQgaXNuJ3Qg
bG9hZGVkIHlldC4gQmVmb3JlCisgICAgLy8gZW1iZWRkZWRTVkdSb290KCkgcmV0dXJucyBudWxs
cHRyLCBhcyBsb25nIGFzIHRoZSBlbWJlZGRlZCBkb2N1bWVudCBpc24ndCBsb2FkZWQgeWV0LiBC
ZWZvcmUKICAgICAvLyBib3RoZXJpbmcgdG8gbGF5IG91dCB0aGUgU1ZHIGRvY3VtZW50LCBtYXJr
IHRoZSBvd25lclJlbmRlcmVyIG5lZWRpbmcgbGF5b3V0IGFuZCBhc2sgaXRzCiAgICAgLy8gTG9j
YWxGcmFtZVZpZXcgZm9yIGEgbGF5b3V0LiBBZnRlciB0aGF0IHRoZSBSZW5kZXJFbWJlZGRlZE9i
amVjdCAob3duZXJSZW5kZXJlcikgY2FycmllcyB0aGUKICAgICAvLyBjb3JyZWN0IHNpemUsIHdo
aWNoIExlZ2FjeVJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aC9IZWln
aHQgcmVseSBvbiwgd2hlbiBsYXlpbmcKQEAgLTE1MjAsMjIgKzE1MTMsMTkgQEAgYm9vbCBMb2Nh
bEZyYW1lVmlldzo6c2hvdWxkRGVmZXJTY3JvbGxVcGRhdGVBZnRlckNvbnRlbnRTaXplQ2hhbmdl
KCkKICAgICByZXR1cm4gKGxheW91dENvbnRleHQoKS5sYXlvdXRQaGFzZSgpIDwgTG9jYWxGcmFt
ZVZpZXdMYXlvdXRDb250ZXh0OjpMYXlvdXRQaGFzZTo6SW5Qb3N0TGF5b3V0KSAmJiAobGF5b3V0
Q29udGV4dCgpLmxheW91dFBoYXNlKCkgIT0gTG9jYWxGcmFtZVZpZXdMYXlvdXRDb250ZXh0OjpM
YXlvdXRQaGFzZTo6T3V0c2lkZUxheW91dCk7CiB9CiAKLVJlbmRlckJveCogTG9jYWxGcmFtZVZp
ZXc6OmVtYmVkZGVkQ29udGVudEJveCgpIGNvbnN0CitSZW5kZXJSZXBsYWNlZCogTG9jYWxGcmFt
ZVZpZXc6OmVtYmVkZGVkU1ZHUm9vdCgpIGNvbnN0CiB7CiAgICAgQ2hlY2tlZFB0ciByZW5kZXJW
aWV3ID0gdGhpcy0+cmVuZGVyVmlldygpOwogICAgIGlmICghcmVuZGVyVmlldykKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZW5kZXJPYmplY3QqIGZpcnN0Q2hpbGQgPSByZW5kZXJW
aWV3LT5maXJzdENoaWxkKCk7CisgICAgYXV0byogZmlyc3RDaGlsZCA9IHJlbmRlclZpZXctPmZp
cnN0Q2hpbGQoKTsKIAotICAgIC8vIEN1cmVudGx5IG9ubHkgZW1iZWRkZWQgU1ZHIGRvY3VtZW50
cyBwYXJ0aWNpcGF0ZSBpbiB0aGUgc2l6ZS1uZWdvdGlhdGlvbiBsb2dpYy4KKyAgICAvLyBDdXJy
ZW50bHkgb25seSBlbWJlZGRlZCBTVkcgZG9jdW1lbnRzIHBhcnRpY2lwYXRlIGluIHRoZSBzaXpl
LW5lZ290aWF0aW9uIGxvZ2ljLgogICAgIGlmIChhdXRvKiBzdmdSb290ID0gZHluYW1pY0Rvd25j
YXN0PExlZ2FjeVJlbmRlclNWR1Jvb3Q+KGZpcnN0Q2hpbGQpKQogICAgICAgICByZXR1cm4gc3Zn
Um9vdDsKIAotICAgIGlmIChhdXRvKiBzdmdSb290ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclNW
R1Jvb3Q+KGZpcnN0Q2hpbGQpKQotICAgICAgICByZXR1cm4gc3ZnUm9vdDsKLQotICAgIHJldHVy
biBudWxscHRyOworICAgIHJldHVybiBkeW5hbWljRG93bmNhc3Q8UmVuZGVyU1ZHUm9vdD4oZmly
c3RDaGlsZCk7CiB9CiAKIHZvaWQgTG9jYWxGcmFtZVZpZXc6OmFkZEVtYmVkZGVkT2JqZWN0VG9V
cGRhdGUoUmVuZGVyRW1iZWRkZWRPYmplY3QmIGVtYmVkZGVkT2JqZWN0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9Mb2NhbEZyYW1lVmlldy5oCmluZGV4IDFiMWM3MGJjYzI0OS4uMDU5OWJhMTZiMzYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5oCkBAIC02NSw2ICs2NSw3IEBAIGNsYXNzIFJl
bmRlckVtYmVkZGVkT2JqZWN0OwogY2xhc3MgUmVuZGVyTGF5ZXI7CiBjbGFzcyBSZW5kZXJMYXll
ck1vZGVsT2JqZWN0OwogY2xhc3MgUmVuZGVyT2JqZWN0OworY2xhc3MgUmVuZGVyUmVwbGFjZWQ7
CiBjbGFzcyBSZW5kZXJTY3JvbGxiYXJQYXJ0OwogY2xhc3MgUmVuZGVyU3R5bGU7CiBjbGFzcyBS
ZW5kZXJWaWV3OwpAQCAtNTc4LDcgKzU3OSw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgTk9ERUxF
VEUgc2hvdWxkU3VzcGVuZFNjcm9sbEFuaW1hdGlvbnMoKSBjb25zdCBmaW5hbDsKIAotICAgIFJl
bmRlckJveCogZW1iZWRkZWRDb250ZW50Qm94KCkgY29uc3Q7CisgICAgUmVuZGVyUmVwbGFjZWQq
IGVtYmVkZGVkU1ZHUm9vdCgpIGNvbnN0OwogICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0VHJhY2tzUmVwYWludHMoYm9vbCk7CiAgICAgYm9vbCBpc1RyYWNraW5nUmVwYWludHMoKSBj
b25zdCB7IHJldHVybiBtX2lzVHJhY2tpbmdSZXBhaW50czsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcAppbmRleCAzZDQyNDZlYzUzYjYuLmJlNTNkMTc1Y2NjYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTcxMSw3ICs3MTEsNyBAQCB2b2lk
IFJlbmRlckJveDo6Y29uc3RyYWluTG9naWNhbE1pbk1heFNpemVzQnlBc3BlY3RSYXRpbyhMYXlv
dXRVbml0JiBjb21wdXRlZE1pbgogICAgIC8vIGEgc2l6ZSBvZiB0aGUgaW5pdGlhbCBjb250YWlu
aW5nIGJsb2NrIGFuZCB0aGUg4oCcc3RyZXRjaC1maXTigJ0gc2l6aW5nIG9mIG5vbi1yZXBsYWNl
ZCBibG9ja3MgaWYgdGhleSBoYXZlIGRlZmluaXRlIHZhbHVlcy4KICAgICAvLyBTZWUgaHR0cHM6
Ly93d3cudzMub3JnL1RSL2Nzcy1zaXppbmctMy8jZGVmaW5pdGUKICAgICBjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGVUb1VzZSA9IHN0eWxlKCk7Ci0gICAgQVNTRVJUKHN0eWxlVG9Vc2UuYXNwZWN0
UmF0aW8oKS5oYXNSYXRpbygpIHx8IGlzUmVuZGVyUmVwbGFjZWRXaXRoSW50cmluc2ljUmF0aW8o
KSk7CisgICAgQVNTRVJUKHN0eWxlVG9Vc2UuYXNwZWN0UmF0aW8oKS5oYXNSYXRpbygpIHx8IGlz
UmVwbGFjZWRXaXRoUHJlZmVycmVkQXNwZWN0UmF0aW8oKSk7CiAgICAgYXV0byBsb2dpY2FsU2l6
ZSA9IGRpbWVuc2lvbiA9PSBDb25zdHJhaW5EaW1lbnNpb246OldpZHRoID8gc3R5bGVUb1VzZS5s
b2dpY2FsV2lkdGgoKSA6IHN0eWxlVG9Vc2UubG9naWNhbEhlaWdodCgpOwogICAgIC8vIGh0dHBz
Oi8vd3d3LnczLm9yZy9UUi9jc3Mtc2l6aW5nLTQvI2FzcGVjdC1yYXRpby1taW5pbXVtCiAgICAg
aWYgKG1pbmltdW1TaXplVHlwZSA9PSBNaW5pbXVtU2l6ZUlzQXV0b21hdGljQ29udGVudEJhc2Vk
OjpZZXMpIHsKQEAgLTI5NTQsMTEgKzI5NTQsMTEgQEAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5d29y
ZD4gdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVJbnRyaW5zaWNLZXl3b3JkTG9naWNhbFdpZHRocygK
ICAgICAgICAgICAgICAgICBtaW5Mb2dpY2FsV2lkdGggPSBzdGQ6Om1heChtaW5Mb2dpY2FsV2lk
dGgsIG1pbkNoaWxkcmVuTG9naWNhbFdpZHRoKTsKICAgICAgICAgICAgICAgICBtYXhMb2dpY2Fs
V2lkdGggPSBzdGQ6Om1heChtYXhMb2dpY2FsV2lkdGgsIG1heENoaWxkcmVuTG9naWNhbFdpZHRo
KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChpc1JlbmRlclJlcGxhY2VkV2l0
aEludHJpbnNpY1JhdGlvKCkgJiYgc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCkuaXNTcGVjaWZpZWQo
KSkgeworICAgICAgICB9IGVsc2UgaWYgKGlzUmVwbGFjZWRXaXRoUHJlZmVycmVkQXNwZWN0UmF0
aW8oKSAmJiBzdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc1NwZWNpZmllZCgpKSB7CiAgICAgICAg
ICAgICAvLyBGb3IgcmVwbGFjZWQgZWxlbWVudHMgd2l0aCBhbiBpbnRyaW5zaWMgYXNwZWN0IHJh
dGlvIChlLmcuIDxpbWc+KSBhbmQgYQogICAgICAgICAgICAgLy8gc3BlY2lmaWVkIGJsb2NrIHNp
emUsIGNvbXB1dGUgdGhlIHRyYW5zZmVycmVkIG1pbi9tYXgtY29udGVudCBpbmxpbmUgc2l6ZQog
ICAgICAgICAgICAgLy8gdGhyb3VnaCB0aGUgaW50cmluc2ljIHJhdGlvIHJhdGhlciB0aGFuIHVz
aW5nIHRoZSByYXcgbmF0dXJhbCB3aWR0aC4KLSAgICAgICAgICAgIGF1dG8gaW50cmluc2ljUmF0
aW8gPSBkb3duY2FzdDxSZW5kZXJSZXBsYWNlZD4oKnRoaXMpLmNvbXB1dGVJbnRyaW5zaWNBc3Bl
Y3RSYXRpbygpOworICAgICAgICAgICAgYXV0byBpbnRyaW5zaWNSYXRpbyA9IGRvd25jYXN0PFJl
bmRlclJlcGxhY2VkPigqdGhpcykucHJlZmVycmVkQXNwZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0Rv
dWJsZSgpOwogICAgICAgICAgICAgYXV0byBjb21wdXRlZFZhbHVlcyA9IGNvbXB1dGVMb2dpY2Fs
SGVpZ2h0KGxvZ2ljYWxIZWlnaHQoKSwgbG9naWNhbFRvcCgpKTsKICAgICAgICAgICAgIGF1dG8g
Y29udGVudEJsb2NrU2l6ZSA9IHN0ZDo6bWF4KDBfbHUsIGNvbXB1dGVkVmFsdWVzLmV4dGVudCAt
IGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCkpOwogICAgICAgICAgICAgbWluTG9naWNh
bFdpZHRoID0gbWF4TG9naWNhbFdpZHRoID0gTGF5b3V0VW5pdChjb250ZW50QmxvY2tTaXplICog
aW50cmluc2ljUmF0aW8pOwpAQCAtNTI3NCwxNyArNTI3NCwxNyBAQCBMYXlvdXRVbml0IFJlbmRl
ckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aEZyb21Bc3BlY3RSYXRpbygpIGNvbnN0CiAgICAgcmV0
dXJuIGNvbnN0cmFpbkxvZ2ljYWxXaWR0aEJ5TWluTWF4KGxvZ2ljYWxXaWR0aCwgY29udGFpbmVy
V2lkdGhJbklubGluZURpcmVjdGlvbiwgKmNvbnRhaW5pbmdCbG9jaygpLCBBbGxvd0ludHJpbnNp
Yzo6Tm8pOwogfQogCi1ib29sIFJlbmRlckJveDo6aXNSZW5kZXJSZXBsYWNlZFdpdGhJbnRyaW5z
aWNSYXRpbygpIGNvbnN0Citib29sIFJlbmRlckJveDo6aXNSZXBsYWNlZFdpdGhQcmVmZXJyZWRB
c3BlY3RSYXRpbygpIGNvbnN0CiB7CiAgICAgaWYgKGF1dG8qIHJlcGxhY2VkID0gZHluYW1pY0Rv
d25jYXN0PFJlbmRlclJlcGxhY2VkPih0aGlzKSkKLSAgICAgICAgcmV0dXJuIHJlcGxhY2VkLT5j
b21wdXRlSW50cmluc2ljQXNwZWN0UmF0aW8oKTsKKyAgICAgICAgcmV0dXJuIHJlcGxhY2VkLT5w
cmVmZXJyZWRBc3BlY3RSYXRpbygpLmFzcGVjdFJhdGlvRG91YmxlKCk7CiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1zdGQ6Om9wdGlvbmFsPGRvdWJsZT4gUmVuZGVyQm94OjpyZXNvbHZlQXNwZWN0
UmF0aW8oKSBjb25zdAorc3RkOjpvcHRpb25hbDxkb3VibGU+IFJlbmRlckJveDo6YXNwZWN0UmF0
aW9WYWx1ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKGF1dG8qIHJlcGxhY2VkRWxlbWVudCA9IGR5bmFt
aWNEb3duY2FzdDxSZW5kZXJSZXBsYWNlZD4odGhpcykpIAotICAgICAgICByZXR1cm4gcmVwbGFj
ZWRFbGVtZW50LT5jb21wdXRlSW50cmluc2ljQXNwZWN0UmF0aW8oKTsKKyAgICBpZiAoQ2hlY2tl
ZFB0ciByZXBsYWNlZEVsZW1lbnQgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+KHRo
aXMpKQorICAgICAgICByZXR1cm4gcmVwbGFjZWRFbGVtZW50LT5wcmVmZXJyZWRBc3BlY3RSYXRp
bygpLmFzcGVjdFJhdGlvRG91YmxlKCk7CiAgICAgaWYgKHN0eWxlKCkuYXNwZWN0UmF0aW8oKS5o
YXNSYXRpbygpKQogICAgICAgICByZXR1cm4gc3R5bGUoKS5sb2dpY2FsQXNwZWN0UmF0aW8oKTsK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTUyOTUsNyArNTI5NSw3IEBAIHN0ZDo6cGFp
cjxMYXlvdXRVbml0LCBMYXlvdXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVNaW5NYXhMb2dpY2Fs
V2lkdGhGcm9tQXNwZWN0CiB7CiAgICAgTGF5b3V0VW5pdCB0cmFuc2ZlcnJlZE1pblNpemUgPSBM
YXlvdXRVbml0KCk7CiAgICAgTGF5b3V0VW5pdCB0cmFuc2ZlcnJlZE1heFNpemUgPSBMYXlvdXRV
bml0OjptYXgoKTsKLSAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYXNwZWN0UmF0aW8gPSByZXNv
bHZlQXNwZWN0UmF0aW8oKTsKKyAgICBhdXRvIGFzcGVjdFJhdGlvID0gYXNwZWN0UmF0aW9WYWx1
ZSgpOwogICAgIGlmICghYXNwZWN0UmF0aW8pCiAgICAgICAgIHJldHVybiB7IHRyYW5zZmVycmVk
TWluU2l6ZSwgdHJhbnNmZXJyZWRNYXhTaXplIH07CiAKQEAgLTUzMTYsNyArNTMxNiw3IEBAIHN0
ZDo6cGFpcjxMYXlvdXRVbml0LCBMYXlvdXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVNaW5NYXhM
b2dpY2FsSGVpZ2h0RnJvbUFzcGVjCiB7CiAgICAgTGF5b3V0VW5pdCB0cmFuc2ZlcnJlZE1pblNp
emUgPSBMYXlvdXRVbml0KCk7CiAgICAgTGF5b3V0VW5pdCB0cmFuc2ZlcnJlZE1heFNpemUgPSBM
YXlvdXRVbml0OjptYXgoKTsKLSAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYXNwZWN0UmF0aW8g
PSByZXNvbHZlQXNwZWN0UmF0aW8oKTsKKyAgICBhdXRvIGFzcGVjdFJhdGlvID0gYXNwZWN0UmF0
aW9WYWx1ZSgpOwogICAgIGlmICghYXNwZWN0UmF0aW8pCiAgICAgICAgIHJldHVybiB7IHRyYW5z
ZmVycmVkTWluU2l6ZSwgdHJhbnNmZXJyZWRNYXhTaXplIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guaAppbmRleCAxODc4YzdkZWZiZWUuLjU0MmM5YWJkYmMyMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtNjg1LDkgKzY4NSw5IEBAIHByb3RlY3RlZDoK
IAogICAgIHZvaWQgaW5jcmVtZW50VmlzdWFsbHlOb25FbXB0eVBpeGVsQ291bnRJZk5lZWRlZChj
b25zdCBJbnRTaXplJik7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcmVzb2x2ZUFzcGVj
dFJhdGlvKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFzcGVjdFJhdGlvVmFs
dWUoKSBjb25zdDsKICAgICBib29sIE5PREVMRVRFIHNob3VsZElnbm9yZUFzcGVjdFJhdGlvKCkg
Y29uc3Q7Ci0gICAgYm9vbCBpc1JlbmRlclJlcGxhY2VkV2l0aEludHJpbnNpY1JhdGlvKCkgY29u
c3Q7CisgICAgYm9vbCBpc1JlcGxhY2VkV2l0aFByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3Q7
CiAgICAgYm9vbCBzaG91bGRDb21wdXRlTG9naWNhbFdpZHRoRnJvbUFzcGVjdFJhdGlvKCkgY29u
c3Q7CiAgICAgYm9vbCBpc1Jlc29sdmVhYmxlU3RyZXRjaFNpemUoY29uc3QgYXV0byYgc2l6ZSkg
Y29uc3QgeyByZXR1cm4gc2l6ZS5pc1N0cmV0Y2goKSAmJiBjb250YWluaW5nQmxvY2tIYXNEZWZp
bml0ZUJsb2NrU2l6ZSgpOyB9CiAgICAgYm9vbCBpc1VucmVzb2x2ZWFibGVTdHJldGNoU2l6ZShj
b25zdCBhdXRvJiBzaXplKSBjb25zdCB7IHJldHVybiBzaXplLmlzU3RyZXRjaCgpICYmICFjb250
YWluaW5nQmxvY2tIYXNEZWZpbml0ZUJsb2NrU2l6ZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAppbmRleCA3NGIzZTBiOGQyY2EuLjFmZWQ5
NmQzODY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhp
YmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVC
b3guY3BwCkBAIC04NzksNyArODc5LDcgQEAgc3RhdGljIGJvb2wgaXNTVkdSb290V2l0aEludHJp
bnNpY0FzcGVjdFJhdGlvKGNvbnN0IFJlbmRlckJveCYgZmxleEl0ZW0pCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAvLyBJdCdzIGNvbW1vbiBmb3Igc29tZSByZXBsYWNlZCBlbGVtZW50cywg
c3VjaCBhcyBTVkdzLCB0byBoYXZlIGludHJpbnNpYyBhc3BlY3QgcmF0aW9zIGJ1dCBubyBpbnRy
aW5zaWMgc2l6ZXMuCiAgICAgLy8gVGhhdCdzIHdoeSBpdCBpc24ndCBlbm91Z2gganVzdCB0byBj
aGVjayBmb3IgaW50cmluc2ljIHNpemVzIGluIHRob3NlIGNhc2VzLgotICAgIHJldHVybiBkb3du
Y2FzdDxSZW5kZXJSZXBsYWNlZD4oZmxleEl0ZW0pLmNvbXB1dGVJbnRyaW5zaWNBc3BlY3RSYXRp
bygpID4gMDsKKyAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+KGZsZXhJdGVtKS5w
cmVmZXJyZWRBc3BlY3RSYXRpbygpLmFzcGVjdFJhdGlvRG91YmxlKCkgPiAwOwogfTsKIAogc3Rh
dGljIGJvb2wgZmxleEl0ZW1IYXNBc3BlY3RSYXRpbyhjb25zdCBSZW5kZXJCb3gmIGZsZXhJdGVt
KQpAQCAtMTI2MiwxMSArMTI2MiwxMSBAQCBkb3VibGUgUmVuZGVyRmxleGlibGVCb3g6OnByZWZl
cnJlZEFzcGVjdFJhdGlvRm9yRmxleEl0ZW0oY29uc3QgUmVuZGVyQm94JiBmbGV4SQogICAgIGF1
dG8gZmxleEl0ZW1Bc3BlY3RSYXRpbyA9IFsmXSB7CiAgICAgICAgIGF1dG8gZmxleEl0ZW1JbnRy
aW5zaWNTaXplID0gTGF5b3V0U2l6ZSB7IGZsZXhJdGVtLmludHJpbnNpY0xvZ2ljYWxXaWR0aCgp
LCBmbGV4SXRlbS5pbnRyaW5zaWNMb2dpY2FsSGVpZ2h0KCkgfTsKICAgICAgICAgaWYgKGZsZXhJ
dGVtLmlzUmVuZGVyT3JMZWdhY3lSZW5kZXJTVkdSb290KCkpCi0gICAgICAgICAgICByZXR1cm4g
ZG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+KGZsZXhJdGVtKS5jb21wdXRlSW50cmluc2ljQXNwZWN0
UmF0aW8oKTsKKyAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJSZXBsYWNlZD4oZmxl
eEl0ZW0pLnByZWZlcnJlZEFzcGVjdFJhdGlvKCkuYXNwZWN0UmF0aW9Eb3VibGUoKTsKICAgICAg
ICAgaWYgKGZsZXhJdGVtLnN0eWxlKCkuYXNwZWN0UmF0aW8oKS5pc1JhdGlvKCkgfHwgKGZsZXhJ
dGVtLnN0eWxlKCkuYXNwZWN0UmF0aW8oKS5pc0F1dG9BbmRSYXRpbygpICYmIGZsZXhJdGVtSW50
cmluc2ljU2l6ZS5pc0VtcHR5KCkpKQogICAgICAgICAgICAgcmV0dXJuIGZsZXhJdGVtLnN0eWxl
KCkubG9naWNhbEFzcGVjdFJhdGlvKCk7CiAgICAgICAgIGlmIChhdXRvKiByZXBsYWNlZEVsZW1l
bnQgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+KGZsZXhJdGVtKSkKLSAgICAgICAg
ICAgIHJldHVybiByZXBsYWNlZEVsZW1lbnQtPmNvbXB1dGVJbnRyaW5zaWNBc3BlY3RSYXRpbygp
OworICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VkRWxlbWVudC0+cHJlZmVycmVkQXNwZWN0UmF0
aW8oKS5hc3BlY3RSYXRpb0RvdWJsZSgpOwogCiAgICAgICAgIEFTU0VSVChmbGV4SXRlbS5pbnRy
aW5zaWNMb2dpY2FsSGVpZ2h0KCkpOwogICAgICAgICByZXR1cm4gZmxleEl0ZW0uaW50cmluc2lj
TG9naWNhbFdpZHRoKCkudG9Eb3VibGUoKSAvIGZsZXhJdGVtLmludHJpbnNpY0xvZ2ljYWxIZWln
aHQoKS50b0RvdWJsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAK
aW5kZXggOWIyMDk5NWJiM2ZiLi5iOTI5MjA1ZTgxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlLmNwcApAQCAtOTQwLDcgKzk0MCwyMCBAQCB2b2lkIFJlbmRlckltYWdl
OjpsYXlvdXQoKQogCiBGbG9hdFNpemUgUmVuZGVySW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNTaXpl
KCkgY29uc3QKIHsKLSAgICBBU1NFUlQoIXNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCkpOwor
ICAgIC8vIFNpemUgY29udGFpbm1lbnQgc3VwcHJlc3NlcyBpbnRyaW5zaWMgZGltZW5zaW9ucyBm
cm9tIGNvbnRlbnQuCisgICAgLy8gVGhlIGJhc2UgY2xhc3MgcmV0dXJucyB2YWx1ZXMgZnJvbSB0
aGUgY2FjaGUgLyBjb250YWluLWludHJpbnNpYy1zaXplIHdpdGhvdXQgcXVlcnlpbmcgaW1hZ2Ug
ZGF0YS4KKyAgICBpZiAoc2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKSkKKyAgICAgICAgcmV0
dXJuIFJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljU2l6ZSgpOworCisgICAgaWYgKENo
ZWNrZWRQdHIgc3ZnUm9vdCA9IGVtYmVkZGVkU1ZHUm9vdCgpKSB7CisgICAgICAgIGF1dG8gaW50
cmluc2ljU2l6ZSA9IHN2Z1Jvb3QtPmNvbXB1dGVJbnRyaW5zaWNTaXplKCk7CisgICAgICAgIGlu
dHJpbnNpY1NpemUuc2NhbGUoc3R5bGUoKS51c2VkWm9vbSgpKTsKKyAgICAgICAgaW50cmluc2lj
U2l6ZS5zY2FsZShpbWFnZURldmljZVBpeGVsUmF0aW8oKSk7CisgICAgICAgIGlmICghaXNIb3Jp
em9udGFsV3JpdGluZ01vZGUoKSkKKyAgICAgICAgICAgIGludHJpbnNpY1NpemUgPSBpbnRyaW5z
aWNTaXplLnRyYW5zcG9zZWRTaXplKCk7CisgICAgICAgIHJldHVybiBpbnRyaW5zaWNTaXplOwor
ICAgIH0KKwogICAgIGF1dG8gaW50cmluc2ljU2l6ZSA9IFJlbmRlclJlcGxhY2VkOjpjb21wdXRl
SW50cmluc2ljU2l6ZSgpOwogCiAgICAgLy8gT3VyIGludHJpbnNpY1NpemUgaXMgZW1wdHkgaWYg
d2UncmUgcmVuZGVyaW5nIGdlbmVyYXRlZCBpbWFnZXMgd2l0aCByZWxhdGl2ZSB3aWR0aC9oZWln
aHQuIEZpZ3VyZSBvdXQgdGhlIHJpZ2h0IGludHJpbnNpYyBzaXplIHRvIHVzZS4KQEAgLTk1Nyw3
ICs5NzAsMTEgQEAgRmxvYXRTaXplIFJlbmRlckltYWdlOjpjb21wdXRlSW50cmluc2ljU2l6ZSgp
IGNvbnN0CiAKIEZsb2F0U2l6ZSBSZW5kZXJJbWFnZTo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKSBj
b25zdAogewotICAgIEFTU0VSVCghc2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKSk7CisgICAg
Ly8gU2l6ZSBjb250YWlubWVudCBzdXBwcmVzc2VzIGludHJpbnNpYyBkaW1lbnNpb25zIGZyb20g
Y29udGVudCwgYnV0IHRoZQorICAgIC8vIGFzcGVjdCByYXRpbyBmcm9tIHRoZSBDU1MgYXNwZWN0
LXJhdGlvIHByb3BlcnR5IGlzIHN0aWxsIGF2YWlsYWJsZSB2aWEgdGhlCisgICAgLy8gYmFzZSBj
bGFzcyAod2hpY2ggZG9lc24ndCBxdWVyeSBpbWFnZSBkYXRhKS4KKyAgICBpZiAoc2hvdWxkQXBw
bHlTaXplQ29udGFpbm1lbnQoKSkKKyAgICAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpwcmVm
ZXJyZWRBc3BlY3RSYXRpbygpOwogCiAgICAgLy8gRG9uJ3QgY29tcHV0ZSBhbiBpbnRyaW5zaWMg
cmF0aW8gdG8gcHJlc2VydmUgaGlzdG9yaWNhbCBXZWJLaXQgYmVoYXZpb3IgaWYgd2UncmUgcGFp
bnRpbmcgYWx0IHRleHQgYW5kL29yIGEgYnJva2VuIGltYWdlLgogICAgIGlmIChzaG91bGREaXNw
bGF5QnJva2VuSW1hZ2VJY29uKCkpIHsKQEAgLTk2Niw2ICs5ODMsMTcgQEAgRmxvYXRTaXplIFJl
bmRlckltYWdlOjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0CiAgICAgICAgIHJldHVybiB7
IDEuMCwgMS4wIH07CiAgICAgfQogCisgICAgaWYgKENoZWNrZWRQdHIgc3ZnUm9vdCA9IGVtYmVk
ZGVkU1ZHUm9vdCgpKSB7CisgICAgICAgIGF1dG8gcmF0aW8gPSBzdmdSb290LT5wcmVmZXJyZWRB
c3BlY3RSYXRpbygpOworICAgICAgICBpZiAoIWlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgJiYg
IXJhdGlvLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJhdGlvID0gcmF0aW8udHJhbnNwb3NlZFNp
emUoKTsKKworICAgICAgICBpZiAoc3R5bGUoKS5hc3BlY3RSYXRpbygpLmlzUmF0aW8oKSB8fCAo
c3R5bGUoKS5hc3BlY3RSYXRpbygpLmlzQXV0b0FuZFJhdGlvKCkgJiYgcmF0aW8uaXNFbXB0eSgp
KSkKKyAgICAgICAgICAgIHJhdGlvID0gRmxvYXRTaXplOjpuYXJyb3dQcmVjaXNpb24oc3R5bGUo
KS5hc3BlY3RSYXRpb0xvZ2ljYWxXaWR0aCgpLnZhbHVlLCBzdHlsZSgpLmFzcGVjdFJhdGlvTG9n
aWNhbEhlaWdodCgpLnZhbHVlKTsKKworICAgICAgICByZXR1cm4gcmF0aW87CisgICAgfQorCiAg
ICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpOwogfQogCkBA
IC05NzMsMTQgKzEwMDEsMTQgQEAgYm9vbCBSZW5kZXJJbWFnZTo6c2hvdWxkSW52YWxpZGF0ZVBy
ZWZlcnJlZFdpZHRocygpIGNvbnN0CiB7CiAgICAgaWYgKFJlbmRlclJlcGxhY2VkOjpzaG91bGRJ
bnZhbGlkYXRlUHJlZmVycmVkV2lkdGhzKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHJl
dHVybiBlbWJlZGRlZENvbnRlbnRCb3goKTsKKyAgICByZXR1cm4gZW1iZWRkZWRTVkdSb290KCk7
CiB9CiAKLVJlbmRlckJveCogUmVuZGVySW1hZ2U6OmVtYmVkZGVkQ29udGVudEJveCgpIGNvbnN0
CitSZW5kZXJSZXBsYWNlZCogUmVuZGVySW1hZ2U6OmVtYmVkZGVkU1ZHUm9vdCgpIGNvbnN0CiB7
CiAgICAgaWYgKFJlZlB0ciBjYWNoZWRJbWFnZSA9IHRoaXMtPmNhY2hlZEltYWdlKCkpIHsKICAg
ICAgICAgaWYgKFJlZlB0ciBpbWFnZSA9IGR5bmFtaWNEb3duY2FzdDxTVkdJbWFnZT4oY2FjaGVk
SW1hZ2UtPmltYWdlKCkpKQotICAgICAgICAgICAgcmV0dXJuIGltYWdlLT5lbWJlZGRlZENvbnRl
bnRCb3goKTsKKyAgICAgICAgICAgIHJldHVybiBpbWFnZS0+ZW1iZWRkZWRTVkdSb290KCk7CiAg
ICAgfQogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuaAppbmRleCAyY2U3NTQ5NTJhZmUuLjVlYWY5MmE2MTc2ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlLmgKQEAgLTg5LDcgKzg5LDcgQEAgcHJvdGVjdGVkOgogICAg
IHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKICAgICBib29sIHNob3VsZEludmFs
aWRhdGVQcmVmZXJyZWRXaWR0aHMoKSBjb25zdCBmaW5hbDsKLSAgICBSZW5kZXJCb3gqIGVtYmVk
ZGVkQ29udGVudEJveCgpIGNvbnN0IGZpbmFsOworICAgIFJlbmRlclJlcGxhY2VkKiBlbWJlZGRl
ZFNWR1Jvb3QoKSBjb25zdCBmaW5hbDsKICAgICBGbG9hdFNpemUgY29tcHV0ZUludHJpbnNpY1Np
emUoKSBjb25zdCBmaW5hbDsKICAgICBGbG9hdFNpemUgcHJlZmVycmVkQXNwZWN0UmF0aW8oKSBj
b25zdCBmaW5hbDsKICAgICBib29sIGZvcmVncm91bmRJc0tub3duVG9CZU9wYXF1ZUluUmVjdChj
b25zdCBMYXlvdXRSZWN0JiBsb2NhbFJlY3QsIHVuc2lnbmVkIG1heERlcHRoVG9UZXN0KSBjb25z
dCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
ZXBsYWNlZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3Bw
CmluZGV4IGYwM2ExM2Y3ZWIxMC4uNjUxMDZhOWYwMTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKQEAgLTQ3MCw2NCArNDcwLDI1IEBAIHN0YXRpYyBi
b29sIGlzVmlkZW9XaXRoRGVmYXVsdE9iamVjdFNpemUoY29uc3QgUmVuZGVyUmVwbGFjZWQqIG1h
eWJlVmlkZW8pCiAgICAgcmV0dXJuIGZhbHNlOwogfSAKIAotdm9pZCBSZW5kZXJSZXBsYWNlZDo6
Y29tcHV0ZUFzcGVjdFJhdGlvSW5mb3JtYXRpb25Gb3JSZW5kZXJCb3goUmVuZGVyQm94KiBjb250
ZW50UmVuZGVyZXIsIEZsb2F0U2l6ZSYgY29uc3RyYWluZWRTaXplLCBGbG9hdFNpemUmIHByZWZl
cnJlZEFzcGVjdFJhdGlvKSBjb25zdAordm9pZCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJp
bnNpY1NpemVzQ29uc3RyYWluZWRCeVRyYW5zZmVycmVkTWluTWF4U2l6ZXMoRmxvYXRTaXplJiBp
bnRyaW5zaWNTaXplLCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKSBjb25zdAogewotICAgIEZs
b2F0U2l6ZSBpbnRyaW5zaWNTaXplOwogICAgIGlmIChzaG91bGRBcHBseVNpemVPcklubGluZVNp
emVDb250YWlubWVudCgpKSB7CiAgICAgICAgIGludHJpbnNpY1NpemUgPSBSZW5kZXJSZXBsYWNl
ZDo6Y29tcHV0ZUludHJpbnNpY1NpemUoKTsKLSAgICAgICAgcHJlZmVycmVkQXNwZWN0UmF0aW8g
PSBSZW5kZXJSZXBsYWNlZDo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKTsKLSAgICB9IGVsc2UgaWYg
KGNvbnRlbnRSZW5kZXJlcikgewotICAgICAgICBib29sIGNvbnRlbnRJc1JlbmRlclJlcGxhY2Vk
ID0gZmFsc2U7Ci0gICAgICAgIGlmIChhdXRvKiByZW5kZXJSZXBsYWNlZCA9IGR5bmFtaWNEb3du
Y2FzdDxSZW5kZXJSZXBsYWNlZD4oY29udGVudFJlbmRlcmVyKSkgewotICAgICAgICAgICAgaW50
cmluc2ljU2l6ZSA9IHJlbmRlclJlcGxhY2VkLT5jb21wdXRlSW50cmluc2ljU2l6ZSgpOwotICAg
ICAgICAgICAgcHJlZmVycmVkQXNwZWN0UmF0aW8gPSByZW5kZXJSZXBsYWNlZC0+cHJlZmVycmVk
QXNwZWN0UmF0aW8oKTsKLSAgICAgICAgICAgIGNvbnRlbnRJc1JlbmRlclJlcGxhY2VkID0gdHJ1
ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoc3R5bGUoKS5hc3BlY3RSYXRpbygpLmlzUmF0aW8o
KSB8fCAoc3R5bGUoKS5hc3BlY3RSYXRpbygpLmlzQXV0b0FuZFJhdGlvKCkgJiYgcHJlZmVycmVk
QXNwZWN0UmF0aW8uaXNFbXB0eSgpKSkKLSAgICAgICAgICAgIHByZWZlcnJlZEFzcGVjdFJhdGlv
ID0gRmxvYXRTaXplOjpuYXJyb3dQcmVjaXNpb24oc3R5bGUoKS5hc3BlY3RSYXRpbygpLndpZHRo
KCkudmFsdWUsIHN0eWxlKCkuYXNwZWN0UmF0aW8oKS5oZWlnaHQoKS52YWx1ZSk7Ci0KLSAgICAg
ICAgLy8gSGFuZGxlIHpvb20gJiB2ZXJ0aWNhbCB3cml0aW5nIG1vZGVzIGhlcmUsIGFzIHRoZSBl
bWJlZGRlZCBkb2N1bWVudCBkb2Vzbid0IGtub3cgYWJvdXQgdGhlbS4KLSAgICAgICAgaW50cmlu
c2ljU2l6ZS5zY2FsZShzdHlsZSgpLnVzZWRab29tKCkpOwotCi0gICAgICAgIGlmIChhdXRvKiBp
bWFnZSA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJJbWFnZT4oKnRoaXMpKQotICAgICAgICAgICAg
aW50cmluc2ljU2l6ZS5zY2FsZShpbWFnZS0+aW1hZ2VEZXZpY2VQaXhlbFJhdGlvKCkpOwotCi0g
ICAgICAgIC8vIFVwZGF0ZSBvdXIgaW50cmluc2ljIHNpemUgdG8gbWF0Y2ggd2hhdCB0aGUgY29u
dGVudCByZW5kZXJlciBoYXMgY29tcHV0ZWQsIHNvIHRoYXQgd2hlbiB3ZQotICAgICAgICAvLyBj
b25zdHJhaW4gdGhlIHNpemUgYmVsb3csIHRoZSBjb3JyZWN0IGludHJpbnNpYyBzaXplIHdpbGwg
YmUgb2J0YWluZWQgZm9yIGNvbXBhcmlzb24gYWdhaW5zdAotICAgICAgICAvLyBtaW4gYW5kIG1h
eCB3aWR0aHMuCi0gICAgICAgIGlmIChjb250ZW50SXNSZW5kZXJSZXBsYWNlZCAmJiBpc1JlbmRl
cldpZGdldCgpKSB7Ci0gICAgICAgICAgICAvLyBGb3IgUmVuZGVyV2lkZ2V0IGNvbnRlbnQgKGUu
Zy4gPG9iamVjdD4gZW1iZWRkaW5nIGFuIFNWRyBkb2N1bWVudCksIGFsd2F5cyB1cGRhdGUKLSAg
ICAgICAgICAgIC8vIG1faW50cmluc2ljU2l6ZSB0byByZWZsZWN0IGN1cnJlbnQgaW50cmluc2lj
IGRpbWVuc2lvbnMsIGFwcGx5aW5nIENTUyBkZWZhdWx0IGZhbGxiYWNrCi0gICAgICAgICAgICAv
LyB2YWx1ZXMgKDMwMHgxNTApIGZvciBkaW1lbnNpb25zIHdpdGggbm8gaW50cmluc2ljIHZhbHVl
IChlLmcuIHBlcmNlbnRhZ2Utc2l6ZWQgb3IKLSAgICAgICAgICAgIC8vIHJlbW92ZWQgYXR0cmli
dXRlcykuIFRoaXMgcHJldmVudHMgc3RhbGUgY2FjaGVkIHNpemVzIHdoZW4gYXR0cmlidXRlcyBs
aWtlIHdpZHRoL2hlaWdodAotICAgICAgICAgICAgLy8gYXJlIHJlbW92ZWQuIE5vdGU6IHRoaXMg
ZG9lcyBub3QgYXBwbHkgdG8gUmVuZGVySW1hZ2UgKDxpbWcgc3JjPSJzdmciPiksIHdoaWNoIG1h
bmFnZXMKLSAgICAgICAgICAgIC8vIGl0cyBvd24gaW50cmluc2ljIHNpemUgdmlhIHNldEludHJp
bnNpY1NpemUoKSBkdXJpbmcgaW1hZ2UgbG9hZC4KLSAgICAgICAgICAgIGF1dG8gc2l6ZVRvQ2Fj
aGUgPSBpbnRyaW5zaWNTaXplOworICAgICAgICBpbnRyaW5zaWNSYXRpbyA9IFJlbmRlclJlcGxh
Y2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpOworICAgIH0gZWxzZSB7CisgICAgICAgIGludHJp
bnNpY1NpemUgPSBjb21wdXRlSW50cmluc2ljU2l6ZSgpOworICAgICAgICBpbnRyaW5zaWNSYXRp
byA9IHByZWZlcnJlZEFzcGVjdFJhdGlvKCk7CisKKyAgICAgICAgYXV0byBzaXplVG9DYWNoZSA9
IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBpbnRyaW5zaWNTaXplIDogaW50cmluc2ljU2l6
ZS50cmFuc3Bvc2VkU2l6ZSgpOworICAgICAgICBpZiAoZW1iZWRkZWRTVkdSb290KCkgJiYgaXNS
ZW5kZXJXaWRnZXQoKSkgewogICAgICAgICAgICAgaWYgKCFzaXplVG9DYWNoZS53aWR0aCgpKQog
ICAgICAgICAgICAgICAgIHNpemVUb0NhY2hlLnNldFdpZHRoKGNEZWZhdWx0V2lkdGgpOwogICAg
ICAgICAgICAgaWYgKCFzaXplVG9DYWNoZS5oZWlnaHQoKSkKICAgICAgICAgICAgICAgICBzaXpl
VG9DYWNoZS5zZXRIZWlnaHQoY0RlZmF1bHRIZWlnaHQpOwogICAgICAgICAgICAgbV9pbnRyaW5z
aWNTaXplID0gTGF5b3V0U2l6ZShzaXplVG9DYWNoZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIXBy
ZWZlcnJlZEFzcGVjdFJhdGlvLmlzRW1wdHkoKSAmJiAhaW50cmluc2ljU2l6ZS5pc1plcm8oKSkK
LSAgICAgICAgICAgIG1faW50cmluc2ljU2l6ZSA9IExheW91dFNpemUoaW50cmluc2ljU2l6ZSk7
Ci0KLSAgICAgICAgaWYgKCFpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKSB7Ci0gICAgICAgICAg
ICBpZiAoIXByZWZlcnJlZEFzcGVjdFJhdGlvLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBw
cmVmZXJyZWRBc3BlY3RSYXRpbyA9IHByZWZlcnJlZEFzcGVjdFJhdGlvLnRyYW5zcG9zZWRTaXpl
KCk7Ci0gICAgICAgICAgICBpbnRyaW5zaWNTaXplID0gaW50cmluc2ljU2l6ZS50cmFuc3Bvc2Vk
U2l6ZSgpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaW50cmluc2ljU2l6ZSA9
IGNvbXB1dGVJbnRyaW5zaWNTaXplKCk7Ci0gICAgICAgIHByZWZlcnJlZEFzcGVjdFJhdGlvID0g
dGhpcy0+cHJlZmVycmVkQXNwZWN0UmF0aW8oKTsKLSAgICAgICAgaWYgKCFwcmVmZXJyZWRBc3Bl
Y3RSYXRpby5pc0VtcHR5KCkgJiYgIWludHJpbnNpY1NpemUuaXNaZXJvKCkpCi0gICAgICAgICAg
ICBtX2ludHJpbnNpY1NpemUgPSBMYXlvdXRTaXplKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkg
PyBpbnRyaW5zaWNTaXplIDogaW50cmluc2ljU2l6ZS50cmFuc3Bvc2VkU2l6ZSgpKTsKKyAgICAg
ICAgfSBlbHNlIGlmICghaW50cmluc2ljUmF0aW8uaXNFbXB0eSgpICYmICFpbnRyaW5zaWNTaXpl
LmlzWmVybygpKQorICAgICAgICAgICAgbV9pbnRyaW5zaWNTaXplID0gTGF5b3V0U2l6ZShzaXpl
VG9DYWNoZSk7CiAgICAgfQotICAgIGNvbnN0cmFpbmVkU2l6ZSA9IGludHJpbnNpY1NpemU7Ci19
Ci0KLXZvaWQgUmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVJbnRyaW5zaWNTaXplc0NvbnN0cmFpbmVk
QnlUcmFuc2ZlcnJlZE1pbk1heFNpemVzKFJlbmRlckJveCogY29udGVudFJlbmRlcmVyLCBGbG9h
dFNpemUmIGludHJpbnNpY1NpemUsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pIGNvbnN0Ci17
Ci0gICAgY29tcHV0ZUFzcGVjdFJhdGlvSW5mb3JtYXRpb25Gb3JSZW5kZXJCb3goY29udGVudFJl
bmRlcmVyLCBpbnRyaW5zaWNTaXplLCBpbnRyaW5zaWNSYXRpbyk7CiAKICAgICAvLyBOb3cgY29u
c3RyYWluIHRoZSBpbnRyaW5zaWMgc2l6ZSBhbG9uZyBlYWNoIGF4aXMgYWNjb3JkaW5nIHRvIG1p
bmltdW0gYW5kIG1heGltdW0gd2lkdGgvaGVpZ2h0cyBhbG9uZyB0aGUKICAgICAvLyBvcHBvc2l0
ZSBheGlzLiBTbyBmb3IgZXhhbXBsZSBhIG1heGltdW0gd2lkdGggdGhhdCBzaHJpbmtzIG91ciB3
aWR0aCB3aWxsIHJlc3VsdCBpbiB0aGUgaGVpZ2h0IHdlIGNvbXB1dGUgaGVyZQpAQCAtNTk3LDI1
ICs1NTgsMTMgQEAgTGF5b3V0UmVjdCBSZW5kZXJSZXBsYWNlZDo6cmVwbGFjZWRDb250ZW50UmVj
dChjb25zdCBMYXlvdXRTaXplJiBpbnRyaW5zaWNTaXplKQogICAgIHJldHVybiBmaW5hbFJlY3Q7
CiB9CiAKLWRvdWJsZSBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY0FzcGVjdFJhdGlv
KCkgY29uc3QKLXsKLSAgICBGbG9hdFNpemUgaW50cmluc2ljUmF0aW87Ci0gICAgRmxvYXRTaXpl
IGludHJpbnNpY1NpemU7Ci0gICAgY29tcHV0ZUFzcGVjdFJhdGlvSW5mb3JtYXRpb25Gb3JSZW5k
ZXJCb3goZW1iZWRkZWRDb250ZW50Qm94KCksIGludHJpbnNpY1NpemUsIGludHJpbnNpY1JhdGlv
KTsKLSAgICByZXR1cm4gaW50cmluc2ljUmF0aW8uYXNwZWN0UmF0aW9Eb3VibGUoKTsKLX0KLQog
RmxvYXRTaXplIFJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljU2l6ZSgpIGNvbnN0CiB7
Ci0gICAgLy8gSWYgdGhlcmUncyBhbiBlbWJlZGRlZENvbnRlbnRCb3goKSBvZiBhIHJlbW90ZSwg
cmVmZXJlbmNlZCBkb2N1bWVudCBhdmFpbGFibGUsIHRoaXMgY29kZS1wYXRoIHNob3VsZCBuZXZl
ciBiZSB1c2VkLgotICAgIEFTU0VSVCghZW1iZWRkZWRDb250ZW50Qm94KCkgfHwgc2hvdWxkQXBw
bHlTaXplT3JJbmxpbmVTaXplQ29udGFpbm1lbnQoKSk7CiAgICAgcmV0dXJuIHsgaW50cmluc2lj
TG9naWNhbFdpZHRoKCksIGludHJpbnNpY0xvZ2ljYWxIZWlnaHQoKSB9OwogfQogCiBGbG9hdFNp
emUgUmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3QKIHsKLSAgICAv
LyBJZiB0aGVyZSdzIGFuIGVtYmVkZGVkQ29udGVudEJveCgpIG9mIGEgcmVtb3RlLCByZWZlcmVu
Y2VkIGRvY3VtZW50IGF2YWlsYWJsZSwgdGhpcyBjb2RlLXBhdGggc2hvdWxkIG5ldmVyIGJlIHVz
ZWQuCi0gICAgQVNTRVJUKCFlbWJlZGRlZENvbnRlbnRCb3goKSB8fCBzaG91bGRBcHBseVNpemVP
cklubGluZVNpemVDb250YWlubWVudCgpKTsKICAgICBhdXRvIGludHJpbnNpY1NpemUgPSBGbG9h
dFNpemUoaW50cmluc2ljTG9naWNhbFdpZHRoKCksIGludHJpbnNpY0xvZ2ljYWxIZWlnaHQoKSk7
CiAgICAgRmxvYXRTaXplIHByZWZlcnJlZEFzcGVjdFJhdGlvOwogCkBAIC02NzUsNyArNjI0LDcg
QEAgdm9pZCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUFzcGVjdFJhdGlvQWRqdXN0ZWRJbnRyaW5z
aWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byYg
c3R5bGUgPSB0aGlzLT5zdHlsZSgpOwotICAgIGF1dG8gY29tcHV0ZWRBc3BlY3RSYXRpbyA9IGNv
bXB1dGVJbnRyaW5zaWNBc3BlY3RSYXRpbygpOworICAgIGF1dG8gY29tcHV0ZWRBc3BlY3RSYXRp
byA9IHByZWZlcnJlZEFzcGVjdFJhdGlvKCkuYXNwZWN0UmF0aW9Eb3VibGUoKTsKICAgICBhdXRv
IGNvbXB1dGVkSW50cmluc2ljTG9naWNhbFdpZHRoID0gbWluTG9naWNhbFdpZHRoOwogCiAgICAg
aWYgKGF1dG8gZml4ZWRMb2dpY2FsSGVpZ2h0ID0gc3R5bGUubG9naWNhbEhlaWdodCgpLnRyeUZp
eGVkKCkpCkBAIC02OTgsMTMgKzY0Nyw5IEBAIHN0YXRpYyBpbmxpbmUgTGF5b3V0VW5pdCBOT0RF
TEVURSByZXNvbHZlV2lkdGhGb3JSYXRpbyhMYXlvdXRVbml0IGJvcmRlckFuZFBhZGRpCiAgICAg
cmV0dXJuIExheW91dFVuaXQobG9naWNhbEhlaWdodCAqIGFzcGVjdFJhdGlvKTsKIH0KIAotc3Rh
dGljIGlubGluZSBib29sIE5PREVMRVRFIGhhc0ludHJpbnNpY1NpemUoUmVuZGVyQm94KmNvbnRl
bnRSZW5kZXJlciwgYm9vbCBoYXNJbnRyaW5zaWNXaWR0aCwgYm9vbCBoYXNJbnRyaW5zaWNIZWln
aHQgKQorc3RhdGljIGlubGluZSBib29sIE5PREVMRVRFIGhhc0ludHJpbnNpY1NpemUoY29uc3Qg
UmVuZGVyUmVwbGFjZWQqIHN2Z1Jvb3QsIGJvb2wgaGFzSW50cmluc2ljV2lkdGgsIGJvb2wgaGFz
SW50cmluc2ljSGVpZ2h0KQogewotICAgIGlmIChoYXNJbnRyaW5zaWNXaWR0aCAmJiBoYXNJbnRy
aW5zaWNIZWlnaHQpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChoYXNJbnRyaW5zaWNX
aWR0aCB8fCBoYXNJbnRyaW5zaWNIZWlnaHQpCi0gICAgICAgIHJldHVybiBjb250ZW50UmVuZGVy
ZXIgJiYgY29udGVudFJlbmRlcmVyLT5pc1JlbmRlck9yTGVnYWN5UmVuZGVyU1ZHUm9vdCgpOwot
ICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gKGhhc0ludHJpbnNpY1dpZHRoICYmIGhhc0lu
dHJpbnNpY0hlaWdodCkgfHwgKChoYXNJbnRyaW5zaWNXaWR0aCB8fCBoYXNJbnRyaW5zaWNIZWln
aHQpICYmIHN2Z1Jvb3QpOwogfQogCiBMYXlvdXRVbml0IFJlbmRlclJlcGxhY2VkOjpjb21wdXRl
UmVwbGFjZWRMb2dpY2FsV2lkdGgoU2hvdWxkQ29tcHV0ZVByZWZlcnJlZCBzaG91bGRDb21wdXRl
UHJlZmVycmVkKSBjb25zdApAQCAtNzE1LDEyICs2NjAsMTAgQEAgTGF5b3V0VW5pdCBSZW5kZXJS
ZXBsYWNlZDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoKFNob3VsZENvbXB1dGVQcmVmZXJy
ZWQgc2gKICAgICBpZiAoc3R5bGUubG9naWNhbFdpZHRoKCkuaXNJbnRyaW5zaWNPclN0cmV0Y2go
KSkKICAgICAgICAgcmV0dXJuIGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFJlc3BlY3RpbmdN
aW5NYXhXaWR0aChjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhVc2luZyhzdHlsZS5sb2dpY2Fs
V2lkdGgoKSksIHNob3VsZENvbXB1dGVQcmVmZXJyZWQpOwogCi0gICAgUmVuZGVyQm94KiBjb250
ZW50UmVuZGVyZXIgPSBlbWJlZGRlZENvbnRlbnRCb3goKTsKLQogICAgIC8vIDEwLjMuMiBJbmxp
bmUsIHJlcGxhY2VkIGVsZW1lbnRzOiBodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS92aXN1ZGV0
Lmh0bWwjaW5saW5lLXJlcGxhY2VkLXdpZHRoCiAgICAgRmxvYXRTaXplIGludHJpbnNpY1JhdGlv
OwogICAgIEZsb2F0U2l6ZSBjb25zdHJhaW5lZFNpemU7Ci0gICAgY29tcHV0ZUludHJpbnNpY1Np
emVzQ29uc3RyYWluZWRCeVRyYW5zZmVycmVkTWluTWF4U2l6ZXMoY29udGVudFJlbmRlcmVyLCBj
b25zdHJhaW5lZFNpemUsIGludHJpbnNpY1JhdGlvKTsKKyAgICBjb21wdXRlSW50cmluc2ljU2l6
ZXNDb25zdHJhaW5lZEJ5VHJhbnNmZXJyZWRNaW5NYXhTaXplcyhjb25zdHJhaW5lZFNpemUsIGlu
dHJpbnNpY1JhdGlvKTsKIAogICAgIGlmIChzdHlsZS5sb2dpY2FsV2lkdGgoKS5pc0F1dG8oKSkg
ewogICAgICAgICBib29sIGNvbXB1dGVkSGVpZ2h0SXNBdXRvID0gc3R5bGUubG9naWNhbEhlaWdo
dCgpLmlzQXV0bygpOwpAQCAtNzMwLDcgKzY3Myw3IEBAIExheW91dFVuaXQgUmVuZGVyUmVwbGFj
ZWQ6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aChTaG91bGRDb21wdXRlUHJlZmVycmVkIHNo
CiAgICAgICAgIC8vIEZvciBmbGV4IG9yIGdyaWQgaXRlbXMgd2hlcmUgdGhlIGxvZ2ljYWwgaGVp
Z2h0IGhhcyBiZWVuIG92ZXJyaWRlbiB0aGVuIHdlIHNob3VsZCB1c2UgdGhhdCBzaXplIHRvIGNv
bXB1dGUgdGhlIHJlcGxhY2VkIHdpZHRoIGFzIGxvbmcgYXMgdGhlIGZsZXggb3IKICAgICAgICAg
Ly8gZ3JpZCBpdGVtIGhhcyBhbiBpbnRyaW5zaWMgc2l6ZS4gSXQgaXMgcG9zc2libGUgKGluZGVl
ZCwgY29tbW9uKSBmb3IgYW4gU1ZHIGdyYXBoaWMgdG8gaGF2ZSBhbiBpbnRyaW5zaWMgYXNwZWN0
IHJhdGlvIGJ1dCBub3QgdG8gaGF2ZSBhbiBpbnRyaW5zaWMKICAgICAgICAgLy8gd2lkdGggb3Ig
aGVpZ2h0LiBUaGVyZSBhcmUgYWxzbyBlbGVtZW50cyB3aXRoIGludHJpbnNpYyBzaXplcyBidXQg
d2l0aG91dCBpbnRyaW5zaWMgcmF0aW8gKGxpa2UgYW4gaWZyYW1lKS4KLSAgICAgICAgaWYgKGF1
dG8gb3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQgPSAoIWludHJpbnNpY1JhdGlvLmlzRW1wdHkoKSAm
JiAoaXNGbGV4SXRlbSgpIHx8IGlzR3JpZEl0ZW0oKSkgJiYgaGFzSW50cmluc2ljU2l6ZShjb250
ZW50UmVuZGVyZXIsIGhhc0ludHJpbnNpY1dpZHRoLCBoYXNJbnRyaW5zaWNIZWlnaHQpID8gdGhp
cy0+b3ZlcnJpZGluZ0JvcmRlckJveExvZ2ljYWxIZWlnaHQoKSA6IHN0ZDo6bnVsbG9wdCkpCisg
ICAgICAgIGlmIChhdXRvIG92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0ID0gKCFpbnRyaW5zaWNSYXRp
by5pc0VtcHR5KCkgJiYgKGlzRmxleEl0ZW0oKSB8fCBpc0dyaWRJdGVtKCkpICYmIGhhc0ludHJp
bnNpY1NpemUoZW1iZWRkZWRTVkdSb290KCksIGhhc0ludHJpbnNpY1dpZHRoLCBoYXNJbnRyaW5z
aWNIZWlnaHQpID8gdGhpcy0+b3ZlcnJpZGluZ0JvcmRlckJveExvZ2ljYWxIZWlnaHQoKSA6IHN0
ZDo6bnVsbG9wdCkpCiAgICAgICAgICAgICByZXR1cm4gY29tcHV0ZVJlcGxhY2VkTG9naWNhbFdp
ZHRoUmVzcGVjdGluZ01pbk1heFdpZHRoKGNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0KCpvdmVycmlk
aW5nTG9naWNhbEhlaWdodCkgKiBpbnRyaW5zaWNSYXRpby5hc3BlY3RSYXRpb0RvdWJsZSgpLCBz
aG91bGRDb21wdXRlUHJlZmVycmVkKTsKIAogICAgICAgICAvLyBJZiAnaGVpZ2h0JyBhbmQgJ3dp
ZHRoJyBib3RoIGhhdmUgY29tcHV0ZWQgdmFsdWVzIG9mICdhdXRvJyBhbmQgdGhlIGVsZW1lbnQg
YWxzbyBoYXMgYW4gaW50cmluc2ljIHdpZHRoLCB0aGVuIHRoYXQgaW50cmluc2ljIHdpZHRoIGlz
IHRoZSB1c2VkIHZhbHVlIG9mICd3aWR0aCcuCkBAIC04MTMsMTkgKzc1NiwxNyBAQCBMYXlvdXRV
bml0IFJlbmRlclJlcGxhY2VkOjpjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0KHN0ZDo6b3B0
aW9uYWw8TGF5b3V0VW5pdAogICAgIGlmIChoYXNSZXBsYWNlZExvZ2ljYWxIZWlnaHQoKSkKICAg
ICAgICAgcmV0dXJuIGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRSZXNwZWN0aW5nTWluTWF4
SGVpZ2h0KGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRVc2luZyhzdHlsZSgpLmxvZ2ljYWxI
ZWlnaHQoKSkpOwogCi0gICAgUmVuZGVyQm94KiBjb250ZW50UmVuZGVyZXIgPSBlbWJlZGRlZENv
bnRlbnRCb3goKTsKLQogICAgIC8vIDEwLjYuMiBJbmxpbmUsIHJlcGxhY2VkIGVsZW1lbnRzOiBo
dHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS92aXN1ZGV0Lmh0bWwjaW5saW5lLXJlcGxhY2VkLWhl
aWdodAogICAgIEZsb2F0U2l6ZSBpbnRyaW5zaWNSYXRpbzsKICAgICBGbG9hdFNpemUgY29uc3Ry
YWluZWRTaXplOwotICAgIGNvbXB1dGVJbnRyaW5zaWNTaXplc0NvbnN0cmFpbmVkQnlUcmFuc2Zl
cnJlZE1pbk1heFNpemVzKGNvbnRlbnRSZW5kZXJlciwgY29uc3RyYWluZWRTaXplLCBpbnRyaW5z
aWNSYXRpbyk7CisgICAgY29tcHV0ZUludHJpbnNpY1NpemVzQ29uc3RyYWluZWRCeVRyYW5zZmVy
cmVkTWluTWF4U2l6ZXMoY29uc3RyYWluZWRTaXplLCBpbnRyaW5zaWNSYXRpbyk7CiAKICAgICBi
b29sIHdpZHRoSXNBdXRvID0gc3R5bGUoKS5sb2dpY2FsV2lkdGgoKS5pc0F1dG8oKTsKICAgICBi
b29sIGhhc0ludHJpbnNpY1dpZHRoID0gY29uc3RyYWluZWRTaXplLndpZHRoKCkgPiAwIHx8ICgh
Y29uc3RyYWluZWRTaXplLndpZHRoKCkgJiYgc2hvdWxkUmVzcGVjdFplcm9JbnRyaW5zaWNXaWR0
aCgpKSB8fCBzaG91bGRBcHBseVNpemVPcklubGluZVNpemVDb250YWlubWVudCgpOwogICAgIGJv
b2wgaGFzSW50cmluc2ljSGVpZ2h0ID0gY29uc3RyYWluZWRTaXplLmhlaWdodCgpID4gMCB8fCBz
aG91bGRBcHBseVNpemVDb250YWlubWVudCgpOwogCiAgICAgLy8gU2VlIGNvbXB1dGVSZXBsYWNl
ZExvZ2ljYWxIZWlnaHQoKSBmb3IgYSBzaW1pbGFyIGNoZWNrIGZvciBoZWlnaHRzLgotICAgIGlm
IChhdXRvIG92ZXJyaWRpbmdsb2dpY2FsV2lkdGggPSAoIWludHJpbnNpY1JhdGlvLmlzRW1wdHko
KSAmJiAoaXNGbGV4SXRlbSgpIHx8IGlzR3JpZEl0ZW0oKSkgJiYgaGFzSW50cmluc2ljU2l6ZShj
b250ZW50UmVuZGVyZXIsIGhhc0ludHJpbnNpY1dpZHRoLCBoYXNJbnRyaW5zaWNIZWlnaHQpID8g
b3ZlcnJpZGluZ0JvcmRlckJveExvZ2ljYWxXaWR0aCgpIDogc3RkOjpudWxsb3B0KSkKKyAgICBp
ZiAoYXV0byBvdmVycmlkaW5nbG9naWNhbFdpZHRoID0gKCFpbnRyaW5zaWNSYXRpby5pc0VtcHR5
KCkgJiYgKGlzRmxleEl0ZW0oKSB8fCBpc0dyaWRJdGVtKCkpICYmIGhhc0ludHJpbnNpY1NpemUo
ZW1iZWRkZWRTVkdSb290KCksIGhhc0ludHJpbnNpY1dpZHRoLCBoYXNJbnRyaW5zaWNIZWlnaHQp
ID8gb3ZlcnJpZGluZ0JvcmRlckJveExvZ2ljYWxXaWR0aCgpIDogc3RkOjpudWxsb3B0KSkKICAg
ICAgICAgcmV0dXJuIGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRSZXNwZWN0aW5nTWluTWF4
SGVpZ2h0KGNvbnRlbnRCb3hMb2dpY2FsV2lkdGgoKm92ZXJyaWRpbmdsb2dpY2FsV2lkdGgpICog
aW50cmluc2ljUmF0aW8udHJhbnNwb3NlZFNpemUoKS5hc3BlY3RSYXRpb0RvdWJsZSgpKTsKIAog
ICAgIC8vIElmICdoZWlnaHQnIGFuZCAnd2lkdGgnIGJvdGggaGF2ZSBjb21wdXRlZCB2YWx1ZXMg
b2YgJ2F1dG8nIGFuZCB0aGUgZWxlbWVudCBhbHNvIGhhcyBhbiBpbnRyaW5zaWMgaGVpZ2h0LCB0
aGVuIHRoYXQgaW50cmluc2ljIGhlaWdodCBpcyB0aGUgdXNlZCB2YWx1ZSBvZiAnaGVpZ2h0Jy4K
QEAgLTg2MCw3ICs4MDEsNyBAQCB2b2lkIFJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmluc2lj
S2V5d29yZExvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbAogewogICAgIGlmICho
YXNJbnRyaW5zaWNBc3BlY3RSYXRpbygpICYmICFzdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc0F1
dG8oKSkgewogICAgICAgICBpZiAoYXV0byBmaXhlZEhlaWdodCA9IHN0eWxlKCkubG9naWNhbEhl
aWdodCgpLnRyeUZpeGVkKCkpIHsKLSAgICAgICAgICAgIGF1dG8gaGVpZ2h0RGVyaXZlZFdpZHRo
ID0gTGF5b3V0VW5pdCB7IGZpeGVkSGVpZ2h0LT5yZXNvbHZlWm9vbShzdHlsZSgpLnVzZWRab29t
Rm9yTGVuZ3RoKCkpICogY29tcHV0ZUludHJpbnNpY0FzcGVjdFJhdGlvKCkgfTsKKyAgICAgICAg
ICAgIGF1dG8gaGVpZ2h0RGVyaXZlZFdpZHRoID0gTGF5b3V0VW5pdCB7IGZpeGVkSGVpZ2h0LT5y
ZXNvbHZlWm9vbShzdHlsZSgpLnVzZWRab29tRm9yTGVuZ3RoKCkpICogcHJlZmVycmVkQXNwZWN0
UmF0aW8oKS5hc3BlY3RSYXRpb0RvdWJsZSgpIH07CiAgICAgICAgICAgICBtaW5Mb2dpY2FsV2lk
dGggPSBoZWlnaHREZXJpdmVkV2lkdGg7CiAgICAgICAgICAgICBtYXhMb2dpY2FsV2lkdGggPSBo
ZWlnaHREZXJpdmVkV2lkdGg7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDczLDEwICsxMDE0
LDcgQEAgdm9pZCBSZW5kZXJSZXBsYWNlZDo6bGF5b3V0U2hhZG93Q29udGVudChjb25zdCBMYXlv
dXRTaXplJiBvbGRTaXplKQogCiBGbG9hdFNpemUgUmVuZGVyUmVwbGFjZWQ6OmludHJpbnNpY1Jh
dGlvKCkgY29uc3QKIHsKLSAgICBGbG9hdFNpemUgaW50cmluc2ljUmF0aW87Ci0gICAgRmxvYXRT
aXplIGNvbnN0cmFpbmVkU2l6ZTsKLSAgICBjb21wdXRlQXNwZWN0UmF0aW9JbmZvcm1hdGlvbkZv
clJlbmRlckJveChlbWJlZGRlZENvbnRlbnRCb3goKSwgY29uc3RyYWluZWRTaXplLCBpbnRyaW5z
aWNSYXRpbyk7Ci0gICAgcmV0dXJuIGludHJpbnNpY1JhdGlvOworICAgIHJldHVybiBwcmVmZXJy
ZWRBc3BlY3RSYXRpbygpOwogfQogCiB2b2lkIFJlbmRlclJlcGxhY2VkOjpjb21wdXRlUmVwbGFj
ZWRPdXRPZkZsb3dQb3NpdGlvbmVkTG9naWNhbFdpZHRoKExvZ2ljYWxFeHRlbnRDb21wdXRlZFZh
bHVlcyYgY29tcHV0ZWRWYWx1ZXMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZXBsYWNlZC5oCmluZGV4IGFiM2Y0NzEwYWE5MC4uYjQ3NGMzZDZjZDBhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaApAQCAtNDcsNyArNDcsNiBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpc0NvbnRlbnRMaWtlbHlWaXNpYmxlSW5WaWV3cG9ydCgpOwogICAgIGJv
b2wgc2hvdWxkSW52YWxpZGF0ZVByZWZlcnJlZFdpZHRocygpIGNvbnN0IG92ZXJyaWRlOwogCi0g
ICAgZG91YmxlIGNvbXB1dGVJbnRyaW5zaWNBc3BlY3RSYXRpbygpIGNvbnN0OwogCiAgICAgdmly
dHVhbCBib29sIHBhaW50c0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKQEAgLTYx
LDYgKzYwLDkgQEAgcHVibGljOgogICAgIGJvb2wgcmVwbGFjZWRNaW5Mb2dpY2FsSGVpZ2h0Q29t
cHV0ZXNBc05vbmUoKSBjb25zdDsKICAgICBib29sIHJlcGxhY2VkTWF4TG9naWNhbEhlaWdodENv
bXB1dGVzQXNOb25lKCkgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBjb21wdXRlSW50
cmluc2ljU2l6ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgRmxvYXRTaXplIHByZWZlcnJlZEFzcGVj
dFJhdGlvKCkgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICBSZW5kZXJSZXBsYWNlZChUeXBlLCBF
bGVtZW50JiwgUmVuZGVyU3R5bGUmJiwgT3B0aW9uU2V0PFJlcGxhY2VkRmxhZz4gPSB7IH0pOwog
ICAgIFJlbmRlclJlcGxhY2VkKFR5cGUsIEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBjb25zdCBM
YXlvdXRTaXplJiBpbnRyaW5zaWNTaXplLCBPcHRpb25TZXQ8UmVwbGFjZWRGbGFnPiA9IHsgfSk7
CkBAIC03Nyw5ICs3OSw2IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgc3R5bGVEaWRDaGFuZ2Uo
U3R5bGU6OkRpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7
CiAKLSAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBjb21wdXRlSW50cmluc2ljU2l6ZSgpIGNvbnN0Owot
ICAgIHZpcnR1YWwgRmxvYXRTaXplIHByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3Q7Ci0KICAg
ICB2b2lkIHNldEludHJpbnNpY1NpemUoY29uc3QgTGF5b3V0U2l6ZSYgaW50cmluc2ljU2l6ZSkg
eyBtX2ludHJpbnNpY1NpemUgPSBpbnRyaW5zaWNTaXplOyB9CiAgICAgdmlydHVhbCB2b2lkIGlu
dHJpbnNpY1NpemVDaGFuZ2VkKCk7CiAgICAgdmlydHVhbCBib29sIGhhc1JlbGF0aXZlSW50cmlu
c2ljTG9naWNhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTEwNiw3ICsxMDUs
NyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb21wdXRlQXNwZWN0UmF0aW9BZGp1c3RlZEludHJp
bnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0
JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0OwogCi0gICAgdmlydHVhbCBSZW5kZXJCb3gqIGVtYmVk
ZGVkQ29udGVudEJveCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFJlbmRlclJl
cGxhY2VkKiBlbWJlZGRlZFNWR1Jvb3QoKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgQVNDSUlM
aXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyUmVwbGFj
ZWQiX3M7IH0KIAogICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KQEAgLTEyMSw4ICsxMjAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgY2Fu
QmVTZWxlY3Rpb25MZWFmKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAg
TGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50ID0gdHJ1
ZSkgZmluYWw7Ci0gICAgdm9pZCBjb21wdXRlQXNwZWN0UmF0aW9JbmZvcm1hdGlvbkZvclJlbmRl
ckJveChSZW5kZXJCb3gqLCBGbG9hdFNpemUmIGNvbnN0cmFpbmVkU2l6ZSwgRmxvYXRTaXplJiBp
bnRyaW5zaWNSYXRpbykgY29uc3Q7Ci0gICAgdm9pZCBjb21wdXRlSW50cmluc2ljU2l6ZXNDb25z
dHJhaW5lZEJ5VHJhbnNmZXJyZWRNaW5NYXhTaXplcyhSZW5kZXJCb3gqIGNvbnRlbnRSZW5kZXJl
ciwgRmxvYXRTaXplJiBjb25zdHJhaW5lZFNpemUsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8p
IGNvbnN0OworICAgIHZvaWQgY29tcHV0ZUludHJpbnNpY1NpemVzQ29uc3RyYWluZWRCeVRyYW5z
ZmVycmVkTWluTWF4U2l6ZXMoRmxvYXRTaXplJiBjb25zdHJhaW5lZFNpemUsIEZsb2F0U2l6ZSYg
aW50cmluc2ljUmF0aW8pIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIHNob3VsZERyYXdTZWxl
Y3Rpb25UaW50KCkgY29uc3Q7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJX
aWRnZXQuY3BwCmluZGV4IDRkYTUwOGI2YTczYS4uZGY2NzQ3ZDNiZjhjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcApAQCAtNDg3LDE1ICs0ODcsNTcgQEAgYm9v
bCBSZW5kZXJXaWRnZXQ6OnNob3VsZEludmFsaWRhdGVQcmVmZXJyZWRXaWR0aHMoKSBjb25zdAog
ewogICAgIGlmIChSZW5kZXJSZXBsYWNlZDo6c2hvdWxkSW52YWxpZGF0ZVByZWZlcnJlZFdpZHRo
cygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gZW1iZWRkZWRDb250ZW50Qm94
KCk7CisgICAgcmV0dXJuIGVtYmVkZGVkU1ZHUm9vdCgpOwogfQogCi1SZW5kZXJCb3gqIFJlbmRl
cldpZGdldDo6ZW1iZWRkZWRDb250ZW50Qm94KCkgY29uc3QKK1JlbmRlclJlcGxhY2VkKiBSZW5k
ZXJXaWRnZXQ6OmVtYmVkZGVkU1ZHUm9vdCgpIGNvbnN0CiB7CiAgICAgaWYgKCFpczxSZW5kZXJF
bWJlZGRlZE9iamVjdD4odGhpcykpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIFJlZlB0
ciBmcmFtZVZpZXcgPSBkeW5hbWljRG93bmNhc3Q8TG9jYWxGcmFtZVZpZXc+KHdpZGdldCgpKTsK
LSAgICByZXR1cm4gZnJhbWVWaWV3ID8gZnJhbWVWaWV3LT5lbWJlZGRlZENvbnRlbnRCb3goKSA6
IG51bGxwdHI7CisgICAgcmV0dXJuIGZyYW1lVmlldyA/IGZyYW1lVmlldy0+ZW1iZWRkZWRTVkdS
b290KCkgOiBudWxscHRyOworfQorCitGbG9hdFNpemUgUmVuZGVyV2lkZ2V0Ojpjb21wdXRlSW50
cmluc2ljU2l6ZSgpIGNvbnN0Cit7CisgICAgLy8gU2l6ZSBjb250YWlubWVudCBzdXBwcmVzc2Vz
IGludHJpbnNpYyBkaW1lbnNpb25zIGZyb20gY29udGVudC4KKyAgICAvLyBUaGUgYmFzZSBjbGFz
cyByZXR1cm5zIHZhbHVlcyBmcm9tIHRoZSBjYWNoZSAvIGNvbnRhaW4taW50cmluc2ljLXNpemUg
d2l0aG91dCBxdWVyeWluZyBpbWFnZSBkYXRhLgorICAgIGlmIChzaG91bGRBcHBseVNpemVDb250
YWlubWVudCgpKQorICAgICAgICByZXR1cm4gUmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVJbnRyaW5z
aWNTaXplKCk7CisKKyAgICBDaGVja2VkUHRyIHN2Z1Jvb3QgPSBlbWJlZGRlZFNWR1Jvb3QoKTsK
KyAgICBpZiAoIXN2Z1Jvb3QpCisgICAgICAgIHJldHVybiBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0
ZUludHJpbnNpY1NpemUoKTsKKworICAgIGF1dG8gaW50cmluc2ljU2l6ZSA9IHN2Z1Jvb3QtPmNv
bXB1dGVJbnRyaW5zaWNTaXplKCk7CisgICAgaW50cmluc2ljU2l6ZS5zY2FsZShzdHlsZSgpLnVz
ZWRab29tKCkpOworCisgICAgaWYgKCFpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQorICAgICAg
ICBpbnRyaW5zaWNTaXplID0gaW50cmluc2ljU2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOworCisgICAg
cmV0dXJuIGludHJpbnNpY1NpemU7Cit9CisKK0Zsb2F0U2l6ZSBSZW5kZXJXaWRnZXQ6OnByZWZl
cnJlZEFzcGVjdFJhdGlvKCkgY29uc3QKK3sKKyAgICAvLyBTaXplIGNvbnRhaW5tZW50IHN1cHBy
ZXNzZXMgaW50cmluc2ljIGRpbWVuc2lvbnMgZnJvbSBjb250ZW50LCBidXQgdGhlCisgICAgLy8g
YXNwZWN0IHJhdGlvIGZyb20gdGhlIENTUyBhc3BlY3QtcmF0aW8gcHJvcGVydHkgaXMgc3RpbGwg
YXZhaWxhYmxlIHZpYSB0aGUKKyAgICAvLyBiYXNlIGNsYXNzICh3aGljaCBkb2Vzbid0IHF1ZXJ5
IGltYWdlIGRhdGEpLgorICAgIGlmIChzaG91bGRBcHBseVNpemVDb250YWlubWVudCgpKQorICAg
ICAgICByZXR1cm4gUmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvKCk7CisKKyAg
ICBDaGVja2VkUHRyIHN2Z1Jvb3QgPSBlbWJlZGRlZFNWR1Jvb3QoKTsKKyAgICBpZiAoIXN2Z1Jv
b3QpCisgICAgICAgIHJldHVybiBSZW5kZXJSZXBsYWNlZDo6cHJlZmVycmVkQXNwZWN0UmF0aW8o
KTsKKworICAgIGF1dG8gcmF0aW8gPSBzdmdSb290LT5wcmVmZXJyZWRBc3BlY3RSYXRpbygpOwor
ICAgIGlmICghaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSAmJiAhcmF0aW8uaXNFbXB0eSgpKQor
ICAgICAgICByYXRpbyA9IHJhdGlvLnRyYW5zcG9zZWRTaXplKCk7CisKKyAgICBpZiAoc3R5bGUo
KS5hc3BlY3RSYXRpbygpLmlzUmF0aW8oKSB8fCAoc3R5bGUoKS5hc3BlY3RSYXRpbygpLmlzQXV0
b0FuZFJhdGlvKCkgJiYgcmF0aW8uaXNFbXB0eSgpKSkKKyAgICAgICAgcmF0aW8gPSBGbG9hdFNp
emU6Om5hcnJvd1ByZWNpc2lvbihzdHlsZSgpLmFzcGVjdFJhdGlvTG9naWNhbFdpZHRoKCkudmFs
dWUsIHN0eWxlKCkuYXNwZWN0UmF0aW9Mb2dpY2FsSGVpZ2h0KCkudmFsdWUpOworCisgICAgcmV0
dXJuIHJhdGlvOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyV2lkZ2V0LmgKaW5kZXggZTAxNzgxNjIwMGRmLi45MmYyODEzOGNhYWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgKQEAgLTkxLDcgKzkxLDkgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKIAogICAgIGJvb2wg
c2hvdWxkSW52YWxpZGF0ZVByZWZlcnJlZFdpZHRocygpIGNvbnN0IGZpbmFsOwotICAgIFJlbmRl
ckJveCogZW1iZWRkZWRDb250ZW50Qm94KCkgY29uc3QgZmluYWw7CisgICAgUmVuZGVyUmVwbGFj
ZWQqIGVtYmVkZGVkU1ZHUm9vdCgpIGNvbnN0IGZpbmFsOworICAgIEZsb2F0U2l6ZSBjb21wdXRl
SW50cmluc2ljU2l6ZSgpIGNvbnN0IGZpbmFsOworICAgIEZsb2F0U2l6ZSBwcmVmZXJyZWRBc3Bl
Y3RSYXRpbygpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBzZXRTZWxlY3Rpb25TdGF0ZShIaWdo
bGlnaHRTdGF0ZSkgZmluYWw7CiAgICAgdm9pZCBzZXRPdmVybGFwVGVzdFJlc3VsdChib29sKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3Bw
CmluZGV4IGRlMjk0MzYyNDI5OC4uZWYzMzQwNGJlNjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKQEAgLTkxLDEyICs5MSwxNSBAQCBSZW5k
ZXJTVkdWaWV3cG9ydENvbnRhaW5lciogUmVuZGVyU1ZHUm9vdDo6dmlld3BvcnRDb250YWluZXIo
KSBjb25zdAogCiBib29sIFJlbmRlclNWR1Jvb3Q6Omhhc0ludHJpbnNpY0FzcGVjdFJhdGlvKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gY29tcHV0ZUludHJpbnNpY0FzcGVjdFJhdGlvKCk7CisgICAg
cmV0dXJuIHByZWZlcnJlZEFzcGVjdFJhdGlvKCkuYXNwZWN0UmF0aW9Eb3VibGUoKTsKIH0KIAog
RmxvYXRTaXplIFJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVJbnRyaW5zaWNTaXplKCkgY29uc3QKIHsK
LSAgICBBU1NFUlRfSU1QTElFUyh2aWV3KCkuZnJhbWVWaWV3KCkubGF5b3V0Q29udGV4dCgpLmlz
SW5SZW5kZXJUcmVlTGF5b3V0KCksICFzaG91bGRBcHBseVNpemVDb250YWlubWVudCgpKTsKKyAg
ICAvLyBTaXplIGNvbnRhaW5tZW50IHN1cHByZXNzZXMgaW50cmluc2ljIGRpbWVuc2lvbnMgZnJv
bSBjb250ZW50LgorICAgIC8vIFRoZSBiYXNlIGNsYXNzIHJldHVybnMgdmFsdWVzIGZyb20gdGhl
IGNhY2hlIC8gY29udGFpbi1pbnRyaW5zaWMtc2l6ZSB3aXRob3V0IHF1ZXJ5aW5nIGltYWdlIGRh
dGEuCisgICAgaWYgKHNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCkpCisgICAgICAgIHJldHVy
biBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY1NpemUoKTsKICAgICAvLyBodHRwczov
L3d3dy53My5vcmcvVFIvU1ZHL2Nvb3Jkcy5odG1sI0ludHJpbnNpY1NpemluZwogICAgIEZsb2F0
U2l6ZSBpbnRyaW5zaWNTaXplID0geyBzdmdTVkdFbGVtZW50KCkuaW50cmluc2ljV2lkdGgoKSwg
c3ZnU1ZHRWxlbWVudCgpLmludHJpbnNpY0hlaWdodCgpIH07CiAgICAgLy8gVHJhbnNwb3NlIGZv
ciB2ZXJ0aWNhbCB3cml0aW5nIG1vZGUKQEAgLTEwNyw3ICsxMTAsMTEgQEAgRmxvYXRTaXplIFJl
bmRlclNWR1Jvb3Q6OmNvbXB1dGVJbnRyaW5zaWNTaXplKCkgY29uc3QKIAogRmxvYXRTaXplIFJl
bmRlclNWR1Jvb3Q6OnByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3QKIHsKLSAgICBBU1NFUlQo
IXNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCkpOworICAgIC8vIFNpemUgY29udGFpbm1lbnQg
c3VwcHJlc3NlcyBpbnRyaW5zaWMgZGltZW5zaW9ucyBmcm9tIGNvbnRlbnQsIGJ1dCB0aGUKKyAg
ICAvLyBhc3BlY3QgcmF0aW8gZnJvbSB0aGUgQ1NTIGFzcGVjdC1yYXRpbyBwcm9wZXJ0eSBpcyBz
dGlsbCBhdmFpbGFibGUgdmlhIHRoZQorICAgIC8vIGJhc2UgY2xhc3MgKHdoaWNoIGRvZXNuJ3Qg
cXVlcnkgaW1hZ2UgZGF0YSkuCisgICAgaWYgKHNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCkp
CisgICAgICAgIHJldHVybiBSZW5kZXJSZXBsYWNlZDo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKTsK
IAogICAgIGlmIChzdHlsZSgpLmFzcGVjdFJhdGlvKCkuaXNSYXRpbygpKQogICAgICAgICByZXR1
cm4gRmxvYXRTaXplOjpuYXJyb3dQcmVjaXNpb24oc3R5bGUoKS5hc3BlY3RSYXRpb0xvZ2ljYWxX
aWR0aCgpLnZhbHVlLCBzdHlsZSgpLmFzcGVjdFJhdGlvTG9naWNhbEhlaWdodCgpLnZhbHVlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvbGVnYWN5L0xlZ2FjeVJl
bmRlclNWR1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9sZWdhY3kvTGVn
YWN5UmVuZGVyU1ZHUm9vdC5jcHAKaW5kZXggMzZkM2UzODU5ZGI2Li5lMmI0NDNmMGU1OGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvbGVnYWN5L0xlZ2FjeVJlbmRl
clNWR1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvbGVnYWN5L0xl
Z2FjeVJlbmRlclNWR1Jvb3QuY3BwCkBAIC04MSwxMiArODEsMTUgQEAgU1ZHU1ZHRWxlbWVudCYg
TGVnYWN5UmVuZGVyU1ZHUm9vdDo6c3ZnU1ZHRWxlbWVudCgpIGNvbnN0CiAKIGJvb2wgTGVnYWN5
UmVuZGVyU1ZHUm9vdDo6aGFzSW50cmluc2ljQXNwZWN0UmF0aW8oKSBjb25zdAogewotICAgIHJl
dHVybiBjb21wdXRlSW50cmluc2ljQXNwZWN0UmF0aW8oKTsKKyAgICByZXR1cm4gcHJlZmVycmVk
QXNwZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0RvdWJsZSgpOwogfQogCiBGbG9hdFNpemUgTGVnYWN5
UmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUludHJpbnNpY1NpemUoKSBjb25zdAogewotICAgIEFTU0VS
VF9JTVBMSUVTKHZpZXcoKS5mcmFtZVZpZXcoKS5sYXlvdXRDb250ZXh0KCkuaXNJblJlbmRlclRy
ZWVMYXlvdXQoKSwgIXNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCkpOworICAgIC8vIFNpemUg
Y29udGFpbm1lbnQgc3VwcHJlc3NlcyBpbnRyaW5zaWMgZGltZW5zaW9ucyBmcm9tIGNvbnRlbnQu
CisgICAgLy8gVGhlIGJhc2UgY2xhc3MgcmV0dXJucyB2YWx1ZXMgZnJvbSB0aGUgY2FjaGUgLyBj
b250YWluLWludHJpbnNpYy1zaXplIHdpdGhvdXQgcXVlcnlpbmcgaW1hZ2UgZGF0YS4KKyAgICBp
ZiAoc2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKSkKKyAgICAgICAgcmV0dXJuIFJlbmRlclJl
cGxhY2VkOjpjb21wdXRlSW50cmluc2ljU2l6ZSgpOwogICAgIEZsb2F0U2l6ZSBpbnRyaW5zaWNT
aXplID0geyBzdmdTVkdFbGVtZW50KCkuaW50cmluc2ljV2lkdGgoKSwgc3ZnU1ZHRWxlbWVudCgp
LmludHJpbnNpY0hlaWdodCgpIH07CiAgICAgLy8gVHJhbnNwb3NlIGZvciB2ZXJ0aWNhbCB3cml0
aW5nIG1vZGUKICAgICBpZiAoIWlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCkBAIC05Niw3ICs5
OSwxMSBAQCBGbG9hdFNpemUgTGVnYWN5UmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUludHJpbnNpY1Np
emUoKSBjb25zdAogCiBGbG9hdFNpemUgTGVnYWN5UmVuZGVyU1ZHUm9vdDo6cHJlZmVycmVkQXNw
ZWN0UmF0aW8oKSBjb25zdAogewotICAgIEFTU0VSVCghc2hvdWxkQXBwbHlTaXplQ29udGFpbm1l
bnQoKSk7CisgICAgLy8gU2l6ZSBjb250YWlubWVudCBzdXBwcmVzc2VzIGludHJpbnNpYyBkaW1l
bnNpb25zIGZyb20gY29udGVudCwgYnV0IHRoZQorICAgIC8vIGFzcGVjdCByYXRpbyBmcm9tIHRo
ZSBDU1MgYXNwZWN0LXJhdGlvIHByb3BlcnR5IGlzIHN0aWxsIGF2YWlsYWJsZSB2aWEgdGhlCisg
ICAgLy8gYmFzZSBjbGFzcyAod2hpY2ggZG9lc24ndCBxdWVyeSBpbWFnZSBkYXRhKS4KKyAgICBp
ZiAoc2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKSkKKyAgICAgICAgcmV0dXJuIFJlbmRlclJl
cGxhY2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpOwogCiAgICAgaWYgKHN0eWxlKCkuYXNwZWN0
UmF0aW8oKS5pc1JhdGlvKCkpCiAgICAgICAgIHJldHVybiBGbG9hdFNpemU6Om5hcnJvd1ByZWNp
c2lvbihzdHlsZSgpLmFzcGVjdFJhdGlvTG9naWNhbFdpZHRoKCkudmFsdWUsIHN0eWxlKCkuYXNw
ZWN0UmF0aW9Mb2dpY2FsSGVpZ2h0KCkudmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZS5jcHAKaW5kZXggOWEwZDQ4MjZhNjkwLi44NjI5ZTBlZDIxNmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAtMjc2LDggKzI3Niw4IEBAIFJl
ZlB0cjxOYXRpdmVJbWFnZT4gU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgY29uc3QgRGVzdGluYXRpCiAgICAgYXV0byByZW5kZXJpbmdNb2RlID0gbV9wYWdlLT5z
ZXR0aW5ncygpLmFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQoKSA/IFJlbmRlcmluZ01vZGU6OkFj
Y2VsZXJhdGVkIDogUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZDsKIAogICAgIEhvc3RXaW5k
b3cqIGhvc3RXaW5kb3cgPSBudWxscHRyOwotICAgIGlmIChDaGVja2VkUHRyIGNvbnRlbnRSZW5k
ZXJlciA9IGVtYmVkZGVkQ29udGVudEJveCgpKQotICAgICAgICBob3N0V2luZG93ID0gY29udGVu
dFJlbmRlcmVyLT5ob3N0V2luZG93KCk7CisgICAgaWYgKENoZWNrZWRQdHIgc3ZnUm9vdCA9IGVt
YmVkZGVkU1ZHUm9vdCgpKQorICAgICAgICBob3N0V2luZG93ID0gc3ZnUm9vdC0+aG9zdFdpbmRv
dygpOwogCiAgICAgUmVmUHRyIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXpl
LCByZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlOjpET00sIDEsIGNvbG9yU3BhY2UsIFBp
eGVsRm9ybWF0OjpCR1JBOCwgaG9zdFdpbmRvdyk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKQEAg
LTM5MiwxMiArMzkyLDEyIEBAIEltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjCiAgICAgcmV0dXJuIElt
YWdlRHJhd1Jlc3VsdDo6RGlkRHJhdzsKIH0KIAotUmVuZGVyQm94KiBTVkdJbWFnZTo6ZW1iZWRk
ZWRDb250ZW50Qm94KCkgY29uc3QKK1JlbmRlclJlcGxhY2VkKiBTVkdJbWFnZTo6ZW1iZWRkZWRT
VkdSb290KCkgY29uc3QKIHsKICAgICBSZWZQdHIgcm9vdEVsZW1lbnQgPSB0aGlzLT5yb290RWxl
bWVudCgpOwogICAgIGlmICghcm9vdEVsZW1lbnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJCb3g+KHJvb3RFbGVtZW50LT5yZW5kZXJlcigpKTsK
KyAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+KHJvb3RFbGVtZW50LT5yZW5kZXJl
cigpKTsKIH0KIAogTG9jYWxGcmFtZVZpZXcqIFNWR0ltYWdlOjpmcmFtZVZpZXcoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAppbmRleCBmNDU3N2Q1Y2YwNDIuLmY3
NDNhMzcwMzJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKQEAgLTM2
LDcgKzM2LDcgQEAgY2xhc3MgRWxlbWVudDsKIGNsYXNzIEltYWdlQnVmZmVyOwogY2xhc3MgTG9j
YWxGcmFtZVZpZXc7CiBjbGFzcyBQYWdlOwotY2xhc3MgUmVuZGVyQm94OworY2xhc3MgUmVuZGVy
UmVwbGFjZWQ7CiBjbGFzcyBTVkdTVkdFbGVtZW50OwogY2xhc3MgU1ZHSW1hZ2VDaHJvbWVDbGll
bnQ7CiBjbGFzcyBTVkdJbWFnZUZvckNvbnRhaW5lcjsKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHRyeUNyZWF0ZUZyb21EYXRhKHN0ZDo6
c3Bhbjxjb25zdCB1aW50OF90PiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U1ZHSW1h
Z2U+JiYpPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc0RhdGFEZWNvZGFi
bGUoY29uc3QgU2V0dGluZ3MmLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pOwogCi0gICAgUmVu
ZGVyQm94KiBlbWJlZGRlZENvbnRlbnRCb3goKSBjb25zdDsKKyAgICBSZW5kZXJSZXBsYWNlZCog
ZW1iZWRkZWRTVkdSb290KCkgY29uc3Q7CiAgICAgTG9jYWxGcmFtZVZpZXcqIE5PREVMRVRFIGZy
YW1lVmlldygpIGNvbnN0OwogCiAgICAgYm9vbCBpc1NWR0ltYWdlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>479575</attachid>
            <date>2026-05-10 12:35:08 -0700</date>
            <delta_ts>2026-05-10 14:10:16 -0700</delta_ts>
            <desc>[fast-cq]Patch</desc>
            <filename>bug-314460-20260510123507.patch</filename>
            <type>text/plain</type>
            <size>17830</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBlZTE4N2M4YmNiZjM1ZTUyNzY5MWQ0OWY4NTJkNzAzZGMwNjQ1YjFlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IEZyaSwgOCBNYXkgMjAyNiAyMDo1MDo0MyAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFJlbmFtZSBh
c3BlY3QgcmF0aW8gaGVscGVycyBvbiBSZW5kZXJSZXBsYWNlZCBhbmQgUmVuZGVyQm94CiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE0NDYwCgpSZXZpZXdlZCBieSBB
bnR0aSBLb2l2aXN0by4KCi0gUmVtb3ZlIGNvbXB1dGVJbnRyaW5zaWNBc3BlY3RSYXRpbygpIC0g
aXQgd2FzIGp1c3QgcHJlZmVycmVkQXNwZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0RvdWJsZSgpLgot
IFJlbmFtZSByZXNvbHZlQXNwZWN0UmF0aW8oKSB0byBhc3BlY3RSYXRpb1ZhbHVlKCkgLSBpdCBk
b2VzIG5vdCByZXNvbHZlIGFueXRoaW5nLCBqdXN0IHJldHVybnMgdGhlIGFwcGxpY2FibGUgcmF0
aW8gYXMgYSBkb3VibGUuCi0gUmVuYW1lIGlzUmVuZGVyUmVwbGFjZWRXaXRoSW50cmluc2ljUmF0
aW8oKSB0byBpc1JlcGxhY2VkV2l0aFByZWZlcnJlZEFzcGVjdFJhdGlvKCkgLSBjbGVhcmVyIGFi
b3V0IHdoYXQgaXQgY2hlY2tzLgotIFJlc3RvcmUgc2hvdWxkQXBwbHlTaXplT3JJbmxpbmVTaXpl
Q29udGFpbm1lbnQKCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CihX
ZWJDb3JlOjpSZW5kZXJCb3g6OmNvbnN0cmFpbkxvZ2ljYWxNaW5NYXhTaXplc0J5QXNwZWN0UmF0
aW8gY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlSW50cmluc2ljS2V5d29yZExv
Z2ljYWxXaWR0aHMgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyQm94Ojppc1JlcGxhY2VkV2l0aFBy
ZWZlcnJlZEFzcGVjdFJhdGlvIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckJveDo6YXNwZWN0UmF0
aW9WYWx1ZSBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVNaW5NYXhMb2dpY2Fs
V2lkdGhGcm9tQXNwZWN0UmF0aW8gY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRl
TWluTWF4TG9naWNhbEhlaWdodEZyb21Bc3BlY3RSYXRpbyBjb25zdCk6CihXZWJDb3JlOjpSZW5k
ZXJCb3g6OmlzUmVuZGVyUmVwbGFjZWRXaXRoSW50cmluc2ljUmF0aW8gY29uc3QpOiBEZWxldGVk
LgooV2ViQ29yZTo6UmVuZGVyQm94OjpyZXNvbHZlQXNwZWN0UmF0aW8gY29uc3QpOiBEZWxldGVk
LgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaDoKKiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwOgooV2ViQ29yZTo6aXNTVkdSb290V2l0
aEludHJpbnNpY0FzcGVjdFJhdGlvKToKKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpwcmVm
ZXJyZWRBc3BlY3RSYXRpb0ZvckZsZXhJdGVtIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgooV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmNvbXB1dGVJbnRy
aW5zaWNTaXplIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwcmVmZXJyZWRBc3BlY3RS
YXRpbyBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNw
cDoKKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjb21wdXRlQXNwZWN0UmF0aW9BZGp1c3RlZElu
dHJpbnNpY0xvZ2ljYWxXaWR0aHMgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OmNv
bXB1dGVJbnRyaW5zaWNLZXl3b3JkTG9naWNhbFdpZHRocyBjb25zdCk6CihXZWJDb3JlOjpSZW5k
ZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY0FzcGVjdFJhdGlvIGNvbnN0KTogRGVsZXRlZC4K
KiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaDoKKiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcDoKKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6
Y29tcHV0ZUludHJpbnNpY1NpemUgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyV2lkZ2V0OjpwcmVm
ZXJyZWRBc3BlY3RSYXRpbyBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSb290LmNwcDoKKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6Omhhc0ludHJpbnNpY0Fz
cGVjdFJhdGlvIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVJbnRyaW5z
aWNTaXplIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OnByZWZlcnJlZEFzcGVjdFJh
dGlvIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lS
ZW5kZXJTVkdSb290LmNwcDoKKFdlYkNvcmU6OkxlZ2FjeVJlbmRlclNWR1Jvb3Q6Omhhc0ludHJp
bnNpY0FzcGVjdFJhdGlvIGNvbnN0KToKKFdlYkNvcmU6OkxlZ2FjeVJlbmRlclNWR1Jvb3Q6OmNv
bXB1dGVJbnRyaW5zaWNTaXplIGNvbnN0KToKKFdlYkNvcmU6OkxlZ2FjeVJlbmRlclNWR1Jvb3Q6
OnByZWZlcnJlZEFzcGVjdFJhdGlvIGNvbnN0KToKLS0tCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcCAgICAgICAgfCAyMCArKysrKysrKystLS0tLS0tLS0tCiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggICAgICAgICAgfCAgNCArKy0tCiAuLi4vV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwICAgfCAgNiArKystLS0KIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgICAgICB8ICA0ICsrLS0KIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAgICB8ICA5ICsrLS0tLS0tLQog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmggICAgIHwgIDEgLQogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAgICAgIHwgIDQgKystLQogLi4u
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcCAgIHwgIDYgKysrLS0tCiAu
Li4vc3ZnL2xlZ2FjeS9MZWdhY3lSZW5kZXJTVkdSb290LmNwcCAgICAgICAgfCAgNiArKystLS0K
IDkgZmlsZXMgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pCgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCA4YjBlNTRlZjc1OGYuLmEyMmQ3
YzUwMGQ3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTcxMSw3
ICs3MTEsNyBAQCB2b2lkIFJlbmRlckJveDo6Y29uc3RyYWluTG9naWNhbE1pbk1heFNpemVzQnlB
c3BlY3RSYXRpbyhMYXlvdXRVbml0JiBjb21wdXRlZE1pbgogICAgIC8vIGEgc2l6ZSBvZiB0aGUg
aW5pdGlhbCBjb250YWluaW5nIGJsb2NrIGFuZCB0aGUg4oCcc3RyZXRjaC1maXTigJ0gc2l6aW5n
IG9mIG5vbi1yZXBsYWNlZCBibG9ja3MgaWYgdGhleSBoYXZlIGRlZmluaXRlIHZhbHVlcy4KICAg
ICAvLyBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1zaXppbmctMy8jZGVmaW5pdGUKICAg
ICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGVUb1VzZSA9IHN0eWxlKCk7Ci0gICAgQVNTRVJUKHN0
eWxlVG9Vc2UuYXNwZWN0UmF0aW8oKS5oYXNSYXRpbygpIHx8IGlzUmVuZGVyUmVwbGFjZWRXaXRo
SW50cmluc2ljUmF0aW8oKSk7CisgICAgQVNTRVJUKHN0eWxlVG9Vc2UuYXNwZWN0UmF0aW8oKS5o
YXNSYXRpbygpIHx8IGlzUmVwbGFjZWRXaXRoUHJlZmVycmVkQXNwZWN0UmF0aW8oKSk7CiAgICAg
YXV0byBsb2dpY2FsU2l6ZSA9IGRpbWVuc2lvbiA9PSBDb25zdHJhaW5EaW1lbnNpb246OldpZHRo
ID8gc3R5bGVUb1VzZS5sb2dpY2FsV2lkdGgoKSA6IHN0eWxlVG9Vc2UubG9naWNhbEhlaWdodCgp
OwogICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3Mtc2l6aW5nLTQvI2FzcGVjdC1yYXRp
by1taW5pbXVtCiAgICAgaWYgKG1pbmltdW1TaXplVHlwZSA9PSBNaW5pbXVtU2l6ZUlzQXV0b21h
dGljQ29udGVudEJhc2VkOjpZZXMpIHsKQEAgLTI5MzYsMTEgKzI5MzYsMTEgQEAgdGVtcGxhdGU8
dHlwZW5hbWUgS2V5d29yZD4gdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVJbnRyaW5zaWNLZXl3b3Jk
TG9naWNhbFdpZHRocygKICAgICAgICAgICAgICAgICBtaW5Mb2dpY2FsV2lkdGggPSBzdGQ6Om1h
eChtaW5Mb2dpY2FsV2lkdGgsIG1pbkNoaWxkcmVuTG9naWNhbFdpZHRoKTsKICAgICAgICAgICAg
ICAgICBtYXhMb2dpY2FsV2lkdGggPSBzdGQ6Om1heChtYXhMb2dpY2FsV2lkdGgsIG1heENoaWxk
cmVuTG9naWNhbFdpZHRoKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChpc1Jl
bmRlclJlcGxhY2VkV2l0aEludHJpbnNpY1JhdGlvKCkgJiYgc3R5bGUoKS5sb2dpY2FsSGVpZ2h0
KCkuaXNTcGVjaWZpZWQoKSkgeworICAgICAgICB9IGVsc2UgaWYgKGlzUmVwbGFjZWRXaXRoUHJl
ZmVycmVkQXNwZWN0UmF0aW8oKSAmJiBzdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc1NwZWNpZmll
ZCgpKSB7CiAgICAgICAgICAgICAvLyBGb3IgcmVwbGFjZWQgZWxlbWVudHMgd2l0aCBhbiBpbnRy
aW5zaWMgYXNwZWN0IHJhdGlvIChlLmcuIDxpbWc+KSBhbmQgYQogICAgICAgICAgICAgLy8gc3Bl
Y2lmaWVkIGJsb2NrIHNpemUsIGNvbXB1dGUgdGhlIHRyYW5zZmVycmVkIG1pbi9tYXgtY29udGVu
dCBpbmxpbmUgc2l6ZQogICAgICAgICAgICAgLy8gdGhyb3VnaCB0aGUgaW50cmluc2ljIHJhdGlv
IHJhdGhlciB0aGFuIHVzaW5nIHRoZSByYXcgbmF0dXJhbCB3aWR0aC4KLSAgICAgICAgICAgIGF1
dG8gaW50cmluc2ljUmF0aW8gPSBkb3duY2FzdDxSZW5kZXJSZXBsYWNlZD4oKnRoaXMpLmNvbXB1
dGVJbnRyaW5zaWNBc3BlY3RSYXRpbygpOworICAgICAgICAgICAgYXV0byBpbnRyaW5zaWNSYXRp
byA9IGRvd25jYXN0PFJlbmRlclJlcGxhY2VkPigqdGhpcykucHJlZmVycmVkQXNwZWN0UmF0aW8o
KS5hc3BlY3RSYXRpb0RvdWJsZSgpOwogICAgICAgICAgICAgYXV0byBjb21wdXRlZFZhbHVlcyA9
IGNvbXB1dGVMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHQoKSwgbG9naWNhbFRvcCgpKTsKICAg
ICAgICAgICAgIGF1dG8gY29udGVudEJsb2NrU2l6ZSA9IHN0ZDo6bWF4KDBfbHUsIGNvbXB1dGVk
VmFsdWVzLmV4dGVudCAtIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCkpOwogICAgICAg
ICAgICAgbWluTG9naWNhbFdpZHRoID0gbWF4TG9naWNhbFdpZHRoID0gTGF5b3V0VW5pdChjb250
ZW50QmxvY2tTaXplICogaW50cmluc2ljUmF0aW8pOwpAQCAtNTI1NiwxNyArNTI1NiwxNyBAQCBM
YXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aEZyb21Bc3BlY3RSYXRpbygp
IGNvbnN0CiAgICAgcmV0dXJuIGNvbnN0cmFpbkxvZ2ljYWxXaWR0aEJ5TWluTWF4KGxvZ2ljYWxX
aWR0aCwgY29udGFpbmVyV2lkdGhJbklubGluZURpcmVjdGlvbiwgKmNvbnRhaW5pbmdCbG9jaygp
LCBBbGxvd0ludHJpbnNpYzo6Tm8pOwogfQogCi1ib29sIFJlbmRlckJveDo6aXNSZW5kZXJSZXBs
YWNlZFdpdGhJbnRyaW5zaWNSYXRpbygpIGNvbnN0Citib29sIFJlbmRlckJveDo6aXNSZXBsYWNl
ZFdpdGhQcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0CiB7CiAgICAgaWYgKGF1dG8qIHJlcGxh
Y2VkID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclJlcGxhY2VkPih0aGlzKSkKLSAgICAgICAgcmV0
dXJuIHJlcGxhY2VkLT5jb21wdXRlSW50cmluc2ljQXNwZWN0UmF0aW8oKTsKKyAgICAgICAgcmV0
dXJuIHJlcGxhY2VkLT5wcmVmZXJyZWRBc3BlY3RSYXRpbygpLmFzcGVjdFJhdGlvRG91YmxlKCk7
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGQ6Om9wdGlvbmFsPGRvdWJsZT4gUmVuZGVyQm94
OjpyZXNvbHZlQXNwZWN0UmF0aW8oKSBjb25zdAorc3RkOjpvcHRpb25hbDxkb3VibGU+IFJlbmRl
ckJveDo6YXNwZWN0UmF0aW9WYWx1ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKGF1dG8qIHJlcGxhY2Vk
RWxlbWVudCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJSZXBsYWNlZD4odGhpcykpIAotICAgICAg
ICByZXR1cm4gcmVwbGFjZWRFbGVtZW50LT5jb21wdXRlSW50cmluc2ljQXNwZWN0UmF0aW8oKTsK
KyAgICBpZiAoQ2hlY2tlZFB0ciByZXBsYWNlZEVsZW1lbnQgPSBkeW5hbWljRG93bmNhc3Q8UmVu
ZGVyUmVwbGFjZWQ+KHRoaXMpKQorICAgICAgICByZXR1cm4gcmVwbGFjZWRFbGVtZW50LT5wcmVm
ZXJyZWRBc3BlY3RSYXRpbygpLmFzcGVjdFJhdGlvRG91YmxlKCk7CiAgICAgaWYgKHN0eWxlKCku
YXNwZWN0UmF0aW8oKS5oYXNSYXRpbygpKQogICAgICAgICByZXR1cm4gc3R5bGUoKS5sb2dpY2Fs
QXNwZWN0UmF0aW8oKTsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTUyNzcsNyArNTI3
Nyw3IEBAIHN0ZDo6cGFpcjxMYXlvdXRVbml0LCBMYXlvdXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1
dGVNaW5NYXhMb2dpY2FsV2lkdGhGcm9tQXNwZWN0CiB7CiAgICAgTGF5b3V0VW5pdCB0cmFuc2Zl
cnJlZE1pblNpemUgPSBMYXlvdXRVbml0KCk7CiAgICAgTGF5b3V0VW5pdCB0cmFuc2ZlcnJlZE1h
eFNpemUgPSBMYXlvdXRVbml0OjptYXgoKTsKLSAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYXNw
ZWN0UmF0aW8gPSByZXNvbHZlQXNwZWN0UmF0aW8oKTsKKyAgICBhdXRvIGFzcGVjdFJhdGlvID0g
YXNwZWN0UmF0aW9WYWx1ZSgpOwogICAgIGlmICghYXNwZWN0UmF0aW8pCiAgICAgICAgIHJldHVy
biB7IHRyYW5zZmVycmVkTWluU2l6ZSwgdHJhbnNmZXJyZWRNYXhTaXplIH07CiAKQEAgLTUyOTgs
NyArNTI5OCw3IEBAIHN0ZDo6cGFpcjxMYXlvdXRVbml0LCBMYXlvdXRVbml0PiBSZW5kZXJCb3g6
OmNvbXB1dGVNaW5NYXhMb2dpY2FsSGVpZ2h0RnJvbUFzcGVjCiB7CiAgICAgTGF5b3V0VW5pdCB0
cmFuc2ZlcnJlZE1pblNpemUgPSBMYXlvdXRVbml0KCk7CiAgICAgTGF5b3V0VW5pdCB0cmFuc2Zl
cnJlZE1heFNpemUgPSBMYXlvdXRVbml0OjptYXgoKTsKLSAgICBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gYXNwZWN0UmF0aW8gPSByZXNvbHZlQXNwZWN0UmF0aW8oKTsKKyAgICBhdXRvIGFzcGVjdFJh
dGlvID0gYXNwZWN0UmF0aW9WYWx1ZSgpOwogICAgIGlmICghYXNwZWN0UmF0aW8pCiAgICAgICAg
IHJldHVybiB7IHRyYW5zZmVycmVkTWluU2l6ZSwgdHJhbnNmZXJyZWRNYXhTaXplIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAppbmRleCBjMTc4MDYyNjBlYjcuLmFlYmI2ODBm
YTAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtNjgzLDkgKzY4Myw5
IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgaW5jcmVtZW50VmlzdWFsbHlOb25FbXB0eVBpeGVs
Q291bnRJZk5lZWRlZChjb25zdCBJbnRTaXplJik7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gcmVzb2x2ZUFzcGVjdFJhdGlvKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+
IGFzcGVjdFJhdGlvVmFsdWUoKSBjb25zdDsKICAgICBib29sIE5PREVMRVRFIHNob3VsZElnbm9y
ZUFzcGVjdFJhdGlvKCkgY29uc3Q7Ci0gICAgYm9vbCBpc1JlbmRlclJlcGxhY2VkV2l0aEludHJp
bnNpY1JhdGlvKCkgY29uc3Q7CisgICAgYm9vbCBpc1JlcGxhY2VkV2l0aFByZWZlcnJlZEFzcGVj
dFJhdGlvKCkgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRDb21wdXRlTG9naWNhbFdpZHRoRnJvbUFz
cGVjdFJhdGlvKCkgY29uc3Q7CiAgICAgYm9vbCBpc1Jlc29sdmVhYmxlU3RyZXRjaFNpemUoY29u
c3QgYXV0byYgc2l6ZSkgY29uc3QgeyByZXR1cm4gc2l6ZS5pc1N0cmV0Y2goKSAmJiBjb250YWlu
aW5nQmxvY2tIYXNEZWZpbml0ZUJsb2NrU2l6ZSgpOyB9CiAgICAgYm9vbCBpc1VucmVzb2x2ZWFi
bGVTdHJldGNoU2l6ZShjb25zdCBhdXRvJiBzaXplKSBjb25zdCB7IHJldHVybiBzaXplLmlzU3Ry
ZXRjaCgpICYmICFjb250YWluaW5nQmxvY2tIYXNEZWZpbml0ZUJsb2NrU2l6ZSgpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAppbmRleCA3NGIz
ZTBiOGQyY2EuLjFmZWQ5NmQzODY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRmxleGlibGVCb3guY3BwCkBAIC04NzksNyArODc5LDcgQEAgc3RhdGljIGJvb2wgaXNT
VkdSb290V2l0aEludHJpbnNpY0FzcGVjdFJhdGlvKGNvbnN0IFJlbmRlckJveCYgZmxleEl0ZW0p
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAvLyBJdCdzIGNvbW1vbiBmb3Igc29tZSByZXBs
YWNlZCBlbGVtZW50cywgc3VjaCBhcyBTVkdzLCB0byBoYXZlIGludHJpbnNpYyBhc3BlY3QgcmF0
aW9zIGJ1dCBubyBpbnRyaW5zaWMgc2l6ZXMuCiAgICAgLy8gVGhhdCdzIHdoeSBpdCBpc24ndCBl
bm91Z2gganVzdCB0byBjaGVjayBmb3IgaW50cmluc2ljIHNpemVzIGluIHRob3NlIGNhc2VzLgot
ICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJSZXBsYWNlZD4oZmxleEl0ZW0pLmNvbXB1dGVJbnRy
aW5zaWNBc3BlY3RSYXRpbygpID4gMDsKKyAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyUmVwbGFj
ZWQ+KGZsZXhJdGVtKS5wcmVmZXJyZWRBc3BlY3RSYXRpbygpLmFzcGVjdFJhdGlvRG91YmxlKCkg
PiAwOwogfTsKIAogc3RhdGljIGJvb2wgZmxleEl0ZW1IYXNBc3BlY3RSYXRpbyhjb25zdCBSZW5k
ZXJCb3gmIGZsZXhJdGVtKQpAQCAtMTI2MiwxMSArMTI2MiwxMSBAQCBkb3VibGUgUmVuZGVyRmxl
eGlibGVCb3g6OnByZWZlcnJlZEFzcGVjdFJhdGlvRm9yRmxleEl0ZW0oY29uc3QgUmVuZGVyQm94
JiBmbGV4SQogICAgIGF1dG8gZmxleEl0ZW1Bc3BlY3RSYXRpbyA9IFsmXSB7CiAgICAgICAgIGF1
dG8gZmxleEl0ZW1JbnRyaW5zaWNTaXplID0gTGF5b3V0U2l6ZSB7IGZsZXhJdGVtLmludHJpbnNp
Y0xvZ2ljYWxXaWR0aCgpLCBmbGV4SXRlbS5pbnRyaW5zaWNMb2dpY2FsSGVpZ2h0KCkgfTsKICAg
ICAgICAgaWYgKGZsZXhJdGVtLmlzUmVuZGVyT3JMZWdhY3lSZW5kZXJTVkdSb290KCkpCi0gICAg
ICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+KGZsZXhJdGVtKS5jb21wdXRl
SW50cmluc2ljQXNwZWN0UmF0aW8oKTsKKyAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxSZW5k
ZXJSZXBsYWNlZD4oZmxleEl0ZW0pLnByZWZlcnJlZEFzcGVjdFJhdGlvKCkuYXNwZWN0UmF0aW9E
b3VibGUoKTsKICAgICAgICAgaWYgKGZsZXhJdGVtLnN0eWxlKCkuYXNwZWN0UmF0aW8oKS5pc1Jh
dGlvKCkgfHwgKGZsZXhJdGVtLnN0eWxlKCkuYXNwZWN0UmF0aW8oKS5pc0F1dG9BbmRSYXRpbygp
ICYmIGZsZXhJdGVtSW50cmluc2ljU2l6ZS5pc0VtcHR5KCkpKQogICAgICAgICAgICAgcmV0dXJu
IGZsZXhJdGVtLnN0eWxlKCkubG9naWNhbEFzcGVjdFJhdGlvKCk7CiAgICAgICAgIGlmIChhdXRv
KiByZXBsYWNlZEVsZW1lbnQgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+KGZsZXhJ
dGVtKSkKLSAgICAgICAgICAgIHJldHVybiByZXBsYWNlZEVsZW1lbnQtPmNvbXB1dGVJbnRyaW5z
aWNBc3BlY3RSYXRpbygpOworICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VkRWxlbWVudC0+cHJl
ZmVycmVkQXNwZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0RvdWJsZSgpOwogCiAgICAgICAgIEFTU0VS
VChmbGV4SXRlbS5pbnRyaW5zaWNMb2dpY2FsSGVpZ2h0KCkpOwogICAgICAgICByZXR1cm4gZmxl
eEl0ZW0uaW50cmluc2ljTG9naWNhbFdpZHRoKCkudG9Eb3VibGUoKSAvIGZsZXhJdGVtLmludHJp
bnNpY0xvZ2ljYWxIZWlnaHQoKS50b0RvdWJsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5jcHAKaW5kZXggYjkyOTIwNWU4MTYyLi5lMDY1Yzg1YTNlYTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtOTQyLDcgKzk0Miw3IEBAIEZs
b2F0U2l6ZSBSZW5kZXJJbWFnZTo6Y29tcHV0ZUludHJpbnNpY1NpemUoKSBjb25zdAogewogICAg
IC8vIFNpemUgY29udGFpbm1lbnQgc3VwcHJlc3NlcyBpbnRyaW5zaWMgZGltZW5zaW9ucyBmcm9t
IGNvbnRlbnQuCiAgICAgLy8gVGhlIGJhc2UgY2xhc3MgcmV0dXJucyB2YWx1ZXMgZnJvbSB0aGUg
Y2FjaGUgLyBjb250YWluLWludHJpbnNpYy1zaXplIHdpdGhvdXQgcXVlcnlpbmcgaW1hZ2UgZGF0
YS4KLSAgICBpZiAoc2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKSkKKyAgICBpZiAoc2hvdWxk
QXBwbHlTaXplT3JJbmxpbmVTaXplQ29udGFpbm1lbnQoKSkKICAgICAgICAgcmV0dXJuIFJlbmRl
clJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljU2l6ZSgpOwogCiAgICAgaWYgKENoZWNrZWRQdHIg
c3ZnUm9vdCA9IGVtYmVkZGVkU1ZHUm9vdCgpKSB7CkBAIC05NzMsNyArOTczLDcgQEAgRmxvYXRT
aXplIFJlbmRlckltYWdlOjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0CiAgICAgLy8gU2l6
ZSBjb250YWlubWVudCBzdXBwcmVzc2VzIGludHJpbnNpYyBkaW1lbnNpb25zIGZyb20gY29udGVu
dCwgYnV0IHRoZQogICAgIC8vIGFzcGVjdCByYXRpbyBmcm9tIHRoZSBDU1MgYXNwZWN0LXJhdGlv
IHByb3BlcnR5IGlzIHN0aWxsIGF2YWlsYWJsZSB2aWEgdGhlCiAgICAgLy8gYmFzZSBjbGFzcyAo
d2hpY2ggZG9lc24ndCBxdWVyeSBpbWFnZSBkYXRhKS4KLSAgICBpZiAoc2hvdWxkQXBwbHlTaXpl
Q29udGFpbm1lbnQoKSkKKyAgICBpZiAoc2hvdWxkQXBwbHlTaXplT3JJbmxpbmVTaXplQ29udGFp
bm1lbnQoKSkKICAgICAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpwcmVmZXJyZWRBc3BlY3RS
YXRpbygpOwogCiAgICAgLy8gRG9uJ3QgY29tcHV0ZSBhbiBpbnRyaW5zaWMgcmF0aW8gdG8gcHJl
c2VydmUgaGlzdG9yaWNhbCBXZWJLaXQgYmVoYXZpb3IgaWYgd2UncmUgcGFpbnRpbmcgYWx0IHRl
eHQgYW5kL29yIGEgYnJva2VuIGltYWdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZXBsYWNlZC5jcHAKaW5kZXggZTM3NmRiYjU3MmI2Li42NTEwNmE5ZjAxODYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcApAQCAtNTU4LDExICs1NTgs
NiBAQCBMYXlvdXRSZWN0IFJlbmRlclJlcGxhY2VkOjpyZXBsYWNlZENvbnRlbnRSZWN0KGNvbnN0
IExheW91dFNpemUmIGludHJpbnNpY1NpemUpCiAgICAgcmV0dXJuIGZpbmFsUmVjdDsKIH0KIAot
ZG91YmxlIFJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljQXNwZWN0UmF0aW8oKSBjb25z
dAotewotICAgIHJldHVybiBwcmVmZXJyZWRBc3BlY3RSYXRpbygpLmFzcGVjdFJhdGlvRG91Ymxl
KCk7Ci19Ci0KIEZsb2F0U2l6ZSBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY1NpemUo
KSBjb25zdAogewogICAgIHJldHVybiB7IGludHJpbnNpY0xvZ2ljYWxXaWR0aCgpLCBpbnRyaW5z
aWNMb2dpY2FsSGVpZ2h0KCkgfTsKQEAgLTYyOSw3ICs2MjQsNyBAQCB2b2lkIFJlbmRlclJlcGxh
Y2VkOjpjb21wdXRlQXNwZWN0UmF0aW9BZGp1c3RlZEludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5
b3V0VW5pdAogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvJiBzdHlsZSA9IHRoaXMtPnN0eWxl
KCk7Ci0gICAgYXV0byBjb21wdXRlZEFzcGVjdFJhdGlvID0gY29tcHV0ZUludHJpbnNpY0FzcGVj
dFJhdGlvKCk7CisgICAgYXV0byBjb21wdXRlZEFzcGVjdFJhdGlvID0gcHJlZmVycmVkQXNwZWN0
UmF0aW8oKS5hc3BlY3RSYXRpb0RvdWJsZSgpOwogICAgIGF1dG8gY29tcHV0ZWRJbnRyaW5zaWNM
b2dpY2FsV2lkdGggPSBtaW5Mb2dpY2FsV2lkdGg7CiAKICAgICBpZiAoYXV0byBmaXhlZExvZ2lj
YWxIZWlnaHQgPSBzdHlsZS5sb2dpY2FsSGVpZ2h0KCkudHJ5Rml4ZWQoKSkKQEAgLTgwNiw3ICs4
MDEsNyBAQCB2b2lkIFJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljS2V5d29yZExvZ2lj
YWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbAogewogICAgIGlmIChoYXNJbnRyaW5zaWNB
c3BlY3RSYXRpbygpICYmICFzdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc0F1dG8oKSkgewogICAg
ICAgICBpZiAoYXV0byBmaXhlZEhlaWdodCA9IHN0eWxlKCkubG9naWNhbEhlaWdodCgpLnRyeUZp
eGVkKCkpIHsKLSAgICAgICAgICAgIGF1dG8gaGVpZ2h0RGVyaXZlZFdpZHRoID0gTGF5b3V0VW5p
dCB7IGZpeGVkSGVpZ2h0LT5yZXNvbHZlWm9vbShzdHlsZSgpLnVzZWRab29tRm9yTGVuZ3RoKCkp
ICogY29tcHV0ZUludHJpbnNpY0FzcGVjdFJhdGlvKCkgfTsKKyAgICAgICAgICAgIGF1dG8gaGVp
Z2h0RGVyaXZlZFdpZHRoID0gTGF5b3V0VW5pdCB7IGZpeGVkSGVpZ2h0LT5yZXNvbHZlWm9vbShz
dHlsZSgpLnVzZWRab29tRm9yTGVuZ3RoKCkpICogcHJlZmVycmVkQXNwZWN0UmF0aW8oKS5hc3Bl
Y3RSYXRpb0RvdWJsZSgpIH07CiAgICAgICAgICAgICBtaW5Mb2dpY2FsV2lkdGggPSBoZWlnaHRE
ZXJpdmVkV2lkdGg7CiAgICAgICAgICAgICBtYXhMb2dpY2FsV2lkdGggPSBoZWlnaHREZXJpdmVk
V2lkdGg7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZXBsYWNlZC5oCmluZGV4IDZiMjY2MjQ4ZGQxYy4uYjQ3NGMzZDZjZDBhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaApAQCAtNDcsNyArNDcsNiBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpc0NvbnRlbnRMaWtlbHlWaXNpYmxlSW5WaWV3cG9ydCgpOwogICAgIGJv
b2wgc2hvdWxkSW52YWxpZGF0ZVByZWZlcnJlZFdpZHRocygpIGNvbnN0IG92ZXJyaWRlOwogCi0g
ICAgZG91YmxlIGNvbXB1dGVJbnRyaW5zaWNBc3BlY3RSYXRpbygpIGNvbnN0OwogCiAgICAgdmly
dHVhbCBib29sIHBhaW50c0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKaW5kZXggZGY2NzQ3ZDNiZjhjLi4y
MDM5YmJiZTQ1YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJX
aWRnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3Bw
CkBAIC01MDIsNyArNTAyLDcgQEAgRmxvYXRTaXplIFJlbmRlcldpZGdldDo6Y29tcHV0ZUludHJp
bnNpY1NpemUoKSBjb25zdAogewogICAgIC8vIFNpemUgY29udGFpbm1lbnQgc3VwcHJlc3NlcyBp
bnRyaW5zaWMgZGltZW5zaW9ucyBmcm9tIGNvbnRlbnQuCiAgICAgLy8gVGhlIGJhc2UgY2xhc3Mg
cmV0dXJucyB2YWx1ZXMgZnJvbSB0aGUgY2FjaGUgLyBjb250YWluLWludHJpbnNpYy1zaXplIHdp
dGhvdXQgcXVlcnlpbmcgaW1hZ2UgZGF0YS4KLSAgICBpZiAoc2hvdWxkQXBwbHlTaXplQ29udGFp
bm1lbnQoKSkKKyAgICBpZiAoc2hvdWxkQXBwbHlTaXplT3JJbmxpbmVTaXplQ29udGFpbm1lbnQo
KSkKICAgICAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljU2l6ZSgp
OwogCiAgICAgQ2hlY2tlZFB0ciBzdmdSb290ID0gZW1iZWRkZWRTVkdSb290KCk7CkBAIC01MjMs
NyArNTIzLDcgQEAgRmxvYXRTaXplIFJlbmRlcldpZGdldDo6cHJlZmVycmVkQXNwZWN0UmF0aW8o
KSBjb25zdAogICAgIC8vIFNpemUgY29udGFpbm1lbnQgc3VwcHJlc3NlcyBpbnRyaW5zaWMgZGlt
ZW5zaW9ucyBmcm9tIGNvbnRlbnQsIGJ1dCB0aGUKICAgICAvLyBhc3BlY3QgcmF0aW8gZnJvbSB0
aGUgQ1NTIGFzcGVjdC1yYXRpbyBwcm9wZXJ0eSBpcyBzdGlsbCBhdmFpbGFibGUgdmlhIHRoZQog
ICAgIC8vIGJhc2UgY2xhc3MgKHdoaWNoIGRvZXNuJ3QgcXVlcnkgaW1hZ2UgZGF0YSkuCi0gICAg
aWYgKHNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCkpCisgICAgaWYgKHNob3VsZEFwcGx5U2l6
ZU9ySW5saW5lU2l6ZUNvbnRhaW5tZW50KCkpCiAgICAgICAgIHJldHVybiBSZW5kZXJSZXBsYWNl
ZDo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKTsKIAogICAgIENoZWNrZWRQdHIgc3ZnUm9vdCA9IGVt
YmVkZGVkU1ZHUm9vdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUm9vdC5jcHAKaW5kZXggNWFkMDc4MGFiOGYxLi40MzI3MDVkMjMyNzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcApAQCAtOTEsMTQgKzkx
LDE0IEBAIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyKiBSZW5kZXJTVkdSb290Ojp2aWV3cG9y
dENvbnRhaW5lcigpIGNvbnN0CiAKIGJvb2wgUmVuZGVyU1ZHUm9vdDo6aGFzSW50cmluc2ljQXNw
ZWN0UmF0aW8oKSBjb25zdAogewotICAgIHJldHVybiBjb21wdXRlSW50cmluc2ljQXNwZWN0UmF0
aW8oKTsKKyAgICByZXR1cm4gcHJlZmVycmVkQXNwZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0RvdWJs
ZSgpOwogfQogCiBGbG9hdFNpemUgUmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUludHJpbnNpY1NpemUo
KSBjb25zdAogewogICAgIC8vIFNpemUgY29udGFpbm1lbnQgc3VwcHJlc3NlcyBpbnRyaW5zaWMg
ZGltZW5zaW9ucyBmcm9tIGNvbnRlbnQuCiAgICAgLy8gVGhlIGJhc2UgY2xhc3MgcmV0dXJucyB2
YWx1ZXMgZnJvbSB0aGUgY2FjaGUgLyBjb250YWluLWludHJpbnNpYy1zaXplIHdpdGhvdXQgcXVl
cnlpbmcgaW1hZ2UgZGF0YS4KLSAgICBpZiAoc2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKSkK
KyAgICBpZiAoc2hvdWxkQXBwbHlTaXplT3JJbmxpbmVTaXplQ29udGFpbm1lbnQoKSkKICAgICAg
ICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljU2l6ZSgpOwogICAgIC8v
IGh0dHBzOi8vd3d3LnczLm9yZy9UUi9TVkcvY29vcmRzLmh0bWwjSW50cmluc2ljU2l6aW5nCiAg
ICAgRmxvYXRTaXplIGludHJpbnNpY1NpemUgPSB7IHN2Z1NWR0VsZW1lbnQoKS5pbnRyaW5zaWNX
aWR0aCgpLCBzdmdTVkdFbGVtZW50KCkuaW50cmluc2ljSGVpZ2h0KCkgfTsKQEAgLTExMyw3ICsx
MTMsNyBAQCBGbG9hdFNpemUgUmVuZGVyU1ZHUm9vdDo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKSBj
b25zdAogICAgIC8vIFNpemUgY29udGFpbm1lbnQgc3VwcHJlc3NlcyBpbnRyaW5zaWMgZGltZW5z
aW9ucyBmcm9tIGNvbnRlbnQsIGJ1dCB0aGUKICAgICAvLyBhc3BlY3QgcmF0aW8gZnJvbSB0aGUg
Q1NTIGFzcGVjdC1yYXRpbyBwcm9wZXJ0eSBpcyBzdGlsbCBhdmFpbGFibGUgdmlhIHRoZQogICAg
IC8vIGJhc2UgY2xhc3MgKHdoaWNoIGRvZXNuJ3QgcXVlcnkgaW1hZ2UgZGF0YSkuCi0gICAgaWYg
KHNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCkpCisgICAgaWYgKHNob3VsZEFwcGx5U2l6ZU9y
SW5saW5lU2l6ZUNvbnRhaW5tZW50KCkpCiAgICAgICAgIHJldHVybiBSZW5kZXJSZXBsYWNlZDo6
cHJlZmVycmVkQXNwZWN0UmF0aW8oKTsKIAogICAgIGlmIChzdHlsZSgpLmFzcGVjdFJhdGlvKCku
aXNSYXRpbygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9sZWdh
Y3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L2xlZ2FjeS9MZWdhY3lSZW5kZXJTVkdSb290LmNwcAppbmRleCAwODdhNGQyYjU0YWUuLmYyZDQ3
ZjcwZDhmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9sZWdhY3kv
TGVnYWN5UmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9sZWdhY3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5jcHAKQEAgLTgxLDE0ICs4MSwxNCBAQCBTVkdT
VkdFbGVtZW50JiBMZWdhY3lSZW5kZXJTVkdSb290OjpzdmdTVkdFbGVtZW50KCkgY29uc3QKIAog
Ym9vbCBMZWdhY3lSZW5kZXJTVkdSb290OjpoYXNJbnRyaW5zaWNBc3BlY3RSYXRpbygpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIGNvbXB1dGVJbnRyaW5zaWNBc3BlY3RSYXRpbygpOworICAgIHJldHVy
biBwcmVmZXJyZWRBc3BlY3RSYXRpbygpLmFzcGVjdFJhdGlvRG91YmxlKCk7CiB9CiAKIEZsb2F0
U2l6ZSBMZWdhY3lSZW5kZXJTVkdSb290Ojpjb21wdXRlSW50cmluc2ljU2l6ZSgpIGNvbnN0CiB7
CiAgICAgLy8gU2l6ZSBjb250YWlubWVudCBzdXBwcmVzc2VzIGludHJpbnNpYyBkaW1lbnNpb25z
IGZyb20gY29udGVudC4KICAgICAvLyBUaGUgYmFzZSBjbGFzcyByZXR1cm5zIHZhbHVlcyBmcm9t
IHRoZSBjYWNoZSAvIGNvbnRhaW4taW50cmluc2ljLXNpemUgd2l0aG91dCBxdWVyeWluZyBpbWFn
ZSBkYXRhLgotICAgIGlmIChzaG91bGRBcHBseVNpemVDb250YWlubWVudCgpKQorICAgIGlmIChz
aG91bGRBcHBseVNpemVPcklubGluZVNpemVDb250YWlubWVudCgpKQogICAgICAgICByZXR1cm4g
UmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVJbnRyaW5zaWNTaXplKCk7CiAgICAgRmxvYXRTaXplIGlu
dHJpbnNpY1NpemUgPSB7IHN2Z1NWR0VsZW1lbnQoKS5pbnRyaW5zaWNXaWR0aCgpLCBzdmdTVkdF
bGVtZW50KCkuaW50cmluc2ljSGVpZ2h0KCkgfTsKICAgICAvLyBUcmFuc3Bvc2UgZm9yIHZlcnRp
Y2FsIHdyaXRpbmcgbW9kZQpAQCAtMTAyLDcgKzEwMiw3IEBAIEZsb2F0U2l6ZSBMZWdhY3lSZW5k
ZXJTVkdSb290OjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0CiAgICAgLy8gU2l6ZSBjb250
YWlubWVudCBzdXBwcmVzc2VzIGludHJpbnNpYyBkaW1lbnNpb25zIGZyb20gY29udGVudCwgYnV0
IHRoZQogICAgIC8vIGFzcGVjdCByYXRpbyBmcm9tIHRoZSBDU1MgYXNwZWN0LXJhdGlvIHByb3Bl
cnR5IGlzIHN0aWxsIGF2YWlsYWJsZSB2aWEgdGhlCiAgICAgLy8gYmFzZSBjbGFzcyAod2hpY2gg
ZG9lc24ndCBxdWVyeSBpbWFnZSBkYXRhKS4KLSAgICBpZiAoc2hvdWxkQXBwbHlTaXplQ29udGFp
bm1lbnQoKSkKKyAgICBpZiAoc2hvdWxkQXBwbHlTaXplT3JJbmxpbmVTaXplQ29udGFpbm1lbnQo
KSkKICAgICAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpbygp
OwogCiAgICAgaWYgKHN0eWxlKCkuYXNwZWN0UmF0aW8oKS5pc1JhdGlvKCkpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>