<?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>229834</bug_id>
          
          <creation_ts>2021-09-02 15:30:03 -0700</creation_ts>
          <short_desc>Improve performance by using StringView, not &quot;const StringView&amp;&quot;</short_desc>
          <delta_ts>2021-09-09 16:39:52 -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>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbarton</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>msaboff</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>saam</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1789932</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-09-02 15:30:03 -0700</bug_when>
    <thetext>Improve performance by using StringView, not &quot;const StringView&amp;&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789937</commentid>
    <comment_count>1</comment_count>
      <attachid>437204</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-09-02 15:34:00 -0700</bug_when>
    <thetext>Created attachment 437204
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790058</commentid>
    <comment_count>2</comment_count>
      <attachid>437204</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-09-02 21:55:16 -0700</bug_when>
    <thetext>Comment on attachment 437204
Patch

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

&gt; Source/WTF/ChangeLog:11
&gt; +        Since StringView is a small structure that fits into two registers, it&apos;s not
&gt; +        good to pass a pointer to it; better performance to pass it by value. Note
&gt; +        that this is for release builds, not debug builds where StringView has
&gt; +        significant additional overhead when copying.

Was there a measurable performance improvement by doing this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790351</commentid>
    <comment_count>3</comment_count>
      <attachid>437204</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-09-03 13:59:17 -0700</bug_when>
    <thetext>Comment on attachment 437204
Patch

Need a new version of this patch; the iterator part of it is wrong for debug builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790356</commentid>
    <comment_count>4</comment_count>
      <attachid>437204</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-09-03 14:05:53 -0700</bug_when>
    <thetext>Comment on attachment 437204
Patch

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

&gt;&gt; Source/WTF/ChangeLog:11
&gt;&gt; +        significant additional overhead when copying.
&gt; 
&gt; Was there a measurable performance improvement by doing this?

I do not expect improvement to be measurable except in a micro-benchmark.

As with any change, it’s important to double check we don’t measure a slowdown in any of our larger scale benchmarks, and I tried a couple locally and saw no difference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790366</commentid>
    <comment_count>5</comment_count>
      <attachid>437312</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-09-03 14:36:34 -0700</bug_when>
    <thetext>Created attachment 437312
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792117</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-09 15:30:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/82946272&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792151</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-09 16:39:47 -0700</bug_when>
    <thetext>Committed r282242 (241525@main): &lt;https://commits.webkit.org/241525@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 437312.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437204</attachid>
            <date>2021-09-02 15:34:00 -0700</date>
            <delta_ts>2021-09-02 22:47:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229834-20210902153359.patch</filename>
            <type>text/plain</type>
            <size>46217</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxOTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NTgzMDg1ODJjZmRiOTBmY2VhOTdhMjU0ZTk5MzM3MzVjZmVhYzQzLi5hZjE5NjcwZGUxYWVhODQw
