<?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>295130</bug_id>
          
          <creation_ts>2025-06-27 16:03:48 -0700</creation_ts>
          <short_desc>[Cleanup] Remove LinePositionMode from RenderBoxModelObject::lineHeight</short_desc>
          <delta_ts>2025-07-15 06:59:41 -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>2126423</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2025-06-27 16:03:48 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2126428</commentid>
    <comment_count>1</comment_count>
      <attachid>475683</attachid>
    <who name="alan">zalan</who>
    <bug_when>2025-06-27 16:15:38 -0700</bug_when>
    <thetext>Created attachment 475683
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2126490</commentid>
    <comment_count>2</comment_count>
      <attachid>475688</attachid>
    <who name="alan">zalan</who>
    <bug_when>2025-06-28 05:40:53 -0700</bug_when>
    <thetext>Created attachment 475688
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2127141</commentid>
    <comment_count>3</comment_count>
      <attachid>475728</attachid>
    <who name="alan">zalan</who>
    <bug_when>2025-07-01 15:34:54 -0700</bug_when>
    <thetext>Created attachment 475728
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2127142</commentid>
    <comment_count>4</comment_count>
      <attachid>475729</attachid>
    <who name="alan">zalan</who>
    <bug_when>2025-07-01 15:36:05 -0700</bug_when>
    <thetext>Created attachment 475729
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2127929</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2025-07-04 16:04:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/155067822&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2130135</commentid>
    <comment_count>6</comment_count>
      <attachid>476015</attachid>
    <who name="alan">zalan</who>
    <bug_when>2025-07-15 05:00:57 -0700</bug_when>
    <thetext>Created attachment 476015
[fast-cq]Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2130152</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2025-07-15 06:59:39 -0700</bug_when>
    <thetext>Committed 297394@main (3086ecb8f483): &lt;https://commits.webkit.org/297394@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 476015.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>475683</attachid>
            <date>2025-06-27 16:15:38 -0700</date>
            <delta_ts>2025-06-28 05:40:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-295130-20250627161537.patch</filename>
            <type>text/plain</type>
            <size>26979</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA2NzJlNDZkZTc1ODZjZWZhMmQ2ZWFlNjE0MTkxNzVhNzg4ZWQyNzYxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IEZyaSwgMjcgSnVuIDIwMjUgMTY6MDM6NTYgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbQ2xlYW51
cF0gUmVtb3ZlIExpbmVQb3NpdGlvbk1vZGUgZnJvbQogUmVuZGVyQm94TW9kZWxPYmplY3Q6Omxp
bmVIZWlnaHQKIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTUxMzAK
ClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKTGluZVBvc2l0aW9uTW9kZSBoYXMgMiB2YWx1
ZXMgUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lIGFuZCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94
ZXMuCgpQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUgaXMgdXNlZCBhdCAzIHBsYWNlcy4KLSB3ZSB1
bmNvbmRpdGlvbmFsbHkgaWdub3JlIHRoaXMgdmFsdWUgKHNlZSBSZW5kZXJJbmxpbmUgYW5kIFJl
bmRlckxpbmVCcmVhaykgYXQgMiBwbGFjZXMuCi0gUmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRp
b24gcGFzc2VzIGluIFBvc2l0aW9uT25Db250YWluaW5nTGluZSBvbmx5IHdoZW4gInRoaXMiIGlz
IF9ub3RfIGlzQmxvY2tMZXZlbFJlcGxhY2VkT3JBdG9taWNJbmxpbmUuClJlbmRlckJsb2NrOjps
aW5lSGVpZ2h0IG9ubHkgdXNlcyBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUgd2hlbiAidGhpcyIg
X2lzXyBpc0Jsb2NrTGV2ZWxSZXBsYWNlZE9yQXRvbWljSW5saW5lLgoKKE1hbnkgb3ZlcnJpZGUg
c2lnbmF0dXJlcyBhbHNvIHVzZSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUgYXMgdGhlIGRlZmF1
bHQgdmFsdWUsIGJ1dCBubyBjYWxsZXJzIHV0aWxpemVzIHRoaXMgZGVmYXVsdCBiZWhhdmlvcikK
CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NhcmV0UmVjdENvbXB1dGF0aW9uLmNwcDoKKFdl
YkNvcmU6OmNvbXB1dGVDYXJldFJlY3RGb3JFbXB0eUVsZW1lbnQpOgoqIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0LmNwcDoKKFdlYkNvcmU6OkxlZ2FjeUxpbmVMYXlv
dXQ6OmxheW91dExpbmVCb3hlcyk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcDoKKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsaW5lSGVpZ2h0IGNvbnN0KToKKFdlYkNv
cmU6OlJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRl
ckJsb2NrOjppbmxpbmVCbG9ja0Jhc2VsaW5lIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2tGbG93LmNwcDoKKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bGF5b3V0QmxvY2tXaXRoTm9D
aGlsZHJlbik6CihXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dEluRmxvd0NoaWxkcmVu
KToKKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6YWRqdXN0SW5pdGlhbExldHRlclBvc2l0aW9u
KToKKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6aW5saW5lQmxvY2tCYXNlbGluZSBjb25zdCk6
CihXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dElubGluZUNvbnRlbnQpOgoqIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwOgooV2ViQ29yZTo6UmVuZGVyQm94Ojps
aW5lSGVpZ2h0IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94Lmg6
CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0Lmg6CiogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHA6CihX
ZWJDb3JlOjpSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmxheW91dEhvcml6b250YWxCb3gp
OgooV2ViQ29yZTo6UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpsYXlvdXRWZXJ0aWNhbEJv
eCk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcDoKKFdl
YkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpwZXJmb3JtRmxleExheW91dCk6CiogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwOgooV2ViQ29yZTo6UmVuZGVyR3JpZDo6bGF5
b3V0R3JpZCk6CihXZWJDb3JlOjpSZW5kZXJHcmlkOjpsYXlvdXRNYXNvbnJ5KToKKiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcDoKKFdlYkNvcmU6OlJlbmRlcklubGlu
ZTo6bGluZUhlaWdodCBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmJhc2VsaW5lUG9z
aXRpb24gY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaDoK
KiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcDoKKFdlYkNvcmU6
OlJlbmRlckxpbmVCcmVhazo6bGluZUhlaWdodCBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJMaW5l
QnJlYWs6OmJhc2VsaW5lUG9zaXRpb24gY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaW5lQnJlYWsuaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dE1hcmtlci5jcHA6CihXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpsaW5lSGVpZ2h0IGNvbnN0
KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oOgoqIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHA6CihXZWJDb3JlOjpSZW5k
ZXJUZXh0Q29udHJvbDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQgY29uc3QpOgoqIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9saW5lL0xpbmVXaWR0aC5jcHA6CihXZWJDb3JlOjpMaW5lV2lkdGg6OnVw
ZGF0ZUF2YWlsYWJsZVdpZHRoKToKLS0tCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2FyZXRS
ZWN0Q29tcHV0YXRpb24uY3BwICAgfCAgMiArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xl
Z2FjeUxpbmVMYXlvdXQuY3BwICAgICAgIHwgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAgICAgICAgICAgICB8IDEzICsrKy0tLS0tLS0tLS0KIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oICAgICAgICAgICAgICB8ICAyICstCiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcCAgICAgICAgfCAxMCArKysr
Ky0tLS0tCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCAgICAgICAgICAg
ICAgfCAgMiArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oICAgICAgICAg
ICAgICAgIHwgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5oICAgICB8ICAzICstLQogLi4uL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGli
bGVCb3guY3BwICAgICAgIHwgIDQgKystLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZsZXhpYmxlQm94LmNwcCAgICAgIHwgIDQgKystLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckdyaWQuY3BwICAgICAgICAgICAgIHwgIDQgKystLQogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcklubGluZS5jcHAgICAgICAgICAgIHwgIDQgKystLQogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oICAgICAgICAgICAgIHwgIDIgKy0KIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwICAgICAgICB8ICA0ICsrLS0KIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaCAgICAgICAgICB8ICAyICst
CiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAgICAgICAgfCAg
NiArKystLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmggICAg
ICAgICB8ICAyICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wu
Y3BwICAgICAgfCAgMiArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZVdpZHRo
LmNwcCAgICAgICAgIHwgIDIgKy0KIDE5IGZpbGVzIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKyks
IDQwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9D
YXJldFJlY3RDb21wdXRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2FyZXRS
ZWN0Q29tcHV0YXRpb24uY3BwCmluZGV4IDEyYjg1NmVjZWIxNy4uNDk1N2ViMTdjNDRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2FyZXRSZWN0Q29tcHV0YXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DYXJldFJlY3RDb21wdXRhdGlvbi5jcHAK
QEAgLTExOCw3ICsxMTgsNyBAQCBzdGF0aWMgTGF5b3V0UmVjdCBjb21wdXRlQ2FyZXRSZWN0Rm9y
RW1wdHlFbGVtZW50KGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0JiByZQogICAgIH0KICAgICB4
ID0gc3RkOjptaW4oeCwgc3RkOjptYXg8TGF5b3V0VW5pdD4obWF4WCAtIGNhcmV0V2lkdGgoKSwg
MCkpOwogCi0gICAgYXV0byBsaW5lSGVpZ2h0ID0gcmVuZGVyZXIubGluZUhlaWdodCh0cnVlLCB3
cml0aW5nTW9kZS5pc0hvcml6b250YWwoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5l
LCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpOworICAgIGF1dG8gbGluZUhlaWdodCA9IHJl
bmRlcmVyLmxpbmVIZWlnaHQodHJ1ZSwgd3JpdGluZ01vZGUuaXNIb3Jpem9udGFsKCkgPyBIb3Jp
em9udGFsTGluZSA6IFZlcnRpY2FsTGluZSk7CiAgICAgYXV0byBoZWlnaHQgPSBzdGQ6Om1pbihs
aW5lSGVpZ2h0LCBMYXlvdXRVbml0IHsgY3VycmVudFN0eWxlLm1ldHJpY3NPZlByaW1hcnlGb250
KCkuaGVpZ2h0KCkgfSk7CiAgICAgYXV0byB5ID0gcmVuZGVyZXIuYm9yZGVyQW5kUGFkZGluZ0Jl
Zm9yZSgpICsgKGxpbmVIZWlnaHQgPiBoZWlnaHQgPyAobGluZUhlaWdodCAtIGhlaWdodCkgLyAy
IDogTGF5b3V0VW5pdCB7IH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvTGVnYWN5TGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5
TGluZUxheW91dC5jcHAKaW5kZXggMmI3YTQxNmQ4MzZlLi45OWRjNzAzNWNkMmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5jcHAKQEAgLTU3Niw3ICs1
NzYsNyBAQCB2b2lkIExlZ2FjeUxpbmVMYXlvdXQ6OmxheW91dExpbmVCb3hlcygpCiAgICAgfQog
CiAgICAgaWYgKCFsZWdhY3lSb290Qm94KCkgJiYgbV9mbG93Lmhhc0xpbmVJZkVtcHR5KCkpCi0g
ICAgICAgIG1fZmxvdy5zZXRMb2dpY2FsSGVpZ2h0KG1fZmxvdy5sb2dpY2FsSGVpZ2h0KCkgKyBt
X2Zsb3cubGluZUhlaWdodCh0cnVlLCBtX2Zsb3cuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/
IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5lLCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94
ZXMpKTsKKyAgICAgICAgbV9mbG93LnNldExvZ2ljYWxIZWlnaHQobV9mbG93LmxvZ2ljYWxIZWln
aHQoKSArIG1fZmxvdy5saW5lSGVpZ2h0KHRydWUsIG1fZmxvdy5pc0hvcml6b250YWxXcml0aW5n
TW9kZSgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmUpKTsKIH0KIAogdm9pZCBMZWdh
Y3lMaW5lTGF5b3V0OjphZGRPdmVyZmxvd0Zyb21JbmxpbmVDaGlsZHJlbigpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA5ZmZmYTU0YmI4OGUuLjA0MWYzODdi
MjY2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0yNDc0
LDE1ICsyNDc0LDggQEAgYm9vbCBSZW5kZXJCbG9jazo6aGFzTGluZUlmRW1wdHkoKSBjb25zdAog
ICAgIHJldHVybiBlbGVtZW50ICYmIGVsZW1lbnQtPmlzUm9vdEVkaXRhYmxlRWxlbWVudCgpOwog
fQogCi1MYXlvdXRVbml0IFJlbmRlckJsb2NrOjpsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBM
aW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgbGluZVBvc2l0aW9u
TW9kZSkgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyQmxvY2s6OmxpbmVIZWlnaHQoYm9vbCBmaXJz
dExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdAogewotICAgIC8vIElubGluZSBibG9ja3Mg
YXJlIHJlcGxhY2VkIGVsZW1lbnRzLiBPdGhlcndpc2UsIGp1c3QgcGFzcyBvZmYgdG8KLSAgICAv
LyB0aGUgYmFzZSBjbGFzcy4gIElmIHdlJ3JlIGJlaW5nIHF1ZXJpZWQgYXMgdGhvdWdoIHdlJ3Jl
IHRoZSByb290IGxpbmUKLSAgICAvLyBib3gsIHRoZW4gdGhlIGZhY3QgdGhhdCB3ZSdyZSBhbiBp
bmxpbmUtYmxvY2sgaXMgaXJyZWxldmFudCwgYW5kIHdlIGJlaGF2ZQotICAgIC8vIGp1c3QgbGlr
ZSBhIGJsb2NrLgotICAgIGlmIChpc0Jsb2NrTGV2ZWxSZXBsYWNlZE9yQXRvbWljSW5saW5lKCkg
JiYgbGluZVBvc2l0aW9uTW9kZSA9PSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpCi0gICAgICAg
IHJldHVybiBSZW5kZXJCb3g6OmxpbmVIZWlnaHQoZmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQ
b3NpdGlvbk1vZGUpOwotCiAgICAgYXV0byYgbGluZVN0eWxlID0gZmlyc3RMaW5lID8gZmlyc3RM
aW5lU3R5bGUoKSA6IHN0eWxlKCk7CiAgICAgcmV0dXJuIExheW91dFVuaXQ6OmZyb21GbG9hdENl
aWwobGluZVN0eWxlLmNvbXB1dGVkTGluZUhlaWdodCgpKTsKIH0KQEAgLTI1NDIsNyArMjUzNSw3
IEBAIExheW91dFVuaXQgUmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24oKSBjb25zdAogICAg
IH0KIAogICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxlKCkubWV0cmlj
c09mUHJpbWFyeUZvbnQoKTsKLSAgICByZXR1cm4gTGF5b3V0VW5pdCB7IGZvbnRNZXRyaWNzLmlu
dEFzY2VudCgpICsgKGxpbmVIZWlnaHQoZmFsc2UsIGRpcmVjdGlvbiwgUG9zaXRpb25PbkNvbnRh
aW5pbmdMaW5lKSAtIGZvbnRNZXRyaWNzLmludEhlaWdodCgpKSAvIDIgfS50b0ludCgpOworICAg
IHJldHVybiBMYXlvdXRVbml0IHsgZm9udE1ldHJpY3MuaW50QXNjZW50KCkgKyAobGluZUhlaWdo
dChmYWxzZSwgZGlyZWN0aW9uKSAtIGZvbnRNZXRyaWNzLmludEhlaWdodCgpKSAvIDIgfS50b0lu
dCgpOwogfQogCiBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJsb2NrOjpmaXJzdExp
bmVCYXNlbGluZSgpIGNvbnN0CkBAIC0yNjAyLDcgKzI1OTUsNyBAQCBzdGQ6Om9wdGlvbmFsPExh
eW91dFVuaXQ+IFJlbmRlckJsb2NrOjppbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25N
b2RlIGxpbgogICAgIGlmICghaGF2ZU5vcm1hbEZsb3dDaGlsZCAmJiBoYXNMaW5lSWZFbXB0eSgp
KSB7CiAgICAgICAgIGF1dG8mIGZvbnRNZXRyaWNzID0gZmlyc3RMaW5lU3R5bGUoKS5tZXRyaWNz
T2ZQcmltYXJ5Rm9udCgpOwogICAgICAgICByZXR1cm4gTGF5b3V0VW5pdCB7IExheW91dFVuaXQo
Zm9udE1ldHJpY3MuaW50QXNjZW50KCkKLSAgICAgICAgICAgICsgKGxpbmVIZWlnaHQodHJ1ZSwg
bGluZURpcmVjdGlvbiwgUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKSAtIGZvbnRNZXRyaWNz
LmludEhlaWdodCgpKSAvIDIKKyAgICAgICAgICAgICsgKGxpbmVIZWlnaHQodHJ1ZSwgbGluZURp
cmVjdGlvbikgLSBmb250TWV0cmljcy5pbnRIZWlnaHQoKSkgLyAyCiAgICAgICAgICAgICArIChs
aW5lRGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8gYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9w
KCkgOiBib3JkZXJSaWdodCgpICsgcGFkZGluZ1JpZ2h0KCkpKS50b0ludCgpIH07CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4IGVkMjMxMjljYzg0ZC4u
OGI1OTJkMWMzOTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApAQCAt
NjYsNyArNjYsNyBAQCBwcm90ZWN0ZWQ6CiAKIHB1YmxpYzoKICAgICAvLyBUaGVzZSB0d28gZnVu
Y3Rpb25zIGFyZSBvdmVycmlkZGVuIGZvciBpbmxpbmUtYmxvY2suCi0gICAgTGF5b3V0VW5pdCBs
aW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9u
TW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3QgZmluYWw7CisgICAgTGF5b3V0
VW5pdCBsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3Qg
ZmluYWw7CiAgICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKICAgICAvLyBGSVhNRS1CTE9DS0ZMT1c6IFJlbW92ZSB2aXJ0dWFsaXphaW9uIHdoZW4gYWxs
IGNhbGxlcnMgaGF2ZSBtb3ZlZCB0byBSZW5kZXJCbG9ja0Zsb3cKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggMmY2ZGNlMjJiZDUxLi4wMmFkNzMw
YjllZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zs
b3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3Bw
CkBAIC00NjgsNyArNDY4LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmxheW91dEJsb2NrV2l0
aE5vQ2hpbGRyZW4oKQogICAgICAgICAgICAgc2V0SGFzTWFyZ2luQmVmb3JlUXVpcmsoc3R5bGUu
bWFyZ2luQmVmb3JlKCkuaGFzUXVpcmsoKSk7CiAgICAgICAgICAgICBzZXRIYXNNYXJnaW5BZnRl
clF1aXJrKHN0eWxlLm1hcmdpbkFmdGVyKCkuaGFzUXVpcmsoKSk7CiAgICAgICAgIH0KLSAgICAg
ICAgc2V0TG9naWNhbEhlaWdodChib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpICsgc2Ny
b2xsYmFyTG9naWNhbEhlaWdodCgpICsgKGhhc0xpbmVJZkVtcHR5KCkgPyBsaW5lSGVpZ2h0KHRy
dWUsIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2Fs
TGluZSwgUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKSA6IDBfbHUpKTsKKyAgICAgICAgc2V0
TG9naWNhbEhlaWdodChib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpICsgc2Nyb2xsYmFy
TG9naWNhbEhlaWdodCgpICsgKGhhc0xpbmVJZkVtcHR5KCkgPyBsaW5lSGVpZ2h0KHRydWUsIGlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSkg
OiAwX2x1KSk7CiAgICAgICAgIHVwZGF0ZUxvZ2ljYWxIZWlnaHQoKTsKICAgICB9OwogICAgIGNv
bXB1dGVCbG9ja0F4aXNTaXplKCk7CkBAIC03ODAsNyArNzgwLDcgQEAgdm9pZCBSZW5kZXJCbG9j
a0Zsb3c6OmxheW91dEluRmxvd0NoaWxkcmVuKFJlbGF5b3V0Q2hpbGRyZW4gcmVsYXlvdXRDaGls
ZHJlbiwgTGEKIAogICAgICAgICBhdXRvIGxvZ2ljYWxIZWlnaHQgPSBib3JkZXJBbmRQYWRkaW5n
TG9naWNhbEhlaWdodCgpICsgc2Nyb2xsYmFyTG9naWNhbEhlaWdodCgpOwogICAgICAgICBpZiAo
aGFzTGluZUlmRW1wdHkoKSkKLSAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHQgKz0gbGluZUhlaWdo
dCh0cnVlLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0
aWNhbExpbmUsIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcyk7CisgICAgICAgICAgICBsb2dp
Y2FsSGVpZ2h0ICs9IGxpbmVIZWlnaHQodHJ1ZSwgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/
IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5lKTsKICAgICAgICAgc2V0TG9naWNhbEhlaWdo
dChsb2dpY2FsSGVpZ2h0KTsKIAogICAgICAgICByZXBhaW50TG9naWNhbFRvcCA9IHsgfTsKQEAg
LTI3NDksNyArMjc0OSw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjphZGp1c3RJbml0aWFsTGV0
dGVyUG9zaXRpb24oUmVuZGVyQm94JiBjaGlsZEJveCwgTGF5b3V0VW5pCiAgICAgaWYgKCFmb250
TWV0cmljcy5jYXBIZWlnaHQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTGF5b3V0VW5pdCBo
ZWlnaHRPZkxpbmUgPSBsaW5lSGVpZ2h0KHRydWUsIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkg
PyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSwgUG9zaXRpb25PZkludGVyaW9yTGluZUJv
eGVzKTsKKyAgICBMYXlvdXRVbml0IGhlaWdodE9mTGluZSA9IGxpbmVIZWlnaHQodHJ1ZSwgaXNI
b3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5lKTsK
ICAgICBMYXlvdXRVbml0IGJlZm9yZU1hcmdpbkJvcmRlclBhZGRpbmcgPSBjaGlsZEJveC5ib3Jk
ZXJBbmRQYWRkaW5nQmVmb3JlKCkgKyBjaGlsZEJveC5tYXJnaW5CZWZvcmUoKTsKICAgICAKICAg
ICAvLyBNYWtlIGFuIGFkanVzdG1lbnQgdG8gYWxpZ24gd2l0aCB0aGUgY2FwIGhlaWdodCBvZiBh
IHRoZW9yZXRpY2FsIGJsb2NrIGxpbmUuCkBAIC0zMzI2LDcgKzMzMjYsNyBAQCBzdGQ6Om9wdGlv
bmFsPExheW91dFVuaXQ+IFJlbmRlckJsb2NrRmxvdzo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5l
RGlyZWN0aW9uTW9kZQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgICAgICBjb25zdCBhdXRvJiBmb250TWV0cmljcyA9IGZpcnN0TGluZVN0eWxlKCkubWV0cmlj
c09mUHJpbWFyeUZvbnQoKTsKICAgICAgICAgICAgIHJldHVybiBMYXlvdXRVbml0IHsgTGF5b3V0
VW5pdChmb250TWV0cmljcy5pbnRBc2NlbnQoKQotICAgICAgICAgICAgICAgICsgKGxpbmVIZWln
aHQodHJ1ZSwgbGluZURpcmVjdGlvbiwgUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKSAtIGZv
bnRNZXRyaWNzLmludEhlaWdodCgpKSAvIDIKKyAgICAgICAgICAgICAgICArIChsaW5lSGVpZ2h0
KHRydWUsIGxpbmVEaXJlY3Rpb24pIC0gZm9udE1ldHJpY3MuaW50SGVpZ2h0KCkpIC8gMgogICAg
ICAgICAgICAgICAgICsgKGxpbmVEaXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUgPyBib3JkZXJU
b3AoKSArIHBhZGRpbmdUb3AoKSA6IGJvcmRlclJpZ2h0KCkgKyBwYWRkaW5nUmlnaHQoKSkpLnRv
SW50KCkgfTsKICAgICAgICAgfQogCkBAIC00MDQ1LDcgKzQwNDUsNyBAQCB2b2lkIFJlbmRlckJs
b2NrRmxvdzo6bGF5b3V0SW5saW5lQ29udGVudChSZWxheW91dENoaWxkcmVuIHJlbGF5b3V0Q2hp
bGRyZW4sIExheQogICAgIGF1dG8gcGFydGlhbFJlcGFpbnRSZWN0ID0gbGF5b3V0Rm9ybWF0dGlu
Z0NvbnRleHRMaW5lTGF5b3V0LmxheW91dChyZWxheW91dENoaWxkcmVuID09IFJlbGF5b3V0Q2hp
bGRyZW46OlllcyA/IExheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0OjpGb3JjZUZ1bGxMYXlv
dXQ6OlllcyA6IExheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0OjpGb3JjZUZ1bGxMYXlvdXQ6
Ok5vKTsKIAogICAgIGF1dG8gYm9yZGVyQm94Qm90dG9tID0gWyZdIHsKLSAgICAgICAgYXV0byBj
b250ZW50SGVpZ2h0ID0gIWhhc0xpbmVzKCkgJiYgaGFzTGluZUlmRW1wdHkoKSA/IGxpbmVIZWln
aHQodHJ1ZSwgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IEhvcml6b250YWxMaW5lIDogVmVy
dGljYWxMaW5lLCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpIDogbGF5b3V0Rm9ybWF0dGlu
Z0NvbnRleHRMaW5lTGF5b3V0LmNvbnRlbnRMb2dpY2FsSGVpZ2h0KCk7CisgICAgICAgIGF1dG8g
Y29udGVudEhlaWdodCA9ICFoYXNMaW5lcygpICYmIGhhc0xpbmVJZkVtcHR5KCkgPyBsaW5lSGVp
Z2h0KHRydWUsIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZl
cnRpY2FsTGluZSkgOiBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQuY29udGVudExv
Z2ljYWxIZWlnaHQoKTsKICAgICAgICAgcmV0dXJuIGJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKSAr
IGNvbnRlbnRIZWlnaHQgKyBib3JkZXJBbmRQYWRkaW5nQWZ0ZXIoKSArIHNjcm9sbGJhckxvZ2lj
YWxIZWlnaHQoKTsKICAgICB9OwogICAgIGF1dG8gbmV3Qm9yZGVyQm94Qm90dG9tID0gYm9yZGVy
Qm94Qm90dG9tKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDdj
OTEyMDIzNTI0OS4uYzY5NDFiNzA0ZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcApAQCAtNDk5Miw3ICs0OTkyLDcgQEAgYm9vbCBSZW5kZXJCb3g6OmlzVW5zcGxpdHRh
YmxlRm9yUGFnaW5hdGlvbigpIGNvbnN0CiAgICAgICAgIHx8IHNob3VsZEFwcGx5U2l6ZUNvbnRh
aW5tZW50KCk7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyQm94OjpsaW5lSGVpZ2h0KGJvb2wgLypm
aXJzdExpbmUqLywgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2Rl
IC8qbGluZVBvc2l0aW9uTW9kZSovKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmxpbmVI
ZWlnaHQoYm9vbCAvKmZpcnN0TGluZSovLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24pIGNv
bnN0CiB7CiAgICAgaWYgKGlzQmxvY2tMZXZlbFJlcGxhY2VkT3JBdG9taWNJbmxpbmUoKSkKICAg
ICAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IG1fbWFyZ2luQm94LnRv
cCgpICsgaGVpZ2h0KCkgKyBtX21hcmdpbkJveC5ib3R0b20oKSA6IG1fbWFyZ2luQm94LnJpZ2h0
KCkgKyB3aWR0aCgpICsgbV9tYXJnaW5Cb3gubGVmdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5oCmluZGV4IDEzMGYzMjdmYzZkOC4uMzhkNTNjMDYzODU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5oCkBAIC01MjksNyArNTI5LDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB2b2lkIG1hcmtGb3JQYWdpbmF0aW9uUmVsYXlvdXRJZk5lZWRlZCgpIHsgfQogICAg
IAotICAgIExheW91dFVuaXQgbGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlv
bk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0
IG92ZXJyaWRlOworICAgIExheW91dFVuaXQgbGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGlu
ZURpcmVjdGlvbk1vZGUpIGNvbnN0IG92ZXJyaWRlOwogICAgIExheW91dFVuaXQgYmFzZWxpbmVQ
b3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgTGF5b3V0VW5pdCBvZmZzZXRMZWZ0KCkg
Y29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hN
b2RlbE9iamVjdC5oCmluZGV4IGUxN2ZlYTk2ZjU2Ny4uY2ZmZjk3N2FmNjVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaApAQCAtMzEsNyAr
MzEsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBNb2RlcyBmb3Igc29tZSBvZiB0aGUg
bGluZS1yZWxhdGVkIGZ1bmN0aW9ucy4KLWVudW0gTGluZVBvc2l0aW9uTW9kZSB7IFBvc2l0aW9u
T25Db250YWluaW5nTGluZSwgUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzIH07CiBlbnVtIExp
bmVEaXJlY3Rpb25Nb2RlIHsgSG9yaXpvbnRhbExpbmUsIFZlcnRpY2FsTGluZSB9OwogCiBlbnVt
IGNsYXNzIEJsZWVkQXZvaWRhbmNlIDogdWludDhfdCB7CkBAIC0xOTQsNyArMTkzLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhG
b3JDb250ZW50KCkgY29uc3Q7CiAKICAgICAvLyBPdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMgdG8g
ZGV0ZXJtaW5lIGxpbmUgaGVpZ2h0IGFuZCBiYXNlbGluZSBwb3NpdGlvbi4KLSAgICB2aXJ0dWFs
IExheW91dFVuaXQgbGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUs
IExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIExheW91dFVuaXQgbGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURp
cmVjdGlvbk1vZGUpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIExheW91dFVuaXQgYmFzZWxpbmVQ
b3NpdGlvbigpIGNvbnN0ID0gMDsKIAogICAgIHZvaWQgbWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQo
T3B0aW9uU2V0PE1hcENvb3JkaW5hdGVzTW9kZT4sIFRyYW5zZm9ybVN0YXRlJikgY29uc3Qgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVj
YXRlZEZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXBy
ZWNhdGVkRmxleGlibGVCb3guY3BwCmluZGV4IGMwZjYyNzhhMWJlYS4uMGM5YmY0ZWY2OTNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhp
YmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRl
ZEZsZXhpYmxlQm94LmNwcApAQCAtNTEwLDcgKzUxMCw3IEBAIHZvaWQgUmVuZGVyRGVwcmVjYXRl
ZEZsZXhpYmxlQm94OjpsYXlvdXRIb3Jpem9udGFsQm94KFJlbGF5b3V0Q2hpbGRyZW4gcmVsYXlv
dXRDCiAgICAgICAgIEFTU0VSVChjaGlsZEluZGV4ID09IGNoaWxkTGF5b3V0RGVsdGFzLnNpemUo
KSk7CiAKICAgICAgICAgaWYgKCFpdGVyYXRvci5maXJzdCgpICYmIGhhc0xpbmVJZkVtcHR5KCkp
Ci0gICAgICAgICAgICBzZXRIZWlnaHQoaGVpZ2h0KCkgKyBsaW5lSGVpZ2h0KHRydWUsIHdyaXRp
bmdNb2RlKCkuaXNIb3Jpem9udGFsKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSwg
UG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKSk7CisgICAgICAgICAgICBzZXRIZWlnaHQoaGVp
Z2h0KCkgKyBsaW5lSGVpZ2h0KHRydWUsIHdyaXRpbmdNb2RlKCkuaXNIb3Jpem9udGFsKCkgPyBI
b3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSkpOwogCiAgICAgICAgIHNldEhlaWdodChoZWln
aHQoKSArIHRvQWRkKTsKIApAQCAtODQ4LDcgKzg0OCw3IEBAIHZvaWQgUmVuZGVyRGVwcmVjYXRl
ZEZsZXhpYmxlQm94OjpsYXlvdXRWZXJ0aWNhbEJveChSZWxheW91dENoaWxkcmVuIHJlbGF5b3V0
Q2hpCiAgICAgICAgIHlQb3MgPSBoZWlnaHQoKTsKIAogICAgICAgICBpZiAoIWl0ZXJhdG9yLmZp
cnN0KCkgJiYgaGFzTGluZUlmRW1wdHkoKSkKLSAgICAgICAgICAgIHNldEhlaWdodChoZWlnaHQo
KSArIGxpbmVIZWlnaHQodHJ1ZSwgd3JpdGluZ01vZGUoKS5pc0hvcml6b250YWwoKSA/IEhvcml6
b250YWxMaW5lIDogVmVydGljYWxMaW5lLCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpKTsK
KyAgICAgICAgICAgIHNldEhlaWdodChoZWlnaHQoKSArIGxpbmVIZWlnaHQodHJ1ZSwgd3JpdGlu
Z01vZGUoKS5pc0hvcml6b250YWwoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5lKSk7
CiAKICAgICAgICAgc2V0SGVpZ2h0KGhlaWdodCgpICsgdG9BZGQpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAppbmRleCA5NWZkN2NhZGRiN2Eu
LjdjNzc1ZGRmYmEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZsZXhpYmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxl
eGlibGVCb3guY3BwCkBAIC0xMzQzLDcgKzEzNDMsNyBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94
OjpwZXJmb3JtRmxleExheW91dChSZWxheW91dENoaWxkcmVuIHJlbGF5b3V0Q2hpbGRyZW4pCiAK
ICAgICBpZiAoYWxsSXRlbXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChoYXNMaW5lSWZFbXB0
eSgpKSB7Ci0gICAgICAgICAgICBhdXRvIG1pbkhlaWdodCA9IGJvcmRlckFuZFBhZGRpbmdMb2dp
Y2FsSGVpZ2h0KCkgKyBsaW5lSGVpZ2h0KHRydWUsIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkg
PyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSwgUG9zaXRpb25PZkludGVyaW9yTGluZUJv
eGVzKSArIHNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKTsKKyAgICAgICAgICAgIGF1dG8gbWluSGVp
Z2h0ID0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSArIGxpbmVIZWlnaHQodHJ1ZSwg
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5l
KSArIHNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKTsKICAgICAgICAgICAgIGlmIChoZWlnaHQoKSA8
IG1pbkhlaWdodCkKICAgICAgICAgICAgICAgICBzZXRMb2dpY2FsSGVpZ2h0KG1pbkhlaWdodCk7
CiAgICAgICAgIH0KQEAgLTE0MjAsNyArMTQyMCw3IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6
OnBlcmZvcm1GbGV4TGF5b3V0KFJlbGF5b3V0Q2hpbGRyZW4gcmVsYXlvdXRDaGlsZHJlbikKICAg
ICAgICAgLy8gYSBsaW5lIGJlY2F1c2UgYWxsIG91ciBjaGlsZHJlbiBtaWdodCBiZSBvdXQgb2Yg
ZmxvdyBwb3NpdGlvbmVkLgogICAgICAgICAvLyBJbnN0ZWFkIG9mIGp1c3QgY2hlY2tpbmcgaWYg
d2UgaGF2ZSBhIGxpbmUsIG1ha2Ugc3VyZSB0aGUgZmxleGJveAogICAgICAgICAvLyBoYXMgYXQg
bGVhc3QgYSBsaW5lJ3Mgd29ydGggb2YgaGVpZ2h0IHRvIGNvdmVyIHRoaXMgY2FzZS4KLSAgICAg
ICAgTGF5b3V0VW5pdCBtaW5IZWlnaHQgPSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgp
ICsgbGluZUhlaWdodCh0cnVlLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gSG9yaXpvbnRh
bExpbmUgOiBWZXJ0aWNhbExpbmUsIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcykgKyBzY3Jv
bGxiYXJMb2dpY2FsSGVpZ2h0KCk7CisgICAgICAgIExheW91dFVuaXQgbWluSGVpZ2h0ID0gYm9y
ZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSArIGxpbmVIZWlnaHQodHJ1ZSwgaXNIb3Jpem9u
dGFsV3JpdGluZ01vZGUoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5lKSArIHNjcm9s
bGJhckxvZ2ljYWxIZWlnaHQoKTsKICAgICAgICAgaWYgKHNpemUoKS5oZWlnaHQoKSA8IG1pbkhl
aWdodCkKICAgICAgICAgICAgIHNldExvZ2ljYWxIZWlnaHQobWluSGVpZ2h0KTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKaW5kZXggNGFjNjY5ODMxM2MxLi45
YTg5N2FiMGM1ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJH
cmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKQEAg
LTQ4OCw3ICs0ODgsNyBAQCB2b2lkIFJlbmRlckdyaWQ6OmxheW91dEdyaWQoUmVsYXlvdXRDaGls
ZHJlbiByZWxheW91dENoaWxkcmVuKQogICAgICAgICAvLyBHcmlkIGNvbnRhaW5lciBzaG91bGQg
aGF2ZSB0aGUgbWluaW11bSBoZWlnaHQgb2YgYSBsaW5lIGlmIGl0J3MgZWRpdGFibGUuIFRoYXQg
ZG9lcyBub3QgYWZmZWN0IHRyYWNrIHNpemluZyB0aG91Z2guCiAgICAgICAgIGlmIChoYXNMaW5l
SWZFbXB0eSgpKSB7CiAgICAgICAgICAgICBMYXlvdXRVbml0IG1pbkhlaWdodEZvckVtcHR5TGlu
ZSA9IGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCkKLSAgICAgICAgICAgICAgICArIGxp
bmVIZWlnaHQodHJ1ZSwgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IEhvcml6b250YWxMaW5l
IDogVmVydGljYWxMaW5lLCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpCisgICAgICAgICAg
ICAgICAgKyBsaW5lSGVpZ2h0KHRydWUsIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jp
em9udGFsTGluZSA6IFZlcnRpY2FsTGluZSkKICAgICAgICAgICAgICAgICArIHNjcm9sbGJhckxv
Z2ljYWxIZWlnaHQoKTsKICAgICAgICAgICAgIHNldExvZ2ljYWxIZWlnaHQoc3RkOjptYXgobG9n
aWNhbEhlaWdodCgpLCBtaW5IZWlnaHRGb3JFbXB0eUxpbmUpKTsKICAgICAgICAgfQpAQCAtNjI1
LDcgKzYyNSw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6bGF5b3V0TWFzb25yeShSZWxheW91dENoaWxk
cmVuIHJlbGF5b3V0Q2hpbGRyZW4pCiAgICAgICAgIC8vIEdyaWQgY29udGFpbmVyIHNob3VsZCBo
YXZlIHRoZSBtaW5pbXVtIGhlaWdodCBvZiBhIGxpbmUgaWYgaXQncyBlZGl0YWJsZS4gVGhhdCBk
b2VzIG5vdCBhZmZlY3QgdHJhY2sgc2l6aW5nIHRob3VnaC4KICAgICAgICAgaWYgKGhhc0xpbmVJ
ZkVtcHR5KCkpIHsKICAgICAgICAgICAgIExheW91dFVuaXQgbWluSGVpZ2h0Rm9yRW1wdHlMaW5l
ID0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKQotICAgICAgICAgICAgICAgICsgbGlu
ZUhlaWdodCh0cnVlLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gSG9yaXpvbnRhbExpbmUg
OiBWZXJ0aWNhbExpbmUsIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcykKKyAgICAgICAgICAg
ICAgICArIGxpbmVIZWlnaHQodHJ1ZSwgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IEhvcml6
b250YWxMaW5lIDogVmVydGljYWxMaW5lKQogICAgICAgICAgICAgICAgICsgc2Nyb2xsYmFyTG9n
aWNhbEhlaWdodCgpOwogICAgICAgICAgICAgc2V0TG9naWNhbEhlaWdodChzdGQ6Om1heChsb2dp
Y2FsSGVpZ2h0KCksIG1pbkhlaWdodEZvckVtcHR5TGluZSkpOwogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmluZGV4IGVjMGE1M2FkZDE2NC4uNWEz
NjFkZDc0M2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5s
aW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcApA
QCAtODE3LDcgKzgxNyw3IEBAIExlZ2FjeUlubGluZUZsb3dCb3gqIFJlbmRlcklubGluZTo6Y3Jl
YXRlQW5kQXBwZW5kSW5saW5lRmxvd0JveCgpCiAgICAgcmV0dXJuIGZsb3dCb3g7CiB9CiAKLUxh
eW91dFVuaXQgUmVuZGVySW5saW5lOjpsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGly
ZWN0aW9uTW9kZSAvKmRpcmVjdGlvbiovLCBMaW5lUG9zaXRpb25Nb2RlIC8qbGluZVBvc2l0aW9u
TW9kZSovKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJJbmxpbmU6OmxpbmVIZWlnaHQoYm9vbCBm
aXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIC8qZGlyZWN0aW9uKi8pIGNvbnN0CiB7CiAgICAg
YXV0byYgbGluZVN0eWxlID0gZmlyc3RMaW5lID8gZmlyc3RMaW5lU3R5bGUoKSA6IHN0eWxlKCk7
CiAgICAgcmV0dXJuIExheW91dFVuaXQ6OmZyb21GbG9hdENlaWwobGluZVN0eWxlLmNvbXB1dGVk
TGluZUhlaWdodCgpKTsKQEAgLTgyNiw3ICs4MjYsNyBAQCBMYXlvdXRVbml0IFJlbmRlcklubGlu
ZTo6bGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgLypkaXJlY3Rp
bwogTGF5b3V0VW5pdCBSZW5kZXJJbmxpbmU6OmJhc2VsaW5lUG9zaXRpb24oKSBjb25zdAogewog
ICAgIGF1dG8mIGZvbnRNZXRyaWNzID0gc3R5bGUoKS5tZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwot
ICAgIHJldHVybiBMYXlvdXRVbml0IHsgZm9udE1ldHJpY3MuYXNjZW50KCkgKyAobGluZUhlaWdo
dChmYWxzZSwgd3JpdGluZ01vZGUoKS5pc0hvcml6b250YWwoKSA/IEhvcml6b250YWxMaW5lIDog
VmVydGljYWxMaW5lLCBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIC0gZm9udE1ldHJpY3MuaGVp
Z2h0KCkpIC8gMiB9OworICAgIHJldHVybiBMYXlvdXRVbml0IHsgZm9udE1ldHJpY3MuYXNjZW50
KCkgKyAobGluZUhlaWdodChmYWxzZSwgd3JpdGluZ01vZGUoKS5pc0hvcml6b250YWwoKSA/IEhv
cml6b250YWxMaW5lIDogVmVydGljYWxMaW5lKSAtIGZvbnRNZXRyaWNzLmhlaWdodCgpKSAvIDIg
fTsKIH0KIAogTGF5b3V0U2l6ZSBSZW5kZXJJbmxpbmU6Om9mZnNldEZvckluRmxvd1Bvc2l0aW9u
ZWRJbmxpbmUoY29uc3QgUmVuZGVyQm94KiBjaGlsZCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbmxpbmUuaAppbmRleCA4N2NjMmE5NTlhYzMuLjI5MTQ2NDZkZjI0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaApAQCAtMTM5LDcgKzEzOSw3IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIGRpcnR5TGluZUZyb21DaGFuZ2VkQ2hpbGQoKSBmaW5hbCB7
IG1fbGVnYWN5TGluZUJveGVzLmRpcnR5TGluZUZyb21DaGFuZ2VkQ2hpbGQoKnRoaXMpOyB9CiAK
LSAgICBMYXlvdXRVbml0IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25N
b2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBm
aW5hbDsKKyAgICBMYXlvdXRVbml0IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJl
Y3Rpb25Nb2RlKSBjb25zdCBmaW5hbDsKICAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24o
KSBjb25zdCBmaW5hbDsKICAgICAKICAgICB2b2lkIHVwZGF0ZUhpdFRlc3RSZXN1bHQoSGl0VGVz
dFJlc3VsdCYsIGNvbnN0IExheW91dFBvaW50JikgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCmluZGV4IDAzOTJiMWJhNzBjZS4uZmZl
YjFkMjlhZDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlu
ZUJyZWFrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFr
LmNwcApAQCAtNTksNyArNTksNyBAQCBSZW5kZXJMaW5lQnJlYWs6On5SZW5kZXJMaW5lQnJlYWso
KQogewogfQogCi1MYXlvdXRVbml0IFJlbmRlckxpbmVCcmVhazo6bGluZUhlaWdodChib29sIGZp
cnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgLypkaXJlY3Rpb24qLywgTGluZVBvc2l0aW9uTW9k
ZSAvKmxpbmVQb3NpdGlvbk1vZGUqLykgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyTGluZUJyZWFr
OjpsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSAvKmRpcmVjdGlv
biovKSBjb25zdAogewogICAgIGlmIChmaXJzdExpbmUpIHsKICAgICAgICAgYXV0byYgZmlyc3RM
aW5lU3R5bGUgPSB0aGlzLT5maXJzdExpbmVTdHlsZSgpOwpAQCAtNzUsNyArNzUsNyBAQCBMYXlv
dXRVbml0IFJlbmRlckxpbmVCcmVhazo6bGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURp
cmVjdGlvbk1vZGUgLypkaXJlYwogTGF5b3V0VW5pdCBSZW5kZXJMaW5lQnJlYWs6OmJhc2VsaW5l
UG9zaXRpb24oKSBjb25zdAogewogICAgIGF1dG8mIGZvbnRNZXRyaWNzID0gc3R5bGUoKS5tZXRy
aWNzT2ZQcmltYXJ5Rm9udCgpOwotICAgIHJldHVybiBMYXlvdXRVbml0IHsgKGZvbnRNZXRyaWNz
LmFzY2VudCgpICsgKGxpbmVIZWlnaHQoZmFsc2UsIHdyaXRpbmdNb2RlKCkuaXNIb3Jpem9udGFs
KCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSwgUG9zaXRpb25PbkNvbnRhaW5pbmdM
aW5lKSAtIGZvbnRNZXRyaWNzLmhlaWdodCgpKSAvIDIpIH07CisgICAgcmV0dXJuIExheW91dFVu
aXQgeyAoZm9udE1ldHJpY3MuYXNjZW50KCkgKyAobGluZUhlaWdodChmYWxzZSwgd3JpdGluZ01v
ZGUoKS5pc0hvcml6b250YWwoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5lKSAtIGZv
bnRNZXRyaWNzLmhlaWdodCgpKSAvIDIpIH07CiB9CiAKIGludCBSZW5kZXJMaW5lQnJlYWs6OmNh
cmV0TWluT2Zmc2V0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaW5lQnJlYWsuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5l
QnJlYWsuaAppbmRleCAyNGUyNmY4NTkyMDIuLjE4ODViMjhjMzhiNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaApAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRl
OgogICAgIGludCBjYXJldE1heE9mZnNldCgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgY2FuQmVT
ZWxlY3Rpb25MZWFmKCkgY29uc3QgZmluYWw7CiAKLSAgICBMYXlvdXRVbml0IGxpbmVIZWlnaHQo
Ym9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlKSBjb25z
dCBmaW5hbDsKKyAgICBMYXlvdXRVbml0IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVE
aXJlY3Rpb25Nb2RlKSBjb25zdCBmaW5hbDsKICAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRp
b24oKSBjb25zdCBmaW5hbDsKIAogICAgIExheW91dFVuaXQgbWFyZ2luVG9wKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpc3RNYXJrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RN
YXJrZXIuY3BwCmluZGV4IDc1NWViNDQ1MzBmMi4uYzdkNTAzZDE2ZDhlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCkBAIC00MjIsMTEgKzQyMiwx
MSBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnVwZGF0ZUlubGluZU1hcmdpbnMoKQogICAgIG11
dGFibGVTdHlsZSgpLnNldE1hcmdpbkVuZChTdHlsZTo6TWFyZ2luRWRnZTo6Rml4ZWQgeyBtYXJn
aW5FbmQgfSk7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyTGlzdE1hcmtlcjo6bGluZUhlaWdodChi
b29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25N
b2RlIGxpbmVQb3NpdGlvbk1vZGUpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlckxpc3RNYXJrZXI6
OmxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbikg
Y29uc3QKIHsKICAgICBpZiAoIWlzSW1hZ2UoKSkKLSAgICAgICAgcmV0dXJuIG1fbGlzdEl0ZW0t
PmxpbmVIZWlnaHQoZmlyc3RMaW5lLCBkaXJlY3Rpb24sIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVC
b3hlcyk7Ci0gICAgcmV0dXJuIFJlbmRlckJveDo6bGluZUhlaWdodChmaXJzdExpbmUsIGRpcmVj
dGlvbiwgbGluZVBvc2l0aW9uTW9kZSk7CisgICAgICAgIHJldHVybiBtX2xpc3RJdGVtLT5saW5l
SGVpZ2h0KGZpcnN0TGluZSwgZGlyZWN0aW9uKTsKKyAgICByZXR1cm4gUmVuZGVyQm94OjpsaW5l
SGVpZ2h0KGZpcnN0TGluZSwgZGlyZWN0aW9uKTsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJMaXN0
TWFya2VyOjpiYXNlbGluZVBvc2l0aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGlzdE1hcmtlci5oCmluZGV4IDcwNmViYjM5NGM2Ny4uNjllZTc5YmMwNzM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmgKQEAgLTgxLDcg
KzgxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91
dFBvaW50JikgZmluYWw7CiAgICAgdm9pZCBsYXlvdXQoKSBmaW5hbDsKICAgICB2b2lkIGltYWdl
Q2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqKSBmaW5hbDsKLSAgICBMYXlv
dXRVbml0IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5l
UG9zaXRpb25Nb2RlKSBjb25zdCBmaW5hbDsKKyAgICBMYXlvdXRVbml0IGxpbmVIZWlnaHQoYm9v
bCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdCBmaW5hbDsKICAgICBMYXlvdXRV
bml0IGJhc2VsaW5lUG9zaXRpb24oKSBjb25zdCBmaW5hbDsKICAgICBMYXlvdXRSZWN0IHNlbGVj
dGlvblJlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQpIGZpbmFsOwogICAgIGJvb2wgY2Fu
QmVTZWxlY3Rpb25MZWFmKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKaW5kZXggMTIzOGI2YWMx
YjJhLi40NmQ1MGQ2NTAyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0Q29udHJvbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIFJlbmRlckJveDo6TG9naWNhbEV4
dGVudENvbXB1dGVkVmFsdWVzIFJlbmRlclRleHRDb250cm9sOjpjb21wdXRlTG9naWNhbEhlaWdo
dChMCiAKICAgICBpZiAoUmVuZGVyQm94KiBpbm5lclRleHRCb3ggPSBpbm5lclRleHQtPnJlbmRl
ckJveCgpKSB7CiAgICAgICAgIExheW91dFVuaXQgbm9uQ29udGVudEhlaWdodCA9IGlubmVyVGV4
dEJveC0+Ym9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSArIGlubmVyVGV4dEJveC0+bWFy
Z2luTG9naWNhbEhlaWdodCgpOwotICAgICAgICBsb2dpY2FsSGVpZ2h0ID0gY29tcHV0ZUNvbnRy
b2xMb2dpY2FsSGVpZ2h0KGlubmVyVGV4dEJveC0+bGluZUhlaWdodCh0cnVlLCBIb3Jpem9udGFs
TGluZSwgUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKSwgbm9uQ29udGVudEhlaWdodCk7Cisg
ICAgICAgIGxvZ2ljYWxIZWlnaHQgPSBjb21wdXRlQ29udHJvbExvZ2ljYWxIZWlnaHQoaW5uZXJU
ZXh0Qm94LT5saW5lSGVpZ2h0KHRydWUsIEhvcml6b250YWxMaW5lKSwgbm9uQ29udGVudEhlaWdo
dCk7CiAKICAgICAgICAgLy8gV2UgYXJlIGFibGUgdG8gaGF2ZSBhIGhvcml6b250YWwgc2Nyb2xs
YmFyIGlmIHRoZSBvdmVyZmxvdyBzdHlsZSBpcyBzY3JvbGwsIG9yIGlmIGl0cyBhdXRvIGFuZCB0
aGVyZSdzIG5vIHdvcmQgd3JhcC4KICAgICAgICAgYXV0byBzaG91bGRJbmNsdWRlU2Nyb2xsYmFy
SGVpZ2h0ID0gWyZdIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5l
L0xpbmVXaWR0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lV2lkdGgu
Y3BwCmluZGV4IGJhMDk3YmJlMzYyMC4uZWNlYTFkN2EyNWUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lV2lkdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9saW5lL0xpbmVXaWR0aC5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgYm9vbCBMaW5l
V2lkdGg6OmZpdHNPbkxpbmVFeGNsdWRpbmdUcmFpbGluZ0NvbGxhcHNlZFdoaXRlc3BhY2UoKSBj
b25zdAogdm9pZCBMaW5lV2lkdGg6OnVwZGF0ZUF2YWlsYWJsZVdpZHRoKCkKIHsKICAgICBMYXlv
dXRVbml0IGhlaWdodCA9IG1fYmxvY2subG9naWNhbEhlaWdodCgpOwotICAgIGF1dG8gbGluZUhl
aWdodCA9IHN0ZDo6bWF4KDBfbHUsIG1fYmxvY2subGluZUhlaWdodCh0cnVlLCBtX2Jsb2NrLmlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSwg
UG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKSk7CisgICAgYXV0byBsaW5lSGVpZ2h0ID0gc3Rk
OjptYXgoMF9sdSwgbV9ibG9jay5saW5lSGVpZ2h0KHRydWUsIG1fYmxvY2suaXNIb3Jpem9udGFs
V3JpdGluZ01vZGUoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5lKSk7CiAgICAgbV9s
ZWZ0ID0gbV9ibG9jay5sb2dpY2FsTGVmdE9mZnNldEZvckxpbmUoaGVpZ2h0LCBsaW5lSGVpZ2h0
KTsKICAgICBtX3JpZ2h0ID0gbV9ibG9jay5sb2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lKGhlaWdo
dCwgbGluZUhlaWdodCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>475688</attachid>
            <date>2025-06-28 05:40:53 -0700</date>
            <delta_ts>2025-07-01 15:34:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-295130-20250628054052.patch</filename>
            <type>text/plain</type>
            <size>26977</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBhNjk5OGIwYWFjZDY3NTVjZmM2ODA4N2ZmMWI2ZjM2ZjcwZTBiYmRjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFNhdCwgMjggSnVuIDIwMjUgMDU6NDA6MTMgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbQ2xlYW51
