<?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>214251</bug_id>
          
          <creation_ts>2020-07-13 02:49:27 -0700</creation_ts>
          <short_desc>[GTK] Prepare unit tests for GTK4</short_desc>
          <delta_ts>2020-07-21 01:09:13 -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>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk, InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>210100</blocked>
    
    <blocked>214344</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aperez</cc>
    
    <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1670993</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-07-13 02:49:27 -0700</bug_when>
    <thetext>In GTK there isn&apos;t GTK_WINDOW_POPUP and we can&apos;t create GdkEvents, so we need to use toplevel windows everywhere and use the new internal api to synthesize events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670999</commentid>
    <comment_count>1</comment_count>
      <attachid>404140</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-07-13 03:24:20 -0700</bug_when>
    <thetext>Created attachment 404140
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671000</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-07-13 03:25:08 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673092</commentid>
    <comment_count>3</comment_count>
      <attachid>404140</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-07-20 09:06:53 -0700</bug_when>
    <thetext>Comment on attachment 404140
Patch

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

&gt; Tools/TestWebKitAPI/glib/WebKitGLib/gtk/WebViewTestGtk.cpp:45
&gt; +        g_main_context_iteration(nullptr, TRUE);

Wow, it&apos;s amazing that it&apos;s 2020 and we were still using
the gtk_* main loop functions 😅️</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673395</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-07-21 01:08:27 -0700</bug_when>
    <thetext>Committed r264647: &lt;https://trac.webkit.org/changeset/264647&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673396</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-21 01:09:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/65871310&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404140</attachid>
            <date>2020-07-13 03:24:20 -0700</date>
            <delta_ts>2020-07-20 09:06:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-unit-tests-gtk4-prep.diff</filename>
            <type>text/plain</type>
            <size>56055</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggZTI4NzJiZTNhODcyLi41N2Q5OTBmM2EyOWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTkgQEAKKzIwMjAtMDctMTMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtHVEtdIFByZXBhcmUgdW5pdCB0ZXN0cyBmb3IgR1RLNAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MjUxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBpdCBwb3Nz