ZDM2YzAwOWEwNzg2ZDgzMjUzMTU2YTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMS0wOS0wMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgSW1wcm92ZSBwZXJmb3JtYW5jZSBieSB1c2luZyBTdHJpbmdWaWV3LCBub3QgImNv
bnN0IFN0cmluZ1ZpZXcmIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI5ODM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGlt
ZUZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6c2V0Rm9ybWF0
c0Zyb21QYXR0ZXJuKToKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oOgor
ICAgICAgICBVc2UgU3RyaW5nVmlldywgbm90IGNvbnN0IFN0cmluZ1ZpZXcmLgorCiAyMDIxLTA5
LTAyICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KIAogICAgICAgICBb
SlNDXSBTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3Igc2hvdWxkIGhhbmRsZSBleGNl
cHRpb25zIG1vcmUgcHJlZGljdGFibHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggOTQxNjYxZmQ4YTg3YWYwOTFhMzMwM2ZhYWE2
M2YxMzIwNGIyNDgyNC4uOGFjNDE2OTA2NDkyZjM1NDU5ZDM2ZDk5NTdjNjIxNzQzZTZmYjQwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzMiBAQAorMjAyMS0wOS0wMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgSW1wcm92ZSBwZXJmb3JtYW5jZSBieSB1c2luZyBTdHJpbmdWaWV3
LCBub3QgImNvbnN0IFN0cmluZ1ZpZXcmIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI5ODM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgU2luY2UgU3RyaW5nVmlldyBpcyBhIHNtYWxsIHN0cnVjdHVyZSB0
aGF0IGZpdHMgaW50byB0d28gcmVnaXN0ZXJzLCBpdCdzIG5vdAorICAgICAgICBnb29kIHRvIHBh
c3MgYSBwb2ludGVyIHRvIGl0OyBiZXR0ZXIgcGVyZm9ybWFuY2UgdG8gcGFzcyBpdCBieSB2YWx1
ZS4gTm90ZQorICAgICAgICB0aGF0IHRoaXMgaXMgZm9yIHJlbGVhc2UgYnVpbGRzLCBub3QgZGVi
dWcgYnVpbGRzIHdoZXJlIFN0cmluZ1ZpZXcgaGFzCisgICAgICAgIHNpZ25pZmljYW50IGFkZGl0
aW9uYWwgb3ZlcmhlYWQgd2hlbiBjb3B5aW5nLgorCisgICAgICAgICogd3RmL1ByaW50U3RyZWFt
LmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogd3RmL1ByaW50
U3RyZWFtLmg6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaDoKKyAgICAg
ICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3LmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nVmlldzo6
Y29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZSBjb25zdCk6CisgICAgICAgIChXVEY6OlN0cmluZ1Zp
ZXc6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSBjb25zdCk6CisgICAgICAgIChXVEY6OlN0cmluZ1Zp
ZXc6OnN0YXJ0c1dpdGggY29uc3QpOgorICAgICAgICAoV1RGOjpTdHJpbmdWaWV3OjpzdGFydHNX
aXRoSWdub3JpbmdBU0NJSUNhc2UgY29uc3QpOgorICAgICAgICAoV1RGOjpTdHJpbmdWaWV3Ojpl
bmRzV2l0aCBjb25zdCk6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OmVuZHNXaXRoSWdub3Jp
bmdBU0NJSUNhc2UgY29uc3QpOgorICAgICAgICAoV1RGOjpTdHJpbmdWaWV3OjpHcmFwaGVtZUNs
dXN0ZXJzOjpJdGVyYXRvcjo6SW1wbDo6SW1wbCk6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6
OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJdGVyYXRvcik6CisgICAgICAgICogd3RmL3Rl
eHQvU3RyaW5nVmlldy5oOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOgorICAgICAg
ICBVc2UgU3RyaW5nVmlldywgbm90IGNvbnN0IFN0cmluZ1ZpZXcmLgorCiAyMDIxLTA5LTAyICBN
YXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgbW9yZSBzdXBwb3J0
IGZvciBKSVQgb3BlcmF0aW9uIHZhbGlkYXRpb24gdGVzdGluZy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjOGZj
OTdlZGVkNDM2ODgzZTExZjc0N2Y4MDFhOTRlNmQ0MWJmNDllLi5jY2VkNmE2MmQ1NWNjMzY1N2Y5
ZjY1ZGU5MzE0YWU1NjlkOGFjNGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMjEt
MDktMDIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcHJvdmUg
cGVyZm9ybWFuY2UgYnkgdXNpbmcgU3RyaW5nVmlldywgbm90ICJjb25zdCBTdHJpbmdWaWV3JiIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTgzNAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHRtbC9C
YXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0RhdGVJbnB1dFR5cGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZUlucHV0VHlwZTo6cGFyc2VUb0RhdGVDb21wb25l
bnRzIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0RhdGVJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBo
dG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRp
bWVMb2NhbElucHV0VHlwZTo6cGFyc2VUb0RhdGVDb21wb25lbnRzIGNvbnN0KToKKyAgICAgICAg
KiBodG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL01vbnRoSW5w
dXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vbnRoSW5wdXRUeXBlOjpwYXJzZVRvRGF0
ZUNvbXBvbmVudHMgY29uc3QpOgorICAgICAgICAqIGh0bWwvTW9udGhJbnB1dFR5cGUuaDoKKyAg
ICAgICAgKiBodG1sL1RpbWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGltZUlu
cHV0VHlwZTo6cGFyc2VUb0RhdGVDb21wb25lbnRzIGNvbnN0KToKKyAgICAgICAgKiBodG1sL1Rp
bWVJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL1dlZWtJbnB1dFR5cGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2Vla0lucHV0VHlwZTo6cGFyc2VUb0RhdGVDb21wb25lbnRzIGNvbnN0KToK
KyAgICAgICAgKiBodG1sL1dlZWtJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9I
VE1MUGFyc2VySWRpb21zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlTWV0YUhUVFBFcXVp
dlJlZnJlc2gpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaDoKKyAg
ICAgICAgKiBodG1sL3BhcnNlci9IVE1MU3Jjc2V0UGFyc2VyLmg6CisgICAgICAgICogbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lVGV4dEl0ZW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0Ojptb3ZlVG9OZXh0Tm9uV2hpdGVzcGFjZVBvc2l0aW9uKToKKyAgICAg
ICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OmNhblVzZVNpbXBsaWZpZWRUZXh0TWVhc3VyaW5nKToKKyAgICAgICAg
KiBtYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpwYXJzZU51bWJlckFuZFVuaXQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudDo6cGFyc2VOYW1lZFNwYWNlKToK
KyAgICAgICAgKiBtYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5oOgorICAgICAgICAq
IHBhZ2UvUXVpcmtzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZFN1cHByZXNzQXV0b2Nv
cnJlY3Rpb25BbmRBdXRvY2FwdGlhbGl6YXRpb25JbkhpZGRlbkVkaXRhYmxlQXJlYXNGb3JIb3N0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCk6CisgICAg
ICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6bGVmdEV4cGFuc2lvbk9wcG9ydHVuaXR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpyaWdodEV4cGFuc2lvbk9wcG9ydHVuaXR5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpjb25mb3JtRnJhZ21lbnRJZGVudGlm
aWVyRm9yVVJMKToKKyAgICAgICAgKiByZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpMZWdhY3lMaW5lTGF5b3V0Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9u
UG9zaXRpb25zRm9yU2VnbWVudCk6CisgICAgICAgICogc3ZnL1NWR1BhcnNlclV0aWxpdGllcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZU51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpw
YXJzZU51bWJlck9wdGlvbmFsTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlUG9pbnQp
OgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNl
R2x5cGhOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlS2VybmluZ1VuaWNvZGVTdHJpbmcp
OgorICAgICAgICAqIHN2Zy9TVkdQYXJzZXJVdGlsaXRpZXMuaDoKKyAgICAgICAgVXNlIFN0cmlu
Z1ZpZXcsIG5vdCBjb25zdCBTdHJpbmdWaWV3Ji4KKwogMjAyMS0wOS0wMiAgQWRpdHlhIEtlZXJ0
aGkgIDxha2VlcnRoaUBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gU2ltcGxpZnkgZGF0ZSBw
aWNrZXIgbG9naWMgZm9yIGRhdGV0aW1lLWxvY2FsIGlucHV0cwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9MZXhlci5oCmluZGV4IDlkMzVmN2IyNDNlNzhjY2JjMGMxMzdkMTUxZTI4MTJmMTk4NDBk
MjcuLmUwZTc2YjdiZmQzMGQxNTRhY2ZlNmI5YWQyY2RjMjJkMjdiNGJhMmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0xleGVyLmgKQEAgLTE1MCw3ICsxNTAsNyBAQCBwcml2YXRlOgogICAg
IFN0cmluZyBpbnZhbGlkQ2hhcmFjdGVyTWVzc2FnZSgpIGNvbnN0OwogICAgIEFMV0FZU19JTkxJ
TkUgY29uc3QgVCogY3VycmVudFNvdXJjZVB0cigpIGNvbnN0OwogCi0gICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldENvZGVTdGFydChjb25zdCBTdHJpbmdWaWV3Jik7CisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldENvZGVTdGFydChTdHJpbmdWaWV3KTsKIAogICAgIEFMV0FZU19JTkxJTkUgY29u
c3QgSWRlbnRpZmllciogbWFrZUlkZW50aWZpZXIoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHNp
emVfdCBsZW5ndGgpOwogICAgIEFMV0FZU19JTkxJTkUgY29uc3QgSWRlbnRpZmllciogbWFrZUlk
ZW50aWZpZXIoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5ndGgpOwpAQCAtMzA0
LDE0ICszMDQsMTQgQEAgQUxXQVlTX0lOTElORSBjb25zdCBJZGVudGlmaWVyKiBMZXhlcjxUPjo6
bWFrZUVtcHR5SWRlbnRpZmllcigpCiB9CiAKIHRlbXBsYXRlIDw+Ci1BTFdBWVNfSU5MSU5FIHZv
aWQgTGV4ZXI8TENoYXI+OjpzZXRDb2RlU3RhcnQoY29uc3QgU3RyaW5nVmlldyYgc291cmNlU3Ry
aW5nKQorQUxXQVlTX0lOTElORSB2b2lkIExleGVyPExDaGFyPjo6c2V0Q29kZVN0YXJ0KFN0cmlu
Z1ZpZXcgc291cmNlU3RyaW5nKQogewogICAgIEFTU0VSVChzb3VyY2VTdHJpbmcuaXM4Qml0KCkp
OwogICAgIG1fY29kZVN0YXJ0ID0gc291cmNlU3RyaW5nLmNoYXJhY3RlcnM4KCk7CiB9CiAKIHRl
bXBsYXRlIDw+Ci1BTFdBWVNfSU5MSU5FIHZvaWQgTGV4ZXI8VUNoYXI+OjpzZXRDb2RlU3RhcnQo
Y29uc3QgU3RyaW5nVmlldyYgc291cmNlU3RyaW5nKQorQUxXQVlTX0lOTElORSB2b2lkIExleGVy
PFVDaGFyPjo6c2V0Q29kZVN0YXJ0KFN0cmluZ1ZpZXcgc291cmNlU3RyaW5nKQogewogICAgIEFT
U0VSVCghc291cmNlU3RyaW5nLmlzOEJpdCgpKTsKICAgICBtX2NvZGVTdGFydCA9IHNvdXJjZVN0
cmluZy5jaGFyYWN0ZXJzMTYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCmluZGV4IDdkZTFiZDI4M2VmM2QyOWJkMjhiZmYz
MmUzZWIyOTNjMGRhMzNmMTguLjgzMTcxZDkxNzlkMThjZjYwNmVlYjgxZmNlNDE1NjA4NmVlYTlj
ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGlt
ZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVU
aW1lRm9ybWF0LmNwcApAQCAtMzI3LDcgKzMyNyw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQg
c2tpcExpdGVyYWxUZXh0KGNvbnN0IENvbnRhaW5lciYgY29udGFpbmVyLCB1bnNpZ25lZCBzdGFy
CiAgICAgcmV0dXJuIGxlbmd0aCAtIDE7CiB9CiAKLXZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojpz
ZXRGb3JtYXRzRnJvbVBhdHRlcm4oY29uc3QgU3RyaW5nVmlldyYgcGF0dGVybikKK3ZvaWQgSW50
bERhdGVUaW1lRm9ybWF0OjpzZXRGb3JtYXRzRnJvbVBhdHRlcm4oU3RyaW5nVmlldyBwYXR0ZXJu
KQogewogICAgIC8vIEdldCBhbGwgc3ltYm9scyBmcm9tIHRoZSBwYXR0ZXJuLCBhbmQgc2V0IGZv
cm1hdCBmaWVsZHMgYWNjb3JkaW5nbHkuCiAgICAgLy8gaHR0cDovL3VuaWNvZGUub3JnL3JlcG9y
dHMvdHIzNS90cjM1LWRhdGVzLmh0bWwjRGF0ZV9GaWVsZF9TeW1ib2xfVGFibGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmgKaW5kZXgg
OGM5ODFiMzYyNTA0MjEyMDk3YmEzN2Q5YjczY2I1NGZjZDk5N2VkYi4uNDYwNDNiYmYwMjI5OGRj
NTYxYTgzNjJkYTNmMzRlYzM5ZDEwMTMzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmgKQEAgLTEwNyw3ICsxMDcsNyBAQCBwcml2
YXRlOgogICAgIGVudW0gY2xhc3MgVGltZVpvbmVOYW1lIDogdWludDhfdCB7IE5vbmUsIFNob3J0
LCBMb25nLCBTaG9ydE9mZnNldCwgTG9uZ09mZnNldCwgU2hvcnRHZW5lcmljLCBMb25nR2VuZXJp
YyB9OwogICAgIGVudW0gY2xhc3MgRGF0ZVRpbWVTdHlsZSA6IHVpbnQ4X3QgeyBOb25lLCBGdWxs
LCBMb25nLCBNZWRpdW0sIFNob3J0IH07CiAKLSAgICB2b2lkIHNldEZvcm1hdHNGcm9tUGF0dGVy
bihjb25zdCBTdHJpbmdWaWV3Jik7CisgICAgdm9pZCBzZXRGb3JtYXRzRnJvbVBhdHRlcm4oU3Ry
aW5nVmlldyk7CiAgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBob3VyQ3ljbGVTdHJpbmcoSG91ckN5
Y2xlKTsKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHdlZWtkYXlTdHJpbmcoV2Vla2RheSk7CiAg
ICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBlcmFTdHJpbmcoRXJhKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1ByaW50U3RyZWFtLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1ByaW50U3RyZWFtLmNw
cAppbmRleCA2MWU0ODZiOGQwYmJhMzQ3NzUzY2U0ZTdjYzkwMDMwOWE2N2NhNWI1Li5iYjUzZjI3
MDk4NTA1ZTY2MTkxODZjNDViZDVmODcwN2E1ZmM2MGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9QcmludFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uY3Bw
CkBAIC04OSw3ICs4OSw3IEBAIHN0YXRpYyB2b2lkIHByaW50RXhwZWN0ZWRDU3RyaW5nSGVscGVy
KFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIqIHR5cGUsIEV4cGVjCiAgICAgcHJpbnRJbnRl
cm5hbChvdXQsIGV4cGVjdGVkQ1N0cmluZy52YWx1ZSgpKTsKIH0KIAotdm9pZCBwcmludEludGVy
bmFsKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZykKK3ZvaWQgcHJp
bnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBTdHJpbmdWaWV3IHN0cmluZykKIHsKICAgICBw
cmludEV4cGVjdGVkQ1N0cmluZ0hlbHBlcihvdXQsICJTdHJpbmdWaWV3Iiwgc3RyaW5nLnRyeUdl
dFV0ZjgoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QcmludFN0cmVhbS5oIGIv
U291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uaAppbmRleCA3YjRlNTkyMzUzMzcwZWQ3ZmI2MzJm
MWIxNjY0N2QzMjBhOTA4ZTBmLi5kNGZmZTg3NjcyNGIxNzI3YTliZDM1MDRkMDA1NjNmYWY0NTg1
OGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QcmludFN0cmVhbS5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL1ByaW50U3RyZWFtLmgKQEAgLTk0LDcgKzk0LDcgQEAgcHJvdGVjdGVkOgogfTsK
IAogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGNv
bnN0IGNoYXIqKTsKLVdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mLCBjb25zdCBTdHJpbmdWaWV3Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiwgU3RyaW5nVmlldyk7CiBXVEZfRVhQT1JUX1BSSVZBVEUg
dm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgY29uc3QgQ1N0cmluZyYpOwogV1RGX0VY
UE9SVF9QUklWQVRFIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGNvbnN0IFN0cmlu
ZyYpOwogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYs
IGNvbnN0IFN0cmluZ0ltcGwqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nQ29uY2F0ZW5hdGUuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUu
aAppbmRleCAyZDg1OWI0NTAwMTQ4Njc1YjNmMTdlMWY0OGI3ZWU0MDFjYTJjZjI1Li5mOWZjZGRm
MmE3NjkzNTRjZmZlMmZiOTJlZWRmMjg2ZGMwODkyNTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdDb25jYXRlbmF0ZS5oCkBAIC0zNzMsMTIgKzM3MywxMiBAQCBzdHJ1Y3QgQVNDSUlDYXNl
Q29udmVydGVyIHsKICAgICBTdHJpbmdWaWV3IHN0cmluZzsKIH07CiAKLWlubGluZSBBU0NJSUNh
c2VDb252ZXJ0ZXIgbG93ZXJjYXNlKGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZ1ZpZXcpCitpbmxp
bmUgQVNDSUlDYXNlQ29udmVydGVyIGxvd2VyY2FzZShTdHJpbmdWaWV3IHN0cmluZ1ZpZXcpCiB7
CiAgICAgcmV0dXJuIHsgU3RyaW5nVmlldzo6Q2FzZUNvbnZlcnRUeXBlOjpMb3dlciwgc3RyaW5n
VmlldyB9OwogfQogCi1pbmxpbmUgQVNDSUlDYXNlQ29udmVydGVyIHVwcGVyY2FzZShjb25zdCBT
dHJpbmdWaWV3JiBzdHJpbmdWaWV3KQoraW5saW5lIEFTQ0lJQ2FzZUNvbnZlcnRlciB1cHBlcmNh
c2UoU3RyaW5nVmlldyBzdHJpbmdWaWV3KQogewogICAgIHJldHVybiB7IFN0cmluZ1ZpZXc6OkNh
c2VDb252ZXJ0VHlwZTo6VXBwZXIsIHN0cmluZ1ZpZXcgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z1ZpZXcuY3BwCmluZGV4IGI4NWQzMGM3NmE5YTAzMzA1M2JhNTcwMGJlZTJmMGMxNmI0NmNiYjYu
LjQxNmQyYmE2ZjJiZWNiY2NiNWM0MTNhZWQ0OThhZjY0OTlkZDJiODQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdWaWV3LmNwcApAQCAtMzgsMjIgKzM4LDIyIEBAIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBuYW1lc3BhY2UgV1RG
IHsKIAotYm9vbCBTdHJpbmdWaWV3Ojpjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0
cmluZ1ZpZXcmIG1hdGNoU3RyaW5nKSBjb25zdAorYm9vbCBTdHJpbmdWaWV3Ojpjb250YWluc0ln
bm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgbWF0Y2hTdHJpbmcpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShtYXRjaFN0cmluZykgIT0gbm90Rm91bmQ7CiB9CiAK
LWJvb2wgU3RyaW5nVmlldzo6Y29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdW
aWV3JiBtYXRjaFN0cmluZywgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0Citib29sIFN0cmlu
Z1ZpZXc6OmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBtYXRjaFN0cmluZywg
dW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZpbmRJZ25vcmluZ0FT
Q0lJQ2FzZShtYXRjaFN0cmluZywgc3RhcnRPZmZzZXQpICE9IG5vdEZvdW5kOwogfQogCi1zaXpl
X3QgU3RyaW5nVmlldzo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ1ZpZXcmIG1h
dGNoU3RyaW5nKSBjb25zdAorc2l6ZV90IFN0cmluZ1ZpZXc6OmZpbmRJZ25vcmluZ0FTQ0lJQ2Fz
ZShTdHJpbmdWaWV3IG1hdGNoU3RyaW5nKSBjb25zdAogewogICAgIHJldHVybiA6OldURjo6Zmlu
ZElnbm9yaW5nQVNDSUlDYXNlKCp0aGlzLCBtYXRjaFN0cmluZywgMCk7CiB9CiAKLXNpemVfdCBT
dHJpbmdWaWV3OjpmaW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nVmlldyYgbWF0Y2hT
dHJpbmcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdAorc2l6ZV90IFN0cmluZ1ZpZXc6OmZp
bmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBzdGFy
dE9mZnNldCkgY29uc3QKIHsKICAgICByZXR1cm4gOjpXVEY6OmZpbmRJZ25vcmluZ0FTQ0lJQ2Fz
ZSgqdGhpcywgbWF0Y2hTdHJpbmcsIHN0YXJ0T2Zmc2V0KTsKIH0KQEAgLTYzLDEyICs2MywxMiBA
QCBib29sIFN0cmluZ1ZpZXc6OnN0YXJ0c1dpdGgoVUNoYXIgY2hhcmFjdGVyKSBjb25zdAogICAg
IHJldHVybiBtX2xlbmd0aCAmJiAoKnRoaXMpWzBdID09IGNoYXJhY3RlcjsKIH0KIAotYm9vbCBT
dHJpbmdWaWV3OjpzdGFydHNXaXRoKGNvbnN0IFN0cmluZ1ZpZXcmIHByZWZpeCkgY29uc3QKK2Jv
b2wgU3RyaW5nVmlldzo6c3RhcnRzV2l0aChTdHJpbmdWaWV3IHByZWZpeCkgY29uc3QKIHsKICAg
ICByZXR1cm4gOjpXVEY6OnN0YXJ0c1dpdGgoKnRoaXMsIHByZWZpeCk7CiB9CiAKLWJvb2wgU3Ry
aW5nVmlldzo6c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ1ZpZXcmIHBy
ZWZpeCkgY29uc3QKK2Jvb2wgU3RyaW5nVmlldzo6c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNl
KFN0cmluZ1ZpZXcgcHJlZml4KSBjb25zdAogewogICAgIHJldHVybiA6OldURjo6c3RhcnRzV2l0
aElnbm9yaW5nQVNDSUlDYXNlKCp0aGlzLCBwcmVmaXgpOwogfQpAQCAtNzgsMTIgKzc4LDEyIEBA
IGJvb2wgU3RyaW5nVmlldzo6ZW5kc1dpdGgoVUNoYXIgY2hhcmFjdGVyKSBjb25zdAogICAgIHJl
dHVybiBtX2xlbmd0aCAmJiAoKnRoaXMpW21fbGVuZ3RoIC0gMV0gPT0gY2hhcmFjdGVyOwogfQog
Ci1ib29sIFN0cmluZ1ZpZXc6OmVuZHNXaXRoKGNvbnN0IFN0cmluZ1ZpZXcmIHN1ZmZpeCkgY29u
c3QKK2Jvb2wgU3RyaW5nVmlldzo6ZW5kc1dpdGgoU3RyaW5nVmlldyBzdWZmaXgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIDo6V1RGOjplbmRzV2l0aCgqdGhpcywgc3VmZml4KTsKIH0KIAotYm9vbCBT
dHJpbmdWaWV3OjplbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ1ZpZXcmIHN1
ZmZpeCkgY29uc3QKK2Jvb2wgU3RyaW5nVmlldzo6ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShT
dHJpbmdWaWV3IHN1ZmZpeCkgY29uc3QKIHsKICAgICByZXR1cm4gOjpXVEY6OmVuZHNXaXRoSWdu
b3JpbmdBU0NJSUNhc2UoKnRoaXMsIHN1ZmZpeCk7CiB9CkBAIC0xMzcsNyArMTM3LDcgQEAgYXV0
byBTdHJpbmdWaWV3OjpTcGxpdFJlc3VsdDo6SXRlcmF0b3I6Om9wZXJhdG9yKysoKSAtPiBJdGVy
YXRvciYKIGNsYXNzIFN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJbXBs
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBJbXBsKGNvbnN0
IFN0cmluZ1ZpZXcmIHN0cmluZ1ZpZXcsIHN0ZDo6b3B0aW9uYWw8Tm9uU2hhcmVkQ2hhcmFjdGVy
QnJlYWtJdGVyYXRvcj4mJiBpdGVyYXRvciwgdW5zaWduZWQgaW5kZXgpCisgICAgSW1wbChTdHJp
bmdWaWV3IHN0cmluZ1ZpZXcsIHN0ZDo6b3B0aW9uYWw8Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJ
dGVyYXRvcj4mJiBpdGVyYXRvciwgdW5zaWduZWQgaW5kZXgpCiAgICAgICAgIDogbV9zdHJpbmdW
aWV3KHN0cmluZ1ZpZXcpCiAgICAgICAgICwgbV9pdGVyYXRvcihXVEZNb3ZlKGl0ZXJhdG9yKSkK
ICAgICAgICAgLCBtX2luZGV4KGluZGV4KQpAQCAtMTc3LDEzICsxNzcsMTMgQEAgcHVibGljOgog
ICAgIH0KIAogcHJpdmF0ZToKLSAgICBjb25zdCBTdHJpbmdWaWV3JiBtX3N0cmluZ1ZpZXc7Cisg
ICAgU3RyaW5nVmlldyBtX3N0cmluZ1ZpZXc7CiAgICAgc3RkOjpvcHRpb25hbDxOb25TaGFyZWRD
aGFyYWN0ZXJCcmVha0l0ZXJhdG9yPiBtX2l0ZXJhdG9yOwogICAgIHVuc2lnbmVkIG1faW5kZXg7
CiAgICAgdW5zaWduZWQgbV9pbmRleEVuZDsKIH07CiAKLVN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1
c3RlcnM6Okl0ZXJhdG9yOjpJdGVyYXRvcihjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmdWaWV3LCB1
bnNpZ25lZCBpbmRleCkKK1N0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJ
dGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZ1ZpZXcsIHVuc2lnbmVkIGluZGV4KQogICAgIDogbV9p
bXBsKG1ha2VVbmlxdWU8SW1wbD4oc3RyaW5nVmlldywgc3RyaW5nVmlldy5pc051bGwoKSA/IHN0
ZDo6bnVsbG9wdCA6IHN0ZDo6b3B0aW9uYWw8Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRv
cj4oTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihzdHJpbmdWaWV3KSksIGluZGV4KSkK
IHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oIGIvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKaW5kZXggZWRlZmUxNTlkMmQ3MThlYjZjZTEz
OTRkOTZiMzIwYTQ0NDhiODkwNy4uMzVmYWQxNGJkYmZmMGVkNmNhOGM4MTZlYjllOWE1OWRkMTlj
MWVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysrIGIv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKQEAgLTE0Myw4ICsxNDMsOCBAQCBwdWJs
aWM6CiAKICAgICBzaXplX3QgcmV2ZXJzZUZpbmQoVUNoYXIsIHVuc2lnbmVkIGluZGV4ID0gc3Rk
OjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSBjb25zdDsKIAotICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ1ZpZXcm
KSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJ
Q2FzZShjb25zdCBTdHJpbmdWaWV3JiwgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0OworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1Zp
ZXcpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZElnbm9yaW5nQVND
SUlDYXNlKFN0cmluZ1ZpZXcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdDsKIAogICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSBjb25zdDsK
ICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGNvbnZlcnRUb0FTQ0lJVXBwZXJjYXNlKCkg
Y29uc3Q7CkBAIC0xNTUsMTggKzE1NSwxOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBjb250YWlucyhT
dHJpbmdWaWV3IHN0cmluZykgY29uc3QgeyByZXR1cm4gZmluZChzdHJpbmcsIDApICE9IG5vdEZv
dW5kOyB9CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgY29udGFpbnMoY29uc3QgY2hhciop
IGNvbnN0OwogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgY29udGFpbnNJZ25vcmluZ0FT
Q0lJQ2FzZShjb25zdCBTdHJpbmdWaWV3JikgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdWaWV3JiwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGNvbnRh
aW5zSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldykgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIGJvb2wgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3LCB1bnNpZ25l
ZCBzdGFydE9mZnNldCkgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTxib29sIGlzU3BlY2lhbENoYXJh
Y3RlcihVQ2hhcik+IGJvb2wgaXNBbGxTcGVjaWFsQ2hhcmFjdGVycygpIGNvbnN0OwogCiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgc3RhcnRzV2l0aChVQ2hhcikgY29uc3Q7Ci0gICAgV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTdHJpbmdWaWV3JikgY29uc3Q7
Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNl
KGNvbnN0IFN0cmluZ1ZpZXcmKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBz
dGFydHNXaXRoKFN0cmluZ1ZpZXcpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29s
IHN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3KSBjb25zdDsKIAogICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBib29sIGVuZHNXaXRoKFVDaGFyKSBjb25zdDsKLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBlbmRzV2l0aChjb25zdCBTdHJpbmdWaWV3JikgY29uc3Q7Ci0gICAg
V1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBT
dHJpbmdWaWV3JikgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZW5kc1dpdGgo
U3RyaW5nVmlldykgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZW5kc1dpdGhJ
Z25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3KSBjb25zdDsKIAogICAgIGZsb2F0IHRvRmxvYXQo
Ym9vbCYgaXNWYWxpZCkgY29uc3Q7CiAKQEAgLTQzNCw3ICs0MzQsNyBAQCBpbmxpbmUgYm9vbCBT
dHJpbmdWaWV3Ojppc0FsbEFTQ0lJKCkgY29uc3QKIGNsYXNzIFN0cmluZ1ZpZXc6OlVwY29udmVy
dGVkQ2hhcmFjdGVycyB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0g
ICAgZXhwbGljaXQgVXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKGNvbnN0IFN0cmluZ1ZpZXcmKTsKKyAg
ICBleHBsaWNpdCBVcGNvbnZlcnRlZENoYXJhY3RlcnMoU3RyaW5nVmlldyk7CiAgICAgb3BlcmF0
b3IgY29uc3QgVUNoYXIqKCkgY29uc3QgeyByZXR1cm4gbV9jaGFyYWN0ZXJzOyB9CiAgICAgY29u
c3QgVUNoYXIqIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fY2hhcmFjdGVyczsgfQogcHJpdmF0ZToK
QEAgLTUzOSw3ICs1MzksNyBAQCBpbmxpbmUgdm9pZCBTdHJpbmdWaWV3OjpnZXRDaGFyYWN0ZXJz
V2l0aFVwY29udmVydChVQ2hhciogZGVzdGluYXRpb24pIGNvbnN0CiAgICAgU3RyaW5nSW1wbDo6
Y29weUNoYXJhY3RlcnMoZGVzdGluYXRpb24sIGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCk7CiB9
CiAKLWlubGluZSBTdHJpbmdWaWV3OjpVcGNvbnZlcnRlZENoYXJhY3RlcnM6OlVwY29udmVydGVk
Q2hhcmFjdGVycyhjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmcpCitpbmxpbmUgU3RyaW5nVmlldzo6
VXBjb252ZXJ0ZWRDaGFyYWN0ZXJzOjpVcGNvbnZlcnRlZENoYXJhY3RlcnMoU3RyaW5nVmlldyBz
dHJpbmcpCiB7CiAgICAgaWYgKCFzdHJpbmcuaXM4Qml0KCkpIHsKICAgICAgICAgbV9jaGFyYWN0
ZXJzID0gc3RyaW5nLmNoYXJhY3RlcnMxNigpOwpAQCAtNjkzLDcgKzY5Myw3IEBAIHByaXZhdGU6
CiBjbGFzcyBTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBHcmFwaGVtZUNsdXN0ZXJzKGNvbnN0
IFN0cmluZ1ZpZXcmKTsKKyAgICBleHBsaWNpdCBHcmFwaGVtZUNsdXN0ZXJzKFN0cmluZ1ZpZXcp
OwogCiAgICAgY2xhc3MgSXRlcmF0b3I7CiAgICAgSXRlcmF0b3IgYmVnaW4oKSBjb25zdDsKQEAg
LTcwNiw3ICs3MDYsNyBAQCBwcml2YXRlOgogY2xhc3MgU3RyaW5nVmlldzo6Q29kZVBvaW50cyB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgQ29k
ZVBvaW50cyhjb25zdCBTdHJpbmdWaWV3Jik7CisgICAgZXhwbGljaXQgQ29kZVBvaW50cyhTdHJp
bmdWaWV3KTsKIAogICAgIGNsYXNzIEl0ZXJhdG9yOwogICAgIEl0ZXJhdG9yIGJlZ2luKCkgY29u
c3Q7CkBAIC03MTksNyArNzE5LDcgQEAgcHJpdmF0ZToKIGNsYXNzIFN0cmluZ1ZpZXc6OkNvZGVV
bml0cyB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZXhwbGlj
aXQgQ29kZVVuaXRzKGNvbnN0IFN0cmluZ1ZpZXcmKTsKKyAgICBleHBsaWNpdCBDb2RlVW5pdHMo
U3RyaW5nVmlldyk7CiAKICAgICBjbGFzcyBJdGVyYXRvcjsKICAgICBJdGVyYXRvciBiZWdpbigp
IGNvbnN0OwpAQCAtNzY0LDcgKzc2NCw3IEBAIGNsYXNzIFN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1
c3RlcnM6Okl0ZXJhdG9yIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBJdGVyYXRvcigpID0gZGVsZXRlOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBJdGVyYXRv
cihjb25zdCBTdHJpbmdWaWV3JiwgdW5zaWduZWQgaW5kZXgpOworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBJdGVyYXRvcihTdHJpbmdWaWV3LCB1bnNpZ25lZCBpbmRleCk7CiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIH5JdGVyYXRvcigpOwogCiAgICAgSXRlcmF0b3IoY29uc3QgSXRlcmF0b3ImKSA9
IGRlbGV0ZTsKQEAgLTc4Nyw3ICs3ODcsNyBAQCBwcml2YXRlOgogY2xhc3MgU3RyaW5nVmlldzo6
Q29kZVBvaW50czo6SXRlcmF0b3IgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIEl0ZXJhdG9yKGNvbnN0IFN0cmluZ1ZpZXcmLCB1bnNpZ25lZCBpbmRleCk7Cisg
ICAgSXRlcmF0b3IoU3RyaW5nVmlldywgdW5zaWduZWQgaW5kZXgpOwogCiAgICAgVUNoYXIzMiBv
cGVyYXRvciooKSBjb25zdDsKICAgICBJdGVyYXRvciYgb3BlcmF0b3IrKygpOwpAQCAtODA3LDcg
KzgwNyw3IEBAIHByaXZhdGU6CiBjbGFzcyBTdHJpbmdWaWV3OjpDb2RlVW5pdHM6Okl0ZXJhdG9y
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBJdGVyYXRvcihj
b25zdCBTdHJpbmdWaWV3JiwgdW5zaWduZWQgaW5kZXgpOworICAgIEl0ZXJhdG9yKFN0cmluZ1Zp
ZXcsIHVuc2lnbmVkIGluZGV4KTsKIAogICAgIFVDaGFyIG9wZXJhdG9yKigpIGNvbnN0OwogICAg
IEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7CkBAIC04MTYsNyArODE2LDcgQEAgcHVibGljOgogICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBJdGVyYXRvciYpIGNvbnN0OwogCiBwcml2YXRlOgotICAg
IGNvbnN0IFN0cmluZ1ZpZXcmIG1fc3RyaW5nVmlldzsKKyAgICBTdHJpbmdWaWV3IG1fc3RyaW5n
VmlldzsKICAgICB1bnNpZ25lZCBtX2luZGV4OwogfTsKIApAQCAtODM1LDcgKzgzNSw3IEBAIGlu
bGluZSBhdXRvIFN0cmluZ1ZpZXc6OmNvZGVVbml0cygpIGNvbnN0IC0+IENvZGVVbml0cwogICAg
IHJldHVybiBDb2RlVW5pdHMoKnRoaXMpOwogfQogCi1pbmxpbmUgU3RyaW5nVmlldzo6R3JhcGhl
bWVDbHVzdGVyczo6R3JhcGhlbWVDbHVzdGVycyhjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmdWaWV3
KQoraW5saW5lIFN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6OkdyYXBoZW1lQ2x1c3RlcnMo
U3RyaW5nVmlldyBzdHJpbmdWaWV3KQogICAgIDogbV9zdHJpbmdWaWV3KHN0cmluZ1ZpZXcpCiB7
CiB9CkBAIC04NTAsMTIgKzg1MCwxMiBAQCBpbmxpbmUgYXV0byBTdHJpbmdWaWV3OjpHcmFwaGVt
ZUNsdXN0ZXJzOjplbmQoKSBjb25zdCAtPiBJdGVyYXRvcgogICAgIHJldHVybiBJdGVyYXRvciht
X3N0cmluZ1ZpZXcsIG1fc3RyaW5nVmlldy5sZW5ndGgoKSk7CiB9CiAKLWlubGluZSBTdHJpbmdW
aWV3OjpDb2RlUG9pbnRzOjpDb2RlUG9pbnRzKGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZ1ZpZXcp
CitpbmxpbmUgU3RyaW5nVmlldzo6Q29kZVBvaW50czo6Q29kZVBvaW50cyhTdHJpbmdWaWV3IHN0
cmluZ1ZpZXcpCiAgICAgOiBtX3N0cmluZ1ZpZXcoc3RyaW5nVmlldykKIHsKIH0KIAotaW5saW5l
IFN0cmluZ1ZpZXc6OkNvZGVQb2ludHM6Okl0ZXJhdG9yOjpJdGVyYXRvcihjb25zdCBTdHJpbmdW
aWV3JiBzdHJpbmdWaWV3LCB1bnNpZ25lZCBpbmRleCkKK2lubGluZSBTdHJpbmdWaWV3OjpDb2Rl
UG9pbnRzOjpJdGVyYXRvcjo6SXRlcmF0b3IoU3RyaW5nVmlldyBzdHJpbmdWaWV3LCB1bnNpZ25l
ZCBpbmRleCkKICAgICA6IG1faXM4Qml0KHN0cmluZ1ZpZXcuaXM4Qml0KCkpCiAjaWYgQ0hFQ0tf
U1RSSU5HVklFV19MSUZFVElNRQogICAgICwgbV9zdHJpbmdWaWV3KHN0cmluZ1ZpZXcpCkBAIC05
MjgsMTIgKzkyOCwxMiBAQCBpbmxpbmUgYXV0byBTdHJpbmdWaWV3OjpDb2RlUG9pbnRzOjplbmQo
KSBjb25zdCAtPiBJdGVyYXRvcgogICAgIHJldHVybiBJdGVyYXRvcihtX3N0cmluZ1ZpZXcsIG1f
c3RyaW5nVmlldy5sZW5ndGgoKSk7CiB9CiAKLWlubGluZSBTdHJpbmdWaWV3OjpDb2RlVW5pdHM6
OkNvZGVVbml0cyhjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmdWaWV3KQoraW5saW5lIFN0cmluZ1Zp
ZXc6OkNvZGVVbml0czo6Q29kZVVuaXRzKFN0cmluZ1ZpZXcgc3RyaW5nVmlldykKICAgICA6IG1f
c3RyaW5nVmlldyhzdHJpbmdWaWV3KQogewogfQogCi1pbmxpbmUgU3RyaW5nVmlldzo6Q29kZVVu
aXRzOjpJdGVyYXRvcjo6SXRlcmF0b3IoY29uc3QgU3RyaW5nVmlldyYgc3RyaW5nVmlldywgdW5z
aWduZWQgaW5kZXgpCitpbmxpbmUgU3RyaW5nVmlldzo6Q29kZVVuaXRzOjpJdGVyYXRvcjo6SXRl
cmF0b3IoU3RyaW5nVmlldyBzdHJpbmdWaWV3LCB1bnNpZ25lZCBpbmRleCkKICAgICA6IG1fc3Ry
aW5nVmlldyhzdHJpbmdWaWV3KQogICAgICwgbV9pbmRleChpbmRleCkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dU
RlN0cmluZy5oCmluZGV4IDcxMWNhNjRhMDNhNjE0NDFmYWU0ZTdlZWIzZGIyMTg2MjI5ZmM1ZWYu
LjUxMWI5YzE2NGExYTU4YzExZDRjZmQ1MzIxZTMyZjUyN2I0YzllZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9X
VEZTdHJpbmcuaApAQCAtMjQ2LDcgKzI0Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5n
IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBVQ2hhciomIGRhdGEpIHsgcmV0
dXJuIFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBkYXRhKTsgfQogICAg
IHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIExDaGFy
KiYgZGF0YSkgeyByZXR1cm4gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgs
IGRhdGEpOyB9CiAKLSAgICB1c2luZyBTcGxpdEZ1bmN0b3IgPSBXVEY6OkZ1bmN0aW9uPHZvaWQo
Y29uc3QgU3RyaW5nVmlldyYpPjsKKyAgICB1c2luZyBTcGxpdEZ1bmN0b3IgPSBXVEY6OkZ1bmN0
aW9uPHZvaWQoU3RyaW5nVmlldyk+OwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc3Bs
aXQoVUNoYXIgc2VwYXJhdG9yLCBjb25zdCBTcGxpdEZ1bmN0b3ImKSBjb25zdDsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgVmVjdG9yPFN0cmluZz4gc3BsaXQoVUNoYXIgc2VwYXJhdG9yKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRU
eXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oCmlu
ZGV4IDM2NGNkM2Y5NmIwNDM2NmEyMzhlZjZhODNiYzgxZDA5NzkwOTdhNGIuLmM3MjljOTIyYWIz
OGJhOGQ5NGQ0NzQ0NTczM2FkYTMwYzU5NWUyNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaApAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgog
ICAgICAgICBPcHRpb25TZXQ8RGF0ZVRpbWVGb3JtYXRWYWxpZGF0aW9uUmVzdWx0cz4gbV9yZXN1
bHRzOwogICAgIH07CiAKLSAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+
IHBhcnNlVG9EYXRlQ29tcG9uZW50cyhjb25zdCBTdHJpbmdWaWV3JikgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgc3RkOjpvcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gcGFyc2VUb0RhdGVDb21wb25l
bnRzKFN0cmluZ1ZpZXcpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8RGF0
ZUNvbXBvbmVudHM+IHNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyhkb3VibGUpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0dXBMYXlvdXRQYXJhbWV0ZXJzKERhdGVUaW1lRWRp
dEVsZW1lbnQ6OkxheW91dFBhcmFtZXRlcnMmLCBjb25zdCBEYXRlQ29tcG9uZW50cyYpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZEZvcm1hdChPcHRpb25TZXQ8RGF0ZVRpbWVG
b3JtYXRWYWxpZGF0aW9uUmVzdWx0cz4pIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJ
bnB1dFR5cGUuY3BwCmluZGV4IDE5MWU5OTE3NWQyYjQ4ZTRkOGNkYTA3MjIwMGU4ZWIzOWEyOGI0
MWMuLmVmZDA1YjJlNzJhMmVlZjE0NDI0OTE1NzA2ZDNkYWYwZGIzMWMwYjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9EYXRlSW5wdXRUeXBlLmNwcApAQCAtNzQsNyArNzQsNyBAQCBTdGVwUmFuZ2UgRGF0
ZUlucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxp
bmcpIGNvbnN0CiAgICAgcmV0dXJuIFN0ZXBSYW5nZShzdGVwQmFzZSwgUmFuZ2VMaW1pdGF0aW9u
czo6VmFsaWQsIG1pbmltdW0sIG1heGltdW0sIHN0ZXAsIGRhdGVTdGVwRGVzY3JpcHRpb24pOwog
fQogCi1zdGQ6Om9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBEYXRlSW5wdXRUeXBlOjpwYXJzZVRv
RGF0ZUNvbXBvbmVudHMoY29uc3QgU3RyaW5nVmlldyYgc291cmNlKSBjb25zdAorc3RkOjpvcHRp
b25hbDxEYXRlQ29tcG9uZW50cz4gRGF0ZUlucHV0VHlwZTo6cGFyc2VUb0RhdGVDb21wb25lbnRz
KFN0cmluZ1ZpZXcgc291cmNlKSBjb25zdAogewogICAgIHJldHVybiBEYXRlQ29tcG9uZW50czo6
ZnJvbVBhcnNpbmdEYXRlKHNvdXJjZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0RhdGVJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5o
CmluZGV4IDQxNmYwZTY2MThkZTUwMDFjYWNlNmQ0NGQwNGNlMWI0MzA5Yjk5NjUuLjMzZjIxNTkw
OTYyYTU3MDlkZGFhYzQ5YjhjODIwZTU4ODhkYWQ0N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZUlu
cHV0VHlwZS5oCkBAIC00NSw3ICs0NSw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgQXRvbVN0cmlu
ZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgRGF0ZUNvbXBvbmVudHNU
eXBlIGRhdGVUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RlcFJhbmdlIGNyZWF0ZVN0ZXBS
YW5nZShBbnlTdGVwSGFuZGxpbmcpIGNvbnN0IG92ZXJyaWRlOwotICAgIHN0ZDo6b3B0aW9uYWw8
RGF0ZUNvbXBvbmVudHM+IHBhcnNlVG9EYXRlQ29tcG9uZW50cyhjb25zdCBTdHJpbmdWaWV3Jikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gcGFyc2VU
b0RhdGVDb21wb25lbnRzKFN0cmluZ1ZpZXcpIGNvbnN0IG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0
aW9uYWw8RGF0ZUNvbXBvbmVudHM+IHNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyhkb3Vi
bGUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgYm9vbCBpc1ZhbGlkRm9ybWF0KE9wdGlvblNldDxE
YXRlVGltZUZvcm1hdFZhbGlkYXRpb25SZXN1bHRzPikgY29uc3QgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmNwcAppbmRleCA3MGFiMDI3MjYy
OGIyYmJjMjA3ZDAyZjkyMjFmMzJmYzgwNDBmNzgyLi43ZmY2NDYxNzI1NWRmMzVjYjA5ODU0ODY0
NTIwNDhhOWQ5Yjk1Njk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1l
TG9jYWxJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2Nh
bElucHV0VHlwZS5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgU3RlcFJhbmdlIERhdGVUaW1lTG9jYWxJ
bnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW4K
ICAgICByZXR1cm4gU3RlcFJhbmdlKHN0ZXBCYXNlLCBSYW5nZUxpbWl0YXRpb25zOjpWYWxpZCwg
bWluaW11bSwgbWF4aW11bSwgc3RlcCwgZGF0ZVRpbWVMb2NhbFN0ZXBEZXNjcmlwdGlvbik7CiB9
CiAKLXN0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IERhdGVUaW1lTG9jYWxJbnB1dFR5cGU6
OnBhcnNlVG9EYXRlQ29tcG9uZW50cyhjb25zdCBTdHJpbmdWaWV3JiBzb3VyY2UpIGNvbnN0Citz
dGQ6Om9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBEYXRlVGltZUxvY2FsSW5wdXRUeXBlOjpwYXJz
ZVRvRGF0ZUNvbXBvbmVudHMoU3RyaW5nVmlldyBzb3VyY2UpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IERhdGVDb21wb25lbnRzOjpmcm9tUGFyc2luZ0RhdGVUaW1lTG9jYWwoc291cmNlKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmgKaW5kZXggZmExNTM5
ZDA3ZTU3OGYxMDQ1NDc2MDlmNjNiMGZmMTdjMjg0OTYwZS4uMTY2ZjUwMDA0MTZlYzQ2N2E1ZmU5
OTM0N2I3ZmM5YTIzOTI0MTI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRl
VGltZUxvY2FsSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUxv
Y2FsSW5wdXRUeXBlLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgdmFs
dWVBc0RhdGUoKSBjb25zdCBmaW5hbDsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRWYWx1ZUFz
RGF0ZShkb3VibGUpIGNvbnN0IGZpbmFsOwogICAgIFN0ZXBSYW5nZSBjcmVhdGVTdGVwUmFuZ2Uo
QW55U3RlcEhhbmRsaW5nKSBjb25zdCBmaW5hbDsKLSAgICBzdGQ6Om9wdGlvbmFsPERhdGVDb21w
b25lbnRzPiBwYXJzZVRvRGF0ZUNvbXBvbmVudHMoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0IGZp
bmFsOworICAgIHN0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IHBhcnNlVG9EYXRlQ29tcG9u
ZW50cyhTdHJpbmdWaWV3KSBjb25zdCBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPERhdGVDb21w
b25lbnRzPiBzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoZG91YmxlKSBjb25zdCBmaW5h
bDsKIAogICAgIGJvb2wgaXNWYWxpZEZvcm1hdChPcHRpb25TZXQ8RGF0ZVRpbWVGb3JtYXRWYWxp
ZGF0aW9uUmVzdWx0cz4pIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9Nb250aElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01vbnRoSW5wdXRU
eXBlLmNwcAppbmRleCBkNDJlYzhhOTIwNzdhNDAxYmRlYzg3YmFmNWY4MmFkYWYyOGQ2YjA3Li42
MWQ0ZmQxYTA5ZTU1NzBkNmY3MDI5MmMwNmVlNjA5ZGFkNmVlYmU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL01vbnRoSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01vbnRoSW5wdXRUeXBlLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIERlY2ltYWwgTW9udGhJ
bnB1dFR5cGU6OnBhcnNlVG9OdW1iZXIoY29uc3QgU3RyaW5nJiBzcmMsIGNvbnN0IERlY2ltYWwm
IGRlZmF1bHRWCiAgICAgcmV0dXJuIERlY2ltYWw6OmZyb21Eb3VibGUobW9udGhzKTsKIH0KIAot
c3RkOjpvcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gTW9udGhJbnB1dFR5cGU6OnBhcnNlVG9EYXRl
Q29tcG9uZW50cyhjb25zdCBTdHJpbmdWaWV3JiBzb3VyY2UpIGNvbnN0CitzdGQ6Om9wdGlvbmFs
PERhdGVDb21wb25lbnRzPiBNb250aElucHV0VHlwZTo6cGFyc2VUb0RhdGVDb21wb25lbnRzKFN0
cmluZ1ZpZXcgc291cmNlKSBjb25zdAogewogICAgIHJldHVybiBEYXRlQ29tcG9uZW50czo6ZnJv
bVBhcnNpbmdNb250aChzb3VyY2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9Nb250aElucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5o
CmluZGV4IGM2N2FkNWJiY2U2OWFhZmIzMDIwZDJlMGU3M2FiMzliYWU3MTUwY2QuLmRhNGM1YmM4
YTQzZTFmMDQ2OGY2ODA2ZDk1YjRmMWY0MDc1ODI3OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTW9udGhJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01vbnRo
SW5wdXRUeXBlLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHJpdmF0ZToKICAgICBEZWNpbWFsIHBhcnNl
VG9OdW1iZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgRGVjaW1hbCYpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIERlY2ltYWwgZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
U3RlcFJhbmdlIGNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHN0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IHBhcnNlVG9EYXRlQ29tcG9uZW50
cyhjb25zdCBTdHJpbmdWaWV3JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxE
YXRlQ29tcG9uZW50cz4gcGFyc2VUb0RhdGVDb21wb25lbnRzKFN0cmluZ1ZpZXcpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IHNldE1pbGxpc2Vjb25k
VG9EYXRlQ29tcG9uZW50cyhkb3VibGUpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgaGFuZGxl
RE9NQWN0aXZhdGVFdmVudChFdmVudCYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1l
SW5wdXRUeXBlLmNwcAppbmRleCA5YjkwNTA1OTBmNWVmNThhZjczOGYyODk5NTM5NmVjNzkyMjY4
OWI1Li44YTg4OWExNTJhMzdlYmJhYzBhNDNiMGE0MWZlZDE5MmVlYWE4OTdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvVGltZUlucHV0VHlwZS5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgU3RlcFJhbmdlIFRp
bWVJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRs
aW5nKSBjb25zdAogICAgIHJldHVybiBTdGVwUmFuZ2Uoc3RlcEJhc2UsIFJhbmdlTGltaXRhdGlv
bnM6OlZhbGlkLCBtaW5pbXVtLCBtYXhpbXVtLCBzdGVwLCB0aW1lU3RlcERlc2NyaXB0aW9uKTsK
IH0KIAotc3RkOjpvcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gVGltZUlucHV0VHlwZTo6cGFyc2VU
b0RhdGVDb21wb25lbnRzKGNvbnN0IFN0cmluZ1ZpZXcmIHNvdXJjZSkgY29uc3QKK3N0ZDo6b3B0
aW9uYWw8RGF0ZUNvbXBvbmVudHM+IFRpbWVJbnB1dFR5cGU6OnBhcnNlVG9EYXRlQ29tcG9uZW50
cyhTdHJpbmdWaWV3IHNvdXJjZSkgY29uc3QKIHsKICAgICByZXR1cm4gRGF0ZUNvbXBvbmVudHM6
OmZyb21QYXJzaW5nVGltZShzb3VyY2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9UaW1lSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUu
aAppbmRleCA2MWRjNmZmYTZmN2RjZTk0ZDI3NDNkNjcwOTg2ODZkNDdiN2IxMzc2Li5lNGRhYmVk
ODI2MTJkODczNWM3MTMzNGVjYThiMzFlNjczZjBjNWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1RpbWVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJ
bnB1dFR5cGUuaApAQCAtNDYsNyArNDYsNyBAQCBwcml2YXRlOgogICAgIERhdGVDb21wb25lbnRz
VHlwZSBkYXRlVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIERlY2ltYWwgZGVmYXVsdFZhbHVl
Rm9yU3RlcFVwKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RlcFJhbmdlIGNyZWF0ZVN0ZXBSYW5n
ZShBbnlTdGVwSGFuZGxpbmcpIGNvbnN0IG92ZXJyaWRlOwotICAgIHN0ZDo6b3B0aW9uYWw8RGF0
ZUNvbXBvbmVudHM+IHBhcnNlVG9EYXRlQ29tcG9uZW50cyhjb25zdCBTdHJpbmdWaWV3JikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gcGFyc2VUb0Rh
dGVDb21wb25lbnRzKFN0cmluZ1ZpZXcpIGNvbnN0IG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9u
YWw8RGF0ZUNvbXBvbmVudHM+IHNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyhkb3VibGUp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgaGFuZGxlRE9NQWN0aXZhdGVFdmVudChFdmVudCYp
IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1dlZWtJbnB1dFR5
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9XZWVrSW5wdXRUeXBlLmNwcAppbmRleCBkZDYy
Yzc5OTU4NThmMDY4OTI1NWFiNWQ5MDIwMzEzMTY3NDg0N2VhLi5iZjJkNDJlMzRhOWRjZWNlMWMx
YzI3ZWMzMzdkNThiODUxZjg1NTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1dl
ZWtJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5j
cHAKQEAgLTY4LDcgKzY4LDcgQEAgU3RlcFJhbmdlIFdlZWtJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBS
YW5nZShBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nKSBjb25zdAogICAgIHJldHVybiBT
dGVwUmFuZ2Uoc3RlcEJhc2UsIFJhbmdlTGltaXRhdGlvbnM6OlZhbGlkLCBtaW5pbXVtLCBtYXhp
bXVtLCBzdGVwLCB3ZWVrU3RlcERlc2NyaXB0aW9uKTsKIH0KIAotc3RkOjpvcHRpb25hbDxEYXRl
Q29tcG9uZW50cz4gV2Vla0lucHV0VHlwZTo6cGFyc2VUb0RhdGVDb21wb25lbnRzKGNvbnN0IFN0
cmluZ1ZpZXcmIHNvdXJjZSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IFdl
ZWtJbnB1dFR5cGU6OnBhcnNlVG9EYXRlQ29tcG9uZW50cyhTdHJpbmdWaWV3IHNvdXJjZSkgY29u
c3QKIHsKICAgICByZXR1cm4gRGF0ZUNvbXBvbmVudHM6OmZyb21QYXJzaW5nV2Vlayhzb3VyY2Up
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9XZWVrSW5wdXRUeXBlLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL1dlZWtJbnB1dFR5cGUuaAppbmRleCBkY2M1YmM0M2Q0MDc4N2Yx
NTcxOTY4Nzc2Yjg4ZmFiNTkyY2M1NmZhLi5jN2QzOTE4ODViNTUxMjNiYjliMGJjNzc1NGJkYmVi
NjU3OGQyZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1dlZWtJbnB1dFR5cGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1dlZWtJbnB1dFR5cGUuaApAQCAtNDgsNyArNDgs
NyBAQCBwcml2YXRlOgogICAgIGNvbnN0IEF0b21TdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIERhdGVDb21wb25lbnRzVHlwZSBkYXRlVHlwZSgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIFN0ZXBSYW5nZSBjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nKSBj
b25zdCBvdmVycmlkZTsKLSAgICBzdGQ6Om9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBwYXJzZVRv
RGF0ZUNvbXBvbmVudHMoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0
ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IHBhcnNlVG9EYXRlQ29tcG9uZW50cyhTdHJpbmdW
aWV3KSBjb25zdCBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBz
ZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoZG91YmxlKSBjb25zdCBvdmVycmlkZTsKICAg
ICB2b2lkIGhhbmRsZURPTUFjdGl2YXRlRXZlbnQoRXZlbnQmKSBvdmVycmlkZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAppbmRleCBiNDI3
N2ZhMDA5ZjM1ZmMyNWVhZjUzYmNhYjM1MmFkYjUzN2MyNDQ1Li4yMjE5OGNmYWU3ZjFhOGViNzIy
ZmRjMjNjZWNiZDk3ZjNiNmUwMzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MUGFyc2VySWRpb21zLmNwcApAQCAtNDU2LDcgKzQ1Niw3IEBAIHN0YXRpYyBib29sIHBh
cnNlSFRUUFJlZnJlc2hJbnRlcm5hbChjb25zdCBDaGFyYWN0ZXJUeXBlKiBwb3NpdGlvbiwgY29u
c3QgQ2hhcmFjCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgcGFyc2VNZXRhSFRUUEVxdWl2
UmVmcmVzaChjb25zdCBTdHJpbmdWaWV3JiBpbnB1dCwgZG91YmxlJiBkZWxheSwgU3RyaW5nJiB1
cmwpCitib29sIHBhcnNlTWV0YUhUVFBFcXVpdlJlZnJlc2goU3RyaW5nVmlldyBpbnB1dCwgZG91
YmxlJiBkZWxheSwgU3RyaW5nJiB1cmwpCiB7CiAgICAgaWYgKExJS0VMWShpbnB1dC5pczhCaXQo
KSkpIHsKICAgICAgICAgYXV0byogc3RhcnQgPSBpbnB1dC5jaGFyYWN0ZXJzOCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCmluZGV4IDc4MzEyZDNi
NmM1OGU2NzJjNmFiYmQ3Mjk0ZGY4NmY0Y2RkYTJmMDAuLjg5NTE2YjFiOWJlZTllMTljNjYxODUx
YzIyNDc4MmI4YWY1ZDY0OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxQYXJzZXJJZGlvbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
UGFyc2VySWRpb21zLmgKQEAgLTc3LDcgKzc3LDcgQEAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHBh
cnNlVmFsaWRIVE1MRmxvYXRpbmdQb2ludE51bWJlcihTdHJpbmdWaWV3KTsKIFZlY3Rvcjxkb3Vi
bGU+IHBhcnNlSFRNTExpc3RPZk9mRmxvYXRpbmdQb2ludE51bWJlclZhbHVlcyhTdHJpbmdWaWV3
KTsKIAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc2VtYW50aWNz
Lmh0bWwjYXR0ci1tZXRhLWh0dHAtZXF1aXYtcmVmcmVzaAotYm9vbCBwYXJzZU1ldGFIVFRQRXF1
aXZSZWZyZXNoKGNvbnN0IFN0cmluZ1ZpZXcmLCBkb3VibGUmIGRlbGF5LCBTdHJpbmcmIHVybCk7
Citib29sIHBhcnNlTWV0YUhUVFBFcXVpdlJlZnJlc2goU3RyaW5nVmlldywgZG91YmxlJiBkZWxh
eSwgU3RyaW5nJiB1cmwpOwogCiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRp
cGFnZS9pbmZyYXN0cnVjdHVyZS5odG1sI2NvcnMtc2V0dGluZ3MtYXR0cmlidXRlCiBTdHJpbmcg
cGFyc2VDT1JTU2V0dGluZ3NBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNyY3NldFBhcnNlci5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNyY3NldFBhcnNlci5oCmluZGV4IDAzYzU3ZDM2MGJl
ZDBmYzg1OWQ4Mzc0YzA2N2M0MWRhMTZiNWU5YTEuLjMwMDE4Y2MwYzQyMzExOWRmNDMyMzVhZWRm
YzliZDkyODVhMjE3MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxTcmNzZXRQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU3Jj
c2V0UGFyc2VyLmgKQEAgLTc4LDcgKzc4LDcgQEAgc3RydWN0IEltYWdlQ2FuZGlkYXRlIHsKICAg
ICB7CiAgICAgfQogCi0gICAgSW1hZ2VDYW5kaWRhdGUoY29uc3QgU3RyaW5nVmlldyYgc291cmNl
LCBjb25zdCBEZXNjcmlwdG9yUGFyc2luZ1Jlc3VsdCYgcmVzdWx0LCBPcmlnaW5BdHRyaWJ1dGUg
b3JpZ2luQXR0cmlidXRlKQorICAgIEltYWdlQ2FuZGlkYXRlKFN0cmluZ1ZpZXcgc291cmNlLCBj
b25zdCBEZXNjcmlwdG9yUGFyc2luZ1Jlc3VsdCYgcmVzdWx0LCBPcmlnaW5BdHRyaWJ1dGUgb3Jp
Z2luQXR0cmlidXRlKQogICAgICAgICA6IHN0cmluZyhzb3VyY2UpCiAgICAgICAgICwgZGVuc2l0
eShyZXN1bHQuaGFzRGVuc2l0eSgpID8gcmVzdWx0LmRlbnNpdHkoKSA6IFVuaW5pdGlhbGl6ZWRE
ZXNjcmlwdG9yKQogICAgICAgICAsIHJlc291cmNlV2lkdGgocmVzdWx0Lmhhc1dpZHRoKCkgPyBy
ZXN1bHQucmVzb3VyY2VXaWR0aCgpIDogVW5pbml0aWFsaXplZERlc2NyaXB0b3IpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVUZXh0SXRlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVUZXh0SXRlbS5jcHAKaW5kZXggNzk2Nzc4OGVkYzBkOGI0NGNiM2M2NTJm
MTE4ZTQ4MDJmNGY4NzkzZS4uNGNmZGMwNDk1M2UwMmNkYjIzNzQ5NDJlZmYzNTU0NTFhYjUyMTVi
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lVGV4dEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZVRleHRJdGVtLmNwcApAQCAtNDIsNyArNDIsNyBA
QCBzdHJ1Y3QgV2hpdGVzcGFjZUNvbnRlbnQgewogICAgIHNpemVfdCBsZW5ndGggeyAwIH07CiAg
ICAgYm9vbCBpc1dvcmRTZXBhcmF0b3IgeyB0cnVlIH07CiB9Owotc3RhdGljIHN0ZDo6b3B0aW9u
YWw8V2hpdGVzcGFjZUNvbnRlbnQ+IG1vdmVUb05leHROb25XaGl0ZXNwYWNlUG9zaXRpb24oY29u
c3QgU3RyaW5nVmlldyYgdGV4dENvbnRlbnQsIHNpemVfdCBzdGFydFBvc2l0aW9uLCBib29sIHBy
ZXNlcnZlTmV3bGluZSwgYm9vbCBwcmVzZXJ2ZVRhYiwgYm9vbCB0cmVhdE5vbkJyZWFraW5nU3Bh
Y2VBc1JlZ3VsYXJTcGFjZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFdoaXRlc3BhY2VDb250ZW50
PiBtb3ZlVG9OZXh0Tm9uV2hpdGVzcGFjZVBvc2l0aW9uKFN0cmluZ1ZpZXcgdGV4dENvbnRlbnQs
IHNpemVfdCBzdGFydFBvc2l0aW9uLCBib29sIHByZXNlcnZlTmV3bGluZSwgYm9vbCBwcmVzZXJ2
ZVRhYiwgYm9vbCB0cmVhdE5vbkJyZWFraW5nU3BhY2VBc1JlZ3VsYXJTcGFjZSkKIHsKICAgICBh
dXRvIGhhc1dvcmRTZXBhcmF0b3JDaGFyYWN0ZXIgPSBmYWxzZTsKICAgICBhdXRvIGlzV2hpdGVz
cGFjZUNoYXJhY3RlciA9IFsmXShhdXRvIGNoYXJhY3RlcikgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCmluZGV4IDY5
ZjA5NWVhNjhiNWI3NmJhMmQwNGRlOGU5YzFiZDc5ZDJiOWYzNjguLmM1ZWMzNGZjMmY1OWUxZWNj
ZjY0ODA1ZWQwOTllZjE5MmQ2NTY1OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKQEAgLTk4LDcgKzk4LDcgQEAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8TGF5b3V0U2l6ZT4gYWNjdW11bGF0ZWRPZmZzZXRGb3JJbkZs
b3dQb3NpdGlvbmVkQ29udGludWF0aW8KICAgICByZXR1cm4gYmxvY2sucmVsYXRpdmVQb3NpdGlv
bk9mZnNldCgpOwogfQogCi1zdGF0aWMgYm9vbCBjYW5Vc2VTaW1wbGlmaWVkVGV4dE1lYXN1cmlu
Zyhjb25zdCBTdHJpbmdWaWV3JiBjb250ZW50LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udENhc2Nh
ZGUsIGJvb2wgd2hpdGVzcGFjZUlzQ29sbGFwc2VkKQorc3RhdGljIGJvb2wgY2FuVXNlU2ltcGxp
ZmllZFRleHRNZWFzdXJpbmcoU3RyaW5nVmlldyBjb250ZW50LCBjb25zdCBGb250Q2FzY2FkZSYg
Zm9udENhc2NhZGUsIGJvb2wgd2hpdGVzcGFjZUlzQ29sbGFwc2VkKQogewogICAgIGlmIChmb250
Q2FzY2FkZS5jb2RlUGF0aChUZXh0UnVuKGNvbnRlbnQpKSA9PSBGb250Q2FzY2FkZTo6Q29kZVBh
dGg6OkNvbXBsZXgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmNwcAppbmRleCBmZDVjNGUyMmVk
MWE0NDMxMjllZGEwZTdmY2YyNjc1Yjc2YTAwZTIyLi5mYjE2MTk5ZmE1ZTk3NTA3ZWZjYjZkOTdh
NGQyZjk4NmViOTJmZmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
UHJlc2VudGF0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwCkBAIC0yMDMsNyArMjAzLDcgQEAgY29uc3QgTWF0aE1M
RWxlbWVudDo6Qm9vbGVhblZhbHVlJiBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpjYWNoZWRC
b29sZWFuQXR0cmkKICAgICByZXR1cm4gYXR0cmlidXRlLnZhbHVlKCk7CiB9CiAKLU1hdGhNTEVs
ZW1lbnQ6Okxlbmd0aCBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpwYXJzZU51bWJlckFuZFVu
aXQoY29uc3QgU3RyaW5nVmlldyYgc3RyaW5nKQorTWF0aE1MRWxlbWVudDo6TGVuZ3RoIE1hdGhN
TFByZXNlbnRhdGlvbkVsZW1lbnQ6OnBhcnNlTnVtYmVyQW5kVW5pdChTdHJpbmdWaWV3IHN0cmlu
ZykKIHsKICAgICBMZW5ndGhUeXBlIGxlbmd0aFR5cGUgPSBMZW5ndGhUeXBlOjpVbml0TGVzczsK
ICAgICB1bnNpZ25lZCBzdHJpbmdMZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CkBAIC0yNDUsNyAr
MjQ1LDcgQEAgTWF0aE1MRWxlbWVudDo6TGVuZ3RoIE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6
OnBhcnNlTnVtYmVyQW5kVW5pdChjb25zdCBTdHJpbmcKICAgICByZXR1cm4gbGVuZ3RoOwogfQog
Ci1NYXRoTUxFbGVtZW50OjpMZW5ndGggTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudDo6cGFyc2VO
YW1lZFNwYWNlKGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZykKK01hdGhNTEVsZW1lbnQ6Okxlbmd0
aCBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpwYXJzZU5hbWVkU3BhY2UoU3RyaW5nVmlldyBz
dHJpbmcpCiB7CiAgICAgLy8gTmFtZWQgc3BhY2UgdmFsdWVzIGFyZSBjYXNlLXNlbnNpdGl2ZS4K
ICAgICBpbnQgbmFtZWRTcGFjZVZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0
aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9N
YXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmgKaW5kZXggM2YyYTc3OGJiNTk3MWM0YzgxMmUyOWIy
ODAyZGRjNGE0MWJlYTY0Zi4uYjFiNGFhM2Q0YzI2NzU4YjAxNTIwYTlhODNmMWZmMDQ3NDFiNGFl
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxl
bWVudC5oCkBAIC02MCw4ICs2MCw4IEBAIHByaXZhdGU6CiAgICAgUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJU
cmVlUG9zaXRpb24mKSBvdmVycmlkZTsKICAgICBib29sIGlzUHJlc2VudGF0aW9uTWF0aE1MKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgc3RhdGljIExlbmd0aCBwYXJzZU51
bWJlckFuZFVuaXQoY29uc3QgU3RyaW5nVmlldyYpOwotICAgIHN0YXRpYyBMZW5ndGggcGFyc2VO
YW1lZFNwYWNlKGNvbnN0IFN0cmluZ1ZpZXcmKTsKKyAgICBzdGF0aWMgTGVuZ3RoIHBhcnNlTnVt
YmVyQW5kVW5pdChTdHJpbmdWaWV3KTsKKyAgICBzdGF0aWMgTGVuZ3RoIHBhcnNlTmFtZWRTcGFj
ZShTdHJpbmdWaWV3KTsKICAgICBzdGF0aWMgTWF0aFZhcmlhbnQgcGFyc2VNYXRoVmFyaWFudEF0
dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSk7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1F1aXJrcy5jcHAKaW5kZXggMDQ3ZGZmNTlmYTI4MDRiNzEwZmVhMDMwZjA5OGJlNGJkNGFkMWIx
NC4uM2U3MWMwMWFjMmRiMTBkODJhODlkZmQ0ODYxYmE4NzcxNWEzNmQxZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UXVpcmtzLmNwcApAQCAtMjg1LDcgKzI4NSw3IEBAIGJvb2wgUXVpcmtzOjppc05ldmVyUmljaGx5
RWRpdGFibGVGb3JUb3VjaEJhcigpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0
aWMgYm9vbCBzaG91bGRTdXBwcmVzc0F1dG9jb3JyZWN0aW9uQW5kQXV0b2NhcHRpYWxpemF0aW9u
SW5IaWRkZW5FZGl0YWJsZUFyZWFzRm9ySG9zdChjb25zdCBTdHJpbmdWaWV3JiBob3N0KQorc3Rh
dGljIGJvb2wgc2hvdWxkU3VwcHJlc3NBdXRvY29ycmVjdGlvbkFuZEF1dG9jYXB0aWFsaXphdGlv
bkluSGlkZGVuRWRpdGFibGVBcmVhc0Zvckhvc3QoU3RyaW5nVmlldyBob3N0KQogewogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKGhvc3QsICJkb2NzLmdvb2dsZS5jb20iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCBhMTc5MGQ5MjZkYTQ1NDcyYzgzYTQ4
ZmU4Yzk3MDRlODk5ZWRmZDcwLi5mYjkwZWYxNWZhNWEwNmQ5ZmUxMzBlNzFlY2I0NjU1YmM5MDA1
MmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fz
Y2FkZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2Nh
ZGUuY3BwCkBAIC0xMDYxLDcgKzEwNjEsNyBAQCBzdGQ6OnBhaXI8dW5zaWduZWQsIGJvb2w+IEZv
bnRDYXNjYWRlOjpleHBhbnNpb25PcHBvcnR1bml0eUNvdW50SW50ZXJuYWwoY29uc3QgVQogICAg
IHJldHVybiBzdGQ6Om1ha2VfcGFpcihjb3VudCwgaXNBZnRlckV4cGFuc2lvbik7CiB9CiAKLXN0
ZDo6cGFpcjx1bnNpZ25lZCwgYm9vbD4gRm9udENhc2NhZGU6OmV4cGFuc2lvbk9wcG9ydHVuaXR5
Q291bnQoY29uc3QgU3RyaW5nVmlldyYgc3RyaW5nVmlldywgVGV4dERpcmVjdGlvbiBkaXJlY3Rp
b24sIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9yKQorc3RkOjpwYWlyPHVuc2ln
bmVkLCBib29sPiBGb250Q2FzY2FkZTo6ZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudChTdHJpbmdW
aWV3IHN0cmluZ1ZpZXcsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uLCBFeHBhbnNpb25CZWhhdmlv
ciBleHBhbnNpb25CZWhhdmlvcikKIHsKICAgICAvLyBGb3IgZWFjaCBjaGFyYWN0ZXIsIGl0ZXJh
dGluZyBmcm9tIGxlZnQgdG8gcmlnaHQ6CiAgICAgLy8gICBJZiBpdCBpcyByZWNvZ25pemVkIGFz
IGEgc3BhY2UsIGluc2VydCBhbiBvcHBvcnR1bml0eSBhZnRlciBpdApAQCAtMTA3Miw3ICsxMDcy
LDcgQEAgc3RkOjpwYWlyPHVuc2lnbmVkLCBib29sPiBGb250Q2FzY2FkZTo6ZXhwYW5zaW9uT3Bw
b3J0dW5pdHlDb3VudChjb25zdCBTdHJpbmdWaWUKICAgICByZXR1cm4gZXhwYW5zaW9uT3Bwb3J0
dW5pdHlDb3VudEludGVybmFsKHN0cmluZ1ZpZXcuY2hhcmFjdGVyczE2KCksIHN0cmluZ1ZpZXcu
bGVuZ3RoKCksIGRpcmVjdGlvbiwgZXhwYW5zaW9uQmVoYXZpb3IpOwogfQogCi1ib29sIEZvbnRD
YXNjYWRlOjpsZWZ0RXhwYW5zaW9uT3Bwb3J0dW5pdHkoY29uc3QgU3RyaW5nVmlldyYgc3RyaW5n
VmlldywgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCitib29sIEZvbnRDYXNjYWRlOjpsZWZ0RXhw
YW5zaW9uT3Bwb3J0dW5pdHkoU3RyaW5nVmlldyBzdHJpbmdWaWV3LCBUZXh0RGlyZWN0aW9uIGRp
cmVjdGlvbikKIHsKICAgICBpZiAoIXN0cmluZ1ZpZXcubGVuZ3RoKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTEwOTEsNyArMTA5MSw3IEBAIGJvb2wgRm9udENhc2NhZGU6OmxlZnRFeHBh
bnNpb25PcHBvcnR1bml0eShjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmdWaWV3LCBUZXh0RGlyCiAg
ICAgcmV0dXJuIGNhbkV4cGFuZEFyb3VuZElkZW9ncmFwaHNJbkNvbXBsZXhUZXh0KCkgJiYgaXND
SktJZGVvZ3JhcGhPclN5bWJvbChpbml0aWFsQ2hhcmFjdGVyKTsKIH0KIAotYm9vbCBGb250Q2Fz
Y2FkZTo6cmlnaHRFeHBhbnNpb25PcHBvcnR1bml0eShjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmdW
aWV3LCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikKK2Jvb2wgRm9udENhc2NhZGU6OnJpZ2h0RXhw
YW5zaW9uT3Bwb3J0dW5pdHkoU3RyaW5nVmlldyBzdHJpbmdWaWV3LCBUZXh0RGlyZWN0aW9uIGRp
cmVjdGlvbikKIHsKICAgICBpZiAoIXN0cmluZ1ZpZXcubGVuZ3RoKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYXNjYWRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2Fk
ZS5oCmluZGV4IDZjNTA2NTdiMTkzZGY5NWI4ZTRkMDMxZWEzZDg5ZjVlYjUyOWIwNDYuLjczOTkz
ODA4NzE4YjIwMGUwODJjZGFlNDEzZDM1N2M4MTNjMTYwMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaApAQCAtMTg3LDEyICsxODcsMTIgQEAg
cHVibGljOgogCiAgICAgLy8gUmV0dXJucyAodGhlIG51bWJlciBvZiBvcHBvcnR1bml0aWVzLCB3
aGV0aGVyIHRoZSBsYXN0IGV4cGFuc2lvbiBpcyBhIHRyYWlsaW5nIGV4cGFuc2lvbikKICAgICAv
LyBJZiB0aGVyZSBhcmUgbm8gb3Bwb3J0dW5pdGllcywgdGhlIGJvb2wgd2lsbCBiZSB0cnVlIGlm
ZiB3ZSBhcmUgZm9yYmlkZGluZyBsZWFkaW5nIGV4cGFuc2lvbnMuCi0gICAgc3RhdGljIHN0ZDo6
cGFpcjx1bnNpZ25lZCwgYm9vbD4gZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudChjb25zdCBTdHJp
bmdWaWV3JiwgVGV4dERpcmVjdGlvbiwgRXhwYW5zaW9uQmVoYXZpb3IpOworICAgIHN0YXRpYyBz
dGQ6OnBhaXI8dW5zaWduZWQsIGJvb2w+IGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQoU3RyaW5n
VmlldywgVGV4dERpcmVjdGlvbiwgRXhwYW5zaW9uQmVoYXZpb3IpOwogCiAgICAgLy8gV2hldGhl
ciBvciBub3QgdGhlcmUgaXMgYW4gZXhwYW5zaW9uIG9wcG9ydHVuaXR5IGp1c3QgYmVmb3JlIHRo
ZSBmaXJzdCBjaGFyYWN0ZXIKICAgICAvLyBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCB0YWtlIGEg
aXNBZnRlckV4cGFuc2lvbiBmbGFnOyB0aGlzIGFzc3VtZXMgdGhhdCBpc0FmdGVyRXhwYW5zaW9u
IGlzIGZhbHNlCi0gICAgc3RhdGljIGJvb2wgbGVmdEV4cGFuc2lvbk9wcG9ydHVuaXR5KGNvbnN0
IFN0cmluZ1ZpZXcmLCBUZXh0RGlyZWN0aW9uKTsKLSAgICBzdGF0aWMgYm9vbCByaWdodEV4cGFu
c2lvbk9wcG9ydHVuaXR5KGNvbnN0IFN0cmluZ1ZpZXcmLCBUZXh0RGlyZWN0aW9uKTsKKyAgICBz
dGF0aWMgYm9vbCBsZWZ0RXhwYW5zaW9uT3Bwb3J0dW5pdHkoU3RyaW5nVmlldywgVGV4dERpcmVj
dGlvbik7CisgICAgc3RhdGljIGJvb2wgcmlnaHRFeHBhbnNpb25PcHBvcnR1bml0eShTdHJpbmdW
aWV3LCBUZXh0RGlyZWN0aW9uKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNl
dFNob3VsZFVzZVNtb290aGluZyhib29sKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9v
bCBzaG91bGRVc2VTbW9vdGhpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDFiNzYw
YjEzYzU1OTgwYzIxZDY4Mzg1ODlkMGNiZWM5Yzk0NTQ1MTMuLmQ5MzE5Yjk0Zjc5YzA4N2I5NzRh
ZWRkZjRmMzY4OTRlZjUwMGIxNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtODIxLDcg
KzgyMSw3IEBAIHN0YXRpYyBVUkwgY29uZm9ybUZyYWdtZW50SWRlbnRpZmllckZvclVSTChjb25z
dCBVUkwmIHVybCkKICAgICAvLyBXb3JrIGFyb3VuZCB0aGlzIGJyb2tlbiBpbXBsZW1lbnRhdGlv
biBieSBwcmUtcGFyc2luZyB0aGUgZnJhZ21lbnQgYW5kIGVuc3VyaW5nIHRoYXQgaXQgbWVldHMg
dGhlaXIKICAgICAvLyBjcml0ZXJpYS4gUHJvYmxlbWF0aWMgc3RyaW5ncyBmcm9tIHRoZSBUQzAw
NTEuaHRtbCB0ZXN0IGluY2x1ZGUgInQ9MyYiLCBhbmQgdGhpcyBwcm9ibGVtIGdlbmVyYWxseSBp
cwogICAgIC8vIHdpdGggc3VidHJpbmdzIGJldHdlZW4gdGhlICcmJyBjaGFyYWN0ZXIgbm90IGlu
Y2x1ZGluZyBhbiBlcXVhbCBzaWduLgotICAgIGF1dG8gaGFzSW52YWxpZE51bWJlck9mRXF1YWxD
aGFyYWN0ZXJzID0gW10oY29uc3QgU3RyaW5nVmlldyYgZnJhZ21lbnRQYXJhbWV0ZXIpIHsKKyAg
ICBhdXRvIGhhc0ludmFsaWROdW1iZXJPZkVxdWFsQ2hhcmFjdGVycyA9IFtdKFN0cmluZ1ZpZXcg
ZnJhZ21lbnRQYXJhbWV0ZXIpIHsKICAgICAgICAgYXV0byByZXN1bHRzID0gZnJhZ21lbnRQYXJh
bWV0ZXIuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcygnPScpOwogICAgICAgICBhdXRvIGl0ZXJh
dG9yID0gcmVzdWx0cy5iZWdpbigpOwogICAgICAgICByZXR1cm4gaXRlcmF0b3IgPT0gcmVzdWx0
cy5lbmQoKSB8fCArK2l0ZXJhdG9yID09IHJlc3VsdHMuZW5kKCkgfHwgKytpdGVyYXRvciAhPSBy
ZXN1bHRzLmVuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2Fj
eUxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlv
dXQuY3BwCmluZGV4IDM3MjFjZDI5NTFjOTUzODZkY2UwY2NlMTRmNDZhZGI4Y2M2OTVhOTguLmNi
ZDk4NDI1YjZhMjc0ZDUxMzBiNGE3MDMzNTE2Y2M0MzhhYWYwNmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5jcHAKQEAgLTg5Niw3ICs4OTYsNyBAQCBC
aWRpUnVuKiBMZWdhY3lMaW5lTGF5b3V0Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25z
Rm9yU2VnbWVudChMZWdhY3lSb290SQogICAgIEJpZGlSdW4qIHByZXZpb3VzUnVuID0gbnVsbHB0
cjsKICAgICBmb3IgKDsgcnVuOyBydW4gPSBydW4tPm5leHQoKSkgewogICAgICAgICBhdXRvIGNv
bXB1dGVFeHBhbnNpb25PcHBvcnR1bml0aWVzID0gWyZleHBhbnNpb25PcHBvcnR1bml0aWVzLCAm
ZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCwgdGV4dEFsaWduLCAmaXNBZnRlckV4cGFuc2lvbl0g
KFJlbmRlckJsb2NrRmxvdyYgYmxvY2ssCi0gICAgICAgICAgICBMZWdhY3lJbmxpbmVUZXh0Qm94
JiB0ZXh0Qm94LCBCaWRpUnVuKiBwcmV2aW91c1J1biwgQmlkaVJ1biogbmV4dFJ1biwgY29uc3Qg
U3RyaW5nVmlldyYgc3RyaW5nVmlldywgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCisgICAgICAg
ICAgICBMZWdhY3lJbmxpbmVUZXh0Qm94JiB0ZXh0Qm94LCBCaWRpUnVuKiBwcmV2aW91c1J1biwg
QmlkaVJ1biogbmV4dFJ1biwgU3RyaW5nVmlldyBzdHJpbmdWaWV3LCBUZXh0RGlyZWN0aW9uIGRp
cmVjdGlvbikKICAgICAgICAgewogICAgICAgICAgICAgaWYgKHN0cmluZ1ZpZXcuaXNFbXB0eSgp
KSB7CiAgICAgICAgICAgICAgICAgLy8gRW1wdHkgcnVucyBzaG91bGQgc3RpbGwgcHJvZHVjZSBh
biBlbnRyeSBpbiBleHBhbnNpb25PcHBvcnR1bml0aWVzIGxpc3Qgc28gdGhhdCB0aGUgbnVtYmVy
IG9mIGl0ZW1zIG1hdGNoZXMgdGhlIG51bWJlciBvZiBydW5zLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhcnNlclV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGFyc2VyVXRpbGl0aWVzLmNwcAppbmRleCA3ZjBlNDU5OWE0MDk1ZmEwNDJiYjNkZTUxZmY5
Y2VlN2QyZmY2NzkxLi4wODk0Zjk4ZTA4ODg4YTdiOGM2ZGQ0YzQxMWU2NmYxYzIzZDYyYzQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFyc2VyVXRpbGl0aWVzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFyc2VyVXRpbGl0aWVzLmNwcApAQCAtMTQ5LDcgKzE0
OSw3IEBAIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHBhcnNlTnVtYmVyKFN0cmluZ1BhcnNpbmdCdWZm
ZXI8VUNoYXI+JiBidWZmZXIsIFN1ZmZpeFNraXBwCiAgICAgcmV0dXJuIGdlbmVyaWNQYXJzZU51
bWJlcihidWZmZXIsIHNraXApOwogfQogCi1zdGQ6Om9wdGlvbmFsPGZsb2F0PiBwYXJzZU51bWJl
cihjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmcsIFN1ZmZpeFNraXBwaW5nUG9saWN5IHNraXApCitz
dGQ6Om9wdGlvbmFsPGZsb2F0PiBwYXJzZU51bWJlcihTdHJpbmdWaWV3IHN0cmluZywgU3VmZml4
U2tpcHBpbmdQb2xpY3kgc2tpcCkKIHsKICAgICByZXR1cm4gcmVhZENoYXJhY3RlcnNGb3JQYXJz
aW5nKHN0cmluZywgW3NraXBdKGF1dG8gYnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFsPGZsb2F0PiB7
CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gZ2VuZXJpY1BhcnNlTnVtYmVyKGJ1ZmZlciwgc2tpcCk7
CkBAIC0xOTIsNyArMTkyLDcgQEAgc3RkOjpvcHRpb25hbDxib29sPiBwYXJzZUFyY0ZsYWcoU3Ry
aW5nUGFyc2luZ0J1ZmZlcjxVQ2hhcj4mIGJ1ZmZlcikKICAgICByZXR1cm4gZ2VuZXJpY1BhcnNl
QXJjRmxhZyhidWZmZXIpOwogfQogCi1zdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxmbG9hdCwgZmxv
YXQ+PiBwYXJzZU51bWJlck9wdGlvbmFsTnVtYmVyKGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZykK
K3N0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4+IHBhcnNlTnVtYmVyT3B0aW9u
YWxOdW1iZXIoU3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAgaWYgKHN0cmluZy5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yMTYsNyArMjE2LDcgQEAgc3RkOjpv
cHRpb25hbDxzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0Pj4gcGFyc2VOdW1iZXJPcHRpb25hbE51bWJl
cihjb25zdCBTdHJpbmdWaWUKICAgICB9KTsKIH0KIAotc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50
PiBwYXJzZVBvaW50KGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZykKK3N0ZDo6b3B0aW9uYWw8Rmxv
YXRQb2ludD4gcGFyc2VQb2ludChTdHJpbmdWaWV3IHN0cmluZykKIHsKICAgICBpZiAoc3RyaW5n
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTIzNiw3ICsyMzYs
NyBAQCBzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IHBhcnNlUG9pbnQoY29uc3QgU3RyaW5nVmll
dyYgc3RyaW5nKQogICAgIH0pOwogfQogCi1zdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gcGFyc2VS
ZWN0KGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZykKK3N0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBw
YXJzZVJlY3QoU3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAgcmV0dXJuIHJlYWRDaGFyYWN0ZXJz
Rm9yUGFyc2luZyhzdHJpbmcsIFtdKGF1dG8gYnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFsPEZsb2F0
UmVjdD4gewogICAgICAgICBza2lwT3B0aW9uYWxTVkdTcGFjZXMoYnVmZmVyKTsKQEAgLTI1OCw3
ICsyNTgsNyBAQCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gcGFyc2VSZWN0KGNvbnN0IFN0cmlu
Z1ZpZXcmIHN0cmluZykKICAgICB9KTsKIH0KIAotc3RkOjpvcHRpb25hbDxIYXNoU2V0PFN0cmlu
Zz4+IHBhcnNlR2x5cGhOYW1lKGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZykKK3N0ZDo6b3B0aW9u
YWw8SGFzaFNldDxTdHJpbmc+PiBwYXJzZUdseXBoTmFtZShTdHJpbmdWaWV3IHN0cmluZykKIHsK
ICAgICAvLyBGSVhNRTogUGFyc2luZyBlcnJvciBkZXRlY3Rpb24gaXMgbWlzc2luZy4KIApAQCAt
MzYxLDcgKzM2MSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFVuaWNvZGVSYW5nZT4gcGFyc2VVbmljb2RlCiAgICAgcmV0dXJuIHJhbmdl
OwogfQogCi1zdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxVbmljb2RlUmFuZ2VzLCBIYXNoU2V0PFN0
cmluZz4+PiBwYXJzZUtlcm5pbmdVbmljb2RlU3RyaW5nKGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmlu
ZykKK3N0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPFVuaWNvZGVSYW5nZXMsIEhhc2hTZXQ8U3RyaW5n
Pj4+IHBhcnNlS2VybmluZ1VuaWNvZGVTdHJpbmcoU3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAg
Ly8gRklYTUU6IFBhcnNpbmcgZXJyb3IgZGV0ZWN0aW9uIGlzIG1pc3NpbmcuCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXJzZXJVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXJzZXJVdGlsaXRpZXMuaAppbmRleCBhYmRjMGI5NmY0Yjg3OWIxMTNlNWZj
ZDMyMTRiYjNiNTgwYjc4NTg1Li4wMDdiZmYwM2MyZDU2ZDUwYjMwYjU4MDUzMzVjOTEwZTFkN2Yz
NDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFyc2VyVXRpbGl0aWVzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhcnNlclV0aWxpdGllcy5oCkBAIC0zOSwyMSAr
MzksMjEgQEAgZW51bSBjbGFzcyBTdWZmaXhTa2lwcGluZ1BvbGljeSB7CiAKIHN0ZDo6b3B0aW9u
YWw8ZmxvYXQ+IHBhcnNlTnVtYmVyKFN0cmluZ1BhcnNpbmdCdWZmZXI8TENoYXI+JiwgU3VmZml4
U2tpcHBpbmdQb2xpY3kgPSBTdWZmaXhTa2lwcGluZ1BvbGljeTo6U2tpcCk7CiBzdGQ6Om9wdGlv
bmFsPGZsb2F0PiBwYXJzZU51bWJlcihTdHJpbmdQYXJzaW5nQnVmZmVyPFVDaGFyPiYsIFN1ZmZp
eFNraXBwaW5nUG9saWN5ID0gU3VmZml4U2tpcHBpbmdQb2xpY3k6OlNraXApOwotc3RkOjpvcHRp
b25hbDxmbG9hdD4gcGFyc2VOdW1iZXIoY29uc3QgU3RyaW5nVmlldyYsIFN1ZmZpeFNraXBwaW5n
UG9saWN5ID0gU3VmZml4U2tpcHBpbmdQb2xpY3k6OlNraXApOworc3RkOjpvcHRpb25hbDxmbG9h
dD4gcGFyc2VOdW1iZXIoU3RyaW5nVmlldywgU3VmZml4U2tpcHBpbmdQb2xpY3kgPSBTdWZmaXhT
a2lwcGluZ1BvbGljeTo6U2tpcCk7CiAKLXN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPGZsb2F0LCBm
bG9hdD4+IHBhcnNlTnVtYmVyT3B0aW9uYWxOdW1iZXIoY29uc3QgU3RyaW5nVmlldyYpOworc3Rk
OjpvcHRpb25hbDxzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0Pj4gcGFyc2VOdW1iZXJPcHRpb25hbE51
bWJlcihTdHJpbmdWaWV3KTsKIAogc3RkOjpvcHRpb25hbDxib29sPiBwYXJzZUFyY0ZsYWcoU3Ry
aW5nUGFyc2luZ0J1ZmZlcjxMQ2hhcj4mKTsKIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcGFyc2VBcmNG
bGFnKFN0cmluZ1BhcnNpbmdCdWZmZXI8VUNoYXI+Jik7CiAKLXN0ZDo6b3B0aW9uYWw8RmxvYXRQ
b2ludD4gcGFyc2VQb2ludChjb25zdCBTdHJpbmdWaWV3Jik7Ci1zdGQ6Om9wdGlvbmFsPEZsb2F0
UmVjdD4gcGFyc2VSZWN0KGNvbnN0IFN0cmluZ1ZpZXcmKTsKK3N0ZDo6b3B0aW9uYWw8RmxvYXRQ
b2ludD4gcGFyc2VQb2ludChTdHJpbmdWaWV3KTsKK3N0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBw
YXJzZVJlY3QoU3RyaW5nVmlldyk7CiAKIHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gcGFyc2VG
bG9hdFBvaW50KFN0cmluZ1BhcnNpbmdCdWZmZXI8TENoYXI+Jik7CiBzdGQ6Om9wdGlvbmFsPEZs
b2F0UG9pbnQ+IHBhcnNlRmxvYXRQb2ludChTdHJpbmdQYXJzaW5nQnVmZmVyPFVDaGFyPiYpOwog
Ci1zdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxVbmljb2RlUmFuZ2VzLCBIYXNoU2V0PFN0cmluZz4+
PiBwYXJzZUtlcm5pbmdVbmljb2RlU3RyaW5nKGNvbnN0IFN0cmluZ1ZpZXcmKTsKLXN0ZDo6b3B0
aW9uYWw8SGFzaFNldDxTdHJpbmc+PiBwYXJzZUdseXBoTmFtZShjb25zdCBTdHJpbmdWaWV3Jik7
CitzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxVbmljb2RlUmFuZ2VzLCBIYXNoU2V0PFN0cmluZz4+
PiBwYXJzZUtlcm5pbmdVbmljb2RlU3RyaW5nKFN0cmluZ1ZpZXcpOworc3RkOjpvcHRpb25hbDxI
YXNoU2V0PFN0cmluZz4+IHBhcnNlR2x5cGhOYW1lKFN0cmluZ1ZpZXcpOwogCiAKIC8vIFNWRyBh
bGxvd3Mgc2V2ZXJhbCBkaWZmZXJlbnQgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzOgo=
</data>
<flag name="review"
          id="460339"
          type_id="1"
          status="+"
          setter="andersca"
    />
    <flag name="commit-queue"
          id="460386"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437312</attachid>
            <date>2021-09-03 14:36:34 -0700</date>
            <delta_ts>2021-09-09 16:39:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229834-20210903143633.patch</filename>
            <type>text/plain</type>
            <size>47787</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