cF0gUmVtb3ZlIExpbmVQb3NpdGlvbk1vZGUgZnJvbQogUmVuZGVyQm94TW9kZWxPYmplY3Q6Omxp
bmVIZWlnaHQKIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTUxMzAK
ClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKTGluZVBvc2l0aW9uTW9kZSBoYXMgMiB2YWx1
ZXMgUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lIGFuZCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94
ZXMuCgpQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUgaXMgdXNlZCBhdCAzIHBsYWNlcy4KLSB3ZSB1
bmNvbmRpdGlvbmFsbHkgaWdub3JlIHRoaXMgdmFsdWUgKHNlZSBSZW5kZXJJbmxpbmUgYW5kIFJl
bmRlckxpbmVCcmVhaykgYXQgMiBwbGFjZXMuCi0gUmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRp
b24gcGFzc2VzIGluIFBvc2l0aW9uT25Db250YWluaW5nTGluZSBvbmx5IHdoZW4gInRoaXMiIGlz
IF9ub3RfIGlzQmxvY2tMZXZlbFJlcGxhY2VkT3JBdG9taWNJbmxpbmUuClJlbmRlckJsb2NrOjps
aW5lSGVpZ2h0IG9ubHkgdXNlcyBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUgd2hlbiAidGhpcyIg
X2lzXyBpc0Jsb2NrTGV2ZWxSZXBsYWNlZE9yQXRvbWljSW5saW5lLgoKKE1hbnkgb3ZlcnJpZGUg
c2lnbmF0dXJlcyBhbHNvIHVzZSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUgYXMgdGhlIGRlZmF1
bHQgdmFsdWUsIGJ1dCBubyBjYWxsZXJzIHV0aWxpemVzIHRoaXMgZGVmYXVsdCBiZWhhdmlvcikK
CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NhcmV0UmVjdENvbXB1dGF0aW9uLmNwcDoKKFdl
YkNvcmU6OmNvbXB1dGVDYXJldFJlY3RGb3JFbXB0eUVsZW1lbnQpOgoqIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0LmNwcDoKKFdlYkNvcmU6OkxlZ2FjeUxpbmVMYXlv
dXQ6OmxheW91dExpbmVCb3hlcyk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcDoKKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsaW5lSGVpZ2h0IGNvbnN0KToKKFdlYkNv
cmU6OlJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRl
ckJsb2NrOjppbmxpbmVCbG9ja0Jhc2VsaW5lIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2tGbG93LmNwcDoKKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bGF5b3V0QmxvY2tXaXRoTm9D
aGlsZHJlbik6CihXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dEluRmxvd0NoaWxkcmVu
KToKKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6YWRqdXN0SW5pdGlhbExldHRlclBvc2l0aW9u
KToKKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6aW5saW5lQmxvY2tCYXNlbGluZSBjb25zdCk6
CihXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dElubGluZUNvbnRlbnQpOgoqIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwOgooV2ViQ29yZTo6UmVuZGVyQm94Ojps
aW5lSGVpZ2h0IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94Lmg6
CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0Lmg6CiogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHA6CihX
ZWJDb3JlOjpSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmxheW91dEhvcml6b250YWxCb3gp
OgooV2ViQ29yZTo6UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpsYXlvdXRWZXJ0aWNhbEJv
eCk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcDoKKFdl
YkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpwZXJmb3JtRmxleExheW91dCk6CiogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwOgooV2ViQ29yZTo6UmVuZGVyR3JpZDo6bGF5
b3V0R3JpZCk6CihXZWJDb3JlOjpSZW5kZXJHcmlkOjpsYXlvdXRNYXNvbnJ5KToKKiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcDoKKFdlYkNvcmU6OlJlbmRlcklubGlu
ZTo6bGluZUhlaWdodCBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmJhc2VsaW5lUG9z
aXRpb24gY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaDoK
KiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcDoKKFdlYkNvcmU6
OlJlbmRlckxpbmVCcmVhazo6bGluZUhlaWdodCBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJMaW5l
QnJlYWs6OmJhc2VsaW5lUG9zaXRpb24gY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaW5lQnJlYWsuaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dE1hcmtlci5jcHA6CihXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpsaW5lSGVpZ2h0IGNvbnN0
KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oOgoqIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHA6CihXZWJDb3JlOjpSZW5k
ZXJUZXh0Q29udHJvbDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQgY29uc3QpOgoqIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9saW5lL0xpbmVXaWR0aC5jcHA6CihXZWJDb3JlOjpMaW5lV2lkdGg6OnVw
ZGF0ZUF2YWlsYWJsZVdpZHRoKToKLS0tCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2FyZXRS
ZWN0Q29tcHV0YXRpb24uY3BwICAgfCAgMiArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xl
Z2FjeUxpbmVMYXlvdXQuY3BwICAgICAgIHwgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAgICAgICAgICAgICB8IDEzICsrKy0tLS0tLS0tLS0KIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oICAgICAgICAgICAgICB8ICAyICstCiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcCAgICAgICAgfCAxMCArKysr
Ky0tLS0tCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCAgICAgICAgICAg
ICAgfCAgMiArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oICAgICAgICAg
ICAgICAgIHwgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5oICAgICB8ICAzICstLQogLi4uL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGli
bGVCb3guY3BwICAgICAgIHwgIDQgKystLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZsZXhpYmxlQm94LmNwcCAgICAgIHwgIDQgKystLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckdyaWQuY3BwICAgICAgICAgICAgIHwgIDQgKystLQogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcklubGluZS5jcHAgICAgICAgICAgIHwgIDQgKystLQogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oICAgICAgICAgICAgIHwgIDIgKy0KIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwICAgICAgICB8ICA0ICsrLS0KIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaCAgICAgICAgICB8ICAyICst
CiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAgICAgICAgfCAg
NiArKystLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmggICAg
ICAgICB8ICAyICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wu
Y3BwICAgICAgfCAgMiArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZVdpZHRo
LmNwcCAgICAgICAgIHwgIDIgKy0KIDE5IGZpbGVzIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKyks
IDQwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9D
YXJldFJlY3RDb21wdXRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2FyZXRS
ZWN0Q29tcHV0YXRpb24uY3BwCmluZGV4IDEyYjg1NmVjZWIxNy4uNDk1N2ViMTdjNDRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2FyZXRSZWN0Q29tcHV0YXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DYXJldFJlY3RDb21wdXRhdGlvbi5jcHAK
QEAgLTExOCw3ICsxMTgsNyBAQCBzdGF0aWMgTGF5b3V0UmVjdCBjb21wdXRlQ2FyZXRSZWN0Rm9y
RW1wdHlFbGVtZW50KGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0JiByZQogICAgIH0KICAgICB4
ID0gc3RkOjptaW4oeCwgc3RkOjptYXg8TGF5b3V0VW5pdD4obWF4WCAtIGNhcmV0V2lkdGgoKSwg
MCkpOwogCi0gICAgYXV0byBsaW5lSGVpZ2h0ID0gcmVuZGVyZXIubGluZUhlaWdodCh0cnVlLCB3
cml0aW5nTW9kZS5pc0hvcml6b250YWwoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5l
LCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpOworICAgIGF1dG8gbGluZUhlaWdodCA9IHJl
bmRlcmVyLmxpbmVIZWlnaHQodHJ1ZSwgd3JpdGluZ01vZGUuaXNIb3Jpem9udGFsKCkgPyBIb3Jp
em9udGFsTGluZSA6IFZlcnRpY2FsTGluZSk7CiAgICAgYXV0byBoZWlnaHQgPSBzdGQ6Om1pbihs
aW5lSGVpZ2h0LCBMYXlvdXRVbml0IHsgY3VycmVudFN0eWxlLm1ldHJpY3NPZlByaW1hcnlGb250
KCkuaGVpZ2h0KCkgfSk7CiAgICAgYXV0byB5ID0gcmVuZGVyZXIuYm9yZGVyQW5kUGFkZGluZ0Jl
Zm9yZSgpICsgKGxpbmVIZWlnaHQgPiBoZWlnaHQgPyAobGluZUhlaWdodCAtIGhlaWdodCkgLyAy
IDogTGF5b3V0VW5pdCB7IH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvTGVnYWN5TGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5
TGluZUxheW91dC5jcHAKaW5kZXggMmI3YTQxNmQ4MzZlLi45OWRjNzAzNWNkMmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5jcHAKQEAgLTU3Niw3ICs1
NzYsNyBAQCB2b2lkIExlZ2FjeUxpbmVMYXlvdXQ6OmxheW91dExpbmVCb3hlcygpCiAgICAgfQog
CiAgICAgaWYgKCFsZWdhY3lSb290Qm94KCkgJiYgbV9mbG93Lmhhc0xpbmVJZkVtcHR5KCkpCi0g
ICAgICAgIG1fZmxvdy5zZXRMb2dpY2FsSGVpZ2h0KG1fZmxvdy5sb2dpY2FsSGVpZ2h0KCkgKyBt
X2Zsb3cubGluZUhlaWdodCh0cnVlLCBtX2Zsb3cuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/
IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5lLCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94
ZXMpKTsKKyAgICAgICAgbV9mbG93LnNldExvZ2ljYWxIZWlnaHQobV9mbG93LmxvZ2ljYWxIZWln
aHQoKSArIG1fZmxvdy5saW5lSGVpZ2h0KHRydWUsIG1fZmxvdy5pc0hvcml6b250YWxXcml0aW5n
TW9kZSgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmUpKTsKIH0KIAogdm9pZCBMZWdh
Y3lMaW5lTGF5b3V0OjphZGRPdmVyZmxvd0Zyb21JbmxpbmVDaGlsZHJlbigpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA2ZTcwY2Q1YzZhMWMuLjBiODlmNGEx
ZDlhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0yNDc0
LDE1ICsyNDc0LDggQEAgYm9vbCBSZW5kZXJCbG9jazo6aGFzTGluZUlmRW1wdHkoKSBjb25zdAog
ICAgIHJldHVybiBlbGVtZW50ICYmIGVsZW1lbnQtPmlzUm9vdEVkaXRhYmxlRWxlbWVudCgpOwog
fQogCi1MYXlvdXRVbml0IFJlbmRlckJsb2NrOjpsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBM
aW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgbGluZVBvc2l0aW9u
TW9kZSkgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyQmxvY2s6OmxpbmVIZWlnaHQoYm9vbCBmaXJz
dExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdAogewotICAgIC8vIElubGluZSBibG9ja3Mg
YXJlIHJlcGxhY2VkIGVsZW1lbnRzLiBPdGhlcndpc2UsIGp1c3QgcGFzcyBvZmYgdG8KLSAgICAv
LyB0aGUgYmFzZSBjbGFzcy4gIElmIHdlJ3JlIGJlaW5nIHF1ZXJpZWQgYXMgdGhvdWdoIHdlJ3Jl
IHRoZSByb290IGxpbmUKLSAgICAvLyBib3gsIHRoZW4gdGhlIGZhY3QgdGhhdCB3ZSdyZSBhbiBp
bmxpbmUtYmxvY2sgaXMgaXJyZWxldmFudCwgYW5kIHdlIGJlaGF2ZQotICAgIC8vIGp1c3QgbGlr
ZSBhIGJsb2NrLgotICAgIGlmIChpc0Jsb2NrTGV2ZWxSZXBsYWNlZE9yQXRvbWljSW5saW5lKCkg
JiYgbGluZVBvc2l0aW9uTW9kZSA9PSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpCi0gICAgICAg
IHJldHVybiBSZW5kZXJCb3g6OmxpbmVIZWlnaHQoZmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQ
b3NpdGlvbk1vZGUpOwotCiAgICAgYXV0byYgbGluZVN0eWxlID0gZmlyc3RMaW5lID8gZmlyc3RM
aW5lU3R5bGUoKSA6IHN0eWxlKCk7CiAgICAgcmV0dXJuIExheW91dFVuaXQ6OmZyb21GbG9hdENl
aWwobGluZVN0eWxlLmNvbXB1dGVkTGluZUhlaWdodCgpKTsKIH0KQEAgLTI1NDIsNyArMjUzNSw3
IEBAIExheW91dFVuaXQgUmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24oKSBjb25zdAogICAg
IH0KIAogICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxlKCkubWV0cmlj
c09mUHJpbWFyeUZvbnQoKTsKLSAgICByZXR1cm4gTGF5b3V0VW5pdCB7IGZvbnRNZXRyaWNzLmlu
dEFzY2VudCgpICsgKGxpbmVIZWlnaHQodHJ1ZSwgZGlyZWN0aW9uLCBQb3NpdGlvbk9uQ29udGFp
bmluZ0xpbmUpIC0gZm9udE1ldHJpY3MuaW50SGVpZ2h0KCkpIC8gMiB9LnRvSW50KCk7CisgICAg
cmV0dXJuIExheW91dFVuaXQgeyBmb250TWV0cmljcy5pbnRBc2NlbnQoKSArIChsaW5lSGVpZ2h0
KHRydWUsIGRpcmVjdGlvbikgLSBmb250TWV0cmljcy5pbnRIZWlnaHQoKSkgLyAyIH0udG9JbnQo
KTsKIH0KIAogc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9jazo6Zmlyc3RMaW5l
QmFzZWxpbmUoKSBjb25zdApAQCAtMjYwMiw3ICsyNTk1LDcgQEAgc3RkOjpvcHRpb25hbDxMYXlv
dXRVbml0PiBSZW5kZXJCbG9jazo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9k
ZSBsaW4KICAgICBpZiAoIWhhdmVOb3JtYWxGbG93Q2hpbGQgJiYgaGFzTGluZUlmRW1wdHkoKSkg
ewogICAgICAgICBhdXRvJiBmb250TWV0cmljcyA9IGZpcnN0TGluZVN0eWxlKCkubWV0cmljc09m
UHJpbWFyeUZvbnQoKTsKICAgICAgICAgcmV0dXJuIExheW91dFVuaXQgeyBMYXlvdXRVbml0KGZv
bnRNZXRyaWNzLmludEFzY2VudCgpCi0gICAgICAgICAgICArIChsaW5lSGVpZ2h0KHRydWUsIGxp
bmVEaXJlY3Rpb24sIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcykgLSBmb250TWV0cmljcy5p
bnRIZWlnaHQoKSkgLyAyCisgICAgICAgICAgICArIChsaW5lSGVpZ2h0KHRydWUsIGxpbmVEaXJl
Y3Rpb24pIC0gZm9udE1ldHJpY3MuaW50SGVpZ2h0KCkpIC8gMgogICAgICAgICAgICAgKyAobGlu
ZURpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgp
IDogYm9yZGVyUmlnaHQoKSArIHBhZGRpbmdSaWdodCgpKSkudG9JbnQoKSB9OwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCBlZDIzMTI5Y2M4NGQuLjhi
NTkyZDFjMzk3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAgLTY2
LDcgKzY2LDcgQEAgcHJvdGVjdGVkOgogCiBwdWJsaWM6CiAgICAgLy8gVGhlc2UgdHdvIGZ1bmN0
aW9ucyBhcmUgb3ZlcnJpZGRlbiBmb3IgaW5saW5lLWJsb2NrLgotICAgIExheW91dFVuaXQgbGlu
ZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1v
ZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IGZpbmFsOworICAgIExheW91dFVu
aXQgbGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IGZp
bmFsOwogICAgIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgLy8gRklYTUUtQkxPQ0tGTE9XOiBSZW1vdmUgdmlydHVhbGl6YWlvbiB3aGVuIGFsbCBj
YWxsZXJzIGhhdmUgbW92ZWQgdG8gUmVuZGVyQmxvY2tGbG93CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCmluZGV4IDJmNmRjZTIyYmQ1MS4uMDJhZDczMGI5
ZWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApA
QCAtNDY4LDcgKzQ2OCw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRCbG9ja1dpdGhO
b0NoaWxkcmVuKCkKICAgICAgICAgICAgIHNldEhhc01hcmdpbkJlZm9yZVF1aXJrKHN0eWxlLm1h
cmdpbkJlZm9yZSgpLmhhc1F1aXJrKCkpOwogICAgICAgICAgICAgc2V0SGFzTWFyZ2luQWZ0ZXJR
dWlyayhzdHlsZS5tYXJnaW5BZnRlcigpLmhhc1F1aXJrKCkpOwogICAgICAgICB9Ci0gICAgICAg
IHNldExvZ2ljYWxIZWlnaHQoYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSArIHNjcm9s
bGJhckxvZ2ljYWxIZWlnaHQoKSArIChoYXNMaW5lSWZFbXB0eSgpID8gbGluZUhlaWdodCh0cnVl
LCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExp
bmUsIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcykgOiAwX2x1KSk7CisgICAgICAgIHNldExv
Z2ljYWxIZWlnaHQoYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSArIHNjcm9sbGJhckxv
Z2ljYWxIZWlnaHQoKSArIChoYXNMaW5lSWZFbXB0eSgpID8gbGluZUhlaWdodCh0cnVlLCBpc0hv
cml6b250YWxXcml0aW5nTW9kZSgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmUpIDog
MF9sdSkpOwogICAgICAgICB1cGRhdGVMb2dpY2FsSGVpZ2h0KCk7CiAgICAgfTsKICAgICBjb21w
dXRlQmxvY2tBeGlzU2l6ZSgpOwpAQCAtNzgwLDcgKzc4MCw3IEBAIHZvaWQgUmVuZGVyQmxvY2tG
bG93OjpsYXlvdXRJbkZsb3dDaGlsZHJlbihSZWxheW91dENoaWxkcmVuIHJlbGF5b3V0Q2hpbGRy
ZW4sIExhCiAKICAgICAgICAgYXV0byBsb2dpY2FsSGVpZ2h0ID0gYm9yZGVyQW5kUGFkZGluZ0xv
Z2ljYWxIZWlnaHQoKSArIHNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKTsKICAgICAgICAgaWYgKGhh
c0xpbmVJZkVtcHR5KCkpCi0gICAgICAgICAgICBsb2dpY2FsSGVpZ2h0ICs9IGxpbmVIZWlnaHQo
dHJ1ZSwgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGlj
YWxMaW5lLCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpOworICAgICAgICAgICAgbG9naWNh
bEhlaWdodCArPSBsaW5lSGVpZ2h0KHRydWUsIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBI
b3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSk7CiAgICAgICAgIHNldExvZ2ljYWxIZWlnaHQo
bG9naWNhbEhlaWdodCk7CiAKICAgICAgICAgcmVwYWludExvZ2ljYWxUb3AgPSB7IH07CkBAIC0y
NzQ5LDcgKzI3NDksNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6YWRqdXN0SW5pdGlhbExldHRl
clBvc2l0aW9uKFJlbmRlckJveCYgY2hpbGRCb3gsIExheW91dFVuaQogICAgIGlmICghZm9udE1l
dHJpY3MuY2FwSGVpZ2h0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIExheW91dFVuaXQgaGVp
Z2h0T2ZMaW5lID0gbGluZUhlaWdodCh0cnVlLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8g
SG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmUsIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hl
cyk7CisgICAgTGF5b3V0VW5pdCBoZWlnaHRPZkxpbmUgPSBsaW5lSGVpZ2h0KHRydWUsIGlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSk7CiAg
ICAgTGF5b3V0VW5pdCBiZWZvcmVNYXJnaW5Cb3JkZXJQYWRkaW5nID0gY2hpbGRCb3guYm9yZGVy
QW5kUGFkZGluZ0JlZm9yZSgpICsgY2hpbGRCb3gubWFyZ2luQmVmb3JlKCk7CiAgICAgCiAgICAg
Ly8gTWFrZSBhbiBhZGp1c3RtZW50IHRvIGFsaWduIHdpdGggdGhlIGNhcCBoZWlnaHQgb2YgYSB0
aGVvcmV0aWNhbCBibG9jayBsaW5lLgpAQCAtMzMyNiw3ICszMzI2LDcgQEAgc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0PiBSZW5kZXJCbG9ja0Zsb3c6OmlubGluZUJsb2NrQmFzZWxpbmUoTGluZURp
cmVjdGlvbk1vZGUKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICAgICAgY29uc3QgYXV0byYgZm9udE1ldHJpY3MgPSBmaXJzdExpbmVTdHlsZSgpLm1ldHJpY3NP
ZlByaW1hcnlGb250KCk7CiAgICAgICAgICAgICByZXR1cm4gTGF5b3V0VW5pdCB7IExheW91dFVu
aXQoZm9udE1ldHJpY3MuaW50QXNjZW50KCkKLSAgICAgICAgICAgICAgICArIChsaW5lSGVpZ2h0
KHRydWUsIGxpbmVEaXJlY3Rpb24sIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcykgLSBmb250
TWV0cmljcy5pbnRIZWlnaHQoKSkgLyAyCisgICAgICAgICAgICAgICAgKyAobGluZUhlaWdodCh0
cnVlLCBsaW5lRGlyZWN0aW9uKSAtIGZvbnRNZXRyaWNzLmludEhlaWdodCgpKSAvIDIKICAgICAg
ICAgICAgICAgICArIChsaW5lRGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8gYm9yZGVyVG9w
KCkgKyBwYWRkaW5nVG9wKCkgOiBib3JkZXJSaWdodCgpICsgcGFkZGluZ1JpZ2h0KCkpKS50b0lu
dCgpIH07CiAgICAgICAgIH0KIApAQCAtNDA0NSw3ICs0MDQ1LDcgQEAgdm9pZCBSZW5kZXJCbG9j
a0Zsb3c6OmxheW91dElubGluZUNvbnRlbnQoUmVsYXlvdXRDaGlsZHJlbiByZWxheW91dENoaWxk
cmVuLCBMYXkKICAgICBhdXRvIHBhcnRpYWxSZXBhaW50UmVjdCA9IGxheW91dEZvcm1hdHRpbmdD
b250ZXh0TGluZUxheW91dC5sYXlvdXQocmVsYXlvdXRDaGlsZHJlbiA9PSBSZWxheW91dENoaWxk
cmVuOjpZZXMgPyBMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6Rm9yY2VGdWxsTGF5b3V0
OjpZZXMgOiBMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6Rm9yY2VGdWxsTGF5b3V0OjpO
byk7CiAKICAgICBhdXRvIGJvcmRlckJveEJvdHRvbSA9IFsmXSB7Ci0gICAgICAgIGF1dG8gY29u
dGVudEhlaWdodCA9ICFoYXNMaW5lcygpICYmIGhhc0xpbmVJZkVtcHR5KCkgPyBsaW5lSGVpZ2h0
KHRydWUsIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRp
Y2FsTGluZSwgUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKSA6IGxheW91dEZvcm1hdHRpbmdD
b250ZXh0TGluZUxheW91dC5jb250ZW50TG9naWNhbEhlaWdodCgpOworICAgICAgICBhdXRvIGNv
bnRlbnRIZWlnaHQgPSAhaGFzTGluZXMoKSAmJiBoYXNMaW5lSWZFbXB0eSgpID8gbGluZUhlaWdo
dCh0cnVlLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0
aWNhbExpbmUpIDogbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LmNvbnRlbnRMb2dp
Y2FsSGVpZ2h0KCk7CiAgICAgICAgIHJldHVybiBib3JkZXJBbmRQYWRkaW5nQmVmb3JlKCkgKyBj
b250ZW50SGVpZ2h0ICsgYm9yZGVyQW5kUGFkZGluZ0FmdGVyKCkgKyBzY3JvbGxiYXJMb2dpY2Fs
SGVpZ2h0KCk7CiAgICAgfTsKICAgICBhdXRvIG5ld0JvcmRlckJveEJvdHRvbSA9IGJvcmRlckJv
eEJvdHRvbSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCA3Yzkx
MjAyMzUyNDkuLmM2OTQxYjcwNGQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHAKQEAgLTQ5OTIsNyArNDk5Miw3IEBAIGJvb2wgUmVuZGVyQm94Ojppc1Vuc3BsaXR0YWJs
ZUZvclBhZ2luYXRpb24oKSBjb25zdAogICAgICAgICB8fCBzaG91bGRBcHBseVNpemVDb250YWlu
bWVudCgpOwogfQogCi1MYXlvdXRVbml0IFJlbmRlckJveDo6bGluZUhlaWdodChib29sIC8qZmly
c3RMaW5lKi8sIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSAv
KmxpbmVQb3NpdGlvbk1vZGUqLykgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyQm94OjpsaW5lSGVp
Z2h0KGJvb2wgLypmaXJzdExpbmUqLywgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uKSBjb25z
dAogewogICAgIGlmIChpc0Jsb2NrTGV2ZWxSZXBsYWNlZE9yQXRvbWljSW5saW5lKCkpCiAgICAg
ICAgIHJldHVybiBkaXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUgPyBtX21hcmdpbkJveC50b3Ao
KSArIGhlaWdodCgpICsgbV9tYXJnaW5Cb3guYm90dG9tKCkgOiBtX21hcmdpbkJveC5yaWdodCgp
ICsgd2lkdGgoKSArIG1fbWFyZ2luQm94LmxlZnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guaAppbmRleCAxMzBmMzI3ZmM2ZDguLjM4ZDUzYzA2Mzg1NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guaApAQCAtNTI5LDcgKzUyOSw3IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgdm9pZCBtYXJrRm9yUGFnaW5hdGlvblJlbGF5b3V0SWZOZWVkZWQoKSB7IH0KICAgICAK
LSAgICBMYXlvdXRVbml0IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25N
b2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBv
dmVycmlkZTsKKyAgICBMYXlvdXRVbml0IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVE
aXJlY3Rpb25Nb2RlKSBjb25zdCBvdmVycmlkZTsKICAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9z
aXRpb24oKSBjb25zdCBvdmVycmlkZTsKIAogICAgIExheW91dFVuaXQgb2Zmc2V0TGVmdCgpIGNv
bnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveE1vZGVsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuaAppbmRleCBlMTdmZWE5NmY1NjcuLmNmZmY5NzdhZjY1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKQEAgLTMxLDcgKzMx
LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gTW9kZXMgZm9yIHNvbWUgb2YgdGhlIGxp
bmUtcmVsYXRlZCBmdW5jdGlvbnMuCi1lbnVtIExpbmVQb3NpdGlvbk1vZGUgeyBQb3NpdGlvbk9u
Q29udGFpbmluZ0xpbmUsIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcyB9OwogZW51bSBMaW5l
RGlyZWN0aW9uTW9kZSB7IEhvcml6b250YWxMaW5lLCBWZXJ0aWNhbExpbmUgfTsKIAogZW51bSBj
bGFzcyBCbGVlZEF2b2lkYW5jZSA6IHVpbnQ4X3QgewpAQCAtMTk0LDcgKzE5Myw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIExheW91dFVuaXQgY29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9y
Q29udGVudCgpIGNvbnN0OwogCiAgICAgLy8gT3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzIHRvIGRl
dGVybWluZSBsaW5lIGhlaWdodCBhbmQgYmFzZWxpbmUgcG9zaXRpb24uCi0gICAgdmlydHVhbCBM
YXlvdXRVbml0IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBM
aW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBMYXlvdXRVbml0IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJl
Y3Rpb25Nb2RlKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IGJhc2VsaW5lUG9z
aXRpb24oKSBjb25zdCA9IDA7CiAKICAgICB2b2lkIG1hcEFic29sdXRlVG9Mb2NhbFBvaW50KE9w
dGlvblNldDxNYXBDb29yZGluYXRlc01vZGU+LCBUcmFuc2Zvcm1TdGF0ZSYpIGNvbnN0IG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0
ZWRGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVj
YXRlZEZsZXhpYmxlQm94LmNwcAppbmRleCBjMGY2Mjc4YTFiZWEuLjBjOWJmNGVmNjkzYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJs
ZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRG
bGV4aWJsZUJveC5jcHAKQEAgLTUxMCw3ICs1MTAsNyBAQCB2b2lkIFJlbmRlckRlcHJlY2F0ZWRG
bGV4aWJsZUJveDo6bGF5b3V0SG9yaXpvbnRhbEJveChSZWxheW91dENoaWxkcmVuIHJlbGF5b3V0
QwogICAgICAgICBBU1NFUlQoY2hpbGRJbmRleCA9PSBjaGlsZExheW91dERlbHRhcy5zaXplKCkp
OwogCiAgICAgICAgIGlmICghaXRlcmF0b3IuZmlyc3QoKSAmJiBoYXNMaW5lSWZFbXB0eSgpKQot
ICAgICAgICAgICAgc2V0SGVpZ2h0KGhlaWdodCgpICsgbGluZUhlaWdodCh0cnVlLCB3cml0aW5n
TW9kZSgpLmlzSG9yaXpvbnRhbCgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmUsIFBv
c2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcykpOworICAgICAgICAgICAgc2V0SGVpZ2h0KGhlaWdo
dCgpICsgbGluZUhlaWdodCh0cnVlLCB3cml0aW5nTW9kZSgpLmlzSG9yaXpvbnRhbCgpID8gSG9y
aXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmUpKTsKIAogICAgICAgICBzZXRIZWlnaHQoaGVpZ2h0
KCkgKyB0b0FkZCk7CiAKQEAgLTg0OCw3ICs4NDgsNyBAQCB2b2lkIFJlbmRlckRlcHJlY2F0ZWRG
bGV4aWJsZUJveDo6bGF5b3V0VmVydGljYWxCb3goUmVsYXlvdXRDaGlsZHJlbiByZWxheW91dENo
aQogICAgICAgICB5UG9zID0gaGVpZ2h0KCk7CiAKICAgICAgICAgaWYgKCFpdGVyYXRvci5maXJz
dCgpICYmIGhhc0xpbmVJZkVtcHR5KCkpCi0gICAgICAgICAgICBzZXRIZWlnaHQoaGVpZ2h0KCkg
KyBsaW5lSGVpZ2h0KHRydWUsIHdyaXRpbmdNb2RlKCkuaXNIb3Jpem9udGFsKCkgPyBIb3Jpem9u
dGFsTGluZSA6IFZlcnRpY2FsTGluZSwgUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKSk7Cisg
ICAgICAgICAgICBzZXRIZWlnaHQoaGVpZ2h0KCkgKyBsaW5lSGVpZ2h0KHRydWUsIHdyaXRpbmdN
b2RlKCkuaXNIb3Jpem9udGFsKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSkpOwog
CiAgICAgICAgIHNldEhlaWdodChoZWlnaHQoKSArIHRvQWRkKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKaW5kZXggOTVmZDdjYWRkYjdhLi43
Yzc3NWRkZmJhMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
bGV4aWJsZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhp
YmxlQm94LmNwcApAQCAtMTM0Myw3ICsxMzQzLDcgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6
cGVyZm9ybUZsZXhMYXlvdXQoUmVsYXlvdXRDaGlsZHJlbiByZWxheW91dENoaWxkcmVuKQogCiAg
ICAgaWYgKGFsbEl0ZW1zLmlzRW1wdHkoKSkgewogICAgICAgICBpZiAoaGFzTGluZUlmRW1wdHko
KSkgewotICAgICAgICAgICAgYXV0byBtaW5IZWlnaHQgPSBib3JkZXJBbmRQYWRkaW5nTG9naWNh
bEhlaWdodCgpICsgbGluZUhlaWdodCh0cnVlLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8g
SG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmUsIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hl
cykgKyBzY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCk7CisgICAgICAgICAgICBhdXRvIG1pbkhlaWdo
dCA9IGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCkgKyBsaW5lSGVpZ2h0KHRydWUsIGlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSkg
KyBzY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCk7CiAgICAgICAgICAgICBpZiAoaGVpZ2h0KCkgPCBt
aW5IZWlnaHQpCiAgICAgICAgICAgICAgICAgc2V0TG9naWNhbEhlaWdodChtaW5IZWlnaHQpOwog
ICAgICAgICB9CkBAIC0xNDIwLDcgKzE0MjAsNyBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94Ojpw
ZXJmb3JtRmxleExheW91dChSZWxheW91dENoaWxkcmVuIHJlbGF5b3V0Q2hpbGRyZW4pCiAgICAg
ICAgIC8vIGEgbGluZSBiZWNhdXNlIGFsbCBvdXIgY2hpbGRyZW4gbWlnaHQgYmUgb3V0IG9mIGZs
b3cgcG9zaXRpb25lZC4KICAgICAgICAgLy8gSW5zdGVhZCBvZiBqdXN0IGNoZWNraW5nIGlmIHdl
IGhhdmUgYSBsaW5lLCBtYWtlIHN1cmUgdGhlIGZsZXhib3gKICAgICAgICAgLy8gaGFzIGF0IGxl
YXN0IGEgbGluZSdzIHdvcnRoIG9mIGhlaWdodCB0byBjb3ZlciB0aGlzIGNhc2UuCi0gICAgICAg
IExheW91dFVuaXQgbWluSGVpZ2h0ID0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSAr
IGxpbmVIZWlnaHQodHJ1ZSwgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IEhvcml6b250YWxM
aW5lIDogVmVydGljYWxMaW5lLCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpICsgc2Nyb2xs
YmFyTG9naWNhbEhlaWdodCgpOworICAgICAgICBMYXlvdXRVbml0IG1pbkhlaWdodCA9IGJvcmRl
ckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCkgKyBsaW5lSGVpZ2h0KHRydWUsIGlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSkgKyBzY3JvbGxi
YXJMb2dpY2FsSGVpZ2h0KCk7CiAgICAgICAgIGlmIChzaXplKCkuaGVpZ2h0KCkgPCBtaW5IZWln
aHQpCiAgICAgICAgICAgICBzZXRMb2dpY2FsSGVpZ2h0KG1pbkhlaWdodCk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCmluZGV4IDRhYzY2OTgzMTNjMS4uOWE4
OTdhYjBjNWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3Jp
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC00
ODgsNyArNDg4LDcgQEAgdm9pZCBSZW5kZXJHcmlkOjpsYXlvdXRHcmlkKFJlbGF5b3V0Q2hpbGRy
ZW4gcmVsYXlvdXRDaGlsZHJlbikKICAgICAgICAgLy8gR3JpZCBjb250YWluZXIgc2hvdWxkIGhh
dmUgdGhlIG1pbmltdW0gaGVpZ2h0IG9mIGEgbGluZSBpZiBpdCdzIGVkaXRhYmxlLiBUaGF0IGRv
ZXMgbm90IGFmZmVjdCB0cmFjayBzaXppbmcgdGhvdWdoLgogICAgICAgICBpZiAoaGFzTGluZUlm
RW1wdHkoKSkgewogICAgICAgICAgICAgTGF5b3V0VW5pdCBtaW5IZWlnaHRGb3JFbXB0eUxpbmUg
PSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpCi0gICAgICAgICAgICAgICAgKyBsaW5l
SGVpZ2h0KHRydWUsIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6
IFZlcnRpY2FsTGluZSwgUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKQorICAgICAgICAgICAg
ICAgICsgbGluZUhlaWdodCh0cnVlLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gSG9yaXpv
bnRhbExpbmUgOiBWZXJ0aWNhbExpbmUpCiAgICAgICAgICAgICAgICAgKyBzY3JvbGxiYXJMb2dp
Y2FsSGVpZ2h0KCk7CiAgICAgICAgICAgICBzZXRMb2dpY2FsSGVpZ2h0KHN0ZDo6bWF4KGxvZ2lj
YWxIZWlnaHQoKSwgbWluSGVpZ2h0Rm9yRW1wdHlMaW5lKSk7CiAgICAgICAgIH0KQEAgLTYyNSw3
ICs2MjUsNyBAQCB2b2lkIFJlbmRlckdyaWQ6OmxheW91dE1hc29ucnkoUmVsYXlvdXRDaGlsZHJl
biByZWxheW91dENoaWxkcmVuKQogICAgICAgICAvLyBHcmlkIGNvbnRhaW5lciBzaG91bGQgaGF2
ZSB0aGUgbWluaW11bSBoZWlnaHQgb2YgYSBsaW5lIGlmIGl0J3MgZWRpdGFibGUuIFRoYXQgZG9l
cyBub3QgYWZmZWN0IHRyYWNrIHNpemluZyB0aG91Z2guCiAgICAgICAgIGlmIChoYXNMaW5lSWZF
bXB0eSgpKSB7CiAgICAgICAgICAgICBMYXlvdXRVbml0IG1pbkhlaWdodEZvckVtcHR5TGluZSA9
IGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCkKLSAgICAgICAgICAgICAgICArIGxpbmVI
ZWlnaHQodHJ1ZSwgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IEhvcml6b250YWxMaW5lIDog
VmVydGljYWxMaW5lLCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpCisgICAgICAgICAgICAg
ICAgKyBsaW5lSGVpZ2h0KHRydWUsIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9u
dGFsTGluZSA6IFZlcnRpY2FsTGluZSkKICAgICAgICAgICAgICAgICArIHNjcm9sbGJhckxvZ2lj
YWxIZWlnaHQoKTsKICAgICAgICAgICAgIHNldExvZ2ljYWxIZWlnaHQoc3RkOjptYXgobG9naWNh
bEhlaWdodCgpLCBtaW5IZWlnaHRGb3JFbXB0eUxpbmUpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAppbmRleCBlYzBhNTNhZGQxNjQuLjVhMzYx
ZGQ3NDNjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGlu
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKQEAg
LTgxNyw3ICs4MTcsNyBAQCBMZWdhY3lJbmxpbmVGbG93Qm94KiBSZW5kZXJJbmxpbmU6OmNyZWF0
ZUFuZEFwcGVuZElubGluZUZsb3dCb3goKQogICAgIHJldHVybiBmbG93Qm94OwogfQogCi1MYXlv
dXRVbml0IFJlbmRlcklubGluZTo6bGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVj
dGlvbk1vZGUgLypkaXJlY3Rpb24qLywgTGluZVBvc2l0aW9uTW9kZSAvKmxpbmVQb3NpdGlvbk1v
ZGUqLykgY29uc3QKK0xheW91dFVuaXQgUmVuZGVySW5saW5lOjpsaW5lSGVpZ2h0KGJvb2wgZmly
c3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSAvKmRpcmVjdGlvbiovKSBjb25zdAogewogICAgIGF1
dG8mIGxpbmVTdHlsZSA9IGZpcnN0TGluZSA/IGZpcnN0TGluZVN0eWxlKCkgOiBzdHlsZSgpOwog
ICAgIHJldHVybiBMYXlvdXRVbml0Ojpmcm9tRmxvYXRDZWlsKGxpbmVTdHlsZS5jb21wdXRlZExp
bmVIZWlnaHQoKSk7CkBAIC04MjYsNyArODI2LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJJbmxpbmU6
OmxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIC8qZGlyZWN0aW8K
IExheW91dFVuaXQgUmVuZGVySW5saW5lOjpiYXNlbGluZVBvc2l0aW9uKCkgY29uc3QKIHsKICAg
ICBhdXRvJiBmb250TWV0cmljcyA9IHN0eWxlKCkubWV0cmljc09mUHJpbWFyeUZvbnQoKTsKLSAg
ICByZXR1cm4gTGF5b3V0VW5pdCB7IGZvbnRNZXRyaWNzLmFzY2VudCgpICsgKGxpbmVIZWlnaHQo
ZmFsc2UsIHdyaXRpbmdNb2RlKCkuaXNIb3Jpem9udGFsKCkgPyBIb3Jpem9udGFsTGluZSA6IFZl
cnRpY2FsTGluZSwgUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSAtIGZvbnRNZXRyaWNzLmhlaWdo
dCgpKSAvIDIgfTsKKyAgICByZXR1cm4gTGF5b3V0VW5pdCB7IGZvbnRNZXRyaWNzLmFzY2VudCgp
ICsgKGxpbmVIZWlnaHQoZmFsc2UsIHdyaXRpbmdNb2RlKCkuaXNIb3Jpem9udGFsKCkgPyBIb3Jp
em9udGFsTGluZSA6IFZlcnRpY2FsTGluZSkgLSBmb250TWV0cmljcy5oZWlnaHQoKSkgLyAyIH07
CiB9CiAKIExheW91dFNpemUgUmVuZGVySW5saW5lOjpvZmZzZXRGb3JJbkZsb3dQb3NpdGlvbmVk
SW5saW5lKGNvbnN0IFJlbmRlckJveCogY2hpbGQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW5saW5lLmgKaW5kZXggODdjYzJhOTU5YWMzLi4yOTE0NjQ2ZGYyNGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKQEAgLTEzOSw3ICsxMzksNyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCBkaXJ0eUxpbmVGcm9tQ2hhbmdlZENoaWxkKCkgZmluYWwgeyBt
X2xlZ2FjeUxpbmVCb3hlcy5kaXJ0eUxpbmVGcm9tQ2hhbmdlZENoaWxkKCp0aGlzKTsgfQogCi0g
ICAgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9k
ZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3QgZmlu
YWw7CisgICAgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0
aW9uTW9kZSkgY29uc3QgZmluYWw7CiAgICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKCkg
Y29uc3QgZmluYWw7CiAgICAgCiAgICAgdm9pZCB1cGRhdGVIaXRUZXN0UmVzdWx0KEhpdFRlc3RS
ZXN1bHQmLCBjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcAppbmRleCAwMzkyYjFiYTcwY2UuLmZmZWIx
ZDI5YWQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVC
cmVhay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5j
cHAKQEAgLTU5LDcgKzU5LDcgQEAgUmVuZGVyTGluZUJyZWFrOjp+UmVuZGVyTGluZUJyZWFrKCkK
IHsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJMaW5lQnJlYWs6OmxpbmVIZWlnaHQoYm9vbCBmaXJz
dExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIC8qZGlyZWN0aW9uKi8sIExpbmVQb3NpdGlvbk1vZGUg
LypsaW5lUG9zaXRpb25Nb2RlKi8pIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlckxpbmVCcmVhazo6
bGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgLypkaXJlY3Rpb24q
LykgY29uc3QKIHsKICAgICBpZiAoZmlyc3RMaW5lKSB7CiAgICAgICAgIGF1dG8mIGZpcnN0TGlu
ZVN0eWxlID0gdGhpcy0+Zmlyc3RMaW5lU3R5bGUoKTsKQEAgLTc1LDcgKzc1LDcgQEAgTGF5b3V0
VW5pdCBSZW5kZXJMaW5lQnJlYWs6OmxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJl
Y3Rpb25Nb2RlIC8qZGlyZWMKIExheW91dFVuaXQgUmVuZGVyTGluZUJyZWFrOjpiYXNlbGluZVBv
c2l0aW9uKCkgY29uc3QKIHsKICAgICBhdXRvJiBmb250TWV0cmljcyA9IHN0eWxlKCkubWV0cmlj
c09mUHJpbWFyeUZvbnQoKTsKLSAgICByZXR1cm4gTGF5b3V0VW5pdCB7IChmb250TWV0cmljcy5h
c2NlbnQoKSArIChsaW5lSGVpZ2h0KGZhbHNlLCB3cml0aW5nTW9kZSgpLmlzSG9yaXpvbnRhbCgp
ID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmUsIFBvc2l0aW9uT25Db250YWluaW5nTGlu
ZSkgLSBmb250TWV0cmljcy5oZWlnaHQoKSkgLyAyKSB9OworICAgIHJldHVybiBMYXlvdXRVbml0
IHsgKGZvbnRNZXRyaWNzLmFzY2VudCgpICsgKGxpbmVIZWlnaHQoZmFsc2UsIHdyaXRpbmdNb2Rl
KCkuaXNIb3Jpem9udGFsKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSkgLSBmb250
TWV0cmljcy5oZWlnaHQoKSkgLyAyKSB9OwogfQogCiBpbnQgUmVuZGVyTGluZUJyZWFrOjpjYXJl
dE1pbk9mZnNldCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGluZUJyZWFrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJy
ZWFrLmgKaW5kZXggMjRlMjZmODU5MjAyLi4xODg1YjI4YzM4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToK
ICAgICBpbnQgY2FyZXRNYXhPZmZzZXQoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGNhbkJlU2Vs
ZWN0aW9uTGVhZigpIGNvbnN0IGZpbmFsOwogCi0gICAgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0KGJv
b2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSkgY29uc3Qg
ZmluYWw7CisgICAgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGly
ZWN0aW9uTW9kZSkgY29uc3QgZmluYWw7CiAgICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9u
KCkgY29uc3QgZmluYWw7CiAKICAgICBMYXlvdXRVbml0IG1hcmdpblRvcCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0TWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFy
a2VyLmNwcAppbmRleCA3NTVlYjQ0NTMwZjIuLmM3ZDUwM2QxNmQ4ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcApAQCAtNDIyLDExICs0MjIsMTEg
QEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjp1cGRhdGVJbmxpbmVNYXJnaW5zKCkKICAgICBtdXRh
YmxlU3R5bGUoKS5zZXRNYXJnaW5FbmQoU3R5bGU6Ok1hcmdpbkVkZ2U6OkZpeGVkIHsgbWFyZ2lu
RW5kIH0pOwogfQogCi1MYXlvdXRVbml0IFJlbmRlckxpc3RNYXJrZXI6OmxpbmVIZWlnaHQoYm9v
bCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9k
ZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJMaXN0TWFya2VyOjps
aW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24pIGNv
bnN0CiB7CiAgICAgaWYgKCFpc0ltYWdlKCkpCi0gICAgICAgIHJldHVybiBtX2xpc3RJdGVtLT5s
aW5lSGVpZ2h0KGZpcnN0TGluZSwgZGlyZWN0aW9uLCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94
ZXMpOwotICAgIHJldHVybiBSZW5kZXJCb3g6OmxpbmVIZWlnaHQoZmlyc3RMaW5lLCBkaXJlY3Rp
b24sIGxpbmVQb3NpdGlvbk1vZGUpOworICAgICAgICByZXR1cm4gbV9saXN0SXRlbS0+bGluZUhl
aWdodChmaXJzdExpbmUsIGRpcmVjdGlvbik7CisgICAgcmV0dXJuIFJlbmRlckJveDo6bGluZUhl
aWdodChmaXJzdExpbmUsIGRpcmVjdGlvbik7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyTGlzdE1h
cmtlcjo6YmFzZWxpbmVQb3NpdGlvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RNYXJrZXIuaAppbmRleCA3MDZlYmIzOTRjNjcuLjY5ZWU3OWJjMDczNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oCkBAIC04MSw3ICs4
MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQ
b2ludCYpIGZpbmFsOwogICAgIHZvaWQgbGF5b3V0KCkgZmluYWw7CiAgICAgdm9pZCBpbWFnZUNo
YW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0KikgZmluYWw7Ci0gICAgTGF5b3V0
VW5pdCBsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBv
c2l0aW9uTW9kZSkgY29uc3QgZmluYWw7CisgICAgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0KGJvb2wg
Zmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3QgZmluYWw7CiAgICAgTGF5b3V0VW5p
dCBiYXNlbGluZVBvc2l0aW9uKCkgY29uc3QgZmluYWw7CiAgICAgTGF5b3V0UmVjdCBzZWxlY3Rp
b25SZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50KSBmaW5hbDsKICAgICBib29sIGNhbkJl
U2VsZWN0aW9uTGVhZigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCmluZGV4IDEyMzhiNmFjMWIy
YS4uNDZkNTBkNjUwMmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbC5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCBSZW5kZXJCb3g6OkxvZ2ljYWxFeHRl
bnRDb21wdXRlZFZhbHVlcyBSZW5kZXJUZXh0Q29udHJvbDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQo
TAogCiAgICAgaWYgKFJlbmRlckJveCogaW5uZXJUZXh0Qm94ID0gaW5uZXJUZXh0LT5yZW5kZXJC
b3goKSkgewogICAgICAgICBMYXlvdXRVbml0IG5vbkNvbnRlbnRIZWlnaHQgPSBpbm5lclRleHRC
b3gtPmJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCkgKyBpbm5lclRleHRCb3gtPm1hcmdp
bkxvZ2ljYWxIZWlnaHQoKTsKLSAgICAgICAgbG9naWNhbEhlaWdodCA9IGNvbXB1dGVDb250cm9s
TG9naWNhbEhlaWdodChpbm5lclRleHRCb3gtPmxpbmVIZWlnaHQodHJ1ZSwgSG9yaXpvbnRhbExp
bmUsIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcyksIG5vbkNvbnRlbnRIZWlnaHQpOworICAg
ICAgICBsb2dpY2FsSGVpZ2h0ID0gY29tcHV0ZUNvbnRyb2xMb2dpY2FsSGVpZ2h0KGlubmVyVGV4
dEJveC0+bGluZUhlaWdodCh0cnVlLCBIb3Jpem9udGFsTGluZSksIG5vbkNvbnRlbnRIZWlnaHQp
OwogCiAgICAgICAgIC8vIFdlIGFyZSBhYmxlIHRvIGhhdmUgYSBob3Jpem9udGFsIHNjcm9sbGJh
ciBpZiB0aGUgb3ZlcmZsb3cgc3R5bGUgaXMgc2Nyb2xsLCBvciBpZiBpdHMgYXV0byBhbmQgdGhl
cmUncyBubyB3b3JkIHdyYXAuCiAgICAgICAgIGF1dG8gc2hvdWxkSW5jbHVkZVNjcm9sbGJhckhl
aWdodCA9IFsmXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9M
aW5lV2lkdGguY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZVdpZHRoLmNw
cAppbmRleCBiYTA5N2JiZTM2MjAuLmVjZWExZDdhMjVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZVdpZHRoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbGluZS9MaW5lV2lkdGguY3BwCkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgTGluZVdp
ZHRoOjpmaXRzT25MaW5lRXhjbHVkaW5nVHJhaWxpbmdDb2xsYXBzZWRXaGl0ZXNwYWNlKCkgY29u
c3QKIHZvaWQgTGluZVdpZHRoOjp1cGRhdGVBdmFpbGFibGVXaWR0aCgpCiB7CiAgICAgTGF5b3V0
VW5pdCBoZWlnaHQgPSBtX2Jsb2NrLmxvZ2ljYWxIZWlnaHQoKTsKLSAgICBhdXRvIGxpbmVIZWln
aHQgPSBzdGQ6Om1heCgwX2x1LCBtX2Jsb2NrLmxpbmVIZWlnaHQodHJ1ZSwgbV9ibG9jay5pc0hv
cml6b250YWxXcml0aW5nTW9kZSgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmUsIFBv
c2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcykpOworICAgIGF1dG8gbGluZUhlaWdodCA9IHN0ZDo6
bWF4KDBfbHUsIG1fYmxvY2subGluZUhlaWdodCh0cnVlLCBtX2Jsb2NrLmlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSkpOwogICAgIG1fbGVm
dCA9IG1fYmxvY2subG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKGhlaWdodCwgbGluZUhlaWdodCk7
CiAgICAgbV9yaWdodCA9IG1fYmxvY2subG9naWNhbFJpZ2h0T2Zmc2V0Rm9yTGluZShoZWlnaHQs
IGxpbmVIZWlnaHQpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>475728</attachid>
            <date>2025-07-01 15:34:54 -0700</date>
            <delta_ts>2025-07-15 05:00:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-295130-20250701153453.patch</filename>
            <type>text/plain</type>
            <size>27005</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBlYWI2NjRjMDkwNjNmNWI0YTMyMGI4MzcwNGUxNTA4ZWVjYzAyM2RjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFR1ZSwgMSBKdWwgMjAyNSAxNTozMzo1OCAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSBM
aW5lUG9zaXRpb25Nb2RlIGZyb20gUmVuZGVyQm94TW9kZWxPYmplY3Q6OmxpbmVIZWlnaHQKIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTUxMzAKClJldmlld2VkIGJ5
IEFudHRpIEtvaXZpc3RvLgoKTGluZVBvc2l0aW9uTW9kZSBoYXMgMiB2YWx1ZXMgUG9zaXRpb25P
bkNvbnRhaW5pbmdMaW5lIGFuZCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMuCgpQb3NpdGlv
bk9uQ29udGFpbmluZ0xpbmUgaXMgdXNlZCBhdCAzIHBsYWNlcy4KLSB3ZSB1bmNvbmRpdGlvbmFs
bHkgaWdub3JlIHRoaXMgdmFsdWUgKHNlZSBSZW5kZXJJbmxpbmUgYW5kIFJlbmRlckxpbmVCcmVh
aykgYXQgMiBwbGFjZXMuCi0gUmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24gcGFzc2VzIGlu
IFBvc2l0aW9uT25Db250YWluaW5nTGluZSBvbmx5IHdoZW4gInRoaXMiIGlzIF9ub3RfIGlzQmxv
Y2tMZXZlbFJlcGxhY2VkT3JBdG9taWNJbmxpbmUuClJlbmRlckJsb2NrOjpsaW5lSGVpZ2h0IG9u
bHkgdXNlcyBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUgd2hlbiAidGhpcyIgX2lzXyBpc0Jsb2Nr
TGV2ZWxSZXBsYWNlZE9yQXRvbWljSW5saW5lLgoKKE1hbnkgb3ZlcnJpZGUgc2lnbmF0dXJlcyBh
bHNvIHVzZSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUgYXMgdGhlIGRlZmF1bHQgdmFsdWUsIGJ1
dCBubyBjYWxsZXJzIHV0aWxpemVzIHRoaXMgZGVmYXVsdCBiZWhhdmlvcikKCiogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0NhcmV0UmVjdENvbXB1dGF0aW9uLmNwcDoKKFdlYkNvcmU6OmNvbXB1
dGVDYXJldFJlY3RGb3JFbXB0eUVsZW1lbnQpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9M
ZWdhY3lMaW5lTGF5b3V0LmNwcDoKKFdlYkNvcmU6OkxlZ2FjeUxpbmVMYXlvdXQ6OmxheW91dExp
bmVCb3hlcyk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjpsaW5lSGVpZ2h0IGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckJsb2NrOjppbmxp
bmVCbG9ja0Jhc2VsaW5lIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcDoK
KFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bGF5b3V0QmxvY2tXaXRoTm9DaGlsZHJlbik6CihX
ZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dEluRmxvd0NoaWxkcmVuKToKKFdlYkNvcmU6
OlJlbmRlckJsb2NrRmxvdzo6YWRqdXN0SW5pdGlhbExldHRlclBvc2l0aW9uKToKKFdlYkNvcmU6
OlJlbmRlckJsb2NrRmxvdzo6aW5saW5lQmxvY2tCYXNlbGluZSBjb25zdCk6CihXZWJDb3JlOjpS
ZW5kZXJCbG9ja0Zsb3c6OmxheW91dElubGluZUNvbnRlbnQpOgoqIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwOgooV2ViQ29yZTo6UmVuZGVyQm94OjpsaW5lSGVpZ2h0IGNv
bnN0KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94Lmg6CiogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0Lmg6CiogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHA6CihXZWJDb3JlOjpSZW5k
ZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmxheW91dEhvcml6b250YWxCb3gpOgooV2ViQ29yZTo6
UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpsYXlvdXRWZXJ0aWNhbEJveCk6CiogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcDoKKFdlYkNvcmU6OlJlbmRl
ckZsZXhpYmxlQm94OjpwZXJmb3JtRmxleExheW91dCk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckdyaWQuY3BwOgooV2ViQ29yZTo6UmVuZGVyR3JpZDo6bGF5b3V0R3JpZCk6CihX
ZWJDb3JlOjpSZW5kZXJHcmlkOjpsYXlvdXRNYXNvbnJ5KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW5saW5lLmNwcDoKKFdlYkNvcmU6OlJlbmRlcklubGluZTo6bGluZUhlaWdo
dCBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmJhc2VsaW5lUG9zaXRpb24gY29uc3Qp
OgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaDoKKiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcDoKKFdlYkNvcmU6OlJlbmRlckxpbmVC
cmVhazo6bGluZUhlaWdodCBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJMaW5lQnJlYWs6OmJhc2Vs
aW5lUG9zaXRpb24gY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5l
QnJlYWsuaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHA6
CihXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpsaW5lSGVpZ2h0IGNvbnN0KToKKiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oOgoqIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHA6CihXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJv
bDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9saW5lL0xpbmVXaWR0aC5jcHA6CihXZWJDb3JlOjpMaW5lV2lkdGg6OnVwZGF0ZUF2YWlsYWJs
ZVdpZHRoKToKLS0tCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2FyZXRSZWN0Q29tcHV0YXRp
b24uY3BwICAgfCAgMiArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlv
dXQuY3BwICAgICAgIHwgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5jcHAgICAgICAgICAgICB8IDEzICsrKy0tLS0tLS0tLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5oICAgICAgICAgICAgICB8ICAyICstCiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcCAgICAgICAgfCAxMCArKysrKy0tLS0tCiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCAgICAgICAgICAgICAgfCAgMiArLQog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oICAgICAgICAgICAgICAgIHwgIDIg
Ky0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oICAgICB8
ICAzICstLQogLi4uL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwICAg
ICAgIHwgIDQgKystLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94
LmNwcCAgICAgIHwgIDQgKystLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQu
Y3BwICAgICAgICAgICAgIHwgIDQgKystLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cklubGluZS5jcHAgICAgICAgICAgIHwgIDQgKystLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcklubGluZS5oICAgICAgICAgICAgIHwgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwICAgICAgICB8ICA0ICsrLS0KIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaCAgICAgICAgICB8ICAyICstCiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAgICAgICAgfCAgNiArKystLS0KIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmggICAgICAgICB8ICAyICst
CiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwICAgICAgfCAg
MiArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZVdpZHRoLmNwcCAgICAgICAg
IHwgIDIgKy0KIDE5IGZpbGVzIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKyksIDQwIGRlbGV0aW9u
cygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DYXJldFJlY3RDb21w
dXRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2FyZXRSZWN0Q29tcHV0YXRp
b24uY3BwCmluZGV4IDEyYjg1NmVjZWIxNy4uNDk1N2ViMTdjNDRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2FyZXRSZWN0Q29tcHV0YXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9DYXJldFJlY3RDb21wdXRhdGlvbi5jcHAKQEAgLTExOCw3ICsx
MTgsNyBAQCBzdGF0aWMgTGF5b3V0UmVjdCBjb21wdXRlQ2FyZXRSZWN0Rm9yRW1wdHlFbGVtZW50
KGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0JiByZQogICAgIH0KICAgICB4ID0gc3RkOjptaW4o
eCwgc3RkOjptYXg8TGF5b3V0VW5pdD4obWF4WCAtIGNhcmV0V2lkdGgoKSwgMCkpOwogCi0gICAg
YXV0byBsaW5lSGVpZ2h0ID0gcmVuZGVyZXIubGluZUhlaWdodCh0cnVlLCB3cml0aW5nTW9kZS5p
c0hvcml6b250YWwoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5lLCBQb3NpdGlvbk9m
SW50ZXJpb3JMaW5lQm94ZXMpOworICAgIGF1dG8gbGluZUhlaWdodCA9IHJlbmRlcmVyLmxpbmVI
ZWlnaHQodHJ1ZSwgd3JpdGluZ01vZGUuaXNIb3Jpem9udGFsKCkgPyBIb3Jpem9udGFsTGluZSA6
IFZlcnRpY2FsTGluZSk7CiAgICAgYXV0byBoZWlnaHQgPSBzdGQ6Om1pbihsaW5lSGVpZ2h0LCBM
YXlvdXRVbml0IHsgY3VycmVudFN0eWxlLm1ldHJpY3NPZlByaW1hcnlGb250KCkuaGVpZ2h0KCkg
fSk7CiAgICAgYXV0byB5ID0gcmVuZGVyZXIuYm9yZGVyQW5kUGFkZGluZ0JlZm9yZSgpICsgKGxp
bmVIZWlnaHQgPiBoZWlnaHQgPyAobGluZUhlaWdodCAtIGhlaWdodCkgLyAyIDogTGF5b3V0VW5p
dCB7IH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5TGlu
ZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5j
cHAKaW5kZXggMmI3YTQxNmQ4MzZlLi45OWRjNzAzNWNkMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5jcHAKQEAgLTU3Niw3ICs1NzYsNyBAQCB2b2lk
IExlZ2FjeUxpbmVMYXlvdXQ6OmxheW91dExpbmVCb3hlcygpCiAgICAgfQogCiAgICAgaWYgKCFs
ZWdhY3lSb290Qm94KCkgJiYgbV9mbG93Lmhhc0xpbmVJZkVtcHR5KCkpCi0gICAgICAgIG1fZmxv
dy5zZXRMb2dpY2FsSGVpZ2h0KG1fZmxvdy5sb2dpY2FsSGVpZ2h0KCkgKyBtX2Zsb3cubGluZUhl
aWdodCh0cnVlLCBtX2Zsb3cuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IEhvcml6b250YWxM
aW5lIDogVmVydGljYWxMaW5lLCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpKTsKKyAgICAg
ICAgbV9mbG93LnNldExvZ2ljYWxIZWlnaHQobV9mbG93LmxvZ2ljYWxIZWlnaHQoKSArIG1fZmxv
dy5saW5lSGVpZ2h0KHRydWUsIG1fZmxvdy5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gSG9y
aXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmUpKTsKIH0KIAogdm9pZCBMZWdhY3lMaW5lTGF5b3V0
OjphZGRPdmVyZmxvd0Zyb21JbmxpbmVDaGlsZHJlbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcAppbmRleCA1ZWNmYjI1OTBkM2YuLmEzZDYxNzI4NGVkZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0yNDc0LDE1ICsyNDc0LDgg
QEAgYm9vbCBSZW5kZXJCbG9jazo6aGFzTGluZUlmRW1wdHkoKSBjb25zdAogICAgIHJldHVybiBl
bGVtZW50ICYmIGVsZW1lbnQtPmlzUm9vdEVkaXRhYmxlRWxlbWVudCgpOwogfQogCi1MYXlvdXRV
bml0IFJlbmRlckJsb2NrOjpsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9u
TW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgbGluZVBvc2l0aW9uTW9kZSkgY29uc3QK
K0xheW91dFVuaXQgUmVuZGVyQmxvY2s6OmxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVE
aXJlY3Rpb25Nb2RlKSBjb25zdAogewotICAgIC8vIElubGluZSBibG9ja3MgYXJlIHJlcGxhY2Vk
IGVsZW1lbnRzLiBPdGhlcndpc2UsIGp1c3QgcGFzcyBvZmYgdG8KLSAgICAvLyB0aGUgYmFzZSBj
bGFzcy4gIElmIHdlJ3JlIGJlaW5nIHF1ZXJpZWQgYXMgdGhvdWdoIHdlJ3JlIHRoZSByb290IGxp
bmUKLSAgICAvLyBib3gsIHRoZW4gdGhlIGZhY3QgdGhhdCB3ZSdyZSBhbiBpbmxpbmUtYmxvY2sg
aXMgaXJyZWxldmFudCwgYW5kIHdlIGJlaGF2ZQotICAgIC8vIGp1c3QgbGlrZSBhIGJsb2NrLgot
ICAgIGlmIChpc0Jsb2NrTGV2ZWxSZXBsYWNlZE9yQXRvbWljSW5saW5lKCkgJiYgbGluZVBvc2l0
aW9uTW9kZSA9PSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpCi0gICAgICAgIHJldHVybiBSZW5k
ZXJCb3g6OmxpbmVIZWlnaHQoZmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1vZGUp
OwotCiAgICAgYXV0byYgbGluZVN0eWxlID0gZmlyc3RMaW5lID8gZmlyc3RMaW5lU3R5bGUoKSA6
IHN0eWxlKCk7CiAgICAgcmV0dXJuIExheW91dFVuaXQ6OmZyb21GbG9hdENlaWwobGluZVN0eWxl
LmNvbXB1dGVkTGluZUhlaWdodCgpKTsKIH0KQEAgLTI1NDIsNyArMjUzNSw3IEBAIExheW91dFVu
aXQgUmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24oKSBjb25zdAogICAgIH0KIAogICAgIGNv
bnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxlKCkubWV0cmljc09mUHJpbWFyeUZv
bnQoKTsKLSAgICByZXR1cm4gTGF5b3V0VW5pdCB7IGZvbnRNZXRyaWNzLmludEFzY2VudCgpICsg
KGxpbmVIZWlnaHQodHJ1ZSwgZGlyZWN0aW9uLCBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIC0g
Zm9udE1ldHJpY3MuaW50SGVpZ2h0KCkpIC8gMiB9LnRvSW50KCk7CisgICAgcmV0dXJuIExheW91
dFVuaXQgeyBmb250TWV0cmljcy5pbnRBc2NlbnQoKSArIChsaW5lSGVpZ2h0KHRydWUsIGRpcmVj
dGlvbikgLSBmb250TWV0cmljcy5pbnRIZWlnaHQoKSkgLyAyIH0udG9JbnQoKTsKIH0KIAogc3Rk
OjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBj
b25zdApAQCAtMjYwMiw3ICsyNTk1LDcgQEAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5k
ZXJCbG9jazo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSBsaW4KICAgICBp
ZiAoIWhhdmVOb3JtYWxGbG93Q2hpbGQgJiYgaGFzTGluZUlmRW1wdHkoKSkgewogICAgICAgICBh
dXRvJiBmb250TWV0cmljcyA9IGZpcnN0TGluZVN0eWxlKCkubWV0cmljc09mUHJpbWFyeUZvbnQo
KTsKICAgICAgICAgcmV0dXJuIExheW91dFVuaXQgeyBMYXlvdXRVbml0KGZvbnRNZXRyaWNzLmlu
dEFzY2VudCgpCi0gICAgICAgICAgICArIChsaW5lSGVpZ2h0KHRydWUsIGxpbmVEaXJlY3Rpb24s
IFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcykgLSBmb250TWV0cmljcy5pbnRIZWlnaHQoKSkg
LyAyCisgICAgICAgICAgICArIChsaW5lSGVpZ2h0KHRydWUsIGxpbmVEaXJlY3Rpb24pIC0gZm9u
dE1ldHJpY3MuaW50SGVpZ2h0KCkpIC8gMgogICAgICAgICAgICAgKyAobGluZURpcmVjdGlvbiA9
PSBIb3Jpem9udGFsTGluZSA/IGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpIDogYm9yZGVyUmln
aHQoKSArIHBhZGRpbmdSaWdodCgpKSkudG9JbnQoKSB9OwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCBlZDIzMTI5Y2M4NGQuLjhiNTkyZDFjMzk3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAgLTY2LDcgKzY2LDcgQEAg
cHJvdGVjdGVkOgogCiBwdWJsaWM6CiAgICAgLy8gVGhlc2UgdHdvIGZ1bmN0aW9ucyBhcmUgb3Zl
cnJpZGRlbiBmb3IgaW5saW5lLWJsb2NrLgotICAgIExheW91dFVuaXQgbGluZUhlaWdodChib29s
IGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlv
bk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IGZpbmFsOworICAgIExheW91dFVuaXQgbGluZUhlaWdo
dChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IGZpbmFsOwogICAgIExh
eW91dFVuaXQgYmFzZWxpbmVQb3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gRklY
TUUtQkxPQ0tGTE9XOiBSZW1vdmUgdmlydHVhbGl6YWlvbiB3aGVuIGFsbCBjYWxsZXJzIGhhdmUg
bW92ZWQgdG8gUmVuZGVyQmxvY2tGbG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9ja0Zsb3cuY3BwCmluZGV4IGYwYTZkZWIxOTcwZS4uMzYyMzVhZTZkODExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApAQCAtNDY4LDcgKzQ2
OCw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRCbG9ja1dpdGhOb0NoaWxkcmVuKCkK
ICAgICAgICAgICAgIHNldEhhc01hcmdpbkJlZm9yZVF1aXJrKHN0eWxlLm1hcmdpbkJlZm9yZSgp
Lmhhc1F1aXJrKCkpOwogICAgICAgICAgICAgc2V0SGFzTWFyZ2luQWZ0ZXJRdWlyayhzdHlsZS5t
YXJnaW5BZnRlcigpLmhhc1F1aXJrKCkpOwogICAgICAgICB9Ci0gICAgICAgIHNldExvZ2ljYWxI
ZWlnaHQoYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSArIHNjcm9sbGJhckxvZ2ljYWxI
ZWlnaHQoKSArIChoYXNMaW5lSWZFbXB0eSgpID8gbGluZUhlaWdodCh0cnVlLCBpc0hvcml6b250
YWxXcml0aW5nTW9kZSgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmUsIFBvc2l0aW9u
T2ZJbnRlcmlvckxpbmVCb3hlcykgOiAwX2x1KSk7CisgICAgICAgIHNldExvZ2ljYWxIZWlnaHQo
Ym9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSArIHNjcm9sbGJhckxvZ2ljYWxIZWlnaHQo
KSArIChoYXNMaW5lSWZFbXB0eSgpID8gbGluZUhlaWdodCh0cnVlLCBpc0hvcml6b250YWxXcml0
aW5nTW9kZSgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmUpIDogMF9sdSkpOwogICAg
ICAgICB1cGRhdGVMb2dpY2FsSGVpZ2h0KCk7CiAgICAgfTsKICAgICBjb21wdXRlQmxvY2tBeGlz
U2l6ZSgpOwpAQCAtNzgwLDcgKzc4MCw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRJ
bkZsb3dDaGlsZHJlbihSZWxheW91dENoaWxkcmVuIHJlbGF5b3V0Q2hpbGRyZW4sIExhCiAKICAg
ICAgICAgYXV0byBsb2dpY2FsSGVpZ2h0ID0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQo
KSArIHNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKTsKICAgICAgICAgaWYgKGhhc0xpbmVJZkVtcHR5
KCkpCi0gICAgICAgICAgICBsb2dpY2FsSGVpZ2h0ICs9IGxpbmVIZWlnaHQodHJ1ZSwgaXNIb3Jp
em9udGFsV3JpdGluZ01vZGUoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5lLCBQb3Np
dGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpOworICAgICAgICAgICAgbG9naWNhbEhlaWdodCArPSBs
aW5lSGVpZ2h0KHRydWUsIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGlu
ZSA6IFZlcnRpY2FsTGluZSk7CiAgICAgICAgIHNldExvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdo
dCk7CiAKICAgICAgICAgcmVwYWludExvZ2ljYWxUb3AgPSB7IH07CkBAIC0yNzQ5LDcgKzI3NDks
NyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6YWRqdXN0SW5pdGlhbExldHRlclBvc2l0aW9uKFJl
bmRlckJveCYgY2hpbGRCb3gsIExheW91dFVuaQogICAgIGlmICghZm9udE1ldHJpY3MuY2FwSGVp
Z2h0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIExheW91dFVuaXQgaGVpZ2h0T2ZMaW5lID0g
bGluZUhlaWdodCh0cnVlLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gSG9yaXpvbnRhbExp
bmUgOiBWZXJ0aWNhbExpbmUsIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcyk7CisgICAgTGF5
b3V0VW5pdCBoZWlnaHRPZkxpbmUgPSBsaW5lSGVpZ2h0KHRydWUsIGlzSG9yaXpvbnRhbFdyaXRp
bmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSk7CiAgICAgTGF5b3V0VW5p
dCBiZWZvcmVNYXJnaW5Cb3JkZXJQYWRkaW5nID0gY2hpbGRCb3guYm9yZGVyQW5kUGFkZGluZ0Jl
Zm9yZSgpICsgY2hpbGRCb3gubWFyZ2luQmVmb3JlKCk7CiAgICAgCiAgICAgLy8gTWFrZSBhbiBh
ZGp1c3RtZW50IHRvIGFsaWduIHdpdGggdGhlIGNhcCBoZWlnaHQgb2YgYSB0aGVvcmV0aWNhbCBi
bG9jayBsaW5lLgpAQCAtMzMyNiw3ICszMzI2LDcgQEAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0
PiBSZW5kZXJCbG9ja0Zsb3c6OmlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUK
ICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgY29uc3Qg
YXV0byYgZm9udE1ldHJpY3MgPSBmaXJzdExpbmVTdHlsZSgpLm1ldHJpY3NPZlByaW1hcnlGb250
KCk7CiAgICAgICAgICAgICByZXR1cm4gTGF5b3V0VW5pdCB7IExheW91dFVuaXQoZm9udE1ldHJp
Y3MuaW50QXNjZW50KCkKLSAgICAgICAgICAgICAgICArIChsaW5lSGVpZ2h0KHRydWUsIGxpbmVE
aXJlY3Rpb24sIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcykgLSBmb250TWV0cmljcy5pbnRI
ZWlnaHQoKSkgLyAyCisgICAgICAgICAgICAgICAgKyAobGluZUhlaWdodCh0cnVlLCBsaW5lRGly
ZWN0aW9uKSAtIGZvbnRNZXRyaWNzLmludEhlaWdodCgpKSAvIDIKICAgICAgICAgICAgICAgICAr
IChsaW5lRGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8gYm9yZGVyVG9wKCkgKyBwYWRkaW5n
VG9wKCkgOiBib3JkZXJSaWdodCgpICsgcGFkZGluZ1JpZ2h0KCkpKS50b0ludCgpIH07CiAgICAg
ICAgIH0KIApAQCAtNDA0NSw3ICs0MDQ1LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmxheW91
dElubGluZUNvbnRlbnQoUmVsYXlvdXRDaGlsZHJlbiByZWxheW91dENoaWxkcmVuLCBMYXkKICAg
ICBhdXRvIHBhcnRpYWxSZXBhaW50UmVjdCA9IGxheW91dEZvcm1hdHRpbmdDb250ZXh0TGluZUxh
eW91dC5sYXlvdXQocmVsYXlvdXRDaGlsZHJlbiA9PSBSZWxheW91dENoaWxkcmVuOjpZZXMgPyBM
YXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6Rm9yY2VGdWxsTGF5b3V0OjpZZXMgOiBMYXlv
dXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6Rm9yY2VGdWxsTGF5b3V0OjpObyk7CiAKICAgICBh
dXRvIGJvcmRlckJveEJvdHRvbSA9IFsmXSB7Ci0gICAgICAgIGF1dG8gY29udGVudEhlaWdodCA9
ICFoYXNMaW5lcygpICYmIGhhc0xpbmVJZkVtcHR5KCkgPyBsaW5lSGVpZ2h0KHRydWUsIGlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSwgUG9z
aXRpb25PZkludGVyaW9yTGluZUJveGVzKSA6IGxheW91dEZvcm1hdHRpbmdDb250ZXh0TGluZUxh
eW91dC5jb250ZW50TG9naWNhbEhlaWdodCgpOworICAgICAgICBhdXRvIGNvbnRlbnRIZWlnaHQg
PSAhaGFzTGluZXMoKSAmJiBoYXNMaW5lSWZFbXB0eSgpID8gbGluZUhlaWdodCh0cnVlLCBpc0hv
cml6b250YWxXcml0aW5nTW9kZSgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmUpIDog
bGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LmNvbnRlbnRMb2dpY2FsSGVpZ2h0KCk7
CiAgICAgICAgIHJldHVybiBib3JkZXJBbmRQYWRkaW5nQmVmb3JlKCkgKyBjb250ZW50SGVpZ2h0
ICsgYm9yZGVyQW5kUGFkZGluZ0FmdGVyKCkgKyBzY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCk7CiAg
ICAgfTsKICAgICBhdXRvIG5ld0JvcmRlckJveEJvdHRvbSA9IGJvcmRlckJveEJvdHRvbSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCAwMTJkMmI0YzE3ZGQuLjE4
Y2E4MWYxNjFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTQ5
NjAsNyArNDk2MCw3IEBAIGJvb2wgUmVuZGVyQm94Ojppc1Vuc3BsaXR0YWJsZUZvclBhZ2luYXRp
b24oKSBjb25zdAogICAgICAgICB8fCBzaG91bGRBcHBseVNpemVDb250YWlubWVudCgpOwogfQog
Ci1MYXlvdXRVbml0IFJlbmRlckJveDo6bGluZUhlaWdodChib29sIC8qZmlyc3RMaW5lKi8sIExp
bmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSAvKmxpbmVQb3NpdGlv
bk1vZGUqLykgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyQm94OjpsaW5lSGVpZ2h0KGJvb2wgLypm
aXJzdExpbmUqLywgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uKSBjb25zdAogewogICAgIGlm
IChpc0Jsb2NrTGV2ZWxSZXBsYWNlZE9yQXRvbWljSW5saW5lKCkpCiAgICAgICAgIHJldHVybiBk
aXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUgPyBtX21hcmdpbkJveC50b3AoKSArIGhlaWdodCgp
ICsgbV9tYXJnaW5Cb3guYm90dG9tKCkgOiBtX21hcmdpbkJveC5yaWdodCgpICsgd2lkdGgoKSAr
IG1fbWFyZ2luQm94LmxlZnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAppbmRl
eCAxY2MwMTQ0ZjFjMDkuLmViMmUyYjNhYTVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guaApAQCAtNTI2LDcgKzUyNiw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBt
YXJrRm9yUGFnaW5hdGlvblJlbGF5b3V0SWZOZWVkZWQoKSB7IH0KICAgICAKLSAgICBMYXlvdXRV
bml0IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9z
aXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBMYXlvdXRVbml0IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2Rl
KSBjb25zdCBvdmVycmlkZTsKICAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIExheW91dFVuaXQgb2Zmc2V0TGVmdCgpIGNvbnN0IG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaApp
bmRleCBlMTdmZWE5NmY1NjcuLmNmZmY5NzdhZjY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKQEAgLTMxLDcgKzMxLDYgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogLy8gTW9kZXMgZm9yIHNvbWUgb2YgdGhlIGxpbmUtcmVsYXRlZCBm
dW5jdGlvbnMuCi1lbnVtIExpbmVQb3NpdGlvbk1vZGUgeyBQb3NpdGlvbk9uQ29udGFpbmluZ0xp
bmUsIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcyB9OwogZW51bSBMaW5lRGlyZWN0aW9uTW9k
ZSB7IEhvcml6b250YWxMaW5lLCBWZXJ0aWNhbExpbmUgfTsKIAogZW51bSBjbGFzcyBCbGVlZEF2
b2lkYW5jZSA6IHVpbnQ4X3QgewpAQCAtMTk0LDcgKzE5Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIExheW91dFVuaXQgY29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29udGVudCgpIGNv
bnN0OwogCiAgICAgLy8gT3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzIHRvIGRldGVybWluZSBsaW5l
IGhlaWdodCBhbmQgYmFzZWxpbmUgcG9zaXRpb24uCi0gICAgdmlydHVhbCBMYXlvdXRVbml0IGxp
bmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25N
b2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBM
YXlvdXRVbml0IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oKSBjb25z
dCA9IDA7CiAKICAgICB2b2lkIG1hcEFic29sdXRlVG9Mb2NhbFBvaW50KE9wdGlvblNldDxNYXBD
b29yZGluYXRlc01vZGU+LCBUcmFuc2Zvcm1TdGF0ZSYpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJv
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxl
Qm94LmNwcAppbmRleCBhZjg4NmY1ZTJlYjUuLmNlODAyOGQ4MGI0OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5j
cHAKQEAgLTUxMCw3ICs1MTAsNyBAQCB2b2lkIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6
bGF5b3V0SG9yaXpvbnRhbEJveChSZWxheW91dENoaWxkcmVuIHJlbGF5b3V0QwogICAgICAgICBB
U1NFUlQoY2hpbGRJbmRleCA9PSBjaGlsZExheW91dERlbHRhcy5zaXplKCkpOwogCiAgICAgICAg
IGlmICghaXRlcmF0b3IuZmlyc3QoKSAmJiBoYXNMaW5lSWZFbXB0eSgpKQotICAgICAgICAgICAg
c2V0SGVpZ2h0KGhlaWdodCgpICsgbGluZUhlaWdodCh0cnVlLCB3cml0aW5nTW9kZSgpLmlzSG9y
aXpvbnRhbCgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmUsIFBvc2l0aW9uT2ZJbnRl
cmlvckxpbmVCb3hlcykpOworICAgICAgICAgICAgc2V0SGVpZ2h0KGhlaWdodCgpICsgbGluZUhl
aWdodCh0cnVlLCB3cml0aW5nTW9kZSgpLmlzSG9yaXpvbnRhbCgpID8gSG9yaXpvbnRhbExpbmUg
OiBWZXJ0aWNhbExpbmUpKTsKIAogICAgICAgICBzZXRIZWlnaHQoaGVpZ2h0KCkgKyB0b0FkZCk7
CiAKQEAgLTg0OCw3ICs4NDgsNyBAQCB2b2lkIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6
bGF5b3V0VmVydGljYWxCb3goUmVsYXlvdXRDaGlsZHJlbiByZWxheW91dENoaQogICAgICAgICB5
UG9zID0gaGVpZ2h0KCk7CiAKICAgICAgICAgaWYgKCFpdGVyYXRvci5maXJzdCgpICYmIGhhc0xp
bmVJZkVtcHR5KCkpCi0gICAgICAgICAgICBzZXRIZWlnaHQoaGVpZ2h0KCkgKyBsaW5lSGVpZ2h0
KHRydWUsIHdyaXRpbmdNb2RlKCkuaXNIb3Jpem9udGFsKCkgPyBIb3Jpem9udGFsTGluZSA6IFZl
cnRpY2FsTGluZSwgUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKSk7CisgICAgICAgICAgICBz
ZXRIZWlnaHQoaGVpZ2h0KCkgKyBsaW5lSGVpZ2h0KHRydWUsIHdyaXRpbmdNb2RlKCkuaXNIb3Jp
em9udGFsKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSkpOwogCiAgICAgICAgIHNl
dEhlaWdodChoZWlnaHQoKSArIHRvQWRkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKaW5kZXggMTllNzViZDc4YzA5Li4xYTExNWM2NDQ1ZmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcApA
QCAtMTM0Niw3ICsxMzQ2LDcgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6cGVyZm9ybUZsZXhM
YXlvdXQoUmVsYXlvdXRDaGlsZHJlbiByZWxheW91dENoaWxkcmVuKQogCiAgICAgaWYgKGFsbEl0
ZW1zLmlzRW1wdHkoKSkgewogICAgICAgICBpZiAoaGFzTGluZUlmRW1wdHkoKSkgewotICAgICAg
ICAgICAgYXV0byBtaW5IZWlnaHQgPSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpICsg
bGluZUhlaWdodCh0cnVlLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gSG9yaXpvbnRhbExp
bmUgOiBWZXJ0aWNhbExpbmUsIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcykgKyBzY3JvbGxi
YXJMb2dpY2FsSGVpZ2h0KCk7CisgICAgICAgICAgICBhdXRvIG1pbkhlaWdodCA9IGJvcmRlckFu
ZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCkgKyBsaW5lSGVpZ2h0KHRydWUsIGlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSkgKyBzY3JvbGxiYXJM
b2dpY2FsSGVpZ2h0KCk7CiAgICAgICAgICAgICBpZiAoaGVpZ2h0KCkgPCBtaW5IZWlnaHQpCiAg
ICAgICAgICAgICAgICAgc2V0TG9naWNhbEhlaWdodChtaW5IZWlnaHQpOwogICAgICAgICB9CkBA
IC0xNDIzLDcgKzE0MjMsNyBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpwZXJmb3JtRmxleExh
eW91dChSZWxheW91dENoaWxkcmVuIHJlbGF5b3V0Q2hpbGRyZW4pCiAgICAgICAgIC8vIGEgbGlu
ZSBiZWNhdXNlIGFsbCBvdXIgY2hpbGRyZW4gbWlnaHQgYmUgb3V0IG9mIGZsb3cgcG9zaXRpb25l
ZC4KICAgICAgICAgLy8gSW5zdGVhZCBvZiBqdXN0IGNoZWNraW5nIGlmIHdlIGhhdmUgYSBsaW5l
LCBtYWtlIHN1cmUgdGhlIGZsZXhib3gKICAgICAgICAgLy8gaGFzIGF0IGxlYXN0IGEgbGluZSdz
IHdvcnRoIG9mIGhlaWdodCB0byBjb3ZlciB0aGlzIGNhc2UuCi0gICAgICAgIExheW91dFVuaXQg
bWluSGVpZ2h0ID0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSArIGxpbmVIZWlnaHQo
dHJ1ZSwgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGlj
YWxMaW5lLCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpICsgc2Nyb2xsYmFyTG9naWNhbEhl
aWdodCgpOworICAgICAgICBMYXlvdXRVbml0IG1pbkhlaWdodCA9IGJvcmRlckFuZFBhZGRpbmdM
b2dpY2FsSGVpZ2h0KCkgKyBsaW5lSGVpZ2h0KHRydWUsIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSkgKyBzY3JvbGxiYXJMb2dpY2FsSGVp
Z2h0KCk7CiAgICAgICAgIGlmIChzaXplKCkuaGVpZ2h0KCkgPCBtaW5IZWlnaHQpCiAgICAgICAg
ICAgICBzZXRMb2dpY2FsSGVpZ2h0KG1pbkhlaWdodCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckdyaWQuY3BwCmluZGV4IDBlODljOTdhZTY3OS4uNzI5ZGJkOWE5OGY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC00ODksNyArNDg5LDcg
QEAgdm9pZCBSZW5kZXJHcmlkOjpsYXlvdXRHcmlkKFJlbGF5b3V0Q2hpbGRyZW4gcmVsYXlvdXRD
aGlsZHJlbikKICAgICAgICAgLy8gR3JpZCBjb250YWluZXIgc2hvdWxkIGhhdmUgdGhlIG1pbmlt
dW0gaGVpZ2h0IG9mIGEgbGluZSBpZiBpdCdzIGVkaXRhYmxlLiBUaGF0IGRvZXMgbm90IGFmZmVj
dCB0cmFjayBzaXppbmcgdGhvdWdoLgogICAgICAgICBpZiAoaGFzTGluZUlmRW1wdHkoKSkgewog
ICAgICAgICAgICAgTGF5b3V0VW5pdCBtaW5IZWlnaHRGb3JFbXB0eUxpbmUgPSBib3JkZXJBbmRQ
YWRkaW5nTG9naWNhbEhlaWdodCgpCi0gICAgICAgICAgICAgICAgKyBsaW5lSGVpZ2h0KHRydWUs
IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGlu
ZSwgUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKQorICAgICAgICAgICAgICAgICsgbGluZUhl
aWdodCh0cnVlLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gSG9yaXpvbnRhbExpbmUgOiBW
ZXJ0aWNhbExpbmUpCiAgICAgICAgICAgICAgICAgKyBzY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCk7
CiAgICAgICAgICAgICBzZXRMb2dpY2FsSGVpZ2h0KHN0ZDo6bWF4KGxvZ2ljYWxIZWlnaHQoKSwg
bWluSGVpZ2h0Rm9yRW1wdHlMaW5lKSk7CiAgICAgICAgIH0KQEAgLTYyNiw3ICs2MjYsNyBAQCB2
b2lkIFJlbmRlckdyaWQ6OmxheW91dE1hc29ucnkoUmVsYXlvdXRDaGlsZHJlbiByZWxheW91dENo
aWxkcmVuKQogICAgICAgICAvLyBHcmlkIGNvbnRhaW5lciBzaG91bGQgaGF2ZSB0aGUgbWluaW11
bSBoZWlnaHQgb2YgYSBsaW5lIGlmIGl0J3MgZWRpdGFibGUuIFRoYXQgZG9lcyBub3QgYWZmZWN0
IHRyYWNrIHNpemluZyB0aG91Z2guCiAgICAgICAgIGlmIChoYXNMaW5lSWZFbXB0eSgpKSB7CiAg
ICAgICAgICAgICBMYXlvdXRVbml0IG1pbkhlaWdodEZvckVtcHR5TGluZSA9IGJvcmRlckFuZFBh
ZGRpbmdMb2dpY2FsSGVpZ2h0KCkKLSAgICAgICAgICAgICAgICArIGxpbmVIZWlnaHQodHJ1ZSwg
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5l
LCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpCisgICAgICAgICAgICAgICAgKyBsaW5lSGVp
Z2h0KHRydWUsIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZl
cnRpY2FsTGluZSkKICAgICAgICAgICAgICAgICArIHNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKTsK
ICAgICAgICAgICAgIHNldExvZ2ljYWxIZWlnaHQoc3RkOjptYXgobG9naWNhbEhlaWdodCgpLCBt
aW5IZWlnaHRGb3JFbXB0eUxpbmUpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW5saW5lLmNwcAppbmRleCAwMDVlMGRlYzMxNWUuLmZiMzIwODI0MTc0MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKQEAgLTgxNyw3ICs4MTcs
NyBAQCBMZWdhY3lJbmxpbmVGbG93Qm94KiBSZW5kZXJJbmxpbmU6OmNyZWF0ZUFuZEFwcGVuZElu
bGluZUZsb3dCb3goKQogICAgIHJldHVybiBmbG93Qm94OwogfQogCi1MYXlvdXRVbml0IFJlbmRl
cklubGluZTo6bGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgLypk
aXJlY3Rpb24qLywgTGluZVBvc2l0aW9uTW9kZSAvKmxpbmVQb3NpdGlvbk1vZGUqLykgY29uc3QK
K0xheW91dFVuaXQgUmVuZGVySW5saW5lOjpsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5l
RGlyZWN0aW9uTW9kZSAvKmRpcmVjdGlvbiovKSBjb25zdAogewogICAgIGF1dG8mIGxpbmVTdHls
ZSA9IGZpcnN0TGluZSA/IGZpcnN0TGluZVN0eWxlKCkgOiBzdHlsZSgpOwogICAgIHJldHVybiBM
YXlvdXRVbml0Ojpmcm9tRmxvYXRDZWlsKGxpbmVTdHlsZS5jb21wdXRlZExpbmVIZWlnaHQoKSk7
CkBAIC04MjYsNyArODI2LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJJbmxpbmU6OmxpbmVIZWlnaHQo
Ym9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIC8qZGlyZWN0aW8KIExheW91dFVuaXQg
UmVuZGVySW5saW5lOjpiYXNlbGluZVBvc2l0aW9uKCkgY29uc3QKIHsKICAgICBhdXRvJiBmb250
TWV0cmljcyA9IHN0eWxlKCkubWV0cmljc09mUHJpbWFyeUZvbnQoKTsKLSAgICByZXR1cm4gTGF5
b3V0VW5pdCB7IGZvbnRNZXRyaWNzLmFzY2VudCgpICsgKGxpbmVIZWlnaHQoZmFsc2UsIHBhcmVu
dCgpLT53cml0aW5nTW9kZSgpLmlzSG9yaXpvbnRhbCgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0
aWNhbExpbmUsIFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgLSBmb250TWV0cmljcy5oZWlnaHQo
KSkgLyAyIH07CisgICAgcmV0dXJuIExheW91dFVuaXQgeyBmb250TWV0cmljcy5hc2NlbnQoKSAr
IChsaW5lSGVpZ2h0KGZhbHNlLCBwYXJlbnQoKS0+d3JpdGluZ01vZGUoKS5pc0hvcml6b250YWwo
KSA/IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5lKSAtIGZvbnRNZXRyaWNzLmhlaWdodCgp
KSAvIDIgfTsKIH0KIAogTGF5b3V0U2l6ZSBSZW5kZXJJbmxpbmU6Om9mZnNldEZvckluRmxvd1Bv
c2l0aW9uZWRJbmxpbmUoY29uc3QgUmVuZGVyQm94KiBjaGlsZCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAppbmRleCA4N2NjMmE5NTlhYzMuLjI5MTQ2NDZkZjI0
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaApAQCAtMTM5LDcgKzEz
OSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpcnR5TGluZUZyb21DaGFuZ2VkQ2hpbGQoKSBm
aW5hbCB7IG1fbGVnYWN5TGluZUJveGVzLmRpcnR5TGluZUZyb21DaGFuZ2VkQ2hpbGQoKnRoaXMp
OyB9CiAKLSAgICBMYXlvdXRVbml0IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJl
Y3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBj
b25zdCBmaW5hbDsKKyAgICBMYXlvdXRVbml0IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExp
bmVEaXJlY3Rpb25Nb2RlKSBjb25zdCBmaW5hbDsKICAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9z
aXRpb24oKSBjb25zdCBmaW5hbDsKICAgICAKICAgICB2b2lkIHVwZGF0ZUhpdFRlc3RSZXN1bHQo
SGl0VGVzdFJlc3VsdCYsIGNvbnN0IExheW91dFBvaW50JikgY29uc3QgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCmluZGV4IGY0YjI4YTg0NmUy
Yi4uYjllZTdiNWQ2MjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGluZUJyZWFrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlu
ZUJyZWFrLmNwcApAQCAtNTksNyArNTksNyBAQCBSZW5kZXJMaW5lQnJlYWs6On5SZW5kZXJMaW5l
QnJlYWsoKQogewogfQogCi1MYXlvdXRVbml0IFJlbmRlckxpbmVCcmVhazo6bGluZUhlaWdodChi
b29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgLypkaXJlY3Rpb24qLywgTGluZVBvc2l0
aW9uTW9kZSAvKmxpbmVQb3NpdGlvbk1vZGUqLykgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyTGlu
ZUJyZWFrOjpsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSAvKmRp
cmVjdGlvbiovKSBjb25zdAogewogICAgIGlmIChmaXJzdExpbmUpIHsKICAgICAgICAgYXV0byYg
Zmlyc3RMaW5lU3R5bGUgPSB0aGlzLT5maXJzdExpbmVTdHlsZSgpOwpAQCAtNzUsNyArNzUsNyBA
QCBMYXlvdXRVbml0IFJlbmRlckxpbmVCcmVhazo6bGluZUhlaWdodChib29sIGZpcnN0TGluZSwg
TGluZURpcmVjdGlvbk1vZGUgLypkaXJlYwogTGF5b3V0VW5pdCBSZW5kZXJMaW5lQnJlYWs6OmJh
c2VsaW5lUG9zaXRpb24oKSBjb25zdAogewogICAgIGF1dG8mIGZvbnRNZXRyaWNzID0gc3R5bGUo
KS5tZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwotICAgIHJldHVybiBMYXlvdXRVbml0IHsgKGZvbnRN
ZXRyaWNzLmFzY2VudCgpICsgKGxpbmVIZWlnaHQoZmFsc2UsIHBhcmVudCgpLT53cml0aW5nTW9k
ZSgpLmlzSG9yaXpvbnRhbCgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmUsIFBvc2l0
aW9uT25Db250YWluaW5nTGluZSkgLSBmb250TWV0cmljcy5oZWlnaHQoKSkgLyAyKSB9OworICAg
IHJldHVybiBMYXlvdXRVbml0IHsgKGZvbnRNZXRyaWNzLmFzY2VudCgpICsgKGxpbmVIZWlnaHQo
ZmFsc2UsIHBhcmVudCgpLT53cml0aW5nTW9kZSgpLmlzSG9yaXpvbnRhbCgpID8gSG9yaXpvbnRh
bExpbmUgOiBWZXJ0aWNhbExpbmUpIC0gZm9udE1ldHJpY3MuaGVpZ2h0KCkpIC8gMikgfTsKIH0K
IAogaW50IFJlbmRlckxpbmVCcmVhazo6Y2FyZXRNaW5PZmZzZXQoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oCmluZGV4IDI0ZTI2Zjg1OTIwMi4uMTg4
NWIyOGMzOGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlu
ZUJyZWFrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5o
CkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgaW50IGNhcmV0TWF4T2Zmc2V0KCkgY29u
c3QgZmluYWw7CiAgICAgYm9vbCBjYW5CZVNlbGVjdGlvbkxlYWYoKSBjb25zdCBmaW5hbDsKIAot
ICAgIExheW91dFVuaXQgbGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1v
ZGUsIExpbmVQb3NpdGlvbk1vZGUpIGNvbnN0IGZpbmFsOworICAgIExheW91dFVuaXQgbGluZUhl
aWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IGZpbmFsOwogICAg
IExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlvbigpIGNvbnN0IGZpbmFsOwogCiAgICAgTGF5b3V0
VW5pdCBtYXJnaW5Ub3AoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKaW5kZXggYTQyYWI3NjM2M2YwLi5j
MDU3N2IzNGRjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0TWFya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1h
cmtlci5jcHAKQEAgLTQyMiwxMSArNDIyLDExIEBAIHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6dXBk
YXRlSW5saW5lTWFyZ2lucygpCiAgICAgbXV0YWJsZVN0eWxlKCkuc2V0TWFyZ2luRW5kKFN0eWxl
OjpNYXJnaW5FZGdlOjpGaXhlZCB7IG1hcmdpbkVuZCB9KTsKIH0KIAotTGF5b3V0VW5pdCBSZW5k
ZXJMaXN0TWFya2VyOjpsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9k
ZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgbGluZVBvc2l0aW9uTW9kZSkgY29uc3QKK0xh
eW91dFVuaXQgUmVuZGVyTGlzdE1hcmtlcjo6bGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGlu
ZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uKSBjb25zdAogewogICAgIGlmICghaXNJbWFnZSgpKQot
ICAgICAgICByZXR1cm4gbV9saXN0SXRlbS0+bGluZUhlaWdodChmaXJzdExpbmUsIGRpcmVjdGlv
biwgUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKTsKLSAgICByZXR1cm4gUmVuZGVyQm94Ojps
aW5lSGVpZ2h0KGZpcnN0TGluZSwgZGlyZWN0aW9uLCBsaW5lUG9zaXRpb25Nb2RlKTsKKyAgICAg
ICAgcmV0dXJuIG1fbGlzdEl0ZW0tPmxpbmVIZWlnaHQoZmlyc3RMaW5lLCBkaXJlY3Rpb24pOwor
ICAgIHJldHVybiBSZW5kZXJCb3g6OmxpbmVIZWlnaHQoZmlyc3RMaW5lLCBkaXJlY3Rpb24pOwog
fQogCiBMYXlvdXRVbml0IFJlbmRlckxpc3RNYXJrZXI6OmJhc2VsaW5lUG9zaXRpb24oKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmgKaW5kZXggNzA2
ZWJiMzk0YzY3Li42OWVlNzliYzA3MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0TWFya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpc3RNYXJrZXIuaApAQCAtODEsNyArODEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFp
bnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBmaW5hbDsKICAgICB2b2lkIGxheW91
dCgpIGZpbmFsOwogICAgIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3Qg
SW50UmVjdCopIGZpbmFsOwotICAgIExheW91dFVuaXQgbGluZUhlaWdodChib29sIGZpcnN0TGlu
ZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUpIGNvbnN0IGZpbmFsOworICAg
IExheW91dFVuaXQgbGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUp
IGNvbnN0IGZpbmFsOwogICAgIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlvbigpIGNvbnN0IGZp
bmFsOwogICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29u
dGVudCkgZmluYWw7CiAgICAgYm9vbCBjYW5CZVNlbGVjdGlvbkxlYWYoKSBjb25zdCBmaW5hbCB7
IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sLmNwcAppbmRleCAxMjM4YjZhYzFiMmEuLjQ2ZDUwZDY1MDJiNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCkBAIC0xMDgsNyArMTA4
LDcgQEAgUmVuZGVyQm94OjpMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMgUmVuZGVyVGV4dENv
bnRyb2w6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KEwKIAogICAgIGlmIChSZW5kZXJCb3gqIGlubmVy
VGV4dEJveCA9IGlubmVyVGV4dC0+cmVuZGVyQm94KCkpIHsKICAgICAgICAgTGF5b3V0VW5pdCBu
b25Db250ZW50SGVpZ2h0ID0gaW5uZXJUZXh0Qm94LT5ib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhl
aWdodCgpICsgaW5uZXJUZXh0Qm94LT5tYXJnaW5Mb2dpY2FsSGVpZ2h0KCk7Ci0gICAgICAgIGxv
Z2ljYWxIZWlnaHQgPSBjb21wdXRlQ29udHJvbExvZ2ljYWxIZWlnaHQoaW5uZXJUZXh0Qm94LT5s
aW5lSGVpZ2h0KHRydWUsIEhvcml6b250YWxMaW5lLCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94
ZXMpLCBub25Db250ZW50SGVpZ2h0KTsKKyAgICAgICAgbG9naWNhbEhlaWdodCA9IGNvbXB1dGVD
b250cm9sTG9naWNhbEhlaWdodChpbm5lclRleHRCb3gtPmxpbmVIZWlnaHQodHJ1ZSwgSG9yaXpv
bnRhbExpbmUpLCBub25Db250ZW50SGVpZ2h0KTsKIAogICAgICAgICAvLyBXZSBhcmUgYWJsZSB0
byBoYXZlIGEgaG9yaXpvbnRhbCBzY3JvbGxiYXIgaWYgdGhlIG92ZXJmbG93IHN0eWxlIGlzIHNj
cm9sbCwgb3IgaWYgaXRzIGF1dG8gYW5kIHRoZXJlJ3Mgbm8gd29yZCB3cmFwLgogICAgICAgICBh
dXRvIHNob3VsZEluY2x1ZGVTY3JvbGxiYXJIZWlnaHQgPSBbJl0gewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZVdpZHRoLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9saW5lL0xpbmVXaWR0aC5jcHAKaW5kZXggYmEwOTdiYmUzNjIwLi5lY2VhMWQ3
YTI1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVXaWR0
aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZVdpZHRoLmNwcApA
QCAtNjksNyArNjksNyBAQCBib29sIExpbmVXaWR0aDo6Zml0c09uTGluZUV4Y2x1ZGluZ1RyYWls
aW5nQ29sbGFwc2VkV2hpdGVzcGFjZSgpIGNvbnN0CiB2b2lkIExpbmVXaWR0aDo6dXBkYXRlQXZh
aWxhYmxlV2lkdGgoKQogewogICAgIExheW91dFVuaXQgaGVpZ2h0ID0gbV9ibG9jay5sb2dpY2Fs
SGVpZ2h0KCk7Ci0gICAgYXV0byBsaW5lSGVpZ2h0ID0gc3RkOjptYXgoMF9sdSwgbV9ibG9jay5s
aW5lSGVpZ2h0KHRydWUsIG1fYmxvY2suaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IEhvcml6
b250YWxMaW5lIDogVmVydGljYWxMaW5lLCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpKTsK
KyAgICBhdXRvIGxpbmVIZWlnaHQgPSBzdGQ6Om1heCgwX2x1LCBtX2Jsb2NrLmxpbmVIZWlnaHQo
dHJ1ZSwgbV9ibG9jay5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gSG9yaXpvbnRhbExpbmUg
OiBWZXJ0aWNhbExpbmUpKTsKICAgICBtX2xlZnQgPSBtX2Jsb2NrLmxvZ2ljYWxMZWZ0T2Zmc2V0
Rm9yTGluZShoZWlnaHQsIGxpbmVIZWlnaHQpOwogICAgIG1fcmlnaHQgPSBtX2Jsb2NrLmxvZ2lj
YWxSaWdodE9mZnNldEZvckxpbmUoaGVpZ2h0LCBsaW5lSGVpZ2h0KTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>475729</attachid>
            <date>2025-07-01 15:36:05 -0700</date>
            <delta_ts>2025-07-14 15:57:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-295130-20250701153604.patch</filename>
            <type>text/plain</type>
            <size>55478</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBmMTQ5Mzg4MGRmNjRlNzA2NWExOTI2OTFlMTNjNThkOTQyY2M4YmM2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFR1ZSwgMSBKdWwgMjAyNSAxNTozNTowNCAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSBM
aW5lUG9zaXRpb25Nb2RlIGZyb20gUmVuZGVyQm94TW9kZWxPYmplY3Q6OmxpbmVIZWlnaHQKIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTUxMzAKClJldmlld2VkIGJ5
IEFudHRpIEtvaXZpc3RvLgoKTGluZVBvc2l0aW9uTW9kZSBoYXMgMiB2YWx1ZXMgUG9zaXRpb25P
bkNvbnRhaW5pbmdMaW5lIGFuZCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMuCgpQb3NpdGlv
bk9uQ29udGFpbmluZ0xpbmUgaXMgdXNlZCBhdCAzIHBsYWNlcy4KLSB3ZSB1bmNvbmRpdGlvbmFs
bHkgaWdub3JlIHRoaXMgdmFsdWUgKHNlZSBSZW5kZXJJbmxpbmUgYW5kIFJlbmRlckxpbmVCcmVh
aykgYXQgMiBwbGFjZXMuCi0gUmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24gcGFzc2VzIGlu
IFBvc2l0aW9uT25Db250YWluaW5nTGluZSBvbmx5IHdoZW4gInRoaXMiIGlzIF9ub3RfIGlzQmxv
Y2tMZXZlbFJlcGxhY2VkT3JBdG9taWNJbmxpbmUuClJlbmRlckJsb2NrOjpsaW5lSGVpZ2h0IG9u
bHkgdXNlcyBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUgd2hlbiAidGhpcyIgX2lzXyBpc0Jsb2Nr
TGV2ZWxSZXBsYWNlZE9yQXRvbWljSW5saW5lLgoKKE1hbnkgb3ZlcnJpZGUgc2lnbmF0dXJlcyBh
bHNvIHVzZSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUgYXMgdGhlIGRlZmF1bHQgdmFsdWUsIGJ1
dCBubyBjYWxsZXJzIHV0aWxpemVzIHRoaXMgZGVmYXVsdCBiZWhhdmlvcikKCiogU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQm94R2VvbWV0cnlVcGRh
dGVyLmNwcDoKKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpzZXRJbnRlZ3JhdGlvbkJhc2Vs
aW5lKToKKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpCb3hHZW9tZXRyeVVwZGF0ZXI6OnVw
ZGF0ZUJveEdlb21ldHJ5QWZ0ZXJJbnRlZ3JhdGlvbkxheW91dCk6CiogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0NhcmV0UmVjdENvbXB1dGF0aW9uLmNwcDoKKFdlYkNvcmU6OmNvbXB1dGVDYXJl
dFJlY3RGb3JFbXB0eUVsZW1lbnQpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lM
aW5lTGF5b3V0LmNwcDoKKFdlYkNvcmU6OkxlZ2FjeUxpbmVMYXlvdXQ6OmxheW91dExpbmVCb3hl
cyk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuY3BwOgooV2Vi
Q29yZTo6UmVuZGVyQXR0YWNobWVudDo6YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6CiogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuaDoKKiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgooV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxpbmVIZWln
aHQgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24gY29uc3Qp
OgooV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmlubGluZUJsb2NrQmFzZWxpbmUgY29uc3QpOgoqIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oOgoqIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwOgooV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojps
YXlvdXRCbG9ja1dpdGhOb0NoaWxkcmVuKToKKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bGF5
b3V0SW5GbG93Q2hpbGRyZW4pOgooV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjphZGp1c3RJbml0
aWFsTGV0dGVyUG9zaXRpb24pOgooV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjppbmxpbmVCbG9j
a0Jhc2VsaW5lIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bGF5b3V0SW5saW5l
Q29udGVudCk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CihXZWJD
b3JlOjpSZW5kZXJCb3g6OmxpbmVIZWlnaHQgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyQm94Ojpi
YXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94Lmg6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0Lmg6
CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHA6CihXZWJDb3JlOjpS
ZW5kZXJCdXR0b246OmJhc2VsaW5lUG9zaXRpb24gY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCdXR0b24uaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcDoKKFdlYkNvcmU6OlJlbmRlckRlcHJlY2F0ZWRGbGV4
aWJsZUJveDo6bGF5b3V0SG9yaXpvbnRhbEJveCk6CihXZWJDb3JlOjpSZW5kZXJEZXByZWNhdGVk
RmxleGlibGVCb3g6OmxheW91dFZlcnRpY2FsQm94KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwOgooV2ViQ29yZTo6UmVuZGVyRmlsZVVwbG9h
ZENvbnRyb2w6OnBhaW50Q29udHJvbCk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZsZXhpYmxlQm94LmNwcDoKKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpiYXNlbGluZVBv
c2l0aW9uIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpwZXJmb3JtRmxleExh
eW91dCk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94Lmg6Ciog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwOgooV2ViQ29yZTo6UmVuZGVy
R3JpZDo6bGF5b3V0R3JpZCk6CihXZWJDb3JlOjpSZW5kZXJHcmlkOjpsYXlvdXRNYXNvbnJ5KToK
KFdlYkNvcmU6OlJlbmRlckdyaWQ6OmJhc2VsaW5lUG9zaXRpb24gY29uc3QpOgoqIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmg6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcDoKKFdlYkNvcmU6OlJlbmRlckltYWdlOjpiYXNlbGluZVBvc2l0aW9u
IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaDoKKiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcDoKKFdlYkNvcmU6OlJlbmRlcklu
bGluZTo6bGluZUhlaWdodCBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmJhc2VsaW5l
UG9zaXRpb24gY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUu
aDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcDoKKFdlYkNv
cmU6OlJlbmRlckxpbmVCcmVhazo6bGluZUhlaWdodCBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJM
aW5lQnJlYWs6OmJhc2VsaW5lUG9zaXRpb24gY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaW5lQnJlYWsuaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGlzdEJveC5jcHA6CihXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpiYXNlbGluZVBvc2l0aW9uIGNv
bnN0KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oOgoqIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcDoKKFdlYkNvcmU6OlJlbmRl
ckxpc3RNYXJrZXI6OmxpbmVIZWlnaHQgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyTGlzdE1hcmtl
cjo6YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpc3RNYXJrZXIuaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxp
c3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcDoKKFdlYkNv
cmU6OlJlbmRlclNsaWRlcjo6YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6CiogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5oOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZS5jcHA6CihXZWJDb3JlOjpSZW5kZXJUYWJsZTo6YmFzZWxpbmVQb3NpdGlvbiBj
b25zdCk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmg6CiogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcDoKKFdlYkNvcmU6OlJlbmRl
clRleHRDb250cm9sOjpjb21wdXRlTG9naWNhbEhlaWdodCBjb25zdCk6CiogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmg6CiogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcDoKKFdlYkNvcmU6OlJlbmRlclRleHRD
b250cm9sTXVsdGlMaW5lOjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaDoKKiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbGluZS9MaW5lV2lkdGguY3BwOgooV2ViQ29yZTo6TGluZVdpZHRoOjp1cGRh
dGVBdmFpbGFibGVXaWR0aCk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxCbG9jay5jcHA6CihXZWJDb3JlOjpSZW5kZXJNYXRoTUxCbG9jazo6YmFzZWxpbmVQ
b3NpdGlvbiBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxCbG9jay5oOgotLS0KIC4uLi9MYXlvdXRJbnRlZ3JhdGlvbkJveEdlb21ldHJ5VXBkYXRl
ci5jcHAgICB8ICA2ICsrLS0tCiAuLi4vcmVuZGVyaW5nL0NhcmV0UmVjdENvbXB1dGF0aW9uLmNw
cCAgICAgICAgfCAgMiArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlv
dXQuY3BwIHwgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBdHRhY2htZW50
LmNwcCB8ICAyICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVudC5o
ICAgfCAgMiArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCAgICAg
IHwgMjMgKysrKysrKy0tLS0tLS0tLS0tLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmggICAgICAgIHwgIDQgKystLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrRmxvdy5jcHAgIHwgMTAgKysrKy0tLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guY3BwICAgICAgICB8ICA2ICsrLS0tCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmggICAgICAgICAgfCAgNCArKy0tCiAuLi4vV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuaCAgfCAgNSArKy0tCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQnV0dG9uLmNwcCAgICAgfCAgOCArKystLS0tCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQnV0dG9uLmggICAgICAgfCAgMiArLQogLi4uL3JlbmRlcmluZy9SZW5kZXJEZXBy
ZWNhdGVkRmxleGlibGVCb3guY3BwIHwgIDQgKystLQogLi4uL3JlbmRlcmluZy9SZW5kZXJGaWxl
VXBsb2FkQ29udHJvbC5jcHAgICAgIHwgIDQgKystLQogLi4uL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZsZXhpYmxlQm94LmNwcCAgIHwgMTAgKysrKy0tLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGbGV4aWJsZUJveC5oICB8ICAyICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyR3JpZC5jcHAgICAgICAgfCAxMSArKysrLS0tLS0KIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJHcmlkLmggICAgICAgICB8ICAyICstCiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuY3BwICAgICAgfCAgNCArKy0tCiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuaCAgICAgICAgfCAgMiArLQogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcklubGluZS5jcHAgICAgIHwgIDkgKysrKy0tLS0KIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbmxpbmUuaCAgICAgICB8ICA0ICsrLS0KIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwICB8ICA5ICsrKystLS0tCiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmggICAgfCAgNCArKy0tCiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgICAgfCAgNCArKy0tCiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oICAgICAgfCAgMiArLQogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwIHwgMTIgKysrKystLS0tLQogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaCAgIHwgIDQgKystLQogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmggICAgIHwgIDQgKystLQogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAgICAgIHwgIDIgKy0KIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuaCAgICAgICB8ICAyICstCiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwICAgICAgfCAgNiArKy0tLQogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmggICAgICAgIHwgIDIgKy0KIC4uLi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAgICB8ICAyICstCiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaCAgfCAgNCArKy0tCiAuLi4vcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcCAgfCAgNCArKy0tCiAuLi4vcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sTXVsdGlMaW5lLmggICAgfCAgMiArLQogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL2xpbmUvTGluZVdpZHRoLmNwcCAgIHwgIDIgKy0KIC4uLi9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTEJsb2NrLmNwcCAgICB8ICA3ICsrLS0tLQogLi4uL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MQmxvY2suaCAgICAgIHwgIDIgKy0KIDQxIGZpbGVzIGNoYW5nZWQsIDk0
IGluc2VydGlvbnMoKyksIDEwOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Cb3hHZW9tZXRyeVVwZGF0
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0
aW9uQm94R2VvbWV0cnlVcGRhdGVyLmNwcAppbmRleCBjNWExNWQwN2MzODUuLjEwOGUwNjA3MjEx
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uQm94R2VvbWV0cnlVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Cb3hHZW9tZXRyeVVwZGF0ZXIuY3BwCkBA
IC0yODQsNyArMjg0LDcgQEAgc3RhdGljIGlubGluZSBMYXlvdXRTaXplIHNjcm9sbGJhckxvZ2lj
YWxTaXplKGNvbnN0IFJlbmRlckJveCYgcmVuZGVyZXIpCiAgICAgcmV0dXJuIHsgaG9yaXpvbnRh
bFNwYWNlUmVzZXJ2ZWRGb3JTY3JvbGxiYXIsIHZlcnRpY2FsU3BhY2VSZXNlcnZlZEZvclNjcm9s
bGJhciB9OwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgc2V0SW50ZWdyYXRpb25CYXNlbGluZShj
b25zdCBSZW5kZXJCb3gmIHJlbmRlckJveCwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpCitzdGF0
aWMgaW5saW5lIHZvaWQgc2V0SW50ZWdyYXRpb25CYXNlbGluZShjb25zdCBSZW5kZXJCb3gmIHJl
bmRlckJveCkKIHsKICAgICBhdXRvIGhhc05vblN5bnRoZXRpY0Jhc2VsaW5lID0gWyZdIHsKICAg
ICAgICAgaWYgKGF1dG8qIHJlbmRlckxpc3RNYXJrZXIgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVy
TGlzdE1hcmtlcj4ocmVuZGVyQm94KSkKQEAgLTMxOCw3ICszMTgsNyBAQCBzdGF0aWMgaW5saW5l
IHZvaWQgc2V0SW50ZWdyYXRpb25CYXNlbGluZShjb25zdCBSZW5kZXJCb3gmIHJlbmRlckJveCwg
V3JpdGluZ01vZAogICAgIGlmICghaGFzTm9uU3ludGhldGljQmFzZWxpbmUoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgYXV0byBiYXNlbGluZSA9IHJlbmRlckJveC5iYXNlbGluZVBvc2l0aW9u
KGZhbHNlIC8qIGZpcnN0TGluZSAqLywgd3JpdGluZ01vZGUuaXNIb3Jpem9udGFsKCkgPyBIb3Jp
em9udGFsTGluZSA6IFZlcnRpY2FsTGluZSwgUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKTsKKyAg
ICBhdXRvIGJhc2VsaW5lID0gcmVuZGVyQm94LmJhc2VsaW5lUG9zaXRpb24oKTsKICAgICBjb25z
dF9jYXN0PExheW91dDo6RWxlbWVudEJveCY+KCpyZW5kZXJCb3gubGF5b3V0Qm94KCkpLnNldEJh
c2VsaW5lRm9ySW50ZWdyYXRpb24oYmFzZWxpbmUpOwogfQogCkBAIC00ODcsNyArNDg3LDcgQEAg
dm9pZCBCb3hHZW9tZXRyeVVwZGF0ZXI6OnVwZGF0ZUJveEdlb21ldHJ5QWZ0ZXJJbnRlZ3JhdGlv
bkxheW91dChjb25zdCBMYXlvdXQ6OkUKIAogICAgIGF1dG8gaW50ZWdyYXRpb25BZGp1c3RtZW50
cyA9IFsmXSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGVzZSBzaG91bGQgZXZlbnR1YWxseSBiZSBh
bGwgYWJzb3JiZWQgYnkgTEZDIGxheW91dC4KLSAgICAgICAgc2V0SW50ZWdyYXRpb25CYXNlbGlu
ZSgqcmVuZGVyQm94LCB3cml0aW5nTW9kZSgpKTsKKyAgICAgICAgc2V0SW50ZWdyYXRpb25CYXNl
bGluZSgqcmVuZGVyQm94KTsKIAogICAgICAgICBpZiAoYXV0byogcmVuZGVyTGlzdE1hcmtlciA9
IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJMaXN0TWFya2VyPigqcmVuZGVyQm94KSkgewogICAgICAg
ICAgICAgYXV0byYgc3R5bGUgPSBsYXlvdXRCb3gucGFyZW50KCkuc3R5bGUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DYXJldFJlY3RDb21wdXRhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2FyZXRSZWN0Q29tcHV0YXRpb24uY3BwCmluZGV4IDEy
Yjg1NmVjZWIxNy4uNDk1N2ViMTdjNDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvQ2FyZXRSZWN0Q29tcHV0YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9DYXJldFJlY3RDb21wdXRhdGlvbi5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCBzdGF0aWMg
TGF5b3V0UmVjdCBjb21wdXRlQ2FyZXRSZWN0Rm9yRW1wdHlFbGVtZW50KGNvbnN0IFJlbmRlckJv
eE1vZGVsT2JqZWN0JiByZQogICAgIH0KICAgICB4ID0gc3RkOjptaW4oeCwgc3RkOjptYXg8TGF5
b3V0VW5pdD4obWF4WCAtIGNhcmV0V2lkdGgoKSwgMCkpOwogCi0gICAgYXV0byBsaW5lSGVpZ2h0
ID0gcmVuZGVyZXIubGluZUhlaWdodCh0cnVlLCB3cml0aW5nTW9kZS5pc0hvcml6b250YWwoKSA/
IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5lLCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94
ZXMpOworICAgIGF1dG8gbGluZUhlaWdodCA9IHJlbmRlcmVyLmxpbmVIZWlnaHQodHJ1ZSwgd3Jp
dGluZ01vZGUuaXNIb3Jpem9udGFsKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSk7
CiAgICAgYXV0byBoZWlnaHQgPSBzdGQ6Om1pbihsaW5lSGVpZ2h0LCBMYXlvdXRVbml0IHsgY3Vy
cmVudFN0eWxlLm1ldHJpY3NPZlByaW1hcnlGb250KCkuaGVpZ2h0KCkgfSk7CiAgICAgYXV0byB5
ID0gcmVuZGVyZXIuYm9yZGVyQW5kUGFkZGluZ0JlZm9yZSgpICsgKGxpbmVIZWlnaHQgPiBoZWln
aHQgPyAobGluZUhlaWdodCAtIGhlaWdodCkgLyAyIDogTGF5b3V0VW5pdCB7IH0pOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5jcHAKaW5kZXggMmI3YTQx
NmQ4MzZlLi45OWRjNzAzNWNkMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9MZWdhY3lMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVn
YWN5TGluZUxheW91dC5jcHAKQEAgLTU3Niw3ICs1NzYsNyBAQCB2b2lkIExlZ2FjeUxpbmVMYXlv
dXQ6OmxheW91dExpbmVCb3hlcygpCiAgICAgfQogCiAgICAgaWYgKCFsZWdhY3lSb290Qm94KCkg
JiYgbV9mbG93Lmhhc0xpbmVJZkVtcHR5KCkpCi0gICAgICAgIG1fZmxvdy5zZXRMb2dpY2FsSGVp
Z2h0KG1fZmxvdy5sb2dpY2FsSGVpZ2h0KCkgKyBtX2Zsb3cubGluZUhlaWdodCh0cnVlLCBtX2Zs
b3cuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGljYWxM
aW5lLCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpKTsKKyAgICAgICAgbV9mbG93LnNldExv
Z2ljYWxIZWlnaHQobV9mbG93LmxvZ2ljYWxIZWlnaHQoKSArIG1fZmxvdy5saW5lSGVpZ2h0KHRy
dWUsIG1fZmxvdy5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gSG9yaXpvbnRhbExpbmUgOiBW
ZXJ0aWNhbExpbmUpKTsKIH0KIAogdm9pZCBMZWdhY3lMaW5lTGF5b3V0OjphZGRPdmVyZmxvd0Zy
b21JbmxpbmVDaGlsZHJlbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQXR0
YWNobWVudC5jcHAKaW5kZXggN2MwMDAxZDViZmJkLi44MTY1Mzk0N2NhZGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBdHRhY2htZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVudC5jcHAKQEAgLTEwMyw3ICsxMDMs
NyBAQCB2b2lkIFJlbmRlckF0dGFjaG1lbnQ6OmxheW91dCgpCiAgICAgICAgIGxheW91dFNoYWRv
d0NvbnRlbnQobmV3SW50cmluc2ljU2l6ZSk7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyQXR0YWNo
bWVudDo6YmFzZWxpbmVQb3NpdGlvbihib29sLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0
aW9uTW9kZSkgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyQXR0YWNobWVudDo6YmFzZWxpbmVQb3Np
dGlvbigpIGNvbnN0CiB7CiAgICAgaWYgKGF1dG8qIGJhc2VsaW5lRWxlbWVudCA9IGF0dGFjaG1l
bnRFbGVtZW50KCkud2lkZUxheW91dEltYWdlRWxlbWVudCgpKSB7CiAgICAgICAgIGlmIChhdXRv
KiBiYXNlbGluZUVsZW1lbnRSZW5kZXJCb3ggPSBiYXNlbGluZUVsZW1lbnQtPnJlbmRlckJveCgp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuaAppbmRleCBl
NGM1MmU3YjlhNjguLmY4NGZjYjhhODVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQXR0YWNobWVudC5oCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IGxheW91dCgpIG92ZXJyaWRlOwogCi0gICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKGJv
b2wsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlKSBjb25zdCBvdmVycmlkZTsK
KyAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IExheW91dFVuaXQgbV9taW5pbXVtSW50cmluc2ljV2lkdGg7CiAgICAgYm9vbCBtX3Nob3VsZERy
YXdCb3JkZXIgeyB0cnVlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cAppbmRleCBjY2MyM2I4NDQ4YzEuLmEzZDYxNzI4NGVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0yNDc0LDI2ICsyNDc0LDIwIEBAIGJvb2wgUmVuZGVy
QmxvY2s6Omhhc0xpbmVJZkVtcHR5KCkgY29uc3QKICAgICByZXR1cm4gZWxlbWVudCAmJiBlbGVt
ZW50LT5pc1Jvb3RFZGl0YWJsZUVsZW1lbnQoKTsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJCbG9j
azo6bGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9u
LCBMaW5lUG9zaXRpb25Nb2RlIGxpbmVQb3NpdGlvbk1vZGUpIGNvbnN0CitMYXlvdXRVbml0IFJl
bmRlckJsb2NrOjpsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSkg
Y29uc3QKIHsKLSAgICAvLyBJbmxpbmUgYmxvY2tzIGFyZSByZXBsYWNlZCBlbGVtZW50cy4gT3Ro
ZXJ3aXNlLCBqdXN0IHBhc3Mgb2ZmIHRvCi0gICAgLy8gdGhlIGJhc2UgY2xhc3MuICBJZiB3ZSdy
ZSBiZWluZyBxdWVyaWVkIGFzIHRob3VnaCB3ZSdyZSB0aGUgcm9vdCBsaW5lCi0gICAgLy8gYm94
LCB0aGVuIHRoZSBmYWN0IHRoYXQgd2UncmUgYW4gaW5saW5lLWJsb2NrIGlzIGlycmVsZXZhbnQs
IGFuZCB3ZSBiZWhhdmUKLSAgICAvLyBqdXN0IGxpa2UgYSBibG9jay4KLSAgICBpZiAoaXNCbG9j
a0xldmVsUmVwbGFjZWRPckF0b21pY0lubGluZSgpICYmIGxpbmVQb3NpdGlvbk1vZGUgPT0gUG9z
aXRpb25PbkNvbnRhaW5pbmdMaW5lKQotICAgICAgICByZXR1cm4gUmVuZGVyQm94OjpsaW5lSGVp
Z2h0KGZpcnN0TGluZSwgZGlyZWN0aW9uLCBsaW5lUG9zaXRpb25Nb2RlKTsKLQogICAgIGF1dG8m
IGxpbmVTdHlsZSA9IGZpcnN0TGluZSA/IGZpcnN0TGluZVN0eWxlKCkgOiBzdHlsZSgpOwogICAg
IHJldHVybiBMYXlvdXRVbml0Ojpmcm9tRmxvYXRDZWlsKGxpbmVTdHlsZS5jb21wdXRlZExpbmVI
ZWlnaHQoKSk7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24o
Ym9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9u
TW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6YmFz
ZWxpbmVQb3NpdGlvbigpIGNvbnN0CiB7CisgICAgYXV0byBkaXJlY3Rpb24gPSBjb250YWluaW5n
QmxvY2soKS0+d3JpdGluZ01vZGUoKS5pc0hvcml6b250YWwoKSA/IEhvcml6b250YWxMaW5lIDog
VmVydGljYWxMaW5lOwogICAgIC8vIElubGluZSBibG9ja3MgYXJlIHJlcGxhY2VkIGVsZW1lbnRz
LiBPdGhlcndpc2UsIGp1c3QgcGFzcyBvZmYgdG8KICAgICAvLyB0aGUgYmFzZSBjbGFzcy4gIElm
IHdlJ3JlIGJlaW5nIHF1ZXJpZWQgYXMgdGhvdWdoIHdlJ3JlIHRoZSByb290IGxpbmUKICAgICAv
LyBib3gsIHRoZW4gdGhlIGZhY3QgdGhhdCB3ZSdyZSBhbiBpbmxpbmUtYmxvY2sgaXMgaXJyZWxl
dmFudCwgYW5kIHdlIGJlaGF2ZQogICAgIC8vIGp1c3QgbGlrZSBhIGJsb2NrLgotICAgIGlmIChp
c0Jsb2NrTGV2ZWxSZXBsYWNlZE9yQXRvbWljSW5saW5lKCkgJiYgbGluZVBvc2l0aW9uTW9kZSA9
PSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIHsKKyAgICBpZiAoaXNCbG9ja0xldmVsUmVwbGFj
ZWRPckF0b21pY0lubGluZSgpKSB7CiAgICAgICAgIC8vIEZvciAibGVhZiIgdGhlbWUgb2JqZWN0
cywgbGV0IHRoZSB0aGVtZSBkZWNpZGUgd2hhdCB0aGUgYmFzZWxpbmUgcG9zaXRpb24gaXMuCiAg
ICAgICAgIC8vIEZJWE1FOiBNaWdodCBiZSBiZXR0ZXIgdG8gaGF2ZSBhIGN1c3RvbSBDU1MgcHJv
cGVydHkgaW5zdGVhZCwgc28gdGhhdCBpZiB0aGUgdGhlbWUKICAgICAgICAgLy8gaXMgdHVybmVk
IG9mZiwgY2hlY2tib3hlcy9yYWRpb3Mgd2lsbCBzdGlsbCBoYXZlIGRlY2VudCBiYXNlbGluZXMu
CkBAIC0yNTM3LDEyICsyNTMxLDExIEBAIExheW91dFVuaXQgUmVuZGVyQmxvY2s6OmJhc2VsaW5l
UG9zaXRpb24oYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjCiAgICAgICAg
IGlmIChiYXNlbGluZVBvcykKICAgICAgICAgICAgIHJldHVybiBkaXJlY3Rpb24gPT0gSG9yaXpv
bnRhbExpbmUgPyBtYXJnaW5Ub3AoKSArIGJhc2VsaW5lUG9zLnZhbHVlKCkgOiBtYXJnaW5SaWdo
dCgpICsgYmFzZWxpbmVQb3MudmFsdWUoKTsKIAotICAgICAgICByZXR1cm4gUmVuZGVyQm94Ojpi
YXNlbGluZVBvc2l0aW9uKGZpcnN0TGluZSwgZGlyZWN0aW9uLCBsaW5lUG9zaXRpb25Nb2RlKTsK
KyAgICAgICAgcmV0dXJuIFJlbmRlckJveDo6YmFzZWxpbmVQb3NpdGlvbigpOwogICAgIH0KIAot
ICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IGZpcnN0TGluZSA/IGZpcnN0TGluZVN0eWxl
KCkgOiB0aGlzLT5zdHlsZSgpOwotICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9
IHN0eWxlLm1ldHJpY3NPZlByaW1hcnlGb250KCk7Ci0gICAgcmV0dXJuIExheW91dFVuaXQgeyBm
b250TWV0cmljcy5pbnRBc2NlbnQoKSArIChsaW5lSGVpZ2h0KGZpcnN0TGluZSwgZGlyZWN0aW9u
LCBsaW5lUG9zaXRpb25Nb2RlKSAtIGZvbnRNZXRyaWNzLmludEhlaWdodCgpKSAvIDIgfS50b0lu
dCgpOworICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxlKCkubWV0cmlj
c09mUHJpbWFyeUZvbnQoKTsKKyAgICByZXR1cm4gTGF5b3V0VW5pdCB7IGZvbnRNZXRyaWNzLmlu
dEFzY2VudCgpICsgKGxpbmVIZWlnaHQodHJ1ZSwgZGlyZWN0aW9uKSAtIGZvbnRNZXRyaWNzLmlu
dEhlaWdodCgpKSAvIDIgfS50b0ludCgpOwogfQogCiBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+
IFJlbmRlckJsb2NrOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CkBAIC0yNjAyLDcgKzI1OTUs
NyBAQCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJsb2NrOjppbmxpbmVCbG9ja0Jh
c2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlIGxpbgogICAgIGlmICghaGF2ZU5vcm1hbEZsb3dDaGls
ZCAmJiBoYXNMaW5lSWZFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8mIGZvbnRNZXRyaWNzID0gZmly
c3RMaW5lU3R5bGUoKS5tZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwogICAgICAgICByZXR1cm4gTGF5
b3V0VW5pdCB7IExheW91dFVuaXQoZm9udE1ldHJpY3MuaW50QXNjZW50KCkKLSAgICAgICAgICAg
ICsgKGxpbmVIZWlnaHQodHJ1ZSwgbGluZURpcmVjdGlvbiwgUG9zaXRpb25PZkludGVyaW9yTGlu
ZUJveGVzKSAtIGZvbnRNZXRyaWNzLmludEhlaWdodCgpKSAvIDIKKyAgICAgICAgICAgICsgKGxp
bmVIZWlnaHQodHJ1ZSwgbGluZURpcmVjdGlvbikgLSBmb250TWV0cmljcy5pbnRIZWlnaHQoKSkg
LyAyCiAgICAgICAgICAgICArIChsaW5lRGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8gYm9y
ZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkgOiBib3JkZXJSaWdodCgpICsgcGFkZGluZ1JpZ2h0KCkp
KS50b0ludCgpIH07CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5o
CmluZGV4IDIxZDNmNzZmNGMwNy4uOGI1OTJkMWMzOTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suaApAQCAtNjYsOCArNjYsOCBAQCBwcm90ZWN0ZWQ6CiAKIHB1YmxpYzoK
ICAgICAvLyBUaGVzZSB0d28gZnVuY3Rpb25zIGFyZSBvdmVycmlkZGVuIGZvciBpbmxpbmUtYmxv
Y2suCi0gICAgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0
aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29u
c3QgZmluYWw7Ci0gICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKGJvb2wgZmlyc3RMaW5l
LCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWlu
aW5nTGluZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0KGJvb2wg
Zmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3QgZmluYWw7CisgICAgTGF5b3V0VW5p
dCBiYXNlbGluZVBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBGSVhNRS1CTE9D
S0ZMT1c6IFJlbW92ZSB2aXJ0dWFsaXphaW9uIHdoZW4gYWxsIGNhbGxlcnMgaGF2ZSBtb3ZlZCB0
byBSZW5kZXJCbG9ja0Zsb3cKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlTGluZXMoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggZjBhNmRlYjE5
NzBlLi4zNjIzNWFlNmQ4MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9ja0Zsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9ja0Zsb3cuY3BwCkBAIC00NjgsNyArNDY4LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6Omxh
eW91dEJsb2NrV2l0aE5vQ2hpbGRyZW4oKQogICAgICAgICAgICAgc2V0SGFzTWFyZ2luQmVmb3Jl
UXVpcmsoc3R5bGUubWFyZ2luQmVmb3JlKCkuaGFzUXVpcmsoKSk7CiAgICAgICAgICAgICBzZXRI
YXNNYXJnaW5BZnRlclF1aXJrKHN0eWxlLm1hcmdpbkFmdGVyKCkuaGFzUXVpcmsoKSk7CiAgICAg
ICAgIH0KLSAgICAgICAgc2V0TG9naWNhbEhlaWdodChib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhl
aWdodCgpICsgc2Nyb2xsYmFyTG9naWNhbEhlaWdodCgpICsgKGhhc0xpbmVJZkVtcHR5KCkgPyBs
aW5lSGVpZ2h0KHRydWUsIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGlu
ZSA6IFZlcnRpY2FsTGluZSwgUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKSA6IDBfbHUpKTsK
KyAgICAgICAgc2V0TG9naWNhbEhlaWdodChib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgp
ICsgc2Nyb2xsYmFyTG9naWNhbEhlaWdodCgpICsgKGhhc0xpbmVJZkVtcHR5KCkgPyBsaW5lSGVp
Z2h0KHRydWUsIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZl
cnRpY2FsTGluZSkgOiAwX2x1KSk7CiAgICAgICAgIHVwZGF0ZUxvZ2ljYWxIZWlnaHQoKTsKICAg
ICB9OwogICAgIGNvbXB1dGVCbG9ja0F4aXNTaXplKCk7CkBAIC03ODAsNyArNzgwLDcgQEAgdm9p
ZCBSZW5kZXJCbG9ja0Zsb3c6OmxheW91dEluRmxvd0NoaWxkcmVuKFJlbGF5b3V0Q2hpbGRyZW4g
cmVsYXlvdXRDaGlsZHJlbiwgTGEKIAogICAgICAgICBhdXRvIGxvZ2ljYWxIZWlnaHQgPSBib3Jk
ZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpICsgc2Nyb2xsYmFyTG9naWNhbEhlaWdodCgpOwog
ICAgICAgICBpZiAoaGFzTGluZUlmRW1wdHkoKSkKLSAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHQg
Kz0gbGluZUhlaWdodCh0cnVlLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gSG9yaXpvbnRh
bExpbmUgOiBWZXJ0aWNhbExpbmUsIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcyk7CisgICAg
ICAgICAgICBsb2dpY2FsSGVpZ2h0ICs9IGxpbmVIZWlnaHQodHJ1ZSwgaXNIb3Jpem9udGFsV3Jp
dGluZ01vZGUoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5lKTsKICAgICAgICAgc2V0
TG9naWNhbEhlaWdodChsb2dpY2FsSGVpZ2h0KTsKIAogICAgICAgICByZXBhaW50TG9naWNhbFRv
cCA9IHsgfTsKQEAgLTI3NDksNyArMjc0OSw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjphZGp1
c3RJbml0aWFsTGV0dGVyUG9zaXRpb24oUmVuZGVyQm94JiBjaGlsZEJveCwgTGF5b3V0VW5pCiAg
ICAgaWYgKCFmb250TWV0cmljcy5jYXBIZWlnaHQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
TGF5b3V0VW5pdCBoZWlnaHRPZkxpbmUgPSBsaW5lSGVpZ2h0KHRydWUsIGlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSwgUG9zaXRpb25PZklu
dGVyaW9yTGluZUJveGVzKTsKKyAgICBMYXlvdXRVbml0IGhlaWdodE9mTGluZSA9IGxpbmVIZWln
aHQodHJ1ZSwgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IEhvcml6b250YWxMaW5lIDogVmVy
dGljYWxMaW5lKTsKICAgICBMYXlvdXRVbml0IGJlZm9yZU1hcmdpbkJvcmRlclBhZGRpbmcgPSBj
aGlsZEJveC5ib3JkZXJBbmRQYWRkaW5nQmVmb3JlKCkgKyBjaGlsZEJveC5tYXJnaW5CZWZvcmUo
KTsKICAgICAKICAgICAvLyBNYWtlIGFuIGFkanVzdG1lbnQgdG8gYWxpZ24gd2l0aCB0aGUgY2Fw
IGhlaWdodCBvZiBhIHRoZW9yZXRpY2FsIGJsb2NrIGxpbmUuCkBAIC0zMzI2LDcgKzMzMjYsNyBA
QCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJsb2NrRmxvdzo6aW5saW5lQmxvY2tC
YXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgICAgICBjb25zdCBhdXRvJiBmb250TWV0cmljcyA9IGZpcnN0TGluZVN0
eWxlKCkubWV0cmljc09mUHJpbWFyeUZvbnQoKTsKICAgICAgICAgICAgIHJldHVybiBMYXlvdXRV
bml0IHsgTGF5b3V0VW5pdChmb250TWV0cmljcy5pbnRBc2NlbnQoKQotICAgICAgICAgICAgICAg
ICsgKGxpbmVIZWlnaHQodHJ1ZSwgbGluZURpcmVjdGlvbiwgUG9zaXRpb25PZkludGVyaW9yTGlu
ZUJveGVzKSAtIGZvbnRNZXRyaWNzLmludEhlaWdodCgpKSAvIDIKKyAgICAgICAgICAgICAgICAr
IChsaW5lSGVpZ2h0KHRydWUsIGxpbmVEaXJlY3Rpb24pIC0gZm9udE1ldHJpY3MuaW50SGVpZ2h0
KCkpIC8gMgogICAgICAgICAgICAgICAgICsgKGxpbmVEaXJlY3Rpb24gPT0gSG9yaXpvbnRhbExp
bmUgPyBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSA6IGJvcmRlclJpZ2h0KCkgKyBwYWRkaW5n
UmlnaHQoKSkpLnRvSW50KCkgfTsKICAgICAgICAgfQogCkBAIC00MDQ1LDcgKzQwNDUsNyBAQCB2
b2lkIFJlbmRlckJsb2NrRmxvdzo6bGF5b3V0SW5saW5lQ29udGVudChSZWxheW91dENoaWxkcmVu
IHJlbGF5b3V0Q2hpbGRyZW4sIExheQogICAgIGF1dG8gcGFydGlhbFJlcGFpbnRSZWN0ID0gbGF5
b3V0Rm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LmxheW91dChyZWxheW91dENoaWxkcmVuID09
IFJlbGF5b3V0Q2hpbGRyZW46OlllcyA/IExheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0OjpG
b3JjZUZ1bGxMYXlvdXQ6OlllcyA6IExheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0OjpGb3Jj
ZUZ1bGxMYXlvdXQ6Ok5vKTsKIAogICAgIGF1dG8gYm9yZGVyQm94Qm90dG9tID0gWyZdIHsKLSAg
ICAgICAgYXV0byBjb250ZW50SGVpZ2h0ID0gIWhhc0xpbmVzKCkgJiYgaGFzTGluZUlmRW1wdHko
KSA/IGxpbmVIZWlnaHQodHJ1ZSwgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IEhvcml6b250
YWxMaW5lIDogVmVydGljYWxMaW5lLCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpIDogbGF5
b3V0Rm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LmNvbnRlbnRMb2dpY2FsSGVpZ2h0KCk7Cisg
ICAgICAgIGF1dG8gY29udGVudEhlaWdodCA9ICFoYXNMaW5lcygpICYmIGhhc0xpbmVJZkVtcHR5
KCkgPyBsaW5lSGVpZ2h0KHRydWUsIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9u
dGFsTGluZSA6IFZlcnRpY2FsTGluZSkgOiBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlv
dXQuY29udGVudExvZ2ljYWxIZWlnaHQoKTsKICAgICAgICAgcmV0dXJuIGJvcmRlckFuZFBhZGRp
bmdCZWZvcmUoKSArIGNvbnRlbnRIZWlnaHQgKyBib3JkZXJBbmRQYWRkaW5nQWZ0ZXIoKSArIHNj
cm9sbGJhckxvZ2ljYWxIZWlnaHQoKTsKICAgICB9OwogICAgIGF1dG8gbmV3Qm9yZGVyQm94Qm90
dG9tID0gYm9yZGVyQm94Qm90dG9tKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCmluZGV4IDk1MGRkOWRlMWY4NC4uMThjYTgxZjE2MWFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtNDk2MCwxNyArNDk2MCwxNyBAQCBib29sIFJlbmRlckJv
eDo6aXNVbnNwbGl0dGFibGVGb3JQYWdpbmF0aW9uKCkgY29uc3QKICAgICAgICAgfHwgc2hvdWxk
QXBwbHlTaXplQ29udGFpbm1lbnQoKTsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmxpbmVI
ZWlnaHQoYm9vbCAvKmZpcnN0TGluZSovLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExp
bmVQb3NpdGlvbk1vZGUgLypsaW5lUG9zaXRpb25Nb2RlKi8pIGNvbnN0CitMYXlvdXRVbml0IFJl
bmRlckJveDo6bGluZUhlaWdodChib29sIC8qZmlyc3RMaW5lKi8sIExpbmVEaXJlY3Rpb25Nb2Rl
IGRpcmVjdGlvbikgY29uc3QKIHsKICAgICBpZiAoaXNCbG9ja0xldmVsUmVwbGFjZWRPckF0b21p
Y0lubGluZSgpKQogICAgICAgICByZXR1cm4gZGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8g
bV9tYXJnaW5Cb3gudG9wKCkgKyBoZWlnaHQoKSArIG1fbWFyZ2luQm94LmJvdHRvbSgpIDogbV9t
YXJnaW5Cb3gucmlnaHQoKSArIHdpZHRoKCkgKyBtX21hcmdpbkJveC5sZWZ0KCk7CiAgICAgcmV0
dXJuIDA7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyQm94OjpiYXNlbGluZVBvc2l0aW9uKGJvb2wg
LypmaXJzdExpbmUqLywgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25N
b2RlIC8qbGluZVBvc2l0aW9uTW9kZSovKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmJh
c2VsaW5lUG9zaXRpb24oKSBjb25zdAogewogICAgIGlmIChpc0Jsb2NrTGV2ZWxSZXBsYWNlZE9y
QXRvbWljSW5saW5lKCkpCi0gICAgICAgIHJldHVybiByb3VuZFRvSW50KGRpcmVjdGlvbiA9PSBI
b3Jpem9udGFsTGluZSA/IG1fbWFyZ2luQm94LnRvcCgpICsgaGVpZ2h0KCkgKyBtX21hcmdpbkJv
eC5ib3R0b20oKSA6IG1fbWFyZ2luQm94LnJpZ2h0KCkgKyB3aWR0aCgpICsgbV9tYXJnaW5Cb3gu
bGVmdCgpKTsKKyAgICAgICAgcmV0dXJuIHJvdW5kVG9JbnQoY29udGFpbmluZ0Jsb2NrKCktPndy
aXRpbmdNb2RlKCkuaXNIb3Jpem9udGFsKCkgPyBtX21hcmdpbkJveC50b3AoKSArIGhlaWdodCgp
ICsgbV9tYXJnaW5Cb3guYm90dG9tKCkgOiBtX21hcmdpbkJveC5yaWdodCgpICsgd2lkdGgoKSAr
IG1fbWFyZ2luQm94LmxlZnQoKSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guaAppbmRleCBhODRiNzA2ZTczZDguLmViMmUyYjNhYTVlZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtNTI2LDggKzUyNiw4IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgdm9pZCBtYXJrRm9yUGFnaW5hdGlvblJlbGF5b3V0SWZOZWVkZWQoKSB7
IH0KICAgICAKLSAgICBMYXlvdXRVbml0IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVE
aXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5l
KSBjb25zdCBvdmVycmlkZTsKLSAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oYm9vbCBm
aXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25P
bkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IGxpbmVIZWln
aHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oKSBjb25zdCBvdmVycmlkZTsKIAogICAgIExh
eW91dFVuaXQgb2Zmc2V0TGVmdCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIExheW91dFVuaXQgb2Zm
c2V0VG9wKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5oCmluZGV4IDNiYmE2NTZlMmQyNy4uY2ZmZjk3N2FmNjVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaApA
QCAtMzEsNyArMzEsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBNb2RlcyBmb3Igc29t
ZSBvZiB0aGUgbGluZS1yZWxhdGVkIGZ1bmN0aW9ucy4KLWVudW0gTGluZVBvc2l0aW9uTW9kZSB7
IFBvc2l0aW9uT25Db250YWluaW5nTGluZSwgUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzIH07
CiBlbnVtIExpbmVEaXJlY3Rpb25Nb2RlIHsgSG9yaXpvbnRhbExpbmUsIFZlcnRpY2FsTGluZSB9
OwogCiBlbnVtIGNsYXNzIEJsZWVkQXZvaWRhbmNlIDogdWludDhfdCB7CkBAIC0xOTQsOCArMTkz
LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tMb2dp
Y2FsV2lkdGhGb3JDb250ZW50KCkgY29uc3Q7CiAKICAgICAvLyBPdmVycmlkZGVuIGJ5IHN1YmNs
YXNzZXMgdG8gZGV0ZXJtaW5lIGxpbmUgaGVpZ2h0IGFuZCBiYXNlbGluZSBwb3NpdGlvbi4KLSAg
ICB2aXJ0dWFsIExheW91dFVuaXQgbGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVj
dGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNv
bnN0ID0gMDsKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlvbihib29sIGZp
cnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9u
Q29udGFpbmluZ0xpbmUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIExheW91dFVuaXQgbGluZUhl
aWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlvbigpIGNvbnN0ID0gMDsKIAogICAgIHZv
aWQgbWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoT3B0aW9uU2V0PE1hcENvb3JkaW5hdGVzTW9kZT4s
IFRyYW5zZm9ybVN0YXRlJikgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJ1dHRvbi5jcHAKaW5kZXggMDA2ODNjNTliMzY2Li40ZGMzMzEwYmFlZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwCkBAIC0xNjYsMTQgKzE2
NiwxNCBAQCBzdGF0aWMgTGF5b3V0VW5pdCBzeW50aGVzaXplZEJhc2VsaW5lRnJvbUNvbnRlbnRC
b3goY29uc3QgUmVuZGVyQm94JiBib3gsIExpbmVEaQogICAgIHJldHVybiBkaXJlY3Rpb24gPT0g
SG9yaXpvbnRhbExpbmUgPyBib3guYm9yZGVyVG9wKCkgKyBib3gucGFkZGluZ1RvcCgpICsgYm94
LmNvbnRlbnRCb3hIZWlnaHQoKSA6IGJveC5ib3JkZXJSaWdodCgpICsgYm94LnBhZGRpbmdSaWdo
dCgpICsgYm94LmNvbnRlbnRCb3hXaWR0aCgpOwogfQogCi1MYXlvdXRVbml0IFJlbmRlckJ1dHRv
bjo6YmFzZWxpbmVQb3NpdGlvbihib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGly
ZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIG1vZGUpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlckJ1
dHRvbjo6YmFzZWxpbmVQb3NpdGlvbigpIGNvbnN0CiB7CiAgICAgaWYgKHNob3VsZEFwcGx5TGF5
b3V0Q29udGFpbm1lbnQoKSkKLSAgICAgICAgcmV0dXJuIFJlbmRlckZsZXhpYmxlQm94OjpiYXNl
bGluZVBvc2l0aW9uKGZpcnN0TGluZSwgZGlyZWN0aW9uLCBtb2RlKTsKKyAgICAgICAgcmV0dXJu
IFJlbmRlckZsZXhpYmxlQm94OjpiYXNlbGluZVBvc2l0aW9uKCk7CiAgICAgLy8gV2UgY2Fubm90
IHJlbHkgb24gUmVuZGVyRmxleGlibGVCb3g6OmJhc2VsaW5lUG9zaXRpb24oKSBiZWNhdXNlIG9m
IGZsZXhib3hlcyBoYXZlIHNvbWUgc3BlY2lhbCBiZWhhdmlvcgogICAgIC8vIHJlZ2FyZGluZyBi
YXNlbGluZXMgdGhhdCBzaG91bGRuJ3QgYXBwbHkgdG8gYnV0dG9ucy4KLSAgICBMYXlvdXRVbml0
IGJhc2VsaW5lID0gZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZV9vcihzeW50aGVzaXplZEJhc2Vs
aW5lRnJvbUNvbnRlbnRCb3goKnRoaXMsIGRpcmVjdGlvbikpOwotICAgIExheW91dFVuaXQgbWFy
Z2luQXNjZW50ID0gZGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8gbWFyZ2luVG9wKCkgOiBt
YXJnaW5SaWdodCgpOworICAgIExheW91dFVuaXQgYmFzZWxpbmUgPSBmaXJzdExpbmVCYXNlbGlu
ZSgpLnZhbHVlX29yKHN5bnRoZXNpemVkQmFzZWxpbmVGcm9tQ29udGVudEJveCgqdGhpcywgY29u
dGFpbmluZ0Jsb2NrKCktPndyaXRpbmdNb2RlKCkuaXNIb3Jpem9udGFsKCkgPyBIb3Jpem9udGFs
TGluZSA6IFZlcnRpY2FsTGluZSkpOworICAgIExheW91dFVuaXQgbWFyZ2luQXNjZW50ID0gY29u
dGFpbmluZ0Jsb2NrKCktPndyaXRpbmdNb2RlKCkuaXNIb3Jpem9udGFsKCkgPyBtYXJnaW5Ub3Ao
KSA6IG1hcmdpblJpZ2h0KCk7CiAgICAgcmV0dXJuIGJhc2VsaW5lICsgbWFyZ2luQXNjZW50Owog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmgKaW5kZXggODdjZjNhZWY0
ZDAzLi42MjI0NzM0YTJmNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCdXR0b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9u
LmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIFJlbmRlckJsb2NrKiBpbm5lclJlbmRl
cmVyKCkgY29uc3QgeyByZXR1cm4gbV9pbm5lci5nZXQoKTsgfQogICAgIHZvaWQgc2V0SW5uZXJS
ZW5kZXJlcihSZW5kZXJCbG9jayYpOwogCi0gICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9u
KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBv
c2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5pdCBi
YXNlbGluZVBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBl
bGVtZW50KCkgY29uc3QgPSBkZWxldGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCmluZGV4IGFmODg2ZjVlMmVi
NS4uY2U4MDI4ZDgwYjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcApAQCAtNTEwLDcgKzUxMCw3IEBAIHZv
aWQgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpsYXlvdXRIb3Jpem9udGFsQm94KFJlbGF5
b3V0Q2hpbGRyZW4gcmVsYXlvdXRDCiAgICAgICAgIEFTU0VSVChjaGlsZEluZGV4ID09IGNoaWxk
TGF5b3V0RGVsdGFzLnNpemUoKSk7CiAKICAgICAgICAgaWYgKCFpdGVyYXRvci5maXJzdCgpICYm
IGhhc0xpbmVJZkVtcHR5KCkpCi0gICAgICAgICAgICBzZXRIZWlnaHQoaGVpZ2h0KCkgKyBsaW5l
SGVpZ2h0KHRydWUsIHdyaXRpbmdNb2RlKCkuaXNIb3Jpem9udGFsKCkgPyBIb3Jpem9udGFsTGlu
ZSA6IFZlcnRpY2FsTGluZSwgUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKSk7CisgICAgICAg
ICAgICBzZXRIZWlnaHQoaGVpZ2h0KCkgKyBsaW5lSGVpZ2h0KHRydWUsIHdyaXRpbmdNb2RlKCku
aXNIb3Jpem9udGFsKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSkpOwogCiAgICAg
ICAgIHNldEhlaWdodChoZWlnaHQoKSArIHRvQWRkKTsKIApAQCAtODQ4LDcgKzg0OCw3IEBAIHZv
aWQgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpsYXlvdXRWZXJ0aWNhbEJveChSZWxheW91
dENoaWxkcmVuIHJlbGF5b3V0Q2hpCiAgICAgICAgIHlQb3MgPSBoZWlnaHQoKTsKIAogICAgICAg
ICBpZiAoIWl0ZXJhdG9yLmZpcnN0KCkgJiYgaGFzTGluZUlmRW1wdHkoKSkKLSAgICAgICAgICAg
IHNldEhlaWdodChoZWlnaHQoKSArIGxpbmVIZWlnaHQodHJ1ZSwgd3JpdGluZ01vZGUoKS5pc0hv
cml6b250YWwoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5lLCBQb3NpdGlvbk9mSW50
ZXJpb3JMaW5lQm94ZXMpKTsKKyAgICAgICAgICAgIHNldEhlaWdodChoZWlnaHQoKSArIGxpbmVI
ZWlnaHQodHJ1ZSwgd3JpdGluZ01vZGUoKS5pc0hvcml6b250YWwoKSA/IEhvcml6b250YWxMaW5l
IDogVmVydGljYWxMaW5lKSk7CiAKICAgICAgICAgc2V0SGVpZ2h0KGhlaWdodCgpICsgdG9BZGQp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9h
ZENvbnRyb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRD
b250cm9sLmNwcAppbmRleCBmMDA4OTVjNGI3ZjQuLjM5YmI2OTcxNmZlNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCkBA
IC0yMDcsOCArMjA3LDggQEAgdm9pZCBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6cGFpbnRDb250
cm9sKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2kKICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
cmV0dXJuIHJvdW5kVG9JbnQoYmFzZWxpbmVQb3NpdGlvbih0cnVlLCBpc0hvcml6b250YWxXcml0
aW5nTW9kZSA/IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5lLCBQb3NpdGlvbk9uQ29udGFp
bmluZ0xpbmUpKTsKKyAgICAgICAgICAgIC8vIEZpbGUgdXBsb2FkIGJ1dHRvbiBpcyBkaXNwbGF5
OiBub25lIChzZWUgOjpmaWxlLXNlbGVjdG9yLWJ1dHRvbikuCisgICAgICAgICAgICByZXR1cm4g
cm91bmRUb0ludChiYXNlbGluZVBvc2l0aW9uKCkpOwogICAgICAgICB9KCk7CiAKICAgICAgICAg
cGFpbnRJbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50
Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlDb2xvcikpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKaW5kZXggOGE2YWU1M2JjMzY4Li4x
YTExNWM2NDQ1ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
bGV4aWJsZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhp
YmxlQm94LmNwcApAQCAtMjY0LDEzICsyNjQsMTMgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6
Y29tcHV0ZUNoaWxkSW50cmluc2ljTG9naWNhbFdpZHRocyhSZW5kZXJCb3gmIGZsZXhCb3hDaGkK
ICAgICBSZW5kZXJCbG9jazo6Y29tcHV0ZUNoaWxkSW50cmluc2ljTG9naWNhbFdpZHRocyhmbGV4
Qm94Q2hpbGQsIG1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCwgbWF4UHJlZmVycmVkTG9naWNhbFdp
ZHRoKTsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6YmFzZWxpbmVQb3NpdGlv
bihib29sLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUpIGNv
bnN0CitMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94OjpiYXNlbGluZVBvc2l0aW9uKCkgY29u
c3QKIHsKICAgICBhdXRvIGJhc2VsaW5lID0gZmlyc3RMaW5lQmFzZWxpbmUoKTsKICAgICBpZiAo
IWJhc2VsaW5lKQotICAgICAgICByZXR1cm4gc3ludGhlc2l6ZWRCYXNlbGluZSgqdGhpcywgKnBh
cmVudFN0eWxlKCksIGRpcmVjdGlvbiwgQm9yZGVyQm94KSArIG1hcmdpbkxvZ2ljYWxIZWlnaHQo
KTsKKyAgICAgICAgcmV0dXJuIHN5bnRoZXNpemVkQmFzZWxpbmUoKnRoaXMsICpwYXJlbnRTdHls
ZSgpLCBjb250YWluaW5nQmxvY2soKS0+d3JpdGluZ01vZGUoKS5pc0hvcml6b250YWwoKSA/IEhv
cml6b250YWxMaW5lIDogVmVydGljYWxMaW5lLCBCb3JkZXJCb3gpICsgbWFyZ2luTG9naWNhbEhl
aWdodCgpOwogCi0gICAgcmV0dXJuIGJhc2VsaW5lLnZhbHVlKCkgKyAoZGlyZWN0aW9uID09IEhv
cml6b250YWxMaW5lID8gbWFyZ2luVG9wKCkgOiBtYXJnaW5SaWdodCgpKS50b0ludCgpOworICAg
IHJldHVybiBiYXNlbGluZS52YWx1ZSgpICsgKGNvbnRhaW5pbmdCbG9jaygpLT53cml0aW5nTW9k
ZSgpLmlzSG9yaXpvbnRhbCgpID8gbWFyZ2luVG9wKCkgOiBtYXJnaW5SaWdodCgpKS50b0ludCgp
OwogfQogCiBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckZsZXhpYmxlQm94OjpmaXJz
dExpbmVCYXNlbGluZSgpIGNvbnN0CkBAIC0xMzQ2LDcgKzEzNDYsNyBAQCB2b2lkIFJlbmRlckZs
ZXhpYmxlQm94OjpwZXJmb3JtRmxleExheW91dChSZWxheW91dENoaWxkcmVuIHJlbGF5b3V0Q2hp
bGRyZW4pCiAKICAgICBpZiAoYWxsSXRlbXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChoYXNM
aW5lSWZFbXB0eSgpKSB7Ci0gICAgICAgICAgICBhdXRvIG1pbkhlaWdodCA9IGJvcmRlckFuZFBh
ZGRpbmdMb2dpY2FsSGVpZ2h0KCkgKyBsaW5lSGVpZ2h0KHRydWUsIGlzSG9yaXpvbnRhbFdyaXRp
bmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSwgUG9zaXRpb25PZkludGVy
aW9yTGluZUJveGVzKSArIHNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKTsKKyAgICAgICAgICAgIGF1
dG8gbWluSGVpZ2h0ID0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSArIGxpbmVIZWln
aHQodHJ1ZSwgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IEhvcml6b250YWxMaW5lIDogVmVy
dGljYWxMaW5lKSArIHNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKTsKICAgICAgICAgICAgIGlmICho
ZWlnaHQoKSA8IG1pbkhlaWdodCkKICAgICAgICAgICAgICAgICBzZXRMb2dpY2FsSGVpZ2h0KG1p
bkhlaWdodCk7CiAgICAgICAgIH0KQEAgLTE0MjMsNyArMTQyMyw3IEBAIHZvaWQgUmVuZGVyRmxl
eGlibGVCb3g6OnBlcmZvcm1GbGV4TGF5b3V0KFJlbGF5b3V0Q2hpbGRyZW4gcmVsYXlvdXRDaGls
ZHJlbikKICAgICAgICAgLy8gYSBsaW5lIGJlY2F1c2UgYWxsIG91ciBjaGlsZHJlbiBtaWdodCBi
ZSBvdXQgb2YgZmxvdyBwb3NpdGlvbmVkLgogICAgICAgICAvLyBJbnN0ZWFkIG9mIGp1c3QgY2hl
Y2tpbmcgaWYgd2UgaGF2ZSBhIGxpbmUsIG1ha2Ugc3VyZSB0aGUgZmxleGJveAogICAgICAgICAv
LyBoYXMgYXQgbGVhc3QgYSBsaW5lJ3Mgd29ydGggb2YgaGVpZ2h0IHRvIGNvdmVyIHRoaXMgY2Fz
ZS4KLSAgICAgICAgTGF5b3V0VW5pdCBtaW5IZWlnaHQgPSBib3JkZXJBbmRQYWRkaW5nTG9naWNh
bEhlaWdodCgpICsgbGluZUhlaWdodCh0cnVlLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8g
SG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmUsIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hl
cykgKyBzY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCk7CisgICAgICAgIExheW91dFVuaXQgbWluSGVp
Z2h0ID0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSArIGxpbmVIZWlnaHQodHJ1ZSwg
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5l
KSArIHNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKTsKICAgICAgICAgaWYgKHNpemUoKS5oZWlnaHQo
KSA8IG1pbkhlaWdodCkKICAgICAgICAgICAgIHNldExvZ2ljYWxIZWlnaHQobWluSGVpZ2h0KTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGli
bGVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCmlu
ZGV4IGU2OGNhZDIwNzZlMy4uOGNhNzg3MmZjOGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBjYW5Ecm9wQW5vbnltb3VzQmxvY2tDaGlsZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdm9pZCBsYXlvdXRCbG9jayhSZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0
IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMF9sdSkgZmluYWw7CiAKLSAgICBMYXlvdXRVbml0IGJhc2Vs
aW5lUG9zaXRpb24oYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRp
b25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKKyAgICBM
YXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oKSBjb25zdCBvdmVycmlkZTsKICAgICBzdGQ6Om9w
dGlvbmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBsYXN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBpbmxpbmVCbG9ja0Jhc2VsaW5l
KExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJHcmlkLmNwcAppbmRleCA3MDAyZjg4ZGE0NjcuLjcyOWRiZDlhOThmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcApAQCAtNDg5LDcgKzQ4OSw3IEBAIHZv
aWQgUmVuZGVyR3JpZDo6bGF5b3V0R3JpZChSZWxheW91dENoaWxkcmVuIHJlbGF5b3V0Q2hpbGRy
ZW4pCiAgICAgICAgIC8vIEdyaWQgY29udGFpbmVyIHNob3VsZCBoYXZlIHRoZSBtaW5pbXVtIGhl
aWdodCBvZiBhIGxpbmUgaWYgaXQncyBlZGl0YWJsZS4gVGhhdCBkb2VzIG5vdCBhZmZlY3QgdHJh
Y2sgc2l6aW5nIHRob3VnaC4KICAgICAgICAgaWYgKGhhc0xpbmVJZkVtcHR5KCkpIHsKICAgICAg
ICAgICAgIExheW91dFVuaXQgbWluSGVpZ2h0Rm9yRW1wdHlMaW5lID0gYm9yZGVyQW5kUGFkZGlu
Z0xvZ2ljYWxIZWlnaHQoKQotICAgICAgICAgICAgICAgICsgbGluZUhlaWdodCh0cnVlLCBpc0hv
cml6b250YWxXcml0aW5nTW9kZSgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmUsIFBv
c2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcykKKyAgICAgICAgICAgICAgICArIGxpbmVIZWlnaHQo
dHJ1ZSwgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGlj
YWxMaW5lKQogICAgICAgICAgICAgICAgICsgc2Nyb2xsYmFyTG9naWNhbEhlaWdodCgpOwogICAg
ICAgICAgICAgc2V0TG9naWNhbEhlaWdodChzdGQ6Om1heChsb2dpY2FsSGVpZ2h0KCksIG1pbkhl
aWdodEZvckVtcHR5TGluZSkpOwogICAgICAgICB9CkBAIC02MjYsNyArNjI2LDcgQEAgdm9pZCBS
ZW5kZXJHcmlkOjpsYXlvdXRNYXNvbnJ5KFJlbGF5b3V0Q2hpbGRyZW4gcmVsYXlvdXRDaGlsZHJl
bikKICAgICAgICAgLy8gR3JpZCBjb250YWluZXIgc2hvdWxkIGhhdmUgdGhlIG1pbmltdW0gaGVp
Z2h0IG9mIGEgbGluZSBpZiBpdCdzIGVkaXRhYmxlLiBUaGF0IGRvZXMgbm90IGFmZmVjdCB0cmFj
ayBzaXppbmcgdGhvdWdoLgogICAgICAgICBpZiAoaGFzTGluZUlmRW1wdHkoKSkgewogICAgICAg
ICAgICAgTGF5b3V0VW5pdCBtaW5IZWlnaHRGb3JFbXB0eUxpbmUgPSBib3JkZXJBbmRQYWRkaW5n
TG9naWNhbEhlaWdodCgpCi0gICAgICAgICAgICAgICAgKyBsaW5lSGVpZ2h0KHRydWUsIGlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSwgUG9z
aXRpb25PZkludGVyaW9yTGluZUJveGVzKQorICAgICAgICAgICAgICAgICsgbGluZUhlaWdodCh0
cnVlLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNh
bExpbmUpCiAgICAgICAgICAgICAgICAgKyBzY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCk7CiAgICAg
ICAgICAgICBzZXRMb2dpY2FsSGVpZ2h0KHN0ZDo6bWF4KGxvZ2ljYWxIZWlnaHQoKSwgbWluSGVp
Z2h0Rm9yRW1wdHlMaW5lKSk7CiAgICAgICAgIH0KQEAgLTIwMTIsMTQgKzIwMTIsMTMgQEAgYm9v
bCBSZW5kZXJHcmlkOjppc0Jhc2VsaW5lQWxpZ25tZW50Rm9yR3JpZEl0ZW0oY29uc3QgUmVuZGVy
Qm94JiBncmlkSXRlbSwgR3JpZFQKIH0KIAogLy8gRklYTUU6IFRoaXMgbG9naWMgaXMgc2hhcmVk
IGJ5IFJlbmRlckZsZXhpYmxlQm94LCBzbyBpdCBtaWdodCBiZSByZWZhY3RvcmVkIHNvbWVob3cu
Ci1MYXlvdXRVbml0IFJlbmRlckdyaWQ6OmJhc2VsaW5lUG9zaXRpb24oYm9vbCwgTGluZURpcmVj
dGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIG1vZGUpIGNvbnN0CitMYXlvdXRV
bml0IFJlbmRlckdyaWQ6OmJhc2VsaW5lUG9zaXRpb24oKSBjb25zdAogewotICAgIEFTU0VSVF9V
TlVTRUQobW9kZSwgbW9kZSA9PSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpOwogICAgIGF1dG8g
YmFzZWxpbmUgPSBmaXJzdExpbmVCYXNlbGluZSgpOwogICAgIGlmICghYmFzZWxpbmUpCi0gICAg
ICAgIHJldHVybiBzeW50aGVzaXplZEJhc2VsaW5lKCp0aGlzLCAqcGFyZW50U3R5bGUoKSwgZGly
ZWN0aW9uLCBCb3JkZXJCb3gpICsgbWFyZ2luTG9naWNhbEhlaWdodCgpOworICAgICAgICByZXR1
cm4gc3ludGhlc2l6ZWRCYXNlbGluZSgqdGhpcywgKnBhcmVudFN0eWxlKCksIGNvbnRhaW5pbmdC
bG9jaygpLT53cml0aW5nTW9kZSgpLmlzSG9yaXpvbnRhbCgpID8gSG9yaXpvbnRhbExpbmUgOiBW
ZXJ0aWNhbExpbmUsIEJvcmRlckJveCkgKyBtYXJnaW5Mb2dpY2FsSGVpZ2h0KCk7CiAKLSAgICBy
ZXR1cm4gYmFzZWxpbmUudmFsdWUoKSArIChkaXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUgPyBt
YXJnaW5Ub3AoKSA6IG1hcmdpblJpZ2h0KCkpLnRvSW50KCk7CisgICAgcmV0dXJuIGJhc2VsaW5l
LnZhbHVlKCkgKyAoY29udGFpbmluZ0Jsb2NrKCktPndyaXRpbmdNb2RlKCkuaXNIb3Jpem9udGFs
KCkgPyBtYXJnaW5Ub3AoKSA6IG1hcmdpblJpZ2h0KCkpLnRvSW50KCk7CiB9CiAKIHN0ZDo6b3B0
aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyR3JpZDo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKaW5kZXggODZiMWVjZTJlYTM4Li43ZjI3
NGNkYzA1N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlk
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaApAQCAtMjY5LDcg
KzI2OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVBdXRvTWFyZ2luc0luUm93QXhpc0lm
TmVlZGVkKFJlbmRlckJveCYpOwogICAgIGJvb2wgaXNDaGlsZEVsaWdpYmxlRm9yTWFyZ2luVHJp
bShNYXJnaW5UcmltVHlwZSwgY29uc3QgUmVuZGVyQm94JikgY29uc3QgZmluYWw7CiAKLSAgICBM
YXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25N
b2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBm
aW5hbDsKKyAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oKSBjb25zdCBmaW5hbDsKICAg
ICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmlu
YWw7CiAgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBsYXN0TGluZUJhc2VsaW5lKCkgY29u
c3QgZmluYWw7CiAgICAgU2luZ2xlVGhyZWFkV2Vha1B0cjxSZW5kZXJCb3g+IGdldEJhc2VsaW5l
R3JpZEl0ZW0oSXRlbVBvc2l0aW9uIGFsaWdubWVudCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRleCBjZWVhNmFiY2FiMGYuLjBmYmE3ZTBhMmFjMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC0zMDYsNyArMzA2
LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJJbWFnZTo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdo
dChzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGUKICAgICByZXR1cm4gUmVuZGVyUmVwbGFjZWQ6
OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQoZXN0aW1hdGVkVXNlZFdpZHRoKTsKIH0KIAot
TGF5b3V0VW5pdCBSZW5kZXJJbWFnZTo6YmFzZWxpbmVQb3NpdGlvbihib29sIGZpcnN0TGluZSwg
TGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIGxpbmVQb3NpdGlv
bk1vZGUpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlckltYWdlOjpiYXNlbGluZVBvc2l0aW9uKCkg
Y29uc3QKIHsKICAgICBMYXlvdXRVbml0IG9mZnNldDsKICNpZiBFTkFCTEUoTVVMVElfUkVQUkVT
RU5UQVRJT05fSEVJQykKQEAgLTMxNSw3ICszMTUsNyBAQCBMYXlvdXRVbml0IFJlbmRlckltYWdl
OjpiYXNlbGluZVBvc2l0aW9uKGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJl
YwogICAgICAgICBvZmZzZXQgPSBMYXlvdXRVbml0Ojpmcm9tRmxvYXRSb3VuZChtZXRyaWNzLmRl
c2NlbnQpOwogICAgIH0KICNlbmRpZgotICAgIHJldHVybiBSZW5kZXJCb3g6OmJhc2VsaW5lUG9z
aXRpb24oZmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1vZGUpIC0gb2Zmc2V0Owor
ICAgIHJldHVybiBSZW5kZXJCb3g6OmJhc2VsaW5lUG9zaXRpb24oKSAtIG9mZnNldDsKIH0KIAog
dm9pZCBSZW5kZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBuZXdJbWFnZSwg
Y29uc3QgSW50UmVjdCogcmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgK
aW5kZXggMDUxZDE1NjRjMzEyLi45OTBhN2RiMzA0ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5oCkBAIC0xMzgsNyArMTM4LDcgQEAgcHJpdmF0ZToKICAgICBMYXlvdXRV
bml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aChTaG91bGRDb21wdXRlUHJlZmVycmVkID0g
U2hvdWxkQ29tcHV0ZVByZWZlcnJlZDo6Q29tcHV0ZUFjdHVhbCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0KHN0ZDo6b3B0aW9uYWw8
TGF5b3V0VW5pdD4gZXN0aW1hdGVkVXNlZFdpZHRoID0gc3RkOjpudWxsb3B0KSBjb25zdCBvdmVy
cmlkZTsKIAotICAgIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlvbihib29sIGZpcnN0TGluZSwg
TGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmlu
Z0xpbmUpIGNvbnN0IG92ZXJyaWRlOworICAgIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlvbigp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGRDb2xsYXBzZVRvRW1wdHkoKSBjb25z
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAppbmRleCA5MDhm
NjJiNzk1NGIuLmZiMzIwODI0MTc0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cklubGluZS5jcHAKQEAgLTgxNywxNyArODE3LDE2IEBAIExlZ2FjeUlubGluZUZsb3dCb3gqIFJl
bmRlcklubGluZTo6Y3JlYXRlQW5kQXBwZW5kSW5saW5lRmxvd0JveCgpCiAgICAgcmV0dXJuIGZs
b3dCb3g7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVySW5saW5lOjpsaW5lSGVpZ2h0KGJvb2wgZmly
c3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSAvKmRpcmVjdGlvbiovLCBMaW5lUG9zaXRpb25Nb2Rl
IC8qbGluZVBvc2l0aW9uTW9kZSovKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJJbmxpbmU6Omxp
bmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIC8qZGlyZWN0aW9uKi8p
IGNvbnN0CiB7CiAgICAgYXV0byYgbGluZVN0eWxlID0gZmlyc3RMaW5lID8gZmlyc3RMaW5lU3R5
bGUoKSA6IHN0eWxlKCk7CiAgICAgcmV0dXJuIExheW91dFVuaXQ6OmZyb21GbG9hdENlaWwobGlu
ZVN0eWxlLmNvbXB1dGVkTGluZUhlaWdodCgpKTsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJJbmxp
bmU6OmJhc2VsaW5lUG9zaXRpb24oYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRp
cmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25zdAorTGF5b3V0
VW5pdCBSZW5kZXJJbmxpbmU6OmJhc2VsaW5lUG9zaXRpb24oKSBjb25zdAogewotICAgIGF1dG8m
IHN0eWxlID0gZmlyc3RMaW5lID8gZmlyc3RMaW5lU3R5bGUoKSA6IHRoaXMtPnN0eWxlKCk7Ci0g
ICAgYXV0byYgZm9udE1ldHJpY3MgPSBzdHlsZS5tZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwotICAg
IHJldHVybiBMYXlvdXRVbml0IHsgZm9udE1ldHJpY3MuYXNjZW50KCkgKyAobGluZUhlaWdodChm
aXJzdExpbmUsIGRpcmVjdGlvbiwgbGluZVBvc2l0aW9uTW9kZSkgLSBmb250TWV0cmljcy5oZWln
aHQoKSkgLyAyIH07CisgICAgYXV0byYgZm9udE1ldHJpY3MgPSBzdHlsZSgpLm1ldHJpY3NPZlBy
aW1hcnlGb250KCk7CisgICAgcmV0dXJuIExheW91dFVuaXQgeyBmb250TWV0cmljcy5hc2NlbnQo
KSArIChsaW5lSGVpZ2h0KGZhbHNlLCBwYXJlbnQoKS0+d3JpdGluZ01vZGUoKS5pc0hvcml6b250
YWwoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5lKSAtIGZvbnRNZXRyaWNzLmhlaWdo
dCgpKSAvIDIgfTsKIH0KIAogTGF5b3V0U2l6ZSBSZW5kZXJJbmxpbmU6Om9mZnNldEZvckluRmxv
d1Bvc2l0aW9uZWRJbmxpbmUoY29uc3QgUmVuZGVyQm94KiBjaGlsZCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAppbmRleCA3NWU2ZGIyZDg3ZDEuLjI5MTQ2NDZk
ZjI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaApAQCAtMTM5LDgg
KzEzOSw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpcnR5TGluZUZyb21DaGFuZ2VkQ2hpbGQo
KSBmaW5hbCB7IG1fbGVnYWN5TGluZUJveGVzLmRpcnR5TGluZUZyb21DaGFuZ2VkQ2hpbGQoKnRo
aXMpOyB9CiAKLSAgICBMYXlvdXRVbml0IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVE
aXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5l
KSBjb25zdCBmaW5hbDsKLSAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oYm9vbCBmaXJz
dExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNv
bnRhaW5pbmdMaW5lKSBjb25zdCBmaW5hbDsKKyAgICBMYXlvdXRVbml0IGxpbmVIZWlnaHQoYm9v
bCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdCBmaW5hbDsKKyAgICBMYXlvdXRV
bml0IGJhc2VsaW5lUG9zaXRpb24oKSBjb25zdCBmaW5hbDsKICAgICAKICAgICB2b2lkIHVwZGF0
ZUhpdFRlc3RSZXN1bHQoSGl0VGVzdFJlc3VsdCYsIGNvbnN0IExheW91dFBvaW50JikgY29uc3Qg
ZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5l
QnJlYWsuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAK
aW5kZXggNGI0ZDc4MzIzY2VkLi5iOWVlN2I1ZDYyM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCkBAIC01OSw3ICs1OSw3IEBAIFJlbmRlckxpbmVC
cmVhazo6flJlbmRlckxpbmVCcmVhaygpCiB7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyTGluZUJy
ZWFrOjpsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSAvKmRpcmVj
dGlvbiovLCBMaW5lUG9zaXRpb25Nb2RlIC8qbGluZVBvc2l0aW9uTW9kZSovKSBjb25zdAorTGF5
b3V0VW5pdCBSZW5kZXJMaW5lQnJlYWs6OmxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVE
aXJlY3Rpb25Nb2RlIC8qZGlyZWN0aW9uKi8pIGNvbnN0CiB7CiAgICAgaWYgKGZpcnN0TGluZSkg
ewogICAgICAgICBhdXRvJiBmaXJzdExpbmVTdHlsZSA9IHRoaXMtPmZpcnN0TGluZVN0eWxlKCk7
CkBAIC03MiwxMSArNzIsMTAgQEAgTGF5b3V0VW5pdCBSZW5kZXJMaW5lQnJlYWs6OmxpbmVIZWln
aHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIC8qZGlyZWMKICAgICByZXR1cm4g
Km1fY2FjaGVkTGluZUhlaWdodDsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJMaW5lQnJlYWs6OmJh
c2VsaW5lUG9zaXRpb24oYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlv
biwgTGluZVBvc2l0aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25zdAorTGF5b3V0VW5pdCBS
ZW5kZXJMaW5lQnJlYWs6OmJhc2VsaW5lUG9zaXRpb24oKSBjb25zdAogewotICAgIGF1dG8mIHN0
eWxlID0gZmlyc3RMaW5lID8gZmlyc3RMaW5lU3R5bGUoKSA6IHRoaXMtPnN0eWxlKCk7Ci0gICAg
YXV0byYgZm9udE1ldHJpY3MgPSBzdHlsZS5tZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwotICAgIHJl
dHVybiBMYXlvdXRVbml0IHsgKGZvbnRNZXRyaWNzLmFzY2VudCgpICsgKGxpbmVIZWlnaHQoZmly
c3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1vZGUpIC0gZm9udE1ldHJpY3MuaGVpZ2h0
KCkpIC8gMikgfTsKKyAgICBhdXRvJiBmb250TWV0cmljcyA9IHN0eWxlKCkubWV0cmljc09mUHJp
bWFyeUZvbnQoKTsKKyAgICByZXR1cm4gTGF5b3V0VW5pdCB7IChmb250TWV0cmljcy5hc2NlbnQo
KSArIChsaW5lSGVpZ2h0KGZhbHNlLCBwYXJlbnQoKS0+d3JpdGluZ01vZGUoKS5pc0hvcml6b250
YWwoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5lKSAtIGZvbnRNZXRyaWNzLmhlaWdo
dCgpKSAvIDIpIH07CiB9CiAKIGludCBSZW5kZXJMaW5lQnJlYWs6OmNhcmV0TWluT2Zmc2V0KCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJl
YWsuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaAppbmRleCBk
ZjExOThhNWZjZDUuLjE4ODViMjhjMzhiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaW5lQnJlYWsuaApAQCAtNjEsOCArNjEsOCBAQCBwcml2YXRlOgogICAgIGludCBjYXJl
dE1heE9mZnNldCgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgY2FuQmVTZWxlY3Rpb25MZWFmKCkg
Y29uc3QgZmluYWw7CiAKLSAgICBMYXlvdXRVbml0IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUs
IExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlKSBjb25zdCBmaW5hbDsKLSAgICBM
YXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25N
b2RlLCBMaW5lUG9zaXRpb25Nb2RlKSBjb25zdCBmaW5hbDsKKyAgICBMYXlvdXRVbml0IGxpbmVI
ZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdCBmaW5hbDsKKyAg
ICBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oKSBjb25zdCBmaW5hbDsKIAogICAgIExheW91
dFVuaXQgbWFyZ2luVG9wKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQogICAgIExheW91dFVu
aXQgbWFyZ2luQm90dG9tKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCmluZGV4IGNmNTNiYjhhYjZhYS4uZmZiNmJl
NTIwYjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJv
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCkBA
IC0zMDgsOSArMzA4LDkgQEAgUmVuZGVyQm94OjpMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMg
UmVuZGVyTGlzdEJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3UKICAgICByZXR1cm4gUmVu
ZGVyQm94Ojpjb21wdXRlTG9naWNhbEhlaWdodChsb2dpY2FsSGVpZ2h0LCBsb2dpY2FsVG9wKTsK
IH0KIAotTGF5b3V0VW5pdCBSZW5kZXJMaXN0Qm94OjpiYXNlbGluZVBvc2l0aW9uKGJvb2wgZmly
c3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBsaW5lRGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2Rl
IGxpbmVQb3NpdGlvbk1vZGUpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlckxpc3RCb3g6OmJhc2Vs
aW5lUG9zaXRpb24oKSBjb25zdAogewotICAgIGF1dG8gYmFzZWxpbmUgPSBSZW5kZXJCb3g6OmJh
c2VsaW5lUG9zaXRpb24oZmlyc3RMaW5lLCBsaW5lRGlyZWN0aW9uLCBsaW5lUG9zaXRpb25Nb2Rl
KTsKKyAgICBhdXRvIGJhc2VsaW5lID0gUmVuZGVyQm94OjpiYXNlbGluZVBvc2l0aW9uKCk7CiAg
ICAgaWYgKCFzaG91bGRBcHBseUxheW91dENvbnRhaW5tZW50KCkpCiAgICAgICAgIGJhc2VsaW5l
IC09IGJhc2VsaW5lQWRqdXN0bWVudDsKICAgICByZXR1cm4gYmFzZWxpbmU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaAppbmRleCA0YTU0NzNmZTIzMDQuLmNlM2VkY2Qw
NTNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3gu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCkBAIC05Nyw3
ICs5Nyw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lk
dGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9naWNhbFdp
ZHRoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lk
dGhzKCkgb3ZlcnJpZGU7Ci0gICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKGJvb2wgZmly
c3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25D
b250YWluaW5nTGluZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5pdCBiYXNlbGluZVBv
c2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVz
IGNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5p
dCBsb2dpY2FsVG9wKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKaW5k
ZXggMTE2ZjhhNjIzMTVlLi5jMDU3N2IzNGRjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKQEAgLTQyMiwxOCArNDIyLDE4IEBAIHZvaWQgUmVu
ZGVyTGlzdE1hcmtlcjo6dXBkYXRlSW5saW5lTWFyZ2lucygpCiAgICAgbXV0YWJsZVN0eWxlKCku
c2V0TWFyZ2luRW5kKFN0eWxlOjpNYXJnaW5FZGdlOjpGaXhlZCB7IG1hcmdpbkVuZCB9KTsKIH0K
IAotTGF5b3V0VW5pdCBSZW5kZXJMaXN0TWFya2VyOjpsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5l
LCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgbGluZVBvc2l0
aW9uTW9kZSkgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyTGlzdE1hcmtlcjo6bGluZUhlaWdodChi
b29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uKSBjb25zdAogewogICAg
IGlmICghaXNJbWFnZSgpKQotICAgICAgICByZXR1cm4gbV9saXN0SXRlbS0+bGluZUhlaWdodChm
aXJzdExpbmUsIGRpcmVjdGlvbiwgUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKTsKLSAgICBy
ZXR1cm4gUmVuZGVyQm94OjpsaW5lSGVpZ2h0KGZpcnN0TGluZSwgZGlyZWN0aW9uLCBsaW5lUG9z
aXRpb25Nb2RlKTsKKyAgICAgICAgcmV0dXJuIG1fbGlzdEl0ZW0tPmxpbmVIZWlnaHQoZmlyc3RM
aW5lLCBkaXJlY3Rpb24pOworICAgIHJldHVybiBSZW5kZXJCb3g6OmxpbmVIZWlnaHQoZmlyc3RM
aW5lLCBkaXJlY3Rpb24pOwogfQogCi1MYXlvdXRVbml0IFJlbmRlckxpc3RNYXJrZXI6OmJhc2Vs
aW5lUG9zaXRpb24oYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwg
TGluZVBvc2l0aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25zdAorTGF5b3V0VW5pdCBSZW5k
ZXJMaXN0TWFya2VyOjpiYXNlbGluZVBvc2l0aW9uKCkgY29uc3QKIHsKICAgICBpZiAoIWlzSW1h
Z2UoKSkKLSAgICAgICAgcmV0dXJuIG1fbGlzdEl0ZW0tPmJhc2VsaW5lUG9zaXRpb24oZmlyc3RM
aW5lLCBkaXJlY3Rpb24sIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcyk7Ci0gICAgcmV0dXJu
IFJlbmRlckJveDo6YmFzZWxpbmVQb3NpdGlvbihmaXJzdExpbmUsIGRpcmVjdGlvbiwgbGluZVBv
c2l0aW9uTW9kZSk7CisgICAgICAgIHJldHVybiBtX2xpc3RJdGVtLT5iYXNlbGluZVBvc2l0aW9u
KCk7CisgICAgcmV0dXJuIFJlbmRlckJveDo6YmFzZWxpbmVQb3NpdGlvbigpOwogfQogCiBib29s
IFJlbmRlckxpc3RNYXJrZXI6OmlzSW5zaWRlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oCmluZGV4IDI1OGM2YTBiMmQzMi4uNjllZTc5YmMwNzM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmgKQEAgLTgx
LDggKzgxLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExh
eW91dFBvaW50JikgZmluYWw7CiAgICAgdm9pZCBsYXlvdXQoKSBmaW5hbDsKICAgICB2b2lkIGlt
YWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqKSBmaW5hbDsKLSAgICBM
YXlvdXRVbml0IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBM
aW5lUG9zaXRpb25Nb2RlKSBjb25zdCBmaW5hbDsKLSAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9z
aXRpb24oYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2Rl
KSBjb25zdCBmaW5hbDsKKyAgICBMYXlvdXRVbml0IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUs
IExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdCBmaW5hbDsKKyAgICBMYXlvdXRVbml0IGJhc2VsaW5l
UG9zaXRpb24oKSBjb25zdCBmaW5hbDsKICAgICBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3RGb3JS
ZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJv
b2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQpIGZpbmFsOwogICAgIGJvb2wgY2FuQmVTZWxlY3Rpb25M
ZWFmKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgc3R5bGVXaWxsQ2hh
bmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKSBmaW5hbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmgKaW5kZXggNTUwMmQxNzc4
Mzg5Li40OWQxMWJjM2RlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNZW51TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51
TGlzdC5oCkBAIC0xMjksOSArMTI5LDkgQEAgcHJpdmF0ZToKIAogICAgIC8vIEZsZXhib3ggZGVm
aW5lcyBiYXNlbGluZXMgZGlmZmVyZW50bHkgdGhhbiByZWd1bGFyIGJsb2Nrcy4KICAgICAvLyBG
b3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIG1lbnVsaXN0cyBuZWVkIHRvIGRvIHRoZSByZWd1
bGFyIGJsb2NrIGJlaGF2aW9yLgotICAgIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlvbihib29s
IGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2Rl
IHBvc2l0aW9uKSBjb25zdCBvdmVycmlkZQorICAgIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlv
bigpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICByZXR1cm4gUmVuZGVyQmxvY2s6OmJh
c2VsaW5lUG9zaXRpb24oZmlyc3RMaW5lLCBkaXJlY3Rpb24sIHBvc2l0aW9uKTsKKyAgICAgICAg
cmV0dXJuIFJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKCk7CiAgICAgfQogICAgIHN0ZDo6
b3B0aW9uYWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBSZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmFzZWxpbmUoKTsgfQogICAgIHN0ZDo6b3B0
aW9uYWw8TGF5b3V0VW5pdD4gaW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSBk
aXJlY3Rpb24pIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFJlbmRlckJsb2NrOjppbmxpbmVCbG9j
a0Jhc2VsaW5lKGRpcmVjdGlvbik7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTbGlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNs
aWRlci5jcHAKaW5kZXggNTQzOTI5ODZmMjZhLi5mZWUxNzk3OTlmOWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwCkBAIC03Miw3ICs3Miw3IEBAIFJlZjxIVE1M
SW5wdXRFbGVtZW50PiBSZW5kZXJTbGlkZXI6OnByb3RlY3RlZEVsZW1lbnQoKSBjb25zdAogICAg
IHJldHVybiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pihub2RlRm9yTm9uQW5vbnltb3VzKCkp
OwogfQogCi1MYXlvdXRVbml0IFJlbmRlclNsaWRlcjo6YmFzZWxpbmVQb3NpdGlvbihib29sIC8q
Zmlyc3RMaW5lKi8sIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlKSBjb25zdAor
TGF5b3V0VW5pdCBSZW5kZXJTbGlkZXI6OmJhc2VsaW5lUG9zaXRpb24oKSBjb25zdAogewogICAg
IC8vIEZJWE1FOiBQYXRjaCB0aGlzIGZ1bmN0aW9uIGZvciB3cml0aW5nLW1vZGUuCiAgICAgcmV0
dXJuIGhlaWdodCgpICsgbWFyZ2luVG9wKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U2xpZGVyLmgKaW5kZXggNTgzZDgyMzE4YjY3Li5jMDVmM2FmYzE2NWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuICJSZW5kZXJTbGlkZXIiX3M7IH0KIAotICAgIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlv
bihib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQ
b3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IG92ZXJyaWRlOworICAgIExheW91dFVuaXQg
YmFzZWxpbmVQb3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgY29tcHV0ZUludHJp
bnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0
JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgY29tcHV0ZVByZWZl
cnJlZExvZ2ljYWxXaWR0aHMoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZS5jcHAKaW5kZXggZjFjMTQxZWQ0ZTFkLi5mYmQ2NDUxMjBlNzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcApAQCAtMTU4MiwxMSArMTU4MiwxMSBA
QCBSZW5kZXJUYWJsZUNlbGwqIFJlbmRlclRhYmxlOjpjZWxsQWZ0ZXIoY29uc3QgUmVuZGVyVGFi
bGVDZWxsKiBjZWxsKSBjb25zdAogICAgIHJldHVybiBjZWxsLT5zZWN0aW9uKCktPnByaW1hcnlD
ZWxsQXQoY2VsbC0+cm93SW5kZXgoKSwgZWZmQ29sKTsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJU
YWJsZTo6YmFzZWxpbmVQb3NpdGlvbihib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUg
ZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIGxpbmVQb3NpdGlvbk1vZGUpIGNvbnN0CitMYXlv
dXRVbml0IFJlbmRlclRhYmxlOjpiYXNlbGluZVBvc2l0aW9uKCkgY29uc3QKIHsKICAgICBpZiAo
YXV0byBiYXNlbGluZVBvcyA9IGZpcnN0TGluZUJhc2VsaW5lKCkpCi0gICAgICAgIHJldHVybiAo
ZGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8gbWFyZ2luVG9wKCkgOiBtYXJnaW5SaWdodCgp
KSArIGJhc2VsaW5lUG9zLnZhbHVlKCk7Ci0gICAgcmV0dXJuIFJlbmRlckJveDo6YmFzZWxpbmVQ
b3NpdGlvbihmaXJzdExpbmUsIGRpcmVjdGlvbiwgbGluZVBvc2l0aW9uTW9kZSk7CisgICAgICAg
IHJldHVybiAod3JpdGluZ01vZGUoKS5pc0hvcml6b250YWwoKSA/IG1hcmdpblRvcCgpIDogbWFy
Z2luUmlnaHQoKSkgKyBiYXNlbGluZVBvcy52YWx1ZSgpOworICAgIHJldHVybiBSZW5kZXJCb3g6
OmJhc2VsaW5lUG9zaXRpb24oKTsKIH0KIAogc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5k
ZXJUYWJsZTo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgKaW5kZXggMTljOTc0NDFlNWMwLi40MDFi
MGVhZDQ1NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oCkBAIC0yMzEs
NyArMjMxLDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxX
aWR0aHMoKSBvdmVycmlkZTsKICAgICBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1
ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNv
bnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0
aW9uKSBvdmVycmlkZTsKIAotICAgIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlvbihib29sIGZp
cnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9u
Q29udGFpbmluZ0xpbmUpIGNvbnN0IGZpbmFsOworICAgIExheW91dFVuaXQgYmFzZWxpbmVQb3Np
dGlvbigpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gZmlyc3RM
aW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVu
aXQ+IGxhc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5j
cHAKaW5kZXggMTIzOGI2YWMxYjJhLi40NmQ1MGQ2NTAyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIFJl
bmRlckJveDo6TG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzIFJlbmRlclRleHRDb250cm9sOjpj
b21wdXRlTG9naWNhbEhlaWdodChMCiAKICAgICBpZiAoUmVuZGVyQm94KiBpbm5lclRleHRCb3gg
PSBpbm5lclRleHQtPnJlbmRlckJveCgpKSB7CiAgICAgICAgIExheW91dFVuaXQgbm9uQ29udGVu
dEhlaWdodCA9IGlubmVyVGV4dEJveC0+Ym9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSAr
IGlubmVyVGV4dEJveC0+bWFyZ2luTG9naWNhbEhlaWdodCgpOwotICAgICAgICBsb2dpY2FsSGVp
Z2h0ID0gY29tcHV0ZUNvbnRyb2xMb2dpY2FsSGVpZ2h0KGlubmVyVGV4dEJveC0+bGluZUhlaWdo
dCh0cnVlLCBIb3Jpem9udGFsTGluZSwgUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKSwgbm9u
Q29udGVudEhlaWdodCk7CisgICAgICAgIGxvZ2ljYWxIZWlnaHQgPSBjb21wdXRlQ29udHJvbExv
Z2ljYWxIZWlnaHQoaW5uZXJUZXh0Qm94LT5saW5lSGVpZ2h0KHRydWUsIEhvcml6b250YWxMaW5l
KSwgbm9uQ29udGVudEhlaWdodCk7CiAKICAgICAgICAgLy8gV2UgYXJlIGFibGUgdG8gaGF2ZSBh
IGhvcml6b250YWwgc2Nyb2xsYmFyIGlmIHRoZSBvdmVyZmxvdyBzdHlsZSBpcyBzY3JvbGwsIG9y
IGlmIGl0cyBhdXRvIGFuZCB0aGVyZSdzIG5vIHdvcmQgd3JhcC4KICAgICAgICAgYXV0byBzaG91
bGRJbmNsdWRlU2Nyb2xsYmFySGVpZ2h0ID0gWyZdIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sLmgKaW5kZXggODJlMzJjMzk4ZGZkLi44OTAxMGMwMGNmZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCkBAIC04
OCw5ICs4OCw5IEBAIHB1YmxpYzoKICAgICBSZW5kZXJUZXh0Q29udHJvbElubmVyQ29udGFpbmVy
KEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJUZXh0Q29udHJv
bElubmVyQ29udGFpbmVyKCk7CiAKLSAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oYm9v
bCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9k
ZSBwb3NpdGlvbikgY29uc3Qgb3ZlcnJpZGUKKyAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRp
b24oKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAgICAgcmV0dXJuIFJlbmRlckJsb2NrOjpi
YXNlbGluZVBvc2l0aW9uKGZpcnN0TGluZSwgZGlyZWN0aW9uLCBwb3NpdGlvbik7CisgICAgICAg
IHJldHVybiBSZW5kZXJCbG9jazo6YmFzZWxpbmVQb3NpdGlvbigpOwogICAgIH0KICAgICBzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gUmVuZGVyQmxvY2s6OmZpcnN0TGluZUJhc2VsaW5lKCk7IH0KICAgICBzdGQ6Om9w
dGlvbmFsPExheW91dFVuaXQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUg
ZGlyZWN0aW9uKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBSZW5kZXJCbG9jazo6aW5saW5lQmxv
Y2tCYXNlbGluZShkaXJlY3Rpb24pOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcAppbmRleCA4NGIzZDZmNDFiMjAu
LjVlMDk0ZDBjY2NkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sTXVsdGlMaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwCkBAIC05OCw5ICs5OCw5IEBAIExheW91dFVu
aXQgUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6OmNvbXB1dGVDb250cm9sTG9naWNhbEhlaWdo
dChMYXlvdXRVbml0IGxpCiAgICAgcmV0dXJuIGxpbmVIZWlnaHQgKiB0ZXh0QXJlYUVsZW1lbnQo
KS5yb3dzKCkgKyBub25Db250ZW50SGVpZ2h0OwogfQogCi1MYXlvdXRVbml0IFJlbmRlclRleHRD
b250cm9sTXVsdGlMaW5lOjpiYXNlbGluZVBvc2l0aW9uKGJvb2wgZmlyc3RMaW5lLCBMaW5lRGly
ZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgbGluZVBvc2l0aW9uTW9kZSkg
Y29uc3QKK0xheW91dFVuaXQgUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6OmJhc2VsaW5lUG9z
aXRpb24oKSBjb25zdAogewotICAgIHJldHVybiBSZW5kZXJCb3g6OmJhc2VsaW5lUG9zaXRpb24o
Zmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1vZGUpOworICAgIHJldHVybiBSZW5k
ZXJCb3g6OmJhc2VsaW5lUG9zaXRpb24oKTsKIH0KIAogdm9pZCBSZW5kZXJUZXh0Q29udHJvbE11
bHRpTGluZTo6bGF5b3V0RXhjbHVkZWRDaGlsZHJlbihSZWxheW91dENoaWxkcmVuIHJlbGF5b3V0
Q2hpbGRyZW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2xNdWx0aUxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbE11bHRpTGluZS5oCmluZGV4IGRlMTdhZGEzZjViYS4uYTAxOWYwMGRmNGUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxp
bmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0
aUxpbmUuaApAQCAtNDQsNyArNDQsNyBAQCBwcml2YXRlOgogICAgIGZsb2F0IGdldEF2ZXJhZ2VD
aGFyV2lkdGgoKSBvdmVycmlkZTsKICAgICBMYXlvdXRVbml0IHByZWZlcnJlZENvbnRlbnRMb2dp
Y2FsV2lkdGgoZmxvYXQgY2hhcldpZHRoKSBjb25zdCBvdmVycmlkZTsKICAgICBMYXlvdXRVbml0
IGNvbXB1dGVDb250cm9sTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxpbmVIZWlnaHQsIExheW91
dFVuaXQgbm9uQ29udGVudEhlaWdodCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgTGF5b3V0VW5pdCBi
YXNlbGluZVBvc2l0aW9uKGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBv
c2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2
b2lkIGxheW91dEV4Y2x1ZGVkQ2hpbGRyZW4oUmVsYXlvdXRDaGlsZHJlbikgb3ZlcnJpZGU7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZVdpZHRoLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVXaWR0aC5jcHAKaW5kZXggYmEw
OTdiYmUzNjIwLi5lY2VhMWQ3YTI1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9saW5lL0xpbmVXaWR0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xp
bmUvTGluZVdpZHRoLmNwcApAQCAtNjksNyArNjksNyBAQCBib29sIExpbmVXaWR0aDo6Zml0c09u
TGluZUV4Y2x1ZGluZ1RyYWlsaW5nQ29sbGFwc2VkV2hpdGVzcGFjZSgpIGNvbnN0CiB2b2lkIExp
bmVXaWR0aDo6dXBkYXRlQXZhaWxhYmxlV2lkdGgoKQogewogICAgIExheW91dFVuaXQgaGVpZ2h0
ID0gbV9ibG9jay5sb2dpY2FsSGVpZ2h0KCk7Ci0gICAgYXV0byBsaW5lSGVpZ2h0ID0gc3RkOjpt
YXgoMF9sdSwgbV9ibG9jay5saW5lSGVpZ2h0KHRydWUsIG1fYmxvY2suaXNIb3Jpem9udGFsV3Jp
dGluZ01vZGUoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5lLCBQb3NpdGlvbk9mSW50
ZXJpb3JMaW5lQm94ZXMpKTsKKyAgICBhdXRvIGxpbmVIZWlnaHQgPSBzdGQ6Om1heCgwX2x1LCBt
X2Jsb2NrLmxpbmVIZWlnaHQodHJ1ZSwgbV9ibG9jay5pc0hvcml6b250YWxXcml0aW5nTW9kZSgp
ID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmUpKTsKICAgICBtX2xlZnQgPSBtX2Jsb2Nr
LmxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZShoZWlnaHQsIGxpbmVIZWlnaHQpOwogICAgIG1fcmln
aHQgPSBtX2Jsb2NrLmxvZ2ljYWxSaWdodE9mZnNldEZvckxpbmUoaGVpZ2h0LCBsaW5lSGVpZ2h0
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTEJsb2NrLmNwcAppbmRleCA1ZDE2N2FlZDc2ODcuLjkxYzM4OWFhNDQyZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5j
cHAKQEAgLTk1LDEyICs5NSw5IEBAIExheW91dFVuaXQgUmVuZGVyTWF0aE1MQmxvY2s6Om1pcnJv
cklmTmVlZGVkKExheW91dFVuaXQgaG9yaXpvbnRhbE9mZnNldCwgTGF5b3V0CiAgICAgcmV0dXJu
IGhvcml6b250YWxPZmZzZXQ7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyTWF0aE1MQmxvY2s6OmJh
c2VsaW5lUG9zaXRpb24oYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlv
biwgTGluZVBvc2l0aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25zdAorTGF5b3V0VW5pdCBS
ZW5kZXJNYXRoTUxCbG9jazo6YmFzZWxpbmVQb3NpdGlvbigpIGNvbnN0CiB7Ci0gICAgaWYgKGxp
bmVQb3NpdGlvbk1vZGUgPT0gUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKQotICAgICAgICBy
ZXR1cm4gMDsKLQotICAgIHJldHVybiBmaXJzdExpbmVCYXNlbGluZSgpLnZhbHVlX29yKFJlbmRl
ckJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKGZpcnN0TGluZSwgZGlyZWN0aW9uLCBsaW5lUG9zaXRp
b25Nb2RlKSk7CisgICAgcmV0dXJuIGZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVfb3IoUmVuZGVy
QmxvY2s6OmJhc2VsaW5lUG9zaXRpb24oKSk7CiB9CiAKIExheW91dFVuaXQgdG9Vc2VyVW5pdHMo
Y29uc3QgTWF0aE1MRWxlbWVudDo6TGVuZ3RoJiBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSwgY29uc3QgTGF5b3V0VW5pdCYgcmVmZXJlbmNlVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgKaW5kZXggYjA1YjZl
ZDA2NTRkLi44MGU1ZDAwNDZjN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgog
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODYxNy4KICAg
ICB2aXJ0dWFsIFJlbmRlck1hdGhNTE9wZXJhdG9yKiB1bmVtYmVsbGlzaGVkT3BlcmF0b3IoKSBj
b25zdCB7IHJldHVybiBudWxscHRyOyB9CiAKLSAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRp
b24oYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0g
UG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0
IGJhc2VsaW5lUG9zaXRpb24oKSBjb25zdCBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgogICAgIHZv
aWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xk
U3R5bGUpIG92ZXJyaWRlOwo=
</data>
<flag name="commit-queue"
          id="499074"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>476015</attachid>
            <date>2025-07-15 05:00:57 -0700</date>
            <delta_ts>2025-07-15 06:59:40 -0700</delta_ts>
            <desc>[fast-cq]Patch</desc>
            <filename>bug-295130-20250715050056.patch</filename>
            <type>text/plain</type>
            <size>27005</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA0N2E3ZDA0Nzk0OTUzYTkwOWFiNjQwN2U4ZTE0ZmNkMTcyMmU1Mjg4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFR1ZSwgMSBKdWwgMjAyNSAxNTozMzo1OCAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSBM
aW5lUG9zaXRpb25Nb2RlIGZyb20gUmVuZGVyQm94TW9kZWxPYmplY3Q6OmxpbmVIZWlnaHQKIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTUxMzAKClJldmlld2VkIGJ5
IEFudHRpIEtvaXZpc3RvLgoKTGluZVBvc2l0aW9uTW9kZSBoYXMgMiB2YWx1ZXMgUG9zaXRpb25P
bkNvbnRhaW5pbmdMaW5lIGFuZCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMuCgpQb3NpdGlv
bk9uQ29udGFpbmluZ0xpbmUgaXMgdXNlZCBhdCAzIHBsYWNlcy4KLSB3ZSB1bmNvbmRpdGlvbmFs
bHkgaWdub3JlIHRoaXMgdmFsdWUgKHNlZSBSZW5kZXJJbmxpbmUgYW5kIFJlbmRlckxpbmVCcmVh
aykgYXQgMiBwbGFjZXMuCi0gUmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24gcGFzc2VzIGlu
IFBvc2l0aW9uT25Db250YWluaW5nTGluZSBvbmx5IHdoZW4gInRoaXMiIGlzIF9ub3RfIGlzQmxv
Y2tMZXZlbFJlcGxhY2VkT3JBdG9taWNJbmxpbmUuClJlbmRlckJsb2NrOjpsaW5lSGVpZ2h0IG9u
bHkgdXNlcyBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUgd2hlbiAidGhpcyIgX2lzXyBpc0Jsb2Nr
TGV2ZWxSZXBsYWNlZE9yQXRvbWljSW5saW5lLgoKKE1hbnkgb3ZlcnJpZGUgc2lnbmF0dXJlcyBh
bHNvIHVzZSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUgYXMgdGhlIGRlZmF1bHQgdmFsdWUsIGJ1
dCBubyBjYWxsZXJzIHV0aWxpemVzIHRoaXMgZGVmYXVsdCBiZWhhdmlvcikKCiogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0NhcmV0UmVjdENvbXB1dGF0aW9uLmNwcDoKKFdlYkNvcmU6OmNvbXB1
dGVDYXJldFJlY3RGb3JFbXB0eUVsZW1lbnQpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9M
ZWdhY3lMaW5lTGF5b3V0LmNwcDoKKFdlYkNvcmU6OkxlZ2FjeUxpbmVMYXlvdXQ6OmxheW91dExp
bmVCb3hlcyk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjpsaW5lSGVpZ2h0IGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckJsb2NrOjppbmxp
bmVCbG9ja0Jhc2VsaW5lIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcDoK
KFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bGF5b3V0QmxvY2tXaXRoTm9DaGlsZHJlbik6CihX
ZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dEluRmxvd0NoaWxkcmVuKToKKFdlYkNvcmU6
OlJlbmRlckJsb2NrRmxvdzo6YWRqdXN0SW5pdGlhbExldHRlclBvc2l0aW9uKToKKFdlYkNvcmU6
OlJlbmRlckJsb2NrRmxvdzo6aW5saW5lQmxvY2tCYXNlbGluZSBjb25zdCk6CihXZWJDb3JlOjpS
ZW5kZXJCbG9ja0Zsb3c6OmxheW91dElubGluZUNvbnRlbnQpOgoqIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwOgooV2ViQ29yZTo6UmVuZGVyQm94OjpsaW5lSGVpZ2h0IGNv
bnN0KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94Lmg6CiogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0Lmg6CiogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHA6CihXZWJDb3JlOjpSZW5k
ZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmxheW91dEhvcml6b250YWxCb3gpOgooV2ViQ29yZTo6
UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpsYXlvdXRWZXJ0aWNhbEJveCk6CiogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcDoKKFdlYkNvcmU6OlJlbmRl
ckZsZXhpYmxlQm94OjpwZXJmb3JtRmxleExheW91dCk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckdyaWQuY3BwOgooV2ViQ29yZTo6UmVuZGVyR3JpZDo6bGF5b3V0R3JpZCk6CihX
ZWJDb3JlOjpSZW5kZXJHcmlkOjpsYXlvdXRNYXNvbnJ5KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW5saW5lLmNwcDoKKFdlYkNvcmU6OlJlbmRlcklubGluZTo6bGluZUhlaWdo
dCBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmJhc2VsaW5lUG9zaXRpb24gY29uc3Qp
OgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaDoKKiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcDoKKFdlYkNvcmU6OlJlbmRlckxpbmVC
cmVhazo6bGluZUhlaWdodCBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJMaW5lQnJlYWs6OmJhc2Vs
aW5lUG9zaXRpb24gY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5l
QnJlYWsuaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHA6
CihXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpsaW5lSGVpZ2h0IGNvbnN0KToKKiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oOgoqIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHA6CihXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJv
bDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9saW5lL0xpbmVXaWR0aC5jcHA6CihXZWJDb3JlOjpMaW5lV2lkdGg6OnVwZGF0ZUF2YWlsYWJs
ZVdpZHRoKToKLS0tCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2FyZXRSZWN0Q29tcHV0YXRp
b24uY3BwICAgfCAgMiArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlv
dXQuY3BwICAgICAgIHwgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5jcHAgICAgICAgICAgICB8IDEzICsrKy0tLS0tLS0tLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5oICAgICAgICAgICAgICB8ICAyICstCiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcCAgICAgICAgfCAxMCArKysrKy0tLS0tCiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCAgICAgICAgICAgICAgfCAgMiArLQog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oICAgICAgICAgICAgICAgIHwgIDIg
Ky0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oICAgICB8
ICAzICstLQogLi4uL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwICAg
ICAgIHwgIDQgKystLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94
LmNwcCAgICAgIHwgIDQgKystLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQu
Y3BwICAgICAgICAgICAgIHwgIDQgKystLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cklubGluZS5jcHAgICAgICAgICAgIHwgIDQgKystLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcklubGluZS5oICAgICAgICAgICAgIHwgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwICAgICAgICB8ICA0ICsrLS0KIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaCAgICAgICAgICB8ICAyICstCiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAgICAgICAgfCAgNiArKystLS0KIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmggICAgICAgICB8ICAyICst
CiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwICAgICAgfCAg
MiArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZVdpZHRoLmNwcCAgICAgICAg
IHwgIDIgKy0KIDE5IGZpbGVzIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKyksIDQwIGRlbGV0aW9u
cygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DYXJldFJlY3RDb21w
dXRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2FyZXRSZWN0Q29tcHV0YXRp
b24uY3BwCmluZGV4IDEyYjg1NmVjZWIxNy4uNDk1N2ViMTdjNDRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2FyZXRSZWN0Q29tcHV0YXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9DYXJldFJlY3RDb21wdXRhdGlvbi5jcHAKQEAgLTExOCw3ICsx
MTgsNyBAQCBzdGF0aWMgTGF5b3V0UmVjdCBjb21wdXRlQ2FyZXRSZWN0Rm9yRW1wdHlFbGVtZW50
KGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0JiByZQogICAgIH0KICAgICB4ID0gc3RkOjptaW4o
eCwgc3RkOjptYXg8TGF5b3V0VW5pdD4obWF4WCAtIGNhcmV0V2lkdGgoKSwgMCkpOwogCi0gICAg
YXV0byBsaW5lSGVpZ2h0ID0gcmVuZGVyZXIubGluZUhlaWdodCh0cnVlLCB3cml0aW5nTW9kZS5p
c0hvcml6b250YWwoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5lLCBQb3NpdGlvbk9m
SW50ZXJpb3JMaW5lQm94ZXMpOworICAgIGF1dG8gbGluZUhlaWdodCA9IHJlbmRlcmVyLmxpbmVI
ZWlnaHQodHJ1ZSwgd3JpdGluZ01vZGUuaXNIb3Jpem9udGFsKCkgPyBIb3Jpem9udGFsTGluZSA6
IFZlcnRpY2FsTGluZSk7CiAgICAgYXV0byBoZWlnaHQgPSBzdGQ6Om1pbihsaW5lSGVpZ2h0LCBM
YXlvdXRVbml0IHsgY3VycmVudFN0eWxlLm1ldHJpY3NPZlByaW1hcnlGb250KCkuaGVpZ2h0KCkg
fSk7CiAgICAgYXV0byB5ID0gcmVuZGVyZXIuYm9yZGVyQW5kUGFkZGluZ0JlZm9yZSgpICsgKGxp
bmVIZWlnaHQgPiBoZWlnaHQgPyAobGluZUhlaWdodCAtIGhlaWdodCkgLyAyIDogTGF5b3V0VW5p
dCB7IH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5TGlu
ZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5j
cHAKaW5kZXggMmI3YTQxNmQ4MzZlLi45OWRjNzAzNWNkMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5jcHAKQEAgLTU3Niw3ICs1NzYsNyBAQCB2b2lk
IExlZ2FjeUxpbmVMYXlvdXQ6OmxheW91dExpbmVCb3hlcygpCiAgICAgfQogCiAgICAgaWYgKCFs
ZWdhY3lSb290Qm94KCkgJiYgbV9mbG93Lmhhc0xpbmVJZkVtcHR5KCkpCi0gICAgICAgIG1fZmxv
dy5zZXRMb2dpY2FsSGVpZ2h0KG1fZmxvdy5sb2dpY2FsSGVpZ2h0KCkgKyBtX2Zsb3cubGluZUhl
aWdodCh0cnVlLCBtX2Zsb3cuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IEhvcml6b250YWxM
aW5lIDogVmVydGljYWxMaW5lLCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpKTsKKyAgICAg
ICAgbV9mbG93LnNldExvZ2ljYWxIZWlnaHQobV9mbG93LmxvZ2ljYWxIZWlnaHQoKSArIG1fZmxv
dy5saW5lSGVpZ2h0KHRydWUsIG1fZmxvdy5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gSG9y
aXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmUpKTsKIH0KIAogdm9pZCBMZWdhY3lMaW5lTGF5b3V0
OjphZGRPdmVyZmxvd0Zyb21JbmxpbmVDaGlsZHJlbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcAppbmRleCBlNjNkM2JmNDZlY2MuLmQ4MmFmYTk3YzliZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0yNDc0LDE1ICsyNDc0LDgg
QEAgYm9vbCBSZW5kZXJCbG9jazo6aGFzTGluZUlmRW1wdHkoKSBjb25zdAogICAgIHJldHVybiBl
bGVtZW50ICYmIGVsZW1lbnQtPmlzUm9vdEVkaXRhYmxlRWxlbWVudCgpOwogfQogCi1MYXlvdXRV
bml0IFJlbmRlckJsb2NrOjpsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9u
TW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgbGluZVBvc2l0aW9uTW9kZSkgY29uc3QK
K0xheW91dFVuaXQgUmVuZGVyQmxvY2s6OmxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVE
aXJlY3Rpb25Nb2RlKSBjb25zdAogewotICAgIC8vIElubGluZSBibG9ja3MgYXJlIHJlcGxhY2Vk
IGVsZW1lbnRzLiBPdGhlcndpc2UsIGp1c3QgcGFzcyBvZmYgdG8KLSAgICAvLyB0aGUgYmFzZSBj
bGFzcy4gIElmIHdlJ3JlIGJlaW5nIHF1ZXJpZWQgYXMgdGhvdWdoIHdlJ3JlIHRoZSByb290IGxp
bmUKLSAgICAvLyBib3gsIHRoZW4gdGhlIGZhY3QgdGhhdCB3ZSdyZSBhbiBpbmxpbmUtYmxvY2sg
aXMgaXJyZWxldmFudCwgYW5kIHdlIGJlaGF2ZQotICAgIC8vIGp1c3QgbGlrZSBhIGJsb2NrLgot
ICAgIGlmIChpc0Jsb2NrTGV2ZWxSZXBsYWNlZE9yQXRvbWljSW5saW5lKCkgJiYgbGluZVBvc2l0
aW9uTW9kZSA9PSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpCi0gICAgICAgIHJldHVybiBSZW5k
ZXJCb3g6OmxpbmVIZWlnaHQoZmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1vZGUp
OwotCiAgICAgYXV0byYgbGluZVN0eWxlID0gZmlyc3RMaW5lID8gZmlyc3RMaW5lU3R5bGUoKSA6
IHN0eWxlKCk7CiAgICAgcmV0dXJuIExheW91dFVuaXQ6OmZyb21GbG9hdENlaWwobGluZVN0eWxl
LmNvbXB1dGVkTGluZUhlaWdodCgpKTsKIH0KQEAgLTI1NDIsNyArMjUzNSw3IEBAIExheW91dFVu
aXQgUmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24oKSBjb25zdAogICAgIH0KIAogICAgIGNv
bnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxlKCkubWV0cmljc09mUHJpbWFyeUZv
bnQoKTsKLSAgICByZXR1cm4gTGF5b3V0VW5pdCB7IGZvbnRNZXRyaWNzLmludEFzY2VudCgpICsg
KGxpbmVIZWlnaHQodHJ1ZSwgZGlyZWN0aW9uLCBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIC0g
Zm9udE1ldHJpY3MuaW50SGVpZ2h0KCkpIC8gMiB9LnRvSW50KCk7CisgICAgcmV0dXJuIExheW91
dFVuaXQgeyBmb250TWV0cmljcy5pbnRBc2NlbnQoKSArIChsaW5lSGVpZ2h0KHRydWUsIGRpcmVj
dGlvbikgLSBmb250TWV0cmljcy5pbnRIZWlnaHQoKSkgLyAyIH0udG9JbnQoKTsKIH0KIAogc3Rk
OjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBj
b25zdApAQCAtMjYwMiw3ICsyNTk1LDcgQEAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5k
ZXJCbG9jazo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSBsaW4KICAgICBp
ZiAoIWhhdmVOb3JtYWxGbG93Q2hpbGQgJiYgaGFzTGluZUlmRW1wdHkoKSkgewogICAgICAgICBh
dXRvJiBmb250TWV0cmljcyA9IGZpcnN0TGluZVN0eWxlKCkubWV0cmljc09mUHJpbWFyeUZvbnQo
KTsKICAgICAgICAgcmV0dXJuIExheW91dFVuaXQgeyBMYXlvdXRVbml0KGZvbnRNZXRyaWNzLmlu
dEFzY2VudCgpCi0gICAgICAgICAgICArIChsaW5lSGVpZ2h0KHRydWUsIGxpbmVEaXJlY3Rpb24s
IFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcykgLSBmb250TWV0cmljcy5pbnRIZWlnaHQoKSkg
LyAyCisgICAgICAgICAgICArIChsaW5lSGVpZ2h0KHRydWUsIGxpbmVEaXJlY3Rpb24pIC0gZm9u
dE1ldHJpY3MuaW50SGVpZ2h0KCkpIC8gMgogICAgICAgICAgICAgKyAobGluZURpcmVjdGlvbiA9
PSBIb3Jpem9udGFsTGluZSA/IGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpIDogYm9yZGVyUmln
aHQoKSArIHBhZGRpbmdSaWdodCgpKSkudG9JbnQoKSB9OwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCBlZDIzMTI5Y2M4NGQuLjhiNTkyZDFjMzk3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAgLTY2LDcgKzY2LDcgQEAg
cHJvdGVjdGVkOgogCiBwdWJsaWM6CiAgICAgLy8gVGhlc2UgdHdvIGZ1bmN0aW9ucyBhcmUgb3Zl
cnJpZGRlbiBmb3IgaW5saW5lLWJsb2NrLgotICAgIExheW91dFVuaXQgbGluZUhlaWdodChib29s
IGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlv
bk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IGZpbmFsOworICAgIExheW91dFVuaXQgbGluZUhlaWdo
dChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IGZpbmFsOwogICAgIExh
eW91dFVuaXQgYmFzZWxpbmVQb3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gRklY
TUUtQkxPQ0tGTE9XOiBSZW1vdmUgdmlydHVhbGl6YWlvbiB3aGVuIGFsbCBjYWxsZXJzIGhhdmUg
bW92ZWQgdG8gUmVuZGVyQmxvY2tGbG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9ja0Zsb3cuY3BwCmluZGV4IDYyYjg4NjZhOTM4ZC4uMTFmODdjMGM5NjU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApAQCAtNDY4LDcgKzQ2
OCw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRCbG9ja1dpdGhOb0NoaWxkcmVuKCkK
ICAgICAgICAgICAgIHNldEhhc01hcmdpbkJlZm9yZVF1aXJrKHN0eWxlLm1hcmdpbkJlZm9yZSgp
Lmhhc1F1aXJrKCkpOwogICAgICAgICAgICAgc2V0SGFzTWFyZ2luQWZ0ZXJRdWlyayhzdHlsZS5t
YXJnaW5BZnRlcigpLmhhc1F1aXJrKCkpOwogICAgICAgICB9Ci0gICAgICAgIHNldExvZ2ljYWxI
ZWlnaHQoYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSArIHNjcm9sbGJhckxvZ2ljYWxI
ZWlnaHQoKSArIChoYXNMaW5lSWZFbXB0eSgpID8gbGluZUhlaWdodCh0cnVlLCBpc0hvcml6b250
YWxXcml0aW5nTW9kZSgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmUsIFBvc2l0aW9u
T2ZJbnRlcmlvckxpbmVCb3hlcykgOiAwX2x1KSk7CisgICAgICAgIHNldExvZ2ljYWxIZWlnaHQo
Ym9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSArIHNjcm9sbGJhckxvZ2ljYWxIZWlnaHQo
KSArIChoYXNMaW5lSWZFbXB0eSgpID8gbGluZUhlaWdodCh0cnVlLCBpc0hvcml6b250YWxXcml0
aW5nTW9kZSgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmUpIDogMF9sdSkpOwogICAg
ICAgICB1cGRhdGVMb2dpY2FsSGVpZ2h0KCk7CiAgICAgfTsKICAgICBjb21wdXRlQmxvY2tBeGlz
U2l6ZSgpOwpAQCAtNzgwLDcgKzc4MCw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRJ
bkZsb3dDaGlsZHJlbihSZWxheW91dENoaWxkcmVuIHJlbGF5b3V0Q2hpbGRyZW4sIExhCiAKICAg
ICAgICAgYXV0byBsb2dpY2FsSGVpZ2h0ID0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQo
KSArIHNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKTsKICAgICAgICAgaWYgKGhhc0xpbmVJZkVtcHR5
KCkpCi0gICAgICAgICAgICBsb2dpY2FsSGVpZ2h0ICs9IGxpbmVIZWlnaHQodHJ1ZSwgaXNIb3Jp
em9udGFsV3JpdGluZ01vZGUoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5lLCBQb3Np
dGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpOworICAgICAgICAgICAgbG9naWNhbEhlaWdodCArPSBs
aW5lSGVpZ2h0KHRydWUsIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGlu
ZSA6IFZlcnRpY2FsTGluZSk7CiAgICAgICAgIHNldExvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdo
dCk7CiAKICAgICAgICAgcmVwYWludExvZ2ljYWxUb3AgPSB7IH07CkBAIC0yNzQ5LDcgKzI3NDks
NyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6YWRqdXN0SW5pdGlhbExldHRlclBvc2l0aW9uKFJl
bmRlckJveCYgY2hpbGRCb3gsIExheW91dFVuaQogICAgIGlmICghZm9udE1ldHJpY3MuY2FwSGVp
Z2h0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIExheW91dFVuaXQgaGVpZ2h0T2ZMaW5lID0g
bGluZUhlaWdodCh0cnVlLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gSG9yaXpvbnRhbExp
bmUgOiBWZXJ0aWNhbExpbmUsIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcyk7CisgICAgTGF5
b3V0VW5pdCBoZWlnaHRPZkxpbmUgPSBsaW5lSGVpZ2h0KHRydWUsIGlzSG9yaXpvbnRhbFdyaXRp
bmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSk7CiAgICAgTGF5b3V0VW5p
dCBiZWZvcmVNYXJnaW5Cb3JkZXJQYWRkaW5nID0gY2hpbGRCb3guYm9yZGVyQW5kUGFkZGluZ0Jl
Zm9yZSgpICsgY2hpbGRCb3gubWFyZ2luQmVmb3JlKCk7CiAgICAgCiAgICAgLy8gTWFrZSBhbiBh
ZGp1c3RtZW50IHRvIGFsaWduIHdpdGggdGhlIGNhcCBoZWlnaHQgb2YgYSB0aGVvcmV0aWNhbCBi
bG9jayBsaW5lLgpAQCAtMzMyNiw3ICszMzI2LDcgQEAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0
PiBSZW5kZXJCbG9ja0Zsb3c6OmlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUK
ICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgY29uc3Qg
YXV0byYgZm9udE1ldHJpY3MgPSBmaXJzdExpbmVTdHlsZSgpLm1ldHJpY3NPZlByaW1hcnlGb250
KCk7CiAgICAgICAgICAgICByZXR1cm4gTGF5b3V0VW5pdCB7IExheW91dFVuaXQoZm9udE1ldHJp
Y3MuaW50QXNjZW50KCkKLSAgICAgICAgICAgICAgICArIChsaW5lSGVpZ2h0KHRydWUsIGxpbmVE
aXJlY3Rpb24sIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcykgLSBmb250TWV0cmljcy5pbnRI
ZWlnaHQoKSkgLyAyCisgICAgICAgICAgICAgICAgKyAobGluZUhlaWdodCh0cnVlLCBsaW5lRGly
ZWN0aW9uKSAtIGZvbnRNZXRyaWNzLmludEhlaWdodCgpKSAvIDIKICAgICAgICAgICAgICAgICAr
IChsaW5lRGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8gYm9yZGVyVG9wKCkgKyBwYWRkaW5n
VG9wKCkgOiBib3JkZXJSaWdodCgpICsgcGFkZGluZ1JpZ2h0KCkpKS50b0ludCgpIH07CiAgICAg
ICAgIH0KIApAQCAtNDA0NSw3ICs0MDQ1LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmxheW91
dElubGluZUNvbnRlbnQoUmVsYXlvdXRDaGlsZHJlbiByZWxheW91dENoaWxkcmVuLCBMYXkKICAg
ICBhdXRvIHBhcnRpYWxSZXBhaW50UmVjdCA9IGxheW91dEZvcm1hdHRpbmdDb250ZXh0TGluZUxh
eW91dC5sYXlvdXQocmVsYXlvdXRDaGlsZHJlbiA9PSBSZWxheW91dENoaWxkcmVuOjpZZXMgPyBM
YXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6Rm9yY2VGdWxsTGF5b3V0OjpZZXMgOiBMYXlv
dXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6Rm9yY2VGdWxsTGF5b3V0OjpObyk7CiAKICAgICBh
dXRvIGJvcmRlckJveEJvdHRvbSA9IFsmXSB7Ci0gICAgICAgIGF1dG8gY29udGVudEhlaWdodCA9
ICFoYXNMaW5lcygpICYmIGhhc0xpbmVJZkVtcHR5KCkgPyBsaW5lSGVpZ2h0KHRydWUsIGlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSwgUG9z
aXRpb25PZkludGVyaW9yTGluZUJveGVzKSA6IGxheW91dEZvcm1hdHRpbmdDb250ZXh0TGluZUxh
eW91dC5jb250ZW50TG9naWNhbEhlaWdodCgpOworICAgICAgICBhdXRvIGNvbnRlbnRIZWlnaHQg
PSAhaGFzTGluZXMoKSAmJiBoYXNMaW5lSWZFbXB0eSgpID8gbGluZUhlaWdodCh0cnVlLCBpc0hv
cml6b250YWxXcml0aW5nTW9kZSgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmUpIDog
bGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LmNvbnRlbnRMb2dpY2FsSGVpZ2h0KCk7
CiAgICAgICAgIHJldHVybiBib3JkZXJBbmRQYWRkaW5nQmVmb3JlKCkgKyBjb250ZW50SGVpZ2h0
ICsgYm9yZGVyQW5kUGFkZGluZ0FmdGVyKCkgKyBzY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCk7CiAg
ICAgfTsKICAgICBhdXRvIG5ld0JvcmRlckJveEJvdHRvbSA9IGJvcmRlckJveEJvdHRvbSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCAxNTczMDJjMzI1YjAuLjI4
OTI5ZjAxNDFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTQ5
NjYsNyArNDk2Niw3IEBAIGJvb2wgUmVuZGVyQm94Ojppc1Vuc3BsaXR0YWJsZUZvclBhZ2luYXRp
b24oKSBjb25zdAogICAgICAgICB8fCBzaG91bGRBcHBseVNpemVDb250YWlubWVudCgpOwogfQog
Ci1MYXlvdXRVbml0IFJlbmRlckJveDo6bGluZUhlaWdodChib29sIC8qZmlyc3RMaW5lKi8sIExp
bmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSAvKmxpbmVQb3NpdGlv
bk1vZGUqLykgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyQm94OjpsaW5lSGVpZ2h0KGJvb2wgLypm
aXJzdExpbmUqLywgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uKSBjb25zdAogewogICAgIGlm
IChpc0Jsb2NrTGV2ZWxSZXBsYWNlZE9yQXRvbWljSW5saW5lKCkpCiAgICAgICAgIHJldHVybiBk
aXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUgPyBtX21hcmdpbkJveC50b3AoKSArIGhlaWdodCgp
ICsgbV9tYXJnaW5Cb3guYm90dG9tKCkgOiBtX21hcmdpbkJveC5yaWdodCgpICsgd2lkdGgoKSAr
IG1fbWFyZ2luQm94LmxlZnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAppbmRl
eCBiMjMyYzBmODZmY2YuLjM3Y2FmYTc1NjJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guaApAQCAtNTI2LDcgKzUyNiw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBt
YXJrRm9yUGFnaW5hdGlvblJlbGF5b3V0SWZOZWVkZWQoKSB7IH0KICAgICAKLSAgICBMYXlvdXRV
bml0IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9z
aXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBMYXlvdXRVbml0IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2Rl
KSBjb25zdCBvdmVycmlkZTsKICAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIExheW91dFVuaXQgb2Zmc2V0TGVmdCgpIGNvbnN0IG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaApp
bmRleCA5NDU2ZDkwN2RiMWIuLjBlODJhZTQzZmNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKQEAgLTMxLDcgKzMxLDYgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogLy8gTW9kZXMgZm9yIHNvbWUgb2YgdGhlIGxpbmUtcmVsYXRlZCBm
dW5jdGlvbnMuCi1lbnVtIExpbmVQb3NpdGlvbk1vZGUgeyBQb3NpdGlvbk9uQ29udGFpbmluZ0xp
bmUsIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcyB9OwogZW51bSBMaW5lRGlyZWN0aW9uTW9k
ZSB7IEhvcml6b250YWxMaW5lLCBWZXJ0aWNhbExpbmUgfTsKIAogZW51bSBjbGFzcyBCbGVlZEF2
b2lkYW5jZSA6IHVpbnQ4X3QgewpAQCAtMTk1LDcgKzE5NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIExheW91dFVuaXQgY29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29udGVudCgpIGNv
bnN0OwogCiAgICAgLy8gT3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzIHRvIGRldGVybWluZSBsaW5l
IGhlaWdodCBhbmQgYmFzZWxpbmUgcG9zaXRpb24uCi0gICAgdmlydHVhbCBMYXlvdXRVbml0IGxp
bmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25N
b2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBM
YXlvdXRVbml0IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oKSBjb25z
dCA9IDA7CiAKICAgICB2b2lkIG1hcEFic29sdXRlVG9Mb2NhbFBvaW50KE9wdGlvblNldDxNYXBD
b29yZGluYXRlc01vZGU+LCBUcmFuc2Zvcm1TdGF0ZSYpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJv
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxl
Qm94LmNwcAppbmRleCBhZjg4NmY1ZTJlYjUuLmNlODAyOGQ4MGI0OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5j
cHAKQEAgLTUxMCw3ICs1MTAsNyBAQCB2b2lkIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6
bGF5b3V0SG9yaXpvbnRhbEJveChSZWxheW91dENoaWxkcmVuIHJlbGF5b3V0QwogICAgICAgICBB
U1NFUlQoY2hpbGRJbmRleCA9PSBjaGlsZExheW91dERlbHRhcy5zaXplKCkpOwogCiAgICAgICAg
IGlmICghaXRlcmF0b3IuZmlyc3QoKSAmJiBoYXNMaW5lSWZFbXB0eSgpKQotICAgICAgICAgICAg
c2V0SGVpZ2h0KGhlaWdodCgpICsgbGluZUhlaWdodCh0cnVlLCB3cml0aW5nTW9kZSgpLmlzSG9y
aXpvbnRhbCgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmUsIFBvc2l0aW9uT2ZJbnRl
cmlvckxpbmVCb3hlcykpOworICAgICAgICAgICAgc2V0SGVpZ2h0KGhlaWdodCgpICsgbGluZUhl
aWdodCh0cnVlLCB3cml0aW5nTW9kZSgpLmlzSG9yaXpvbnRhbCgpID8gSG9yaXpvbnRhbExpbmUg
OiBWZXJ0aWNhbExpbmUpKTsKIAogICAgICAgICBzZXRIZWlnaHQoaGVpZ2h0KCkgKyB0b0FkZCk7
CiAKQEAgLTg0OCw3ICs4NDgsNyBAQCB2b2lkIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6
bGF5b3V0VmVydGljYWxCb3goUmVsYXlvdXRDaGlsZHJlbiByZWxheW91dENoaQogICAgICAgICB5
UG9zID0gaGVpZ2h0KCk7CiAKICAgICAgICAgaWYgKCFpdGVyYXRvci5maXJzdCgpICYmIGhhc0xp
bmVJZkVtcHR5KCkpCi0gICAgICAgICAgICBzZXRIZWlnaHQoaGVpZ2h0KCkgKyBsaW5lSGVpZ2h0
KHRydWUsIHdyaXRpbmdNb2RlKCkuaXNIb3Jpem9udGFsKCkgPyBIb3Jpem9udGFsTGluZSA6IFZl
cnRpY2FsTGluZSwgUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKSk7CisgICAgICAgICAgICBz
ZXRIZWlnaHQoaGVpZ2h0KCkgKyBsaW5lSGVpZ2h0KHRydWUsIHdyaXRpbmdNb2RlKCkuaXNIb3Jp
em9udGFsKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSkpOwogCiAgICAgICAgIHNl
dEhlaWdodChoZWlnaHQoKSArIHRvQWRkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKaW5kZXggNmNlYjRmYzhjYzMwLi5jMmE4NzZiYTI3NTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcApA
QCAtMTM0Niw3ICsxMzQ2LDcgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6cGVyZm9ybUZsZXhM
YXlvdXQoUmVsYXlvdXRDaGlsZHJlbiByZWxheW91dENoaWxkcmVuKQogCiAgICAgaWYgKGFsbEl0
ZW1zLmlzRW1wdHkoKSkgewogICAgICAgICBpZiAoaGFzTGluZUlmRW1wdHkoKSkgewotICAgICAg
ICAgICAgYXV0byBtaW5IZWlnaHQgPSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpICsg
bGluZUhlaWdodCh0cnVlLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gSG9yaXpvbnRhbExp
bmUgOiBWZXJ0aWNhbExpbmUsIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcykgKyBzY3JvbGxi
YXJMb2dpY2FsSGVpZ2h0KCk7CisgICAgICAgICAgICBhdXRvIG1pbkhlaWdodCA9IGJvcmRlckFu
ZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCkgKyBsaW5lSGVpZ2h0KHRydWUsIGlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSkgKyBzY3JvbGxiYXJM
b2dpY2FsSGVpZ2h0KCk7CiAgICAgICAgICAgICBpZiAoaGVpZ2h0KCkgPCBtaW5IZWlnaHQpCiAg
ICAgICAgICAgICAgICAgc2V0TG9naWNhbEhlaWdodChtaW5IZWlnaHQpOwogICAgICAgICB9CkBA
IC0xNDIzLDcgKzE0MjMsNyBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpwZXJmb3JtRmxleExh
eW91dChSZWxheW91dENoaWxkcmVuIHJlbGF5b3V0Q2hpbGRyZW4pCiAgICAgICAgIC8vIGEgbGlu
ZSBiZWNhdXNlIGFsbCBvdXIgY2hpbGRyZW4gbWlnaHQgYmUgb3V0IG9mIGZsb3cgcG9zaXRpb25l
ZC4KICAgICAgICAgLy8gSW5zdGVhZCBvZiBqdXN0IGNoZWNraW5nIGlmIHdlIGhhdmUgYSBsaW5l
LCBtYWtlIHN1cmUgdGhlIGZsZXhib3gKICAgICAgICAgLy8gaGFzIGF0IGxlYXN0IGEgbGluZSdz
IHdvcnRoIG9mIGhlaWdodCB0byBjb3ZlciB0aGlzIGNhc2UuCi0gICAgICAgIExheW91dFVuaXQg
bWluSGVpZ2h0ID0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSArIGxpbmVIZWlnaHQo
dHJ1ZSwgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGlj
YWxMaW5lLCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpICsgc2Nyb2xsYmFyTG9naWNhbEhl
aWdodCgpOworICAgICAgICBMYXlvdXRVbml0IG1pbkhlaWdodCA9IGJvcmRlckFuZFBhZGRpbmdM
b2dpY2FsSGVpZ2h0KCkgKyBsaW5lSGVpZ2h0KHRydWUsIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSkgKyBzY3JvbGxiYXJMb2dpY2FsSGVp
Z2h0KCk7CiAgICAgICAgIGlmIChzaXplKCkuaGVpZ2h0KCkgPCBtaW5IZWlnaHQpCiAgICAgICAg
ICAgICBzZXRMb2dpY2FsSGVpZ2h0KG1pbkhlaWdodCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckdyaWQuY3BwCmluZGV4IDA0NjJlODJjY2EwNC4uZmViN2Q5MzI2NWMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC00OTAsNyArNDkwLDcg
QEAgdm9pZCBSZW5kZXJHcmlkOjpsYXlvdXRHcmlkKFJlbGF5b3V0Q2hpbGRyZW4gcmVsYXlvdXRD
aGlsZHJlbikKICAgICAgICAgLy8gR3JpZCBjb250YWluZXIgc2hvdWxkIGhhdmUgdGhlIG1pbmlt
dW0gaGVpZ2h0IG9mIGEgbGluZSBpZiBpdCdzIGVkaXRhYmxlLiBUaGF0IGRvZXMgbm90IGFmZmVj
dCB0cmFjayBzaXppbmcgdGhvdWdoLgogICAgICAgICBpZiAoaGFzTGluZUlmRW1wdHkoKSkgewog
ICAgICAgICAgICAgTGF5b3V0VW5pdCBtaW5IZWlnaHRGb3JFbXB0eUxpbmUgPSBib3JkZXJBbmRQ
YWRkaW5nTG9naWNhbEhlaWdodCgpCi0gICAgICAgICAgICAgICAgKyBsaW5lSGVpZ2h0KHRydWUs
IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGlu
ZSwgUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKQorICAgICAgICAgICAgICAgICsgbGluZUhl
aWdodCh0cnVlLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gSG9yaXpvbnRhbExpbmUgOiBW
ZXJ0aWNhbExpbmUpCiAgICAgICAgICAgICAgICAgKyBzY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCk7
CiAgICAgICAgICAgICBzZXRMb2dpY2FsSGVpZ2h0KHN0ZDo6bWF4KGxvZ2ljYWxIZWlnaHQoKSwg
bWluSGVpZ2h0Rm9yRW1wdHlMaW5lKSk7CiAgICAgICAgIH0KQEAgLTYyNyw3ICs2MjcsNyBAQCB2
b2lkIFJlbmRlckdyaWQ6OmxheW91dE1hc29ucnkoUmVsYXlvdXRDaGlsZHJlbiByZWxheW91dENo
aWxkcmVuKQogICAgICAgICAvLyBHcmlkIGNvbnRhaW5lciBzaG91bGQgaGF2ZSB0aGUgbWluaW11
bSBoZWlnaHQgb2YgYSBsaW5lIGlmIGl0J3MgZWRpdGFibGUuIFRoYXQgZG9lcyBub3QgYWZmZWN0
IHRyYWNrIHNpemluZyB0aG91Z2guCiAgICAgICAgIGlmIChoYXNMaW5lSWZFbXB0eSgpKSB7CiAg
ICAgICAgICAgICBMYXlvdXRVbml0IG1pbkhlaWdodEZvckVtcHR5TGluZSA9IGJvcmRlckFuZFBh
ZGRpbmdMb2dpY2FsSGVpZ2h0KCkKLSAgICAgICAgICAgICAgICArIGxpbmVIZWlnaHQodHJ1ZSwg
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5l
LCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpCisgICAgICAgICAgICAgICAgKyBsaW5lSGVp
Z2h0KHRydWUsIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZl
cnRpY2FsTGluZSkKICAgICAgICAgICAgICAgICArIHNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKTsK
ICAgICAgICAgICAgIHNldExvZ2ljYWxIZWlnaHQoc3RkOjptYXgobG9naWNhbEhlaWdodCgpLCBt
aW5IZWlnaHRGb3JFbXB0eUxpbmUpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW5saW5lLmNwcAppbmRleCAyNjhhOGQ2Mjk0ZjIuLmFjZDc3YzUxNjRmZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKQEAgLTgxNyw3ICs4MTcs
NyBAQCBMZWdhY3lJbmxpbmVGbG93Qm94KiBSZW5kZXJJbmxpbmU6OmNyZWF0ZUFuZEFwcGVuZElu
bGluZUZsb3dCb3goKQogICAgIHJldHVybiBmbG93Qm94OwogfQogCi1MYXlvdXRVbml0IFJlbmRl
cklubGluZTo6bGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgLypk
aXJlY3Rpb24qLywgTGluZVBvc2l0aW9uTW9kZSAvKmxpbmVQb3NpdGlvbk1vZGUqLykgY29uc3QK
K0xheW91dFVuaXQgUmVuZGVySW5saW5lOjpsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5l
RGlyZWN0aW9uTW9kZSAvKmRpcmVjdGlvbiovKSBjb25zdAogewogICAgIGF1dG8mIGxpbmVTdHls
ZSA9IGZpcnN0TGluZSA/IGZpcnN0TGluZVN0eWxlKCkgOiBzdHlsZSgpOwogICAgIHJldHVybiBM
YXlvdXRVbml0Ojpmcm9tRmxvYXRDZWlsKGxpbmVTdHlsZS5jb21wdXRlZExpbmVIZWlnaHQoKSk7
CkBAIC04MjYsNyArODI2LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJJbmxpbmU6OmxpbmVIZWlnaHQo
Ym9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIC8qZGlyZWN0aW8KIExheW91dFVuaXQg
UmVuZGVySW5saW5lOjpiYXNlbGluZVBvc2l0aW9uKCkgY29uc3QKIHsKICAgICBhdXRvJiBmb250
TWV0cmljcyA9IHN0eWxlKCkubWV0cmljc09mUHJpbWFyeUZvbnQoKTsKLSAgICByZXR1cm4gTGF5
b3V0VW5pdCB7IGZvbnRNZXRyaWNzLmFzY2VudCgpICsgKGxpbmVIZWlnaHQoZmFsc2UsIHBhcmVu
dCgpLT53cml0aW5nTW9kZSgpLmlzSG9yaXpvbnRhbCgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0
aWNhbExpbmUsIFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgLSBmb250TWV0cmljcy5oZWlnaHQo
KSkgLyAyIH07CisgICAgcmV0dXJuIExheW91dFVuaXQgeyBmb250TWV0cmljcy5hc2NlbnQoKSAr
IChsaW5lSGVpZ2h0KGZhbHNlLCBwYXJlbnQoKS0+d3JpdGluZ01vZGUoKS5pc0hvcml6b250YWwo
KSA/IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5lKSAtIGZvbnRNZXRyaWNzLmhlaWdodCgp
KSAvIDIgfTsKIH0KIAogTGF5b3V0U2l6ZSBSZW5kZXJJbmxpbmU6Om9mZnNldEZvckluRmxvd1Bv
c2l0aW9uZWRJbmxpbmUoY29uc3QgUmVuZGVyQm94KiBjaGlsZCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAppbmRleCA4N2NjMmE5NTlhYzMuLjI5MTQ2NDZkZjI0
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaApAQCAtMTM5LDcgKzEz
OSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpcnR5TGluZUZyb21DaGFuZ2VkQ2hpbGQoKSBm
aW5hbCB7IG1fbGVnYWN5TGluZUJveGVzLmRpcnR5TGluZUZyb21DaGFuZ2VkQ2hpbGQoKnRoaXMp
OyB9CiAKLSAgICBMYXlvdXRVbml0IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJl
Y3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBj
b25zdCBmaW5hbDsKKyAgICBMYXlvdXRVbml0IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExp
bmVEaXJlY3Rpb25Nb2RlKSBjb25zdCBmaW5hbDsKICAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9z
aXRpb24oKSBjb25zdCBmaW5hbDsKICAgICAKICAgICB2b2lkIHVwZGF0ZUhpdFRlc3RSZXN1bHQo
SGl0VGVzdFJlc3VsdCYsIGNvbnN0IExheW91dFBvaW50JikgY29uc3QgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCmluZGV4IGY0YjI4YTg0NmUy
Yi4uYjllZTdiNWQ2MjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGluZUJyZWFrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlu
ZUJyZWFrLmNwcApAQCAtNTksNyArNTksNyBAQCBSZW5kZXJMaW5lQnJlYWs6On5SZW5kZXJMaW5l
QnJlYWsoKQogewogfQogCi1MYXlvdXRVbml0IFJlbmRlckxpbmVCcmVhazo6bGluZUhlaWdodChi
b29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgLypkaXJlY3Rpb24qLywgTGluZVBvc2l0
aW9uTW9kZSAvKmxpbmVQb3NpdGlvbk1vZGUqLykgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyTGlu
ZUJyZWFrOjpsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSAvKmRp
cmVjdGlvbiovKSBjb25zdAogewogICAgIGlmIChmaXJzdExpbmUpIHsKICAgICAgICAgYXV0byYg
Zmlyc3RMaW5lU3R5bGUgPSB0aGlzLT5maXJzdExpbmVTdHlsZSgpOwpAQCAtNzUsNyArNzUsNyBA
QCBMYXlvdXRVbml0IFJlbmRlckxpbmVCcmVhazo6bGluZUhlaWdodChib29sIGZpcnN0TGluZSwg
TGluZURpcmVjdGlvbk1vZGUgLypkaXJlYwogTGF5b3V0VW5pdCBSZW5kZXJMaW5lQnJlYWs6OmJh
c2VsaW5lUG9zaXRpb24oKSBjb25zdAogewogICAgIGF1dG8mIGZvbnRNZXRyaWNzID0gc3R5bGUo
KS5tZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwotICAgIHJldHVybiBMYXlvdXRVbml0IHsgKGZvbnRN
ZXRyaWNzLmFzY2VudCgpICsgKGxpbmVIZWlnaHQoZmFsc2UsIHBhcmVudCgpLT53cml0aW5nTW9k
ZSgpLmlzSG9yaXpvbnRhbCgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmUsIFBvc2l0
aW9uT25Db250YWluaW5nTGluZSkgLSBmb250TWV0cmljcy5oZWlnaHQoKSkgLyAyKSB9OworICAg
IHJldHVybiBMYXlvdXRVbml0IHsgKGZvbnRNZXRyaWNzLmFzY2VudCgpICsgKGxpbmVIZWlnaHQo
ZmFsc2UsIHBhcmVudCgpLT53cml0aW5nTW9kZSgpLmlzSG9yaXpvbnRhbCgpID8gSG9yaXpvbnRh
bExpbmUgOiBWZXJ0aWNhbExpbmUpIC0gZm9udE1ldHJpY3MuaGVpZ2h0KCkpIC8gMikgfTsKIH0K
IAogaW50IFJlbmRlckxpbmVCcmVhazo6Y2FyZXRNaW5PZmZzZXQoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oCmluZGV4IDI0ZTI2Zjg1OTIwMi4uMTg4
NWIyOGMzOGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlu
ZUJyZWFrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5o
CkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgaW50IGNhcmV0TWF4T2Zmc2V0KCkgY29u
c3QgZmluYWw7CiAgICAgYm9vbCBjYW5CZVNlbGVjdGlvbkxlYWYoKSBjb25zdCBmaW5hbDsKIAot
ICAgIExheW91dFVuaXQgbGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1v
ZGUsIExpbmVQb3NpdGlvbk1vZGUpIGNvbnN0IGZpbmFsOworICAgIExheW91dFVuaXQgbGluZUhl
aWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IGZpbmFsOwogICAg
IExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlvbigpIGNvbnN0IGZpbmFsOwogCiAgICAgTGF5b3V0
VW5pdCBtYXJnaW5Ub3AoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKaW5kZXggYTQyYWI3NjM2M2YwLi5j
MDU3N2IzNGRjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0TWFya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1h
cmtlci5jcHAKQEAgLTQyMiwxMSArNDIyLDExIEBAIHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6dXBk
YXRlSW5saW5lTWFyZ2lucygpCiAgICAgbXV0YWJsZVN0eWxlKCkuc2V0TWFyZ2luRW5kKFN0eWxl
OjpNYXJnaW5FZGdlOjpGaXhlZCB7IG1hcmdpbkVuZCB9KTsKIH0KIAotTGF5b3V0VW5pdCBSZW5k
ZXJMaXN0TWFya2VyOjpsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9k
ZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgbGluZVBvc2l0aW9uTW9kZSkgY29uc3QKK0xh
eW91dFVuaXQgUmVuZGVyTGlzdE1hcmtlcjo6bGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGlu
ZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uKSBjb25zdAogewogICAgIGlmICghaXNJbWFnZSgpKQot
ICAgICAgICByZXR1cm4gbV9saXN0SXRlbS0+bGluZUhlaWdodChmaXJzdExpbmUsIGRpcmVjdGlv
biwgUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKTsKLSAgICByZXR1cm4gUmVuZGVyQm94Ojps
aW5lSGVpZ2h0KGZpcnN0TGluZSwgZGlyZWN0aW9uLCBsaW5lUG9zaXRpb25Nb2RlKTsKKyAgICAg
ICAgcmV0dXJuIG1fbGlzdEl0ZW0tPmxpbmVIZWlnaHQoZmlyc3RMaW5lLCBkaXJlY3Rpb24pOwor
ICAgIHJldHVybiBSZW5kZXJCb3g6OmxpbmVIZWlnaHQoZmlyc3RMaW5lLCBkaXJlY3Rpb24pOwog
fQogCiBMYXlvdXRVbml0IFJlbmRlckxpc3RNYXJrZXI6OmJhc2VsaW5lUG9zaXRpb24oKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmgKaW5kZXggNzA2
ZWJiMzk0YzY3Li42OWVlNzliYzA3MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0TWFya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpc3RNYXJrZXIuaApAQCAtODEsNyArODEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFp
bnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBmaW5hbDsKICAgICB2b2lkIGxheW91
dCgpIGZpbmFsOwogICAgIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3Qg
SW50UmVjdCopIGZpbmFsOwotICAgIExheW91dFVuaXQgbGluZUhlaWdodChib29sIGZpcnN0TGlu
ZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUpIGNvbnN0IGZpbmFsOworICAg
IExheW91dFVuaXQgbGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUp
IGNvbnN0IGZpbmFsOwogICAgIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlvbigpIGNvbnN0IGZp
bmFsOwogICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29u
dGVudCkgZmluYWw7CiAgICAgYm9vbCBjYW5CZVNlbGVjdGlvbkxlYWYoKSBjb25zdCBmaW5hbCB7
IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sLmNwcAppbmRleCA5NGRhOWUyZjQ4ZDAuLmQ3MTg4ZDU5OGZkZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCkBAIC0xMDgsNyArMTA4
LDcgQEAgUmVuZGVyQm94OjpMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMgUmVuZGVyVGV4dENv
bnRyb2w6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KEwKIAogICAgIGlmIChSZW5kZXJCb3gqIGlubmVy
VGV4dEJveCA9IGlubmVyVGV4dC0+cmVuZGVyQm94KCkpIHsKICAgICAgICAgTGF5b3V0VW5pdCBu
b25Db250ZW50SGVpZ2h0ID0gaW5uZXJUZXh0Qm94LT5ib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhl
aWdodCgpICsgaW5uZXJUZXh0Qm94LT5tYXJnaW5Mb2dpY2FsSGVpZ2h0KCk7Ci0gICAgICAgIGxv
Z2ljYWxIZWlnaHQgPSBjb21wdXRlQ29udHJvbExvZ2ljYWxIZWlnaHQoaW5uZXJUZXh0Qm94LT5s
aW5lSGVpZ2h0KHRydWUsIEhvcml6b250YWxMaW5lLCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94
ZXMpLCBub25Db250ZW50SGVpZ2h0KTsKKyAgICAgICAgbG9naWNhbEhlaWdodCA9IGNvbXB1dGVD
b250cm9sTG9naWNhbEhlaWdodChpbm5lclRleHRCb3gtPmxpbmVIZWlnaHQodHJ1ZSwgSG9yaXpv
bnRhbExpbmUpLCBub25Db250ZW50SGVpZ2h0KTsKIAogICAgICAgICAvLyBXZSBhcmUgYWJsZSB0
byBoYXZlIGEgaG9yaXpvbnRhbCBzY3JvbGxiYXIgaWYgdGhlIG92ZXJmbG93IHN0eWxlIGlzIHNj
cm9sbCwgb3IgaWYgaXRzIGF1dG8gYW5kIHRoZXJlJ3Mgbm8gd29yZCB3cmFwLgogICAgICAgICBh
dXRvIHNob3VsZEluY2x1ZGVTY3JvbGxiYXJIZWlnaHQgPSBbJl0gewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZVdpZHRoLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9saW5lL0xpbmVXaWR0aC5jcHAKaW5kZXggYmEwOTdiYmUzNjIwLi5lY2VhMWQ3
YTI1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVXaWR0
aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZVdpZHRoLmNwcApA
QCAtNjksNyArNjksNyBAQCBib29sIExpbmVXaWR0aDo6Zml0c09uTGluZUV4Y2x1ZGluZ1RyYWls
aW5nQ29sbGFwc2VkV2hpdGVzcGFjZSgpIGNvbnN0CiB2b2lkIExpbmVXaWR0aDo6dXBkYXRlQXZh
aWxhYmxlV2lkdGgoKQogewogICAgIExheW91dFVuaXQgaGVpZ2h0ID0gbV9ibG9jay5sb2dpY2Fs
SGVpZ2h0KCk7Ci0gICAgYXV0byBsaW5lSGVpZ2h0ID0gc3RkOjptYXgoMF9sdSwgbV9ibG9jay5s
aW5lSGVpZ2h0KHRydWUsIG1fYmxvY2suaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IEhvcml6
b250YWxMaW5lIDogVmVydGljYWxMaW5lLCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpKTsK
KyAgICBhdXRvIGxpbmVIZWlnaHQgPSBzdGQ6Om1heCgwX2x1LCBtX2Jsb2NrLmxpbmVIZWlnaHQo
dHJ1ZSwgbV9ibG9jay5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gSG9yaXpvbnRhbExpbmUg
OiBWZXJ0aWNhbExpbmUpKTsKICAgICBtX2xlZnQgPSBtX2Jsb2NrLmxvZ2ljYWxMZWZ0T2Zmc2V0
Rm9yTGluZShoZWlnaHQsIGxpbmVIZWlnaHQpOwogICAgIG1fcmlnaHQgPSBtX2Jsb2NrLmxvZ2lj
YWxSaWdodE9mZnNldEZvckxpbmUoaGVpZ2h0LCBsaW5lSGVpZ2h0KTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>