aWJsZSB0byB0ZXN0IGlucHV0IG1ldGhvZHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2ds
aWIvSW5wdXRNZXRob2RGaWx0ZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9JbnB1
dE1ldGhvZEZpbHRlckd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OklucHV0TWV0aG9kRmlsdGVy
OjpmaWx0ZXJLZXlFdmVudCk6IEFkZGVkIHRvIHJlY2VpdmUgdGhlIGtleSBldmVudCBwcm9wZXJ0
aWVzIGluc3RlYWQgb2YgdGhlIEdka0V2ZW50LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlU3ludGhl
c2l6ZU1vdXNlRXZlbnQpOiBDcmVhdGUgYSBHZGtFdmVudCBmb3IgcmlnaHQgY2xpY2tzIHNpbmNl
IGl0J3MgbmVlZGVkIGJ5IEdUSzMgQVBJLgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VTeW50
aGVzaXplS2V5RXZlbnQpOiBTZW5kIGtleSBwcmVzcyBhbmQgcmVsZWFzZSBldmVudHMgdG8gdGhl
IElNIGZpbHRlci4KKwogMjAyMC0wNy0xMyAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBXVFIgYW5kIEFQSS10ZXN0cyB0aW1pbmcgb3V0
IGFmdGVyIHIyNjQyODMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL0lucHV0TWV0aG9kRmlsdGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9JbnB1dE1ldGhvZEZpbHRlci5oCmluZGV4IDc3Yzg0YWIyNGRjZS4uNzBhN2QwYzA2YmVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JbnB1dE1ldGhvZEZp
bHRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0lucHV0TWV0aG9k
RmlsdGVyLmgKQEAgLTY3LDYgKzY3LDEwIEBAIHB1YmxpYzoKICAgICB9OwogICAgIEZpbHRlclJl
c3VsdCBmaWx0ZXJLZXlFdmVudChQbGF0Zm9ybUV2ZW50S2V5Kik7CiAKKyNpZiBQTEFURk9STShH
VEspCisgICAgRmlsdGVyUmVzdWx0IGZpbHRlcktleUV2ZW50KHVuc2lnbmVkIHR5cGUsIHVuc2ln
bmVkIGtleXZhbCwgdW5zaWduZWQga2V5Y29kZSwgdW5zaWduZWQgbW9kaWZpZXJzKTsKKyNlbmRp
ZgorCiAgICAgdm9pZCBub3RpZnlGb2N1c2VkSW4oKTsKICAgICB2b2lkIG5vdGlmeUZvY3VzZWRP
dXQoKTsKICAgICB2b2lkIG5vdGlmeU1vdXNlQnV0dG9uUHJlc3MoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvSW5wdXRNZXRob2RGaWx0ZXJHdGsuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9JbnB1dE1ldGhvZEZpbHRlckd0ay5jcHAK
aW5kZXggOGEwOGY2ZjA0NDc0Li40Y2U2NjYzYmE3NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvSW5wdXRNZXRob2RGaWx0ZXJHdGsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvSW5wdXRNZXRob2RGaWx0ZXJHdGsuY3BwCkBAIC0y
MSw2ICsyMSw3IEBACiAjaW5jbHVkZSAiSW5wdXRNZXRob2RGaWx0ZXIuaCIKIAogI2luY2x1ZGUg
IldlYktpdElucHV0TWV0aG9kQ29udGV4dFByaXZhdGUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dV
bmlxdWVQdHJHdGsuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRlIDxn
ZGsvZ2RrLmg+CiAKQEAgLTQxLDQgKzQyLDI3IEBAIGJvb2wgSW5wdXRNZXRob2RGaWx0ZXI6OnBs
YXRmb3JtRXZlbnRLZXlJc0tleVByZXNzKFBsYXRmb3JtRXZlbnRLZXkqIGV2ZW50KSBjb25zCiAg
ICAgcmV0dXJuIGdka19ldmVudF9nZXRfZXZlbnRfdHlwZShldmVudCkgPT0gR0RLX0tFWV9QUkVT
UzsKIH0KIAorSW5wdXRNZXRob2RGaWx0ZXI6OkZpbHRlclJlc3VsdCBJbnB1dE1ldGhvZEZpbHRl
cjo6ZmlsdGVyS2V5RXZlbnQodW5zaWduZWQgdHlwZSwgdW5zaWduZWQga2V5dmFsLCB1bnNpZ25l
ZCBrZXljb2RlLCB1bnNpZ25lZCBtb2RpZmllcnMpCit7CisgICAgaWYgKCFpc0VuYWJsZWQoKSB8
fCAhbV9jb250ZXh0KQorICAgICAgICByZXR1cm4geyB9OworCisjaWYgIVVTRShHVEs0KQorICAg
IGF1dG8qIHdlYlZpZXcgPSB3ZWJraXRJbnB1dE1ldGhvZENvbnRleHRHZXRXZWJWaWV3KG1fY29u
dGV4dC5nZXQoKSk7CisgICAgQVNTRVJUKHdlYlZpZXcpOworCisgICAgR1VuaXF1ZVB0cjxHZGtF
dmVudD4gZXZlbnQoZ2RrX2V2ZW50X25ldyhzdGF0aWNfY2FzdDxHZGtFdmVudFR5cGU+KHR5cGUp
KSk7CisgICAgZXZlbnQtPmtleS53aW5kb3cgPSBndGtfd2lkZ2V0X2dldF93aW5kb3coR1RLX1dJ
REdFVCh3ZWJWaWV3KSk7CisgICAgZ19vYmplY3RfcmVmKGV2ZW50LT5rZXkud2luZG93KTsKKyAg
ICBldmVudC0+a2V5LnRpbWUgPSBHREtfQ1VSUkVOVF9USU1FOworICAgIGV2ZW50LT5rZXkua2V5
dmFsID0ga2V5dmFsOworICAgIGV2ZW50LT5rZXkuaGFyZHdhcmVfa2V5Y29kZSA9IGtleWNvZGU7
CisgICAgZXZlbnQtPmtleS5zdGF0ZSA9IG1vZGlmaWVyczsKKyAgICBnZGtfZXZlbnRfc2V0X2Rl
dmljZShldmVudC5nZXQoKSwgZ2RrX3NlYXRfZ2V0X2tleWJvYXJkKGdka19kaXNwbGF5X2dldF9k
ZWZhdWx0X3NlYXQoZ3RrX3dpZGdldF9nZXRfZGlzcGxheShHVEtfV0lER0VUKHdlYlZpZXcpKSkp
KTsKKyAgICByZXR1cm4gZmlsdGVyS2V5RXZlbnQoZXZlbnQuZ2V0KCkpOworI2Vsc2UKKyAgICBy
ZXR1cm4geyB9OworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApp
bmRleCBiODQ4MTdkZmIxZjUuLjFlNzIwNjVjZjk2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKQEAgLTI1NDUsNiAr
MjU0NSwyNSBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU3ludGhlc2l6ZU1vdXNlRXZlbnQoV2Vi
S2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBNb3VzZQogICAgIGNhc2UgTW91c2VFdmVudFR5
cGU6OlByZXNzOgogICAgICAgICB3ZWJFdmVudFR5cGUgPSBXZWJFdmVudDo6TW91c2VEb3duOwog
ICAgICAgICBwcml2LT5pbnB1dE1ldGhvZEZpbHRlci5jYW5jZWxDb21wb3NpdGlvbigpOworI2lm
ICFVU0UoR1RLNCkKKyAgICAgICAgaWYgKHdlYkV2ZW50QnV0dG9uID09IFdlYk1vdXNlRXZlbnQ6
OlJpZ2h0QnV0dG9uKSB7CisgICAgICAgICAgICBHVW5pcXVlUHRyPEdka0V2ZW50PiBldmVudChn
ZGtfZXZlbnRfbmV3KEdES19CVVRUT05fUFJFU1MpKTsKKyAgICAgICAgICAgIGV2ZW50LT5idXR0
b24ud2luZG93ID0gZ3RrX3dpZGdldF9nZXRfd2luZG93KEdUS19XSURHRVQod2ViVmlld0Jhc2Up
KTsKKyAgICAgICAgICAgIGdfb2JqZWN0X3JlZihldmVudC0+YnV0dG9uLndpbmRvdyk7CisgICAg
ICAgICAgICBldmVudC0+YnV0dG9uLnRpbWUgPSBHREtfQ1VSUkVOVF9USU1FOworICAgICAgICAg
ICAgZXZlbnQtPmJ1dHRvbi54ID0geDsKKyAgICAgICAgICAgIGV2ZW50LT5idXR0b24ueSA9IHk7
CisgICAgICAgICAgICBldmVudC0+YnV0dG9uLmF4ZXMgPSAwOworICAgICAgICAgICAgZXZlbnQt
PmJ1dHRvbi5zdGF0ZSA9IG1vZGlmaWVyczsKKyAgICAgICAgICAgIGV2ZW50LT5idXR0b24uYnV0
dG9uID0gYnV0dG9uOworICAgICAgICAgICAgZXZlbnQtPmJ1dHRvbi5kZXZpY2UgPSBnZGtfc2Vh
dF9nZXRfcG9pbnRlcihnZGtfZGlzcGxheV9nZXRfZGVmYXVsdF9zZWF0KGd0a193aWRnZXRfZ2V0
X2Rpc3BsYXkoR1RLX1dJREdFVCh3ZWJWaWV3QmFzZSkpKSk7CisgICAgICAgICAgICBpbnQgeFJv
b3QsIHlSb290OworICAgICAgICAgICAgZ2RrX3dpbmRvd19nZXRfcm9vdF9jb29yZHMoZXZlbnQt
PmJ1dHRvbi53aW5kb3csIHgsIHksICZ4Um9vdCwgJnlSb290KTsKKyAgICAgICAgICAgIGV2ZW50
LT5idXR0b24ueF9yb290ID0geFJvb3Q7CisgICAgICAgICAgICBldmVudC0+YnV0dG9uLnlfcm9v
dCA9IHlSb290OworICAgICAgICAgICAgcHJpdi0+Y29udGV4dE1lbnVFdmVudCA9IFdURk1vdmUo
ZXZlbnQpOworICAgICAgICB9CisjZW5kaWYKICAgICAgICAgZ3RrX3dpZGdldF9ncmFiX2ZvY3Vz
KEdUS19XSURHRVQod2ViVmlld0Jhc2UpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNb3Vz
ZUV2ZW50VHlwZTo6UmVsZWFzZToKQEAgLTI2MDMsOCArMjYyMiwyMSBAQCB2b2lkIHdlYmtpdFdl
YlZpZXdCYXNlU3ludGhlc2l6ZUtleUV2ZW50KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFz
ZSwgS2V5RXZlbgogI2VuZGlmCiAKICNpZiAhVVNFKEdUSzQpCisgICAgICAgIGlmIChwcml2LT5h
Y3RpdmVDb250ZXh0TWVudVByb3h5ICYmIGtleXZhbCA9PSBHREtfS0VZX0VzY2FwZSkgeworICAg
ICAgICAgICAgZ3RrX21lbnVfc2hlbGxfZGVhY3RpdmF0ZShHVEtfTUVOVV9TSEVMTChwcml2LT5h
Y3RpdmVDb250ZXh0TWVudVByb3h5LT5ndGtXaWRnZXQoKSkpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKICAgICAgICAgaWYgKGtleXZhbCA9PSBHREtfS0VZX01lbnUpIHsKLSAg
ICAgICAgICAgIHdlYmtpdFdlYlZpZXdCYXNlUG9wdXBNZW51KEdUS19XSURHRVQod2ViVmlld0Jh
c2UpKTsKKyAgICAgICAgICAgIEdVbmlxdWVQdHI8R2RrRXZlbnQ+IGV2ZW50KGdka19ldmVudF9u
ZXcoR0RLX0tFWV9QUkVTUykpOworICAgICAgICAgICAgZXZlbnQtPmtleS53aW5kb3cgPSBndGtf
d2lkZ2V0X2dldF93aW5kb3coR1RLX1dJREdFVCh3ZWJWaWV3QmFzZSkpOworICAgICAgICAgICAg
Z19vYmplY3RfcmVmKGV2ZW50LT5rZXkud2luZG93KTsKKyAgICAgICAgICAgIGV2ZW50LT5rZXku
dGltZSA9IEdES19DVVJSRU5UX1RJTUU7CisgICAgICAgICAgICBldmVudC0+a2V5LmtleXZhbCA9
IGtleXZhbDsKKyAgICAgICAgICAgIGV2ZW50LT5rZXkuc3RhdGUgPSBtb2RpZmllcnM7CisgICAg
ICAgICAgICBnZGtfZXZlbnRfc2V0X2RldmljZShldmVudC5nZXQoKSwgZ2RrX3NlYXRfZ2V0X2tl
eWJvYXJkKGdka19kaXNwbGF5X2dldF9kZWZhdWx0X3NlYXQoZ3RrX3dpZGdldF9nZXRfZGlzcGxh
eShHVEtfV0lER0VUKHdlYlZpZXdCYXNlKSkpKSk7CisgICAgICAgICAgICBwcml2LT5jb250ZXh0
TWVudUV2ZW50ID0gV1RGTW92ZShldmVudCk7CisgICAgICAgICAgICBwcml2LT5wYWdlUHJveHkt
PmhhbmRsZUNvbnRleHRNZW51S2V5RXZlbnQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogI2VuZGlmCkBAIC0yNjIyLDMxICsyNjU0LDM2IEBAIHZvaWQgd2Via2l0V2ViVmlld0Jh
c2VTeW50aGVzaXplS2V5RXZlbnQoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBLZXlF
dmVuCiAgICAgYXV0byB3ZWJFdmVudE1vZGlmaWVycyA9IHRvV2ViS2l0TW9kaWZpZXJzKG1vZGlm
aWVycyk7CiAKICAgICBpZiAodHlwZSAhPSBLZXlFdmVudFR5cGU6OlJlbGVhc2UpIHsKLSAgICAg
ICAgcHJpdi0+cGFnZVByb3h5LT5oYW5kbGVLZXlib2FyZEV2ZW50KE5hdGl2ZVdlYktleWJvYXJk
RXZlbnQoCi0gICAgICAgICAgICBXZWJFdmVudDo6S2V5RG93biwKLSAgICAgICAgICAgIFBsYXRm
b3JtS2V5Ym9hcmRFdmVudDo6c2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGtleXZhbCksCi0gICAgICAg
ICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmtleVZhbHVlRm9yR2RrS2V5Q29kZShrZXl2YWwp
LAotICAgICAgICAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjprZXlDb2RlRm9ySGFyZHdhcmVL
ZXlDb2RlKGtleWNvZGUpLAotICAgICAgICAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjprZXlJ
ZGVudGlmaWVyRm9yR2RrS2V5Q29kZShrZXl2YWwpLAotICAgICAgICAgICAgUGxhdGZvcm1LZXli
b2FyZEV2ZW50Ojp3aW5kb3dzS2V5Q29kZUZvckdka0tleUNvZGUoa2V5dmFsKSwKLSAgICAgICAg
ICAgIHN0YXRpY19jYXN0PGludD4oa2V5dmFsKSwKLSAgICAgICAgICAgIHByaXYtPmtleUJpbmRp
bmdUcmFuc2xhdG9yLmNvbW1hbmRzRm9yS2V5dmFsKGtleXZhbCwgbW9kaWZpZXJzKSwKLSAgICAg
ICAgICAgIGtleXZhbCA+PSBHREtfS0VZX0tQX1NwYWNlICYmIGtleXZhbCA8PSBHREtfS0VZX0tQ
XzksCi0gICAgICAgICAgICB3ZWJFdmVudE1vZGlmaWVycykpOworICAgICAgICBhdXRvIGZpbHRl
clJlc3VsdCA9IHByaXYtPmlucHV0TWV0aG9kRmlsdGVyLmZpbHRlcktleUV2ZW50KEdES19LRVlf
UFJFU1MsIGtleXZhbCwga2V5Y29kZSwgbW9kaWZpZXJzKTsKKyAgICAgICAgaWYgKCFmaWx0ZXJS
ZXN1bHQuaGFuZGxlZCkgeworICAgICAgICAgICAgcHJpdi0+cGFnZVByb3h5LT5oYW5kbGVLZXli
b2FyZEV2ZW50KE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoCisgICAgICAgICAgICAgICAgV2ViRXZl
bnQ6OktleURvd24sCisgICAgICAgICAgICAgICAgZmlsdGVyUmVzdWx0LmtleVRleHQuaXNOdWxs
KCkgPyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OnNpbmdsZUNoYXJhY3RlclN0cmluZyhrZXl2YWwp
IDogZmlsdGVyUmVzdWx0LmtleVRleHQsCisgICAgICAgICAgICAgICAgUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50OjprZXlWYWx1ZUZvckdka0tleUNvZGUoa2V5dmFsKSwKKyAgICAgICAgICAgICAgICBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmtleUNvZGVGb3JIYXJkd2FyZUtleUNvZGUoa2V5Y29kZSks
CisgICAgICAgICAgICAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjprZXlJZGVudGlmaWVyRm9y
R2RrS2V5Q29kZShrZXl2YWwpLAorICAgICAgICAgICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDo6d2luZG93c0tleUNvZGVGb3JHZGtLZXlDb2RlKGtleXZhbCksCisgICAgICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8aW50PihrZXl2YWwpLAorICAgICAgICAgICAgICAgIHByaXYtPmtleUJpbmRp
bmdUcmFuc2xhdG9yLmNvbW1hbmRzRm9yS2V5dmFsKGtleXZhbCwgbW9kaWZpZXJzKSwKKyAgICAg
ICAgICAgICAgICBrZXl2YWwgPj0gR0RLX0tFWV9LUF9TcGFjZSAmJiBrZXl2YWwgPD0gR0RLX0tF
WV9LUF85LAorICAgICAgICAgICAgICAgIHdlYkV2ZW50TW9kaWZpZXJzKSk7CisgICAgICAgIH0K
ICAgICB9CiAKICAgICBpZiAodHlwZSAhPSBLZXlFdmVudFR5cGU6OlByZXNzKSB7Ci0gICAgICAg
IHByaXYtPnBhZ2VQcm94eS0+aGFuZGxlS2V5Ym9hcmRFdmVudChOYXRpdmVXZWJLZXlib2FyZEV2
ZW50KAotICAgICAgICAgICAgV2ViRXZlbnQ6OktleVVwLAotICAgICAgICAgICAgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpzaW5nbGVDaGFyYWN0ZXJTdHJpbmcoa2V5dmFsKSwKLSAgICAgICAgICAg
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6a2V5VmFsdWVGb3JHZGtLZXlDb2RlKGtleXZhbCksCi0g
ICAgICAgICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmtleUNvZGVGb3JIYXJkd2FyZUtleUNv
ZGUoa2V5Y29kZSksCi0gICAgICAgICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmtleUlkZW50
aWZpZXJGb3JHZGtLZXlDb2RlKGtleXZhbCksCi0gICAgICAgICAgICBQbGF0Zm9ybUtleWJvYXJk
RXZlbnQ6OndpbmRvd3NLZXlDb2RlRm9yR2RrS2V5Q29kZShrZXl2YWwpLAotICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8aW50PihrZXl2YWwpLAotICAgICAgICAgICAgeyB9LAotICAgICAgICAgICAg
a2V5dmFsID49IEdES19LRVlfS1BfU3BhY2UgJiYga2V5dmFsIDw9IEdES19LRVlfS1BfOSwKLSAg
ICAgICAgICAgIHdlYkV2ZW50TW9kaWZpZXJzKSk7CisgICAgICAgIGlmICghcHJpdi0+aW5wdXRN
ZXRob2RGaWx0ZXIuZmlsdGVyS2V5RXZlbnQoR0RLX0tFWV9SRUxFQVNFLCBrZXl2YWwsIGtleWNv
ZGUsIG1vZGlmaWVycykuaGFuZGxlZCkgeworICAgICAgICAgICAgcHJpdi0+cGFnZVByb3h5LT5o
YW5kbGVLZXlib2FyZEV2ZW50KE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoCisgICAgICAgICAgICAg
ICAgV2ViRXZlbnQ6OktleVVwLAorICAgICAgICAgICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDo6c2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGtleXZhbCksCisgICAgICAgICAgICAgICAgUGxhdGZv
cm1LZXlib2FyZEV2ZW50OjprZXlWYWx1ZUZvckdka0tleUNvZGUoa2V5dmFsKSwKKyAgICAgICAg
ICAgICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmtleUNvZGVGb3JIYXJkd2FyZUtleUNvZGUo
a2V5Y29kZSksCisgICAgICAgICAgICAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjprZXlJZGVu
dGlmaWVyRm9yR2RrS2V5Q29kZShrZXl2YWwpLAorICAgICAgICAgICAgICAgIFBsYXRmb3JtS2V5
Ym9hcmRFdmVudDo6d2luZG93c0tleUNvZGVGb3JHZGtLZXlDb2RlKGtleXZhbCksCisgICAgICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihrZXl2YWwpLAorICAgICAgICAgICAgICAgIHsgfSwK
KyAgICAgICAgICAgICAgICBrZXl2YWwgPj0gR0RLX0tFWV9LUF9TcGFjZSAmJiBrZXl2YWwgPD0g
R0RLX0tFWV9LUF85LAorICAgICAgICAgICAgICAgIHdlYkV2ZW50TW9kaWZpZXJzKSk7CisgICAg
ICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCA2ZjM5ZmMzNWNlZDIuLmY1YThiOTZhNDllZCAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDIw
LTA3LTEzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAg
ICAgICBbR1RLXSBQcmVwYXJlIHVuaXQgdGVzdHMgZm9yIEdUSzQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDI1MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIEdUSzQgdGhlcmUgaXNuJ3QgR1RLX1dJ
TkRPV19QT1BVUCBhbmQgd2UgY2FuJ3QgY3JlYXRlIEdka0V2ZW50cywgc28gd2UgbmVlZCB0byB1
c2UgdG9wbGV2ZWwgd2luZG93cworICAgICAgICBldmVyeXdoZXJlIGFuZCB1c2UgdGhlIG5ldyBp
bnRlcm5hbCBhcGkgdG8gc3ludGhlc2l6ZSBldmVudHMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdERvd25sb2Fkcy5jcHA6CisgICAgICAgICh0ZXN0Q29u
dGV4dE1lbnVEb3dubG9hZEFjdGlvbnMpOgorICAgICAgICAodGVzdEJsb2JEb3dubG9hZCk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RJbnB1dE1ldGhvZENv
bnRleHQuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0
T3B0aW9uTWVudS5jcHA6CisgICAgICAgICh0ZXN0T3B0aW9uTWVudVNpbXBsZSk6CisgICAgICAg
ICh0ZXN0T3B0aW9uTWVudUdyb3Vwcyk6CisgICAgICAgICh0ZXN0T3B0aW9uTWVudUFjdGl2YXRl
KToKKyAgICAgICAgKHRlc3RPcHRpb25NZW51U2VsZWN0KToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFVJQ2xpZW50LmNwcDoKKyAgICAgICAgKHRlc3RXZWJW
aWV3Q3JlYXRlTmF2aWdhdGlvbkRhdGEpOgorICAgICAgICAodGVzdFdlYlZpZXdKYXZhU2NyaXB0
RGlhbG9ncyk6CisgICAgICAgICh0ZXN0V2ViVmlld09wZW5XaW5kb3dOb0RlZmF1bHRTaXplKToK
KyAgICAgICAgKHRlc3RXZWJWaWV3TW91c2VUYXJnZXQpOgorICAgICAgICAodGVzdFdlYlZpZXdH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0cyk6CisgICAgICAgICh0ZXN0V2ViVmlld1VzZXJN
ZWRpYUVudW1lcmF0ZURldmljZXNQZXJtaXNzaW9uQ2hlY2spOgorICAgICAgICAodGVzdFdlYlZp
ZXdVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdHMpOgorICAgICAgICAodGVzdFdlYlZpZXdBdWRp
b09ubHlVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdHMpOgorICAgICAgICAodGVzdFdlYlZpZXdQ
b2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKHRlc3RXZWJWaWV3RmlsZUNo
b29zZXJSZXF1ZXN0KToKKyAgICAgICAgKHRlc3RXZWJWaWV3Q29sb3JDaG9vc2VyUmVxdWVzdCk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJFeHRlbnNp
b25zLmNwcDoKKyAgICAgICAgKHRlc3RXZWJFeHRlbnNpb25JbnB1dEVsZW1lbnRJc1VzZXJFZGl0
ZWQpOgorICAgICAgICAodGVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdEZp
bmRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHRlc3RGaW5kQ29udHJvbGxlckhpZGUpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0UG9saWN5Q2xp
ZW50LmNwcDoKKyAgICAgICAgKHRlc3RBdXRvcGxheVBvbGljeSk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAg
KHRlc3RXZWJWaWV3RnVsbFNjcmVlbik6CisgICAgICAgICh0ZXN0V2ViVmlld1N1Ym1pdEZvcm0p
OgorICAgICAgICAodGVzdFdlYlZpZXdTbmFwc2hvdCk6CisgICAgICAgICh0ZXN0V2ViVmlld0lz
UGxheWluZ0F1ZGlvKToKKyAgICAgICAgKHRlc3RXZWJWaWV3UHJlZmVycmVkU2l6ZSk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdENvbnRleHRNZW51LmNwcDoK
KyAgICAgICAgKHRlc3RDb250ZXh0TWVudURlZmF1bHRNZW51KToKKyAgICAgICAgKHRlc3RQb3B1
cEV2ZW50U2lnbmFsKToKKyAgICAgICAgKHRlc3RDb250ZXh0TWVudUtleSk6CisgICAgICAgICh0
ZXN0Q29udGV4dE1lbnVQb3B1bGF0ZU1lbnUpOgorICAgICAgICAodGVzdENvbnRleHRNZW51Q3Vz
dG9tTWVudSk6CisgICAgICAgICh0ZXN0Q29udGV4dE1lbnVTdWJNZW51KToKKyAgICAgICAgKHRl
c3RDb250ZXh0TWVudURpc21pc3NlZCk6CisgICAgICAgICh0ZXN0Q29udGV4dE1lbnVXZWJFeHRl
bnNpb25NZW51KToKKyAgICAgICAgKHRlc3RDb250ZXh0TWVudVdlYkV4dGVuc2lvbk5vZGUpOgor
ICAgICAgICAodGVzdENvbnRleHRNZW51TGl2ZVN0cmVhbSk6CisgICAgICAgIChiZWZvcmVBbGwp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RET01ET01XaW5k
b3cuY3BwOgorICAgICAgICAoc2lnbmFsc05vdGlmeUNhbGxiYWNrKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0SW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKHRl
c3RJbnNwZWN0b3JEZWZhdWx0KToKKyAgICAgICAgKHRlc3RJbnNwZWN0b3JNYW51YWxBdHRhY2hE
ZXRhY2gpOgorICAgICAgICAodGVzdEluc3BlY3RvckN1c3RvbUNvbnRhaW5lckRlc3Ryb3llZCk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdEluc3BlY3RvclNl
cnZlci5jcHA6CisgICAgICAgICh0ZXN0SW5zcGVjdG9yU2VydmVyUGFnZUxpc3QpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RQcmludGluZy5jcHA6CisgICAg
ICAgICh0ZXN0UHJpbnRDdXN0b21XaWRnZXQpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R3RrL1Rlc3RXZWJWaWV3RWRpdG9yLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5oOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvZ2xpYi9XZWJLaXRHTGliL2d0ay9XZWJWaWV3VGVzdEd0ay5jcHA6CisgICAgICAgIChXZWJW
aWV3VGVzdDo6cXVpdE1haW5Mb29wQWZ0ZXJQcm9jZXNzaW5nUGVuZGluZ0V2ZW50cyk6CisgICAg
ICAgIChXZWJWaWV3VGVzdDo6c2hvd0luV2luZG93KToKKyAgICAgICAgKFdlYlZpZXdUZXN0Ojpt
b3VzZU1vdmVUbyk6CisgICAgICAgIChXZWJWaWV3VGVzdDo6Y2xpY2tNb3VzZUJ1dHRvbik6Cisg
ICAgICAgIChXZWJWaWV3VGVzdDo6a2V5U3Ryb2tlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L2dsaWIvV2ViS2l0R0xpYi93cGUvV2ViVmlld1Rlc3RXUEUuY3BwOgorICAgICAgICAoV2ViVmll
d1Rlc3Q6OnNob3dJbldpbmRvdyk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9ndGsvUGxhdGZv
cm1XZWJWaWV3R3RrLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRvV2ViS2l0R0xpYkFQ
SSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpQbGF0Zm9ybVdlYlZpZXc6OnNpbXVsYXRlU3Bh
Y2ViYXJLZXlQcmVzcyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpQbGF0Zm9ybVdlYlZpZXc6
OnNpbXVsYXRlQWx0S2V5UHJlc3MpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6UGxhdGZvcm1X
ZWJWaWV3OjpzaW11bGF0ZVJpZ2h0Q2xpY2spOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6UGxh
dGZvcm1XZWJWaWV3OjpzaW11bGF0ZU1vdXNlTW92ZSk6CisKIDIwMjAtMDctMTMgIFphbiBEb2Jl
cnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIFN0aWNrIHRvIGRl
ZmF1bHQgR2xpYiBzb3VyY2UgcHJpb3JpdGllcyBpbiBIZWFkbGVzc1ZpZXdCYWNrZW5kLCBXaW5k
b3dWaWV3QmFja2VuZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL1Rlc3REb3dubG9hZHMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL1Rlc3REb3dubG9hZHMuY3BwCmluZGV4IGY3MzNlODE4M2FjZi4uYjBmMWI4NTAyOGFh
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdERv
d25sb2Fkcy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rl
c3REb3dubG9hZHMuY3BwCkBAIC01NTksOCArNTU5LDQxIEBAIHB1YmxpYzoKICAgICAgICAgZ19t
YWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOwogICAgIH0KIAorI2lmIFBMQVRGT1JNKEdUSykKKyAg
ICBzdGF0aWMgZ2Jvb2xlYW4gY29udGV4dE1lbnVDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3LCBXZWJLaXRDb250ZXh0TWVudSogY29udGV4dE1lbnUsIEdka0V2ZW50KiwgV2ViS2l0SGl0
VGVzdFJlc3VsdCogaGl0VGVzdFJlc3VsdCwgV2ViVmlld0Rvd25sb2FkVGVzdCogdGVzdCkKKyAg
ICB7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0lTX0hJVF9URVNUX1JFU1VMVChoaXRU
ZXN0UmVzdWx0KSk7CisgICAgICAgIEdMaXN0KiBpdGVtcyA9IHdlYmtpdF9jb250ZXh0X21lbnVf
Z2V0X2l0ZW1zKGNvbnRleHRNZW51KTsKKyAgICAgICAgZm9yIChHTGlzdCogbCA9IGl0ZW1zOyBs
OyBsID0gZ19saXN0X25leHQobCkpIHsKKyAgICAgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lU
X0lTX0NPTlRFWFRfTUVOVV9JVEVNKGwtPmRhdGEpKTsKKyAgICAgICAgICAgIGF1dG8qIGl0ZW0g
PSBXRUJLSVRfQ09OVEVYVF9NRU5VX0lURU0obC0+ZGF0YSk7CisgICAgICAgICAgICBpZiAod2Vi
a2l0X2NvbnRleHRfbWVudV9pdGVtX2dldF9zdG9ja19hY3Rpb24oaXRlbSkgPT0gV0VCS0lUX0NP
TlRFWFRfTUVOVV9BQ1RJT05fRE9XTkxPQURfTElOS19UT19ESVNLKSB7CisgICAgICAgICAgICAg
ICAgdGVzdC0+bV9jb250ZXh0TWVudURvd25sb2FkSXRlbSA9IGl0ZW07CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgdGVzdC0+cXVpdE1h
aW5Mb29wKCk7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICBXZWJLaXRDb250
ZXh0TWVudUl0ZW0qIHNob3dDb250ZXh0TWVudUFuZEdldERvd25sb2FkSXRlbShpbnQgeCwgaW50
IHkpCisgICAgeworICAgICAgICBtX2NvbnRleHRNZW51RG93bmxvYWRJdGVtID0gbnVsbHB0cjsK
KyAgICAgICAgYXV0byBpZCA9IGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAiY29udGV4dC1t
ZW51IiwgR19DQUxMQkFDSyhjb250ZXh0TWVudUNhbGxiYWNrKSwgdGhpcyk7CisgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgeCwgeV0geworICAgICAgICAgICAgY2xpY2tN
b3VzZUJ1dHRvbih4LCB5LCAzKTsKKyAgICAgICAgfSk7CisgICAgICAgIGdfbWFpbl9sb29wX3J1
bihtX21haW5Mb29wKTsKKyAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KG1fd2Vi
VmlldywgaWQpOworICAgICAgICByZXR1cm4gbV9jb250ZXh0TWVudURvd25sb2FkSXRlbS5nZXQo
KTsKKyAgICB9CisjZW5kaWYKKwogICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IG1fZG93bmxv
YWQ7CiAgICAgYm9vbCBtX3Nob3VsZERlbGF5RGVjaWRlRGVzdGluYXRpb24geyBmYWxzZSB9Owor
I2lmIFBMQVRGT1JNKEdUSykKKyAgICBHUmVmUHRyPFdlYktpdENvbnRleHRNZW51SXRlbT4gbV9j
b250ZXh0TWVudURvd25sb2FkSXRlbTsKKyNlbmRpZgogfTsKIAogc3RhdGljIHZvaWQgdGVzdFdl
YlZpZXdEb3dubG9hZFVSSShXZWJWaWV3RG93bmxvYWRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
KQpAQCAtNjg5LDUxICs3MjIsMTggQEAgc3RhdGljIHZvaWQgdGVzdERvd25sb2FkTUlNRVR5cGUo
RG93bmxvYWRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogfQogCiAjaWYgUExBVEZPUk0oR1RL
KQotc3RhdGljIGdib29sZWFuIGNvbnRleHRNZW51Q2FsbGJhY2soV2ViS2l0V2ViVmlldyogd2Vi
VmlldywgV2ViS2l0Q29udGV4dE1lbnUqIGNvbnRleHRNZW51LCBHZGtFdmVudCosIFdlYktpdEhp
dFRlc3RSZXN1bHQqIGhpdFRlc3RSZXN1bHQsIFdlYlZpZXdEb3dubG9hZFRlc3QqIHRlc3QpCi17
Ci0gICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfSVNfSElUX1RFU1RfUkVTVUxUKGhpdFRlc3RSZXN1
bHQpKTsKLSAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9p
c19saW5rKGhpdFRlc3RSZXN1bHQpKTsKLSAgICBHTGlzdCogaXRlbXMgPSB3ZWJraXRfY29udGV4
dF9tZW51X2dldF9pdGVtcyhjb250ZXh0TWVudSk7Ci0gICAgR1JlZlB0cjxXZWJLaXRDb250ZXh0
TWVudUl0ZW0+IGNvbnRleHRNZW51SXRlbTsKLSAgICBmb3IgKEdMaXN0KiBsID0gaXRlbXM7IGw7
IGwgPSBnX2xpc3RfbmV4dChsKSkgewotICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19D
T05URVhUX01FTlVfSVRFTShsLT5kYXRhKSk7Ci0gICAgICAgIGF1dG8qIGl0ZW0gPSBXRUJLSVRf
Q09OVEVYVF9NRU5VX0lURU0obC0+ZGF0YSk7Ci0gICAgICAgIGlmICh3ZWJraXRfY29udGV4dF9t
ZW51X2l0ZW1fZ2V0X3N0b2NrX2FjdGlvbihpdGVtKSA9PSBXRUJLSVRfQ09OVEVYVF9NRU5VX0FD
VElPTl9ET1dOTE9BRF9MSU5LX1RPX0RJU0spIHsKLSAgICAgICAgICAgIGNvbnRleHRNZW51SXRl
bSA9IGl0ZW07Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICBnX2Fz
c2VydF9ub25udWxsKGNvbnRleHRNZW51SXRlbS5nZXQoKSk7Ci0gICAgd2Via2l0X2NvbnRleHRf
bWVudV9yZW1vdmVfYWxsKGNvbnRleHRNZW51KTsKLSAgICB3ZWJraXRfY29udGV4dF9tZW51X2Fw
cGVuZChjb250ZXh0TWVudSwgY29udGV4dE1lbnVJdGVtLmdldCgpKTsKLSAgICB0ZXN0LT5xdWl0
TWFpbkxvb3AoKTsKLSAgICByZXR1cm4gRkFMU0U7Ci19Ci0KIHN0YXRpYyB2b2lkIHRlc3RDb250
ZXh0TWVudURvd25sb2FkQWN0aW9ucyhXZWJWaWV3RG93bmxvYWRUZXN0KiB0ZXN0LCBnY29uc3Rw
b2ludGVyKQogewotICAgIHRlc3QtPnNob3dJbldpbmRvd0FuZFdhaXRVbnRpbE1hcHBlZCgpOwor
ICAgIHRlc3QtPnNob3dJbldpbmRvdygpOwogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGxpbmtI
VE1MRm9ybWF0ID0gIjxodG1sPjxib2R5PjxhIHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTsgbGVm
dDoxOyB0b3A6MScgaHJlZj0nJXMnPkRvd25sb2FkIE1lPC9hPjwvYm9keT48L2h0bWw+IjsKICAg
ICBHVW5pcXVlUHRyPGNoYXI+IGxpbmtIVE1MKGdfc3RyZHVwX3ByaW50ZihsaW5rSFRNTEZvcm1h
dCwga1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3Rlc3QucGRmIikuZGF0YSgpKSk7CiAgICAgdGVz
dC0+bG9hZEh0bWwobGlua0hUTUwuZ2V0KCksIGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi8iKS5k
YXRhKCkpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogCi0gICAgZ19zaWdu
YWxfY29ubmVjdCh0ZXN0LT5tX3dlYlZpZXcsICJjb250ZXh0LW1lbnUiLCBHX0NBTExCQUNLKGNv
bnRleHRNZW51Q2FsbGJhY2spLCB0ZXN0KTsKLSAgICBnX2lkbGVfYWRkKFtdKGdwb2ludGVyIHVz
ZXJEYXRhKSAtPiBnYm9vbGVhbiB7Ci0gICAgICAgIGF1dG8qIHRlc3QgPSBzdGF0aWNfY2FzdDxX
ZWJWaWV3RG93bmxvYWRUZXN0Kj4odXNlckRhdGEpOwotICAgICAgICB0ZXN0LT5jbGlja01vdXNl
QnV0dG9uKDEsIDEsIDMpOwotICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgfSwgdGVzdCk7Ci0g
ICAgZ19tYWluX2xvb3BfcnVuKHRlc3QtPm1fbWFpbkxvb3ApOwotCi0gICAgZ19pZGxlX2FkZChb
XShncG9pbnRlciB1c2VyRGF0YSkgLT4gZ2Jvb2xlYW4gewotICAgICAgICBhdXRvKiB0ZXN0ID0g
c3RhdGljX2Nhc3Q8V2ViVmlld0Rvd25sb2FkVGVzdCo+KHVzZXJEYXRhKTsKLSAgICAgICAgLy8g
U2VsZWN0IGFuZCBhY3RpdmF0ZSB0aGUgY29udGV4dCBtZW51IGFjdGlvbi4KLSAgICAgICAgdGVz
dC0+a2V5U3Ryb2tlKEdES19LRVlfRG93bik7Ci0gICAgICAgIHRlc3QtPmtleVN0cm9rZShHREtf
S0VZX1JldHVybik7Ci0gICAgICAgIHJldHVybiBGQUxTRTsKLSAgICB9LCB0ZXN0KTsKKyAgICBh
dXRvKiBpdGVtID0gdGVzdC0+c2hvd0NvbnRleHRNZW51QW5kR2V0RG93bmxvYWRJdGVtKDEsIDEp
OworICAgIGdfYXNzZXJ0KFdFQktJVF9JU19DT05URVhUX01FTlVfSVRFTShpdGVtKSk7CisgICAg
Z19hY3Rpb25fYWN0aXZhdGUod2Via2l0X2NvbnRleHRfbWVudV9pdGVtX2dldF9nYWN0aW9uKGl0
ZW0pLCBudWxscHRyKTsKICAgICB0ZXN0LT53YWl0VW50aWxEb3dubG9hZFN0YXJ0ZWQoKTsKIAog
ICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+bV93ZWJWaWV3ID09IHdlYmtpdF9kb3dubG9hZF9nZXRf
d2ViX3ZpZXcodGVzdC0+bV9kb3dubG9hZC5nZXQoKSkpOwpAQCAtNzU1LDcgKzc1NSw3IEBAIHN0
YXRpYyB2b2lkIHRlc3RDb250ZXh0TWVudURvd25sb2FkQWN0aW9ucyhXZWJWaWV3RG93bmxvYWRU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2luCiAKIHN0YXRpYyB2b2lkIHRlc3RCbG9iRG93bmxvYWQoV2Vi
Vmlld0Rvd25sb2FkVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKLSAgICB0ZXN0LT5zaG93
SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoKTsKKyAgICB0ZXN0LT5zaG93SW5XaW5kb3coKTsK
IAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBsaW5rQmxvYkhUTUwgPQogICAgICAgICAiPGh0bWw+
PGJvZHk+IgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGli
L1Rlc3RJbnB1dE1ldGhvZENvbnRleHQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1Rlc3RJbnB1dE1ldGhvZENvbnRleHQuY3BwCmluZGV4IDAyNWZkZDNhNzg0Zi4u
M2QxYjU4MmI2NDk4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdElucHV0TWV0aG9kQ29udGV4dC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RJbnB1dE1ldGhvZENvbnRleHQuY3BwCkBAIC0yNTAsMTMg
KzI1MCwxMiBAQCBwdWJsaWM6CiAgICAgSW5wdXRNZXRob2RUZXN0KCkKICAgICAgICAgOiBtX2Nv
bnRleHQoYWRvcHRHUmVmKHN0YXRpY19jYXN0PFdlYktpdElucHV0TWV0aG9kQ29udGV4dE1vY2sq
PihnX29iamVjdF9uZXcod2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0X21vY2tfZ2V0X3R5cGUo
KSwgbnVsbHB0cikpKSkKICAgICB7CisgICAgICAgIFdlYlZpZXdUZXN0OjpzaG93SW5XaW5kb3co
KTsKICNpZiBQTEFURk9STShHVEspCi0gICAgICAgIFdlYlZpZXdUZXN0OjpzaG93SW5XaW5kb3dB
bmRXYWl0VW50aWxNYXBwZWQoR1RLX1dJTkRPV19UT1BMRVZFTCk7CiAgICAgICAgIGF1dG8qIGRl
ZmF1bHRDb250ZXh0ID0gd2Via2l0X3dlYl92aWV3X2dldF9pbnB1dF9tZXRob2RfY29udGV4dCht
X3dlYlZpZXcpOwogICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19JTlBVVF9NRVRIT0Rf
Q09OVEVYVChkZWZhdWx0Q29udGV4dCkpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRX
aGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGRlZmF1bHRDb250ZXh0KSk7CiAjZWxpZiBQTEFURk9S
TShXUEUpCi0gICAgICAgIFdlYlZpZXdUZXN0OjpzaG93SW5XaW5kb3coKTsKICAgICAgICAgZ19h
c3NlcnRfbnVsbCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2lucHV0X21ldGhvZF9jb250ZXh0KG1fd2Vi
VmlldykpOwogI2VuZGlmCiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0Rmlu
aXNoZXMoR19PQkpFQ1QobV9jb250ZXh0LmdldCgpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdE9wdGlvbk1lbnUuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RPcHRpb25NZW51LmNwcAppbmRleCA2M2Fi
MjJlZDM3ZDIuLjdiY2M4OTQ1MzY5NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1Rlc3RPcHRpb25NZW51LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdE9wdGlvbk1lbnUuY3BwCkBAIC0xMjIsNyArMTIyLDcg
QEAgc3RhdGljIHZvaWQgdGVzdE9wdGlvbk1lbnVTaW1wbGUoT3B0aW9uTWVudVRlc3QqIHRlc3Qs
IGdjb25zdHBvaW50ZXIpCiAgICAgICAgICIgICAgPG9wdGlvbiBzZWxlY3RlZD5CYXI8L29wdGlv
bj4iCiAgICAgICAgICIgICAgPG9wdGlvbiBkaXNhYmxlZD5CYXo8L29wdGlvbj4iCiAgICAgICAg
ICIgIDwvc2VsZWN0PjwvYm9keT48L2h0bWw+IjsKLSAgICB0ZXN0LT5zaG93SW5XaW5kb3dBbmRX
YWl0VW50aWxNYXBwZWQoKTsKKyAgICB0ZXN0LT5zaG93SW5XaW5kb3coKTsKICAgICB0ZXN0LT5s
b2FkSHRtbChodG1sLCBudWxscHRyKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQo
KTsKIApAQCAtMTcxLDcgKzE3MSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RPcHRpb25NZW51R3JvdXBz
KE9wdGlvbk1lbnVUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgICAgICAiICAgIDwvb3B0
Z3JvdXA+IgogICAgICAgICAiICAgIDxvcHRpb24+VGFpbDwvb3B0aW9uPiIKICAgICAgICAgIiAg
PC9zZWxlY3Q+PC9ib2R5PjwvaHRtbD4iOwotICAgIHRlc3QtPnNob3dJbldpbmRvd0FuZFdhaXRV
bnRpbE1hcHBlZCgpOworICAgIHRlc3QtPnNob3dJbldpbmRvdygpOwogICAgIHRlc3QtPmxvYWRI
dG1sKGh0bWwsIG51bGxwdHIpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwog
CkBAIC0yNDUsNyArMjQ1LDcgQEAgc3RhdGljIHZvaWQgdGVzdE9wdGlvbk1lbnVBY3RpdmF0ZShP
cHRpb25NZW51VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICAgICAgIiAgICA8b3B0aW9u
PkJhcjwvb3B0aW9uPiIKICAgICAgICAgIiAgICA8b3B0aW9uPkJhejwvb3B0aW9uPiIKICAgICAg
ICAgIiAgPC9zZWxlY3Q+PC9ib2R5PjwvaHRtbD4iOwotICAgIHRlc3QtPnNob3dJbldpbmRvd0Fu
ZFdhaXRVbnRpbE1hcHBlZCgpOworICAgIHRlc3QtPnNob3dJbldpbmRvdygpOwogICAgIHRlc3Qt
PmxvYWRIdG1sKGh0bWwsIG51bGxwdHIpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hl
ZCgpOwogCkBAIC0yNzUsNyArMjc1LDcgQEAgc3RhdGljIHZvaWQgdGVzdE9wdGlvbk1lbnVTZWxl
Y3QoT3B0aW9uTWVudVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgICAgICIgICAgPG9w
dGlvbj5CYXI8L29wdGlvbj4iCiAgICAgICAgICIgICAgPG9wdGlvbj5CYXo8L29wdGlvbj4iCiAg
ICAgICAgICIgIDwvc2VsZWN0PjwvYm9keT48L2h0bWw+IjsKLSAgICB0ZXN0LT5zaG93SW5XaW5k
b3dBbmRXYWl0VW50aWxNYXBwZWQoKTsKKyAgICB0ZXN0LT5zaG93SW5XaW5kb3coKTsKICAgICB0
ZXN0LT5sb2FkSHRtbChodG1sLCBudWxscHRyKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmlu
aXNoZWQoKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RVSUNsaWVudC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdM
aWIvVGVzdFVJQ2xpZW50LmNwcAppbmRleCBiOTEwNWVmMDZlMTYuLjY2NmJlYTU3MGMwOCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RVSUNsaWVu
dC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RVSUNs
aWVudC5jcHAKQEAgLTQ4MSwxMCArNDgxLDcgQEAgcHVibGljOgogCiBzdGF0aWMgdm9pZCB0ZXN0
V2ViVmlld0NyZWF0ZU5hdmlnYXRpb25EYXRhKENyZWF0ZU5hdmlnYXRpb25EYXRhVGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKIHsKLSNpZiBQTEFURk9STShHVEspCi0gICAgdGVzdC0+c2hvd0lu
V2luZG93QW5kV2FpdFVudGlsTWFwcGVkKCk7Ci0jZW5kaWYKLQorICAgIHRlc3QtPnNob3dJbldp
bmRvdygpOwogICAgIHRlc3QtPmxvYWRIVE1MKAogICAgICAgICAiPGh0bWw+PGJvZHk+IgogICAg
ICAgICAiPGlucHV0IHN0eWxlPVwicG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MDsgdG9wOjA7IG1h
cmdpbjowOyBwYWRkaW5nOjBcIiB0eXBlPVwiYnV0dG9uXCIgdmFsdWU9XCJjbGljayB0byBzaG93
IGEgcG9wdXBcIiBvbmNsaWNrPVwid2luZG93Lm9wZW4oJ2RhdGE6Zm9vJyk7XCIvPiIKQEAgLTU5
MCw5ICs1ODcsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0Rpc2FsbG93TW9kYWxEaWFsb2dz
KE1vZGFsRGlhbG9nc1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZQogCiBzdGF0aWMgdm9pZCB0ZXN0
V2ViVmlld0phdmFTY3JpcHREaWFsb2dzKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
cikKIHsKLSNpZiBQTEFURk9STShHVEspCi0gICAgdGVzdC0+c2hvd0luV2luZG93QW5kV2FpdFVu
dGlsTWFwcGVkKEdUS19XSU5ET1dfVE9QTEVWRUwpOwotI2VuZGlmCisgICAgdGVzdC0+c2hvd0lu
V2luZG93KCk7CiAKICAgICBzdGF0aWMgY29uc3QgY2hhciogaHRtbE9uTG9hZEZvcm1hdCA9ICI8
aHRtbD48Ym9keSBvbkxvYWQ9XCIlc1wiPjwvYm9keT48L2h0bWw+IjsKICAgICBzdGF0aWMgY29u
c3QgY2hhcioganNBbGVydEZvcm1hdCA9ICJhbGVydCgnJXMnKSI7CkBAIC03MjEsNyArNzE2LDcg
QEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdPcGVuV2luZG93Tm9EZWZhdWx0U2l6ZShVSUNsaWVu
dFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIKICAgICAvLyBJZiBubyBzaXplIHNwZWNpZmllZCBm
b3Igd2luZG93Lm9wZW4oKSwgYW5kIG5ldyB3aW5kb3dzIGFyZSBub3Qgc2V0IHRvIGEgc3BlY2lm
aWMgZGVmYXVsdCBzaXplIHdpdGggZ3RrX3dpbmRvd19zZXRfZGVmYXVsdF9zaXplKCkKICAgICAv
LyBvbiB0aGUgY3JlYXRlIHNpZ25hbCwgdGhlbiBuZXcgd2luZG93cyBvcGVuIHdpdGggdGhlIHNp
emUgb2YgdGhlIHByZXZpb3VzIHdpbmRvdy4KICAgICBjYWlyb19yZWN0YW5nbGVfaW50X3QgZXhw
ZWN0ZWRHZW9tZXRyeSA9IHsgMCwgMCwgNTI3LCA2NzEgfTsKLSAgICB0ZXN0LT5zaG93SW5XaW5k
b3dBbmRXYWl0VW50aWxNYXBwZWQoR1RLX1dJTkRPV19UT1BMRVZFTCwgZXhwZWN0ZWRHZW9tZXRy
eS53aWR0aCwgZXhwZWN0ZWRHZW9tZXRyeS5oZWlnaHQpOworICAgIHRlc3QtPnNob3dJbldpbmRv
dyhleHBlY3RlZEdlb21ldHJ5LndpZHRoLCBleHBlY3RlZEdlb21ldHJ5LmhlaWdodCk7CiAgICAg
dGVzdC0+c2V0RXhwZWN0ZWRXaW5kb3dQcm9wZXJ0aWVzKFVJQ2xpZW50VGVzdDo6V2luZG93UHJv
cGVydGllcygmZXhwZWN0ZWRHZW9tZXRyeSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCB0cnVlLCBmYWxzZSkpOwogICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48Ym9keSBvbkxv
YWQ9XCJ3aW5kb3cub3BlbignJywgJycsICdsZWZ0PTAsdG9wPTAsbG9jYXRpb249bm8sbWVudWJh
cj1ubyxzdGF0dXM9bm8sdG9vbGJhcj1ubyxzY3JvbGxiYXJzPW5vJykuY2xvc2UoKTtcIj48L2Jv
ZHk+PC9odG1sPiIsIG51bGxwdHIpOwogICAgIHRlc3QtPndhaXRVbnRpbE1haW5Mb29wRmluaXNo
ZXMoKTsKQEAgLTczMSw3ICs3MjYsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld09wZW5XaW5k
b3dOb0RlZmF1bHRTaXplKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcgogI2lmIFBM
QVRGT1JNKEdUSykKIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3TW91c2VUYXJnZXQoVUlDbGllbnRU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewotICAgIHRlc3QtPnNob3dJbldpbmRvd0FuZFdh
aXRVbnRpbE1hcHBlZChHVEtfV0lORE9XX1RPUExFVkVMKTsKKyAgICB0ZXN0LT5zaG93SW5XaW5k
b3coKTsKIAogICAgIGNvbnN0IGNoYXIqIGxpbmtzSG92ZXJlZEhUTUwgPQogICAgICAgICAiPGh0
bWw+PGhlYWQ+IgpAQCAtODUwLDkgKzg0NSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3R2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMoVUlDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3RwCiAg
ICAgLy8gdG8gcmVnaXN0ZXIgdGhlIGVycm9yIHF1YXJrIHR3aWNlLiBTZWUgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5ODU4LgogICAgIC8vIE1ha2Ugd2FybmluZ3Mg
bm9uLWZhdGFsIGZvciB0aGlzIHRlc3QgdG8gbWFrZSBpdCBwYXNzLgogICAgIFRlc3Q6OnJlbW92
ZUxvZ0ZhdGFsRmxhZyhHX0xPR19MRVZFTF9XQVJOSU5HKTsKLSNpZiBQTEFURk9STShHVEspCi0g
ICAgdGVzdC0+c2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFwcGVkKCk7Ci0jZW5kaWYKKyAgICB0
ZXN0LT5zaG93SW5XaW5kb3coKTsKICAgICBzdGF0aWMgY29uc3QgY2hhciogZ2VvbG9jYXRpb25S
ZXF1ZXN0SFRNTCA9CiAgICAgICAgICI8aHRtbD4iCiAgICAgICAgICIgIDxzY3JpcHQ+IgpAQCAt
ODk4LDkgKzg5MSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3VXNlck1lZGlhRW51bWVyYXRl
RGV2aWNlc1Blcm1pc3Npb25DaGVjayhVSUNsaWVudFRlc3QqIHRlCiAgICAgd2Via2l0U2V0dGlu
Z3NTZXRNZWRpYUNhcHR1cmVSZXF1aXJlc1NlY3VyZUNvbm5lY3Rpb24oc2V0dGluZ3MsIEZBTFNF
KTsKICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9tb2NrX2NhcHR1cmVfZGV2aWNlcyhz
ZXR0aW5ncywgVFJVRSk7CiAKLSNpZiBQTEFURk9STShHVEspCi0gICAgdGVzdC0+c2hvd0luV2lu
ZG93QW5kV2FpdFVudGlsTWFwcGVkKCk7Ci0jZW5kaWYKKyAgICB0ZXN0LT5zaG93SW5XaW5kb3co
KTsKICAgICBzdGF0aWMgY29uc3QgY2hhciogdXNlck1lZGlhUmVxdWVzdEhUTUwgPQogICAgICAg
ICAiPGh0bWw+IgogICAgICAgICAiICA8c2NyaXB0PiIKQEAgLTk0Myw5ICs5MzQsNyBAQCBzdGF0
aWMgdm9pZCB0ZXN0V2ViVmlld1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0cyhVSUNsaWVudFRl
c3QqIHRlc3QsIGdjb25zdHBvaQogICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX21vY2tf
Y2FwdHVyZV9kZXZpY2VzKHNldHRpbmdzLCBUUlVFKTsKICAgICB3ZWJraXRTZXR0aW5nc1NldE1l
ZGlhQ2FwdHVyZVJlcXVpcmVzU2VjdXJlQ29ubmVjdGlvbihzZXR0aW5ncywgRkFMU0UpOwogCi0j
aWYgUExBVEZPUk0oR1RLKQotICAgIHRlc3QtPnNob3dJbldpbmRvd0FuZFdhaXRVbnRpbE1hcHBl
ZCgpOwotI2VuZGlmCisgICAgdGVzdC0+c2hvd0luV2luZG93KCk7CiAgICAgc3RhdGljIGNvbnN0
IGNoYXIqIHVzZXJNZWRpYVJlcXVlc3RIVE1MID0gIjxodG1sPiIKICAgICAgICAgIiAgPHNjcmlw
dD4iCiAgICAgICAgICIgIGZ1bmN0aW9uIHJ1blRlc3QoKSIKQEAgLTk4NSw5ICs5NzQsNyBAQCBz
dGF0aWMgdm9pZCB0ZXN0V2ViVmlld0F1ZGlvT25seVVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
cyhVSUNsaWVudFRlc3QqIHRlc3QsCiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfbW9j
a19jYXB0dXJlX2RldmljZXMoc2V0dGluZ3MsIFRSVUUpOwogICAgIHdlYmtpdFNldHRpbmdzU2V0
TWVkaWFDYXB0dXJlUmVxdWlyZXNTZWN1cmVDb25uZWN0aW9uKHNldHRpbmdzLCBGQUxTRSk7CiAK
LSNpZiBQTEFURk9STShHVEspCi0gICAgdGVzdC0+c2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFw
cGVkKCk7Ci0jZW5kaWYKKyAgICB0ZXN0LT5zaG93SW5XaW5kb3coKTsKICAgICBzdGF0aWMgY29u
c3QgY2hhciogdXNlck1lZGlhUmVxdWVzdEhUTUwgPSAiPGh0bWw+IgogICAgICAgICAiICA8c2Ny
aXB0PiIKICAgICAgICAgIiAgZnVuY3Rpb24gcnVuVGVzdCgpIgpAQCAtMTAxOCwxMCArMTAwNSw3
IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3QXVkaW9Pbmx5VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RzKFVJQ2xpZW50VGVzdCogdGVzdCwKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogc3Rh
dGljIHZvaWQgdGVzdFdlYlZpZXdQb2ludGVyTG9ja1Blcm1pc3Npb25SZXF1ZXN0KFVJQ2xpZW50
VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKLSNpZiBQTEFURk9STShHVEspCi0gICAgdGVz
dC0+c2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFwcGVkKEdUS19XSU5ET1dfVE9QTEVWRUwpOwot
I2VuZGlmCi0KKyAgICB0ZXN0LT5zaG93SW5XaW5kb3coKTsKICAgICBzdGF0aWMgY29uc3QgY2hh
ciogcG9pbnRlckxvY2tSZXF1ZXN0SFRNTCA9CiAgICAgICAgICI8aHRtbD4iCiAgICAgICAgICIg
IDxzY3JpcHQ+IgpAQCAtMTA4OSw5ICsxMDczLDcgQEAgcHJpdmF0ZToKIAogc3RhdGljIHZvaWQg
dGVzdFdlYlZpZXdGaWxlQ2hvb3NlclJlcXVlc3QoRmlsZUNob29zZXJUZXN0KiB0ZXN0LCBnY29u
c3Rwb2ludGVyKQogewotI2lmIFBMQVRGT1JNKEdUSykKLSAgICB0ZXN0LT5zaG93SW5XaW5kb3dB
bmRXYWl0VW50aWxNYXBwZWQoKTsKLSNlbmRpZgorICAgIHRlc3QtPnNob3dJbldpbmRvdygpOwog
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBmaWxlQ2hvb3NlckhUTUxGb3JtYXQgPSAiPGh0bWw+PGJv
ZHk+PGlucHV0IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOjA7bWFyZ2luOjA7
cGFkZGluZzowJyB0eXBlPSdmaWxlJyAlcy8+PC9ib2R5PjwvaHRtbD4iOwogCiAgICAgLy8gTXVs
dGlwbGUgc2VsZWN0aW9ucyBub3QgYWxsb3dlZCwgbm8gTUlNRSBmaWx0ZXJpbmcuCkBAIC0xMjQw
LDcgKzEyMjIsNyBAQCBwcml2YXRlOgogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdDb2xvckNob29z
ZXJSZXF1ZXN0KENvbG9yQ2hvb3NlclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAg
c3RhdGljIGNvbnN0IGNoYXIqIGNvbG9yQ2hvb3NlckhUTUxGb3JtYXQgPSAiPGh0bWw+PGJvZHk+
PGlucHV0IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjE7dG9wOjE7bWFyZ2luOjA7cGFk
ZGluZzowO3dpZHRoOjQ1O2hlaWdodDoyNScgdHlwZT0nY29sb3InICVzLz48L2JvZHk+PC9odG1s
PiI7Ci0gICAgdGVzdC0+c2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFwcGVkKCk7CisgICAgdGVz
dC0+c2hvd0luV2luZG93KCk7CiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IGRlZmF1bHRDb2xvckhU
TUwoZ19zdHJkdXBfcHJpbnRmKGNvbG9yQ2hvb3NlckhUTUxGb3JtYXQsICIiKSk7CiAgICAgdGVz
dC0+bG9hZEh0bWwoZGVmYXVsdENvbG9ySFRNTC5nZXQoKSwgbnVsbHB0cik7CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYkV4dGVuc2lvbnMu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJFeHRlbnNp
b25zLmNwcAppbmRleCAwNmIwM2FlOTc5YmYuLjVmN2NmZDhiMjNmNCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJFeHRlbnNpb25zLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYkV4dGVuc2lv
bnMuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHN0YXRpYyBnYm9vbGVhbiBpbnB1dEVsZW1lbnRJc1Vz
ZXJFZGl0ZWQoR0RCdXNQcm94eSogcHJveHksIHVpbnQ2NF90IHBhZ2VJRCwgY29uCiAKIHN0YXRp
YyB2b2lkIHRlc3RXZWJFeHRlbnNpb25JbnB1dEVsZW1lbnRJc1VzZXJFZGl0ZWQoV2ViVmlld1Rl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7Ci0gICAgdGVzdC0+c2hvd0luV2luZG93QW5kV2Fp
dFVudGlsTWFwcGVkKCk7CisgICAgdGVzdC0+c2hvd0luV2luZG93KCk7CiAgICAgdGVzdC0+bG9h
ZEh0bWwoIjxodG1sPjxib2R5IGlkPSdib2R5Jz48aW5wdXQgaWQ9J2lucHV0Jz48L2lucHV0Pjx0
ZXh0YXJlYSBpZD0ndGV4dGFyZWEnPjwvdGV4dGFyZWE+PC9ib2R5PjwvaHRtbD4iLCBudWxscHRy
KTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKIApAQCAtMjYyLDcgKzI2Miw3
IEBAIHN0YXRpYyB2b2lkIHRlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNQZXJtaXNzaW9uUmVxdWVz
dChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0CiAgICAgR1JlZlB0cjxHVmFyaWFudD4gcmVzdWx0
ID0gYWRvcHRHUmVmKGdfZGJ1c19wcm94eV9jYWxsX3N5bmMocHJveHkuZ2V0KCksICJSZW1vdmVB
VlBsdWdpbnNGcm9tR1NUUmVnaXN0cnkiLAogICAgICAgICBudWxscHRyLCBHX0RCVVNfQ0FMTF9G
TEFHU19OT05FLCAtMSwgbnVsbHB0ciwgbnVsbHB0cikpOwogCi0gICAgdGVzdC0+c2hvd0luV2lu
ZG93QW5kV2FpdFVudGlsTWFwcGVkKCk7CisgICAgdGVzdC0+c2hvd0luV2luZG93KCk7CiAKICAg
ICBndWxvbmcgcGVybWlzc2lvblJlcXVlc3RTaWduYWxJRCA9IGdfc2lnbmFsX2Nvbm5lY3QodGVz
dC0+bV93ZWJWaWV3LCAicGVybWlzc2lvbi1yZXF1ZXN0IiwgR19DQUxMQkFDSyhwZXJtaXNzaW9u
UmVxdWVzdENhbGxiYWNrKSwgdGVzdCk7CiAgICAgLy8gRklYTUU6IHRoZSBiYXNlIFVSSSBuZWVk
cyB0byBmaW5pc2ggd2l0aCAvIHRvIHdvcmssIHRoYXQgc2hvdWxkbid0IGhhcHBlbi4KZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0Rmlu
ZENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rl
c3RXZWJLaXRGaW5kQ29udHJvbGxlci5jcHAKaW5kZXggNDBkNzJiMGE4OTg0Li44YWRjNTYwZDIx
ZDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0
V2ViS2l0RmluZENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9UZXN0V2ViS2l0RmluZENvbnRyb2xsZXIuY3BwCkBAIC0yNjUsNyArMjY1LDcg
QEAgc3RhdGljIHZvaWQgdGVzdEZpbmRDb250cm9sbGVySGlkZShGaW5kQ29udHJvbGxlclRlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+bG9hZEh0bWwodGVzdFN0cmluZywgMCk7
CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAKLSAgICB0ZXN0LT5zaG93SW5X
aW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoKTsKKyAgICB0ZXN0LT5zaG93SW5XaW5kb3coKTsKIAog
ICAgIGNhaXJvX3N1cmZhY2VfdCogb3JpZ2luYWxTdXJmYWNlID0gY2Fpcm9fc3VyZmFjZV9yZWZl
cmVuY2UoCiAgICAgICAgIHRlc3QtPmdldFNuYXBzaG90QW5kV2FpdFVudGlsUmVhZHkoV0VCS0lU
X1NOQVBTSE9UX1JFR0lPTl9GVUxMX0RPQ1VNRU5ULCBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19O
T05FKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
VGVzdFdlYktpdFBvbGljeUNsaWVudC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdFdlYktpdFBvbGljeUNsaWVudC5jcHAKaW5kZXggY2M5NTFhZWUwY2JkLi4w
ZGY2MmRhZDYyNTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9UZXN0V2ViS2l0UG9saWN5Q2xpZW50LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFBvbGljeUNsaWVudC5jcHAKQEAgLTMxMSwxMCAr
MzExLDggQEAgc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBT
b3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhcioKIAogc3RhdGljIHZvaWQgdGVzdEF1dG9w
bGF5UG9saWN5KFBvbGljeUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7Ci0jaWYg
UExBVEZPUk0oR1RLKQogICAgIC8vIFRoZSB3ZWIgdmlldyBtdXN0IGJlIHJlYWxpemVkIGZvciB0
aGUgdmlkZW8gdG8gc3RhcnQgcGxheWJhY2suCi0gICAgdGVzdC0+c2hvd0luV2luZG93QW5kV2Fp
dFVudGlsTWFwcGVkKEdUS19XSU5ET1dfVE9QTEVWRUwpOwotI2VuZGlmCisgICAgdGVzdC0+c2hv
d0luV2luZG93KCk7CiAKICAgICB0ZXN0LT5tX3BvbGljeURlY2lzaW9uVHlwZUZpbHRlciA9IFdF
QktJVF9QT0xJQ1lfREVDSVNJT05fVFlQRV9OQVZJR0FUSU9OX0FDVElPTjsKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2Vi
Vmlldy5jcHAKaW5kZXggZDdjYWZmZDBlOTkyLi5hYzcwODQ4OWM5ZjMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJW
aWV3LmNwcApAQCAtNDY0LDkgKzQ2NCw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoRlVMTFNDUkVF
Tl9BUEkpCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0Z1bGxTY3JlZW4oRnVsbFNjcmVlbkNsaWVu
dFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7Ci0jaWYgUExBVEZPUk0oR1RLKQotICAgIHRl
c3QtPnNob3dJbldpbmRvd0FuZFdhaXRVbnRpbE1hcHBlZCgpOwotI2VuZGlmCisgICAgdGVzdC0+
c2hvd0luV2luZG93KCk7CiAgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjxib2R5PkZ1bGxTY3Jl
ZW4gdGVzdDwvYm9keT48L2h0bWw+IiwgMCk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlz
aGVkKCk7CiAgICAgdGVzdC0+cmVxdWVzdEZ1bGxTY3JlZW5BbmRXYWl0VW50aWxFbnRlcmVkRnVs
bFNjcmVlbigpOwpAQCAtNTcwLDcgKzU2OCw3IEBAIHB1YmxpYzoKIAogc3RhdGljIHZvaWQgdGVz
dFdlYlZpZXdTdWJtaXRGb3JtKEZvcm1DbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQog
ewotICAgIHRlc3QtPnNob3dJbldpbmRvd0FuZFdhaXRVbnRpbE1hcHBlZCgpOworICAgIHRlc3Qt
PnNob3dJbldpbmRvdygpOwogCiAgICAgY29uc3QgY2hhciogZm9ybUhUTUwgPQogICAgICAgICAi
PGh0bWw+PGJvZHk+IgpAQCAtODIxLDcgKzgxOSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3
U25hcHNob3QoU25hcHNob3RXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBn
X2Fzc2VydF9jbXBpbnQoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UxKSwg
PT0sIDEwMCk7CiAKICAgICAvLyBTaG93IHRoZSBXZWJWaWV3IGluIGEgcG9wdXAgd2lkb3cgb2Yg
NTB4NTAgYW5kIHRyeSBhZ2FpbiB3aXRoIFdFQktJVF9TTkFQU0hPVF9SRUdJT05fVklTSUJMRS4K
LSAgICB0ZXN0LT5zaG93SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoR1RLX1dJTkRPV19QT1BV
UCwgNTAsIDUwKTsKKyAgICB0ZXN0LT5zaG93SW5XaW5kb3coNTAsIDUwKTsKICAgICBzdXJmYWNl
MSA9IGNhaXJvX3N1cmZhY2VfcmVmZXJlbmNlKHRlc3QtPmdldFNuYXBzaG90QW5kV2FpdFVudGls
UmVhZHkoV0VCS0lUX1NOQVBTSE9UX1JFR0lPTl9WSVNJQkxFLCBXRUJLSVRfU05BUFNIT1RfT1BU
SU9OU19OT05FKSk7CiAgICAgZ19hc3NlcnRfbm9ubnVsbChzdXJmYWNlMSk7CiAgICAgZ19hc3Nl
cnRfY21wdWludChjYWlyb19zdXJmYWNlX2dldF90eXBlKHN1cmZhY2UxKSwgPT0sIENBSVJPX1NV
UkZBQ0VfVFlQRV9JTUFHRSk7CkBAIC0xMTA2LDExICsxMTA0LDkgQEAgc3RhdGljIHZvaWQgdGVz
dFdlYlZpZXdOb3RpZmljYXRpb25Jbml0aWFsUGVybWlzc2lvbkRpc2FsbG93ZWQoTm90aWZpY2F0
aW9uV2ViVmkKIAogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdJc1BsYXlpbmdBdWRpbyhJc1BsYXlp
bmdBdWRpb1dlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewotI2lmIFBMQVRGT1JN
KEdUSykKICAgICAvLyBUaGUgd2ViIHZpZXcgbXVzdCBiZSByZWFsaXplZCBmb3IgdGhlIHZpZGVv
IHRvIHN0YXJ0IHBsYXliYWNrIGFuZAogICAgIC8vIHRyaWdnZXIgY2hhbmdlcyBpbiBXZWJLaXRX
ZWJWaWV3Ojppcy1wbGF5aW5nLWF1ZGlvLgotICAgIHRlc3QtPnNob3dJbldpbmRvd0FuZFdhaXRV
bnRpbE1hcHBlZChHVEtfV0lORE9XX1RPUExFVkVMKTsKLSNlbmRpZgorICAgIHRlc3QtPnNob3dJ
bldpbmRvdygpOwogCiAgICAgLy8gSW5pdGlhbGx5LCB3ZWIgdmlld3Mgc2hvdWxkIGFsd2F5cyBy
ZXBvcnQgbm8gYXVkaW8gYmVpbmcgcGxheWVkLgogICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93
ZWJfdmlld19pc19wbGF5aW5nX2F1ZGlvKHRlc3QtPm1fd2ViVmlldykpOwpAQCAtMTE5Niw3ICsx
MTkyLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdQcmVmZXJyZWRTaXplKFdlYlZpZXdUZXN0
KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRtbCBzdHls
ZT0nd2lkdGg6IDMyNXB4OyBoZWlnaHQ6IDYxNXB4Jz48L2h0bWw+IiwgbnVsbHB0cik7CiAgICAg
dGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7Ci0gICAgdGVzdC0+c2hvd0luV2luZG93QW5k
V2FpdFVudGlsTWFwcGVkKCk7CisgICAgdGVzdC0+c2hvd0luV2luZG93KCk7CiAgICAgR3RrUmVx
dWlzaXRpb24gbWluaW11blNpemUsIG5hdHVyYWxTaXplOwogICAgIGd0a193aWRnZXRfZ2V0X3By
ZWZlcnJlZF9zaXplKEdUS19XSURHRVQodGVzdC0+bV93ZWJWaWV3KSwgJm1pbmltdW5TaXplLCAm
bmF0dXJhbFNpemUpOwogICAgIGdfYXNzZXJ0X2NtcGludChtaW5pbXVuU2l6ZS53aWR0aCwgPT0s
IDApOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVz
dENvbnRleHRNZW51LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rl
c3RDb250ZXh0TWVudS5jcHAKaW5kZXggYWM0ZmNmNjRmYWViLi43YmQ5ZGRiZDdiNGQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RDb250ZXh0TWVu
dS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdENvbnRl
eHRNZW51LmNwcApAQCAtNTMwLDggKzUzMCw3IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVDb250ZXh0
TWVudVRlc3RWaWV3KENvbnRleHRNZW51RGVmYXVsdFRlc3QqIHRlc3QpCiAKIHN0YXRpYyB2b2lk
IHRlc3RDb250ZXh0TWVudURlZmF1bHRNZW51KENvbnRleHRNZW51RGVmYXVsdFRlc3QqIHRlc3Qs
IGdjb25zdHBvaW50ZXIpCiB7Ci0gICAgdGVzdC0+c2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFw
cGVkKCk7Ci0KKyAgICB0ZXN0LT5zaG93SW5XaW5kb3coKTsKICAgICBwcmVwYXJlQ29udGV4dE1l
bnVUZXN0Vmlldyh0ZXN0KTsKIAogICAgIC8vIENvbnRleHQgbWVudSBmb3Igc2VsZWN0aW9uLgpA
QCAtNTc4LDggKzU3Nyw3IEBAIHN0YXRpYyB2b2lkIHRlc3RDb250ZXh0TWVudURlZmF1bHRNZW51
KENvbnRleHRNZW51RGVmYXVsdFRlc3QqIHRlc3QsIGdjb25zdHBvaW50CiAKIHN0YXRpYyB2b2lk
IHRlc3RQb3B1cEV2ZW50U2lnbmFsKENvbnRleHRNZW51RGVmYXVsdFRlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIpCiB7Ci0gICAgdGVzdC0+c2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFwcGVkKCk7
Ci0KKyAgICB0ZXN0LT5zaG93SW5XaW5kb3coKTsKICAgICBwcmVwYXJlQ29udGV4dE1lbnVUZXN0
Vmlldyh0ZXN0KTsKIAogICAgIHRlc3QtPm1fZXhwZWN0ZWRNZW51VHlwZSA9IENvbnRleHRNZW51
RGVmYXVsdFRlc3Q6OlNlbGVjdGlvbjsKQEAgLTU4OCw4ICs1ODYsNyBAQCBzdGF0aWMgdm9pZCB0
ZXN0UG9wdXBFdmVudFNpZ25hbChDb250ZXh0TWVudURlZmF1bHRUZXN0KiB0ZXN0LCBnY29uc3Rw
b2ludGVyKQogCiBzdGF0aWMgdm9pZCB0ZXN0Q29udGV4dE1lbnVLZXkoQ29udGV4dE1lbnVEZWZh
dWx0VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKLSAgICB0ZXN0LT5zaG93SW5XaW5kb3dB
bmRXYWl0VW50aWxNYXBwZWQoKTsKLQorICAgIHRlc3QtPnNob3dJbldpbmRvdygpOwogICAgIHBy
ZXBhcmVDb250ZXh0TWVudVRlc3RWaWV3KHRlc3QpOwogCiAgICAgdGVzdC0+bV9leHBlY3RlZE1l
bnVUeXBlID0gQ29udGV4dE1lbnVEZWZhdWx0VGVzdDo6U2VsZWN0aW9uOwpAQCAtNzQ2LDggKzc0
Myw3IEBAIHB1YmxpYzoKIAogc3RhdGljIHZvaWQgdGVzdENvbnRleHRNZW51UG9wdWxhdGVNZW51
KENvbnRleHRNZW51Q3VzdG9tVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKLSAgICB0ZXN0
LT5zaG93SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoKTsKLQorICAgIHRlc3QtPnNob3dJbldp
bmRvdygpOwogICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48Ym9keT5XZWJLaXRHVEsgQ29udGV4
dCBtZW51IHRlc3RzPC9ib2R5PjwvaHRtbD4iLCAiZmlsZTovLy8iKTsKICAgICB0ZXN0LT53YWl0
VW50aWxMb2FkRmluaXNoZWQoKTsKIApAQCAtODY5LDcyICs4NjUsMTMgQEAgcHVibGljOgogCiBz
dGF0aWMgdm9pZCB0ZXN0Q29udGV4dE1lbnVDdXN0b21NZW51KENvbnRleHRNZW51Q3VzdG9tRnVs
bFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7Ci0gICAgdGVzdC0+c2hvd0luV2luZG93QW5k
V2FpdFVudGlsTWFwcGVkKCk7Ci0KKyAgICB0ZXN0LT5zaG93SW5XaW5kb3coKTsKICAgICB0ZXN0
LT5sb2FkSHRtbCgiPGh0bWw+PGJvZHk+V2ViS2l0R1RLIENvbnRleHQgbWVudSB0ZXN0czwvYm9k
eT48L2h0bWw+IiwgImZpbGU6Ly8vIik7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVk
KCk7CiAKICAgICB0ZXN0LT5zaG93Q29udGV4dE1lbnVBbmRXYWl0VW50aWxGaW5pc2hlZCgpOwog
fQogCi1jbGFzcyBDb250ZXh0TWVudURpc2FibGVkVGVzdDogcHVibGljIENvbnRleHRNZW51VGVz
dCB7Ci1wdWJsaWM6Ci0gICAgTUFLRV9HTElCX1RFU1RfRklYVFVSRShDb250ZXh0TWVudURpc2Fi
bGVkVGVzdCk7Ci0KLSAgICBlbnVtIERpc2FibGVNb2RlIHsKLSAgICAgICAgSWdub3JlQ2xpY2tz
LAotICAgICAgICBJZ25vcmVEZWZhdWx0TWVudQotICAgIH07Ci0KLSAgICBzdGF0aWMgZ2Jvb2xl
YW4gYnV0dG9uUHJlc3NFdmVudENhbGxiYWNrKEd0a1dpZGdldCosIEdka0V2ZW50KiBldmVudCwg
Q29udGV4dE1lbnVEaXNhYmxlZFRlc3QqIHRlc3QpCi0gICAgewotICAgICAgICBpZiAoZXZlbnQt
PmJ1dHRvbi5idXR0b24gIT0gMykKLSAgICAgICAgICAgIHJldHVybiBGQUxTRTsKLSAgICAgICAg
cmV0dXJuIHRlc3QtPnJpZ2h0QnV0dG9uUHJlc3NlZCgpOwotICAgIH0KLQotICAgIENvbnRleHRN
ZW51RGlzYWJsZWRUZXN0KCkKLSAgICAgICAgOiBtX2Rpc2FibGVNb2RlKElnbm9yZUNsaWNrcykK
LSAgICB7Ci0gICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAiYnV0dG9uLXByZXNz
LWV2ZW50IiwgR19DQUxMQkFDSyhidXR0b25QcmVzc0V2ZW50Q2FsbGJhY2spLCB0aGlzKTsKLSAg
ICB9Ci0KLSAgICBib29sIGNvbnRleHRNZW51KFdlYktpdENvbnRleHRNZW51KiBjb250ZXh0TWVu
dSwgR2RrRXZlbnQqLCBXZWJLaXRIaXRUZXN0UmVzdWx0KikKLSAgICB7Ci0gICAgICAgIGlmICht
X2Rpc2FibGVNb2RlID09IElnbm9yZUNsaWNrcykKLSAgICAgICAgICAgIGdfYXNzZXJ0X25vdF9y
ZWFjaGVkKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHF1aXRNYWluTG9vcCgpOwotCi0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIGJvb2wgcmlnaHRCdXR0b25QcmVzc2Vk
KCkKLSAgICB7Ci0gICAgICAgIGlmIChtX2Rpc2FibGVNb2RlID09IElnbm9yZUNsaWNrcykgewot
ICAgICAgICAgICAgcXVpdE1haW5Mb29wQWZ0ZXJQcm9jZXNzaW5nUGVuZGluZ0V2ZW50cygpOwot
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLQotICAgIERpc2FibGVNb2RlIG1fZGlzYWJsZU1vZGU7Ci19OwotCi1zdGF0aWMg
dm9pZCB0ZXN0Q29udGV4dE1lbnVEaXNhYmxlTWVudShDb250ZXh0TWVudURpc2FibGVkVGVzdCog
dGVzdCwgZ2NvbnN0cG9pbnRlcikKLXsKLSAgICB0ZXN0LT5zaG93SW5XaW5kb3dBbmRXYWl0VW50
aWxNYXBwZWQoKTsKLQotICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48Ym9keT5XZWJLaXRHVEsg
Q29udGV4dCBtZW51IHRlc3RzPC9ib2R5PjwvaHRtbD4iLCAiZmlsZTovLy8iKTsKLSAgICB0ZXN0
LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKLQotICAgIHRlc3QtPm1fZGlzYWJsZU1vZGUgPSBD
b250ZXh0TWVudURpc2FibGVkVGVzdDo6SWdub3JlRGVmYXVsdE1lbnU7Ci0gICAgdGVzdC0+c2hv
d0NvbnRleHRNZW51QW5kV2FpdFVudGlsRmluaXNoZWQoKTsKLQotICAgIHRlc3QtPm1fZGlzYWJs
ZU1vZGUgPSBDb250ZXh0TWVudURpc2FibGVkVGVzdDo6SWdub3JlQ2xpY2tzOwotICAgIHRlc3Qt
PnNob3dDb250ZXh0TWVudUFuZFdhaXRVbnRpbEZpbmlzaGVkKCk7Ci19Ci0KIGNsYXNzIENvbnRl
eHRNZW51U3VibWVudVRlc3Q6IHB1YmxpYyBDb250ZXh0TWVudVRlc3QgewogcHVibGljOgogICAg
IE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoQ29udGV4dE1lbnVTdWJtZW51VGVzdCk7CkBAIC05NzYs
OCArOTEzLDcgQEAgcHVibGljOgogCiBzdGF0aWMgdm9pZCB0ZXN0Q29udGV4dE1lbnVTdWJNZW51
KENvbnRleHRNZW51U3VibWVudVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7Ci0gICAgdGVz
dC0+c2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFwcGVkKCk7Ci0KKyAgICB0ZXN0LT5zaG93SW5X
aW5kb3coKTsKICAgICB0ZXN0LT5sb2FkSHRtbCgiPGh0bWw+PGJvZHk+V2ViS2l0R1RLIENvbnRl
eHQgbWVudSB0ZXN0czwvYm9keT48L2h0bWw+IiwgImZpbGU6Ly8vIik7CiAgICAgdGVzdC0+d2Fp
dFVudGlsTG9hZEZpbmlzaGVkKCk7CiAKQEAgLTEwMTcsOCArOTUzLDcgQEAgcHVibGljOgogCiBz
dGF0aWMgdm9pZCB0ZXN0Q29udGV4dE1lbnVEaXNtaXNzZWQoQ29udGV4dE1lbnVEaXNtaXNzZWRU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewotICAgIHRlc3QtPnNob3dJbldpbmRvd0FuZFdh
aXRVbnRpbE1hcHBlZCgpOwotCisgICAgdGVzdC0+c2hvd0luV2luZG93KCk7CiAgICAgdGVzdC0+
bG9hZEh0bWwoIjxodG1sPjxib2R5PldlYktpdEdUSyBDb250ZXh0IG1lbnUgdGVzdHM8L2JvZHk+
PC9odG1sPiIsICJmaWxlOi8vLyIpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgp
OwogCkBAIC0xMDY3LDcgKzEwMDIsNyBAQCBwdWJsaWM6CiAKIHN0YXRpYyB2b2lkIHRlc3RDb250
ZXh0TWVudVdlYkV4dGVuc2lvbk1lbnUoQ29udGV4dE1lbnVXZWJFeHRlbnNpb25UZXN0KiB0ZXN0
LCBnY29uc3Rwb2ludGVyKQogewotICAgIHRlc3QtPnNob3dJbldpbmRvd0FuZFdhaXRVbnRpbE1h
cHBlZCgpOworICAgIHRlc3QtPnNob3dJbldpbmRvdygpOwogICAgIHRlc3QtPmxvYWRIdG1sKCI8
aHRtbD48Ym9keT5XZWJLaXRHVEsgQ29udGV4dCBtZW51IHRlc3RzPGJyPiIKICAgICAgICAgIjxh
IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDoxOyB0b3A6MTAnIGhyZWY9J2h0dHA6Ly93
d3cud2Via2l0Z3RrLm9yZyc+V2ViS2l0R1RLIFdlYnNpdGU8L2E+PC9ib2R5PjwvaHRtbD4iLAog
ICAgICAgICAiQ29udGV4dE1lbnVUZXN0RGVmYXVsdCIpOwpAQCAtMTE1Nyw3ICsxMDkyLDcgQEAg
cHVibGljOgogCiBzdGF0aWMgdm9pZCB0ZXN0Q29udGV4dE1lbnVXZWJFeHRlbnNpb25Ob2RlKENv
bnRleHRNZW51V2ViRXh0ZW5zaW9uTm9kZVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7Ci0g
ICAgdGVzdC0+c2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFwcGVkKCk7CisgICAgdGVzdC0+c2hv
d0luV2luZG93KCk7CiAgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjxib2R5PjxwIHN0eWxlPSdw
b3NpdGlvbjphYnNvbHV0ZTsgbGVmdDoxOyB0b3A6MSc+V2ViS2l0R1RLIENvbnRleHQgbWVudSB0
ZXN0czwvcD48YnI+IgogICAgICAgICAiPGEgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlOyBsZWZ0
OjE7IHRvcDoxMDAnIGhyZWY9J2h0dHA6Ly93d3cud2Via2l0Z3RrLm9yZyc+V2ViS2l0R1RLIFdl
YnNpdGU8L2E+PC9ib2R5PjwvaHRtbD4iLAogICAgICAgICAiQ29udGV4dE1lbnVUZXN0Tm9kZSIp
OwpAQCAtMTIyNyw4ICsxMTYyLDcgQEAgc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNl
cnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhcioKIAogc3RhdGlj
IHZvaWQgdGVzdENvbnRleHRNZW51TGl2ZVN0cmVhbShDb250ZXh0TWVudURlZmF1bHRUZXN0KiB0
ZXN0LCBnY29uc3Rwb2ludGVyKQogewotICAgIHRlc3QtPnNob3dJbldpbmRvd0FuZFdhaXRVbnRp
bE1hcHBlZCgpOwotCisgICAgdGVzdC0+c2hvd0luV2luZG93KCk7CiAgICAgdGVzdC0+bG9hZFVS
SShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvbGl2ZS1zdHJlYW0iKS5kYXRhKCkpOwogICAgIHRl
c3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogCkBAIC0xMjQ3LDcgKzExODEsNiBAQCB2b2lk
IGJlZm9yZUFsbCgpCiAgICAgQ29udGV4dE1lbnVEZWZhdWx0VGVzdDo6YWRkKCJXZWJLaXRXZWJW
aWV3IiwgImxpdmUtc3RyZWFtIiwgdGVzdENvbnRleHRNZW51TGl2ZVN0cmVhbSk7CiAgICAgQ29u
dGV4dE1lbnVDdXN0b21UZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAicG9wdWxhdGUtbWVudSIs
IHRlc3RDb250ZXh0TWVudVBvcHVsYXRlTWVudSk7CiAgICAgQ29udGV4dE1lbnVDdXN0b21GdWxs
VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImN1c3RvbS1tZW51IiwgdGVzdENvbnRleHRNZW51
Q3VzdG9tTWVudSk7Ci0gICAgQ29udGV4dE1lbnVEaXNhYmxlZFRlc3Q6OmFkZCgiV2ViS2l0V2Vi
VmlldyIsICJkaXNhYmxlLW1lbnUiLCB0ZXN0Q29udGV4dE1lbnVEaXNhYmxlTWVudSk7CiAgICAg
Q29udGV4dE1lbnVTdWJtZW51VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInN1Ym1lbnUiLCB0
ZXN0Q29udGV4dE1lbnVTdWJNZW51KTsKICAgICBDb250ZXh0TWVudURpc21pc3NlZFRlc3Q6OmFk
ZCgiV2ViS2l0V2ViVmlldyIsICJtZW51LWRpc21pc3NlZCIsIHRlc3RDb250ZXh0TWVudURpc21p
c3NlZCk7CiAgICAgQ29udGV4dE1lbnVXZWJFeHRlbnNpb25UZXN0OjphZGQoIldlYktpdFdlYlBh
Z2UiLCAiY29udGV4dC1tZW51IiwgdGVzdENvbnRleHRNZW51V2ViRXh0ZW5zaW9uTWVudSk7CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0RE9NRE9N
V2luZG93LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RET01E
T01XaW5kb3cuY3BwCmluZGV4IDU1MGE1OTc2ZTE0Yi4uNTlmNTQxODE0YTYwIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0RE9NRE9NV2luZG93LmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0RE9NRE9NV2lu
ZG93LmNwcApAQCAtNDcsNyArNDcsNyBAQCBzdGF0aWMgdm9pZCBzaWduYWxzTm90aWZ5Q2FsbGJh
Y2soY29uc3QgZ2NoYXIgKmtleSwgY29uc3QgZ2NoYXIgKnZhbHVlLCBnY29uc3RwbwogCiAgICAg
aWYgKGdfc3RyX2VxdWFsKGtleSwgImxvYWRlZCIpKSB7CiAgICAgICAgIHN0YXR1cy5sb2FkZWQg
PSBUUlVFOwotICAgICAgICBzdGF0dXMudGVzdC0+c2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFw
cGVkKCk7CisgICAgICAgIHN0YXR1cy50ZXN0LT5zaG93SW5XaW5kb3coKTsKIAogICAgICAgICAv
LyBDbGljayBpbiBhIGtub3duIGxvY2F0aW9uIHdoZXJlIHRoZSB0ZXh0IGlzCiAgICAgICAgIHN0
YXR1cy50ZXN0LT5jbGlja01vdXNlQnV0dG9uKDIwLCAxOCwgMSwgMCk7CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0SW5zcGVjdG9yLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RJbnNwZWN0b3IuY3BwCmluZGV4
IGVmMWIyYjU2ZjRmMS4uZTRjZThkMzViNzQ0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0SW5zcGVjdG9yLmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0SW5zcGVjdG9yLmNwcApAQCAtMTY3LDcgKzE2Nyw3
IEBAIHB1YmxpYzoKIAogc3RhdGljIHZvaWQgdGVzdEluc3BlY3RvckRlZmF1bHQoSW5zcGVjdG9y
VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKLSAgICB0ZXN0LT5zaG93SW5XaW5kb3dBbmRX
YWl0VW50aWxNYXBwZWQoR1RLX1dJTkRPV19UT1BMRVZFTCk7CisgICAgdGVzdC0+c2hvd0luV2lu
ZG93KCk7CiAgICAgdGVzdC0+cmVzaXplVmlldygyMDAsIDIwMCk7CiAgICAgdGVzdC0+bG9hZEh0
bWwoIjxodG1sPjxib2R5PjxwPldlYktpdEdUSyBJbnNwZWN0b3IgdGVzdDwvcD48L2JvZHk+PC9o
dG1sPiIsIDApOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwpAQCAtMjk4LDcg
KzI5OCw3IEBAIHB1YmxpYzoKIAogc3RhdGljIHZvaWQgdGVzdEluc3BlY3Rvck1hbnVhbEF0dGFj
aERldGFjaChDdXN0b21JbnNwZWN0b3JUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewotICAg
IHRlc3QtPnNob3dJbldpbmRvd0FuZFdhaXRVbnRpbE1hcHBlZChHVEtfV0lORE9XX1RPUExFVkVM
KTsKKyAgICB0ZXN0LT5zaG93SW5XaW5kb3coKTsKICAgICB0ZXN0LT5yZXNpemVWaWV3KDIwMCwg
MjAwKTsKICAgICB0ZXN0LT5sb2FkSHRtbCgiPGh0bWw+PGJvZHk+PHA+V2ViS2l0R1RLIEluc3Bl
Y3RvciB0ZXN0PC9wPjwvYm9keT48L2h0bWw+IiwgMCk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9h
ZEZpbmlzaGVkKCk7CkBAIC0zNDAsNyArMzQwLDcgQEAgc3RhdGljIHZvaWQgdGVzdEluc3BlY3Rv
ck1hbnVhbEF0dGFjaERldGFjaChDdXN0b21JbnNwZWN0b3JUZXN0KiB0ZXN0LCBnY29uc3Rwb2kK
IAogc3RhdGljIHZvaWQgdGVzdEluc3BlY3RvckN1c3RvbUNvbnRhaW5lckRlc3Ryb3llZChDdXN0
b21JbnNwZWN0b3JUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewotICAgIHRlc3QtPnNob3dJ
bldpbmRvd0FuZFdhaXRVbnRpbE1hcHBlZChHVEtfV0lORE9XX1RPUExFVkVMKTsKKyAgICB0ZXN0
LT5zaG93SW5XaW5kb3coKTsKICAgICB0ZXN0LT5yZXNpemVWaWV3KDIwMCwgMjAwKTsKICAgICB0
ZXN0LT5sb2FkSHRtbCgiPGh0bWw+PGJvZHk+PHA+V2ViS2l0R1RLIEluc3BlY3RvciB0ZXN0PC9w
PjwvYm9keT48L2h0bWw+IiwgMCk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0SW5z
cGVjdG9yU2VydmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rl
c3RJbnNwZWN0b3JTZXJ2ZXIuY3BwCmluZGV4IGJjMjYxNDNlMTU3NC4uZmRkYWY0YTk3ZGMyIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0SW5zcGVj
dG9yU2VydmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9U
ZXN0SW5zcGVjdG9yU2VydmVyLmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIHN0YXRpYyB2b2lkIHRl
c3RJbnNwZWN0b3JTZXJ2ZXJQYWdlTGlzdChJbnNwZWN0b3JTZXJ2ZXJUZXN0KiB0ZXN0LCBnY29u
c3Rwb2ludGVyCiB7CiAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogCi0gICAgdGVz
dC0+c2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFwcGVkKEdUS19XSU5ET1dfVE9QTEVWRUwpOwor
ICAgIHRlc3QtPnNob3dJbldpbmRvdygpOwogICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+Z2V0UGFn
ZUxpc3QoKSk7CiAKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0
ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVudC5nZXRF
bGVtZW50c0J5Q2xhc3NOYW1lKCd0YXJnZXRuYW1lJykubGVuZ3RoOyIsICZlcnJvci5vdXRQdHIo
KSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0
UHJpbnRpbmcuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdFBy
aW50aW5nLmNwcAppbmRleCA3MGY3MDlkYzE5MmYuLjdkOTNjNzljOTExOSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdFByaW50aW5nLmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0UHJpbnRpbmcuY3BwCkBA
IC00MjEsOCArNDIxLDcgQEAgcHVibGljOgogCiBzdGF0aWMgdm9pZCB0ZXN0UHJpbnRDdXN0b21X
aWRnZXQoUHJpbnRDdXN0b21XaWRnZXRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewotICAg
IHRlc3QtPnNob3dJbldpbmRvd0FuZFdhaXRVbnRpbE1hcHBlZChHVEtfV0lORE9XX1RPUExFVkVM
LCAwLCAwKTsKLQorICAgIHRlc3QtPnNob3dJbldpbmRvdygpOwogICAgIHRlc3QtPmxvYWRIdG1s
KCI8aHRtbD48Ym9keT5UZXh0PC9ib2R5PjwvaHRtbD4iLCAwKTsKICAgICB0ZXN0LT53YWl0VW50
aWxMb2FkRmluaXNoZWQoKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHdGsvVGVzdFdlYlZpZXdFZGl0b3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHdGsvVGVzdFdlYlZpZXdFZGl0b3IuY3BwCmluZGV4IDcxMDY2MDM5MjIyOC4u
NzUyZTgwNGM3MDY2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEd0ay9UZXN0V2ViVmlld0VkaXRvci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHdGsvVGVzdFdlYlZpZXdFZGl0b3IuY3BwCkBAIC0zNCw3ICszNCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgLCBtX3RyaWVzQ291bnQoMCkKICAgICAgICAgLCBtX2VkaXRvclN0YXRlKG51
bGxwdHIpCiAgICAgewotICAgICAgICBzaG93SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoR1RL
X1dJTkRPV19UT1BMRVZFTCk7CisgICAgICAgIHNob3dJbldpbmRvdygpOwogICAgICAgICBsb2Fk
VVJJKCJhYm91dDpibGFuayIpOwogICAgICAgICB3YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKICAg
ICAgICAgZ3RrX2NsaXBib2FyZF9jbGVhcihtX2NsaXBib2FyZCk7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5oIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaAppbmRleCA2ZTllZGU3ODA1
MWYuLjcwZDc5MzdhOGFiNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dl
YktpdEdMaWIvV2ViVmlld1Rlc3QuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2Vi
S2l0R0xpYi9XZWJWaWV3VGVzdC5oCkBAIC02NSwxNyArNjUsMTIgQEAgcHVibGljOgogICAgIHZv
aWQgY2xpY2tNb3VzZUJ1dHRvbihpbnQgeCwgaW50IHksIHVuc2lnbmVkIGJ1dHRvbiA9IDEsIHVu
c2lnbmVkIG1vdXNlTW9kaWZpZXJzID0gMCk7CiAgICAgdm9pZCBrZXlTdHJva2UodW5zaWduZWQg
a2V5VmFsLCB1bnNpZ25lZCBrZXlNb2RpZmllcnMgPSAwKTsKIAorICAgIHZvaWQgc2hvd0luV2lu
ZG93KGludCB3aWR0aCA9IDAsIGludCBoZWlnaHQgPSAwKTsKKwogI2lmIFBMQVRGT1JNKEdUSykK
LSAgICB2b2lkIHNob3dJbldpbmRvdyhHdGtXaW5kb3dUeXBlID0gR1RLX1dJTkRPV19QT1BVUCk7
Ci0gICAgdm9pZCBzaG93SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoR3RrV2luZG93VHlwZSA9
IEdUS19XSU5ET1dfUE9QVVAsIGludCB3aWR0aCA9IDAsIGludCBoZWlnaHQgPSAwKTsKICAgICB2
b2lkIGVtaXRQb3B1cE1lbnVTaWduYWwoKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oV1BFKQot
ICAgIHZvaWQgc2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFwcGVkKCkgeyBzaG93SW5XaW5kb3co
KTsgfTsKLSAgICB2b2lkIHNob3dJbldpbmRvdygpOwotI2VuZGlmCi0KICAgICBXZWJLaXRKYXZh
c2NyaXB0UmVzdWx0KiBydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoY29uc3QgY2hh
ciogamF2YXNjcmlwdCwgR0Vycm9yKiopOwogICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIHJ1
bkphdmFTY3JpcHRGcm9tR1Jlc291cmNlQW5kV2FpdFVudGlsRmluaXNoZWQoY29uc3QgY2hhciog
cmVzb3VyY2UsIEdFcnJvcioqKTsKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBydW5KYXZh
U2NyaXB0SW5Xb3JsZEFuZFdhaXRVbnRpbEZpbmlzaGVkKGNvbnN0IGNoYXIqIGphdmFzY3JpcHQs
IGNvbnN0IGNoYXIqIHdvcmxkLCBHRXJyb3IqKik7CkBAIC0xMTksOSArMTE0LDQgQEAgcHVibGlj
OgogI2lmIFBMQVRGT1JNKEdUSykKICAgICBHdGtXaWRnZXQqIG1fcGFyZW50V2luZG93IHsgbnVs
bHB0ciB9OwogI2VuZGlmCi0KLXByaXZhdGU6Ci0jaWYgUExBVEZPUk0oR1RLKQotICAgIHZvaWQg
ZG9Nb3VzZUJ1dHRvbkV2ZW50KEdka0V2ZW50VHlwZSwgaW50LCBpbnQsIHVuc2lnbmVkLCB1bnNp
Z25lZCk7Ci0jZW5kaWYKIH07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIv
V2ViS2l0R0xpYi9ndGsvV2ViVmlld1Rlc3RHdGsuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9n
bGliL1dlYktpdEdMaWIvZ3RrL1dlYlZpZXdUZXN0R3RrLmNwcAppbmRleCAwMTI1ZDg4OTBiNzcu
LjAzY2Y5MDQ4MWI1NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktp
dEdMaWIvZ3RrL1dlYlZpZXdUZXN0R3RrLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2ds
aWIvV2ViS2l0R0xpYi9ndGsvV2ViVmlld1Rlc3RHdGsuY3BwCkBAIC0yMSw2ICsyMSw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKIAorI2luY2x1ZGUg
IldlYktpdFdlYlZpZXdCYXNlSW50ZXJuYWwuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQ
dHJHdGsuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0d0a1ZlcnNpb25pbmcuaD4KICNpbmNsdWRlIDxn
dGsvZ3RrLmg+CkBAIC00MCw4ICs0MSw4IEBAIHZvaWQgV2ViVmlld1Rlc3Q6OnBsYXRmb3JtSW5p
dGlhbGl6ZVdlYlZpZXcoKQogCiB2b2lkIFdlYlZpZXdUZXN0OjpxdWl0TWFpbkxvb3BBZnRlclBy
b2Nlc3NpbmdQZW5kaW5nRXZlbnRzKCkKIHsKLSAgICB3aGlsZSAoZ3RrX2V2ZW50c19wZW5kaW5n
KCkpCi0gICAgICAgIGd0a19tYWluX2l0ZXJhdGlvbigpOworICAgIHdoaWxlIChnX21haW5fY29u
dGV4dF9wZW5kaW5nKG51bGxwdHIpKQorICAgICAgICBnX21haW5fY29udGV4dF9pdGVyYXRpb24o
bnVsbHB0ciwgVFJVRSk7CiAgICAgcXVpdE1haW5Mb29wKCk7CiB9CiAKQEAgLTYxLDY1ICs2Miwz
MCBAQCB2b2lkIFdlYlZpZXdUZXN0OjpoaWRlVmlldygpCiAgICAgZ3RrX3dpZGdldF9oaWRlKEdU
S19XSURHRVQobV93ZWJWaWV3KSk7CiB9CiAKLXN0YXRpYyBnYm9vbGVhbiBwYXJlbnRXaW5kb3dN
YXBwZWQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50KiwgV2ViVmlld1Rlc3QqIHRlc3QpCi17
Ci0gICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHdpZGdldCwgcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4ocGFyZW50V2luZG93TWFwcGVkKSwgdGVzdCk7Ci0gICAgZ19tYWlu
X2xvb3BfcXVpdCh0ZXN0LT5tX21haW5Mb29wKTsKLQotICAgIHJldHVybiBGQUxTRTsKLX0KLQot
dm9pZCBXZWJWaWV3VGVzdDo6c2hvd0luV2luZG93KEd0a1dpbmRvd1R5cGUgd2luZG93VHlwZSkK
K3ZvaWQgV2ViVmlld1Rlc3Q6OnNob3dJbldpbmRvdyhpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7
CiAgICAgZ19hc3NlcnRfbnVsbChtX3BhcmVudFdpbmRvdyk7Ci0gICAgbV9wYXJlbnRXaW5kb3cg
PSBndGtfd2luZG93X25ldyh3aW5kb3dUeXBlKTsKLSAgICBndGtfY29udGFpbmVyX2FkZChHVEtf
Q09OVEFJTkVSKG1fcGFyZW50V2luZG93KSwgR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKLSAgICBn
dGtfd2lkZ2V0X3Nob3coR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKLSAgICBndGtfd2lkZ2V0X3No
b3cobV9wYXJlbnRXaW5kb3cpOwotfQotCi12b2lkIFdlYlZpZXdUZXN0OjpzaG93SW5XaW5kb3dB
bmRXYWl0VW50aWxNYXBwZWQoR3RrV2luZG93VHlwZSB3aW5kb3dUeXBlLCBpbnQgd2lkdGgsIGlu
dCBoZWlnaHQpCi17Ci0gICAgZ19hc3NlcnRfbnVsbChtX3BhcmVudFdpbmRvdyk7Ci0gICAgbV9w
YXJlbnRXaW5kb3cgPSBndGtfd2luZG93X25ldyh3aW5kb3dUeXBlKTsKKyAgICBtX3BhcmVudFdp
bmRvdyA9IGd0a193aW5kb3dfbmV3KEdUS19XSU5ET1dfVE9QTEVWRUwpOwogICAgIGlmICh3aWR0
aCAmJiBoZWlnaHQpCi0gICAgICAgIGd0a193aW5kb3dfcmVzaXplKEdUS19XSU5ET1cobV9wYXJl
bnRXaW5kb3cpLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgZ3RrX3dpbmRvd19zZXRfZGVmYXVs
dF9zaXplKEdUS19XSU5ET1cobV9wYXJlbnRXaW5kb3cpLCB3aWR0aCwgaGVpZ2h0KTsKICAgICBn
dGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKG1fcGFyZW50V2luZG93KSwgR1RLX1dJREdF
VChtX3dlYlZpZXcpKTsKICAgICBndGtfd2lkZ2V0X3Nob3coR1RLX1dJREdFVChtX3dlYlZpZXcp
KTsKLQotICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9wYXJlbnRXaW5kb3csICJtYXAtZXZlbnQiLCBH
X0NBTExCQUNLKHBhcmVudFdpbmRvd01hcHBlZCksIHRoaXMpOwogICAgIGd0a193aWRnZXRfc2hv
dyhtX3BhcmVudFdpbmRvdyk7Ci0gICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworCisg
ICAgd2hpbGUgKGdfbWFpbl9jb250ZXh0X3BlbmRpbmcobnVsbHB0cikpCisgICAgICAgIGdfbWFp
bl9jb250ZXh0X2l0ZXJhdGlvbihudWxscHRyLCBUUlVFKTsKIH0KIAogdm9pZCBXZWJWaWV3VGVz
dDo6bW91c2VNb3ZlVG8oaW50IHgsIGludCB5LCB1bnNpZ25lZCBtb3VzZU1vZGlmaWVycykKIHsK
ICAgICBnX2Fzc2VydF9ub25udWxsKG1fcGFyZW50V2luZG93KTsKLSAgICBHdGtXaWRnZXQqIHZp
ZXdXaWRnZXQgPSBHVEtfV0lER0VUKG1fd2ViVmlldyk7Ci0gICAgZ19hc3NlcnRfdHJ1ZShndGtf
d2lkZ2V0X2dldF9yZWFsaXplZCh2aWV3V2lkZ2V0KSk7Ci0KLSAgICBHVW5pcXVlUHRyPEdka0V2
ZW50PiBldmVudChnZGtfZXZlbnRfbmV3KEdES19NT1RJT05fTk9USUZZKSk7Ci0gICAgZXZlbnQt
Pm1vdGlvbi54ID0geDsKLSAgICBldmVudC0+bW90aW9uLnkgPSB5OwotCi0gICAgZXZlbnQtPm1v
dGlvbi50aW1lID0gR0RLX0NVUlJFTlRfVElNRTsKLSAgICBldmVudC0+bW90aW9uLndpbmRvdyA9
IGd0a193aWRnZXRfZ2V0X3dpbmRvdyh2aWV3V2lkZ2V0KTsKLSAgICBnX29iamVjdF9yZWYoZXZl
bnQtPm1vdGlvbi53aW5kb3cpOwotICAgIGV2ZW50LT5tb3Rpb24uZGV2aWNlID0gZ2RrX3NlYXRf
Z2V0X3BvaW50ZXIoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHRfc2VhdChndGtfd2lkZ2V0X2dldF9k
aXNwbGF5KHZpZXdXaWRnZXQpKSk7Ci0gICAgZXZlbnQtPm1vdGlvbi5zdGF0ZSA9IG1vdXNlTW9k
aWZpZXJzOwotICAgIGV2ZW50LT5tb3Rpb24uYXhlcyA9IDA7Ci0KLSAgICBpbnQgeFJvb3QsIHlS
b290OwotICAgIGdka193aW5kb3dfZ2V0X3Jvb3RfY29vcmRzKGd0a193aWRnZXRfZ2V0X3dpbmRv
dyh2aWV3V2lkZ2V0KSwgeCwgeSwgJnhSb290LCAmeVJvb3QpOwotICAgIGV2ZW50LT5tb3Rpb24u
eF9yb290ID0geFJvb3Q7Ci0gICAgZXZlbnQtPm1vdGlvbi55X3Jvb3QgPSB5Um9vdDsKLSAgICBn
dGtfbWFpbl9kb19ldmVudChldmVudC5nZXQoKSk7CisgICAgd2Via2l0V2ViVmlld0Jhc2VTeW50
aGVzaXplTW91c2VFdmVudChXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3dlYlZpZXcpLCBNb3VzZUV2
ZW50VHlwZTo6TW90aW9uLCAwLCAwLCB4LCB5LCBtb3VzZU1vZGlmaWVycywgMCk7CiB9CiAKIHZv
aWQgV2ViVmlld1Rlc3Q6OmNsaWNrTW91c2VCdXR0b24oaW50IHgsIGludCB5LCB1bnNpZ25lZCBi
dXR0b24sIHVuc2lnbmVkIG1vdXNlTW9kaWZpZXJzKQogewotICAgIGRvTW91c2VCdXR0b25FdmVu
dChHREtfQlVUVE9OX1BSRVNTLCB4LCB5LCBidXR0b24sIG1vdXNlTW9kaWZpZXJzKTsKLSAgICBk
b01vdXNlQnV0dG9uRXZlbnQoR0RLX0JVVFRPTl9SRUxFQVNFLCB4LCB5LCBidXR0b24sIG1vdXNl
TW9kaWZpZXJzKTsKKyAgICB3ZWJraXRXZWJWaWV3QmFzZVN5bnRoZXNpemVNb3VzZUV2ZW50KFdF
QktJVF9XRUJfVklFV19CQVNFKG1fd2ViVmlldyksIE1vdXNlRXZlbnRUeXBlOjpQcmVzcywgYnV0
dG9uLCAxIDw8ICg4ICsgYnV0dG9uIC0gMSksIHgsIHksIG1vdXNlTW9kaWZpZXJzLCAxKTsKKyAg
ICB3ZWJraXRXZWJWaWV3QmFzZVN5bnRoZXNpemVNb3VzZUV2ZW50KFdFQktJVF9XRUJfVklFV19C
QVNFKG1fd2ViVmlldyksIE1vdXNlRXZlbnRUeXBlOjpSZWxlYXNlLCBidXR0b24sIDAsIHgsIHks
IG1vdXNlTW9kaWZpZXJzLCAwKTsKIH0KIAogdm9pZCBXZWJWaWV3VGVzdDo6ZW1pdFBvcHVwTWVu
dVNpZ25hbCgpCkBAIC0xMzQsNTIgKzEwMCw1IEBAIHZvaWQgV2ViVmlld1Rlc3Q6OmVtaXRQb3B1
cE1lbnVTaWduYWwoKQogdm9pZCBXZWJWaWV3VGVzdDo6a2V5U3Ryb2tlKHVuc2lnbmVkIGtleVZh
bCwgdW5zaWduZWQga2V5TW9kaWZpZXJzKQogewogICAgIGdfYXNzZXJ0X25vbm51bGwobV9wYXJl
bnRXaW5kb3cpOwotICAgIEd0a1dpZGdldCogdmlld1dpZGdldCA9IEdUS19XSURHRVQobV93ZWJW
aWV3KTsKLSAgICBnX2Fzc2VydF90cnVlKGd0a193aWRnZXRfZ2V0X3JlYWxpemVkKHZpZXdXaWRn
ZXQpKTsKLQotICAgIEdVbmlxdWVQdHI8R2RrRXZlbnQ+IGV2ZW50KGdka19ldmVudF9uZXcoR0RL
X0tFWV9QUkVTUykpOwotICAgIGV2ZW50LT5rZXkua2V5dmFsID0ga2V5VmFsOwotCi0gICAgZXZl
bnQtPmtleS50aW1lID0gR0RLX0NVUlJFTlRfVElNRTsKLSAgICBldmVudC0+a2V5LndpbmRvdyA9
IGd0a193aWRnZXRfZ2V0X3dpbmRvdyh2aWV3V2lkZ2V0KTsKLSAgICBnX29iamVjdF9yZWYoZXZl
bnQtPmtleS53aW5kb3cpOwotICAgIEdka0Rpc3BsYXkqIGRpc3BsYXkgPSBndGtfd2lkZ2V0X2dl
dF9kaXNwbGF5KHZpZXdXaWRnZXQpOwotICAgIGdka19ldmVudF9zZXRfZGV2aWNlKGV2ZW50Lmdl
dCgpLCBnZGtfc2VhdF9nZXRfcG9pbnRlcihnZGtfZGlzcGxheV9nZXRfZGVmYXVsdF9zZWF0KGRp
c3BsYXkpKSk7Ci0gICAgZXZlbnQtPmtleS5zdGF0ZSA9IGtleU1vZGlmaWVyczsKLQotICAgIC8v
IFdoZW4gc3ludGhlc2l6aW5nIGFuIGV2ZW50LCBhbiBpbnZhbGlkIGhhcmR3YXJlX2tleWNvZGUg
dmFsdWUgY2FuIGNhdXNlIGl0IHRvIGJlIGJhZGx5IHByb2Nlc3NlZCBieSBHVEsrLgotICAgIEdV
bmlxdWVPdXRQdHI8R2RrS2V5bWFwS2V5PiBrZXlzOwotICAgIGludCBrZXlzQ291bnQ7Ci0gICAg
aWYgKGdka19rZXltYXBfZ2V0X2VudHJpZXNfZm9yX2tleXZhbChnZGtfa2V5bWFwX2dldF9mb3Jf
ZGlzcGxheShkaXNwbGF5KSwga2V5VmFsLCAma2V5cy5vdXRQdHIoKSwgJmtleXNDb3VudCkgJiYg
a2V5c0NvdW50KQotICAgICAgICBldmVudC0+a2V5LmhhcmR3YXJlX2tleWNvZGUgPSBrZXlzLmdl
dCgpWzBdLmtleWNvZGU7Ci0KLSAgICBndGtfbWFpbl9kb19ldmVudChldmVudC5nZXQoKSk7Ci0g
ICAgZXZlbnQtPmtleS50eXBlID0gR0RLX0tFWV9SRUxFQVNFOwotICAgIGd0a19tYWluX2RvX2V2
ZW50KGV2ZW50LmdldCgpKTsKLX0KLQotdm9pZCBXZWJWaWV3VGVzdDo6ZG9Nb3VzZUJ1dHRvbkV2
ZW50KEdka0V2ZW50VHlwZSBldmVudFR5cGUsIGludCB4LCBpbnQgeSwgdW5zaWduZWQgYnV0dG9u
LCB1bnNpZ25lZCBtb3VzZU1vZGlmaWVycykKLXsKLSAgICBnX2Fzc2VydF9ub25udWxsKG1fcGFy
ZW50V2luZG93KTsKLSAgICBHdGtXaWRnZXQqIHZpZXdXaWRnZXQgPSBHVEtfV0lER0VUKG1fd2Vi
Vmlldyk7Ci0gICAgZ19hc3NlcnRfdHJ1ZShndGtfd2lkZ2V0X2dldF9yZWFsaXplZCh2aWV3V2lk
Z2V0KSk7Ci0KLSAgICBHVW5pcXVlUHRyPEdka0V2ZW50PiBldmVudChnZGtfZXZlbnRfbmV3KGV2
ZW50VHlwZSkpOwotICAgIGV2ZW50LT5idXR0b24ud2luZG93ID0gZ3RrX3dpZGdldF9nZXRfd2lu
ZG93KHZpZXdXaWRnZXQpOwotICAgIGdfb2JqZWN0X3JlZihldmVudC0+YnV0dG9uLndpbmRvdyk7
Ci0KLSAgICBldmVudC0+YnV0dG9uLnRpbWUgPSBHREtfQ1VSUkVOVF9USU1FOwotICAgIGV2ZW50
LT5idXR0b24ueCA9IHg7Ci0gICAgZXZlbnQtPmJ1dHRvbi55ID0geTsKLSAgICBldmVudC0+YnV0
dG9uLmF4ZXMgPSAwOwotICAgIGV2ZW50LT5idXR0b24uc3RhdGUgPSBtb3VzZU1vZGlmaWVyczsK
LSAgICBldmVudC0+YnV0dG9uLmJ1dHRvbiA9IGJ1dHRvbjsKLQotICAgIGV2ZW50LT5idXR0b24u
ZGV2aWNlID0gZ2RrX3NlYXRfZ2V0X3BvaW50ZXIoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHRfc2Vh
dChndGtfd2lkZ2V0X2dldF9kaXNwbGF5KHZpZXdXaWRnZXQpKSk7Ci0KLSAgICBpbnQgeFJvb3Qs
IHlSb290OwotICAgIGdka193aW5kb3dfZ2V0X3Jvb3RfY29vcmRzKGd0a193aWRnZXRfZ2V0X3dp
bmRvdyh2aWV3V2lkZ2V0KSwgeCwgeSwgJnhSb290LCAmeVJvb3QpOwotICAgIGV2ZW50LT5idXR0
b24ueF9yb290ID0geFJvb3Q7Ci0gICAgZXZlbnQtPmJ1dHRvbi55X3Jvb3QgPSB5Um9vdDsKLSAg
ICBndGtfbWFpbl9kb19ldmVudChldmVudC5nZXQoKSk7CisgICAgd2Via2l0V2ViVmlld0Jhc2VT
eW50aGVzaXplS2V5RXZlbnQoV0VCS0lUX1dFQl9WSUVXX0JBU0UobV93ZWJWaWV3KSwgS2V5RXZl
bnRUeXBlOjpJbnNlcnQsIGtleVZhbCwga2V5TW9kaWZpZXJzLCBTaG91bGRUcmFuc2xhdGVLZXli
b2FyZFN0YXRlOjpObyk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIv
V2ViS2l0R0xpYi93cGUvV2ViVmlld1Rlc3RXUEUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9n
bGliL1dlYktpdEdMaWIvd3BlL1dlYlZpZXdUZXN0V1BFLmNwcAppbmRleCAwYTE3YjU4NWVlNmUu
LjVjNjNiZjQzZDMwNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktp
dEdMaWIvd3BlL1dlYlZpZXdUZXN0V1BFLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2ds
aWIvV2ViS2l0R0xpYi93cGUvV2ViVmlld1Rlc3RXUEUuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHZv
aWQgV2ViVmlld1Rlc3Q6OnJlc2l6ZVZpZXcoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQuCiB9CiAKLXZvaWQgV2ViVmlld1Rlc3Q6OnNob3dJbldpbmRvdygp
Cit2b2lkIFdlYlZpZXdUZXN0OjpzaG93SW5XaW5kb3coaW50LCBpbnQpCiB7CiAgICAgYXV0byog
YmFja2VuZCA9IHdlYmtpdF93ZWJfdmlld19iYWNrZW5kX2dldF93cGVfYmFja2VuZCh3ZWJraXRf
d2ViX3ZpZXdfZ2V0X2JhY2tlbmQobV93ZWJWaWV3KSk7CiAgICAgd3BlX3ZpZXdfYmFja2VuZF9h
ZGRfYWN0aXZpdHlfc3RhdGUoYmFja2VuZCwgd3BlX3ZpZXdfYWN0aXZpdHlfc3RhdGVfdmlzaWJs
ZSB8IHdwZV92aWV3X2FjdGl2aXR5X3N0YXRlX2luX3dpbmRvdyB8IHdwZV92aWV3X2FjdGl2aXR5
X3N0YXRlX2ZvY3VzZWQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvUGxh
dGZvcm1XZWJWaWV3R3RrLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1BsYXRmb3JtV2Vi
Vmlld0d0ay5jcHAKaW5kZXggNmE1OGM5YjYyOTk0Li41MjkzMjk2ZGM3NDggMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1BsYXRmb3JtV2ViVmlld0d0ay5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9ndGsvUGxhdGZvcm1XZWJWaWV3R3RrLmNwcApAQCAtMjYsNiArMjYs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgog
CisjaW5jbHVkZSAiV2ViS2l0V2ViVmlld0Jhc2VJbnRlcm5hbC5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvR1VuaXF1ZVB0ckd0ay5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3RrVmVyc2lvbmluZy5oPgog
I2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgpAQCAtODMsMjYgKzg0LDkgQEAgdm9pZCBQ
bGF0Zm9ybVdlYlZpZXc6OnJlc2l6ZVRvKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQp
CiAgICAgZ3RrX3dpbmRvd19yZXNpemUoR1RLX1dJTkRPVyhtX3dpbmRvdyksIHdpZHRoLCBoZWln
aHQpOwogfQogCi1zdGF0aWMgdm9pZCBkb0tleVN0cm9rZShHdGtXaWRnZXQqIHZpZXdXaWRnZXQs
IHVuc2lnbmVkIGludCBrZXlWYWwpCitzdGF0aWMgaW5saW5lIFdlYktpdFdlYlZpZXdCYXNlKiB0
b1dlYktpdEdMaWJBUEkoUGxhdGZvcm1XS1ZpZXcgdmlldykKIHsKLSAgICBHVW5pcXVlUHRyPEdk
a0V2ZW50PiBldmVudChnZGtfZXZlbnRfbmV3KEdES19LRVlfUFJFU1MpKTsKLSAgICBldmVudC0+
a2V5LmtleXZhbCA9IGtleVZhbDsKLSAgICBldmVudC0+a2V5LnRpbWUgPSBHREtfQ1VSUkVOVF9U
SU1FOwotICAgIGV2ZW50LT5rZXkuc3RhdGUgPSAwOwotICAgIGV2ZW50LT5rZXkud2luZG93ID0g
Z3RrX3dpZGdldF9nZXRfd2luZG93KHZpZXdXaWRnZXQpOwotICAgIGdfb2JqZWN0X3JlZihldmVu
dC0+a2V5LndpbmRvdyk7Ci0gICAgR2RrRGlzcGxheSogZGlzcGxheSA9IGd0a193aWRnZXRfZ2V0
X2Rpc3BsYXkodmlld1dpZGdldCk7Ci0gICAgZ2RrX2V2ZW50X3NldF9kZXZpY2UoZXZlbnQuZ2V0
KCksIGdka19zZWF0X2dldF9wb2ludGVyKGdka19kaXNwbGF5X2dldF9kZWZhdWx0X3NlYXQoZGlz
cGxheSkpKTsKLQotICAgIC8vIFdoZW4gc3ludGhlc2l6aW5nIGFuIGV2ZW50LCBhbiBpbnZhbGlk
IGhhcmR3YXJlX2tleWNvZGUgdmFsdWUgY2FuIGNhdXNlIGl0IHRvIGJlIGJhZGx5IHByb2Nlc3Nl
ZCBieSBHVEsrLgotICAgIEdVbmlxdWVPdXRQdHI8R2RrS2V5bWFwS2V5PiBrZXlzOwotICAgIGlu
dCBrZXlzQ291bnQ7Ci0gICAgaWYgKGdka19rZXltYXBfZ2V0X2VudHJpZXNfZm9yX2tleXZhbChn
ZGtfa2V5bWFwX2dldF9mb3JfZGlzcGxheShkaXNwbGF5KSwga2V5VmFsLCAma2V5cy5vdXRQdHIo
KSwgJmtleXNDb3VudCkgJiYga2V5c0NvdW50KQotICAgICAgICBldmVudC0+a2V5LmhhcmR3YXJl
X2tleWNvZGUgPSBrZXlzLmdldCgpWzBdLmtleWNvZGU7Ci0KLSAgICBndGtfbWFpbl9kb19ldmVu
dChldmVudC5nZXQoKSk7Ci0gICAgZXZlbnQtPmtleS50eXBlID0gR0RLX0tFWV9SRUxFQVNFOwot
ICAgIGd0a19tYWluX2RvX2V2ZW50KGV2ZW50LmdldCgpKTsKKyAgICByZXR1cm4gY29uc3RfY2Fz
dDxXZWJLaXRXZWJWaWV3QmFzZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgV2ViS2l0V2ViVmll
d0Jhc2UqPih2aWV3KSk7CiB9CiAKIHZvaWQgUGxhdGZvcm1XZWJWaWV3OjpzaW11bGF0ZVNwYWNl
YmFyS2V5UHJlc3MoKQpAQCAtMTEwLDcgKzk0LDcgQEAgdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNp
bXVsYXRlU3BhY2ViYXJLZXlQcmVzcygpCiAgICAgR3RrV2lkZ2V0KiB2aWV3V2lkZ2V0ID0gR1RL
X1dJREdFVChtX3ZpZXcpOwogICAgIGlmICghZ3RrX3dpZGdldF9nZXRfcmVhbGl6ZWQodmlld1dp
ZGdldCkpCiAgICAgICAgIGd0a193aWRnZXRfc2hvdyhtX3dpbmRvdyk7Ci0gICAgZG9LZXlTdHJv
a2Uodmlld1dpZGdldCwgR0RLX0tFWV9LUF9TcGFjZSk7CisgICAgd2Via2l0V2ViVmlld0Jhc2VT
eW50aGVzaXplS2V5RXZlbnQodG9XZWJLaXRHTGliQVBJKG1fdmlldyksIEtleUV2ZW50VHlwZTo6
SW5zZXJ0LCBHREtfS0VZX0tQX1NwYWNlLCAwLCBTaG91bGRUcmFuc2xhdGVLZXlib2FyZFN0YXRl
OjpObyk7CiB9CiAKIHZvaWQgUGxhdGZvcm1XZWJWaWV3OjpzaW11bGF0ZUFsdEtleVByZXNzKCkK
QEAgLTExOCwyNyArMTAyLDcgQEAgdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNpbXVsYXRlQWx0S2V5
UHJlc3MoKQogICAgIEd0a1dpZGdldCogdmlld1dpZGdldCA9IEdUS19XSURHRVQobV92aWV3KTsK
ICAgICBpZiAoIWd0a193aWRnZXRfZ2V0X3JlYWxpemVkKHZpZXdXaWRnZXQpKQogICAgICAgICBn
dGtfd2lkZ2V0X3Nob3cobV93aW5kb3cpOwotICAgIGRvS2V5U3Ryb2tlKHZpZXdXaWRnZXQsIEdE
S19LRVlfQWx0X0wpOwotfQotCi1zdGF0aWMgdm9pZCBkb01vdXNlQnV0dG9uRXZlbnQoR3RrV2lk
Z2V0KiB2aWV3V2lkZ2V0LCBHZGtFdmVudFR5cGUgZXZlbnRUeXBlLCBpbnQgeCwgaW50IHksIHVu
c2lnbmVkIGludCBidXR0b24pCi17Ci0gICAgR1VuaXF1ZVB0cjxHZGtFdmVudD4gZXZlbnQoZ2Rr
X2V2ZW50X25ldyhldmVudFR5cGUpKTsKLSAgICBldmVudC0+YnV0dG9uLnggPSB4OwotICAgIGV2
ZW50LT5idXR0b24ueSA9IHk7Ci0gICAgZXZlbnQtPmJ1dHRvbi5idXR0b24gPSBidXR0b247Ci0g
ICAgZXZlbnQtPmJ1dHRvbi50aW1lID0gR0RLX0NVUlJFTlRfVElNRTsKLSAgICBldmVudC0+YnV0
dG9uLmF4ZXMgPSAwOwotICAgIGV2ZW50LT5idXR0b24uc3RhdGUgPSAwOwotICAgIGV2ZW50LT5i
dXR0b24ud2luZG93ID0gZ3RrX3dpZGdldF9nZXRfd2luZG93KHZpZXdXaWRnZXQpOwotICAgIGdf
b2JqZWN0X3JlZihldmVudC0+YnV0dG9uLndpbmRvdyk7Ci0gICAgZXZlbnQtPmJ1dHRvbi5kZXZp
Y2UgPSBnZGtfc2VhdF9nZXRfcG9pbnRlcihnZGtfZGlzcGxheV9nZXRfZGVmYXVsdF9zZWF0KGd0
a193aWRnZXRfZ2V0X2Rpc3BsYXkodmlld1dpZGdldCkpKTsKLQotICAgIGludCB4Um9vdCwgeVJv
b3Q7Ci0gICAgZ2RrX3dpbmRvd19nZXRfcm9vdF9jb29yZHMoZ3RrX3dpZGdldF9nZXRfd2luZG93
KHZpZXdXaWRnZXQpLCB4LCB5LCAmeFJvb3QsICZ5Um9vdCk7Ci0gICAgZXZlbnQtPmJ1dHRvbi54
X3Jvb3QgPSB4Um9vdDsKLSAgICBldmVudC0+YnV0dG9uLnlfcm9vdCA9IHlSb290OwotICAgIGd0
a19tYWluX2RvX2V2ZW50KGV2ZW50LmdldCgpKTsKKyAgICB3ZWJraXRXZWJWaWV3QmFzZVN5bnRo
ZXNpemVLZXlFdmVudCh0b1dlYktpdEdMaWJBUEkobV92aWV3KSwgS2V5RXZlbnRUeXBlOjpJbnNl
cnQsIEdES19LRVlfQWx0X0wsIDAsIFNob3VsZFRyYW5zbGF0ZUtleWJvYXJkU3RhdGU6Ok5vKTsK
IH0KIAogdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNpbXVsYXRlUmlnaHRDbGljayh1bnNpZ25lZCB4
LCB1bnNpZ25lZCB5KQpAQCAtMTQ2LDMxICsxMTAsMTMgQEAgdm9pZCBQbGF0Zm9ybVdlYlZpZXc6
OnNpbXVsYXRlUmlnaHRDbGljayh1bnNpZ25lZCB4LCB1bnNpZ25lZCB5KQogICAgIEd0a1dpZGdl
dCogdmlld1dpZGdldCA9IEdUS19XSURHRVQobV92aWV3KTsKICAgICBpZiAoIWd0a193aWRnZXRf
Z2V0X3JlYWxpemVkKHZpZXdXaWRnZXQpKQogICAgICAgICBndGtfd2lkZ2V0X3Nob3cobV93aW5k
b3cpOwotICAgIGRvTW91c2VCdXR0b25FdmVudCh2aWV3V2lkZ2V0LCBHREtfQlVUVE9OX1BSRVNT
LCB4LCB5LCAzKTsKLSAgICBkb01vdXNlQnV0dG9uRXZlbnQodmlld1dpZGdldCwgR0RLX0JVVFRP
Tl9SRUxFQVNFLCB4LCB5LCAzKTsKKyAgICB3ZWJraXRXZWJWaWV3QmFzZVN5bnRoZXNpemVNb3Vz
ZUV2ZW50KHRvV2ViS2l0R0xpYkFQSShtX3ZpZXcpLCBNb3VzZUV2ZW50VHlwZTo6UHJlc3MsIDMs
IDAsIHgsIHksIDAsIDEpOworICAgIHdlYmtpdFdlYlZpZXdCYXNlU3ludGhlc2l6ZU1vdXNlRXZl
bnQodG9XZWJLaXRHTGliQVBJKG1fdmlldyksIE1vdXNlRXZlbnRUeXBlOjpSZWxlYXNlLCAzLCAw
LCB4LCB5LCAwLCAwKTsKIH0KIAogdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNpbXVsYXRlTW91c2VN
b3ZlKHVuc2lnbmVkIHgsIHVuc2lnbmVkIHksIFdLRXZlbnRNb2RpZmllcnMpCiB7Ci0gICAgR1Vu
aXF1ZVB0cjxHZGtFdmVudD4gZXZlbnQoZ2RrX2V2ZW50X25ldyhHREtfTU9USU9OX05PVElGWSkp
OwotICAgIGV2ZW50LT5tb3Rpb24ueCA9IHg7Ci0gICAgZXZlbnQtPm1vdGlvbi55ID0geTsKLSAg
ICBldmVudC0+bW90aW9uLnRpbWUgPSBHREtfQ1VSUkVOVF9USU1FOwotICAgIGV2ZW50LT5tb3Rp
b24uc3RhdGUgPSAwOwotICAgIGV2ZW50LT5tb3Rpb24uYXhlcyA9IDA7Ci0KLSAgICBHdGtXaWRn
ZXQqIHZpZXdXaWRnZXQgPSBHVEtfV0lER0VUKG1fdmlldyk7Ci0gICAgaWYgKCFndGtfd2lkZ2V0
X2dldF9yZWFsaXplZCh2aWV3V2lkZ2V0KSkKLSAgICAgICAgZ3RrX3dpZGdldF9zaG93KG1fd2lu
ZG93KTsKLSAgICBldmVudC0+bW90aW9uLndpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyh2
aWV3V2lkZ2V0KTsKLSAgICBnX29iamVjdF9yZWYoZXZlbnQtPm1vdGlvbi53aW5kb3cpOwotICAg
IGV2ZW50LT5tb3Rpb24uZGV2aWNlID0gZ2RrX3NlYXRfZ2V0X3BvaW50ZXIoZ2RrX2Rpc3BsYXlf
Z2V0X2RlZmF1bHRfc2VhdChndGtfd2lkZ2V0X2dldF9kaXNwbGF5KHZpZXdXaWRnZXQpKSk7Ci0K
LSAgICBpbnQgeFJvb3QsIHlSb290OwotICAgIGdka193aW5kb3dfZ2V0X3Jvb3RfY29vcmRzKGd0
a193aWRnZXRfZ2V0X3dpbmRvdyh2aWV3V2lkZ2V0KSwgeCwgeSwgJnhSb290LCAmeVJvb3QpOwot
ICAgIGV2ZW50LT5tb3Rpb24ueF9yb290ID0geFJvb3Q7Ci0gICAgZXZlbnQtPm1vdGlvbi55X3Jv
b3QgPSB5Um9vdDsKLSAgICBndGtfbWFpbl9kb19ldmVudChldmVudC5nZXQoKSk7CisgICAgd2Vi
a2l0V2ViVmlld0Jhc2VTeW50aGVzaXplTW91c2VFdmVudCh0b1dlYktpdEdMaWJBUEkobV92aWV3
KSwgTW91c2VFdmVudFR5cGU6Ok1vdGlvbiwgMCwgMCwgeCwgeSwgMCwgMCk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>
<flag name="review"
          id="419519"
          type_id="1"
          status="+"
          setter="aperez"
    />
          </attachment>
      

    </bug>

</bugzilla>