<?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>138826</bug_id>
          
          <creation_ts>2014-11-18 02:37:30 -0800</creation_ts>
          <short_desc>[GTK] Add API to create a WebKitWebContext</short_desc>
          <delta_ts>2014-11-18 06:19:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (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</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>138828</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>gustavo</cc>
    
    <cc>pnormand</cc>
    
    <cc>svillar</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1049431</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-11-18 02:37:30 -0800</bug_when>
    <thetext>We have always used a default web context without providing API to create others. The main reason was that nobody requested it and we haven&apos;t needed it either. The main problem of the default web context is that you can&apos;t configure anything during construction. This hasn&apos;t been a problem so far because all the web context configuration we expose in the API can be configured after construction. But now we need to expose API to allow the user to configure the local storage directory (see https://bugzilla.gnome.org/show_bug.cgi?id=738720), which is a construct only configuration. The default web context was also a problem for our unit tests, because sharing the same context made it difficult to ensure tests cases are independent to each other. So, I think it&apos;s time to allow the user to create web contexts or inherit from WebKitWebContext to create a new custom context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1049440</commentid>
    <comment_count>1</comment_count>
      <attachid>241776</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-11-18 03:10:03 -0800</bug_when>
    <thetext>Created attachment 241776
Patch

I&apos;ve reworked all the unit tests to use a different web context making them independent to each other</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1049446</commentid>
    <comment_count>2</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2014-11-18 03:41:19 -0800</bug_when>
    <thetext>Should we use a different context for each test? There is value in testing things in a more realistic fashion, that will show issues that happen when one thing happens after another?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1049447</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-11-18 03:46:29 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Should we use a different context for each test? There is value in testing
&gt; things in a more realistic fashion, that will show issues that happen when
&gt; one thing happens after another?

If we need that, we should use the same test. So, if two tests need to use the same context, they could be merged, like we did with the favicon tests, for example. Are you thinking in any concrete test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1049459</commentid>
    <comment_count>4</comment_count>
      <attachid>241776</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2014-11-18 05:04:40 -0800</bug_when>
    <thetext>Comment on attachment 241776
Patch

Makes sense =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1049469</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-11-18 06:19:18 -0800</bug_when>
    <thetext>Committed r176256: &lt;http://trac.webkit.org/changeset/176256&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241776</attachid>
            <date>2014-11-18 03:10:03 -0800</date>
            <delta_ts>2014-11-18 05:04:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-web-context-new.diff</filename>
            <type>text/plain</type>
            <size>75840</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA0YzZmYWJmLi44ODMzYTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIg
QEAKKzIwMTQtMTEtMTggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIEFkZCBBUEkgdG8gY3JlYXRlIGEgV2ViS2l0V2ViQ29udGV4dAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM4ODI2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgaGF2ZSBh
bHdheXMgdXNlZCBhIGRlZmF1bHQgd2ViIGNvbnRleHQgd2l0aG91dCBwcm92aWRpbmcgQVBJIHRv
CisgICAgICAgIGNyZWF0ZSBvdGhlcnMuIFRoZSBtYWluIHJlYXNvbiB3YXMgdGhhdCBub2JvZHkg
cmVxdWVzdGVkIGl0IGFuZCB3ZQorICAgICAgICBoYXZlbid0IG5lZWRlZCBpdCBlaXRoZXIuIFRo
ZSBtYWluIHByb2JsZW0gb2YgdGhlIGRlZmF1bHQgd2ViCisgICAgICAgIGNvbnRleHQgaXMgdGhh
dCB5b3UgY2FuJ3QgY29uZmlndXJlIGFueXRoaW5nIGR1cmluZworICAgICAgICBjb25zdHJ1Y3Rp
b24uIFRoaXMgaGFzbid0IGJlZW4gYSBwcm9ibGVtIHNvIGZhciBiZWNhdXNlIGFsbCB0aGUKKyAg
ICAgICAgd2ViIGNvbnRleHQgY29uZmlndXJhdGlvbiB3ZSBleHBvc2UgaW4gdGhlIEFQSSBjYW4g
YmUgY29uZmlndXJlZAorICAgICAgICBhZnRlciBjb25zdHJ1Y3Rpb24uIEJ1dCBub3cgd2UgbmVl
ZCB0byBleHBvc2UgQVBJIHRvIGFsbG93IHRoZQorICAgICAgICB1c2VyIHRvIGNvbmZpZ3VyZSB0
aGUgbG9jYWwgc3RvcmFnZSBkaXJlY3RvcnksIHdoaWNoIGlzIGEKKyAgICAgICAgY29uc3RydWN0
IG9ubHkgY29uZmlndXJhdGlvbi4gVGhlIGRlZmF1bHQgd2ViIGNvbnRleHQgd2FzIGFsc28gYQor
ICAgICAgICBwcm9ibGVtIGZvciBvdXIgdW5pdCB0ZXN0cywgYmVjYXVzZSBzaGFyaW5nIHRoZSBz
YW1lIGNvbnRleHQgbWFkZQorICAgICAgICBpdCBkaWZmaWN1bHQgdG8gZW5zdXJlIHRlc3RzIGNh
c2VzIGFyZSBpbmRlcGVuZGVudCB0byBlYWNoIG90aGVyLgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXRH
ZW9sb2NhdGlvblByb3ZpZGVyOjp+V2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlcik6IFJlc2V0IHRo
ZQorICAgICAgICBwcm92aWRlciB0byBhdm9pZCBjcmFzaGVzIHdoZW4gd2ViIGNvbnRleHQgaXMg
ZGVzdHJveWVkIGFuZCBhIG5ldworICAgICAgICBvbmUgaXMgY3JlYXRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdFdl
YkNvbnRleHRDb25zdHJ1Y3RlZCk6IEFkZCBjb25zdHJ1Y3RlZCBpbXBsZW1lbnRhdGlvbiB0bwor
ICAgICAgICBjcmVhdGUgdGhlIFdlYkNvbnRleHQgYW5kIGluaXRpYWxpemUgaXQuCisgICAgICAg
ICh3ZWJraXRXZWJDb250ZXh0RGlzcG9zZSk6IERldGFjaCB3ZWIgY29udGV4dCBjbGllbnRzIHRv
IGF2b2lkCisgICAgICAgIGNyYXNoZXMgd2hlbiBhIGNsaWVudCBjYWxsYmFjayBpcyBjYWxsZWQg
b24gYSBkaXNwb3NlZCBXZWJLaXRXZWJDb250ZXh0LgorICAgICAgICAod2Via2l0X3dlYl9jb250
ZXh0X2NsYXNzX2luaXQpOiBJbml0aWFsaXplIGdldHRleHQsIGFkZAorICAgICAgICBjb25zdHJ1
Y3RlZCBpbXBsZW1lbnRhdGlvbiBhbmQgYWRkIHRoZSBwb2ludGVyIHRvIHRoZSB2bWV0aG9kcwor
ICAgICAgICB3aGVuIGNyZWF0aW5nIHNpZ25hbHMuCisgICAgICAgIChjcmVhdGVEZWZhdWx0V2Vi
Q29udGV4dCk6IFNpbXBseSBjcmVhdGUgYSBXZWJLaXRXZWJDb250ZXh0LgorICAgICAgICAod2Vi
a2l0X3dlYl9jb250ZXh0X25ldyk6IE5ldyBwdWJsaWMgbWV0aG9kIHRvIGNyZWF0ZSBhIFdlYktp
dFdlYkNvbnRleHQuCisgICAgICAgIChpbmplY3RlZEJ1bmRsZUZpbGVuYW1lKTogRGVsZXRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0Lmg6IEFkZCB2aXJ0
dWFsIG1ldGhvZHMgZm9yCisgICAgICAgIHNpZ25hbHMsIHNvIHRoYXQgdXNlcnMgY2FuIGluaGVy
aXQgZnJvbSBXZWJLaXRXZWJDb250ZXh0IGFuZAorICAgICAgICBvdmVycmlkZSB0aGUgdmlydHVh
bCBtZXRob2RzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1z
ZWN0aW9ucy50eHQ6IEFkZCBuZXcgc3ltYm9sLgorCiAyMDE0LTExLTE2ICBCZW5qYW1pbiBQb3Vs
YWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFN0YXJ0IGNsZWFuaW5nIHVwIG1p
bmltYWwgVUkgZnJvbSBXS1dlYlZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlci5jcHAKaW5kZXgg
YTFmZTUxZS4uYzgxNDYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlci5jcHAKQEAgLTUxLDYg
KzUxLDcgQEAgc3RhdGljIHZvaWQgc3RvcFVwZGF0aW5nQ2FsbGJhY2soV0tHZW9sb2NhdGlvbk1h
bmFnZXJSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8KIFdlYktpdEdlb2xvY2F0aW9uUHJvdmlk
ZXI6On5XZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyKCkKIHsKICAgICBtX3Byb3ZpZGVyLnN0b3BV
cGRhdGluZygpOworICAgIFdLR2VvbG9jYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIodG9BUEkobV9n
ZW9sb2NhdGlvbk1hbmFnZXIuZ2V0KCkpLCBudWxscHRyKTsKIH0KIAogUGFzc1JlZlB0cjxXZWJL
aXRHZW9sb2NhdGlvblByb3ZpZGVyPiBXZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyOjpjcmVhdGUo
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkqIGdlb2xvY2F0aW9uTWFuYWdlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAK
aW5kZXggNzNmNjBlOS4uZDIwM2Q3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTIwLDYgKzIwLDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJDb250ZXh0LmgiCiAKKyNpbmNs
dWRlICJBUElEb3dubG9hZENsaWVudC5oIgogI2luY2x1ZGUgIkFQSVN0cmluZy5oIgogI2luY2x1
ZGUgIldlYkJhdHRlcnlNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJDZXJ0aWZpY2F0ZUlu
Zm8uaCIKQEAgLTE0NCw2ICsxNDUsNyBAQCB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIEdSZWZQ
dHI8V2ViS2l0VVJJU2NoZW1lUmVxdWVzdD4gPiBVUklTY2hlbWVSZXF1ZXN0TWFwOwogCiBzdHJ1
Y3QgX1dlYktpdFdlYkNvbnRleHRQcml2YXRlIHsKICAgICBSZWZQdHI8V2ViQ29udGV4dD4gY29u
dGV4dDsKKyAgICBib29sIGNsaWVudHNEZXRhY2hlZDsKIAogICAgIEdSZWZQdHI8V2ViS2l0Q29v
a2llTWFuYWdlcj4gY29va2llTWFuYWdlcjsKICAgICBHUmVmUHRyPFdlYktpdEZhdmljb25EYXRh
YmFzZT4gZmF2aWNvbkRhdGFiYXNlOwpAQCAtMTk5LDEwICsyMDEsNzMgQEAgc3RhdGljIGlubGlu
ZSBXZWJLaXRQcm9jZXNzTW9kZWwgdG9XZWJLaXRQcm9jZXNzTW9kZWwoV2ViS2l0OjpQcm9jZXNz
TW9kZWwgcHJvY2UKICAgICB9CiB9CiAKK3N0YXRpYyBjb25zdCBjaGFyKiBpbmplY3RlZEJ1bmRs
ZURpcmVjdG9yeSgpCit7CisgICAgY29uc3QgY2hhciogYnVuZGxlRGlyZWN0b3J5ID0gZ19nZXRl
bnYoIldFQktJVF9JTkpFQ1RFRF9CVU5ETEVfUEFUSCIpOworICAgIGlmIChidW5kbGVEaXJlY3Rv
cnkgJiYgZ19maWxlX3Rlc3QoYnVuZGxlRGlyZWN0b3J5LCBHX0ZJTEVfVEVTVF9JU19ESVIpKQor
ICAgICAgICByZXR1cm4gYnVuZGxlRGlyZWN0b3J5OworCisgICAgc3RhdGljIGNvbnN0IGNoYXIq
IGluamVjdGVkQnVuZGxlUGF0aCA9IExJQkRJUiBHX0RJUl9TRVBBUkFUT1JfUyAid2Via2l0Mmd0
ay0iIFdFQktJVEdUS19BUElfVkVSU0lPTl9TVFJJTkcKKyAgICAgICAgR19ESVJfU0VQQVJBVE9S
X1MgImluamVjdGVkLWJ1bmRsZSIgR19ESVJfU0VQQVJBVE9SX1M7CisgICAgcmV0dXJuIGluamVj
dGVkQnVuZGxlUGF0aDsKK30KKworc3RhdGljIHZvaWQgd2Via2l0V2ViQ29udGV4dENvbnN0cnVj
dGVkKEdPYmplY3QqIG9iamVjdCkKK3sKKyAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfd2ViX2Nv
bnRleHRfcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0ZWQob2JqZWN0KTsKKworICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gYnVuZGxlRmlsZW5hbWUoZ19idWlsZF9maWxlbmFtZShpbmplY3RlZEJ1bmRsZURp
cmVjdG9yeSgpLCAibGlid2Via2l0Mmd0a2luamVjdGVkYnVuZGxlLnNvIiwgbnVsbHB0cikpOwor
ICAgIFdlYkNvbnRleHRDb25maWd1cmF0aW9uIHdlYkNvbnRleHRDb25maWd1cmF0aW9uOworICAg
IHdlYkNvbnRleHRDb25maWd1cmF0aW9uLmluamVjdGVkQnVuZGxlUGF0aCA9IFdlYkNvcmU6OmZp
bGVuYW1lVG9TdHJpbmcoYnVuZGxlRmlsZW5hbWUuZ2V0KCkpOworICAgIFdlYkNvbnRleHQ6OmFw
cGx5UGxhdGZvcm1TcGVjaWZpY0NvbmZpZ3VyYXRpb25EZWZhdWx0cyh3ZWJDb250ZXh0Q29uZmln
dXJhdGlvbik7CisKKyAgICBXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0ID0gV0VCS0lUX1dF
Ql9DT05URVhUKG9iamVjdCk7CisgICAgV2ViS2l0V2ViQ29udGV4dFByaXZhdGUqIHByaXYgPSB3
ZWJDb250ZXh0LT5wcml2OworICAgIHByaXYtPmNvbnRleHQgPSBXZWJDb250ZXh0OjpjcmVhdGUo
V1RGOjptb3ZlKHdlYkNvbnRleHRDb25maWd1cmF0aW9uKSk7CisKKyAgICBwcml2LT5yZXF1ZXN0
TWFuYWdlciA9IHByaXYtPmNvbnRleHQtPnN1cHBsZW1lbnQ8V2ViU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXI+KCk7CisgICAgcHJpdi0+Y29udGV4dC0+c2V0Q2FjaGVNb2RlbChDYWNo
ZU1vZGVsUHJpbWFyeVdlYkJyb3dzZXIpOworCisgICAgcHJpdi0+dGxzRXJyb3JzUG9saWN5ID0g
V0VCS0lUX1RMU19FUlJPUlNfUE9MSUNZX0ZBSUw7CisgICAgcHJpdi0+Y29udGV4dC0+c2V0SWdu
b3JlVExTRXJyb3JzKGZhbHNlKTsKKworICAgIGF0dGFjaEluamVjdGVkQnVuZGxlQ2xpZW50VG9D
b250ZXh0KHdlYkNvbnRleHQpOworICAgIGF0dGFjaERvd25sb2FkQ2xpZW50VG9Db250ZXh0KHdl
YkNvbnRleHQpOworICAgIGF0dGFjaFJlcXVlc3RNYW5hZ2VyQ2xpZW50VG9Db250ZXh0KHdlYkNv
bnRleHQpOworCisjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQorICAgIHByaXYtPmdlb2xvY2F0aW9u
UHJvdmlkZXIgPSBXZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyOjpjcmVhdGUocHJpdi0+Y29udGV4
dC0+c3VwcGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4oKSk7CisjZW5kaWYKKyNp
ZiBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpCisgICAgcHJpdi0+YmF0dGVyeVByb3ZpZGVyID0gV2Vi
S2l0QmF0dGVyeVByb3ZpZGVyOjpjcmVhdGUocHJpdi0+Y29udGV4dC0+c3VwcGxlbWVudDxXZWJC
YXR0ZXJ5TWFuYWdlclByb3h5PigpKTsKKyNlbmRpZgorI2lmIEVOQUJMRShTUEVMTENIRUNLKQor
ICAgIHByaXYtPnRleHRDaGVja2VyID0gV2ViS2l0VGV4dENoZWNrZXI6OmNyZWF0ZSgpOworI2Vu
ZGlmCit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHREaXNwb3NlKEdPYmplY3QqIG9i
amVjdCkKK3sKKyAgICBXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9XRUJf
Q09OVEVYVChvYmplY3QpLT5wcml2OworICAgIGlmICghcHJpdi0+Y2xpZW50c0RldGFjaGVkKSB7
CisgICAgICAgIHByaXYtPmNsaWVudHNEZXRhY2hlZCA9IHRydWU7CisgICAgICAgIHByaXYtPmNv
bnRleHQtPmluaXRpYWxpemVJbmplY3RlZEJ1bmRsZUNsaWVudChudWxscHRyKTsKKyAgICAgICAg
cHJpdi0+Y29udGV4dC0+c2V0RG93bmxvYWRDbGllbnQobnVsbHB0cik7CisgICAgfQorCisgICAg
R19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl9jb250ZXh0X3BhcmVudF9jbGFzcyktPmRpc3Bvc2Uo
b2JqZWN0KTsKK30KKwogc3RhdGljIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X2NsYXNzX2luaXQo
V2ViS2l0V2ViQ29udGV4dENsYXNzKiB3ZWJDb250ZXh0Q2xhc3MpCiB7CiAgICAgR09iamVjdENs
YXNzKiBnT2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyh3ZWJDb250ZXh0Q2xhc3MpOwogCisg
ICAgYmluZHRleHRkb21haW4oR0VUVEVYVF9QQUNLQUdFLCBQQUNLQUdFX0xPQ0FMRV9ESVIpOwor
ICAgIGJpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0KEdFVFRFWFRfUEFDS0FHRSwgIlVURi04Iik7CisK
KyAgICBnT2JqZWN0Q2xhc3MtPmNvbnN0cnVjdGVkID0gd2Via2l0V2ViQ29udGV4dENvbnN0cnVj
dGVkOworICAgIGdPYmplY3RDbGFzcy0+ZGlzcG9zZSA9IHdlYmtpdFdlYkNvbnRleHREaXNwb3Nl
OworCiAgICAgLyoqCiAgICAgICogV2ViS2l0V2ViQ29udGV4dDo6ZG93bmxvYWQtc3RhcnRlZDoK
ICAgICAgKiBAY29udGV4dDogdGhlICNXZWJLaXRXZWJDb250ZXh0CkBAIC0yMTIsMTIgKzI3Nywx
MyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfY2xhc3NfaW5pdChXZWJLaXRXZWJD
b250ZXh0Q2xhc3MqIHdlYkNvbnRleHRDbGFzcwogICAgICAqLwogICAgIHNpZ25hbHNbRE9XTkxP
QURfU1RBUlRFRF0gPQogICAgICAgICBnX3NpZ25hbF9uZXcoImRvd25sb2FkLXN0YXJ0ZWQiLAot
ICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1MoZ09iamVjdENsYXNzKSwKLSAg
ICAgICAgICAgICAgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAotICAgICAgICAgICAgICAgICAg
ICAgMCwgMCwgMCwKLSAgICAgICAgICAgICAgICAgICAgIGdfY2Nsb3N1cmVfbWFyc2hhbF9WT0lE
X19PQkpFQ1QsCi0gICAgICAgICAgICAgICAgICAgICBHX1RZUEVfTk9ORSwgMSwKLSAgICAgICAg
ICAgICAgICAgICAgIFdFQktJVF9UWVBFX0RPV05MT0FEKTsKKyAgICAgICAgICAgIEdfVFlQRV9G
Uk9NX0NMQVNTKGdPYmplY3RDbGFzcyksCisgICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwK
KyAgICAgICAgICAgIEdfU1RSVUNUX09GRlNFVChXZWJLaXRXZWJDb250ZXh0Q2xhc3MsIGRvd25s
b2FkX3N0YXJ0ZWQpLAorICAgICAgICAgICAgbnVsbHB0ciwgbnVsbHB0ciwKKyAgICAgICAgICAg
IGdfY2Nsb3N1cmVfbWFyc2hhbF9WT0lEX19PQkpFQ1QsCisgICAgICAgICAgICBHX1RZUEVfTk9O
RSwgMSwKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX0RPV05MT0FEKTsKIAogICAgIC8qKgogICAg
ICAqIFdlYktpdFdlYkNvbnRleHQ6OmluaXRpYWxpemUtd2ViLWV4dGVuc2lvbnM6CkBAIC0yMzQs
NjAgKzMwMCwxNSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfY2xhc3NfaW5pdChX
ZWJLaXRXZWJDb250ZXh0Q2xhc3MqIHdlYkNvbnRleHRDbGFzcwogICAgICAgICBnX3NpZ25hbF9u
ZXcoImluaXRpYWxpemUtd2ViLWV4dGVuc2lvbnMiLAogICAgICAgICAgICAgR19UWVBFX0ZST01f
Q0xBU1MoZ09iamVjdENsYXNzKSwKICAgICAgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAotICAg
ICAgICAgICAgMCwgbnVsbHB0ciwgbnVsbHB0ciwKKyAgICAgICAgICAgIEdfU1RSVUNUX09GRlNF
VChXZWJLaXRXZWJDb250ZXh0Q2xhc3MsIGluaXRpYWxpemVfd2ViX2V4dGVuc2lvbnMpLAorICAg
ICAgICAgICAgbnVsbHB0ciwgbnVsbHB0ciwKICAgICAgICAgICAgIGdfY2Nsb3N1cmVfbWFyc2hh
bF9WT0lEX19WT0lELAogICAgICAgICAgICAgR19UWVBFX05PTkUsIDApOwogfQogCi1zdGF0aWMg
Q1N0cmluZyBpbmplY3RlZEJ1bmRsZURpcmVjdG9yeSgpCi17Ci0gICAgY29uc3QgY2hhciogYnVu
ZGxlRGlyZWN0b3J5ID0gZ19nZXRlbnYoIldFQktJVF9JTkpFQ1RFRF9CVU5ETEVfUEFUSCIpOwot
ICAgIGlmIChidW5kbGVEaXJlY3RvcnkgJiYgZ19maWxlX3Rlc3QoYnVuZGxlRGlyZWN0b3J5LCBH
X0ZJTEVfVEVTVF9JU19ESVIpKQotICAgICAgICByZXR1cm4gYnVuZGxlRGlyZWN0b3J5OwotCi0g
ICAgc3RhdGljIGNvbnN0IGNoYXIqIGluamVjdGVkQnVuZGxlUGF0aCA9IExJQkRJUiBHX0RJUl9T
RVBBUkFUT1JfUyAid2Via2l0Mmd0ay0iIFdFQktJVEdUS19BUElfVkVSU0lPTl9TVFJJTkcKLSAg
ICAgICAgR19ESVJfU0VQQVJBVE9SX1MgImluamVjdGVkLWJ1bmRsZSIgR19ESVJfU0VQQVJBVE9S
X1M7Ci0gICAgcmV0dXJuIGluamVjdGVkQnVuZGxlUGF0aDsKLX0KLQotc3RhdGljIENTdHJpbmcg
aW5qZWN0ZWRCdW5kbGVGaWxlbmFtZSgpCi17Ci0gICAgR1VuaXF1ZVB0cjxjaGFyPiBidW5kbGVG
aWxlbmFtZShnX2J1aWxkX2ZpbGVuYW1lKGluamVjdGVkQnVuZGxlRGlyZWN0b3J5KCkuZGF0YSgp
LCAibGlid2Via2l0Mmd0a2luamVjdGVkYnVuZGxlLnNvIiwgTlVMTCkpOwotICAgIHJldHVybiBi
dW5kbGVGaWxlbmFtZS5nZXQoKTsKLX0KLQogc3RhdGljIGdwb2ludGVyIGNyZWF0ZURlZmF1bHRX
ZWJDb250ZXh0KGdwb2ludGVyKQogewotICAgIGJpbmR0ZXh0ZG9tYWluKEdFVFRFWFRfUEFDS0FH
RSwgUEFDS0FHRV9MT0NBTEVfRElSKTsKLSAgICBiaW5kX3RleHRkb21haW5fY29kZXNldChHRVRU
RVhUX1BBQ0tBR0UsICJVVEYtOCIpOwotCi0gICAgc3RhdGljIEdSZWZQdHI8V2ViS2l0V2ViQ29u
dGV4dD4gd2ViQ29udGV4dCA9IGFkb3B0R1JlZihXRUJLSVRfV0VCX0NPTlRFWFQoZ19vYmplY3Rf
bmV3KFdFQktJVF9UWVBFX1dFQl9DT05URVhULCBOVUxMKSkpOwotICAgIFdlYktpdFdlYkNvbnRl
eHRQcml2YXRlKiBwcml2ID0gd2ViQ29udGV4dC0+cHJpdjsKLQotICAgIFdlYkNvbnRleHRDb25m
aWd1cmF0aW9uIHdlYkNvbnRleHRDb25maWd1cmF0aW9uOwotICAgIHdlYkNvbnRleHRDb25maWd1
cmF0aW9uLmluamVjdGVkQnVuZGxlUGF0aCA9IFdlYkNvcmU6OmZpbGVuYW1lVG9TdHJpbmcoaW5q
ZWN0ZWRCdW5kbGVGaWxlbmFtZSgpLmRhdGEoKSk7Ci0gICAgV2ViQ29udGV4dDo6YXBwbHlQbGF0
Zm9ybVNwZWNpZmljQ29uZmlndXJhdGlvbkRlZmF1bHRzKHdlYkNvbnRleHRDb25maWd1cmF0aW9u
KTsKLSAgICBwcml2LT5jb250ZXh0ID0gV2ViQ29udGV4dDo6Y3JlYXRlKFdURjo6bW92ZSh3ZWJD
b250ZXh0Q29uZmlndXJhdGlvbikpOwotCi0gICAgcHJpdi0+cmVxdWVzdE1hbmFnZXIgPSB3ZWJD
b250ZXh0LT5wcml2LT5jb250ZXh0LT5zdXBwbGVtZW50PFdlYlNvdXBDdXN0b21Qcm90b2NvbFJl
cXVlc3RNYW5hZ2VyPigpOwotICAgIHByaXYtPmNvbnRleHQtPnNldENhY2hlTW9kZWwoQ2FjaGVN
b2RlbFByaW1hcnlXZWJCcm93c2VyKTsKLQotICAgIHByaXYtPnRsc0Vycm9yc1BvbGljeSA9IFdF
QktJVF9UTFNfRVJST1JTX1BPTElDWV9GQUlMOwotICAgIHByaXYtPmNvbnRleHQtPnNldElnbm9y
ZVRMU0Vycm9ycyhmYWxzZSk7Ci0KLSAgICBhdHRhY2hJbmplY3RlZEJ1bmRsZUNsaWVudFRvQ29u
dGV4dCh3ZWJDb250ZXh0LmdldCgpKTsKLSAgICBhdHRhY2hEb3dubG9hZENsaWVudFRvQ29udGV4
dCh3ZWJDb250ZXh0LmdldCgpKTsKLSAgICBhdHRhY2hSZXF1ZXN0TWFuYWdlckNsaWVudFRvQ29u
dGV4dCh3ZWJDb250ZXh0LmdldCgpKTsKLQotI2lmIEVOQUJMRShHRU9MT0NBVElPTikKLSAgICBw
cml2LT5nZW9sb2NhdGlvblByb3ZpZGVyID0gV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlcjo6Y3Jl
YXRlKHByaXYtPmNvbnRleHQtPnN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+
KCkpOwotI2VuZGlmCi0jaWYgRU5BQkxFKEJBVFRFUllfU1RBVFVTKQotICAgIHByaXYtPmJhdHRl
cnlQcm92aWRlciA9IFdlYktpdEJhdHRlcnlQcm92aWRlcjo6Y3JlYXRlKHByaXYtPmNvbnRleHQt
PnN1cHBsZW1lbnQ8V2ViQmF0dGVyeU1hbmFnZXJQcm94eT4oKSk7Ci0jZW5kaWYKLSNpZiBFTkFC
TEUoU1BFTExDSEVDSykKLSAgICBwcml2LT50ZXh0Q2hlY2tlciA9IFdlYktpdFRleHRDaGVja2Vy
OjpjcmVhdGUoKTsKLSNlbmRpZgorICAgIHN0YXRpYyBHUmVmUHRyPFdlYktpdFdlYkNvbnRleHQ+
IHdlYkNvbnRleHQgPSBhZG9wdEdSZWYoV0VCS0lUX1dFQl9DT05URVhUKGdfb2JqZWN0X25ldyhX
RUJLSVRfVFlQRV9XRUJfQ09OVEVYVCwgbnVsbHB0cikpKTsKICAgICByZXR1cm4gd2ViQ29udGV4
dC5nZXQoKTsKIH0KIApAQCAtMzA1LDYgKzMyNiwyMCBAQCBXZWJLaXRXZWJDb250ZXh0KiB3ZWJr
aXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQodm9pZCkKIH0KIAogLyoqCisgKiB3ZWJraXRfd2Vi
X2NvbnRleHRfbmV3OgorICoKKyAqIENyZWF0ZSBhIG5ldyAjV2ViS2l0V2ViQ29udGV4dAorICoK
KyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogYSBuZXdseSBjcmVhdGVkICNXZWJLaXRXZWJD
b250ZXh0CisgKgorICogU2luY2U6IDIuOAorICovCitXZWJLaXRXZWJDb250ZXh0KiB3ZWJraXRf
d2ViX2NvbnRleHRfbmV3KHZvaWQpCit7CisgICAgcmV0dXJuIFdFQktJVF9XRUJfQ09OVEVYVChn
X29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0NPTlRFWFQsIG51bGxwdHIpKTsKK30KKworLyoq
CiAgKiB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2NhY2hlX21vZGVsOgogICogQGNvbnRleHQ6IHRo
ZSAjV2ViS2l0V2ViQ29udGV4dAogICogQGNhY2hlX21vZGVsOiBhICNXZWJLaXRDYWNoZU1vZGVs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJD
b250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250
ZXh0LmgKaW5kZXggMGNlOGYwNC4uOGM0MjhjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaApAQCAtMTI3LDE0ICsxMjcsMTYg
QEAgc3RydWN0IF9XZWJLaXRXZWJDb250ZXh0IHsKIHN0cnVjdCBfV2ViS2l0V2ViQ29udGV4dENs
YXNzIHsKICAgICBHT2JqZWN0Q2xhc3MgcGFyZW50OwogCisgICAgdm9pZCAoKiBkb3dubG9hZF9z
dGFydGVkKSAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXREb3dubG9hZCAgICpkb3dubG9hZCk7
CisgICAgdm9pZCAoKiBpbml0aWFsaXplX3dlYl9leHRlbnNpb25zKSAoV2ViS2l0V2ViQ29udGV4
dCAqY29udGV4dCk7CisKICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDApICh2b2lkKTsKICAg
ICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKICAgICB2b2lkICgqX3dlYmtpdF9y
ZXNlcnZlZDIpICh2b2lkKTsKICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDMpICh2b2lkKTsK
ICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDQpICh2b2lkKTsKICAgICB2b2lkICgqX3dlYmtp
dF9yZXNlcnZlZDUpICh2b2lkKTsKLSAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDYpICh2b2lk
KTsKLSAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDcpICh2b2lkKTsKIH07CiAKIFdFQktJVF9B
UEkgR1R5cGUKQEAgLTE0Myw2ICsxNDUsOSBAQCB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3R5cGUg
ICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpOwogV0VCS0lUX0FQSSBXZWJLaXRXZWJDb250
ZXh0ICoKIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCAgICAgICAgICAgICAgICAgICAg
ICAodm9pZCk7CiAKK1dFQktJVF9BUEkgV2ViS2l0V2ViQ29udGV4dCAqCit3ZWJraXRfd2ViX2Nv
bnRleHRfbmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpOworCiBXRUJLSVRf
QVBJIHZvaWQKIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfY2FjaGVfbW9kZWwgICAgICAgICAgICAg
ICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgICAgICAgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdENhY2hlTW9k
ZWwgICAgICAgICAgICAgICBjYWNoZV9tb2RlbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0IGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dApp
bmRleCAzZjliZGJkLi5iZTRmZjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKQEAgLTI4
LDYgKzI4LDcgQEAgV2ViS2l0Q2FjaGVNb2RlbAogV2ViS2l0UHJvY2Vzc01vZGVsCiBXZWJLaXRU
TFNFcnJvcnNQb2xpY3kKIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdAord2Via2l0X3dl
Yl9jb250ZXh0X25ldwogd2Via2l0X3dlYl9jb250ZXh0X2dldF9jYWNoZV9tb2RlbAogd2Via2l0
X3dlYl9jb250ZXh0X3NldF9jYWNoZV9tb2RlbAogd2Via2l0X3dlYl9jb250ZXh0X2NsZWFyX2Nh
Y2hlCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
ZTljZmI1My4uMDY2Y2VlOSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNSBAQAorMjAxNC0xMS0xOCAgQ2FybG9zIEdhcmNpYSBD
YW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIEFQSSB0byBj
cmVhdGUgYSBXZWJLaXRXZWJDb250ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMzg4MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVc2UgYSBkaWZmZXJlbnQgV2ViS2l0V2ViQ29udGV4dCBmb3IgZXZl
cnkgdGVzdCB0byBlbnN1cmUgdGVzdAorICAgICAgICBjYXNlcyBhcmUgaW5kZXBlbmRlbnQgdG8g
ZWFjaCBvdGhlci4gVGVzdHMgdXNpbmcgREJ1cyB0bworICAgICAgICBjb21tdW5pY2F0ZSB3aXRo
IHRoZSBpbmplY3RlZCBidW5kbGUgZXh0ZW5zaW9uIG5vdyB1c2UgYSB1bmlxdWUKKyAgICAgICAg
bmFtZSBmb3IgdGhlIHdlbGwga25vd24gREJ1cyBuYW1lLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RBdXRoZW50aWNhdGlvbi5jcHA6CisgICAgICAgIChi
ZWZvcmVBbGwpOiBSZW1vdmUgY29tbWVudCBhYm91dCB0aGUgb3JkZXIgb2YgdGhlIHRlc3RzIGFu
ZAorICAgICAgICBtb3ZlIHRoZSBzdWNjZXNzIHRlc3QgYmVmb3JlIHRoZSBmYWlsZWQgb25lIG5v
dyB0aGF0IHRlc3RzIGRvbid0CisgICAgICAgIGRlcGVuZCBvbiBlYWNoIG90aGVycy4KKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdENvbnRleHRNZW51LmNwcDoK
KyAgICAgICAgKGJlZm9yZUFsbCk6IFJlbW92ZSBjYWxsIHRvIHNldCB0aGUgd2ViIGV4dGVuc2lv
bnMgZGlyZWN0b3J5LAorICAgICAgICBzaW5jZSB0aGlzIGlzIG5vdyBkb25lIGZvciBhbGwgdGVz
dCBpbiB0aGUgVGVzdCBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJHdGsvVGVzdENvb2tpZU1hbmFnZXIuY3BwOgorICAgICAgICAoYmVmb3JlQWxsKTog
RG8gbm90IGNyZWF0ZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnksIGEgdGVtcG9yYXJ5IGRhdGEKKyAg
ICAgICAgZGlyZWN0b3J5IGlzIG5vdyBjcmVhdGVkIGZvciBhbGwgdGVzdHMuCisgICAgICAgIChh
ZnRlckFsbCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RE
T01Ob2RlLmNwcDoKKyAgICAgICAgKHRlc3RXZWJLaXRET01Ob2RlSGllcmFyY2h5TmF2aWdhdGlv
bik6IFBhc3MgdGhlIHdlYiBleHRlbnNpb24gSUQKKyAgICAgICAgdG8gdGhlIHdlYiBwcm9jZXNz
IHRlc3QgcnVubmVyLgorICAgICAgICAodGVzdFdlYktpdERPTU5vZGVJbnNlcnRpb24pOiBEaXR0
by4KKyAgICAgICAgKHRlc3RXZWJLaXRET01Ob2RlVGFnTmFtZXMpOiBEaXR0by4KKyAgICAgICAg
KGJlZm9yZUFsbCk6IFJlbW92ZSBjYWxsIHRvIHNldCB0aGUgd2ViIGV4dGVuc2lvbnMgZGlyZWN0
b3J5LgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0RE9NTm9k
ZUZpbHRlci5jcHA6CisgICAgICAgIChydW5UZXN0KTogUGFzcyB0aGUgd2ViIGV4dGVuc2lvbiBJ
RCB0byB0aGUgd2ViIHByb2Nlc3MgdGVzdCBydW5uZXIuCisgICAgICAgIChiZWZvcmVBbGwpOiBS
ZW1vdmUgY2FsbCB0byBzZXQgdGhlIHdlYiBleHRlbnNpb25zIGRpcmVjdG9yeS4KKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdERPTVhQYXRoTlNSZXNvbHZlci5j
cHA6CisgICAgICAgIChydW5UZXN0KTogUGFzcyB0aGUgd2ViIGV4dGVuc2lvbiBJRCB0byB0aGUg
d2ViIHByb2Nlc3MgdGVzdCBydW5uZXIuCisgICAgICAgIChiZWZvcmVBbGwpOiBSZW1vdmUgY2Fs
bCB0byBzZXQgdGhlIHdlYiBleHRlbnNpb25zIGRpcmVjdG9yeS4KKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdERvd25sb2Fkcy5jcHA6CisgICAgICAgIChjcmVh
dGVGaWxlQXREZXN0aW5hdGlvbik6IFVzZSBUZXN0OjpkYXRhRGlyZWN0b3J5KCkgYXMgYmFzZSBk
aXIKKyAgICAgICAgZm9yIHRlbXBvcmFyeSBmaWxlcy4KKyAgICAgICAgKGJlZm9yZUFsbCk6IERv
IG5vdCBjcmVhdGUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5LgorICAgICAgICAoYWZ0ZXJBbGwpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0RnJhbWUuY3BwOgor
ICAgICAgICAod2Via2l0RnJhbWVUZXN0UnVuKTogUGFzcyB0aGUgd2ViIGV4dGVuc2lvbiBJRCB0
byB0aGUgd2ViIHByb2Nlc3MKKyAgICAgICAgdGVzdCBydW5uZXIuCisgICAgICAgIChiZWZvcmVB
bGwpOiBSZW1vdmUgY2FsbCB0byBzZXQgdGhlIHdlYiBleHRlbnNpb25zIGRpcmVjdG9yeS4KKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdExvYWRlckNsaWVudC5j
cHA6CisgICAgICAgIChiZWZvcmVBbGwpOiBSZW1vdmUgY2FsbCB0byBzZXQgdGhlIHdlYiBleHRl
bnNpb25zIGRpcmVjdG9yeS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJH
dGsvVGVzdE11bHRpcHJvY2Vzcy5jcHA6CisgICAgICAgICh0ZXN0UHJvY2Vzc1BlcldlYlZpZXcp
OiBVc2UgbG9jYWwgbWVtYmVyIGluc3RlYWQgb2YgZ2xvYmFsIHZhcmlhYmxlLgorICAgICAgICAo
dGVzdE11bHRpcHJvY2Vzc1dlYlZpZXdDcmVhdGVSZWFkeUNsb3NlKTogRGl0dG8uCisgICAgICAg
IChiZWZvcmVBbGwpOiBEbyBub3QgY29ubmVjdCB0byBpbml0aWFsaXplLXdlYi1leHRlbnNpb25z
LCBUZXN0IG5vdworICAgICAgICBjb25uZWN0cyB0byB0aGUgc2lnbmFsIGZvciBhbGwgdGVzdHMg
YW5kIGNhbGxzIGEgdmlydHVhbCBtZXRob2QKKyAgICAgICAgdGhhdCB0ZXN0IGNhbiBvdmVycmlk
ZS4KKyAgICAgICAgKGFmdGVyQWxsKToKKyAgICAgICAgKGluaXRpYWxpemVXZWJFeHRlbnNpb25z
KTogRGVsZXRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVz
dFByaW50aW5nLmNwcDoKKyAgICAgICAgKHRlc3RQcmludE9wZXJhdGlvblByaW50KTogVXNlIFRl
c3Q6OmRhdGFEaXJlY3RvcnkoKSBhcyBiYXNlIGRpcgorICAgICAgICBmb3IgdGVtcG9yYXJ5IGZp
bGVzLgorICAgICAgICAoYmVmb3JlQWxsKTogRG8gbm90IGNyZWF0ZSBhIHRlbXBvcmFyeSBkaXJl
Y3RvcnkuCisgICAgICAgIChhZnRlckFsbCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyR3RrL1Rlc3RSZXNvdXJjZXMuY3BwOgorICAgICAgICAoYmVmb3JlQWxsKTogUmVt
b3ZlIGNhbGwgdG8gc2V0IHRoZSB3ZWIgZXh0ZW5zaW9ucyBkaXJlY3RvcnkuCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RTU0wuY3BwOgorICAgICAgICAoYmVm
b3JlQWxsKTogUmVtb3ZlIGNvbW1lbnQgYWJvdXQgdGhlIHRlc3RzIG9yZGVyLgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViRXh0ZW5zaW9ucy5jcHA6Cisg
ICAgICAgICh0ZXN0V2ViRXh0ZW5zaW9uR2V0VGl0bGUpOiBCdWlsZCB0aGUgREJ1cyBzZXJ2aWNl
IG5hbWUgdXNpbmcgdGhlCisgICAgICAgIHdlYiBleHRlbnNpb24gSUQuCisgICAgICAgICh0ZXN0
RG9jdW1lbnRMb2FkZWRTaWduYWwpOiBEaXR0by4KKyAgICAgICAgKHRlc3RXZWJLaXRXZWJWaWV3
UHJvY2Vzc0NyYXNoZWQpOiBEaXR0by4KKyAgICAgICAgKHRlc3RXZWJFeHRlbnNpb25Jc29sYXRl
ZFdvcmxkKTogRGl0dG8uCisgICAgICAgIChiZWZvcmVBbGwpOiBSZW1vdmUgaW5pdGlhbGl6YXRp
b24tdXNlci1kYXRhIHRlc3QsIHNpbmNlIG5vdyBhbGwKKyAgICAgICAgdGVzdHMgYXJlIHBhc3Np
bmcgdXNlciBkYXRhIHRvIHRoZSB3ZWIgZXh0ZW5zaW9uLgorICAgICAgICAodGVzdFdlYkV4dGVu
c2lvbkluaXRpYWxpemF0aW9uVXNlckRhdGEpOiBEZWxldGVkLgorICAgICAgICAoaW5pdGlhbGl6
ZVdlYkV4dGVuc2lvbnMpOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mkd0ay9UZXN0V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKHRlc3RT
ZXREaXJlY3RvcnkpOiBVc2UgdGhlIHdlYiBjb250ZXh0IG1lbWJlciBpbmhlcml0ZWQgZnJvbSBU
ZXN0LgorICAgICAgICAodGVzdENsZWFyRGF0YWJhc2UpOiBEaXR0by4KKyAgICAgICAgKHRlc3RH
ZXRGYXZpY29uVVJJKTogRGl0dG8uCisgICAgICAgIChiZWZvcmVBbGwpOiBEbyBub3QgY3JlYXRl
IGEgdGVtcG9yYXJ5IGRpcmVjdG9yeS4KKyAgICAgICAgKGFmdGVyQWxsKToKKyAgICAgICAgKHdl
YmtpdEZhdmljb25EYXRhYmFzZUZpbmFsaXplZENhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFVzZXJDb250ZW50TWFu
YWdlci5jcHA6CisgICAgICAgIChVc2VyQ29udGVudE1hbmFnZXJUZXN0OjpVc2VyQ29udGVudE1h
bmFnZXJUZXN0KToKKyAgICAgICAgKGJlZm9yZUFsbCk6IFJlbW92ZSBjYWxsIHRvIHNldCB0aGUg
d2ViIGV4dGVuc2lvbnMgZGlyZWN0b3J5LgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh0ZXN0V2ViQ29u
dGV4dERlZmF1bHQpOiBDaGVjayBhbHNvIHRoYXQgYSBuZXdseSBjcmVhdGUgd2ViCisgICAgICAg
IGNvbnRleHQgaXMgbm90IHRoZSBkZWZhdWx0IHdlYiBjb250ZXh0LgorICAgICAgICAodGVzdFdl
YkNvbnRleHRTcGVsbENoZWNrZXIpOiBVc2UgdGhlIHdlYiBjb250ZXh0IG1lbWJlciBpbmhlcml0
ZWQKKyAgICAgICAgZnJvbSBUZXN0LgorICAgICAgICAodGVzdFdlYkNvbnRleHRMYW5ndWFnZXMp
OiBEaXR0by4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvV2ViRXh0
ZW5zaW9uVGVzdC5jcHA6CisgICAgICAgIChtZXRob2RDYWxsQ2FsbGJhY2spOiBSZW1vdmUgR2V0
SW5pdGlhbGl6YXRpb25Vc2VyRGF0YSBtZXRob2QuCisgICAgICAgICh3ZWJraXRfd2ViX2V4dGVu
c2lvbl9pbml0aWFsaXplX3dpdGhfdXNlcl9kYXRhKTogQWx3YXlzIGNyZWF0ZQorICAgICAgICB0
aGUgREJ1cyBuYW1lIHVzaW5nIHRoZSB1c2VyIGRhdGEgcHJvdmlkZWQuCisgICAgICAgIChtYWtl
QnVzTmFtZSk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
R3RrL1dlYlByb2Nlc3NUZXN0LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2lu
aXRpYWxpemVfd2l0aF91c2VyX2RhdGEpOiBDcmVhdGUgdGhlIERCdXMKKyAgICAgICAgbmFtZSB1
c2luZyB0aGUgdXNlciBkYXRhIHByb3ZpZGVkLgorICAgICAgICAod2Via2l0X3dlYl9leHRlbnNp
b25faW5pdGlhbGl6ZSk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9ndGsvV2Vi
S2l0Mkd0ay9UZXN0TWFpbi5jcHA6CisgICAgICAgIChUZXN0OjpkYXRhRGlyZWN0b3J5KTogUmV0
dXJuIHRoZSB0ZW1wb3JhcnkgZGF0YSBkaXJlY3RvcnkuCisgICAgICAgIChyZW1vdmVOb25FbXB0
eURpcmVjdG9yeSk6IEFsc28gcmVtb3ZlIGRpcmVjdG9yaWVzIHJlY3Vyc2l2ZWx5LgorICAgICAg
ICAobWFpbik6IFJlbW92ZSB0aGUgZGlzayBjYWNoZSBkaXJlY3RvcnkgaW5pdGlhbGl6YXRpb24s
IHNpbmNlIHRoaXMKKyAgICAgICAgaXMgbm93IGRvbmUgaW4gdGhlIFRlc3QgY29uc3RydWN0b3Iu
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9UZXN0TWFpbi5oOgorICAg
ICAgICAoVGVzdDo6aW5pdGlhbGl6ZVdlYkV4dGVuc2lvbnNDYWxsYmFjayk6IENhbGwgdGhlIHZp
cnR1YWwgbWV0aG9kCisgICAgICAgIGluaXRpYWxpemVXZWJFeHRlbnNpb25zKCkKKyAgICAgICAg
KFRlc3Q6OlRlc3QpOiBDcmVhdGUgYSBuZXcgV2ViS2l0V2ViQ29udGV4dCBhbmQgaW5pdGlhbGl6
ZSBpdC4KKyAgICAgICAgKFRlc3Q6On5UZXN0KTogRGlzY29ubmVjdCBpbml0aWFsaXplLXdlYi1l
eHRlbnNpb25zIHNpZ25hbC4KKyAgICAgICAgKFRlc3Q6OmluaXRpYWxpemVXZWJFeHRlbnNpb25z
KTogU2V0IHRoZSB3ZWIgZXh0ZW5zaW9ucyBkaXJlY3RvcnkKKyAgICAgICAgYW5kIHVzZXIgZGF0
YS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYlByb2Nlc3NUZXN0
UnVubmVyLmNwcDoKKyAgICAgICAgKFdlYlByb2Nlc3NUZXN0UnVubmVyOjp+V2ViUHJvY2Vzc1Rl
c3RSdW5uZXIpOiBVc2UgbnVsbHB0ci4KKyAgICAgICAgKFdlYlByb2Nlc3NUZXN0UnVubmVyOjpy
dW5UZXN0KTogQnVpbGQgdGhlIERCdXMgcHJveHkgdXNpbmcgYQorICAgICAgICB1bmlxdWUgbmFt
ZSBjcmVhdGVkIHdpdGggdGhlIFRlc3Qgd2ViIGV4dGVuc2lvbiBJRC4KKyAgICAgICAgKFdlYlBy
b2Nlc3NUZXN0UnVubmVyOjpwcm94eSk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9ndGsvV2ViS2l0Mkd0ay9XZWJQcm9jZXNzVGVzdFJ1bm5lci5oOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViVmlld1Rlc3QuY3BwOgorICAgICAgICAoV2ViVmll
d1Rlc3Q6OldlYlZpZXdUZXN0KTogQ3JlYXRlIHRoZSB3ZWIgdmlldyB3aXRoIHRoZSBUZXN0IHdl
YgorICAgICAgICBjb250ZXh0LgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJH
dGsvV2ViVmlld1Rlc3QuaDogQWRkIG9wdGlvbmFsIHVzZXIKKyAgICAgICAgY29udGVudCBtYW5h
Z2VyIHBhcmFtZXRlciB0byB0aGUgY29uc3RydWN0b3IuCisKIDIwMTQtMTEtMTcgIEV2YSBCYWxh
enNmYWx2aSAgPGV2YWIudS1zemVnZWRAcGFydG5lci5zYW1zdW5nLmNvbT4KIAogICAgICAgICBC
dW1wIEVGTCB2ZXJzaW9uIHRvIDEuMTIuMApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RBdXRoZW50aWNhdGlvbi5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdEF1dGhlbnRpY2F0aW9uLmNwcAppbmRleCBlZGU0
MjI1Li5lZDA1NjljIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJHdGsvVGVzdEF1dGhlbnRpY2F0aW9uLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJHdGsvVGVzdEF1dGhlbnRpY2F0aW9uLmNwcApAQCAtMjcyLDEyICsyNzIsMTAg
QEAgdm9pZCBiZWZvcmVBbGwoKQogICAgIEF1dGhlbnRpY2F0aW9uVGVzdDo6YWRkKCJXZWJLaXRX
ZWJWaWV3IiwgImF1dGhlbnRpY2F0aW9uLXJlcXVlc3QiLCB0ZXN0V2ViVmlld0F1dGhlbnRpY2F0
aW9uUmVxdWVzdCk7CiAgICAgQXV0aGVudGljYXRpb25UZXN0OjphZGQoIldlYktpdFdlYlZpZXci
LCAiYXV0aGVudGljYXRpb24tY2FuY2VsIiwgdGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvbkNhbmNl
bCk7CiAgICAgQXV0aGVudGljYXRpb25UZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiYXV0aGVu
dGljYXRpb24tbG9hZC1jYW5jZWxsZWQiLCB0ZXN0V2ViVmlld0F1dGhlbnRpY2F0aW9uTG9hZENh
bmNlbGxlZCk7CisgICAgQXV0aGVudGljYXRpb25UZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAi
YXV0aGVudGljYXRpb24tc3VjY2VzcyIsIHRlc3RXZWJWaWV3QXV0aGVudGljYXRpb25TdWNjZXNz
KTsKICAgICBBdXRoZW50aWNhdGlvblRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJhdXRoZW50
aWNhdGlvbi1mYWlsdXJlIiwgdGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvbkZhaWx1cmUpOwogICAg
IEF1dGhlbnRpY2F0aW9uVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImF1dGhlbnRpY2F0aW9u
LW5vLWNyZWRlbnRpYWwiLCB0ZXN0V2ViVmlld0F1dGhlbnRpY2F0aW9uTm9DcmVkZW50aWFsKTsK
ICAgICBBdXRoZW50aWNhdGlvblRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJhdXRoZW50aWNh
dGlvbi1zdG9yYWdlIiwgdGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvblN0b3JhZ2UpOwotICAgIC8v
IFRlc3RpbmcgYXV0aGVudGljYXRpb24gc3VjY2VzcyBtdXN0IGJlIGRvbmUgbGFzdCBiZWNhdXNl
IGxpYnNvdXAgd2lsbCBuZXZlciBmaXJlCi0gICAgLy8gdGhlIGF1dGhlbnRpY2F0ZSBzaWduYWwg
YWdhaW4gb25jZSBhdXRoZW50aWNhdGlvbiBpcyBzdWNjZXNzZnVsLgotICAgIEF1dGhlbnRpY2F0
aW9uVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImF1dGhlbnRpY2F0aW9uLXN1Y2Nlc3MiLCB0
ZXN0V2ViVmlld0F1dGhlbnRpY2F0aW9uU3VjY2Vzcyk7CiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RDb250
ZXh0TWVudS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdENv
bnRleHRNZW51LmNwcAppbmRleCA1MmRmMmUwLi5kY2RmZTYyIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdENvbnRleHRNZW51LmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdENvbnRleHRNZW51LmNwcApA
QCAtMTA0MCw3ICsxMDQwLDYgQEAgc3RhdGljIHZvaWQgdGVzdENvbnRleHRNZW51V2ViRXh0ZW5z
aW9uTm9kZShDb250ZXh0TWVudVdlYkV4dGVuc2lvbk5vZGVUZXN0KiB0ZXMKIAogdm9pZCBiZWZv
cmVBbGwoKQogewotICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfd2ViX2V4dGVuc2lvbnNfZGly
ZWN0b3J5KHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgpLCBXRUJLSVRfVEVTVF9XRUJf
RVhURU5TSU9OU19ESVIpOwogICAgIENvbnRleHRNZW51RGVmYXVsdFRlc3Q6OmFkZCgiV2ViS2l0
V2ViVmlldyIsICJkZWZhdWx0LW1lbnUiLCB0ZXN0Q29udGV4dE1lbnVEZWZhdWx0TWVudSk7CiAg
ICAgQ29udGV4dE1lbnVDdXN0b21UZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAicG9wdWxhdGUt
bWVudSIsIHRlc3RDb250ZXh0TWVudVBvcHVsYXRlTWVudSk7CiAgICAgQ29udGV4dE1lbnVDdXN0
b21GdWxsVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImN1c3RvbS1tZW51IiwgdGVzdENvbnRl
eHRNZW51Q3VzdG9tTWVudSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJHdGsvVGVzdENvb2tpZU1hbmFnZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyR3RrL1Rlc3RDb29raWVNYW5hZ2VyLmNwcAppbmRleCAyZTk4NjQ1Li4xZTg0
MmNkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVz
dENvb2tpZU1hbmFnZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mkd0ay9UZXN0Q29va2llTWFuYWdlci5jcHAKQEAgLTI0LDcgKzI0LDYgQEAKICNpbmNsdWRlIDxn
bGliL2dzdGRpby5oPgogCiBzdGF0aWMgV2ViS2l0VGVzdFNlcnZlcioga1NlcnZlcjsKLXN0YXRp
YyBjaGFyKiBrVGVtcERpcmVjdG9yeTsKIAogc3RhdGljIGNvbnN0IGNoYXIqIGtGaXJzdFBhcnR5
RG9tYWluID0gIjEyNy4wLjAuMSI7CiBzdGF0aWMgY29uc3QgY2hhcioga1RoaXJkUGFydHlEb21h
aW4gPSAibG9jYWxob3N0IjsKQEAgLTcyLDEyICs3MSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHN3
aXRjaCAoc3RvcmFnZSkgewogICAgICAgICBjYXNlIFdFQktJVF9DT09LSUVfUEVSU0lTVEVOVF9T
VE9SQUdFX1RFWFQ6CiAgICAgICAgICAgICBpZiAoIW1fY29va2llc1RleHRGaWxlKQotICAgICAg
ICAgICAgICAgIG1fY29va2llc1RleHRGaWxlLnJlc2V0KGdfYnVpbGRfZmlsZW5hbWUoa1RlbXBE
aXJlY3RvcnksICJjb29raWVzLnR4dCIsIE5VTEwpKTsKKyAgICAgICAgICAgICAgICBtX2Nvb2tp
ZXNUZXh0RmlsZS5yZXNldChnX2J1aWxkX2ZpbGVuYW1lKFRlc3Q6OmRhdGFEaXJlY3RvcnkoKSwg
ImNvb2tpZXMudHh0IiwgbnVsbHB0cikpOwogICAgICAgICAgICAgZmlsZW5hbWUgPSBtX2Nvb2tp
ZXNUZXh0RmlsZS5nZXQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdFQktJ
VF9DT09LSUVfUEVSU0lTVEVOVF9TVE9SQUdFX1NRTElURToKICAgICAgICAgICAgIGlmICghbV9j
b29raWVzU1FMaXRlRmlsZSkKLSAgICAgICAgICAgICAgICBtX2Nvb2tpZXNTUUxpdGVGaWxlLnJl
c2V0KGdfYnVpbGRfZmlsZW5hbWUoa1RlbXBEaXJlY3RvcnksICJjb29raWVzLmRiIiwgTlVMTCkp
OworICAgICAgICAgICAgICAgIG1fY29va2llc1NRTGl0ZUZpbGUucmVzZXQoZ19idWlsZF9maWxl
bmFtZShUZXN0OjpkYXRhRGlyZWN0b3J5KCksICJjb29raWVzLmRiIiwgbnVsbHB0cikpOwogICAg
ICAgICAgICAgZmlsZW5hbWUgPSBtX2Nvb2tpZXNTUUxpdGVGaWxlLmdldCgpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0zMTUsOSArMzE0LDYgQEAgdm9pZCBiZWZv
cmVBbGwoKQogICAgIGtTZXJ2ZXIgPSBuZXcgV2ViS2l0VGVzdFNlcnZlcigpOwogICAgIGtTZXJ2
ZXItPnJ1bihzZXJ2ZXJDYWxsYmFjayk7CiAKLSAgICBrVGVtcERpcmVjdG9yeSA9IGdfZGlyX21h
a2VfdG1wKCJXZWJLaXQyVGVzdHMtWFhYWFhYIiwgMCk7Ci0gICAgZ19hc3NlcnQoa1RlbXBEaXJl
Y3RvcnkpOwotCiAgICAgQ29va2llTWFuYWdlclRlc3Q6OmFkZCgiV2ViS2l0Q29va2llTWFuYWdl
ciIsICJhY2NlcHQtcG9saWN5IiwgdGVzdENvb2tpZU1hbmFnZXJBY2NlcHRQb2xpY3kpOwogICAg
IENvb2tpZU1hbmFnZXJUZXN0OjphZGQoIldlYktpdENvb2tpZU1hbmFnZXIiLCAiZGVsZXRlLWNv
b2tpZXMiLCB0ZXN0Q29va2llTWFuYWdlckRlbGV0ZUNvb2tpZXMpOwogICAgIENvb2tpZU1hbmFn
ZXJUZXN0OjphZGQoIldlYktpdENvb2tpZU1hbmFnZXIiLCAiY29va2llcy1jaGFuZ2VkIiwgdGVz
dENvb2tpZU1hbmFnZXJDb29raWVzQ2hhbmdlZCk7CkBAIC0zMjcsNSArMzIzLDQgQEAgdm9pZCBi
ZWZvcmVBbGwoKQogdm9pZCBhZnRlckFsbCgpCiB7CiAgICAgZGVsZXRlIGtTZXJ2ZXI7Ci0gICAg
Z19ybWRpcihrVGVtcERpcmVjdG9yeSk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdERPTU5vZGUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RET01Ob2RlLmNwcAppbmRleCBiZDMyMDc3Li42MzI3YmRl
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdERP
TU5vZGUuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0
RE9NTm9kZS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYktpdERPTU5v
ZGVIaWVyYXJjaHlOYXZpZ2F0aW9uKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGUKICAg
ICBHVmFyaWFudEJ1aWxkZXIgYnVpbGRlcjsKICAgICBnX3ZhcmlhbnRfYnVpbGRlcl9pbml0KCZi
dWlsZGVyLCBHX1ZBUklBTlRfVFlQRV9WQVJESUNUKTsKICAgICBnX3ZhcmlhbnRfYnVpbGRlcl9h
ZGQoJmJ1aWxkZXIsICJ7c3Z9IiwgInBhZ2VJRCIsIGdfdmFyaWFudF9uZXdfdWludDY0KHdlYmtp
dF93ZWJfdmlld19nZXRfcGFnZV9pZCh0ZXN0LT5tX3dlYlZpZXcpKSk7Ci0gICAgZ19hc3NlcnQo
dGVzdFJ1bm5lci0+cnVuVGVzdCgiV2ViS2l0RE9NTm9kZSIsICJoaWVyYXJjaHktbmF2aWdhdGlv
biIsIGdfdmFyaWFudF9idWlsZGVyX2VuZCgmYnVpbGRlcikpKTsKKyAgICBnX2Fzc2VydCh0ZXN0
UnVubmVyLT5ydW5UZXN0KCJXZWJLaXRET01Ob2RlIiwgImhpZXJhcmNoeS1uYXZpZ2F0aW9uIiwg
VGVzdDo6c193ZWJFeHRlbnNpb25JRCwgZ192YXJpYW50X2J1aWxkZXJfZW5kKCZidWlsZGVyKSkp
OwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0RE9NTm9kZUluc2VydGlvbihXZWJWaWV3VGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RhdGljIHZvaWQgdGVz
dFdlYktpdERPTU5vZGVJbnNlcnRpb24oV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIp
CiAgICAgR1ZhcmlhbnRCdWlsZGVyIGJ1aWxkZXI7CiAgICAgZ192YXJpYW50X2J1aWxkZXJfaW5p
dCgmYnVpbGRlciwgR19WQVJJQU5UX1RZUEVfVkFSRElDVCk7CiAgICAgZ192YXJpYW50X2J1aWxk
ZXJfYWRkKCZidWlsZGVyLCAie3N2fSIsICJwYWdlSUQiLCBnX3ZhcmlhbnRfbmV3X3VpbnQ2NCh3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3BhZ2VfaWQodGVzdC0+bV93ZWJWaWV3KSkpOwotICAgIGdfYXNz
ZXJ0KHRlc3RSdW5uZXItPnJ1blRlc3QoIldlYktpdERPTU5vZGUiLCAiaW5zZXJ0aW9uIiwgZ192
YXJpYW50X2J1aWxkZXJfZW5kKCZidWlsZGVyKSkpOworICAgIGdfYXNzZXJ0KHRlc3RSdW5uZXIt
PnJ1blRlc3QoIldlYktpdERPTU5vZGUiLCAiaW5zZXJ0aW9uIiwgVGVzdDo6c193ZWJFeHRlbnNp
b25JRCwgZ192YXJpYW50X2J1aWxkZXJfZW5kKCZidWlsZGVyKSkpOwogfQogCiBzdGF0aWMgdm9p
ZCB0ZXN0V2ViS2l0RE9NTm9kZVRhZ05hbWVzKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2lu
dGVyKQpAQCAtNjgsMTMgKzY4LDEyIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRET01Ob2RlVGFn
TmFtZXMoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgR1ZhcmlhbnRCdWls
ZGVyIGJ1aWxkZXI7CiAgICAgZ192YXJpYW50X2J1aWxkZXJfaW5pdCgmYnVpbGRlciwgR19WQVJJ
QU5UX1RZUEVfVkFSRElDVCk7CiAgICAgZ192YXJpYW50X2J1aWxkZXJfYWRkKCZidWlsZGVyLCAi
e3N2fSIsICJwYWdlSUQiLCBnX3ZhcmlhbnRfbmV3X3VpbnQ2NCh3ZWJraXRfd2ViX3ZpZXdfZ2V0
X3BhZ2VfaWQodGVzdC0+bV93ZWJWaWV3KSkpOwotICAgIGdfYXNzZXJ0KHRlc3RSdW5uZXItPnJ1
blRlc3QoIldlYktpdERPTU5vZGUiLCAidGFnLW5hbWVzIiwgZ192YXJpYW50X2J1aWxkZXJfZW5k
KCZidWlsZGVyKSkpOworICAgIGdfYXNzZXJ0KHRlc3RSdW5uZXItPnJ1blRlc3QoIldlYktpdERP
TU5vZGUiLCAidGFnLW5hbWVzIiwgVGVzdDo6c193ZWJFeHRlbnNpb25JRCwgZ192YXJpYW50X2J1
aWxkZXJfZW5kKCZidWlsZGVyKSkpOwogfQogCiB2b2lkIGJlZm9yZUFsbCgpCiB7CiAgICAgdGVz
dFJ1bm5lciA9IG5ldyBXZWJQcm9jZXNzVGVzdFJ1bm5lcigpOwotICAgIHdlYmtpdF93ZWJfY29u
dGV4dF9zZXRfd2ViX2V4dGVuc2lvbnNfZGlyZWN0b3J5KHdlYmtpdF93ZWJfY29udGV4dF9nZXRf
ZGVmYXVsdCgpLCBXRUJLSVRfVEVTVF9XRUJfRVhURU5TSU9OU19ESVIpOwogCiAgICAgV2ViVmll
d1Rlc3Q6OmFkZCgiV2ViS2l0RE9NTm9kZSIsICJoaWVyYXJjaHktbmF2aWdhdGlvbiIsIHRlc3RX
ZWJLaXRET01Ob2RlSGllcmFyY2h5TmF2aWdhdGlvbik7CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgi
V2ViS2l0RE9NTm9kZSIsICJpbnNlcnRpb24iLCB0ZXN0V2ViS2l0RE9NTm9kZUluc2VydGlvbik7
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdERP
TU5vZGVGaWx0ZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rl
c3RET01Ob2RlRmlsdGVyLmNwcAppbmRleCBkMDM2MDIxLi5jMDcwOGMwIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdERPTU5vZGVGaWx0ZXIuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0RE9NTm9kZUZp
bHRlci5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChXZWJWaWV3VGVz
dCogdGVzdCwgY29uc3QgY2hhciogbmFtZSkKICAgICBHVmFyaWFudEJ1aWxkZXIgYnVpbGRlcjsK
ICAgICBnX3ZhcmlhbnRfYnVpbGRlcl9pbml0KCZidWlsZGVyLCBHX1ZBUklBTlRfVFlQRV9WQVJE
SUNUKTsKICAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQoJmJ1aWxkZXIsICJ7c3Z9IiwgInBhZ2VJ
RCIsIGdfdmFyaWFudF9uZXdfdWludDY0KHdlYmtpdF93ZWJfdmlld19nZXRfcGFnZV9pZCh0ZXN0
LT5tX3dlYlZpZXcpKSk7Ci0gICAgZ19hc3NlcnQodGVzdFJ1bm5lci0+cnVuVGVzdCgiV2ViS2l0
RE9NTm9kZUZpbHRlciIsIG5hbWUsIGdfdmFyaWFudF9idWlsZGVyX2VuZCgmYnVpbGRlcikpKTsK
KyAgICBnX2Fzc2VydCh0ZXN0UnVubmVyLT5ydW5UZXN0KCJXZWJLaXRET01Ob2RlRmlsdGVyIiwg
bmFtZSwgVGVzdDo6c193ZWJFeHRlbnNpb25JRCwgZ192YXJpYW50X2J1aWxkZXJfZW5kKCZidWls
ZGVyKSkpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0RE9NTm9kZUZpbHRlclRyZWVXYWxr
ZXIoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCkBAIC01Myw3ICs1Myw2IEBAIHN0
YXRpYyB2b2lkIHRlc3RXZWJLaXRET01Ob2RlRmlsdGVyTm9kZUl0ZXJhdG9yKFdlYlZpZXdUZXN0
KiB0ZXN0LCBnY29uc3Rwb2ludGVyCiB2b2lkIGJlZm9yZUFsbCgpCiB7CiAgICAgdGVzdFJ1bm5l
ciA9IG5ldyBXZWJQcm9jZXNzVGVzdFJ1bm5lcigpOwotICAgIHdlYmtpdF93ZWJfY29udGV4dF9z
ZXRfd2ViX2V4dGVuc2lvbnNfZGlyZWN0b3J5KHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVs
dCgpLCBXRUJLSVRfVEVTVF9XRUJfRVhURU5TSU9OU19ESVIpOwogCiAgICAgV2ViVmlld1Rlc3Q6
OmFkZCgiV2ViS2l0RE9NTm9kZUZpbHRlciIsICJ0cmVlLXdhbGtlciIsIHRlc3RXZWJLaXRET01O
b2RlRmlsdGVyVHJlZVdhbGtlcik7CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0RE9NTm9k
ZUZpbHRlciIsICJub2RlLWl0ZXJhdG9yIiwgdGVzdFdlYktpdERPTU5vZGVGaWx0ZXJOb2RlSXRl
cmF0b3IpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3Rr
L1Rlc3RET01YUGF0aE5TUmVzb2x2ZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyR3RrL1Rlc3RET01YUGF0aE5TUmVzb2x2ZXIuY3BwCmluZGV4IGJjNGI1N2UuLmE0NWU3
MDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0
RE9NWFBhdGhOU1Jlc29sdmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJHdGsvVGVzdERPTVhQYXRoTlNSZXNvbHZlci5jcHAKQEAgLTMxLDcgKzMxLDcgQEAgc3Rh
dGljIHZvaWQgcnVuVGVzdChXZWJWaWV3VGVzdCogdGVzdCwgY29uc3QgY2hhciogbmFtZSkKICAg
ICBHVmFyaWFudEJ1aWxkZXIgYnVpbGRlcjsKICAgICBnX3ZhcmlhbnRfYnVpbGRlcl9pbml0KCZi
dWlsZGVyLCBHX1ZBUklBTlRfVFlQRV9WQVJESUNUKTsKICAgICBnX3ZhcmlhbnRfYnVpbGRlcl9h
ZGQoJmJ1aWxkZXIsICJ7c3Z9IiwgInBhZ2VJRCIsIGdfdmFyaWFudF9uZXdfdWludDY0KHdlYmtp
dF93ZWJfdmlld19nZXRfcGFnZV9pZCh0ZXN0LT5tX3dlYlZpZXcpKSk7Ci0gICAgZ19hc3NlcnQo
dGVzdFJ1bm5lci0+cnVuVGVzdCgiV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyIiwgbmFtZSwgZ192
YXJpYW50X2J1aWxkZXJfZW5kKCZidWlsZGVyKSkpOworICAgIGdfYXNzZXJ0KHRlc3RSdW5uZXIt
PnJ1blRlc3QoIldlYktpdERPTVhQYXRoTlNSZXNvbHZlciIsIG5hbWUsIFRlc3Q6OnNfd2ViRXh0
ZW5zaW9uSUQsIGdfdmFyaWFudF9idWlsZGVyX2VuZCgmYnVpbGRlcikpKTsKIH0KIAogc3RhdGlj
IHZvaWQgdGVzdFdlYktpdERPTVhQYXRoTlNSZXNvbHZlck5hdGl2ZShXZWJWaWV3VGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKQEAgLTU1LDcgKzU1LDYgQEAgc3RhdGljIHZvaWQgdGVzdFdlYktp
dERPTVhQYXRoTlNSZXNvbHZlckN1c3RvbShXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
cikKIHZvaWQgYmVmb3JlQWxsKCkKIHsKICAgICB0ZXN0UnVubmVyID0gbmV3IFdlYlByb2Nlc3NU
ZXN0UnVubmVyKCk7Ci0gICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF93ZWJfZXh0ZW5zaW9uc19k
aXJlY3Rvcnkod2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KCksIFdFQktJVF9URVNUX1dF
Ql9FWFRFTlNJT05TX0RJUik7CiAKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRET01YUGF0
aE5TUmVzb2x2ZXIiLCAibmF0aXZlIiwgdGVzdFdlYktpdERPTVhQYXRoTlNSZXNvbHZlck5hdGl2
ZSk7CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyIiwgImN1
c3RvbSIsIHRlc3RXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXJDdXN0b20pOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3REb3dubG9hZHMuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3REb3dubG9hZHMuY3BwCmlu
ZGV4IGE0ZTQ5NjYuLmNlN2NhMzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mkd0ay9UZXN0RG93bmxvYWRzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJHdGsvVGVzdERvd25sb2Fkcy5jcHAKQEAgLTMxLDggKzMxLDYgQEAKICNp
bmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgogCi1zdGF0aWMgY2hhcioga1RlbXBEaXJlY3Rvcnk7Ci0KIGNsYXNzIERvd25sb2Fk
VGVzdDogcHVibGljIFRlc3QgewogcHVibGljOgogICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUo
RG93bmxvYWRUZXN0KTsKQEAgLTEwNSwxNyArMTAzLDE2IEBAIHB1YmxpYzoKICAgICB9CiAKICAg
ICBEb3dubG9hZFRlc3QoKQotICAgICAgICA6IG1fd2ViQ29udGV4dCh3ZWJraXRfd2ViX2NvbnRl
eHRfZ2V0X2RlZmF1bHQoKSkKLSAgICAgICAgLCBtX21haW5Mb29wKGdfbWFpbl9sb29wX25ldygw
LCBUUlVFKSkKKyAgICAgICAgOiBtX21haW5Mb29wKGdfbWFpbl9sb29wX25ldyhudWxscHRyLCBU
UlVFKSkKICAgICAgICAgLCBtX2Rvd25sb2FkU2l6ZSgwKQogICAgICAgICAsIG1fYWxsb3dPdmVy
d3JpdGUoZmFsc2UpCiAgICAgewotICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViQ29udGV4
dCwgImRvd25sb2FkLXN0YXJ0ZWQiLCBHX0NBTExCQUNLKGRvd25sb2FkU3RhcnRlZENhbGxiYWNr
KSwgdGhpcyk7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJDb250ZXh0LmdldCgpLCAi
ZG93bmxvYWQtc3RhcnRlZCIsIEdfQ0FMTEJBQ0soZG93bmxvYWRTdGFydGVkQ2FsbGJhY2spLCB0
aGlzKTsKICAgICB9CiAKICAgICB+RG93bmxvYWRUZXN0KCkKICAgICB7Ci0gICAgICAgIGdfc2ln
bmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfbWF0Y2hlZChtX3dlYkNvbnRleHQsIEdfU0lHTkFMX01B
VENIX0RBVEEsIDAsIDAsIDAsIDAsIHRoaXMpOworICAgICAgICBnX3NpZ25hbF9oYW5kbGVyc19k
aXNjb25uZWN0X21hdGNoZWQobV93ZWJDb250ZXh0LmdldCgpLCBHX1NJR05BTF9NQVRDSF9EQVRB
LCAwLCAwLCAwLCAwLCB0aGlzKTsKICAgICAgICAgZ19tYWluX2xvb3BfdW5yZWYobV9tYWluTG9v
cCk7CiAgICAgfQogCkBAIC0xNTcsMTQgKzE1NCwxNCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IHZvaWQgZGVjaWRlRGVzdGluYXRpb24oV2ViS2l0RG93bmxvYWQqIGRvd25sb2FkLCBjb25zdCBn
Y2hhciogc3VnZ2VzdGVkRmlsZW5hbWUpCiAgICAgewotICAgICAgICBHVW5pcXVlUHRyPGNoYXI+
IGRlc3RpbmF0aW9uKGdfYnVpbGRfZmlsZW5hbWUoa1RlbXBEaXJlY3RvcnksIHN1Z2dlc3RlZEZp
bGVuYW1lLCBOVUxMKSk7CisgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGVzdGluYXRpb24oZ19i
dWlsZF9maWxlbmFtZShUZXN0OjpkYXRhRGlyZWN0b3J5KCksIHN1Z2dlc3RlZEZpbGVuYW1lLCBu
dWxscHRyKSk7CiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGVzdGluYXRpb25VUkkoZ19maWxl
bmFtZV90b191cmkoZGVzdGluYXRpb24uZ2V0KCksIDAsIDApKTsKICAgICAgICAgd2Via2l0X2Rv
d25sb2FkX3NldF9kZXN0aW5hdGlvbihkb3dubG9hZCwgZGVzdGluYXRpb25VUkkuZ2V0KCkpOwog
ICAgIH0KIAogICAgIFdlYktpdERvd25sb2FkKiBkb3dubG9hZFVSSUFuZFdhaXRVbnRpbEZpbmlz
aGVzKGNvbnN0IENTdHJpbmcmIHJlcXVlc3RVUkkpCiAgICAgewotICAgICAgICBXZWJLaXREb3du
bG9hZCogZG93bmxvYWQgPSB3ZWJraXRfd2ViX2NvbnRleHRfZG93bmxvYWRfdXJpKG1fd2ViQ29u
dGV4dCwgcmVxdWVzdFVSSS5kYXRhKCkpOworICAgICAgICBXZWJLaXREb3dubG9hZCogZG93bmxv
YWQgPSB3ZWJraXRfd2ViX2NvbnRleHRfZG93bmxvYWRfdXJpKG1fd2ViQ29udGV4dC5nZXQoKSwg
cmVxdWVzdFVSSS5kYXRhKCkpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVz
dEZpbmlzaGVzKEdfT0JKRUNUKGRvd25sb2FkKSk7CiAKICAgICAgICAgZ19hc3NlcnQoIXdlYmtp
dF9kb3dubG9hZF9nZXRfYWxsb3dfb3ZlcndyaXRlKGRvd25sb2FkKSk7CkBAIC0xOTEsNyArMTg4
LDYgQEAgcHVibGljOgogICAgICAgICBnX2ZpbGVfZGVsZXRlKGRlc3RGaWxlLmdldCgpLCAwLCAw
KTsKICAgICB9CiAKLSAgICBXZWJLaXRXZWJDb250ZXh0KiBtX3dlYkNvbnRleHQ7CiAgICAgR01h
aW5Mb29wKiBtX21haW5Mb29wOwogICAgIFZlY3RvcjxEb3dubG9hZEV2ZW50PiBtX2Rvd25sb2Fk
RXZlbnRzOwogICAgIGd1aW50NjQgbV9kb3dubG9hZFNpemU7CkBAIC0yMzUsNyArMjMxLDcgQEAg
c3RhdGljIHZvaWQgdGVzdERvd25sb2FkTG9jYWxGaWxlKERvd25sb2FkVGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnRlcikKIAogc3RhdGljIHZvaWQgY3JlYXRlRmlsZUF0RGVzdGluYXRpb24oY29uc3Qg
Y2hhciogZmlsZW5hbWUpCiB7Ci0gICAgR1VuaXF1ZVB0cjxjaGFyPiBwYXRoKGdfYnVpbGRfZmls
ZW5hbWUoa1RlbXBEaXJlY3RvcnksIGZpbGVuYW1lLCBudWxscHRyKSk7CisgICAgR1VuaXF1ZVB0
cjxjaGFyPiBwYXRoKGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6ZGF0YURpcmVjdG9yeSgpLCBmaWxl
bmFtZSwgbnVsbHB0cikpOwogICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19m
aWxlX25ld19mb3JfcGF0aChwYXRoLmdldCgpKSk7CiAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+
IGVycm9yOwogICAgIGdfZmlsZV9jcmVhdGUoZmlsZS5nZXQoKSwgR19GSUxFX0NSRUFURV9OT05F
LCBudWxscHRyLCAmZXJyb3Iub3V0UHRyKCkpOwpAQCAtNTM2LDcgKzUzMiw3IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyBnYm9vbGVhbiBkb3dubG9hZERlY2lkZURlc3RpbmF0aW9uQ2FsbGJhY2so
V2ViS2l0RG93bmxvYWQqIGRvd25sb2FkLCBjb25zdCBnY2hhciogc3VnZ2VzdGVkRmlsZW5hbWUs
IFdlYlZpZXdEb3dubG9hZFRlc3QqIHRlc3QpCiAgICAgewotICAgICAgICBHVW5pcXVlUHRyPGNo
YXI+IGRlc3RpbmF0aW9uKGdfYnVpbGRfZmlsZW5hbWUoa1RlbXBEaXJlY3RvcnksIHN1Z2dlc3Rl
ZEZpbGVuYW1lLCBOVUxMKSk7CisgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGVzdGluYXRpb24o
Z19idWlsZF9maWxlbmFtZShUZXN0OjpkYXRhRGlyZWN0b3J5KCksIHN1Z2dlc3RlZEZpbGVuYW1l
LCBudWxscHRyKSk7CiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGVzdGluYXRpb25VUkkoZ19m
aWxlbmFtZV90b191cmkoZGVzdGluYXRpb24uZ2V0KCksIDAsIDApKTsKICAgICAgICAgd2Via2l0
X2Rvd25sb2FkX3NldF9kZXN0aW5hdGlvbihkb3dubG9hZCwgZGVzdGluYXRpb25VUkkuZ2V0KCkp
OwogICAgICAgICByZXR1cm4gVFJVRTsKQEAgLTYyMSw5ICs2MTcsNiBAQCB2b2lkIGJlZm9yZUFs
bCgpCiAgICAga1NlcnZlciA9IG5ldyBXZWJLaXRUZXN0U2VydmVyKCk7CiAgICAga1NlcnZlci0+
cnVuKHNlcnZlckNhbGxiYWNrKTsKIAotICAgIGtUZW1wRGlyZWN0b3J5ID0gZ19kaXJfbWFrZV90
bXAoIldlYktpdDJUZXN0cy1YWFhYWFgiLCAwKTsKLSAgICBnX2Fzc2VydChrVGVtcERpcmVjdG9y
eSk7Ci0KICAgICBEb3dubG9hZFRlc3Q6OmFkZCgiRG93bmxvYWRzIiwgImxvY2FsLWZpbGUiLCB0
ZXN0RG93bmxvYWRMb2NhbEZpbGUpOwogICAgIERvd25sb2FkVGVzdDo6YWRkKCJEb3dubG9hZHMi
LCAib3ZlcndyaXRlLWRlc3RpbmF0aW9uLWFsbG93ZWQiLCB0ZXN0RG93bmxvYWRPdmVyd3JpdGVE
ZXN0aW5hdGlvbkFsbG93ZWQpOwogICAgIERvd25sb2FkRXJyb3JUZXN0OjphZGQoIkRvd25sb2Fk
cyIsICJvdmVyd3JpdGUtZGVzdGluYXRpb24tZGlzYWxsb3dlZCIsIHRlc3REb3dubG9hZE92ZXJ3
cml0ZURlc3RpbmF0aW9uRGlzYWxsb3dlZCk7CkBAIC02MzcsNSArNjMwLDQgQEAgdm9pZCBiZWZv
cmVBbGwoKQogdm9pZCBhZnRlckFsbCgpCiB7CiAgICAgZGVsZXRlIGtTZXJ2ZXI7Ci0gICAgZ19y
bWRpcihrVGVtcERpcmVjdG9yeSk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJHdGsvVGVzdEZyYW1lLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mkd0ay9UZXN0RnJhbWUuY3BwCmluZGV4IGE2M2IwNzkuLjA5NGRlMmMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0RnJhbWUuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0RnJhbWUuY3Bw
CkBAIC0zNSw3ICszNSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdEZyYW1lVGVzdFJ1bihXZWJWaWV3
VGVzdCogdGVzdCwgY29uc3QgY2hhciogdGVzdE5hbWUpCiAgICAgR1ZhcmlhbnRCdWlsZGVyIGJ1
aWxkZXI7CiAgICAgZ192YXJpYW50X2J1aWxkZXJfaW5pdCgmYnVpbGRlciwgR19WQVJJQU5UX1RZ
UEVfVkFSRElDVCk7CiAgICAgZ192YXJpYW50X2J1aWxkZXJfYWRkKCZidWlsZGVyLCAie3N2fSIs
ICJwYWdlSUQiLCBnX3ZhcmlhbnRfbmV3X3VpbnQ2NCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3BhZ2Vf
aWQodGVzdC0+bV93ZWJWaWV3KSkpOwotICAgIGdfYXNzZXJ0KHRlc3RSdW5uZXItPnJ1blRlc3Qo
IldlYktpdEZyYW1lIiwgdGVzdE5hbWUsIGdfdmFyaWFudF9idWlsZGVyX2VuZCgmYnVpbGRlcikp
KTsKKyAgICBnX2Fzc2VydCh0ZXN0UnVubmVyLT5ydW5UZXN0KCJXZWJLaXRGcmFtZSIsIHRlc3RO
YW1lLCBUZXN0OjpzX3dlYkV4dGVuc2lvbklELCBnX3ZhcmlhbnRfYnVpbGRlcl9lbmQoJmJ1aWxk
ZXIpKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRGcmFtZU1haW5GcmFtZShXZWJWaWV3
VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKQEAgLTU2LDcgKzU2LDYgQEAgc3RhdGljIHZvaWQg
dGVzdFdlYktpdEZyYW1lSmF2YVNjcmlwdENvbnRleHQoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIpCiB2b2lkIGJlZm9yZUFsbCgpCiB7CiAgICAgdGVzdFJ1bm5lciA9IG5ldyBXZWJQ
cm9jZXNzVGVzdFJ1bm5lcigpOwotICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfd2ViX2V4dGVu
c2lvbnNfZGlyZWN0b3J5KHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgpLCBXRUJLSVRf
VEVTVF9XRUJfRVhURU5TSU9OU19ESVIpOwogCiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0
RnJhbWUiLCAibWFpbi1mcmFtZSIsIHRlc3RXZWJLaXRGcmFtZU1haW5GcmFtZSk7CiAgICAgV2Vi
Vmlld1Rlc3Q6OmFkZCgiV2ViS2l0RnJhbWUiLCAidXJpIiwgdGVzdFdlYktpdEZyYW1lVVJJKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0TG9h
ZGVyQ2xpZW50LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0
TG9hZGVyQ2xpZW50LmNwcAppbmRleCA4ODM1M2MwLi5lMTg1NmM3IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdExvYWRlckNsaWVudC5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RMb2FkZXJDbGllbnQu
Y3BwCkBAIC0zMTUsNyArMzE1LDggQEAgcHVibGljOgogCiAgICAgV2ViUGFnZVVSSVRlc3QoKQog
ICAgIHsKLSAgICAgICAgR1JlZlB0cjxHREJ1c1Byb3h5PiBwcm94eSA9IGFkb3B0R1JlZihidXMt
PmNyZWF0ZVByb3h5KCJvcmcud2Via2l0Lmd0ay5XZWJFeHRlbnNpb25UZXN0IiwKKyAgICAgICAg
R1VuaXF1ZVB0cjxjaGFyPiBleHRlbnNpb25CdXNOYW1lKGdfc3RyZHVwX3ByaW50Zigib3JnLndl
YmtpdC5ndGsuV2ViRXh0ZW5zaW9uVGVzdCV1IiwgVGVzdDo6c193ZWJFeHRlbnNpb25JRCkpOwor
ICAgICAgICBHUmVmUHRyPEdEQnVzUHJveHk+IHByb3h5ID0gYWRvcHRHUmVmKGJ1cy0+Y3JlYXRl
UHJveHkoZXh0ZW5zaW9uQnVzTmFtZS5nZXQoKSwKICAgICAgICAgICAgICIvb3JnL3dlYmtpdC9n
dGsvV2ViRXh0ZW5zaW9uVGVzdCIsICJvcmcud2Via2l0Lmd0ay5XZWJFeHRlbnNpb25UZXN0Iiwg
bV9tYWluTG9vcCkpOwogICAgICAgICBtX3VyaUNoYW5nZWRTaWduYWxJRCA9IGdfZGJ1c19jb25u
ZWN0aW9uX3NpZ25hbF9zdWJzY3JpYmUoCiAgICAgICAgICAgICBnX2RidXNfcHJveHlfZ2V0X2Nv
bm5lY3Rpb24ocHJveHkuZ2V0KCkpLApAQCAtNDY1LDcgKzQ2Niw2IEBAIHN0YXRpYyB2b2lkIHNl
cnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNv
bnN0IGNoYXIqCiAKIHZvaWQgYmVmb3JlQWxsKCkKIHsKLSAgICB3ZWJraXRfd2ViX2NvbnRleHRf
c2V0X3dlYl9leHRlbnNpb25zX2RpcmVjdG9yeSh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1
bHQoKSwgV0VCS0lUX1RFU1RfV0VCX0VYVEVOU0lPTlNfRElSKTsKICAgICBidXMgPSBuZXcgV2Vi
S2l0VGVzdEJ1cygpOwogICAgIGlmICghYnVzLT5ydW4oKSkKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RNdWx0aXBy
b2Nlc3MuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RNdWx0
aXByb2Nlc3MuY3BwCmluZGV4IGY4MzgwZDIuLmUzNzgzNjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0TXVsdGlwcm9jZXNzLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdE11bHRpcHJvY2Vzcy5jcHAK
QEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBudW1WaWV3cyA9IDI7Ci1zdGF0aWMgZ3VpbnQzMiBuZXh0SW5pdGlhbGl6YXRp
b25JZCA9IDE7Ci1zdGF0aWMgdW5zaWduZWQgaW5pdGlhbGl6ZVdlYkV4dGVuc2lvbnNTaWduYWxD
b3VudDsKIHN0YXRpYyBXZWJLaXRUZXN0QnVzKiBidXM7CiAKIGNsYXNzIE11bHRpcHJvY2Vzc1Rl
c3Q6IHB1YmxpYyBUZXN0IHsKQEAgLTM2LDggKzM0LDE4IEBAIHB1YmxpYzoKIAogICAgIE11bHRp
cHJvY2Vzc1Rlc3QoKQogICAgICAgICA6IG1fbWFpbkxvb3AoZ19tYWluX2xvb3BfbmV3KG51bGxw
dHIsIFRSVUUpKQorICAgICAgICAsIG1faW5pdGlhbGl6ZVdlYkV4dGVuc2lvbnNTaWduYWxDb3Vu
dCgwKQogICAgICAgICAsIG1fd2ViVmlld0J1c05hbWVzKG51bVZpZXdzKQotICAgICAgICAsIG1f
d2ViVmlld3MobnVtVmlld3MpIHsgfQorICAgICAgICAsIG1fd2ViVmlld3MobnVtVmlld3MpCisg
ICAgeworICAgICAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3Byb2Nlc3NfbW9kZWwobV93ZWJD
b250ZXh0LmdldCgpLCBXRUJLSVRfUFJPQ0VTU19NT0RFTF9NVUxUSVBMRV9TRUNPTkRBUllfUFJP
Q0VTU0VTKTsKKyAgICB9CisKKyAgICB2b2lkIGluaXRpYWxpemVXZWJFeHRlbnNpb25zKCkgb3Zl
cnJpZGUKKyAgICB7CisgICAgICAgIFRlc3Q6OmluaXRpYWxpemVXZWJFeHRlbnNpb25zKCk7Cisg
ICAgICAgIG1faW5pdGlhbGl6ZVdlYkV4dGVuc2lvbnNTaWduYWxDb3VudCsrOworICAgIH0KIAog
ICAgIHN0YXRpYyB2b2lkIGxvYWRDaGFuZ2VkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktp
dExvYWRFdmVudCBsb2FkRXZlbnQsIE11bHRpcHJvY2Vzc1Rlc3QqIHRlc3QpCiAgICAgewpAQCAt
NTEsMTEgKzU5LDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQo
aW5kZXgsIDwsIG51bVZpZXdzKTsKIAotICAgICAgICBtX3dlYlZpZXdCdXNOYW1lc1tpbmRleF0g
PSBHVW5pcXVlUHRyPGNoYXI+KGdfc3RyZHVwX3ByaW50Zigib3JnLndlYmtpdC5ndGsuV2ViRXh0
ZW5zaW9uVGVzdCV1IiwgbmV4dEluaXRpYWxpemF0aW9uSWQpKTsKLQotICAgICAgICBtX3dlYlZp
ZXdzW2luZGV4XSA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOworICAg
ICAgICBtX3dlYlZpZXdzW2luZGV4XSA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdf
bmV3X3dpdGhfY29udGV4dChtX3dlYkNvbnRleHQuZ2V0KCkpKTsKICAgICAgICAgYXNzZXJ0T2Jq
ZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChtX3dlYlZpZXdzW2luZGV4XS5n
ZXQoKSkpOwogCisgICAgICAgIG1fd2ViVmlld0J1c05hbWVzW2luZGV4XSA9IEdVbmlxdWVQdHI8
Y2hhcj4oZ19zdHJkdXBfcHJpbnRmKCJvcmcud2Via2l0Lmd0ay5XZWJFeHRlbnNpb25UZXN0JXUi
LCBUZXN0OjpzX3dlYkV4dGVuc2lvbklEKSk7CisKICAgICAgICAgd2Via2l0X3dlYl92aWV3X2xv
YWRfaHRtbChtX3dlYlZpZXdzW2luZGV4XS5nZXQoKSwgIjxodG1sPjwvaHRtbD4iLCBudWxscHRy
KTsKICAgICAgICAgZ19zaWduYWxfY29ubmVjdChtX3dlYlZpZXdzW2luZGV4XS5nZXQoKSwgImxv
YWQtY2hhbmdlZCIsIEdfQ0FMTEJBQ0sobG9hZENoYW5nZWQpLCB0aGlzKTsKICAgICAgICAgZ19t
YWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOwpAQCAtOTgsNiArMTA2LDcgQEAgcHVibGljOgogICAg
IH0KIAogICAgIEdNYWluTG9vcCogbV9tYWluTG9vcDsKKyAgICB1bnNpZ25lZCBtX2luaXRpYWxp
emVXZWJFeHRlbnNpb25zU2lnbmFsQ291bnQ7CiAgICAgVmVjdG9yPEdVbmlxdWVQdHI8Y2hhcj4s
IG51bVZpZXdzPiBtX3dlYlZpZXdCdXNOYW1lczsKICAgICBWZWN0b3I8R1JlZlB0cjxXZWJLaXRX
ZWJWaWV3PiwgbnVtVmlld3M+IG1fd2ViVmlld3M7CiB9OwpAQCAtMTE2LDcgKzEyNSw3IEBAIHN0
YXRpYyB2b2lkIHRlc3RQcm9jZXNzUGVyV2ViVmlldyhNdWx0aXByb2Nlc3NUZXN0KiB0ZXN0LCBn
Y29uc3Rwb2ludGVyKQogICAgICAgICBnX2Fzc2VydCh0ZXN0LT5tX3dlYlZpZXdCdXNOYW1lc1tp
XSk7CiAgICAgfQogCi0gICAgZ19hc3NlcnRfY21wdWludChpbml0aWFsaXplV2ViRXh0ZW5zaW9u
c1NpZ25hbENvdW50LCA9PSwgbnVtVmlld3MpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+
bV9pbml0aWFsaXplV2ViRXh0ZW5zaW9uc1NpZ25hbENvdW50LCA9PSwgbnVtVmlld3MpOwogICAg
IGdfYXNzZXJ0X2NtcHN0cih0ZXN0LT5tX3dlYlZpZXdCdXNOYW1lc1swXS5nZXQoKSwgIT0sIHRl
c3QtPm1fd2ViVmlld0J1c05hbWVzWzFdLmdldCgpKTsKICAgICBnX2Fzc2VydF9jbXB1aW50KHRl
c3QtPndlYlByb2Nlc3NQaWQoMCksICE9LCB0ZXN0LT53ZWJQcm9jZXNzUGlkKDEpKTsKIApAQCAt
MTI4LDcgKzEzNyw3IEBAIHN0YXRpYyB2b2lkIHRlc3RQcm9jZXNzUGVyV2ViVmlldyhNdWx0aXBy
b2Nlc3NUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIH0KIH0KIAotY2xhc3MgVUlDbGll
bnRNdWx0aXByb2Nlc3NUZXN0OiBwdWJsaWMgV2ViVmlld1Rlc3QgeworY2xhc3MgVUlDbGllbnRN
dWx0aXByb2Nlc3NUZXN0OiBwdWJsaWMgVGVzdCB7CiBwdWJsaWM6CiAgICAgTUFLRV9HTElCX1RF
U1RfRklYVFVSRShVSUNsaWVudE11bHRpcHJvY2Vzc1Rlc3QpOwogCkBAIC0xNTQsMTQgKzE2Mywy
NiBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgVUlDbGllbnRNdWx0aXByb2Nlc3NUZXN0KCkKKyAg
ICAgICAgOiBtX21haW5Mb29wKGdfbWFpbl9sb29wX25ldyhudWxscHRyLCBUUlVFKSkKKyAgICAg
ICAgLCBtX2luaXRpYWxpemVXZWJFeHRlbnNpb25zU2lnbmFsQ291bnQoMCkKICAgICB7CisgICAg
ICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfcHJvY2Vzc19tb2RlbChtX3dlYkNvbnRleHQuZ2V0
KCksIFdFQktJVF9QUk9DRVNTX01PREVMX01VTFRJUExFX1NFQ09OREFSWV9QUk9DRVNTRVMpOwor
ICAgICAgICBtX3dlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcoZ19vYmplY3RfcmVmX3Npbmsod2Vi
a2l0X3dlYl92aWV3X25ld193aXRoX2NvbnRleHQobV93ZWJDb250ZXh0LmdldCgpKSkpOwogICAg
ICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRv
bWF0aWNhbGx5KHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3MobV93ZWJWaWV3KSwgVFJVRSk7
CisKICAgICAgICAgZ19zaWduYWxfY29ubmVjdChtX3dlYlZpZXcsICJjcmVhdGUiLCBHX0NBTExC
QUNLKHZpZXdDcmVhdGVDYWxsYmFjayksIHRoaXMpOwogICAgIH0KIAogICAgIH5VSUNsaWVudE11
bHRpcHJvY2Vzc1Rlc3QoKQogICAgIHsKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29u
bmVjdF9tYXRjaGVkKG1fd2ViVmlldywgR19TSUdOQUxfTUFUQ0hfREFUQSwgMCwgMCwgMCwgMCwg
dGhpcyk7CisgICAgICAgIGd0a193aWRnZXRfZGVzdHJveShHVEtfV0lER0VUKG1fd2ViVmlldykp
OworICAgIH0KKworICAgIHZvaWQgaW5pdGlhbGl6ZVdlYkV4dGVuc2lvbnMoKSBvdmVycmlkZQor
ICAgIHsKKyAgICAgICAgVGVzdDo6aW5pdGlhbGl6ZVdlYkV4dGVuc2lvbnMoKTsKKyAgICAgICAg
bV9pbml0aWFsaXplV2ViRXh0ZW5zaW9uc1NpZ25hbENvdW50Kys7CiAgICAgfQogCiAgICAgR3Rr
V2lkZ2V0KiB2aWV3Q3JlYXRlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCkBAIC0xOTksMTYgKzIy
MCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKICAg
ICB9CiAKKyAgICBXZWJLaXRXZWJWaWV3KiBtX3dlYlZpZXc7CisgICAgR01haW5Mb29wKiBtX21h
aW5Mb29wOworICAgIHVuc2lnbmVkIG1faW5pdGlhbGl6ZVdlYkV4dGVuc2lvbnNTaWduYWxDb3Vu
dDsKICAgICBWZWN0b3I8V2ViVmlld0V2ZW50cz4gbV93ZWJWaWV3RXZlbnRzOwogfTsKIAogc3Rh
dGljIHZvaWQgdGVzdE11bHRpcHJvY2Vzc1dlYlZpZXdDcmVhdGVSZWFkeUNsb3NlKFVJQ2xpZW50
TXVsdGlwcm9jZXNzVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKLSAgICAvLyBBdCB0aGlz
IHBvaW50IHRoZSB3ZWIgcHJvY2VzcyBvZiB0aGUgY3VycmVudCB2aWV3IGhhcyBhbHJlYWR5IGJl
ZW4gY3JlYXRlZC4KLSAgICAvLyBXZSBzYXZlIGl0IGhlcmUgdG8gY2hlY2sgdGhhdCBhZnRlciB3
aW5kb3cub3BlbigpIHRoZSBudW1iZXIgb2YgcHJvY2Vzc2VzCi0gICAgLy8gaXMgdGhlIHNhbWUu
Ci0gICAgZ3VpbnQzMiBwcm9jZXNzQ291bnRCZWZvcmUgPSBuZXh0SW5pdGlhbGl6YXRpb25JZCAt
IDE7Ci0gICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjxib2R5IG9uTG9hZD1cIndpbmRvdy5vcGVu
KCkuY2xvc2UoKTtcIj48L2h0bWw+IiwgbnVsbHB0cik7CisgICAgd2Via2l0X3dlYl92aWV3X2xv
YWRfaHRtbCh0ZXN0LT5tX3dlYlZpZXcsICI8aHRtbD48Ym9keSBvbkxvYWQ9XCJ3aW5kb3cub3Bl
bigpLmNsb3NlKCk7XCI+PC9odG1sPiIsIG51bGxwdHIpOwogICAgIHRlc3QtPndhaXRVbnRpbE5l
d1dlYlZpZXdDbG9zZSgpOwogCiAgICAgVmVjdG9yPFVJQ2xpZW50TXVsdGlwcm9jZXNzVGVzdDo6
V2ViVmlld0V2ZW50cz4mIGV2ZW50cyA9IHRlc3QtPm1fd2ViVmlld0V2ZW50czsKQEAgLTIxNywy
MyArMjM3LDExIEBAIHN0YXRpYyB2b2lkIHRlc3RNdWx0aXByb2Nlc3NXZWJWaWV3Q3JlYXRlUmVh
ZHlDbG9zZShVSUNsaWVudE11bHRpcHJvY2Vzc1Rlc3QqIHRlCiAgICAgZ19hc3NlcnRfY21waW50
KGV2ZW50c1sxXSwgPT0sIFVJQ2xpZW50TXVsdGlwcm9jZXNzVGVzdDo6UmVhZHlUb1Nob3cpOwog
ICAgIGdfYXNzZXJ0X2NtcGludChldmVudHNbMl0sID09LCBVSUNsaWVudE11bHRpcHJvY2Vzc1Rl
c3Q6OkNsb3NlKTsKIAotICAgIGd1aW50MzIgcHJvY2Vzc2VzQ291bnRBZnRlciA9ICBuZXh0SW5p
dGlhbGl6YXRpb25JZCAtIDE7Ci0gICAgZ19hc3NlcnRfY21wdWludChwcm9jZXNzZXNDb3VudEFm
dGVyLCA9PSwgcHJvY2Vzc0NvdW50QmVmb3JlKTsKLX0KLQotc3RhdGljIHZvaWQgaW5pdGlhbGl6
ZVdlYkV4dGVuc2lvbnMoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgZ3BvaW50ZXIpCi17Ci0g
ICAgaW5pdGlhbGl6ZVdlYkV4dGVuc2lvbnNTaWduYWxDb3VudCsrOwotICAgIHdlYmtpdF93ZWJf
Y29udGV4dF9zZXRfd2ViX2V4dGVuc2lvbnNfZGlyZWN0b3J5KGNvbnRleHQsIFdFQktJVF9URVNU
X1dFQl9FWFRFTlNJT05TX0RJUik7Ci0gICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF93ZWJfZXh0
ZW5zaW9uc19pbml0aWFsaXphdGlvbl91c2VyX2RhdGEoY29udGV4dCwKLSAgICAgICAgZ192YXJp
YW50X25ld191aW50MzIobmV4dEluaXRpYWxpemF0aW9uSWQrKykpOworICAgIGdfYXNzZXJ0X2Nt
cHVpbnQodGVzdC0+bV9pbml0aWFsaXplV2ViRXh0ZW5zaW9uc1NpZ25hbENvdW50LCA9PSwgMSk7
CiB9CiAKIHZvaWQgYmVmb3JlQWxsKCkKIHsKLSAgICBnX3NpZ25hbF9jb25uZWN0KHdlYmtpdF93
ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgpLAotICAgICAgICAiaW5pdGlhbGl6ZS13ZWItZXh0ZW5z
aW9ucyIsIEdfQ0FMTEJBQ0soaW5pdGlhbGl6ZVdlYkV4dGVuc2lvbnMpLCBudWxscHRyKTsKLQog
ICAgIC8vIENoZWNrIHRoYXQgZGVmYXVsdCBzZXR0aW5nIGlzIHRoZSBvbmUgc3RhdGVkIGluIHRo
ZSBkb2N1bWVudGF0aW9uCiAgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfd2ViX2NvbnRleHRf
Z2V0X3Byb2Nlc3NfbW9kZWwod2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KCkpLAogICAg
ICAgICA9PSwgV0VCS0lUX1BST0NFU1NfTU9ERUxfU0hBUkVEX1NFQ09OREFSWV9QUk9DRVNTKTsK
QEAgLTI1Niw2ICsyNjQsNCBAQCB2b2lkIGJlZm9yZUFsbCgpCiB2b2lkIGFmdGVyQWxsKCkKIHsK
ICAgICBkZWxldGUgYnVzOwotICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVu
Yyh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQoKSwKLSAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oaW5pdGlhbGl6ZVdlYkV4dGVuc2lvbnMpLCBudWxscHRyKTsKIH0KZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0UHJpbnRpbmcu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RQcmludGluZy5j
cHAKaW5kZXggY2ZhMTY1Ni4uYTE1NWVkMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RQcmludGluZy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RQcmludGluZy5jcHAKQEAgLTI2LDggKzI2LDYgQEAK
ICNpbmNsdWRlIDxndGsvZ3RrdW5peHByaW50Lmg+CiAjZW5kaWYKIAotc3RhdGljIGNoYXIqIGtU
ZW1wRGlyZWN0b3J5OwotCiBzdGF0aWMgdm9pZCB0ZXN0UHJpbnRPcGVyYXRpb25QcmludFNldHRp
bmdzKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIEdSZWZQdHI8V2Vi
S2l0UHJpbnRPcGVyYXRpb24+IHByaW50T3BlcmF0aW9uID0gYWRvcHRHUmVmKHdlYmtpdF9wcmlu
dF9vcGVyYXRpb25fbmV3KHRlc3QtPm1fd2ViVmlldykpOwpAQCAtMTM0LDcgKzEzMiw3IEBAIHN0
YXRpYyB2b2lkIHRlc3RQcmludE9wZXJhdGlvblByaW50KFByaW50VGVzdCogdGVzdCwgZ2NvbnN0
cG9pbnRlcikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEdVbmlxdWVQdHI8Y2hhcj4g
b3V0cHV0RmlsZW5hbWUoZ19idWlsZF9maWxlbmFtZShrVGVtcERpcmVjdG9yeSwgIndlYmtpdC1w
cmludC5wZGYiLCBOVUxMKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBvdXRwdXRGaWxlbmFtZShn
X2J1aWxkX2ZpbGVuYW1lKFRlc3Q6OmRhdGFEaXJlY3RvcnkoKSwgIndlYmtpdC1wcmludC5wZGYi
LCBudWxscHRyKSk7CiAgICAgR1JlZlB0cjxHRmlsZT4gb3V0cHV0RmlsZSA9IGFkb3B0R1JlZihn
X2ZpbGVfbmV3X2Zvcl9wYXRoKG91dHB1dEZpbGVuYW1lLmdldCgpKSk7CiAgICAgR1VuaXF1ZVB0
cjxjaGFyPiBvdXRwdXRVUkkoZ19maWxlX2dldF91cmkob3V0cHV0RmlsZS5nZXQoKSkpOwogCkBA
IC0yMjgsNyArMjI2LDcgQEAgcHVibGljOgogCiAgICAgR3RrV2lkZ2V0KiBjcmVhdGVXZWJWaWV3
KCkKICAgICB7Ci0gICAgICAgIEd0a1dpZGdldCogbmV3V2ViVmlldyA9IHdlYmtpdF93ZWJfdmll
d19uZXcoKTsKKyAgICAgICAgR3RrV2lkZ2V0KiBuZXdXZWJWaWV3ID0gd2Via2l0X3dlYl92aWV3
X25ld193aXRoX2NvbnRleHQobV93ZWJDb250ZXh0LmdldCgpKTsKICAgICAgICAgZ19vYmplY3Rf
cmVmX3NpbmsobmV3V2ViVmlldyk7CiAKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hl
blRlc3RGaW5pc2hlcyhHX09CSkVDVChuZXdXZWJWaWV3KSk7CkBAIC0yNDcsNyArMjQ1LDcgQEAg
cHVibGljOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgR1VuaXF1
ZVB0cjxjaGFyPiBvdXRwdXRGaWxlbmFtZShnX2J1aWxkX2ZpbGVuYW1lKGtUZW1wRGlyZWN0b3J5
LCAid2Via2l0LWNsb3NlLWFmdGVyLXByaW50LnBkZiIsIE5VTEwpKTsKKyAgICAgICAgR1VuaXF1
ZVB0cjxjaGFyPiBvdXRwdXRGaWxlbmFtZShnX2J1aWxkX2ZpbGVuYW1lKFRlc3Q6OmRhdGFEaXJl
Y3RvcnkoKSwgIndlYmtpdC1jbG9zZS1hZnRlci1wcmludC5wZGYiLCBudWxscHRyKSk7CiAgICAg
ICAgIG1fb3V0cHV0RmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKG91dHB1dEZp
bGVuYW1lLmdldCgpKSk7CiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gb3V0cHV0VVJJKGdfZmls
ZV9nZXRfdXJpKG1fb3V0cHV0RmlsZS5nZXQoKSkpOwogCkBAIC0yOTIsOSArMjkwLDYgQEAgc3Rh
dGljIHZvaWQgdGVzdFByaW50T3BlcmF0aW9uQ2xvc2VBZnRlclByaW50KENsb3NlQWZ0ZXJQcmlu
dFRlc3QqIHRlc3QsIGdjb25zdHAKIAogdm9pZCBiZWZvcmVBbGwoKQogewotICAgIGtUZW1wRGly
ZWN0b3J5ID0gZ19kaXJfbWFrZV90bXAoIldlYktpdDJUZXN0cy1YWFhYWFgiLCAwKTsKLSAgICBn
X2Fzc2VydChrVGVtcERpcmVjdG9yeSk7Ci0KICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRQ
cmludE9wZXJhdGlvbiIsICJwcmludGluZy1zZXR0aW5ncyIsIHRlc3RQcmludE9wZXJhdGlvblBy
aW50U2V0dGluZ3MpOwogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAicHJp
bnQiLCB0ZXN0V2ViVmlld1ByaW50KTsKICNpZmRlZiBIQVZFX0dUS19VTklYX1BSSU5USU5HCkBA
IC0zMDYsNSArMzAxLDQgQEAgdm9pZCBiZWZvcmVBbGwoKQogCiB2b2lkIGFmdGVyQWxsKCkKIHsK
LSAgICBnX3JtZGlyKGtUZW1wRGlyZWN0b3J5KTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0UmVzb3VyY2VzLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0UmVzb3VyY2VzLmNwcAppbmRleCA1Nzc1ZDk2
Li4zOWE3ZGQwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJH
dGsvVGVzdFJlc291cmNlcy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyR3RrL1Rlc3RSZXNvdXJjZXMuY3BwCkBAIC03NzAsOCArNzcwLDYgQEAgdm9pZCBiZWZvcmVB
bGwoKQogICAgIGtTZXJ2ZXIgPSBuZXcgV2ViS2l0VGVzdFNlcnZlcigpOwogICAgIGtTZXJ2ZXIt
PnJ1bihzZXJ2ZXJDYWxsYmFjayk7CiAKLSAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3dlYl9l
eHRlbnNpb25zX2RpcmVjdG9yeSh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQoKSwgV0VC
S0lUX1RFU1RfV0VCX0VYVEVOU0lPTlNfRElSKTsKLQogICAgIFJlc291cmNlc1Rlc3Q6OmFkZCgi
V2ViS2l0V2ViVmlldyIsICJyZXNvdXJjZXMiLCB0ZXN0V2ViVmlld1Jlc291cmNlcyk7CiAgICAg
U2luZ2xlUmVzb3VyY2VMb2FkVGVzdDo6YWRkKCJXZWJLaXRXZWJSZXNvdXJjZSIsICJsb2FkaW5n
IiwgdGVzdFdlYlJlc291cmNlTG9hZGluZyk7CiAgICAgU2luZ2xlUmVzb3VyY2VMb2FkVGVzdDo6
YWRkKCJXZWJLaXRXZWJSZXNvdXJjZSIsICJyZXNwb25zZSIsIHRlc3RXZWJSZXNvdXJjZVJlc3Bv
bnNlKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9U
ZXN0U1NMLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0U1NM
LmNwcAppbmRleCAwMmQxNjAxLi4wYmVkN2ExIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFNTTC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RTU0wuY3BwCkBAIC00MDMsOSArNDAzLDYgQEAgdm9pZCBi
ZWZvcmVBbGwoKQogCiAgICAgU1NMVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInNzbCIsIHRl
c3RTU0wpOwogICAgIEluc2VjdXJlQ29udGVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJp
bnNlY3VyZS1jb250ZW50IiwgdGVzdEluc2VjdXJlQ29udGVudCk7Ci0gICAgLy8gSW4gdGhpcyBj
YXNlIHRoZSBvcmRlciBvZiB0aGUgdGVzdHMgZG9lcyBtYXR0ZXIgYmVjYXVzZSB0bHMtZXJyb3Jz
LXBvbGljeSBleHBlY3RzCi0gICAgLy8gdGhhdCBubyBleGNlcHRpb24gd2lsbCBoYXZlIGJlZW4g
YWRkZWQgZm9yIHRoaXMgY2VydGlmaWNhdGUgYW5kIGhvc3QgcGFpciBhcyBpcwotICAgIC8vIGRv
bmUgaW4gdGhlIGxvYWQtZmFpbGVkLXdpdGgtdGxzLWVycm9ycyB0ZXN0LgogICAgIFNTTFRlc3Q6
OmFkZCgiV2ViS2l0V2ViVmlldyIsICJ0bHMtZXJyb3JzLXBvbGljeSIsIHRlc3RUTFNFcnJvcnNQ
b2xpY3kpOwogICAgIFNTTFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJ0bHMtZXJyb3JzLXJl
ZGlyZWN0LXRvLWh0dHAiLCB0ZXN0VExTRXJyb3JzUmVkaXJlY3QpOwogICAgIFNTTFRlc3Q6OmFk
ZCgiV2ViS2l0V2ViVmlldyIsICJ0bHMtaHR0cC1hdXRoIiwgdGVzdFRMU0Vycm9yc0hUVFBBdXRo
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0
V2ViRXh0ZW5zaW9ucy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsv
VGVzdFdlYkV4dGVuc2lvbnMuY3BwCmluZGV4IGIwMmNkZmQuLjc5MTEzYjEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViRXh0ZW5zaW9ucy5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJFeHRl
bnNpb25zLmNwcApAQCAtMzIsOCArMzIsOSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViRXh0ZW5zaW9u
R2V0VGl0bGUoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+bG9h
ZEh0bWwoIjxodG1sPjxoZWFkPjx0aXRsZT5XZWJLaXRHVEsrIFdlYiBFeHRlbnNpb25zIFRlc3Q8
L3RpdGxlPjwvaGVhZD48Ym9keT48L2JvZHk+PC9odG1sPiIsIDApOwogICAgIHRlc3QtPndhaXRV
bnRpbExvYWRGaW5pc2hlZCgpOwogCi0gICAgR1JlZlB0cjxHREJ1c1Byb3h5PiBwcm94eSA9IGFk
b3B0R1JlZihidXMtPmNyZWF0ZVByb3h5KCJvcmcud2Via2l0Lmd0ay5XZWJFeHRlbnNpb25UZXN0
IiwKLSAgICAgICAgIi9vcmcvd2Via2l0L2d0ay9XZWJFeHRlbnNpb25UZXN0IiAsICJvcmcud2Vi
a2l0Lmd0ay5XZWJFeHRlbnNpb25UZXN0IiwgdGVzdC0+bV9tYWluTG9vcCkpOworICAgIEdVbmlx
dWVQdHI8Y2hhcj4gZXh0ZW5zaW9uQnVzTmFtZShnX3N0cmR1cF9wcmludGYoIm9yZy53ZWJraXQu
Z3RrLldlYkV4dGVuc2lvblRlc3QldSIsIFRlc3Q6OnNfd2ViRXh0ZW5zaW9uSUQpKTsKKyAgICBH
UmVmUHRyPEdEQnVzUHJveHk+IHByb3h5ID0gYWRvcHRHUmVmKGJ1cy0+Y3JlYXRlUHJveHkoZXh0
ZW5zaW9uQnVzTmFtZS5nZXQoKSwKKyAgICAgICAgIi9vcmcvd2Via2l0L2d0ay9XZWJFeHRlbnNp
b25UZXN0IiwgIm9yZy53ZWJraXQuZ3RrLldlYkV4dGVuc2lvblRlc3QiLCB0ZXN0LT5tX21haW5M
b29wKSk7CiAgICAgR1JlZlB0cjxHVmFyaWFudD4gcmVzdWx0ID0gYWRvcHRHUmVmKGdfZGJ1c19w
cm94eV9jYWxsX3N5bmMoCiAgICAgICAgIHByb3h5LmdldCgpLAogICAgICAgICAiR2V0VGl0bGUi
LApAQCAtNTQsNyArNTUsOCBAQCBzdGF0aWMgdm9pZCBkb2N1bWVudExvYWRlZENhbGxiYWNrKEdE
QnVzQ29ubmVjdGlvbiosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgYwogCiBzdGF0aWMgdm9p
ZCB0ZXN0RG9jdW1lbnRMb2FkZWRTaWduYWwoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50
ZXIpCiB7Ci0gICAgR1JlZlB0cjxHREJ1c1Byb3h5PiBwcm94eSA9IGFkb3B0R1JlZihidXMtPmNy
ZWF0ZVByb3h5KCJvcmcud2Via2l0Lmd0ay5XZWJFeHRlbnNpb25UZXN0IiwKKyAgICBHVW5pcXVl
UHRyPGNoYXI+IGV4dGVuc2lvbkJ1c05hbWUoZ19zdHJkdXBfcHJpbnRmKCJvcmcud2Via2l0Lmd0
ay5XZWJFeHRlbnNpb25UZXN0JXUiLCBUZXN0OjpzX3dlYkV4dGVuc2lvbklEKSk7CisgICAgR1Jl
ZlB0cjxHREJ1c1Byb3h5PiBwcm94eSA9IGFkb3B0R1JlZihidXMtPmNyZWF0ZVByb3h5KGV4dGVu
c2lvbkJ1c05hbWUuZ2V0KCksCiAgICAgICAgICIvb3JnL3dlYmtpdC9ndGsvV2ViRXh0ZW5zaW9u
VGVzdCIsICJvcmcud2Via2l0Lmd0ay5XZWJFeHRlbnNpb25UZXN0IiwgdGVzdC0+bV9tYWluTG9v
cCkpOwogICAgIEdEQnVzQ29ubmVjdGlvbiogY29ubmVjdGlvbiA9IGdfZGJ1c19wcm94eV9nZXRf
Y29ubmVjdGlvbihwcm94eS5nZXQoKSk7CiAgICAgZ3VpbnQgaWQgPSBnX2RidXNfY29ubmVjdGlv
bl9zaWduYWxfc3Vic2NyaWJlKGNvbm5lY3Rpb24sCkBAIC04OSw3ICs5MSw4IEBAIHN0YXRpYyB2
b2lkIHRlc3RXZWJLaXRXZWJWaWV3UHJvY2Vzc0NyYXNoZWQoV2ViVmlld1Rlc3QqIHRlc3QsIGdj
b25zdHBvaW50ZXIpCiAgICAgZ19zaWduYWxfY29ubmVjdCh0ZXN0LT5tX3dlYlZpZXcsICJ3ZWIt
cHJvY2Vzcy1jcmFzaGVkIiwKICAgICAgICAgR19DQUxMQkFDSyh3ZWJQcm9jZXNzQ3Jhc2hlZENh
bGxiYWNrKSwgdGVzdCk7CiAKLSAgICBHUmVmUHRyPEdEQnVzUHJveHk+IHByb3h5ID0gYWRvcHRH
UmVmKGJ1cy0+Y3JlYXRlUHJveHkoIm9yZy53ZWJraXQuZ3RrLldlYkV4dGVuc2lvblRlc3QiLAor
ICAgIEdVbmlxdWVQdHI8Y2hhcj4gZXh0ZW5zaW9uQnVzTmFtZShnX3N0cmR1cF9wcmludGYoIm9y
Zy53ZWJraXQuZ3RrLldlYkV4dGVuc2lvblRlc3QldSIsIFRlc3Q6OnNfd2ViRXh0ZW5zaW9uSUQp
KTsKKyAgICBHUmVmUHRyPEdEQnVzUHJveHk+IHByb3h5ID0gYWRvcHRHUmVmKGJ1cy0+Y3JlYXRl
UHJveHkoZXh0ZW5zaW9uQnVzTmFtZS5nZXQoKSwKICAgICAgICAgIi9vcmcvd2Via2l0L2d0ay9X
ZWJFeHRlbnNpb25UZXN0IiwgIm9yZy53ZWJraXQuZ3RrLldlYkV4dGVuc2lvblRlc3QiLCB0ZXN0
LT5tX21haW5Mb29wKSk7CiAKICAgICBHUmVmUHRyPEdWYXJpYW50PiByZXN1bHQgPSBhZG9wdEdS
ZWYoZ19kYnVzX3Byb3h5X2NhbGxfc3luYygKQEAgLTE1Miw3ICsxNTUsOCBAQCBzdGF0aWMgdm9p
ZCB0ZXN0V2ViRXh0ZW5zaW9uSXNvbGF0ZWRXb3JsZChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0
cG9pbnRlcikKICAgICAgICAgImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5u
ZXJIVE1MID0gdG9wLmZvbztcbiIKICAgICAgICAgIndpbmRvdy5vcGVuID0gZnVuY3Rpb24gKCkg
eyBhbGVydCgnSXNvbGF0ZWQgV29ybGQnKTsgfVxuIgogICAgICAgICAiZG9jdW1lbnQub3Blbigx
LCAyLCAzKTsiOwotICAgIEdSZWZQdHI8R0RCdXNQcm94eT4gcHJveHkgPSBhZG9wdEdSZWYoYnVz
LT5jcmVhdGVQcm94eSgib3JnLndlYmtpdC5ndGsuV2ViRXh0ZW5zaW9uVGVzdCIsCisgICAgR1Vu
aXF1ZVB0cjxjaGFyPiBleHRlbnNpb25CdXNOYW1lKGdfc3RyZHVwX3ByaW50Zigib3JnLndlYmtp
dC5ndGsuV2ViRXh0ZW5zaW9uVGVzdCV1IiwgVGVzdDo6c193ZWJFeHRlbnNpb25JRCkpOworICAg
IEdSZWZQdHI8R0RCdXNQcm94eT4gcHJveHkgPSBhZG9wdEdSZWYoYnVzLT5jcmVhdGVQcm94eShl
eHRlbnNpb25CdXNOYW1lLmdldCgpLAogICAgICAgICAiL29yZy93ZWJraXQvZ3RrL1dlYkV4dGVu
c2lvblRlc3QiICwgIm9yZy53ZWJraXQuZ3RrLldlYkV4dGVuc2lvblRlc3QiLCB0ZXN0LT5tX21h
aW5Mb29wKSk7CiAgICAgZ19kYnVzX3Byb3h5X2NhbGwocHJveHkuZ2V0KCksCiAgICAgICAgICJS
dW5KYXZhU2NyaXB0SW5Jc29sYXRlZFdvcmxkIiwKQEAgLTE3Myw0NCArMTc3LDEyIEBAIHN0YXRp
YyB2b2lkIHRlc3RXZWJFeHRlbnNpb25Jc29sYXRlZFdvcmxkKFdlYlZpZXdUZXN0KiB0ZXN0LCBn
Y29uc3Rwb2ludGVyKQogICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdCh0ZXN0LT5tX3dl
YlZpZXcsIHNjcmlwdERpYWxvZ0lEKTsKIH0KIAotc3RhdGljIHZvaWQgdGVzdFdlYkV4dGVuc2lv
bkluaXRpYWxpemF0aW9uVXNlckRhdGEoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIp
Ci17Ci0gICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjwvaHRtbD4iLCAwKTsKLSAgICB0ZXN0LT53
YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKLQotICAgIEdSZWZQdHI8R0RCdXNQcm94eT4gcHJveHkg
PSBhZG9wdEdSZWYoYnVzLT5jcmVhdGVQcm94eSgib3JnLndlYmtpdC5ndGsuV2ViRXh0ZW5zaW9u
VGVzdCIsCi0gICAgICAgICIvb3JnL3dlYmtpdC9ndGsvV2ViRXh0ZW5zaW9uVGVzdCIsICJvcmcu
d2Via2l0Lmd0ay5XZWJFeHRlbnNpb25UZXN0IiwgdGVzdC0+bV9tYWluTG9vcCkpOwotCi0gICAg
R1JlZlB0cjxHVmFyaWFudD4gcmVzdWx0ID0gYWRvcHRHUmVmKGdfZGJ1c19wcm94eV9jYWxsX3N5
bmMoCi0gICAgICAgIHByb3h5LmdldCgpLAotICAgICAgICAiR2V0SW5pdGlhbGl6YXRpb25Vc2Vy
RGF0YSIsCi0gICAgICAgIG51bGxwdHIsCi0gICAgICAgIEdfREJVU19DQUxMX0ZMQUdTX05PTkUs
Ci0gICAgICAgIC0xLCAwLCAwKSk7Ci0gICAgZ19hc3NlcnQocmVzdWx0KTsKLQotICAgIGNvbnN0
IGdjaGFyKiB1c2VyRGF0YSA9IG51bGxwdHI7Ci0gICAgZ192YXJpYW50X2dldChyZXN1bHQuZ2V0
KCksICIoJnMpIiwgJnVzZXJEYXRhKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIodXNlckRhdGEsID09
LCB3ZWJFeHRlbnNpb25zVXNlckRhdGEpOwotfQotCi1zdGF0aWMgdm9pZCBpbml0aWFsaXplV2Vi
RXh0ZW5zaW9ucyhXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBncG9pbnRlcikKLXsKLSAgICB3
ZWJraXRfd2ViX2NvbnRleHRfc2V0X3dlYl9leHRlbnNpb25zX2RpcmVjdG9yeShjb250ZXh0LCBX
RUJLSVRfVEVTVF9XRUJfRVhURU5TSU9OU19ESVIpOwotICAgIHdlYmtpdF93ZWJfY29udGV4dF9z
ZXRfd2ViX2V4dGVuc2lvbnNfaW5pdGlhbGl6YXRpb25fdXNlcl9kYXRhKGNvbnRleHQsCi0gICAg
ICAgIGdfdmFyaWFudF9uZXcoIiZzIiwgd2ViRXh0ZW5zaW9uc1VzZXJEYXRhKSk7Ci19Ci0KIHZv
aWQgYmVmb3JlQWxsKCkKIHsKLSAgICBnX3NpZ25hbF9jb25uZWN0KHdlYmtpdF93ZWJfY29udGV4
dF9nZXRfZGVmYXVsdCgpLAotICAgICAgICAiaW5pdGlhbGl6ZS13ZWItZXh0ZW5zaW9ucyIsIEdf
Q0FMTEJBQ0soaW5pdGlhbGl6ZVdlYkV4dGVuc2lvbnMpLCBudWxscHRyKTsKLQogICAgIGJ1cyA9
IG5ldyBXZWJLaXRUZXN0QnVzKCk7CiAgICAgaWYgKCFidXMtPnJ1bigpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJDb250ZXh0IiwgImluaXRpYWxp
emF0aW9uLXVzZXItZGF0YSIsIHRlc3RXZWJFeHRlbnNpb25Jbml0aWFsaXphdGlvblVzZXJEYXRh
KTsKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJFeHRlbnNpb24iLCAiZG9tLWRvY3Vt
ZW50LXRpdGxlIiwgdGVzdFdlYkV4dGVuc2lvbkdldFRpdGxlKTsKICAgICBXZWJWaWV3VGVzdDo6
YWRkKCJXZWJLaXRXZWJFeHRlbnNpb24iLCAiZG9jdW1lbnQtbG9hZGVkLXNpZ25hbCIsIHRlc3RE
b2N1bWVudExvYWRlZFNpZ25hbCk7CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmll
dyIsICJ3ZWItcHJvY2Vzcy1jcmFzaGVkIiwgdGVzdFdlYktpdFdlYlZpZXdQcm9jZXNzQ3Jhc2hl
ZCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVz
dFdlYktpdEZhdmljb25EYXRhYmFzZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJHdGsvVGVzdFdlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKaW5kZXggMGZmZDcyZi4uZTZi
NTU4YyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rl
c3RXZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcApAQCAtMjYsMTggKzI2
LDE2IEBACiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogCiBzdGF0aWMgV2Vi
S2l0VGVzdFNlcnZlcioga1NlcnZlcjsKLXN0YXRpYyBjaGFyKiBrVGVtcERpcmVjdG9yeTsKIAog
Y2xhc3MgRmF2aWNvbkRhdGFiYXNlVGVzdDogcHVibGljIFdlYlZpZXdUZXN0IHsKIHB1YmxpYzoK
ICAgICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJFKEZhdmljb25EYXRhYmFzZVRlc3QpOwogCiAgICAg
RmF2aWNvbkRhdGFiYXNlVGVzdCgpCi0gICAgICAgIDogbV93ZWJDb250ZXh0KHdlYmtpdF93ZWJf
Y29udGV4dF9nZXRfZGVmYXVsdCgpKQotICAgICAgICAsIG1fZmF2aWNvbigwKQorICAgICAgICA6
IG1fZmF2aWNvbihudWxscHRyKQogICAgICAgICAsIG1fZmF2aWNvbk5vdGlmaWNhdGlvblJlY2Vp
dmVkKGZhbHNlKQogICAgIHsKLSAgICAgICAgV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFz
ZSA9IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZmF2aWNvbl9kYXRhYmFzZShtX3dlYkNvbnRleHQp
OworICAgICAgICBXZWJLaXRGYXZpY29uRGF0YWJhc2UqIGRhdGFiYXNlID0gd2Via2l0X3dlYl9j
b250ZXh0X2dldF9mYXZpY29uX2RhdGFiYXNlKG1fd2ViQ29udGV4dC5nZXQoKSk7CiAgICAgICAg
IGdfc2lnbmFsX2Nvbm5lY3QoZGF0YWJhc2UsICJmYXZpY29uLWNoYW5nZWQiLCBHX0NBTExCQUNL
KGZhdmljb25DaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKICAgICB9CiAKQEAgLTQ2LDcgKzQ0LDcg
QEAgcHVibGljOgogICAgICAgICBpZiAobV9mYXZpY29uKQogICAgICAgICAgICAgY2Fpcm9fc3Vy
ZmFjZV9kZXN0cm95KG1fZmF2aWNvbik7CiAKLSAgICAgICAgV2ViS2l0RmF2aWNvbkRhdGFiYXNl
KiBkYXRhYmFzZSA9IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZmF2aWNvbl9kYXRhYmFzZShtX3dl
YkNvbnRleHQpOworICAgICAgICBXZWJLaXRGYXZpY29uRGF0YWJhc2UqIGRhdGFiYXNlID0gd2Vi
a2l0X3dlYl9jb250ZXh0X2dldF9mYXZpY29uX2RhdGFiYXNlKG1fd2ViQ29udGV4dC5nZXQoKSk7
CiAgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfbWF0Y2hlZChkYXRhYmFzZSwg
R19TSUdOQUxfTUFUQ0hfREFUQSwgMCwgMCwgMCwgMCwgdGhpcyk7CiAgICAgfQogCkBAIC02Nyw3
ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBnZXRGYXZpY29uQ2FsbGJhY2soR09i
amVjdCogc291cmNlT2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgdm9pZCogZGF0YSkKICAg
ICB7CiAgICAgICAgIEZhdmljb25EYXRhYmFzZVRlc3QqIHRlc3QgPSBzdGF0aWNfY2FzdDxGYXZp
Y29uRGF0YWJhc2VUZXN0Kj4oZGF0YSk7Ci0gICAgICAgIFdlYktpdEZhdmljb25EYXRhYmFzZSog
ZGF0YWJhc2UgPSB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2Zhdmljb25fZGF0YWJhc2UodGVzdC0+
bV93ZWJDb250ZXh0KTsKKyAgICAgICAgV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSA9
IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZmF2aWNvbl9kYXRhYmFzZSh0ZXN0LT5tX3dlYkNvbnRl
eHQuZ2V0KCkpOwogICAgICAgICB0ZXN0LT5tX2Zhdmljb24gPSB3ZWJraXRfZmF2aWNvbl9kYXRh
YmFzZV9nZXRfZmF2aWNvbl9maW5pc2goZGF0YWJhc2UsIHJlc3VsdCwgJnRlc3QtPm1fZXJyb3Iu
b3V0UHRyKCkpOwogICAgICAgICB0ZXN0LT5xdWl0TWFpbkxvb3AoKTsKICAgICB9CkBAIC04Nywx
MiArODUsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgbV9mYXZpY29uID0gMDsKICAgICAgICAg
fQogCi0gICAgICAgIFdlYktpdEZhdmljb25EYXRhYmFzZSogZGF0YWJhc2UgPSB3ZWJraXRfd2Vi
X2NvbnRleHRfZ2V0X2Zhdmljb25fZGF0YWJhc2UobV93ZWJDb250ZXh0KTsKKyAgICAgICAgV2Vi
S2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSA9IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZmF2
aWNvbl9kYXRhYmFzZShtX3dlYkNvbnRleHQuZ2V0KCkpOwogICAgICAgICB3ZWJraXRfZmF2aWNv
bl9kYXRhYmFzZV9nZXRfZmF2aWNvbihkYXRhYmFzZSwgcGFnZVVSSSwgMCwgZ2V0RmF2aWNvbkNh
bGxiYWNrLCB0aGlzKTsKICAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOwogICAg
IH0KIAotICAgIFdlYktpdFdlYkNvbnRleHQqIG1fd2ViQ29udGV4dDsKICAgICBjYWlyb19zdXJm
YWNlX3QqIG1fZmF2aWNvbjsKICAgICBDU3RyaW5nIG1fZmF2aWNvblVSSTsKICAgICBHVW5pcXVl
T3V0UHRyPEdFcnJvcj4gbV9lcnJvcjsKQEAgLTE0MiwxMyArMTM5LDEzIEBAIHN0YXRpYyB2b2lk
IHRlc3ROb3RJbml0aWFsaXplZChGYXZpY29uRGF0YWJhc2VUZXN0KiB0ZXN0KQogCiBzdGF0aWMg
dm9pZCB0ZXN0U2V0RGlyZWN0b3J5KEZhdmljb25EYXRhYmFzZVRlc3QqIHRlc3QpCiB7Ci0gICAg
d2Via2l0X3dlYl9jb250ZXh0X3NldF9mYXZpY29uX2RhdGFiYXNlX2RpcmVjdG9yeSh0ZXN0LT5t
X3dlYkNvbnRleHQsIGtUZW1wRGlyZWN0b3J5KTsKLSAgICBnX2Fzc2VydF9jbXBzdHIoa1RlbXBE
aXJlY3RvcnksID09LCB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2Zhdmljb25fZGF0YWJhc2VfZGly
ZWN0b3J5KHRlc3QtPm1fd2ViQ29udGV4dCkpOworICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRf
ZmF2aWNvbl9kYXRhYmFzZV9kaXJlY3RvcnkodGVzdC0+bV93ZWJDb250ZXh0LmdldCgpLCBUZXN0
OjpkYXRhRGlyZWN0b3J5KCkpOworICAgIGdfYXNzZXJ0X2NtcHN0cihUZXN0OjpkYXRhRGlyZWN0
b3J5KCksID09LCB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2Zhdmljb25fZGF0YWJhc2VfZGlyZWN0
b3J5KHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSkpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0Q2xl
YXJEYXRhYmFzZShGYXZpY29uRGF0YWJhc2VUZXN0KiB0ZXN0KQogewotICAgIFdlYktpdEZhdmlj
b25EYXRhYmFzZSogZGF0YWJhc2UgPSB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2Zhdmljb25fZGF0
YWJhc2UodGVzdC0+bV93ZWJDb250ZXh0KTsKKyAgICBXZWJLaXRGYXZpY29uRGF0YWJhc2UqIGRh
dGFiYXNlID0gd2Via2l0X3dlYl9jb250ZXh0X2dldF9mYXZpY29uX2RhdGFiYXNlKHRlc3QtPm1f
d2ViQ29udGV4dC5nZXQoKSk7CiAgICAgd2Via2l0X2Zhdmljb25fZGF0YWJhc2VfY2xlYXIoZGF0
YWJhc2UpOwogCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBpY29uVVJJKHdlYmtpdF9mYXZpY29uX2Rh
dGFiYXNlX2dldF9mYXZpY29uX3VyaShkYXRhYmFzZSwga1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgi
L2ZvbyIpLmRhdGEoKSkpOwpAQCAtMTk4LDcgKzE5NSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RHZXRG
YXZpY29uKEZhdmljb25EYXRhYmFzZVRlc3QqIHRlc3QpCiAKIHN0YXRpYyB2b2lkIHRlc3RHZXRG
YXZpY29uVVJJKEZhdmljb25EYXRhYmFzZVRlc3QqIHRlc3QpCiB7Ci0gICAgV2ViS2l0RmF2aWNv
bkRhdGFiYXNlKiBkYXRhYmFzZSA9IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZmF2aWNvbl9kYXRh
YmFzZSh0ZXN0LT5tX3dlYkNvbnRleHQpOworICAgIFdlYktpdEZhdmljb25EYXRhYmFzZSogZGF0
YWJhc2UgPSB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2Zhdmljb25fZGF0YWJhc2UodGVzdC0+bV93
ZWJDb250ZXh0LmdldCgpKTsKIAogICAgIENTdHJpbmcgYmFzZVVSSSA9IGtTZXJ2ZXItPmdldFVS
SUZvclBhdGgoIi9mb28iKTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IGljb25VUkkod2Via2l0X2Zh
dmljb25fZGF0YWJhc2VfZ2V0X2Zhdmljb25fdXJpKGRhdGFiYXNlLCBiYXNlVVJJLmRhdGEoKSkp
OwpAQCAtMjQzLDMwICsyNDAsMTEgQEAgdm9pZCBiZWZvcmVBbGwoKQogICAgIGtTZXJ2ZXIgPSBu
ZXcgV2ViS2l0VGVzdFNlcnZlcigpOwogICAgIGtTZXJ2ZXItPnJ1bihzZXJ2ZXJDYWxsYmFjayk7
CiAKLSAgICBrVGVtcERpcmVjdG9yeSA9IGdfZGlyX21ha2VfdG1wKCJXZWJLaXQyVGVzdHMtWFhY
WFhYIiwgMCk7Ci0gICAgZ19hc3NlcnQoa1RlbXBEaXJlY3RvcnkpOwotCiAgICAgLy8gQWRkIHRl
c3RzIHRvIHRoZSBzdWl0ZS4KICAgICBGYXZpY29uRGF0YWJhc2VUZXN0OjphZGQoIldlYktpdEZh
dmljb25EYXRhYmFzZSIsICJmYXZpY29uLWRhdGFiYXNlLXRlc3QiLCB0ZXN0RmF2aWNvbkRhdGFi
YXNlKTsKIH0KIAotc3RhdGljIHZvaWQgd2Via2l0RmF2aWNvbkRhdGFiYXNlRmluYWxpemVkQ2Fs
bGJhY2soZ3BvaW50ZXIsIEdPYmplY3QqKQotewotICAgIGlmICghZ19maWxlX3Rlc3Qoa1RlbXBE
aXJlY3RvcnksIEdfRklMRV9URVNUX0lTX0RJUikpCi0gICAgICAgIHJldHVybjsKLQotICAgIEdV
bmlxdWVQdHI8Y2hhcj4gZmlsZW5hbWUoZ19idWlsZF9maWxlbmFtZShrVGVtcERpcmVjdG9yeSwg
IldlYnBhZ2VJY29ucy5kYiIsIG51bGxwdHIpKTsKLSAgICBnX3VubGluayhmaWxlbmFtZS5nZXQo
KSk7Ci0KLSAgICBnX3JtZGlyKGtUZW1wRGlyZWN0b3J5KTsKLX0KLQogdm9pZCBhZnRlckFsbCgp
CiB7CiAgICAgZGVsZXRlIGtTZXJ2ZXI7Ci0KLSAgICAvLyBEZWxldGUgdGhlIHRlbXBvcmFyeSBm
aWxlcyBhZnRlciB0aGUgSWNvbkRhdGFiYXNlIGhhcyBiZWVuCi0gICAgLy8gY2xvc2VkLCB0aGF0
IGlzLCBvbmNlIFdlYktpdEZhdmljb25EYXRhYmFzZSBpcyBiZWluZyBkZXN0cm95ZWQuCi0gICAg
V2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSA9IHdlYmtpdF93ZWJfY29udGV4dF9nZXRf
ZmF2aWNvbl9kYXRhYmFzZSh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQoKSk7Ci0gICAg
Z19vYmplY3Rfd2Vha19yZWYoR19PQkpFQ1QoZGF0YWJhc2UpLCB3ZWJraXRGYXZpY29uRGF0YWJh
c2VGaW5hbGl6ZWRDYWxsYmFjaywgMCk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFVzZXJDb250ZW50
TWFuYWdlci5jcHAKaW5kZXggMWNlZTlhZC4uYzI0MGE1YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0
VXNlckNvbnRlbnRNYW5hZ2VyLmNwcApAQCAtMzIsNyArMzIsNyBAQCBwdWJsaWM6CiAgICAgTUFL
RV9HTElCX1RFU1RfRklYVFVSRShVc2VyQ29udGVudE1hbmFnZXJUZXN0KTsKIAogICAgIFVzZXJD
b250ZW50TWFuYWdlclRlc3QoKQotICAgICAgICA6IFdlYlZpZXdUZXN0KFdFQktJVF9XRUJfVklF
Vyh3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfdXNlcl9jb250ZW50X21hbmFnZXIod2Via2l0X3Vz
ZXJfY29udGVudF9tYW5hZ2VyX25ldygpKSkpCisgICAgICAgIDogV2ViVmlld1Rlc3Qod2Via2l0
X3VzZXJfY29udGVudF9tYW5hZ2VyX25ldygpKQogICAgIHsKICAgICAgICAgLy8gQSByZWZlcmVu
Y2UgaXMgbGVha2VkIHdoZW4gcGFzc2luZyB0aGUgcmVzdWx0IG9mIHdlYmtpdF91c2VyX2NvbnRl
bnRfbWFuYWdlcl9uZXcoKQogICAgICAgICAvLyBkaXJlY3RseSB0byB3ZWJraXRfd2ViX3ZpZXdf
bmV3X3dpdGhfdXNlcl9jb250ZW50X21hbmFnZXIoKSBhYm92ZS4gQWRvcHRpbmcgdGhlCkBAIC0z
NjcsNyArMzY3LDYgQEAgc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2Vy
dmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhcioKIAogdm9pZCBiZWZvcmVBbGwo
KQogewotICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfd2ViX2V4dGVuc2lvbnNfZGlyZWN0b3J5
KHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgpLCBXRUJLSVRfVEVTVF9XRUJfRVhURU5T
SU9OU19ESVIpOwogICAgIGtTZXJ2ZXIgPSBuZXcgV2ViS2l0VGVzdFNlcnZlcigpOwogICAgIGtT
ZXJ2ZXItPnJ1bihzZXJ2ZXJDYWxsYmFjayk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwCmlu
ZGV4IDc0ZThkNjguLjkxODRjMGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtMzQs
NiArMzQsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViQ29udGV4dERlZmF1bHQoVGVzdCogdGVzdCwg
Z2NvbnN0cG9pbnRlcikKIHsKICAgICAvLyBDaGVjayB0aGVyZSdzIGEgc2luZ2xlIGluc3RhbmNl
IG9mIHRoZSBkZWZhdWx0IHdlYiBjb250ZXh0LgogICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfY29u
dGV4dF9nZXRfZGVmYXVsdCgpID09IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgpKTsK
KyAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQoKSAhPSB0ZXN0LT5t
X3dlYkNvbnRleHQuZ2V0KCkpOwogfQogCiBjbGFzcyBQbHVnaW5zVGVzdDogcHVibGljIFRlc3Qg
ewpAQCAtNDEsMTEgKzQyLDEwIEBAIHB1YmxpYzoKICAgICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJF
KFBsdWdpbnNUZXN0KTsKIAogICAgIFBsdWdpbnNUZXN0KCkKLSAgICAgICAgOiBtX2NvbnRleHQo
d2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KCkpCi0gICAgICAgICwgbV9tYWluTG9vcChn
X21haW5fbG9vcF9uZXcoMCwgVFJVRSkpCi0gICAgICAgICwgbV9wbHVnaW5zKDApCisgICAgICAg
IDogbV9tYWluTG9vcChnX21haW5fbG9vcF9uZXcobnVsbHB0ciwgVFJVRSkpCisgICAgICAgICwg
bV9wbHVnaW5zKG51bGxwdHIpCiAgICAgewotICAgICAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0
X2FkZGl0aW9uYWxfcGx1Z2luc19kaXJlY3RvcnkobV9jb250ZXh0LCBXRUJLSVRfVEVTVF9QTFVH
SU5fRElSKTsKKyAgICAgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF9hZGRpdGlvbmFsX3BsdWdp
bnNfZGlyZWN0b3J5KG1fd2ViQ29udGV4dC5nZXQoKSwgV0VCS0lUX1RFU1RfUExVR0lOX0RJUik7
CiAgICAgfQogCiAgICAgflBsdWdpbnNUZXN0KCkKQEAgLTU2LDE5ICs1NiwxOCBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgdm9pZCBnZXRQbHVnaW5zQXN5bmNSZWFkeUNhbGxiYWNrKEdPYmplY3Qq
LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgUGx1Z2luc1Rlc3QqIHRlc3QpCiAgICAgewotICAgICAg
ICB0ZXN0LT5tX3BsdWdpbnMgPSB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3BsdWdpbnNfZmluaXNo
KHRlc3QtPm1fY29udGV4dCwgcmVzdWx0LCAwKTsKKyAgICAgICAgdGVzdC0+bV9wbHVnaW5zID0g
d2Via2l0X3dlYl9jb250ZXh0X2dldF9wbHVnaW5zX2ZpbmlzaCh0ZXN0LT5tX3dlYkNvbnRleHQu
Z2V0KCksIHJlc3VsdCwgbnVsbHB0cik7CiAgICAgICAgIGdfbWFpbl9sb29wX3F1aXQodGVzdC0+
bV9tYWluTG9vcCk7CiAgICAgfQogCiAgICAgR0xpc3QqIGdldFBsdWdpbnMoKQogICAgIHsKICAg
ICAgICAgZ19saXN0X2ZyZWVfZnVsbChtX3BsdWdpbnMsIGdfb2JqZWN0X3VucmVmKTsKLSAgICAg
ICAgd2Via2l0X3dlYl9jb250ZXh0X2dldF9wbHVnaW5zKG1fY29udGV4dCwgMCwgcmVpbnRlcnBy
ZXRfY2FzdDxHQXN5bmNSZWFkeUNhbGxiYWNrPihnZXRQbHVnaW5zQXN5bmNSZWFkeUNhbGxiYWNr
KSwgdGhpcyk7CisgICAgICAgIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfcGx1Z2lucyhtX3dlYkNv
bnRleHQuZ2V0KCksIG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFj
az4oZ2V0UGx1Z2luc0FzeW5jUmVhZHlDYWxsYmFjayksIHRoaXMpOwogICAgICAgICBnX21haW5f
bG9vcF9ydW4obV9tYWluTG9vcCk7CiAgICAgICAgIHJldHVybiBtX3BsdWdpbnM7CiAgICAgfQog
Ci0gICAgV2ViS2l0V2ViQ29udGV4dCogbV9jb250ZXh0OwogICAgIEdNYWluTG9vcCogbV9tYWlu
TG9vcDsKICAgICBHTGlzdCogbV9wbHVnaW5zOwogfTsKQEAgLTE3Nyw3ICsxNzYsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCByZWdpc3RlclVSSVNjaGVtZUhhbmRsZXIoY29uc3QgY2hhciogc2NoZW1l
LCBjb25zdCBjaGFyKiByZXBseSwgaW50IHJlcGx5TGVuZ3RoLCBjb25zdCBjaGFyKiBtaW1lVHlw
ZSkKICAgICB7CiAgICAgICAgIG1faGFuZGxlcnNNYXAuc2V0KFN0cmluZzo6ZnJvbVVURjgoc2No
ZW1lKSwgVVJJU2NoZW1lSGFuZGxlcihyZXBseSwgcmVwbHlMZW5ndGgsIG1pbWVUeXBlKSk7Ci0g
ICAgICAgIHdlYmtpdF93ZWJfY29udGV4dF9yZWdpc3Rlcl91cmlfc2NoZW1lKHdlYmtpdF93ZWJf
Y29udGV4dF9nZXRfZGVmYXVsdCgpLCBzY2hlbWUsIHVyaVNjaGVtZVJlcXVlc3RDYWxsYmFjaywg
dGhpcywgMCk7CisgICAgICAgIHdlYmtpdF93ZWJfY29udGV4dF9yZWdpc3Rlcl91cmlfc2NoZW1l
KG1fd2ViQ29udGV4dC5nZXQoKSwgc2NoZW1lLCB1cmlTY2hlbWVSZXF1ZXN0Q2FsbGJhY2ssIHRo
aXMsIDApOwogICAgIH0KIAogICAgIEdSZWZQdHI8V2ViS2l0VVJJU2NoZW1lUmVxdWVzdD4gbV91
cmlTY2hlbWVSZXF1ZXN0OwpAQCAtMjM2LDcgKzIzNSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJD
b250ZXh0VVJJU2NoZW1lKFVSSVNjaGVtZVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAKIHN0
YXRpYyB2b2lkIHRlc3RXZWJDb250ZXh0U3BlbGxDaGVja2VyKFRlc3QqIHRlc3QsIGdjb25zdHBv
aW50ZXIpCiB7Ci0gICAgV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCA9IHdlYmtpdF93ZWJf
Y29udGV4dF9nZXRfZGVmYXVsdCgpOworICAgIFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQg
PSB0ZXN0LT5tX3dlYkNvbnRleHQuZ2V0KCk7CiAKICAgICAvLyBDaGVjayB3aGF0IGhhcHBlbnMg
aWYgbm8gc3BlbGwgY2hlY2tpbmcgbGFuZ3VhZ2UgaGFzIGJlZW4gc2V0LgogICAgIGNvbnN0IGdj
aGFyKiBjb25zdCogY3VycmVudExhbmd1YWdlID0gd2Via2l0X3dlYl9jb250ZXh0X2dldF9zcGVs
bF9jaGVja2luZ19sYW5ndWFnZXMod2ViQ29udGV4dCk7CkBAIC0zMDIsNyArMzAxLDcgQEAgc3Rh
dGljIHZvaWQgdGVzdFdlYkNvbnRleHRMYW5ndWFnZXMoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIpCiAgICAgZ19wdHJfYXJyYXlfYWRkKGxhbmd1YWdlcy5nZXQoKSwgY29uc3RfY2Fz
dDxncG9pbnRlcj4oc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KCJFU19lcyIpKSk7CiAgICAgZ19w
dHJfYXJyYXlfYWRkKGxhbmd1YWdlcy5nZXQoKSwgY29uc3RfY2FzdDxncG9pbnRlcj4oc3RhdGlj
X2Nhc3Q8Y29uc3Qgdm9pZCo+KCJkRSIpKSk7CiAgICAgZ19wdHJfYXJyYXlfYWRkKGxhbmd1YWdl
cy5nZXQoKSwgMCk7Ci0gICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF9wcmVmZXJyZWRfbGFuZ3Vh
Z2VzKHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgpLCByZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqIGNvbnN0Kj4obGFuZ3VhZ2VzLT5wZGF0YSkpOworICAgIHdlYmtpdF93ZWJfY29u
dGV4dF9zZXRfcHJlZmVycmVkX2xhbmd1YWdlcyh0ZXN0LT5tX3dlYkNvbnRleHQuZ2V0KCksIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciogY29uc3QqPihsYW5ndWFnZXMtPnBkYXRhKSk7CiAK
ICAgICBzdGF0aWMgY29uc3QgY2hhciogZXhwZWN0ZWRMYW5ndWFnZXMgPSAiZW4sIGVzLWVzO3E9
MC45MCwgZGU7cT0wLjgwIjsKICAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBh
dGgoIi8iKS5kYXRhKCkpOwpAQCAtMzQzLDcgKzM0Miw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAg
ICAgU2VjdXJpdHlQb2xpY3lUZXN0KCkKLSAgICAgICAgOiBtX21hbmFnZXIod2Via2l0X3dlYl9j
b250ZXh0X2dldF9zZWN1cml0eV9tYW5hZ2VyKHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVs
dCgpKSkKKyAgICAgICAgOiBtX21hbmFnZXIod2Via2l0X3dlYl9jb250ZXh0X2dldF9zZWN1cml0
eV9tYW5hZ2VyKG1fd2ViQ29udGV4dC5nZXQoKSkpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1dlYkV4dGVuc2lvblRlc3Qu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1dlYkV4dGVuc2lvblRl
c3QuY3BwCmluZGV4IDE5MjZiNzQuLjU0YjU0MzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9XZWJFeHRlbnNpb25UZXN0LmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvV2ViRXh0ZW5zaW9uVGVzdC5jcHAKQEAgLTUx
LDkgKzUxLDYgQEAgc3RhdGljIGNvbnN0IGNoYXIgaW50cm9zcGVjdGlvblhNTFtdID0KICAgICAi
ICAgPGFyZyB0eXBlPSd0JyBuYW1lPSdwYWdlSUQnIGRpcmVjdGlvbj0naW4nLz4iCiAgICAgIiAg
IDxhcmcgdHlwZT0ncycgbmFtZT0nc2NyaXB0JyBkaXJlY3Rpb249J2luJy8+IgogICAgICIgIDwv
bWV0aG9kPiIKLSAgICAiICA8bWV0aG9kIG5hbWU9J0dldEluaXRpYWxpemF0aW9uVXNlckRhdGEn
PiIKLSAgICAiICAgPGFyZyB0eXBlPSdzJyBuYW1lPSd1c2VyRGF0YScgZGlyZWN0aW9uPSdvdXQn
Lz4iCi0gICAgIiAgPC9tZXRob2Q+IgogICAgICIgIDxtZXRob2QgbmFtZT0nR2V0UHJvY2Vzc0lk
ZW50aWZpZXInPiIKICAgICAiICAgPGFyZyB0eXBlPSd1JyBuYW1lPSdpZGVudGlmaWVyJyBkaXJl
Y3Rpb249J291dCcvPiIKICAgICAiICA8L21ldGhvZD4iCkBAIC02NCw4ICs2MSw2IEBAIHN0YXRp
YyBjb25zdCBjaGFyIGludHJvc3BlY3Rpb25YTUxbXSA9CiAgICAgIiA8L2ludGVyZmFjZT4iCiAg
ICAgIjwvbm9kZT4iOwogCi1zdGF0aWMgR1JlZlB0cjxHVmFyaWFudD4gaW5pdGlhbGl6YXRpb25V
c2VyRGF0YTsKLQogCiB0eXBlZGVmIGVudW0gewogICAgIERvY3VtZW50TG9hZGVkU2lnbmFsLApA
QCAtMzA0LDExICsyOTksNiBAQCBzdGF0aWMgdm9pZCBtZXRob2RDYWxsQ2FsbGJhY2soR0RCdXND
b25uZWN0aW9uKiBjb25uZWN0aW9uLCBjb25zdCBjaGFyKiBzZW5kZXIsCiAgICAgICAgIGdfZGJ1
c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwgMCk7CiAgICAgfSBl
bHNlIGlmICghZ19zdHJjbXAwKG1ldGhvZE5hbWUsICJBYm9ydFByb2Nlc3MiKSkgewogICAgICAg
ICBhYm9ydCgpOwotICAgIH0gZWxzZSBpZiAoIWdfc3RyY21wMChtZXRob2ROYW1lLCAiR2V0SW5p
dGlhbGl6YXRpb25Vc2VyRGF0YSIpKSB7Ci0gICAgICAgIGdfYXNzZXJ0KGluaXRpYWxpemF0aW9u
VXNlckRhdGEpOwotICAgICAgICBnX2Fzc2VydChnX3ZhcmlhbnRfaXNfb2ZfdHlwZShpbml0aWFs
aXphdGlvblVzZXJEYXRhLmdldCgpLCBHX1ZBUklBTlRfVFlQRV9TVFJJTkcpKTsKLSAgICAgICAg
Z19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92YWx1ZShpbnZvY2F0aW9uLCBnX3Zhcmlh
bnRfbmV3KCIocykiLAotICAgICAgICAgICAgZ192YXJpYW50X2dldF9zdHJpbmcoaW5pdGlhbGl6
YXRpb25Vc2VyRGF0YS5nZXQoKSwgbnVsbHB0cikpKTsKICAgICB9IGVsc2UgaWYgKCFnX3N0cmNt
cDAobWV0aG9kTmFtZSwgIkdldFByb2Nlc3NJZGVudGlmaWVyIikpIHsKICAgICAgICAgZ19kYnVz
X21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92YWx1ZShpbnZvY2F0aW9uLAogICAgICAgICAgICAg
Z192YXJpYW50X25ldygiKHUpIiwgc3RhdGljX2Nhc3Q8Z3VpbnQzMj4oZ2V0Q3VycmVudFByb2Nl
c3NJRCgpKSkpOwpAQCAtMzUxLDI2ICszNDEsMTQgQEAgc3RhdGljIHZvaWQgYnVzQWNxdWlyZWRD
YWxsYmFjayhHREJ1c0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGNvbnN0IGNoYXIqIG5hbWUsIGcK
ICAgICB9CiB9CiAKLXN0YXRpYyBHVW5pcXVlUHRyPGNoYXI+IG1ha2VCdXNOYW1lKEdWYXJpYW50
KiB1c2VyRGF0YSkKLXsKLSAgICAvLyBXaGVuIHRoZSB3ZWIgZXh0ZW5zaW9uIGlzIHVzZWQgYnkg
VGVzdE11bHRpcHJvY2VzcywgYW4gdWludDMyCi0gICAgLy8gaWRlbnRpZmllciBpcyBwYXNzZWQg
YXMgdXNlciBkYXRhLiBJdCB1bmlxdWVseSBpZGVudGlmaWVzCi0gICAgLy8gdGhlIHdlYiBwcm9j
ZXNzLCBhbmQgdGhlIFVJIHNpZGUgZXhwZWN0cyBpdCBhZGRlZCBhcyBzdWZmaXggdG8KLSAgICAv
LyB0aGUgYnVzIG5hbWUuCi0gICAgaWYgKHVzZXJEYXRhICYmIGdfdmFyaWFudF9pc19vZl90eXBl
KHVzZXJEYXRhLCBHX1ZBUklBTlRfVFlQRV9VSU5UMzIpKQotICAgICAgICByZXR1cm4gR1VuaXF1
ZVB0cjxjaGFyPihnX3N0cmR1cF9wcmludGYoIm9yZy53ZWJraXQuZ3RrLldlYkV4dGVuc2lvblRl
c3QldSIsIGdfdmFyaWFudF9nZXRfdWludDMyKHVzZXJEYXRhKSkpOwotCi0gICAgcmV0dXJuIEdV
bmlxdWVQdHI8Y2hhcj4oZ19zdHJkdXAoIm9yZy53ZWJraXQuZ3RrLldlYkV4dGVuc2lvblRlc3Qi
KSk7Ci19Ci0KIGV4dGVybiAiQyIgdm9pZCB3ZWJraXRfd2ViX2V4dGVuc2lvbl9pbml0aWFsaXpl
X3dpdGhfdXNlcl9kYXRhKFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uLCBHVmFyaWFudCog
dXNlckRhdGEpCiB7Ci0gICAgaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSA9IHVzZXJEYXRhOwotCiAg
ICAgZ19zaWduYWxfY29ubmVjdChleHRlbnNpb24sICJwYWdlLWNyZWF0ZWQiLCBHX0NBTExCQUNL
KHBhZ2VDcmVhdGVkQ2FsbGJhY2spLCBleHRlbnNpb24pOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
d2Via2l0X3NjcmlwdF93b3JsZF9nZXRfZGVmYXVsdCgpLCAid2luZG93LW9iamVjdC1jbGVhcmVk
IiwgR19DQUxMQkFDSyh3aW5kb3dPYmplY3RDbGVhcmVkKSwgMCk7CiAKLSAgICBHVW5pcXVlUHRy
PGNoYXI+IGJ1c05hbWUobWFrZUJ1c05hbWUodXNlckRhdGEpKTsKKyAgICBnX2Fzc2VydCh1c2Vy
RGF0YSk7CisgICAgZ19hc3NlcnQoZ192YXJpYW50X2lzX29mX3R5cGUodXNlckRhdGEsIEdfVkFS
SUFOVF9UWVBFX1VJTlQzMikpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gYnVzTmFtZShnX3N0cmR1
cF9wcmludGYoIm9yZy53ZWJraXQuZ3RrLldlYkV4dGVuc2lvblRlc3QldSIsIGdfdmFyaWFudF9n
ZXRfdWludDMyKHVzZXJEYXRhKSkpOwogICAgIGdfYnVzX293bl9uYW1lKAogICAgICAgICBHX0JV
U19UWVBFX1NFU1NJT04sCiAgICAgICAgIGJ1c05hbWUuZ2V0KCksCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvV2ViUHJvY2Vzc1Rlc3QuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1dlYlByb2Nlc3NUZXN0LmNwcAppbmRl
eCAyNGM0Zjk0Li5iYjUyNDA3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJHdGsvV2ViUHJvY2Vzc1Rlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mkd0ay9XZWJQcm9jZXNzVGVzdC5jcHAKQEAgLTkzLDExICs5MywxNCBAQCBz
dGF0aWMgdm9pZCBidXNBY3F1aXJlZENhbGxiYWNrKEdEQnVzQ29ubmVjdGlvbiogY29ubmVjdGlv
biwgY29uc3QgY2hhciogbmFtZSwgZwogICAgICAgICBnX3dhcm5pbmcoIkZhaWxlZCB0byByZWdp
c3RlciBvYmplY3Q6ICVzXG4iLCBlcnJvci0+bWVzc2FnZSk7CiB9CiAKLWV4dGVybiAiQyIgdm9p
ZCB3ZWJraXRfd2ViX2V4dGVuc2lvbl9pbml0aWFsaXplKFdlYktpdFdlYkV4dGVuc2lvbiogZXh0
ZW5zaW9uKQorZXh0ZXJuICJDIiB2b2lkIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2luaXRpYWxpemVf
d2l0aF91c2VyX2RhdGEoV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24sIEdWYXJpYW50KiB1
c2VyRGF0YSkKIHsKKyAgICBnX2Fzc2VydCh1c2VyRGF0YSk7CisgICAgZ19hc3NlcnQoZ192YXJp
YW50X2lzX29mX3R5cGUodXNlckRhdGEsIEdfVkFSSUFOVF9UWVBFX1VJTlQzMikpOworICAgIEdV
bmlxdWVQdHI8Y2hhcj4gYnVzTmFtZShnX3N0cmR1cF9wcmludGYoIm9yZy53ZWJraXQuZ3RrLldl
YlByb2Nlc3NUZXN0JXUiLCBnX3ZhcmlhbnRfZ2V0X3VpbnQzMih1c2VyRGF0YSkpKTsKICAgICBn
X2J1c19vd25fbmFtZSgKICAgICAgICAgR19CVVNfVFlQRV9TRVNTSU9OLAotICAgICAgICAib3Jn
LndlYmtpdC5ndGsuV2ViUHJvY2Vzc1Rlc3QiLAorICAgICAgICBidXNOYW1lLmdldCgpLAogICAg
ICAgICBHX0JVU19OQU1FX09XTkVSX0ZMQUdTX05PTkUsCiAgICAgICAgIGJ1c0FjcXVpcmVkQ2Fs
bGJhY2ssCiAgICAgICAgIDAsIDAsCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2d0
ay9XZWJLaXQyR3RrL1Rlc3RNYWluLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktp
dDJHdGsvVGVzdE1haW4uY3BwCmluZGV4IDYxMzMxYTMuLjgwODA5NDAgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvVGVzdE1haW4uY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvVGVzdE1haW4uY3BwCkBAIC0yMiwxMiArMjIs
MTkgQEAKIAogI2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgot
I2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0Mi5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlx
dWVQdHIuaD4KKwordWludDMyX3QgVGVzdDo6c193ZWJFeHRlbnNpb25JRCA9IDA7CiAKIHZvaWQg
YmVmb3JlQWxsKCk7CiB2b2lkIGFmdGVyQWxsKCk7CiAKK3N0YXRpYyBHVW5pcXVlUHRyPGNoYXI+
IHRlc3REYXRhRGlyZWN0b3J5KGdfZGlyX21ha2VfdG1wKCJXZWJLaXQyR3RrVGVzdHMtWFhYWFhY
IiwgbnVsbHB0cikpOworCitjb25zdCBjaGFyKiBUZXN0OjpkYXRhRGlyZWN0b3J5KCkKK3sKKyAg
ICByZXR1cm4gdGVzdERhdGFEaXJlY3RvcnkuZ2V0KCk7Cit9CisKIHN0YXRpYyB2b2lkIHJlZ2lz
dGVyR1Jlc291cmNlKHZvaWQpCiB7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiByZXNvdXJjZXNQYXRo
KGdfYnVpbGRfZmlsZW5hbWUoV0VCS0lUX0VYRUNfUEFUSCwgIlRlc3RXZWJLaXRBUEkiLCAiV2Vi
S2l0Mkd0ayIsICJyZXNvdXJjZXMiLCAid2Via2l0Mmd0ay10ZXN0cy1yZXNvdXJjZXMuZ3Jlc291
cmNlIiwgbnVsbHB0cikpOwpAQCAtNDUsNyArNTIsMTAgQEAgc3RhdGljIHZvaWQgcmVtb3ZlTm9u
RW1wdHlEaXJlY3RvcnkoY29uc3QgY2hhciogZGlyZWN0b3J5UGF0aCkKICAgICBjb25zdCBjaGFy
KiBmaWxlTmFtZTsKICAgICB3aGlsZSAoKGZpbGVOYW1lID0gZ19kaXJfcmVhZF9uYW1lKGRpcmVj
dG9yeSkpKSB7CiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZmlsZVBhdGgoZ19idWlsZF9maWxl
bmFtZShkaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSwgbnVsbHB0cikpOwotICAgICAgICBnX3VubGlu
ayhmaWxlUGF0aC5nZXQoKSk7CisgICAgICAgIGlmIChnX2ZpbGVfdGVzdChmaWxlUGF0aC5nZXQo
KSwgR19GSUxFX1RFU1RfSVNfRElSKSkKKyAgICAgICAgICAgIHJlbW92ZU5vbkVtcHR5RGlyZWN0
b3J5KGZpbGVQYXRoLmdldCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZ191bmxpbmso
ZmlsZVBhdGguZ2V0KCkpOwogICAgIH0KICAgICBnX2Rpcl9jbG9zZShkaXJlY3RvcnkpOwogICAg
IGdfcm1kaXIoZGlyZWN0b3J5UGF0aCk7CkBAIC02NiwxNSArNzYsMTIgQEAgaW50IG1haW4oaW50
IGFyZ2MsIGNoYXIqKiBhcmd2KQogCiAgICAgcmVnaXN0ZXJHUmVzb3VyY2UoKTsKIAotICAgIEdV
bmlxdWVQdHI8Y2hhcj4gZGlza0NhY2hlVGVtcERpcmVjdG9yeShnX2Rpcl9tYWtlX3RtcCgiV2Vi
S2l0MlRlc3RzRGlza0NhY2hlLVhYWFhYWCIsIDApKTsKLSAgICBnX2Fzc2VydChkaXNrQ2FjaGVU
ZW1wRGlyZWN0b3J5LmdldCgpKTsKLSAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2Rpc2tfY2Fj
aGVfZGlyZWN0b3J5KHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgpLCBkaXNrQ2FjaGVU
ZW1wRGlyZWN0b3J5LmdldCgpKTsKLQogICAgIGJlZm9yZUFsbCgpOwogICAgIGludCByZXR1cm5W
YWx1ZSA9IGdfdGVzdF9ydW4oKTsKICAgICBhZnRlckFsbCgpOwogCi0gICAgcmVtb3ZlTm9uRW1w
dHlEaXJlY3RvcnkoZGlza0NhY2hlVGVtcERpcmVjdG9yeS5nZXQoKSk7CisgICAgcmVtb3ZlTm9u
RW1wdHlEaXJlY3RvcnkodGVzdERhdGFEaXJlY3RvcnkuZ2V0KCkpOwogCiAgICAgcmV0dXJuIHJl
dHVyblZhbHVlOwogfQorCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJL
aXQyR3RrL1Rlc3RNYWluLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1Rl
c3RNYWluLmgKaW5kZXggYmZkYzI2Ny4uMzJlM2QyMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9UZXN0TWFpbi5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvZ3RrL1dlYktpdDJHdGsvVGVzdE1haW4uaApAQCAtMjIsNyArMjIsOSBAQAogCiAjaW5jbHVk
ZSA8Y2Fpcm8uaD4KICNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHdlYmtpdDIv
d2Via2l0Mi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTU2LDggKzU4LDI0IEBAIGNsYXNzIFRlc3Qg
ewogcHVibGljOgogICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoVGVzdCk7CiAKKyAgICBzdGF0
aWMgY29uc3QgY2hhciogZGF0YURpcmVjdG9yeSgpOworCisgICAgc3RhdGljIHZvaWQgaW5pdGlh
bGl6ZVdlYkV4dGVuc2lvbnNDYWxsYmFjayhXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBUZXN0
KiB0ZXN0KQorICAgIHsKKyAgICAgICAgdGVzdC0+aW5pdGlhbGl6ZVdlYkV4dGVuc2lvbnMoKTsK
KyAgICB9CisKKyAgICBUZXN0KCkKKyAgICAgICAgOiBtX3dlYkNvbnRleHQoYWRvcHRHUmVmKHdl
YmtpdF93ZWJfY29udGV4dF9uZXcoKSkpCisgICAgeworICAgICAgICBnX3NpZ25hbF9jb25uZWN0
KG1fd2ViQ29udGV4dC5nZXQoKSwgImluaXRpYWxpemUtd2ViLWV4dGVuc2lvbnMiLCBHX0NBTExC
QUNLKGluaXRpYWxpemVXZWJFeHRlbnNpb25zQ2FsbGJhY2spLCB0aGlzKTsKKyAgICAgICAgR1Vu
aXF1ZVB0cjxjaGFyPiBkaXNrQ2FjaGVEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShkYXRhRGly
ZWN0b3J5KCksICJkaXNrLWNhY2hlIiwgbnVsbHB0cikpOworICAgICAgICB3ZWJraXRfd2ViX2Nv
bnRleHRfc2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5KG1fd2ViQ29udGV4dC5nZXQoKSwgZGlza0Nh
Y2hlRGlyZWN0b3J5LmdldCgpKTsKKyAgICB9CisKICAgICB+VGVzdCgpCiAgICAgeworICAgICAg
ICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X21hdGNoZWQobV93ZWJDb250ZXh0LmdldCgp
LCBHX1NJR05BTF9NQVRDSF9EQVRBLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCB0aGlzKTsKICAg
ICAgICAgaWYgKG1fd2F0Y2hlZE9iamVjdHMuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJu
OwogCkBAIC03MCw2ICs4OCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIGdfYXNzZXJ0KG1fd2F0Y2hl
ZE9iamVjdHMuaXNFbXB0eSgpKTsKICAgICB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6
ZVdlYkV4dGVuc2lvbnMoKQorICAgIHsKKyAgICAgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF93
ZWJfZXh0ZW5zaW9uc19kaXJlY3RvcnkobV93ZWJDb250ZXh0LmdldCgpLCBXRUJLSVRfVEVTVF9X
RUJfRVhURU5TSU9OU19ESVIpOworICAgICAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3dlYl9l
eHRlbnNpb25zX2luaXRpYWxpemF0aW9uX3VzZXJfZGF0YShtX3dlYkNvbnRleHQuZ2V0KCksIGdf
dmFyaWFudF9uZXdfdWludDMyKCsrc193ZWJFeHRlbnNpb25JRCkpOworICAgIH0KKwogICAgIHN0
YXRpYyB2b2lkIG9iamVjdEZpbmFsaXplZChUZXN0KiB0ZXN0LCBHT2JqZWN0KiBmaW5hbGl6ZWRP
YmplY3QpCiAgICAgewogICAgICAgICB0ZXN0LT5tX3dhdGNoZWRPYmplY3RzLnJlbW92ZShmaW5h
bGl6ZWRPYmplY3QpOwpAQCAtMTEzLDYgKzEzNyw4IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBI
YXNoU2V0PEdPYmplY3QqPiBtX3dhdGNoZWRPYmplY3RzOworICAgIEdSZWZQdHI8V2ViS2l0V2Vi
Q29udGV4dD4gbV93ZWJDb250ZXh0OworICAgIHN0YXRpYyB1aW50MzJfdCBzX3dlYkV4dGVuc2lv
bklEOwogfTsKIAogI2VuZGlmIC8vIFRlc3RNYWluX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViUHJvY2Vzc1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJQcm9jZXNzVGVzdFJ1bm5lci5jcHAKaW5k
ZXggOTlhOWRkYS4uN2FlNmM2NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsv
V2ViS2l0Mkd0ay9XZWJQcm9jZXNzVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJQcm9jZXNzVGVzdFJ1bm5lci5jcHAKQEAgLTM5LDggKzM5
LDggQEAgV2ViUHJvY2Vzc1Rlc3RSdW5uZXI6On5XZWJQcm9jZXNzVGVzdFJ1bm5lcigpCiAgICAg
Z19tYWluX2xvb3BfdW5yZWYobV9tYWluTG9vcCk7CiAKICAgICAvLyBnX3Rlc3RfZGJ1c19kb3du
IHdhaXRzIHVudGlsIHRoZSBjb25uZWN0aW9uIGlzIGZyZWVkLCBzbyByZWxlYXNlIG91ciByZWZz
IGV4cGxpY2l0bHkgYmVmb3JlIGNhbGxpbmcgaXQuCi0gICAgbV9jb25uZWN0aW9uID0gMDsKLSAg
ICBtX3Byb3h5ID0gMDsKKyAgICBtX2Nvbm5lY3Rpb24gPSBudWxscHRyOworICAgIG1fcHJveHkg
PSBudWxscHRyOwogICAgIGdfdGVzdF9kYnVzX2Rvd24obV9idXMuZ2V0KCkpOwogfQogCkBAIC01
MCwyMCArNTAsNiBAQCB2b2lkIFdlYlByb2Nlc3NUZXN0UnVubmVyOjpwcm94eUNyZWF0ZWRDYWxs
YmFjayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiByZXN1bHQsCiAgICAgZ19tYWluX2xvb3BfcXVp
dCh0ZXN0UnVubmVyLT5tX21haW5Mb29wKTsKIH0KIAotR0RCdXNQcm94eSogV2ViUHJvY2Vzc1Rl
c3RSdW5uZXI6OnByb3h5KCkKLXsKLSAgICBpZiAobV9wcm94eSkKLSAgICAgICAgcmV0dXJuIG1f
cHJveHkuZ2V0KCk7Ci0KLSAgICBnX2RidXNfcHJveHlfbmV3KG1fY29ubmVjdGlvbi5nZXQoKSwg
R19EQlVTX1BST1hZX0ZMQUdTX0RPX05PVF9BVVRPX1NUQVJULCAwLAotICAgICAgICAib3JnLndl
YmtpdC5ndGsuV2ViUHJvY2Vzc1Rlc3QiLCAiL29yZy93ZWJraXQvZ3RrL1dlYlByb2Nlc3NUZXN0
IiwgIm9yZy53ZWJraXQuZ3RrLldlYlByb2Nlc3NUZXN0IiwKLSAgICAgICAgMCwgcmVpbnRlcnBy
ZXRfY2FzdDxHQXN5bmNSZWFkeUNhbGxiYWNrPihXZWJQcm9jZXNzVGVzdFJ1bm5lcjo6cHJveHlD
cmVhdGVkQ2FsbGJhY2spLCB0aGlzKTsKLSAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7
Ci0gICAgZ19hc3NlcnQobV9wcm94eS5nZXQoKSk7Ci0KLSAgICByZXR1cm4gbV9wcm94eS5nZXQo
KTsKLX0KLQogdm9pZCBXZWJQcm9jZXNzVGVzdFJ1bm5lcjo6b25OYW1lQXBwZWFyZWQoR0RCdXND
b25uZWN0aW9uKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBncG9pbnRlciB1c2VyRGF0YSkK
IHsKICAgICBXZWJQcm9jZXNzVGVzdFJ1bm5lciogdGVzdFJ1bm5lciA9IHN0YXRpY19jYXN0PFdl
YlByb2Nlc3NUZXN0UnVubmVyKj4odXNlckRhdGEpOwpAQCAtODQsMTggKzcwLDI1IEBAIHZvaWQg
V2ViUHJvY2Vzc1Rlc3RSdW5uZXI6OnRlc3RGaW5pc2hlZENhbGxiYWNrKEdEQnVzUHJveHkqIHBy
b3h5LCBHQXN5bmNSZXN1bHQqCiAgICAgdGVzdFJ1bm5lci0+ZmluaXNoVGVzdCh0ZXN0UmVzdWx0
KTsKIH0KIAotYm9vbCBXZWJQcm9jZXNzVGVzdFJ1bm5lcjo6cnVuVGVzdChjb25zdCBjaGFyKiBz
dWl0ZU5hbWUsIGNvbnN0IGNoYXIqIHRlc3ROYW1lLCBHVmFyaWFudCogYXJncykKK2Jvb2wgV2Vi
UHJvY2Vzc1Rlc3RSdW5uZXI6OnJ1blRlc3QoY29uc3QgY2hhciogc3VpdGVOYW1lLCBjb25zdCBj
aGFyKiB0ZXN0TmFtZSwgdWludDMyX3QgdGVzdElELCBHVmFyaWFudCogYXJncykKIHsKICAgICBn
X2Fzc2VydChnX3ZhcmlhbnRfaXNfb2ZfdHlwZShhcmdzLCBHX1ZBUklBTlRfVFlQRV9WQVJESUNU
KSk7CiAKLSAgICB1bnNpZ25lZCB3YXRjaGVySUQgPSBnX2J1c193YXRjaF9uYW1lX29uX2Nvbm5l
Y3Rpb24obV9jb25uZWN0aW9uLmdldCgpLCAib3JnLndlYmtpdC5ndGsuV2ViUHJvY2Vzc1Rlc3Qi
LCBHX0JVU19OQU1FX1dBVENIRVJfRkxBR1NfTk9ORSwKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHRl
c3RCdXNOYW1lKGdfc3RyZHVwX3ByaW50Zigib3JnLndlYmtpdC5ndGsuV2ViUHJvY2Vzc1Rlc3Ql
dSIsIHRlc3RJRCkpOworICAgIHVuc2lnbmVkIHdhdGNoZXJJRCA9IGdfYnVzX3dhdGNoX25hbWVf
b25fY29ubmVjdGlvbihtX2Nvbm5lY3Rpb24uZ2V0KCksIHRlc3RCdXNOYW1lLmdldCgpLCBHX0JV
U19OQU1FX1dBVENIRVJfRkxBR1NfTk9ORSwKICAgICAgICAgV2ViUHJvY2Vzc1Rlc3RSdW5uZXI6
Om9uTmFtZUFwcGVhcmVkLCBXZWJQcm9jZXNzVGVzdFJ1bm5lcjo6b25OYW1lVmFuaXNoZWQsIHRo
aXMsIDApOwogICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKIAorICAgIGdfZGJ1c19w
cm94eV9uZXcobV9jb25uZWN0aW9uLmdldCgpLCBHX0RCVVNfUFJPWFlfRkxBR1NfRE9fTk9UX0FV
VE9fU1RBUlQsIG51bGxwdHIsCisgICAgICAgIHRlc3RCdXNOYW1lLmdldCgpLCAiL29yZy93ZWJr
aXQvZ3RrL1dlYlByb2Nlc3NUZXN0IiwgIm9yZy53ZWJraXQuZ3RrLldlYlByb2Nlc3NUZXN0IiwK
KyAgICAgICAgbnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxHQXN5bmNSZWFkeUNhbGxiYWNrPihX
ZWJQcm9jZXNzVGVzdFJ1bm5lcjo6cHJveHlDcmVhdGVkQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBn
X21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7CisgICAgZ19hc3NlcnQobV9wcm94eS5nZXQoKSk7
CisKICAgICBtX3Rlc3RSZXN1bHQgPSBmYWxzZTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IHRlc3RQ
YXRoKGdfc3RyZHVwX3ByaW50ZigiJXMvJXMiLCBzdWl0ZU5hbWUsIHRlc3ROYW1lKSk7CiAgICAg
Z19kYnVzX3Byb3h5X2NhbGwoCi0gICAgICAgIHByb3h5KCksCisgICAgICAgIG1fcHJveHkuZ2V0
KCksCiAgICAgICAgICJSdW5UZXN0IiwKICAgICAgICAgZ192YXJpYW50X25ldygiKHNAYXtzdn0p
IiwgdGVzdFBhdGguZ2V0KCksIGFyZ3MpLAogICAgICAgICBHX0RCVVNfQ0FMTF9GTEFHU19OT05F
LApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJQcm9j
ZXNzVGVzdFJ1bm5lci5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJQ
cm9jZXNzVGVzdFJ1bm5lci5oCmluZGV4IGM0MGZhOTYuLmYyZmM5MjYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViUHJvY2Vzc1Rlc3RSdW5uZXIuaAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYlByb2Nlc3NUZXN0UnVu
bmVyLmgKQEAgLTI5LDcgKzI5LDcgQEAgcHVibGljOgogICAgIFdlYlByb2Nlc3NUZXN0UnVubmVy
KCk7CiAgICAgfldlYlByb2Nlc3NUZXN0UnVubmVyKCk7CiAKLSAgICBib29sIHJ1blRlc3QoY29u
c3QgY2hhciogc3VpdGVOYW1lLCBjb25zdCBjaGFyKiB0ZXN0TmFtZSwgR1ZhcmlhbnQqIGFyZ3Mp
OworICAgIGJvb2wgcnVuVGVzdChjb25zdCBjaGFyKiBzdWl0ZU5hbWUsIGNvbnN0IGNoYXIqIHRl
c3ROYW1lLCB1aW50MzJfdCB0ZXN0SUQsIEdWYXJpYW50KiBhcmdzKTsKIAogcHJpdmF0ZToKICAg
ICBzdGF0aWMgdm9pZCBwcm94eUNyZWF0ZWRDYWxsYmFjayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0
KiwgV2ViUHJvY2Vzc1Rlc3RSdW5uZXIqKTsKQEAgLTM3LDcgKzM3LDYgQEAgcHJpdmF0ZToKICAg
ICBzdGF0aWMgdm9pZCBvbk5hbWVWYW5pc2hlZChHREJ1c0Nvbm5lY3Rpb24qLCBjb25zdCBjaGFy
KiwgZ3BvaW50ZXIpOwogICAgIHN0YXRpYyB2b2lkIHRlc3RGaW5pc2hlZENhbGxiYWNrKEdEQnVz
UHJveHkqLCBHQXN5bmNSZXN1bHQqLCBXZWJQcm9jZXNzVGVzdFJ1bm5lciopOwogCi0gICAgR0RC
dXNQcm94eSogcHJveHkoKTsKICAgICB2b2lkIGZpbmlzaFRlc3QoYm9vbCByZXN1bHQpOwogCiAg
ICAgR01haW5Mb29wKiBtX21haW5Mb29wOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9ndGsvV2ViS2l0Mkd0ay9XZWJWaWV3VGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2d0
ay9XZWJLaXQyR3RrL1dlYlZpZXdUZXN0LmNwcAppbmRleCBhODQzODI3Li43MmU3NWIzIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYlZpZXdUZXN0LmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYlZpZXdUZXN0LmNw
cApAQCAtMjQsMTYgKzI0LDEzIEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5Q
dHIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJHdGsuaD4KIAotV2ViVmlld1Rlc3Q6
OldlYlZpZXdUZXN0KCkKLSAgICA6IFdlYlZpZXdUZXN0KFdFQktJVF9XRUJfVklFVyh3ZWJraXRf
d2ViX3ZpZXdfbmV3KCkpKSB7IH0KLQotV2ViVmlld1Rlc3Q6OldlYlZpZXdUZXN0KFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcpCi0gICAgOiBtX3dlYlZpZXcoV0VCS0lUX1dFQl9WSUVXKGdfb2JqZWN0
X3JlZl9zaW5rKHdlYlZpZXcpKSkKLSAgICAsIG1fbWFpbkxvb3AoZ19tYWluX2xvb3BfbmV3KDAs
IFRSVUUpKQotICAgICwgbV9wYXJlbnRXaW5kb3coMCkKLSAgICAsIG1famF2YXNjcmlwdFJlc3Vs
dCgwKQorV2ViVmlld1Rlc3Q6OldlYlZpZXdUZXN0KFdlYktpdFVzZXJDb250ZW50TWFuYWdlciog
dXNlckNvbnRlbnRNYW5hZ2VyKQorICAgIDogbV93ZWJWaWV3KFdFQktJVF9XRUJfVklFVyhnX29i
amVjdF9yZWZfc2luayhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJRVcsICJ3ZWItY29u
dGV4dCIsIG1fd2ViQ29udGV4dC5nZXQoKSwgInVzZXItY29udGVudC1tYW5hZ2VyIiwgdXNlckNv
bnRlbnRNYW5hZ2VyLCBudWxscHRyKSkpKQorICAgICwgbV9tYWluTG9vcChnX21haW5fbG9vcF9u
ZXcobnVsbHB0ciwgVFJVRSkpCisgICAgLCBtX3BhcmVudFdpbmRvdyhudWxscHRyKQorICAgICwg
bV9qYXZhc2NyaXB0UmVzdWx0KG51bGxwdHIpCiAgICAgLCBtX3Jlc291cmNlRGF0YVNpemUoMCkK
LSAgICAsIG1fc3VyZmFjZSgwKQorICAgICwgbV9zdXJmYWNlKG51bGxwdHIpCiB7CiAgICAgYXNz
ZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChtX3dlYlZpZXcpKTsK
IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViVmll
d1Rlc3QuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViVmlld1Rlc3Qu
aAppbmRleCAwNjQxYzljLi41YWQwOThkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L2d0ay9XZWJLaXQyR3RrL1dlYlZpZXdUZXN0LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9n
dGsvV2ViS2l0Mkd0ay9XZWJWaWV3VGVzdC5oCkBAIC0yOCw4ICsyOCw3IEBACiBjbGFzcyBXZWJW
aWV3VGVzdDogcHVibGljIFRlc3QgewogcHVibGljOgogICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRV
UkUoV2ViVmlld1Rlc3QpOwotICAgIFdlYlZpZXdUZXN0KFdlYktpdFdlYlZpZXcqKTsKLSAgICBX
ZWJWaWV3VGVzdCgpOworICAgIFdlYlZpZXdUZXN0KFdlYktpdFVzZXJDb250ZW50TWFuYWdlciog
PSBudWxscHRyKTsKICAgICB2aXJ0dWFsIH5XZWJWaWV3VGVzdCgpOwogCiAgICAgdmlydHVhbCB2
b2lkIGxvYWRVUkkoY29uc3QgY2hhciogdXJpKTsK
</data>
<flag name="review"
          id="266640"
          type_id="1"
          status="+"
          setter="gustavo"
    />
          </attachment>
      

    </bug>

</bugzilla>