NmNiOGZjODg1OGVmZWU5OWU1NjllODYwNDkzZmUxNmNlODU1Mjk3Li5hMGNhNWQwYzVlMjdjM2Y1
YTdiMWUwNjRhYmIyNzIxZjZhYWVlNGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMS0wOS0wMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgSW1wcm92ZSBwZXJmb3JtYW5jZSBieSB1c2luZyBTdHJpbmdWaWV3LCBub3QgImNv
bnN0IFN0cmluZ1ZpZXcmIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI5ODM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgor
CisgICAgICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRp
bWVGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OnNldEZvcm1h
dHNGcm9tUGF0dGVybik6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaDoK
KyAgICAgICAgVXNlIFN0cmluZ1ZpZXcsIG5vdCBjb25zdCBTdHJpbmdWaWV3Ji4KKwogMjAyMS0w
OS0wMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0Nd
IEltcGxlbWVudCBUZW1wb3JhbC5UaW1lWm9uZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA3NzEzYTQ4MmM1NzczOGVmMWY2ZjFl
Mzc2YjIwY2U0MjM0NTBhNjgzLi5mODU0YTEwMDNlMTZmMzQ3Y2ZmZTkyYzk5YTRjMjM2ODE4NjYx
ZTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0No
YW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIxLTA5LTAzICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KKworICAgICAgICBJbXByb3ZlIHBlcmZvcm1hbmNlIGJ5IHVzaW5nIFN0cmlu
Z1ZpZXcsIG5vdCAiY29uc3QgU3RyaW5nVmlldyYiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk4MzQKKworICAgICAgICBSZXZpZXdlZCBieSBBbmRl
cnMgQ2FybHNzb24uCisKKyAgICAgICAgU2luY2UgU3RyaW5nVmlldyBpcyBhIHNtYWxsIHN0cnVj
dHVyZSB0aGF0IGZpdHMgaW50byB0d28gcmVnaXN0ZXJzLCBpdCdzIG5vdAorICAgICAgICBnb29k
IHRvIHBhc3MgYSBwb2ludGVyIHRvIGl0OyBiZXR0ZXIgcGVyZm9ybWFuY2UgdG8gcGFzcyBpdCBi
eSB2YWx1ZS4gTm90ZQorICAgICAgICB0aGF0IHRoaXMgaXMgZm9yIHJlbGVhc2UgYnVpbGRzLCBu
b3QgZGVidWcgYnVpbGRzIHdoZXJlIFN0cmluZ1ZpZXcgaGFzCisgICAgICAgIHNpZ25pZmljYW50
IGFkZGl0aW9uYWwgb3ZlcmhlYWQgd2hlbiBjb3B5aW5nLgorCisgICAgICAgICogd3RmL1ByaW50
U3RyZWFtLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogd3Rm
L1ByaW50U3RyZWFtLmg6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaDoK
KyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3LmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5n
Vmlldzo6Y29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZSBjb25zdCk6CisgICAgICAgIChXVEY6OlN0
cmluZ1ZpZXc6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSBjb25zdCk6CisgICAgICAgIChXVEY6OlN0
cmluZ1ZpZXc6OnN0YXJ0c1dpdGggY29uc3QpOgorICAgICAgICAoV1RGOjpTdHJpbmdWaWV3Ojpz
dGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UgY29uc3QpOgorICAgICAgICAoV1RGOjpTdHJpbmdW
aWV3OjplbmRzV2l0aCBjb25zdCk6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OmVuZHNXaXRo
SWdub3JpbmdBU0NJSUNhc2UgY29uc3QpOgorICAgICAgICAoV1RGOjpTdHJpbmdWaWV3OjpHcmFw
aGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6SW1wbDo6SW1wbCk6CisgICAgICAgIChXVEY6OlN0cmlu
Z1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJdGVyYXRvcik6CisgICAgICAgICog
d3RmL3RleHQvU3RyaW5nVmlldy5oOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOgor
ICAgICAgICBVc2UgU3RyaW5nVmlldywgbm90IGNvbnN0IFN0cmluZ1ZpZXcmLgorCiAyMDIxLTA5
LTAzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10g
SW1wbGVtZW50IFRlbXBvcmFsLlRpbWVab25lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWI4MTQ5ODgyMGY2MDRh
NzIzMzlhZGU0OWU5MzVmYTA3Y2MxM2RjNS4uOWQzYWYwYTk2NmY5OTZkNDcxNjkwMzliMzA0NzI5
ZDYzZDhlMDAwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDIxLTA5LTAzICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBJbXByb3ZlIHBlcmZvcm1hbmNl
IGJ5IHVzaW5nIFN0cmluZ1ZpZXcsIG5vdCAiY29uc3QgU3RyaW5nVmlldyYiCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk4MzQKKworICAgICAgICBS
ZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCisKKyAgICAgICAgKiBodG1sL0Jhc2VEYXRlQW5k
VGltZUlucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvRGF0ZUlucHV0VHlwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRlSW5wdXRUeXBlOjpwYXJzZVRvRGF0ZUNvbXBvbmVudHMgY29uc3Qp
OgorICAgICAgICAqIGh0bWwvRGF0ZUlucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvRGF0ZVRp
bWVMb2NhbElucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRlVGltZUxvY2FsSW5w
dXRUeXBlOjpwYXJzZVRvRGF0ZUNvbXBvbmVudHMgY29uc3QpOgorICAgICAgICAqIGh0bWwvRGF0
ZVRpbWVMb2NhbElucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvTW9udGhJbnB1dFR5cGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TW9udGhJbnB1dFR5cGU6OnBhcnNlVG9EYXRlQ29tcG9uZW50
cyBjb25zdCk6CisgICAgICAgICogaHRtbC9Nb250aElucHV0VHlwZS5oOgorICAgICAgICAqIGh0
bWwvVGltZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaW1lSW5wdXRUeXBlOjpw
YXJzZVRvRGF0ZUNvbXBvbmVudHMgY29uc3QpOgorICAgICAgICAqIGh0bWwvVGltZUlucHV0VHlw
ZS5oOgorICAgICAgICAqIGh0bWwvV2Vla0lucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWVrSW5wdXRUeXBlOjpwYXJzZVRvRGF0ZUNvbXBvbmVudHMgY29uc3QpOgorICAgICAgICAq
IGh0bWwvV2Vla0lucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJ
ZGlvbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VNZXRhSFRUUEVxdWl2UmVmcmVzaCk6
CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oOgorICAgICAgICAqIGh0
bWwvcGFyc2VyL0hUTUxTcmNzZXRQYXJzZXIuaDoKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVUZXh0SXRlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6Om1vdmVUb05leHROb25XaGl0ZXNwYWNlUG9zaXRpb24pOgorICAgICAgICAqIGxheW91
dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6Y2FuVXNlU2ltcGxpZmllZFRleHRNZWFzdXJpbmcpOgorICAgICAgICAqIG1hdGhtbC9N
YXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFBy
ZXNlbnRhdGlvbkVsZW1lbnQ6OnBhcnNlTnVtYmVyQW5kVW5pdCk6CisgICAgICAgIChXZWJDb3Jl
OjpNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpwYXJzZU5hbWVkU3BhY2UpOgorICAgICAgICAq
IG1hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50Lmg6CisgICAgICAgICogcGFnZS9RdWly
a3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkU3VwcHJlc3NBdXRvY29ycmVjdGlvbkFu
ZEF1dG9jYXB0aWFsaXphdGlvbkluSGlkZGVuRWRpdGFibGVBcmVhc0Zvckhvc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRDYXNjYWRlOjpleHBhbnNpb25PcHBvcnR1bml0eUNvdW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRDYXNjYWRlOjpsZWZ0RXhwYW5zaW9uT3Bwb3J0dW5pdHkpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udENhc2NhZGU6OnJpZ2h0RXhwYW5zaW9uT3Bwb3J0dW5pdHkpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbmZvcm1GcmFnbWVudElkZW50aWZpZXJGb3JVUkwp
OgorICAgICAgICAqIHJlbmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeUxpbmVMYXlvdXQ6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNG
b3JTZWdtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHUGFyc2VyVXRpbGl0aWVzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnBhcnNlTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlTnVtYmVy
T3B0aW9uYWxOdW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VQb2ludCk6CisgICAgICAg
IChXZWJDb3JlOjpwYXJzZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VHbHlwaE5hbWUp
OgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VLZXJuaW5nVW5pY29kZVN0cmluZyk6CisgICAgICAg
ICogc3ZnL1NWR1BhcnNlclV0aWxpdGllcy5oOgorICAgICAgICBVc2UgU3RyaW5nVmlldywgbm90
IGNvbnN0IFN0cmluZ1ZpZXcmLgorCiAyMDIxLTA5LTAzICBUaW0gTmd1eWVuICA8bnRpbUBhcHBs
ZS5jb20+CiAKICAgICAgICAgQVg6IGZpbmRNb2RhbE5vZGVzKCkgYW5kIGN1cnJlbnRNb2RhbE5v
ZGUoKSBzaG91bGQgaW5jbHVkZSBtb2RhbCA8ZGlhbG9nPgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9MZXhlci5oCmluZGV4IDlkMzVmN2IyNDNlNzhjY2JjMGMxMzdkMTUxZTI4MTJmMTk4NDBkMjcu
LmUwZTc2YjdiZmQzMGQxNTRhY2ZlNmI5YWQyY2RjMjJkMjdiNGJhMmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0xleGVyLmgKQEAgLTE1MCw3ICsxNTAsNyBAQCBwcml2YXRlOgogICAgIFN0
cmluZyBpbnZhbGlkQ2hhcmFjdGVyTWVzc2FnZSgpIGNvbnN0OwogICAgIEFMV0FZU19JTkxJTkUg
Y29uc3QgVCogY3VycmVudFNvdXJjZVB0cigpIGNvbnN0OwogCi0gICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldENvZGVTdGFydChjb25zdCBTdHJpbmdWaWV3Jik7CisgICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldENvZGVTdGFydChTdHJpbmdWaWV3KTsKIAogICAgIEFMV0FZU19JTkxJTkUgY29uc3Qg
SWRlbnRpZmllciogbWFrZUlkZW50aWZpZXIoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHNpemVf
dCBsZW5ndGgpOwogICAgIEFMV0FZU19JTkxJTkUgY29uc3QgSWRlbnRpZmllciogbWFrZUlkZW50
aWZpZXIoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5ndGgpOwpAQCAtMzA0LDE0
ICszMDQsMTQgQEAgQUxXQVlTX0lOTElORSBjb25zdCBJZGVudGlmaWVyKiBMZXhlcjxUPjo6bWFr
ZUVtcHR5SWRlbnRpZmllcigpCiB9CiAKIHRlbXBsYXRlIDw+Ci1BTFdBWVNfSU5MSU5FIHZvaWQg
TGV4ZXI8TENoYXI+OjpzZXRDb2RlU3RhcnQoY29uc3QgU3RyaW5nVmlldyYgc291cmNlU3RyaW5n
KQorQUxXQVlTX0lOTElORSB2b2lkIExleGVyPExDaGFyPjo6c2V0Q29kZVN0YXJ0KFN0cmluZ1Zp
ZXcgc291cmNlU3RyaW5nKQogewogICAgIEFTU0VSVChzb3VyY2VTdHJpbmcuaXM4Qml0KCkpOwog
ICAgIG1fY29kZVN0YXJ0ID0gc291cmNlU3RyaW5nLmNoYXJhY3RlcnM4KCk7CiB9CiAKIHRlbXBs
YXRlIDw+Ci1BTFdBWVNfSU5MSU5FIHZvaWQgTGV4ZXI8VUNoYXI+OjpzZXRDb2RlU3RhcnQoY29u
c3QgU3RyaW5nVmlldyYgc291cmNlU3RyaW5nKQorQUxXQVlTX0lOTElORSB2b2lkIExleGVyPFVD
aGFyPjo6c2V0Q29kZVN0YXJ0KFN0cmluZ1ZpZXcgc291cmNlU3RyaW5nKQogewogICAgIEFTU0VS
VCghc291cmNlU3RyaW5nLmlzOEJpdCgpKTsKICAgICBtX2NvZGVTdGFydCA9IHNvdXJjZVN0cmlu
Zy5jaGFyYWN0ZXJzMTYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCmluZGV4IDdkZTFiZDI4M2VmM2QyOWJkMjhiZmYzMmUz
ZWIyOTNjMGRhMzNmMTguLjgzMTcxZDkxNzlkMThjZjYwNmVlYjgxZmNlNDE1NjA4NmVlYTljZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZv
cm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1l
Rm9ybWF0LmNwcApAQCAtMzI3LDcgKzMyNyw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgc2tp
cExpdGVyYWxUZXh0KGNvbnN0IENvbnRhaW5lciYgY29udGFpbmVyLCB1bnNpZ25lZCBzdGFyCiAg
ICAgcmV0dXJuIGxlbmd0aCAtIDE7CiB9CiAKLXZvaWQgSW50bERhdGVUaW1lRm9ybWF0OjpzZXRG
b3JtYXRzRnJvbVBhdHRlcm4oY29uc3QgU3RyaW5nVmlldyYgcGF0dGVybikKK3ZvaWQgSW50bERh
dGVUaW1lRm9ybWF0OjpzZXRGb3JtYXRzRnJvbVBhdHRlcm4oU3RyaW5nVmlldyBwYXR0ZXJuKQog
ewogICAgIC8vIEdldCBhbGwgc3ltYm9scyBmcm9tIHRoZSBwYXR0ZXJuLCBhbmQgc2V0IGZvcm1h
dCBmaWVsZHMgYWNjb3JkaW5nbHkuCiAgICAgLy8gaHR0cDovL3VuaWNvZGUub3JnL3JlcG9ydHMv
dHIzNS90cjM1LWRhdGVzLmh0bWwjRGF0ZV9GaWVsZF9TeW1ib2xfVGFibGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmgKaW5kZXggOGM5
ODFiMzYyNTA0MjEyMDk3YmEzN2Q5YjczY2I1NGZjZDk5N2VkYi4uNDYwNDNiYmYwMjI5OGRjNTYx
YTgzNjJkYTNmMzRlYzM5ZDEwMTMzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmgKQEAgLTEwNyw3ICsxMDcsNyBAQCBwcml2YXRl
OgogICAgIGVudW0gY2xhc3MgVGltZVpvbmVOYW1lIDogdWludDhfdCB7IE5vbmUsIFNob3J0LCBM
b25nLCBTaG9ydE9mZnNldCwgTG9uZ09mZnNldCwgU2hvcnRHZW5lcmljLCBMb25nR2VuZXJpYyB9
OwogICAgIGVudW0gY2xhc3MgRGF0ZVRpbWVTdHlsZSA6IHVpbnQ4X3QgeyBOb25lLCBGdWxsLCBM
b25nLCBNZWRpdW0sIFNob3J0IH07CiAKLSAgICB2b2lkIHNldEZvcm1hdHNGcm9tUGF0dGVybihj
b25zdCBTdHJpbmdWaWV3Jik7CisgICAgdm9pZCBzZXRGb3JtYXRzRnJvbVBhdHRlcm4oU3RyaW5n
Vmlldyk7CiAgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBob3VyQ3ljbGVTdHJpbmcoSG91ckN5Y2xl
KTsKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHdlZWtkYXlTdHJpbmcoV2Vla2RheSk7CiAgICAg
c3RhdGljIEFTQ0lJTGl0ZXJhbCBlcmFTdHJpbmcoRXJhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL1ByaW50U3RyZWFtLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1ByaW50U3RyZWFtLmNwcApp
bmRleCA2MWU0ODZiOGQwYmJhMzQ3NzUzY2U0ZTdjYzkwMDMwOWE2N2NhNWI1Li5iYjUzZjI3MDk4
NTA1ZTY2MTkxODZjNDViZDVmODcwN2E1ZmM2MGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9QcmludFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uY3BwCkBA
IC04OSw3ICs4OSw3IEBAIHN0YXRpYyB2b2lkIHByaW50RXhwZWN0ZWRDU3RyaW5nSGVscGVyKFBy
aW50U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIqIHR5cGUsIEV4cGVjCiAgICAgcHJpbnRJbnRlcm5h
bChvdXQsIGV4cGVjdGVkQ1N0cmluZy52YWx1ZSgpKTsKIH0KIAotdm9pZCBwcmludEludGVybmFs
KFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZykKK3ZvaWQgcHJpbnRJ
bnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBTdHJpbmdWaWV3IHN0cmluZykKIHsKICAgICBwcmlu
dEV4cGVjdGVkQ1N0cmluZ0hlbHBlcihvdXQsICJTdHJpbmdWaWV3Iiwgc3RyaW5nLnRyeUdldFV0
ZjgoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QcmludFN0cmVhbS5oIGIvU291
cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uaAppbmRleCA3YjRlNTkyMzUzMzcwZWQ3ZmI2MzJmMWIx
NjY0N2QzMjBhOTA4ZTBmLi5kNGZmZTg3NjcyNGIxNzI3YTliZDM1MDRkMDA1NjNmYWY0NTg1OGY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QcmludFN0cmVhbS5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1ByaW50U3RyZWFtLmgKQEAgLTk0LDcgKzk0LDcgQEAgcHJvdGVjdGVkOgogfTsKIAog
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGNvbnN0
IGNoYXIqKTsKLVdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJl
YW0mLCBjb25zdCBTdHJpbmdWaWV3Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBwcmludElu
dGVybmFsKFByaW50U3RyZWFtJiwgU3RyaW5nVmlldyk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgY29uc3QgQ1N0cmluZyYpOwogV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGNvbnN0IFN0cmluZyYp
OwogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGNv
bnN0IFN0cmluZ0ltcGwqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
Q29uY2F0ZW5hdGUuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaApp
bmRleCA0ZTZjYzM0ZmExM2E3YmRkMTllNzg1ODEzMmQ5MzUwMTE5YWNlNGJkLi5lMmMyNTRhNzY1
NjA2MWUzMzI5MzJiZWNmZWNiNGJjZDdmZDI3NGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdDb25jYXRlbmF0ZS5oCkBAIC0zNzcsMTIgKzM3NywxMiBAQCBzdHJ1Y3QgQVNDSUlDYXNlQ29u
dmVydGVyIHsKICAgICBTdHJpbmdWaWV3IHN0cmluZzsKIH07CiAKLWlubGluZSBBU0NJSUNhc2VD
b252ZXJ0ZXIgbG93ZXJjYXNlKGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZ1ZpZXcpCitpbmxpbmUg
QVNDSUlDYXNlQ29udmVydGVyIGxvd2VyY2FzZShTdHJpbmdWaWV3IHN0cmluZ1ZpZXcpCiB7CiAg
ICAgcmV0dXJuIHsgU3RyaW5nVmlldzo6Q2FzZUNvbnZlcnRUeXBlOjpMb3dlciwgc3RyaW5nVmll
dyB9OwogfQogCi1pbmxpbmUgQVNDSUlDYXNlQ29udmVydGVyIHVwcGVyY2FzZShjb25zdCBTdHJp
bmdWaWV3JiBzdHJpbmdWaWV3KQoraW5saW5lIEFTQ0lJQ2FzZUNvbnZlcnRlciB1cHBlcmNhc2Uo
U3RyaW5nVmlldyBzdHJpbmdWaWV3KQogewogICAgIHJldHVybiB7IFN0cmluZ1ZpZXc6OkNhc2VD
b252ZXJ0VHlwZTo6VXBwZXIsIHN0cmluZ1ZpZXcgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1Zp
ZXcuY3BwCmluZGV4IGI4NWQzMGM3NmE5YTAzMzA1M2JhNTcwMGJlZTJmMGMxNmI0NmNiYjYuLmEy
MTQ4MjA3MzQ3ODc2MDIzM2Q0YWRmOTBkZmQ5NmIzYTBhOWVhMDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdWaWV3LmNwcApAQCAtMzgsMjIgKzM4LDIyIEBAIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBuYW1lc3BhY2UgV1RGIHsK
IAotYm9vbCBTdHJpbmdWaWV3Ojpjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmlu
Z1ZpZXcmIG1hdGNoU3RyaW5nKSBjb25zdAorYm9vbCBTdHJpbmdWaWV3Ojpjb250YWluc0lnbm9y
aW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgbWF0Y2hTdHJpbmcpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShtYXRjaFN0cmluZykgIT0gbm90Rm91bmQ7CiB9CiAKLWJv
b2wgU3RyaW5nVmlldzo6Y29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdWaWV3
JiBtYXRjaFN0cmluZywgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0Citib29sIFN0cmluZ1Zp
ZXc6OmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBtYXRjaFN0cmluZywgdW5z
aWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZpbmRJZ25vcmluZ0FTQ0lJ
Q2FzZShtYXRjaFN0cmluZywgc3RhcnRPZmZzZXQpICE9IG5vdEZvdW5kOwogfQogCi1zaXplX3Qg
U3RyaW5nVmlldzo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ1ZpZXcmIG1hdGNo
U3RyaW5nKSBjb25zdAorc2l6ZV90IFN0cmluZ1ZpZXc6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShT
dHJpbmdWaWV3IG1hdGNoU3RyaW5nKSBjb25zdAogewogICAgIHJldHVybiA6OldURjo6ZmluZEln
bm9yaW5nQVNDSUlDYXNlKCp0aGlzLCBtYXRjaFN0cmluZywgMCk7CiB9CiAKLXNpemVfdCBTdHJp
bmdWaWV3OjpmaW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nVmlldyYgbWF0Y2hTdHJp
bmcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdAorc2l6ZV90IFN0cmluZ1ZpZXc6OmZpbmRJ
Z25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBzdGFydE9m
ZnNldCkgY29uc3QKIHsKICAgICByZXR1cm4gOjpXVEY6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSgq
dGhpcywgbWF0Y2hTdHJpbmcsIHN0YXJ0T2Zmc2V0KTsKIH0KQEAgLTYzLDEyICs2MywxMiBAQCBi
b29sIFN0cmluZ1ZpZXc6OnN0YXJ0c1dpdGgoVUNoYXIgY2hhcmFjdGVyKSBjb25zdAogICAgIHJl
dHVybiBtX2xlbmd0aCAmJiAoKnRoaXMpWzBdID09IGNoYXJhY3RlcjsKIH0KIAotYm9vbCBTdHJp
bmdWaWV3OjpzdGFydHNXaXRoKGNvbnN0IFN0cmluZ1ZpZXcmIHByZWZpeCkgY29uc3QKK2Jvb2wg
U3RyaW5nVmlldzo6c3RhcnRzV2l0aChTdHJpbmdWaWV3IHByZWZpeCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gOjpXVEY6OnN0YXJ0c1dpdGgoKnRoaXMsIHByZWZpeCk7CiB9CiAKLWJvb2wgU3RyaW5n
Vmlldzo6c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ1ZpZXcmIHByZWZp
eCkgY29uc3QKK2Jvb2wgU3RyaW5nVmlldzo6c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKFN0
cmluZ1ZpZXcgcHJlZml4KSBjb25zdAogewogICAgIHJldHVybiA6OldURjo6c3RhcnRzV2l0aEln
bm9yaW5nQVNDSUlDYXNlKCp0aGlzLCBwcmVmaXgpOwogfQpAQCAtNzgsMTIgKzc4LDEyIEBAIGJv
b2wgU3RyaW5nVmlldzo6ZW5kc1dpdGgoVUNoYXIgY2hhcmFjdGVyKSBjb25zdAogICAgIHJldHVy
biBtX2xlbmd0aCAmJiAoKnRoaXMpW21fbGVuZ3RoIC0gMV0gPT0gY2hhcmFjdGVyOwogfQogCi1i
b29sIFN0cmluZ1ZpZXc6OmVuZHNXaXRoKGNvbnN0IFN0cmluZ1ZpZXcmIHN1ZmZpeCkgY29uc3QK
K2Jvb2wgU3RyaW5nVmlldzo6ZW5kc1dpdGgoU3RyaW5nVmlldyBzdWZmaXgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIDo6V1RGOjplbmRzV2l0aCgqdGhpcywgc3VmZml4KTsKIH0KIAotYm9vbCBTdHJp
bmdWaWV3OjplbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ1ZpZXcmIHN1ZmZp
eCkgY29uc3QKK2Jvb2wgU3RyaW5nVmlldzo6ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShTdHJp
bmdWaWV3IHN1ZmZpeCkgY29uc3QKIHsKICAgICByZXR1cm4gOjpXVEY6OmVuZHNXaXRoSWdub3Jp
bmdBU0NJSUNhc2UoKnRoaXMsIHN1ZmZpeCk7CiB9CkBAIC0xMjQsNyArMTI0LDggQEAgdm9pZCBT
dHJpbmdWaWV3OjpTcGxpdFJlc3VsdDo6SXRlcmF0b3I6OmZpbmROZXh0U3Vic3RyaW5nKCkKIAog
YXV0byBTdHJpbmdWaWV3OjpTcGxpdFJlc3VsdDo6SXRlcmF0b3I6Om9wZXJhdG9yKysoKSAtPiBJ
dGVyYXRvciYKIHsKLSAgICBBU1NFUlQobV9wb3NpdGlvbiA8PSBtX3Jlc3VsdC5tX3N0cmluZy5s
ZW5ndGgoKSAmJiAhbV9pc0RvbmUpOworICAgIEFTU0VSVChtX3Bvc2l0aW9uIDw9IG1fcmVzdWx0
Lm1fc3RyaW5nLmxlbmd0aCgpKTsKKyAgICBBU1NFUlQoIW1faXNEb25lKTsKICAgICBtX3Bvc2l0
aW9uICs9IG1fbGVuZ3RoOwogICAgIGlmIChtX3Bvc2l0aW9uIDwgbV9yZXN1bHQubV9zdHJpbmcu
bGVuZ3RoKCkpIHsKICAgICAgICAgKyttX3Bvc2l0aW9uOwpAQCAtMTM3LDcgKzEzOCw3IEBAIGF1
dG8gU3RyaW5nVmlldzo6U3BsaXRSZXN1bHQ6Okl0ZXJhdG9yOjpvcGVyYXRvcisrKCkgLT4gSXRl
cmF0b3ImCiBjbGFzcyBTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6SW1w
bCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSW1wbChjb25z
dCBTdHJpbmdWaWV3JiBzdHJpbmdWaWV3LCBzdGQ6Om9wdGlvbmFsPE5vblNoYXJlZENoYXJhY3Rl
ckJyZWFrSXRlcmF0b3I+JiYgaXRlcmF0b3IsIHVuc2lnbmVkIGluZGV4KQorICAgIEltcGwoU3Ry
aW5nVmlldyBzdHJpbmdWaWV3LCBzdGQ6Om9wdGlvbmFsPE5vblNoYXJlZENoYXJhY3RlckJyZWFr
SXRlcmF0b3I+JiYgaXRlcmF0b3IsIHVuc2lnbmVkIGluZGV4KQogICAgICAgICA6IG1fc3RyaW5n
VmlldyhzdHJpbmdWaWV3KQogICAgICAgICAsIG1faXRlcmF0b3IoV1RGTW92ZShpdGVyYXRvcikp
CiAgICAgICAgICwgbV9pbmRleChpbmRleCkKQEAgLTE2MSw3ICsxNjIsOCBAQCBwdWJsaWM6CiAK
ICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSW1wbCYgb3RoZXIpIGNvbnN0CiAgICAgewotICAg
ICAgICBBU1NFUlQoJm1fc3RyaW5nVmlldyA9PSAmb3RoZXIubV9zdHJpbmdWaWV3KTsKKyAgICAg
ICAgQVNTRVJUKG1fc3RyaW5nVmlldy5tX2NoYXJhY3RlcnMgPT0gb3RoZXIubV9zdHJpbmdWaWV3
Lm1fY2hhcmFjdGVycyk7CisgICAgICAgIEFTU0VSVChtX3N0cmluZ1ZpZXcubV9sZW5ndGggPT0g
b3RoZXIubV9zdHJpbmdWaWV3Lm1fbGVuZ3RoKTsKICAgICAgICAgYXV0byByZXN1bHQgPSBtX2lu
ZGV4ID09IG90aGVyLm1faW5kZXg7CiAgICAgICAgIEFTU0VSVCghcmVzdWx0IHx8IG1faW5kZXhF
bmQgPT0gb3RoZXIubV9pbmRleEVuZCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0xNzcs
MTMgKzE3OSwxMyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIGNvbnN0IFN0cmlu
Z1ZpZXcmIG1fc3RyaW5nVmlldzsKKyAgICBTdHJpbmdWaWV3IG1fc3RyaW5nVmlldzsKICAgICBz
dGQ6Om9wdGlvbmFsPE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I+IG1faXRlcmF0b3I7
CiAgICAgdW5zaWduZWQgbV9pbmRleDsKICAgICB1bnNpZ25lZCBtX2luZGV4RW5kOwogfTsKIAot
U3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVyczo6SXRlcmF0b3I6Okl0ZXJhdG9yKGNvbnN0IFN0
cmluZ1ZpZXcmIHN0cmluZ1ZpZXcsIHVuc2lnbmVkIGluZGV4KQorU3RyaW5nVmlldzo6R3JhcGhl
bWVDbHVzdGVyczo6SXRlcmF0b3I6Okl0ZXJhdG9yKFN0cmluZ1ZpZXcgc3RyaW5nVmlldywgdW5z
aWduZWQgaW5kZXgpCiAgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxJbXBsPihzdHJpbmdWaWV3LCBz
dHJpbmdWaWV3LmlzTnVsbCgpID8gc3RkOjpudWxsb3B0IDogc3RkOjpvcHRpb25hbDxOb25TaGFy
ZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yPihOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9y
KHN0cmluZ1ZpZXcpKSwgaW5kZXgpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdWaWV3LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAppbmRl
eCBlZGVmZTE1OWQyZDcxOGViNmNlMTM5NGQ5NmIzMjBhNDQ0OGI4OTA3Li44YzZjMTI1ZGNjMjg0
MGQyMzEwMjc2OTZjZTIyOTZlNTc5Mjk2MDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ1ZpZXcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaApA
QCAtMTQzLDggKzE0Myw4IEBAIHB1YmxpYzoKIAogICAgIHNpemVfdCByZXZlcnNlRmluZChVQ2hh
ciwgdW5zaWduZWQgaW5kZXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkp
IGNvbnN0OwogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kSWdub3JpbmdBU0NJ
SUNhc2UoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBz
aXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ1ZpZXcmLCB1bnNpZ25lZCBz
dGFydE9mZnNldCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kSWdu
b3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldykgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldywgdW5zaWduZWQgc3RhcnRP
ZmZzZXQpIGNvbnN0OwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjb252ZXJ0VG9B
U0NJSUxvd2VyY2FzZSgpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgY29u
dmVydFRvQVNDSUlVcHBlcmNhc2UoKSBjb25zdDsKQEAgLTE1NSwxOCArMTU1LDE4IEBAIHB1Ymxp
YzoKICAgICBib29sIGNvbnRhaW5zKFN0cmluZ1ZpZXcgc3RyaW5nKSBjb25zdCB7IHJldHVybiBm
aW5kKHN0cmluZywgMCkgIT0gbm90Rm91bmQ7IH0KICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9v
bCBjb250YWlucyhjb25zdCBjaGFyKikgY29uc3Q7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ1ZpZXcmKSBjb25zdDsK
LSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKGNv
bnN0IFN0cmluZ1ZpZXcmLCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29uc3Q7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIGJvb2wgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3KSBj
b25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjb250YWluc0lnbm9yaW5nQVNDSUlD
YXNlKFN0cmluZ1ZpZXcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdDsKIAogICAgIHRlbXBs
YXRlPGJvb2wgaXNTcGVjaWFsQ2hhcmFjdGVyKFVDaGFyKT4gYm9vbCBpc0FsbFNwZWNpYWxDaGFy
YWN0ZXJzKCkgY29uc3Q7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBzdGFydHNXaXRo
KFVDaGFyKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBzdGFydHNXaXRoKGNv
bnN0IFN0cmluZ1ZpZXcmKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBzdGFy
dHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0OworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBib29sIHN0YXJ0c1dpdGgoU3RyaW5nVmlldykgY29uc3Q7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKFN0cmlu
Z1ZpZXcpIGNvbnN0OwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZW5kc1dpdGgoVUNo
YXIpIGNvbnN0OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVuZHNXaXRoKGNvbnN0IFN0
cmluZ1ZpZXcmKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlbmRzV2l0aEln
bm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ1ZpZXcmKSBjb25zdDsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgYm9vbCBlbmRzV2l0aChTdHJpbmdWaWV3KSBjb25zdDsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgYm9vbCBlbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcpIGNvbnN0
OwogCiAgICAgZmxvYXQgdG9GbG9hdChib29sJiBpc1ZhbGlkKSBjb25zdDsKIApAQCAtNDM0LDcg
KzQzNCw3IEBAIGlubGluZSBib29sIFN0cmluZ1ZpZXc6OmlzQWxsQVNDSUkoKSBjb25zdAogY2xh
c3MgU3RyaW5nVmlldzo6VXBjb252ZXJ0ZWRDaGFyYWN0ZXJzIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBVcGNvbnZlcnRlZENoYXJhY3RlcnMo
Y29uc3QgU3RyaW5nVmlldyYpOworICAgIGV4cGxpY2l0IFVwY29udmVydGVkQ2hhcmFjdGVycyhT
dHJpbmdWaWV3KTsKICAgICBvcGVyYXRvciBjb25zdCBVQ2hhciooKSBjb25zdCB7IHJldHVybiBt
X2NoYXJhY3RlcnM7IH0KICAgICBjb25zdCBVQ2hhciogZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9j
aGFyYWN0ZXJzOyB9CiBwcml2YXRlOgpAQCAtNTM5LDcgKzUzOSw3IEBAIGlubGluZSB2b2lkIFN0
cmluZ1ZpZXc6OmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KFVDaGFyKiBkZXN0aW5hdGlvbikg
Y29uc3QKICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhkZXN0aW5hdGlvbiwgY2hhcmFj
dGVyczE2KCksIG1fbGVuZ3RoKTsKIH0KIAotaW5saW5lIFN0cmluZ1ZpZXc6OlVwY29udmVydGVk
Q2hhcmFjdGVyczo6VXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmlu
ZykKK2lubGluZSBTdHJpbmdWaWV3OjpVcGNvbnZlcnRlZENoYXJhY3RlcnM6OlVwY29udmVydGVk
Q2hhcmFjdGVycyhTdHJpbmdWaWV3IHN0cmluZykKIHsKICAgICBpZiAoIXN0cmluZy5pczhCaXQo
KSkgewogICAgICAgICBtX2NoYXJhY3RlcnMgPSBzdHJpbmcuY2hhcmFjdGVyczE2KCk7CkBAIC02
OTMsNyArNjkzLDcgQEAgcHJpdmF0ZToKIGNsYXNzIFN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3Rl
cnMgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIGV4cGxpY2l0
IEdyYXBoZW1lQ2x1c3RlcnMoY29uc3QgU3RyaW5nVmlldyYpOworICAgIGV4cGxpY2l0IEdyYXBo
ZW1lQ2x1c3RlcnMoU3RyaW5nVmlldyk7CiAKICAgICBjbGFzcyBJdGVyYXRvcjsKICAgICBJdGVy
YXRvciBiZWdpbigpIGNvbnN0OwpAQCAtNzA2LDcgKzcwNiw3IEBAIHByaXZhdGU6CiBjbGFzcyBT
dHJpbmdWaWV3OjpDb2RlUG9pbnRzIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKLSAgICBleHBsaWNpdCBDb2RlUG9pbnRzKGNvbnN0IFN0cmluZ1ZpZXcmKTsKKyAgICBl
eHBsaWNpdCBDb2RlUG9pbnRzKFN0cmluZ1ZpZXcpOwogCiAgICAgY2xhc3MgSXRlcmF0b3I7CiAg
ICAgSXRlcmF0b3IgYmVnaW4oKSBjb25zdDsKQEAgLTcxOSw3ICs3MTksNyBAQCBwcml2YXRlOgog
Y2xhc3MgU3RyaW5nVmlldzo6Q29kZVVuaXRzIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBDb2RlVW5pdHMoY29uc3QgU3RyaW5nVmlldyYpOwor
ICAgIGV4cGxpY2l0IENvZGVVbml0cyhTdHJpbmdWaWV3KTsKIAogICAgIGNsYXNzIEl0ZXJhdG9y
OwogICAgIEl0ZXJhdG9yIGJlZ2luKCkgY29uc3Q7CkBAIC03NjQsNyArNzY0LDcgQEAgY2xhc3Mg
U3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVyczo6SXRlcmF0b3IgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEl0ZXJhdG9yKCkgPSBkZWxldGU7Ci0gICAgV1RG
X0VYUE9SVF9QUklWQVRFIEl0ZXJhdG9yKGNvbnN0IFN0cmluZ1ZpZXcmLCB1bnNpZ25lZCBpbmRl
eCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIEl0ZXJhdG9yKFN0cmluZ1ZpZXcsIHVuc2lnbmVk
IGluZGV4KTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgfkl0ZXJhdG9yKCk7CiAKICAgICBJdGVy
YXRvcihjb25zdCBJdGVyYXRvciYpID0gZGVsZXRlOwpAQCAtNzg3LDcgKzc4Nyw3IEBAIHByaXZh
dGU6CiBjbGFzcyBTdHJpbmdWaWV3OjpDb2RlUG9pbnRzOjpJdGVyYXRvciB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSXRlcmF0b3IoY29uc3QgU3RyaW5nVmll
dyYsIHVuc2lnbmVkIGluZGV4KTsKKyAgICBJdGVyYXRvcihTdHJpbmdWaWV3LCB1bnNpZ25lZCBp
bmRleCk7CiAKICAgICBVQ2hhcjMyIG9wZXJhdG9yKigpIGNvbnN0OwogICAgIEl0ZXJhdG9yJiBv
cGVyYXRvcisrKCk7CkBAIC04MDcsNyArODA3LDcgQEAgcHJpdmF0ZToKIGNsYXNzIFN0cmluZ1Zp
ZXc6OkNvZGVVbml0czo6SXRlcmF0b3IgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIEl0ZXJhdG9yKGNvbnN0IFN0cmluZ1ZpZXcmLCB1bnNpZ25lZCBpbmRleCk7
CisgICAgSXRlcmF0b3IoU3RyaW5nVmlldywgdW5zaWduZWQgaW5kZXgpOwogCiAgICAgVUNoYXIg
b3BlcmF0b3IqKCkgY29uc3Q7CiAgICAgSXRlcmF0b3ImIG9wZXJhdG9yKysoKTsKQEAgLTgxNiw3
ICs4MTYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEl0ZXJhdG9yJikg
Y29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgU3RyaW5nVmlldyYgbV9zdHJpbmdWaWV3Owor
ICAgIFN0cmluZ1ZpZXcgbV9zdHJpbmdWaWV3OwogICAgIHVuc2lnbmVkIG1faW5kZXg7CiB9Owog
CkBAIC04MzUsNyArODM1LDcgQEAgaW5saW5lIGF1dG8gU3RyaW5nVmlldzo6Y29kZVVuaXRzKCkg
Y29uc3QgLT4gQ29kZVVuaXRzCiAgICAgcmV0dXJuIENvZGVVbml0cygqdGhpcyk7CiB9CiAKLWlu
bGluZSBTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpHcmFwaGVtZUNsdXN0ZXJzKGNvbnN0
IFN0cmluZ1ZpZXcmIHN0cmluZ1ZpZXcpCitpbmxpbmUgU3RyaW5nVmlldzo6R3JhcGhlbWVDbHVz
dGVyczo6R3JhcGhlbWVDbHVzdGVycyhTdHJpbmdWaWV3IHN0cmluZ1ZpZXcpCiAgICAgOiBtX3N0
cmluZ1ZpZXcoc3RyaW5nVmlldykKIHsKIH0KQEAgLTg1MCwxMiArODUwLDEyIEBAIGlubGluZSBh
dXRvIFN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6OmVuZCgpIGNvbnN0IC0+IEl0ZXJhdG9y
CiAgICAgcmV0dXJuIEl0ZXJhdG9yKG1fc3RyaW5nVmlldywgbV9zdHJpbmdWaWV3Lmxlbmd0aCgp
KTsKIH0KIAotaW5saW5lIFN0cmluZ1ZpZXc6OkNvZGVQb2ludHM6OkNvZGVQb2ludHMoY29uc3Qg
U3RyaW5nVmlldyYgc3RyaW5nVmlldykKK2lubGluZSBTdHJpbmdWaWV3OjpDb2RlUG9pbnRzOjpD
b2RlUG9pbnRzKFN0cmluZ1ZpZXcgc3RyaW5nVmlldykKICAgICA6IG1fc3RyaW5nVmlldyhzdHJp
bmdWaWV3KQogewogfQogCi1pbmxpbmUgU3RyaW5nVmlldzo6Q29kZVBvaW50czo6SXRlcmF0b3I6
Okl0ZXJhdG9yKGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZ1ZpZXcsIHVuc2lnbmVkIGluZGV4KQor
aW5saW5lIFN0cmluZ1ZpZXc6OkNvZGVQb2ludHM6Okl0ZXJhdG9yOjpJdGVyYXRvcihTdHJpbmdW
aWV3IHN0cmluZ1ZpZXcsIHVuc2lnbmVkIGluZGV4KQogICAgIDogbV9pczhCaXQoc3RyaW5nVmll
dy5pczhCaXQoKSkKICNpZiBDSEVDS19TVFJJTkdWSUVXX0xJRkVUSU1FCiAgICAgLCBtX3N0cmlu
Z1ZpZXcoc3RyaW5nVmlldykKQEAgLTkyOCwxMiArOTI4LDEyIEBAIGlubGluZSBhdXRvIFN0cmlu
Z1ZpZXc6OkNvZGVQb2ludHM6OmVuZCgpIGNvbnN0IC0+IEl0ZXJhdG9yCiAgICAgcmV0dXJuIEl0
ZXJhdG9yKG1fc3RyaW5nVmlldywgbV9zdHJpbmdWaWV3Lmxlbmd0aCgpKTsKIH0KIAotaW5saW5l
IFN0cmluZ1ZpZXc6OkNvZGVVbml0czo6Q29kZVVuaXRzKGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmlu
Z1ZpZXcpCitpbmxpbmUgU3RyaW5nVmlldzo6Q29kZVVuaXRzOjpDb2RlVW5pdHMoU3RyaW5nVmll
dyBzdHJpbmdWaWV3KQogICAgIDogbV9zdHJpbmdWaWV3KHN0cmluZ1ZpZXcpCiB7CiB9CiAKLWlu
bGluZSBTdHJpbmdWaWV3OjpDb2RlVW5pdHM6Okl0ZXJhdG9yOjpJdGVyYXRvcihjb25zdCBTdHJp
bmdWaWV3JiBzdHJpbmdWaWV3LCB1bnNpZ25lZCBpbmRleCkKK2lubGluZSBTdHJpbmdWaWV3OjpD
b2RlVW5pdHM6Okl0ZXJhdG9yOjpJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZ1ZpZXcsIHVuc2ln
bmVkIGluZGV4KQogICAgIDogbV9zdHJpbmdWaWV3KHN0cmluZ1ZpZXcpCiAgICAgLCBtX2luZGV4
KGluZGV4KQogewpAQCAtOTUyLDcgKzk1Miw4IEBAIGlubGluZSBVQ2hhciBTdHJpbmdWaWV3OjpD
b2RlVW5pdHM6Okl0ZXJhdG9yOjpvcGVyYXRvciooKSBjb25zdAogCiBpbmxpbmUgYm9vbCBTdHJp
bmdWaWV3OjpDb2RlVW5pdHM6Okl0ZXJhdG9yOjpvcGVyYXRvcj09KGNvbnN0IEl0ZXJhdG9yJiBv
dGhlcikgY29uc3QKIHsKLSAgICBBU1NFUlQoJm1fc3RyaW5nVmlldyA9PSAmb3RoZXIubV9zdHJp
bmdWaWV3KTsKKyAgICBBU1NFUlQobV9zdHJpbmdWaWV3Lm1fY2hhcmFjdGVycyA9PSBvdGhlci5t
X3N0cmluZ1ZpZXcubV9jaGFyYWN0ZXJzKTsKKyAgICBBU1NFUlQobV9zdHJpbmdWaWV3Lm1fbGVu
Z3RoID09IG90aGVyLm1fc3RyaW5nVmlldy5tX2xlbmd0aCk7CiAgICAgcmV0dXJuIG1faW5kZXgg
PT0gb3RoZXIubV9pbmRleDsKIH0KIApAQCAtMTAxNCw3ICsxMDE1LDggQEAgaW5saW5lIFN0cmlu
Z1ZpZXc6OlNwbGl0UmVzdWx0OjpJdGVyYXRvcjo6SXRlcmF0b3IoY29uc3QgU3BsaXRSZXN1bHQm
IHJlc3VsdCwgUG8KIAogaW5saW5lIFN0cmluZ1ZpZXcgU3RyaW5nVmlldzo6U3BsaXRSZXN1bHQ6
Okl0ZXJhdG9yOjpvcGVyYXRvciooKSBjb25zdAogewotICAgIEFTU0VSVChtX3Bvc2l0aW9uIDw9
IG1fcmVzdWx0Lm1fc3RyaW5nLmxlbmd0aCgpICYmICFtX2lzRG9uZSk7CisgICAgQVNTRVJUKG1f
cG9zaXRpb24gPD0gbV9yZXN1bHQubV9zdHJpbmcubGVuZ3RoKCkpOworICAgIEFTU0VSVCghbV9p
c0RvbmUpOwogICAgIHJldHVybiBtX3Jlc3VsdC5tX3N0cmluZy5zdWJzdHJpbmcobV9wb3NpdGlv
biwgbV9sZW5ndGgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0
cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCA3MTFjYTY0YTAz
YTYxNDQxZmFlNGU3ZWViM2RiMjE4NjIyOWZjNWVmLi41MTFiOWMxNjRhMWE1OGMxMWQ0Y2ZkNTMy
MWUzMmY1MjdiNGM5ZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTI0Niw3ICsyNDYs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2ln
bmVkIGxlbmd0aCwgVUNoYXIqJiBkYXRhKSB7IHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGVVbmlu
aXRpYWxpemVkKGxlbmd0aCwgZGF0YSk7IH0KICAgICBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVuaW5p
dGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBMQ2hhciomIGRhdGEpIHsgcmV0dXJuIFN0cmluZ0lt
cGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBkYXRhKTsgfQogCi0gICAgdXNpbmcgU3Bs
aXRGdW5jdG9yID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZ1ZpZXcmKT47CisgICAg
dXNpbmcgU3BsaXRGdW5jdG9yID0gV1RGOjpGdW5jdGlvbjx2b2lkKFN0cmluZ1ZpZXcpPjsKIAog
ICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNwbGl0KFVDaGFyIHNlcGFyYXRvciwgY29uc3Qg
U3BsaXRGdW5jdG9yJikgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFZlY3RvcjxTdHJp
bmc+IHNwbGl0KFVDaGFyIHNlcGFyYXRvcikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaAppbmRleCAzNjRjZDNmOTZiMDQzNjZhMjM4ZWY2
YTgzYmM4MWQwOTc5MDk3YTRiLi5jNzI5YzkyMmFiMzhiYThkOTRkNDc0NDU3MzNhZGEzMGM1OTVl
Mjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0
VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBl
LmgKQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgT3B0aW9uU2V0PERhdGVUaW1l
Rm9ybWF0VmFsaWRhdGlvblJlc3VsdHM+IG1fcmVzdWx0czsKICAgICB9OwogCi0gICAgdmlydHVh
bCBzdGQ6Om9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBwYXJzZVRvRGF0ZUNvbXBvbmVudHMoY29u
c3QgU3RyaW5nVmlldyYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8RGF0
ZUNvbXBvbmVudHM+IHBhcnNlVG9EYXRlQ29tcG9uZW50cyhTdHJpbmdWaWV3KSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBzZXRNaWxsaXNlY29u
ZFRvRGF0ZUNvbXBvbmVudHMoZG91YmxlKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNl
dHVwTGF5b3V0UGFyYW1ldGVycyhEYXRlVGltZUVkaXRFbGVtZW50OjpMYXlvdXRQYXJhbWV0ZXJz
JiwgY29uc3QgRGF0ZUNvbXBvbmVudHMmKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlz
VmFsaWRGb3JtYXQoT3B0aW9uU2V0PERhdGVUaW1lRm9ybWF0VmFsaWRhdGlvblJlc3VsdHM+KSBj
b25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlSW5wdXRUeXBlLmNwcAppbmRleCAxOTFlOTkx
NzVkMmI0OGU0ZDhjZGEwNzIyMDBlOGViMzlhMjhiNDFjLi5lZmQwNWIyZTcyYTJlZWYxNDQyNDkx
NTcwNmQzZGFmMGRiMzFjMGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJ
bnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5jcHAK
QEAgLTc0LDcgKzc0LDcgQEAgU3RlcFJhbmdlIERhdGVJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5n
ZShBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nKSBjb25zdAogICAgIHJldHVybiBTdGVw
UmFuZ2Uoc3RlcEJhc2UsIFJhbmdlTGltaXRhdGlvbnM6OlZhbGlkLCBtaW5pbXVtLCBtYXhpbXVt
LCBzdGVwLCBkYXRlU3RlcERlc2NyaXB0aW9uKTsKIH0KIAotc3RkOjpvcHRpb25hbDxEYXRlQ29t
cG9uZW50cz4gRGF0ZUlucHV0VHlwZTo6cGFyc2VUb0RhdGVDb21wb25lbnRzKGNvbnN0IFN0cmlu
Z1ZpZXcmIHNvdXJjZSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IERhdGVJ
bnB1dFR5cGU6OnBhcnNlVG9EYXRlQ29tcG9uZW50cyhTdHJpbmdWaWV3IHNvdXJjZSkgY29uc3QK
IHsKICAgICByZXR1cm4gRGF0ZUNvbXBvbmVudHM6OmZyb21QYXJzaW5nRGF0ZShzb3VyY2UpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlSW5wdXRUeXBlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuaAppbmRleCA0MTZmMGU2NjE4ZGU1MDAxY2Fj
ZTZkNDRkMDRjZTFiNDMwOWI5OTY1Li4zM2YyMTU5MDk2MmE1NzA5ZGRhYWM0OWI4YzgyMGU1ODg4
ZGFkNDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuaApAQCAtNDUsNyArNDUsNyBA
QCBwcml2YXRlOgogICAgIGNvbnN0IEF0b21TdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIERhdGVDb21wb25lbnRzVHlwZSBkYXRlVHlwZSgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIFN0ZXBSYW5nZSBjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nKSBjb25z
dCBvdmVycmlkZTsKLSAgICBzdGQ6Om9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBwYXJzZVRvRGF0
ZUNvbXBvbmVudHMoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6
b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IHBhcnNlVG9EYXRlQ29tcG9uZW50cyhTdHJpbmdWaWV3
KSBjb25zdCBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBzZXRN
aWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoZG91YmxlKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IGJvb2wgaXNWYWxpZEZvcm1hdChPcHRpb25TZXQ8RGF0ZVRpbWVGb3JtYXRWYWxpZGF0aW9uUmVz
dWx0cz4pIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRl
VGltZUxvY2FsSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2Nh
bElucHV0VHlwZS5jcHAKaW5kZXggNzBhYjAyNzI2MjhiMmJiYzIwN2QwMmY5MjIxZjMyZmM4MDQw
Zjc4Mi4uN2ZmNjQ2MTcyNTVkZjM1Y2IwOTg1NDg2NDUyMDQ4YTlkOWI5NTY5NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuY3BwCkBAIC04Myw3ICs4
Myw3IEBAIFN0ZXBSYW5nZSBEYXRlVGltZUxvY2FsSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2Uo
QW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluCiAgICAgcmV0dXJuIFN0ZXBSYW5nZShzdGVw
QmFzZSwgUmFuZ2VMaW1pdGF0aW9uczo6VmFsaWQsIG1pbmltdW0sIG1heGltdW0sIHN0ZXAsIGRh
dGVUaW1lTG9jYWxTdGVwRGVzY3JpcHRpb24pOwogfQogCi1zdGQ6Om9wdGlvbmFsPERhdGVDb21w
b25lbnRzPiBEYXRlVGltZUxvY2FsSW5wdXRUeXBlOjpwYXJzZVRvRGF0ZUNvbXBvbmVudHMoY29u
c3QgU3RyaW5nVmlldyYgc291cmNlKSBjb25zdAorc3RkOjpvcHRpb25hbDxEYXRlQ29tcG9uZW50
cz4gRGF0ZVRpbWVMb2NhbElucHV0VHlwZTo6cGFyc2VUb0RhdGVDb21wb25lbnRzKFN0cmluZ1Zp
ZXcgc291cmNlKSBjb25zdAogewogICAgIHJldHVybiBEYXRlQ29tcG9uZW50czo6ZnJvbVBhcnNp
bmdEYXRlVGltZUxvY2FsKHNvdXJjZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRp
bWVMb2NhbElucHV0VHlwZS5oCmluZGV4IGZhMTUzOWQwN2U1NzhmMTA0NTQ3NjA5ZjYzYjBmZjE3
YzI4NDk2MGUuLjE2NmY1MDAwNDE2ZWM0NjdhNWZlOTkzNDdiN2ZjOWEyMzkyNDEyODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5oCkBAIC01MCw3ICs1
MCw3IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIHZhbHVlQXNEYXRlKCkgY29uc3QgZmluYWw7CiAg
ICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VmFsdWVBc0RhdGUoZG91YmxlKSBjb25zdCBmaW5hbDsK
ICAgICBTdGVwUmFuZ2UgY3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZykgY29uc3QgZmlu
YWw7Ci0gICAgc3RkOjpvcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gcGFyc2VUb0RhdGVDb21wb25l
bnRzKGNvbnN0IFN0cmluZ1ZpZXcmKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPERh
dGVDb21wb25lbnRzPiBwYXJzZVRvRGF0ZUNvbXBvbmVudHMoU3RyaW5nVmlldykgY29uc3QgZmlu
YWw7CiAgICAgc3RkOjpvcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gc2V0TWlsbGlzZWNvbmRUb0Rh
dGVDb21wb25lbnRzKGRvdWJsZSkgY29uc3QgZmluYWw7CiAKICAgICBib29sIGlzVmFsaWRGb3Jt
YXQoT3B0aW9uU2V0PERhdGVUaW1lRm9ybWF0VmFsaWRhdGlvblJlc3VsdHM+KSBjb25zdCBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTW9udGhJbnB1dFR5cGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5jcHAKaW5kZXggZDQyZWM4YTkyMDc3
YTQwMWJkZWM4N2JhZjVmODJhZGFmMjhkNmIwNy4uNjFkNGZkMWEwOWU1NTcwZDZmNzAyOTJjMDZl
ZTYwOWRhZDZlZWJlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0
VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5jcHAKQEAg
LTExNyw3ICsxMTcsNyBAQCBEZWNpbWFsIE1vbnRoSW5wdXRUeXBlOjpwYXJzZVRvTnVtYmVyKGNv
bnN0IFN0cmluZyYgc3JjLCBjb25zdCBEZWNpbWFsJiBkZWZhdWx0VgogICAgIHJldHVybiBEZWNp
bWFsOjpmcm9tRG91YmxlKG1vbnRocyk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVu
dHM+IE1vbnRoSW5wdXRUeXBlOjpwYXJzZVRvRGF0ZUNvbXBvbmVudHMoY29uc3QgU3RyaW5nVmll
dyYgc291cmNlKSBjb25zdAorc3RkOjpvcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gTW9udGhJbnB1
dFR5cGU6OnBhcnNlVG9EYXRlQ29tcG9uZW50cyhTdHJpbmdWaWV3IHNvdXJjZSkgY29uc3QKIHsK
ICAgICByZXR1cm4gRGF0ZUNvbXBvbmVudHM6OmZyb21QYXJzaW5nTW9udGgoc291cmNlKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTW9udGhJbnB1dFR5cGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTW9udGhJbnB1dFR5cGUuaAppbmRleCBjNjdhZDViYmNlNjlhYWZiMzAy
MGQyZTBlNzNhYjM5YmFlNzE1MGNkLi5kYTRjNWJjOGE0M2UxZjA0NjhmNjgwNmQ5NWI0ZjFmNDA3
NTgyNzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01vbnRoSW5wdXRUeXBlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5oCkBAIC01Miw3ICs1Miw3
IEBAIHByaXZhdGU6CiAgICAgRGVjaW1hbCBwYXJzZVRvTnVtYmVyKGNvbnN0IFN0cmluZyYsIGNv
bnN0IERlY2ltYWwmKSBjb25zdCBvdmVycmlkZTsKICAgICBEZWNpbWFsIGRlZmF1bHRWYWx1ZUZv
clN0ZXBVcCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0ZXBSYW5nZSBjcmVhdGVTdGVwUmFuZ2Uo
QW55U3RlcEhhbmRsaW5nKSBjb25zdCBvdmVycmlkZTsKLSAgICBzdGQ6Om9wdGlvbmFsPERhdGVD
b21wb25lbnRzPiBwYXJzZVRvRGF0ZUNvbXBvbmVudHMoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0
IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IHBhcnNlVG9EYXRl
Q29tcG9uZW50cyhTdHJpbmdWaWV3KSBjb25zdCBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFs
PERhdGVDb21wb25lbnRzPiBzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoZG91YmxlKSBj
b25zdCBvdmVycmlkZTsKICAgICB2b2lkIGhhbmRsZURPTUFjdGl2YXRlRXZlbnQoRXZlbnQmKSBv
dmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5wdXRUeXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5jcHAKaW5kZXggOWI5MDUw
NTkwZjVlZjU4YWY3MzhmMjg5OTUzOTZlYzc5MjI2ODliNS4uOGE4ODlhMTUyYTM3ZWJiYWMwYTQz
YjBhNDFmZWQxOTJlZWFhODk3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1l
SW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuY3Bw
CkBAIC05Miw3ICs5Miw3IEBAIFN0ZXBSYW5nZSBUaW1lSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFu
Z2UoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZykgY29uc3QKICAgICByZXR1cm4gU3Rl
cFJhbmdlKHN0ZXBCYXNlLCBSYW5nZUxpbWl0YXRpb25zOjpWYWxpZCwgbWluaW11bSwgbWF4aW11
bSwgc3RlcCwgdGltZVN0ZXBEZXNjcmlwdGlvbik7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8RGF0ZUNv
bXBvbmVudHM+IFRpbWVJbnB1dFR5cGU6OnBhcnNlVG9EYXRlQ29tcG9uZW50cyhjb25zdCBTdHJp
bmdWaWV3JiBzb3VyY2UpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBUaW1l
SW5wdXRUeXBlOjpwYXJzZVRvRGF0ZUNvbXBvbmVudHMoU3RyaW5nVmlldyBzb3VyY2UpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIERhdGVDb21wb25lbnRzOjpmcm9tUGFyc2luZ1RpbWUoc291cmNlKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5wdXRUeXBlLmgKaW5kZXggNjFkYzZmZmE2ZjdkY2U5NGQy
NzQzZDY3MDk4Njg2ZDQ3YjdiMTM3Ni4uZTRkYWJlZDgyNjEyZDg3MzVjNzEzMzRlY2E4YjMxZTY3
M2YwYzViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5wdXRUeXBlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5wdXRUeXBlLmgKQEAgLTQ2LDcgKzQ2LDcg
QEAgcHJpdmF0ZToKICAgICBEYXRlQ29tcG9uZW50c1R5cGUgZGF0ZVR5cGUoKSBjb25zdCBvdmVy
cmlkZTsKICAgICBEZWNpbWFsIGRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIFN0ZXBSYW5nZSBjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nKSBjb25zdCBv
dmVycmlkZTsKLSAgICBzdGQ6Om9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBwYXJzZVRvRGF0ZUNv
bXBvbmVudHMoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0
aW9uYWw8RGF0ZUNvbXBvbmVudHM+IHBhcnNlVG9EYXRlQ29tcG9uZW50cyhTdHJpbmdWaWV3KSBj
b25zdCBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBzZXRNaWxs
aXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoZG91YmxlKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lk
IGhhbmRsZURPTUFjdGl2YXRlRXZlbnQoRXZlbnQmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9XZWVrSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvV2Vla0lucHV0VHlwZS5jcHAKaW5kZXggZGQ2MmM3OTk1ODU4ZjA2ODkyNTVhYjVkOTAyMDMx
MzE2NzQ4NDdlYS4uYmYyZDQyZTM0YTlkY2VjZTFjMWMyN2VjMzM3ZDU4Yjg1MWY4NTUxOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9XZWVrSW5wdXRUeXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1dlZWtJbnB1dFR5cGUuY3BwCkBAIC02OCw3ICs2OCw3IEBAIFN0ZXBS
YW5nZSBXZWVrSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFueVN0
ZXBIYW5kbGluZykgY29uc3QKICAgICByZXR1cm4gU3RlcFJhbmdlKHN0ZXBCYXNlLCBSYW5nZUxp
bWl0YXRpb25zOjpWYWxpZCwgbWluaW11bSwgbWF4aW11bSwgc3RlcCwgd2Vla1N0ZXBEZXNjcmlw
dGlvbik7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IFdlZWtJbnB1dFR5cGU6
OnBhcnNlVG9EYXRlQ29tcG9uZW50cyhjb25zdCBTdHJpbmdWaWV3JiBzb3VyY2UpIGNvbnN0Citz
dGQ6Om9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBXZWVrSW5wdXRUeXBlOjpwYXJzZVRvRGF0ZUNv
bXBvbmVudHMoU3RyaW5nVmlldyBzb3VyY2UpIGNvbnN0CiB7CiAgICAgcmV0dXJuIERhdGVDb21w
b25lbnRzOjpmcm9tUGFyc2luZ1dlZWsoc291cmNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9XZWVrSW5w
dXRUeXBlLmgKaW5kZXggZGNjNWJjNDNkNDA3ODdmMTU3MTk2ODc3NmI4OGZhYjU5MmNjNTZmYS4u
YzdkMzkxODg1YjU1MTIzYmI5YjBiYzc3NTRiZGJlYjY1NzhkMmYzMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9XZWVrSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9XZWVrSW5wdXRUeXBlLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBB
dG9tU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBEYXRlQ29t
cG9uZW50c1R5cGUgZGF0ZVR5cGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBTdGVwUmFuZ2UgY3Jl
YXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZykgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgc3RkOjpv
cHRpb25hbDxEYXRlQ29tcG9uZW50cz4gcGFyc2VUb0RhdGVDb21wb25lbnRzKGNvbnN0IFN0cmlu
Z1ZpZXcmKSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPERhdGVDb21wb25lbnRz
PiBwYXJzZVRvRGF0ZUNvbXBvbmVudHMoU3RyaW5nVmlldykgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
c3RkOjpvcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gc2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25l
bnRzKGRvdWJsZSkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBoYW5kbGVET01BY3RpdmF0ZUV2
ZW50KEV2ZW50Jikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFBhcnNlcklkaW9tcy5jcHAKaW5kZXggYjQyNzdmYTAwOWYzNWZjMjVlYWY1M2JjYWIzNTJh
ZGI1MzdjMjQ0NS4uMjIxOThjZmFlN2YxYThlYjcyMmZkYzIzY2VjYmQ5N2YzYjZlMDM2ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKQEAg
LTQ1Niw3ICs0NTYsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZUhUVFBSZWZyZXNoSW50ZXJuYWwoY29u
c3QgQ2hhcmFjdGVyVHlwZSogcG9zaXRpb24sIGNvbnN0IENoYXJhYwogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIHBhcnNlTWV0YUhUVFBFcXVpdlJlZnJlc2goY29uc3QgU3RyaW5nVmlldyYg
aW5wdXQsIGRvdWJsZSYgZGVsYXksIFN0cmluZyYgdXJsKQorYm9vbCBwYXJzZU1ldGFIVFRQRXF1
aXZSZWZyZXNoKFN0cmluZ1ZpZXcgaW5wdXQsIGRvdWJsZSYgZGVsYXksIFN0cmluZyYgdXJsKQog
ewogICAgIGlmIChMSUtFTFkoaW5wdXQuaXM4Qml0KCkpKSB7CiAgICAgICAgIGF1dG8qIHN0YXJ0
ID0gaW5wdXQuY2hhcmFjdGVyczgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxQYXJzZXJJZGlvbXMuaAppbmRleCA3ODMxMmQzYjZjNThlNjcyYzZhYmJkNzI5NGRmODZmNGNk
ZGEyZjAwLi44OTUxNmIxYjliZWU5ZTE5YzY2MTg1MWMyMjQ3ODJiOGFmNWQ2NDkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCkBAIC03Nyw3ICs3
Nyw3IEBAIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBwYXJzZVZhbGlkSFRNTEZsb2F0aW5nUG9pbnRO
dW1iZXIoU3RyaW5nVmlldyk7CiBWZWN0b3I8ZG91YmxlPiBwYXJzZUhUTUxMaXN0T2ZPZkZsb2F0
aW5nUG9pbnROdW1iZXJWYWx1ZXMoU3RyaW5nVmlldyk7CiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVj
LndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NlbWFudGljcy5odG1sI2F0dHItbWV0YS1odHRwLWVxdWl2
LXJlZnJlc2gKLWJvb2wgcGFyc2VNZXRhSFRUUEVxdWl2UmVmcmVzaChjb25zdCBTdHJpbmdWaWV3
JiwgZG91YmxlJiBkZWxheSwgU3RyaW5nJiB1cmwpOworYm9vbCBwYXJzZU1ldGFIVFRQRXF1aXZS
ZWZyZXNoKFN0cmluZ1ZpZXcsIGRvdWJsZSYgZGVsYXksIFN0cmluZyYgdXJsKTsKIAogLy8gaHR0
cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvaW5mcmFzdHJ1Y3R1cmUuaHRtbCNj
b3JzLXNldHRpbmdzLWF0dHJpYnV0ZQogU3RyaW5nIHBhcnNlQ09SU1NldHRpbmdzQXR0cmlidXRl
KGNvbnN0IEF0b21TdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxTcmNzZXRQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxT
cmNzZXRQYXJzZXIuaAppbmRleCAwM2M1N2QzNjBiZWQwZmM4NTlkODM3NGMwNjdjNDFkYTE2YjVl
OWExLi4zMDAxOGNjMGM0MjMxMTlkZjQzMjM1YWVkZmM5YmQ5Mjg1YTIxNzM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU3Jjc2V0UGFyc2VyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNyY3NldFBhcnNlci5oCkBAIC03OCw3ICs3OCw3
IEBAIHN0cnVjdCBJbWFnZUNhbmRpZGF0ZSB7CiAgICAgewogICAgIH0KIAotICAgIEltYWdlQ2Fu
ZGlkYXRlKGNvbnN0IFN0cmluZ1ZpZXcmIHNvdXJjZSwgY29uc3QgRGVzY3JpcHRvclBhcnNpbmdS
ZXN1bHQmIHJlc3VsdCwgT3JpZ2luQXR0cmlidXRlIG9yaWdpbkF0dHJpYnV0ZSkKKyAgICBJbWFn
ZUNhbmRpZGF0ZShTdHJpbmdWaWV3IHNvdXJjZSwgY29uc3QgRGVzY3JpcHRvclBhcnNpbmdSZXN1
bHQmIHJlc3VsdCwgT3JpZ2luQXR0cmlidXRlIG9yaWdpbkF0dHJpYnV0ZSkKICAgICAgICAgOiBz
dHJpbmcoc291cmNlKQogICAgICAgICAsIGRlbnNpdHkocmVzdWx0Lmhhc0RlbnNpdHkoKSA/IHJl
c3VsdC5kZW5zaXR5KCkgOiBVbmluaXRpYWxpemVkRGVzY3JpcHRvcikKICAgICAgICAgLCByZXNv
dXJjZVdpZHRoKHJlc3VsdC5oYXNXaWR0aCgpID8gcmVzdWx0LnJlc291cmNlV2lkdGgoKSA6IFVu
aW5pdGlhbGl6ZWREZXNjcmlwdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lVGV4dEl0ZW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lVGV4dEl0ZW0uY3Bw
CmluZGV4IDc5Njc3ODhlZGMwZDhiNDRjYjNjNjUyZjExOGU0ODAyZjRmODc5M2UuLjRjZmRjMDQ5
NTNlMDJjZGIyMzc0OTQyZWZmMzU1NDUxYWI1MjE1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZVRleHRJdGVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVUZXh0SXRlbS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgc3RydWN0IFdoaXRlc3BhY2VDb250ZW50
IHsKICAgICBzaXplX3QgbGVuZ3RoIHsgMCB9OwogICAgIGJvb2wgaXNXb3JkU2VwYXJhdG9yIHsg
dHJ1ZSB9OwogfTsKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdoaXRlc3BhY2VDb250ZW50PiBtb3Zl
VG9OZXh0Tm9uV2hpdGVzcGFjZVBvc2l0aW9uKGNvbnN0IFN0cmluZ1ZpZXcmIHRleHRDb250ZW50
LCBzaXplX3Qgc3RhcnRQb3NpdGlvbiwgYm9vbCBwcmVzZXJ2ZU5ld2xpbmUsIGJvb2wgcHJlc2Vy
dmVUYWIsIGJvb2wgdHJlYXROb25CcmVha2luZ1NwYWNlQXNSZWd1bGFyU3BhY2UpCitzdGF0aWMg
c3RkOjpvcHRpb25hbDxXaGl0ZXNwYWNlQ29udGVudD4gbW92ZVRvTmV4dE5vbldoaXRlc3BhY2VQ
b3NpdGlvbihTdHJpbmdWaWV3IHRleHRDb250ZW50LCBzaXplX3Qgc3RhcnRQb3NpdGlvbiwgYm9v
bCBwcmVzZXJ2ZU5ld2xpbmUsIGJvb2wgcHJlc2VydmVUYWIsIGJvb2wgdHJlYXROb25CcmVha2lu
Z1NwYWNlQXNSZWd1bGFyU3BhY2UpCiB7CiAgICAgYXV0byBoYXNXb3JkU2VwYXJhdG9yQ2hhcmFj
dGVyID0gZmFsc2U7CiAgICAgYXV0byBpc1doaXRlc3BhY2VDaGFyYWN0ZXIgPSBbJl0oYXV0byBj
aGFyYWN0ZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVl
L0xheW91dFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVl
L0xheW91dFRyZWVCdWlsZGVyLmNwcAppbmRleCA2OWYwOTVlYTY4YjViNzZiYTJkMDRkZThlOWMx
YmQ3OWQyYjlmMzY4Li5jNWVjMzRmYzJmNTllMWVjY2Y2NDgwNWVkMDk5ZWYxOTJkNjU2NTk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVp
bGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJl
ZUJ1aWxkZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPExheW91
dFNpemU+IGFjY3VtdWxhdGVkT2Zmc2V0Rm9ySW5GbG93UG9zaXRpb25lZENvbnRpbnVhdGlvCiAg
ICAgcmV0dXJuIGJsb2NrLnJlbGF0aXZlUG9zaXRpb25PZmZzZXQoKTsKIH0KIAotc3RhdGljIGJv
b2wgY2FuVXNlU2ltcGxpZmllZFRleHRNZWFzdXJpbmcoY29uc3QgU3RyaW5nVmlldyYgY29udGVu
dCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnRDYXNjYWRlLCBib29sIHdoaXRlc3BhY2VJc0NvbGxh
cHNlZCkKK3N0YXRpYyBib29sIGNhblVzZVNpbXBsaWZpZWRUZXh0TWVhc3VyaW5nKFN0cmluZ1Zp
ZXcgY29udGVudCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnRDYXNjYWRlLCBib29sIHdoaXRlc3Bh
Y2VJc0NvbGxhcHNlZCkKIHsKICAgICBpZiAoZm9udENhc2NhZGUuY29kZVBhdGgoVGV4dFJ1bihj
b250ZW50KSkgPT0gRm9udENhc2NhZGU6OkNvZGVQYXRoOjpDb21wbGV4KQogICAgICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2Vu
dGF0aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0
aW9uRWxlbWVudC5jcHAKaW5kZXggZmQ1YzRlMjJlZDFhNDQzMTI5ZWRhMGU3ZmNmMjY3NWI3NmEw
MGUyMi4uZmIxNjE5OWZhNWU5NzUwN2VmY2I2ZDk3YTRkMmY5ODZlYjkyZmZiYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmNwcApA
QCAtMjAzLDcgKzIwMyw3IEBAIGNvbnN0IE1hdGhNTEVsZW1lbnQ6OkJvb2xlYW5WYWx1ZSYgTWF0
aE1MUHJlc2VudGF0aW9uRWxlbWVudDo6Y2FjaGVkQm9vbGVhbkF0dHJpCiAgICAgcmV0dXJuIGF0
dHJpYnV0ZS52YWx1ZSgpOwogfQogCi1NYXRoTUxFbGVtZW50OjpMZW5ndGggTWF0aE1MUHJlc2Vu
dGF0aW9uRWxlbWVudDo6cGFyc2VOdW1iZXJBbmRVbml0KGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmlu
ZykKK01hdGhNTEVsZW1lbnQ6Okxlbmd0aCBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpwYXJz
ZU51bWJlckFuZFVuaXQoU3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAgTGVuZ3RoVHlwZSBsZW5n
dGhUeXBlID0gTGVuZ3RoVHlwZTo6VW5pdExlc3M7CiAgICAgdW5zaWduZWQgc3RyaW5nTGVuZ3Ro
ID0gc3RyaW5nLmxlbmd0aCgpOwpAQCAtMjQ1LDcgKzI0NSw3IEBAIE1hdGhNTEVsZW1lbnQ6Okxl
bmd0aCBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpwYXJzZU51bWJlckFuZFVuaXQoY29uc3Qg
U3RyaW5nCiAgICAgcmV0dXJuIGxlbmd0aDsKIH0KIAotTWF0aE1MRWxlbWVudDo6TGVuZ3RoIE1h
dGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6OnBhcnNlTmFtZWRTcGFjZShjb25zdCBTdHJpbmdWaWV3
JiBzdHJpbmcpCitNYXRoTUxFbGVtZW50OjpMZW5ndGggTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVu
dDo6cGFyc2VOYW1lZFNwYWNlKFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAgIC8vIE5hbWVkIHNw
YWNlIHZhbHVlcyBhcmUgY2FzZS1zZW5zaXRpdmUuCiAgICAgaW50IG5hbWVkU3BhY2VWYWx1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5o
CmluZGV4IDNmMmE3NzhiYjU5NzFjNGM4MTJlMjliMjgwMmRkYzRhNDFiZWE2NGYuLmIxYjRhYTNk
NGMyNjc1OGIwMTUyMGE5YTgzZjFmZjA0NzQxYjRhZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuaApAQCAtNjAsOCArNjAsOCBAQCBw
cml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBpc1ByZXNlbnRhdGlvbk1hdGhNTCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7
IH0KIAotICAgIHN0YXRpYyBMZW5ndGggcGFyc2VOdW1iZXJBbmRVbml0KGNvbnN0IFN0cmluZ1Zp
ZXcmKTsKLSAgICBzdGF0aWMgTGVuZ3RoIHBhcnNlTmFtZWRTcGFjZShjb25zdCBTdHJpbmdWaWV3
Jik7CisgICAgc3RhdGljIExlbmd0aCBwYXJzZU51bWJlckFuZFVuaXQoU3RyaW5nVmlldyk7Cisg
ICAgc3RhdGljIExlbmd0aCBwYXJzZU5hbWVkU3BhY2UoU3RyaW5nVmlldyk7CiAgICAgc3RhdGlj
IE1hdGhWYXJpYW50IHBhcnNlTWF0aFZhcmlhbnRBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYg
YXR0cmlidXRlVmFsdWUpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9R
dWlya3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwCmluZGV4IDA0N2RmZjU5
ZmEyODA0YjcxMGZlYTAzMGYwOThiZTRiZDRhZDFiMTQuLjNlNzFjMDFhYzJkYjEwZDgyYTg5ZGZk
NDg2MWJhODc3MTVhMzZkMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAKQEAgLTI4NSw3ICsyODUs
NyBAQCBib29sIFF1aXJrczo6aXNOZXZlclJpY2hseUVkaXRhYmxlRm9yVG91Y2hCYXIoKSBjb25z
dAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGJvb2wgc2hvdWxkU3VwcHJlc3NBdXRv
Y29ycmVjdGlvbkFuZEF1dG9jYXB0aWFsaXphdGlvbkluSGlkZGVuRWRpdGFibGVBcmVhc0Zvckhv
c3QoY29uc3QgU3RyaW5nVmlldyYgaG9zdCkKK3N0YXRpYyBib29sIHNob3VsZFN1cHByZXNzQXV0
b2NvcnJlY3Rpb25BbmRBdXRvY2FwdGlhbGl6YXRpb25JbkhpZGRlbkVkaXRhYmxlQXJlYXNGb3JI
b3N0KFN0cmluZ1ZpZXcgaG9zdCkKIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHJl
dHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShob3N0LCAiZG9jcy5nb29nbGUuY29t
Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fz
Y2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5j
cHAKaW5kZXggYTE3OTBkOTI2ZGE0NTQ3MmM4M2E0OGZlOGM5NzA0ZTg5OWVkZmQ3MC4uZmI5MGVm
MTVmYTVhMDZkOWZlMTMwZTcxZWNiNDY1NWJjOTAwNTJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApAQCAtMTA2MSw3ICsxMDYxLDcg
QEAgc3RkOjpwYWlyPHVuc2lnbmVkLCBib29sPiBGb250Q2FzY2FkZTo6ZXhwYW5zaW9uT3Bwb3J0
dW5pdHlDb3VudEludGVybmFsKGNvbnN0IFUKICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoY291
bnQsIGlzQWZ0ZXJFeHBhbnNpb24pOwogfQogCi1zdGQ6OnBhaXI8dW5zaWduZWQsIGJvb2w+IEZv
bnRDYXNjYWRlOjpleHBhbnNpb25PcHBvcnR1bml0eUNvdW50KGNvbnN0IFN0cmluZ1ZpZXcmIHN0
cmluZ1ZpZXcsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uLCBFeHBhbnNpb25CZWhhdmlvciBleHBh
bnNpb25CZWhhdmlvcikKK3N0ZDo6cGFpcjx1bnNpZ25lZCwgYm9vbD4gRm9udENhc2NhZGU6OmV4
cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQoU3RyaW5nVmlldyBzdHJpbmdWaWV3LCBUZXh0RGlyZWN0
aW9uIGRpcmVjdGlvbiwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZpb3IpCiB7CiAg
ICAgLy8gRm9yIGVhY2ggY2hhcmFjdGVyLCBpdGVyYXRpbmcgZnJvbSBsZWZ0IHRvIHJpZ2h0Ogog
ICAgIC8vICAgSWYgaXQgaXMgcmVjb2duaXplZCBhcyBhIHNwYWNlLCBpbnNlcnQgYW4gb3Bwb3J0
dW5pdHkgYWZ0ZXIgaXQKQEAgLTEwNzIsNyArMTA3Miw3IEBAIHN0ZDo6cGFpcjx1bnNpZ25lZCwg
Ym9vbD4gRm9udENhc2NhZGU6OmV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQoY29uc3QgU3RyaW5n
VmllCiAgICAgcmV0dXJuIGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnRJbnRlcm5hbChzdHJpbmdW
aWV3LmNoYXJhY3RlcnMxNigpLCBzdHJpbmdWaWV3Lmxlbmd0aCgpLCBkaXJlY3Rpb24sIGV4cGFu
c2lvbkJlaGF2aW9yKTsKIH0KIAotYm9vbCBGb250Q2FzY2FkZTo6bGVmdEV4cGFuc2lvbk9wcG9y
dHVuaXR5KGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZ1ZpZXcsIFRleHREaXJlY3Rpb24gZGlyZWN0
aW9uKQorYm9vbCBGb250Q2FzY2FkZTo6bGVmdEV4cGFuc2lvbk9wcG9ydHVuaXR5KFN0cmluZ1Zp
ZXcgc3RyaW5nVmlldywgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgaWYgKCFzdHJp
bmdWaWV3Lmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDkxLDcgKzEwOTEs
NyBAQCBib29sIEZvbnRDYXNjYWRlOjpsZWZ0RXhwYW5zaW9uT3Bwb3J0dW5pdHkoY29uc3QgU3Ry
aW5nVmlldyYgc3RyaW5nVmlldywgVGV4dERpcgogICAgIHJldHVybiBjYW5FeHBhbmRBcm91bmRJ
ZGVvZ3JhcGhzSW5Db21wbGV4VGV4dCgpICYmIGlzQ0pLSWRlb2dyYXBoT3JTeW1ib2woaW5pdGlh
bENoYXJhY3Rlcik7CiB9CiAKLWJvb2wgRm9udENhc2NhZGU6OnJpZ2h0RXhwYW5zaW9uT3Bwb3J0
dW5pdHkoY29uc3QgU3RyaW5nVmlldyYgc3RyaW5nVmlldywgVGV4dERpcmVjdGlvbiBkaXJlY3Rp
b24pCitib29sIEZvbnRDYXNjYWRlOjpyaWdodEV4cGFuc2lvbk9wcG9ydHVuaXR5KFN0cmluZ1Zp
ZXcgc3RyaW5nVmlldywgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgaWYgKCFzdHJp
bmdWaWV3Lmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAppbmRleCA2YzUwNjU3YjE5M2RmOTVi
OGU0ZDAzMWVhM2Q4OWY1ZWI1MjliMDQ2Li43Mzk5MzgwODcxOGIyMDBlMDgyY2RhZTQxM2QzNTdj
ODEzYzE2MDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YXNjYWRlLmgKQEAgLTE4NywxMiArMTg3LDEyIEBAIHB1YmxpYzoKIAogICAgIC8vIFJldHVybnMg
KHRoZSBudW1iZXIgb2Ygb3Bwb3J0dW5pdGllcywgd2hldGhlciB0aGUgbGFzdCBleHBhbnNpb24g
aXMgYSB0cmFpbGluZyBleHBhbnNpb24pCiAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIG9wcG9ydHVu
aXRpZXMsIHRoZSBib29sIHdpbGwgYmUgdHJ1ZSBpZmYgd2UgYXJlIGZvcmJpZGRpbmcgbGVhZGlu
ZyBleHBhbnNpb25zLgotICAgIHN0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIGJvb2w+IGV4cGFu
c2lvbk9wcG9ydHVuaXR5Q291bnQoY29uc3QgU3RyaW5nVmlldyYsIFRleHREaXJlY3Rpb24sIEV4
cGFuc2lvbkJlaGF2aW9yKTsKKyAgICBzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCBib29sPiBl
eHBhbnNpb25PcHBvcnR1bml0eUNvdW50KFN0cmluZ1ZpZXcsIFRleHREaXJlY3Rpb24sIEV4cGFu
c2lvbkJlaGF2aW9yKTsKIAogICAgIC8vIFdoZXRoZXIgb3Igbm90IHRoZXJlIGlzIGFuIGV4cGFu
c2lvbiBvcHBvcnR1bml0eSBqdXN0IGJlZm9yZSB0aGUgZmlyc3QgY2hhcmFjdGVyCiAgICAgLy8g
Tm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgdGFrZSBhIGlzQWZ0ZXJFeHBhbnNpb24gZmxhZzsgdGhp
cyBhc3N1bWVzIHRoYXQgaXNBZnRlckV4cGFuc2lvbiBpcyBmYWxzZQotICAgIHN0YXRpYyBib29s
IGxlZnRFeHBhbnNpb25PcHBvcnR1bml0eShjb25zdCBTdHJpbmdWaWV3JiwgVGV4dERpcmVjdGlv
bik7Ci0gICAgc3RhdGljIGJvb2wgcmlnaHRFeHBhbnNpb25PcHBvcnR1bml0eShjb25zdCBTdHJp
bmdWaWV3JiwgVGV4dERpcmVjdGlvbik7CisgICAgc3RhdGljIGJvb2wgbGVmdEV4cGFuc2lvbk9w
cG9ydHVuaXR5KFN0cmluZ1ZpZXcsIFRleHREaXJlY3Rpb24pOworICAgIHN0YXRpYyBib29sIHJp
Z2h0RXhwYW5zaW9uT3Bwb3J0dW5pdHkoU3RyaW5nVmlldywgVGV4dERpcmVjdGlvbik7CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRTaG91bGRVc2VTbW9vdGhpbmcoYm9vbCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgc2hvdWxkVXNlU21vb3RoaW5nKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCAxYjc2MGIxM2M1NTk4MGMyMWQ2ODM4NTg5ZDBjYmVj
OWM5NDU0NTEzLi5kOTMxOWI5NGY3OWMwODdiOTc0YWVkZGY0ZjM2ODk0ZWY1MDBiMTcyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTgyMSw3ICs4MjEsNyBAQCBzdGF0aWMgVVJMIGNvbmZv
cm1GcmFnbWVudElkZW50aWZpZXJGb3JVUkwoY29uc3QgVVJMJiB1cmwpCiAgICAgLy8gV29yayBh
cm91bmQgdGhpcyBicm9rZW4gaW1wbGVtZW50YXRpb24gYnkgcHJlLXBhcnNpbmcgdGhlIGZyYWdt
ZW50IGFuZCBlbnN1cmluZyB0aGF0IGl0IG1lZXRzIHRoZWlyCiAgICAgLy8gY3JpdGVyaWEuIFBy
b2JsZW1hdGljIHN0cmluZ3MgZnJvbSB0aGUgVEMwMDUxLmh0bWwgdGVzdCBpbmNsdWRlICJ0PTMm
IiwgYW5kIHRoaXMgcHJvYmxlbSBnZW5lcmFsbHkgaXMKICAgICAvLyB3aXRoIHN1YnRyaW5ncyBi
ZXR3ZWVuIHRoZSAnJicgY2hhcmFjdGVyIG5vdCBpbmNsdWRpbmcgYW4gZXF1YWwgc2lnbi4KLSAg
ICBhdXRvIGhhc0ludmFsaWROdW1iZXJPZkVxdWFsQ2hhcmFjdGVycyA9IFtdKGNvbnN0IFN0cmlu
Z1ZpZXcmIGZyYWdtZW50UGFyYW1ldGVyKSB7CisgICAgYXV0byBoYXNJbnZhbGlkTnVtYmVyT2ZF
cXVhbENoYXJhY3RlcnMgPSBbXShTdHJpbmdWaWV3IGZyYWdtZW50UGFyYW1ldGVyKSB7CiAgICAg
ICAgIGF1dG8gcmVzdWx0cyA9IGZyYWdtZW50UGFyYW1ldGVyLnNwbGl0QWxsb3dpbmdFbXB0eUVu
dHJpZXMoJz0nKTsKICAgICAgICAgYXV0byBpdGVyYXRvciA9IHJlc3VsdHMuYmVnaW4oKTsKICAg
ICAgICAgcmV0dXJuIGl0ZXJhdG9yID09IHJlc3VsdHMuZW5kKCkgfHwgKytpdGVyYXRvciA9PSBy
ZXN1bHRzLmVuZCgpIHx8ICsraXRlcmF0b3IgIT0gcmVzdWx0cy5lbmQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0LmNwcAppbmRleCAzNzIxY2QyOTUxYzk1
Mzg2ZGNlMGNjZTE0ZjQ2YWRiOGNjNjk1YTk4Li5jYmQ5ODQyNWI2YTI3NGQ1MTMwYjRhNzAzMzUx
NmNjNDM4YWFmMDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5
TGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUxpbmVM
YXlvdXQuY3BwCkBAIC04OTYsNyArODk2LDcgQEAgQmlkaVJ1biogTGVnYWN5TGluZUxheW91dDo6
Y29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvclNlZ21lbnQoTGVnYWN5Um9vdEkKICAg
ICBCaWRpUnVuKiBwcmV2aW91c1J1biA9IG51bGxwdHI7CiAgICAgZm9yICg7IHJ1bjsgcnVuID0g
cnVuLT5uZXh0KCkpIHsKICAgICAgICAgYXV0byBjb21wdXRlRXhwYW5zaW9uT3Bwb3J0dW5pdGll
cyA9IFsmZXhwYW5zaW9uT3Bwb3J0dW5pdGllcywgJmV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQs
IHRleHRBbGlnbiwgJmlzQWZ0ZXJFeHBhbnNpb25dIChSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrLAot
ICAgICAgICAgICAgTGVnYWN5SW5saW5lVGV4dEJveCYgdGV4dEJveCwgQmlkaVJ1biogcHJldmlv
dXNSdW4sIEJpZGlSdW4qIG5leHRSdW4sIGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZ1ZpZXcsIFRl
eHREaXJlY3Rpb24gZGlyZWN0aW9uKQorICAgICAgICAgICAgTGVnYWN5SW5saW5lVGV4dEJveCYg
dGV4dEJveCwgQmlkaVJ1biogcHJldmlvdXNSdW4sIEJpZGlSdW4qIG5leHRSdW4sIFN0cmluZ1Zp
ZXcgc3RyaW5nVmlldywgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGlmIChzdHJpbmdWaWV3LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIC8vIEVt
cHR5IHJ1bnMgc2hvdWxkIHN0aWxsIHByb2R1Y2UgYW4gZW50cnkgaW4gZXhwYW5zaW9uT3Bwb3J0
dW5pdGllcyBsaXN0IHNvIHRoYXQgdGhlIG51bWJlciBvZiBpdGVtcyBtYXRjaGVzIHRoZSBudW1i
ZXIgb2YgcnVucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXJzZXJVdGls
aXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhcnNlclV0aWxpdGllcy5jcHAKaW5k
ZXggN2YwZTQ1OTlhNDA5NWZhMDQyYmIzZGU1MWZmOWNlZTdkMmZmNjc5MS4uMDg5NGY5OGUwODg4
OGE3YjhjNmRkNGM0MTFlNjZmMWMyM2Q2MmM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BhcnNlclV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
cnNlclV0aWxpdGllcy5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCBzdGQ6Om9wdGlvbmFsPGZsb2F0
PiBwYXJzZU51bWJlcihTdHJpbmdQYXJzaW5nQnVmZmVyPFVDaGFyPiYgYnVmZmVyLCBTdWZmaXhT
a2lwcAogICAgIHJldHVybiBnZW5lcmljUGFyc2VOdW1iZXIoYnVmZmVyLCBza2lwKTsKIH0KIAot
c3RkOjpvcHRpb25hbDxmbG9hdD4gcGFyc2VOdW1iZXIoY29uc3QgU3RyaW5nVmlldyYgc3RyaW5n
LCBTdWZmaXhTa2lwcGluZ1BvbGljeSBza2lwKQorc3RkOjpvcHRpb25hbDxmbG9hdD4gcGFyc2VO
dW1iZXIoU3RyaW5nVmlldyBzdHJpbmcsIFN1ZmZpeFNraXBwaW5nUG9saWN5IHNraXApCiB7CiAg
ICAgcmV0dXJuIHJlYWRDaGFyYWN0ZXJzRm9yUGFyc2luZyhzdHJpbmcsIFtza2lwXShhdXRvIGJ1
ZmZlcikgLT4gc3RkOjpvcHRpb25hbDxmbG9hdD4gewogICAgICAgICBhdXRvIHJlc3VsdCA9IGdl
bmVyaWNQYXJzZU51bWJlcihidWZmZXIsIHNraXApOwpAQCAtMTkyLDcgKzE5Miw3IEBAIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4gcGFyc2VBcmNGbGFnKFN0cmluZ1BhcnNpbmdCdWZmZXI8VUNoYXI+JiBi
dWZmZXIpCiAgICAgcmV0dXJuIGdlbmVyaWNQYXJzZUFyY0ZsYWcoYnVmZmVyKTsKIH0KIAotc3Rk
OjpvcHRpb25hbDxzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0Pj4gcGFyc2VOdW1iZXJPcHRpb25hbE51
bWJlcihjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmcpCitzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxm
bG9hdCwgZmxvYXQ+PiBwYXJzZU51bWJlck9wdGlvbmFsTnVtYmVyKFN0cmluZ1ZpZXcgc3RyaW5n
KQogewogICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpAQCAtMjE2LDcgKzIxNiw3IEBAIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPGZsb2F0LCBm
bG9hdD4+IHBhcnNlTnVtYmVyT3B0aW9uYWxOdW1iZXIoY29uc3QgU3RyaW5nVmllCiAgICAgfSk7
CiB9CiAKLXN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gcGFyc2VQb2ludChjb25zdCBTdHJpbmdW
aWV3JiBzdHJpbmcpCitzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IHBhcnNlUG9pbnQoU3RyaW5n
VmlldyBzdHJpbmcpCiB7CiAgICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CkBAIC0yMzYsNyArMjM2LDcgQEAgc3RkOjpvcHRpb25hbDxGbG9hdFBv
aW50PiBwYXJzZVBvaW50KGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZykKICAgICB9KTsKIH0KIAot
c3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IHBhcnNlUmVjdChjb25zdCBTdHJpbmdWaWV3JiBzdHJp
bmcpCitzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gcGFyc2VSZWN0KFN0cmluZ1ZpZXcgc3RyaW5n
KQogewogICAgIHJldHVybiByZWFkQ2hhcmFjdGVyc0ZvclBhcnNpbmcoc3RyaW5nLCBbXShhdXRv
IGJ1ZmZlcikgLT4gc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IHsKICAgICAgICAgc2tpcE9wdGlv
bmFsU1ZHU3BhY2VzKGJ1ZmZlcik7CkBAIC0yNTgsNyArMjU4LDcgQEAgc3RkOjpvcHRpb25hbDxG
bG9hdFJlY3Q+IHBhcnNlUmVjdChjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmcpCiAgICAgfSk7CiB9
CiAKLXN0ZDo6b3B0aW9uYWw8SGFzaFNldDxTdHJpbmc+PiBwYXJzZUdseXBoTmFtZShjb25zdCBT
dHJpbmdWaWV3JiBzdHJpbmcpCitzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8U3RyaW5nPj4gcGFyc2VH
bHlwaE5hbWUoU3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAgLy8gRklYTUU6IFBhcnNpbmcgZXJy
b3IgZGV0ZWN0aW9uIGlzIG1pc3NpbmcuCiAKQEAgLTM2MSw3ICszNjEsNyBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxVbmljb2RlUmFuZ2U+
IHBhcnNlVW5pY29kZQogICAgIHJldHVybiByYW5nZTsKIH0KIAotc3RkOjpvcHRpb25hbDxzdGQ6
OnBhaXI8VW5pY29kZVJhbmdlcywgSGFzaFNldDxTdHJpbmc+Pj4gcGFyc2VLZXJuaW5nVW5pY29k
ZVN0cmluZyhjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmcpCitzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFp
cjxVbmljb2RlUmFuZ2VzLCBIYXNoU2V0PFN0cmluZz4+PiBwYXJzZUtlcm5pbmdVbmljb2RlU3Ry
aW5nKFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAgIC8vIEZJWE1FOiBQYXJzaW5nIGVycm9yIGRl
dGVjdGlvbiBpcyBtaXNzaW5nLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UGFyc2VyVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFyc2VyVXRpbGl0aWVz
LmgKaW5kZXggYWJkYzBiOTZmNGI4NzliMTEzZTVmY2QzMjE0YmIzYjU4MGI3ODU4NS4uMDA3YmZm
MDNjMmQ1NmQ1MGIzMGI1ODA1MzM1YzkxMGUxZDdmMzQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhcnNlclV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYXJzZXJVdGlsaXRpZXMuaApAQCAtMzksMjEgKzM5LDIxIEBAIGVudW0gY2xhc3MgU3VmZml4
U2tpcHBpbmdQb2xpY3kgewogCiBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBwYXJzZU51bWJlcihTdHJp
bmdQYXJzaW5nQnVmZmVyPExDaGFyPiYsIFN1ZmZpeFNraXBwaW5nUG9saWN5ID0gU3VmZml4U2tp
cHBpbmdQb2xpY3k6OlNraXApOwogc3RkOjpvcHRpb25hbDxmbG9hdD4gcGFyc2VOdW1iZXIoU3Ry
aW5nUGFyc2luZ0J1ZmZlcjxVQ2hhcj4mLCBTdWZmaXhTa2lwcGluZ1BvbGljeSA9IFN1ZmZpeFNr
aXBwaW5nUG9saWN5OjpTa2lwKTsKLXN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHBhcnNlTnVtYmVyKGNv
bnN0IFN0cmluZ1ZpZXcmLCBTdWZmaXhTa2lwcGluZ1BvbGljeSA9IFN1ZmZpeFNraXBwaW5nUG9s
aWN5OjpTa2lwKTsKK3N0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHBhcnNlTnVtYmVyKFN0cmluZ1ZpZXcs
IFN1ZmZpeFNraXBwaW5nUG9saWN5ID0gU3VmZml4U2tpcHBpbmdQb2xpY3k6OlNraXApOwogCi1z
dGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+PiBwYXJzZU51bWJlck9wdGlvbmFs
TnVtYmVyKGNvbnN0IFN0cmluZ1ZpZXcmKTsKK3N0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPGZsb2F0
LCBmbG9hdD4+IHBhcnNlTnVtYmVyT3B0aW9uYWxOdW1iZXIoU3RyaW5nVmlldyk7CiAKIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4gcGFyc2VBcmNGbGFnKFN0cmluZ1BhcnNpbmdCdWZmZXI8TENoYXI+Jik7
CiBzdGQ6Om9wdGlvbmFsPGJvb2w+IHBhcnNlQXJjRmxhZyhTdHJpbmdQYXJzaW5nQnVmZmVyPFVD
aGFyPiYpOwogCi1zdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IHBhcnNlUG9pbnQoY29uc3QgU3Ry
aW5nVmlldyYpOwotc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IHBhcnNlUmVjdChjb25zdCBTdHJp
bmdWaWV3Jik7CitzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IHBhcnNlUG9pbnQoU3RyaW5nVmll
dyk7CitzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gcGFyc2VSZWN0KFN0cmluZ1ZpZXcpOwogCiBz
dGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IHBhcnNlRmxvYXRQb2ludChTdHJpbmdQYXJzaW5nQnVm
ZmVyPExDaGFyPiYpOwogc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBwYXJzZUZsb2F0UG9pbnQo
U3RyaW5nUGFyc2luZ0J1ZmZlcjxVQ2hhcj4mKTsKIAotc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8
VW5pY29kZVJhbmdlcywgSGFzaFNldDxTdHJpbmc+Pj4gcGFyc2VLZXJuaW5nVW5pY29kZVN0cmlu
Zyhjb25zdCBTdHJpbmdWaWV3Jik7Ci1zdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8U3RyaW5nPj4gcGFy
c2VHbHlwaE5hbWUoY29uc3QgU3RyaW5nVmlldyYpOworc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8
VW5pY29kZVJhbmdlcywgSGFzaFNldDxTdHJpbmc+Pj4gcGFyc2VLZXJuaW5nVW5pY29kZVN0cmlu
ZyhTdHJpbmdWaWV3KTsKK3N0ZDo6b3B0aW9uYWw8SGFzaFNldDxTdHJpbmc+PiBwYXJzZUdseXBo
TmFtZShTdHJpbmdWaWV3KTsKIAogCiAvLyBTVkcgYWxsb3dzIHNldmVyYWwgZGlmZmVyZW50IHdo
aXRlc3BhY2UgY2hhcmFjdGVyczoK
</data>

          </attachment>
      

    </bug>

</bugzilla>