<?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>216533</bug_id>
          
          <creation_ts>2020-09-15 02:21:45 -0700</creation_ts>
          <short_desc>[WebIDL] %Interface%.prototype.constructor should be defined on [[Set]] receiver</short_desc>
          <delta_ts>2021-03-09 15:03:33 -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>Bindings</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=158014</see_also>
    
    <see_also>https://github.com/web-platform-tests/wpt/pull/26127</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=217916</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=222984</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>bashorov</reporter>
          <assigned_to name="Alexey Shvayka">ashvayka</assigned_to>
          <cc>alecflett</cc>
    
    <cc>ashvayka</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>clopez</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jsbell</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1688637</commentid>
    <comment_count>0</comment_count>
    <who name="">bashorov</who>
    <bug_when>2020-09-15 02:21:45 -0700</bug_when>
    <thetext>```
var p = Object.create(HTMLElement.prototype);
p.constructor = &quot;foo&quot;;
console.log(&quot;!!!&quot; + HTMLElement.prototype.constructor)
```

For Safari it prints:
```
!!!foo
```

For Chrome it prints:
```
!!!function HTMLElement() { [native code] }
```

For non HTML elements it works as expected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1689259</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-16 16:41:33 -0700</bug_when>
    <thetext>&lt;rdar://problem/69023868&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1689463</commentid>
    <comment_count>2</comment_count>
      <attachid>409037</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-09-17 09:05:50 -0700</bug_when>
    <thetext>Created attachment 409037
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1689473</commentid>
    <comment_count>3</comment_count>
      <attachid>409041</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-09-17 09:31:31 -0700</bug_when>
    <thetext>Created attachment 409041
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696663</commentid>
    <comment_count>4</comment_count>
      <attachid>411057</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-10-11 11:30:41 -0700</bug_when>
    <thetext>Created attachment 411057
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696664</commentid>
    <comment_count>5</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-10-11 11:32:00 -0700</bug_when>
    <thetext>This patch modifies the imported WPT tests. Please ensure that any changes on the tests (not coming from a WPT import) are exported to WPT. Please see https://trac.webkit.org/wiki/WPTExportProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696668</commentid>
    <comment_count>6</comment_count>
      <attachid>411057</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-10-11 11:50:25 -0700</bug_when>
    <thetext>Comment on attachment 411057
Patch

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

&gt; Source/JavaScriptCore/runtime/CustomGetterSetter.h:79
&gt; +JS_EXPORT_PRIVATE Optional&lt;bool&gt; callCustomSetter(JSGlobalObject*, CustomGetterSetter::CustomSetter, bool isAccessor, JSObject* slotBase, JSValue thisValue, JSValue);

Sam Weinig has argued that Optional&lt;bool&gt; is too confusing a type to ever be used for anything. In this case, I must admit it’s not clear to me what the three different return values are and what they mean. Could just return a custom enumeration to make that clearer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699427</commentid>
    <comment_count>7</comment_count>
      <attachid>411796</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-10-19 14:12:28 -0700</bug_when>
    <thetext>Created attachment 411796
Patch

Use TriState instead of Optional&lt;bool&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699428</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-10-19 14:13:18 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #6)

Thank you for review, Darin!

&gt; Sam Weinig has argued that Optional&lt;bool&gt; is too confusing a type to ever be
&gt; used for anything. In this case, I must admit it’s not clear to me what the
&gt; three different return values are and what they mean. Could just return a
&gt; custom enumeration to make that clearer?

Does TriState make it clearer?
It&apos;s nice that, unlike custom enumeration, it leaves the knowledge on how to handle missing CustomValue setter out of callCustomSetter().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699431</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-10-19 14:15:42 -0700</bug_when>
    <thetext>(In reply to Alexey Shvayka from comment #8)
&gt; It&apos;s nice that, unlike custom enumeration, it leaves the knowledge on how to
&gt; handle missing CustomValue setter out of callCustomSetter().

This can also be achieved by passing something like CustomGetterSetter::Result::MissingCustomValueSetter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699434</commentid>
    <comment_count>10</comment_count>
      <attachid>411796</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-10-19 14:21:48 -0700</bug_when>
    <thetext>Comment on attachment 411796
Patch

Yes, I think the use of TriState makes this clearer. Not as elegant as Optional&lt;bool&gt; but clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699586</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-19 19:49:12 -0700</bug_when>
    <thetext>Committed r268710: &lt;https://trac.webkit.org/changeset/268710&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 411796.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725604</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-02-04 05:17:34 -0800</bug_when>
    <thetext>(In reply to EWS from comment #11)
&gt; Committed r268710: &lt;https://trac.webkit.org/changeset/268710&gt;

This change reduced WebCore --release binary size by 0.36% (296 KB), and also fixed DontEnum to be preserved when reassigning &quot;constructor&quot;:

    HTMLElement.constructor = function() {};
    HTMLElement.propertyIsEnumerable(&quot;constructor&quot;); // now: false (correct), was: true

https://bugs.webkit.org/show_bug.cgi?id=217916 adds a test case for this, and also fixes 2 super minor regressions introduced in r268710:

    1. When CustomValue structure property is reassigned, PropertyAttribute::CustomValue is not unset.
       This is unobservable since JSC relies on value being a CustomGetterSetter rather than checking attributes.
    2. When non-reified static setter-less CustomValue of a non-extensible structure is reassigned, TypeError is erroneously thrown.
       There are no such cases in the wild: &quot;constructor&quot; properties are always reified.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409037</attachid>
            <date>2020-09-17 09:05:50 -0700</date>
            <delta_ts>2020-09-17 09:31:27 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-216533-20200917190547.patch</filename>
            <type>text/plain</type>
            <size>394357</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3MDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY0NTNlM2RmNjlhYmQz
ZDMwYjg5OTRkNDYwNDMwM2MzOTc5YWUwMy4uZDA4NTBkMzFhNDNhODk0NjJmODU4MWUwYWI5ZjM1
YTk3ZGQ4MGFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA5LTE3ICBBbGV4
ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBNb2RpZnlpbmcg
b2JqZWN0IGNyZWF0ZWQgYnkgT2JqZWN0LmNyZWF0ZSBmcm9tIHRoZSBwcm90b3R5cGUgb2YgSFRN
TEVsZW1lbnQgbW9kaWZpZXMgdGhlIG9yaWdpbmFsIG9iamVjdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2NTMzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvKjogVXBkYXRlZC4KKwogMjAyMC0wOS0xMyAgU2FtIFdlaW5p
ZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYklETF0gUmVtb3ZlIG5lZWQgZm9y
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gb24gY29uc3RydWN0b3JzIGFuZCBsZWdhY3kgZmFjdG9yeSBm
dW5jdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0KaW5kZXggYThkMDFkMDQyN2QwMWUyZTliM2NkNWE3ZTA1MzljMWI2OWRkOTBj
OC4uZTZmOGZkNTQzMDg4MjUwOGRmNWI4NzAzODBiOTQ4YmE4OTRkZTZiOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTE4
NjgsNyArMTg2OCw2IEBAIHN1YiBQcm90b3R5cGVQcm9wZXJ0eUNvdW50CiAgICAgICAgICRjb3Vu
dCsrIGlmICFBdHRyaWJ1dGVTaG91bGRCZU9uSW5zdGFuY2UoJGludGVyZmFjZSwgJGF0dHJpYnV0
ZSk7CiAgICAgfQogICAgICRjb3VudCArPSBQcm90b3R5cGVPcGVyYXRpb25Db3VudCgkaW50ZXJm
YWNlKTsKLSAgICAkY291bnQrKyBpZiBOZWVkc0NvbnN0cnVjdG9yUHJvcGVydHkoJGludGVyZmFj
ZSk7CiAgICAgcmV0dXJuICRjb3VudDsKIH0KIApAQCAtMzA5NCwxNyArMzA5Myw2IEBAIHN1YiBH
ZW5lcmF0ZVByb3BlcnRpZXNIYXNoVGFibGUKICAgICAjIC0gQWRkIGFsbCBwcm9wZXJ0aWVzIGlu
IGEgaGFzaHRhYmxlIGRlZmluaXRpb24KICAgICBteSAkcHJvcGVydHlDb3VudCA9ICRpc0luc3Rh
bmNlID8gSW5zdGFuY2VQcm9wZXJ0eUNvdW50KCRpbnRlcmZhY2UpIDogUHJvdG90eXBlUHJvcGVy
dHlDb3VudCgkaW50ZXJmYWNlKTsKIAotICAgIGlmICghJGlzSW5zdGFuY2UgJiYgTmVlZHNDb25z
dHJ1Y3RvclByb3BlcnR5KCRpbnRlcmZhY2UpKSB7Ci0gICAgICAgIGRpZSBpZiAhJHByb3BlcnR5
Q291bnQ7Ci0gICAgICAgIHB1c2goQCRoYXNoS2V5cywgImNvbnN0cnVjdG9yIik7Ci0gICAgICAg
IG15ICRnZXR0ZXIgPSAianMiIC4gJGludGVyZmFjZU5hbWUgLiAiQ29uc3RydWN0b3IiOwotICAg
ICAgICBwdXNoKEAkaGFzaFZhbHVlMSwgJGdldHRlcik7Ci0KLSAgICAgICAgbXkgJHNldHRlciA9
ICJzZXRKUyIgLiAkaW50ZXJmYWNlTmFtZSAuICJDb25zdHJ1Y3RvciI7Ci0gICAgICAgIHB1c2go
QCRoYXNoVmFsdWUyLCAkc2V0dGVyKTsKLSAgICAgICAgcHVzaChAJGhhc2hTcGVjaWFscywgInN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkiKTsK
LSAgICB9Ci0KICAgICByZXR1cm4gMCBpZiAhJHByb3BlcnR5Q291bnQ7CiAKICAgICBteSBAYXR0
cmlidXRlcyA9IEB7JGludGVyZmFjZS0+YXR0cmlidXRlc307CkBAIC00MDIyLDE3ICs0MDEwLDkg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJcbiIpOwogICAgIH0KIAotICAgIGlmICgkbnVtQXR0cmlidXRlcyA+IDAgfHwgTmVlZHNDb25z
dHJ1Y3RvclByb3BlcnR5KCRpbnRlcmZhY2UpKSB7CisgICAgaWYgKCRudW1BdHRyaWJ1dGVzID4g
MCkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIi8vIEF0dHJpYnV0ZXNcblxuIik7CiAK
LSAgICAgICAgaWYgKE5lZWRzQ29uc3RydWN0b3JQcm9wZXJ0eSgkaW50ZXJmYWNlKSkgewotICAg
ICAgICAgICAgbXkgJGNvbnN0cnVjdG9yR2V0dGVyID0gImpzIiAuICRpbnRlcmZhY2VOYW1lIC4g
IkNvbnN0cnVjdG9yIjsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNDOjpFbmNv
ZGVkSlNWYWx1ZSAke2NvbnN0cnVjdG9yR2V0dGVyfShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpO1xuIik7Ci0KLSAgICAgICAgICAg
IG15ICRjb25zdHJ1Y3RvclNldHRlciA9ICJzZXRKUyIgLiAkaW50ZXJmYWNlTmFtZSAuICJDb25z
dHJ1Y3RvciI7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtjb25zdHJ1
Y3RvclNldHRlcn0oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpO1xuIik7Ci0gICAgICAgIH0KLQogICAgICAgICBmb3JlYWNoIG15
ICRhdHRyaWJ1dGUgKEBhdHRyaWJ1dGVzKSB7CiAgICAgICAgICAgICBuZXh0IGlmICRhdHRyaWJ1
dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ZvcndhcmREZWNsYXJlSW5IZWFkZXJ9OwogICAgICAg
ICAgICAgbmV4dCBpZiBJc0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKQEAgLTQw
ODksNyArNDA2OSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBpZiAoJG51bUF0dHJpYnV0ZXMgPiAwIHx8IE5lZWRzQ29uc3RydWN0b3JQcm9w
ZXJ0eSgkaW50ZXJmYWNlKSkgeworICAgIGlmICgkbnVtQXR0cmlidXRlcyA+IDApIHsKICAgICAg
ICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAYXR0cmlidXRlcykgewogICAgICAgICAgICAgbmV4
dCB1bmxlc3MgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RE9NSklUfTsKICAgICAg
ICAgICAgIGFzc2VydCgiT25seSBET01KSVQ9R2V0dGVyIGlzIHN1cHBvcnRlZCBmb3IgYXR0cmli
dXRlcyIpIHVubGVzcyAkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygk
YXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntET01KSVR9LCAiR2V0dGVyIik7CkBAIC00
MTQ4LDggKzQxMjgsNiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBteSAl
Y29uZGl0aW9uYWxzID0gKCk7CiAgICAgICAgIG15ICVyZWFkV3JpdGVDb25kaXRpb25hbHMgPSAo
KTsKIAotICAgICAgICBteSAkbmVlZHNDb25zdHJ1Y3RvclRhYmxlID0gMDsKLQogICAgICAgICBm
b3JlYWNoIG15ICRjb25zdGFudCAoQHskaW50ZXJmYWNlLT5jb25zdGFudHN9KSB7CiAgICAgICAg
ICAgICBteSAkbmFtZSA9ICRjb25zdGFudC0+bmFtZTsKICAgICAgICAgICAgIHB1c2goQGhhc2hL
ZXlzLCAkbmFtZSk7CkBAIC00Mjg0LDYgKzQyNjIsMTAgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTtcbiIpOwogCisgICAgaWYgKE5lZWRz
Q29uc3RydWN0b3JQcm9wZXJ0eSgkaW50ZXJmYWNlKSkgeworICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBq
c1VuZGVmaW5lZCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pKTtcbiIpOworICAgIH0KKwogICAgIGlmIChQcm90b3R5cGVIYXNTdGF0aWNQ
cm9wZXJ0eVRhYmxlKCRpbnRlcmZhY2UpICYmICFJc0dsb2JhbEludGVyZmFjZSgkaW50ZXJmYWNl
KSkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZWlmeVN0YXRpY1Byb3BlcnRp
ZXModm0sICR7Y2xhc3NOYW1lfTo6aW5mbygpLCAke2NsYXNzTmFtZX1Qcm90b3R5cGVUYWJsZVZh
bHVlcywgKnRoaXMpO1xuIik7CiAKQEAgLTQ2MDIsNDQgKzQ1ODQsNiBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAg
fQogCi0gICAgaWYgKE5lZWRzQ29uc3RydWN0b3JQcm9wZXJ0eSgkaW50ZXJmYWNlKSkgewotICAg
ICAgICBteSAkY29uc3RydWN0b3JHZXR0ZXIgPSAianMiIC4gJGludGVyZmFjZU5hbWUgLiAiQ29u
c3RydWN0b3IiOwotCi0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiRW5jb2RlZEpTVmFsdWUg
JHtjb25zdHJ1Y3RvckdldHRlcn0oSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKVxuIik7Ci0gICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7XG4iKTsKLSAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byogcHJv
dG90eXBlID0ganNEeW5hbWljQ2FzdDwke2NsYXNzTmFtZX1Qcm90b3R5cGUqPih2bSwgSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpO1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSlcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSk7XG4iKTsKLQotICAgICAgICBpZiAoISRpbnRlcmZhY2UtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0xlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0fSkgewotICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSgke2NsYXNzTmFtZX06
OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlw
ZS0+Z2xvYmFsT2JqZWN0KCkpKTtcbiIpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSBjb25zdHJ1Y3RvciA9ICR7Y2xhc3NOYW1l
fUNvbnN0cnVjdG9yOjpjcmVhdGUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgJHtj
bGFzc05hbWV9Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpLCAqcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSwgcHJvdG90eXBlLT5nbG9i
YWxPYmplY3QoKS0+b2JqZWN0UHJvdG90eXBlKCkpLCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4ocHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAvLyBTaGFkb3dpbmcgY29uc3RydWN0b3IgcHJvcGVydHkgdG8gZW5z
dXJlIHJldXNpbmcgdGhlIHNhbWUgY29uc3RydWN0b3Igb2JqZWN0XG4iKTsKLSAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgY29uc3RydWN0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpO1xuIik7Ci0gICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdG9y
KTtcbiIpOwotICAgICAgICB9Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsK
LQotICAgICAgICBteSAkY29uc3RydWN0b3JTZXR0ZXIgPSAic2V0SlMiIC4gJGludGVyZmFjZU5h
bWUgLiAiQ29uc3RydWN0b3IiOwotCi0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAk
e2NvbnN0cnVjdG9yU2V0dGVyfShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpXG4i
KTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKLSAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTtc
biIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PCR7Y2xhc3NOYW1lfVByb3RvdHlw
ZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7XG4iKTsKLSAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7XG4iKTsKLSAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSk7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIHJldHVybiBmYWxzZTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICB9XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgLy8gU2hhZG93aW5n
IGEgYnVpbHQtaW4gY29uc3RydWN0b3JcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNv
bnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7XG4iKTsKLSAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwotCi0gICAgfQotCiAgICAgZm9yZWFjaCBteSAk
YXR0cmlidXRlIChAYXR0cmlidXRlcykgewogICAgICAgICBHZW5lcmF0ZUF0dHJpYnV0ZUdldHRl
ckRlZmluaXRpb24oXEBpbXBsQ29udGVudCwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJp
YnV0ZSk7CiAgICAgICAgIEdlbmVyYXRlQXR0cmlidXRlU2V0dGVyRGVmaW5pdGlvbihcQGltcGxD
b250ZW50LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKQEAgLTc2MjEsMTIg
Kzc1NjUsMTggQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2RzCiAgICAgIyBU
aGVyZSBtdXN0IGV4aXN0IGFuIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0IGZvciBldmVyeSBu
b24tY2FsbGJhY2sgaW50ZXJmYWNlIGRlZmluZWQsIHJlZ2FyZGxlc3MKICAgICAjIG9mIHdoZXRo
ZXIgdGhlIGludGVyZmFjZSB3YXMgZGVjbGFyZWQgd2l0aCB0aGUgW0xlZ2FjeU5vSW50ZXJmYWNl
T2JqZWN0XSBleHRlbmRlZCBhdHRyaWJ1dGUuCiAgICAgIyBodHRwczovL2hleWNhbS5naXRodWIu
aW8vd2ViaWRsLyNpbnRlcmZhY2UtcHJvdG90eXBlLW9iamVjdAotICAgIGlmIChTaG91bGRVc2VH
bG9iYWxPYmplY3RQcm90b3R5cGUoJGludGVyZmFjZSkpIHsKLSAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBn
bG9iYWxPYmplY3QuZ2V0UHJvdG90eXBlRGlyZWN0KHZtKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pO1xuIik7Ci0gICAgfSBlbHNpZiAoJGludGVyZmFj
ZS0+aXNDYWxsYmFjaykgeworICAgIGlmICgkaW50ZXJmYWNlLT5pc0NhbGxiYWNrKSB7CiAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTtc
biIpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgJHtjbGFzc05hbWV9Ojpwcm90
b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKTtcbiIpOworICAgICAgICBpZiAoU2hvdWxkVXNlR2xvYmFsT2JqZWN0
UHJvdG90eXBlKCRpbnRlcmZhY2UpKSB7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgYXV0byogcHJvdG90eXBlID0gYXNPYmplY3QoZ2xvYmFsT2JqZWN0LmdldFByb3RvdHlw
ZURpcmVjdCh2bSkpO1xuIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgYXV0byogcHJvdG90eXBlID0gJHtjbGFzc05hbWV9Ojpwcm90b3R5
cGUodm0sIGdsb2JhbE9iamVjdCk7XG4iKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoTmVlZHND
b25zdHJ1Y3RvclByb3BlcnR5KCRpbnRlcmZhY2UpKSB7CisgICAgICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
PmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTtcbiIpOworICAgICAgICB9CisgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwg
cHJvdG90eXBlLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSk7XG4iKTsKICAgICB9CiAKICAgICBhc3NlcnQoImpzTm9udHJpdmlhbFN0cmluZygpIHJlcXVp
cmVzIHN0cmluZ3MgdHdvIG9yIG1vcmUgY2hhcmFjdGVycyBsb25nIikgaWYgbGVuZ3RoKCR2aXNp
YmxlSW50ZXJmYWNlTmFtZSkgPCAyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5jcHAKaW5kZXggNzViMTk5NjUzMTBlYWQz
YmMxNmZiMzJiZDIyOWU2YjI3ZTdjNDc2Zi4uMGY5ZWU4YmI1OGQ3YWM1ZWI1MjM0ZWFiNTdjZDAy
MGEwNmFmNTEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNET01XaW5kb3cuY3BwCkBAIC00OSw4ICs0OSw2IEBAIHVzaW5nIG5hbWVz
cGFjZSBKU0M7CiAKIC8vIEF0dHJpYnV0ZXMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc0RPTVdp
bmRvd0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1ib29sIHNldEpTRE9NV2luZG93Q29uc3RydWN0b3IoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc0RPTVdpbmRvd0V4cG9zZWRUb1dvcmtlckFuZFdp
bmRvd0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7CiBib29sIHNldEpTRE9NV2luZG93RXhwb3NlZFRvV29ya2Vy
QW5kV2luZG93Q29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc0RPTVdp
bmRvd1Rlc3ROb2RlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKQEAgLTk0LDcgKzkyLDkgQEAgdGVtcGxhdGU8
PiBKU1ZhbHVlIEpTRE9NV2luZG93Q29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgY28KIAogdGVtcGxhdGU8PiB2b2lkIEpTRE9NV2luZG93Q29uc3RydWN0b3I6
OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKIHsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwg
Z2xvYmFsT2JqZWN0LmdldFByb3RvdHlwZURpcmVjdCh2bSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBhc09i
amVjdChnbG9iYWxPYmplY3QuZ2V0UHJvdG90eXBlRGlyZWN0KHZtKSk7CisgICAgcHJvdG90eXBl
LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0s
ICJET01XaW5kb3ciX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQpAQCAtMTAzLDI0
ICsxMDMsMjMgQEAgdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNET01XaW5kb3dDb25zdHJ1
Y3Rvcjo6c19pbmZvID0geyAiRE9NV2luZG93IiwgJkJhc2UKIAogLyogSGFzaCB0YWJsZSBmb3Ig
cHJvdG90eXBlICovCiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU0RP
TVdpbmRvd1Byb3RvdHlwZVRhYmxlSW5kZXhbMl0gPSB7CitzdGF0aWMgY29uc3Qgc3RydWN0IENv
bXBhY3RIYXNoSW5kZXggSlNET01XaW5kb3dQcm90b3R5cGVUYWJsZUluZGV4WzFdID0gewogICAg
IHsgLTEsIC0xIH0sCi0gICAgeyAwLCAtMSB9LAogfTsKIAogCiBzdGF0aWMgY29uc3QgSGFzaFRh
YmxlVmFsdWUgSlNET01XaW5kb3dQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKLSAgICB7ICJj
b25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNET01XaW5kb3dDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTRE9NV2luZG93
Q29uc3RydWN0b3IpIH0gfSwKKyAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9CiB9
OwogCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTRE9NV2luZG93UHJvdG90eXBlVGFibGUgPSB7
IDEsIDEsIHRydWUsIEpTRE9NV2luZG93OjppbmZvKCksIEpTRE9NV2luZG93UHJvdG90eXBlVGFi
bGVWYWx1ZXMsIEpTRE9NV2luZG93UHJvdG90eXBlVGFibGVJbmRleCB9Oworc3RhdGljIGNvbnN0
IEhhc2hUYWJsZSBKU0RPTVdpbmRvd1Byb3RvdHlwZVRhYmxlID0geyAwLCAwLCBmYWxzZSwgSlNE
T01XaW5kb3c6OmluZm8oKSwgSlNET01XaW5kb3dQcm90b3R5cGVUYWJsZVZhbHVlcywgSlNET01X
aW5kb3dQcm90b3R5cGVUYWJsZUluZGV4IH07CiBjb25zdCBDbGFzc0luZm8gSlNET01XaW5kb3dQ
cm90b3R5cGU6OnNfaW5mbyA9IHsgIkRPTVdpbmRvdyIsICZCYXNlOjpzX2luZm8sICZKU0RPTVdp
bmRvd1Byb3RvdHlwZVRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRE9NV2lu
ZG93UHJvdG90eXBlKSB9OwogCiB2b2lkIEpTRE9NV2luZG93UHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIHJlaWZ5
U3RhdGljUHJvcGVydGllcyh2bSwgSlNET01XaW5kb3c6OmluZm8oKSwgSlNET01XaW5kb3dQcm90
b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+Y29uc3RydWN0b3IsIGpzVW5kZWZpbmVkKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIEpTQ19UT19TVFJJTkdfVEFH
X1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQogCkBAIC0xNDksMjkgKzE0OCw2IEBAIHRlbXBsYXRl
PD4gaW5saW5lIEpTRE9NV2luZG93KiBJRExBdHRyaWJ1dGU8SlNET01XaW5kb3c+OjpjYXN0KEpT
R2xvYmFsT2JqZWN0JiBsCiAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNET01XaW5kb3cqPihK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBqc0RPTVdpbmRvd0NvbnN0cnVjdG9yKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAg
IGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNET01XaW5kb3dQcm90b3R5cGUqPih2
bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90
eXBlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0RPTVdpbmRvdzo6
Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBl
LT5nbG9iYWxPYmplY3QoKSkpOwotfQotCi1ib29sIHNldEpTRE9NV2luZG93Q29uc3RydWN0b3Io
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQotewotICAgIFZNJiB2bSA9IEpTQzo6
Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxK
U0RPTVdpbmRvd1Byb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0g
ICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1
cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9y
LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0RPTVdpbmRvd0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0NvbnN0cnVjdG9yR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTVdpbmRvdyYgdGhpc09i
amVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggZmFkM2QyN2ZmZWZi
YTAxY2E2NDE5ZjIzMDQwMGJiMWU0NzEwNTI0Ni4uYjkzZmIxMjRjZmIyYWI5YzY3NzJhZGZkNjQ0
MDQ3MjM5OWRiOGRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlLmNwcApAQCAtNDIsMTEgKzQyLDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAKLS8vIEF0dHJpYnV0ZXMKLQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc0Rl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLWJvb2wgc2V0SlNEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKLQogdXNpbmcgSlNEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENv
bnN0cnVjdGFibGU8SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZT47CiAKIHRlbXBsYXRlPD4g
SlNWYWx1ZSBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3I6OnByb3RvdHlw
ZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCkKQEAgLTU2LDcgKzUxLDkgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXIKIAogdGVt
cGxhdGU8PiB2b2lkIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcjo6aW5p
dGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQogewotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBnbG9i
YWxPYmplY3QuZ2V0UHJvdG90eXBlRGlyZWN0KHZtKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIGF1dG8qIHByb3RvdHlwZSA9IGFzT2JqZWN0
KGdsb2JhbE9iamVjdC5nZXRQcm90b3R5cGVEaXJlY3Qodm0pKTsKKyAgICBwcm90b3R5cGUtPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIkRl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsK
IH0KQEAgLTY1LDI0ICs2MiwyMyBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU0RlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIgogCiAvKiBIYXNo
IHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIAotc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFz
aEluZGV4IEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGVUYWJsZUluZGV4WzJd
ID0geworc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGVQcm90b3R5cGVUYWJsZUluZGV4WzFdID0gewogICAgIHsgLTEsIC0xIH0s
Ci0gICAgeyAwLCAtMSB9LAogfTsKIAogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNE
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewotICAg
IHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29u
c3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpIH0gfSwK
KyAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9CiB9OwogCi1zdGF0aWMgY29uc3Qg
SGFzaFRhYmxlIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGVUYWJsZSA9IHsg
MSwgMSwgdHJ1ZSwgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6aW5mbygpLCBKU0RlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlVGFibGVWYWx1ZXMsIEpTRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGVQcm90b3R5cGVUYWJsZUluZGV4IH07CitzdGF0aWMgY29uc3QgSGFzaFRh
YmxlIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGVUYWJsZSA9IHsgMCwgMCwg
ZmFsc2UsIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OmluZm8oKSwgSlNEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZVRhYmxlVmFsdWVzLCBKU0RlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlUHJvdG90eXBlVGFibGVJbmRleCB9OwogY29uc3QgQ2xhc3NJbmZvIEpTRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkRlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlIiwgJkJhc2U6OnNfaW5mbywgJkpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGVQcm90b3R5cGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0RlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlKSB9OwogCiB2b2lkIEpTRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU0Rl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjppbmZvKCksIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGVQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOworICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGpzVW5kZWZpbmVkKCksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIEpTQ19UT19T
VFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQogCkBAIC0xMDYsMjkgKzEwMiw2IEBA
IEpTVmFsdWUgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6Z2V0Q29uc3RydWN0b3IoVk0m
IHZtLCBjb25zdCBKU0dsb2JhbE9iamVjCiAgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpT
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3Qg
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
anNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHBy
b3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVByb3Rv
dHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZ
KCFwcm90b3R5cGUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKLX0KLQotYm9vbCBz
ZXRKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEds
b2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
LSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJv
cihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJl
dHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0
b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogSlNDOjpJc29TdWJzcGFj
ZSogSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0m
IHZtKQogewogICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERh
dGEqPih2bS5jbGllbnREYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5k
b3cuY3BwCmluZGV4IDBiODNmYjY1M2U4OTRkY2M1YjFhZGNmN2E5NTkxYzQ3ZDJmMDA4NzMuLmJh
OTRjMmI2YmM2ODE5MDZiNmEyNTA0ZjFkNDRiNzdlZjE4M2JlMjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRUb1dvcmtlckFuZFdp
bmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
RXhwb3NlZFRvV29ya2VyQW5kV2luZG93LmNwcApAQCAtODksMTEgKzg5LDYgQEAgSlNDOjpKU09i
amVjdCogY29udmVydERpY3Rpb25hcnlUb0pTKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEoKIAogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzRXhw
b3NlZFRvV29ya2VyQW5kV2luZG93UHJvdG90eXBlRnVuY3Rpb25Eb1NvbWV0aGluZyhKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAotLy8gQXR0cmlidXRlcwotCi1KU0M6
OkVuY29kZWRKU1ZhbHVlIGpzRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Q29uc3RydWN0b3IoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1l
KTsKLWJvb2wgc2V0SlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dDb25zdHJ1Y3RvcihKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7
Ci0KIGNsYXNzIEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93UHJvdG90eXBlIGZpbmFsIDogcHVi
bGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpT
Qzo6SlNOb25GaW5hbE9iamVjdDsKQEAgLTE1Miw3ICsxNDcsOSBAQCB0ZW1wbGF0ZTw+IEpTVmFs
dWUgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3Ry
dWN0dXJlKAogCiB0ZW1wbGF0ZTw+IHZvaWQgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dDb25z
dHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0KQogewotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJv
dG90eXBlLCBKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdzo6cHJvdG90eXBlKHZtLCBnbG9iYWxP
YmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7
CisgICAgYXV0byogcHJvdG90eXBlID0gSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3c6OnByb3Rv
dHlwZSh2bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIkV4cG9zZWRUb1dvcmtlckFu
ZFdpbmRvdyJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CkBAIC0xNjMsNyArMTYw
LDYgQEAgdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5k
b3dDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRXgKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZh
bHVlIEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93UHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7
Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzRXhwb3NlZFRvV29ya2VyQW5kV2luZG93
Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0NvbnN0cnVjdG9yKSB9IH0s
CiAgICAgeyAiZG9Tb21ldGhpbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzRXhwb3NlZFRvV29ya2VyQW5kV2luZG93UHJvdG90eXBl
RnVuY3Rpb25Eb1NvbWV0aGluZyksIChpbnRwdHJfdCkgKDApIH0gfSwKIH07CiAKQEAgLTE3Miw2
ICsxNjgsNyBAQCBjb25zdCBDbGFzc0luZm8gSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dQcm90
b3R5cGU6OnNfaW5mbyA9IHsgIkV4cG9zZWRUb1dvcmtlcgogdm9pZCBKU0V4cG9zZWRUb1dvcmtl
ckFuZFdpbmRvd1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
PmNvbnN0cnVjdG9yLCBqc1VuZGVmaW5lZCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXMo
dm0sIEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93OjppbmZvKCksIEpTRXhwb3NlZFRvV29ya2Vy
QW5kV2luZG93UHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKICAgICBKU0NfVE9fU1RSSU5H
X1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKIH0KQEAgLTIxOCwyOSArMjE1LDYgQEAgdGVtcGxh
dGU8PiBpbmxpbmUgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cqIElETE9wZXJhdGlvbjxKU0V4
cG9zZWRUb1dvcmtlckFuZFcKICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU0V4cG9zZWRUb1dv
cmtlckFuZFdpbmRvdyo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJh
bWUudGhpc1ZhbHVlKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBqc0V4cG9zZWRUb1dvcmtlckFu
ZFdpbmRvd0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKLXsKLSAgICBWTSYgdm0gPSBK
U0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nh
c3Q8SlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdzo6
Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBl
LT5nbG9iYWxPYmplY3QoKSkpOwotfQotCi1ib29sIHNldEpTRXhwb3NlZFRvV29ya2VyQW5kV2lu
ZG93Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQotewotICAg
IFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0g
anNEeW5hbWljQ2FzdDxKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd1Byb3RvdHlwZSo+KHZtLCBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUp
KSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEg
YnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc0V4cG9zZWRU
b1dvcmtlckFuZFdpbmRvd1Byb3RvdHlwZUZ1bmN0aW9uRG9Tb21ldGhpbmdCb2R5KEpTQzo6SlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJh
bWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdz46OkNs
YXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxl
eGljYWxHbG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUu
Y3BwCmluZGV4IDYyNWFkYmMyNzQ1ZGEzOWZlOTNmYzhmZGYwMDg4Zjk1MjlhNjVjYzkuLmQ3ZmI4
MTE4YmExMDE2ODk2NWU0ZWZlMGIyODA3M2MzODNlYzQyODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTQyLDExICs0Miw2IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCi0vLyBBdHRyaWJ1dGVzCi0KLUpTQzo6RW5j
b2RlZEpTVmFsdWUganNQYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1i
b29sIHNldEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Ci0KIHVz
aW5nIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0
b3JOb3RDb25zdHJ1Y3RhYmxlPEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+OwogCiB0ZW1wbGF0
ZTw+IEpTVmFsdWUgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yOjpwcm90b3R5
cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCkBAIC01Niw3ICs1MSw5IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKCiAKIHRl
bXBsYXRlPD4gdm9pZCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3I6OmluaXRp
YWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
IHsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgZ2xvYmFs
T2JqZWN0LmdldFByb3RvdHlwZURpcmVjdCh2bSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBhc09iamVjdChn
bG9iYWxPYmplY3QuZ2V0UHJvdG90eXBlRGlyZWN0KHZtKSk7CisgICAgcHJvdG90eXBlLT5wdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZSJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CkBA
IC02NSwyNCArNjIsMjMgQEAgdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNQYWludFdvcmts
ZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJQYWkKIAogLyogSGFzaCB0YWJs
ZSBmb3IgcHJvdG90eXBlICovCiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRl
eCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlUHJvdG90eXBlVGFibGVJbmRleFsyXSA9IHsKK3N0
YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlUHJvdG90eXBlVGFibGVJbmRleFsxXSA9IHsKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMCwg
LTEgfSwKIH07CiAKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGVQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKLSAgICB7ICJjb25zdHJ1Y3Rv
ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNQYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAwLCAwLCBOb0ludHJp
bnNpYywgeyAwLCAwIH0gfQogfTsKIAotc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlUHJvdG90eXBlVGFibGUgPSB7IDEsIDEsIHRydWUsIEpTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGU6OmluZm8oKSwgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlw
ZVRhYmxlVmFsdWVzLCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlUHJvdG90eXBlVGFibGVJbmRl
eCB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlUHJv
dG90eXBlVGFibGUgPSB7IDAsIDAsIGZhbHNlLCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjpp
bmZvKCksIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVQcm90b3R5cGVUYWJsZVZhbHVlcywgSlNQ
YWludFdvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlwZVRhYmxlSW5kZXggfTsKIGNvbnN0IENsYXNz
SW5mbyBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlUHJvdG90eXBlOjpzX2luZm8gPSB7ICJQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZSIsICZCYXNlOjpzX2luZm8sICZKU1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlUHJvdG90eXBlVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlwZSkgfTsKIAogdm9pZCBKU1BhaW50V29ya2xldEds
b2JhbFNjb3BlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZTo6aW5mbygpLCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlUHJv
dG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmNvbnN0cnVjdG9yLCBqc1VuZGVmaW5lZCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0NfVE9fU1RSSU5HX1RB
R19XSVRIT1VUX1RSQU5TSVRJT04oKTsKIH0KIApAQCAtMTA2LDI5ICsxMDIsNiBAQCBKU1ZhbHVl
IEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3Qg
SlNHbG9iYWxPYmplY3QqCiAgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxP
YmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNQYWludFdvcmts
ZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKLXsKLSAgICBWTSYg
dm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHlu
YW1pY0Nhc3Q8SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlwZSo+KHZtLCBKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGU6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3Rv
dHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKLX0KLQotYm9vbCBzZXRKU1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQotewot
ICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBl
ID0ganNEeW5hbWljQ2FzdDxKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlUHJvdG90eXBlKj4odm0s
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlw
ZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcg
YSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpKTsKLX0KLQogSlNDOjpJc29TdWJzcGFjZSogSlNQYWludFdvcmtsZXRHbG9iYWxTY29w
ZTo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQogewogICAgIGF1dG8mIGNsaWVudERhdGEg
PSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDQ0NGM2YTNkY2M5NGIwMDY5
MTBjMzkwN2NiNWNlM2QwYmRhZjI0NDMuLjQzNmYyZjE1OTRlZGQ0MDc2MmJhYzg2NTIyNWRjOTkz
ODdiMDJjYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcApA
QCAtNDIsMTEgKzQyLDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBK
U0M7CiAKLS8vIEF0dHJpYnV0ZXMKLQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1ib29sIHNldEpTU2VydmljZVdvcmtlckds
b2JhbFNjb3BlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwotCiB1c2luZyBKU1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+OwogCiB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6
Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQpAQCAtNTYsNyAr
NTEsOSBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25z
dHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKAogCiB0ZW1wbGF0ZTw+IHZvaWQgSlNTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0m
IHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBnbG9iYWxPYmplY3QuZ2V0UHJvdG90eXBl
RGlyZWN0KHZtKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pOworICAgIGF1dG8qIHByb3RvdHlwZSA9IGFzT2JqZWN0KGdsb2JhbE9iamVjdC5nZXRQcm90
b3R5cGVEaXJlY3Qodm0pKTsKKyAgICBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZSJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CkBAIC02NSwyNCArNjIsMjMgQEAg
dGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25z
dHJ1Y3Rvcjo6c19pbmZvID0geyAiU2UKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICov
CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZVByb3RvdHlwZVRhYmxlSW5kZXhbMl0gPSB7CitzdGF0aWMgY29uc3Qgc3RydWN0
IENvbXBhY3RIYXNoSW5kZXggSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGVUYWJs
ZUluZGV4WzFdID0gewogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAwLCAtMSB9LAogfTsKIAogCiBz
dGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVQcm90
b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAg
fSB9CiB9OwogCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlUHJvdG90eXBlVGFibGUgPSB7IDEsIDEsIHRydWUsIEpTU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlOjppbmZvKCksIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlVGFibGVWYWx1
ZXMsIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlVGFibGVJbmRleCB9Oworc3Rh
dGljIGNvbnN0IEhhc2hUYWJsZSBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZVRh
YmxlID0geyAwLCAwLCBmYWxzZSwgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmluZm8oKSwg
SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGVUYWJsZVZhbHVlcywgSlNTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGVUYWJsZUluZGV4IH07CiBjb25zdCBDbGFzc0luZm8g
SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZSIsICZCYXNlOjpzX2luZm8sICZKU1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZVByb3RvdHlwZVRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlKSB9OwogCiB2b2lkIEpTU2VydmljZVdvcmtlckds
b2JhbFNjb3BlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGU6OmluZm8oKSwgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVQ
cm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+Y29uc3RydWN0b3IsIGpzVW5kZWZpbmVkKCksIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIEpTQ19UT19TVFJJTkdf
VEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQogCkBAIC0xMDYsMjkgKzEwMiw2IEBAIEpTVmFs
dWUgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29u
c3QgSlNHbG9iYWxPYmplY3QqCiAgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQotewotICAg
IFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0g
anNEeW5hbWljQ2FzdDxKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZSo+KHZtLCBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTU2VydmljZVdvcmtlckds
b2JhbFNjb3BlOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
LCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7Ci19Ci0KLWJvb2wgc2V0SlNTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBw
cm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlUHJvdG90
eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFko
IXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBT
aGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogSlNDOjpJc29TdWJzcGFjZSogSlNTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGU6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKIHsKICAgICBhdXRvJiBj
bGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q0VSZWFjdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcAppbmRleCA0NjczM2E3ZDVlNzNhYThjNzhkMmFjOWY0
MWY3NjA2YzY4OTg5YTMxLi44NTcwMWY3NDhkYmI1YzFlOGM2OTkwN2Q4OGViNzRmYzBlZWFiZWRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q0VSZWFjdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAKQEAgLTU3LDggKzU3LDYgQEAgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENFUmVhY3Rpb25zUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoQ0UKIAogLy8gQXR0cmlidXRlcwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdENFUmVhY3Rpb25zQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLWJvb2wgc2V0SlNUZXN0Q0VSZWFjdGlv
bnNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENFUmVhY3Rp
b25zQXR0cmlidXRlV2l0aENFUmVhY3Rpb25zKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBib29sIHNldEpTVGVzdENFUmVhY3Rp
b25zQXR0cmlidXRlV2l0aENFUmVhY3Rpb25zKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0Q0VSZWFjdGlvbnNSZWZsZWN0QXR0cmlidXRlV2l0aENFUmVhY3Rpb25zKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CkBA
IC0xMTQsNyArMTEyLDkgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdENFUmVhY3Rpb25zQ29u
c3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJgogCiB0ZW1wbGF0ZTw+IHZv
aWQgSlNUZXN0Q0VSZWFjdGlvbnNDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0m
IHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RDRVJlYWN0aW9uczo6cHJvdG90
eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRl
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSk7CisgICAgYXV0byogcHJvdG90eXBlID0gSlNUZXN0Q0VSZWFjdGlvbnM6
OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBwcm90b3R5cGUtPnB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RDRVJlYWN0
aW9ucyJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CkBAIC0xMjUsNyArMTI1LDYg
QEAgdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0Q0VSZWFjdGlvbnNDb25zdHJ1Y3Rv
cjo6c19pbmZvID0geyAiVGVzdENFUmVhY3QKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVl
IEpTVGVzdENFUmVhY3Rpb25zUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29u
c3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENFUmVhY3Rpb25zQ29uc3RydWN0b3IpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RD
RVJlYWN0aW9uc0NvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAiYXR0cmlidXRlV2l0aENFUmVhY3Rp
b25zIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RDRVJlYWN0aW9uc0F0dHJpYnV0ZVdpdGhDRVJlYWN0aW9ucyksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdENFUmVh
Y3Rpb25zQXR0cmlidXRlV2l0aENFUmVhY3Rpb25zKSB9IH0sCiAgICAgeyAicmVmbGVjdEF0dHJp
YnV0ZVdpdGhDRVJlYWN0aW9ucyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0Q0VSZWFjdGlvbnNSZWZsZWN0QXR0cmlidXRlV2l0aENF
UmVhY3Rpb25zKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNUZXN0Q0VSZWFjdGlvbnNSZWZsZWN0QXR0cmlidXRlV2l0aENFUmVhY3Rp
b25zKSB9IH0sCiAgICAgeyAic3RyaW5naWZpZXJBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENFUmVhY3Rpb25zU3Ry
aW5naWZpZXJBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyQXR0cmlidXRl
KSB9IH0sCkBAIC0xNDEsNiArMTQwLDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpTVGVzdENFUmVhY3Rp
b25zUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0Q0VSZWFjdGlvbnMiLCAmQmFzZToKIHZvaWQg
SlNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5jb25zdHJ1Y3RvciwganNVbmRlZmluZWQoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcmVpZnlTdGF0aWNQcm9w
ZXJ0aWVzKHZtLCBKU1Rlc3RDRVJlYWN0aW9uczo6aW5mbygpLCBKU1Rlc3RDRVJlYWN0aW9uc1By
b3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7CiAgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9V
VF9UUkFOU0lUSU9OKCk7CiB9CkBAIC0xOTIsMjkgKzE5Miw2IEBAIHRlbXBsYXRlPD4gaW5saW5l
IEpTVGVzdENFUmVhY3Rpb25zKiBJRExPcGVyYXRpb248SlNUZXN0Q0VSZWFjdGlvbnM+OjpjYXN0
KEpTR2xvCiAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q0VSZWFjdGlvbnMqPihKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUganNUZXN0Q0VSZWFjdGlvbnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBh
dXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdENFUmVhY3Rpb25zUHJvdG90eXBl
Kj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXBy
b3RvdHlwZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0Q0VS
ZWFjdGlvbnM6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCks
IHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKLX0KLQotYm9vbCBzZXRKU1Rlc3RDRVJlYWN0
aW9uc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKLXsKLSAg
ICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWlu
IGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwot
fQotCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0Q0VSZWFjdGlvbnNBdHRyaWJ1dGVXaXRo
Q0VSZWFjdGlvbnNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
VGVzdENFUmVhY3Rpb25zJiB0aGlzT2JqZWN0KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNT
dHJpbmdpZmllci5jcHAKaW5kZXggZGUxOTRkNDU1MzUzZGNjZDg5NmE4ODM1Mjc3NjQwNDc3M2Ew
YzFiZS4uZjk1M2JhNmRjOWFhNWYyZGQ0MGZkOTE3M2Q2MThkYWE5NzdmNWZmMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rp
b25zU3RyaW5naWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcApAQCAtNTIsOCArNTIsNiBA
QCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q0VSZWFjdGlvbnNTdHJp
bmdpZmllclByb3RvdHlwZUZ1bmN0aW9uVAogCiAvLyBBdHRyaWJ1dGVzCiAKLUpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllckNvbnN0cnVjdG9yKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1i
b29sIHNldEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJDb25zdHJ1Y3RvcihKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJWYWx1ZShKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
OwogYm9vbCBzZXRKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyVmFsdWUoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyVmFsdWVXaXRob3V0
UmVhY3Rpb25zKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7CkBAIC0xMDEsNyArOTksOSBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNU
ZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllckNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1
cgogCiB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllckNvbnN0cnVj
dG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCiB7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUsIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2Jq
ZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwor
ICAgIGF1dG8qIHByb3RvdHlwZSA9IEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI6OnByb3Rv
dHlwZSh2bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RDRVJlYWN0aW9uc1N0
cmluZ2lmaWVyIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KQEAgLTExMiw3ICsx
MTIsNiBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RDRVJlYWN0aW9uc1N0cmlu
Z2lmaWVyQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIgogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxl
VmFsdWUgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclByb3RvdHlwZVRhYmxlVmFsdWVzW10g
PQogewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RDRVJlYWN0aW9uc1N0cmlu
Z2lmaWVyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyQ29uc3RydWN0
b3IpIH0gfSwKICAgICB7ICJ2YWx1ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclZhbHVlKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclZhbHVlKSB9IH0sCiAgICAgeyAidmFsdWVXaXRo
b3V0UmVhY3Rpb25zIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyVmFsdWVXaXRob3V0UmVhY3Rp
b25zKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclZhbHVlV2l0aG91dFJlYWN0aW9ucykg
fSB9LAogICAgIHsgInRvU3RyaW5nIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90
eXBlRnVuY3Rpb25Ub1N0cmluZyksIChpbnRwdHJfdCkgKDApIH0gfSwKQEAgLTEyMyw2ICsxMjIs
NyBAQCBjb25zdCBDbGFzc0luZm8gSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclByb3RvdHlw
ZTo6c19pbmZvID0geyAiVGVzdENFUmVhY3Rpbwogdm9pZCBKU1Rlc3RDRVJlYWN0aW9uc1N0cmlu
Z2lmaWVyUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29u
c3RydWN0b3IsIGpzVW5kZWZpbmVkKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwg
SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcjo6aW5mbygpLCBKU1Rlc3RDRVJlYWN0aW9uc1N0
cmluZ2lmaWVyUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKICAgICBKU0NfVE9fU1RSSU5H
X1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKIH0KQEAgLTE3NCwyOSArMTc0LDYgQEAgdGVtcGxh
dGU8PiBpbmxpbmUgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllciogSURMT3BlcmF0aW9uPEpT
VGVzdENFUmVhY3Rpb25zU3QKICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RDRVJlYWN0
aW9uc1N0cmluZ2lmaWVyKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxG
cmFtZS50aGlzVmFsdWUoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdENFUmVhY3Rpb25z
U3RyaW5naWZpZXJDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCi17Ci0gICAgVk0mIHZt
ID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQcm90b3R5cGUqPih2bSwgSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RDRVJlYWN0aW9uc1N0cmlu
Z2lmaWVyOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBw
cm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7Ci19Ci0KLWJvb2wgc2V0SlNUZXN0Q0VSZWFjdGlv
bnNTdHJpbmdpZmllckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHBy
b3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclByb3Rv
dHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZ
KCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8g
U2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5w
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RDRVJl
YWN0aW9uc1N0cmluZ2lmaWVyVmFsdWVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXImIHRoaXNPYmplY3QpCiB7CiAg
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJh
Y2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
YWxsVHJhY2VyLmNwcAppbmRleCA0MGMzNDM3MzAyMzQ3MzdhOTc2YTc2ODUxYzE4NGU2Njg2M2Q1
NTMwLi4wNWM1MjkyNjBiMGI3Zjk5MDc2NmUyMDEyYjE1YTkwMGE5NWI5NTE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dENhbGxUcmFjZXIuY3BwCkBAIC02Nyw4ICs2Nyw2IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9u
CiAKIC8vIEF0dHJpYnV0ZXMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDYWxsVHJhY2Vy
Q29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6UHJvcGVydHlOYW1lKTsKLWJvb2wgc2V0SlNUZXN0Q2FsbFRyYWNlckNvbnN0cnVjdG9yKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1Zh
bHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q2FsbFRyYWNlclRlc3RBdHRyaWJ1dGVJ
bnRlcmZhY2UoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
UHJvcGVydHlOYW1lKTsKIGJvb2wgc2V0SlNUZXN0Q2FsbFRyYWNlclRlc3RBdHRyaWJ1dGVJbnRl
cmZhY2UoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDYWxsVHJhY2VyVGVzdEF0
dHJpYnV0ZVNwZWNpZmllZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwpAQCAtMTI4LDcgKzEyNiw5IEBAIHRlbXBsYXRlPD4gSlNW
YWx1ZSBKU1Rlc3RDYWxsVHJhY2VyQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShK
U0M6OlZNJiB2CiAKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RDYWxsVHJhY2VyQ29uc3RydWN0b3I6
OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKIHsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwg
SlNUZXN0Q2FsbFRyYWNlcjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CisgICAgYXV0byogcHJvdG90
eXBlID0gSlNUZXN0Q2FsbFRyYWNlcjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpOworICAg
IHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvciwg
dGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHBy
b3RvdHlwZSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
OwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFs
U3RyaW5nKHZtLCAiVGVzdENhbGxUcmFjZXIiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
OwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0Q2FsbFRyYWNlcjo6aW5mbygp
LCBKU1Rlc3RDYWxsVHJhY2VyQ29uc3RydWN0b3JUYWJsZVZhbHVlcywgKnRoaXMpOwpAQCAtMTQw
LDcgKzE0MCw2IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdENhbGxUcmFjZXJD
b25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdENhbGxUcmFjCiAKIHN0YXRpYyBjb25zdCBIYXNo
VGFibGVWYWx1ZSBKU1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0g
ICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENhbGxUcmFjZXJDb25zdHJ1Y3Rvciks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTVGVzdENhbGxUcmFjZXJDb25zdHJ1Y3RvcikgfSB9LAogICAgIHsgInRlc3RBdHRyaWJ1dGVJ
bnRlcmZhY2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdENhbGxUcmFjZXJUZXN0QXR0cmlidXRlSW50ZXJmYWNlKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0Q2Fs
bFRyYWNlclRlc3RBdHRyaWJ1dGVJbnRlcmZhY2UpIH0gfSwKICAgICB7ICJ0ZXN0QXR0cmlidXRl
U3BlY2lmaWVkIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3RDYWxsVHJhY2VyVGVzdEF0dHJpYnV0ZVNwZWNpZmllZCksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdENh
bGxUcmFjZXJUZXN0QXR0cmlidXRlU3BlY2lmaWVkKSB9IH0sCiAgICAgeyAidGVzdEF0dHJpYnV0
ZVdpdGhWYXJpYW50Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1Rlc3RDYWxsVHJhY2VyVGVzdEF0dHJpYnV0ZVdpdGhWYXJpYW50KSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNU
ZXN0Q2FsbFRyYWNlclRlc3RBdHRyaWJ1dGVXaXRoVmFyaWFudCkgfSB9LApAQCAtMTYxLDYgKzE2
MCw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlOjpzX2luZm8g
PSB7ICJUZXN0Q2FsbFRyYWNlciIsICZCYXNlOjpzCiB2b2lkIEpTVGVzdENhbGxUcmFjZXJQcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bih2bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvciwg
anNVbmRlZmluZWQoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSk7CiAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RDYWxs
VHJhY2VyOjppbmZvKCksIEpTVGVzdENhbGxUcmFjZXJQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRo
aXMpOwogICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQpAQCAt
MjEyLDI5ICsyMTIsNiBAQCB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RDYWxsVHJhY2VyKiBJRExP
cGVyYXRpb248SlNUZXN0Q2FsbFRyYWNlcj46OmNhc3QoSlNHbG9iYQogICAgIHJldHVybiBqc0R5
bmFtaWNDYXN0PEpTVGVzdENhbGxUcmFjZXIqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0
Q2FsbFRyYWNlckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKLXsKLSAgICBWTSYgdm0g
PSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdENhbGxUcmFjZXI6OmdldENvbnN0cnVjdG9yKEpT
Qzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkp
KTsKLX0KLQotYm9vbCBzZXRKU1Rlc3RDYWxsVHJhY2VyQ29uc3RydWN0b3IoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDYWxsVHJh
Y2VyUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAo
VU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90
b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
VGVzdENhbGxUcmFjZXJUZXN0QXR0cmlidXRlSW50ZXJmYWNlR2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RDYWxsVHJhY2VyJiB0aGlzT2JqZWN0KQogewog
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAppbmRl
eCBiYjQzYjVlMjg3OTI3Zjk2ZmZjNWExMmE5ZTBlOGIyNTE0NDBkM2MyLi4wZTRmZmQ2MjI4MjEw
ZmFiZTI1NDJiOTViM2FlYjlkMDRlMDkyMWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKQEAgLTQzLDExICs0Myw2IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCi0vLyBBdHRyaWJ1dGVz
Ci0KLUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0
b3JDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpQcm9wZXJ0eU5hbWUpOwotYm9vbCBzZXRKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3RvckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKLQogY2xhc3MgSlNUZXN0Q2xhc3NXaXRoSlNCdWls
dGluQ29uc3RydWN0b3JQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2Jq
ZWN0IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwpA
QCAtOTAsNyArODUsOSBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0Q2xhc3NXaXRoSlNCdWls
dGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yUwogCiB0ZW1wbGF0ZTw+IHZv
aWQgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6aW5pdGlh
bGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQog
ewotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RD
bGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3Qp
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CisgICAg
YXV0byogcHJvdG90eXBlID0gSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I6OnBy
b3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RDbGFzc1dpdGhK
U0J1aWx0aW5Db25zdHJ1Y3RvciJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CkBA
IC0xMDMsMTggKzEwMCwxMiBAQCB0ZW1wbGF0ZTw+IEZ1bmN0aW9uRXhlY3V0YWJsZSogSlNUZXN0
Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6aQogdGVtcGxhdGU8PiBj
b25zdCBDbGFzc0luZm8gSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1
Y3Rvcjo6c19pbmZvID0geyAiVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yIiwgJkJh
c2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RD
bGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRh
YmxlIGZvciBwcm90b3R5cGUgKi8KLQotc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVz
dENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9Ci17
Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNv
bnN0cnVjdG9yQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rv
ckNvbnN0cnVjdG9yKSB9IH0sCi19OwotCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0Q2xhc3NXaXRo
SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RDbGFzc1dpdGhK
U0J1aWx0aW5Db25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JQcm90
b3R5cGUpIH07CiAKIHZvaWQgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JQcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bih2bSk7Ci0gICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RDbGFzc1dpdGhKU0J1
aWx0aW5Db25zdHJ1Y3Rvcjo6aW5mbygpLCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1
Y3RvclByb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwganNVbmRlZmluZWQoKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgSlNDX1RPX1NU
UklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CiAKQEAgLTE1NSwyOSArMTQ2LDYgQEAg
dm9pZCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6ZGVzdHJveShKU0M6OkpT
Q2VsbCogY2VsbCkKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3Rvcjo6fkpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yKCk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIGpzVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0
b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9y
OjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5
cGUtPmdsb2JhbE9iamVjdCgpKSk7Ci19Ci0KLWJvb2wgc2V0SlNUZXN0Q2xhc3NXaXRoSlNCdWls
dGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBw
cm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVj
dG9yUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAo
VU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90
b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0
Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2
bSkKIHsKICAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRh
Kj4odm0uY2xpZW50RGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5j
cHAKaW5kZXggM2JkZWNkMTg3MmY3MTE5ODY2ZmI5OGUwNmQ3OTM2OTcwODk1ZWU5OC4uODc0OTdh
OGE3OGU3ZGJmZGMzOTk5MjA2YzQyNTEwZmMxMWU0YjU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
b25kaXRpb25hbEluY2x1ZGVzLmNwcApAQCAtODYsOCArODYsNiBAQCBKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0
aW9uUGFydAogCiAvLyBBdHRyaWJ1dGVzCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q29u
ZGl0aW9uYWxJbmNsdWRlc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdENvbmRpdGlv
bmFsSW5jbHVkZXNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dENvbmRpdGlvbmFsSW5jbHVkZXNUZXN0QXR0cihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogI2lmIEVOQUJMRShDb25kaXRpb24y
MikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzTWl4aW5SZWFkT25seUF0dHJpYnV0ZShKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwpAQCAtMTgxLDcgKzE3
OSw5IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzQ29uc3Ry
dWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKCiAKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RD
b25kaXRpb25hbEluY2x1ZGVzQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2
bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlczo6
cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSk7CisgICAgYXV0byogcHJvdG90eXBlID0gSlNUZXN0Q29uZGl0
aW9uYWxJbmNsdWRlczo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpOworICAgIHByb3RvdHlw
ZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Cisg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZSwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZt
LCAiVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
OwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
czo6aW5mbygpLCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzQ29uc3RydWN0b3JUYWJsZVZhbHVl
cywgKnRoaXMpOwpAQCAtMTkzLDcgKzE5Myw2IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZv
IEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzCiAK
IHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJv
dG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdENvbmRpdGlvbmFsSW5jbHVkZXNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdENvbmRpdGlvbmFsSW5j
bHVkZXNDb25zdHJ1Y3RvcikgfSB9LAogICAgIHsgInRlc3RBdHRyIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNUZXN0QXR0ciksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwK
ICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKICAgICB7ICJt
aXhpblJlYWRPbmx5QXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdENvbmRpdGlvbmFsSW5jbHVkZXNNaXhpblJlYWRPbmx5QXR0cmlidXRlKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LApAQCAt
Mjc3LDYgKzI3Niw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVz
UHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0Q29uZGl0aW9uYWxJCiB2b2lkIEpTVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5jb25zdHJ1Y3RvciwganNVbmRlZmluZWQoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0
aWVzKHZtLCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzOjppbmZvKCksIEpTVGVzdENvbmRpdGlv
bmFsSW5jbHVkZXNQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwogICAgIGJvb2wgaGFzRGlz
YWJsZWRSdW50aW1lUHJvcGVydGllcyA9IGZhbHNlOwogI2lmIChFTkFCTEUoQ29uZGl0aW9uMTIp
ICYmIEVOQUJMRShDb25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRpb24yMykKQEAgLTQzOSwy
OSArNDM5LDYgQEAgdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyog
SURMT3BlcmF0aW9uPEpTVGVzdENvbmRpdGlvbmFsSW5jbHUKICAgICByZXR1cm4ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpz
VGVzdENvbmRpdGlvbmFsSW5jbHVkZXNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCi17
Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5
cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGUqPih2
bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90
eXBlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RDb25kaXRp
b25hbEluY2x1ZGVzOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7Ci19Ci0KLWJvb2wgc2V0SlNUZXN0Q29u
ZGl0aW9uYWxJbmNsdWRlc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwot
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8q
IHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3Rv
dHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZ
KCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8g
U2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5w
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzVGVzdEF0dHJHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMmIHRoaXNPYmplY3QpCiB7CiAgICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5j
cHAKaW5kZXggNTk3Zjc2ZjRlMzgyMmZmYjk1OGI2OWI2OGM3MTllZjIxNTJjMTk3Mi4uODJkZTBh
Y2I5YjcxZGIxMTAxNGZhZTk5N2IyODE2N2ZlMGYxZjkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKQEAg
LTcyLDggKzcyLDYgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIGpzVGVzdERP
TUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudHNCeU5hbWUKIAogLy8gQXR0cmlidXRlcwog
Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVENvbnN0cnVjdG9yKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1ib29s
IHNldEpTVGVzdERPTUpJVENvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0RE9NSklUQW55QXR0cihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01K
SVRCb29sZWFuQXR0cihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpQcm9wZXJ0eU5hbWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRCeXRl
QXR0cihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpOwpAQCAtNTExLDcgKzUwOSw5IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RE
T01KSVRDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjCiAK
IHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RET01KSVRDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3Bl
cnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RET01KSVQ6OnBy
b3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pOworICAgIGF1dG8qIHByb3RvdHlwZSA9IEpTVGVzdERPTUpJVDo6
cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpOworICAgIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdERPTUpJVCJf
cyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CkBAIC01MjIsNyArNTIyLDYgQEAgdGVt
cGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0RE9NSklUQ29uc3RydWN0b3I6OnNfaW5mbyA9
IHsgIlRlc3RET01KSVQiLCAmQmEKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVz
dERPTUpJVFByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewotICAgIHsgImNvbnN0cnVjdG9yIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3RET01KSVRDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdERPTUpJVENvbnN0cnVjdG9y
KSB9IH0sCiAgICAgeyAiYW55QXR0ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NSklUQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PGNvbnN0IEpTQzo6RE9NSklUOjpHZXR0ZXJT
ZXR0ZXIqPigmRE9NSklUQXR0cmlidXRlRm9yVGVzdERPTUpJVEFueUF0dHIpLCAoaW50cHRyX3Qp
ICgwKSB9IH0sCiAgICAgeyAiYm9vbGVhbkF0dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUpJVEF0dHJpYnV0ZSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxjb25zdCBKU0M6OkRPTUpJVDo6
R2V0dGVyU2V0dGVyKj4oJkRPTUpJVEF0dHJpYnV0ZUZvclRlc3RET01KSVRCb29sZWFuQXR0ciks
IChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJieXRlQXR0ciIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NSklUQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PGNvbnN0IEpTQzo6
RE9NSklUOjpHZXR0ZXJTZXR0ZXIqPigmRE9NSklUQXR0cmlidXRlRm9yVGVzdERPTUpJVEJ5dGVB
dHRyKSwgKGludHB0cl90KSAoMCkgfSB9LApAQCAtNTcwLDYgKzU2OSw3IEBAIGNvbnN0IENsYXNz
SW5mbyBKU1Rlc3RET01KSVRQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RET01KSVQiLCAmQmFz
ZTo6c19pbmZvLCBuCiB2b2lkIEpTVGVzdERPTUpJVFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBwdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBqc1VuZGVmaW5lZCgpLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBy
ZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU1Rlc3RET01K
SVRQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwogICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJ
VEhPVVRfVFJBTlNJVElPTigpOwogfQpAQCAtNjE1LDI5ICs2MTUsNiBAQCB0ZW1wbGF0ZTw+IGlu
bGluZSBKU1Rlc3RET01KSVQqIElETE9wZXJhdGlvbjxKU1Rlc3RET01KSVQ+OjpjYXN0KEpTR2xv
YmFsT2JqZWN0JgogICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdERPTUpJVCo+KEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBw
cm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdERPTUpJVFByb3RvdHlwZSo+KHZtLCBKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdERPTUpJVDo6Z2V0Q29u
c3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9i
YWxPYmplY3QoKSkpOwotfQotCi1ib29sIHNldEpTVGVzdERPTUpJVENvbnN0cnVjdG9yKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZN
KGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
RE9NSklUUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBp
ZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBw
cm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzVGVzdERPTUpJVEFueUF0dHJHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTVGVzdERPTUpJVCYgdGhpc09iamVjdCkKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERvbWFpblNlY3VyaXR5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REb21haW5TZWN1cml0eS5j
cHAKaW5kZXggYjVjNTg5MzY4Mjc1MTJjYjZkYjhmZDQwMjg0OGQzMWQ4YWQxMjBlOS4uMjVhMmY1
ZjliMGM5ZTIwZmYxNjAwZjI5ZWRkMGMwZWQxNjNmZDg4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERvbWFpblNlY3VyaXR5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RG9tYWlu
U2VjdXJpdHkuY3BwCkBAIC01OCw4ICs1OCw2IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3REb21haW5TZWN1cml0eVByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlCiAK
IC8vIEF0dHJpYnV0ZXMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3REb21haW5TZWN1cml0
eUNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdERvbWFpblNlY3VyaXR5Q29uc3RydWN0
b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3REb21haW5TZWN1cml0eUV4Y2l0
aW5nQXR0cihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOwogCiBjbGFzcyBKU1Rlc3REb21haW5TZWN1cml0eVByb3RvdHlwZSBmaW5h
bCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewpAQCAtMTE4LDcgKzExNiw5IEBAIHRl
bXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3REb21haW5TZWN1cml0eUNvbnN0cnVjdG9yOjpwcm90b3R5
cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWCiAKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3REb21haW5TZWN1
cml0eUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5wcm90b3R5cGUsIEpTVGVzdERvbWFpblNlY3VyaXR5Ojpwcm90b3R5cGUodm0sIGdsb2Jh
bE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KTsKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBKU1Rlc3REb21haW5TZWN1cml0eTo6cHJvdG90eXBl
KHZtLCBnbG9iYWxPYmplY3QpOworICAgIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdERvbWFpblNlY3VyaXR5Il9z
KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5n
dGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KQEAgLTEyOSw3ICsxMjksNiBAQCB0ZW1w
bGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3REb21haW5TZWN1cml0eUNvbnN0cnVjdG9yOjpz
X2luZm8gPSB7ICJUZXN0RG9tYQogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0
RG9tYWluU2VjdXJpdHlQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKLSAgICB7ICJjb25zdHJ1
Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0RG9tYWluU2VjdXJpdHlDb25zdHJ1Y3RvciksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdERv
bWFpblNlY3VyaXR5Q29uc3RydWN0b3IpIH0gfSwKICAgICB7ICJleGNpdGluZ0Z1bmN0aW9uIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihq
c1Rlc3REb21haW5TZWN1cml0eVByb3RvdHlwZUZ1bmN0aW9uRXhjaXRpbmdGdW5jdGlvbiksIChp
bnRwdHJfdCkgKDEpIH0gfSwKICAgICB7ICJwb3N0TWVzc2FnZSIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0RG9tYWluU2VjdXJp
dHlQcm90b3R5cGVGdW5jdGlvblBvc3RNZXNzYWdlKSwgKGludHB0cl90KSAoMSkgfSB9LAogICAg
IHsgIm92ZXJsb2FkZWRNZXRob2QiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdERvbWFpblNlY3VyaXR5UHJvdG90eXBlRnVuY3Rp
b25PdmVybG9hZGVkTWV0aG9kKSwgKGludHB0cl90KSAoMSkgfSB9LApAQCAtMTQwLDYgKzEzOSw3
IEBAIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3REb21haW5TZWN1cml0eVByb3RvdHlwZTo6c19pbmZv
ID0geyAiVGVzdERvbWFpblNlY3VyaXR5IiwKIHZvaWQgSlNUZXN0RG9tYWluU2VjdXJpdHlQcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bih2bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvciwg
anNVbmRlZmluZWQoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSk7CiAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3REb21h
aW5TZWN1cml0eTo6aW5mbygpLCBKU1Rlc3REb21haW5TZWN1cml0eVByb3RvdHlwZVRhYmxlVmFs
dWVzLCAqdGhpcyk7CiAgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7
CiB9CkBAIC0xOTEsMjkgKzE5MSw2IEBAIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdERvbWFpblNl
Y3VyaXR5KiBJRExPcGVyYXRpb248SlNUZXN0RG9tYWluU2VjdXJpdHk+OjpjYXN0CiAgICAgcmV0
dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0RG9tYWluU2VjdXJpdHkqPihKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUganNUZXN0RG9tYWluU2VjdXJpdHlDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
Ci17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90
b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdERvbWFpblNlY3VyaXR5UHJvdG90eXBlKj4odm0s
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlw
ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0RG9tYWluU2Vj
dXJpdHk6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHBy
b3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKLX0KLQotYm9vbCBzZXRKU1Rlc3REb21haW5TZWN1
cml0eUNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKLXsKLSAg
ICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RG9tYWluU2VjdXJpdHlQcm90b3R5cGUqPih2bSwgSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewot
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUp
OwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0
LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkp
OwotfQotCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RG9tYWluU2VjdXJpdHlFeGNpdGlu
Z0F0dHJHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdERv
bWFpblNlY3VyaXR5JiB0aGlzT2JqZWN0KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAK
aW5kZXggZWU0NzI2NDUyMTJkZDJmNzY2Y2ZlMDA5ZmQ0MDI4ZmIyNGE0NDJmYi4uYmM4ZWU1MGEz
NjZlMTNjMzkyZDNjZmNlODQ3ZmI2NTQ0NmY0ODk1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVk
QnlTZXR0aW5nLmNwcApAQCAtNTcsOCArNTcsNiBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZAog
CiAvLyBBdHRyaWJ1dGVzCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RW5hYmxlZEJ5U2V0
dGluZ0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdEVuYWJsZWRCeVNldHRpbmdDb25z
dHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEVuYWJsZWRCeVNldHRp
bmdUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBib29sIHNldEpT
VGVzdEVuYWJsZWRCeVNldHRpbmdUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9y
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRK
U1ZhbHVlKTsKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQpAQCAtMTE0LDcgKzExMiw5IEBAIHRl
bXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3I6OnByb3Rv
dHlwZUZvclN0cnVjdHVyZShKU0M6CiAKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RFbmFibGVkQnlT
ZXR0aW5nQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZzo6cHJvdG90eXBlKHZtLCBn
bG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSk7CisgICAgYXV0byogcHJvdG90eXBlID0gSlNUZXN0RW5hYmxlZEJ5U2V0dGluZzo6cHJv
dG90eXBlKHZtLCBnbG9iYWxPYmplY3QpOworICAgIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZSwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdEVuYWJsZWRCeVNl
dHRpbmciX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQpAQCAtMTI1LDcgKzEyNSw2
IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdDb25z
dHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdEVuCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1
ZSBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAg
eyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3Rv
ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTVGVzdEVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvcikgfSB9LAogI2lmIEVOQUJMRShU
RVNUX0ZFQVRVUkUpCiAgICAgeyAiZW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZSIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RW5hYmxl
ZEJ5U2V0dGluZ0VuYWJsZWRCeVNldHRpbmdBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RFbmFibGVkQnlTZXR0
aW5nRW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZSkgfSB9LAogI2Vsc2UKQEAgLTE0OSw2ICsxNDgs
NyBAQCBjb25zdCBDbGFzc0luZm8gSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZTo6c19p
bmZvID0geyAiVGVzdEVuYWJsZWRCeVNldHRpbgogdm9pZCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5n
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0
b3IsIGpzVW5kZWZpbmVkKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSkpOwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0
RW5hYmxlZEJ5U2V0dGluZzo6aW5mbygpLCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBl
VGFibGVWYWx1ZXMsICp0aGlzKTsKICAgICBib29sIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRp
ZXMgPSBmYWxzZTsKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQpAQCAtMjM5LDI5ICsyMzksNiBA
QCB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nKiBJRExPcGVyYXRpb248
SlNUZXN0RW5hYmxlZEJ5U2V0dGluZz46OgogICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVz
dEVuYWJsZWRCeVNldHRpbmcqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2Fs
bEZyYW1lLnRoaXNWYWx1ZSgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0RW5hYmxlZEJ5
U2V0dGluZ0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKLXsKLSAgICBWTSYgdm0gPSBK
U0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdEVuYWJsZWRCeVNldHRpbmc6OmdldENvbnN0
cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFs
T2JqZWN0KCkpKTsKLX0KLQotYm9vbCBzZXRKU1Rlc3RFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0
b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQotewotICAgIFZNJiB2bSA9IEpT
Qzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1
Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEVuYWJsZWRCeVNldHRpbmdUZXN0U3ViT2JqRW5hYmxl
ZEJ5U2V0dGluZ0NvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nJiB0aGlzT2JqZWN0KQogewogICAgIFVOVVNF
RF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkRm9yQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZvckNv
bnRleHQuY3BwCmluZGV4IDNkZWIwMGM0ZDUzMGYyNTI5ZmU1MmVlOTRlYTNmZGJhYzBhOGFkNGEu
LmFlMjUwZWRlZmY4ZjY0NzM0ZDk3ODQ1NDdjYjAyODI5NzIxNmY1ZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkRm9yQ29u
dGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEVuYWJsZWRGb3JDb250ZXh0LmNwcApAQCAtNDgsOCArNDgsNiBAQCB1c2luZyBuYW1lc3Bh
Y2UgSlNDOwogCiAvLyBBdHRyaWJ1dGVzCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RW5h
YmxlZEZvckNvbnRleHRDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotYm9vbCBzZXRKU1Rlc3RFbmFibGVkRm9y
Q29udGV4dENvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RW5h
YmxlZEZvckNvbnRleHRUZXN0U3ViT2JqRW5hYmxlZEZvckNvbnRleHRDb25zdHJ1Y3RvcihKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
OwogYm9vbCBzZXRKU1Rlc3RFbmFibGVkRm9yQ29udGV4dFRlc3RTdWJPYmpFbmFibGVkRm9yQ29u
dGV4dENvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIApAQCAtOTUsNyArOTMsOSBAQCB0ZW1wbGF0ZTw+IEpT
VmFsdWUgSlNUZXN0RW5hYmxlZEZvckNvbnRleHRDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3Ry
dWN0dXJlKEpTQwogCiB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0RW5hYmxlZEZvckNvbnRleHRDb25z
dHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0KQogewotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJv
dG90eXBlLCBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dDo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmpl
Y3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Cisg
ICAgYXV0byogcHJvdG90eXBlID0gSlNUZXN0RW5hYmxlZEZvckNvbnRleHQ6OnByb3RvdHlwZSh2
bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RFbmFibGVkRm9yQ29udGV4dCJf
cyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CkBAIC0xMDMsMTggKzEwMywxMiBAQCB0
ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0RW5hYmxlZEZvckNvbnRleHRDb25zdHJ1Y3Rvcjo6aW5pdGlh
bGl6ZVByb3BlcnRpZXMoVk0mIHZtLAogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0
RW5hYmxlZEZvckNvbnRleHRDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdEVuYWJsZWRGb3JD
b250ZXh0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU1Rlc3RFbmFibGVkRm9yQ29udGV4dENvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRh
YmxlIGZvciBwcm90b3R5cGUgKi8KLQotc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVz
dEVuYWJsZWRGb3JDb250ZXh0UHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9Ci17Ci0gICAgeyAiY29u
c3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEVuYWJsZWRGb3JDb250ZXh0Q29uc3RydWN0b3IpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U1Rlc3RFbmFibGVkRm9yQ29udGV4dENvbnN0cnVjdG9yKSB9IH0sCi19OwotCiBjb25zdCBDbGFz
c0luZm8gSlNUZXN0RW5hYmxlZEZvckNvbnRleHRQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RF
bmFibGVkRm9yQ29udGV4dCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSlNUZXN0RW5hYmxlZEZvckNvbnRleHRQcm90b3R5cGUpIH07CiAKIHZv
aWQgSlNUZXN0RW5hYmxlZEZvckNvbnRleHRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgcmVpZnlTdGF0aWNQcm9w
ZXJ0aWVzKHZtLCBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dDo6aW5mbygpLCBKU1Rlc3RFbmFibGVk
Rm9yQ29udGV4dFByb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7CisgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwganNVbmRlZmluZWQoKSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgSlND
X1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CiAKQEAgLTE2MiwyOSArMTU2
LDYgQEAgdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQqIElETEF0dHJp
YnV0ZTxKU1Rlc3RFbmFibGVkRm9yQ29udGV4dD4KICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxK
U1Rlc3RFbmFibGVkRm9yQ29udGV4dCo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
LCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVz
dEVuYWJsZWRGb3JDb250ZXh0Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQotewotICAg
IFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RFbmFibGVkRm9yQ29udGV4dFByb3RvdHlwZSo+KHZtLCBKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdEVuYWJsZWRGb3JDb250
ZXh0OjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90
b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7Ci19Ci0KLWJvb2wgc2V0SlNUZXN0RW5hYmxlZEZvckNv
bnRleHRDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCi17Ci0g
ICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0UHJvdG90eXBlKj4odm0sIEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkp
IHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBi
dWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpKTsKLX0KLQogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEVuYWJsZWRGb3JDb250ZXh0
VGVzdFN1Yk9iakVuYWJsZWRGb3JDb250ZXh0Q29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0JiB0aGlzT2Jq
ZWN0KQogewogICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENv
bnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAppbmRleCAxNTA4ZDM1ZjBjZGNhNDY5YjljYzI5Zjdi
ZDIyYTliOTBmNjJhOGQ4Li5jMWFhOTkzNjZjNTBkM2YxNmRjNmUwNTRhNDFiNjQ4NjEyYWI5MDk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCkBAIC0xMjMsOCArMTIzLDYg
QEAgdGVtcGxhdGU8PiBUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6SW5pdCBjb252ZXJ0RGljdGlvbmFy
eTxUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6SW4KIAogLy8gQXR0cmlidXRlcwogCi1KU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotYm9vbCBz
ZXRKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9yQXR0cjEoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHIyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiAjaWYgRU5BQkxFKFNQRUNJ
QUxfRVZFTlQpCkBAIC0xOTYsNyArMTk0LDkgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEV2
ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzoKIAog
dGVtcGxhdGU8PiB2b2lkIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6aW5pdGlh
bGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQog
ewotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RF
dmVudENvbnN0cnVjdG9yOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBhdXRvKiBwcm90b3R5
cGUgPSBKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCk7
CisgICAgcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVj
dG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSwgcHJvdG90eXBlLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRy
aXZpYWxTdHJpbmcodm0sICJUZXN0RXZlbnRDb25zdHJ1Y3RvciJfcyksIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwog
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7CiB9CkBAIC0yMDcsNyArMjA3LDYgQEAgdGVtcGxhdGU8PiBjb25zdCBDbGFz
c0luZm8gSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0
RXYKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQ
cm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
ckNvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAiYXR0cjEiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNUZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHIxKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgImF0dHIy
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEV2ZW50Q29uc3RydWN0b3JB
dHRyMiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KDApIH0gfSwKICNpZiBFTkFCTEUoU1BFQ0lBTF9FVkVOVCkKQEAgLTIyMiw2ICsyMjEsNyBA
QCBjb25zdCBDbGFzc0luZm8gSlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZTo6c19pbmZv
ID0geyAiVGVzdEV2ZW50Q29uc3RydWN0bwogdm9pZCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJv
dG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24odm0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3Is
IGpzVW5kZWZpbmVkKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSkpOwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0RXZl
bnRDb25zdHJ1Y3Rvcjo6aW5mbygpLCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlVGFi
bGVWYWx1ZXMsICp0aGlzKTsKICAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJ
T04oKTsKIH0KQEAgLTI2MiwyOSArMjYyLDYgQEAgdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RXZl
bnRDb25zdHJ1Y3RvciogSURMQXR0cmlidXRlPEpTVGVzdEV2ZW50Q29uc3RydWN0b3I+OjoKICAg
ICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yKj4oSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUganNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwot
ICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
clByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVO
TElLRUxZKCFwcm90b3R5cGUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVGVzdEV2ZW50Q29uc3RydWN0b3I6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKLX0KLQotYm9vbCBz
ZXRKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9i
amVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0g
ICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9y
UHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5M
SUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAg
ICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5
cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dEV2ZW50Q29uc3RydWN0b3JBdHRyMUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvciYgdGhpc09iamVjdCkKIHsKICAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRh
cmdldC5jcHAKaW5kZXggN2U2MTQ1NGZmNTlkZWU4N2ZjOTZiMTk2MjA3ODA4NWQ1YzRmNzMxMy4u
NGIwYjQ1MzQ4OTA2ZGE2YWZhM2JiZTI3MDNlOTdjZDJmMzczYWE1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZl
bnRUYXJnZXQuY3BwCkBAIC01MiwxMSArNTIsNiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RXZlbnRUYXJnZXRQcm90b3R5
cGVGdW5jdGlvbkl0ZW0oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAK
LS8vIEF0dHJpYnV0ZXMKLQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudFRhcmdldENv
bnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3IoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUpOwotCiBjbGFzcyBKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBK
U0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpT
Tm9uRmluYWxPYmplY3Q7CkBAIC05OCw3ICs5Myw5IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rl
c3RFdmVudFRhcmdldENvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYK
IAogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3I6OmluaXRpYWxp
emVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsK
LSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0RXZl
bnRUYXJnZXQ6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIGF1dG8qIHByb3RvdHlwZSA9IEpT
VGVzdEV2ZW50VGFyZ2V0Ojpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCk7CisgICAgcHJvdG90
eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsK
KyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBl
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmco
dm0sICJUZXN0RXZlbnRUYXJnZXQiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQpA
QCAtMTA5LDcgKzEwNiw2IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEV2ZW50
VGFyZ2V0Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RFdmVudFRhCiAKIHN0YXRpYyBjb25z
dCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZVRhYmxlVmFsdWVzW10g
PQogewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RFdmVudFRhcmdldENvbnN0
cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3RvcikgfSB9LAogICAgIHsgIml0ZW0i
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24p
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+
KGpzVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlRnVuY3Rpb25JdGVtKSwgKGludHB0cl90KSAoMSkg
fSB9LAogfTsKIApAQCAtMTE4LDYgKzExNCw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RFdmVu
dFRhcmdldFByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdEV2ZW50VGFyZ2V0IiwgJkJhc2U6CiB2
b2lkIEpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7
CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGpzVW5kZWZpbmVkKCksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIHJlaWZ5U3RhdGlj
UHJvcGVydGllcyh2bSwgSlNUZXN0RXZlbnRUYXJnZXQ6OmluZm8oKSwgSlNUZXN0RXZlbnRUYXJn
ZXRQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwogICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJ
VEhPVVRfVFJBTlNJVElPTigpOwogfQpAQCAtMjI2LDI5ICsyMjMsNiBAQCB0ZW1wbGF0ZTw+IGlu
bGluZSBKU1Rlc3RFdmVudFRhcmdldCogSURMT3BlcmF0aW9uPEpTVGVzdEV2ZW50VGFyZ2V0Pjo6
Y2FzdChKU0dsbwogICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50VGFyZ2V0Kj4o
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3IoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9i
amVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0g
ICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVudFRhcmdldFByb3Rv
dHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZ
KCFwcm90b3R5cGUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVz
dEV2ZW50VGFyZ2V0OjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7Ci19Ci0KLWJvb2wgc2V0SlNUZXN0RXZl
bnRUYXJnZXRDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCi17
Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5
cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlKj4odm0sIEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsK
LSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWls
dC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
KTsKLX0KLQogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2ZW50VGFy
Z2V0UHJvdG90eXBlRnVuY3Rpb25JdGVtQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVy
YXRpb248SlNUZXN0RXZlbnRUYXJnZXQ+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQogewog
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4
Y2VwdGlvbi5jcHAKaW5kZXggZTA3YjRlYTU3ZDVkOGM4Yjc0MzZkNGRjMDcwM2ZlMTlmYmFjN2Rj
Ny4uOTNhZTI1YTk4ODczZDFhMzZkMmU1ZDQ0NmQxNjk1ZTE3MmQ1Y2QzYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4
Y2VwdGlvbi5jcHAKQEAgLTQ2LDggKzQ2LDYgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8g
QXR0cmlidXRlcwogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEV4Y2VwdGlvbkNvbnN0cnVj
dG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RXhjZXB0aW9uTmFtZShKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogCiBjbGFzcyBKU1Rl
c3RFeGNlcHRpb25Qcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0
IHsKQEAgLTkyLDcgKzkwLDkgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEV4Y2VwdGlvbkNv
bnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0KIAogdGVtcGxhdGU8
PiB2b2lkIEpTVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhW
TSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdEV4Y2VwdGlvbjo6cHJvdG90
eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRl
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSk7CisgICAgYXV0byogcHJvdG90eXBlID0gSlNUZXN0RXhjZXB0aW9uOjpw
cm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCk7CisgICAgcHJvdG90eXBlLT5wdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0RXhjZXB0aW9u
Il9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5s
ZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KQEAgLTEwMyw3ICsxMDMsNiBAQCB0
ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3Rvcjo6c19p
bmZvID0geyAiVGVzdEV4Y2VwdGlvbgogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNU
ZXN0RXhjZXB0aW9uUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0
b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0RXhjZXB0aW9u
Q29uc3RydWN0b3IpIH0gfSwKICAgICB7ICJuYW1lIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdEV4Y2VwdGlvbk5hbWUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiB9OwogCkBAIC0xMTIsNiArMTExLDcg
QEAgY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZTo6c19pbmZvID0geyAi
VGVzdEV4Y2VwdGlvbiIsICZCYXNlOjpzX2kKIHZvaWQgSlNUZXN0RXhjZXB0aW9uUHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0p
OworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGpzVW5k
ZWZpbmVkKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSkpOwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0RXhjZXB0aW9u
OjppbmZvKCksIEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7CiAg
ICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CkBAIC0xNTgsMjkg
KzE1OCw2IEBAIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdEV4Y2VwdGlvbiogSURMQXR0cmlidXRl
PEpTVGVzdEV4Y2VwdGlvbj46OmNhc3QoSlNHbG9iYWxPCiAgICAgcmV0dXJuIGpzRHluYW1pY0Nh
c3Q8SlNUZXN0RXhjZXB0aW9uKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0RXhj
ZXB0aW9uQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQotewotICAgIFZNJiB2bSA9IEpT
Qzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU1Rlc3RFeGNlcHRpb246OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0
Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKLX0K
LQotYm9vbCBzZXRKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
LSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV4Y2VwdGlvblByb3Rv
dHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZ
KCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8g
U2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5w
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RFeGNl
cHRpb25OYW1lR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rl
c3RFeGNlcHRpb24mIHRoaXNPYmplY3QpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxl
LmNwcAppbmRleCA1NjRmNmZkY2ZkNjViYTgwZTBhNDBjYTRiMjFkOGRhNTUwZjQxZDFkLi41YzI1
N2M1ZjYzZDhmNGQ0MDg3ZDcwYTIxZjdmOTJhZjk0OTUyNTk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCkBAIC00Niw4ICs0Niw2IEBAIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiAKIC8vIEF0dHJpYnV0ZXMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHZW5l
cmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLWJvb2wgc2V0SlNUZXN0R2VuZXJhdGVJ
c1JlYWNoYWJsZUNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZUFTZWNyZXRBdHRyaWJ1dGUoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIAogY2xhc3MgSlNUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmlu
YWxPYmplY3QgewpAQCAtOTIsNyArOTAsOSBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0R2Vu
ZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSgogCiB0
ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yOjppbml0
aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
CiB7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVz
dEdlbmVyYXRlSXNSZWFjaGFibGU6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIGF1dG8qIHBy
b3RvdHlwZSA9IEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6OnByb3RvdHlwZSh2bSwgZ2xvYmFs
T2JqZWN0KTsKKyAgICBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSkpOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
cHJvdG90eXBlLCBwcm90b3R5cGUsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUs
IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlIl9zKSwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpz
TnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KQEAgLTEwMyw3ICsxMDMsNiBAQCB0ZW1wbGF0ZTw+
IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3I6OnNf
aW5mbyA9IHsgIlRlcwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0R2VuZXJh
dGVJc1JlYWNoYWJsZVByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewotICAgIHsgImNvbnN0cnVj
dG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rl
c3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IpIH0gfSwKICAgICB7ICJhU2VjcmV0QXR0
cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdlbmVyYXRlSXNS
ZWFjaGFibGVBU2VjcmV0QXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogfTsKIApAQCAtMTEyLDYgKzExMSw3IEBA
IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlOjpzX2lu
Zm8gPSB7ICJUZXN0R2VuZXJhdGVJc1JlCiB2b2lkIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rv
ciwganNVbmRlZmluZWQoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlOjppbmZvKCksIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90
b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwogICAgIGJvb2wgaGFzRGlzYWJsZWRSdW50aW1lUHJv
cGVydGllcyA9IGZhbHNlOwogICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xv
YmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgp
KSB7CkBAIC0xNjgsMjkgKzE2OCw2IEBAIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdEdlbmVyYXRl
SXNSZWFjaGFibGUqIElETEF0dHJpYnV0ZTxKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhCiAgICAgcmV0
dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSo+KEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIGpzVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1Y3RvcihKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
LSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGVQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlm
IChVTkxJS0VMWSghcHJvdG90eXBlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZN
KGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7Ci19Ci0K
LWJvb2wgc2V0SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGlj
YWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2VuZXJh
dGVJc1JlYWNoYWJsZVByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJy
b3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICBy
ZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVj
dG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQVNlY3JldEF0dHJpYnV0ZUdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZSYgdGhpc09iamVjdCkKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAppbmRleCBhM2ZiNzQyZWJi
NGEyNzc1M2IyN2RkMDFhZWNkMTZiOGQ5OTYyYjY5Li5iYTZkNDdiYmQ5M2I1MmMzMGZhODFmZTBj
NDhiNjc5NzZjZDhmNTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcApAQCAtMTU2LDgg
KzE1Niw2IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxP
YmplY3RJbnN0YW5jZUZ1bmN0aW9uVGVzdEZlYXR1cmVHCiAKIC8vIEF0dHJpYnV0ZXMKIAotSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvcihKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotYm9v
bCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFJlZ3VsYXJBdHRyaWJ1dGUoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIGJvb2wgc2V0
SlNUZXN0R2xvYmFsT2JqZWN0UmVndWxhckF0dHJpYnV0ZShKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFB1YmxpY0FuZFByaXZhdGVBdHRyaWJ1dGUoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
QEAgLTcxNCw3ICs3MTIsOSBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0R2xvYmFsT2JqZWN0
Q29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJgogCiB0ZW1wbGF0ZTw+
IHZvaWQgSlNUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVz
KFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgZ2xvYmFsT2JqZWN0LmdldFByb3Rv
dHlwZURpcmVjdCh2bSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKTsKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBhc09iamVjdChnbG9iYWxPYmplY3QuZ2V0
UHJvdG90eXBlRGlyZWN0KHZtKSk7CisgICAgcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0R2xvYmFsT2JqZWN0Il9z
KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5n
dGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXMo
dm0sIEpTVGVzdEdsb2JhbE9iamVjdDo6aW5mbygpLCBKU1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1
Y3RvclRhYmxlVmFsdWVzLCAqdGhpcyk7CkBAIC03MjQsMjMgKzcyNCwyMyBAQCB0ZW1wbGF0ZTw+
IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiVGVzdEdsb2JhbAogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIAotc3RhdGlj
IGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlw
ZVRhYmxlSW5kZXhbMl0gPSB7CitzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXgg
SlNUZXN0R2xvYmFsT2JqZWN0UHJvdG90eXBlVGFibGVJbmRleFsxXSA9IHsKICAgICB7IC0xLCAt
MSB9LAotICAgIHsgMCwgLTEgfSwKIH07CiAKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVl
IEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewotICAgIHsgImNv
bnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvciksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVz
dEdsb2JhbE9iamVjdENvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAwLCAwLCBOb0ludHJpbnNpYywg
eyAwLCAwIH0gfQogfTsKIAotc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RHbG9iYWxPYmpl
Y3RQcm90b3R5cGVUYWJsZSA9IHsgMSwgMSwgdHJ1ZSwgSlNUZXN0R2xvYmFsT2JqZWN0OjppbmZv
KCksIEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZVRhYmxlVmFsdWVzLCBKU1Rlc3RHbG9iYWxP
YmplY3RQcm90b3R5cGVUYWJsZUluZGV4IH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVz
dEdsb2JhbE9iamVjdFByb3RvdHlwZVRhYmxlID0geyAwLCAwLCBmYWxzZSwgSlNUZXN0R2xvYmFs
T2JqZWN0OjppbmZvKCksIEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZVRhYmxlVmFsdWVzLCBK
U1Rlc3RHbG9iYWxPYmplY3RQcm90b3R5cGVUYWJsZUluZGV4IH07CiBjb25zdCBDbGFzc0luZm8g
SlNUZXN0R2xvYmFsT2JqZWN0UHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0R2xvYmFsT2JqZWN0
IiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZVRhYmxlLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZSkgfTsK
IAogdm9pZCBKU1Rlc3RHbG9iYWxPYmplY3RQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwganNVbmRlZmluZWQoKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgSlNDX1RP
X1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CiAKQEAgLTgyMSwyOSArODIxLDYg
QEAgdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0R2xvYmFsT2JqZWN0KiBJRExPcGVyYXRpb248SlNU
ZXN0R2xvYmFsT2JqZWN0Pjo6Y2FzdChKU0cKICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rl
c3RHbG9iYWxPYmplY3QqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZy
YW1lLnRoaXNWYWx1ZSgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0
Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0
Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RHbG9iYWxPYmplY3RQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU1Rlc3RHbG9iYWxPYmplY3Q6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0
Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKLX0K
LQotYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEdsb2JhbE9iamVj
dFByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVO
TElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0g
ICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90
eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rl
c3RHbG9iYWxPYmplY3RSZWd1bGFyQXR0cmlidXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCiB7CiAgICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmpl
Y3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9i
YWxPYmplY3QuaAppbmRleCBiMTc5NWIwZDJlYTcxYjFkZmQyNWNhZjU2NDM0NTk2ODQ0ZTRlMzg1
Li4yZWVlMDA3NGJmNmQ5MWM2MmVhMmVmNjVlMTZiNTdlN2YyYTZjNzc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEds
b2JhbE9iamVjdC5oCkBAIC0xMTYsOCArMTE2LDYgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6
Okhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoSlNUZXN0R2xvYmFsT2JqZWN0UHJvdG90eXBlLCBKU1Rlc3RHbG9iYWxPYmplY3RQ
cm90b3R5cGU6OkJhc2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5v
SWRlbnRpZmllci5jcHAKaW5kZXggZjQ4Nzk3NDQyZWJmOGZhNWE5N2Y5MTIxMWRhOWQ0MzkyZjM2
NGUwMi4uMTFjNjA5OWEzNTRlMDBkNDM4MTlhZTY2OWM1ZjllMmZiOTc1MTc2ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRT
ZXR0ZXJOb0lkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcApAQCAtNDQsMTEg
KzQ0LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLS8v
IEF0dHJpYnV0ZXMKLQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbmRleGVkU2V0dGVyTm9J
ZGVudGlmaWVyQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLWJvb2wgc2V0SlNUZXN0SW5kZXhlZFNldHRlck5v
SWRlbnRpZmllckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKLQogY2xhc3MgSlNUZXN0SW5kZXhlZFNldHRl
ck5vSWRlbnRpZmllclByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmpl
Y3QgewogcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CkBA
IC05MSw3ICs4Niw5IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RJbmRleGVkU2V0dGVyTm9J
ZGVudGlmaWVyQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjCiAKIHRlbXBsYXRlPD4gdm9p
ZCBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3I6OmluaXRpYWxpemVQ
cm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0SW5kZXhl
ZFNldHRlck5vSWRlbnRpZmllcjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CisgICAgYXV0byogcHJv
dG90eXBlID0gSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcjo6cHJvdG90eXBlKHZtLCBn
bG9iYWxPYmplY3QpOworICAgIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZp
ZXIiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQpAQCAtOTksMTggKzk2LDEyIEBA
IHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0
b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzCiB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rl
c3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RJ
bmRleGVkU2V0dGVyTm9JZGVudGlmaWVyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyQ29u
c3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwotCi1zdGF0aWMg
Y29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllclByb3Rv
dHlwZVRhYmxlVmFsdWVzW10gPQotewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RJbmRleGVkU2V0
dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3IpIH0gfSwKLX07Ci0KIGNvbnN0IENsYXNzSW5mbyBK
U1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0
SW5kZXhlZFNldHRlck5vSWRlbnRpZmllciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllclBy
b3RvdHlwZSkgfTsKIAogdm9pZCBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
dm0pOwotICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0SW5kZXhlZFNldHRlck5v
SWRlbnRpZmllcjo6aW5mbygpLCBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90
eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmNvbnN0cnVjdG9yLCBqc1VuZGVmaW5lZCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0NfVE9fU1RSSU5HX1RBR19X
SVRIT1VUX1RSQU5TSVRJT04oKTsKIH0KIApAQCAtMjQxLDI5ICsyMzIsNiBAQCBib29sIEpTVGVz
dEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBv
YmplY3QsIEpTR2xvYgogICAgIHJldHVybiBKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkob2Jq
ZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIG5ld1Byb3BlcnR5RGVzY3Jp
cHRvciwgc2hvdWxkVGhyb3cpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbmRleGVkU2V0
dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQotewotICAgIFZN
JiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlKj4odm0s
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlw
ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0SW5kZXhlZFNl
dHRlck5vSWRlbnRpZmllcjo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwotfQotCi1ib29sIHNldEpTVGVz
dEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
LSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEluZGV4ZWRTZXR0ZXJO
b0lkZW50aWZpZXJQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwot
ICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9y
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0
dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rv
ciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiBKU0M6Oklzb1N1YnNwYWNl
KiBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyOjpzdWJzcGFjZUZvckltcGwoSlNDOjpW
TSYgdm0pCiB7CiAgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50
RGF0YSo+KHZtLmNsaWVudERhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhl
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAppbmRleCBmYjk5NjNlNjRhMDAyNjYyYTQ0OThm
NWM1NjY4YTlhMTlkMmIxOTQxLi5lNzE4MWFjZDM5MDlkZTNiYjJhNWQyOGZhNzRlNWRkMmY1Njhk
OTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5n
RXhjZXB0aW9uLmNwcApAQCAtNDQsMTEgKzQ0LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVz
aW5nIG5hbWVzcGFjZSBKU0M7CiAKLS8vIEF0dHJpYnV0ZXMKLQotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3RvcihKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwot
Ym9vbCBzZXRKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3RvcihK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7Ci0KIGNsYXNzIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3Rv
dHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAg
IHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CkBAIC05MSw3ICs4Niw5IEBAIHRl
bXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Db25z
dHJ1Y3Rvcjo6cHJvdG90eXBlRm9yCiAKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RJbmRleGVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0m
IHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb246OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIGF1dG8qIHByb3RvdHlwZSA9
IEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6cHJvdG90eXBlKHZtLCBnbG9i
YWxPYmplY3QpOworICAgIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5wcm90b3R5cGUsIHByb3RvdHlwZSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFt
ZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbiJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CkBAIC05OSwxOCArOTYsMTIg
QEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNv
bnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGUKIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpT
VGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yOjpzX2luZm8gPSB7
ICJUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVs
bHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RJbmRleGVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb25Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90
eXBlICovCi0KLXN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RJbmRleGVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KLXsKLSAgICB7ICJjb25z
dHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uQ29u
c3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3Rv
cikgfSB9LAotfTsKLQogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvblByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlKSB9
OwogCiB2b2lkIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsK
LSAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbjo6aW5mbygpLCBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Q
cm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+Y29uc3RydWN0b3IsIGpzVW5kZWZpbmVkKCksIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIEpTQ19UT19TVFJJTkdf
VEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQogCkBAIC0yNDEsMjkgKzIzMiw2IEBAIGJvb2wg
SlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShK
U09iamVjdCogb2JqZWN0LCBKCiAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0
eShvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgbmV3UHJvcGVydHlE
ZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdEluZGV4
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
LXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3Rv
dHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9u
UHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5M
SUtFTFkoIXByb3RvdHlwZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpnZXRDb25zdHJ1Y3RvcihKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7
Ci19Ci0KLWJvb2wgc2V0SlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3Ry
dWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQotewotICAgIFZNJiB2bSA9
IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGUqPih2bSwg
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBl
KSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBh
IGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSkpOwotfQotCiBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb246OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKIHsKICAgICBhdXRvJiBj
bGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3Bw
CmluZGV4IDU2MjFiY2JjMGM4MTI0ZGI4Y2ExNGYwMmY3ZGEyZjI3NzY1MGZlYzEuLjk3MzZhYmMw
NTIxNzBmNmJlNDZkZGZjNWJmMmFmZWE3MDk4ZjYzZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCkBAIC01MCwxMSArNTAsNiBAQCB1
c2luZyBuYW1lc3BhY2UgSlNDOwogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVk
U2V0dGVyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCi0vLyBBdHRy
aWJ1dGVzCi0KLUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLWJvb2wgc2V0SlNUZXN0SW5kZXhlZFNldHRlcldpdGhJ
ZGVudGlmaWVyQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwotCiBjbGFzcyBKU1Rlc3RJbmRleGVkU2V0dGVy
V2l0aElkZW50aWZpZXJQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2Jq
ZWN0IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwpA
QCAtOTcsNyArOTIsOSBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0SW5kZXhlZFNldHRlcldp
dGhJZGVudGlmaWVyQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cgogCiB0ZW1wbGF0ZTw+IHZv
aWQgSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3I6OmluaXRpYWxp
emVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsK
LSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0SW5k
ZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBhdXRv
KiBwcm90b3R5cGUgPSBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6OnByb3RvdHlw
ZSh2bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RJbmRleGVkU2V0dGVyV2l0
aElkZW50aWZpZXIiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQpAQCAtMTA4LDcg
KzEwNSw2IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllckNvbnN0cnVjdG9yOjpzX2luZm8KIAogc3RhdGljIGNvbnN0IEhhc2hUYWJs
ZVZhbHVlIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZVRhYmxlVmFs
dWVzW10gPQogewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RJbmRleGVkU2V0
dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRl
bnRpZmllckNvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAiaW5kZXhlZFNldHRlciIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0SW5k
ZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVkU2V0dGVyKSwg
KGludHB0cl90KSAoMikgfSB9LAogfTsKIApAQCAtMTE3LDYgKzExMyw3IEBAIGNvbnN0IENsYXNz
SW5mbyBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGU6OnNfaW5mbyA9
IHsgIlRlc3RJbmRlCiB2b2lkIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBq
c1VuZGVmaW5lZCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pKTsKICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6aW5mbygpLCBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElk
ZW50aWZpZXJQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwogICAgIEpTQ19UT19TVFJJTkdf
VEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQpAQCAtMjUzLDI5ICsyNTAsNiBAQCB0ZW1wbGF0
ZTw+IGlubGluZSBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIqIElETE9wZXJhdGlv
bjxKU1Rlc3RJbmRleGVkUwogICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdEluZGV4ZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllcio+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBj
YWxsRnJhbWUudGhpc1ZhbHVlKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbmRleGVk
U2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCi17Ci0g
ICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlw
ZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFw
cm90b3R5cGUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwotfQotCi1ib29s
IHNldEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxl
eGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW5k
ZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1
Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRl
bnRpZmllclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlckJvZHkoSlNDOjpKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlw
ZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj46OkNs
YXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxl
eGljYWxHbG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAppbmRleCBlMTA4NDQ0NDBl
NjM5YzY0YzFkZWI4NjY3OGI3YjdhYzVhMWQxYjhiLi44YTBmYTI4NjU5NmI5NzdlNjEzODEwMmU0
YTY3NTAzYTM0MWIzOWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcApAQCAtMTE1LDggKzExNSw2
IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90
b3R5cGVGdW5jdGlvbkZvckVhY2goSlNDOjpKCiAKIC8vIEF0dHJpYnV0ZXMKIAotSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotYm9vbCBzZXRKU1Rl
c3RJbnRlcmZhY2VDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFj
ZU1peGluUmVhZE9ubHlBdHRyaWJ1dGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKICNlbmRpZgpAQCAtMjkzLDcgKzI5MSw5IEBA
IHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6cHJvdG90eXBl
Rm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtCiAKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RJbnRlcmZh
Y2VDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+cHJvdG90eXBlLCBKU1Rlc3RJbnRlcmZhY2U6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0
KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAg
IGF1dG8qIHByb3RvdHlwZSA9IEpTVGVzdEludGVyZmFjZTo6cHJvdG90eXBlKHZtLCBnbG9iYWxP
YmplY3QpOworICAgIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5j
b25zdHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5w
cm90b3R5cGUsIHByb3RvdHlwZSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwg
anNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdEludGVyZmFjZSJfcyksIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwog
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7CiAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RJbnRlcmZh
Y2U6OmluZm8oKSwgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JUYWJsZVZhbHVlcywgKnRoaXMp
OwpAQCAtMzA1LDcgKzMwNSw2IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdElu
dGVyZmFjZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0SW50ZXJmYWNlCiAKIHN0YXRpYyBj
b25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVUYWJsZVZhbHVlc1td
ID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0SW50ZXJmYWNlQ29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvcikgfSB9LAogI2lmIEVOQUJMRShDb25k
aXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogICAgIHsgIm1peGluUmVhZE9ubHlBdHRy
aWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0SW50ZXJmYWNlTWl4
aW5SZWFkT25seUF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICNlbHNlCkBAIC00NTIsNiArNDUxLDcgQEAgY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdElu
dGVyZmFjZSIsICZCYXNlOjpzX2kKIHZvaWQgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGpzVW5kZWZpbmVk
KCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSkpOwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0SW50ZXJmYWNlOjppbmZv
KCksIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7CiAgICAgYm9v
bCBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gZmFsc2U7CiAjaWYgRU5BQkxFKENvbmRp
dGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCkBAIC01MTYsMjkgKzUxNiw2IEBAIHRlbXBs
YXRlPD4gaW5saW5lIEpTVGVzdEludGVyZmFjZSogSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFj
ZT46OmNhc3QoSlNHbG9iYWxPCiAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJm
YWNlKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFs
dWUoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9i
YWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlUHJv
dG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtF
TFkoIXByb3RvdHlwZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNU
ZXN0SW50ZXJmYWNlOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7Ci19Ci0KLWJvb2wgc2V0SlNUZXN0SW50
ZXJmYWNlQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQotewot
ICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBl
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWlu
IGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwot
fQotCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiBzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNUZXN0SW50ZXJmYWNlTWl4aW5SZWFkT25seUF0dHJpYnV0ZUdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0SW50ZXJmYWNl
JiB0aGlzT2JqZWN0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5n
VW5kZXJzY29yZS5jcHAKaW5kZXggMzYyOGNkNjYyN2NjOGVmZjc1MzRiOTY0NmY4YmVmNWE5Mjkx
NDhkZi4uZDk2ZGU2OTlhNGUzYWNiNDkxMzllMTQ5YzFmNjljNjEzMmJiZTgzMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFj
ZUxlYWRpbmdVbmRlcnNjb3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3BwCkBAIC00Niw4
ICs0Niw2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIC8vIEF0dHJpYnV0ZXMKIAotSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZUNvbnN0cnVjdG9y
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5
TmFtZSk7Ci1ib29sIHNldEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlQ29uc3RydWN0
b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5k
ZXJzY29yZVJlYWRvbmx5KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7CiAKIGNsYXNzIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRl
cnNjb3JlUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CkBA
IC05Miw3ICs5MCw5IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5n
VW5kZXJzY29yZUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1CiAKIHRlbXBsYXRlPD4gdm9p
ZCBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZUNvbnN0cnVjdG9yOjppbml0aWFsaXpl
UHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0g
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdEludGVy
ZmFjZUxlYWRpbmdVbmRlcnNjb3JlOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBhdXRvKiBw
cm90b3R5cGUgPSBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZTo6cHJvdG90eXBlKHZt
LCBnbG9iYWxPYmplY3QpOworICAgIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdEludGVyZmFjZUxlYWRpbmdVbmRl
cnNjb3JlIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KQEAgLTEwMyw3ICsxMDMs
NiBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5k
ZXJzY29yZUNvbnN0cnVjdG9yOjpzX2luZm8gPQogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFs
dWUgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVQcm90b3R5cGVUYWJsZVZhbHVlc1td
ID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0SW50ZXJmYWNlTGVhZGlu
Z1VuZGVyc2NvcmVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3Jl
Q29uc3RydWN0b3IpIH0gfSwKICAgICB7ICJyZWFkb25seSIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZVJlYWRvbmx5KSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9
LAogfTsKIApAQCAtMTEyLDYgKzExMSw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RJbnRlcmZh
Y2VMZWFkaW5nVW5kZXJzY29yZVByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdEludGVyCiB2b2lk
IEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGpzVW5kZWZpbmVkKCksIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAg
IHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2Nv
cmU6OmluZm8oKSwgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVQcm90b3R5cGVUYWJs
ZVZhbHVlcywgKnRoaXMpOwogICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElP
TigpOwogfQpAQCAtMTU4LDI5ICsxNTgsNiBAQCB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RJbnRl
cmZhY2VMZWFkaW5nVW5kZXJzY29yZSogSURMQXR0cmlidXRlPEpTVGVzdEludGVyZmFjZQogICAg
IHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlKj4o
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2Nv
cmVDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUp
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVy
c2NvcmU6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHBy
b3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKLX0KLQotYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VM
ZWFkaW5nVW5kZXJzY29yZUNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwot
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8q
IHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2Nv
cmVQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChV
TkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
ICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3Rv
dHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVSZWFkb25seUdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUm
IHRoaXNPYmplY3QpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCmluZGV4IDE0NGZhMDFlMWMzNDU0NGE3NDBlODhi
ZTUyNmY5MTUwNGUzMDE3OGUuLmI0ZDY4ZmJhNzE3NWRmYzhhNTFjM2UyYzViZWRkY2U3MTdkNWE2
YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJdGVyYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcApAQCAtNTUsMTEgKzU1LDYgQEAgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25LZXlz
KEpTQzo6SlNHbG8KIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJdGVy
YWJsZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNh
bGxGcmFtZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEl0ZXJh
YmxlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNh
bGxGcmFtZSopOwogCi0vLyBBdHRyaWJ1dGVzCi0KLUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
SXRlcmFibGVDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotYm9vbCBzZXRKU1Rlc3RJdGVyYWJsZUNvbnN0cnVj
dG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKLQogY2xhc3MgSlNUZXN0SXRlcmFibGVQcm90b3R5cGUgZmluYWwgOiBwdWJs
aWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlND
OjpKU05vbkZpbmFsT2JqZWN0OwpAQCAtMTAyLDcgKzk3LDkgQEAgdGVtcGxhdGU8PiBKU1ZhbHVl
IEpTVGVzdEl0ZXJhYmxlQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZN
JiB2bSwKIAogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdEl0ZXJhYmxlQ29uc3RydWN0b3I6OmluaXRp
YWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
IHsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0
SXRlcmFibGU6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIGF1dG8qIHByb3RvdHlwZSA9IEpT
VGVzdEl0ZXJhYmxlOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCk7CisgICAgcHJvdG90eXBl
LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0s
ICJUZXN0SXRlcmFibGUiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQpAQCAtMTEz
LDcgKzExMCw2IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEl0ZXJhYmxlQ29u
c3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RJdGVyYWJsZSIsCiAKIHN0YXRpYyBjb25zdCBIYXNo
VGFibGVWYWx1ZSBKU1Rlc3RJdGVyYWJsZVByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewotICAg
IHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RJdGVyYWJsZUNvbnN0cnVjdG9yKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNU
ZXN0SXRlcmFibGVDb25zdHJ1Y3RvcikgfSB9LAogICAgIHsgImVudHJpZXMiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdEl0ZXJh
YmxlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsg
ImtleXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVu
Y3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVu
Y3Rpb24+KGpzVGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25LZXlzKSwgKGludHB0cl90KSAo
MCkgfSB9LAogICAgIHsgInZhbHVlcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvblZh
bHVlcyksIChpbnRwdHJfdCkgKDApIH0gfSwKQEAgLTEyNSw2ICsxMjEsNyBAQCBjb25zdCBDbGFz
c0luZm8gSlNUZXN0SXRlcmFibGVQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RJdGVyYWJsZSIs
ICZCYXNlOjpzX2luZgogdm9pZCBKU1Rlc3RJdGVyYWJsZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBqc1VuZGVmaW5lZCgpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAg
ICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdEl0ZXJhYmxlOjppbmZvKCksIEpTVGVz
dEl0ZXJhYmxlUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKICAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBnZXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJpZXNQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0Nf
VE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKQEAgLTE3MiwyOSArMTY5LDYgQEAg
dGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0SXRlcmFibGUqIElETE9wZXJhdGlvbjxKU1Rlc3RJdGVy
YWJsZT46OmNhc3QoSlNHbG9iYWxPYmoKICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RJ
dGVyYWJsZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhp
c1ZhbHVlKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJdGVyYWJsZUNvbnN0cnVjdG9y
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SXRlcmFibGVQ
cm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJ
S0VMWSghcHJvdG90eXBlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShK
U1Rlc3RJdGVyYWJsZTo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2Jq
ZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwotfQotCi1ib29sIHNldEpTVGVzdEl0
ZXJhYmxlQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQotewot
ICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBl
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJdGVyYWJsZVByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAg
ICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4g
Y29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19
Ci0KIHN0cnVjdCBUZXN0SXRlcmFibGVJdGVyYXRvclRyYWl0cyB7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBKU0RPTUl0ZXJhdG9yVHlwZSB0eXBlID0gSlNET01JdGVyYXRvclR5cGU6OlNldDsKICAg
ICB1c2luZyBLZXlUeXBlID0gdm9pZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3IuY3BwCmluZGV4IDFjMTFiYzZiZmI5NmJmYmJkN2I5MDdhOWNiY2M1ODA1Mjk2YjI4ZDUu
LjNjYjI4MTYyMDZlOGE0MGQ1ZDY0YTZmZjMwMjc3YzVhMjA3OGY2NTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcApAQCAtNDcsOCArNDcsNiBAQCBKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90
b3R5cGVGdW5jdGlvblRlcwogCiAvLyBBdHRyaWJ1dGVzCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotYm9vbCBzZXRKU1Rl
c3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXR0cmlidXRlQ3VzdG9tKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7
CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJp
YnV0ZVJXQ3VzdG9tKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7CiBib29sIHNldEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVz
dEF0dHJpYnV0ZVJXQ3VzdG9tKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKQEAgLTk1LDcgKzkzLDkgQEAgdGVtcGxhdGU8PiBK
U1ZhbHVlIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3I6OnByb3RvdHlwZUZv
clN0cnVjdHVyZSgKIAogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
PnByb3RvdHlwZSwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6OnByb3RvdHlwZSh2bSwgZ2xv
YmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pOworICAgIGF1dG8qIHByb3RvdHlwZSA9IEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpw
cm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCk7CisgICAgcHJvdG90eXBlLT5wdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3IiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQpAQCAtMTExLDcg
KzExMSw2IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEpTQnVpbHRpbkNvbnN0
cnVjdG9yQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFi
bGVWYWx1ZSBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZVRhYmxlVmFsdWVzW10g
PQogewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3RvckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcikg
fSB9LAogICAgIHsgInRlc3RBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpCdWls
dGluKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PEJ1aWx0aW5HZW5lcmF0
b3I+KHRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRlc3RBdHRyaWJ1dGVDb2RlR2VuZXJhdG9yKSwg
KGludHB0cl90KSAoc2V0VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZUNvZGVH
ZW5lcmF0b3IpIH0gfSwKICAgICB7ICJ0ZXN0QXR0cmlidXRlQ3VzdG9tIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0
ZUN1c3RvbSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJ0ZXN0QXR0cmlidXRlUldDdXN0b20iLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZVJXQ3VzdG9tKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3JUZXN0QXR0cmlidXRlUldDdXN0b20pIH0gfSwKQEAgLTEyNCw2ICsxMjMsNyBAQCBjb25z
dCBDbGFzc0luZm8gSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGU6OnNfaW5mbyA9
IHsgIlRlc3RKU0J1aWx0aW5Dbwogdm9pZCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBq
c1VuZGVmaW5lZCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pKTsKICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yOjppbmZvKCksIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90
eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKICAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RS
QU5TSVRJT04oKTsKIH0KQEAgLTE3MSwyOSArMTcxLDYgQEAgdGVtcGxhdGU8PiBpbmxpbmUgSlNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqIElETE9wZXJhdGlvbjxKU1Rlc3RKU0J1aWx0aW5Db25z
dHIKICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcio+
KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVj
dG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGlj
YWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SlNCdWls
dGluQ29uc3RydWN0b3JQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0b3Io
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3Qo
KSkpOwotfQotCi1ib29sIHNldEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3Io
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQotewotICAgIFZNJiB2bSA9IEpTQzo6
Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRo
cm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3Ry
dWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIHN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRlc3RBdHRyaWJ1
dGVDdXN0b21HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yJiB0aGlzT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTShs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeUZhY3RvcnlGdW5j
dGlvbi5jcHAKaW5kZXggMzRiMmY1NWI1MmE1MmI5N2Q3Y2U5ZTZlZGMyNTc2ZjAzYjYzYzE4ZC4u
YTMxMTI4OTdmYTZmNmI4NGFlODA1MjczYmY2YzhkYzcyZjRiYmYwOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeUZhY3RvcnlG
dW5jdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5jcHAKQEAgLTQ2LDExICs0Niw2IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCi0vLyBBdHRyaWJ1dGVzCi0K
LUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ29uc3RydWN0
b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVy
dHlOYW1lKTsKLWJvb2wgc2V0SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ29uc3RydWN0b3Io
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpT
VmFsdWUpOwotCiBjbGFzcyBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Qcm90b3R5cGUgZmlu
YWwgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB1c2luZyBC
YXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwpAQCAtOTQsNyArODksOSBAQCB0ZW1wbGF0ZTw+
IEpTVmFsdWUgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ29uc3RydWN0b3I6OnByb3RvdHlw
ZUZvclN0cnVjdHVyZQogCiB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0
aW9uQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnByb3RvdHlwZSwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjpwcm90b3R5cGUodm0s
IGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKTsKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rp
b246OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBwcm90b3R5cGUtPnB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RMZWdh
Y3lGYWN0b3J5RnVuY3Rpb24iX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQpAQCAt
MTQxLDcgKzEzOCw5IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVu
Y3Rpb25MZWdhY3lGYWN0b3J5RnVuY3Rpb246OnByb3RvdHlwZUZvCiAKIHRlbXBsYXRlPD4gdm9p
ZCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25MZWdhY3lGYWN0b3J5RnVuY3Rpb246OmluaXRp
YWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
IHsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0
TGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBhdXRvKiBw
cm90b3R5cGUgPSBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb246OnByb3RvdHlwZSh2bSwgZ2xv
YmFsT2JqZWN0KTsKKyAgICBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSkpOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5h
bWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIkF1ZGlvIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKTsKIH0KQEAgLTE0OSwxOCArMTQ4LDEyIEBAIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RM
ZWdhY3lGYWN0b3J5RnVuY3Rpb25MZWdhY3lGYWN0b3J5RnVuY3Rpb246OmluaXRpYWxpemVQcm9w
CiB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25M
ZWdhY3lGYWN0b3J5RnVuY3Rpb246OnNfaW5mbyA9IHsgIkF1ZGlvIiwgJkJhc2U6OnNfaW5mbywg
bnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RMZWdhY3lGYWN0b3J5
RnVuY3Rpb25MZWdhY3lGYWN0b3J5RnVuY3Rpb24pIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHBy
b3RvdHlwZSAqLwotCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TGVnYWN5RmFj
dG9yeUZ1bmN0aW9uUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9Ci17Ci0gICAgeyAiY29uc3RydWN0
b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNvbnN0cnVjdG9yKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNU
ZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ29uc3RydWN0b3IpIH0gfSwKLX07Ci0KIGNvbnN0IENs
YXNzSW5mbyBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Qcm90b3R5cGU6OnNfaW5mbyA9IHsg
IlRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvblByb3Rv
dHlwZSkgfTsKIAogdm9pZCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Qcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0g
ICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb246
OmluZm8oKSwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uUHJvdG90eXBlVGFibGVWYWx1ZXMs
ICp0aGlzKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9y
LCBqc1VuZGVmaW5lZCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJ
T04oKTsKIH0KIApAQCAtMjA2LDI5ICsxOTksNiBAQCB2b2lkIEpTVGVzdExlZ2FjeUZhY3RvcnlG
dW5jdGlvbjo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKICAgICB0aGlzT2JqZWN0LT5KU1Rl
c3RMZWdhY3lGYWN0b3J5RnVuY3Rpb246On5KU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24oKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ29uc3RydWN0
b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RMZWdhY3lG
YWN0b3J5RnVuY3Rpb25Qcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb246OmdldENvbnN0cnVjdG9y
KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0
KCkpKTsKLX0KLQotYm9vbCBzZXRKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Db25zdHJ1Y3Rv
cihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCi17Ci0gICAgVk0mIHZtID0gSlND
OjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvblByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAg
IHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29u
c3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0K
IEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbjo6c3Vic3BhY2VG
b3JJbXBsKEpTQzo6Vk0mIHZtKQogewogICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nh
c3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAppbmRleCBkZjFmZmZiNDc5MDg2NDVmODQ3N2RkMDNl
ZTI4MWM3OWQ4MzI1YTY2Li5kOWJiNDQxYzkxOWI0MzY5ZTk4NDYzMmMwMDI5ZjI1OTgwMDBmODY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCkBAIC01
MiwxMSArNTIsNiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZUZ1bmN0
aW9uTmFtZWRJdGVtKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCi0v
LyBBdHRyaWJ1dGVzCi0KLUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TGVnYWN5T3ZlcnJpZGVC
dWlsdEluc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Ci0KIGNsYXNzIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnNQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1
YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwpAQCAtOTksNyAr
OTQsOSBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0Nv
bnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cgogCiB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0
TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhW
TSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnM6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIGF1dG8qIHByb3RvdHlwZSA9IEpTVGVz
dExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KTsKKyAg
ICBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3Is
IHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSkpOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBw
cm90b3R5cGUsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlh
bFN0cmluZyh2bSwgIlRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIl9zKSwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7
CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDAp
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKIH0KQEAgLTExMCw3ICsxMDcsNiBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENs
YXNzSW5mbyBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3I6OnNfaW5mbyA9
IHsgIgogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TGVnYWN5T3ZlcnJpZGVC
dWlsdEluc1Byb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewotICAgIHsgImNvbnN0cnVjdG9yIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IpIH0gfSwKICAgICB7ICJuYW1lZEl0ZW0i
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24p
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+
KGpzVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGVGdW5jdGlvbk5hbWVkSXRlbSks
IChpbnRwdHJfdCkgKDEpIH0gfSwKIH07CiAKQEAgLTExOSw2ICsxMTUsNyBAQCBjb25zdCBDbGFz
c0luZm8gSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZTo6c19pbmZvID0geyAi
VGVzdExlZ2FjeU92ZQogdm9pZCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0p
OworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGpzVW5k
ZWZpbmVkKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSkpOwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0TGVnYWN5T3Zl
cnJpZGVCdWlsdEluczo6aW5mbygpLCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90
eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKICAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RS
QU5TSVRJT04oKTsKIH0KQEAgLTIxNSwyOSArMjEyLDYgQEAgdGVtcGxhdGU8PiBpbmxpbmUgSlNU
ZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyogSURMT3BlcmF0aW9uPEpTVGVzdExlZ2FjeU92ZXJy
aWQKICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
Kj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUo
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25z
dHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpnZXRDb25z
dHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2Jh
bE9iamVjdCgpKSk7Ci19Ci0KLWJvb2wgc2V0SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0Nv
bnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKLXsKLSAgICBWTSYg
dm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSo+KHZtLCBKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7
Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVp
bHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlRnVuY3Rpb25OYW1lZEl0ZW1Cb2R5KEpTQzo6SlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUs
IHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPjo6Q2xh
c3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4
aWNhbEdsb2JhbE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZS5jcHAKaW5kZXggN2RhNzA1OGU3N2IyMDMy
NDhjMmUxZThkZmQ4NTdjZjAwNjIyM2E0ZC4uMzg0YzYyNmRjMWI2ODlmZmVlNDFkMzY5YjRkMTU5
NDgzZjM3Y2M2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE1hcExpa2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlLmNwcApAQCAtNjIsOCArNjIsNiBAQCBKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9u
RGVsZXRlKEpTQzo6SlNHbAogCiAvLyBBdHRyaWJ1dGVzCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0TWFwTGlrZUNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdE1hcExpa2VDb25z
dHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE1hcExpa2VTaXplKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFt
ZSk7CiAKIGNsYXNzIEpTVGVzdE1hcExpa2VQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpK
U05vbkZpbmFsT2JqZWN0IHsKQEAgLTEwOCw3ICsxMDYsOSBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUg
SlNUZXN0TWFwTGlrZUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sCiAKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RNYXBMaWtlQ29uc3RydWN0b3I6OmluaXRpYWxp
emVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsK
LSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0TWFw
TGlrZTo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CisgICAgYXV0byogcHJvdG90eXBlID0gSlNUZXN0
TWFwTGlrZTo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpOworICAgIHByb3RvdHlwZS0+cHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZSwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVz
dE1hcExpa2UiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQpAQCAtMTE5LDcgKzEx
OSw2IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE1hcExpa2VDb25zdHJ1Y3Rv
cjo6c19pbmZvID0geyAiVGVzdE1hcExpa2UiLCAmCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVW
YWx1ZSBKU1Rlc3RNYXBMaWtlUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29u
c3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE1hcExpa2VDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE1hcExp
a2VDb25zdHJ1Y3RvcikgfSB9LAogICAgIHsgInNpemUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1Rlc3RNYXBMaWtlU2l6ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJnZXQiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uR2V0KSwg
KGludHB0cl90KSAoMSkgfSB9LAogICAgIHsgImhhcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2
ZUZ1bmN0aW9uPihqc1Rlc3RNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25IYXMpLCAoaW50cHRyX3Qp
ICgxKSB9IH0sCkBAIC0xMzcsNiArMTM2LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE1hcExp
a2VQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RNYXBMaWtlIiwgJkJhc2U6OnNfaW5mbywKIHZv
aWQgSlNUZXN0TWFwTGlrZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmNvbnN0cnVjdG9yLCBqc1VuZGVmaW5lZCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICByZWlmeVN0YXRpY1Byb3Bl
cnRpZXModm0sIEpTVGVzdE1hcExpa2U6OmluZm8oKSwgSlNUZXN0TWFwTGlrZVByb3RvdHlwZVRh
YmxlVmFsdWVzLCAqdGhpcyk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5p
dGVyYXRvclN5bWJvbCwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5lbnRyaWVzUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9V
VF9UUkFOU0lUSU9OKCk7CkBAIC0xODksMjkgKzE4OSw2IEBAIHRlbXBsYXRlPD4gaW5saW5lIEpT
VGVzdE1hcExpa2UqIElETE9wZXJhdGlvbjxKU1Rlc3RNYXBMaWtlPjo6Y2FzdChKU0dsb2JhbE9i
amVjCiAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0TWFwTGlrZSo+KEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RNYXBMaWtlQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQot
ewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90
eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RNYXBMaWtlUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0TWFwTGlrZTo6Z2V0Q29uc3Ry
dWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxP
YmplY3QoKSkpOwotfQotCi1ib29sIHNldEpTVGVzdE1hcExpa2VDb25zdHJ1Y3RvcihKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE1h
cExpa2VQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlm
IChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHBy
b3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNUZXN0TWFwTGlrZVNpemVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTVGVzdE1hcExpa2UmIHRoaXNPYmplY3QpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50
aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAKaW5kZXggYmRkOTQ1MWVhMmE3
ODI0ODM5ZTRhMTk0ZDcxYmYxZTA0OWVkYzNhOC4uYTk4NmVkNzQzMDkwMjI1NzBkZWVjMGIyOWM1
YzQzODBmYzMwOWE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAKQEAgLTQ1LDExICs0NSw2IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCi0vLyBBdHRyaWJ1dGVzCi0KLUpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVy
Q29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6UHJvcGVydHlOYW1lKTsKLWJvb2wgc2V0SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9J
ZGVudGlmaWVyQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwotCiBjbGFzcyBKU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZp
bmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2Jq
ZWN0OwpAQCAtOTIsNyArODcsOSBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3I6OnByb3RvdHlwZQogCiB0ZW1wbGF0
ZTw+IHZvaWQgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0
b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCkKIHsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyOjpwcm90b3R5cGUodm0s
IGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKTsKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJOb0lkZW50aWZpZXI6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBwcm90b3R5
cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwor
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUs
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2
bSwgIlRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIiX3MpLCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIo
MCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pOwogfQpAQCAtMTAwLDE4ICs5NywxMiBAQCB0ZW1wbGF0ZTw+IHZvaWQg
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3I6OmluaXRp
YWxpemVQcgogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRp
ZmllckNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KLQot
c3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5v
SWRlbnRpZmllclByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQotewotICAgIHsgImNvbnN0cnVjdG9y
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1
Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9y
KSB9IH0sCi19OwotCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyTm9JZGVudGlmaWVyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJQcm90
b3R5cGUpIH07CiAKIHZvaWQgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVy
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOwotICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyTm9JZGVudGlmaWVyOjppbmZvKCksIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlck5vSWRlbnRpZmllclByb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7CisgICAgcHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwganNVbmRlZmluZWQoKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAg
ICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CiAKQEAgLTMxNSwy
OSArMzA2LDYgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6
OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QKICAgICByZXR1cm4gSlNPYmplY3Q6
OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCBuZXdQcm9wZXJ0eURlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUganNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3Io
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEds
b2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50
aWZpZXI6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHBy
b3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKLX0KLQotYm9vbCBzZXRKU1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAg
ICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlck5vSWRlbnRpZmllclByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBl
RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAg
ICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0
cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIEpTQzo6SXNvU3Vi
c3BhY2UqIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllcjo6c3Vic3BhY2VG
b3JJbXBsKEpTQzo6Vk0mIHZtKQogewogICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nh
c3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3Bw
CmluZGV4IDBiNDg1OGM3MTdmZDVlNDZjYjMxMTVmYmRmZmZhZjFkZGZhOGZmZmYuLjQ5NzlmYzJk
MjliYWU1MTQ1M2VmMTIxYjQ4NWExMDk5Y2Y0MGIxZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNw
cApAQCAtNDUsMTEgKzQ1LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiAKLS8vIEF0dHJpYnV0ZXMKLQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1ib29s
IHNldEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0
b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUpOwotCiBjbGFzcyBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvblByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3Qgewog
cHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CkBAIC05Miw3
ICs4Nyw5IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yOjpwcm90CiAKIHRlbXBsYXRlPD4gdm9pZCBKU1Rl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yOjppbml0
aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
CiB7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpwcm90b3R5cGUodm0sIGds
b2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKTsKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpOworICAgIHByb3Rv
dHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7
CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlw
ZSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5n
KHZtLCAiVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uIl9zKSwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpz
TnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KQEAgLTEwMCwxOCArOTcsMTIgQEAgdGVtcGxhdGU8
PiB2b2lkIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3Ry
dWN0b3I6OmluaXRpYWwKIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiIsICZCYXNlOjpzX2luZm8s
IG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJs
ZSBmb3IgcHJvdG90eXBlICovCi0KLXN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZVRhYmxlVmFsdWVz
W10gPQotewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3RvcikgfSB9LAotfTsKLQogY29uc3Qg
Q2xhc3NJbmZvIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJv
dG90eXBlOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBl
KSB9OwogCiB2b2lkIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9u
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOwotICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OmluZm8oKSwgSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwor
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGpzVW5kZWZp
bmVkKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSkpOwogICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQog
CkBAIC0zMTUsMjkgKzMwNiw2IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb246OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvCiAgICAgcmV0dXJu
IEpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgbmV3UHJvcGVydHlEZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0
aW9uQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQotewotICAgIFZNJiB2bSA9IEpTQzo6
Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZSo+KHZt
LCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5
cGUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZN
KGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7Ci19Ci0K
LWJvb2wgc2V0SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Db25z
dHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCi17Ci0gICAgVk0mIHZt
ID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90
eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFko
IXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBT
aGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2
bSkKIHsKICAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRh
Kj4odm0uY2xpZW50RGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAppbmRleCBkNjFkMGNmMTBjYTA0Nzkz
YTljNDQ2YmFiYTExOWU2MmJlNTAwZDJkLi44M2VjOGVlOGFkZDI3ZDk3NjUwMWFlZTY0NmU5NzUx
MDAzMDM4M2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKQEAgLTUyLDExICs1Miw2IEBAIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0
dGVyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVkU2V0dGVyKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkNhbGxGcmFtZSopOwogCi0vLyBBdHRyaWJ1dGVzCi0KLUpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3RvcihK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5h
bWUpOwotYm9vbCBzZXRKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNv
bnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTsKLQogY2xhc3MgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0
aElkZW50aWZpZXJQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0
IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwpAQCAt
OTksNyArOTQsOSBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3Rvcjo6cHJvdG90eQogCiB0ZW1wbGF0ZTw+IHZvaWQg
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3Rvcjo6aW5p
dGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQogewotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6cHJvdG90eXBlKHZtLCBnbG9i
YWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSk7CisgICAgYXV0byogcHJvdG90eXBlID0gSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0
aElkZW50aWZpZXI6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBwcm90b3R5cGUt
PnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwg
IlRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciJfcyksIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
OwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigw
KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSk7CiB9CkBAIC0xMTAsNyArMTA3LDYgQEAgdGVtcGxhdGU8PiBjb25zdCBD
bGFzc0luZm8gSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1
Y3RvcjoKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAi
Y29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRp
ZmllckNvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAibmFtZWRTZXR0ZXIiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25OYW1lZFNldHRlciks
IChpbnRwdHJfdCkgKDIpIH0gfSwKICAgICB7ICJpbmRleGVkU2V0dGVyIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRl
ciksIChpbnRwdHJfdCkgKDIpIH0gfSwKIH07CkBAIC0xMjAsNiArMTE2LDcgQEAgY29uc3QgQ2xh
c3NJbmZvIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBl
OjpzX2luZm8gPSB7ICIKIHZvaWQgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXJQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25z
dHJ1Y3RvciwganNVbmRlZmluZWQoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBK
U1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6aW5mbygpLCBKU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZVRhYmxlVmFsdWVzLCAq
dGhpcyk7CiAgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CkBA
IC0zMjksMjkgKzMyNiw2IEBAIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlcldpdGhJZGVudGlmaWVyKiBJRExPcGVyYXRpb248SlNUZXN0CiAgICAgcmV0dXJuIGpz
RHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIqPihK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXJDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCi17Ci0gICAgVk0mIHZtID0gSlND
OjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlKj4odm0s
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlw
ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4
aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKLX0KLQotYm9v
bCBzZXRKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9y
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGUqPih2bSwg
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBl
KSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBh
IGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSkpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0
dGVyQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNh
bGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQog
ewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAKaW5kZXggNmZlMDBk
MWI1OGQ3ZjA3ODA5ZGEwYTI1YWZmZThhNmIyNGQ3OTMzYi4uYmFjYWVlMzg2NjM0NWY1NGI1YjAw
ZmZhZmQ0OGYyNGQyZjBiNjZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRl
ck5vSWRlbnRpZmllci5jcHAKQEAgLTQ0LDExICs0NCw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCi0vLyBBdHRyaWJ1dGVzCi0KLUpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3IoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLWJv
b2wgc2V0SlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3IoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwot
CiBjbGFzcyBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGUgZmluYWwgOiBw
dWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0g
SlNDOjpKU05vbkZpbmFsT2JqZWN0OwpAQCAtOTEsNyArODYsOSBAQCB0ZW1wbGF0ZTw+IEpTVmFs
dWUgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3I6OnByb3RvdHlwZUZv
clN0cnVjdAogCiB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVy
Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
PnByb3RvdHlwZSwgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyOjpwcm90b3R5cGUodm0s
IGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKTsKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50
aWZpZXI6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBwcm90b3R5cGUtPnB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RO
YW1lZERlbGV0ZXJOb0lkZW50aWZpZXIiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwog
fQpAQCAtOTksMTggKzk2LDEyIEBAIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1lZERlbGV0ZXJO
b0lkZW50aWZpZXJDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoCiB0ZW1wbGF0ZTw+
IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3Rv
cjo6c19pbmZvID0geyAiVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllciIsICZCYXNlOjpzX2lu
Zm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWREZWxl
dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3Rv
dHlwZSAqLwotCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TmFtZWREZWxldGVy
Tm9JZGVudGlmaWVyUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9Ci17Ci0gICAgeyAiY29uc3RydWN0
b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3IpIH0gfSwKLX07Ci0KIGNv
bnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGU6OnNf
aW5mbyA9IHsgIlRlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIiLCAmQmFzZTo6c19pbmZvLCBu
dWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkRGVsZXRlck5v
SWRlbnRpZmllclByb3RvdHlwZSkgfTsKIAogdm9pZCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50
aWZpZXJQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7Ci0gICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3ROYW1l
ZERlbGV0ZXJOb0lkZW50aWZpZXI6OmluZm8oKSwgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlm
aWVyUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBqc1VuZGVmaW5lZCgpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0NfVE9fU1RS
SU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKIH0KIApAQCAtMjI3LDI5ICsyMTgsNiBAQCBi
b29sIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4
KEpTQ2VsbCogY2VsbCwgSlNHbG9iYQogICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHlCeUluZGV4KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIGluZGV4KTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUganNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3IoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9i
amVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0g
ICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZERlbGV0ZXJOb0lk
ZW50aWZpZXJQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAg
IGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6OmdldENvbnN0cnVjdG9yKEpT
Qzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkp
KTsKLX0KLQotYm9vbCBzZXRKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3Rv
cihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCi17Ci0gICAgVk0mIHZtID0gSlND
OjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllclByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAg
ICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4g
Y29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19
Ci0KIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcjo6c3Vi
c3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQogewogICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3Rh
dGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJU
aHJvd2luZ0V4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCmluZGV4IGI4NTYw
ZmExYzljOWViYTdhOGMwZGJhYjIzOGRmNjE0OTE1MDBkNzYuLjA5M2Q4ODc4MWQ2ODFlYzRhZGU0
YjYzZjE3YjhhYjcxMjk5NDU0ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
RGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcApAQCAtNDQsMTEgKzQ0LDYgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLS8vIEF0dHJpYnV0ZXMKLQotSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0
cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlBy
b3BlcnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9u
Q29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOwotCiBjbGFzcyBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4
Y2VwdGlvblByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3Qgewog
cHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CkBAIC05MSw3
ICs4Niw5IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4
Y2VwdGlvbkNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTCiAKIHRlbXBsYXRlPD4gdm9pZCBKU1Rl
c3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJv
cGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE5hbWVkRGVs
ZXRlclRocm93aW5nRXhjZXB0aW9uOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBhdXRvKiBw
cm90b3R5cGUgPSBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6cHJvdG90eXBl
KHZtLCBnbG9iYWxPYmplY3QpOworICAgIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdE5hbWVkRGVsZXRlclRocm93
aW5nRXhjZXB0aW9uIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KQEAgLTk5LDE4
ICs5NiwxMiBAQCB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNl
cHRpb25Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcgogdGVtcGxhdGU8PiBjb25zdCBDbGFz
c0luZm8gSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3Rvcjo6c19p
bmZvID0geyAiVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uIiwgJkJhc2U6OnNfaW5m
bywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZERlbGV0
ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBw
cm90b3R5cGUgKi8KLQotc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE5hbWVkRGVs
ZXRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9Ci17Ci0gICAgeyAi
Y29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9u
Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVj
dG9yKSB9IH0sCi19OwotCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWREZWxldGVyVGhyb3dp
bmdFeGNlcHRpb25Qcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZERlbGV0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGUpIH07
CiAKIHZvaWQgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0g
ICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4
Y2VwdGlvbjo6aW5mbygpLCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3Rv
dHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5jb25zdHJ1Y3RvciwganNVbmRlZmluZWQoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgSlNDX1RPX1NUUklOR19UQUdf
V0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CiAKQEAgLTIyNywyOSArMjE4LDYgQEAgYm9vbCBKU1Rl
c3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpT
Q2VsbCogY2VsbCwgSlMKICAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRl
eChjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbmRleCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IGpzVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3IoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVj
dCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
YXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2lu
Z0V4Y2VwdGlvblByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0g
ICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uOjpnZXRDb25zdHJ1
Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9i
amVjdCgpKSk7Ci19Ci0KLWJvb2wgc2V0SlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRp
b25Db25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCi17Ci0gICAg
Vk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBl
Kj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXBy
b3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFk
b3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpKTsKLX0KLQogSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWREZWxldGVy
VGhyb3dpbmdFeGNlcHRpb246OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKIHsKICAgICBh
dXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50
RGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVy
LmNwcAppbmRleCAyYmJhY2JjM2I4ZDFmODU3NjIyZDJlZjRmMjZmZTE5ZDI4OWJiNGEyLi5iMDk5
MzBlZjU0OTA2ZWNkYzgwMWI1MTlhMzI2YmVjMzMzNjA1Y2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElk
ZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAKQEAgLTQ5LDExICs0OSw2IEBA
IHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uTmFtZWRE
ZWxldGVyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCi0vLyBBdHRy
aWJ1dGVzCi0KLUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50
aWZpZXJDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotYm9vbCBzZXRKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRl
bnRpZmllckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKLQogY2xhc3MgSlNUZXN0TmFtZWREZWxldGVyV2l0
aElkZW50aWZpZXJQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0
IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwpAQCAt
OTYsNyArOTEsOSBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWREZWxldGVyV2l0aElk
ZW50aWZpZXJDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydQogCiB0ZW1wbGF0ZTw+IHZvaWQg
SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVBy
b3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROYW1lZERl
bGV0ZXJXaXRoSWRlbnRpZmllcjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CisgICAgYXV0byogcHJv
dG90eXBlID0gSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6OnByb3RvdHlwZSh2bSwg
Z2xvYmFsT2JqZWN0KTsKKyAgICBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRE
ZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
Pm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRp
ZmllciJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CkBAIC0xMDcsNyArMTA0LDYg
QEAgdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50
aWZpZXJDb25zdHJ1Y3Rvcjo6c19pbmZvID0KIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVl
IEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9
CiB7Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkRGVsZXRlcldpdGhJ
ZGVudGlmaWVyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllckNv
bnN0cnVjdG9yKSB9IH0sCiAgICAgeyAibmFtZWREZWxldGVyIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3ROYW1lZERlbGV0ZXJX
aXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uTmFtZWREZWxldGVyKSwgKGludHB0cl90KSAo
MSkgfSB9LAogfTsKIApAQCAtMTE2LDYgKzExMiw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdE5hbWVk
CiB2b2lkIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGpzVW5kZWZpbmVkKCks
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkp
OwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0TmFtZWREZWxldGVyV2l0aElk
ZW50aWZpZXI6OmluZm8oKSwgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXJQcm90b3R5
cGVUYWJsZVZhbHVlcywgKnRoaXMpOwogICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJB
TlNJVElPTigpOwogfQpAQCAtMjM0LDI5ICsyMzEsNiBAQCB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllciogSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkRGVs
ZQogICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlm
aWVyKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFs
dWUoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlm
aWVyQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQotewotICAgIFZNJiB2bSA9IEpTQzo6
Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVu
dGlmaWVyOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBw
cm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7Ci19Ci0KLWJvb2wgc2V0SlNUZXN0TmFtZWREZWxl
dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
LSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRv
KiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlm
aWVyUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAo
VU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90
b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rp
b25OYW1lZERlbGV0ZXJCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMp
CiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAK
aW5kZXggNmJhNDIzZjZmMjI2NzFmNTgyZjkzMGI2NGQ4ZTEyMDdhM2QzY2Q4MS4uZjQxMTE3ZmI3
MTU4OWIzNDZiMjJkNzFlOTQxOGM2YzVjOGU2OTNlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVk
R2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCkBAIC00NSwxMSArNDUsNiBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotLy8gQXR0cmli
dXRlcwotCi1KU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVk
R2V0dGVyQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLWJvb2wgc2V0SlNUZXN0TmFtZWREZWxldGVyV2l0aElu
ZGV4ZWRHZXR0ZXJDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Ci0KIGNsYXNzIEpTVGVzdE5hbWVkRGVsZXRl
cldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5h
bE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVj
dDsKQEAgLTkyLDcgKzg3LDkgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkRGVsZXRl
cldpdGhJbmRleGVkR2V0dGVyQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclMKIAogdGVtcGxhdGU8
PiB2b2lkIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyQ29uc3RydWN0b3I6Omlu
aXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKIHsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNU
ZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2Jq
ZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwor
ICAgIGF1dG8qIHByb3RvdHlwZSA9IEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVy
Ojpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCk7CisgICAgcHJvdG90eXBlLT5wdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0TmFtZWRE
ZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwog
fQpAQCAtMTAwLDE4ICs5NywxMiBAQCB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWREZWxldGVy
V2l0aEluZGV4ZWRHZXR0ZXJDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcgogdGVtcGxhdGU8
PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXJDb25z
dHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyIiwg
JkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlckNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNo
IHRhYmxlIGZvciBwcm90b3R5cGUgKi8KLQotc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpT
VGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9
Ci17Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkRGVsZXRlcldpdGhJ
bmRleGVkR2V0dGVyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdl
dHRlckNvbnN0cnVjdG9yKSB9IH0sCi19OwotCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRE
ZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZERl
bGV0ZXJXaXRoSW5kZXhlZEdldHRlciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXJQ
cm90b3R5cGUpIH07CiAKIHZvaWQgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXJQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSk7Ci0gICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3ROYW1lZERlbGV0
ZXJXaXRoSW5kZXhlZEdldHRlcjo6aW5mbygpLCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhl
ZEdldHRlclByb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7CisgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwganNVbmRlZmluZWQoKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgSlNDX1RP
X1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CiAKQEAgLTI0MSwyOSArMjMyLDYg
QEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6ZGVsZXRlUHJvcGVy
dHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlMKICAgICByZXR1cm4gIWltcGwuaXNTdXBwb3J0ZWRQ
cm9wZXJ0eUluZGV4KGluZGV4KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWREZWxl
dGVyV2l0aEluZGV4ZWRHZXR0ZXJDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCi17Ci0g
ICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90
eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFko
IXByb3RvdHlwZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0
TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKLX0KLQot
Ym9vbCBzZXRKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlckNvbnN0cnVjdG9yKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWlu
IGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwot
fQotCiBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRl
cjo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQogewogICAgIGF1dG8mIGNsaWVudERhdGEg
PSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdl
dHRlckNhbGxXaXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNwcAppbmRleCAwYzg5OTMxMjQzNmI5ZDIxYzgz
MjQyNTJkMWQ5ZWYxYjM0YzJjMjJkLi4yN2QxNWU1NTUyYjhiOGQxMWRiN2MwZDRlMWVlMGI1YzAy
YWMyOGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguY3BwCkBAIC00
NCwxMSArNDQsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IAotLy8gQXR0cmlidXRlcwotCi1KU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkR2V0dGVy
Q2FsbFdpdGhDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotYm9vbCBzZXRKU1Rlc3ROYW1lZEdldHRlckNhbGxX
aXRoQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6RW5jb2RlZEpTVmFsdWUpOwotCiBjbGFzcyBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRo
UHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6
CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKQEAgLTkxLDcgKzg2LDkg
QEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGhDb25zdHJ1Y3Rv
cjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEoKIAogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVk
R2V0dGVyQ2FsbFdpdGhDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoOjpwcm90
b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBKU1Rlc3ROYW1lZEdldHRl
ckNhbGxXaXRoOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCk7CisgICAgcHJvdG90eXBlLT5w
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJU
ZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9
CkBAIC05OSwxOCArOTYsMTIgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkR2V0dGVyQ2Fs
bFdpdGhDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHYKIHRlbXBsYXRlPD4g
Y29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGhDb25zdHJ1Y3Rvcjo6c19p
bmZvID0geyAiVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGgiLCAmQmFzZTo6c19pbmZvLCBudWxscHRy
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGhD
b25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCi0KLXN0YXRp
YyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoUHJvdG90eXBl
VGFibGVWYWx1ZXNbXSA9Ci17Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5h
bWVkR2V0dGVyQ2FsbFdpdGhDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGhD
b25zdHJ1Y3RvcikgfSB9LAotfTsKLQogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkR2V0dGVy
Q2FsbFdpdGhQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZEdldHRlckNhbGxXaXRoIiwg
JkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rl
c3ROYW1lZEdldHRlckNhbGxXaXRoUHJvdG90eXBlKSB9OwogCiB2b2lkIEpTVGVzdE5hbWVkR2V0
dGVyQ2FsbFdpdGhQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rl
c3ROYW1lZEdldHRlckNhbGxXaXRoOjppbmZvKCksIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGhQ
cm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+Y29uc3RydWN0b3IsIGpzVW5kZWZpbmVkKCksIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIEpTQ19UT19TVFJJTkdf
VEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQogCkBAIC0yMDEsMjkgKzE5Miw2IEBAIHZvaWQg
SlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCog
b2JqZWN0LCBKU0dsb2JhbE9iCiAgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2Jq
ZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUganNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aENvbnN0cnVjdG9yKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAg
IGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0
aFByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVO
TElLRUxZKCFwcm90b3R5cGUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGg6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4
aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKLX0KLQotYm9v
bCBzZXRKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEds
b2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZEdldHRl
ckNhbGxXaXRoUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAg
ICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVy
biBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3Is
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogSlNDOjpJc29TdWJzcGFjZSog
SlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aDo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQog
ewogICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2
bS5jbGllbnREYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZp
ZXIuY3BwCmluZGV4IDE3YmNmNzkyNWIwZDU2MTFiNDNkNjczMjhhNWUxY2NlZTI1ZThlOTkuLjkz
MDEyMzc5ZDhlOWQ2ZmYwOTRjNGI0ZjhiYjI2ODQ3MGE1NDUxZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRl
bnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcApAQCAtNDQsMTEgKzQ0LDYgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLS8vIEF0dHJpYnV0ZXMK
LQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllckNvbnN0
cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlBy
b3BlcnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyQ29uc3Ry
dWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOwotCiBjbGFzcyBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllclByb3Rv
dHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAg
IHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CkBAIC05MSw3ICs4Niw5IEBAIHRl
bXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9y
Ojpwcm90b3R5cGVGb3JTdHJ1Y3R1CiAKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1lZEdldHRl
ck5vSWRlbnRpZmllckNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyOjpw
cm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRE
ZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBKU1Rlc3ROYW1lZEdl
dHRlck5vSWRlbnRpZmllcjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpOworICAgIHByb3Rv
dHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7
CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlw
ZSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5n
KHZtLCAiVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKTsKIH0KQEAgLTk5LDE4ICs5NiwxMiBAQCB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFt
ZWRHZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVgog
dGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXJD
b25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyIiwgJkJh
c2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RO
YW1lZEdldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZv
ciBwcm90b3R5cGUgKi8KLQotc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE5hbWVk
R2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9Ci17Ci0gICAgeyAiY29u
c3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0
b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSB9IH0sCi19Owot
CiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGU6
OnNfaW5mbyA9IHsgIlRlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllciIsICZCYXNlOjpzX2luZm8s
IG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRHZXR0ZXJO
b0lkZW50aWZpZXJQcm90b3R5cGUpIH07CiAKIHZvaWQgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50
aWZpZXJQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7Ci0gICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3ROYW1l
ZEdldHRlck5vSWRlbnRpZmllcjo6aW5mbygpLCBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmll
clByb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwganNVbmRlZmluZWQoKSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgSlNDX1RPX1NUUklO
R19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CiAKQEAgLTIwMSwyOSArMTkyLDYgQEAgdm9p
ZCBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllcjo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09i
amVjdCogb2JqZWN0LCBKU0dsb2IKICAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhv
YmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9i
YWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRHZXR0ZXJO
b0lkZW50aWZpZXJQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwot
ICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllcjo6Z2V0Q29uc3RydWN0b3Io
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3Qo
KSkpOwotfQotCi1ib29sIHNldEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0
b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQotewotICAgIFZNJiB2bSA9IEpT
Qzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllclByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAg
ICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4g
Y29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19
Ci0KIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyOjpzdWJz
cGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCiB7CiAgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0
aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0
aElkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCmluZGV4IGVmMTMyNjc0YzQ3M2Q0
MTU1Nzk2Y2ExZTM3NjdlNDU5ZDI2ZWE3MzQuLmUzYzg1MzdhZDk5YTFmOTNlNGYwYmFhNjI2NTgz
Mzg1ZmJiZWM2NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRl
bnRpZmllci5jcHAKQEAgLTQ5LDExICs0OSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIEpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZEdldHRlcldpdGhJZGVu
dGlmaWVyUHJvdG90eXBlRnVuY3Rpb25HZXR0ZXJOYW1lKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkNhbGxGcmFtZSopOwogCi0vLyBBdHRyaWJ1dGVzCi0KLUpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1ib29sIHNl
dEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Ci0KIGNs
YXNzIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGUgZmluYWwgOiBwdWJs
aWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlND
OjpKU05vbkZpbmFsT2JqZWN0OwpAQCAtOTYsNyArOTEsOSBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUg
SlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JT
dHJ1YwogCiB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllckNv
bnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5w
cm90b3R5cGUsIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXI6OnByb3RvdHlwZSh2bSwg
Z2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pOworICAgIGF1dG8qIHByb3RvdHlwZSA9IEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50
aWZpZXI6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBwcm90b3R5cGUtPnB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RO
YW1lZEdldHRlcldpdGhJZGVudGlmaWVyIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsK
IH0KQEAgLTEwNyw3ICsxMDQsNiBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RO
YW1lZEdldHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3I6OnNfaW5mbyA9CiAKIHN0YXRpYyBj
b25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyUHJvdG90
eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE5hbWVkR2V0dGVy
V2l0aElkZW50aWZpZXJDb25zdHJ1Y3RvcikgfSB9LAogICAgIHsgImdldHRlck5hbWUiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVz
dE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbkdldHRlck5hbWUpLCAo
aW50cHRyX3QpICgxKSB9IH0sCiB9OwogCkBAIC0xMTYsNiArMTEyLDcgQEAgY29uc3QgQ2xhc3NJ
bmZvIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGU6OnNfaW5mbyA9IHsg
IlRlc3ROYW1lZEcKIHZvaWQgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
KTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBqc1Vu
ZGVmaW5lZCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pKTsKICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdE5hbWVkR2V0
dGVyV2l0aElkZW50aWZpZXI6OmluZm8oKSwgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmll
clByb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7CiAgICAgSlNDX1RPX1NUUklOR19UQUdfV0lU
SE9VVF9UUkFOU0lUSU9OKCk7CiB9CkBAIC0yMTIsMjkgKzIwOSw2IEBAIHRlbXBsYXRlPD4gaW5s
aW5lIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIqIElETE9wZXJhdGlvbjxKU1Rlc3RO
YW1lZEdldHRlCiAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRHZXR0ZXJXaXRo
SWRlbnRpZmllcio+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUu
dGhpc1ZhbHVlKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZEdldHRlcldpdGhJ
ZGVudGlmaWVyQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQotewotICAgIFZNJiB2bSA9
IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlKj4odm0sIEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0TmFtZWRHZXR0ZXJXaXRo
SWRlbnRpZmllcjo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0
KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwotfQotCi1ib29sIHNldEpTVGVzdE5hbWVk
R2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBh
dXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50
aWZpZXJQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlm
IChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHBy
b3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0
aW9uR2V0dGVyTmFtZUJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVz
dE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXI+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQog
ewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlck5vSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCmluZGV4IGVmMDM5ZGI2
ZmUzOTE4ZmFkOWE3NjM0NzczMDZmOTM0ZjM0MDI4ZDcuLmNmZDRhZWM5OTA5MWEyZjVjNGQ5ZjY3
ZDc2ZTAyNWQ5OGM0YmY0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9J
ZGVudGlmaWVyLmNwcApAQCAtNDQsMTEgKzQ0LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVz
aW5nIG5hbWVzcGFjZSBKU0M7CiAKLS8vIEF0dHJpYnV0ZXMKLQotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1ib29sIHNl
dEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwotCiBjbGFz
cyBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBK
U0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpT
Tm9uRmluYWxPYmplY3Q7CkBAIC05MSw3ICs4Niw5IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rl
c3ROYW1lZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1
CiAKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVj
dG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCiB7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUsIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpwcm90b3R5cGUodm0sIGdsb2JhbE9i
amVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsK
KyAgICBhdXRvKiBwcm90b3R5cGUgPSBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6cHJv
dG90eXBlKHZtLCBnbG9iYWxPYmplY3QpOworICAgIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZSwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdE5hbWVkU2V0dGVy
Tm9JZGVudGlmaWVyIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KQEAgLTk5LDE4
ICs5NiwxMiBAQCB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXJD
b25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVgogdGVtcGxhdGU8PiBjb25zdCBDbGFz
c0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwg
bnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmll
ckNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KLQotc3Rh
dGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyUHJv
dG90eXBlVGFibGVWYWx1ZXNbXSA9Ci17Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3ROYW1lZFNldHRl
ck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSB9IH0sCi19OwotCiBjb25zdCBDbGFzc0luZm8gSlNU
ZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3ROYW1l
ZFNldHRlck5vSWRlbnRpZmllciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGUp
IH07CiAKIHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAg
cmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6
aW5mbygpLCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlwZVRhYmxlVmFsdWVz
LCAqdGhpcyk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rv
ciwganNVbmRlZmluZWQoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lU
SU9OKCk7CiB9CiAKQEAgLTI3MCwyOSArMjYxLDYgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlck5v
SWRlbnRpZmllcjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWwK
ICAgICByZXR1cm4gSlNPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgbGV4aWNhbEds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBuZXdQcm9wZXJ0eURlc2NyaXB0b3IsIHNob3VsZFRo
cm93KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXJD
b25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI6Omdl
dENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+
Z2xvYmFsT2JqZWN0KCkpKTsKLX0KLQotYm9vbCBzZXRKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRp
ZmllckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKLXsKLSAg
ICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGUqPih2
bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90
eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2lu
ZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSkpOwotfQotCiBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZFNldHRlck5vSWRl
bnRpZmllcjo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQogewogICAgIGF1dG8mIGNsaWVu
dERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcApp
bmRleCAyYzc5ZTNkMzEzMzFlYzdmM2I1YzZjYzZmMDViMzZjZTliYTViMGVlLi5jYmY0ZTQ2YzYw
MGQ5OGU4NDVjNDNkZDQ5NGRmYjkwMDcyYjNjODZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCkBAIC00NCwxMSArNDQsNiBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotLy8gQXR0cmlidXRl
cwotCi1KU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b25Db25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpQcm9wZXJ0eU5hbWUpOwotYm9vbCBzZXRKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwotCiBjbGFzcyBKU1Rlc3ROYW1lZFNldHRlclRocm93
aW5nRXhjZXB0aW9uUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVj
dCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKQEAg
LTkxLDcgKzg2LDkgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb25Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3QKIAogdGVtcGxhdGU8PiB2b2lk
IEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6
ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewot
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROYW1l
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBhdXRv
KiBwcm90b3R5cGUgPSBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpwcm90b3R5
cGUodm0sIGdsb2JhbE9iamVjdCk7CisgICAgcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0TmFtZWRTZXR0ZXJUaHJv
d2luZ0V4Y2VwdGlvbiJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CkBAIC05OSwx
OCArOTYsMTIgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb25Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnQKIHRlbXBsYXRlPD4gY29uc3QgQ2xh
c3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3Rvcjo6c19p
bmZvID0geyAiVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24iLCAmQmFzZTo6c19pbmZv
LCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJv
dG90eXBlICovCi0KLXN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3ROYW1lZFNldHRl
clRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9Ci17Ci0gICAgeyAiY29u
c3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Db25z
dHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3Rvcikg
fSB9LAotfTsKLQogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb25Qcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0
aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJM
RShKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlKSB9OwogCiB2b2lk
IEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgcmVpZnlT
dGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpp
bmZvKCksIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGVUYWJsZVZh
bHVlcywgKnRoaXMpOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3Ry
dWN0b3IsIGpzVW5kZWZpbmVkKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJB
TlNJVElPTigpOwogfQogCkBAIC0yNzAsMjkgKzI2MSw2IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwg
SlNHCiAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGxleGlj
YWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgbmV3UHJvcGVydHlEZXNjcmlwdG9yLCBzaG91
bGRUaHJvdyk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb25Db25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCi17Ci0gICAgVk0mIHZtID0g
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGUqPih2bSwgSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3ROYW1lZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7Ci19Ci0KLWJvb2wgc2V0SlNUZXN0
TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9i
YWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBl
RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAg
ICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0
cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIEpTQzo6SXNvU3Vi
c3BhY2UqIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OnN1YnNwYWNlRm9ySW1w
bChKU0M6OlZNJiB2bSkKIHsKICAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpT
Vk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKaW5kZXggMTQ2YjQxNGIxZGY5Y2Q3NGJjMDlhNjQx
NDQ0YTVkMjA5ZmY3NWY0Mi4uMjNmYzljNzgyYmY1Mjk4YTg3NWIyZTEwMzRlZTE4YTg3MmQ3ZmE2
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNw
cApAQCAtNDksMTEgKzQ5LDYgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90
b3R5cGVGdW5jdGlvbk5hbWVkU2V0dGVyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxG
cmFtZSopOwogCi0vLyBBdHRyaWJ1dGVzCi0KLUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdE5h
bWVkU2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Ci0KIGNsYXNzIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpK
U05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZp
bmFsT2JqZWN0OwpAQCAtOTYsNyArOTEsOSBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1YwogCiB0
ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9y
Ojppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCiB7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUs
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2Jq
ZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwor
ICAgIGF1dG8qIHByb3RvdHlwZSA9IEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI6OnBy
b3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3ROYW1lZFNldHRl
cldpdGhJZGVudGlmaWVyIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KQEAgLTEw
Nyw3ICsxMDQsNiBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRl
cldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3I6OnNfaW5mbyA9CiAKIHN0YXRpYyBjb25zdCBIYXNo
VGFibGVWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlVGFibGVW
YWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkU2V0
dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50
aWZpZXJDb25zdHJ1Y3RvcikgfSB9LAogICAgIHsgIm5hbWVkU2V0dGVyIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3ROYW1lZFNl
dHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25OYW1lZFNldHRlciksIChpbnRwdHJf
dCkgKDIpIH0gfSwKIH07CiAKQEAgLTExNiw2ICsxMTIsNyBAQCBjb25zdCBDbGFzc0luZm8gSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdE5h
bWVkUwogdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGpzVW5kZWZpbmVk
KCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSkpOwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
SWRlbnRpZmllcjo6aW5mbygpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90
eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKICAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RS
QU5TSVRJT04oKTsKIH0KQEAgLTI4MSwyOSArMjc4LDYgQEAgdGVtcGxhdGU8PiBpbmxpbmUgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllciogSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkU2V0
dGUKICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlm
aWVyKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFs
dWUoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZp
ZXJDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlm
aWVyOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90
b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7Ci19Ci0KLWJvb2wgc2V0SlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHBy
b3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllclBy
b3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElL
RUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAg
Ly8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBl
LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25OYW1l
ZFNldHRlckJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
OjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVk
U2V0dGVyV2l0aElkZW50aWZpZXI+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQogewogICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAppbmRleCBkYjA4
MmU5ZjdhMzdmYWMwNWQ5ZTk0ZTIwY2RmZmEyZGMyNGU0ZTY1Li4xZTliODE3YWRkZDc0MTA4Y2Qx
Y2JiMjQ1Njc0YzMyNGJiOTgyYWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCkBAIC01MiwxMSArNTIsNiBAQCB1c2luZyBuYW1l
c3BhY2UgSlNDOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0dGVyKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGVG
dW5jdGlvbkluZGV4ZWRTZXR0ZXIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1l
Kik7CiAKLS8vIEF0dHJpYnV0ZXMKLQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLWJvb2wgc2V0SlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKLQogY2xhc3MgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBK
U0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpT
Tm9uRmluYWxPYmplY3Q7CkBAIC05OSw3ICs5NCw5IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rl
c3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0
CiAKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQ29u
c3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKIHsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnBy
b3RvdHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjo6cHJvdG90eXBlKHZt
LCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSk7CisgICAgYXV0byogcHJvdG90eXBlID0gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5k
ZXhlZEdldHRlcjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpOworICAgIHByb3RvdHlwZS0+
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZSwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAi
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pOwogfQpAQCAtMTEwLDcgKzEwNyw2IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZv
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJDb25zdHJ1Y3Rvcjo6c19pbmZvCiAK
IHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3IiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJDb25zdHJ1Y3RvciksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJDb25zdHJ1Y3RvcikgfSB9LAogICAgIHsg
Im5hbWVkU2V0dGVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05h
dGl2ZUZ1bmN0aW9uPihqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBl
RnVuY3Rpb25OYW1lZFNldHRlciksIChpbnRwdHJfdCkgKDIpIH0gfSwKICAgICB7ICJpbmRleGVk
U2V0dGVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1
bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1
bmN0aW9uPihqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlRnVuY3Rp
b25JbmRleGVkU2V0dGVyKSwgKGludHB0cl90KSAoMSkgfSB9LAogfTsKQEAgLTEyMCw2ICsxMTYs
NyBAQCBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclBy
b3RvdHlwZTo6c19pbmZvID0geyAiVGVzdE5hbQogdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJ
bmRleGVkR2V0dGVyUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFz
ZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+Y29uc3RydWN0b3IsIGpzVW5kZWZpbmVkKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGll
cyh2bSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjo6aW5mbygpLCBKU1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsK
ICAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKIH0KQEAgLTMwNiwy
OSArMzAzLDYgQEAgdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlciogSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkU2UKICAgICByZXR1cm4ganNEeW5hbWlj
Q2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyKj4oSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJDb25zdHJ1Y3RvcihKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
LSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyOjpnZXRDb25z
dHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2Jh
bE9iamVjdCgpKSk7Ci19Ci0KLWJvb2wgc2V0SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdl
dHRlckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKLXsKLSAg
ICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlw
ZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFw
cm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hh
ZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlRnVuY3Rpb25OYW1lZFNl
dHRlckJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkU2V0
dGVyV2l0aEluZGV4ZWRHZXR0ZXI+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQogewogICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0
dGVyLmNwcAppbmRleCBhYTE4ZTJkYjg4Zjc3NTMyZTE2MDMzYjRlMTNiZGNiODIwZmNkNjMwLi5m
MzJhYmY4MzYxZjU1ZDIyY2Y5MWRkMTdhYjgyN2IxMzg4OGY2NjEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0
ZXIuY3BwCkBAIC01MiwxMSArNTIsNiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXJBbmRTZXR0ZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0dGVyKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkNhbGxGcmFtZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5cGVGdW5j
dGlvbkluZGV4ZWRTZXR0ZXIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7
CiAKLS8vIEF0dHJpYnV0ZXMKLQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLWJvb2wgc2V0SlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlckNvbnN0cnVjdG9yKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVl
KTsKLQogY2xhc3MgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlclBy
b3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgog
ICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CkBAIC05OSw3ICs5NCw5IEBA
IHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5k
U2V0dGVyQ29uc3RydWN0b3I6OnByb3RvCiAKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9w
ZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3Qp
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CisgICAg
YXV0byogcHJvdG90eXBlID0gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNl
dHRlcjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpOworICAgIHByb3RvdHlwZS0+cHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZSwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIiX3MpLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pOwogfQpAQCAtMTEwLDcgKzEwNyw2IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJ
bmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJDb25zdHJ1Y3Rv
CiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyQW5kU2V0dGVyUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29u
c3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRT
ZXR0ZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRT
ZXR0ZXJDb25zdHJ1Y3RvcikgfSB9LAogICAgIHsgIm5hbWVkU2V0dGVyIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyUHJvdG90eXBlRnVuY3Rpb25OYW1lZFNldHRl
ciksIChpbnRwdHJfdCkgKDIpIH0gfSwKICAgICB7ICJpbmRleGVkU2V0dGVyIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVk
U2V0dGVyKSwgKGludHB0cl90KSAoMSkgfSB9LAogfTsKQEAgLTEyMCw2ICsxMTYsNyBAQCBjb25z
dCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlclBy
b3RvdHlwZTo6c19pbmZvID0gewogdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyQW5kU2V0dGVyUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFz
ZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+Y29uc3RydWN0b3IsIGpzVW5kZWZpbmVkKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGll
cyh2bSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcjo6aW5mbygp
LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyUHJvdG90eXBlVGFi
bGVWYWx1ZXMsICp0aGlzKTsKICAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJ
T04oKTsKIH0KQEAgLTMyOSwyOSArMzI2LDYgQEAgdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlciogSURMT3BlcmF0aW9uPEpTVGUKICAg
ICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
QW5kU2V0dGVyKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50
aGlzVmFsdWUoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCi17Ci0g
ICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0
ZXJQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChV
TkxJS0VMWSghcHJvdG90eXBlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyOjpnZXRDb25zdHJ1
Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9i
amVjdCgpKSk7Ci19Ci0KLWJvb2wgc2V0SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRl
ckFuZFNldHRlckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkK
LXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3Rv
dHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFu
ZFNldHRlclByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAg
aWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4g
cHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVy
UHJvdG90eXBlRnVuY3Rpb25OYW1lZFNldHRlckJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURM
T3BlcmF0aW9uPEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI+OjpD
bGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAppbmRleCA2Mjc1ZWMyYmY2
ODY2Yjk5YjllOGMzOGZhYTY5OWU5NmQ2ODRiODc0Li5kOGMxM2ZjY2E2NDdmYjBlNzNlOWU5YmRm
NzZhMzA5ZDc5ODA2YjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCkBAIC00NCwxMSArNDQsNiBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotLy8gQXR0cmli
dXRlcwotCi1KU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotYm9vbCBzZXRKU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwotCiBjbGFzcyBK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlIGZpbmFs
IDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFz
ZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKQEAgLTkxLDcgKzg2LDkgQEAgdGVtcGxhdGU8PiBK
U1ZhbHVlIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1
Y3Rvcjo6cHJvdG8KIAogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBhdXRvKiBwcm90b3R5
cGUgPSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpwcm90b3R5
cGUodm0sIGdsb2JhbE9iamVjdCk7CisgICAgcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5T3ZlcnJpZGVCdWlsdElucyJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9
CkBAIC05OSwxOCArOTYsMTIgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3Rvcjo6aW5pdGlhbGkKIHRlbXBsYXRlPD4g
Y29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnNDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25z
dHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCi0KLXN0YXRpYyBj
b25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9Ci17Ci0gICAgeyAiY29uc3RydWN0b3IiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1
Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1
Y3RvcikgfSB9LAotfTsKLQogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zUHJvdG90eXBlKSB9OwogCiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsK
ICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVz
KHZtLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjppbmZvKCks
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGVUYWJs
ZVZhbHVlcywgKnRoaXMpOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29u
c3RydWN0b3IsIGpzVW5kZWZpbmVkKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRf
VFJBTlNJVElPTigpOwogfQogCkBAIC0yNTEsMjkgKzI0Miw2IEBAIGJvb2wgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmpl
Y3QqIG9iCiAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGxl
eGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgbmV3UHJvcGVydHlEZXNjcmlwdG9yLCBz
aG91bGRUaHJvdyk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCi17Ci0g
ICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnNQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChV
TkxJS0VMWSghcHJvdG90eXBlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpnZXRDb25zdHJ1
Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9i
amVjdCgpKSk7Ci19Ci0KLWJvb2wgc2V0SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJp
ZGVCdWlsdEluc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkK
LXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3Rv
dHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVC
dWlsdEluc1Byb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAg
aWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4g
cHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIEpTQzo6SXNvU3Vic3BhY2UqIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OnN1YnNwYWNlRm9ySW1w
bChKU0M6OlZNJiB2bSkKIHsKICAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpT
Vk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMu
Y3BwCmluZGV4IGVlYjI2YWIyMjRiZmIzYThiNzgxNThkNDg2NDAxMGJiNGNhMTFhMzIuLjU5YmU4
MjQ0NjE0Njk5MzBjZTNkNjAzNTVlMTFkMWNmOWZiYjdhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXMuY3BwCkBAIC01Miw4ICs1Miw2IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpCiAK
IC8vIEF0dHJpYnV0ZXMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotYm9vbCBzZXRK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3Rv
cihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc1VuZm9yZ2VhYmxlQXR0cmlidXRlKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiAKIGNsYXNz
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1Byb3RvdHlw
ZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewpAQCAtMTE1LDcgKzExMyw5
IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNDb25zdHJ1Y3Rvcjo6CiAKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3Rvcjo6aW5pdGlh
bGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQog
ewotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6OnByb3RvdHlwZSh2bSwg
Z2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pOworICAgIGF1dG8qIHByb3RvdHlwZSA9IEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllczo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpOworICAg
IHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvciwg
dGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHBy
b3RvdHlwZSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
OwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFs
U3RyaW5nKHZtLCAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
cyJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CkBAIC0xMjMsMTggKzEyMywxMiBA
QCB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzQ29uc3RydWN0b3I6OmluaQogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3I6
OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVj
dG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KLQotc3RhdGljIGNvbnN0
IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc1Byb3RvdHlwZVRhYmxlVmFsdWVzW10gPQotewotICAgIHsgImNvbnN0cnVjdG9yIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXND
b25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0NvbnN0cnVjdG9yKSB9IH0sCi19OwotCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90eXBlOjpzX2luZm8gPSB7
ICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzIiwgJkJhc2U6
OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNQcm90b3R5cGUpIH07CiAKIHZv
aWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
dm0pOwotICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzOjppbmZvKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1Byb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7
CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwganNVbmRl
ZmluZWQoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSk7CiAgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9
CiAKQEAgLTMxMSwyOSArMzA1LDYgQEAgdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKiBJRExPcGVyYXRpb24KICAgICByZXR1
cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXMqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRo
aXNWYWx1ZSgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQot
ewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90
eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwot
ICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXM6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3Rv
dHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKLX0KLQotYm9vbCBzZXRKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1Byb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAg
ICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4g
Y29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19
Ci0KIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNVbmZvcmdlYWJsZUF0dHJpYnV0ZUdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzJiB0aGlzT2JqZWN0KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAKaW5kZXggNTE2
YzZkOTUyOWExZmE1MzhmYzdlYmM0MGI4ZmFkOGYyN2VlZDU0NS4uMWY5YzRiZWI3ZmM1NjI0OWUx
Njg3NjM0ZDAwOGI2OGU4ZjZmNTRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcApAQCAtNTIs
OCArNTIsNiBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aQogCiAvLyBBdHRyaWJ1dGVzCiAKLUpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1ib29s
IHNldEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnNVbmZvcmdlYWJsZUF0dHJpYnV0ZShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogCiBjbGFzcyBK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9i
amVjdCB7CkBAIC0xMTUsNyArMTEzLDkgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXIKIAogdGVt
cGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3Bl
cnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
Ojpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCk7CisgICAgcHJvdG90eXBlLT5wdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJp
ZGVCdWlsdElucyJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CkBAIC0xMjMsMTgg
KzEyMywxMiBAQCB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZAogdGVtcGxhdGU8PiBjb25zdCBDbGFz
c0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dElucyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBw
cm90b3R5cGUgKi8KLQotc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnNQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KLXsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVj
dG9yKSB9IH0sCi19OwotCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlw
ZTo6c19pbmZvID0geyAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGUpIH07
CiAKIHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
QW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
KQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICByZWlmeVN0YXRpY1Byb3Bl
cnRpZXModm0sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
c0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmluZm8oKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3Rv
dHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5jb25zdHJ1Y3RvciwganNVbmRlZmluZWQoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgSlNDX1RPX1NUUklOR19UQUdf
V0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CiAKQEAgLTI5MiwyOSArMjg2LDYgQEAgdGVtcGxhdGU8
PiBpbmxpbmUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
QW5kTGVnYWN5T3ZlcnIKICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
Kj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUo
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvcihKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
LSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90
b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VM
WSghcHJvdG90eXBlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7Ci19Ci0KLWJvb2wgc2V0SlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVC
dWlsdEluc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKLXsK
LSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlw
ZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSo+KHZtLCBKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0g
ICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQt
aW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7
Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zVW5mb3JnZWFibGVB
dHRyaWJ1dGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnMmIHRoaXNPYmplY3QpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAppbmRleCA2Mzk3ZmYwZjQ0YTAxNjRiMTJk
NzZkYzYxNzJjOWIyY2EzMmI5YzQwLi5mMjYwOGI3NzlkZmM5Y2MxMDUzMWFkZjM5Nzg3MTg2NGE3
NjY1ZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCkBAIC02OSw4ICs2OSw2IEBAIEpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04oSlNDOjpK
U0dsb2JhCiAKIC8vIEF0dHJpYnV0ZXMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb2Rl
Q29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6UHJvcGVydHlOYW1lKTsKLWJvb2wgc2V0SlNUZXN0Tm9kZUNvbnN0cnVjdG9yKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsK
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Tm9kZU5hbWUoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIGJvb2wgc2V0SlNUZXN0
Tm9kZU5hbWUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
RW5jb2RlZEpTVmFsdWUpOwogCkBAIC0xMzEsNyArMTI5LDkgQEAgdGVtcGxhdGU8PiBKU1ZhbHVl
IEpTVGVzdE5vZGVDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBjb24KIAogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5vZGVDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6
ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewot
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROb2Rl
Ojpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBKU1Rlc3ROb2Rl
Ojpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCk7CisgICAgcHJvdG90eXBlLT5wdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0Tm9kZSJf
cyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CkBAIC0xNDIsNyArMTQyLDYgQEAgdGVt
cGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0Tm9kZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7
ICJUZXN0Tm9kZSIsICZCYXNlOjoKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVz
dE5vZGVQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0Tm9kZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0Tm9kZUNvbnN0cnVjdG9yKSB9IH0s
CiAgICAgeyAibmFtZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0Tm9kZU5hbWUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3ROb2RlTmFtZSkgfSB9LAogICAgIHsg
InRlc3RXb3JrZXJQcm9taXNlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25UZXN0V29ya2Vy
UHJvbWlzZSksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJjYWxjdWxhdGVTZWNyZXRSZXN1
bHQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rp
b24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rp
b24+KGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkNhbGN1bGF0ZVNlY3JldFJlc3VsdCksIChp
bnRwdHJfdCkgKDApIH0gfSwKQEAgLTE2NCw2ICsxNjMsNyBAQCBjb25zdCBDbGFzc0luZm8gSlNU
ZXN0Tm9kZVByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdE5vZGUiLCAmQmFzZTo6c19pbmZvLCBu
dWxscAogdm9pZCBKU1Rlc3ROb2RlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7
CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGpzVW5kZWZpbmVkKCksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIHJlaWZ5U3RhdGlj
UHJvcGVydGllcyh2bSwgSlNUZXN0Tm9kZTo6aW5mbygpLCBKU1Rlc3ROb2RlUHJvdG90eXBlVGFi
bGVWYWx1ZXMsICp0aGlzKTsKICAgICBib29sIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMg
PSBmYWxzZTsKICAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVj
dCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1NlY3VyZUNvbnRleHQoKSkgewpAQCAt
MjY0LDI5ICsyNjQsNiBAQCB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3ROb2RlKiBJRExPcGVyYXRp
b248SlNUZXN0Tm9kZT46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleAogICAgIHJldHVybiBqc0R5
bmFtaWNDYXN0PEpTVGVzdE5vZGUqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwg
Y2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9kZUNv
bnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZN
KGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
Tm9kZVByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYg
KFVOTElLRUxZKCFwcm90b3R5cGUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTVGVzdE5vZGU6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9i
amVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKLX0KLQotYm9vbCBzZXRKU1Rlc3RO
b2RlQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQotewotICAg
IFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3ROb2RlUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1
Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE5vZGVOYW1lR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3ROb2RlJiB0aGlzT2JqZWN0KQogewogICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IDJh
ZGUwMzRjYmIyOTAxOTMwODFlYjlhNTU1ZmRmNjhjYmRiZmUxMDQuLjA5ZDgxZTk2ZTQ5MDM4ZGQ3
ZjY2YmNmYmQ4NDk2NzZjYjZiMDc3Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC0xNTk4LDggKzE1OTgsNiBA
QCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25Ub0pTT04oSlNDOjpKU0dsb2JhbAogCiAvLyBBdHRyaWJ1dGVzCiAKLUpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLWJvb2wgc2V0SlNUZXN0T2JqQ29u
c3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWFkT25seUxv
bmdBdHRyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlBy
b3BlcnR5TmFtZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5U3RyaW5n
QXR0cihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWFkT25seVRlc3RPYmpB
dHRyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSk7CkBAIC0xOTk1LDcgKzE5OTMsOSBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0
T2JqQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29ucwog
CiB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0T2JqQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0
aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0T2JqOjpwcm90b3R5
cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBKU1Rlc3RPYmo6OnByb3RvdHlw
ZSh2bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RPYmplY3QiX3MpLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNO
dW1iZXIoMiksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNU
ZXN0T2JqOjppbmZvKCksIEpTVGVzdE9iakNvbnN0cnVjdG9yVGFibGVWYWx1ZXMsICp0aGlzKTsK
QEAgLTIwMjMsNyArMjAyMyw2IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE9i
akNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0T2JqZWN0IiwgJkJhc2U6CiAKIHN0YXRpYyBj
b25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsK
LSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqQ29uc3RydWN0b3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rl
c3RPYmpDb25zdHJ1Y3RvcikgfSB9LAogICAgIHsgInJlYWRPbmx5TG9uZ0F0dHIiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqUmVhZE9ubHlMb25nQXR0ciksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwK
ICAgICB7ICJyZWFkT25seVN0cmluZ0F0dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0T2JqUmVhZE9ubHlTdHJpbmdBdHRyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgInJlYWRPbmx5VGVz
dE9iakF0dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqUmVhZE9u
bHlUZXN0T2JqQXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KDApIH0gfSwKQEAgLTIzNjEsNiArMjM2MCw3IEBAIGNvbnN0IENsYXNzSW5m
byBKU1Rlc3RPYmpQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RPYmplY3QiLCAmQmFzZTo6c19p
bmZvLCBudWxsCiB2b2lkIEpTVGVzdE9ialByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
KQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBqc1VuZGVmaW5lZCgpLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICByZWlmeVN0
YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdE9iajo6aW5mbygpLCBKU1Rlc3RPYmpQcm90b3R5cGVU
YWJsZVZhbHVlcywgKnRoaXMpOwogICAgIGJvb2wgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGll
cyA9IGZhbHNlOwogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCkBAIC0yNjQxLDI5ICsyNjQxLDYg
QEAgdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0T2JqKiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWMKICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNW
YWx1ZSgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3IoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9i
amVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0g
ICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPih2
bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90
eXBlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RPYmo6Omdl
dENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+
Z2xvYmFsT2JqZWN0KCkpKTsKLX0KLQotYm9vbCBzZXRKU1Rlc3RPYmpDb25zdHJ1Y3RvcihKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9ialByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYg
KFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJv
dG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1Rlc3RPYmpSZWFkT25seUxvbmdBdHRyR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU1Rlc3RPYmomIHRoaXNPYmplY3QpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3BlcmF0aW9u
Q29uZGl0aW9uYWwuY3BwCmluZGV4IDRiNGJhNzM4M2ZiOTA1ZjJlMzc5OTNhYjk5MzBhMWYwNTEw
ZTYzZjIuLjhlZDM5NjkyNTAwMjFjNGYxNmNiNTcxNzM4NTUyMzJjNWNkZmE4ZWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPcGVyYXRp
b25Db25kaXRpb25hbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsLmNwcApAQCAtNTUsMTEgKzU1LDYgQEAg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9wZXJhdGlvbkNvbmRpdGlv
bmFsUHJvdG90eXBlRnVuY3Rpb25Ob24KIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbFByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxP
cGVyYXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAjZW5kaWYK
IAotLy8gQXR0cmlidXRlcwotCi1KU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9wZXJhdGlvbkNv
bmRpdGlvbmFsQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLWJvb2wgc2V0SlNUZXN0T3BlcmF0aW9uQ29uZGl0
aW9uYWxDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Ci0KIGNsYXNzIEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlv
bmFsUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJs
aWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKQEAgLTEwMiw3ICs5
Nyw5IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbENvbnN0
cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoCiAKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RP
cGVyYXRpb25Db25kaXRpb25hbENvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYg
dm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFs
Ojpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBKU1Rlc3RPcGVy
YXRpb25Db25kaXRpb25hbDo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpOworICAgIHByb3Rv
dHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7
CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlw
ZSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5n
KHZtLCAiVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKTsKIH0KQEAgLTExMyw3ICsxMTAsNiBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBK
U1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZQogCiBz
dGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxQcm90
b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNU
ZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9wZXJhdGlvbkNvbmRp
dGlvbmFsQ29uc3RydWN0b3IpIH0gfSwKICNpZiBFTkFCTEUoQ29uZGl0aW9uQmFzZSkKICAgICB7
ICJub25Db25kaXRpb25hbE9wZXJhdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxQcm90
b3R5cGVGdW5jdGlvbk5vbkNvbmRpdGlvbmFsT3BlcmF0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9
LAogI2Vsc2UKQEAgLTEzMSw2ICsxMjcsNyBAQCBjb25zdCBDbGFzc0luZm8gSlNUZXN0T3BlcmF0
aW9uQ29uZGl0aW9uYWxQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RPcGVyYXRpb25Dbwogdm9p
ZCBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBqc1VuZGVmaW5lZCgpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICByZWlm
eVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsOjppbmZvKCks
IEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsK
ICAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKIH0KQEAgLTE3Nywy
OSArMTc0LDYgQEAgdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwq
IElETE9wZXJhdGlvbjxKU1Rlc3RPcGVyYXRpb25Db25kaXQKICAgICByZXR1cm4ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbCo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
LXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3Rv
dHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxQcm90b3R5cGUq
Pih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJv
dG90eXBlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RPcGVy
YXRpb25Db25kaXRpb25hbDo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwotfQotCi1ib29sIHNldEpTVGVz
dE9wZXJhdGlvbkNvbmRpdGlvbmFsQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVj
dCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
YXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25h
bFByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVO
TElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0g
ICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90
eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KICNpZiBFTkFCTEUoQ29uZGl0aW9uQmFzZSkK
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPcGVyYXRpb25Db25kaXRp
b25hbFByb3RvdHlwZUZ1bmN0aW9uTm9uQ29uZGl0aW9uYWxPcGVyYXRpb25Cb2R5KEpTQzo6SlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJh
bWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbD46OkNs
YXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycy5jcHAKaW5kZXggNWEyYTgyMGM3NTZmNmE0ZDU3YmY3ODY4N2Q3NDMxYThh
M2JlMjMwMS4uYTk4ZDMyODMzNzhmZWVmZTVkZWM2Y2M2NjYyNDc5ZjI3MzA5M2FjNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApAQCAtNDgsMTEgKzQ4
LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLS8vIEF0
dHJpYnV0ZXMKLQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6UHJvcGVydHlOYW1lKTsKLWJvb2wgc2V0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OkVuY29kZWRKU1ZhbHVlKTsKLQogY2xhc3MgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1Byb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGlj
OgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CkBAIC0yMTMsNyArMjA4
LDkgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25z
dHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXIKIAogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0m
IHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCk7CisgICAg
cHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0
aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJv
dG90eXBlLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7
CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxT
dHJpbmcodm0sICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyJfcyksIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwog
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7CiB9CkBAIC0yMjEsMTggKzIxOCwxMiBAQCB0ZW1wbGF0ZTw+IHZvaWQgSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGll
cyhWTQogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyIs
ICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxl
IGZvciBwcm90b3R5cGUgKi8KLQotc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KLXsKLSAgICB7ICJj
b25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVj
dG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKSB9IH0sCi19Owot
CiBjb25zdCBDbGFzc0luZm8gSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZTo6
c19pbmZvID0geyAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMiLCAmQmFzZTo6c19pbmZvLCBu
dWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNQcm90b3R5cGUpIH07CiAKIHZvaWQgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtKTsKLSAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM6OmluZm8oKSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3Rv
dHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5jb25zdHJ1Y3RvciwganNVbmRlZmluZWQoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgSlNDX1RPX1NUUklOR19UQUdf
V0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CiAKQEAgLTI3MywyOSArMjY0LDYgQEAgdm9pZCBKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQogICAg
IHRoaXNPYmplY3QtPkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6On5KU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzKCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCi17Ci0gICAgVk0mIHZt
ID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUqPih2bSwgSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBw
cm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7Ci19Ci0KLWJvb2wgc2V0SlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHBy
b3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3Rv
dHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZ
KCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8g
U2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5w
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKIHsKICAgICBhdXRv
JiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0
YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1dpdGhTZXF1ZW5jZS5jcHAKaW5kZXggYTkyMDIyNDRhNWEzMTIzYTlmYWJmMjY3N2MyYzAzMjhl
NmZlOTJlMC4uMWZmYWJiY2U2NGM3OTYwOGUxMTI4MjE2NmUzMDA4M2U2YTc1NzU3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNl
cXVlbmNlLmNwcApAQCAtNDcsMTEgKzQ3LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CiAKLS8vIEF0dHJpYnV0ZXMKLQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3IoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
LWJvb2wgc2V0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVj
dG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKLQogY2xhc3MgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1
ZW5jZVByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVi
bGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CkBAIC0xNTIsNyAr
MTQ3LDkgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNX
aXRoU2VxdWVuY2VDb25zdHJ1Y3Rvcjo6cHJvdG90eXAKIAogdGVtcGxhdGU8PiB2b2lkIEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6
ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewot
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVj
dCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAg
ICBhdXRvKiBwcm90b3R5cGUgPSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVl
bmNlOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCk7CisgICAgcHJvdG90eXBlLT5wdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSk7CiB9CkBAIC0xNjAsMTggKzE1NywxMiBAQCB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yOjppbml0aWFsaXplUAog
dGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dp
dGhTZXF1ZW5jZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc1dpdGhTZXF1ZW5jZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNv
bnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KLQotc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2Vx
dWVuY2VQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KLXsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9y
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yKSB9
IH0sCi19OwotCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dp
dGhTZXF1ZW5jZVByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNXaXRoU2VxdWVuY2UiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VQcm90
b3R5cGUpIH07CiAKIHZvaWQgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5j
ZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtKTsKLSAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U6OmluZm8oKSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc1dpdGhTZXF1ZW5jZVByb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7CisgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwganNVbmRlZmluZWQoKSwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7
CiAgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CiAKQEAgLTIx
MiwyOSArMjAzLDYgQEAgdm9pZCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVl
bmNlOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQogICAgIHRoaXNPYmplY3QtPkpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U6On5KU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzV2l0aFNlcXVlbmNlKCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
Ci17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90
b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2Vx
dWVuY2VQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlm
IChVTkxJS0VMWSghcHJvdG90eXBlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlOjpnZXRDb25zdHJ1
Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9i
amVjdCgpKSk7Ci19Ci0KLWJvb2wgc2V0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhT
ZXF1ZW5jZUNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKLXsK
LSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlw
ZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5j
ZVByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVO
TElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0g
ICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90
eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZN
JiB2bSkKIHsKICAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnRE
YXRhKj4odm0uY2xpZW50RGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwCmlu
ZGV4IGFkNGRjMzQ2MDlkMGIwM2YyY2Y3YzM4YzFmOTM4YWNjMmM0MjBhMWUuLmQ4ZmY4MTY4ZDk5
MDJhZGIxZjY0NmNiOGE4MWRmYTM4YjE3ZDM3ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRl
cmZhY2UuY3BwCkBAIC00MywxMSArNDMsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIAotLy8gQXR0cmlidXRlcwotCi1KU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdFBsdWdpbkludGVyZmFjZUNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdFBsdWdp
bkludGVyZmFjZUNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKLQogY2xhc3MgSlNUZXN0UGx1Z2luSW50ZXJm
YWNlUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJs
aWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKQEAgLTkwLDcgKzg1
LDkgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFBsdWdpbkludGVyZmFjZUNvbnN0cnVjdG9y
Ojpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjoKIAogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdFBs
dWdpbkludGVyZmFjZUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdFBsdWdpbkludGVyZmFjZTo6cHJvdG90eXBl
KHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7CisgICAgYXV0byogcHJvdG90eXBlID0gSlNUZXN0UGx1Z2luSW50ZXJmYWNl
Ojpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCk7CisgICAgcHJvdG90eXBlLT5wdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0UGx1Z2lu
SW50ZXJmYWNlIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KQEAgLTk4LDE4ICs5
NSwxMiBAQCB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0UGx1Z2luSW50ZXJmYWNlQ29uc3RydWN0b3I6
OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSgogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0lu
Zm8gSlNUZXN0UGx1Z2luSW50ZXJmYWNlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RQbHVn
aW5JbnRlcmZhY2UiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTVGVzdFBsdWdpbkludGVyZmFjZUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNo
IHRhYmxlIGZvciBwcm90b3R5cGUgKi8KLQotc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpT
VGVzdFBsdWdpbkludGVyZmFjZVByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQotewotICAgIHsgImNv
bnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RQbHVnaW5JbnRlcmZhY2VDb25zdHJ1Y3RvciksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
VGVzdFBsdWdpbkludGVyZmFjZUNvbnN0cnVjdG9yKSB9IH0sCi19OwotCiBjb25zdCBDbGFzc0lu
Zm8gSlNUZXN0UGx1Z2luSW50ZXJmYWNlUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0UGx1Z2lu
SW50ZXJmYWNlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU1Rlc3RQbHVnaW5JbnRlcmZhY2VQcm90b3R5cGUpIH07CiAKIHZvaWQgSlNUZXN0
UGx1Z2luSW50ZXJmYWNlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwg
SlNUZXN0UGx1Z2luSW50ZXJmYWNlOjppbmZvKCksIEpTVGVzdFBsdWdpbkludGVyZmFjZVByb3Rv
dHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5jb25zdHJ1Y3RvciwganNVbmRlZmluZWQoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgSlNDX1RPX1NUUklOR19UQUdf
V0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CiAKQEAgLTIxMSwyOSArMjAyLDYgQEAgQ2FsbERhdGEg
SlNUZXN0UGx1Z2luSW50ZXJmYWNlOjpnZXRDYWxsRGF0YShKU0NlbGwqIGNlbGwpCiAgICAgcmV0
dXJuIHBsdWdpbkVsZW1lbnRDdXN0b21HZXRDYWxsRGF0YSh0aGlzT2JqZWN0KTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUganNUZXN0UGx1Z2luSW50ZXJmYWNlQ29uc3RydWN0b3IoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7
Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0
byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RQbHVnaW5JbnRlcmZhY2VQcm90b3R5
cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSgh
cHJvdG90eXBlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RQ
bHVnaW5JbnRlcmZhY2U6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9i
amVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKLX0KLQotYm9vbCBzZXRKU1Rlc3RQ
bHVnaW5JbnRlcmZhY2VDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBw
cm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFBsdWdpbkludGVyZmFjZVByb3RvdHlwZSo+
KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90
b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93
aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKSk7Ci19Ci0KIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFBsdWdpbkludGVyZmFj
ZTo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQogewogICAgIGF1dG8mIGNsaWVudERhdGEg
PSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAKaW5kZXggMGZlM2E4MDk2NTBiYzMw
ODQyN2UyNjc3ZmIwMWIyZjRmYjNjYTMxOC4uOWI5MDAzODZhMDc2NjFhNmQzZDZjZDhmYzFiOWU3
ZTJkNGUwMWU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5j
cHAKQEAgLTEyNyw4ICsxMjcsNiBAQCB0ZW1wbGF0ZTw+IFRlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnQ6OkluaXQgY29udmVydERpY3Rpb25hcnk8VGVzdFByb21pc2VSZWplY3RpbwogCiAvLyBBdHRy
aWJ1dGVzCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50
Q29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6UHJvcGVydHlOYW1lKTsKLWJvb2wgc2V0SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29u
c3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RQcm9taXNlUmVqZWN0
aW9uRXZlbnRQcm9taXNlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudFJlYXNvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogCkBAIC0xOTcsNyArMTk1LDkgQEAgdGVtcGxhdGU8
PiBKU1ZhbHVlIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yOjpwcm90b3R5
cGVGb3JTdHJ1Y3R1cmUKIAogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudENvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5wcm90b3R5cGUsIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6cHJvdG90eXBlKHZt
LCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSk7CisgICAgYXV0byogcHJvdG90eXBlID0gSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50Ojpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCk7CisgICAgcHJvdG90eXBlLT5wdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50Il9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDIpLCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KQEAg
LTIwOCw3ICsyMDgsNiBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVAogCiBzdGF0aWMgY29uc3Qg
SGFzaFRhYmxlVmFsdWUgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlVGFibGVW
YWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29u
c3RydWN0b3IpIH0gfSwKICAgICB7ICJwcm9taXNlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb21p
c2UpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PigwKSB9IH0sCiAgICAgeyAicmVhc29uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFJlYXNvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKIH07CkBAIC0yMTgsNiAr
MjE3LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3Rv
dHlwZTo6c19pbmZvID0geyAiVGVzdFByb21pc2VSZWoKIHZvaWQgSlNUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
Y29uc3RydWN0b3IsIGpzVW5kZWZpbmVkKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2
bSwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjppbmZvKCksIEpTVGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudFByb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7CiAgICAgSlNDX1RPX1NUUklO
R19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CkBAIC0yNTgsMjkgKzI1OCw2IEBAIHRlbXBs
YXRlPD4gaW5saW5lIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCogSURMQXR0cmlidXRlPEpT
VGVzdFByb21pc2VSZWplY3RpCiAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50Kj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQotewotICAgIFZN
JiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGUqPih2bSwgSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RQcm9taXNlUmVqZWN0
aW9uRXZlbnQ6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCks
IHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKLX0KLQotYm9vbCBzZXRKU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBw
cm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3Rv
dHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZ
KCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8g
U2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5w
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RQcm9t
aXNlUmVqZWN0aW9uRXZlbnRQcm9taXNlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQmIHRoaXNPYmplY3QpCiB7CiAg
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25s
eU1hcExpa2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFJlYWRPbmx5TWFwTGlrZS5jcHAKaW5kZXggZGMyNzNmM2I0NzkzOGRjNWI3MWJiMjU0MDY0
NGRlYjc4ODY2ZTNjOS4uMzM2ZGM4OGE5MjkwMThlMjhmYjkwOTk0MGE5YWYzNmI4MTRkNTk1OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFJlYWRPbmx5TWFwTGlrZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5TWFwTGlrZS5jcHAKQEAgLTU5LDggKzU5LDYgQEAgSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFJlYWRPbmx5TWFwTGlrZVByb3Rv
dHlwZUZ1bmN0aW9uRm9yRWFjaCgKIAogLy8gQXR0cmlidXRlcwogCi1KU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdFJlYWRPbmx5TWFwTGlrZUNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1ib29sIHNldEpTVGVz
dFJlYWRPbmx5TWFwTGlrZUNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0UmVhZE9ubHlNYXBMaWtlU2l6ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogCiBjbGFzcyBKU1Rlc3RSZWFkT25seU1h
cExpa2VQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKQEAg
LTEwNSw3ICsxMDMsOSBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0UmVhZE9ubHlNYXBMaWtl
Q29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OgogCiB0ZW1wbGF0ZTw+IHZv
aWQgSlNUZXN0UmVhZE9ubHlNYXBMaWtlQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVz
KFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0UmVhZE9ubHlNYXBMaWtl
Ojpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBKU1Rlc3RSZWFk
T25seU1hcExpa2U6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBwcm90b3R5cGUt
PnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwg
IlRlc3RSZWFkT25seU1hcExpa2UiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQpA
QCAtMTE2LDcgKzExNiw2IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFJlYWRP
bmx5TWFwTGlrZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0UmVhCiAKIHN0YXRpYyBjb25z
dCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RSZWFkT25seU1hcExpa2VQcm90b3R5cGVUYWJsZVZhbHVl
c1tdID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0UmVhZE9ubHlNYXBM
aWtlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RSZWFkT25seU1hcExpa2VDb25zdHJ1Y3RvcikgfSB9LAog
ICAgIHsgInNpemUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RSZWFkT25seU1h
cExpa2VTaXplKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oMCkgfSB9LAogICAgIHsgImdldCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1
bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1
bmN0aW9uPihqc1Rlc3RSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkdldCksIChpbnRw
dHJfdCkgKDEpIH0gfSwKICAgICB7ICJoYXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5j
dGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5j
dGlvbj4oanNUZXN0UmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25IYXMpLCAoaW50cHRy
X3QpICgxKSB9IH0sCkBAIC0xMzEsNiArMTMwLDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFJl
YWRPbmx5TWFwTGlrZVByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdFJlYWRPbmx5TWFwTGlrZSIK
IHZvaWQgSlNUZXN0UmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGpzVW5kZWZpbmVkKCksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIHJlaWZ5
U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0UmVhZE9ubHlNYXBMaWtlOjppbmZvKCksIEpTVGVz
dFJlYWRPbmx5TWFwTGlrZVByb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7CiAgICAgcHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgZ2V0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5lbnRyaWVzUHVibGljTmFtZSgpKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAg
ICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CkBAIC0xODMsMjkgKzE4
Myw2IEBAIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFJlYWRPbmx5TWFwTGlrZSogSURMT3BlcmF0
aW9uPEpTVGVzdFJlYWRPbmx5TWFwTGlrZT46OmNhCiAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8
SlNUZXN0UmVhZE9ubHlNYXBMaWtlKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCks
IGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdFJlYWRP
bmx5TWFwTGlrZUNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKLXsKLSAgICBWTSYgdm0g
PSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0UmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0UmVhZE9ubHlNYXBMaWtlOjpnZXRDb25z
dHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2Jh
bE9iamVjdCgpKSk7Ci19Ci0KLWJvb2wgc2V0SlNUZXN0UmVhZE9ubHlNYXBMaWtlQ29uc3RydWN0
b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQotewotICAgIFZNJiB2bSA9IEpT
Qzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RSZWFkT25seU1hcExpa2VQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVj
dG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiBzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNUZXN0UmVhZE9ubHlNYXBMaWtlU2l6ZUdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0UmVhZE9ubHlNYXBMaWtlJiB0aGlz
T2JqZWN0KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0UmVhZE9ubHlTZXRMaWtlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seVNldExpa2UuY3BwCmluZGV4IGRlMDI1YTZiNGEzZDM0
NjBlMWJiMTE2YjY2ZmE4ZGYyY2YwYTE2OGYuLmZlNjA5NTdmZjM4ZTM5ZTdkMzEzNDU5ZTUwMTA0
ZjczOWM0NDgxNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RSZWFkT25seVNldExpa2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seVNldExpa2UuY3BwCkBAIC01OCw4
ICs1OCw2IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RSZWFkT25s
eVNldExpa2VQcm90b3R5cGVGdW5jdGlvbkZvckVhY2goCiAKIC8vIEF0dHJpYnV0ZXMKIAotSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RSZWFkT25seVNldExpa2VDb25zdHJ1Y3RvcihKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwot
Ym9vbCBzZXRKU1Rlc3RSZWFkT25seVNldExpa2VDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdFJlYWRPbmx5U2V0TGlrZVNpemUoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIAogY2xhc3MgSlNU
ZXN0UmVhZE9ubHlTZXRMaWtlUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5h
bE9iamVjdCB7CkBAIC0xMDQsNyArMTAyLDkgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFJl
YWRPbmx5U2V0TGlrZUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjoKIAog
dGVtcGxhdGU8PiB2b2lkIEpTVGVzdFJlYWRPbmx5U2V0TGlrZUNvbnN0cnVjdG9yOjppbml0aWFs
aXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7
Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdFJl
YWRPbmx5U2V0TGlrZTo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CisgICAgYXV0byogcHJvdG90eXBl
ID0gSlNUZXN0UmVhZE9ubHlTZXRMaWtlOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCk7Cisg
ICAgcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9y
LCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwg
cHJvdG90eXBlLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZp
YWxTdHJpbmcodm0sICJUZXN0UmVhZE9ubHlTZXRMaWtlIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKTsKIH0KQEAgLTExNSw3ICsxMTUsNiBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5m
byBKU1Rlc3RSZWFkT25seVNldExpa2VDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdFJlYQog
CiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0UmVhZE9ubHlTZXRMaWtlUHJvdG90
eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dFJlYWRPbmx5U2V0TGlrZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0UmVhZE9ubHlTZXRMaWtlQ29uc3Ry
dWN0b3IpIH0gfSwKICAgICB7ICJzaXplIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNU
ZXN0UmVhZE9ubHlTZXRMaWtlU2l6ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJoYXMiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0UmVhZE9ubHlTZXRMaWtlUHJvdG90eXBlRnVuY3Rp
b25IYXMpLCAoaW50cHRyX3QpICgxKSB9IH0sCiAgICAgeyAiZW50cmllcyIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RSZWFkT25seVNldExpa2VQcm90b3R5cGVGdW5j
dGlvbkVudHJpZXMpLCAoaW50cHRyX3QpICgwKSB9IH0sCkBAIC0xMjksNiArMTI4LDcgQEAgY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdFJlYWRPbmx5U2V0TGlrZVByb3RvdHlwZTo6c19pbmZvID0geyAi
VGVzdFJlYWRPbmx5U2V0TGlrZSIKIHZvaWQgSlNUZXN0UmVhZE9ubHlTZXRMaWtlUHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0p
OworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGpzVW5k
ZWZpbmVkKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSkpOwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0UmVhZE9ubHlT
ZXRMaWtlOjppbmZvKCksIEpTVGVzdFJlYWRPbmx5U2V0TGlrZVByb3RvdHlwZVRhYmxlVmFsdWVz
LCAqdGhpcyk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5
bWJvbCwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5lbnRy
aWVzUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lU
SU9OKCk7CkBAIC0xODEsMjkgKzE4MSw2IEBAIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFJlYWRP
bmx5U2V0TGlrZSogSURMT3BlcmF0aW9uPEpTVGVzdFJlYWRPbmx5U2V0TGlrZT46OmNhCiAgICAg
cmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0UmVhZE9ubHlTZXRMaWtlKj4oSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIGpzVGVzdFJlYWRPbmx5U2V0TGlrZUNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwot
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8q
IHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0UmVhZE9ubHlTZXRMaWtlUHJvdG90eXBl
Kj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXBy
b3RvdHlwZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0UmVh
ZE9ubHlTZXRMaWtlOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7Ci19Ci0KLWJvb2wgc2V0SlNUZXN0UmVh
ZE9ubHlTZXRMaWtlQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJv
dG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RSZWFkT25seVNldExpa2VQcm90b3R5cGUqPih2
bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90
eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2lu
ZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSkpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0UmVhZE9ubHlTZXRM
aWtlU2l6ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0
UmVhZE9ubHlTZXRMaWtlJiB0aGlzT2JqZWN0KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZXBvcnRFeHRyYU1l
bW9yeUNvc3QuY3BwCmluZGV4IDQ2MjE0YzgzMDYwMDkwNTljYzI4ZDM2MWMyNmVlYjRhOWJmNTI5
ODcuLjdmNGJlZDk2OWVhNDBlMTA3MTA5MTVjMWE1NmEzMDhhNGIzYmQ4NmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZXBvcnRFeHRy
YU1lbW9yeUNvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QuY3BwCkBAIC00MiwxMSArNDIsNiBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotLy8gQXR0cmlidXRl
cwotCi1KU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdENvbnN0
cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlBy
b3BlcnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdENvbnN0cnVj
dG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKLQogY2xhc3MgSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0UHJvdG90eXBl
IGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNp
bmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKQEAgLTg5LDcgKzg0LDkgQEAgdGVtcGxh
dGU8PiBKU1ZhbHVlIEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdENvbnN0cnVjdG9yOjpwcm90
b3R5cGVGb3JTdHJ1Y3R1cmUKIAogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdFJlcG9ydEV4dHJhTWVt
b3J5Q29zdENvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdDo6cHJvdG90eXBl
KHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7CisgICAgYXV0byogcHJvdG90eXBlID0gSlNUZXN0UmVwb3J0RXh0cmFNZW1v
cnlDb3N0Ojpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCk7CisgICAgcHJvdG90eXBlLT5wdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0
UmVwb3J0RXh0cmFNZW1vcnlDb3N0Il9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0K
QEAgLTk3LDE4ICs5NCwxMiBAQCB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0UmVwb3J0RXh0cmFNZW1v
cnlDb3N0Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJgogdGVtcGxhdGU8PiBj
b25zdCBDbGFzc0luZm8gSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0Q29uc3RydWN0b3I6OnNf
aW5mbyA9IHsgIlRlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QiLCAmQmFzZTo6c19pbmZvLCBudWxs
cHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5
Q29zdENvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KLQot
c3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdFBy
b3RvdHlwZVRhYmxlVmFsdWVzW10gPQotewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3RDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdFJlcG9ydEV4dHJh
TWVtb3J5Q29zdENvbnN0cnVjdG9yKSB9IH0sCi19OwotCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0
UmVwb3J0RXh0cmFNZW1vcnlDb3N0UHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0UmVwb3J0RXh0
cmFNZW1vcnlDb3N0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3RQcm90b3R5cGUpIH07CiAKIHZv
aWQgSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIHJlaWZ5U3RhdGlj
UHJvcGVydGllcyh2bSwgSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0OjppbmZvKCksIEpTVGVz
dFJlcG9ydEV4dHJhTWVtb3J5Q29zdFByb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7CisgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwganNVbmRlZmluZWQo
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSk7CiAgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CiAKQEAg
LTE1MCwyOSArMTQxLDYgQEAgdm9pZCBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3Q6OmRlc3Ry
b3koSlNDOjpKU0NlbGwqIGNlbGwpCiAgICAgdGhpc09iamVjdC0+SlNUZXN0UmVwb3J0RXh0cmFN
ZW1vcnlDb3N0Ojp+SlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0KCk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIGpzVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdENvbnN0cnVjdG9yKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
OwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1
dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0
UHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5M
SUtFTFkoIXByb3RvdHlwZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0OjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxl
eGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7Ci19Ci0KLWJv
b2wgc2V0SlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0Q29uc3RydWN0b3IoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RSZXBvcnRF
eHRyYU1lbW9yeUNvc3RQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVy
cm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAg
cmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1
Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiBKU0M6Oklzb1N1YnNw
YWNlKiBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3Q6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZN
JiB2bSkKIHsKICAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnRE
YXRhKj4odm0uY2xpZW50RGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbi5jcHAKaW5kZXgg
MTIxZmJiMTgxNjdiODMwMWNkM2UzMTA1M2U2OTE4OWNmMjFmZmJmZC4uMTYzMzlkZWU0MzBjN2Y5
M2M4MDI5NmE2MjBjMjRlNTIzM2NhNTAyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmNw
cApAQCAtNjIsOCArNjIsNiBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0U2VyaWFsaXphdGlvblByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKEpTQwogCiAvLyBBdHRyaWJ1
dGVzCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXphdGlvbkNvbnN0cnVjdG9y
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5
TmFtZSk7Ci1ib29sIHNldEpTVGVzdFNlcmlhbGl6YXRpb25Db25zdHJ1Y3RvcihKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6YXRpb25GaXJzdFN0cmluZ0F0dHJpYnV0
ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0
eU5hbWUpOwogYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemF0aW9uRmlyc3RTdHJpbmdBdHRyaWJ1dGUo
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpT
VmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemF0aW9uU2Vjb25kTG9u
Z0F0dHJpYnV0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpQcm9wZXJ0eU5hbWUpOwpAQCAtMTMxLDcgKzEyOSw5IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBK
U1Rlc3RTZXJpYWxpemF0aW9uQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6
OlZNCiAKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RTZXJpYWxpemF0aW9uQ29uc3RydWN0b3I6Omlu
aXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKIHsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNU
ZXN0U2VyaWFsaXphdGlvbjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CisgICAgYXV0byogcHJvdG90
eXBlID0gSlNUZXN0U2VyaWFsaXphdGlvbjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpOwor
ICAgIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rv
ciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUs
IHByb3RvdHlwZSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2
aWFsU3RyaW5nKHZtLCAiVGVzdFNlcmlhbGl6YXRpb24iX3MpLCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pOwogfQpAQCAtMTQyLDcgKzE0Miw2IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZv
IEpTVGVzdFNlcmlhbGl6YXRpb25Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdFNlcmlhCiAK
IHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RTZXJpYWxpemF0aW9uUHJvdG90eXBl
VGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFNl
cmlhbGl6YXRpb25Db25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdFNlcmlhbGl6YXRpb25Db25zdHJ1Y3Rvcikg
fSB9LAogICAgIHsgImZpcnN0U3RyaW5nQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RTZXJpYWxpemF0aW9uRmlyc3RT
dHJpbmdBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RTZXJpYWxpemF0aW9uRmlyc3RTdHJpbmdBdHRyaWJ1dGUp
IH0gfSwKICAgICB7ICJzZWNvbmRMb25nQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RTZXJpYWxpemF0aW9uU2Vjb25k
TG9uZ0F0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTVGVzdFNlcmlhbGl6YXRpb25TZWNvbmRMb25nQXR0cmlidXRlKSB9
IH0sCiAgICAgeyAidGhpcmRVbnNlcmlhbGl6YWJsZUF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0U2VyaWFsaXphdGlv
blRoaXJkVW5zZXJpYWxpemFibGVBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RTZXJpYWxpemF0aW9uVGhpcmRV
bnNlcmlhbGl6YWJsZUF0dHJpYnV0ZSkgfSB9LApAQCAtMTYzLDYgKzE2Miw3IEBAIGNvbnN0IENs
YXNzSW5mbyBKU1Rlc3RTZXJpYWxpemF0aW9uUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0U2Vy
aWFsaXphdGlvbiIsICZCCiB2b2lkIEpTVGVzdFNlcmlhbGl6YXRpb25Qcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwganNVbmRlZmluZWQo
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSk7CiAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RTZXJpYWxpemF0aW9uOjpp
bmZvKCksIEpTVGVzdFNlcmlhbGl6YXRpb25Qcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwog
ICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQpAQCAtMjE0LDI5
ICsyMTQsNiBAQCB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RTZXJpYWxpemF0aW9uKiBJRExPcGVy
YXRpb248SlNUZXN0U2VyaWFsaXphdGlvbj46OmNhc3QoSgogICAgIHJldHVybiBqc0R5bmFtaWND
YXN0PEpTVGVzdFNlcmlhbGl6YXRpb24qPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0U2Vy
aWFsaXphdGlvbkNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKLXsKLSAgICBWTSYgdm0g
PSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0U2VyaWFsaXphdGlvblByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdFNlcmlhbGl6YXRpb246OmdldENvbnN0cnVj
dG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2Jq
ZWN0KCkpKTsKLX0KLQotYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemF0aW9uQ29uc3RydWN0b3IoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0
Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RTZXJpYWxpemF0aW9uUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAg
IHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3Ry
dWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6YXRpb25GaXJzdFN0cmluZ0F0dHJpYnV0ZUdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0U2VyaWFsaXphdGlvbiYg
dGhpc09iamVjdCkKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJl
Y3RJbmhlcml0YW5jZS5jcHAKaW5kZXggNjhiMWM5YTJkMDM3OGJlZmI5YjQ4NTkyZWQ0NzY0MTA4
MWFiN2NjOC4uZDkyMzRmZWEzY2MxZWE3NjZhNzAwYTllZWFhYzZmNzJmOThhYTA5MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlh
bGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFu
Y2UuY3BwCkBAIC00MSwxMSArNDEsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKIAotLy8gQXR0cmlidXRlcwotCi1KU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLWJvb2wg
c2V0SlNUZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2VDb25zdHJ1Y3RvcihKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSk7Ci0KIGNsYXNzIEpTVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlUHJvdG90
eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAg
dXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKQEAgLTg3LDcgKzgyLDkgQEAgdGVt
cGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlQ29u
c3RydWN0b3I6OnByb3RvdHlwZUYKIAogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdFNlcmlhbGl6YXRp
b25JbmRpcmVjdEluaGVyaXRhbmNlQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZN
JiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBwdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0U2VyaWFsaXphdGlvbkluZGly
ZWN0SW5oZXJpdGFuY2U6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIGF1dG8qIHByb3RvdHlw
ZSA9IEpTVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlOjpwcm90b3R5cGUodm0s
IGdsb2JhbE9iamVjdCk7CisgICAgcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0
SW5oZXJpdGFuY2UiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQpAQCAtOTUsMTgg
KzkyLDEyIEBAIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhl
cml0YW5jZUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvCiB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNz
SW5mbyBKU1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZUNvbnN0cnVjdG9yOjpz
X2luZm8gPSB7ICJUZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2UiLCAmQmFzZTo6
c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFNlcmlh
bGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlQ29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFi
bGUgZm9yIHByb3RvdHlwZSAqLwotCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0
U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2VQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0K
LXsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0U2VyaWFsaXphdGlvbkluZGly
ZWN0SW5oZXJpdGFuY2VDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdElu
aGVyaXRhbmNlQ29uc3RydWN0b3IpIH0gfSwKLX07Ci0KIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RT
ZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZVByb3RvdHlwZTo6c19pbmZvID0geyAiVGVz
dFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJl
Y3RJbmhlcml0YW5jZVByb3RvdHlwZSkgfTsKIAogdm9pZCBKU1Rlc3RTZXJpYWxpemF0aW9uSW5k
aXJlY3RJbmhlcml0YW5jZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0s
IEpTVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlOjppbmZvKCksIEpTVGVzdFNl
cmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlz
KTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBqc1Vu
ZGVmaW5lZCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pKTsKICAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsK
IH0KIApAQCAtMTQxLDI5ICsxMzIsNiBAQCBKU1ZhbHVlIEpTVGVzdFNlcmlhbGl6YXRpb25JbmRp
cmVjdEluaGVyaXRhbmNlOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTRwogICAgIHJl
dHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0
YW5jZUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGds
b2JhbE9iamVjdCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemF0aW9uSW5k
aXJlY3RJbmhlcml0YW5jZUNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKLXsKLSAgICBW
TSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2VQcm90b3R5
cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSgh
cHJvdG90eXBlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RT
ZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZTo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwotfQot
Ci1ib29sIHNldEpTVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlQ29uc3RydWN0
b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQotewotICAgIFZNJiB2bSA9IEpT
Qzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZVByb3RvdHlwZSo+KHZtLCBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUp
KSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEg
YnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKSk7Ci19Ci0KIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVj
dEluaGVyaXRhbmNlOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCiB7CiAgICAgYXV0byYg
Y2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5jcHAKaW5kZXggNGZhY2U0
NjMxMjdmNWE1NTJlYWI5ZjFlMGU1NGQzMDdjOWE0MDBmMy4uZGQ5MGQyYTdiZDg1MmNiNWM5Zjkx
ODg4NDJmNjQ4YTMzYzM5MTcwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbklu
aGVyaXQuY3BwCkBAIC01MSw4ICs1MSw2IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdFByb3RvdHlwZUZ1bmN0aW9uVG9KCiAKIC8v
IEF0dHJpYnV0ZXMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemF0aW9uSW5o
ZXJpdENvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0
Q29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemF0
aW9uSW5oZXJpdEluaGVyaXRMb25nQXR0cmlidXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBib29sIHNldEpTVGVzdFNlcmlh
bGl6YXRpb25Jbmhlcml0SW5oZXJpdExvbmdBdHRyaWJ1dGUoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogCkBAIC05Nyw3ICs5
NSw5IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdENvbnN0
cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoCiAKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RT
ZXJpYWxpemF0aW9uSW5oZXJpdENvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYg
dm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0
Ojpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBKU1Rlc3RTZXJp
YWxpemF0aW9uSW5oZXJpdDo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpOworICAgIHByb3Rv
dHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7
CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlw
ZSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5n
KHZtLCAiVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Il9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKTsKIH0KQEAgLTEwOCw3ICsxMDgsNiBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBK
U1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZQogCiBz
dGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRQcm90
b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNU
ZXN0U2VyaWFsaXphdGlvbkluaGVyaXRDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdFNlcmlhbGl6YXRpb25J
bmhlcml0Q29uc3RydWN0b3IpIH0gfSwKICAgICB7ICJpbmhlcml0TG9uZ0F0dHJpYnV0ZSIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
U2VyaWFsaXphdGlvbkluaGVyaXRJbmhlcml0TG9uZ0F0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdFNlcmlhbGl6
YXRpb25Jbmhlcml0SW5oZXJpdExvbmdBdHRyaWJ1dGUpIH0gfSwKICAgICB7ICJ0b0pTT04iLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpz
VGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0UHJvdG90eXBlRnVuY3Rpb25Ub0pTT04pLCAoaW50cHRy
X3QpICgwKSB9IH0sCiB9OwpAQCAtMTE4LDYgKzExNyw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU1Rl
c3RTZXJpYWxpemF0aW9uSW5oZXJpdFByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdFNlcmlhbGl6
YXRpCiB2b2lkIEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0UHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGpzVW5kZWZpbmVkKCksIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwog
ICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQ6
OmluZm8oKSwgSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRQcm90b3R5cGVUYWJsZVZhbHVlcywg
KnRoaXMpOwogICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQpA
QCAtMTYzLDI5ICsxNjMsNiBAQCB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RTZXJpYWxpemF0aW9u
SW5oZXJpdCogSURMT3BlcmF0aW9uPEpTVGVzdFNlcmlhbGl6YXRpb25JbgogICAgIHJldHVybiBq
c0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Kj4oSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIGpzVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Q29uc3RydWN0b3IoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7
Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0
byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdFBy
b3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElL
RUxZKCFwcm90b3R5cGUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
VGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0OjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGlj
YWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7Ci19Ci0KLWJvb2wg
c2V0SlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6YXRp
b25Jbmhlcml0UHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAg
ICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVy
biBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3Is
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0SW5oZXJpdExvbmdBdHRyaWJ1dGVHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdFNlcmlhbGl6YXRpb25J
bmhlcml0JiB0aGlzT2JqZWN0KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVy
aXRGaW5hbC5jcHAKaW5kZXggZWNhMjdhZjk0NDA3OWIwZDI1YjMzOTkzY2Q4MWRhODY2ZDQ0MTVj
MC4uM2MzMWJhMzBmOTI5NzNhZDNmNjAwMWU1ZDBjOWRlNTdjZDBhYTY3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRp
b25Jbmhlcml0RmluYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsLmNwcApAQCAtNTEsOCArNTEs
NiBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U2VyaWFsaXphdGlv
bkluaGVyaXRGaW5hbFByb3RvdHlwZUZ1bmN0aQogCiAvLyBBdHRyaWJ1dGVzCiAKLUpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbENvbnN0cnVjdG9yKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFt
ZSk7Ci1ib29sIHNldEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWxDb25zdHJ1Y3RvcihK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Rmlu
YWxGaW5hbExvbmdBdHRyaWJ1dGVGb28oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIGJvb2wgc2V0SlNUZXN0U2VyaWFsaXphdGlv
bkluaGVyaXRGaW5hbEZpbmFsTG9uZ0F0dHJpYnV0ZUZvbyhKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWxGaW5hbExvbmdBdHRyaWJ1dGVC
YXIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVy
dHlOYW1lKTsKQEAgLTk5LDcgKzk3LDkgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFNlcmlh
bGl6YXRpb25Jbmhlcml0RmluYWxDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWMKIAogdGVt
cGxhdGU8PiB2b2lkIEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWxDb25zdHJ1Y3Rvcjo6
aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQogewotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBK
U1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVj
dCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAg
ICBhdXRvKiBwcm90b3R5cGUgPSBKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsOjpwcm90
b3R5cGUodm0sIGdsb2JhbE9iamVjdCk7CisgICAgcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0U2VyaWFsaXphdGlv
bkluaGVyaXRGaW5hbCJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CkBAIC0xMTAs
NyArMTEwLDYgQEAgdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0U2VyaWFsaXphdGlv
bkluaGVyaXRGaW5hbENvbnN0cnVjdG9yOjpzX2luZm8gPQogCiBzdGF0aWMgY29uc3QgSGFzaFRh
YmxlVmFsdWUgSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbFByb3RvdHlwZVRhYmxlVmFs
dWVzW10gPQogewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RTZXJpYWxpemF0
aW9uSW5oZXJpdEZpbmFsQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZp
bmFsQ29uc3RydWN0b3IpIH0gfSwKICAgICB7ICJmaW5hbExvbmdBdHRyaWJ1dGVGb28iLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFNl
cmlhbGl6YXRpb25Jbmhlcml0RmluYWxGaW5hbExvbmdBdHRyaWJ1dGVGb28pLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RTZXJp
YWxpemF0aW9uSW5oZXJpdEZpbmFsRmluYWxMb25nQXR0cmlidXRlRm9vKSB9IH0sCiAgICAgeyAi
ZmluYWxMb25nQXR0cmlidXRlQmFyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsRmluYWxM
b25nQXR0cmlidXRlQmFyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbEZpbmFsTG9u
Z0F0dHJpYnV0ZUJhcikgfSB9LAogICAgIHsgInRvSlNPTiIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0U2VyaWFsaXphdGlvbklu
aGVyaXRGaW5hbFByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKSwgKGludHB0cl90KSAoMCkgfSB9LApA
QCAtMTIxLDYgKzEyMCw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RTZXJpYWxpemF0aW9uSW5o
ZXJpdEZpbmFsUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0U2VyaWFsCiB2b2lkIEpTVGVzdFNl
cmlhbGl6YXRpb25Jbmhlcml0RmluYWxQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkK
IHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwganNVbmRlZmluZWQoKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcmVpZnlTdGF0
aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsOjppbmZvKCks
IEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWxQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRo
aXMpOwogICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQpAQCAt
MTY2LDI5ICsxNjYsNiBAQCB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RTZXJpYWxpemF0aW9uSW5o
ZXJpdEZpbmFsKiBJRExPcGVyYXRpb248SlNUZXN0U2VyaWFsaXphdAogICAgIHJldHVybiBqc0R5
bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwqPihKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUganNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbENvbnN0cnVjdG9yKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwot
ICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXphdGlvbklu
aGVyaXRGaW5hbFByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0g
ICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWw6OmdldENvbnN0cnVjdG9y
KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0
KCkpKTsKLX0KLQotYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsQ29uc3Ry
dWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQotewotICAgIFZNJiB2bSA9
IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsUHJvdG90eXBlKj4odm0sIEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsK
LSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWls
dC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
KTsKLX0KLQogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0
RmluYWxGaW5hbExvbmdBdHRyaWJ1dGVGb29HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwmIHRoaXNPYmplY3Qp
CiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5j
cHAKaW5kZXggYzE1NTY3ZTI0NjMxMjkzNDNkMTkwYjVhYTQ1NDE1NmViODQ2MDEzNC4uMjU3NjRh
ZWI1ZmE5MzcyZDc0NTdkY2RiM2Q2MDI5OWVmYzJlYzE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTYxLDggKzYx
LDYgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZUYKIAogLy8gQXR0cmlidXRlcwogCi1KU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVj
dG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNv
bnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlVmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIGJvb2wgc2V0SlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlVmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VSZWFkb25seVZhbHVlKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CkBAIC0x
MTMsNyArMTExLDkgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3IKIAogdGVtcGxhdGU8PiB2b2lk
IEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yOjppbml0aWFs
aXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7
Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3Qp
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CisgICAg
YXV0byogcHJvdG90eXBlID0gSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpw
cm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCk7CisgICAgcHJvdG90eXBlLT5wdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0K
QEAgLTEyNCw3ICsxMjQsNiBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6c19pbgogCiBzdGF0aWMgY29u
c3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJv
dG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IpIH0gfSwKICAgICB7ICJ2YWx1
ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVmFsdWUpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWYWx1ZSkgfSB9LAogICAgIHsgInJlYWRvbmx5VmFsdWUi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlUmVhZG9ubHlWYWx1ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJjYWNoZWRWYWx1ZSIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ2FjaGVkVmFsdWUpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDYWNoZWRWYWx1ZSkgfSB9LApAQCAtMTM5LDYgKzEzOCw3
IEBAIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQ
cm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RTCiB2b2lkIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmNvbnN0cnVjdG9yLCBqc1VuZGVmaW5lZCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICByZWlmeVN0YXRpY1Byb3BlcnRp
ZXModm0sIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6aW5mbygpLCBKU1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRo
aXMpOwogICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQpAQCAt
MTkwLDI5ICsxOTAsNiBAQCB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UqIElETE9wZXJhdGlvbjxKU1Rlc3RTZXJpYQogICAgIHJldHVybiBqc0R5
bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1
Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZTo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJv
dG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwotfQotCi1ib29sIHNldEpTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
OwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1
dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAg
ICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVy
biBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3Is
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVZhbHVlR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UmIHRoaXNPYmplY3QpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlLmNwcAppbmRleCAzZGFmNTA3OWUyNTIw
YWJmODA1MjI0ODE2Nzk3NzQwMDhhZjFkYjk4Li5kMWVmNGUwNjQzMGJkZmNjOTdjOTU5MzFlNDYw
YmJkZmFhZWIyZjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U2V0TGlrZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2UuY3BwCkBAIC02MSw4ICs2MSw2IEBAIEpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTZXRMaWtlUHJvdG90eXBlRnVuY3Rp
b25EZWxldGUoSlNDOjpKU0dsCiAKIC8vIEF0dHJpYnV0ZXMKIAotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RTZXRMaWtlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLWJvb2wgc2V0SlNUZXN0U2V0TGlrZUNv
bnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0U2V0TGlrZVNpemUo
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlO
YW1lKTsKIAogY2xhc3MgSlNUZXN0U2V0TGlrZVByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6
OkpTTm9uRmluYWxPYmplY3QgewpAQCAtMTA3LDcgKzEwNSw5IEBAIHRlbXBsYXRlPD4gSlNWYWx1
ZSBKU1Rlc3RTZXRMaWtlQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZN
JiB2bSwKIAogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdFNldExpa2VDb25zdHJ1Y3Rvcjo6aW5pdGlh
bGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQog
ewotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RT
ZXRMaWtlOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBKU1Rl
c3RTZXRMaWtlOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCk7CisgICAgcHJvdG90eXBlLT5w
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJU
ZXN0U2V0TGlrZSJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CkBAIC0xMTgsNyAr
MTE4LDYgQEAgdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0U2V0TGlrZUNvbnN0cnVj
dG9yOjpzX2luZm8gPSB7ICJUZXN0U2V0TGlrZSIsICYKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJs
ZVZhbHVlIEpTVGVzdFNldExpa2VQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKLSAgICB7ICJj
b25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0U2V0TGlrZUNvbnN0cnVjdG9yKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0U2V0
TGlrZUNvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAic2l6ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdFNldExpa2VTaXplKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgImhhcyIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RTZXRMaWtlUHJvdG90eXBlRnVuY3Rpb25IYXMp
LCAoaW50cHRyX3QpICgxKSB9IH0sCiAgICAgeyAiZW50cmllcyIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJh
d05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RTZXRMaWtlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzKSwg
KGludHB0cl90KSAoMCkgfSB9LApAQCAtMTM1LDYgKzEzNCw3IEBAIGNvbnN0IENsYXNzSW5mbyBK
U1Rlc3RTZXRMaWtlUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0U2V0TGlrZSIsICZCYXNlOjpz
X2luZm8sCiB2b2lkIEpTVGVzdFNldExpa2VQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwganNVbmRlZmluZWQoKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcmVpZnlT
dGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RTZXRMaWtlOjppbmZvKCksIEpTVGVzdFNldExpa2VQ
cm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkuZW50cmllc1B1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIEpTQ19UT19TVFJJTkdf
VEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwpAQCAtMTg3LDI5ICsxODcsNiBAQCB0ZW1wbGF0ZTw+
IGlubGluZSBKU1Rlc3RTZXRMaWtlKiBJRExPcGVyYXRpb248SlNUZXN0U2V0TGlrZT46OmNhc3Qo
SlNHbG9iYWxPYmplYwogICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdFNldExpa2UqPihK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0U2V0TGlrZUNvbnN0cnVjdG9yKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
OwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1
dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2V0TGlrZVByb3RvdHlwZSo+KHZt
LCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5
cGUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdFNldExpa2U6
OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlw
ZS0+Z2xvYmFsT2JqZWN0KCkpKTsKLX0KLQotYm9vbCBzZXRKU1Rlc3RTZXRMaWtlQ29uc3RydWN0
b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQotewotICAgIFZNJiB2bSA9IEpT
Qzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RTZXRMaWtlUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAg
IHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3Ry
dWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzVGVzdFNldExpa2VTaXplR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU1Rlc3RTZXRMaWtlJiB0aGlzT2JqZWN0KQogewogICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVy
LmNwcAppbmRleCAxNTEzZmQ4ZmFkNmViMjNiYzVhZmRiZmU5MjVmNjFjZmM4NDNlODQ3Li5lMmQ3
MzQ5YTY0MDhjMzE3Njk0NGUyMDA5ZmQ0OGVhMTFhZGNhOTc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdp
Zmllci5jcHAKQEAgLTQ4LDExICs0OCw2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIEpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllclByb3RvdHlwZUZ1
bmN0aW9uVG9TdHJpbmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAK
LS8vIEF0dHJpYnV0ZXMKLQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTdHJpbmdpZmllckNv
bnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdFN0cmluZ2lmaWVyQ29uc3RydWN0b3IoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUpOwotCiBjbGFzcyBKU1Rlc3RTdHJpbmdpZmllclByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBK
U0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpT
Tm9uRmluYWxPYmplY3Q7CkBAIC05NSw3ICs5MCw5IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rl
c3RTdHJpbmdpZmllckNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYK
IAogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdFN0cmluZ2lmaWVyQ29uc3RydWN0b3I6OmluaXRpYWxp
emVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsK
LSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0U3Ry
aW5naWZpZXI6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIGF1dG8qIHByb3RvdHlwZSA9IEpT
VGVzdFN0cmluZ2lmaWVyOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCk7CisgICAgcHJvdG90
eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsK
KyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBl
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmco
dm0sICJUZXN0U3RyaW5naWZpZXIiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQpA
QCAtMTA2LDcgKzEwMyw2IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFN0cmlu
Z2lmaWVyQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RTdHJpbmdpCiAKIHN0YXRpYyBjb25z
dCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RTdHJpbmdpZmllclByb3RvdHlwZVRhYmxlVmFsdWVzW10g
PQogewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RTdHJpbmdpZmllckNvbnN0
cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNUZXN0U3RyaW5naWZpZXJDb25zdHJ1Y3RvcikgfSB9LAogICAgIHsgInRvU3Ry
aW5nIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0
aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0
aW9uPihqc1Rlc3RTdHJpbmdpZmllclByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcpLCAoaW50cHRy
X3QpICgwKSB9IH0sCiB9OwogCkBAIC0xMTUsNiArMTExLDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpT
VGVzdFN0cmluZ2lmaWVyUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0U3RyaW5naWZpZXIiLCAm
QmFzZToKIHZvaWQgSlNUZXN0U3RyaW5naWZpZXJQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwganNVbmRlZmluZWQoKSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcmVp
ZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RTdHJpbmdpZmllcjo6aW5mbygpLCBKU1Rlc3RT
dHJpbmdpZmllclByb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7CiAgICAgSlNDX1RPX1NUUklO
R19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CkBAIC0xNjEsMjkgKzE1OCw2IEBAIHRlbXBs
YXRlPD4gaW5saW5lIEpTVGVzdFN0cmluZ2lmaWVyKiBJRExPcGVyYXRpb248SlNUZXN0U3RyaW5n
aWZpZXI+OjpjYXN0KEpTR2xvCiAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0U3RyaW5n
aWZpZXIqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNW
YWx1ZSgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0U3RyaW5naWZpZXJDb25zdHJ1Y3Rv
cihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFN0cmluZ2lm
aWVyUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAo
VU5MSUtFTFkoIXByb3RvdHlwZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNUZXN0U3RyaW5naWZpZXI6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEds
b2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKLX0KLQotYm9vbCBzZXRK
U1Rlc3RTdHJpbmdpZmllckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwot
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8q
IHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U3RyaW5naWZpZXJQcm90b3R5cGUqPih2
bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90
eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2lu
ZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSkpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
U3RyaW5naWZpZXJQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nQm9keShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBl
bmFtZSBJRExPcGVyYXRpb248SlNUZXN0U3RyaW5naWZpZXI+OjpDbGFzc1BhcmFtZXRlciBjYXN0
ZWRUaGlzKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRp
b24uY3BwCmluZGV4IGQwMTdkZmI0OTY3MWU3ZDdmMGIwYjU5MzMwYmU4NzYwNjMxNTg0NWEuLjkz
OWFjZjI3N2JmNGQ0ZmE5NWE5ZjExMWQ5NjNhZjRjNTJmNjRjZTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255
bW91c09wZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcApAQCAtNDgsMTEg
KzQ4LDYgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uUHJvdG90eXBlRnVu
Y3Rpb25Ub1N0cmluZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAot
Ly8gQXR0cmlidXRlcwotCi1KU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFN0cmluZ2lmaWVyQW5v
bnltb3VzT3BlcmF0aW9uQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLWJvb2wgc2V0SlNUZXN0U3RyaW5naWZp
ZXJBbm9ueW1vdXNPcGVyYXRpb25Db25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Ci0KIGNsYXNzIEpTVGVzdFN0
cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6
SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25G
aW5hbE9iamVjdDsKQEAgLTk1LDcgKzkwLDkgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFN0
cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclMKIAog
dGVtcGxhdGU8PiB2b2lkIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uQ29uc3Ry
dWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKIHsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3Rv
dHlwZSwgSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb246OnByb3RvdHlwZSh2bSwg
Z2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pOworICAgIGF1dG8qIHByb3RvdHlwZSA9IEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3Vz
T3BlcmF0aW9uOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCk7CisgICAgcHJvdG90eXBlLT5w
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJU
ZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24iX3MpLCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pOwogfQpAQCAtMTA2LDcgKzEwMyw2IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZv
IEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uQ29uc3RydWN0b3I6OnNfaW5mCiAK
IHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09w
ZXJhdGlvblByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewotICAgIHsgImNvbnN0cnVjdG9yIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbkNvbnN0cnVjdG9yKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb25Db25zdHJ1Y3RvcikgfSB9LAogICAg
IHsgInRvU3RyaW5nIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05h
dGl2ZUZ1bmN0aW9uPihqc1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvblByb3RvdHlw
ZUZ1bmN0aW9uVG9TdHJpbmcpLCAoaW50cHRyX3QpICgwKSB9IH0sCiB9OwogCkBAIC0xMTUsNiAr
MTExLDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0
aW9uUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0U3QKIHZvaWQgSlNUZXN0U3RyaW5naWZpZXJB
bm9ueW1vdXNPcGVyYXRpb25Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5jb25zdHJ1Y3RvciwganNVbmRlZmluZWQoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcmVpZnlTdGF0aWNQcm9w
ZXJ0aWVzKHZtLCBKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbjo6aW5mbygpLCBK
U1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvblByb3RvdHlwZVRhYmxlVmFsdWVzLCAq
dGhpcyk7CiAgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CkBA
IC0xNjEsMjkgKzE1OCw2IEBAIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFN0cmluZ2lmaWVyQW5v
bnltb3VzT3BlcmF0aW9uKiBJRExPcGVyYXRpb248SlNUZXN0U3RyaW5nCiAgICAgcmV0dXJuIGpz
RHluYW1pY0Nhc3Q8SlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24qPihKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUganNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb25Db25zdHJ1
Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFN0cmlu
Z2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRp
b246OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3Rv
dHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKLX0KLQotYm9vbCBzZXRKU1Rlc3RTdHJpbmdpZmllckFu
b255bW91c09wZXJhdGlvbkNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwot
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8q
IHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVy
YXRpb25Qcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlm
IChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHBy
b3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb25Qcm90b3R5cGVG
dW5jdGlvblRvU3RyaW5nQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNU
ZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRU
aGlzKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmNwcAppbmRl
eCAzZjYyODc2MzlmNDI4YjgzMGNiZjQzZTMxNjYwNmZlODk2ZWYxNjc3Li42NDVhZGUzYWM3NWZk
MmJiNGYxMjk4MWExOGQ1NWQ3ZTE5ZmQzMzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwCkBAIC00OSwxMSArNDksNiBAQCB1c2luZyBuYW1l
c3BhY2UgSlNDOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmlu
Z2lmaWVyTmFtZWRPcGVyYXRpb25Qcm90b3R5cGVGdW5jdGlvbklkZW50aWZpZXIoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvblByb3RvdHlwZUZ1bmN0aW9u
VG9TdHJpbmcoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKLS8vIEF0
dHJpYnV0ZXMKLQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTdHJpbmdpZmllck5hbWVkT3Bl
cmF0aW9uQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLWJvb2wgc2V0SlNUZXN0U3RyaW5naWZpZXJOYW1lZE9w
ZXJhdGlvbkNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKLQogY2xhc3MgSlNUZXN0U3RyaW5naWZpZXJOYW1l
ZE9wZXJhdGlvblByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3Qg
ewogcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CkBAIC05
Niw3ICs5MSw5IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3Bl
cmF0aW9uQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjCiAKIHRlbXBsYXRlPD4gdm9pZCBK
U1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9w
ZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0U3RyaW5naWZp
ZXJOYW1lZE9wZXJhdGlvbjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CisgICAgYXV0byogcHJvdG90
eXBlID0gSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbjo6cHJvdG90eXBlKHZtLCBnbG9i
YWxPYmplY3QpOworICAgIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5wcm90b3R5cGUsIHByb3RvdHlwZSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFt
ZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24i
X3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxl
bmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQpAQCAtMTA3LDcgKzEwNCw2IEBAIHRl
bXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25D
b25zdHJ1Y3Rvcjo6c19pbmZvID0KIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVz
dFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Qcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKLSAg
ICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlv
bkNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbkNvbnN0cnVjdG9y
KSB9IH0sCiAgICAgeyAiaWRlbnRpZmllciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlv
blByb3RvdHlwZUZ1bmN0aW9uSWRlbnRpZmllciksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7
ICJ0b1N0cmluZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRp
dmVGdW5jdGlvbj4oanNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvblByb3RvdHlwZUZ1bmN0
aW9uVG9TdHJpbmcpLCAoaW50cHRyX3QpICgwKSB9IH0sCiB9OwpAQCAtMTE3LDYgKzExMyw3IEBA
IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uUHJvdG90eXBl
OjpzX2luZm8gPSB7ICJUZXN0U3RyaW5nCiB2b2lkIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVy
YXRpb25Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25z
dHJ1Y3RvciwganNVbmRlZmluZWQoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBK
U1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uOjppbmZvKCksIEpTVGVzdFN0cmluZ2lmaWVy
TmFtZWRPcGVyYXRpb25Qcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwogICAgIEpTQ19UT19T
VFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQpAQCAtMTYzLDI5ICsxNjAsNiBAQCB0
ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uKiBJRExPcGVy
YXRpb248SlNUZXN0U3RyaW5naWZpZQogICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdFN0
cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24qPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0U3Ry
aW5naWZpZXJOYW1lZE9wZXJhdGlvbkNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKLXsK
LSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlw
ZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvblByb3RvdHlw
ZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFw
cm90b3R5cGUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdFN0
cmluZ2lmaWVyTmFtZWRPcGVyYXRpb246OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKLX0KLQotYm9vbCBz
ZXRKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uQ29uc3RydWN0b3IoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RTdHJpbmdp
Zmllck5hbWVkT3BlcmF0aW9uUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvcgot
ICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29u
c3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Q
cm90b3R5cGVGdW5jdGlvbklkZW50aWZpZXJCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9w
ZXJhdGlvbjxKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uPjo6Q2xhc3NQYXJhbWV0ZXIg
Y2FzdGVkVGhpcykKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9i
amVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlv
bkltcGxlbWVudGVkQXMuY3BwCmluZGV4IGI4NmYxMmY5MTc1MzljMmQ1MzlkNTA5YzlhYTg0ODQy
ZjlmYTI2YTMuLmViNjJlMmIwOWRlOTg5Yjg0ZDE1Njc3ZTQ2Yjc0ODlmOTdkYzYzYjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJp
bmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVu
dGVkQXMuY3BwCkBAIC00OSwxMSArNDksNiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1w
bGVtZW50ZWRBc1Byb3RvdHlwZUZ1bmN0aW9uSWRlbnRpZmllcihKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpDYWxsRnJhbWUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQcm90b3R5cGVGdW5jdGlvblRv
U3RyaW5nKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCi0vLyBBdHRy
aWJ1dGVzCi0KLUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25J
bXBsZW1lbnRlZEFzQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLWJvb2wgc2V0SlNUZXN0U3RyaW5naWZpZXJP
cGVyYXRpb25JbXBsZW1lbnRlZEFzQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwotCiBjbGFzcyBKU1Rlc3RT
dHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMg
SlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNDOjpK
U05vbkZpbmFsT2JqZWN0OwpAQCAtOTYsNyArOTEsOSBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNU
ZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzQ29uc3RydWN0b3I6OnByb3RvdHlw
ZQogCiB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRl
ZEFzQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnByb3RvdHlwZSwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzOjpw
cm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRE
ZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBKU1Rlc3RTdHJpbmdp
Zmllck9wZXJhdGlvbkltcGxlbWVudGVkQXM6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KTsK
KyAgICBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0
b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSkpOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBl
LCBwcm90b3R5cGUsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJp
dmlhbFN0cmluZyh2bSwgIlRlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMiX3Mp
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0
aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQpAQCAtMTA3LDcgKzEwNCw2IEBAIHRlbXBs
YXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50
ZWRBc0NvbnN0cnVjdG9yOjpzCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RT
dHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0K
IHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0U3RyaW5naWZpZXJPcGVyYXRp
b25JbXBsZW1lbnRlZEFzQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbklt
cGxlbWVudGVkQXNDb25zdHJ1Y3RvcikgfSB9LAogICAgIHsgImlkZW50aWZpZXIiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdFN0
cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlwZUZ1bmN0aW9uSWRlbnRpZmll
ciksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJ0b1N0cmluZyIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0U3RyaW5naWZp
ZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyksIChpbnRw
dHJfdCkgKDApIH0gfSwKIH07CkBAIC0xMTcsNiArMTEzLDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpT
VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlwZTo6c19pbmZvID0g
eyAiVGUKIHZvaWQgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
dm0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGpz
VW5kZWZpbmVkKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSkpOwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0U3RyaW5n
aWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzOjppbmZvKCksIEpTVGVzdFN0cmluZ2lmaWVyT3Bl
cmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7CiAgICAgSlND
X1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CkBAIC0xNjMsMjkgKzE2MCw2
IEBAIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50
ZWRBcyogSURMT3BlcmF0aW9uPEpTVGVzdFN0CiAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzKj4oSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc0NvbnN0cnVjdG9yKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9i
YWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U3RyaW5naWZpZXJP
cGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRl
ZEFzOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90
b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7Ci19Ci0KLWJvb2wgc2V0SlNUZXN0U3RyaW5naWZpZXJP
cGVyYXRpb25JbXBsZW1lbnRlZEFzQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVj
dCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
YXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlv
bkltcGxlbWVudGVkQXNQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVy
cm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAg
cmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1
Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRl
ZEFzUHJvdG90eXBlRnVuY3Rpb25JZGVudGlmaWVyQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJ
RExPcGVyYXRpb248SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzPjo6Q2xh
c3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4
aWNhbEdsb2JhbE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdp
Zmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCmluZGV4IDY2NmUzNTY3ZWQ0OTg2Mzc2YmM3
ZGZhZTRkNGQyZGFjYTliMDBiNzIuLmY2Mjk2ZGM3MmM5MWZjNmE2YjdiODZjM2E4NWZmY2ZlNzg0
ODVkZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJh
dGlvbk5hbWVkVG9TdHJpbmcuY3BwCkBAIC00OCwxMSArNDgsNiBAQCB1c2luZyBuYW1lc3BhY2Ug
SlNDOwogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZp
ZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAotLy8gQXR0cmlidXRlcwotCi1KU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ0Nv
bnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRU
b1N0cmluZ0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKLQogY2xhc3MgSlNUZXN0U3RyaW5naWZpZXJPcGVy
YXRpb25OYW1lZFRvU3RyaW5nUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5h
bE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVj
dDsKQEAgLTk1LDcgKzkwLDkgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFN0cmluZ2lmaWVy
T3BlcmF0aW9uTmFtZWRUb1N0cmluZ0NvbnN0cnVjdG9yOjpwcm90b3R5cGUKIAogdGVtcGxhdGU8
PiB2b2lkIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ0NvbnN0cnVjdG9y
Ojppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCiB7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUs
IEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZzo6cHJvdG90eXBlKHZtLCBn
bG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSk7CisgICAgYXV0byogcHJvdG90eXBlID0gSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25O
YW1lZFRvU3RyaW5nOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCk7CisgICAgcHJvdG90eXBl
LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0s
ICJUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nIl9zKSwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7
CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDAp
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKIH0KQEAgLTEwNiw3ICsxMDMsNiBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENs
YXNzSW5mbyBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdDb25zdHJ1Y3Rv
cjo6cwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0U3RyaW5naWZpZXJPcGVy
YXRpb25OYW1lZFRvU3RyaW5nUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29u
c3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmlu
Z0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nQ29u
c3RydWN0b3IpIH0gfSwKICAgICB7ICJ0b1N0cmluZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0U3RyaW5naWZpZXJPcGVyYXRp
b25OYW1lZFRvU3RyaW5nUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyksIChpbnRwdHJfdCkgKDAp
IH0gfSwKIH07CiAKQEAgLTExNSw2ICsxMTEsNyBAQCBjb25zdCBDbGFzc0luZm8gSlNUZXN0U3Ry
aW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZQog
dm9pZCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Cisg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwganNVbmRlZmlu
ZWQoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSk7CiAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RTdHJpbmdpZmllck9w
ZXJhdGlvbk5hbWVkVG9TdHJpbmc6OmluZm8oKSwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25O
YW1lZFRvU3RyaW5nUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKICAgICBKU0NfVE9fU1RS
SU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKIH0KQEAgLTE2MSwyOSArMTU4LDYgQEAgdGVt
cGxhdGU8PiBpbmxpbmUgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nKiBJ
RExPcGVyYXRpb248SlNUZXN0U3QKICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RTdHJp
bmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNU
ZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nQ29uc3RydWN0b3IoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVj
dCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
YXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlv
bk5hbWVkVG9TdHJpbmdQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmc6Omdl
dENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+
Z2xvYmFsT2JqZWN0KCkpKTsKLX0KLQotYm9vbCBzZXRKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlv
bk5hbWVkVG9TdHJpbmdDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBw
cm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRU
b1N0cmluZ1Byb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAg
aWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4g
cHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdQcm90
b3R5cGVGdW5jdGlvblRvU3RyaW5nQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRp
b248SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nPjo6Q2xhc3NQYXJhbWV0
ZXIgY2FzdGVkVGhpcykKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0
dHJpYnV0ZS5jcHAKaW5kZXggYzUwMzdlZjM1MWI5NTYxZmIwYzA3ZjBiMzVhYmYwZGUxMDEwNzcw
Yy4uZTNhY2E5MTIwNjljZjczYWIwYjAwYzlkYTAxNDFmMDVjNDNiMjNmOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVy
UmVhZE9ubHlBdHRyaWJ1dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcApAQCAtNTEs
OCArNTEsNiBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5n
aWZpZXJSZWFkT25seUF0dHJpYnV0ZVByb3RvdHlwZUZ1bgogCiAvLyBBdHRyaWJ1dGVzCiAKLUpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZUNvbnN0
cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlBy
b3BlcnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVD
b25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFN0cmluZ2lmaWVy
UmVhZE9ubHlBdHRyaWJ1dGVJZGVudGlmaWVyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiAKIGNsYXNzIEpTVGVzdFN0cmluZ2lm
aWVyUmVhZE9ubHlBdHRyaWJ1dGVQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZp
bmFsT2JqZWN0IHsKQEAgLTk3LDcgKzk1LDkgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFN0
cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3QKIAog
dGVtcGxhdGU8PiB2b2lkIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVDb25zdHJ1
Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQogewotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90
eXBlLCBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlOjpwcm90b3R5cGUodm0sIGds
b2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKTsKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0
cmlidXRlOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCk7CisgICAgcHJvdG90eXBlLT5wdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0
U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZSJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSk7CiB9CkBAIC0xMDgsNyArMTA4LDYgQEAgdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNU
ZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZUNvbnN0cnVjdG9yOjpzX2luZm8KIAogc3Rh
dGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1
dGVQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZUNvbnN0cnVjdG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0
U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZUNvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAiaWRl
bnRpZmllciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RTdHJpbmdpZmll
clJlYWRPbmx5QXR0cmlidXRlSWRlbnRpZmllciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJ0b1N0cmluZyIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNU
ZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZVByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcp
LCAoaW50cHRyX3QpICgwKSB9IH0sCiB9OwpAQCAtMTE4LDYgKzExNyw3IEBAIGNvbnN0IENsYXNz
SW5mbyBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlUHJvdG90eXBlOjpzX2luZm8g
PSB7ICJUZXN0U3RyCiB2b2lkIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVQcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bih2bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvciwg
anNVbmRlZmluZWQoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSk7CiAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RTdHJp
bmdpZmllclJlYWRPbmx5QXR0cmlidXRlOjppbmZvKCksIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9u
bHlBdHRyaWJ1dGVQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwogICAgIEpTQ19UT19TVFJJ
TkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQpAQCAtMTY5LDI5ICsxNjksNiBAQCB0ZW1w
bGF0ZTw+IGlubGluZSBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlKiBJRExPcGVy
YXRpb248SlNUZXN0U3RyaW5naQogICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdFN0cmlu
Z2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0U3Ry
aW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZUNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
LXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3Rv
dHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZVBy
b3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElL
RUxZKCFwcm90b3R5cGUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
VGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGU6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0
Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKLX0K
LQotYm9vbCBzZXRKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlQ29uc3RydWN0b3Io
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQotewotICAgIFZNJiB2bSA9IEpTQzo6
Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1p
biBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsK
LX0KLQogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRy
aWJ1dGVJZGVudGlmaWVyR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlJiB0aGlzT2JqZWN0KQogewogICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZp
ZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAppbmRleCA5
MDAyOWJjZTYzODYyZTdjZjNiODc4ZjMzOTYwYjNkNjBmM2ZmOWE0Li5hNTAwY2I4MzY4YWU5YjFi
ZjBlNjVmYzlmZjcwZGJmZmE0YWYyZjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
dHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAKQEAgLTUxLDggKzUxLDYgQEAgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0
cmlidXRlUHJvdG90eXBlRnUKIAogLy8gQXR0cmlidXRlcwogCi1KU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlQ29uc3RydWN0b3IoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLWJv
b2wgc2V0SlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVDb25zdHJ1Y3RvcihKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmli
dXRlSWRlbnRpZmllcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9vbCBzZXRKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0
dHJpYnV0ZUlkZW50aWZpZXIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogCkBAIC05OCw3ICs5Niw5IEBAIHRlbXBsYXRlPD4g
SlNWYWx1ZSBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZUNvbnN0cnVjdG9yOjpw
cm90b3R5cGVGb3JTCiAKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0
ZUF0dHJpYnV0ZUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRl
Ojpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBKU1Rlc3RTdHJp
bmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZTo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpOwor
ICAgIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rv
ciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUs
IHByb3RvdHlwZSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2
aWFsU3RyaW5nKHZtLCAiVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlIl9zKSwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpz
TnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KQEAgLTEwOSw3ICsxMDksNiBAQCB0ZW1wbGF0ZTw+
IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZUNvbnN0
cnVjdG9yOjpzX2luZgogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0U3RyaW5n
aWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKLSAgICB7
ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1
dGVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlQ29uc3Ry
dWN0b3IpIH0gfSwKICAgICB7ICJpZGVudGlmaWVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0
dHJpYnV0ZUlkZW50aWZpZXIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZUlk
ZW50aWZpZXIpIH0gfSwKICAgICB7ICJ0b1N0cmluZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0U3RyaW5naWZpZXJSZWFkV3Jp
dGVBdHRyaWJ1dGVQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKSwgKGludHB0cl90KSAoMCkgfSB9
LAogfTsKQEAgLTExOSw2ICsxMTgsNyBAQCBjb25zdCBDbGFzc0luZm8gSlNUZXN0U3RyaW5naWZp
ZXJSZWFkV3JpdGVBdHRyaWJ1dGVQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RTdAogdm9pZCBK
U1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBqc1VuZGVmaW5lZCgpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAg
ICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0
cmlidXRlOjppbmZvKCksIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlUHJvdG90
eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKICAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RS
QU5TSVRJT04oKTsKIH0KQEAgLTE3MCwyOSArMTcwLDYgQEAgdGVtcGxhdGU8PiBpbmxpbmUgSlNU
ZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUqIElETE9wZXJhdGlvbjxKU1Rlc3RTdHJp
bmcKICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0
dHJpYnV0ZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBjYWxsRnJhbWUudGhp
c1ZhbHVlKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTdHJpbmdpZmllclJlYWRXcml0
ZUF0dHJpYnV0ZUNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKLXsKLSAgICBWTSYgdm0g
PSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVQcm90b3R5cGUqPih2bSwg
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBl
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RTdHJpbmdpZmll
clJlYWRXcml0ZUF0dHJpYnV0ZTo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwotfQotCi1ib29sIHNldEpT
VGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlQ29uc3RydWN0b3IoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RTdHJpbmdp
ZmllclJlYWRXcml0ZUF0dHJpYnV0ZVByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93
Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0
b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
PmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIHN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZUlkZW50
aWZpZXJHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdFN0
cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlJiB0aGlzT2JqZWN0KQogewogICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcApp
bmRleCBlZWI5OTBmODVhMzZlZjY5MTNiNzc1YjE1MzFjNWIxNWEyOGVlODdhLi5lZDM4OTYyMThh
ODJlZjM0YTVjMGQ5YTE5OWQwZDU2MGI3ZDczMWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKQEAg
LTgzLDggKzgzLDYgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5
cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXAKIAogLy8gQXR0cmlidXRlcwog
Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQ29uc3RydWN0b3IoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLWJv
b2wgc2V0SlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdFR5cGVkZWZzVW5zaWduZWRMb25nTG9uZ0F0dHIoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIGJvb2wgc2V0SlNU
ZXN0VHlwZWRlZnNVbnNpZ25lZExvbmdMb25nQXR0cihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdFR5cGVkZWZzU2VyaWFsaXplZFNjcmlwdFZhbHVlKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CkBAIC0xODksNyAr
MTg3LDkgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3I6OnBy
b3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwKIAogdGVtcGxhdGU8PiB2b2lkIEpTVGVz
dFR5cGVkZWZzQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0VHlwZWRlZnM6OnByb3RvdHlwZSh2bSwgZ2xvYmFs
T2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
OworICAgIGF1dG8qIHByb3RvdHlwZSA9IEpTVGVzdFR5cGVkZWZzOjpwcm90b3R5cGUodm0sIGds
b2JhbE9iamVjdCk7CisgICAgcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5u
YW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0VHlwZWRlZnMiX3MpLCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIo
MyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pOwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0VHlw
ZWRlZnM6OmluZm8oKSwgSlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvclRhYmxlVmFsdWVzLCAqdGhp
cyk7CkBAIC0yMDEsNyArMjAxLDYgQEAgdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0
VHlwZWRlZnNDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdFR5cGVkZWZzIiwKIAogc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlVGFibGVWYWx1ZXNb
XSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFR5cGVkZWZzQ29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAidW5zaWduZWRM
b25nTG9uZ0F0dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzVGVzdFR5cGVkZWZzVW5zaWduZWRMb25nTG9uZ0F0dHIpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RUeXBl
ZGVmc1Vuc2lnbmVkTG9uZ0xvbmdBdHRyKSB9IH0sCiAgICAgeyAic2VyaWFsaXplZFNjcmlwdFZh
bHVlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RUeXBlZGVmc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZSksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdFR5cGVkZWZzU2Vy
aWFsaXplZFNjcmlwdFZhbHVlKSB9IH0sCiAgICAgeyAiYXR0cmlidXRlV2l0aENsYW1wIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RU
eXBlZGVmc0F0dHJpYnV0ZVdpdGhDbGFtcCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdFR5cGVkZWZzQXR0cmlidXRlV2l0aENs
YW1wKSB9IH0sCkBAIC0yMzAsNiArMjI5LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFR5cGVk
ZWZzUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0VHlwZWRlZnMiLCAmQmFzZTo6c19pbmYKIHZv
aWQgSlNUZXN0VHlwZWRlZnNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5jb25zdHJ1Y3RvciwganNVbmRlZmluZWQoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcmVpZnlTdGF0aWNQcm9w
ZXJ0aWVzKHZtLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpLCBKU1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZVRhYmxlVmFsdWVzLCAqdGhpcyk7CiAgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFO
U0lUSU9OKCk7CiB9CkBAIC0yODEsMjkgKzI4MSw2IEBAIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVz
dFR5cGVkZWZzKiBJRExPcGVyYXRpb248SlNUZXN0VHlwZWRlZnM+OjpjYXN0KEpTR2xvYmFsT2Jq
CiAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUganNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCi17
Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5
cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0VHlwZWRlZnM6OmdldENvbnN0
cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFs
T2JqZWN0KCkpKTsKLX0KLQotYm9vbCBzZXRKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZN
KGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
VHlwZWRlZnNQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAg
IGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJu
IHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvciwg
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNUZXN0VHlwZWRlZnNVbnNpZ25lZExvbmdMb25nQXR0ckdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0VHlwZWRlZnMmIHRoaXNPYmplY3QpCiB7CiAg
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtlckdsb2Jh
bFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dv
cmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCA1NTRlYzdmNDNhZTQzM2YwMzlhZjM4YjUyZWU3Mzc0
NDdmZTg5ZjA5Li5kMWQ3NGExMGU1ZGUwZmYzNjE1NzM3ZWU1ZjliMzBiZmY0YTU2YzVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJH
bG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC00OSw4ICs0OSw2IEBAIHVzaW5nIG5hbWVz
cGFjZSBKU0M7CiAKIC8vIEF0dHJpYnV0ZXMKIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1dvcmtl
ckdsb2JhbFNjb3BlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLWJvb2wgc2V0SlNXb3JrZXJHbG9iYWxTY29w
ZUNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNXb3JrZXJHbG9iYWxT
Y29wZUV4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBib29sIHNldEpT
V29ya2VyR2xvYmFsU2NvcGVFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dDb25zdHJ1Y3RvcihKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzV29ya2VyR2xvYmFsU2NvcGVUZXN0Tm9kZUNvbnN0
cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlBy
b3BlcnR5TmFtZSk7CkBAIC05NCw3ICs5Miw5IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1dvcmtl
ckdsb2JhbFNjb3BlQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNCiAK
IHRlbXBsYXRlPD4gdm9pZCBKU1dvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3I6OmluaXRpYWxp
emVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsK
LSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNXb3JrZXJH
bG9iYWxTY29wZTo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CisgICAgYXV0byogcHJvdG90eXBlID0g
SlNXb3JrZXJHbG9iYWxTY29wZTo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpOworICAgIHBy
b3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhp
cywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3Rv
dHlwZSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwog
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3Ry
aW5nKHZtLCAiV29ya2VyR2xvYmFsU2NvcGUiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
OwogfQpAQCAtMTAzLDI0ICsxMDMsMjMgQEAgdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNX
b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJXb3JrZXJHbG8KIAogLyog
SGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFj
dEhhc2hJbmRleCBKU1dvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlVGFibGVJbmRleFsyXSA9IHsK
K3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1dvcmtlckdsb2JhbFNjb3Bl
UHJvdG90eXBlVGFibGVJbmRleFsxXSA9IHsKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMCwgLTEg
fSwKIH07CiAKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTV29ya2VyR2xvYmFsU2Nv
cGVQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNXb3JrZXJHbG9iYWxTY29wZUNv
bnN0cnVjdG9yKSB9IH0sCisgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfQogfTsK
IAotc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1dvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlVGFi
bGUgPSB7IDEsIDEsIHRydWUsIEpTV29ya2VyR2xvYmFsU2NvcGU6OmluZm8oKSwgSlNXb3JrZXJH
bG9iYWxTY29wZVByb3RvdHlwZVRhYmxlVmFsdWVzLCBKU1dvcmtlckdsb2JhbFNjb3BlUHJvdG90
eXBlVGFibGVJbmRleCB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1dvcmtlckdsb2JhbFNj
b3BlUHJvdG90eXBlVGFibGUgPSB7IDAsIDAsIGZhbHNlLCBKU1dvcmtlckdsb2JhbFNjb3BlOjpp
bmZvKCksIEpTV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGVUYWJsZVZhbHVlcywgSlNXb3JrZXJH
bG9iYWxTY29wZVByb3RvdHlwZVRhYmxlSW5kZXggfTsKIGNvbnN0IENsYXNzSW5mbyBKU1dvcmtl
ckdsb2JhbFNjb3BlUHJvdG90eXBlOjpzX2luZm8gPSB7ICJXb3JrZXJHbG9iYWxTY29wZSIsICZC
YXNlOjpzX2luZm8sICZKU1dvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlVGFibGUsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZSkgfTsKIAog
dm9pZCBKU1dvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0p
CiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIHJlaWZ5U3RhdGljUHJvcGVy
dGllcyh2bSwgSlNXb3JrZXJHbG9iYWxTY29wZTo6aW5mbygpLCBKU1dvcmtlckdsb2JhbFNjb3Bl
UHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBqc1VuZGVmaW5lZCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0NfVE9fU1RSSU5H
X1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKIH0KIApAQCAtMTU5LDI5ICsxNTgsNiBAQCB0ZW1w
bGF0ZTw+IGlubGluZSBKU1dvcmtlckdsb2JhbFNjb3BlKiBJRExBdHRyaWJ1dGU8SlNXb3JrZXJH
bG9iYWxTY29wZT46OmNhc3QoSgogICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTV29ya2VyR2xv
YmFsU2NvcGUqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBqc1dvcmtlckdsb2JhbFNjb3Bl
Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0
Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1dv
cmtlckdsb2JhbFNjb3BlUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNXb3JrZXJHbG9iYWxTY29wZTo6Z2V0Q29uc3RydWN0b3IoSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwot
fQotCi1ib29sIHNldEpTV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTV29ya2VyR2xvYmFs
U2NvcGVQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlm
IChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHBy
b3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNXb3JrZXJHbG9iYWxTY29wZUV4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0NvbnN0cnVjdG9yR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1dvcmtlckdsb2JhbFNj
b3BlJiB0aGlzT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1dvcmtsZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IDIyZWI4YzliZmU5NTZmNGRi
YzczMjAyYTFmNDI4Y2I1ZWZiZjg2OWEuLjQyYjUwZTFhOWJiMWRlM2VhNTMzMjhjMmQyNDQ2NDcy
ZTlkMDFiMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNjb3BlLmNwcApAQCAtNDIsMTEgKzQy
LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLS8vIEF0
dHJpYnV0ZXMKLQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0
cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlBy
b3BlcnR5TmFtZSk7Ci1ib29sIHNldEpTV29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3IoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUpOwotCiB1c2luZyBKU1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yID0gSlNET01Db25z
dHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNXb3JrbGV0R2xvYmFsU2NvcGU+OwogCiB0ZW1wbGF0
ZTw+IEpTVmFsdWUgSlNXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9y
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQpAQCAtNTYsNyArNTEsOSBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNXb3JrbGV0R2xvYmFs
U2NvcGVDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6VgogCiB0ZW1wbGF0
ZTw+IHZvaWQgSlNXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3Bl
cnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1dvcmtsZXRHbG9iYWxT
Y29wZTo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CisgICAgYXV0byogcHJvdG90eXBlID0gSlNXb3Jr
bGV0R2xvYmFsU2NvcGU6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBwcm90b3R5
cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwor
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUs
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2
bSwgIldvcmtsZXRHbG9iYWxTY29wZSJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9
CkBAIC02NSwyNCArNjIsMjMgQEAgdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNXb3JrbGV0
R2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiV29ya2xldEcKIAogLyogSGFzaCB0
YWJsZSBmb3IgcHJvdG90eXBlICovCiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJ
bmRleCBKU1dvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlwZVRhYmxlSW5kZXhbMl0gPSB7CitzdGF0
aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNXb3JrbGV0R2xvYmFsU2NvcGVQcm90
b3R5cGVUYWJsZUluZGV4WzFdID0gewogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAwLCAtMSB9LAog
fTsKIAogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNXb3JrbGV0R2xvYmFsU2NvcGVQ
cm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTV29ya2xldEdsb2JhbFNjb3BlQ29u
c3RydWN0b3IpIH0gfSwKKyAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9CiB9Owog
Ci1zdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTV29ya2xldEdsb2JhbFNjb3BlUHJvdG90eXBlVGFi
bGUgPSB7IDEsIDEsIHRydWUsIEpTV29ya2xldEdsb2JhbFNjb3BlOjppbmZvKCksIEpTV29ya2xl
dEdsb2JhbFNjb3BlUHJvdG90eXBlVGFibGVWYWx1ZXMsIEpTV29ya2xldEdsb2JhbFNjb3BlUHJv
dG90eXBlVGFibGVJbmRleCB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1dvcmtsZXRHbG9i
YWxTY29wZVByb3RvdHlwZVRhYmxlID0geyAwLCAwLCBmYWxzZSwgSlNXb3JrbGV0R2xvYmFsU2Nv
cGU6OmluZm8oKSwgSlNXb3JrbGV0R2xvYmFsU2NvcGVQcm90b3R5cGVUYWJsZVZhbHVlcywgSlNX
b3JrbGV0R2xvYmFsU2NvcGVQcm90b3R5cGVUYWJsZUluZGV4IH07CiBjb25zdCBDbGFzc0luZm8g
SlNXb3JrbGV0R2xvYmFsU2NvcGVQcm90b3R5cGU6OnNfaW5mbyA9IHsgIldvcmtsZXRHbG9iYWxT
Y29wZSIsICZCYXNlOjpzX2luZm8sICZKU1dvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlwZVRhYmxl
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTV29ya2xldEdsb2JhbFNjb3BlUHJvdG90
eXBlKSB9OwogCiB2b2lkIEpTV29ya2xldEdsb2JhbFNjb3BlUHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIHJlaWZ5
U3RhdGljUHJvcGVydGllcyh2bSwgSlNXb3JrbGV0R2xvYmFsU2NvcGU6OmluZm8oKSwgSlNXb3Jr
bGV0R2xvYmFsU2NvcGVQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOworICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGpzVW5kZWZpbmVkKCksIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAg
IEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQogCkBAIC0xMTYsMjkg
KzExMiw2IEBAIEpTVmFsdWUgSlNXb3JrbGV0R2xvYmFsU2NvcGU6OmdldENvbnN0cnVjdG9yKFZN
JiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAgICAgcmV0dXJuIGdldERPTUNvbnN0
cnVjdG9yPEpTV29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0
IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IGpzV29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQotewot
ICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBl
ID0ganNEeW5hbWljQ2FzdDxKU1dvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlwZSo+KHZtLCBKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTV29ya2xldEdsb2JhbFNjb3Bl
OjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5
cGUtPmdsb2JhbE9iamVjdCgpKSk7Ci19Ci0KLWJvb2wgc2V0SlNXb3JrbGV0R2xvYmFsU2NvcGVD
b25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCi17Ci0gICAgVk0m
IHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5
bmFtaWNDYXN0PEpTV29ya2xldEdsb2JhbFNjb3BlUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBj
b25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0K
LQogSlNDOjpJc29TdWJzcGFjZSogSlNXb3JrbGV0R2xvYmFsU2NvcGU6OnN1YnNwYWNlRm9ySW1w
bChKU0M6OlZNJiB2bSkKIHsKICAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpT
Vk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409041</attachid>
            <date>2020-09-17 09:31:31 -0700</date>
            <delta_ts>2020-10-11 11:30:36 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-216533-20200917193129.patch</filename>
            <type>text/plain</type>
            <size>9416</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3MTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjAxZTc1Y2VhM2E5NTE0
ZGU5NDg0YWU4NTNhMzY4MTYwMGE3ZjQ3Zi4uZDAwMTRmN2Q5ODdhMGY5NTc3YTliZDQzOThiNGFk
YzYzNTJkYjI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA5LTE3ICBBbGV4
ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBNb2RpZnlpbmcg
b2JqZWN0IGNyZWF0ZWQgYnkgT2JqZWN0LmNyZWF0ZSBmcm9tIHRoZSBwcm90b3R5cGUgb2YgSFRN
TEVsZW1lbnQgbW9kaWZpZXMgdGhlIG9yaWdpbmFsIG9iamVjdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2NTMzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogVE9ETy4KKworICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC8qOiBVcGRhdGVkLgorCiAyMDIwLTA5LTE3ICBBbnR0aSBLb2l2aXN0byAgPGFu
dHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBTdHlsZTo6Q2hhbmdlIHNob3VsZCBiZSBlbnVtIGNs
YXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCmluZGV4IGI0MTgwYTI5M2JlYjIzNzUzMmE4MGVlMTc3M2ZjODcxOWNmMWNkMjIuLjAy
YzdhNDE1NmZiNjg2ZWUwMTgzNzQzZmMzMDI1Y2MyOGM2YzQxNzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0yMTMzLDcg
KzIxMzMsNiBAQCBzdWIgUHJvdG90eXBlUHJvcGVydHlDb3VudAogICAgICAgICAkY291bnQrKyBp
ZiAhQXR0cmlidXRlU2hvdWxkQmVPbkluc3RhbmNlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwog
ICAgIH0KICAgICAkY291bnQgKz0gUHJvdG90eXBlT3BlcmF0aW9uQ291bnQoJGludGVyZmFjZSk7
Ci0gICAgJGNvdW50KysgaWYgTmVlZHNDb25zdHJ1Y3RvclByb3BlcnR5KCRpbnRlcmZhY2UpOwog
ICAgIHJldHVybiAkY291bnQ7CiB9CiAKQEAgLTMzNTQsMTcgKzMzNTMsNiBAQCBzdWIgR2VuZXJh
dGVQcm9wZXJ0aWVzSGFzaFRhYmxlCiAgICAgIyAtIEFkZCBhbGwgcHJvcGVydGllcyBpbiBhIGhh
c2h0YWJsZSBkZWZpbml0aW9uCiAgICAgbXkgJHByb3BlcnR5Q291bnQgPSAkaXNJbnN0YW5jZSA/
IEluc3RhbmNlUHJvcGVydHlDb3VudCgkaW50ZXJmYWNlKSA6IFByb3RvdHlwZVByb3BlcnR5Q291
bnQoJGludGVyZmFjZSk7CiAKLSAgICBpZiAoISRpc0luc3RhbmNlICYmIE5lZWRzQ29uc3RydWN0
b3JQcm9wZXJ0eSgkaW50ZXJmYWNlKSkgewotICAgICAgICBkaWUgaWYgISRwcm9wZXJ0eUNvdW50
OwotICAgICAgICBwdXNoKEAkaGFzaEtleXMsICJjb25zdHJ1Y3RvciIpOwotICAgICAgICBteSAk
Z2V0dGVyID0gImpzIiAuICRpbnRlcmZhY2VOYW1lIC4gIkNvbnN0cnVjdG9yIjsKLSAgICAgICAg
cHVzaChAJGhhc2hWYWx1ZTEsICRnZXR0ZXIpOwotCi0gICAgICAgIG15ICRzZXR0ZXIgPSAic2V0
SlMiIC4gJGludGVyZmFjZU5hbWUgLiAiQ29uc3RydWN0b3IiOwotICAgICAgICBwdXNoKEAkaGFz
aFZhbHVlMiwgJHNldHRlcik7Ci0gICAgICAgIHB1c2goQCRoYXNoU3BlY2lhbHMsICJzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pIik7Ci0gICAg
fQotCiAgICAgcmV0dXJuIDAgaWYgISRwcm9wZXJ0eUNvdW50OwogCiAgICAgZm9yZWFjaCBteSAk
YXR0cmlidXRlIChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7CkBAIC00MjYzLDE3ICs0MjUx
LDkgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJcbiIpOwogICAgIH0KIAotICAgIGlmICgkbnVtQXR0cmlidXRlcyA+IDAgfHwgTmVlZHND
b25zdHJ1Y3RvclByb3BlcnR5KCRpbnRlcmZhY2UpKSB7CisgICAgaWYgKCRudW1BdHRyaWJ1dGVz
ID4gMCkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIi8vIEF0dHJpYnV0ZXNcblxuIik7
CiAKLSAgICAgICAgaWYgKE5lZWRzQ29uc3RydWN0b3JQcm9wZXJ0eSgkaW50ZXJmYWNlKSkgewot
ICAgICAgICAgICAgbXkgJGNvbnN0cnVjdG9yR2V0dGVyID0gImpzIiAuICRpbnRlcmZhY2VOYW1l
IC4gIkNvbnN0cnVjdG9yIjsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNDOjpF
bmNvZGVkSlNWYWx1ZSAke2NvbnN0cnVjdG9yR2V0dGVyfShKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpO1xuIik7Ci0KLSAgICAgICAg
ICAgIG15ICRjb25zdHJ1Y3RvclNldHRlciA9ICJzZXRKUyIgLiAkaW50ZXJmYWNlTmFtZSAuICJD
b25zdHJ1Y3RvciI7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtjb25z
dHJ1Y3RvclNldHRlcn0oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6RW5jb2RlZEpTVmFsdWUpO1xuIik7Ci0gICAgICAgIH0KLQogICAgICAgICBmb3JlYWNo
IG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKICAgICAgICAgICAg
IG5leHQgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Rm9yd2FyZERlY2xhcmVJ
bkhlYWRlcn07CiAgICAgICAgICAgICBuZXh0IGlmIElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRh
dHRyaWJ1dGUpOwpAQCAtNDMzMCw3ICs0MzEwLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICgkbnVtQXR0cmlidXRlcyA+IDAgfHwgTmVl
ZHNDb25zdHJ1Y3RvclByb3BlcnR5KCRpbnRlcmZhY2UpKSB7CisgICAgaWYgKCRudW1BdHRyaWJ1
dGVzID4gMCkgewogICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+
YXR0cmlidXRlc30pIHsKICAgICAgICAgICAgIG5leHQgdW5sZXNzICRhdHRyaWJ1dGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0RPTUpJVH07CiAgICAgICAgICAgICBhc3NlcnQoIk9ubHkgRE9NSklU
PUdldHRlciBpcyBzdXBwb3J0ZWQgZm9yIGF0dHJpYnV0ZXMiKSB1bmxlc3MgJGNvZGVHZW5lcmF0
b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57RE9NSklUfSwgIkdldHRlciIpOwpAQCAtNDM4OSw4ICs0MzY5LDYgQEAgc3ViIEdlbmVy
YXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgbXkgJWNvbmRpdGlvbmFscyA9ICgpOwogICAgICAg
ICBteSAlcmVhZFdyaXRlQ29uZGl0aW9uYWxzID0gKCk7CiAKLSAgICAgICAgbXkgJG5lZWRzQ29u
c3RydWN0b3JUYWJsZSA9IDA7Ci0KICAgICAgICAgZm9yZWFjaCBteSAkY29uc3RhbnQgKEB7JGlu
dGVyZmFjZS0+Y29uc3RhbnRzfSkgewogICAgICAgICAgICAgbXkgJG5hbWUgPSAkY29uc3RhbnQt
Pm5hbWU7CiAgICAgICAgICAgICBwdXNoKEBoYXNoS2V5cywgJG5hbWUpOwpAQCAtNDUyNSw2ICs0
NTAzLDEwIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJ7XG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSk7XG4iKTsKIAorICAgIGlmIChOZWVkc0NvbnN0cnVjdG9yUHJvcGVydHkoJGludGVy
ZmFjZSkpIHsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwganNVbmRlZmluZWQoKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7XG4iKTsKKyAgICB9
CisKICAgICBpZiAoUHJvdG90eXBlSGFzU3RhdGljUHJvcGVydHlUYWJsZSgkaW50ZXJmYWNlKSAm
JiAhSXNHbG9iYWxJbnRlcmZhY2UoJGludGVyZmFjZSkpIHsKICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCAke2NsYXNzTmFtZX06OmluZm8o
KSwgJHtjbGFzc05hbWV9UHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTtcbiIpOwogCkBAIC00
ODQzLDQ0ICs0ODI1LDYgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgIH0KIAotICAgIGlmIChOZWVkc0NvbnN0cnVj
dG9yUHJvcGVydHkoJGludGVyZmFjZSkpIHsKLSAgICAgICAgbXkgJGNvbnN0cnVjdG9yR2V0dGVy
ID0gImpzIiAuICRpbnRlcmZhY2VOYW1lIC4gIkNvbnN0cnVjdG9yIjsKLQotICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIkVuY29kZWRKU1ZhbHVlICR7Y29uc3RydWN0b3JHZXR0ZXJ9KEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSlcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwot
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGlj
YWxHbG9iYWxPYmplY3QpO1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pO1xuIik7Ci0gICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8JHtj
bGFzc05hbWV9UHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTtcbiIp
OwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlw
ZSkpXG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpO1xuIik7Ci0KLSAg
ICAgICAgaWYgKCEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lOb0ludGVy
ZmFjZU9iamVjdH0pIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoJHtjbGFzc05hbWV9OjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZN
KGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7XG4iKTsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpT
VmFsdWUgY29uc3RydWN0b3IgPSAke2NsYXNzTmFtZX1Db25zdHJ1Y3Rvcjo6Y3JlYXRlKEpTQzo6
Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksICR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yOjpjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgKnByb3RvdHlwZS0+
Z2xvYmFsT2JqZWN0KCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCktPm9iamVjdFByb3RvdHlw
ZSgpKSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0
KCkpKTtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgLy8gU2hhZG93
aW5nIGNvbnN0cnVjdG9yIHByb3BlcnR5IHRvIGVuc3VyZSByZXVzaW5nIHRoZSBzYW1lIGNvbnN0
cnVjdG9yIG9iamVjdFxuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBw
cm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGNv
bnN0cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pKTtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3Rvcik7XG4iKTsKLSAgICAgICAgfQotICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7Ci0KLSAgICAgICAgbXkgJGNvbnN0cnVjdG9y
U2V0dGVyID0gInNldEpTIiAuICRpbnRlcmZhY2VOYW1lIC4gIkNvbnN0cnVjdG9yIjsKLQotICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtjb25zdHJ1Y3RvclNldHRlcn0oSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKVxuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAie1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFZNJiB2bSA9IEpT
Qzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7XG4i
KTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byogcHJvdG90eXBlID0ganNE
eW5hbWljQ2FzdDwke2NsYXNzTmFtZX1Qcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpO1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChVTkxJ
S0VMWSghcHJvdG90eXBlKSkge1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpO1xu
Iik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gZmFsc2U7XG4i
KTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7Ci0gICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yXG4i
KTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSkpO1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4i
KTsKLQotICAgIH0KLQogICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5h
dHRyaWJ1dGVzfSkgewogICAgICAgICBHZW5lcmF0ZUF0dHJpYnV0ZUdldHRlckRlZmluaXRpb24o
XEBpbXBsQ29udGVudCwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CiAgICAg
ICAgIEdlbmVyYXRlQXR0cmlidXRlU2V0dGVyRGVmaW5pdGlvbihcQGltcGxDb250ZW50LCAkaW50
ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKQEAgLTc4NTUsMTIgKzc3OTksMTggQEAg
c3ViIEdlbmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2RzCiAgICAgIyBUaGVyZSBtdXN0IGV4
aXN0IGFuIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0IGZvciBldmVyeSBub24tY2FsbGJhY2sg
aW50ZXJmYWNlIGRlZmluZWQsIHJlZ2FyZGxlc3MKICAgICAjIG9mIHdoZXRoZXIgdGhlIGludGVy
ZmFjZSB3YXMgZGVjbGFyZWQgd2l0aCB0aGUgW0xlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0XSBleHRl
bmRlZCBhdHRyaWJ1dGUuCiAgICAgIyBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNp
bnRlcmZhY2UtcHJvdG90eXBlLW9iamVjdAotICAgIGlmIChTaG91bGRVc2VHbG9iYWxPYmplY3RQ
cm90b3R5cGUoJGludGVyZmFjZSkpIHsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBnbG9iYWxPYmplY3Qu
Z2V0UHJvdG90eXBlRGlyZWN0KHZtKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pO1xuIik7Ci0gICAgfSBlbHNpZiAoJGludGVyZmFjZS0+aXNDYWxsYmFj
aykgeworICAgIGlmICgkaW50ZXJmYWNlLT5pc0NhbGxiYWNrKSB7CiAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTtcbiIpOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgJHtjbGFzc05hbWV9Ojpwcm90b3R5cGUodm0sIGds
b2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKTtcbiIpOworICAgICAgICBpZiAoU2hvdWxkVXNlR2xvYmFsT2JqZWN0UHJvdG90eXBlKCRp
bnRlcmZhY2UpKSB7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byog
cHJvdG90eXBlID0gYXNPYmplY3QoZ2xvYmFsT2JqZWN0LmdldFByb3RvdHlwZURpcmVjdCh2bSkp
O1xuIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgYXV0byogcHJvdG90eXBlID0gJHtjbGFzc05hbWV9Ojpwcm90b3R5cGUodm0sIGdsb2Jh
bE9iamVjdCk7XG4iKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoTmVlZHNDb25zdHJ1Y3RvclBy
b3BlcnR5KCRpbnRlcmZhY2UpKSB7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9y
LCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pKTtcbiIpOworICAgICAgICB9CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7XG4iKTsKICAg
ICB9CiAKICAgICBhc3NlcnQoImpzTm9udHJpdmlhbFN0cmluZygpIHJlcXVpcmVzIHN0cmluZ3Mg
dHdvIG9yIG1vcmUgY2hhcmFjdGVycyBsb25nIikgaWYgbGVuZ3RoKCR2aXNpYmxlSW50ZXJmYWNl
TmFtZSkgPCAyOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411057</attachid>
            <date>2020-10-11 11:30:41 -0700</date>
            <delta_ts>2020-10-19 14:12:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216533-20201011213038.patch</filename>
            <type>text/plain</type>
            <size>250867</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjgzMTcpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEyIEBACisyMDIwLTEwLTExICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBbV2ViSURMXSAlSW50ZXJmYWNlJS5wcm90b3R5cGUuY29u
c3RydWN0b3Igc2hvdWxkIGJlIGRlZmluZWQgb24gW1tTZXRdXSByZWNlaXZlcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2NTMzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvY3VzdG9tLWdl
dC1zZXQtcHJvdG8tY2hhaW4tcHV0LmpzOiBBZGRlZC4KKwogMjAyMC0xMC0wNyAgUm9zcyBLaXJz
bGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgW0pTQ10gUmV2ZXJ0IFN0
cmluZy5wcm90b3R5cGUuaXRlbQpJbmRleDogSlNUZXN0cy9zdHJlc3MvY3VzdG9tLWdldC1zZXQt
cHJvdG8tY2hhaW4tcHV0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2N1c3RvbS1n
ZXQtc2V0LXByb3RvLWNoYWluLXB1dC5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVz
cy9jdXN0b20tZ2V0LXNldC1wcm90by1jaGFpbi1wdXQuanMJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxMjggQEAKKyJ1c2Ugc3RyaWN0IjsKKworZnVuY3Rpb24gYXNzZXJ0KHgpIHsKKyAgICBp
ZiAoIXgpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydCEiKTsKK30KKworZnVu
Y3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXhwZWN0ZWRFcnJvcikgeworICAgIHZhciBlcnJvclRo
cm93biA9IGZhbHNlOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChl
cnJvcikgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGlmIChTdHJpbmco
ZXJyb3IpICE9PSBleHBlY3RlZEVycm9yKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBC
YWQgZXJyb3I6ICR7ZXJyb3J9YCk7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiRGlkbid0IHRocm93ISIpOworfQorCitjb25zdCBjdXN0b21U
ZXN0R2V0dGVyU2V0dGVyID0gJHZtLmNyZWF0ZUN1c3RvbVRlc3RHZXR0ZXJTZXR0ZXIoKTsKK09i
amVjdC5zZXRQcm90b3R5cGVPZihjdXN0b21UZXN0R2V0dGVyU2V0dGVyLCB7CisgICAgc2V0IGN1
c3RvbVZhbHVlKF92KSB7IHRocm93IG5ldyBFcnJvcigiU2hvdWxkIGJlIHVucmVhY2hhYmxlISIp
OyB9LAorICAgIHNldCBjdXN0b21WYWx1ZUdsb2JhbE9iamVjdChfdikgeyB0aHJvdyBuZXcgRXJy
b3IoIlNob3VsZCBiZSB1bnJlYWNoYWJsZSEiKTsgfSwKKyAgICBzZXQgY3VzdG9tQWNjZXNzb3Io
X3YpIHsgdGhyb3cgbmV3IEVycm9yKCJTaG91bGQgYmUgdW5yZWFjaGFibGUhIik7IH0sCisgICAg
c2V0IGN1c3RvbUFjY2Vzc29yR2xvYmFsT2JqZWN0KF92KSB7IHRocm93IG5ldyBFcnJvcigiU2hv
dWxkIGJlIHVucmVhY2hhYmxlISIpOyB9LAorfSk7CisKK2NvbnN0IHByaW1pdGl2ZXMgPSBbdHJ1
ZSwgMSwgIiIsIFN5bWJvbCgpLCAxbl07Citmb3IgKGxldCBwcmltaXRpdmUgb2YgcHJpbWl0aXZl
cykgeworICAgIGxldCBwcm90b3R5cGUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJpbWl0aXZl
KTsKKyAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YocHJvdG90eXBlLCBjdXN0b21UZXN0R2V0dGVy
U2V0dGVyKTsKK30KKworZnVuY3Rpb24gZ2V0T2JqZWN0cygpIHsKKyAgICByZXR1cm4gWworICAg
ICAgICAuLi5wcmltaXRpdmVzLm1hcChPYmplY3QpLAorICAgICAgICBPYmplY3QuY3JlYXRlKGN1
c3RvbVRlc3RHZXR0ZXJTZXR0ZXIpLAorICAgICAgICBPYmplY3QuY3JlYXRlKE9iamVjdC5jcmVh
dGUoY3VzdG9tVGVzdEdldHRlclNldHRlcikpLAorICAgICAgICAvLyBGSVhNRTogb3JkaW5hcnlT
ZXRTbG93KCkgc2hvdWxkIGhhbmRsZSBDdXN0b217QWNjZXNzb3IsVmFsdWV9IGRlc2NyaXB0b3Jz
LgorICAgICAgICAvLyBuZXcgUHJveHkoY3VzdG9tVGVzdEdldHRlclNldHRlciwge30pLAorICAg
IF07Cit9CisKK2Z1bmN0aW9uIGdldEJhc2VzKCkgeworICAgIHJldHVybiBbCisgICAgICAgIC4u
LnByaW1pdGl2ZXMsCisgICAgICAgIC4uLmdldE9iamVjdHMoKSwKKyAgICBdOworfQorCisvLyBD
dXN0b21BY2Nlc3NvcjogZXhjZXB0aW9uIGNoZWNrCisoKCkgPT4geworICAgIGZvciAobGV0IGJh
c2Ugb2YgZ2V0QmFzZXMoKSkgeworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytp
KSB7CisgICAgICAgICAgICBsZXQgdmFsdWUgPSB7fTsKKyAgICAgICAgICAgIGJhc2UuY3VzdG9t
QWNjZXNzb3IgPSB2YWx1ZTsKKyAgICAgICAgICAgIGFzc2VydCh2YWx1ZS5oYXNPd25Qcm9wZXJ0
eSgicmVzdWx0IikpOworICAgICAgICB9CisgICAgICAgIGFzc2VydChSZWZsZWN0LnNldChPYmpl
Y3QoYmFzZSksICJjdXN0b21BY2Nlc3NvciIsIHt9KSk7CisgICAgfQorfSkoKTsKKworLy8gQ3Vz
dG9tVmFsdWU6IGV4Y2VwdGlvbiBjaGVjaworKCgpID0+IHsKKyAgICBmb3IgKGxldCBiYXNlIG9m
IGdldEJhc2VzKCkpIHsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkgewor
ICAgICAgICAgICAgbGV0IHZhbHVlID0ge307CisgICAgICAgICAgICBiYXNlLmN1c3RvbVZhbHVl
ID0gdmFsdWU7CisgICAgICAgICAgICBhc3NlcnQodmFsdWUuaGFzT3duUHJvcGVydHkoInJlc3Vs
dCIpKTsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQoUmVmbGVjdC5zZXQoT2JqZWN0KGJhc2Up
LCAiY3VzdG9tVmFsdWUiLCB7fSkpOworICAgIH0KK30pKCk7CisKKy8vIEN1c3RvbUFjY2Vzc29y
OiBzZXR0ZXIgcmV0dXJucyB8ZmFsc2V8CisoKCkgPT4geworICAgIGZvciAobGV0IGJhc2Ugb2Yg
Z2V0QmFzZXMoKSkgeworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKQorICAg
ICAgICAgICAgYmFzZS5jdXN0b21BY2Nlc3NvciA9IDE7CisgICAgICAgIC8vIFRoaXMgaXMgaW50
ZW50aW9uYWw6CisgICAgICAgIGFzc2VydCghYmFzZS5oYXNPd25Qcm9wZXJ0eSgiY3VzdG9tQWNj
ZXNzb3IiKSk7CisgICAgICAgIGFzc2VydChSZWZsZWN0LnNldChPYmplY3QoYmFzZSksICJjdXN0
b21BY2Nlc3NvciIsIDEpKTsKKyAgICB9Cit9KSgpOworCisvLyBDdXN0b21WYWx1ZTogc2V0dGVy
IHJldHVybnMgfGZhbHNlfAorKCgpID0+IHsKKyAgICBmb3IgKGxldCBiYXNlIG9mIGdldEJhc2Vz
KCkpIHsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkKKyAgICAgICAgICAg
IGJhc2UuY3VzdG9tVmFsdWUgPSAxOworICAgICAgICAvLyBUaGlzIGlzIHdlaXJkLCBidXQgaXQg
aXNuJ3QgZXhwb3NlZCB0byB1c2VybGFuZCBjb2RlOgorICAgICAgICBhc3NlcnQoIWJhc2UuaGFz
T3duUHJvcGVydHkoImN1c3RvbVZhbHVlIikpOworICAgICAgICBhc3NlcnQoIVJlZmxlY3Quc2V0
KE9iamVjdChiYXNlKSwgImN1c3RvbVZhbHVlIiwgMSkpOworICAgIH0KK30pKCk7CisKKy8vIEN1
c3RvbUFjY2Vzc29yOiBubyBzZXR0ZXIKKygoKSA9PiB7CisgICAgZm9yIChsZXQgYmFzZSBvZiBn
ZXRCYXNlcygpKSB7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpCisgICAg
ICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7IGJhc2UuY3VzdG9tQWNjZXNzb3JHbG9iYWxPYmpl
Y3QgPSB7fTsgfSwgIlR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBw
cm9wZXJ0eS4iKTsKKyAgICAgICAgYXNzZXJ0KCFSZWZsZWN0LnNldChPYmplY3QoYmFzZSksICJj
dXN0b21BY2Nlc3Nvckdsb2JhbE9iamVjdCIsIHt9KSk7CisgICAgfQorfSkoKTsKKworLy8gQ3Vz
dG9tVmFsdWU6IG5vIHNldHRlcgorKCgpID0+IHsKKyAgICBmb3IgKGxldCBwcmltaXRpdmUgb2Yg
cHJpbWl0aXZlcykgeworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKQorICAg
ICAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geyBwcmltaXRpdmUuY3VzdG9tVmFsdWVHbG9iYWxP
YmplY3QgPSB7fTsgfSwgIlR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25s
eSBwcm9wZXJ0eS4iKTsKKyAgICB9CisKKyAgICBmb3IgKGxldCBvYmplY3Qgb2YgZ2V0T2JqZWN0
cygpKSB7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpCisgICAgICAgICAg
ICBvYmplY3QuY3VzdG9tVmFsdWVHbG9iYWxPYmplY3QgPSB7fTsKKyAgICAgICAgYXNzZXJ0KG9i
amVjdC5oYXNPd25Qcm9wZXJ0eSgiY3VzdG9tVmFsdWVHbG9iYWxPYmplY3QiKSk7CisgICAgICAg
IGFzc2VydChSZWZsZWN0LnNldChvYmplY3QsICJjdXN0b21WYWx1ZUdsb2JhbE9iamVjdCIsIHt9
KSk7CisgICAgfQorCisgICAgZm9yIChsZXQgb2JqZWN0IG9mIGdldE9iamVjdHMoKSkgeworICAg
ICAgICBPYmplY3QucHJldmVudEV4dGVuc2lvbnMob2JqZWN0KTsKKyAgICAgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geyBv
YmplY3QuY3VzdG9tVmFsdWVHbG9iYWxPYmplY3QgPSB7fTsgfSwgIlR5cGVFcnJvcjogQXR0ZW1w
dGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4iKTsKKyAgICAgICAgICAgIGFzc2Vy
dCghUmVmbGVjdC5zZXQob2JqZWN0LCAiY3VzdG9tVmFsdWVHbG9iYWxPYmplY3QiLCB7fSkpOwor
ICAgICAgICB9CisgICAgfQorfSkoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2
aXNpb24gMjY4MzE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDIwLTEwLTExICBBbGV4ZXkgU2h2YXlrYSAgPHNo
dmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBbV2ViSURMXSAlSW50ZXJmYWNlJS5wcm90
b3R5cGUuY29uc3RydWN0b3Igc2hvdWxkIGJlIGRlZmluZWQgb24gW1tTZXRdXSByZWNlaXZlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2NTMzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVmb3JlIHRo
aXMgY2hhbmdlLCBhIFtbU2V0XV0gcGVyZm9ybWVkIG9uIGFuICVJbnRlcmZhY2UlIGluc3RhbmNl
IHVzZWQgdG8gb3ZlcndyaXRlCisgICAgICAgICVJbnRlcmZhY2UlLnByb3RvdHlwZS5jb25zdHJ1
Y3RvciBpbnN0ZWFkIG9mIGRlZmluaW5nIG93biAiY29uc3RydWN0b3IiIHByb3BlcnR5LgorCisg
ICAgICAgIFNpbmNlIHVzaW5nIEN1c3RvbVZhbHVlIGlzIGVzc2VudGlhbCBmb3IgbGF6eSBpbml0
aWFsaXphdGlvbiBvZiBXZWJJREwgY29uc3RydWN0b3JzLAorICAgICAgICBhbmQgZm9yd2FyZGlu
ZyBbW1NldF1dIHdpdGggY29ycmVjdCByZWNlaXZlciB3b3VsZCByZXF1aXJlIGZ1cnRoZXIgZGl2
ZXJnaW5nIG9mCisgICAgICAgIEN1c3RvbVZhbHVlIHNldHRlciBzaWduYXR1cmUgZnJvbSBDdXN0
b21BY2Nlc3NvciBjb3VudGVycGFydCwgdGhpcyBwYXRjaCBtYWtlcyBhCisgICAgICAgIEN1c3Rv
bVZhbHVlIHByb3BlcnR5IHdpdGhvdXQgYSBzZXR0ZXIgdG8gYmUgdHJlYXRlZCBhcyBhIGRhdGEg
ZGVzY3JpcHRvciBbMV0uCisKKyAgICAgICAgVGhpcyBhdm9pZHMgZ2VuZXJhdGluZyBhICJjb25z
dHJ1Y3RvciIgc2V0dGVyIGZvciBldmVyeSBleHBvc2VkIFdlYklETCBpbnRlcmZhY2UgYW5kCisg
ICAgICAgIG1ha2luZyBhbiBleHRyYSBwdXQoKSBkaXNwYXRjaCBpbiBwdXRJbmxpbmVTbG93KCku
IENoYW5naW5nIHRoZSBzZW1hbnRpY3MgaXMgc2FmZQorICAgICAgICBiZWNhdXNlIHRoZXJlIHdl
cmUgbm8gc2V0dGVyLWxlc3MgQ3VzdG9tVmFsdWUgcHJvcGVydGllcyBiZWZvcmUgdGhpcyBwYXRj
aC4KKworICAgICAgICBbMV06IGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb3JkaW5hcnlz
ZXR3aXRob3duZGVzY3JpcHRvciAoc3RlcCAzLmUuaWkpCisKKyAgICAgICAgKiBieXRlY29kZS9B
Y2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKToK
KyAgICAgICAgKiBydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5jcHA6CisgICAgICAgIChKU0M6
OmNhbGxDdXN0b21TZXR0ZXIpOgorICAgICAgICAqIHJ1bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVy
Lmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNW
YWx1ZTo6cHV0VG9QcmltaXRpdmUpOiBBZGQgbWlzc2luZyBleGNlcHRpb24gY2hlY2suCisgICAg
ICAgICogcnVudGltZS9KU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL0pTT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dElubGluZVNsb3cpOgorICAgICAg
ICAqIHJ1bnRpbWUvTG9va3VwLmg6CisgICAgICAgIChKU0M6OnB1dEVudHJ5KToKKyAgICAgICAg
KiBydW50aW1lL1Byb3BlcnR5U2xvdC5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5U2xvdDo6
Y3VzdG9tR2V0dGVyIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xvdC5oOgor
ICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorCiAyMDIwLTEwLTA5ICBZdXN1a2UgU3V6
dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gQXNzZXJ0IE9wZXJhdGlv
biBhbmQgSG9zdEZ1bmN0aW9uIGFyZSBpbiBKSVRPcGVyYXRpb25zTGlzdApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAkocmV2aXNpb24gMjY4
MzE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzE1LDEwICsxNzE1LDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5l
cmF0ZUltcGwoQWNjZXNzR2VuZQogICAgICAgICAgICAgR1BSUmVnIHJlY2VpdmVyRm9yQ3VzdG9t
R2V0R1BSID0gYmFzZUdQUiAhPSB0aGlzR1BSID8gdGhpc0dQUiA6IHJlY2VpdmVyR1BSOwogCiAg
ICAgICAgICAgICAvLyBnZXR0ZXI6IEVuY29kZWRKU1ZhbHVlICgqR2V0VmFsdWVGdW5jKShKU0ds
b2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKLSAg
ICAgICAgICAgIC8vIHNldHRlcjogdm9pZCAoKlB1dFZhbHVlRnVuYykoSlNHbG9iYWxPYmplY3Qq
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB2YWx1ZSk7Ci0gICAg
ICAgICAgICAvLyBDdXN0b20gdmFsdWVzIGFyZSBwYXNzZWQgdGhlIHNsb3RCYXNlICh0aGUgcHJv
cGVydHkgaG9sZGVyKSwgY3VzdG9tIGFjY2Vzc29ycyBhcmUgcGFzc2VkIHRoZSB0aGlzVmF1bGUg
KHJlY2VpdmVyKS4KLSAgICAgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBkaWZmZXJlbmNl
cyBpbiBjdXN0b20gdmFsdWVzIGFuZCBjdXN0b20gYWNjZXNzb3JzLgotICAgICAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODAxNAorICAgICAgICAg
ICAgLy8gc2V0dGVyOiBib29sICgqUHV0VmFsdWVGdW5jKShKU0dsb2JhbE9iamVjdCosIEVuY29k
ZWRKU1ZhbHVlIHRoaXNPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHZhbHVlKTsKKyAgICAgICAgICAg
IC8vIEN1c3RvbSB2YWx1ZXMgYXJlIHBhc3NlZCB0aGUgc2xvdEJhc2UgKHRoZSBwcm9wZXJ0eSBo
b2xkZXIpLCBjdXN0b20gYWNjZXNzb3JzIGFyZSBwYXNzZWQgdGhlIHRoaXNWYWx1ZSAocmVjZWl2
ZXIpLgogICAgICAgICAgICAgR1BSUmVnIGJhc2VGb3JDdXN0b20gPSB0YWtlc1Byb3BlcnR5T3du
ZXJBc0NGdW5jdGlvbkFyZ3VtZW50ID8gcHJvcGVydHlPd25lckdQUiA6IHJlY2VpdmVyRm9yQ3Vz
dG9tR2V0R1BSOyAKICAgICAgICAgICAgIC8vIFdlIGRvIG5vdCBuZWVkIHRvIGtlZXAgZ2xvYmFs
T2JqZWN0IGFsaXZlIHNpbmNlIHRoZSBvd25lciBDb2RlQmxvY2sgKGV2ZW4gaWYgSlNHbG9iYWxP
YmplY3QqIGlzIG9uZSBvZiBDb2RlQmxvY2sgdGhhdCBpcyBpbmxpbmVkIGFuZCBoZWxkIGJ5IERG
RyBDb2RlQmxvY2spCiAgICAgICAgICAgICAvLyBtdXN0IGtlZXAgaXQgYWxpdmUuCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0N1c3RvbUdldHRlclNldHRl
ci5jcHAJKHJldmlzaW9uIDI2ODMxNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0N1c3RvbUdldHRlclNldHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDI3ICszNSwxOSBA
QCBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoCiAKIGNvbnN0IENsYXNz
SW5mbyBDdXN0b21HZXR0ZXJTZXR0ZXI6OnNfaW5mbyA9IHsgIkN1c3RvbUdldHRlclNldHRlciIs
IG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoQ3VzdG9tR2V0
dGVyU2V0dGVyKSB9OwogCi1ib29sIGNhbGxDdXN0b21TZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ3VzdG9tR2V0dGVyU2V0dGVyOjpDdXN0b21TZXR0ZXIgc2V0dGVyLCBib29s
IGlzQWNjZXNzb3IsIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1ZhbHVlIHZhbHVlKQorT3B0aW9uYWw8
Ym9vbD4gY2FsbEN1c3RvbVNldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDdXN0
b21HZXR0ZXJTZXR0ZXI6OkN1c3RvbVNldHRlciBzZXR0ZXIsIGJvb2wgaXNBY2Nlc3NvciwgSlNP
YmplY3QqIHNsb3RCYXNlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAg
ICBBU1NFUlQoc2V0dGVyKTsKLSAgICBib29sIHJlc3VsdCA9IHNldHRlcihnbG9iYWxPYmplY3Qs
IEpTVmFsdWU6OmVuY29kZSh0aGlzVmFsdWUpLCBKU1ZhbHVlOjplbmNvZGUodmFsdWUpKTsKLSAg
ICAvLyBBbHdheXMgcmV0dXJuIHRydWUgaWYgdGhlcmUgaXMgYSBzZXR0ZXIgYW5kIGl0IGlzIG9i
c2VydmVkIGFzIGFuIGFjY2Vzc29yIHRvIHVzZXJzLgotICAgIGlmIChpc0FjY2Vzc29yKQorICAg
IGlmIChpc0FjY2Vzc29yKSB7CisgICAgICAgIGlmICghc2V0dGVyKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICBzZXR0ZXIoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjplbmNvZGUo
dGhpc1ZhbHVlKSwgSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKSk7CisgICAgICAgIC8vIEFsd2F5cyBy
ZXR1cm4gdHJ1ZSBpZiB0aGVyZSBpcyBhIHNldHRlciBhbmQgaXQgaXMgb2JzZXJ2ZWQgYXMgYW4g
YWNjZXNzb3IgdG8gdXNlcnMuCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiByZXN1
bHQ7Ci19CisgICAgfQogCi1ib29sIGNhbGxDdXN0b21TZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBjdXN0b21HZXR0ZXJTZXR0ZXIsIGJvb2wgaXNBY2Nlc3Nvciwg
SlNPYmplY3QqIGJhc2UsIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1ZhbHVlIHZhbHVlKQotewotICAg
IEN1c3RvbUdldHRlclNldHRlcjo6Q3VzdG9tU2V0dGVyIHNldHRlciA9IGpzQ2FzdDxDdXN0b21H
ZXR0ZXJTZXR0ZXIqPihjdXN0b21HZXR0ZXJTZXR0ZXIpLT5zZXR0ZXIoKTsKLSAgICAvLyBSZXR1
cm4gZmFsc2Ugc2luY2UgdGhlcmUgaXMgbm8gc2V0dGVyLgogICAgIGlmICghc2V0dGVyKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIGRpZmZlcmVuY2Vz
IGluIGN1c3RvbSB2YWx1ZXMgYW5kIGN1c3RvbSBhY2Nlc3NvcnMuCi0gICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODAxNAotICAgIGlmICghaXNBY2Nlc3Nv
cikKLSAgICAgICAgdGhpc1ZhbHVlID0gYmFzZTsKLSAgICByZXR1cm4gY2FsbEN1c3RvbVNldHRl
cihnbG9iYWxPYmplY3QsIHNldHRlciwgaXNBY2Nlc3NvciwgdGhpc1ZhbHVlLCB2YWx1ZSk7Cisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHNldHRlcihnbG9iYWxPYmpl
Y3QsIEpTVmFsdWU6OmVuY29kZShzbG90QmFzZSksIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSkpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0N1c3RvbUdldHRlclNldHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5oCShyZXZpc2lvbiAyNjgzMTcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzYsNyArNzYsNiBAQCBwcml2YXRlOgogICAgIEN1c3RvbVNldHRlciBtX3Nl
dHRlcjsKIH07CiAKLUpTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2FsbEN1c3RvbVNldHRlcihKU0ds
b2JhbE9iamVjdCosIEN1c3RvbUdldHRlclNldHRlcjo6Q3VzdG9tU2V0dGVyLCBib29sIGlzQWNj
ZXNzb3IsIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1ZhbHVlKTsKLUpTX0VYUE9SVF9QUklWQVRFIGJv
b2wgY2FsbEN1c3RvbVNldHRlcihKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgY3VzdG9tR2V0dGVy
U2V0dGVyLCBib29sIGlzQWNjZXNzb3IsIEpTT2JqZWN0KiBzbG90QmFzZSwgSlNWYWx1ZSB0aGlz
VmFsdWUsIEpTVmFsdWUpOworSlNfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8Ym9vbD4gY2FsbEN1
c3RvbVNldHRlcihKU0dsb2JhbE9iamVjdCosIEN1c3RvbUdldHRlclNldHRlcjo6Q3VzdG9tU2V0
dGVyLCBib29sIGlzQWNjZXNzb3IsIEpTT2JqZWN0KiBzbG90QmFzZSwgSlNWYWx1ZSB0aGlzVmFs
dWUsIEpTVmFsdWUpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCShyZXZpc2lvbiAyNjgzMTcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjEzLDggKzIxMywxMiBAQCBib29sIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEpTR2xv
YmFsT2JqCiAgICAgICAgICAgICBpZiAoZ3MuaXNHZXR0ZXJTZXR0ZXIoKSkKICAgICAgICAgICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNhbGxTZXR0ZXIoZ2xvYmFsT2JqZWN0LCAq
dGhpcywgZ3MsIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpID8gRUNNQU1vZGU6OnN0cmljdCgp
IDogRUNNQU1vZGU6OnNsb3BweSgpKSk7CiAKLSAgICAgICAgICAgIGlmIChncy5pc0N1c3RvbUdl
dHRlclNldHRlcigpKQotICAgICAgICAgICAgICAgIHJldHVybiBjYWxsQ3VzdG9tU2V0dGVyKGds
b2JhbE9iamVjdCwgZ3MsIGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IsIG9iaiwgc2xvdC50aGlzVmFsdWUoKSwgdmFsdWUpOworICAgICAgICAgICAgaWYgKGdz
LmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkpIHsKKyAgICAgICAgICAgICAgICBhdXRvIHNldHRlciA9
IGpzQ2FzdDxDdXN0b21HZXR0ZXJTZXR0ZXIqPihncy5hc0NlbGwoKSktPnNldHRlcigpOworICAg
ICAgICAgICAgICAgIGJvb2wgaXNBY2Nlc3NvciA9IGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3I7CisgICAgICAgICAgICAgICAgaWYgKE9wdGlvbmFsPGJvb2w+
IHJlc3VsdCA9IGNhbGxDdXN0b21TZXR0ZXIoZ2xvYmFsT2JqZWN0LCBzZXR0ZXIsIGlzQWNjZXNz
b3IsIG9iaiwgc2xvdC50aGlzVmFsdWUoKSwgdmFsdWUpKQorICAgICAgICAgICAgICAgICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHJlc3VsdC52YWx1ZSgpKTsKKyAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgLy8gSWYgdGhlcmUncyBhbiBleGlzdGluZyBwcm9wZXJ0eSBvbiB0aGUg
b2JqZWN0IG9yIG9uZSBvZiBpdHMgCiAgICAgICAgICAgICAvLyBwcm90b3R5cGVzIGl0IHNob3Vs
ZCBiZSByZXBsYWNlZCwgc28gYnJlYWsgaGVyZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rp
b24uY3BwCShyZXZpc2lvbiAyNjgzMTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgs
NyArNDgsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY3VzdG9tR2V0dGVyU2V0CiAgICAg
ICAgIEN1c3RvbUdldHRlclNldHRlcjo6Q3VzdG9tU2V0dGVyIHNldHRlciA9IGN1c3RvbUdldHRl
clNldHRlci0+c2V0dGVyKCk7CiAgICAgICAgIEFTU0VSVChzZXR0ZXIpOwogICAgICAgICBzY29w
ZS5yZWxlYXNlKCk7Ci0gICAgICAgIGNhbGxDdXN0b21TZXR0ZXIoZ2xvYmFsT2JqZWN0LCBzZXR0
ZXIsIHRydWUsIHRoaXNWYWx1ZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgICAgIHNl
dHRlcihnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmVuY29kZSh0aGlzVmFsdWUpLCBKU1ZhbHVlOjpl
bmNvZGUoY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMjY4MzE3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NDks
MTggKzg0OSwyMSBAQCBib29sIEpTT2JqZWN0OjpwdXRJbmxpbmVTbG93KEpTR2xvYmFsT2JqCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGlmIChncy5pc0N1c3RvbUdldHRlclNldHRlcigpKSB7CisgICAgICAgICAgICAgICAgYm9vbCBp
c0FjY2Vzc29yID0gYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
cjsKKyAgICAgICAgICAgICAgICBhdXRvIHNldHRlciA9IGpzQ2FzdDxDdXN0b21HZXR0ZXJTZXR0
ZXIqPihncy5hc0NlbGwoKSktPnNldHRlcigpOwogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgb25seSBiZSBjYWNoaW5nIHRoZXNlIGlmIHdlJ3JlIG5vdCBhbiB1bmNhY2hlYWJs
ZSBkaWN0aW9uYXJ5OgogICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTUzNDcKIAogICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8g
bWFrZSBzdXJlIHRoYXQgd2UgZGVjaWRlIHRvIGNhY2hlIHRoaXMgcHJvcGVydHkgYmVmb3JlIHdl
IHBvdGVudGlhbGx5IGV4ZWN1dGUgYXJpYml0cmFyeSBKUy4KLSAgICAgICAgICAgICAgICBpZiAo
YXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvcikKLSAgICAgICAg
ICAgICAgICAgICAgc2xvdC5zZXRDdXN0b21BY2Nlc3NvcihvYmosIGpzQ2FzdDxDdXN0b21HZXR0
ZXJTZXR0ZXIqPihncy5hc0NlbGwoKSktPnNldHRlcigpKTsKKyAgICAgICAgICAgICAgICBpZiAo
aXNBY2Nlc3NvcikKKyAgICAgICAgICAgICAgICAgICAgc2xvdC5zZXRDdXN0b21BY2Nlc3Nvcihv
YmosIHNldHRlcik7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBz
bG90LnNldEN1c3RvbVZhbHVlKG9iaiwganNDYXN0PEN1c3RvbUdldHRlclNldHRlcio+KGdzLmFz
Q2VsbCgpKS0+c2V0dGVyKCkpOworICAgICAgICAgICAgICAgICAgICBzbG90LnNldEN1c3RvbVZh
bHVlKG9iaiwgc2V0dGVyKTsKIAotICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gY2FsbEN1
c3RvbVNldHRlcihnbG9iYWxPYmplY3QsIGdzLCBhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yLCBvYmosIHNsb3QudGhpc1ZhbHVlKCksIHZhbHVlKTsKLSAgICAg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgICAgICBpZiAoT3B0aW9uYWw8Ym9vbD4g
cmVzdWx0ID0gY2FsbEN1c3RvbVNldHRlcihnbG9iYWxPYmplY3QsIHNldHRlciwgaXNBY2Nlc3Nv
ciwgb2JqLCBzbG90LnRoaXNWYWx1ZSgpLCB2YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0LnZhbHVlKCk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgQVNTRVJUKCEoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpBY2Nl
c3NvcikpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAkocmV2
aXNpb24gMjY4MzE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI3NSw2ICsyNzUsNyBAQCBpbmxpbmUgYm9vbCBwdXRFbnRyeShK
U0dsb2JhbE9iamVjdCogZ2xvCiAgICAgICAgIGlmICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKSB7CiAgICAgICAgICAgICAvLyBJZiB0aGlzIGlz
IGEgZnVuY3Rpb24gb3IgbGF6eSBwcm9wZXJ0eSBwdXQgdGhlbiB3ZSBqdXN0IGRvIHRoZSBwdXQg
YmVjYXVzZQogICAgICAgICAgICAgLy8gbG9naWNhbGx5IHRoZSBvYmplY3QgYWxyZWFkeSBoYWQg
dGhlIHByb3BlcnR5LCBzbyB0aGlzIGlzIGp1c3QgYSByZXBsYWNlLgorICAgICAgICAgICAgLy8g
RklYTUU6IHRoaXNWYWx1ZSBtYXkgYmUgYW4gb2JqZWN0IHdpdGggbm9uLWV4dGVuc2libGUgc3Ry
dWN0dXJlIHdlIG11c3QgdGhyb3cgZm9yLgogICAgICAgICAgICAgaWYgKEpTT2JqZWN0KiB0aGlz
T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCB0aGlzVmFsdWUpKQogICAgICAg
ICAgICAgICAgIHRoaXNPYmplY3QtPnB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI4OCwxNiArMjg5LDI0IEBAIGlubGluZSBi
b29sIHB1dEVudHJ5KEpTR2xvYmFsT2JqZWN0KiBnbG8KICAgICBpZiAoIShlbnRyeS0+YXR0cmli
dXRlcygpICYgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSkgewogICAgICAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIFByb3BlcnR5QXR0cmlidXRlOjpE
T01KSVRBdHRyaWJ1dGUpLCAiRE9NSklUQXR0cmlidXRlIHN1cHBvcnRzIHJlYWRvbmx5IGF0dHJp
YnV0ZXMgY3VycmVudGx5LiIpOwogICAgICAgICBib29sIGlzQWNjZXNzb3IgPSBlbnRyeS0+YXR0
cmlidXRlcygpICYgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yOwotICAgICAgICBK
U1ZhbHVlIHVwZGF0ZVRoaXNWYWx1ZSA9IGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgPyBzbG90LnRoaXNWYWx1ZSgpIDogSlNWYWx1ZShiYXNl
KTsKKyAgICAgICAgYXV0byBzZXR0ZXIgPSBlbnRyeS0+cHJvcGVydHlQdXR0ZXIoKTsKKyAgICAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBvbmx5IGJlIGNhY2hpbmcgdGhlc2UgaWYgd2UncmUgbm90
IGFuIHVuY2FjaGVhYmxlIGRpY3Rpb25hcnk6CisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUzNDcKICAgICAgICAgLy8gV2UgbmVlZCB0byBtYWtl
IHN1cmUgdGhhdCB3ZSBkZWNpZGUgdG8gY2FjaGUgdGhpcyBwcm9wZXJ0eSBiZWZvcmUgd2UgcG90
ZW50aWFsbHkgZXhlY3V0ZSBhcmliaXRyYXJ5IEpTLgogICAgICAgICBpZiAoaXNBY2Nlc3NvcikK
LSAgICAgICAgICAgIHNsb3Quc2V0Q3VzdG9tQWNjZXNzb3IoYmFzZSwgZW50cnktPnByb3BlcnR5
UHV0dGVyKCkpOworICAgICAgICAgICAgc2xvdC5zZXRDdXN0b21BY2Nlc3NvcihiYXNlLCBzZXR0
ZXIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzbG90LnNldEN1c3RvbVZhbHVlKGJhc2Us
IGVudHJ5LT5wcm9wZXJ0eVB1dHRlcigpKTsKKyAgICAgICAgICAgIHNsb3Quc2V0Q3VzdG9tVmFs
dWUoYmFzZSwgc2V0dGVyKTsKIAotICAgICAgICBib29sIHJlc3VsdCA9IGNhbGxDdXN0b21TZXR0
ZXIoZ2xvYmFsT2JqZWN0LCBlbnRyeS0+cHJvcGVydHlQdXR0ZXIoKSwgaXNBY2Nlc3NvciwgdXBk
YXRlVGhpc1ZhbHVlLCB2YWx1ZSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGZhbHNlKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgaWYgKE9wdGlvbmFsPGJv
b2w+IHJlc3VsdCA9IGNhbGxDdXN0b21TZXR0ZXIoZ2xvYmFsT2JqZWN0LCBzZXR0ZXIsIGlzQWNj
ZXNzb3IsIGJhc2UsIHNsb3QudGhpc1ZhbHVlKCksIHZhbHVlKSkgeworICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dC52YWx1ZSgpOyAgICAKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZJWE1FOiB0aGlzVmFsdWUg
bWF5IGJlIGFuIG9iamVjdCB3aXRoIG5vbi1leHRlbnNpYmxlIHN0cnVjdHVyZSB3ZSBtdXN0IHRo
cm93IGZvci4KKyAgICAgICAgaWYgKEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2Fz
dDxKU09iamVjdCo+KHZtLCB0aGlzVmFsdWUpKQorICAgICAgICAgICAgdGhpc09iamVjdC0+cHV0
RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCiAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBzbG90Lmlz
U3RyaWN0TW9kZSgpLCBSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5jcHAJKHJldmlzaW9uIDI2
ODMxNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM1LDggKzM1LDYgQEAgSlNWYWx1ZSBQcm9wZXJ0eVNsb3Q6OmZ1
bmN0aW9uR2V0dGVyKEpTRwogCiBKU1ZhbHVlIFByb3BlcnR5U2xvdDo6Y3VzdG9tR2V0dGVyKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNv
bnN0CiB7Ci0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIGRpZmZlcmVuY2VzIGluIGN1c3RvbSB2
YWx1ZXMgYW5kIGN1c3RvbSBhY2Nlc3NvcnMuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1ODAxNAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gbV9hdHRy
aWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yID8gbV90aGlzVmFsdWUg
OiBKU1ZhbHVlKHNsb3RCYXNlKCkpOwogICAgIGlmIChhdXRvIGRvbUF0dHJpYnV0ZSA9IHRoaXMt
PmRvbUF0dHJpYnV0ZSgpKSB7CiAgICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCShy
ZXZpc2lvbiAyNjgzMTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eVNsb3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTIxLDggKzEyMSw2IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIGRpc2FsbG93Vk1FbnRyeS5lbXBsYWNlKCp2bUZvcklucXVpcnkpOwogICAgIH0KIAot
ICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBzbG90QmFzZSAvIHJlY2VpdmVyIGJlaGF2aW9yIGRp
ZmZlcmVuY2UgaW4gY3VzdG9tIHZhbHVlcyBhbmQgY3VzdG9tIGFjY2Vzc29ycy4KLSAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MDE0CiAgICAgdXNpbmcg
R2V0VmFsdWVGdW5jID0gRW5jb2RlZEpTVmFsdWUoSklUX09QRVJBVElPTl9BVFRSSUJVVEVTKiko
SlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSk7
CiAKICAgICBKU1ZhbHVlIGdldFZhbHVlKEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKSBj
b25zdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAJ
KHJldmlzaW9uIDI2ODMxNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU1Niw3ICsxNTU2LDkgQEAgSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKGN1c3RvbVNldEFjY2VzcwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKLSAgICBSRUxFQVNFX0FTU0VSVCh2YWx1ZS5pc09iamVjdCgpKTsKKyAgICBpZiAoIXZhbHVl
LmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIEpTT2JqZWN0KiBvYmpl
Y3QgPSBhc09iamVjdCh2YWx1ZSk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qob2JqZWN0KTsK
ICAgICBvYmplY3QtPnB1dChvYmplY3QsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgInJlc3VsdCIpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc09iamVjdCksIHNsb3QpOwpA
QCAtMTU3Miw3ICsxNTc0LDkgQEAgSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKGN1c3RvbVNldFZh
bHVlLAogICAgIFJFTEVBU0VfQVNTRVJUKEpTVmFsdWU6OmRlY29kZShzbG90VmFsdWUpLmluaGVy
aXRzPEpTVGVzdEN1c3RvbUdldHRlclNldHRlcj4oZ2xvYmFsT2JqZWN0LT52bSgpKSk7CiAKICAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgUkVM
RUFTRV9BU1NFUlQodmFsdWUuaXNPYmplY3QoKSk7CisgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmpl
Y3QodmFsdWUpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCk7CiAgICAgb2JqZWN0
LT5wdXQob2JqZWN0LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJy
ZXN1bHQiKSwgSlNWYWx1ZTo6ZGVjb2RlKHNsb3RWYWx1ZSksIHNsb3QpOwpAQCAtMTYwOSw3ICsx
NjEzLDcgQEAgdm9pZCBKU1Rlc3RDdXN0b21HZXR0ZXJTZXR0ZXI6OmZpbmlzaENyZQogICAgIHB1
dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3Vz
dG9tVmFsdWVHbG9iYWxPYmplY3QiKSwKICAgICAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVh
dGUodm0sIGN1c3RvbUdldFZhbHVlR2xvYmFsT2JqZWN0LCBudWxscHRyKSwgMCk7CiAgICAgcHV0
RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXN0
b21BY2Nlc3Nvckdsb2JhbE9iamVjdCIpLAotICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNy
ZWF0ZSh2bSwgY3VzdG9tR2V0QWNjZXNzb3JHbG9iYWxPYmplY3QsIG51bGxwdHIpLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yKSk7CisgICAg
ICAgIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBjdXN0b21HZXRBY2Nlc3Nvckdsb2Jh
bE9iamVjdCwgbnVsbHB0ciksIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvcik7CiAKICAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nv
cih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1c3RvbUZ1bmN0aW9uIiksCiAgICAg
ICAgIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBjdXN0b21HZXRBY2Nlc3NvciwgY3Vz
dG9tRnVuY3Rpb25TZXR0ZXIpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjgzMTcpCisr
KyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBA
QAorMjAyMC0xMC0xMSAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisK
KyAgICAgICAgW1dlYklETF0gJUludGVyZmFjZSUucHJvdG90eXBlLmNvbnN0cnVjdG9yIHNob3Vs
ZCBiZSBkZWZpbmVkIG9uIFtbU2V0XV0gcmVjZWl2ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjUzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIDEuIENyZWF0ZSBhIHNldHRlci1sZXNzIEN1c3RvbUdl
dHRlclNldHRlciBpbnN0ZWFkIG9mIGdlbmVyYXRpbmcgImNvbnN0cnVjdG9yIiBzZXR0ZXIuCisg
ICAgICAgIDIuIFJlbW92ZSB1bnVzZWQgJG5lZWRzQ29uc3RydWN0b3JUYWJsZSB2YXJpYWJsZS4K
KyAgICAgICAgMy4gUmVtb3ZlIFtMZWdhY3lOb0ludGVyZmFjZU9iamVjdF0gYnJhbmNoIGFzIGl0
J3MgcHJlY2x1ZGVkIGJ5IE5lZWRzQ29uc3RydWN0b3JQcm9wZXJ0eS4KKworICAgICAgICBUZXN0
OiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRp
bmcvaW50ZXJmYWNlLXByb3RvdHlwZS1jb25zdHJ1Y3Rvci1zZXQtcmVjZWl2ZXIuaHRtbAorCisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChH
ZW5lcmF0ZVByb3BlcnRpZXNIYXNoVGFibGUpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTLyo6IFVwZGF0ZWQuCisK
IDIwMjAtMTAtMDkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbSlNDXSBBc3NlcnQgT3BlcmF0aW9uIGFuZCBIb3N0RnVuY3Rpb24gYXJlIGluIEpJVE9wZXJh
dGlvbnNMaXN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjY4MzE3KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTMz
ODYsOCArMzM4Niw3IEBAIHN1YiBHZW5lcmF0ZVByb3BlcnRpZXNIYXNoVGFibGUKICAgICAgICAg
bXkgJGdldHRlciA9ICJqcyIgLiAkaW50ZXJmYWNlTmFtZSAuICJDb25zdHJ1Y3RvciI7CiAgICAg
ICAgIHB1c2goQCRoYXNoVmFsdWUxLCAkZ2V0dGVyKTsKIAotICAgICAgICBteSAkc2V0dGVyID0g
InNldEpTIiAuICRpbnRlcmZhY2VOYW1lIC4gIkNvbnN0cnVjdG9yIjsKLSAgICAgICAgcHVzaChA
JGhhc2hWYWx1ZTIsICRzZXR0ZXIpOworICAgICAgICBwdXNoKEAkaGFzaFZhbHVlMiwgIjAiKTsK
ICAgICAgICAgcHVzaChAJGhhc2hTcGVjaWFscywgInN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkiKTsKICAgICB9CiAKQEAgLTQzMjEsOSArNDMy
MCw2IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIGlmIChOZWVkc0NvbnN0
cnVjdG9yUHJvcGVydHkoJGludGVyZmFjZSkpIHsKICAgICAgICAgICAgIG15ICRjb25zdHJ1Y3Rv
ckdldHRlciA9ICJqcyIgLiAkaW50ZXJmYWNlTmFtZSAuICJDb25zdHJ1Y3RvciI7CiAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoJHtjb25z
dHJ1Y3RvckdldHRlcn0pO1xuIik7Ci0KLSAgICAgICAgICAgIG15ICRjb25zdHJ1Y3RvclNldHRl
ciA9ICJzZXRKUyIgLiAkaW50ZXJmYWNlTmFtZSAuICJDb25zdHJ1Y3RvciI7Ci0gICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIkpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoJHtjb25zdHJ1
Y3RvclNldHRlcn0pO1xuIik7CiAgICAgICAgIH0KIAogICAgICAgICBmb3JlYWNoIG15ICRhdHRy
aWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKQEAgLTQ0NDIsOCArNDQzOCw2IEBA
IHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIG15ICVjb25kaXRpb25hbHMgPSAo
KTsKICAgICAgICAgbXkgJXJlYWRXcml0ZUNvbmRpdGlvbmFscyA9ICgpOwogCi0gICAgICAgIG15
ICRuZWVkc0NvbnN0cnVjdG9yVGFibGUgPSAwOwotCiAgICAgICAgIGZvcmVhY2ggbXkgJGNvbnN0
YW50IChAeyRpbnRlcmZhY2UtPmNvbnN0YW50c30pIHsKICAgICAgICAgICAgIG15ICRuYW1lID0g
JGNvbnN0YW50LT5uYW1lOwogICAgICAgICAgICAgcHVzaChAaGFzaEtleXMsICRuYW1lKTsKQEAg
LTQ5MTEsMzIgKzQ5MDUsOCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PCR7
Y2xhc3NOYW1lfVByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7XG4i
KTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKFVOTElLRUxZKCFwcm90b3R5
cGUpKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTtcbiIpOwotCi0g
ICAgICAgIGlmICghJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5Tm9JbnRl
cmZhY2VPYmplY3R9KSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKCR7Y2xhc3NOYW1lfTo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpO1xuIik7
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBK
U1ZhbHVlIGNvbnN0cnVjdG9yID0gJHtjbGFzc05hbWV9Q29uc3RydWN0b3I6OmNyZWF0ZShKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCAke2NsYXNzTmFtZX1Db25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksICpwcm90b3R5cGUt
Pmdsb2JhbE9iamVjdCgpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpLT5vYmplY3RQcm90b3R5
cGUoKSksICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihwcm90b3R5cGUtPmdsb2JhbE9iamVj
dCgpKSk7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIC8vIFNoYWRv
d2luZyBjb25zdHJ1Y3RvciBwcm9wZXJ0eSB0byBlbnN1cmUgcmV1c2luZyB0aGUgc2FtZSBjb25z
dHJ1Y3RvciBvYmplY3RcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
cHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBj
b25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSk7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0b3IpO1xuIik7Ci0gICAgICAgIH0KKyAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSgke2NsYXNz
TmFtZX06OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHBy
b3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIn1cblxuIik7Ci0KLSAgICAgICAgbXkgJGNvbnN0cnVjdG9yU2V0dGVyID0gInNldEpTIiAu
ICRpbnRlcmZhY2VOYW1lIC4gIkNvbnN0cnVjdG9yIjsKLQotICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUigke2NvbnN0cnVjdG9yU2V0dGVyfSwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpXG4iKTsKLSAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJ7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVk0mIHZt
ID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTtcbiIpOwotICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiBwcm90b3R5cGUg
PSBqc0R5bmFtaWNDYXN0PCR7Y2xhc3NOYW1lfVByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYg
KFVOTElLRUxZKCFwcm90b3R5cGUpKSB7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSk7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBmYWxz
ZTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKLSAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0
b3JcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gcHJvdG90eXBl
LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKSk7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9
XG5cbiIpOwotCiAgICAgfQogCiAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAeyRpbnRlcmZh
Y2UtPmF0dHJpYnV0ZXN9KSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNET01XaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDI2ODMxNykK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDYgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IC8vIEF0dHJpYnV0ZXMKIAogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdpbmRvd0Nv
bnN0cnVjdG9yKTsKLUpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNET01XaW5kb3dDb25z
dHJ1Y3Rvcik7CiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzRE9NV2luZG93RE9NV2luZG93
Q29uc3RydWN0b3IpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0RPTVdpbmRvd0RP
TVdpbmRvd0NvbnN0cnVjdG9yKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNET01XaW5k
b3dFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dDb25zdHJ1Y3Rvcik7CkBAIC0xNzgsNyArMTc3LDcg
QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTRAogCiBzdGF0aWMgY29u
c3QgSGFzaFRhYmxlVmFsdWUgSlNET01XaW5kb3dQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsK
LSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNET01XaW5kb3dDb25zdHJ1Y3RvciksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
RE9NV2luZG93Q29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNET01XaW5kb3dDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKIH07CiAKIHN0YXRpYyBjb25zdCBIYXNoVGFi
bGUgSlNET01XaW5kb3dQcm90b3R5cGVUYWJsZSA9IHsgMSwgMSwgdHJ1ZSwgSlNET01XaW5kb3c6
OmluZm8oKSwgSlNET01XaW5kb3dQcm90b3R5cGVUYWJsZVZhbHVlcywgSlNET01XaW5kb3dQcm90
b3R5cGVUYWJsZUluZGV4IH07CkBAIC0yMjgsMTkgKzIyNyw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0RPTVdpbmRvd0NvbnMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTRE9N
V2luZG93OjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBw
cm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0RPTVdpbmRvd0NvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
OwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1
dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNET01XaW5kb3dQcm90b3R5cGUqPih2bSwg
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBl
KSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBh
IGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSkpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNET01XaW5kb3dET01XaW5kb3dD
b25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNE
T01XaW5kb3cmIHRoaXNPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxP
YmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
LmNwcAkocmV2aXNpb24gMjY4MzE3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Nyw3ICs0Nyw2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAvLyBBdHRyaWJ1dGVzCiAK
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNv
bnN0cnVjdG9yKTsKLUpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNEZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNE
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZURlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3IpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0RlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcik7CiAKQEAgLTkx
LDcgKzkwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTRAogCiBz
dGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVBy
b3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogfTsKIAog
c3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlUHJvdG90
eXBlVGFibGUgPSB7IDEsIDEsIHRydWUsIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6Omlu
Zm8oKSwgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZVRhYmxlVmFsdWVzLCBK
U0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlVGFibGVJbmRleCB9OwpAQCAtMTM5
LDE5ICsxMzgsNiBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNEZWRpY2F0ZWRXb3JrCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpn
ZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUt
Pmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0Rl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU0RlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAg
ICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVy
biBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3Is
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZUNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlJiB0aGlzT2JqZWN0KQogewogICAgIFVOVVNFRF9Q
QVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFRv
V29ya2VyQW5kV2luZG93LmNwcAkocmV2aXNpb24gMjY4MzE3KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTIsNyArOTIsNiBAQCBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9O
KGpzRXhwb3NlZFRvV29yCiAvLyBBdHRyaWJ1dGVzCiAKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dDb25zdHJ1Y3Rvcik7Ci1KU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Q29uc3RydWN0b3IpOwog
CiBjbGFzcyBKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd1Byb3RvdHlwZSBmaW5hbCA6IHB1Ymxp
YyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMTY0LDcgKzE2Myw3IEBAIHRl
bXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTRXhwb3NlZFRvV28KIAogc3RhdGljIGNvbnN0IEhh
c2hUYWJsZVZhbHVlIEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93UHJvdG90eXBlVGFibGVWYWx1
ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzRXhwb3NlZFRvV29ya2Vy
QW5kV2luZG93Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0NvbnN0cnVj
dG9yKSB9IH0sCisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzRXhwb3NlZFRvV29ya2Vy
QW5kV2luZG93Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAiZG9Tb21ldGhpbmciLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzRXhwb3Nl
ZFRvV29ya2VyQW5kV2luZG93UHJvdG90eXBlRnVuY3Rpb25Eb1NvbWV0aGluZyksIChpbnRwdHJf
dCkgKDApIH0gfSwKIH07CiAKQEAgLTIyOSwxOSArMjI4LDYgQEAgSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzRXhwb3NlZFRvV29yawogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNFeHBv
c2VkVG9Xb3JrZXJBbmRXaW5kb3c6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEds
b2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Q29uc3RydWN0b3Is
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQotewotICAgIFZNJiB2bSA9IEpT
Qzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2Fz
dDxKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd1Byb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAg
IHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29u
c3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0K
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc0V4cG9zZWRUb1dvcmtlckFuZFdp
bmRvd1Byb3RvdHlwZUZ1bmN0aW9uRG9Tb21ldGhpbmdCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1l
IElETE9wZXJhdGlvbjxKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdz46OkNsYXNzUGFyYW1ldGVy
IGNhc3RlZFRoaXMpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAko
cmV2aXNpb24gMjY4MzE3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3
ICs0Nyw2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAvLyBBdHRyaWJ1dGVzCiAKIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNQYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yKTsK
LUpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZUNv
bnN0cnVjdG9yKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNQYWludFdvcmtsZXRHbG9i
YWxTY29wZVBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3IpOwogSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGVDb25zdHJ1Y3Rvcik7CiAKQEAgLTkxLDcgKzkwLDcgQEAgc3RhdGljIGNvbnN0IHN0
cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTUAogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUg
SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewotICAg
IHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7
ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNQYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVj
dG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oMCkgfSB9LAogfTsKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1BhaW50V29ya2xldEds
b2JhbFNjb3BlUHJvdG90eXBlVGFibGUgPSB7IDEsIDEsIHRydWUsIEpTUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGU6OmluZm8oKSwgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlwZVRhYmxl
VmFsdWVzLCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlUHJvdG90eXBlVGFibGVJbmRleCB9OwpA
QCAtMTM5LDE5ICsxMzgsNiBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNQYWludFdvcmts
ZXRHCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
OjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5
cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBp
ZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBw
cm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVQYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVj
dG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlJiB0aGlzT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlLmNwcAkocmV2aXNpb24gMjY4MzE3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDcsNyArNDcsNiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogLy8gQXR0cmlidXRlcwog
CiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29u
c3RydWN0b3IpOwotSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZUNvbnN0cnVjdG9yKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGVTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcik7
CiBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpOwogCkBAIC05MSw3ICs5MCw3IEBA
IHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1MKIAogc3RhdGljIGNvbnN0
IEhhc2hUYWJsZVZhbHVlIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlVGFibGVW
YWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0
cnVjdG9yKSB9IH0sCisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiB9OwogCiBzdGF0aWMgY29uc3QgSGFzaFRh
YmxlIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlVGFibGUgPSB7IDEsIDEsIHRy
dWUsIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjppbmZvKCksIEpTU2VydmljZVdvcmtlckds
b2JhbFNjb3BlUHJvdG90eXBlVGFibGVWYWx1ZXMsIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
UHJvdG90eXBlVGFibGVJbmRleCB9OwpAQCAtMTM5LDE5ICsxMzgsNiBAQCBKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNTZXJ2aWNlV29ya2VyCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShK
U1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi1KU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1
Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCi17Ci0gICAgVk0mIHZt
ID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFt
aWNDYXN0PEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1p
biBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsK
LX0KLQogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiB0aGlzT2JqZWN0
KQogewogICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENFUmVhY3Rpb25zLmNwcAkocmV2aXNpb24gMjY4MzE3KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTgsNyArNTgsNiBAQCBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdENF
UmVhY3RpCiAvLyBBdHRyaWJ1dGVzCiAKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0
Q0VSZWFjdGlvbnNDb25zdHJ1Y3Rvcik7Ci1KU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
VGVzdENFUmVhY3Rpb25zQ29uc3RydWN0b3IpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c1Rlc3RDRVJlYWN0aW9uc0F0dHJpYnV0ZVdpdGhDRVJlYWN0aW9ucyk7CiBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTVGVzdENFUmVhY3Rpb25zQXR0cmlidXRlV2l0aENFUmVhY3Rpb25z
KTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0Q0VSZWFjdGlvbnNSZWZsZWN0QXR0
cmlidXRlV2l0aENFUmVhY3Rpb25zKTsKQEAgLTEyNSw3ICsxMjQsNyBAQCB0ZW1wbGF0ZTw+IGNv
bnN0IENsYXNzSW5mbyBKU1Rlc3RDRVJlYWN0CiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1
ZSBKU1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewotICAgIHsgImNv
bnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RDRVJlYWN0aW9uc0NvbnN0cnVjdG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0
Q0VSZWFjdGlvbnNDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RDRVJlYWN0aW9uc0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgImF0dHJpYnV0ZVdp
dGhDRVJlYWN0aW9ucyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0Q0VSZWFjdGlvbnNBdHRyaWJ1dGVXaXRoQ0VSZWFjdGlvbnMpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U1Rlc3RDRVJlYWN0aW9uc0F0dHJpYnV0ZVdpdGhDRVJlYWN0aW9ucykgfSB9LAogICAgIHsgInJl
ZmxlY3RBdHRyaWJ1dGVXaXRoQ0VSZWFjdGlvbnMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENFUmVhY3Rpb25zUmVmbGVjdEF0dHJp
YnV0ZVdpdGhDRVJlYWN0aW9ucyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdENFUmVhY3Rpb25zUmVmbGVjdEF0dHJpYnV0ZVdp
dGhDRVJlYWN0aW9ucykgfSB9LAogICAgIHsgInN0cmluZ2lmaWVyQXR0cmlidXRlIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RDRVJl
YWN0aW9uc1N0cmluZ2lmaWVyQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmll
ckF0dHJpYnV0ZSkgfSB9LApAQCAtMjAyLDE5ICsyMDEsNiBAQCBKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNUZXN0Q0VSZWFjdGlvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RD
RVJlYWN0aW9uczo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0
KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi1KU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNUZXN0Q0VSZWFjdGlvbnNDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdENFUmVhY3Rpb25z
UHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5M
SUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAg
ICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5
cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dENFUmVhY3Rpb25zQXR0cmlidXRlV2l0aENFUmVhY3Rpb25zR2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RDRVJlYWN0aW9ucyYgdGhpc09iamVjdCkKIHsK
ICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25z
U3RyaW5naWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcAkocmV2aXNpb24g
MjY4MzE3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw2
IEBAIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0Q0VSZWFjdGkKIC8vIEF0dHJpYnV0
ZXMKIAogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lm
aWVyQ29uc3RydWN0b3IpOwotSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RDRVJl
YWN0aW9uc1N0cmluZ2lmaWVyQ29uc3RydWN0b3IpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyVmFsdWUpOwogSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyVmFsdWUpOwogSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyVmFsdWVXaXRob3V0
UmVhY3Rpb25zKTsKQEAgLTExMiw3ICsxMTEsNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5m
byBKU1Rlc3RDRVJlYWN0CiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RDRVJl
YWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29u
c3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJDb25zdHJ1Y3Rv
ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsg
ImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyQ29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPigwKSB9IH0sCiAgICAgeyAidmFsdWUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJWYWx1
ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJWYWx1ZSkgfSB9LAogICAgIHsgInZhbHVl
V2l0aG91dFJlYWN0aW9ucyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclZhbHVlV2l0aG91dFJl
YWN0aW9ucyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJWYWx1ZVdpdGhvdXRSZWFjdGlv
bnMpIH0gfSwKICAgICB7ICJ0b1N0cmluZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclBy
b3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcpLCAoaW50cHRyX3QpICgwKSB9IH0sCkBAIC0xODQsMTkg
KzE4Myw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RDRVJlYWN0aW8KICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI6OmdldENv
bnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xv
YmFsT2JqZWN0KCkpKTsKIH0KIAotSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdENF
UmVhY3Rpb25zU3RyaW5naWZpZXJDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAg
ICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdENFUmVhY3Rpb25zU3RyaW5n
aWZpZXJQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlm
IChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHBy
b3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclZhbHVlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyJiB0aGlzT2Jq
ZWN0KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2Fs
bFRyYWNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCShyZXZpc2lvbiAyNjgzMTcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDYgQEAgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
Tihqc1Rlc3RDYWxsVHJhYwogLy8gQXR0cmlidXRlcwogCiBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzVGVzdENhbGxUcmFjZXJDb25zdHJ1Y3Rvcik7Ci1KU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTVGVzdENhbGxUcmFjZXJDb25zdHJ1Y3Rvcik7CiBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzVGVzdENhbGxUcmFjZXJUZXN0QXR0cmlidXRlSW50ZXJmYWNlKTsKIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0Q2FsbFRyYWNlclRlc3RBdHRyaWJ1dGVJbnRlcmZh
Y2UpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RDYWxsVHJhY2VyVGVzdEF0dHJp
YnV0ZVNwZWNpZmllZCk7CkBAIC0xNDAsNyArMTM5LDcgQEAgdGVtcGxhdGU8PiBjb25zdCBDbGFz
c0luZm8gSlNUZXN0Q2FsbFRyYQogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0
Q2FsbFRyYWNlclByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewotICAgIHsgImNvbnN0cnVjdG9y
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1Rlc3RDYWxsVHJhY2VyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RDYWxsVHJhY2Vy
Q29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0Q2Fs
bFRyYWNlckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgInRlc3RBdHRyaWJ1dGVJbnRlcmZhY2Ui
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdENhbGxUcmFjZXJUZXN0QXR0cmlidXRlSW50ZXJmYWNlKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0Q2FsbFRyYWNlclRl
c3RBdHRyaWJ1dGVJbnRlcmZhY2UpIH0gfSwKICAgICB7ICJ0ZXN0QXR0cmlidXRlU3BlY2lmaWVk
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RDYWxsVHJhY2VyVGVzdEF0dHJpYnV0ZVNwZWNpZmllZCksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdENhbGxUcmFjZXJU
ZXN0QXR0cmlidXRlU3BlY2lmaWVkKSB9IH0sCiAgICAgeyAidGVzdEF0dHJpYnV0ZVdpdGhWYXJp
YW50Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RDYWxsVHJhY2VyVGVzdEF0dHJpYnV0ZVdpdGhWYXJpYW50KSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0Q2FsbFRy
YWNlclRlc3RBdHRyaWJ1dGVXaXRoVmFyaWFudCkgfSB9LApAQCAtMjIyLDE5ICsyMjEsNiBAQCBK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0Q2FsbFRyYWNlCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU1Rlc3RDYWxsVHJhY2VyOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxl
eGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLUpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RDYWxsVHJhY2VyQ29uc3RydWN0b3IsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQotewotICAgIFZNJiB2bSA9IEpTQzo6
Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAg
IHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3Ry
dWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzVGVzdENhbGxUcmFjZXJUZXN0QXR0cmlidXRlSW50ZXJmYWNlR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RDYWxsVHJhY2VyJiB0aGlz
T2JqZWN0KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI2ODMxNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDYgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IC8vIEF0dHJpYnV0ZXMKIAogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKTsKLUpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcik7
CiAKIGNsYXNzIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlIGZp
bmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CkBAIC0xMDYsNyAr
MTA1LDcgQEAgdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0Q2xhc3NXaQogCiBzdGF0
aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0
b3JQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvciksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVz
dENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJj
b25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JD
b25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KDApIH0gfSwKIH07CiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RDbGFzc1dpdGhK
U0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3Rv
dHlwZSkgfTsKQEAgLTE2NSwxOSArMTY0LDYgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
VGVzdENsYXNzV2l0aAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0Q2xhc3NXaXRo
SlNCdWlsdGluQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEds
b2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29u
c3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQotewotICAgIFZN
JiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSo+
KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90
b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93
aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKSk7Ci19Ci0KIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCiB7CiAgICAgYXV0
byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERh
dGEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dENvbmRpdGlvbmFsSW5jbHVkZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmNwcAkocmV2
aXNpb24gMjY4MzE3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw3ICs4
Nyw2IEBAIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0Q29uZGl0aW8KIC8vIEF0dHJp
YnV0ZXMKIAogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RDb25kaXRpb25hbEluY2x1
ZGVzQ29uc3RydWN0b3IpOwotSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzQ29uc3RydWN0b3IpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzVGVzdEF0dHIpOwogI2lmIEVOQUJMRShDb25kaXRpb24y
MikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rl
c3RDb25kaXRpb25hbEluY2x1ZGVzTWl4aW5SZWFkT25seUF0dHJpYnV0ZSk7CkBAIC0yMTcsNyAr
MjE2LDcgQEAgdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0Q29uZGl0aQogCiBzdGF0
aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlw
ZVRhYmxlVmFsdWVzW10gPQogewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RD
b25kaXRpb25hbEluY2x1ZGVzQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVz
Q29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0Q29u
ZGl0aW9uYWxJbmNsdWRlc0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgInRlc3RBdHRyIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNUZXN0
QXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KDApIH0gfSwKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24y
MykKICAgICB7ICJtaXhpblJlYWRPbmx5QXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNNaXhpblJlYWRPbmx5QXR0cmlidXRl
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
MCkgfSB9LApAQCAtNTAwLDE5ICs0OTksNiBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNU
ZXN0Q29uZGl0aW9uCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RDb25kaXRpb25h
bEluY2x1ZGVzOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
LCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzQ29uc3RydWN0b3IsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4
aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAg
IHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3Ry
dWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNUZXN0QXR0ckdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyYg
dGhpc09iamVjdCkKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRl
LmNwcAkocmV2aXNpb24gMjY4MzE3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01NSw3ICs1NSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAvLyBBdHRyaWJ1dGVzCiAK
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZUNv
bnN0cnVjdG9yKTsKLUpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0Q29uZGl0aW9u
YWxseVJlYWRXcml0ZUNvbnN0cnVjdG9yKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNU
ZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGUp
OwogI2lmIEVOQUJMRShDT05ESVRJT04pCiBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
VGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRl
KTsKQEAgLTE1Nyw3ICsxNTYsNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RD
b25kaXRpCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RDb25kaXRpb25hbGx5
UmVhZFdyaXRlUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3Ii
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVDb25zdHJ1Y3RvciksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVz
dENvbmRpdGlvbmFsbHlSZWFkV3JpdGVDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgImNvbnN0cnVj
dG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlQ29uc3RydWN0b3IpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9
IH0sCiAjaWYgRU5BQkxFKENPTkRJVElPTikKICAgICB7ICJjb25kaXRpb25hbGx5UmVhZFdyaXRl
QXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlQ29uZGl0aW9uYWxseVJlYWRXcml0
ZUF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVDb25kaXRpb25hbGx5UmVh
ZFdyaXRlQXR0cmlidXRlKSB9IH0sCiAjZWxzZQpAQCAtMjg0LDE5ICsyODMsNiBAQCBKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNUZXN0Q29uZGl0aW9uCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlOjpnZXRDb25zdHJ1Y3RvcihKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9
CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdy
aXRlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQotewot
ICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBl
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlUHJvdG90eXBlKj4o
dm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3Rv
dHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dp
bmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpKTsKLX0KLQogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFs
bHlSZWFkV3JpdGVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRl
JiB0aGlzT2JqZWN0KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RE9NSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAkocmV2aXNpb24gMjY4MzE3KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTczLDcgKzczLDYgQEAgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihq
c1Rlc3RET01KSVRQcgogLy8gQXR0cmlidXRlcwogCiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzVGVzdERPTUpJVENvbnN0cnVjdG9yKTsKLUpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNUZXN0RE9NSklUQ29uc3RydWN0b3IpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rl
c3RET01KSVRBbnlBdHRyKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0RE9NSklU
Qm9vbGVhbkF0dHIpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RET01KSVRCeXRl
QXR0cik7CkBAIC01MjIsNyArNTIxLDcgQEAgdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNU
ZXN0RE9NSklURAogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0RE9NSklUUHJv
dG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdERPTUpJVENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0RE9NSklUQ29uc3RydWN0b3IpIH0gfSwKKyAg
ICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RE9NSklUQ29uc3RydWN0b3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0s
CiAgICAgeyAiYW55QXR0ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NSklUQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PGNvbnN0IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIq
PigmRE9NSklUQXR0cmlidXRlRm9yVGVzdERPTUpJVEFueUF0dHIpLCAoaW50cHRyX3QpICgwKSB9
IH0sCiAgICAgeyAiYm9vbGVhbkF0dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUpJVEF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxjb25zdCBKU0M6OkRPTUpJVDo6R2V0dGVy
U2V0dGVyKj4oJkRPTUpJVEF0dHJpYnV0ZUZvclRlc3RET01KSVRCb29sZWFuQXR0ciksIChpbnRw
dHJfdCkgKDApIH0gfSwKICAgICB7ICJieXRlQXR0ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NSklUQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PGNvbnN0IEpTQzo6RE9NSklU
OjpHZXR0ZXJTZXR0ZXIqPigmRE9NSklUQXR0cmlidXRlRm9yVGVzdERPTUpJVEJ5dGVBdHRyKSwg
KGludHB0cl90KSAoMCkgfSB9LApAQCAtNjI1LDE5ICs2MjQsNiBAQCBKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNUZXN0RE9NSklUQ29uCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rl
c3RET01KSVQ6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCks
IHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTVGVzdERPTUpJVENvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAg
IGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RE9NSklUUHJvdG90eXBlKj4o
dm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3Rv
dHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dp
bmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpKTsKLX0KLQogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEFueUF0
dHJHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdERPTUpJ
VCYgdGhpc09iamVjdCkKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdERlZmF1bHRUb0pTT04uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OLmNwcAkocmV2aXNpb24g
MjY4MzE3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dERlZmF1bHRUb0pTT04uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw2IEBAIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0RGVmYXVsdFQKIC8vIEF0dHJpYnV0ZXMKIAogSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3REZWZhdWx0VG9KU09OQ29uc3RydWN0b3IpOwot
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3REZWZhdWx0VG9KU09OQ29uc3RydWN0
b3IpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3REZWZhdWx0VG9KU09OTG9uZ0F0
dHJpYnV0ZSk7CiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdERlZmF1bHRUb0pTT05F
bmFibGVkQnlTZXR0aW5nc0F0dHJpYnV0ZSk7CiAjaWYgRU5BQkxFKFRFU1RfQ09ORElUSU9OQUwp
CkBAIC0xNjMsNyArMTYyLDcgQEAgdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0RGVm
YXVsdAogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0RGVmYXVsdFRvSlNPTlBy
b3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3REZWZhdWx0VG9KU09OQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3REZWZhdWx0VG9KU09OQ29uc3Ry
dWN0b3IpIH0gfSwKKyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RGVmYXVsdFRv
SlNPTkNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgImxvbmdBdHRyaWJ1dGUiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RGVmYXVsdFRvSlNPTkxvbmdBdHRyaWJ1dGUpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9
IH0sCiAgICAgeyAiZW5hYmxlZEJ5U2V0dGluZ3NBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0RGVmYXVsdFRvSlNPTkVuYWJsZWRCeVNldHRpbmdzQXR0cmli
dXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oMCkgfSB9LAogI2lmIEVOQUJMRShURVNUX0NPTkRJVElPTkFMKQpAQCAtMjcxLDE5ICsyNzAs
NiBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0RGVmYXVsdFRvCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU1Rlc3REZWZhdWx0VG9KU09OOjpnZXRDb25zdHJ1Y3RvcihKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7
CiB9CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3REZWZhdWx0VG9KU09OQ29u
c3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQotewotICAgIFZN
JiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3REZWZhdWx0VG9KU09OUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBj
b25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0K
LQogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERlZmF1bHRUb0pTT05Mb25nQXR0cmlidXRl
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3REZWZhdWx0
VG9KU09OJiB0aGlzT2JqZWN0KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVs
dFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLmNwcAkocmV2aXNpb24gMjY4MzE3KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05GaWx0
ZXJlZEJ5RXhwb3NlZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDYgQEAgSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3REZWZhdWx0VAogLy8gQXR0cmlidXRlcwogCiBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3Nl
ZENvbnN0cnVjdG9yKTsKLUpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0RGVmYXVs
dFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29uc3RydWN0b3IpOwogSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWROb3JtYWxBdHRyaWJ1
dGUpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3REZWZhdWx0VG9KU09ORmlsdGVy
ZWRCeUV4cG9zZWRGaWx0ZXJlZEJ5RXhwb3NlZFdpbmRvd0F0dHJpYnV0ZSk7CiBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZEZpbHRl
cmVkQnlFeHBvc2VkV29ya2VyQXR0cmlidXRlKTsKQEAgLTExMiw3ICsxMTEsNyBAQCB0ZW1wbGF0
ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3REZWZhdWx0CiAKIHN0YXRpYyBjb25zdCBIYXNoVGFi
bGVWYWx1ZSBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRQcm90b3R5cGVUYWJs
ZVZhbHVlc1tdID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RGVmYXVs
dFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3REZWZhdWx0VG9KU09O
RmlsdGVyZWRCeUV4cG9zZWRDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgImNvbnN0cnVjdG9yIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRDb25zdHJ1Y3Rvciks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDAp
IH0gfSwKICAgICB7ICJub3JtYWxBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkTm9ybWFsQXR0cmlidXRl
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
MCkgfSB9LAogICAgIHsgImZpbHRlcmVkQnlFeHBvc2VkV2luZG93QXR0cmlidXRlIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhw
b3NlZEZpbHRlcmVkQnlFeHBvc2VkV2luZG93QXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgImZpbHRl
cmVkQnlFeHBvc2VkV29ya2VyQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZEZpbHRlcmVkQnlFeHBvc2Vk
V29ya2VyQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oMCkgfSB9LApAQCAtMjAyLDE5ICsyMDEsNiBAQCBKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNUZXN0RGVmYXVsdFRvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShK
U1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ6OmdldENvbnN0cnVjdG9yKEpTQzo6
Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsK
IH0KIAotSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdERlZmF1bHRUb0pTT05GaWx0
ZXJlZEJ5RXhwb3NlZENvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwot
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8q
IHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlF
eHBvc2VkUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBp
ZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBw
cm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZE5vcm1hbEF0dHJpYnV0ZUdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0RGVmYXVsdFRvSlNP
TkZpbHRlcmVkQnlFeHBvc2VkJiB0aGlzT2JqZWN0KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZS5jcHAJKHJldmlzaW9uIDI2
ODMxNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RE
ZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0
LDcgKzQ0LDYgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIC8vIEF0dHJpYnV0ZXMKIAogSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5j
ZUNvbnN0cnVjdG9yKTsKLUpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0RGVmYXVs
dFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2VDb25zdHJ1Y3Rvcik7CiAKIGNsYXNzIEpTVGVzdERl
ZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpT
Qzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CkBAIC05OCw3ICs5Nyw3IEBAIHRlbXBsYXRl
PD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdERlZmF1bHQKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJs
ZVZhbHVlIEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlUHJvdG90eXBlVGFi
bGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdERlZmF1
bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3REZWZhdWx0VG9K
U09OSW5kaXJlY3RJbmhlcml0YW5jZUNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiY29uc3RydWN0
b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlQ29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPigwKSB9IH0sCiB9OwogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0RGVmYXVsdFRvSlNPTklu
ZGlyZWN0SW5oZXJpdGFuY2VQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3REZWZhdWx0VG9KU09O
SW5kaXJlY3RJbmhlcml0YW5jZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2VQ
cm90b3R5cGUpIH07CkBAIC0xNTEsMTkgKzE1MCw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc1Rlc3REZWZhdWx0VG8KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdERlZmF1
bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxl
eGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLUpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhl
cml0YW5jZUNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
LXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3Rv
dHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFu
Y2VQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChV
TkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
ICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3Rv
dHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RE
ZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZTo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0m
IHZtKQogewogICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERh
dGEqPih2bS5jbGllbnREYXRhKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pT
T05Jbmhlcml0LmNwcAkocmV2aXNpb24gMjY4MzE3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzEsNyArNzEsNiBAQCBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVz
dERlZmF1bHRUCiAvLyBBdHRyaWJ1dGVzCiAKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNU
ZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRDb25zdHJ1Y3Rvcik7Ci1KU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0Q29uc3RydWN0b3IpOwogSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEluaGVyaXRMb25n
QXR0cmlidXRlKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0RGVmYXVsdFRv
SlNPTkluaGVyaXRJbmhlcml0TG9uZ0F0dHJpYnV0ZSk7CiAKQEAgLTEyNyw3ICsxMjYsNyBAQCB0
ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3REZWZhdWx0CiAKIHN0YXRpYyBjb25zdCBI
YXNoVGFibGVWYWx1ZSBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdFByb3RvdHlwZVRhYmxlVmFs
dWVzW10gPQogewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3REZWZhdWx0VG9K
U09OSW5oZXJpdENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRDb25zdHJ1
Y3RvcikgfSB9LAorICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3REZWZhdWx0VG9K
U09OSW5oZXJpdENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgImluaGVyaXRMb25nQXR0cmlidXRl
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEluaGVyaXRMb25nQXR0cmlidXRlKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0RGVm
YXVsdFRvSlNPTkluaGVyaXRJbmhlcml0TG9uZ0F0dHJpYnV0ZSkgfSB9LAogICAgIHsgInRvSlNP
TiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlv
biksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlv
bj4oanNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRQcm90b3R5cGVGdW5jdGlvblRvSlNPTiksIChp
bnRwdHJfdCkgKDApIH0gfSwKIH07CkBAIC0xOTIsMTkgKzE5MSw2IEBAIEpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc1Rlc3REZWZhdWx0VG8KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
VGVzdERlZmF1bHRUb0pTT05Jbmhlcml0OjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGlj
YWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLUpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdENvbnN0cnVj
dG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKLXsKLSAgICBWTSYgdm0g
PSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWlu
IGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwot
fQotCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRJbmhl
cml0TG9uZ0F0dHJpYnV0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQmIHRoaXNPYmplY3QpCiB7CiAgICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZp
bmFsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbC5jcHAJKHJldmlzaW9uIDI2ODMx
NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZh
dWx0VG9KU09OSW5oZXJpdEZpbmFsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNiBA
QCBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdERlZmF1bHRUCiAvLyBBdHRyaWJ1dGVz
CiAKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRG
aW5hbENvbnN0cnVjdG9yKTsKLUpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0RGVm
YXVsdFRvSlNPTkluaGVyaXRGaW5hbENvbnN0cnVjdG9yKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbEZpbmFsTG9uZ0F0dHJpYnV0ZUZv
byk7CiBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdERlZmF1bHRUb0pTT05Jbmhl
cml0RmluYWxGaW5hbExvbmdBdHRyaWJ1dGVGb28pOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsRmluYWxMb25nQXR0cmlidXRlQmFyKTsK
QEAgLTEyOSw3ICsxMjgsNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3REZWZh
dWx0CiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3REZWZhdWx0VG9KU09OSW5o
ZXJpdEZpbmFsUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3Ii
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWxDb25zdHJ1Y3RvciksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
VGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWxDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgImNv
bnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsQ29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPigwKSB9IH0sCiAgICAgeyAiZmluYWxMb25nQXR0cmlidXRlRm9vIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3REZWZhdWx0VG9K
U09OSW5oZXJpdEZpbmFsRmluYWxMb25nQXR0cmlidXRlRm9vKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0RGVmYXVsdFRvSlNP
TkluaGVyaXRGaW5hbEZpbmFsTG9uZ0F0dHJpYnV0ZUZvbykgfSB9LAogICAgIHsgImZpbmFsTG9u
Z0F0dHJpYnV0ZUJhciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbEZpbmFsTG9uZ0F0dHJp
YnV0ZUJhciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWxGaW5hbExvbmdBdHRyaWJ1
dGVCYXIpIH0gfSwKICAgICB7ICJ0b0pTT04iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0Rmlu
YWxQcm90b3R5cGVGdW5jdGlvblRvSlNPTiksIChpbnRwdHJfdCkgKDApIH0gfSwKQEAgLTE5NSwx
OSArMTk0LDYgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdERlZmF1bHRUbwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbDo6
Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBl
LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi1KU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNU
ZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbENvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RGVmYXVsdFRv
SlNPTkluaGVyaXRGaW5hbFByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBl
RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAg
ICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0
cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIHN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsRmluYWxMb25nQXR0cmli
dXRlRm9vR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RE
ZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsJiB0aGlzT2JqZWN0KQogewogICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RG9tYWluU2VjdXJpdHkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REb21h
aW5TZWN1cml0eS5jcHAJKHJldmlzaW9uIDI2ODMxNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REb21haW5TZWN1cml0eS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU5LDcgKzU5LDYgQEAgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3REb21h
aW5TZQogLy8gQXR0cmlidXRlcwogCiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdERv
bWFpblNlY3VyaXR5Q29uc3RydWN0b3IpOwotSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U1Rlc3REb21haW5TZWN1cml0eUNvbnN0cnVjdG9yKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNUZXN0RG9tYWluU2VjdXJpdHlFeGNpdGluZ0F0dHIpOwogCiBjbGFzcyBKU1Rlc3REb21h
aW5TZWN1cml0eVByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3Qg
ewpAQCAtMTI5LDcgKzEyOCw3IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdERv
bWFpblMKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdERvbWFpblNlY3VyaXR5
UHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzVGVzdERvbWFpblNlY3VyaXR5Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3REb21haW5TZWN1cml0eUNv
bnN0cnVjdG9yKSB9IH0sCisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdERvbWFp
blNlY3VyaXR5Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAiZXhjaXRpbmdGdW5jdGlvbiIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNU
ZXN0RG9tYWluU2VjdXJpdHlQcm90b3R5cGVGdW5jdGlvbkV4Y2l0aW5nRnVuY3Rpb24pLCAoaW50
cHRyX3QpICgxKSB9IH0sCiAgICAgeyAicG9zdE1lc3NhZ2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdERvbWFpblNlY3VyaXR5
UHJvdG90eXBlRnVuY3Rpb25Qb3N0TWVzc2FnZSksIChpbnRwdHJfdCkgKDEpIH0gfSwKICAgICB7
ICJvdmVybG9hZGVkTWV0aG9kIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3REb21haW5TZWN1cml0eVByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRlZE1ldGhvZCksIChpbnRwdHJfdCkgKDEpIH0gfSwKQEAgLTIwMSwxOSArMjAwLDYg
QEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdERvbWFpblNlYwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNUZXN0RG9tYWluU2VjdXJpdHk6OmdldENvbnN0cnVjdG9yKEpTQzo6
Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsK
IH0KIAotSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdERvbWFpblNlY3VyaXR5Q29u
c3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQotewotICAgIFZN
JiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3REb21haW5TZWN1cml0eVByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAg
ICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4g
Y29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19
Ci0KIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3REb21haW5TZWN1cml0eUV4Y2l0aW5nQXR0
ckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0RG9tYWlu
U2VjdXJpdHkmIHRoaXNPYmplY3QpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5j
cHAJKHJldmlzaW9uIDI2ODMxNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgs
NyArNTgsNiBAQCBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdEVuYWJsZWRCCiAvLyBB
dHRyaWJ1dGVzCiAKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0RW5hYmxlZEJ5U2V0
dGluZ0NvbnN0cnVjdG9yKTsKLUpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0RW5h
YmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNU
ZXN0RW5hYmxlZEJ5U2V0dGluZ1Rlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3Ip
OwogSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RFbmFibGVkQnlTZXR0aW5nVGVz
dFN1Yk9iakVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3Rvcik7CiAjaWYgRU5BQkxFKFRFU1RfRkVB
VFVSRSkKQEAgLTE0MSw3ICsxNDAsNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rl
c3RFbmFibGVkCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RFbmFibGVkQnlT
ZXR0aW5nUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3IiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdEVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEVuYWJsZWRC
eVNldHRpbmdDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAjaWYgRU5BQkxFKFRFU1Rf
RkVBVFVSRSkKICAgICB7ICJlbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RFbmFibGVkQnlT
ZXR0aW5nRW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEVuYWJsZWRCeVNldHRpbmdF
bmFibGVkQnlTZXR0aW5nQXR0cmlidXRlKSB9IH0sCiAjZWxzZQpAQCAtMjczLDE5ICsyNzIsNiBA
QCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0RW5hYmxlZEJ5CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU1Rlc3RFbmFibGVkQnlTZXR0aW5nOjpnZXRDb25zdHJ1Y3RvcihKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7
CiB9CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RFbmFibGVkQnlTZXR0aW5n
Q29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQotewotICAg
IFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlKj4odm0sIEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsK
LSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWls
dC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
KTsKLX0KLQogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEVuYWJsZWRCeVNldHRpbmdUZXN0
U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nJiB0aGlzT2JqZWN0KQog
ewogICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkRm9yQ29udGV4dC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEVuYWJsZWRGb3JDb250ZXh0LmNwcAkocmV2aXNpb24gMjY4MzE3KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRGb3JDb250ZXh0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNiBAQCB1c2luZyBuYW1lc3BhY2UgSlND
OwogLy8gQXR0cmlidXRlcwogCiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEVuYWJs
ZWRGb3JDb250ZXh0Q29uc3RydWN0b3IpOwotSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U1Rlc3RFbmFibGVkRm9yQ29udGV4dENvbnN0cnVjdG9yKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNUZXN0RW5hYmxlZEZvckNvbnRleHRUZXN0U3ViT2JqRW5hYmxlZEZvckNvbnRleHRD
b25zdHJ1Y3Rvcik7CiBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdEVuYWJsZWRG
b3JDb250ZXh0VGVzdFN1Yk9iakVuYWJsZWRGb3JDb250ZXh0Q29uc3RydWN0b3IpOwogCkBAIC0x
MDYsNyArMTA1LDcgQEAgdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0RW5hYmxlZAog
CiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0RW5hYmxlZEZvckNvbnRleHRQcm90
b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNU
ZXN0RW5hYmxlZEZvckNvbnRleHRDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0
Q29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RW5h
YmxlZEZvckNvbnRleHRDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKIH07CiAKIGNvbnN0IENsYXNzSW5mbyBK
U1Rlc3RFbmFibGVkRm9yQ29udGV4dFByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdEVuYWJsZWRG
b3JDb250ZXh0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU1Rlc3RFbmFibGVkRm9yQ29udGV4dFByb3RvdHlwZSkgfTsKQEAgLTE3MiwxOSAr
MTcxLDYgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdEVuYWJsZWRGbwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0RW5hYmxlZEZvckNvbnRleHQ6OmdldENvbnN0cnVj
dG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2Jq
ZWN0KCkpKTsKIH0KIAotSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdEVuYWJsZWRG
b3JDb250ZXh0Q29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
KQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJv
dG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFbmFibGVkRm9yQ29udGV4dFByb3RvdHlwZSo+
KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90
b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93
aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RFbmFibGVkRm9y
Q29udGV4dFRlc3RTdWJPYmpFbmFibGVkRm9yQ29udGV4dENvbnN0cnVjdG9yR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dCYg
dGhpc09iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRD
b25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyNjgzMTcp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRD
b25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw3ICsxMjQsNiBAQCB0ZW1wbGF0
ZTw+IFRlc3RFdmVudENvbnN0cnVjdG9yOjpJbml0IGNvCiAvLyBBdHRyaWJ1dGVzCiAKIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKTsK
LUpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0
cnVjdG9yKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0RXZlbnRDb25zdHJ1Y3Rv
ckF0dHIxKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0RXZlbnRDb25zdHJ1Y3Rv
ckF0dHIyKTsKICNpZiBFTkFCTEUoU1BFQ0lBTF9FVkVOVCkKQEAgLTIwOCw3ICsyMDcsNyBAQCB0
ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RFdmVudENvCiAKIHN0YXRpYyBjb25zdCBI
YXNoVGFibGVWYWx1ZSBKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlVGFibGVWYWx1ZXNb
XSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEV2ZW50Q29uc3RydWN0
b3JDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvcikgfSB9LAor
ICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPigwKSB9IH0sCiAgICAgeyAiYXR0cjEiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHIxKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgImF0dHIyIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEV2ZW50Q29uc3RydWN0b3JBdHRyMiks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDAp
IH0gfSwKICNpZiBFTkFCTEUoU1BFQ0lBTF9FVkVOVCkKQEAgLTI3MywxOSArMjcyLDYgQEAgSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdEV2ZW50Q29ucwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwogfQog
Ci1KU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0
cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKLXsKLSAgICBWTSYg
dm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAg
ICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4g
Y29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19
Ci0KIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9yQXR0cjFHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEV2ZW50Q29uc3Ry
dWN0b3ImIHRoaXNPYmplY3QpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAkocmV2aXNpb24g
MjY4MzE3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV2ZW50VGFyZ2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNiBAQCBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdEV2ZW50VGFyCiAvLyBBdHRyaWJ1dGVzCiAKIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3Rvcik7Ci1KU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3IpOwog
CiBjbGFzcyBKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpT
Tm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMTA5LDcgKzEwOCw3IEBAIHRlbXBsYXRlPD4g
Y29uc3QgQ2xhc3NJbmZvIEpTVGVzdEV2ZW50VGEKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZh
bHVlIEpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAi
Y29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rl
c3RFdmVudFRhcmdldENvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAiaXRlbSIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNU
ZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvbkl0ZW0pLCAoaW50cHRyX3QpICgxKSB9IH0s
CiB9OwogCkBAIC0yMzYsMTkgKzIzNSw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rl
c3RFdmVudFRhcmcKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdEV2ZW50VGFyZ2V0
OjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5
cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
OwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1
dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGUq
Pih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJv
dG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRv
d2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSkpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvbkl0ZW1Cb2R5KEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVu
YW1lIElETE9wZXJhdGlvbjxKU1Rlc3RFdmVudFRhcmdldD46OkNsYXNzUGFyYW1ldGVyIGNhc3Rl
ZFRoaXMpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4
Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDI2ODMxNykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAvLyBB
dHRyaWJ1dGVzCiAKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0RXhjZXB0aW9uQ29u
c3RydWN0b3IpOwotSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RFeGNlcHRpb25D
b25zdHJ1Y3Rvcik7CiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEV4Y2VwdGlvbk5h
bWUpOwogCiBjbGFzcyBKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlND
OjpKU05vbkZpbmFsT2JqZWN0IHsKQEAgLTEwMyw3ICsxMDIsNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0
IENsYXNzSW5mbyBKU1Rlc3RFeGNlcHRpCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBK
U1Rlc3RFeGNlcHRpb25Qcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKLSAgICB7ICJjb25zdHJ1
Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RFeGNlcHRp
b25Db25zdHJ1Y3RvcikgfSB9LAorICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RF
eGNlcHRpb25Db25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJuYW1lIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEV4Y2VwdGlvbk5hbWUpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiB9OwogCkBAIC0xNjgs
MTkgKzE2Nyw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RFeGNlcHRpb24KICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdEV4Y2VwdGlvbjo6Z2V0Q29uc3RydWN0b3Io
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3Qo
KSkpOwogfQogCi1KU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0RXhjZXB0aW9uQ29u
c3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQotewotICAgIFZN
JiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0
aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0
cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiBz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RXhjZXB0aW9uTmFtZUdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0RXhjZXB0aW9uJiB0aGlzT2JqZWN0KQog
ewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJ
c1JlYWNoYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCShyZXZpc2lvbiAyNjgz
MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2Vu
ZXJhdGVJc1JlYWNoYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDYgQEAgdXNp
bmcgbmFtZXNwYWNlIEpTQzsKIC8vIEF0dHJpYnV0ZXMKIAogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IpOwotSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IpOwog
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQVNlY3Jl
dEF0dHJpYnV0ZSk7CiAKIGNsYXNzIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGUg
ZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKQEAgLTEwMyw3ICsxMDIsNyBA
QCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RHZW5lcmF0CiAKIHN0YXRpYyBjb25z
dCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlVGFibGVW
YWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdlbmVyYXRl
SXNSZWFjaGFibGVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1
Y3RvcikgfSB9LAorICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHZW5lcmF0ZUlz
UmVhY2hhYmxlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAiYVNlY3JldEF0dHJpYnV0ZSIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQVNl
Y3JldEF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KDApIH0gfSwKIH07CiAKQEAgLTE3OCwxOSArMTc3LDYgQEAgSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzVGVzdEdlbmVyYXRlSQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShs
ZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi1K
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0
cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKLXsKLSAgICBWTSYg
dm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZSo+KHZtLCBKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0g
ICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQt
aW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7
Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQVNl
Y3JldEF0dHJpYnV0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSYgdGhpc09iamVjdCkKIHsKICAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2Jh
bE9iamVjdC5jcHAJKHJldmlzaW9uIDI2ODMxNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDgsNyArMTQ4LDYgQEAgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RHbG9iYWxP
YgogLy8gQXR0cmlidXRlcwogCiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2Jh
bE9iamVjdENvbnN0cnVjdG9yKTsKLUpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0
R2xvYmFsT2JqZWN0Q29uc3RydWN0b3IpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rl
c3RHbG9iYWxPYmplY3RSZWd1bGFyQXR0cmlidXRlKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNUZXN0R2xvYmFsT2JqZWN0UmVndWxhckF0dHJpYnV0ZSk7CiBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iamVjdFB1YmxpY0FuZFByaXZhdGVBdHRyaWJ1dGUp
OwpAQCAtNjg4LDcgKzY4Nyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRl
eCBKU1QKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEdsb2JhbE9iamVjdFBy
b3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdENvbnN0cnVj
dG9yKSB9IH0sCisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVj
dENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oMCkgfSB9LAogfTsKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RH
bG9iYWxPYmplY3RQcm90b3R5cGVUYWJsZSA9IHsgMSwgMSwgdHJ1ZSwgSlNUZXN0R2xvYmFsT2Jq
ZWN0OjppbmZvKCksIEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZVRhYmxlVmFsdWVzLCBKU1Rl
c3RHbG9iYWxPYmplY3RQcm90b3R5cGVUYWJsZUluZGV4IH07CkBAIC03ODUsMTkgKzc4NCw2IEBA
IEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmoKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTVGVzdEdsb2JhbE9iamVjdDo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwogfQog
Ci1KU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0
b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQotewotICAgIFZNJiB2bSA9
IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RHbG9iYWxPYmplY3RQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVj
dG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiBzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0UmVndWxhckF0dHJpYnV0ZUdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0
JiB0aGlzT2JqZWN0KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lk
ZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyNjgzMTcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDYgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIC8vIEF0
dHJpYnV0ZXMKIAogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyQ29uc3RydWN0b3IpOwotSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3IpOwogCiBjbGFzcyBKU1Rl
c3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6
SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CkBAIC0xMDIsNyArMTAxLDcgQEAgdGVtcGxhdGU8
PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0SW5kZXhlZAogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxl
VmFsdWUgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlwZVRhYmxlVmFsdWVz
W10gPQogewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVy
Q29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0SW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogfTsKIAogY29uc3QgQ2xh
c3NJbmZvIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGU6OnNfaW5mbyA9
IHsgIlRlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyUHJvdG90eXBlKSB9OwpAQCAtMjUxLDE5ICsyNTAsNiBAQCBKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNUZXN0SW5kZXhlZFNlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rl
c3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxl
eGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLUpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVy
Q29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQotewotICAg
IFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlKj4o
dm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3Rv
dHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dp
bmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpKTsKLX0KLQogSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0SW5kZXhlZFNldHRlck5v
SWRlbnRpZmllcjo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQogewogICAgIGF1dG8mIGNs
aWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRl
eGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb24uY3BwCShyZXZpc2lvbiAyNjgzMTcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwog
Ly8gQXR0cmlidXRlcwogCiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEluZGV4ZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKTsKLUpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3Ip
OwogCiBjbGFzcyBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGUg
ZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTEwMiw3
ICsxMDEsNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RJbmRleGVkCiAKIHN0
YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb25Qcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3IpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3RvcikgfSB9LAorICAg
IHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb25Db25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKIH07CiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RJbmRl
eGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RJbmRl
eGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvblByb3RvdHlwZSkgfTsKQEAgLTI1MSwxOSArMjUwLDYgQEAgSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzVGVzdEluZGV4ZWRTZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0
SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZN
KGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAK
LUpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb25Db25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
Ci17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90
b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
blByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVO
TElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0g
ICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90
eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdElu
ZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZt
KQogewogICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEq
Pih2bS5jbGllbnREYXRhKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVk
U2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyNjgzMTcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNiBAQCBKU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKGpzVGVzdEluZGV4ZWRTCiAvLyBBdHRyaWJ1dGVzCiAKIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0
b3IpOwotSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RJbmRleGVkU2V0dGVyV2l0
aElkZW50aWZpZXJDb25zdHJ1Y3Rvcik7CiAKIGNsYXNzIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllclByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3Qg
ewogcHVibGljOgpAQCAtMTA4LDcgKzEwNyw3IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZv
IEpTVGVzdEluZGV4ZWQKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewotICAgIHsg
ImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJD
b25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9y
KSB9IH0sCisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgImluZGV4ZWRTZXR0ZXIiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpz
VGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNl
dHRlciksIChpbnRwdHJfdCkgKDIpIH0gfSwKIH07CiAKQEAgLTI2MywxOSArMjYyLDYgQEAgSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdEluZGV4ZWRTZQogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpnZXRDb25zdHJ1Y3Rv
cihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVj
dCgpKSk7CiB9CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RJbmRleGVkU2V0
dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBh
dXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRl
bnRpZmllclByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAg
aWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4g
cHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVG
dW5jdGlvbkluZGV4ZWRTZXR0ZXJCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlv
bjxKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI+OjpDbGFzc1BhcmFtZXRlciBjYXN0
ZWRUaGlzKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAyNjgzMTcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTE2LDcgKzExNiw2IEBAIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJ
T04oanNUZXN0SW50ZXJmYWMKIC8vIEF0dHJpYnV0ZXMKIAogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcik7Ci1KU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKTsKICNpZiBFTkFCTEUoQ29uZGl0aW9u
MjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNU
ZXN0SW50ZXJmYWNlTWl4aW5SZWFkT25seUF0dHJpYnV0ZSk7CiAjZW5kaWYKQEAgLTMwNiw3ICsz
MDUsNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RJbnRlcmZhCiAKIHN0YXRp
YyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVUYWJsZVZhbHVl
c1tdID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0SW50ZXJmYWNlQ29u
c3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgImNvbnN0
cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICNpZiBF
TkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKICAgICB7ICJtaXhpblJl
YWRPbmx5QXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdElu
dGVyZmFjZU1peGluUmVhZE9ubHlBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAjZWxzZQpAQCAtNTI3LDE5ICs1
MjYsNiBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0SW50ZXJmYWNlCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RJbnRlcmZhY2U6OmdldENvbnN0cnVjdG9yKEpTQzo6
Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsK
IH0KIAotSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdEludGVyZmFjZUNvbnN0cnVj
dG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKLXsKLSAgICBWTSYgdm0g
PSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rv
cgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogI2lmIEVO
QUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzVGVzdEludGVyZmFjZU1peGluUmVhZE9ubHlBdHRyaWJ1dGVHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEludGVyZmFjZSYgdGhpc09iamVj
dCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRl
cnNjb3JlLmNwcAkocmV2aXNpb24gMjY4MzE3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogLy8gQXR0
cmlidXRlcwogCiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEludGVyZmFjZUxlYWRp
bmdVbmRlcnNjb3JlQ29uc3RydWN0b3IpOwotSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZUNvbnN0cnVjdG9yKTsKIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVSZWFkb25seSk7
CiAKIGNsYXNzIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlUHJvdG90eXBlIGZpbmFs
IDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CkBAIC0xMDMsNyArMTAyLDcgQEAgdGVt
cGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0SW50ZXJmYQogCiBzdGF0aWMgY29uc3QgSGFz
aFRhYmxlVmFsdWUgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVQcm90b3R5cGVUYWJs
ZVZhbHVlc1tdID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0SW50ZXJm
YWNlTGVhZGluZ1VuZGVyc2NvcmVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEludGVyZmFjZUxlYWRpbmdV
bmRlcnNjb3JlQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7
ICJyZWFkb25seSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RJbnRlcmZh
Y2VMZWFkaW5nVW5kZXJzY29yZVJlYWRvbmx5KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogfTsKIApAQCAtMTY4LDE5ICsxNjcs
NiBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0SW50ZXJmYWNlCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZTo6Z2V0Q29u
c3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9i
YWxPYmplY3QoKSkpOwogfQogCi1KU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0SW50
ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
LSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZUxlYWRp
bmdVbmRlcnNjb3JlUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
LSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJv
cihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJl
dHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0
b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlUmVhZG9ubHlHZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEludGVyZmFjZUxlYWRpbmdV
bmRlcnNjb3JlJiB0aGlzT2JqZWN0KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAJKHJldmlzaW9uIDI2
ODMxNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
dGVyYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDYgQEAgSlNDX0RFQ0xBUkVf
SE9TVF9GVU5DVElPTihqc1Rlc3RJdGVyYWJsZQogLy8gQXR0cmlidXRlcwogCiBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzVGVzdEl0ZXJhYmxlQ29uc3RydWN0b3IpOwotSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RJdGVyYWJsZUNvbnN0cnVjdG9yKTsKIAogY2xhc3MgSlNU
ZXN0SXRlcmFibGVQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0
IHsKIHB1YmxpYzoKQEAgLTExMyw3ICsxMTIsNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5m
byBKU1Rlc3RJdGVyYWJsCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RJdGVy
YWJsZVByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1Rlc3RJdGVyYWJsZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0SXRlcmFibGVDb25zdHJ1Y3Rv
cikgfSB9LAorICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RJdGVyYWJsZUNvbnN0
cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oMCkgfSB9LAogICAgIHsgImVudHJpZXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVu
Y3Rpb25FbnRyaWVzKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgImtleXMiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdEl0
ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25LZXlzKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsg
InZhbHVlcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpG
dW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVG
dW5jdGlvbj4oanNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvblZhbHVlcyksIChpbnRwdHJf
dCkgKDApIH0gfSwKQEAgLTE4MiwxOSArMTgxLDYgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzVGVzdEl0ZXJhYmxlQwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0SXRlcmFi
bGU6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3Rv
dHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTVGVzdEl0ZXJhYmxlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7
Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0
byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJdGVyYWJsZVByb3RvdHlwZSo+KHZt
LCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5
cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5n
IGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKSk7Ci19Ci0KIHN0cnVjdCBUZXN0SXRlcmFibGVJdGVyYXRvclRyYWl0cyB7CiAgICAg
c3RhdGljIGNvbnN0ZXhwciBKU0RPTUl0ZXJhdG9yVHlwZSB0eXBlID0gSlNET01JdGVyYXRvclR5
cGU6OlNldDsKICAgICB1c2luZyBLZXlUeXBlID0gdm9pZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjY4MzE3KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNiBAQCBKU0NfREVDTEFSRV9IT1NU
X0ZVTkNUSU9OKGpzVGVzdEpTQnVpbHRpCiAvLyBBdHRyaWJ1dGVzCiAKIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcik7Ci1KU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3Ry
dWN0b3IpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3RvclRlc3RBdHRyaWJ1dGVDdXN0b20pOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rl
c3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRlc3RBdHRyaWJ1dGVSV0N1c3RvbSk7CiBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0
ZVJXQ3VzdG9tKTsKQEAgLTExMSw3ICsxMTAsNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5m
byBKU1Rlc3RKU0J1aWx0CiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RKU0J1
aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewotICAgIHsgImNvbnN0
cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgImNvbnN0
cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkg
fSB9LAogICAgIHsgInRlc3RBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpCdWls
dGluKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PEJ1aWx0aW5HZW5lcmF0
b3I+KHRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRlc3RBdHRyaWJ1dGVDb2RlR2VuZXJhdG9yKSwg
KGludHB0cl90KSAoc2V0VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZUNvZGVH
ZW5lcmF0b3IpIH0gfSwKICAgICB7ICJ0ZXN0QXR0cmlidXRlQ3VzdG9tIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0
ZUN1c3RvbSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJ0ZXN0QXR0cmlidXRlUldDdXN0b20iLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZVJXQ3VzdG9tKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3JUZXN0QXR0cmlidXRlUldDdXN0b20pIH0gfSwKQEAgLTE4MSwxOSArMTgwLDYgQEAgSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdEpTQnVpbHRpbgogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdG9yKEpTQzo6
Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsK
IH0KIAotSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQotewot
ICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBl
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSo+KHZt
LCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5
cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5n
IGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3RvclRlc3RBdHRyaWJ1dGVDdXN0b21HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yJiB0aGlzT2JqZWN0KQogewog
ICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyNjgzMTcpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFjdG9y
eUZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNiBAQCB1c2luZyBuYW1l
c3BhY2UgSlNDOwogLy8gQXR0cmlidXRlcwogCiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNvbnN0cnVjdG9yKTsKLUpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ29uc3RydWN0b3IpOwogCiBj
bGFzcyBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Qcm90b3R5cGUgZmluYWwgOiBwdWJsaWMg
SlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTE1Myw3ICsxNTIsNyBAQCB0ZW1w
bGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RMZWdhY3lGCiAKIHN0YXRpYyBjb25zdCBIYXNo
VGFibGVWYWx1ZSBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Qcm90b3R5cGVUYWJsZVZhbHVl
c1tdID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0TGVnYWN5RmFjdG9y
eUZ1bmN0aW9uQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Db25zdHJ1
Y3RvcikgfSB9LAorICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RMZWdhY3lGYWN0
b3J5RnVuY3Rpb25Db25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKIH07CiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rl
c3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Qcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RMZWdhY3lG
YWN0b3J5RnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvblByb3RvdHlwZSkgfTsKQEAg
LTIxNywxOSArMjE2LDYgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdExlZ2FjeUZh
YwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9u
OjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5
cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Db25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdExlZ2FjeUZhY3Rv
cnlGdW5jdGlvblByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0g
ICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1
cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9y
LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIEpTQzo6SXNvU3Vic3BhY2Uq
IEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbjo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZt
KQogewogICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEq
Pih2bS5jbGllbnREYXRhKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3ZlcnJp
ZGVCdWlsdElucy5jcHAJKHJldmlzaW9uIDI2ODMxNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNiBAQCBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpz
VGVzdExlZ2FjeU92CiAvLyBBdHRyaWJ1dGVzCiAKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKTsKLUpTQ19ERUNMQVJFX0NV
U1RPTV9TRVRURVIoc2V0SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKTsK
IAogY2xhc3MgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSBmaW5hbCA6IHB1
YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMTEwLDcgKzEwOSw3IEBA
IHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdExlZ2FjeU8KIAogc3RhdGljIGNvbnN0
IEhhc2hUYWJsZVZhbHVlIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGVUYWJs
ZVZhbHVlc1tdID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0TGVnYWN5
T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElu
c0NvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJuYW1lZEl0ZW0i
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24p
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+
KGpzVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGVGdW5jdGlvbk5hbWVkSXRlbSks
IChpbnRwdHJfdCkgKDEpIH0gfSwKIH07CiAKQEAgLTIyNSwxOSArMjI0LDYgQEAgSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzVGVzdExlZ2FjeU92ZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwogfQog
Ci1KU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElu
c0NvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKLXsKLSAg
ICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSo+KHZt
LCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5
cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5n
IGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlRnVuY3Rpb25OYW1lZEl0ZW1Cb2R5KEpTQzo6
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxs
RnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
Pjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2UuY3BwCShyZXZpc2lv
biAyNjgzMTcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TWFwTGlrZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDYgQEAgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTihqc1Rlc3RNYXBMaWtlUAogLy8gQXR0cmlidXRlcwogCiBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdE1hcExpa2VDb25zdHJ1Y3Rvcik7Ci1KU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE1hcExpa2VDb25zdHJ1Y3Rvcik7CiBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzVGVzdE1hcExpa2VTaXplKTsKIAogY2xhc3MgSlNUZXN0TWFwTGlr
ZVByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewpAQCAtMTE5
LDcgKzExOCw3IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE1hcExpa2UKIAog
c3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE1hcExpa2VQcm90b3R5cGVUYWJsZVZh
bHVlc1tdID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0TWFwTGlrZUNv
bnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNUZXN0TWFwTGlrZUNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiY29uc3Ry
dWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE1hcExpa2VDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJz
aXplIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0TWFwTGlrZVNpemUpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0s
CiAgICAgeyAiZ2V0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE1h
cExpa2VQcm90b3R5cGVGdW5jdGlvbkdldCksIChpbnRwdHJfdCkgKDEpIH0gfSwKICAgICB7ICJo
YXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0TWFwTGlrZVByb3Rv
dHlwZUZ1bmN0aW9uSGFzKSwgKGludHB0cl90KSAoMSkgfSB9LApAQCAtMTk5LDE5ICsxOTgsNiBA
QCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0TWFwTGlrZUNvCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU1Rlc3RNYXBMaWtlOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxl
eGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLUpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RNYXBMaWtlQ29uc3RydWN0b3IsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0
Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RNYXBMaWtlUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAg
ICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVy
biBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3Is
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzVGVzdE1hcExpa2VTaXplR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU1Rlc3RNYXBMaWtlJiB0aGlzT2JqZWN0KQogewogICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9u
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAy
NjgzMTcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYz
LDcgKzYzLDYgQEAgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RNYXBMaWtlVwogLy8g
QXR0cmlidXRlcwogCiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdE1hcExpa2VXaXRo
T3ZlcnJpZGRlbk9wZXJhdGlvbnNDb25zdHJ1Y3Rvcik7Ci1KU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNDb25zdHJ1Y3Rvcik7
CiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9w
ZXJhdGlvbnNTZXQpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RNYXBMaWtl
V2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zU2V0KTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc1NpemUpOwpAQCAtMTIxLDcgKzEy
MCw3IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE1hcExpa2UKIAogc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlv
bnNQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc0NvbnN0cnVjdG9yKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNU
ZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc0NvbnN0cnVjdG9yKSB9IH0sCisgICAg
eyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJh
dGlvbnNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJzZXQiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE1hcExpa2VXaXRoT3ZlcnJp
ZGRlbk9wZXJhdGlvbnNTZXQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25z
U2V0KSB9IH0sCiAgICAgeyAic2l6ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNTaXplKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgImNsZWFy
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9u
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9u
Pihqc1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zUHJvdG90eXBlRnVuY3Rpb25D
bGVhciksIChpbnRwdHJfdCkgKDApIH0gfSwKQEAgLTIwMSwxOSArMjAwLDYgQEAgSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzVGVzdE1hcExpa2VXaQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uczo6Z2V0Q29uc3RydWN0b3Io
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3Qo
KSkpOwogfQogCi1KU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0TWFwTGlrZVdpdGhP
dmVycmlkZGVuT3BlcmF0aW9uc0NvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAg
IGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TWFwTGlrZVdpdGhPdmVycmlk
ZGVuT3BlcmF0aW9uc1Byb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJy
b3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICBy
ZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVj
dG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zU2V0R2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJy
aWRkZW5PcGVyYXRpb25zJiB0aGlzT2JqZWN0KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjY4
MzE3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDcgKzQ4LDYgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIC8vIEF0dHJpYnV0ZXMKIAogSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZp
ZXJDb25zdHJ1Y3Rvcik7Ci1KU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKTsKIAogY2xhc3MgSlNUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlIGZpbmFsIDogcHVibGlj
IEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CkBAIC0xMDMsNyArMTAyLDcgQEAgdGVt
cGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRBbgogCiBzdGF0aWMgY29uc3QgSGFz
aFRhYmxlVmFsdWUgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90
eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJj
b25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlm
aWVyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPigwKSB9IH0sCiB9OwogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwg
bnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJO
b0lkZW50aWZpZXJQcm90b3R5cGUpIH07CkBAIC0zMjUsMTkgKzMyNCw2IEBAIEpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc1Rlc3ROYW1lZEFuZEkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllcjo6Z2V0Q29uc3RydWN0b3Io
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3Qo
KSkpOwogfQogCi1KU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9i
amVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0g
ICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlw
ZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0g
ICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25z
dHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiBKU0M6Oklzb1N1
YnNwYWNlKiBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OnN1YnNwYWNl
Rm9ySW1wbChKU0M6OlZNJiB2bSkKIHsKICAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19j
YXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbi5jcHAJKHJldmlzaW9uIDI2ODMxNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDYgQEAgdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIC8vIEF0dHJpYnV0ZXMKIAogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKTsKLUpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb25Db25zdHJ1Y3Rvcik7CiAKIGNsYXNzIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
clRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5h
bE9iamVjdCB7CiBwdWJsaWM6CkBAIC0xMDMsNyArMTAyLDcgQEAgdGVtcGxhdGU8PiBjb25zdCBD
bGFzc0luZm8gSlNUZXN0TmFtZWRBbgogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGVUYWJsZVZh
bHVlc1tdID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJj
b25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb25Db25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKIH07CiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZTo6c19pbmZvID0g
eyAiVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uIiwgJkJhc2U6OnNf
aW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZSkgfTsKQEAgLTMyNSwxOSAr
MzI0LDYgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdE5hbWVkQW5kSQogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb246OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCks
IHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3Ry
dWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQotewotICAgIFZNJiB2
bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3Rv
dHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZ
KCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8g
U2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5w
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYg
dm0pCiB7CiAgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0
YSo+KHZtLmNsaWVudERhdGEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyNjgz
MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
NSw3ICs1NSw2IEBAIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0TmFtZWRBbmQKIC8v
IEF0dHJpYnV0ZXMKIAogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKTsKLUpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJDb25z
dHJ1Y3Rvcik7CiAKIGNsYXNzIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJs
aWM6CkBAIC0xMTAsNyArMTA5LDcgQEAgdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0
TmFtZWRBbgogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKLSAgICB7
ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElk
ZW50aWZpZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3RvciksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwK
ICAgICB7ICJuYW1lZFNldHRlciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0dGVyKSwgKGludHB0cl90KSAoMikgfSB9LAog
ICAgIHsgImluZGV4ZWRTZXR0ZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVkU2V0dGVyKSwgKGludHB0cl90KSAoMikgfSB9
LAogfTsKQEAgLTMzOSwxOSArMzM4LDYgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVz
dE5hbWVkQW5kSQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyV2l0aElkZW50aWZpZXI6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQot
ewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90
eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRp
ZmllclByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYg
KFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJv
dG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3Rv
dHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXJCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJh
dGlvbjxKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj46OkNsYXNzUGFy
YW1ldGVyIGNhc3RlZFRoaXMpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5v
SWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI2ODMxNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAvLyBB
dHRyaWJ1dGVzCiAKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0TmFtZWREZWxldGVy
Tm9JZGVudGlmaWVyQ29uc3RydWN0b3IpOwotSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3Rvcik7CiAKIGNsYXNzIEpTVGVz
dE5hbWVkRGVsZXRlck5vSWRlbnRpZmllclByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpT
Tm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMTAyLDcgKzEwMSw3IEBAIHRlbXBsYXRlPD4g
Y29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkRGUKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZh
bHVlIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllclByb3RvdHlwZVRhYmxlVmFsdWVzW10g
PQogewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3ROYW1lZERlbGV0ZXJOb0lk
ZW50aWZpZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllckNvbnN0
cnVjdG9yKSB9IH0sCisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkRGVs
ZXRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogfTsKIAogY29uc3QgQ2xhc3NJbmZv
IEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllclByb3RvdHlwZTo6c19pbmZvID0geyAiVGVz
dE5hbWVkRGVsZXRlck5vSWRlbnRpZmllciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyUHJv
dG90eXBlKSB9OwpAQCAtMjM3LDE5ICsyMzYsNiBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNUZXN0TmFtZWREZWxlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3ROYW1lZERl
bGV0ZXJOb0lkZW50aWZpZXI6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2Jh
bE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9y
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKLXsKLSAgICBWTSYgdm0gPSBK
U0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1p
biBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsK
LX0KLQogSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyOjpz
dWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCiB7CiAgICAgYXV0byYgY2xpZW50RGF0YSA9ICpz
dGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93
aW5nRXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCShy
ZXZpc2lvbiAyNjgzMTcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Nyw3ICs0Nyw2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAvLyBBdHRyaWJ1dGVzCiAK
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNl
cHRpb25Db25zdHJ1Y3Rvcik7Ci1KU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE5h
bWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3IpOwogCiBjbGFzcyBKU1Rlc3RO
YW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6
OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMTAyLDcgKzEwMSw3IEBAIHRlbXBsYXRl
PD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkRGUKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJs
ZVZhbHVlIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlVGFibGVW
YWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkRGVs
ZXRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3ROYW1lZERlbGV0ZXJUaHJv
d2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0s
CiB9OwogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRp
b25Qcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlv
biIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGUpIH07CkBAIC0yMzcs
MTkgKzIzNiw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3ROYW1lZERlbGUKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0
aW9uOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90
b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZN
KGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAg
ICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNv
bnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQot
CiBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6
c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQogewogICAgIGF1dG8mIGNsaWVudERhdGEgPSAq
c3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRo
SWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcAkocmV2aXNp
b24gMjY4MzE3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIs
NyArNTIsNiBAQCBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE5hbWVkRGVsCiAvLyBB
dHRyaWJ1dGVzCiAKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0TmFtZWREZWxldGVy
V2l0aElkZW50aWZpZXJDb25zdHJ1Y3Rvcik7Ci1KU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3IpOwogCiBjbGFzcyBK
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBK
U0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMTA3LDcgKzEwNiw3IEBAIHRlbXBs
YXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkRGUKIAogc3RhdGljIGNvbnN0IEhhc2hU
YWJsZVZhbHVlIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlVGFibGVW
YWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkRGVs
ZXRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRl
bnRpZmllckNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAi
bmFtZWREZWxldGVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05h
dGl2ZUZ1bmN0aW9uPihqc1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1
bmN0aW9uTmFtZWREZWxldGVyKSwgKGludHB0cl90KSAoMSkgfSB9LAogfTsKIApAQCAtMjQ0LDE5
ICsyNDMsNiBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0TmFtZWREZWxlCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6
Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBl
LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi1KU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNU
ZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkRGVs
ZXRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvcgot
ICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29u
c3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVy
UHJvdG90eXBlRnVuY3Rpb25OYW1lZERlbGV0ZXJCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElE
TE9wZXJhdGlvbjxKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcj46OkNsYXNzUGFyYW1l
dGVyIGNhc3RlZFRoaXMpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9i
YWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVy
V2l0aEluZGV4ZWRHZXR0ZXIuY3BwCShyZXZpc2lvbiAyNjgzMTcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRH
ZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw2IEBAIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiAvLyBBdHRyaWJ1dGVzCiAKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0
TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXJDb25zdHJ1Y3Rvcik7Ci1KU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyQ29uc3Ry
dWN0b3IpOwogCiBjbGFzcyBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlclByb3Rv
dHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAt
MTAzLDcgKzEwMiw3IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkRGUK
IAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRl
eGVkR2V0dGVyUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3Ii
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyQ29uc3RydWN0b3Ip
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlckNvbnN0cnVjdG9yKSB9IH0sCisg
ICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVk
R2V0dGVyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiB9OwogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFt
ZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3ROYW1l
ZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0
ZXJQcm90b3R5cGUpIH07CkBAIC0yNTEsMTkgKzI1MCw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc1Rlc3ROYW1lZERlbGUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE5h
bWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxl
eGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLUpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdl
dHRlckNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKLXsK
LSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlw
ZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90
b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VM
WSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8v
IFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZERl
bGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQogewog
ICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5j
bGllbnREYXRhKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5j
cHAJKHJldmlzaW9uIDI2ODMxNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDcsNyArNDcsNiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogLy8gQXR0cmlidXRlcwogCiBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGhDb25zdHJ1Y3Rv
cik7Ci1KU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdp
dGhDb25zdHJ1Y3Rvcik7CiAKIGNsYXNzIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGhQcm90b3R5
cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTEw
Miw3ICsxMDEsNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZEdlCiAK
IHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoUHJv
dG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGhDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE5hbWVkR2V0dGVyQ2Fs
bFdpdGhDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3ROYW1lZEdldHRlckNhbGxXaXRoQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiB9OwogCiBjb25zdCBDbGFz
c0luZm8gSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aFByb3RvdHlwZTo6c19pbmZvID0geyAiVGVz
dE5hbWVkR2V0dGVyQ2FsbFdpdGgiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGhQcm90b3R5cGUpIH07
CkBAIC0yMTEsMTkgKzIxMCw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3ROYW1l
ZEdldHQKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdp
dGg6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3Rv
dHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGhDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkR2V0dGVy
Q2FsbFdpdGhQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAg
IGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJu
IHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvciwg
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiBKU0M6Oklzb1N1YnNwYWNlKiBK
U1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCiB7
CiAgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZt
LmNsaWVudERhdGEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lk
ZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyNjgzMTcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAvLyBBdHRy
aWJ1dGVzCiAKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0TmFtZWRHZXR0ZXJOb0lk
ZW50aWZpZXJDb25zdHJ1Y3Rvcik7Ci1KU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVz
dE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3IpOwogCiBjbGFzcyBKU1Rlc3ROYW1l
ZEdldHRlck5vSWRlbnRpZmllclByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmlu
YWxPYmplY3QgewogcHVibGljOgpAQCAtMTAyLDcgKzEwMSw3IEBAIHRlbXBsYXRlPD4gY29uc3Qg
Q2xhc3NJbmZvIEpTVGVzdE5hbWVkR2UKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpT
VGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0g
ICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVy
Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSB9
IH0sCisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkR2V0dGVyTm9JZGVu
dGlmaWVyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiB9OwogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFt
ZWRHZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZEdldHRl
ck5vSWRlbnRpZmllciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGUpIH07CkBA
IC0yMTEsMTkgKzIxMCw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3ROYW1lZEdl
dHQKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlm
aWVyOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90
b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGlj
YWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRH
ZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlw
ZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0g
ICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25z
dHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiBKU0M6Oklzb1N1
YnNwYWNlKiBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllcjo6c3Vic3BhY2VGb3JJbXBsKEpT
Qzo6Vk0mIHZtKQogewogICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNs
aWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI2ODMxNykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJ
ZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNiBAQCBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE5hbWVkR2V0CiAvLyBBdHRyaWJ1dGVzCiAKIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVj
dG9yKTsKLUpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0TmFtZWRHZXR0ZXJXaXRo
SWRlbnRpZmllckNvbnN0cnVjdG9yKTsKIAogY2xhc3MgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRl
bnRpZmllclByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3Qgewog
cHVibGljOgpAQCAtMTA3LDcgKzEwNiw3IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpT
VGVzdE5hbWVkR2UKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE5hbWVkR2V0
dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKLSAgICB7ICJjb25z
dHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVj
dG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKSB9IH0sCisg
ICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZp
ZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJnZXR0ZXJOYW1lIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3ROYW1lZEdldHRl
cldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25HZXR0ZXJOYW1lKSwgKGludHB0cl90KSAo
MSkgfSB9LAogfTsKIApAQCAtMjIyLDE5ICsyMjEsNiBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNUZXN0TmFtZWRHZXR0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3ROYW1l
ZEdldHRlcldpdGhJZGVudGlmaWVyOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLUpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyQ29uc3Ry
dWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQotewotICAgIFZNJiB2
bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlKj4odm0sIEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkp
IHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBi
dWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpKTsKLX0KLQogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVk
R2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbkdldHRlck5hbWVCb2R5KEpTQzo6
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxs
RnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlm
aWVyPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI2ODMxNykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRp
Zmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDYgQEAgdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIC8vIEF0dHJpYnV0ZXMKIAogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RO
YW1lZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKTsKLUpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3Rvcik7CiAKIGNs
YXNzIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlIGZpbmFsIDogcHVibGlj
IEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CkBAIC0xMDIsNyArMTAxLDcgQEAgdGVt
cGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZQogCiBzdGF0aWMgY29uc3QgSGFz
aFRhYmxlVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGVUYWJsZVZh
bHVlc1tdID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0TmFtZWRTZXR0
ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVy
Q29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0TmFt
ZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKIH07CiAKIGNvbnN0IENsYXNz
SW5mbyBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlwZTo6c19pbmZvID0geyAi
VGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllclBy
b3RvdHlwZSkgfTsKQEAgLTI4MCwxOSArMjc5LDYgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzVGVzdE5hbWVkU2V0dAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0TmFtZWRT
ZXR0ZXJOb0lkZW50aWZpZXI6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2Jh
bE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3Is
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQotewotICAgIFZNJiB2bSA9IEpT
Qzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAg
ICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4g
Y29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19
Ci0KIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpzdWJz
cGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCiB7CiAgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0
aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkocmV2aXNp
b24gMjY4MzE3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
Nyw3ICs0Nyw2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAvLyBBdHRyaWJ1dGVzCiAKIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNv
bnN0cnVjdG9yKTsKLUpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0TmFtZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKTsKIAogY2xhc3MgSlNUZXN0TmFtZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmlu
YWxPYmplY3QgewogcHVibGljOgpAQCAtMTAyLDcgKzEwMSw3IEBAIHRlbXBsYXRlPD4gY29uc3Qg
Q2xhc3NJbmZvIEpTVGVzdE5hbWVkU2UKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpT
VGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGVUYWJsZVZhbHVlc1tdID0K
IHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0TmFtZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbkNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
bkNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5h
bWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKIH07CiAKIGNvbnN0
IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlOjpz
X2luZm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiIsICZCYXNlOjpzX2lu
Zm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZSkgfTsKQEAgLTI4MCwxOSArMjc5LDYgQEAgSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdE5hbWVkU2V0dAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6Z2V0Q29uc3RydWN0
b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmpl
Y3QoKSkpOwogfQogCi1KU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0TmFtZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAg
IGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvblByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0g
ICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1
cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9y
LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIEpTQzo6SXNvU3Vic3BhY2Uq
IEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OnN1YnNwYWNlRm9ySW1wbChKU0M6
OlZNJiB2bSkKIHsKICAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGll
bnREYXRhKj4odm0uY2xpZW50RGF0YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyNjgzMTcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRl
bnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDYgQEAgSlNDX0RFQ0xBUkVf
SE9TVF9GVU5DVElPTihqc1Rlc3ROYW1lZFNldAogLy8gQXR0cmlidXRlcwogCiBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3Rv
cik7Ci1KU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE5hbWVkU2V0dGVyV2l0aElk
ZW50aWZpZXJDb25zdHJ1Y3Rvcik7CiAKIGNsYXNzIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50
aWZpZXJQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1
YmxpYzoKQEAgLTEwNyw3ICsxMDYsNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rl
c3ROYW1lZFNlCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3ROYW1lZFNldHRl
cldpdGhJZGVudGlmaWVyUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3Ry
dWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3Rv
ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3RvcikgfSB9LAorICAg
IHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVy
Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAibmFtZWRTZXR0ZXIiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE5hbWVkU2V0dGVy
V2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0dGVyKSwgKGludHB0cl90KSAo
MikgfSB9LAogfTsKIApAQCAtMjkxLDE5ICsyOTAsNiBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNUZXN0TmFtZWRTZXR0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3ROYW1l
ZFNldHRlcldpdGhJZGVudGlmaWVyOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLUpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyQ29uc3Ry
dWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQotewotICAgIFZNJiB2
bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlKj4odm0sIEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkp
IHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBi
dWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpKTsKLX0KLQogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVk
U2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0dGVyQm9keShKU0M6
OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2Fs
bEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRp
Zmllcj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAkocmV2aXNpb24gMjY4MzE3KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw2IEBA
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0TmFtZWRTZXQKIC8vIEF0dHJpYnV0ZXMK
IAogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyQ29uc3RydWN0b3IpOwotSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQ29uc3RydWN0b3IpOwogCiBjbGFzcyBKU1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6
SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CkBAIC0xMTAsNyArMTA5LDcgQEAgdGVtcGxhdGU8
PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZQogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxl
VmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZVRhYmxlVmFs
dWVzW10gPQogewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckNvbnN0cnVjdG9yKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAg
IHsgIm5hbWVkU2V0dGVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJh
d05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90
eXBlRnVuY3Rpb25OYW1lZFNldHRlciksIChpbnRwdHJfdCkgKDIpIH0gfSwKICAgICB7ICJpbmRl
eGVkU2V0dGVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2
ZUZ1bmN0aW9uPihqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlRnVu
Y3Rpb25JbmRleGVkU2V0dGVyKSwgKGludHB0cl90KSAoMSkgfSB9LAogfTsKQEAgLTMxNiwxOSAr
MzE1LDYgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdE5hbWVkU2V0dAogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjo6
Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBl
LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi1KU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGlj
YWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93
Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0
b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
PmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyUHJvdG90eXBlRnVuY3Rpb25OYW1lZFNldHRlckJvZHkoSlNDOjpKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5h
bWUgSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI+OjpDbGFz
c1BhcmFtZXRlciBjYXN0ZWRUaGlzKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAJKHJldmlzaW9uIDI2
ODMxNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTUsNyArNTUsNiBAQCBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE5hbWVkU2V0
CiAvLyBBdHRyaWJ1dGVzCiAKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlckNvbnN0cnVjdG9yKTsKLUpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNl
dHRlckNvbnN0cnVjdG9yKTsKIAogY2xhc3MgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdl
dHRlckFuZFNldHRlclByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmpl
Y3QgewogcHVibGljOgpAQCAtMTEwLDcgKzEwOSw3IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJ
bmZvIEpTVGVzdE5hbWVkU2UKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5cGVUYWJsZVZhbHVlc1td
ID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlckFuZFNldHRlckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlckFuZFNldHRlckNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiY29uc3RydWN0
b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJD
b25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJuYW1lZFNldHRlciIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlckFuZFNldHRlclByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXIpLCAo
aW50cHRyX3QpICgyKSB9IH0sCiAgICAgeyAiaW5kZXhlZFNldHRlciIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRl
ciksIChpbnRwdHJfdCkgKDEpIH0gfSwKIH07CkBAIC0zMzksMTkgKzMzOCw2IEBAIEpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3ROYW1lZFNldHQKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI6OmdldENvbnN0
cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFs
T2JqZWN0KCkpKTsKIH0KIAotSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWlu
IGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwot
fQotCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlckFuZFNldHRlclByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXJCb2R5
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1l
KiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRlcldpdGhJ
bmRleGVkR2V0dGVyQW5kU2V0dGVyPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKIHsKICAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnMuY3BwCShyZXZpc2lvbiAyNjgzMTcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVC
dWlsdElucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDYgQEAgdXNpbmcgbmFtZXNw
YWNlIEpTQzsKIC8vIEF0dHJpYnV0ZXMKIAogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IpOwotSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IpOwogCiBjbGFzcyBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25G
aW5hbE9iamVjdCB7CiBwdWJsaWM6CkBAIC0xMDIsNyArMTAxLDcgQEAgdGVtcGxhdGU8PiBjb25z
dCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZQogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZVRhYmxl
VmFsdWVzW10gPQogewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJj
b25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVC
dWlsdEluc0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogfTsKIAogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGU6OnNfaW5mbyA9IHsg
IlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIiwgJkJhc2U6OnNfaW5m
bywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlKSB9OwpAQCAtMjYxLDE5ICsyNjAs
NiBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0TmFtZWRTZXR0CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90
b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3Is
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQotewotICAgIFZNJiB2bSA9IEpT
Qzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlKj4o
dm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3Rv
dHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dp
bmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpKTsKLX0KLQogSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQogewog
ICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5j
bGllbnREYXRhKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuY3BwCShyZXZpc2lv
biAyNjgzMTcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTMsNyArNTMsNiBAQCBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVz
dE5hbWVkU2V0CiAvLyBBdHRyaWJ1dGVzCiAKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3Ip
OwotSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3Rvcik7CiBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1Vu
Zm9yZ2VhYmxlQXR0cmlidXRlKTsKIAogY2xhc3MgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25G
aW5hbE9iamVjdCB7CkBAIC0xMjYsNyArMTI1LDcgQEAgdGVtcGxhdGU8PiBjb25zdCBDbGFzc0lu
Zm8gSlNUZXN0TmFtZWRTZQogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90eXBlVGFibGVWYWx1
ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3IpIH0gfSwKKyAg
ICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiB9OwogCiBjb25zdCBDbGFzc0lu
Zm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90
eXBlOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNQcm90
b3R5cGUpIH07CkBAIC0zMjEsMTkgKzMyMCw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c1Rlc3ROYW1lZFNldHQKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6Z2V0Q29uc3RydWN0b3IoSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwog
fQogCi1KU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAg
ICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNv
bnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQot
CiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzVW5mb3JnZWFibGVBdHRyaWJ1dGVHZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllcyYgdGhpc09iamVjdCkKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkocmV2
aXNpb24gMjY4MzE3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw2IEBAIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0TmFtZWRTZXQKIC8vIEF0dHJpYnV0ZXMKIAog
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IpOwot
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3Ip
OwogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zVW5mb3JnZWFibGVB
dHRyaWJ1dGUpOwogCiBjbGFzcyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlIGZpbmFsIDogcHVi
bGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CkBAIC0xMjYsNyArMTI1LDcgQEAgdGVtcGxhdGU8
PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZQogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxl
VmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewotICAgIHsg
ImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogfTsKIAogY29uc3QgQ2xhc3NJ
bmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlKSB9OwpAQCAtMzAyLDE5ICszMDEsNiBAQCBKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNUZXN0TmFtZWRTZXR0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLUpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAg
ICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVy
biBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3Is
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnNVbmZvcmdlYWJsZUF0dHJpYnV0ZUdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyYgdGhpc09iamVjdCkK
IHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROb2RlLmNwcAkocmV2aXNpb24gMjY4MzE3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3
ICs3MCw2IEBAIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0Tm9kZVByb3QKIC8vIEF0
dHJpYnV0ZXMKIAogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3ROb2RlQ29uc3RydWN0
b3IpOwotSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3ROb2RlQ29uc3RydWN0b3Ip
OwogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3ROb2RlTmFtZSk7CiBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE5vZGVOYW1lKTsKIApAQCAtMTQzLDcgKzE0Miw3IEBA
IHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5vZGVET00KIAogc3RhdGljIGNvbnN0
IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE5vZGVQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKLSAg
ICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0Tm9kZUNvbnN0cnVjdG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0
Tm9kZUNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dE5vZGVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJuYW1lIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3ROb2RlTmFtZSksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVz
dE5vZGVOYW1lKSB9IH0sCiAgICAgeyAidGVzdFdvcmtlclByb21pc2UiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE5vZGVQcm90
b3R5cGVGdW5jdGlvblRlc3RXb3JrZXJQcm9taXNlKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAg
IHsgImNhbGN1bGF0ZVNlY3JldFJlc3VsdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uQ2Fs
Y3VsYXRlU2VjcmV0UmVzdWx0KSwgKGludHB0cl90KSAoMCkgfSB9LApAQCAtMjc1LDE5ICsyNzQs
NiBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0Tm9kZUNvbnN0CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU1Rlc3ROb2RlOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxl
eGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLUpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3ROb2RlQ29uc3RydWN0b3IsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RO
b2RlUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAo
VU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90
b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
VGVzdE5vZGVOYW1lR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U1Rlc3ROb2RlJiB0aGlzT2JqZWN0KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkocmV2aXNpb24gMjY4MzE3KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE2MDIsNyArMTYwMiw2IEBAIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJ
T04oanNUZXN0T2JqUHJvdG8KIC8vIEF0dHJpYnV0ZXMKIAogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc1Rlc3RPYmpDb25zdHJ1Y3Rvcik7Ci1KU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTVGVzdE9iakNvbnN0cnVjdG9yKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0
T2JqUmVhZE9ubHlMb25nQXR0cik7CiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdE9i
alJlYWRPbmx5U3RyaW5nQXR0cik7CiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdE9i
alJlYWRPbmx5VGVzdE9iakF0dHIpOwpAQCAtMjAwOCw3ICsyMDA3LDcgQEAgdGVtcGxhdGU8PiBj
b25zdCBDbGFzc0luZm8gSlNUZXN0T2JqRE9NQwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFs
dWUgSlNUZXN0T2JqUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0
b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqQ29uc3RydWN0b3Ip
IH0gfSwKKyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqQ29uc3RydWN0b3Ip
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigw
KSB9IH0sCiAgICAgeyAicmVhZE9ubHlMb25nQXR0ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3RPYmpSZWFkT25seUxvbmdBdHRyKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgInJlYWRPbmx5
U3RyaW5nQXR0ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpSZWFk
T25seVN0cmluZ0F0dHIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAicmVhZE9ubHlUZXN0T2JqQXR0ciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpSZWFkT25seVRlc3RPYmpBdHRyKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkg
fSB9LApAQCAtMjYwMywxOSArMjYwMiw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rl
c3RPYmpDb25zdHIKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE9iajo6Z2V0Q29u
c3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9i
YWxPYmplY3QoKSkpOwogfQogCi1KU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0T2Jq
Q29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQotewotICAg
IFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVj
dG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiBzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqUmVhZE9ubHlMb25nQXR0ckdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0KQogewog
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3BlcmF0aW9uQ29u
ZGl0aW9uYWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbC5jcHAJKHJldmlzaW9uIDI2ODMx
NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPcGVy
YXRpb25Db25kaXRpb25hbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDYgQEAgSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPcGVyYXRpbwogLy8gQXR0cmlidXRlcwogCiBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsQ29uc3Ry
dWN0b3IpOwotSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RPcGVyYXRpb25Db25k
aXRpb25hbENvbnN0cnVjdG9yKTsKIAogY2xhc3MgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxQ
cm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoK
QEAgLTExMyw3ICsxMTIsNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RPcGVy
YXRpCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPcGVyYXRpb25Db25kaXRp
b25hbFByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T3BlcmF0
aW9uQ29uZGl0aW9uYWxDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgImNvbnN0cnVjdG9yIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogI2lmIEVO
QUJMRShDb25kaXRpb25CYXNlKQogICAgIHsgIm5vbkNvbmRpdGlvbmFsT3BlcmF0aW9uIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rl
c3RPcGVyYXRpb25Db25kaXRpb25hbFByb3RvdHlwZUZ1bmN0aW9uTm9uQ29uZGl0aW9uYWxPcGVy
YXRpb24pLCAoaW50cHRyX3QpICgwKSB9IH0sCiAjZWxzZQpAQCAtMTg3LDE5ICsxODYsNiBAQCBK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0T3BlcmF0aW9uCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbDo6Z2V0Q29uc3RydWN0b3IoSlND
OjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkp
OwogfQogCi1KU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0T3BlcmF0aW9uQ29uZGl0
aW9uYWxDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCi17
Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5
cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsUHJvdG90eXBlKj4o
dm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3Rv
dHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dp
bmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpKTsKLX0KLQogI2lmIEVOQUJMRShDb25kaXRpb25CYXNlKQogc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsUHJvdG90eXBl
RnVuY3Rpb25Ob25Db25kaXRpb25hbE9wZXJhdGlvbkJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUg
SURMT3BlcmF0aW9uPEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsPjo6Q2xhc3NQYXJhbWV0ZXIg
Y2FzdGVkVGhpcykKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycy5jcHAJKHJldmlzaW9uIDI2ODMxNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTEsNyArNTEsNiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogLy8gQXR0cmli
dXRlcwogCiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNDb25zdHJ1Y3Rvcik7Ci1KU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcik7CiAKIGNsYXNzIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2Jq
ZWN0IHsKIHB1YmxpYzoKQEAgLTIyNSw3ICsyMjQsNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNz
SW5mbyBKU1Rlc3RPdmVybG9hCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAi
Y29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1
Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvcikgfSB9LAorICAg
IHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29u
c3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPigwKSB9IH0sCiB9OwogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc1Byb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUpIH07CkBAIC0yODQsMTkgKzI4
Myw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RPdmVybG9hZGUKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmdldENvbnN0
cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFs
T2JqZWN0KCkpKTsKIH0KIAotSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBh
dXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChV
TkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
ICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3Rv
dHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCiB7CiAg
ICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNs
aWVudERhdGEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcAkocmV2aXNpb24gMjY4MzE3KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw2IEBA
IHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAvLyBBdHRyaWJ1dGVzCiAKIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVj
dG9yKTsKLUpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yKTsKIAogY2xhc3MgSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZVByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpT
Tm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMTY0LDcgKzE2Myw3IEBAIHRlbXBsYXRlPD4g
Y29uc3QgQ2xhc3NJbmZvIEpTVGVzdE92ZXJsb2EKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZh
bHVlIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VQcm90b3R5cGVUYWJs
ZVZhbHVlc1tdID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiY29uc3Ry
dWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VD
b25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KDApIH0gfSwKIH07CiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzV2l0aFNlcXVlbmNlUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dp
dGhTZXF1ZW5jZVByb3RvdHlwZSkgfTsKQEAgLTIyMywxOSArMjIyLDYgQEAgSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzVGVzdE92ZXJsb2FkZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTo6Z2V0Q29uc3RydWN0b3Io
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3Qo
KSkpOwogfQogCi1KU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwot
ICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc1dpdGhTZXF1ZW5jZVByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1U
eXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IK
LSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNv
bnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIEpTQzo6SXNv
U3Vic3BhY2UqIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U6OnN1YnNw
YWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKIHsKICAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRp
Y19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0UGx1Z2luSW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMjY4MzE3KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFjZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDYgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIC8vIEF0
dHJpYnV0ZXMKIAogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RQbHVnaW5JbnRlcmZh
Y2VDb25zdHJ1Y3Rvcik7Ci1KU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdFBsdWdp
bkludGVyZmFjZUNvbnN0cnVjdG9yKTsKIAogY2xhc3MgSlNUZXN0UGx1Z2luSW50ZXJmYWNlUHJv
dG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CkBA
IC0xMDEsNyArMTAwLDcgQEAgdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0UGx1Z2lu
SQogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0UGx1Z2luSW50ZXJmYWNlUHJv
dG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdFBsdWdpbkludGVyZmFjZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0UGx1Z2luSW50ZXJmYWNlQ29u
c3RydWN0b3IpIH0gfSwKKyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0UGx1Z2lu
SW50ZXJmYWNlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiB9OwogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0
UGx1Z2luSW50ZXJmYWNlUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0UGx1Z2luSW50ZXJmYWNl
IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U1Rlc3RQbHVnaW5JbnRlcmZhY2VQcm90b3R5cGUpIH07CkBAIC0yMjEsMTkgKzIyMCw2IEBAIEpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RQbHVnaW5JbnQKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTVGVzdFBsdWdpbkludGVyZmFjZTo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwogfQog
Ci1KU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0UGx1Z2luSW50ZXJmYWNlQ29uc3Ry
dWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQotewotICAgIFZNJiB2
bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RQbHVnaW5JbnRlcmZhY2VQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAg
ICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNv
bnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQot
CiBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RQbHVnaW5JbnRlcmZhY2U6OnN1YnNwYWNlRm9ySW1w
bChKU0M6OlZNJiB2bSkKIHsKICAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpT
Vk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcAkocmV2aXNpb24gMjY4MzE3KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw3ICsxMjgsNiBAQCB0ZW1wbGF0ZTw+IFRlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnQ6OkluCiAvLyBBdHRyaWJ1dGVzCiAKIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IpOwotSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25z
dHJ1Y3Rvcik7CiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdFByb21pc2VSZWplY3Rp
b25FdmVudFByb21pc2UpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnRSZWFzb24pOwogCkBAIC0yMDksNyArMjA4LDcgQEAgdGVtcGxhdGU8PiBj
b25zdCBDbGFzc0luZm8gSlNUZXN0UHJvbWlzZQogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFs
dWUgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7
Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVu
dENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IpIH0g
fSwKKyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAicHJvbWlzZSIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnRQcm9taXNlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oMCkgfSB9LAogICAgIHsgInJlYXNvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRSZWFzb24pLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiB9OwpAQCAt
MjY5LDE5ICsyNjgsNiBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0UHJvbWlzZVJl
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6
OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlw
ZS0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9i
YWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50UHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAg
ICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVy
biBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3Is
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb21pc2VHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCYgdGhp
c09iamVjdCkKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFJlYWRPbmx5TWFwTGlrZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5TWFwTGlrZS5jcHAJKHJldmlzaW9uIDI2
ODMxNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RS
ZWFkT25seU1hcExpa2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw2IEBAIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0UmVhZE9ubHkKIC8vIEF0dHJpYnV0ZXMKIAogSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RSZWFkT25seU1hcExpa2VDb25zdHJ1Y3Rvcik7
Ci1KU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdFJlYWRPbmx5TWFwTGlrZUNvbnN0
cnVjdG9yKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0UmVhZE9ubHlNYXBMaWtl
U2l6ZSk7CiAKIGNsYXNzIEpTVGVzdFJlYWRPbmx5TWFwTGlrZVByb3RvdHlwZSBmaW5hbCA6IHB1
YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewpAQCAtMTE2LDcgKzExNSw3IEBAIHRlbXBsYXRl
PD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFJlYWRPbmwKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJs
ZVZhbHVlIEpTVGVzdFJlYWRPbmx5TWFwTGlrZVByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewot
ICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RSZWFkT25seU1hcExpa2VDb25zdHJ1
Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTVGVzdFJlYWRPbmx5TWFwTGlrZUNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiY29u
c3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFJlYWRPbmx5TWFwTGlrZUNvbnN0cnVjdG9yKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9
LAogICAgIHsgInNpemUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RSZWFkT25s
eU1hcExpa2VTaXplKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgImdldCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2
ZUZ1bmN0aW9uPihqc1Rlc3RSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkdldCksIChp
bnRwdHJfdCkgKDEpIH0gfSwKICAgICB7ICJoYXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpG
dW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVG
dW5jdGlvbj4oanNUZXN0UmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25IYXMpLCAoaW50
cHRyX3QpICgxKSB9IH0sCkBAIC0xOTMsMTkgKzE5Miw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc1Rlc3RSZWFkT25seU0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdFJl
YWRPbmx5TWFwTGlrZTo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2Jq
ZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi1KU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNUZXN0UmVhZE9ubHlNYXBMaWtlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4
aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RSZWFk
T25seU1hcExpa2VQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwot
ICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9y
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0
dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rv
ciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiBzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0UmVhZE9ubHlNYXBMaWtlU2l6ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0UmVhZE9ubHlNYXBMaWtlJiB0aGlzT2JqZWN0KQogewog
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlTZXRM
aWtlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0UmVhZE9ubHlTZXRMaWtlLmNwcAkocmV2aXNpb24gMjY4MzE3KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5U2V0TGlr
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDYgQEAgSlNDX0RFQ0xBUkVfSE9TVF9G
VU5DVElPTihqc1Rlc3RSZWFkT25seQogLy8gQXR0cmlidXRlcwogCiBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzVGVzdFJlYWRPbmx5U2V0TGlrZUNvbnN0cnVjdG9yKTsKLUpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0UmVhZE9ubHlTZXRMaWtlQ29uc3RydWN0b3IpOwogSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RSZWFkT25seVNldExpa2VTaXplKTsKIAogY2xh
c3MgSlNUZXN0UmVhZE9ubHlTZXRMaWtlUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNO
b25GaW5hbE9iamVjdCB7CkBAIC0xMTUsNyArMTE0LDcgQEAgdGVtcGxhdGU8PiBjb25zdCBDbGFz
c0luZm8gSlNUZXN0UmVhZE9ubAogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0
UmVhZE9ubHlTZXRMaWtlUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3Ry
dWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFJlYWRPbmx5U2V0TGlrZUNvbnN0cnVjdG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0
UmVhZE9ubHlTZXRMaWtlQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0UmVhZE9ubHlTZXRMaWtlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAic2l6
ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFJlYWRPbmx5U2V0TGlrZVNpemUp
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigw
KSB9IH0sCiAgICAgeyAiaGFzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpz
VGVzdFJlYWRPbmx5U2V0TGlrZVByb3RvdHlwZUZ1bmN0aW9uSGFzKSwgKGludHB0cl90KSAoMSkg
fSB9LAogICAgIHsgImVudHJpZXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4o
anNUZXN0UmVhZE9ubHlTZXRMaWtlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzKSwgKGludHB0cl90
KSAoMCkgfSB9LApAQCAtMTkxLDE5ICsxOTAsNiBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNUZXN0UmVhZE9ubHlTCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RSZWFkT25s
eVNldExpa2U6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCks
IHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTVGVzdFJlYWRPbmx5U2V0TGlrZUNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0UmVhZE9ubHlT
ZXRMaWtlUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBp
ZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBw
cm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzVGVzdFJlYWRPbmx5U2V0TGlrZVNpemVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTVGVzdFJlYWRPbmx5U2V0TGlrZSYgdGhpc09iamVjdCkKIHsKICAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlcG9ydEV4dHJhTWVtb3J5
Q29zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdC5jcHAJKHJldmlzaW9uIDI2ODMxNykK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZXBvcnRF
eHRyYU1lbW9yeUNvc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw2IEBAIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CiAvLyBBdHRyaWJ1dGVzCiAKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0Q29uc3RydWN0b3IpOwotSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3RDb25zdHJ1Y3Rvcik7
CiAKIGNsYXNzIEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdFByb3RvdHlwZSBmaW5hbCA6IHB1
YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMTAwLDcgKzk5LDcgQEAg
dGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0UmVwb3J0RQogCiBzdGF0aWMgY29uc3Qg
SGFzaFRhYmxlVmFsdWUgSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0UHJvdG90eXBlVGFibGVW
YWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFJlcG9ydEV4
dHJhTWVtb3J5Q29zdENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0Q29u
c3RydWN0b3IpIH0gfSwKKyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0UmVwb3J0
RXh0cmFNZW1vcnlDb3N0Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiB9OwogCiBjb25zdCBDbGFzc0luZm8g
SlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0UHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0UmVw
b3J0RXh0cmFNZW1vcnlDb3N0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3RQcm90b3R5cGUpIH07
CkBAIC0xNjAsMTkgKzE1OSw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RSZXBv
cnRFeHQKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5
Q29zdDo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJv
dG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi1KU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0Q29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RSZXBvcnRF
eHRyYU1lbW9yeUNvc3RQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVy
cm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAg
cmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1
Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiBKU0M6Oklzb1N1YnNw
YWNlKiBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3Q6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZN
JiB2bSkKIHsKICAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnRE
YXRhKj4odm0uY2xpZW50RGF0YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMjY4MzE3KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDYgQEAg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RTZXJpYWxpegogLy8gQXR0cmlidXRlcwog
CiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZUNvbnN0cnVjdG9yKTsKLUpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IpOwogSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWYWx1ZSk7
CiBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZVZhbHVlKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUmVhZG9ubHlWYWx1ZSk7CkBAIC0xMjQsNyArMTIzLDcg
QEAgdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0U2VyaWFsaQogCiBzdGF0aWMgY29u
c3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJv
dG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJjb25z
dHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29u
c3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPigwKSB9IH0sCiAgICAgeyAidmFsdWUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZVZhbHVlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVmFsdWUp
IH0gfSwKICAgICB7ICJyZWFkb25seVZhbHVlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVJlYWRvbmx5VmFsdWUpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9
IH0sCiAgICAgeyAiY2FjaGVkVmFsdWUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZUNhY2hlZFZhbHVlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ2FjaGVk
VmFsdWUpIH0gfSwKQEAgLTIwMCwxOSArMTk5LDYgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzVGVzdFNlcmlhbGl6ZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGlj
YWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLUpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2VDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCi17Ci0g
ICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3Rv
dHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZ
KCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8g
U2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5w
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWYWx1ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlJiB0
aGlzT2JqZWN0KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U2V0TGlrZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2UuY3BwCShyZXZpc2lvbiAyNjgzMTcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDYgQEAgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihq
c1Rlc3RTZXRMaWtlUAogLy8gQXR0cmlidXRlcwogCiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzVGVzdFNldExpa2VDb25zdHJ1Y3Rvcik7Ci1KU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTVGVzdFNldExpa2VDb25zdHJ1Y3Rvcik7CiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
VGVzdFNldExpa2VTaXplKTsKIAogY2xhc3MgSlNUZXN0U2V0TGlrZVByb3RvdHlwZSBmaW5hbCA6
IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewpAQCAtMTE4LDcgKzExNyw3IEBAIHRlbXBs
YXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFNldExpa2UKIAogc3RhdGljIGNvbnN0IEhhc2hU
YWJsZVZhbHVlIEpTVGVzdFNldExpa2VQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKLSAgICB7
ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0U2V0TGlrZUNvbnN0cnVjdG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0
U2V0TGlrZUNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdFNldExpa2VDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJzaXplIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0U2V0TGlrZVNpemUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAiaGFzIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdFNldExpa2VQcm90b3R5cGVGdW5j
dGlvbkhhcyksIChpbnRwdHJfdCkgKDEpIH0gfSwKICAgICB7ICJlbnRyaWVzIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdFNldExpa2VQcm90b3R5cGVGdW5jdGlvbkVu
dHJpZXMpLCAoaW50cHRyX3QpICgwKSB9IH0sCkBAIC0xOTcsMTkgKzE5Niw2IEBAIEpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RTZXRMaWtlQ28KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTVGVzdFNldExpa2U6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2Jh
bE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTVGVzdFNldExpa2VDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNldExpa2VQ
cm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJ
S0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAg
IC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlw
ZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0
U2V0TGlrZVNpemVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
VGVzdFNldExpa2UmIHRoaXNPYmplY3QpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDI2ODMxNykKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlV2l0
aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNiBA
QCBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdFNldExpa2VXCiAvLyBBdHRyaWJ1dGVz
CiAKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVu
T3BlcmF0aW9uc0NvbnN0cnVjdG9yKTsKLUpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNU
ZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc0NvbnN0cnVjdG9yKTsKIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc0Fk
ZCk7CiBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdFNldExpa2VXaXRoT3ZlcnJp
ZGRlbk9wZXJhdGlvbnNBZGQpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RTZXRM
aWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zU2l6ZSk7CkBAIC0xMjAsNyArMTE5LDcgQEAgdGVt
cGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0U2V0TGlrZQogCiBzdGF0aWMgY29uc3QgSGFz
aFRhYmxlVmFsdWUgSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc1Byb3RvdHlw
ZVRhYmxlVmFsdWVzW10gPQogewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RT
ZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RTZXRMaWtl
V2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJjb25zdHJ1
Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc0NvbnN0
cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oMCkgfSB9LAogICAgIHsgImFkZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0
aW9uc0FkZCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNBZGQpIH0gfSwK
ICAgICB7ICJzaXplIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0U2V0TGlrZVdp
dGhPdmVycmlkZGVuT3BlcmF0aW9uc1NpemUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAiZGVsZXRlIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RT
ZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zUHJvdG90eXBlRnVuY3Rpb25EZWxldGUpLCAo
aW50cHRyX3QpICgwKSB9IH0sCkBAIC0xOTksMTkgKzE5OCw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc1Rlc3RTZXRMaWtlV2kKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVz
dFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0
Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0K
IAotSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRl
bk9wZXJhdGlvbnNDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBw
cm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJh
dGlvbnNQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlm
IChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHBy
b3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc0FkZEdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3Bl
cmF0aW9ucyYgdGhpc09iamVjdCkKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwCShyZXZpc2lv
biAyNjgzMTcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U3RyaW5naWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw2IEBAIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0U3RyaW5naWYKIC8vIEF0dHJpYnV0ZXMKIAogSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RTdHJpbmdpZmllckNvbnN0cnVjdG9yKTsKLUpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0U3RyaW5naWZpZXJDb25zdHJ1Y3Rvcik7
CiAKIGNsYXNzIEpTVGVzdFN0cmluZ2lmaWVyUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6
SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CkBAIC0xMDYsNyArMTA1LDcgQEAgdGVtcGxhdGU8
PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0U3RyaW5naQogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxl
VmFsdWUgSlNUZXN0U3RyaW5naWZpZXJQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKLSAgICB7
ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0U3RyaW5naWZpZXJDb25zdHJ1Y3RvciksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
VGVzdFN0cmluZ2lmaWVyQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0U3RyaW5naWZpZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJ0b1N0cmlu
ZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlv
biksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlv
bj4oanNUZXN0U3RyaW5naWZpZXJQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKSwgKGludHB0cl90
KSAoMCkgfSB9LAogfTsKIApAQCAtMTcxLDE5ICsxNzAsNiBAQCBKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNUZXN0U3RyaW5naWZpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RT
dHJpbmdpZmllcjo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0
KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi1KU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNUZXN0U3RyaW5naWZpZXJDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFN0cmluZ2lmaWVy
UHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5M
SUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAg
ICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5
cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdFN0cmluZ2lmaWVyUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZ0JvZHkoSlND
OjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdFN0cmluZ2lmaWVyPjo6Q2xhc3NQ
YXJhbWV0ZXIgY2FzdGVkVGhpcykKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdp
ZmllckFub255bW91c09wZXJhdGlvbi5jcHAJKHJldmlzaW9uIDI2ODMxNykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91
c09wZXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDYgQEAgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTihqc1Rlc3RTdHJpbmdpZgogLy8gQXR0cmlidXRlcwogCiBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uQ29u
c3RydWN0b3IpOwotSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RTdHJpbmdpZmll
ckFub255bW91c09wZXJhdGlvbkNvbnN0cnVjdG9yKTsKIAogY2xhc3MgSlNUZXN0U3RyaW5naWZp
ZXJBbm9ueW1vdXNPcGVyYXRpb25Qcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZp
bmFsT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTEwNiw3ICsxMDUsNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0
IENsYXNzSW5mbyBKU1Rlc3RTdHJpbmdpCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBK
U1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvblByb3RvdHlwZVRhYmxlVmFsdWVzW10g
PQogewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RTdHJpbmdpZmllckFub255
bW91c09wZXJhdGlvbkNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVy
YXRpb25Db25zdHJ1Y3RvcikgfSB9LAorICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbkNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsg
InRvU3RyaW5nIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2
ZUZ1bmN0aW9uPihqc1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvblByb3RvdHlwZUZ1
bmN0aW9uVG9TdHJpbmcpLCAoaW50cHRyX3QpICgwKSB9IH0sCiB9OwogCkBAIC0xNzEsMTkgKzE3
MCw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RTdHJpbmdpZmkKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uOjpn
ZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUt
Pmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rl
c3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbkNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGlj
YWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U3RyaW5n
aWZpZXJBbm9ueW1vdXNPcGVyYXRpb25Qcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVj
dG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNP
cGVyYXRpb25Qcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFt
ZSBJRExPcGVyYXRpb248SlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24+OjpDbGFz
c1BhcmFtZXRlciBjYXN0ZWRUaGlzKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZp
ZXJOYW1lZE9wZXJhdGlvbi5jcHAJKHJldmlzaW9uIDI2ODMxNykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNiBAQCBKU0NfREVDTEFSRV9IT1NUX0ZV
TkNUSU9OKGpzVGVzdFN0cmluZ2lmCiAvLyBBdHRyaWJ1dGVzCiAKIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbkNvbnN0cnVjdG9yKTsKLUpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlv
bkNvbnN0cnVjdG9yKTsKIAogY2xhc3MgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvblBy
b3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpA
QCAtMTA3LDcgKzEwNiw3IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFN0cmlu
Z2kKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRP
cGVyYXRpb25Qcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbkNvbnN0cnVjdG9yKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNU
ZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbkNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiY29u
c3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Db25zdHJ1
Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KDApIH0gfSwKICAgICB7ICJpZGVudGlmaWVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RTdHJpbmdpZmllck5hbWVkT3Bl
cmF0aW9uUHJvdG90eXBlRnVuY3Rpb25JZGVudGlmaWVyKSwgKGludHB0cl90KSAoMCkgfSB9LAog
ICAgIHsgInRvU3RyaW5nIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJh
d05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uUHJvdG90eXBl
RnVuY3Rpb25Ub1N0cmluZyksIChpbnRwdHJfdCkgKDApIH0gfSwKIH07CkBAIC0xNzMsMTkgKzE3
Miw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RTdHJpbmdpZmkKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb246OmdldENv
bnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xv
YmFsT2JqZWN0KCkpKTsKIH0KIAotSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdFN0
cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Db25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
LSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFN0cmluZ2lmaWVyTmFt
ZWRPcGVyYXRpb25Qcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwot
ICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9y
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0
dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rv
ciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvblByb3RvdHlw
ZUZ1bmN0aW9uSWRlbnRpZmllckJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9u
PEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRU
aGlzKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJp
bmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlv
bkltcGxlbWVudGVkQXMuY3BwCShyZXZpc2lvbiAyNjgzMTcpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1l
bnRlZEFzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNiBAQCBKU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKGpzVGVzdFN0cmluZ2lmCiAvLyBBdHRyaWJ1dGVzCiAKIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzQ29u
c3RydWN0b3IpOwotSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RTdHJpbmdpZmll
ck9wZXJhdGlvbkltcGxlbWVudGVkQXNDb25zdHJ1Y3Rvcik7CiAKIGNsYXNzIEpTVGVzdFN0cmlu
Z2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6
OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMTA3LDcgKzEwNiw3IEBAIHRlbXBsYXRl
PD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFN0cmluZ2kKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJs
ZVZhbHVlIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlwZVRh
YmxlVmFsdWVzW10gPQogewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RTdHJp
bmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdFN0cmluZ2lm
aWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc0NvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiY29uc3Ry
dWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc0Nv
bnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oMCkgfSB9LAogICAgIHsgImlkZW50aWZpZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdFN0cmluZ2lmaWVyT3Bl
cmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlwZUZ1bmN0aW9uSWRlbnRpZmllciksIChpbnRwdHJf
dCkgKDApIH0gfSwKICAgICB7ICJ0b1N0cmluZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25J
bXBsZW1lbnRlZEFzUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyksIChpbnRwdHJfdCkgKDApIH0g
fSwKIH07CkBAIC0xNzMsMTkgKzE3Miw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rl
c3RTdHJpbmdpZmkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdFN0cmluZ2lmaWVy
T3BlcmF0aW9uSW1wbGVtZW50ZWRBczo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi1KU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRl
ZEFzQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQotewot
ICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBl
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQ
cm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJ
S0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAg
IC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlw
ZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eXBlRnVu
Y3Rpb25JZGVudGlmaWVyQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNU
ZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzPjo6Q2xhc3NQYXJhbWV0ZXIgY2Fz
dGVkVGhpcykKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVj
dCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVy
YXRpb25OYW1lZFRvU3RyaW5nLmNwcAkocmV2aXNpb24gMjY4MzE3KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFt
ZWRUb1N0cmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDYgQEAgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTihqc1Rlc3RTdHJpbmdpZgogLy8gQXR0cmlidXRlcwogCiBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmlu
Z0NvbnN0cnVjdG9yKTsKLUpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0U3RyaW5n
aWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nQ29uc3RydWN0b3IpOwogCiBjbGFzcyBKU1Rlc3RT
dHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMg
SlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTEwNiw3ICsxMDUsNyBAQCB0ZW1w
bGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RTdHJpbmdpCiAKIHN0YXRpYyBjb25zdCBIYXNo
VGFibGVWYWx1ZSBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdQcm90b3R5
cGVUYWJsZVZhbHVlc1tdID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nQ29uc3RydWN0b3IpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RTdHJp
bmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgImNv
bnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJp
bmdDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJ0b1N0cmluZyIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0U3RyaW5naWZpZXJP
cGVyYXRpb25OYW1lZFRvU3RyaW5nUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyksIChpbnRwdHJf
dCkgKDApIH0gfSwKIH07CiAKQEAgLTE3MSwxOSArMTcwLDYgQEAgSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzVGVzdFN0cmluZ2lmaQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0
U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nOjpnZXRDb25zdHJ1Y3RvcihKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9
CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlv
bk5hbWVkVG9TdHJpbmdDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
LSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRv
KiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFt
ZWRUb1N0cmluZ1Byb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0g
ICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1
cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9y
LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdQ
cm90b3R5cGVGdW5jdGlvblRvU3RyaW5nQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVy
YXRpb248SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nPjo6Q2xhc3NQYXJh
bWV0ZXIgY2FzdGVkVGhpcykKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEds
b2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVy
UmVhZE9ubHlBdHRyaWJ1dGUuY3BwCShyZXZpc2lvbiAyNjgzMTcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJp
YnV0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDYgQEAgSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTihqc1Rlc3RTdHJpbmdpZgogLy8gQXR0cmlidXRlcwogCiBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVDb25zdHJ1Y3Rv
cik7Ci1KU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9u
bHlBdHRyaWJ1dGVDb25zdHJ1Y3Rvcik7CiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVz
dFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVJZGVudGlmaWVyKTsKIAogY2xhc3MgSlNUZXN0
U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZVByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6
OkpTTm9uRmluYWxPYmplY3QgewpAQCAtMTA4LDcgKzEwNyw3IEBAIHRlbXBsYXRlPD4gY29uc3Qg
Q2xhc3NJbmZvIEpTVGVzdFN0cmluZ2kKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpT
VGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0K
IHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0U3RyaW5naWZpZXJSZWFkT25s
eUF0dHJpYnV0ZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0
ZUNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFN0
cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJpZGVu
dGlmaWVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFN0cmluZ2lmaWVy
UmVhZE9ubHlBdHRyaWJ1dGVJZGVudGlmaWVyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgInRvU3RyaW5nIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rl
c3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyks
IChpbnRwdHJfdCkgKDApIH0gfSwKIH07CkBAIC0xNzksMTkgKzE3OCw2IEBAIEpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc1Rlc3RTdHJpbmdpZmkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGU6OmdldENvbnN0cnVjdG9yKEpTQzo6
Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsK
IH0KIAotSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9u
bHlBdHRyaWJ1dGVDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBw
cm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1
dGVQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChV
TkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
ICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3Rv
dHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZUlkZW50aWZpZXJHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRy
aWJ1dGUmIHRoaXNPYmplY3QpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lm
aWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAkocmV2aXNpb24gMjY4MzE3KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRl
QXR0cmlidXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNiBAQCBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKGpzVGVzdFN0cmluZ2lmCiAvLyBBdHRyaWJ1dGVzCiAKIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVDb25z
dHJ1Y3Rvcik7Ci1KU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdFN0cmluZ2lmaWVy
UmVhZFdyaXRlQXR0cmlidXRlQ29uc3RydWN0b3IpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZUlkZW50aWZpZXIpOwogSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0
ZUlkZW50aWZpZXIpOwogCkBAIC0xMDksNyArMTA4LDcgQEAgdGVtcGxhdGU8PiBjb25zdCBDbGFz
c0luZm8gSlNUZXN0U3RyaW5naQogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0
U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsK
LSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVB
dHRyaWJ1dGVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRl
Q29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0U3Ry
aW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJpZGVu
dGlmaWVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZUlkZW50aWZpZXIpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rl
c3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZUlkZW50aWZpZXIpIH0gfSwKICAgICB7ICJ0
b1N0cmluZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpG
dW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVG
dW5jdGlvbj4oanNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVQcm90b3R5cGVGdW5j
dGlvblRvU3RyaW5nKSwgKGludHB0cl90KSAoMCkgfSB9LAogfTsKQEAgLTE4MCwxOSArMTc5LDYg
QEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdFN0cmluZ2lmaQogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGU6OmdldENv
bnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xv
YmFsT2JqZWN0KCkpKTsKIH0KIAotSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdFN0
cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEds
b2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RTdHJpbmdpZmll
clJlYWRXcml0ZUF0dHJpYnV0ZVByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1U
eXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IK
LSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNv
bnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIHN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZUlkZW50aWZp
ZXJHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdFN0cmlu
Z2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlJiB0aGlzT2JqZWN0KQogewogICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5j
cHAJKHJldmlzaW9uIDI2ODMxNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDcgKzg0LDYg
QEAgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RUeXBlZGVmcwogLy8gQXR0cmlidXRl
cwogCiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdFR5cGVkZWZzQ29uc3RydWN0b3Ip
OwotSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9y
KTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0VHlwZWRlZnNVbnNpZ25lZExvbmdM
b25nQXR0cik7CiBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdFR5cGVkZWZzVW5z
aWduZWRMb25nTG9uZ0F0dHIpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RUeXBl
ZGVmc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7CkBAIC0yMDIsNyArMjAxLDcgQEAgdGVtcGxhdGU8
PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0VHlwZWRlZgogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxl
VmFsdWUgSlNUZXN0VHlwZWRlZnNQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKLSAgICB7ICJj
b25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvciksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdFR5
cGVkZWZzQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNU
ZXN0VHlwZWRlZnNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJ1bnNpZ25lZExvbmdMb25nQXR0
ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNUZXN0VHlwZWRlZnNVbnNpZ25lZExvbmdMb25nQXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdFR5cGVkZWZzVW5zaWdu
ZWRMb25nTG9uZ0F0dHIpIH0gfSwKICAgICB7ICJzZXJpYWxpemVkU2NyaXB0VmFsdWUiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFR5
cGVkZWZzU2VyaWFsaXplZFNjcmlwdFZhbHVlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0VHlwZWRlZnNTZXJpYWxpemVkU2Ny
aXB0VmFsdWUpIH0gfSwKICAgICB7ICJhdHRyaWJ1dGVXaXRoQ2xhbXAiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFR5cGVkZWZzQXR0
cmlidXRlV2l0aENsYW1wKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0VHlwZWRlZnNBdHRyaWJ1dGVXaXRoQ2xhbXApIH0gfSwK
QEAgLTI5MiwxOSArMjkxLDYgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdFR5cGVk
ZWZzQwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0VHlwZWRlZnM6OmdldENvbnN0
cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFs
T2JqZWN0KCkpKTsKIH0KIAotSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdFR5cGVk
ZWZzQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQotewot
ICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBl
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAg
ICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4g
Y29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19
Ci0KIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Vuc2lnbmVkTG9uZ0xvbmdB
dHRyR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RUeXBl
ZGVmcyYgdGhpc09iamVjdCkKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTV29ya2VyR2xvYmFsU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtlckdsb2JhbFNjb3BlLmNwcAkocmV2aXNp
b24gMjY4MzE3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
V29ya2VyR2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw2IEBAIHVz
aW5nIG5hbWVzcGFjZSBKU0M7CiAvLyBBdHRyaWJ1dGVzCiAKIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yKTsKLUpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yKTsKIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNXb3JrZXJHbG9iYWxTY29wZUV4cG9zZWRUb1dvcmtlckFuZFdpbmRv
d0NvbnN0cnVjdG9yKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNXb3JrZXJHbG9i
YWxTY29wZUV4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0NvbnN0cnVjdG9yKTsKIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNXb3JrZXJHbG9iYWxTY29wZVRlc3REZWZhdWx0VG9KU09ORmlsdGVy
ZWRCeUV4cG9zZWRDb25zdHJ1Y3Rvcik7CkBAIC0xMjcsNyArMTI2LDcgQEAgc3RhdGljIGNvbnN0
IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFs
dWUgSlNXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewotICAgIHsg
ImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1dvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U1dvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJjb25zdHJ1Y3RvciIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogfTsKIAogc3Rh
dGljIGNvbnN0IEhhc2hUYWJsZSBKU1dvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlVGFibGUgPSB7
IDEsIDEsIHRydWUsIEpTV29ya2VyR2xvYmFsU2NvcGU6OmluZm8oKSwgSlNXb3JrZXJHbG9iYWxT
Y29wZVByb3RvdHlwZVRhYmxlVmFsdWVzLCBKU1dvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlVGFi
bGVJbmRleCB9OwpAQCAtMTg1LDE5ICsxODQsNiBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNXb3JrZXJHbG9iYWxTCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1dvcmtlckdsb2Jh
bFNjb3BlOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBw
cm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU1dvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1dvcmtlckdsb2JhbFNjb3Bl
UHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5M
SUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAg
ICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5
cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzV29y
a2VyR2xvYmFsU2NvcGVFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dDb25zdHJ1Y3RvckdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNXb3JrZXJHbG9iYWxTY29wZSYg
dGhpc09iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrbGV0R2xv
YmFsU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1dvcmtsZXRHbG9iYWxTY29wZS5jcHAJKHJldmlzaW9uIDI2ODMxNykKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRHbG9iYWxT
Y29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDYgQEAgdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIC8vIEF0dHJpYnV0ZXMKIAogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1dvcmts
ZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yKTsKLUpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcik7CiBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzV29ya2xldEdsb2JhbFNjb3BlV29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3IpOwog
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1dvcmtsZXRHbG9iYWxTY29wZVdvcmtsZXRH
bG9iYWxTY29wZUNvbnN0cnVjdG9yKTsKIApAQCAtOTEsNyArOTAsNyBAQCBzdGF0aWMgY29uc3Qg
c3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNXCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1
ZSBKU1dvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewotICAgIHsg
ImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgImNvbnN0cnVjdG9y
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogfTsKIAog
c3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1dvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlwZVRhYmxl
ID0geyAxLCAxLCB0cnVlLCBKU1dvcmtsZXRHbG9iYWxTY29wZTo6aW5mbygpLCBKU1dvcmtsZXRH
bG9iYWxTY29wZVByb3RvdHlwZVRhYmxlVmFsdWVzLCBKU1dvcmtsZXRHbG9iYWxTY29wZVByb3Rv
dHlwZVRhYmxlSW5kZXggfTsKQEAgLTE0OSwxOSArMTQ4LDYgQEAgSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzV29ya2xldEdsb2JhbAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNXb3Jr
bGV0R2xvYmFsU2NvcGU6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9i
amVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTV29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4
aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1dvcmtsZXRH
bG9iYWxTY29wZVByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0g
ICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1
cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9y
LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1dvcmtsZXRHbG9iYWxTY29wZVdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1dvcmtsZXRHbG9iYWxT
Y29wZSYgdGhpc09iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVj
dCk7CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2ODMxNykK
KysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxMyBAQAorMjAyMC0xMC0xMSAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBn
bWFpbC5jb20+CisKKyAgICAgICAgW1dlYklETF0gJUludGVyZmFjZSUucHJvdG90eXBlLmNvbnN0
cnVjdG9yIHNob3VsZCBiZSBkZWZpbmVkIG9uIFtbU2V0XV0gcmVjZWl2ZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjUzMworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvaW50ZXJmYWNlLXByb3RvdHlwZS1jb25zdHJ1Y3Rv
ci1zZXQtcmVjZWl2ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9pbnRlcmZhY2UtcHJvdG90eXBlLWNv
bnN0cnVjdG9yLXNldC1yZWNlaXZlci5odG1sOiBBZGRlZC4KKwogMjAyMC0xMC0xMCAgRGFyaW4g
QWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgcmVwbGFjZUNoaWxkcmVuKCkgKHdp
dGggbm8gYXJndW1lbnRzKSBzaWxlbnRseSBkb2VzIG5vdGhpbmcgcmF0aGVyIHRoYW4gcmVtb3Zp
bmcgdGhlIGNoaWxkcmVuCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvaW50ZXJmYWNlLXByb3RvdHlwZS1j
b25zdHJ1Y3Rvci1zZXQtcmVjZWl2ZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQt
YmluZGluZy9pbnRlcmZhY2UtcHJvdG90eXBlLWNvbnN0cnVjdG9yLXNldC1yZWNlaXZlci1leHBl
Y3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2ludGVyZmFjZS1wcm90b3R5
cGUtY29uc3RydWN0b3Itc2V0LXJlY2VpdmVyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDQgQEAKKworUEFTUyBXaW5kb3csIExvY2F0aW9uLCBOYXZpZ2F0b3IsIEhUTUxE
b2N1bWVudCwgYW5kIEhUTUxIZWFkRWxlbWVudAorUEFTUyBBbGwgd2luZG93LiogY29uc3RydWN0
b3JzCisKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
V2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9pbnRlcmZhY2UtcHJvdG90eXBlLWNvbnN0cnVjdG9y
LXNldC1yZWNlaXZlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9pbnRlcmZhY2Ut
cHJvdG90eXBlLWNvbnN0cnVjdG9yLXNldC1yZWNlaXZlci5odG1sCShub25leGlzdGVudCkKKysr
IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFz
Y3JpcHQtYmluZGluZy9pbnRlcmZhY2UtcHJvdG90eXBlLWNvbnN0cnVjdG9yLXNldC1yZWNlaXZl
ci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDcgQEAKKzwhRE9DVFlQRSBodG1sPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPkludGVyZmFjZS5wcm90b3R5cGUuY29uc3Ry
dWN0b3IgaXMgZGVmaW5lZCBvbiBbW1NldF1dIHJlY2VpdmVyPC90aXRsZT4KKzxsaW5rIHJlbD0i
aGVscCIgaHJlZj0iaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jaW50ZXJmYWNlLXBy
b3RvdHlwZS1vYmplY3QiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKKwordGVzdCgoKSA9PiB7CisgIHdp
bmRvdy5jb25zdHJ1Y3RvciA9IG51bGw7CisgIGFzc2VydF9lcXVhbHMoV2luZG93LnByb3RvdHlw
ZS5jb25zdHJ1Y3RvciwgV2luZG93KTsKKworICBsb2NhdGlvbi5jb25zdHJ1Y3RvciA9IGZhbHNl
OworICBhc3NlcnRfZXF1YWxzKExvY2F0aW9uLnByb3RvdHlwZS5jb25zdHJ1Y3RvciwgTG9jYXRp
b24pOworCisgIG5hdmlnYXRvci5jb25zdHJ1Y3RvciA9IDE7CisgIGFzc2VydF9lcXVhbHMoTmF2
aWdhdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciwgTmF2aWdhdG9yKTsKKworICBkb2N1bWVudC5j
b25zdHJ1Y3RvciA9IHt9OworICBhc3NlcnRfZXF1YWxzKEhUTUxEb2N1bWVudC5wcm90b3R5cGUu
Y29uc3RydWN0b3IsIEhUTUxEb2N1bWVudCk7CisKKyAgZG9jdW1lbnQuaGVhZC5jb25zdHJ1Y3Rv
ciA9IFtdOworICBhc3NlcnRfZXF1YWxzKEhUTUxIZWFkRWxlbWVudC5wcm90b3R5cGUuY29uc3Ry
dWN0b3IsIEhUTUxIZWFkRWxlbWVudCk7Cit9LCAiV2luZG93LCBMb2NhdGlvbiwgTmF2aWdhdG9y
LCBIVE1MRG9jdW1lbnQsIGFuZCBIVE1MSGVhZEVsZW1lbnQiKTsKKwordGVzdCgoKSA9PiB7Cisg
IGZvciAobGV0IGtleSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh3aW5kb3cpKSB7Cisg
ICAgaWYgKCEvXltBLVpdLy50ZXN0KGtleSkpIGNvbnRpbnVlOworCisgICAgbGV0IGRlc2MgPSBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdpbmRvdywga2V5KTsKKyAgICBpZiAoIWRl
c2MgfHwgZGVzYy5lbnVtZXJhYmxlKSBjb250aW51ZTsKKyAgICBsZXQge3ZhbHVlfSA9IGRlc2M7
CisgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gImZ1bmN0aW9uIikgY29udGludWU7CisgICAgbGV0
IHtwcm90b3R5cGV9ID0gdmFsdWU7CisgICAgaWYgKCFwcm90b3R5cGUpIGNvbnRpbnVlOworCisg
ICAgbGV0IGhlaXIgPSBPYmplY3QuY3JlYXRlKHByb3RvdHlwZSk7CisgICAgbGV0IG5ld0NvbnN0
cnVjdG9yID0gZnVuY3Rpb24oKSB7fTsKKyAgICBoZWlyLmNvbnN0cnVjdG9yID0gbmV3Q29uc3Ry
dWN0b3I7CisKKyAgICBhc3NlcnRfbm90X2VxdWFscyhwcm90b3R5cGUuY29uc3RydWN0b3IsIG5l
d0NvbnN0cnVjdG9yLCBrZXkpOworICAgIGFzc2VydF9vd25fcHJvcGVydHkoaGVpciwgImNvbnN0
cnVjdG9yIiwga2V5KTsKKyAgICBhc3NlcnRfZXF1YWxzKGhlaXIuY29uc3RydWN0b3IsIG5ld0Nv
bnN0cnVjdG9yLCBrZXkpOworICB9Cit9LCAiQWxsIHdpbmRvdy4qIGNvbnN0cnVjdG9ycyIpOwor
PC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411796</attachid>
            <date>2020-10-19 14:12:28 -0700</date>
            <delta_ts>2020-10-19 19:49:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216533-20201020001226.patch</filename>
            <type>text/plain</type>
            <size>251031</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjg2NzUpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEyIEBACisyMDIwLTEwLTE5ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBbV2ViSURMXSAlSW50ZXJmYWNlJS5wcm90b3R5cGUuY29u
c3RydWN0b3Igc2hvdWxkIGJlIGRlZmluZWQgb24gW1tTZXRdXSByZWNlaXZlcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2NTMzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBzdHJlc3MvY3VzdG9tLWdldC1z
ZXQtcHJvdG8tY2hhaW4tcHV0LmpzOiBBZGRlZC4KKwogMjAyMC0xMC0xOCAgQ2FpbyBMaW1hICA8
dGljYWlvbGltYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0VTTmV4dF1bSklUXSBBZGQgc3VwcG9y
dCBmb3IgVW50eXBlZFVzZSBvbiBQdXRQcml2YXRlTmFtZSdzIGJhc2Ugb3BlcmFuZApJbmRleDog
SlNUZXN0cy9zdHJlc3MvY3VzdG9tLWdldC1zZXQtcHJvdG8tY2hhaW4tcHV0LmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2N1c3RvbS1nZXQtc2V0LXByb3RvLWNoYWluLXB1dC5qcwko
bm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVzcy9jdXN0b20tZ2V0LXNldC1wcm90by1jaGFp
bi1wdXQuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMjggQEAKKyJ1c2Ugc3RyaWN0IjsK
KworZnVuY3Rpb24gYXNzZXJ0KHgpIHsKKyAgICBpZiAoIXgpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcigiQmFkIGFzc2VydCEiKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXhw
ZWN0ZWRFcnJvcikgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHRyeSB7Cisg
ICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlcnJvcikgeworICAgICAgICBlcnJvclRocm93
biA9IHRydWU7CisgICAgICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBleHBlY3RlZEVycm9yKQor
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBCYWQgZXJyb3I6ICR7ZXJyb3J9YCk7CisgICAg
fQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRGlkbid0
IHRocm93ISIpOworfQorCitjb25zdCBjdXN0b21UZXN0R2V0dGVyU2V0dGVyID0gJHZtLmNyZWF0
ZUN1c3RvbVRlc3RHZXR0ZXJTZXR0ZXIoKTsKK09iamVjdC5zZXRQcm90b3R5cGVPZihjdXN0b21U
ZXN0R2V0dGVyU2V0dGVyLCB7CisgICAgc2V0IGN1c3RvbVZhbHVlKF92KSB7IHRocm93IG5ldyBF
cnJvcigiU2hvdWxkIGJlIHVucmVhY2hhYmxlISIpOyB9LAorICAgIHNldCBjdXN0b21WYWx1ZUds
b2JhbE9iamVjdChfdikgeyB0aHJvdyBuZXcgRXJyb3IoIlNob3VsZCBiZSB1bnJlYWNoYWJsZSEi
KTsgfSwKKyAgICBzZXQgY3VzdG9tQWNjZXNzb3IoX3YpIHsgdGhyb3cgbmV3IEVycm9yKCJTaG91
bGQgYmUgdW5yZWFjaGFibGUhIik7IH0sCisgICAgc2V0IGN1c3RvbUFjY2Vzc29yR2xvYmFsT2Jq
ZWN0KF92KSB7IHRocm93IG5ldyBFcnJvcigiU2hvdWxkIGJlIHVucmVhY2hhYmxlISIpOyB9LAor
fSk7CisKK2NvbnN0IHByaW1pdGl2ZXMgPSBbdHJ1ZSwgMSwgIiIsIFN5bWJvbCgpLCAxbl07Citm
b3IgKGxldCBwcmltaXRpdmUgb2YgcHJpbWl0aXZlcykgeworICAgIGxldCBwcm90b3R5cGUgPSBP
YmplY3QuZ2V0UHJvdG90eXBlT2YocHJpbWl0aXZlKTsKKyAgICBPYmplY3Quc2V0UHJvdG90eXBl
T2YocHJvdG90eXBlLCBjdXN0b21UZXN0R2V0dGVyU2V0dGVyKTsKK30KKworZnVuY3Rpb24gZ2V0
T2JqZWN0cygpIHsKKyAgICByZXR1cm4gWworICAgICAgICAuLi5wcmltaXRpdmVzLm1hcChPYmpl
Y3QpLAorICAgICAgICBPYmplY3QuY3JlYXRlKGN1c3RvbVRlc3RHZXR0ZXJTZXR0ZXIpLAorICAg
ICAgICBPYmplY3QuY3JlYXRlKE9iamVjdC5jcmVhdGUoY3VzdG9tVGVzdEdldHRlclNldHRlcikp
LAorICAgICAgICAvLyBGSVhNRTogb3JkaW5hcnlTZXRTbG93KCkgc2hvdWxkIGhhbmRsZSBDdXN0
b217QWNjZXNzb3IsVmFsdWV9IGRlc2NyaXB0b3JzLgorICAgICAgICAvLyBuZXcgUHJveHkoY3Vz
dG9tVGVzdEdldHRlclNldHRlciwge30pLAorICAgIF07Cit9CisKK2Z1bmN0aW9uIGdldEJhc2Vz
KCkgeworICAgIHJldHVybiBbCisgICAgICAgIC4uLnByaW1pdGl2ZXMsCisgICAgICAgIC4uLmdl
dE9iamVjdHMoKSwKKyAgICBdOworfQorCisvLyBDdXN0b21BY2Nlc3NvcjogZXhjZXB0aW9uIGNo
ZWNrCisoKCkgPT4geworICAgIGZvciAobGV0IGJhc2Ugb2YgZ2V0QmFzZXMoKSkgeworICAgICAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICBsZXQgdmFsdWUg
PSB7fTsKKyAgICAgICAgICAgIGJhc2UuY3VzdG9tQWNjZXNzb3IgPSB2YWx1ZTsKKyAgICAgICAg
ICAgIGFzc2VydCh2YWx1ZS5oYXNPd25Qcm9wZXJ0eSgicmVzdWx0IikpOworICAgICAgICB9Cisg
ICAgICAgIGFzc2VydChSZWZsZWN0LnNldChPYmplY3QoYmFzZSksICJjdXN0b21BY2Nlc3NvciIs
IHt9KSk7CisgICAgfQorfSkoKTsKKworLy8gQ3VzdG9tVmFsdWU6IGV4Y2VwdGlvbiBjaGVjawor
KCgpID0+IHsKKyAgICBmb3IgKGxldCBiYXNlIG9mIGdldEJhc2VzKCkpIHsKKyAgICAgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICAgICAgbGV0IHZhbHVlID0ge307
CisgICAgICAgICAgICBiYXNlLmN1c3RvbVZhbHVlID0gdmFsdWU7CisgICAgICAgICAgICBhc3Nl
cnQodmFsdWUuaGFzT3duUHJvcGVydHkoInJlc3VsdCIpKTsKKyAgICAgICAgfQorICAgICAgICBh
c3NlcnQoUmVmbGVjdC5zZXQoT2JqZWN0KGJhc2UpLCAiY3VzdG9tVmFsdWUiLCB7fSkpOworICAg
IH0KK30pKCk7CisKKy8vIEN1c3RvbUFjY2Vzc29yOiBzZXR0ZXIgcmV0dXJucyB8ZmFsc2V8Ciso
KCkgPT4geworICAgIGZvciAobGV0IGJhc2Ugb2YgZ2V0QmFzZXMoKSkgeworICAgICAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDEwMDsgKytpKQorICAgICAgICAgICAgYmFzZS5jdXN0b21BY2Nlc3Nv
ciA9IDE7CisgICAgICAgIC8vIFRoaXMgaXMgaW50ZW50aW9uYWw6CisgICAgICAgIGFzc2VydCgh
YmFzZS5oYXNPd25Qcm9wZXJ0eSgiY3VzdG9tQWNjZXNzb3IiKSk7CisgICAgICAgIGFzc2VydChS
ZWZsZWN0LnNldChPYmplY3QoYmFzZSksICJjdXN0b21BY2Nlc3NvciIsIDEpKTsKKyAgICB9Cit9
KSgpOworCisvLyBDdXN0b21WYWx1ZTogc2V0dGVyIHJldHVybnMgfGZhbHNlfAorKCgpID0+IHsK
KyAgICBmb3IgKGxldCBiYXNlIG9mIGdldEJhc2VzKCkpIHsKKyAgICAgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCAxMDA7ICsraSkKKyAgICAgICAgICAgIGJhc2UuY3VzdG9tVmFsdWUgPSAxOworICAg
ICAgICAvLyBUaGlzIGlzIHdlaXJkLCBidXQgaXQgaXNuJ3QgZXhwb3NlZCB0byB1c2VybGFuZCBj
b2RlOgorICAgICAgICBhc3NlcnQoIWJhc2UuaGFzT3duUHJvcGVydHkoImN1c3RvbVZhbHVlIikp
OworICAgICAgICBhc3NlcnQoIVJlZmxlY3Quc2V0KE9iamVjdChiYXNlKSwgImN1c3RvbVZhbHVl
IiwgMSkpOworICAgIH0KK30pKCk7CisKKy8vIEN1c3RvbUFjY2Vzc29yOiBubyBzZXR0ZXIKKygo
KSA9PiB7CisgICAgZm9yIChsZXQgYmFzZSBvZiBnZXRCYXNlcygpKSB7CisgICAgICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpCisgICAgICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7
IGJhc2UuY3VzdG9tQWNjZXNzb3JHbG9iYWxPYmplY3QgPSB7fTsgfSwgIlR5cGVFcnJvcjogQXR0
ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4iKTsKKyAgICAgICAgYXNzZXJ0
KCFSZWZsZWN0LnNldChPYmplY3QoYmFzZSksICJjdXN0b21BY2Nlc3Nvckdsb2JhbE9iamVjdCIs
IHt9KSk7CisgICAgfQorfSkoKTsKKworLy8gQ3VzdG9tVmFsdWU6IG5vIHNldHRlcgorKCgpID0+
IHsKKyAgICBmb3IgKGxldCBwcmltaXRpdmUgb2YgcHJpbWl0aXZlcykgeworICAgICAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDEwMDsgKytpKQorICAgICAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4g
eyBwcmltaXRpdmUuY3VzdG9tVmFsdWVHbG9iYWxPYmplY3QgPSB7fTsgfSwgIlR5cGVFcnJvcjog
QXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4iKTsKKyAgICB9CisKKyAg
ICBmb3IgKGxldCBvYmplY3Qgb2YgZ2V0T2JqZWN0cygpKSB7CisgICAgICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgMTAwOyArK2kpCisgICAgICAgICAgICBvYmplY3QuY3VzdG9tVmFsdWVHbG9iYWxP
YmplY3QgPSB7fTsKKyAgICAgICAgYXNzZXJ0KG9iamVjdC5oYXNPd25Qcm9wZXJ0eSgiY3VzdG9t
VmFsdWVHbG9iYWxPYmplY3QiKSk7CisgICAgICAgIGFzc2VydChSZWZsZWN0LnNldChvYmplY3Qs
ICJjdXN0b21WYWx1ZUdsb2JhbE9iamVjdCIsIHt9KSk7CisgICAgfQorCisgICAgZm9yIChsZXQg
b2JqZWN0IG9mIGdldE9iamVjdHMoKSkgeworICAgICAgICBPYmplY3QucHJldmVudEV4dGVuc2lv
bnMob2JqZWN0KTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAg
ICAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geyBvYmplY3QuY3VzdG9tVmFsdWVHbG9iYWxPYmpl
Y3QgPSB7fTsgfSwgIlR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBw
cm9wZXJ0eS4iKTsKKyAgICAgICAgICAgIGFzc2VydCghUmVmbGVjdC5zZXQob2JqZWN0LCAiY3Vz
dG9tVmFsdWVHbG9iYWxPYmplY3QiLCB7fSkpOworICAgICAgICB9CisgICAgfQorfSkoKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY4Njc0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisy
MDIwLTEwLTE5ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAg
ICAgICBbV2ViSURMXSAlSW50ZXJmYWNlJS5wcm90b3R5cGUuY29uc3RydWN0b3Igc2hvdWxkIGJl
IGRlZmluZWQgb24gW1tTZXRdXSByZWNlaXZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2NTMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCisKKyAgICAgICAgQmVmb3JlIHRoaXMgY2hhbmdlLCBhIFtbU2V0XV0gcGVyZm9ybWVk
IG9uIGFuICVJbnRlcmZhY2UlIGluc3RhbmNlIHVzZWQgdG8gb3ZlcndyaXRlCisgICAgICAgICVJ
bnRlcmZhY2UlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciBpbnN0ZWFkIG9mIGRlZmluaW5nIG93biAi
Y29uc3RydWN0b3IiIHByb3BlcnR5LgorCisgICAgICAgIFNpbmNlIHVzaW5nIEN1c3RvbVZhbHVl
IGlzIGVzc2VudGlhbCBmb3IgbGF6eSBpbml0aWFsaXphdGlvbiBvZiBXZWJJREwgY29uc3RydWN0
b3JzLAorICAgICAgICBhbmQgZm9yd2FyZGluZyBbW1NldF1dIHdpdGggY29ycmVjdCByZWNlaXZl
ciB3b3VsZCByZXF1aXJlIGZ1cnRoZXIgZGl2ZXJnaW5nCisgICAgICAgIEN1c3RvbVZhbHVlIHNl
dHRlciBzaWduYXR1cmUgZnJvbSBDdXN0b21BY2Nlc3NvciBjb3VudGVycGFydCwgdGhpcyBwYXRj
aCBtYWtlcyBhCisgICAgICAgIEN1c3RvbVZhbHVlIHByb3BlcnR5IHdpdGhvdXQgYSBzZXR0ZXIg
dG8gYmUgdHJlYXRlZCBhcyBhIGRhdGEgZGVzY3JpcHRvciBbMV0uCisKKyAgICAgICAgVGhpcyBh
dm9pZHMgZ2VuZXJhdGluZyBhICJjb25zdHJ1Y3RvciIgc2V0dGVyIGZvciBldmVyeSBleHBvc2Vk
IFdlYklETCBpbnRlcmZhY2UgYW5kCisgICAgICAgIG1ha2luZyBhbiBleHRyYSBwdXQoKSBkaXNw
YXRjaCBpbiBwdXRJbmxpbmVTbG93KCkuIENoYW5naW5nIHRoZSBzZW1hbnRpY3MgaXMgc2FmZQor
ICAgICAgICBiZWNhdXNlIHRoZXJlIHdlcmUgbm8gc2V0dGVyLWxlc3MgQ3VzdG9tVmFsdWUgcHJv
cGVydGllcyBiZWZvcmUgdGhpcyBwYXRjaC4KKworICAgICAgICBbMV06IGh0dHBzOi8vdGMzOS5l
cy9lY21hMjYyLyNzZWMtb3JkaW5hcnlzZXR3aXRob3duZGVzY3JpcHRvciAoc3RlcCAzLmUuaWkp
CisKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6QWNj
ZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0N1c3RvbUdldHRlclNl
dHRlci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxDdXN0b21TZXR0ZXIpOgorICAgICAgICAqIHJ1
bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVl
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUpOiBBZGQgbWlzc2lu
ZyBleGNlcHRpb24gY2hlY2suCisgICAgICAgICogcnVudGltZS9KU0N1c3RvbUdldHRlclNldHRl
ckZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToK
KyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OnB1dElubGluZVNsb3cpOgorICAgICAgICAqIHJ1bnRpbWUvTG9va3VwLmg6CisgICAgICAgIChK
U0M6OnB1dEVudHJ5KToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xvdC5jcHA6CisgICAg
ICAgIChKU0M6OlByb3BlcnR5U2xvdDo6Y3VzdG9tR2V0dGVyIGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL1Byb3BlcnR5U2xvdC5oOgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgor
CiAyMDIwLTEwLTE4ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAg
ICAgRml4IC1XZGVwcmVjYXRlZC1jb3B5IHdhcm5pbmdzIGluIFdURiBhbmQgSmF2YVNjcmlwdENv
cmUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5j
cHAJKHJldmlzaW9uIDI2ODY3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
Y2Nlc3NDYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcxNSwxMCArMTcxNSw4IEBAIHZvaWQg
QWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmUKICAgICAgICAgICAgIEdQUlJlZyBy
ZWNlaXZlckZvckN1c3RvbUdldEdQUiA9IGJhc2VHUFIgIT0gdGhpc0dQUiA/IHRoaXNHUFIgOiBy
ZWNlaXZlckdQUjsKIAogICAgICAgICAgICAgLy8gZ2V0dGVyOiBFbmNvZGVkSlNWYWx1ZSAoKkdl
dFZhbHVlRnVuYykoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSk7Ci0gICAgICAgICAgICAvLyBzZXR0ZXI6IHZvaWQgKCpQdXRWYWx1ZUZ1bmMp
KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgdGhpc09iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdmFsdWUpOwotICAgICAgICAgICAgLy8gQ3VzdG9tIHZhbHVlcyBhcmUgcGFzc2VkIHRoZSBz
bG90QmFzZSAodGhlIHByb3BlcnR5IGhvbGRlciksIGN1c3RvbSBhY2Nlc3NvcnMgYXJlIHBhc3Nl
ZCB0aGUgdGhpc1ZhdWxlIChyZWNlaXZlcikuCi0gICAgICAgICAgICAvLyBGSVhNRTogUmVtb3Zl
IHRoaXMgZGlmZmVyZW5jZXMgaW4gY3VzdG9tIHZhbHVlcyBhbmQgY3VzdG9tIGFjY2Vzc29ycy4K
LSAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTgwMTQKKyAgICAgICAgICAgIC8vIHNldHRlcjogYm9vbCAoKlB1dFZhbHVlRnVuYykoSlNHbG9i
YWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSB0aGlzT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB2YWx1
ZSk7CisgICAgICAgICAgICAvLyBDdXN0b20gdmFsdWVzIGFyZSBwYXNzZWQgdGhlIHNsb3RCYXNl
ICh0aGUgcHJvcGVydHkgaG9sZGVyKSwgY3VzdG9tIGFjY2Vzc29ycyBhcmUgcGFzc2VkIHRoZSB0
aGlzVmFsdWUgKHJlY2VpdmVyKS4KICAgICAgICAgICAgIEdQUlJlZyBiYXNlRm9yQ3VzdG9tID0g
dGFrZXNQcm9wZXJ0eU93bmVyQXNDRnVuY3Rpb25Bcmd1bWVudCA/IHByb3BlcnR5T3duZXJHUFIg
OiByZWNlaXZlckZvckN1c3RvbUdldEdQUjsgCiAgICAgICAgICAgICAvLyBXZSBkbyBub3QgbmVl
ZCB0byBrZWVwIGdsb2JhbE9iamVjdCBhbGl2ZSBzaW5jZSB0aGUgb3duZXIgQ29kZUJsb2NrIChl
dmVuIGlmIEpTR2xvYmFsT2JqZWN0KiBpcyBvbmUgb2YgQ29kZUJsb2NrIHRoYXQgaXMgaW5saW5l
ZCBhbmQgaGVsZCBieSBERkcgQ29kZUJsb2NrKQogICAgICAgICAgICAgLy8gbXVzdCBrZWVwIGl0
IGFsaXZlLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ3VzdG9tR2V0dGVy
U2V0dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
dXN0b21HZXR0ZXJTZXR0ZXIuY3BwCShyZXZpc2lvbiAyNjg2NzQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSwyNyArMzUsMTkgQEAgU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxF
KAogCiBjb25zdCBDbGFzc0luZm8gQ3VzdG9tR2V0dGVyU2V0dGVyOjpzX2luZm8gPSB7ICJDdXN0
b21HZXR0ZXJTZXR0ZXIiLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEN1c3RvbUdldHRlclNldHRlcikgfTsKIAotYm9vbCBjYWxsQ3VzdG9tU2V0dGVyKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEN1c3RvbUdldHRlclNldHRlcjo6Q3VzdG9tU2V0
dGVyIHNldHRlciwgYm9vbCBpc0FjY2Vzc29yLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNWYWx1ZSB2
YWx1ZSkKK1RyaVN0YXRlIGNhbGxDdXN0b21TZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ3VzdG9tR2V0dGVyU2V0dGVyOjpDdXN0b21TZXR0ZXIgc2V0dGVyLCBib29sIGlzQWNj
ZXNzb3IsIEpTT2JqZWN0KiBzbG90QmFzZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTVmFsdWUgdmFs
dWUpCiB7Ci0gICAgQVNTRVJUKHNldHRlcik7Ci0gICAgYm9vbCByZXN1bHQgPSBzZXR0ZXIoZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlKSwgSlNWYWx1ZTo6ZW5jb2RlKHZh
bHVlKSk7Ci0gICAgLy8gQWx3YXlzIHJldHVybiB0cnVlIGlmIHRoZXJlIGlzIGEgc2V0dGVyIGFu
ZCBpdCBpcyBvYnNlcnZlZCBhcyBhbiBhY2Nlc3NvciB0byB1c2Vycy4KLSAgICBpZiAoaXNBY2Nl
c3NvcikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KKyAgICBp
ZiAoaXNBY2Nlc3NvcikgeworICAgICAgICBpZiAoIXNldHRlcikKKyAgICAgICAgICAgIHJldHVy
biBUcmlTdGF0ZTo6RmFsc2U7CisgICAgICAgIHNldHRlcihnbG9iYWxPYmplY3QsIEpTVmFsdWU6
OmVuY29kZSh0aGlzVmFsdWUpLCBKU1ZhbHVlOjplbmNvZGUodmFsdWUpKTsKKyAgICAgICAgLy8g
QWx3YXlzIHJldHVybiB0cnVlIGlmIHRoZXJlIGlzIGEgc2V0dGVyIGFuZCBpdCBpcyBvYnNlcnZl
ZCBhcyBhbiBhY2Nlc3NvciB0byB1c2Vycy4KKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpUcnVl
OworICAgIH0KIAotYm9vbCBjYWxsQ3VzdG9tU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgY3VzdG9tR2V0dGVyU2V0dGVyLCBib29sIGlzQWNjZXNzb3IsIEpTT2Jq
ZWN0KiBiYXNlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBDdXN0
b21HZXR0ZXJTZXR0ZXI6OkN1c3RvbVNldHRlciBzZXR0ZXIgPSBqc0Nhc3Q8Q3VzdG9tR2V0dGVy
U2V0dGVyKj4oY3VzdG9tR2V0dGVyU2V0dGVyKS0+c2V0dGVyKCk7Ci0gICAgLy8gUmV0dXJuIGZh
bHNlIHNpbmNlIHRoZXJlIGlzIG5vIHNldHRlci4KICAgICBpZiAoIXNldHRlcikKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBkaWZmZXJlbmNlcyBpbiBj
dXN0b20gdmFsdWVzIGFuZCBjdXN0b20gYWNjZXNzb3JzLgotICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgwMTQKLSAgICBpZiAoIWlzQWNjZXNzb3IpCi0g
ICAgICAgIHRoaXNWYWx1ZSA9IGJhc2U7Ci0gICAgcmV0dXJuIGNhbGxDdXN0b21TZXR0ZXIoZ2xv
YmFsT2JqZWN0LCBzZXR0ZXIsIGlzQWNjZXNzb3IsIHRoaXNWYWx1ZSwgdmFsdWUpOworICAgICAg
ICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CisgICAgcmV0dXJuIHRyaVN0YXRlKHNl
dHRlcihnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmVuY29kZShzbG90QmFzZSksIEpTVmFsdWU6OmVu
Y29kZSh2YWx1ZSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuaAkocmV2aXNp
b24gMjY4Njc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ3VzdG9tR2V0dGVy
U2V0dGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDYgQEAgcHJpdmF0ZToKICAgICBD
dXN0b21TZXR0ZXIgbV9zZXR0ZXI7CiB9OwogCi1KU19FWFBPUlRfUFJJVkFURSBib29sIGNhbGxD
dXN0b21TZXR0ZXIoSlNHbG9iYWxPYmplY3QqLCBDdXN0b21HZXR0ZXJTZXR0ZXI6OkN1c3RvbVNl
dHRlciwgYm9vbCBpc0FjY2Vzc29yLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNWYWx1ZSk7Ci1KU19F
WFBPUlRfUFJJVkFURSBib29sIGNhbGxDdXN0b21TZXR0ZXIoSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlIGN1c3RvbUdldHRlclNldHRlciwgYm9vbCBpc0FjY2Vzc29yLCBKU09iamVjdCogc2xvdEJh
c2UsIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1ZhbHVlKTsKK0pTX0VYUE9SVF9QUklWQVRFIFRyaVN0
YXRlIGNhbGxDdXN0b21TZXR0ZXIoSlNHbG9iYWxPYmplY3QqLCBDdXN0b21HZXR0ZXJTZXR0ZXI6
OkN1c3RvbVNldHRlciwgYm9vbCBpc0FjY2Vzc29yLCBKU09iamVjdCogc2xvdEJhc2UsIEpTVmFs
dWUgdGhpc1ZhbHVlLCBKU1ZhbHVlKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAkocmV2aXNpb24gMjY4
Njc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIxMyw4ICsyMTMsMTMgQEAgYm9vbCBKU1ZhbHVlOjpwdXRUb1ByaW1p
dGl2ZShKU0dsb2JhbE9iagogICAgICAgICAgICAgaWYgKGdzLmlzR2V0dGVyU2V0dGVyKCkpCiAg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjYWxsU2V0dGVyKGdsb2Jh
bE9iamVjdCwgKnRoaXMsIGdzLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSA/IEVDTUFNb2Rl
OjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpzbG9wcHkoKSkpOwogCi0gICAgICAgICAgICBpZiAoZ3Mu
aXNDdXN0b21HZXR0ZXJTZXR0ZXIoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gY2FsbEN1c3Rv
bVNldHRlcihnbG9iYWxPYmplY3QsIGdzLCBhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yLCBvYmosIHNsb3QudGhpc1ZhbHVlKCksIHZhbHVlKTsKKyAgICAgICAg
ICAgIGlmIChncy5pc0N1c3RvbUdldHRlclNldHRlcigpKSB7CisgICAgICAgICAgICAgICAgYXV0
byBzZXR0ZXIgPSBqc0Nhc3Q8Q3VzdG9tR2V0dGVyU2V0dGVyKj4oZ3MuYXNDZWxsKCkpLT5zZXR0
ZXIoKTsKKyAgICAgICAgICAgICAgICBib29sIGlzQWNjZXNzb3IgPSBhdHRyaWJ1dGVzICYgUHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yOworICAgICAgICAgICAgICAgIGF1dG8gcmVz
dWx0ID0gY2FsbEN1c3RvbVNldHRlcihnbG9iYWxPYmplY3QsIHNldHRlciwgaXNBY2Nlc3Nvciwg
b2JqLCBzbG90LnRoaXNWYWx1ZSgpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKHJlc3Vs
dCAhPSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCByZXN1bHQgPT0gVHJpU3RhdGU6OlRydWUpOworICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICAvLyBJZiB0aGVyZSdzIGFuIGV4aXN0aW5nIHByb3BlcnR5IG9u
IHRoZSBvYmplY3Qgb3Igb25lIG9mIGl0cyAKICAgICAgICAgICAgIC8vIHByb3RvdHlwZXMgaXQg
c2hvdWxkIGJlIHJlcGxhY2VkLCBzbyBicmVhayBoZXJlLgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJTZXR0ZXJG
dW5jdGlvbi5jcHAJKHJldmlzaW9uIDI2ODY3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00OCw3ICs0OCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjdXN0b21HZXR0ZXJTZXQK
ICAgICAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyOjpDdXN0b21TZXR0ZXIgc2V0dGVyID0gY3VzdG9t
R2V0dGVyU2V0dGVyLT5zZXR0ZXIoKTsKICAgICAgICAgQVNTRVJUKHNldHRlcik7CiAgICAgICAg
IHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgY2FsbEN1c3RvbVNldHRlcihnbG9iYWxPYmplY3Qs
IHNldHRlciwgdHJ1ZSwgdGhpc1ZhbHVlLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKKyAgICAg
ICAgc2V0dGVyKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZW5jb2RlKHRoaXNWYWx1ZSksIEpTVmFs
dWU6OmVuY29kZShjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSk7CiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAyNjg2NzQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg0OSwxOCArODQ5LDIxIEBAIGJvb2wgSlNPYmplY3Q6OnB1dElubGluZVNsb3coSlNHbG9iYWxP
YmoKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgaWYgKGdzLmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkpIHsKKyAgICAgICAgICAgICAgICBi
b29sIGlzQWNjZXNzb3IgPSBhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yOworICAgICAgICAgICAgICAgIGF1dG8gc2V0dGVyID0ganNDYXN0PEN1c3RvbUdldHRl
clNldHRlcio+KGdzLmFzQ2VsbCgpKS0+c2V0dGVyKCk7CiAgICAgICAgICAgICAgICAgLy8gRklY
TUU6IFdlIHNob3VsZCBvbmx5IGJlIGNhY2hpbmcgdGhlc2UgaWYgd2UncmUgbm90IGFuIHVuY2Fj
aGVhYmxlIGRpY3Rpb25hcnk6CiAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTM0NwogCiAgICAgICAgICAgICAgICAgLy8gV2UgbmVl
ZCB0byBtYWtlIHN1cmUgdGhhdCB3ZSBkZWNpZGUgdG8gY2FjaGUgdGhpcyBwcm9wZXJ0eSBiZWZv
cmUgd2UgcG90ZW50aWFsbHkgZXhlY3V0ZSBhcmliaXRyYXJ5IEpTLgotICAgICAgICAgICAgICAg
IGlmIChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yKQotICAg
ICAgICAgICAgICAgICAgICBzbG90LnNldEN1c3RvbUFjY2Vzc29yKG9iaiwganNDYXN0PEN1c3Rv
bUdldHRlclNldHRlcio+KGdzLmFzQ2VsbCgpKS0+c2V0dGVyKCkpOworICAgICAgICAgICAgICAg
IGlmIChpc0FjY2Vzc29yKQorICAgICAgICAgICAgICAgICAgICBzbG90LnNldEN1c3RvbUFjY2Vz
c29yKG9iaiwgc2V0dGVyKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
ICAgIHNsb3Quc2V0Q3VzdG9tVmFsdWUob2JqLCBqc0Nhc3Q8Q3VzdG9tR2V0dGVyU2V0dGVyKj4o
Z3MuYXNDZWxsKCkpLT5zZXR0ZXIoKSk7CisgICAgICAgICAgICAgICAgICAgIHNsb3Quc2V0Q3Vz
dG9tVmFsdWUob2JqLCBzZXR0ZXIpOwogCi0gICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBj
YWxsQ3VzdG9tU2V0dGVyKGdsb2JhbE9iamVjdCwgZ3MsIGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IsIG9iaiwgc2xvdC50aGlzVmFsdWUoKSwgdmFsdWUpOwor
ICAgICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gY2FsbEN1c3RvbVNldHRlcihnbG9iYWxPYmpl
Y3QsIHNldHRlciwgaXNBY2Nlc3Nvciwgb2JqLCBzbG90LnRoaXNWYWx1ZSgpLCB2YWx1ZSk7CiAg
ICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBU
cmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dCA9PSBUcmlTdGF0ZTo6VHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEFTU0VSVCgh
KGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpKTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgJKHJldmlzaW9uIDI2ODY3NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NzUsNiArMjc1LDcgQEAgaW5saW5lIGJvb2wgcHV0RW50cnkoSlNHbG9iYWxPYmplY3QqIGdsbwog
ICAgICAgICBpZiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYgUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5KSkgewogICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIGZ1bmN0aW9uIG9yIGxhenkg
cHJvcGVydHkgcHV0IHRoZW4gd2UganVzdCBkbyB0aGUgcHV0IGJlY2F1c2UKICAgICAgICAgICAg
IC8vIGxvZ2ljYWxseSB0aGUgb2JqZWN0IGFscmVhZHkgaGFkIHRoZSBwcm9wZXJ0eSwgc28gdGhp
cyBpcyBqdXN0IGEgcmVwbGFjZS4KKyAgICAgICAgICAgIC8vIEZJWE1FOiB0aGlzVmFsdWUgbWF5
IGJlIGFuIG9iamVjdCB3aXRoIG5vbi1leHRlbnNpYmxlIHN0cnVjdHVyZSB3ZSBtdXN0IHRocm93
IGZvci4KICAgICAgICAgICAgIGlmIChKU09iamVjdCogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8SlNPYmplY3QqPih2bSwgdGhpc1ZhbHVlKSkKICAgICAgICAgICAgICAgICB0aGlzT2JqZWN0
LT5wdXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwgdmFsdWUpOwogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CkBAIC0yODgsMTYgKzI4OSwyMyBAQCBpbmxpbmUgYm9vbCBwdXRFbnRyeShKU0dsb2Jh
bE9iamVjdCogZ2xvCiAgICAgaWYgKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSkpIHsKICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghKGVudHJ5
LT5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NSklUQXR0cmlidXRlKSwgIkRP
TUpJVEF0dHJpYnV0ZSBzdXBwb3J0cyByZWFkb25seSBhdHRyaWJ1dGVzIGN1cnJlbnRseS4iKTsK
ICAgICAgICAgYm9vbCBpc0FjY2Vzc29yID0gZW50cnktPmF0dHJpYnV0ZXMoKSAmIFByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvcjsKLSAgICAgICAgSlNWYWx1ZSB1cGRhdGVUaGlzVmFs
dWUgPSBlbnRyeS0+YXR0cmlidXRlcygpICYgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yID8gc2xvdC50aGlzVmFsdWUoKSA6IEpTVmFsdWUoYmFzZSk7CisgICAgICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgb25seSBiZSBjYWNoaW5nIHRoZXNlIGlmIHdlJ3JlIG5vdCBhbiB1bmNhY2hl
YWJsZSBkaWN0aW9uYXJ5OgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE1MzQ3CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQg
d2UgZGVjaWRlIHRvIGNhY2hlIHRoaXMgcHJvcGVydHkgYmVmb3JlIHdlIHBvdGVudGlhbGx5IGV4
ZWN1dGUgYXJpYml0cmFyeSBKUy4KICAgICAgICAgaWYgKGlzQWNjZXNzb3IpCiAgICAgICAgICAg
ICBzbG90LnNldEN1c3RvbUFjY2Vzc29yKGJhc2UsIGVudHJ5LT5wcm9wZXJ0eVB1dHRlcigpKTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgc2xvdC5zZXRDdXN0b21WYWx1ZShiYXNlLCBlbnRy
eS0+cHJvcGVydHlQdXR0ZXIoKSk7CiAKLSAgICAgICAgYm9vbCByZXN1bHQgPSBjYWxsQ3VzdG9t
U2V0dGVyKGdsb2JhbE9iamVjdCwgZW50cnktPnByb3BlcnR5UHV0dGVyKCksIGlzQWNjZXNzb3Is
IHVwZGF0ZVRoaXNWYWx1ZSwgdmFsdWUpOworICAgICAgICBhdXRvIHJlc3VsdCA9IGNhbGxDdXN0
b21TZXR0ZXIoZ2xvYmFsT2JqZWN0LCBlbnRyeS0+cHJvcGVydHlQdXR0ZXIoKSwgaXNBY2Nlc3Nv
ciwgYmFzZSwgc2xvdC50aGlzVmFsdWUoKSwgdmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIGlm
IChyZXN1bHQgIT0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGUpCisgICAgICAgICAgICByZXR1cm4g
cmVzdWx0ID09IFRyaVN0YXRlOjpUcnVlOworCisgICAgICAgIC8vIEZJWE1FOiB0aGlzVmFsdWUg
bWF5IGJlIGFuIG9iamVjdCB3aXRoIG5vbi1leHRlbnNpYmxlIHN0cnVjdHVyZSB3ZSBtdXN0IHRo
cm93IGZvci4KKyAgICAgICAgaWYgKEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2Fz
dDxKU09iamVjdCo+KHZtLCB0aGlzVmFsdWUpKQorICAgICAgICAgICAgdGhpc09iamVjdC0+cHV0
RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCiAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBzbG90Lmlz
U3RyaWN0TW9kZSgpLCBSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5jcHAJKHJldmlzaW9uIDI2
ODY3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM1LDggKzM1LDYgQEAgSlNWYWx1ZSBQcm9wZXJ0eVNsb3Q6OmZ1
bmN0aW9uR2V0dGVyKEpTRwogCiBKU1ZhbHVlIFByb3BlcnR5U2xvdDo6Y3VzdG9tR2V0dGVyKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNv
bnN0CiB7Ci0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIGRpZmZlcmVuY2VzIGluIGN1c3RvbSB2
YWx1ZXMgYW5kIGN1c3RvbSBhY2Nlc3NvcnMuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1ODAxNAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gbV9hdHRy
aWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yID8gbV90aGlzVmFsdWUg
OiBKU1ZhbHVlKHNsb3RCYXNlKCkpOwogICAgIGlmIChhdXRvIGRvbUF0dHJpYnV0ZSA9IHRoaXMt
PmRvbUF0dHJpYnV0ZSgpKSB7CiAgICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCShy
ZXZpc2lvbiAyNjg2NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eVNsb3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTIxLDggKzEyMSw2IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIGRpc2FsbG93Vk1FbnRyeS5lbXBsYWNlKCp2bUZvcklucXVpcnkpOwogICAgIH0KIAot
ICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBzbG90QmFzZSAvIHJlY2VpdmVyIGJlaGF2aW9yIGRp
ZmZlcmVuY2UgaW4gY3VzdG9tIHZhbHVlcyBhbmQgY3VzdG9tIGFjY2Vzc29ycy4KLSAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MDE0CiAgICAgdXNpbmcg
R2V0VmFsdWVGdW5jID0gRW5jb2RlZEpTVmFsdWUoSklUX09QRVJBVElPTl9BVFRSSUJVVEVTKiko
SlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSk7
CiAKICAgICBKU1ZhbHVlIGdldFZhbHVlKEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKSBj
b25zdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAJ
KHJldmlzaW9uIDI2ODY3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2MCw3ICsxNTYwLDkgQEAgSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKGN1c3RvbVNldEFjY2VzcwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKLSAgICBSRUxFQVNFX0FTU0VSVCh2YWx1ZS5pc09iamVjdCgpKTsKKyAgICBpZiAoIXZhbHVl
LmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIEpTT2JqZWN0KiBvYmpl
Y3QgPSBhc09iamVjdCh2YWx1ZSk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qob2JqZWN0KTsK
ICAgICBvYmplY3QtPnB1dChvYmplY3QsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgInJlc3VsdCIpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc09iamVjdCksIHNsb3QpOwpA
QCAtMTU3Niw3ICsxNTc4LDkgQEAgSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKGN1c3RvbVNldFZh
bHVlLAogICAgIFJFTEVBU0VfQVNTRVJUKEpTVmFsdWU6OmRlY29kZShzbG90VmFsdWUpLmluaGVy
aXRzPEpTVGVzdEN1c3RvbUdldHRlclNldHRlcj4oZ2xvYmFsT2JqZWN0LT52bSgpKSk7CiAKICAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgUkVM
RUFTRV9BU1NFUlQodmFsdWUuaXNPYmplY3QoKSk7CisgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmpl
Y3QodmFsdWUpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCk7CiAgICAgb2JqZWN0
LT5wdXQob2JqZWN0LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJy
ZXN1bHQiKSwgSlNWYWx1ZTo6ZGVjb2RlKHNsb3RWYWx1ZSksIHNsb3QpOwpAQCAtMTYxMyw3ICsx
NjE3LDcgQEAgdm9pZCBKU1Rlc3RDdXN0b21HZXR0ZXJTZXR0ZXI6OmZpbmlzaENyZQogICAgIHB1
dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3Vz
dG9tVmFsdWVHbG9iYWxPYmplY3QiKSwKICAgICAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVh
dGUodm0sIGN1c3RvbUdldFZhbHVlR2xvYmFsT2JqZWN0LCBudWxscHRyKSwgMCk7CiAgICAgcHV0
RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjdXN0
b21BY2Nlc3Nvckdsb2JhbE9iamVjdCIpLAotICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNy
ZWF0ZSh2bSwgY3VzdG9tR2V0QWNjZXNzb3JHbG9iYWxPYmplY3QsIG51bGxwdHIpLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yKSk7CisgICAg
ICAgIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBjdXN0b21HZXRBY2Nlc3Nvckdsb2Jh
bE9iamVjdCwgbnVsbHB0ciksIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvcik7CiAKICAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nv
cih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1c3RvbUZ1bmN0aW9uIiksCiAgICAg
ICAgIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBjdXN0b21HZXRBY2Nlc3NvciwgY3Vz
dG9tRnVuY3Rpb25TZXR0ZXIpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjg2NzQpCisr
KyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBA
QAorMjAyMC0xMC0xOSAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisK
KyAgICAgICAgW1dlYklETF0gJUludGVyZmFjZSUucHJvdG90eXBlLmNvbnN0cnVjdG9yIHNob3Vs
ZCBiZSBkZWZpbmVkIG9uIFtbU2V0XV0gcmVjZWl2ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjUzMworCisgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgorCisgICAgICAgIDEuIENyZWF0ZSBhIHNldHRlci1sZXNzIEN1c3RvbUdldHRl
clNldHRlciBpbnN0ZWFkIG9mIGdlbmVyYXRpbmcgImNvbnN0cnVjdG9yIiBzZXR0ZXIuCisgICAg
ICAgIDIuIFJlbW92ZSB1bnVzZWQgJG5lZWRzQ29uc3RydWN0b3JUYWJsZSB2YXJpYWJsZS4KKyAg
ICAgICAgMy4gUmVtb3ZlIFtMZWdhY3lOb0ludGVyZmFjZU9iamVjdF0gYnJhbmNoIGFzIGl0J3Mg
cHJlY2x1ZGVkIGJ5IE5lZWRzQ29uc3RydWN0b3JQcm9wZXJ0eS4KKworICAgICAgICBUZXN0OiBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcv
aW50ZXJmYWNlLXByb3RvdHlwZS1jb25zdHJ1Y3Rvci1zZXQtcmVjZWl2ZXIuaHRtbAorCisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5l
cmF0ZVByb3BlcnRpZXNIYXNoVGFibGUpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTLyo6IFVwZGF0ZWQuCisKIDIw
MjAtMTAtMTkgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbR1BVIFByb2Nlc3NdIENsZWFuIHRoZSBEaXNwbGF5TGlzdCByZWNvcmRpbmcgb2Yg
dGhlIE5hdGl2ZUltYWdlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjY4Njc0KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkK
QEAgLTMzODEsOCArMzM4MSw3IEBAIHN1YiBHZW5lcmF0ZVByb3BlcnRpZXNIYXNoVGFibGUKICAg
ICAgICAgbXkgJGdldHRlciA9ICJqcyIgLiAkaW50ZXJmYWNlTmFtZSAuICJDb25zdHJ1Y3RvciI7
CiAgICAgICAgIHB1c2goQCRoYXNoVmFsdWUxLCAkZ2V0dGVyKTsKIAotICAgICAgICBteSAkc2V0
dGVyID0gInNldEpTIiAuICRpbnRlcmZhY2VOYW1lIC4gIkNvbnN0cnVjdG9yIjsKLSAgICAgICAg
cHVzaChAJGhhc2hWYWx1ZTIsICRzZXR0ZXIpOworICAgICAgICBwdXNoKEAkaGFzaFZhbHVlMiwg
IjAiKTsKICAgICAgICAgcHVzaChAJGhhc2hTcGVjaWFscywgInN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkiKTsKICAgICB9CiAKQEAgLTQzMTks
OSArNDMxOCw2IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIGlmIChOZWVk
c0NvbnN0cnVjdG9yUHJvcGVydHkoJGludGVyZmFjZSkpIHsKICAgICAgICAgICAgIG15ICRjb25z
dHJ1Y3RvckdldHRlciA9ICJqcyIgLiAkaW50ZXJmYWNlTmFtZSAuICJDb25zdHJ1Y3RvciI7CiAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
JHtjb25zdHJ1Y3RvckdldHRlcn0pO1xuIik7Ci0KLSAgICAgICAgICAgIG15ICRjb25zdHJ1Y3Rv
clNldHRlciA9ICJzZXRKUyIgLiAkaW50ZXJmYWNlTmFtZSAuICJDb25zdHJ1Y3RvciI7Ci0gICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoJHtj
b25zdHJ1Y3RvclNldHRlcn0pO1xuIik7CiAgICAgICAgIH0KIAogICAgICAgICBmb3JlYWNoIG15
ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKQEAgLTQ0MzgsOCArNDQz
NCw2IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIG15ICVjb25kaXRpb25h
bHMgPSAoKTsKICAgICAgICAgbXkgJXJlYWRXcml0ZUNvbmRpdGlvbmFscyA9ICgpOwogCi0gICAg
ICAgIG15ICRuZWVkc0NvbnN0cnVjdG9yVGFibGUgPSAwOwotCiAgICAgICAgIGZvcmVhY2ggbXkg
JGNvbnN0YW50IChAeyRpbnRlcmZhY2UtPmNvbnN0YW50c30pIHsKICAgICAgICAgICAgIG15ICRu
YW1lID0gJGNvbnN0YW50LT5uYW1lOwogICAgICAgICAgICAgcHVzaChAaGFzaEtleXMsICRuYW1l
KTsKQEAgLTQ5MDcsMzIgKzQ5MDEsOCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWND
YXN0PCR7Y2xhc3NOYW1lfVByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKFVOTElLRUxZKCFw
cm90b3R5cGUpKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTtcbiIp
OwotCi0gICAgICAgIGlmICghJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5
Tm9JbnRlcmZhY2VPYmplY3R9KSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKCR7Y2xhc3NOYW1lfTo6Z2V0Q29uc3RydWN0b3IoSlND
OjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkp
O1xuIik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBKU1ZhbHVlIGNvbnN0cnVjdG9yID0gJHtjbGFzc05hbWV9Q29uc3RydWN0b3I6OmNyZWF0
ZShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCAke2NsYXNzTmFtZX1Db25zdHJ1Y3Rv
cjo6Y3JlYXRlU3RydWN0dXJlKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksICpwcm90
b3R5cGUtPmdsb2JhbE9iamVjdCgpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpLT5vYmplY3RQ
cm90b3R5cGUoKSksICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihwcm90b3R5cGUtPmdsb2Jh
bE9iamVjdCgpKSk7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIC8v
IFNoYWRvd2luZyBjb25zdHJ1Y3RvciBwcm9wZXJ0eSB0byBlbnN1cmUgcmV1c2luZyB0aGUgc2Ft
ZSBjb25zdHJ1Y3RvciBvYmplY3RcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVj
dG9yLCBjb25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSk7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0b3IpO1xuIik7Ci0gICAgICAgIH0K
KyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSgk
e2NsYXNzTmFtZX06OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVj
dCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIn1cblxuIik7Ci0KLSAgICAgICAgbXkgJGNvbnN0cnVjdG9yU2V0dGVyID0gInNl
dEpTIiAuICRpbnRlcmZhY2VOYW1lIC4gIkNvbnN0cnVjdG9yIjsKLQotICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUigke2NvbnN0cnVjdG9yU2V0dGVy
fSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpXG4iKTsKLSAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJ7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
Vk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTtcbiIpOwotICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiBwcm90
b3R5cGUgPSBqc0R5bmFtaWNDYXN0PCR7Y2xhc3NOYW1lfVByb3RvdHlwZSo+KHZtLCBKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSk7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVy
biBmYWxzZTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKLSAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29u
c3RydWN0b3JcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gcHJv
dG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJ9XG5cbiIpOwotCiAgICAgfQogCiAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAeyRp
bnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDI2
ODY3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdp
bmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDYgQEAgdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIC8vIEF0dHJpYnV0ZXMKIAogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdp
bmRvd0NvbnN0cnVjdG9yKTsKLUpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNET01XaW5k
b3dDb25zdHJ1Y3Rvcik7CiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzRE9NV2luZG93X0RP
TVdpbmRvd0NvbnN0cnVjdG9yKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNET01X
aW5kb3dfRE9NV2luZG93Q29uc3RydWN0b3IpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0RPTVdpbmRvd19FeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dDb25zdHJ1Y3Rvcik7CkBAIC0xNzgs
NyArMTc3LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTRAogCiBz
dGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNET01XaW5kb3dQcm90b3R5cGVUYWJsZVZhbHVl
c1tdID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNET01XaW5kb3dDb25zdHJ1
Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTRE9NV2luZG93Q29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJjb25zdHJ1Y3RvciIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNET01XaW5kb3dDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKIH07CiAKIHN0YXRpYyBjb25z
dCBIYXNoVGFibGUgSlNET01XaW5kb3dQcm90b3R5cGVUYWJsZSA9IHsgMSwgMSwgdHJ1ZSwgSlNE
T01XaW5kb3c6OmluZm8oKSwgSlNET01XaW5kb3dQcm90b3R5cGVUYWJsZVZhbHVlcywgSlNET01X
aW5kb3dQcm90b3R5cGVUYWJsZUluZGV4IH07CkBAIC0yMjgsMTkgKzIyNyw2IEBAIEpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdpbmRvd0NvbnMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTRE9NV2luZG93OjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLUpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0RPTVdpbmRvd0NvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9i
YWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNET01XaW5kb3dQcm90b3R5
cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSgh
cHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNo
YWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSkpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNET01XaW5kb3df
RE9NV2luZG93Q29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTRE9NV2luZG93JiB0aGlzT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZS5jcHAJKHJldmlzaW9uIDI2ODY3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogLy8gQXR0
cmlidXRlcwogCiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGVDb25zdHJ1Y3Rvcik7Ci1KU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcik7CiBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVfRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGVDb25zdHJ1Y3Rvcik7CiBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGVfRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rv
cik7CiAKQEAgLTkxLDcgKzkwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaElu
ZGV4IEpTRAogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNEZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZVByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewotICAgIHsgImNvbnN0cnVjdG9y
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0Rl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJjb25zdHJ1
Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkg
fSB9LAogfTsKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU0RlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlUHJvdG90eXBlVGFibGUgPSB7IDEsIDEsIHRydWUsIEpTRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGU6OmluZm8oKSwgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZVRh
YmxlVmFsdWVzLCBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlVGFibGVJbmRl
eCB9OwpAQCAtMTM5LDE5ICsxMzgsNiBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNEZWRp
Y2F0ZWRXb3JrCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0RlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
LCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU0RlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rv
cgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVfRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSYgdGhpc09iamVjdCkKIHsK
ICAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5jcHAJKHJldmlzaW9uIDI2ODY3NCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRUb1dvcmtlckFu
ZFdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDcgKzkyLDYgQEAgSlNDX0RFQ0xBUkVf
SE9TVF9GVU5DVElPTihqc0V4cG9zZWRUb1dvcgogLy8gQXR0cmlidXRlcwogCiBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Q29uc3RydWN0b3IpOwot
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0Nv
bnN0cnVjdG9yKTsKIAogY2xhc3MgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dQcm90b3R5cGUg
ZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTE2NCw3
ICsxNjMsNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU0V4cG9zZWRUb1dvCiAKIHN0
YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd1Byb3Rv
dHlwZVRhYmxlVmFsdWVzW10gPQogewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0V4
cG9zZWRUb1dvcmtlckFuZFdpbmRvd0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNFeHBvc2VkVG9Xb3JrZXJBbmRX
aW5kb3dDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0V4
cG9zZWRUb1dvcmtlckFuZFdpbmRvd0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgImRvU29tZXRo
aW5nIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0
aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0
aW9uPihqc0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd1Byb3RvdHlwZUZ1bmN0aW9uX2RvU29tZXRo
aW5nKSwgKGludHB0cl90KSAoMCkgfSB9LAogfTsKIApAQCAtMjI5LDE5ICsyMjgsNiBAQCBKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNFeHBvc2VkVG9Xb3JrCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdzo6Z2V0Q29uc3RydWN0b3IoSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwog
fQogCi1KU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5k
b3dDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCi17Ci0g
ICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUg
PSBqc0R5bmFtaWNDYXN0PEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93UHJvdG90eXBlKj4odm0s
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlw
ZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcg
YSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpKTsKLX0KLQogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzRXhwb3Nl
ZFRvV29ya2VyQW5kV2luZG93UHJvdG90eXBlRnVuY3Rpb25fZG9Tb21ldGhpbmdCb2R5KEpTQzo6
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxs
RnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdz46
OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEds
b2JhbFNjb3BlLmNwcAkocmV2aXNpb24gMjY4Njc0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Nyw3ICs0Nyw2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAvLyBBdHRyaWJ1
dGVzCiAKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNQYWludFdvcmtsZXRHbG9iYWxTY29w
ZUNvbnN0cnVjdG9yKTsKLUpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNQYWludFdvcmts
ZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNQ
YWludFdvcmtsZXRHbG9iYWxTY29wZV9QYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9y
KTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNQYWludFdvcmtsZXRHbG9iYWxTY29w
ZV9QYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yKTsKIApAQCAtOTEsNyArOTAsNyBA
QCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNQCiAKIHN0YXRpYyBjb25z
dCBIYXNoVGFibGVWYWx1ZSBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlUHJvdG90eXBlVGFibGVW
YWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1
Y3RvcikgfSB9LAorICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1BhaW50V29ya2xldEds
b2JhbFNjb3BlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiB9OwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxl
IEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVQcm90b3R5cGVUYWJsZSA9IHsgMSwgMSwgdHJ1ZSwg
SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6aW5mbygpLCBKU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlUHJvdG90eXBlVGFibGVWYWx1ZXMsIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVQcm90b3R5
cGVUYWJsZUluZGV4IH07CkBAIC0xMzksMTkgKzEzOCw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc1BhaW50V29ya2xldEcKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGU6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2Jh
bE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvciwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVj
dG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiBzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNQYWludFdvcmtsZXRHbG9iYWxTY29wZV9QYWludFdvcmtsZXRH
bG9iYWxTY29wZUNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlJiB0aGlzT2JqZWN0KQogewogICAgIFVO
VVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAkocmV2aXNpb24gMjY4Njc0KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNiBAQCB1c2luZyBuYW1lc3BhY2UgSlND
OwogLy8gQXR0cmlidXRlcwogCiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpOwotSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yKTsKIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVfU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlQ29uc3RydWN0b3IpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZV9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcik7
CiAKQEAgLTkxLDcgKzkwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4
IEpTUwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGVQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKIH07CiAK
IHN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5
cGVUYWJsZSA9IHsgMSwgMSwgdHJ1ZSwgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmluZm8o
KSwgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGVUYWJsZVZhbHVlcywgSlNTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGVUYWJsZUluZGV4IH07CkBAIC0xMzksMTkgKzEz
OCw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1NlcnZpY2VXb3JrZXIKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpnZXRDb25zdHJ1
Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9i
amVjdCgpKSk7CiB9CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwot
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8q
IHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVQcm90
b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VM
WSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8v
IFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGVfU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTU2VydmljZVdvcmtlckds
b2JhbFNjb3BlJiB0aGlzT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDRVJlYWN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcAkocmV2aXNpb24gMjY4Njc0
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVh
Y3Rpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNiBAQCBKU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKGpzVGVzdENFUmVhY3RpCiAvLyBBdHRyaWJ1dGVzCiAKIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNUZXN0Q0VSZWFjdGlvbnNDb25zdHJ1Y3Rvcik7Ci1KU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdENFUmVhY3Rpb25zQ29uc3RydWN0b3IpOwogSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RDRVJlYWN0aW9uc19hdHRyaWJ1dGVXaXRoQ0VSZWFj
dGlvbnMpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RDRVJlYWN0aW9uc19h
dHRyaWJ1dGVXaXRoQ0VSZWFjdGlvbnMpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rl
c3RDRVJlYWN0aW9uc19yZWZsZWN0QXR0cmlidXRlV2l0aENFUmVhY3Rpb25zKTsKQEAgLTEyNSw3
ICsxMjQsNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RDRVJlYWN0CiAKIHN0
YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZVRhYmxl
VmFsdWVzW10gPQogewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RDRVJlYWN0
aW9uc0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0Q0VSZWFjdGlvbnNDb25zdHJ1Y3RvcikgfSB9LAorICAg
IHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RDRVJlYWN0aW9uc0NvbnN0cnVjdG9yKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkg
fSB9LAogICAgIHsgImF0dHJpYnV0ZVdpdGhDRVJlYWN0aW9ucyIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0Q0VSZWFjdGlvbnNfYXR0
cmlidXRlV2l0aENFUmVhY3Rpb25zKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0Q0VSZWFjdGlvbnNfYXR0cmlidXRlV2l0aENF
UmVhY3Rpb25zKSB9IH0sCiAgICAgeyAicmVmbGVjdEF0dHJpYnV0ZVdpdGhDRVJlYWN0aW9ucyIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNU
ZXN0Q0VSZWFjdGlvbnNfcmVmbGVjdEF0dHJpYnV0ZVdpdGhDRVJlYWN0aW9ucyksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdENF
UmVhY3Rpb25zX3JlZmxlY3RBdHRyaWJ1dGVXaXRoQ0VSZWFjdGlvbnMpIH0gfSwKICAgICB7ICJz
dHJpbmdpZmllckF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0Q0VSZWFjdGlvbnNfc3RyaW5naWZpZXJBdHRyaWJ1dGUp
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU1Rlc3RDRVJlYWN0aW9uc19zdHJpbmdpZmllckF0dHJpYnV0ZSkgfSB9LApAQCAtMjAyLDE5
ICsyMDEsNiBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0Q0VSZWFjdGlvCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RDRVJlYWN0aW9uczo6Z2V0Q29uc3RydWN0b3Io
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3Qo
KSkpOwogfQogCi1KU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0Q0VSZWFjdGlvbnND
b25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCi17Ci0gICAg
Vk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdENFUmVhY3Rpb25zUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBj
b25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0K
LQogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdENFUmVhY3Rpb25zX2F0dHJpYnV0ZVdpdGhD
RVJlYWN0aW9uc0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNU
ZXN0Q0VSZWFjdGlvbnMmIHRoaXNPYmplY3QpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFj
dGlvbnNTdHJpbmdpZmllci5jcHAJKHJldmlzaW9uIDI2ODY3NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNiBAQCBKU0NfREVDTEFSRV9IT1NUX0ZVTkNU
SU9OKGpzVGVzdENFUmVhY3RpCiAvLyBBdHRyaWJ1dGVzCiAKIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllckNvbnN0cnVjdG9yKTsKLUpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllckNvbnN0cnVj
dG9yKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdp
Zmllcl92YWx1ZSk7CiBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdENFUmVhY3Rp
b25zU3RyaW5naWZpZXJfdmFsdWUpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RD
RVJlYWN0aW9uc1N0cmluZ2lmaWVyX3ZhbHVlV2l0aG91dFJlYWN0aW9ucyk7CkBAIC0xMTIsNyAr
MTExLDcgQEAgdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0Q0VSZWFjdAogCiBzdGF0
aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclByb3Rv
dHlwZVRhYmxlVmFsdWVzW10gPQogewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RDRVJlYWN0aW9uc1N0
cmluZ2lmaWVyQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgInZh
bHVlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyX3ZhbHVlKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0Q0VSZWFjdGlvbnNT
dHJpbmdpZmllcl92YWx1ZSkgfSB9LAogICAgIHsgInZhbHVlV2l0aG91dFJlYWN0aW9ucyIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
Q0VSZWFjdGlvbnNTdHJpbmdpZmllcl92YWx1ZVdpdGhvdXRSZWFjdGlvbnMpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RDRVJl
YWN0aW9uc1N0cmluZ2lmaWVyX3ZhbHVlV2l0aG91dFJlYWN0aW9ucykgfSB9LAogICAgIHsgInRv
U3RyaW5nIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1
bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1
bmN0aW9uPihqc1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90eXBlRnVuY3Rpb25fdG9T
dHJpbmcpLCAoaW50cHRyX3QpICgwKSB9IH0sCkBAIC0xODQsMTkgKzE4Myw2IEBAIEpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RDRVJlYWN0aW8KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0
Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0K
IAotSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZp
ZXJDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCi17Ci0g
ICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQcm90b3R5cGUqPih2
bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90
eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2lu
ZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSkpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0Q0VSZWFjdGlvbnNT
dHJpbmdpZmllcl92YWx1ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllciYgdGhpc09iamVjdCkKIHsKICAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
YWxsVHJhY2VyLmNwcAkocmV2aXNpb24gMjY4Njc0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02OCw3ICs2OCw2IEBAIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0Q2FsbFRyYWMK
IC8vIEF0dHJpYnV0ZXMKIAogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RDYWxsVHJh
Y2VyQ29uc3RydWN0b3IpOwotSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RDYWxs
VHJhY2VyQ29uc3RydWN0b3IpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RDYWxs
VHJhY2VyX3Rlc3RBdHRyaWJ1dGVJbnRlcmZhY2UpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU1Rlc3RDYWxsVHJhY2VyX3Rlc3RBdHRyaWJ1dGVJbnRlcmZhY2UpOwogSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RDYWxsVHJhY2VyX3Rlc3RBdHRyaWJ1dGVTcGVjaWZpZWQp
OwpAQCAtMTQwLDcgKzEzOSw3IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdENh
bGxUcmEKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdENhbGxUcmFjZXJQcm90
b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNU
ZXN0Q2FsbFRyYWNlckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0Q2FsbFRyYWNlckNvbnN0cnVjdG9yKSB9
IH0sCisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENhbGxUcmFjZXJDb25zdHJ1
Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KDApIH0gfSwKICAgICB7ICJ0ZXN0QXR0cmlidXRlSW50ZXJmYWNlIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RDYWxsVHJhY2Vy
X3Rlc3RBdHRyaWJ1dGVJbnRlcmZhY2UpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RDYWxsVHJhY2VyX3Rlc3RBdHRyaWJ1dGVJ
bnRlcmZhY2UpIH0gfSwKICAgICB7ICJ0ZXN0QXR0cmlidXRlU3BlY2lmaWVkIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RDYWxsVHJh
Y2VyX3Rlc3RBdHRyaWJ1dGVTcGVjaWZpZWQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RDYWxsVHJhY2VyX3Rlc3RBdHRyaWJ1
dGVTcGVjaWZpZWQpIH0gfSwKICAgICB7ICJ0ZXN0QXR0cmlidXRlV2l0aFZhcmlhbnQiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENh
bGxUcmFjZXJfdGVzdEF0dHJpYnV0ZVdpdGhWYXJpYW50KSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0Q2FsbFRyYWNlcl90ZXN0
QXR0cmlidXRlV2l0aFZhcmlhbnQpIH0gfSwKQEAgLTIyMiwxOSArMjIxLDYgQEAgSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzVGVzdENhbGxUcmFjZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNUZXN0Q2FsbFRyYWNlcjo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi1KU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0Q2FsbFRyYWNlckNvbnN0cnVjdG9yLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxl
eGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q2Fs
bFRyYWNlclByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAg
aWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4g
cHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc1Rlc3RDYWxsVHJhY2VyX3Rlc3RBdHRyaWJ1dGVJbnRlcmZhY2VHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdENhbGxUcmFjZXImIHRoaXNPYmplY3Qp
CiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVj
dG9yLmNwcAkocmV2aXNpb24gMjY4Njc0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogLy8gQXR0
cmlidXRlcwogCiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IpOwotSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKTsKIAogY2xh
c3MgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUgZmluYWwgOiBw
dWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTEwNiw3ICsxMDUsNyBA
QCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RDbGFzc1dpCiAKIHN0YXRpYyBjb25z
dCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3Rv
dHlwZVRhYmxlVmFsdWVzW10gPQogewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgImNvbnN0cnVj
dG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVj
dG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oMCkgfSB9LAogfTsKIAogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRp
bkNvbnN0cnVjdG9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0Q2xhc3NXaXRoSlNCdWlsdGlu
Q29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlKSB9
OwpAQCAtMTY1LDE5ICsxNjQsNiBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0Q2xh
c3NXaXRoCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2Jq
ZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi1KU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rv
ciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCi17Ci0gICAgVk0mIHZtID0g
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlKj4odm0sIEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkp
IHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBi
dWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpKTsKLX0KLQogSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3I6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKIHsKICAgICBhdXRvJiBjbGll
bnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0
aW9uYWxJbmNsdWRlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuY3BwCShyZXZpc2lvbiAy
Njg2NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q29uZGl0aW9uYWxJbmNsdWRlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3LDcgKzg3LDYgQEAg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RDb25kaXRpbwogLy8gQXR0cmlidXRlcwog
CiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNDb25z
dHJ1Y3Rvcik7Ci1KU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdENvbmRpdGlvbmFs
SW5jbHVkZXNDb25zdHJ1Y3Rvcik7CiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXNfdGVzdEF0dHIpOwogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwg
RU5BQkxFKENvbmRpdGlvbjIzKQogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzX21peGluUmVhZE9ubHlBdHRyaWJ1dGUpOwpAQCAtMjE3LDcgKzIxNiw3
IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdENvbmRpdGkKIAogc3RhdGljIGNv
bnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVUYWJs
ZVZhbHVlc1tdID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0Q29uZGl0
aW9uYWxJbmNsdWRlc0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0NvbnN0
cnVjdG9yKSB9IH0sCisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENvbmRpdGlv
bmFsSW5jbHVkZXNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJ0ZXN0QXR0ciIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzX3Rlc3RBdHRy
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
MCkgfSB9LAogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQog
ICAgIHsgIm1peGluUmVhZE9ubHlBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc19taXhpblJlYWRPbmx5QXR0cmlidXRlKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkg
fSB9LApAQCAtNTAwLDE5ICs0OTksNiBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0
Q29uZGl0aW9uCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RDb25kaXRpb25hbElu
Y2x1ZGVzOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBw
cm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDb25kaXRp
b25hbEluY2x1ZGVzUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
LSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJv
cihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJl
dHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0
b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNfdGVzdEF0dHJHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMmIHRo
aXNPYmplY3QpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDb25kaXRpb25hbGx5UmVhZFdyaXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZS5j
cHAJKHJldmlzaW9uIDI2ODY3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTUsNyArNTUsNiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogLy8gQXR0cmlidXRlcwogCiBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVDb25z
dHJ1Y3Rvcik7Ci1KU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdENvbmRpdGlvbmFs
bHlSZWFkV3JpdGVDb25zdHJ1Y3Rvcik7CiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVz
dENvbmRpdGlvbmFsbHlSZWFkV3JpdGVfY29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZSk7
CiAjaWYgRU5BQkxFKENPTkRJVElPTikKIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNU
ZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZV9jb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRl
KTsKQEAgLTE1Nyw3ICsxNTYsNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RD
b25kaXRpCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RDb25kaXRpb25hbGx5
UmVhZFdyaXRlUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3Ii
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVDb25zdHJ1Y3RvciksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVz
dENvbmRpdGlvbmFsbHlSZWFkV3JpdGVDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgImNvbnN0cnVj
dG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlQ29uc3RydWN0b3IpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9
IH0sCiAjaWYgRU5BQkxFKENPTkRJVElPTikKICAgICB7ICJjb25kaXRpb25hbGx5UmVhZFdyaXRl
QXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlX2NvbmRpdGlvbmFsbHlSZWFkV3Jp
dGVBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlX2NvbmRpdGlvbmFsbHlS
ZWFkV3JpdGVBdHRyaWJ1dGUpIH0gfSwKICNlbHNlCkBAIC0yODQsMTkgKzI4Myw2IEBAIEpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RDb25kaXRpb24KICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGU6OmdldENvbnN0cnVjdG9yKEpTQzo6
Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsK
IH0KIAotSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdENvbmRpdGlvbmFsbHlSZWFk
V3JpdGVDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCi17
Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5
cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVQcm90b3R5cGUq
Pih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJv
dG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRv
d2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSkpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0Q29uZGl0aW9u
YWxseVJlYWRXcml0ZV9jb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdy
aXRlJiB0aGlzT2JqZWN0KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RE9NSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAkocmV2aXNpb24gMjY4Njc0KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDYgQEAgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
Tihqc1Rlc3RET01KSVRQcgogLy8gQXR0cmlidXRlcwogCiBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzVGVzdERPTUpJVENvbnN0cnVjdG9yKTsKLUpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNUZXN0RE9NSklUQ29uc3RydWN0b3IpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c1Rlc3RET01KSVRfYW55QXR0cik7CiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdERP
TUpJVF9ib29sZWFuQXR0cik7CiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdERPTUpJ
VF9ieXRlQXR0cik7CkBAIC01MjIsNyArNTIxLDcgQEAgdGVtcGxhdGU8PiBjb25zdCBDbGFzc0lu
Zm8gSlNUZXN0RE9NSklURAogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0RE9N
SklUUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdERPTUpJVENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0RE9NSklUQ29uc3RydWN0b3IpIH0g
fSwKKyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RE9NSklUQ29uc3RydWN0b3Ip
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigw
KSB9IH0sCiAgICAgeyAiYW55QXR0ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NSklUQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PGNvbnN0IEpTQzo6RE9NSklUOjpHZXR0ZXJT
ZXR0ZXIqPigmRE9NSklUQXR0cmlidXRlRm9yVGVzdERPTUpJVEFueUF0dHIpLCAoaW50cHRyX3Qp
ICgwKSB9IH0sCiAgICAgeyAiYm9vbGVhbkF0dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUpJVEF0dHJpYnV0ZSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxjb25zdCBKU0M6OkRPTUpJVDo6
R2V0dGVyU2V0dGVyKj4oJkRPTUpJVEF0dHJpYnV0ZUZvclRlc3RET01KSVRCb29sZWFuQXR0ciks
IChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJieXRlQXR0ciIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NSklUQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PGNvbnN0IEpTQzo6
RE9NSklUOjpHZXR0ZXJTZXR0ZXIqPigmRE9NSklUQXR0cmlidXRlRm9yVGVzdERPTUpJVEJ5dGVB
dHRyKSwgKGludHB0cl90KSAoMCkgfSB9LApAQCAtNjI1LDE5ICs2MjQsNiBAQCBKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNUZXN0RE9NSklUQ29uCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU1Rlc3RET01KSVQ6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9i
amVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTVGVzdERPTUpJVENvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9i
YWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RE9NSklUUHJvdG90
eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFko
IXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBT
aGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJ
VF9hbnlBdHRyR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rl
c3RET01KSVQmIHRoaXNPYmplY3QpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTi5jcHAJKHJl
dmlzaW9uIDI2ODY3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3REZWZhdWx0VG9KU09OLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNiBA
QCBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdERlZmF1bHRUCiAvLyBBdHRyaWJ1dGVz
CiAKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0RGVmYXVsdFRvSlNPTkNvbnN0cnVj
dG9yKTsKLUpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0RGVmYXVsdFRvSlNPTkNv
bnN0cnVjdG9yKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0RGVmYXVsdFRvSlNP
Tl9sb25nQXR0cmlidXRlKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0RGVmYXVs
dFRvSlNPTl9lbmFibGVkQnlTZXR0aW5nc0F0dHJpYnV0ZSk7CiAjaWYgRU5BQkxFKFRFU1RfQ09O
RElUSU9OQUwpCkBAIC0xNjMsNyArMTYyLDcgQEAgdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8g
SlNUZXN0RGVmYXVsdAogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0RGVmYXVs
dFRvSlNPTlByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewotICAgIHsgImNvbnN0cnVjdG9yIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3REZWZhdWx0VG9KU09OQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3REZWZhdWx0VG9K
U09OQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
RGVmYXVsdFRvSlNPTkNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgImxvbmdBdHRyaWJ1dGUiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RGVmYXVsdFRvSlNPTl9sb25nQXR0
cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oMCkgfSB9LAogICAgIHsgImVuYWJsZWRCeVNldHRpbmdzQXR0cmlidXRlIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdERlZmF1bHRUb0pTT05fZW5hYmxlZEJ5U2V0
dGluZ3NBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAjaWYgRU5BQkxFKFRFU1RfQ09ORElUSU9OQUwpCkBAIC0y
NzEsMTkgKzI3MCw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3REZWZhdWx0VG8K
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdERlZmF1bHRUb0pTT046OmdldENvbnN0
cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFs
T2JqZWN0KCkpKTsKIH0KIAotSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdERlZmF1
bHRUb0pTT05Db25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
Ci17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90
b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdERlZmF1bHRUb0pTT05Qcm90b3R5cGUqPih2bSwg
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBl
KSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBh
IGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSkpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RGVmYXVsdFRvSlNPTl9s
b25nQXR0cmlidXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U1Rlc3REZWZhdWx0VG9KU09OJiB0aGlzT2JqZWN0KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLmNwcAkocmV2aXNpb24gMjY4Njc0
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1
bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0
LDYgQEAgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3REZWZhdWx0VAogLy8gQXR0cmli
dXRlcwogCiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdERlZmF1bHRUb0pTT05GaWx0
ZXJlZEJ5RXhwb3NlZENvbnN0cnVjdG9yKTsKLUpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29uc3RydWN0b3IpOwogSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRf
bm9ybWFsQXR0cmlidXRlKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0RGVmYXVs
dFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkX2ZpbHRlcmVkQnlFeHBvc2VkV2luZG93QXR0cmlidXRl
KTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVk
QnlFeHBvc2VkX2ZpbHRlcmVkQnlFeHBvc2VkV29ya2VyQXR0cmlidXRlKTsKQEAgLTExMiw3ICsx
MTEsNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3REZWZhdWx0CiAKIHN0YXRp
YyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9z
ZWRQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29uc3RydWN0b3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rl
c3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsg
ImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9z
ZWRDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJub3JtYWxBdHRyaWJ1dGUiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2Vk
X25vcm1hbEF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJmaWx0ZXJlZEJ5RXhwb3NlZFdpbmRvd0F0
dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3REZWZhdWx0VG9K
U09ORmlsdGVyZWRCeUV4cG9zZWRfZmlsdGVyZWRCeUV4cG9zZWRXaW5kb3dBdHRyaWJ1dGUpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9
IH0sCiAgICAgeyAiZmlsdGVyZWRCeUV4cG9zZWRXb3JrZXJBdHRyaWJ1dGUiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2Vk
X2ZpbHRlcmVkQnlFeHBvc2VkV29ya2VyQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LApAQCAtMjAyLDE5ICsyMDEs
NiBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0RGVmYXVsdFRvCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ6Omdl
dENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+
Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVz
dERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZENvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGlj
YWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RGVmYXVs
dFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1
Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZF9u
b3JtYWxBdHRyaWJ1dGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCYgdGhpc09iamVjdCkKIHsKICAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05J
bmRpcmVjdEluaGVyaXRhbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFu
Y2UuY3BwCShyZXZpc2lvbiAyNjg2NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAvLyBB
dHRyaWJ1dGVzCiAKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0RGVmYXVsdFRvSlNP
TkluZGlyZWN0SW5oZXJpdGFuY2VDb25zdHJ1Y3Rvcik7Ci1KU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlQ29uc3RydWN0b3Ip
OwogCiBjbGFzcyBKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZVByb3RvdHlw
ZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtOTgs
NyArOTcsNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3REZWZhdWx0CiAKIHN0
YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhl
cml0YW5jZVByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewotICAgIHsgImNvbnN0cnVjdG9yIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZUNvbnN0cnVjdG9y
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2VDb25zdHJ1Y3RvcikgfSB9
LAorICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3REZWZhdWx0VG9KU09OSW5kaXJl
Y3RJbmhlcml0YW5jZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogfTsKIAogY29uc3QgQ2xhc3NJbmZvIEpT
VGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlUHJvdG90eXBlOjpzX2luZm8gPSB7
ICJUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UiLCAmQmFzZTo6c19pbmZvLCBu
dWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05J
bmRpcmVjdEluaGVyaXRhbmNlUHJvdG90eXBlKSB9OwpAQCAtMTUxLDE5ICsxNTAsNiBAQCBKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0RGVmYXVsdFRvCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZTo6Z2V0Q29uc3Ry
dWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxP
YmplY3QoKSkpOwogfQogCi1KU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0RGVmYXVs
dFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2VDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdERlZmF1bHRUb0pT
T05JbmRpcmVjdEluaGVyaXRhbmNlUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rv
cgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogSlNDOjpJ
c29TdWJzcGFjZSogSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2U6OnN1YnNw
YWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKIHsKICAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRp
Y19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdC5jcHAJKHJldmlzaW9uIDI2ODY3NCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09O
SW5oZXJpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDYgQEAgSlNDX0RFQ0xBUkVf
SE9TVF9GVU5DVElPTihqc1Rlc3REZWZhdWx0VAogLy8gQXR0cmlidXRlcwogCiBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0Q29uc3RydWN0b3IpOwot
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdENv
bnN0cnVjdG9yKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0RGVmYXVsdFRvSlNP
TkluaGVyaXRfaW5oZXJpdExvbmdBdHRyaWJ1dGUpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdF9pbmhlcml0TG9uZ0F0dHJpYnV0ZSk7CiAK
QEAgLTEyNyw3ICsxMjYsNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3REZWZh
dWx0CiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3REZWZhdWx0VG9KU09OSW5o
ZXJpdFByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0RGVmYXVs
dFRvSlNPTkluaGVyaXRDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgImNvbnN0cnVjdG9yIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsg
ImluaGVyaXRMb25nQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdF9pbmhlcml0TG9u
Z0F0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0X2luaGVyaXRMb25nQXR0cmli
dXRlKSB9IH0sCiAgICAgeyAidG9KU09OIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdFByb3Rv
dHlwZUZ1bmN0aW9uX3RvSlNPTiksIChpbnRwdHJfdCkgKDApIH0gfSwKIH07CkBAIC0xOTIsMTkg
KzE5MSw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3REZWZhdWx0VG8KICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0OjpnZXRDb25z
dHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2Jh
bE9iamVjdCgpKSk7CiB9CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3REZWZh
dWx0VG9KU09OSW5oZXJpdENvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
OwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1
dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRQ
cm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJ
S0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAg
IC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlw
ZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0
RGVmYXVsdFRvSlNPTkluaGVyaXRfaW5oZXJpdExvbmdBdHRyaWJ1dGVHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0JiB0
aGlzT2JqZWN0KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0
RmluYWwuY3BwCShyZXZpc2lvbiAyNjg2NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTcxLDcgKzcxLDYgQEAgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rl
c3REZWZhdWx0VAogLy8gQXR0cmlidXRlcwogCiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
VGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWxDb25zdHJ1Y3Rvcik7Ci1KU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWxDb25zdHJ1Y3Rv
cik7CiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0
RmluYWxfZmluYWxMb25nQXR0cmlidXRlRm9vKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbF9maW5hbExvbmdBdHRyaWJ1dGVGb28p
OwogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZp
bmFsX2ZpbmFsTG9uZ0F0dHJpYnV0ZUJhcik7CkBAIC0xMjksNyArMTI4LDcgQEAgdGVtcGxhdGU8
PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0RGVmYXVsdAogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxl
VmFsdWUgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbFByb3RvdHlwZVRhYmxlVmFsdWVz
W10gPQogewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3REZWZhdWx0VG9KU09O
SW5oZXJpdEZpbmFsQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFs
Q29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RGVm
YXVsdFRvSlNPTkluaGVyaXRGaW5hbENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgImZpbmFsTG9u
Z0F0dHJpYnV0ZUZvbyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbF9maW5hbExvbmdBdHRy
aWJ1dGVGb28pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsX2ZpbmFsTG9uZ0F0dHJp
YnV0ZUZvbykgfSB9LAogICAgIHsgImZpbmFsTG9uZ0F0dHJpYnV0ZUJhciIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RGVmYXVsdFRv
SlNPTkluaGVyaXRGaW5hbF9maW5hbExvbmdBdHRyaWJ1dGVCYXIpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3REZWZhdWx0VG9K
U09OSW5oZXJpdEZpbmFsX2ZpbmFsTG9uZ0F0dHJpYnV0ZUJhcikgfSB9LAogICAgIHsgInRvSlNP
TiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlv
biksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlv
bj4oanNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbFByb3RvdHlwZUZ1bmN0aW9uX3RvSlNP
TiksIChpbnRwdHJfdCkgKDApIH0gfSwKQEAgLTE5NSwxOSArMTk0LDYgQEAgSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzVGVzdERlZmF1bHRUbwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbDo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwogfQog
Ci1KU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRG
aW5hbENvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKLXsK
LSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlw
ZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbFByb3RvdHlw
ZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFw
cm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hh
ZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3REZWZhdWx0
VG9KU09OSW5oZXJpdEZpbmFsX2ZpbmFsTG9uZ0F0dHJpYnV0ZUZvb0dldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5h
bCYgdGhpc09iamVjdCkKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdERvbWFpblNlY3VyaXR5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RG9tYWluU2VjdXJpdHkuY3BwCShyZXZpc2lv
biAyNjg2NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RG9tYWluU2VjdXJpdHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw2IEBAIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0RG9tYWluU2UKIC8vIEF0dHJpYnV0ZXMKIAog
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3REb21haW5TZWN1cml0eUNvbnN0cnVjdG9y
KTsKLUpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0RG9tYWluU2VjdXJpdHlDb25z
dHJ1Y3Rvcik7CiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdERvbWFpblNlY3VyaXR5
X2V4Y2l0aW5nQXR0cik7CiAKIGNsYXNzIEpTVGVzdERvbWFpblNlY3VyaXR5UHJvdG90eXBlIGZp
bmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CkBAIC0xMjksNyArMTI4LDcgQEAg
dGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0RG9tYWluUwogCiBzdGF0aWMgY29uc3Qg
SGFzaFRhYmxlVmFsdWUgSlNUZXN0RG9tYWluU2VjdXJpdHlQcm90b3R5cGVUYWJsZVZhbHVlc1td
ID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RG9tYWluU2VjdXJpdHlD
b25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTVGVzdERvbWFpblNlY3VyaXR5Q29uc3RydWN0b3IpIH0gfSwKKyAgICB7
ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RG9tYWluU2VjdXJpdHlDb25zdHJ1Y3Rvciks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDAp
IH0gfSwKICAgICB7ICJleGNpdGluZ0Z1bmN0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3REb21haW5TZWN1cml0eVByb3Rv
dHlwZUZ1bmN0aW9uX2V4Y2l0aW5nRnVuY3Rpb24pLCAoaW50cHRyX3QpICgxKSB9IH0sCiAgICAg
eyAicG9zdE1lc3NhZ2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3
TmF0aXZlRnVuY3Rpb24+KGpzVGVzdERvbWFpblNlY3VyaXR5UHJvdG90eXBlRnVuY3Rpb25fcG9z
dE1lc3NhZ2UpLCAoaW50cHRyX3QpICgxKSB9IH0sCiAgICAgeyAib3ZlcmxvYWRlZE1ldGhvZCIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4o
anNUZXN0RG9tYWluU2VjdXJpdHlQcm90b3R5cGVGdW5jdGlvbl9vdmVybG9hZGVkTWV0aG9kKSwg
KGludHB0cl90KSAoMSkgfSB9LApAQCAtMjAxLDE5ICsyMDAsNiBAQCBKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNUZXN0RG9tYWluU2VjCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rl
c3REb21haW5TZWN1cml0eTo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi1KU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNUZXN0RG9tYWluU2VjdXJpdHlDb25zdHJ1Y3RvciwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdERv
bWFpblNlY3VyaXR5UHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
LSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJv
cihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJl
dHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0
b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzVGVzdERvbWFpblNlY3VyaXR5X2V4Y2l0aW5nQXR0ckdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0RG9tYWluU2VjdXJpdHkmIHRoaXNPYmpl
Y3QpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFi
bGVkQnlTZXR0aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAJKHJldmlzaW9uIDI2ODY3
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFi
bGVkQnlTZXR0aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNiBAQCBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdEVuYWJsZWRCCiAvLyBBdHRyaWJ1dGVzCiAKIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0RW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKTsK
LUpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0RW5hYmxlZEJ5U2V0dGluZ0NvbnN0
cnVjdG9yKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0RW5hYmxlZEJ5U2V0dGlu
Z19UZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKTsKIEpTQ19ERUNMQVJFX0NV
U1RPTV9TRVRURVIoc2V0SlNUZXN0RW5hYmxlZEJ5U2V0dGluZ19UZXN0U3ViT2JqRW5hYmxlZEJ5
U2V0dGluZ0NvbnN0cnVjdG9yKTsKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQpAQCAtMTQxLDcg
KzE0MCw3IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEVuYWJsZWQKIAogc3Rh
dGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGVU
YWJsZVZhbHVlc1tdID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RW5h
YmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0RW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVj
dG9yKSB9IH0sCisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEVuYWJsZWRCeVNl
dHRpbmdDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogICAgIHsg
ImVuYWJsZWRCeVNldHRpbmdBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEVuYWJsZWRCeVNldHRpbmdfZW5hYmxlZEJ5
U2V0dGluZ0F0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEVuYWJsZWRCeVNldHRpbmdfZW5hYmxlZEJ5U2V0dGlu
Z0F0dHJpYnV0ZSkgfSB9LAogI2Vsc2UKQEAgLTI3MywxOSArMjcyLDYgQEAgSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzVGVzdEVuYWJsZWRCeQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNUZXN0RW5hYmxlZEJ5U2V0dGluZzo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi1KU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0RW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93
Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0
b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
PmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIHN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RFbmFibGVkQnlTZXR0aW5nX1Rlc3RTdWJPYmpFbmFibGVk
QnlTZXR0aW5nQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTVGVzdEVuYWJsZWRCeVNldHRpbmcmIHRoaXNPYmplY3QpCiB7CiAgICAgVU5VU0VE
X1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRGb3JDb250ZXh0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxl
ZEZvckNvbnRleHQuY3BwCShyZXZpc2lvbiAyNjg2NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZvckNvbnRleHQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00OSw3ICs0OSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAvLyBBdHRyaWJ1
dGVzCiAKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0RW5hYmxlZEZvckNvbnRleHRD
b25zdHJ1Y3Rvcik7Ci1KU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdEVuYWJsZWRG
b3JDb250ZXh0Q29uc3RydWN0b3IpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RF
bmFibGVkRm9yQ29udGV4dF9UZXN0U3ViT2JqRW5hYmxlZEZvckNvbnRleHRDb25zdHJ1Y3Rvcik7
CiBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0X1Rl
c3RTdWJPYmpFbmFibGVkRm9yQ29udGV4dENvbnN0cnVjdG9yKTsKIApAQCAtMTA2LDcgKzEwNSw3
IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEVuYWJsZWQKIAogc3RhdGljIGNv
bnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0UHJvdG90eXBlVGFibGVW
YWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEVuYWJsZWRG
b3JDb250ZXh0Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RFbmFibGVkRm9yQ29udGV4dENvbnN0cnVjdG9y
KSB9IH0sCisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEVuYWJsZWRGb3JDb250
ZXh0Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPigwKSB9IH0sCiB9OwogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0RW5hYmxl
ZEZvckNvbnRleHRQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RFbmFibGVkRm9yQ29udGV4dCIs
ICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNU
ZXN0RW5hYmxlZEZvckNvbnRleHRQcm90b3R5cGUpIH07CkBAIC0xNzIsMTkgKzE3MSw2IEBAIEpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RFbmFibGVkRm8KICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0OjpnZXRDb25zdHJ1Y3RvcihKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9
CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RFbmFibGVkRm9yQ29udGV4dENv
bnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKLXsKLSAgICBW
TSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0RW5hYmxlZEZvckNvbnRleHRQcm90b3R5cGUqPih2bSwgSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewot
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUp
OwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0
LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkp
OwotfQotCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RW5hYmxlZEZvckNvbnRleHRfVGVz
dFN1Yk9iakVuYWJsZWRGb3JDb250ZXh0Q29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0JiB0aGlzT2JqZWN0
KQogewogICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI2ODY3NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw2IEBAIHRlbXBsYXRlPD4gVGVzdEV2
ZW50Q29uc3RydWN0b3I6OkluaXQgY28KIC8vIEF0dHJpYnV0ZXMKIAogSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IpOwotSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IpOwog
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RFdmVudENvbnN0cnVjdG9yX2F0dHIxKTsK
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0RXZlbnRDb25zdHJ1Y3Rvcl9hdHRyMik7
CiAjaWYgRU5BQkxFKFNQRUNJQUxfRVZFTlQpCkBAIC0yMDgsNyArMjA3LDcgQEAgdGVtcGxhdGU8
PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0RXZlbnRDbwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxl
VmFsdWUgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewot
ICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJj
b25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkg
fSB9LAogICAgIHsgImF0dHIxIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dEV2ZW50Q29uc3RydWN0b3JfYXR0cjEpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAiYXR0cjIiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RXZlbnRDb25zdHJ1Y3Rvcl9hdHRyMiksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwK
ICNpZiBFTkFCTEUoU1BFQ0lBTF9FVkVOVCkKQEAgLTI3MywxOSArMjcyLDYgQEAgSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzVGVzdEV2ZW50Q29ucwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi1KU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9y
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKLXsKLSAgICBWTSYgdm0gPSBK
U0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRo
cm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3Ry
dWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIHN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9yX2F0dHIxR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RFdmVudENvbnN0cnVjdG9y
JiB0aGlzT2JqZWN0KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RXZlbnRUYXJnZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAJKHJldmlzaW9uIDI2ODY3
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVu
dFRhcmdldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDYgQEAgSlNDX0RFQ0xBUkVf
SE9TVF9GVU5DVElPTihqc1Rlc3RFdmVudFRhcgogLy8gQXR0cmlidXRlcwogCiBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3IpOwotSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yKTsKIAogY2xh
c3MgSlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZp
bmFsT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTEwOSw3ICsxMDgsNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0
IENsYXNzSW5mbyBKU1Rlc3RFdmVudFRhCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBK
U1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewotICAgIHsgImNvbnN0
cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0RXZl
bnRUYXJnZXRDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgIml0ZW0iLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdEV2
ZW50VGFyZ2V0UHJvdG90eXBlRnVuY3Rpb25faXRlbSksIChpbnRwdHJfdCkgKDEpIH0gfSwKIH07
CiAKQEAgLTIzNiwxOSArMjM1LDYgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdEV2
ZW50VGFyZwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0RXZlbnRUYXJnZXQ6Omdl
dENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+
Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVz
dEV2ZW50VGFyZ2V0Q29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0g
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byog
cHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZSo+KHZt
LCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5
cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5n
IGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RF
dmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uX2l0ZW1Cb2R5KEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1l
IElETE9wZXJhdGlvbjxKU1Rlc3RFdmVudFRhcmdldD46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRo
aXMpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2Vw
dGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDI2ODY3NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAvLyBBdHRy
aWJ1dGVzCiAKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0RXhjZXB0aW9uQ29uc3Ry
dWN0b3IpOwotSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RFeGNlcHRpb25Db25z
dHJ1Y3Rvcik7CiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEV4Y2VwdGlvbl9uYW1l
KTsKIAogY2xhc3MgSlNUZXN0RXhjZXB0aW9uUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6
SlNOb25GaW5hbE9iamVjdCB7CkBAIC0xMDMsNyArMTAyLDcgQEAgdGVtcGxhdGU8PiBjb25zdCBD
bGFzc0luZm8gSlNUZXN0RXhjZXB0aQogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNU
ZXN0RXhjZXB0aW9uUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0
b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0RXhjZXB0aW9u
Q29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RXhj
ZXB0aW9uQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAibmFtZSIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc1Rlc3RFeGNlcHRpb25fbmFtZSksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKIH07CiAKQEAgLTE2OCwx
OSArMTY3LDYgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdEV4Y2VwdGlvbgogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0RXhjZXB0aW9uOjpnZXRDb25zdHJ1Y3RvcihK
U0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgp
KSk7CiB9CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RFeGNlcHRpb25Db25z
dHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCi17Ci0gICAgVk0m
IHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRo
cm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3Ry
dWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIHN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RFeGNlcHRpb25fbmFtZUdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0RXhjZXB0aW9uJiB0aGlzT2JqZWN0KQog
ewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJ
c1JlYWNoYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCShyZXZpc2lvbiAyNjg2
NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2Vu
ZXJhdGVJc1JlYWNoYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDYgQEAgdXNp
bmcgbmFtZXNwYWNlIEpTQzsKIC8vIEF0dHJpYnV0ZXMKIAogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IpOwotSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IpOwog
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlX2FTZWNy
ZXRBdHRyaWJ1dGUpOwogCiBjbGFzcyBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBl
IGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CkBAIC0xMDMsNyArMTAyLDcg
QEAgdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0R2VuZXJhdAogCiBzdGF0aWMgY29u
c3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZVRhYmxl
VmFsdWVzW10gPQogewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHZW5lcmF0
ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3Ry
dWN0b3IpIH0gfSwKKyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2VuZXJhdGVJ
c1JlYWNoYWJsZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgImFTZWNyZXRBdHRyaWJ1dGUiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZV9h
U2VjcmV0QXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogfTsKIApAQCAtMTc4LDE5ICsxNzcsNiBAQCBKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNUZXN0R2VuZXJhdGVJCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZN
KGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAK
LUpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29u
c3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQotewotICAgIFZN
JiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlKj4odm0sIEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsK
LSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWls
dC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
KTsKLX0KLQogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVf
YVNlY3JldEF0dHJpYnV0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSYgdGhpc09iamVjdCkKIHsKICAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEds
b2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDI2ODY3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDgsNyArMTQ4LDYgQEAgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RHbG9i
YWxPYgogLy8gQXR0cmlidXRlcwogCiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEds
b2JhbE9iamVjdENvbnN0cnVjdG9yKTsKLUpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNU
ZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3IpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c1Rlc3RHbG9iYWxPYmplY3RfcmVndWxhckF0dHJpYnV0ZSk7CiBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTVGVzdEdsb2JhbE9iamVjdF9yZWd1bGFyQXR0cmlidXRlKTsKIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNUZXN0R2xvYmFsT2JqZWN0X3B1YmxpY0FuZFByaXZhdGVBdHRy
aWJ1dGUpOwpAQCAtNjg4LDcgKzY4Nyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhh
c2hJbmRleCBKU1QKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEdsb2JhbE9i
amVjdFByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdENv
bnN0cnVjdG9yKSB9IH0sCisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2Jh
bE9iamVjdENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogfTsKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBK
U1Rlc3RHbG9iYWxPYmplY3RQcm90b3R5cGVUYWJsZSA9IHsgMSwgMSwgdHJ1ZSwgSlNUZXN0R2xv
YmFsT2JqZWN0OjppbmZvKCksIEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZVRhYmxlVmFsdWVz
LCBKU1Rlc3RHbG9iYWxPYmplY3RQcm90b3R5cGVUYWJsZUluZGV4IH07CkBAIC03ODUsMTkgKzc4
NCw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmoKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdEdsb2JhbE9iamVjdDo6Z2V0Q29uc3RydWN0b3IoSlND
OjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkp
OwogfQogCi1KU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0R2xvYmFsT2JqZWN0Q29u
c3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQotewotICAgIFZN
JiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RHbG9iYWxPYmplY3RQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAg
ICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNv
bnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQot
CiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0X3JlZ3VsYXJBdHRyaWJ1
dGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2Jh
bE9iamVjdCYgdGhpc09iamVjdCkKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0
dGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjY4Njc0KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7
CiAvLyBBdHRyaWJ1dGVzCiAKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0SW5kZXhl
ZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKTsKLUpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKTsKIAogY2xh
c3MgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlwZSBmaW5hbCA6IHB1Ymxp
YyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMTAyLDcgKzEwMSw3IEBAIHRl
bXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEluZGV4ZWQKIAogc3RhdGljIGNvbnN0IEhh
c2hUYWJsZVZhbHVlIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGVUYWJs
ZVZhbHVlc1tdID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0SW5kZXhl
ZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0SW5kZXhlZFNldHRlck5vSWRl
bnRpZmllckNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKIH07CiAKIGNv
bnN0IENsYXNzSW5mbyBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlOjpz
X2luZm8gPSB7ICJUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllciIsICZCYXNlOjpzX2luZm8s
IG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0SW5kZXhlZFNldHRl
ck5vSWRlbnRpZmllclByb3RvdHlwZSkgfTsKQEAgLTI1MSwxOSArMjUwLDYgQEAgSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzVGVzdEluZGV4ZWRTZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcjo6Z2V0Q29uc3RydWN0b3IoSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwog
fQogCi1KU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0SW5kZXhlZFNldHRlck5vSWRl
bnRpZmllckNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
LXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3Rv
dHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllclByb3Rv
dHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZ
KCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8g
U2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5w
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEluZGV4ZWRT
ZXR0ZXJOb0lkZW50aWZpZXI6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKIHsKICAgICBh
dXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50
RGF0YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMjY4Njc0KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDYgQEAgdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIC8vIEF0dHJpYnV0ZXMKIAogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RJ
bmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3Rvcik7Ci1KU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0
cnVjdG9yKTsKIAogY2xhc3MgSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJv
dG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CkBA
IC0xMDIsNyArMTAxLDcgQEAgdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0SW5kZXhl
ZAogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0SW5kZXhlZFNldHRlclRocm93
aW5nRXhjZXB0aW9uUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0
b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVj
dG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3IpIH0g
fSwKKyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0SW5kZXhlZFNldHRlclRocm93
aW5nRXhjZXB0aW9uQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiB9OwogCiBjb25zdCBDbGFzc0luZm8gSlNU
ZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlOjpzX2luZm8gPSB7ICJU
ZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb25Qcm90b3R5cGUpIH07CkBAIC0yNTEsMTkgKzI1MCw2IEBAIEpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc1Rlc3RJbmRleGVkU2UKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6Z2V0Q29uc3RydWN0b3IoSlND
OjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkp
OwogfQogCi1KU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0SW5kZXhlZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7
Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0
byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb25Qcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAg
IGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJu
IHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvciwg
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiBKU0M6Oklzb1N1YnNwYWNlKiBK
U1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OnN1YnNwYWNlRm9ySW1wbChKU0M6
OlZNJiB2bSkKIHsKICAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGll
bnREYXRhKj4odm0uY2xpZW50RGF0YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjY4Njc0KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDYgQEAgSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RJbmRleGVkUwogLy8gQXR0cmlidXRlcwogCiBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNv
bnN0cnVjdG9yKTsKLUpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0SW5kZXhlZFNl
dHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3IpOwogCiBjbGFzcyBKU1Rlc3RJbmRleGVkU2V0
dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFs
T2JqZWN0IHsKIHB1YmxpYzoKQEAgLTEwOCw3ICsxMDcsNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENs
YXNzSW5mbyBKU1Rlc3RJbmRleGVkCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rl
c3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsK
LSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJDb25z
dHJ1Y3RvcikgfSB9LAorICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RJbmRleGVk
U2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJpbmRleGVkU2V0
dGVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0
aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0
aW9uPihqc1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbl9p
bmRleGVkU2V0dGVyKSwgKGludHB0cl90KSAoMikgfSB9LAogfTsKIApAQCAtMjYzLDE5ICsyNjIs
NiBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0SW5kZXhlZFNlCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6OmdldENv
bnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xv
YmFsT2JqZWN0KCkpKTsKIH0KIAotSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9i
YWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW5kZXhlZFNldHRl
cldpdGhJZGVudGlmaWVyUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAg
IHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3Ry
dWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclBy
b3RvdHlwZUZ1bmN0aW9uX2luZGV4ZWRTZXR0ZXJCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElE
TE9wZXJhdGlvbjxKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI+OjpDbGFzc1BhcmFt
ZXRlciBjYXN0ZWRUaGlzKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAyNjg2NzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJm
YWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDcgKzExNiw2IEBAIEpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04oanNUZXN0SW50ZXJmYWMKIC8vIEF0dHJpYnV0ZXMKIAogSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcik7Ci1KU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKTsKICNpZiBFTkFCTEUo
Q29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNUZXN0SW50ZXJmYWNlX21peGluUmVhZE9ubHlBdHRyaWJ1dGUpOwogI2VuZGlmCkBA
IC0zMDYsNyArMzA1LDcgQEAgdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0SW50ZXJm
YQogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBl
VGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdElu
dGVyZmFjZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IpIH0gfSwKKyAg
ICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9
IH0sCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiAgICAg
eyAibWl4aW5SZWFkT25seUF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RJbnRlcmZhY2VfbWl4aW5SZWFkT25seUF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICNlbHNlCkBA
IC01MjcsMTkgKzUyNiw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RJbnRlcmZh
Y2UKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdEludGVyZmFjZTo6Z2V0Q29uc3Ry
dWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxP
YmplY3QoKSkpOwogfQogCi1KU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0SW50ZXJm
YWNlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQotewot
ICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBl
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWlu
IGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwot
fQotCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiBzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNUZXN0SW50ZXJmYWNlX21peGluUmVhZE9ubHlBdHRyaWJ1dGVH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEludGVyZmFj
ZSYgdGhpc09iamVjdCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFj
ZUxlYWRpbmdVbmRlcnNjb3JlLmNwcAkocmV2aXNpb24gMjY4Njc0KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNj
b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNiBAQCB1c2luZyBuYW1lc3BhY2Ug
SlNDOwogLy8gQXR0cmlidXRlcwogCiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdElu
dGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlQ29uc3RydWN0b3IpOwotSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZUNvbnN0cnVjdG9yKTsK
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2Nv
cmVfcmVhZG9ubHkpOwogCiBjbGFzcyBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZVBy
b3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewpAQCAtMTAzLDcg
KzEwMiw3IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEludGVyZmEKIAogc3Rh
dGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3Jl
UHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlQ29uc3RydWN0b3IpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RJbnRl
cmZhY2VMZWFkaW5nVW5kZXJzY29yZUNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiY29uc3RydWN0
b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlQ29uc3RydWN0b3Ip
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigw
KSB9IH0sCiAgICAgeyAicmVhZG9ubHkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVfcmVhZG9ubHkpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiB9OwogCkBA
IC0xNjgsMTkgKzE2Nyw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RJbnRlcmZh
Y2UKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRl
cnNjb3JlOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBw
cm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZUNvbnN0cnVjdG9yLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZN
KGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0
aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0
cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiBz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVfcmVh
ZG9ubHlHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdElu
dGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlJiB0aGlzT2JqZWN0KQogewogICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5j
cHAJKHJldmlzaW9uIDI2ODY3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDYg
QEAgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RJdGVyYWJsZQogLy8gQXR0cmlidXRl
cwogCiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEl0ZXJhYmxlQ29uc3RydWN0b3Ip
OwotSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RJdGVyYWJsZUNvbnN0cnVjdG9y
KTsKIAogY2xhc3MgSlNUZXN0SXRlcmFibGVQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpK
U05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTExMyw3ICsxMTIsNyBAQCB0ZW1wbGF0ZTw+
IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RJdGVyYWJsCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVW
YWx1ZSBKU1Rlc3RJdGVyYWJsZVByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewotICAgIHsgImNv
bnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RJdGVyYWJsZUNvbnN0cnVjdG9yKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0SXRl
cmFibGVDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RJdGVyYWJsZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgImVudHJpZXMiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdEl0ZXJh
YmxlUHJvdG90eXBlRnVuY3Rpb25fZW50cmllcyksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7
ICJrZXlzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1
bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1
bmN0aW9uPihqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uX2tleXMpLCAoaW50cHRyX3Qp
ICgwKSB9IH0sCiAgICAgeyAidmFsdWVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9u
X3ZhbHVlcyksIChpbnRwdHJfdCkgKDApIH0gfSwKQEAgLTE4MiwxOSArMTgxLDYgQEAgSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzVGVzdEl0ZXJhYmxlQwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNUZXN0SXRlcmFibGU6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEds
b2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdEl0ZXJhYmxlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4
aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJdGVy
YWJsZVByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYg
KFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJv
dG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIHN0cnVjdCBUZXN0SXRlcmFibGVJdGVy
YXRvclRyYWl0cyB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBKU0RPTUl0ZXJhdG9yVHlwZSB0eXBl
ID0gSlNET01JdGVyYXRvclR5cGU6OlNldDsKICAgICB1c2luZyBLZXlUeXBlID0gdm9pZDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0
aW5Db25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24g
MjY4Njc0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNiBA
QCBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdEpTQnVpbHRpCiAvLyBBdHRyaWJ1dGVz
CiAKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JD
b25zdHJ1Y3Rvcik7Ci1KU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yQ29uc3RydWN0b3IpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rl
c3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcl90ZXN0QXR0cmlidXRlQ3VzdG9tKTsKIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JfdGVzdEF0dHJpYnV0ZVJX
Q3VzdG9tKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3JfdGVzdEF0dHJpYnV0ZVJXQ3VzdG9tKTsKQEAgLTExMSw3ICsxMTAsNyBAQCB0ZW1w
bGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RKU0J1aWx0CiAKIHN0YXRpYyBjb25zdCBIYXNo
VGFibGVWYWx1ZSBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZVRhYmxlVmFsdWVz
W10gPQogewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3RvckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rv
cikgfSB9LAorICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3RvckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgInRlc3RBdHRyaWJ1dGUiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpCdWlsdGluKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PEJ1aWx0aW5HZW5lcmF0b3I+KHRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRlc3RBdHRy
aWJ1dGVDb2RlR2VuZXJhdG9yKSwgKGludHB0cl90KSAoc2V0VGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yVGVzdEF0dHJpYnV0ZUNvZGVHZW5lcmF0b3IpIH0gfSwKICAgICB7ICJ0ZXN0QXR0cmlidXRl
Q3VzdG9tIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yX3Rlc3RBdHRyaWJ1dGVDdXN0b20pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAidGVzdEF0dHJpYnV0
ZVJXQ3VzdG9tIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcl90ZXN0QXR0cmlidXRlUldDdXN0b20p
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcl90ZXN0QXR0cmlidXRlUldDdXN0b20pIH0gfSwK
QEAgLTE4MSwxOSArMTgwLDYgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdEpTQnVp
bHRpbgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3I6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3Rv
dHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEds
b2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RKU0J1aWx0aW5D
b25zdHJ1Y3RvclByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0g
ICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1
cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9y
LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcl90ZXN0QXR0cmlidXRlQ3VzdG9tR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3RvciYgdGhpc09iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9i
amVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmNw
cAkocmV2aXNpb24gMjY4Njc0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ5LDcgKzQ5LDYgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIC8vIEF0dHJpYnV0ZXMKIAogSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Db25zdHJ1
Y3Rvcik7Ci1KU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdExlZ2FjeUZhY3RvcnlG
dW5jdGlvbkNvbnN0cnVjdG9yKTsKIAogY2xhc3MgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9u
UHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6
CkBAIC0xNTMsNyArMTUyLDcgQEAgdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TGVn
YWN5RgogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1
bmN0aW9uUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3IiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNvbnN0cnVjdG9yKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0TGVn
YWN5RmFjdG9yeUZ1bmN0aW9uQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJjb25zdHJ1Y3RvciIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ29uc3RydWN0b3IpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiB9
OwogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uUHJvdG90eXBl
OjpzX2luZm8gPSB7ICJUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywg
bnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RMZWdhY3lGYWN0b3J5
RnVuY3Rpb25Qcm90b3R5cGUpIH07CkBAIC0yMTcsMTkgKzIxNiw2IEBAIEpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc1Rlc3RMZWdhY3lGYWMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbjo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi1KU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ29uc3Ry
dWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQotewotICAgIFZNJiB2
bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Qcm90b3R5cGUqPih2bSwgSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewot
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUp
OwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0
LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkp
OwotfQotCiBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb246OnN1
YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKIHsKICAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0
YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWls
dElucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCShyZXZpc2lvbiAyNjg2NzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5
T3ZlcnJpZGVCdWlsdElucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDYgQEAgSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RMZWdhY3lPdgogLy8gQXR0cmlidXRlcwogCiBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25z
dHJ1Y3Rvcik7Ci1KU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnNDb25zdHJ1Y3Rvcik7CiAKIGNsYXNzIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnNQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1
YmxpYzoKQEAgLTExMCw3ICsxMDksNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rl
c3RMZWdhY3lPCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0
b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvciksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgImNvbnN0
cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3Ip
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigw
KSB9IH0sCiAgICAgeyAibmFtZWRJdGVtIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJv
dG90eXBlRnVuY3Rpb25fbmFtZWRJdGVtKSwgKGludHB0cl90KSAoMSkgfSB9LAogfTsKIApAQCAt
MjI1LDE5ICsyMjQsNiBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0TGVnYWN5T3Zl
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
OjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5
cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEds
b2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
LSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJv
cihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJl
dHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0
b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGVG
dW5jdGlvbl9uYW1lZEl0ZW1Cb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxK
U1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykK
IHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE1hcExpa2UuY3BwCShyZXZpc2lvbiAyNjg2NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTYzLDcgKzYzLDYgQEAgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RNYXBMaWtl
UAogLy8gQXR0cmlidXRlcwogCiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdE1hcExp
a2VDb25zdHJ1Y3Rvcik7Ci1KU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE1hcExp
a2VDb25zdHJ1Y3Rvcik7CiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdE1hcExpa2Vf
c2l6ZSk7CiAKIGNsYXNzIEpTVGVzdE1hcExpa2VQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlND
OjpKU05vbkZpbmFsT2JqZWN0IHsKQEAgLTExOSw3ICsxMTgsNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0
IENsYXNzSW5mbyBKU1Rlc3RNYXBMaWtlCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBK
U1Rlc3RNYXBMaWtlUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0
b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdE1hcExpa2VDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE1hcExpa2VDb25z
dHJ1Y3RvcikgfSB9LAorICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RNYXBMaWtl
Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAic2l6ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdE1hcExpa2Vfc2l6ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJnZXQiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uX2dldCks
IChpbnRwdHJfdCkgKDEpIH0gfSwKICAgICB7ICJoYXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRp
dmVGdW5jdGlvbj4oanNUZXN0TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uX2hhcyksIChpbnRwdHJf
dCkgKDEpIH0gfSwKQEAgLTE5OSwxOSArMTk4LDYgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzVGVzdE1hcExpa2VDbwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0TWFwTGlr
ZTo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90
eXBlLT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi1KU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNUZXN0TWFwTGlrZUNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwot
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8q
IHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TWFwTGlrZVByb3RvdHlwZSo+KHZtLCBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUp
KSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEg
YnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RNYXBMaWtlX3NpemVHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdE1hcExpa2UmIHRo
aXNPYmplY3QpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZVdpdGhPdmVy
cmlkZGVuT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDI2ODY3NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVy
YXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNiBAQCBKU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKGpzVGVzdE1hcExpa2VXCiAvLyBBdHRyaWJ1dGVzCiAKIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc0NvbnN0
cnVjdG9yKTsKLUpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0TWFwTGlrZVdpdGhP
dmVycmlkZGVuT3BlcmF0aW9uc0NvbnN0cnVjdG9yKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc19zZXQpOwogSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25z
X3NldCk7CiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdE1hcExpa2VXaXRoT3ZlcnJp
ZGRlbk9wZXJhdGlvbnNfc2l6ZSk7CkBAIC0xMjEsNyArMTIwLDcgQEAgdGVtcGxhdGU8PiBjb25z
dCBDbGFzc0luZm8gSlNUZXN0TWFwTGlrZQogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUg
SlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc1Byb3RvdHlwZVRhYmxlVmFsdWVz
W10gPQogewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RNYXBMaWtlV2l0aE92
ZXJyaWRkZW5PcGVyYXRpb25zQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRk
ZW5PcGVyYXRpb25zQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc0NvbnN0cnVjdG9yKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9
LAogICAgIHsgInNldCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc19zZXQpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zX3NldCkgfSB9LAogICAgIHsgInNp
emUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRk
ZW5PcGVyYXRpb25zX3NpemUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAiY2xlYXIiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE1hcExpa2VXaXRo
T3ZlcnJpZGRlbk9wZXJhdGlvbnNQcm90b3R5cGVGdW5jdGlvbl9jbGVhciksIChpbnRwdHJfdCkg
KDApIH0gfSwKQEAgLTIwMSwxOSArMjAwLDYgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
VGVzdE1hcExpa2VXaQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0TWFwTGlrZVdp
dGhPdmVycmlkZGVuT3BlcmF0aW9uczo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi1KU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9u
c0NvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKLXsKLSAg
ICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc1Byb3Rv
dHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZ
KCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8g
U2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5w
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RNYXBM
aWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zX3NldEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyYg
dGhpc09iamVjdCkKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI2ODY3NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJOb0lkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw2IEBAIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CiAvLyBBdHRyaWJ1dGVzCiAKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3IpOwot
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJO
b0lkZW50aWZpZXJDb25zdHJ1Y3Rvcik7CiAKIGNsYXNzIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlck5vSWRlbnRpZmllclByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxP
YmplY3QgewogcHVibGljOgpAQCAtMTAzLDcgKzEwMiw3IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xh
c3NJbmZvIEpTVGVzdE5hbWVkQW4KIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlwZVRhYmxlVmFsdWVzW10g
PQogewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
ck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkg
fSB9LAogfTsKIAogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5v
SWRlbnRpZmllclByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
ck5vSWRlbnRpZmllciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90
eXBlKSB9OwpAQCAtMzI1LDE5ICszMjQsNiBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNU
ZXN0TmFtZWRBbmRJCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRp
ZmllckNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKLXsK
LSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlw
ZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVy
UHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5M
SUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAg
ICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5
cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYg
dm0pCiB7CiAgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0
YSo+KHZtLmNsaWVudERhdGEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCShyZXZpc2lv
biAyNjg2NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00OCw3ICs0OCw2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAvLyBBdHRyaWJ1dGVz
CiAKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3Rvcik7Ci1KU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0
b3IpOwogCiBjbGFzcyBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
blByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGlj
OgpAQCAtMTAzLDcgKzEwMiw3IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5h
bWVkQW4KIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAg
eyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93
aW5nRXhjZXB0aW9uQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJv
d2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0
b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PigwKSB9IH0sCiB9OwogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb25Qcm90b3R5cGUpIH07CkBAIC0zMjUsMTkgKzMyNCw2IEBAIEpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3ROYW1lZEFuZEkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpnZXRDb25z
dHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2Jh
bE9iamVjdCgpKSk7CiB9CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxl
eGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGUqPih2bSwgSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewot
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUp
OwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0
LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkp
OwotfQotCiBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJv
d2luZ0V4Y2VwdGlvbjo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQogewogICAgIGF1dG8m
IGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRh
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjY4Njc0KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
cldpdGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNiBAQCBKU0Nf
REVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE5hbWVkQW5kCiAvLyBBdHRyaWJ1dGVzCiAKIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElk
ZW50aWZpZXJDb25zdHJ1Y3Rvcik7Ci1KU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3IpOwogCiBjbGFz
cyBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZSBmaW5h
bCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMTEwLDcgKzEw
OSw3IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkQW4KIAogc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3IiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0
b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9y
KSB9IH0sCisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAibmFtZWRTZXR0
ZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rp
b24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rp
b24+KGpzVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVu
Y3Rpb25fbmFtZWRTZXR0ZXIpLCAoaW50cHRyX3QpICgyKSB9IH0sCiAgICAgeyAiaW5kZXhlZFNl
dHRlciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5j
dGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5j
dGlvbj4oanNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVG
dW5jdGlvbl9pbmRleGVkU2V0dGVyKSwgKGludHB0cl90KSAoMikgfSB9LAogfTsKQEAgLTMzOSwx
OSArMzM4LDYgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdE5hbWVkQW5kSQogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElk
ZW50aWZpZXI6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCks
IHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0
b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQotewotICAgIFZNJiB2bSA9
IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZSo+
KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90
b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93
aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uX25h
bWVkU2V0dGVyQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRU
aGlzKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3Bw
CShyZXZpc2lvbiAyNjg2NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDcsNyArNDcsNiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogLy8gQXR0cmlidXRlcwogCiBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllckNv
bnN0cnVjdG9yKTsKLUpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0TmFtZWREZWxl
dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3IpOwogCiBjbGFzcyBKU1Rlc3ROYW1lZERlbGV0ZXJO
b0lkZW50aWZpZXJQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0
IHsKIHB1YmxpYzoKQEAgLTEwMiw3ICsxMDEsNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5m
byBKU1Rlc3ROYW1lZERlCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3ROYW1l
ZERlbGV0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKLSAgICB7ICJj
b25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyQ29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3RvcikgfSB9LAor
ICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZp
ZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KDApIH0gfSwKIH07CiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZERl
bGV0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZERlbGV0ZXJO
b0lkZW50aWZpZXIiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllclByb3RvdHlwZSkgfTsKQEAg
LTIzNywxOSArMjM2LDYgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdE5hbWVkRGVs
ZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlm
aWVyOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90
b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVk
RGVsZXRlck5vSWRlbnRpZmllclByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1U
eXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IK
LSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNv
bnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIEpTQzo6SXNv
U3Vic3BhY2UqIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcjo6c3Vic3BhY2VGb3JJbXBs
KEpTQzo6Vk0mIHZtKQogewogICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNW
TUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMjY4Njc0
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
RGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcs
NiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogLy8gQXR0cmlidXRlcwogCiBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0
b3IpOwotSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3ROYW1lZERlbGV0ZXJUaHJv
d2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKTsKIAogY2xhc3MgSlNUZXN0TmFtZWREZWxldGVyVGhy
b3dpbmdFeGNlcHRpb25Qcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2Jq
ZWN0IHsKIHB1YmxpYzoKQEAgLTEwMiw3ICsxMDEsNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNz
SW5mbyBKU1Rlc3ROYW1lZERlCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RO
YW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewot
ICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4
Y2VwdGlvbkNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb25D
b25zdHJ1Y3RvcikgfSB9LAorICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3ROYW1l
ZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogfTsKIAogY29uc3Qg
Q2xhc3NJbmZvIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlOjpz
X2luZm8gPSB7ICJUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24iLCAmQmFzZTo6c19p
bmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkRGVs
ZXRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlKSB9OwpAQCAtMjM3LDE5ICsyMzYsNiBAQCBK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0TmFtZWREZWxlCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6Z2V0Q29uc3Ry
dWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxP
YmplY3QoKSkpOwogfQogCi1KU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0TmFtZWRE
ZWxldGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
LSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkRGVsZXRlclRo
cm93aW5nRXhjZXB0aW9uUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAg
IHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3Ry
dWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogSlNDOjpJc29TdWJz
cGFjZSogSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb246OnN1YnNwYWNlRm9ySW1w
bChKU0M6OlZNJiB2bSkKIHsKICAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpT
Vk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI2ODY3NCkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0
ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDYgQEAgSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3ROYW1lZERlbAogLy8gQXR0cmlidXRlcwogCiBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVy
Q29uc3RydWN0b3IpOwotSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3ROYW1lZERl
bGV0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKTsKIAogY2xhc3MgSlNUZXN0TmFtZWREZWxl
dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFs
T2JqZWN0IHsKIHB1YmxpYzoKQEAgLTEwNyw3ICsxMDYsNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENs
YXNzSW5mbyBKU1Rlc3ROYW1lZERlCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewot
ICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRp
ZmllckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXJDb25zdHJ1
Y3RvcikgfSB9LAorICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3ROYW1lZERlbGV0
ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgIm5hbWVkRGVsZXRlciIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4o
anNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbl9uYW1lZERl
bGV0ZXIpLCAoaW50cHRyX3QpICgxKSB9IH0sCiB9OwogCkBAIC0yNDQsMTkgKzI0Myw2IEBAIEpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3ROYW1lZERlbGUKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyOjpnZXRDb25zdHJ1Y3Rv
cihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVj
dCgpKSk7CiB9CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3ROYW1lZERlbGV0
ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
OwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1
dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50
aWZpZXJQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlm
IChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHBy
b3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5j
dGlvbl9uYW1lZERlbGV0ZXJCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxK
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRo
aXMpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
RGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRH
ZXR0ZXIuY3BwCShyZXZpc2lvbiAyNjg2NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAvLyBB
dHRyaWJ1dGVzCiAKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0TmFtZWREZWxldGVy
V2l0aEluZGV4ZWRHZXR0ZXJDb25zdHJ1Y3Rvcik7Ci1KU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyQ29uc3RydWN0b3IpOwogCiBj
bGFzcyBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZSBmaW5hbCA6
IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMTAzLDcgKzEwMiw3
IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkRGUKIAogc3RhdGljIGNv
bnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyUHJv
dG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyQ29uc3RydWN0b3IpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3ROYW1l
ZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlckNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiY29uc3Ry
dWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyQ29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPigwKSB9IH0sCiB9OwogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWREZWxldGVyV2l0
aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZERlbGV0ZXJXaXRo
SW5kZXhlZEdldHRlciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGUp
IH07CkBAIC0yNTEsMTkgKzI1MCw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RO
YW1lZERlbGUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE5hbWVkRGVsZXRlcldp
dGhJbmRleGVkR2V0dGVyOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLUpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihzZXRKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlckNvbnN0cnVj
dG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKLXsKLSAgICBWTSYgdm0g
PSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGUqPih2bSwg
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBl
KSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBh
IGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSkpOwotfQotCiBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5k
ZXhlZEdldHRlcjo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQogewogICAgIGF1dG8mIGNs
aWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZEdldHRlckNhbGxXaXRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAJKHJldmlzaW9u
IDI2ODY3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZEdldHRlckNhbGxXaXRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNiBA
QCB1c2luZyBuYW1lc3BhY2UgSlNDOwogLy8gQXR0cmlidXRlcwogCiBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGhDb25zdHJ1Y3Rvcik7Ci1KU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGhDb25zdHJ1Y3Rv
cik7CiAKIGNsYXNzIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGhQcm90b3R5cGUgZmluYWwgOiBw
dWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTEwMiw3ICsxMDEsNyBA
QCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZEdlCiAKIHN0YXRpYyBjb25z
dCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoUHJvdG90eXBlVGFibGVW
YWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkR2V0
dGVyQ2FsbFdpdGhDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGhDb25zdHJ1
Y3RvcikgfSB9LAorICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3ROYW1lZEdldHRl
ckNhbGxXaXRoQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiB9OwogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0
TmFtZWRHZXR0ZXJDYWxsV2l0aFByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdE5hbWVkR2V0dGVy
Q2FsbFdpdGgiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGhQcm90b3R5cGUpIH07CkBAIC0yMTEsMTkg
KzIxMCw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3ROYW1lZEdldHQKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGg6OmdldENvbnN0
cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFs
T2JqZWN0KCkpKTsKIH0KIAotSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE5hbWVk
R2V0dGVyQ2FsbFdpdGhDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
LSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRv
KiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGhQcm90
b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VM
WSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8v
IFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZEdl
dHRlckNhbGxXaXRoOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCiB7CiAgICAgYXV0byYg
Y2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3Bw
CShyZXZpc2lvbiAyNjg2NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00Nyw3ICs0Nyw2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAvLyBBdHRyaWJ1dGVzCiAKIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXJDb25z
dHJ1Y3Rvcik7Ci1KU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE5hbWVkR2V0dGVy
Tm9JZGVudGlmaWVyQ29uc3RydWN0b3IpOwogCiBjbGFzcyBKU1Rlc3ROYW1lZEdldHRlck5vSWRl
bnRpZmllclByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3Qgewog
cHVibGljOgpAQCAtMTAyLDcgKzEwMSw3IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpT
VGVzdE5hbWVkR2UKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE5hbWVkR2V0
dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3Ry
dWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3Ip
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAi
Y29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyQ29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPigwKSB9IH0sCiB9OwogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRHZXR0ZXJOb0lk
ZW50aWZpZXJQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZEdldHRlck5vSWRlbnRpZmll
ciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGUpIH07CkBAIC0yMTEsMTkgKzIx
MCw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3ROYW1lZEdldHQKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyOjpnZXRDb25z
dHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2Jh
bE9iamVjdCgpKSk7CiB9CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3ROYW1l
ZEdldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAg
IGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50
aWZpZXJQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlm
IChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHBy
b3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rl
c3ROYW1lZEdldHRlck5vSWRlbnRpZmllcjo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQog
ewogICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2
bS5jbGllbnREYXRhKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJX
aXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI2ODY3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNiBAQCBKU0NfREVDTEFSRV9IT1NUX0ZVTkNU
SU9OKGpzVGVzdE5hbWVkR2V0CiAvLyBBdHRyaWJ1dGVzCiAKIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKTsKLUpTQ19E
RUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllckNv
bnN0cnVjdG9yKTsKIAogY2xhc3MgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllclByb3Rv
dHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAt
MTA3LDcgKzEwNiw3IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkR2UK
IAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50
aWZpZXJQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0
TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiY29uc3Ry
dWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3Rv
ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KDApIH0gfSwKICAgICB7ICJnZXR0ZXJOYW1lIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlm
aWVyUHJvdG90eXBlRnVuY3Rpb25fZ2V0dGVyTmFtZSksIChpbnRwdHJfdCkgKDEpIH0gfSwKIH07
CiAKQEAgLTIyMiwxOSArMjIxLDYgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdE5h
bWVkR2V0dAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0TmFtZWRHZXR0ZXJXaXRo
SWRlbnRpZmllcjo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0
KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi1KU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAg
IHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29u
c3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0K
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZEdldHRlcldpdGhJ
ZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25fZ2V0dGVyTmFtZUJvZHkoSlNDOjpKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlw
ZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXI+OjpDbGFz
c1BhcmFtZXRlciBjYXN0ZWRUaGlzKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
Tm9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjY4Njc0KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogLy8g
QXR0cmlidXRlcwogCiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdE5hbWVkU2V0dGVy
Tm9JZGVudGlmaWVyQ29uc3RydWN0b3IpOwotSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKTsKIAogY2xhc3MgSlNUZXN0
TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05v
bkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTEwMiw3ICsxMDEsNyBAQCB0ZW1wbGF0ZTw+IGNv
bnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNlCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1
ZSBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQog
ewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3ROYW1lZFNldHRlck5vSWRlbnRp
ZmllckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3Rv
cikgfSB9LAorICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3ROYW1lZFNldHRlck5v
SWRlbnRpZmllckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogfTsKIAogY29uc3QgQ2xhc3NJbmZvIEpTVGVz
dE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRT
ZXR0ZXJOb0lkZW50aWZpZXIiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlKSB9
OwpAQCAtMjgwLDE5ICsyNzksNiBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0TmFt
ZWRTZXR0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3ROYW1lZFNldHRlck5vSWRl
bnRpZmllcjo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwg
cHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi1KU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3RvciwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5h
bWVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rv
cgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogSlNDOjpJ
c29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI6OnN1YnNwYWNlRm9ySW1w
bChKU0M6OlZNJiB2bSkKIHsKICAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpT
Vk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAyNjg2NzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDYg
QEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIC8vIEF0dHJpYnV0ZXMKIAogSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3Ip
OwotSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3ROYW1lZFNldHRlclRocm93aW5n
RXhjZXB0aW9uQ29uc3RydWN0b3IpOwogCiBjbGFzcyBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5n
RXhjZXB0aW9uUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7
CiBwdWJsaWM6CkBAIC0xMDIsNyArMTAxLDcgQEAgdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8g
SlNUZXN0TmFtZWRTZQogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TmFtZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewotICAgIHsg
ImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9u
Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0
b3IpIH0gfSwKKyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0TmFtZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogfTsKIAogY29uc3QgQ2xhc3NJbmZv
IEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGU6OnNfaW5mbyA9IHsg
IlRlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZFNldHRlclRocm93aW5n
RXhjZXB0aW9uUHJvdG90eXBlKSB9OwpAQCAtMjgwLDE5ICsyNzksNiBAQCBKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNUZXN0TmFtZWRTZXR0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShK
U1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpnZXRDb25zdHJ1Y3RvcihKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9
CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3ROYW1lZFNldHRlclRocm93aW5n
RXhjZXB0aW9uQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
KQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJv
dG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9u
UHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5M
SUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAg
ICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5
cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFt
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQog
ewogICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2
bS5jbGllbnREYXRhKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI2ODY3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNiBAQCBKU0NfREVDTEFSRV9IT1NUX0ZVTkNU
SU9OKGpzVGVzdE5hbWVkU2V0CiAvLyBBdHRyaWJ1dGVzCiAKIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKTsKLUpTQ19E
RUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNv
bnN0cnVjdG9yKTsKIAogY2xhc3MgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3Rv
dHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAt
MTA3LDcgKzEwNiw3IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2UK
IAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50
aWZpZXJQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiY29uc3Ry
dWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3Rv
ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KDApIH0gfSwKICAgICB7ICJuYW1lZFNldHRlciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRp
ZmllclByb3RvdHlwZUZ1bmN0aW9uX25hbWVkU2V0dGVyKSwgKGludHB0cl90KSAoMikgfSB9LAog
fTsKIApAQCAtMjkxLDE5ICsyOTAsNiBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0
TmFtZWRTZXR0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3ROYW1lZFNldHRlcldp
dGhJZGVudGlmaWVyOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLUpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3IsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQotewotICAgIFZNJiB2bSA9IEpTQzo6
Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBj
b25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0K
LQogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVyV2l0
aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbl9uYW1lZFNldHRlckJvZHkoSlNDOjpKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
dHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI+OjpD
bGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAJKHJldmlzaW9uIDI2ODY3NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJ
bmRleGVkR2V0dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNiBAQCBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE5hbWVkU2V0CiAvLyBBdHRyaWJ1dGVzCiAKIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckNv
bnN0cnVjdG9yKTsKLUpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlckNvbnN0cnVjdG9yKTsKIAogY2xhc3MgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmlu
YWxPYmplY3QgewogcHVibGljOgpAQCAtMTEwLDcgKzEwOSw3IEBAIHRlbXBsYXRlPD4gY29uc3Qg
Q2xhc3NJbmZvIEpTVGVzdE5hbWVkU2UKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0K
IHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5k
ZXhlZEdldHRlckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRl
ckNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJuYW1l
ZFNldHRlciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpG
dW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVG
dW5jdGlvbj4oanNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZUZ1bmN0
aW9uX25hbWVkU2V0dGVyKSwgKGludHB0cl90KSAoMikgfSB9LAogICAgIHsgImluZGV4ZWRTZXR0
ZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rp
b24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rp
b24+KGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGVGdW5jdGlvbl9p
bmRleGVkU2V0dGVyKSwgKGludHB0cl90KSAoMSkgfSB9LAogfTsKQEAgLTMxNiwxOSArMzE1LDYg
QEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdE5hbWVkU2V0dAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjo6Z2V0Q29u
c3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9i
YWxPYmplY3QoKSkpOwogfQogCi1KU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9i
YWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlclByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBl
RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAg
ICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0
cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
UHJvdG90eXBlRnVuY3Rpb25fbmFtZWRTZXR0ZXJCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElE
TE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyPjo6Q2xhc3NQYXJh
bWV0ZXIgY2FzdGVkVGhpcykKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEds
b2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCShyZXZpc2lvbiAyNjg2NzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1
LDcgKzU1LDYgQEAgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3ROYW1lZFNldAogLy8g
QXR0cmlidXRlcwogCiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJDb25zdHJ1Y3Rvcik7Ci1KU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJD
b25zdHJ1Y3Rvcik7CiAKIGNsYXNzIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJB
bmRTZXR0ZXJQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsK
IHB1YmxpYzoKQEAgLTExMCw3ICsxMDksNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBK
U1Rlc3ROYW1lZFNlCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7
Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4
ZWRHZXR0ZXJBbmRTZXR0ZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4
ZWRHZXR0ZXJBbmRTZXR0ZXJDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgImNvbnN0cnVjdG9yIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyQ29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPigwKSB9IH0sCiAgICAgeyAibmFtZWRTZXR0ZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5cGVGdW5jdGlvbl9uYW1lZFNldHRlciksIChpbnRw
dHJfdCkgKDIpIH0gfSwKICAgICB7ICJpbmRleGVkU2V0dGVyIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3ROYW1lZFNldHRlcldp
dGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyUHJvdG90eXBlRnVuY3Rpb25faW5kZXhlZFNldHRlciks
IChpbnRwdHJfdCkgKDEpIH0gfSwKIH07CkBAIC0zMzksMTkgKzMzOCw2IEBAIEpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc1Rlc3ROYW1lZFNldHQKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI6OmdldENvbnN0cnVj
dG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2Jq
ZWN0KCkpKTsKIH0KIAotSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE5hbWVkU2V0
dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0
dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAg
ICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNv
bnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQot
CiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlckFuZFNldHRlclByb3RvdHlwZUZ1bmN0aW9uX25hbWVkU2V0dGVyQm9keShK
U0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSog
Y2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5k
ZXhlZEdldHRlckFuZFNldHRlcj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCiB7CiAgICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zLmNwcAkocmV2aXNpb24gMjY4Njc0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw2IEBAIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiAvLyBBdHRyaWJ1dGVzCiAKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKTsKLUpTQ19E
RUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJp
ZGVCdWlsdEluc0NvbnN0cnVjdG9yKTsKIAogY2xhc3MgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmlu
YWxPYmplY3QgewogcHVibGljOgpAQCAtMTAyLDcgKzEwMSw3IEBAIHRlbXBsYXRlPD4gY29uc3Qg
Q2xhc3NJbmZvIEpTVGVzdE5hbWVkU2UKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGVUYWJsZVZh
bHVlc1tdID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiY29u
c3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKIH07CiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlOjpzX2luZm8gPSB7ICJU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyIsICZCYXNlOjpzX2luZm8s
IG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSkgfTsKQEAgLTI2MSwxOSArMjYwLDYg
QEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdE5hbWVkU2V0dAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElu
czo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90
eXBlLT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi1KU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSo+KHZt
LCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5
cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5n
IGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKSk7Ci19Ci0KIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnM6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKIHsKICAg
ICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xp
ZW50RGF0YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmNwcAkocmV2aXNpb24g
MjY4Njc0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUzLDcgKzUzLDYgQEAgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RO
YW1lZFNldAogLy8gQXR0cmlidXRlcwogCiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKTsK
LUpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3IpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNfdW5m
b3JnZWFibGVBdHRyaWJ1dGUpOwogCiBjbGFzcyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXNQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZp
bmFsT2JqZWN0IHsKQEAgLTEyNiw3ICsxMjUsNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5m
byBKU1Rlc3ROYW1lZFNlCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNQcm90b3R5cGVUYWJsZVZhbHVl
c1tdID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvcikgfSB9LAorICAg
IHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKIH07CiAKIGNvbnN0IENsYXNzSW5m
byBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNQcm90b3R5
cGU6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1Byb3Rv
dHlwZSkgfTsKQEAgLTMyMSwxOSArMzIwLDYgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
VGVzdE5hbWVkU2V0dAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzOjpnZXRDb25zdHJ1Y3RvcihKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9
CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
LSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1Byb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAg
IHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29u
c3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0K
IHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNfdW5mb3JnZWFibGVBdHRyaWJ1dGVHZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllcyYgdGhpc09iamVjdCkKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkocmV2
aXNpb24gMjY4Njc0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw2IEBAIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0TmFtZWRTZXQKIC8vIEF0dHJpYnV0ZXMKIAog
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IpOwot
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3Ip
OwogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zX3VuZm9yZ2VhYmxl
QXR0cmlidXRlKTsKIAogY2xhc3MgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSBmaW5hbCA6IHB1
YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewpAQCAtMTI2LDcgKzEyNSw3IEBAIHRlbXBsYXRl
PD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2UKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJs
ZVZhbHVlIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0Fu
ZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKLSAgICB7
ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3Zl
cnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKIH07CiAKIGNvbnN0IENsYXNz
SW5mbyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElu
cyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5
T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSkgfTsKQEAgLTMwMiwxOSArMzAxLDYgQEAgSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzVGVzdE5hbWVkU2V0dAogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi1KU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZN
KGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJp
ZGVCdWlsdEluc1Byb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0g
ICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1
cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9y
LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zX3VuZm9yZ2VhYmxlQXR0cmlidXRlR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zJiB0aGlzT2JqZWN0
KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5vZGUuY3BwCShyZXZpc2lvbiAyNjg2NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcw
LDcgKzcwLDYgQEAgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3ROb2RlUHJvdAogLy8g
QXR0cmlidXRlcwogCiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdE5vZGVDb25zdHJ1
Y3Rvcik7Ci1KU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE5vZGVDb25zdHJ1Y3Rv
cik7CiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdE5vZGVfbmFtZSk7CiBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE5vZGVfbmFtZSk7CiAKQEAgLTE0Myw3ICsxNDIs
NyBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROb2RlRE9NCiAKIHN0YXRpYyBj
b25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3ROb2RlUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7
Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5vZGVDb25zdHJ1Y3RvciksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
VGVzdE5vZGVDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3ROb2RlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAibmFtZSIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0Tm9kZV9uYW1lKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNUZXN0Tm9kZV9uYW1lKSB9IH0sCiAgICAgeyAidGVzdFdvcmtlclByb21pc2UiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE5v
ZGVQcm90b3R5cGVGdW5jdGlvbl90ZXN0V29ya2VyUHJvbWlzZSksIChpbnRwdHJfdCkgKDApIH0g
fSwKICAgICB7ICJjYWxjdWxhdGVTZWNyZXRSZXN1bHQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE5vZGVQcm90b3R5cGVGdW5j
dGlvbl9jYWxjdWxhdGVTZWNyZXRSZXN1bHQpLCAoaW50cHRyX3QpICgwKSB9IH0sCkBAIC0yNzUs
MTkgKzI3NCw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3ROb2RlQ29uc3QKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE5vZGU6OmdldENvbnN0cnVjdG9yKEpTQzo6
Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsK
IH0KIAotSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE5vZGVDb25zdHJ1Y3Rvciwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCi17Ci0gICAgVk0mIHZtID0gSlND
OjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE5vZGVQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwot
ICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9y
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0
dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rv
ciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiBzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0Tm9kZV9uYW1lR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU1Rlc3ROb2RlJiB0aGlzT2JqZWN0KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkocmV2aXNpb24gMjY4
Njc0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9i
ai5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MDcsNyArMTYwNyw2IEBAIEpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG8KIC8vIEF0dHJpYnV0ZXMKIAogSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc1Rlc3RPYmpDb25zdHJ1Y3Rvcik7Ci1KU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTVGVzdE9iakNvbnN0cnVjdG9yKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNUZXN0T2JqX3JlYWRPbmx5TG9uZ0F0dHIpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc1Rlc3RPYmpfcmVhZE9ubHlTdHJpbmdBdHRyKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNUZXN0T2JqX3JlYWRPbmx5VGVzdE9iakF0dHIpOwpAQCAtMjAyMyw3ICsyMDIyLDcgQEAg
dGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0T2JqRE9NQwogCiBzdGF0aWMgY29uc3Qg
SGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAg
eyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakNvbnN0cnVjdG9yKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2Jq
Q29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2Jq
Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAicmVhZE9ubHlMb25nQXR0ciIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfcmVhZE9ubHlMb25nQXR0ciksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAg
ICB7ICJyZWFkT25seVN0cmluZ0F0dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNUZXN0T2JqX3JlYWRPbmx5U3RyaW5nQXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJyZWFkT25seVRlc3RP
YmpBdHRyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9yZWFkT25s
eVRlc3RPYmpBdHRyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oMCkgfSB9LApAQCAtMjYyOCwxOSArMjYyNyw2IEBAIEpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc1Rlc3RPYmpDb25zdHIKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
VGVzdE9iajo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwg
cHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi1KU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNUZXN0T2JqQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7
Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0
byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPih2bSwgSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkg
ewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1
aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSkpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqX3JlYWRPbmx5TG9uZ0F0
dHJHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdE9iaiYg
dGhpc09iamVjdCkKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwuY3Bw
CShyZXZpc2lvbiAyNjg2NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
OCw3ICs1OCw2IEBAIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T3BlcmF0aW8KIC8v
IEF0dHJpYnV0ZXMKIAogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RPcGVyYXRpb25D
b25kaXRpb25hbENvbnN0cnVjdG9yKTsKLUpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNU
ZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxDb25zdHJ1Y3Rvcik7CiAKIGNsYXNzIEpTVGVzdE9wZXJh
dGlvbkNvbmRpdGlvbmFsUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9i
amVjdCB7CiBwdWJsaWM6CkBAIC0xMTMsNyArMTEyLDcgQEAgdGVtcGxhdGU8PiBjb25zdCBDbGFz
c0luZm8gSlNUZXN0T3BlcmF0aQogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0
T3BlcmF0aW9uQ29uZGl0aW9uYWxQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKLSAgICB7ICJj
b25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxDb25zdHJ1Y3Rv
ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJj
b25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxDb25zdHJ1Y3Rv
ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KDApIH0gfSwKICNpZiBFTkFCTEUoQ29uZGl0aW9uQmFzZSkKICAgICB7ICJub25Db25kaXRpb25h
bE9wZXJhdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRp
dmVGdW5jdGlvbj4oanNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxQcm90b3R5cGVGdW5jdGlvbl9u
b25Db25kaXRpb25hbE9wZXJhdGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwKICNlbHNlCkBAIC0x
ODcsMTkgKzE4Niw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RPcGVyYXRpb24K
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsOjpn
ZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUt
Pmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rl
c3RPcGVyYXRpb25Db25kaXRpb25hbENvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwot
ICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T3BlcmF0aW9uQ29uZGl0
aW9uYWxQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlm
IChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHBy
b3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiAjaWYgRU5BQkxFKENvbmRpdGlvbkJh
c2UpCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T3BlcmF0aW9uQ29u
ZGl0aW9uYWxQcm90b3R5cGVGdW5jdGlvbl9ub25Db25kaXRpb25hbE9wZXJhdGlvbkJvZHkoSlND
OjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFs
Pjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAJKHJldmlzaW9uIDI2ODY3NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNiBAQCB1c2luZyBuYW1lc3Bh
Y2UgSlNDOwogLy8gQXR0cmlidXRlcwogCiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcik7Ci1KU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcik7CiAKIGNs
YXNzIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMg
SlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTIyNSw3ICsyMjQsNyBAQCB0ZW1w
bGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RPdmVybG9hCiAKIHN0YXRpYyBjb25zdCBIYXNo
VGFibGVWYWx1ZSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlVGFibGVWYWx1
ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25z
dHJ1Y3RvcikgfSB9LAorICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiB9OwogCiBjb25zdCBDbGFzc0luZm8g
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUp
IH07CkBAIC0yODQsMTkgKzI4Myw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RP
dmVybG9hZGUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnM6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCks
IHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvciwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9y
Ci0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5j
b25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiBKU0M6Oklz
b1N1YnNwYWNlKiBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpzdWJzcGFjZUZvckltcGwo
SlNDOjpWTSYgdm0pCiB7CiAgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZN
Q2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVu
Y2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcAkocmV2aXNp
b24gMjY4Njc0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MCw3ICs1MCw2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAvLyBBdHRyaWJ1dGVzCiAK
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dp
dGhTZXF1ZW5jZUNvbnN0cnVjdG9yKTsKLUpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yKTsKIAogY2xh
c3MgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZVByb3RvdHlwZSBmaW5h
bCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMTY0LDcgKzE2
Myw3IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE92ZXJsb2EKIAogc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2Vx
dWVuY2VQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9y
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yKSB9
IH0sCisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKIH07CiAKIGNvbnN0IENsYXNzSW5m
byBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlUHJvdG90eXBlOjpzX2lu
Zm8gPSB7ICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSIsICZCYXNlOjpz
X2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZVByb3RvdHlwZSkgfTsKQEAgLTIyMywxOSArMjIy
LDYgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdE92ZXJsb2FkZQogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5j
ZTo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90
eXBlLT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi1KU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZVByb3RvdHlwZSo+KHZtLCBKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7
Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVp
bHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KSk7Ci19Ci0KIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNX
aXRoU2VxdWVuY2U6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKIHsKICAgICBhdXRvJiBj
bGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1
Z2luSW50ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMjY4Njc0
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdp
bkludGVyZmFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDYgQEAgdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKIC8vIEF0dHJpYnV0ZXMKIAogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c1Rlc3RQbHVnaW5JbnRlcmZhY2VDb25zdHJ1Y3Rvcik7Ci1KU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTVGVzdFBsdWdpbkludGVyZmFjZUNvbnN0cnVjdG9yKTsKIAogY2xhc3MgSlNUZXN0
UGx1Z2luSW50ZXJmYWNlUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9i
amVjdCB7CiBwdWJsaWM6CkBAIC0xMDEsNyArMTAwLDcgQEAgdGVtcGxhdGU8PiBjb25zdCBDbGFz
c0luZm8gSlNUZXN0UGx1Z2luSQogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0
UGx1Z2luSW50ZXJmYWNlUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3Ry
dWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFBsdWdpbkludGVyZmFjZUNvbnN0cnVjdG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0
UGx1Z2luSW50ZXJmYWNlQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0UGx1Z2luSW50ZXJmYWNlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiB9OwogCiBjb25z
dCBDbGFzc0luZm8gSlNUZXN0UGx1Z2luSW50ZXJmYWNlUHJvdG90eXBlOjpzX2luZm8gPSB7ICJU
ZXN0UGx1Z2luSW50ZXJmYWNlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU1Rlc3RQbHVnaW5JbnRlcmZhY2VQcm90b3R5cGUpIH07CkBAIC0y
MjEsMTkgKzIyMCw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RQbHVnaW5JbnQK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdFBsdWdpbkludGVyZmFjZTo6Z2V0Q29u
c3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9i
YWxPYmplY3QoKSkpOwogfQogCi1KU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0UGx1
Z2luSW50ZXJmYWNlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0g
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byog
cHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RQbHVnaW5JbnRlcmZhY2VQcm90b3R5cGUq
Pih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJv
dG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRv
d2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSkpOwotfQotCiBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RQbHVnaW5JbnRlcmZh
Y2U6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKIHsKICAgICBhdXRvJiBjbGllbnREYXRh
ID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcAkocmV2aXNpb24gMjY4
Njc0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBy
b21pc2VSZWplY3Rpb25FdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw3ICsxMjgsNiBA
QCB0ZW1wbGF0ZTw+IFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OkluCiAvLyBBdHRyaWJ1dGVz
CiAKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50
Q29uc3RydWN0b3IpOwotSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3Rvcik7CiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudF9wcm9taXNlKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50X3JlYXNvbik7CiAKQEAgLTIwOSw3ICsy
MDgsNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RQcm9taXNlCiAKIHN0YXRp
YyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5
cGVUYWJsZVZhbHVlc1tdID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnRDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJwcm9taXNl
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dFByb21pc2VSZWplY3Rpb25FdmVudF9wcm9taXNlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgInJlYXNvbiIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRf
cmVhc29uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oMCkgfSB9LAogfTsKQEAgLTI2OSwxOSArMjY4LDYgQEAgSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzVGVzdFByb21pc2VSZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLUpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3Rv
ciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCi17Ci0gICAgVk0mIHZtID0g
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAg
ICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4g
Y29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19
Ci0KIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRfcHJv
bWlzZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50JiB0aGlzT2JqZWN0KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlNYXBMaWtlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlN
YXBMaWtlLmNwcAkocmV2aXNpb24gMjY4Njc0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5TWFwTGlrZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTYwLDcgKzYwLDYgQEAgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RSZWFkT25s
eQogLy8gQXR0cmlidXRlcwogCiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdFJlYWRP
bmx5TWFwTGlrZUNvbnN0cnVjdG9yKTsKLUpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNU
ZXN0UmVhZE9ubHlNYXBMaWtlQ29uc3RydWN0b3IpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc1Rlc3RSZWFkT25seU1hcExpa2Vfc2l6ZSk7CiAKIGNsYXNzIEpTVGVzdFJlYWRPbmx5TWFw
TGlrZVByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewpAQCAt
MTE2LDcgKzExNSw3IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFJlYWRPbmwK
IAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdFJlYWRPbmx5TWFwTGlrZVByb3Rv
dHlwZVRhYmxlVmFsdWVzW10gPQogewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RSZWFkT25seU1hcExpa2VDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdFJlYWRPbmx5TWFwTGlrZUNvbnN0
cnVjdG9yKSB9IH0sCisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFJlYWRPbmx5
TWFwTGlrZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgInNpemUiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1Rlc3RSZWFkT25seU1hcExpa2Vfc2l6ZSksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJnZXQi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0UmVhZE9ubHlNYXBMaWtl
UHJvdG90eXBlRnVuY3Rpb25fZ2V0KSwgKGludHB0cl90KSAoMSkgfSB9LAogICAgIHsgImhhcyIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RSZWFkT25seU1hcExpa2VQ
cm90b3R5cGVGdW5jdGlvbl9oYXMpLCAoaW50cHRyX3QpICgxKSB9IH0sCkBAIC0xOTMsMTkgKzE5
Miw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RSZWFkT25seU0KICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdFJlYWRPbmx5TWFwTGlrZTo6Z2V0Q29uc3RydWN0b3Io
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3Qo
KSkpOwogfQogCi1KU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0UmVhZE9ubHlNYXBM
aWtlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQotewot
ICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBl
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RSZWFkT25seU1hcExpa2VQcm90b3R5cGUqPih2bSwgSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkg
ewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1
aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSkpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0UmVhZE9ubHlNYXBMaWtlX3Np
emVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdFJlYWRP
bmx5TWFwTGlrZSYgdGhpc09iamVjdCkKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5U2V0TGlrZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5U2V0TGlrZS5j
cHAJKHJldmlzaW9uIDI2ODY3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RSZWFkT25seVNldExpa2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3
ICs1OSw2IEBAIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0UmVhZE9ubHkKIC8vIEF0
dHJpYnV0ZXMKIAogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RSZWFkT25seVNldExp
a2VDb25zdHJ1Y3Rvcik7Ci1KU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdFJlYWRP
bmx5U2V0TGlrZUNvbnN0cnVjdG9yKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0
UmVhZE9ubHlTZXRMaWtlX3NpemUpOwogCiBjbGFzcyBKU1Rlc3RSZWFkT25seVNldExpa2VQcm90
b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKQEAgLTExNSw3ICsx
MTQsNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RSZWFkT25sCiAKIHN0YXRp
YyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RSZWFkT25seVNldExpa2VQcm90b3R5cGVUYWJs
ZVZhbHVlc1tdID0KIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0UmVhZE9u
bHlTZXRMaWtlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RSZWFkT25seVNldExpa2VDb25zdHJ1Y3Rvcikg
fSB9LAorICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RSZWFkT25seVNldExpa2VD
b25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJzaXplIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0UmVhZE9ubHlTZXRMaWtlX3NpemUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAiaGFzIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdFJlYWRPbmx5U2V0TGlrZVByb3RvdHlw
ZUZ1bmN0aW9uX2hhcyksIChpbnRwdHJfdCkgKDEpIH0gfSwKICAgICB7ICJlbnRyaWVzIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdFJlYWRPbmx5U2V0TGlrZVByb3Rv
dHlwZUZ1bmN0aW9uX2VudHJpZXMpLCAoaW50cHRyX3QpICgwKSB9IH0sCkBAIC0xOTEsMTkgKzE5
MCw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RSZWFkT25seVMKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdFJlYWRPbmx5U2V0TGlrZTo6Z2V0Q29uc3RydWN0b3Io
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3Qo
KSkpOwogfQogCi1KU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0UmVhZE9ubHlTZXRM
aWtlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQotewot
ICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBl
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RSZWFkT25seVNldExpa2VQcm90b3R5cGUqPih2bSwgSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkg
ewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1
aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSkpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0UmVhZE9ubHlTZXRMaWtlX3Np
emVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdFJlYWRP
bmx5U2V0TGlrZSYgdGhpc09iamVjdCkKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlcG9ydEV4dHJh
TWVtb3J5Q29zdC5jcHAJKHJldmlzaW9uIDI2ODY3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NSw3ICs0NSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAvLyBBdHRy
aWJ1dGVzCiAKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0UmVwb3J0RXh0cmFNZW1v
cnlDb3N0Q29uc3RydWN0b3IpOwotSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RS
ZXBvcnRFeHRyYU1lbW9yeUNvc3RDb25zdHJ1Y3Rvcik7CiAKIGNsYXNzIEpTVGVzdFJlcG9ydEV4
dHJhTWVtb3J5Q29zdFByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmpl
Y3QgewogcHVibGljOgpAQCAtMTAwLDcgKzk5LDcgQEAgdGVtcGxhdGU8PiBjb25zdCBDbGFzc0lu
Zm8gSlNUZXN0UmVwb3J0RQogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0UmVw
b3J0RXh0cmFNZW1vcnlDb3N0UHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29u
c3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdENvbnN0cnVjdG9y
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0Q29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJj
b25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0Q29uc3RydWN0
b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PigwKSB9IH0sCiB9OwogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlD
b3N0UHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0IiwgJkJh
c2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RS
ZXBvcnRFeHRyYU1lbW9yeUNvc3RQcm90b3R5cGUpIH07CkBAIC0xNjAsMTkgKzE1OSw2IEBAIEpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RSZXBvcnRFeHQKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdDo6Z2V0Q29uc3RydWN0b3IoSlND
OjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkp
OwogfQogCi1KU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0UmVwb3J0RXh0cmFNZW1v
cnlDb3N0Q29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQot
ewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90
eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3RQcm90b3R5cGUq
Pih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJv
dG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRv
d2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSkpOwotfQotCiBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RSZXBvcnRFeHRyYU1l
bW9yeUNvc3Q6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKIHsKICAgICBhdXRvJiBjbGll
bnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlLmNwcAkocmV2aXNpb24gMjY4Njc0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDYgQEAgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
Tihqc1Rlc3RTZXJpYWxpegogLy8gQXR0cmlidXRlcwogCiBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKTsKLUpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlQ29uc3RydWN0b3IpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VfdmFsdWUpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VfdmFsdWUpOwogSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2VfcmVhZG9ubHlWYWx1ZSk7CkBAIC0xMjQsNyArMTIzLDcgQEAgdGVtcGxhdGU8PiBjb25zdCBD
bGFzc0luZm8gSlNUZXN0U2VyaWFsaQogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9
CiB7Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAg
eyAidmFsdWUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZV92YWx1ZSksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZV92YWx1ZSkgfSB9LAogICAgIHsgInJlYWRv
bmx5VmFsdWUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlX3JlYWRvbmx5VmFsdWUpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAiY2FjaGVk
VmFsdWUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZV9jYWNoZWRWYWx1ZSksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZV9jYWNoZWRWYWx1ZSkgfSB9LApAQCAt
MjAwLDE5ICsxOTksNiBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0U2VyaWFsaXpl
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2U6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCks
IHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlKj4odm0sIEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsK
LSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWls
dC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
KTsKLX0KLQogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZV92YWx1ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlJiB0aGlzT2JqZWN0KQogewog
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFNldExpa2UuY3BwCShyZXZpc2lvbiAyNjg2NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYyLDcgKzYyLDYgQEAgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RTZXRMaWtlUAog
Ly8gQXR0cmlidXRlcwogCiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdFNldExpa2VD
b25zdHJ1Y3Rvcik7Ci1KU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdFNldExpa2VD
b25zdHJ1Y3Rvcik7CiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdFNldExpa2Vfc2l6
ZSk7CiAKIGNsYXNzIEpTVGVzdFNldExpa2VQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpK
U05vbkZpbmFsT2JqZWN0IHsKQEAgLTExOCw3ICsxMTcsNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENs
YXNzSW5mbyBKU1Rlc3RTZXRMaWtlCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rl
c3RTZXRMaWtlUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3Ii
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzVGVzdFNldExpa2VDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdFNldExpa2VDb25zdHJ1
Y3RvcikgfSB9LAorICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RTZXRMaWtlQ29u
c3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPigwKSB9IH0sCiAgICAgeyAic2l6ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzVGVzdFNldExpa2Vfc2l6ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJoYXMiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxS
YXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0U2V0TGlrZVByb3RvdHlwZUZ1bmN0aW9uX2hhcyksIChp
bnRwdHJfdCkgKDEpIH0gfSwKICAgICB7ICJlbnRyaWVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0
aXZlRnVuY3Rpb24+KGpzVGVzdFNldExpa2VQcm90b3R5cGVGdW5jdGlvbl9lbnRyaWVzKSwgKGlu
dHB0cl90KSAoMCkgfSB9LApAQCAtMTk3LDE5ICsxOTYsNiBAQCBKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNUZXN0U2V0TGlrZUNvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RT
ZXRMaWtlOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBw
cm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU1Rlc3RTZXRMaWtlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVj
dCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
YXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RTZXRMaWtlUHJvdG90eXBlKj4o
dm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3Rv
dHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dp
bmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpKTsKLX0KLQogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdFNldExpa2Vfc2l6
ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0U2V0TGlr
ZSYgdGhpc09iamVjdCkKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlV2l0
aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjY4Njc0KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRl
bk9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw2IEBAIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0U2V0TGlrZVcKIC8vIEF0dHJpYnV0ZXMKIAogSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25z
Q29uc3RydWN0b3IpOwotSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RTZXRMaWtl
V2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zQ29uc3RydWN0b3IpOwogSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zX2FkZCk7CiBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJh
dGlvbnNfYWRkKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0U2V0TGlrZVdpdGhP
dmVycmlkZGVuT3BlcmF0aW9uc19zaXplKTsKQEAgLTEyMCw3ICsxMTksNyBAQCB0ZW1wbGF0ZTw+
IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RTZXRMaWtlCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVW
YWx1ZSBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zUHJvdG90eXBlVGFibGVW
YWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFNldExpa2VX
aXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdFNldExpa2VXaXRoT3Zl
cnJpZGRlbk9wZXJhdGlvbnNDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgImNvbnN0cnVjdG9yIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zQ29uc3RydWN0b3Ip
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigw
KSB9IH0sCiAgICAgeyAiYWRkIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zX2Fk
ZCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNfYWRkKSB9IH0sCiAgICAg
eyAic2l6ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFNldExpa2VXaXRoT3Zl
cnJpZGRlbk9wZXJhdGlvbnNfc2l6ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJkZWxldGUiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdFNldExp
a2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNQcm90b3R5cGVGdW5jdGlvbl9kZWxldGUpLCAoaW50
cHRyX3QpICgwKSB9IH0sCkBAIC0xOTksMTkgKzE5OCw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc1Rlc3RTZXRMaWtlV2kKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdFNl
dExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAot
SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9w
ZXJhdGlvbnNDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
Ci17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90
b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlv
bnNQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChV
TkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
ICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3Rv
dHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc19hZGRHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJh
dGlvbnMmIHRoaXNPYmplY3QpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmNwcAkocmV2aXNpb24g
MjY4Njc0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFN0cmluZ2lmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNiBAQCBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdFN0cmluZ2lmCiAvLyBBdHRyaWJ1dGVzCiAKIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0U3RyaW5naWZpZXJDb25zdHJ1Y3Rvcik7Ci1KU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdFN0cmluZ2lmaWVyQ29uc3RydWN0b3IpOwog
CiBjbGFzcyBKU1Rlc3RTdHJpbmdpZmllclByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpT
Tm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMTA2LDcgKzEwNSw3IEBAIHRlbXBsYXRlPD4g
Y29uc3QgQ2xhc3NJbmZvIEpTVGVzdFN0cmluZ2kKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZh
bHVlIEpTVGVzdFN0cmluZ2lmaWVyUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAi
Y29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFN0cmluZ2lmaWVyQ29uc3RydWN0b3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rl
c3RTdHJpbmdpZmllckNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdFN0cmluZ2lmaWVyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAidG9TdHJpbmci
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24p
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+
KGpzVGVzdFN0cmluZ2lmaWVyUHJvdG90eXBlRnVuY3Rpb25fdG9TdHJpbmcpLCAoaW50cHRyX3Qp
ICgwKSB9IH0sCiB9OwogCkBAIC0xNzEsMTkgKzE3MCw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc1Rlc3RTdHJpbmdpZmkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdFN0
cmluZ2lmaWVyOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
LCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU1Rlc3RTdHJpbmdpZmllckNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9i
YWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U3RyaW5naWZpZXJQ
cm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJ
S0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAg
IC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlw
ZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0U3RyaW5naWZpZXJQcm90b3R5cGVGdW5jdGlvbl90b1N0cmluZ0JvZHkoSlND
OjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdFN0cmluZ2lmaWVyPjo6Q2xhc3NQ
YXJhbWV0ZXIgY2FzdGVkVGhpcykKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdp
ZmllckFub255bW91c09wZXJhdGlvbi5jcHAJKHJldmlzaW9uIDI2ODY3NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91
c09wZXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDYgQEAgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTihqc1Rlc3RTdHJpbmdpZgogLy8gQXR0cmlidXRlcwogCiBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uQ29u
c3RydWN0b3IpOwotSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RTdHJpbmdpZmll
ckFub255bW91c09wZXJhdGlvbkNvbnN0cnVjdG9yKTsKIAogY2xhc3MgSlNUZXN0U3RyaW5naWZp
ZXJBbm9ueW1vdXNPcGVyYXRpb25Qcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZp
bmFsT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTEwNiw3ICsxMDUsNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0
IENsYXNzSW5mbyBKU1Rlc3RTdHJpbmdpCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBK
U1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvblByb3RvdHlwZVRhYmxlVmFsdWVzW10g
PQogewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RTdHJpbmdpZmllckFub255
bW91c09wZXJhdGlvbkNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVy
YXRpb25Db25zdHJ1Y3RvcikgfSB9LAorICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbkNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsg
InRvU3RyaW5nIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2
ZUZ1bmN0aW9uPihqc1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvblByb3RvdHlwZUZ1
bmN0aW9uX3RvU3RyaW5nKSwgKGludHB0cl90KSAoMCkgfSB9LAogfTsKIApAQCAtMTcxLDE5ICsx
NzAsNiBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0U3RyaW5naWZpCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbjo6
Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBl
LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi1KU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNU
ZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb25Db25zdHJ1Y3RvciwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFN0cmlu
Z2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1
Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFN0cmluZ2lmaWVyQW5vbnltb3Vz
T3BlcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25fdG9TdHJpbmdCb2R5KEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVu
YW1lIElETE9wZXJhdGlvbjxKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbj46OkNs
YXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxl
eGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdp
Zmllck5hbWVkT3BlcmF0aW9uLmNwcAkocmV2aXNpb24gMjY4Njc0KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw2IEBAIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04oanNUZXN0U3RyaW5naWYKIC8vIEF0dHJpYnV0ZXMKIAogSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uQ29uc3RydWN0b3IpOwot
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0
aW9uQ29uc3RydWN0b3IpOwogCiBjbGFzcyBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9u
UHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6
CkBAIC0xMDcsNyArMTA2LDcgQEAgdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0U3Ry
aW5naQogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0U3RyaW5naWZpZXJOYW1l
ZE9wZXJhdGlvblByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewotICAgIHsgImNvbnN0cnVjdG9y
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uQ29uc3RydWN0b3IpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJj
b25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbkNvbnN0
cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oMCkgfSB9LAogICAgIHsgImlkZW50aWZpZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdFN0cmluZ2lmaWVyTmFtZWRP
cGVyYXRpb25Qcm90b3R5cGVGdW5jdGlvbl9pZGVudGlmaWVyKSwgKGludHB0cl90KSAoMCkgfSB9
LAogICAgIHsgInRvU3RyaW5nIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uUHJvdG90
eXBlRnVuY3Rpb25fdG9TdHJpbmcpLCAoaW50cHRyX3QpICgwKSB9IH0sCiB9OwpAQCAtMTczLDE5
ICsxNzIsNiBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0U3RyaW5naWZpCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uOjpn
ZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUt
Pmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rl
c3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEds
b2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RTdHJpbmdpZmll
ck5hbWVkT3BlcmF0aW9uUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAg
IHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3Ry
dWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Qcm90
b3R5cGVGdW5jdGlvbl9pZGVudGlmaWVyQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVy
YXRpb248SlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbj46OkNsYXNzUGFyYW1ldGVyIGNh
c3RlZFRoaXMpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3Bl
cmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAJKHJldmlzaW9uIDI2ODY3NCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbklt
cGxlbWVudGVkQXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw2IEBAIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0U3RyaW5naWYKIC8vIEF0dHJpYnV0ZXMKIAogSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVk
QXNDb25zdHJ1Y3Rvcik7Ci1KU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdFN0cmlu
Z2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc0NvbnN0cnVjdG9yKTsKIAogY2xhc3MgSlNUZXN0
U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eXBlIGZpbmFsIDogcHVibGlj
IEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CkBAIC0xMDcsNyArMTA2LDcgQEAgdGVt
cGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0U3RyaW5naQogCiBzdGF0aWMgY29uc3QgSGFz
aFRhYmxlVmFsdWUgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90
eXBlVGFibGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc0NvbnN0cnVjdG9yKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0U3Ry
aW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJj
b25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRl
ZEFzQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAiaWRlbnRpZmllciIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0U3RyaW5naWZp
ZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eXBlRnVuY3Rpb25faWRlbnRpZmllciksIChp
bnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJ0b1N0cmluZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0U3RyaW5naWZpZXJPcGVy
YXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eXBlRnVuY3Rpb25fdG9TdHJpbmcpLCAoaW50cHRyX3Qp
ICgwKSB9IH0sCiB9OwpAQCAtMTczLDE5ICsxNzIsNiBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNUZXN0U3RyaW5naWZpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RTdHJp
bmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXM6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAot
SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1w
bGVtZW50ZWRBc0NvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHBy
b3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1l
bnRlZEFzUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBp
ZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBw
cm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3Rv
dHlwZUZ1bmN0aW9uX2lkZW50aWZpZXJCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJh
dGlvbjxKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXM+OjpDbGFzc1BhcmFt
ZXRlciBjYXN0ZWRUaGlzKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdp
Zmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCShyZXZpc2lvbiAyNjg2NzQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVy
YXRpb25OYW1lZFRvU3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNiBAQCBK
U0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdFN0cmluZ2lmCiAvLyBBdHRyaWJ1dGVzCiAK
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1l
ZFRvU3RyaW5nQ29uc3RydWN0b3IpOwotSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rl
c3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdDb25zdHJ1Y3Rvcik7CiAKIGNsYXNz
IEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ1Byb3RvdHlwZSBmaW5hbCA6
IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMTA2LDcgKzEwNSw3
IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFN0cmluZ2kKIAogc3RhdGljIGNv
bnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmlu
Z1Byb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdDb25zdHJ1Y3RvciksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ0NvbnN0cnVjdG9yKSB9IH0sCisg
ICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFt
ZWRUb1N0cmluZ0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgInRvU3RyaW5nIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RTdHJp
bmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdQcm90b3R5cGVGdW5jdGlvbl90b1N0cmluZyks
IChpbnRwdHJfdCkgKDApIH0gfSwKIH07CiAKQEAgLTE3MSwxOSArMTcwLDYgQEAgSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzVGVzdFN0cmluZ2lmaQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nOjpnZXRDb25zdHJ1Y3Rv
cihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVj
dCgpKSk7CiB9CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RTdHJpbmdpZmll
ck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
LSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFN0cmluZ2lmaWVyT3Bl
cmF0aW9uTmFtZWRUb1N0cmluZ1Byb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1U
eXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IK
LSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNv
bnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19Ci0KIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVk
VG9TdHJpbmdQcm90b3R5cGVGdW5jdGlvbl90b1N0cmluZ0JvZHkoSlNDOjpKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5h
bWUgSURMT3BlcmF0aW9uPEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZz46
OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
dHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcAkocmV2aXNpb24gMjY4Njc0KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVh
ZE9ubHlBdHRyaWJ1dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw2IEBAIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0U3RyaW5naWYKIC8vIEF0dHJpYnV0ZXMKIAogSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRl
Q29uc3RydWN0b3IpOwotSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RTdHJpbmdp
ZmllclJlYWRPbmx5QXR0cmlidXRlQ29uc3RydWN0b3IpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlX2lkZW50aWZpZXIpOwogCiBj
bGFzcyBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlUHJvdG90eXBlIGZpbmFsIDog
cHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CkBAIC0xMDgsNyArMTA3LDcgQEAgdGVtcGxh
dGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0U3RyaW5naQogCiBzdGF0aWMgY29uc3QgSGFzaFRh
YmxlVmFsdWUgSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZVByb3RvdHlwZVRhYmxl
VmFsdWVzW10gPQogewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RTdHJpbmdp
ZmllclJlYWRPbmx5QXR0cmlidXRlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RTdHJpbmdpZmllclJlYWRP
bmx5QXR0cmlidXRlQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZUNvbnN0cnVjdG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAog
ICAgIHsgImlkZW50aWZpZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZV9pZGVudGlmaWVyKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgInRv
U3RyaW5nIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1
bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1
bmN0aW9uPihqc1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlUHJvdG90eXBlRnVuY3Rp
b25fdG9TdHJpbmcpLCAoaW50cHRyX3QpICgwKSB9IH0sCiB9OwpAQCAtMTc5LDE5ICsxNzgsNiBA
QCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0U3RyaW5naWZpCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlOjpnZXRDb25z
dHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2Jh
bE9iamVjdCgpKSk7CiB9CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RTdHJp
bmdpZmllclJlYWRPbmx5QXR0cmlidXRlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RTdHJpbmdpZmllclJl
YWRPbmx5QXR0cmlidXRlUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAg
IHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3Ry
dWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVfaWRlbnRpZmllckdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0U3RyaW5naWZp
ZXJSZWFkT25seUF0dHJpYnV0ZSYgdGhpc09iamVjdCkKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwCShyZXZpc2lvbiAyNjg2NzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5n
aWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw2
IEBAIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0U3RyaW5naWYKIC8vIEF0dHJpYnV0
ZXMKIAogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RTdHJpbmdpZmllclJlYWRXcml0
ZUF0dHJpYnV0ZUNvbnN0cnVjdG9yKTsKLUpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNU
ZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVDb25zdHJ1Y3Rvcik7CiBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlX2lkZW50
aWZpZXIpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RTdHJpbmdpZmllclJl
YWRXcml0ZUF0dHJpYnV0ZV9pZGVudGlmaWVyKTsKIApAQCAtMTA5LDcgKzEwOCw3IEBAIHRlbXBs
YXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFN0cmluZ2kKIAogc3RhdGljIGNvbnN0IEhhc2hU
YWJsZVZhbHVlIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlUHJvdG90eXBlVGFi
bGVWYWx1ZXNbXSA9CiB7Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFN0cmlu
Z2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RTdHJpbmdpZmllclJl
YWRXcml0ZUF0dHJpYnV0ZUNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiY29uc3RydWN0b3IiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlQ29uc3RydWN0b3IpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9
IH0sCiAgICAgeyAiaWRlbnRpZmllciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVf
aWRlbnRpZmllciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlX2lkZW50aWZp
ZXIpIH0gfSwKICAgICB7ICJ0b1N0cmluZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRy
aWJ1dGVQcm90b3R5cGVGdW5jdGlvbl90b1N0cmluZyksIChpbnRwdHJfdCkgKDApIH0gfSwKIH07
CkBAIC0xODAsMTkgKzE3OSw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RTdHJp
bmdpZmkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdy
aXRlQXR0cmlidXRlOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLUpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZUNvbnN0cnVjdG9y
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKLXsKLSAgICBWTSYgdm0gPSBK
U0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVQcm90b3R5cGUqPih2bSwgSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkg
ewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1
aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSkpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0U3RyaW5naWZpZXJSZWFkV3Jp
dGVBdHRyaWJ1dGVfaWRlbnRpZmllckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUmIHRoaXNPYmplY3Qp
CiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVm
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAkocmV2aXNpb24gMjY4Njc0KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODQsNyArODQsNiBAQCBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdFR5
cGVkZWZzCiAvLyBBdHRyaWJ1dGVzCiAKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0
VHlwZWRlZnNDb25zdHJ1Y3Rvcik7Ci1KU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVz
dFR5cGVkZWZzQ29uc3RydWN0b3IpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RU
eXBlZGVmc191bnNpZ25lZExvbmdMb25nQXR0cik7CiBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTVGVzdFR5cGVkZWZzX3Vuc2lnbmVkTG9uZ0xvbmdBdHRyKTsKIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNUZXN0VHlwZWRlZnNfc2VyaWFsaXplZFNjcmlwdFZhbHVlKTsKQEAgLTIw
Miw3ICsyMDEsNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RUeXBlZGVmCiAK
IHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZVRhYmxl
VmFsdWVzW10gPQogewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RUeXBlZGVm
c0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgImNv
bnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAg
IHsgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RUeXBlZGVmc191bnNpZ25lZExvbmdMb25nQXR0
ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTVGVzdFR5cGVkZWZzX3Vuc2lnbmVkTG9uZ0xvbmdBdHRyKSB9IH0sCiAgICAgeyAic2Vy
aWFsaXplZFNjcmlwdFZhbHVlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RUeXBlZGVmc19zZXJpYWxpemVkU2NyaXB0VmFsdWUpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U1Rlc3RUeXBlZGVmc19zZXJpYWxpemVkU2NyaXB0VmFsdWUpIH0gfSwKICAgICB7ICJhdHRyaWJ1
dGVXaXRoQ2xhbXAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzVGVzdFR5cGVkZWZzX2F0dHJpYnV0ZVdpdGhDbGFtcCksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdFR5cGVk
ZWZzX2F0dHJpYnV0ZVdpdGhDbGFtcCkgfSB9LApAQCAtMjkyLDE5ICsyOTEsNiBAQCBKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNUZXN0VHlwZWRlZnNDCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU1Rlc3RUeXBlZGVmczo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwogfQogCi1KU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVk
ZWZzUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAo
VU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90
b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
VGVzdFR5cGVkZWZzX3Vuc2lnbmVkTG9uZ0xvbmdBdHRyR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RUeXBlZGVmcyYgdGhpc09iamVjdCkKIHsKICAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2NvcGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1dvcmtlckdsb2JhbFNjb3BlLmNwcAkocmV2aXNpb24gMjY4Njc0KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2NvcGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Miw3ICs1Miw2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAvLyBBdHRy
aWJ1dGVzCiAKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNXb3JrZXJHbG9iYWxTY29wZUNv
bnN0cnVjdG9yKTsKLUpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNXb3JrZXJHbG9iYWxT
Y29wZUNvbnN0cnVjdG9yKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNXb3JrZXJHbG9i
YWxTY29wZV9FeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dDb25zdHJ1Y3Rvcik7CiBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTV29ya2VyR2xvYmFsU2NvcGVfRXhwb3NlZFRvV29ya2VyQW5k
V2luZG93Q29uc3RydWN0b3IpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1dvcmtlckds
b2JhbFNjb3BlX1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRDb25zdHJ1Y3Rvcik7
CkBAIC0xMjcsNyArMTI2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4
IEpTVwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNXb3JrZXJHbG9iYWxTY29wZVBy
b3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1dvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1dvcmtlckdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3IpIH0gfSwKKyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNXb3JrZXJHbG9iYWxT
Y29wZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogfTsKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1dv
cmtlckdsb2JhbFNjb3BlUHJvdG90eXBlVGFibGUgPSB7IDEsIDEsIHRydWUsIEpTV29ya2VyR2xv
YmFsU2NvcGU6OmluZm8oKSwgSlNXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZVRhYmxlVmFsdWVz
LCBKU1dvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlVGFibGVJbmRleCB9OwpAQCAtMTg1LDE5ICsx
ODQsNiBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNXb3JrZXJHbG9iYWxTCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU1dvcmtlckdsb2JhbFNjb3BlOjpnZXRDb25zdHJ1Y3RvcihK
U0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgp
KSk7CiB9CiAKLUpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1dvcmtlckdsb2JhbFNjb3Bl
Q29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQotewotICAg
IFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0g
anNEeW5hbWljQ2FzdDxKU1dvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKLSAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1p
biBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsK
LX0KLQogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzV29ya2VyR2xvYmFsU2NvcGVfRXhwb3NlZFRv
V29ya2VyQW5kV2luZG93Q29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTV29ya2VyR2xvYmFsU2NvcGUmIHRoaXNPYmplY3QpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNjb3BlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrbGV0R2xv
YmFsU2NvcGUuY3BwCShyZXZpc2lvbiAyNjg2NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Nyw3ICs0Nyw2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAvLyBBdHRyaWJ1dGVzCiAK
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3Rv
cik7Ci1KU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTV29ya2xldEdsb2JhbFNjb3BlQ29u
c3RydWN0b3IpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1dvcmtsZXRHbG9iYWxTY29w
ZV9Xb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcik7CiBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTV29ya2xldEdsb2JhbFNjb3BlX1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9y
KTsKIApAQCAtOTEsNyArOTAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5k
ZXggSlNXCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1dvcmtsZXRHbG9iYWxTY29w
ZVByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNXb3JrbGV0R2xvYmFsU2NvcGVD
b25zdHJ1Y3RvcikgfSB9LAorICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1dvcmtsZXRH
bG9iYWxTY29wZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogfTsKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJs
ZSBKU1dvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlwZVRhYmxlID0geyAxLCAxLCB0cnVlLCBKU1dv
cmtsZXRHbG9iYWxTY29wZTo6aW5mbygpLCBKU1dvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlwZVRh
YmxlVmFsdWVzLCBKU1dvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlwZVRhYmxlSW5kZXggfTsKQEAg
LTE0OSwxOSArMTQ4LDYgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzV29ya2xldEdsb2Jh
bAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNXb3JrbGV0R2xvYmFsU2NvcGU6OmdldENv
bnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xv
YmFsT2JqZWN0KCkpKTsKIH0KIAotSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTV29ya2xl
dEdsb2JhbFNjb3BlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0g
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byog
cHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1dvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlwZSo+
KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90
b3R5cGUpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93
aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1dvcmtsZXRHbG9iYWxT
Y29wZV9Xb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNXb3JrbGV0R2xvYmFsU2NvcGUmIHRoaXNPYmplY3QpCiB7
CiAgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjg2NzQpCisrKyBMYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAt
MTAtMTkgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAgICAg
IFtXZWJJRExdICVJbnRlcmZhY2UlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciBzaG91bGQgYmUgZGVm
aW5lZCBvbiBbW1NldF1dIHJlY2VpdmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTY1MzMKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5k
aW5nL2ludGVyZmFjZS1wcm90b3R5cGUtY29uc3RydWN0b3Itc2V0LXJlY2VpdmVyLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2Ny
aXB0LWJpbmRpbmcvaW50ZXJmYWNlLXByb3RvdHlwZS1jb25zdHJ1Y3Rvci1zZXQtcmVjZWl2ZXIu
aHRtbDogQWRkZWQuCisKIDIwMjAtMTAtMTkgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBp
Z2FsaWEuY29tPgogCiAgICAgICAgIGF4aXMgaW4gc2Nyb2xsLXNuYXAtdHlwZSBzaG91bGQgYmUg
cmVxdWlyZWQKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9pbnRlcmZhY2UtcHJvdG90eXBlLWNvbnN0cnVj
dG9yLXNldC1yZWNlaXZlci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5n
L2ludGVyZmFjZS1wcm90b3R5cGUtY29uc3RydWN0b3Itc2V0LXJlY2VpdmVyLWV4cGVjdGVkLnR4
dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvaW50ZXJmYWNlLXByb3RvdHlwZS1jb25z
dHJ1Y3Rvci1zZXQtcmVjZWl2ZXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNCBAQAorCitQQVNTIFdpbmRvdywgTG9jYXRpb24sIE5hdmlnYXRvciwgSFRNTERvY3VtZW50
LCBhbmQgSFRNTEhlYWRFbGVtZW50CitQQVNTIEFsbCB3aW5kb3cuKiBjb25zdHJ1Y3RvcnMKKwpJ
bmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwv
ZWNtYXNjcmlwdC1iaW5kaW5nL2ludGVyZmFjZS1wcm90b3R5cGUtY29uc3RydWN0b3Itc2V0LXJl
Y2VpdmVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2ludGVyZmFjZS1wcm90b3R5
cGUtY29uc3RydWN0b3Itc2V0LXJlY2VpdmVyLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1i
aW5kaW5nL2ludGVyZmFjZS1wcm90b3R5cGUtY29uc3RydWN0b3Itc2V0LXJlY2VpdmVyLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+SW50ZXJmYWNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciBp
cyBkZWZpbmVkIG9uIFtbU2V0XV0gcmVjZWl2ZXI8L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBo
cmVmPSJodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNpbnRlcmZhY2UtcHJvdG90eXBl
LW9iamVjdCI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworCit0ZXN0KCgpID0+IHsKKyAgd2luZG93LmNv
bnN0cnVjdG9yID0gbnVsbDsKKyAgYXNzZXJ0X2VxdWFscyhXaW5kb3cucHJvdG90eXBlLmNvbnN0
cnVjdG9yLCBXaW5kb3cpOworCisgIGxvY2F0aW9uLmNvbnN0cnVjdG9yID0gZmFsc2U7CisgIGFz
c2VydF9lcXVhbHMoTG9jYXRpb24ucHJvdG90eXBlLmNvbnN0cnVjdG9yLCBMb2NhdGlvbik7CisK
KyAgbmF2aWdhdG9yLmNvbnN0cnVjdG9yID0gMTsKKyAgYXNzZXJ0X2VxdWFscyhOYXZpZ2F0b3Iu
cHJvdG90eXBlLmNvbnN0cnVjdG9yLCBOYXZpZ2F0b3IpOworCisgIGRvY3VtZW50LmNvbnN0cnVj
dG9yID0ge307CisgIGFzc2VydF9lcXVhbHMoSFRNTERvY3VtZW50LnByb3RvdHlwZS5jb25zdHJ1
Y3RvciwgSFRNTERvY3VtZW50KTsKKworICBkb2N1bWVudC5oZWFkLmNvbnN0cnVjdG9yID0gW107
CisgIGFzc2VydF9lcXVhbHMoSFRNTEhlYWRFbGVtZW50LnByb3RvdHlwZS5jb25zdHJ1Y3Rvciwg
SFRNTEhlYWRFbGVtZW50KTsKK30sICJXaW5kb3csIExvY2F0aW9uLCBOYXZpZ2F0b3IsIEhUTUxE
b2N1bWVudCwgYW5kIEhUTUxIZWFkRWxlbWVudCIpOworCit0ZXN0KCgpID0+IHsKKyAgZm9yIChs
ZXQga2V5IG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHdpbmRvdykpIHsKKyAgICBpZiAo
IS9eW0EtWl0vLnRlc3Qoa2V5KSkgY29udGludWU7CisKKyAgICBsZXQgZGVzYyA9IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod2luZG93LCBrZXkpOworICAgIGlmICghZGVzYyB8fCBk
ZXNjLmVudW1lcmFibGUpIGNvbnRpbnVlOworICAgIGxldCB7dmFsdWV9ID0gZGVzYzsKKyAgICBp
ZiAodHlwZW9mIHZhbHVlICE9PSAiZnVuY3Rpb24iKSBjb250aW51ZTsKKyAgICBsZXQge3Byb3Rv
dHlwZX0gPSB2YWx1ZTsKKyAgICBpZiAoIXByb3RvdHlwZSkgY29udGludWU7CisKKyAgICBsZXQg
aGVpciA9IE9iamVjdC5jcmVhdGUocHJvdG90eXBlKTsKKyAgICBsZXQgbmV3Q29uc3RydWN0b3Ig
PSBmdW5jdGlvbigpIHt9OworICAgIGhlaXIuY29uc3RydWN0b3IgPSBuZXdDb25zdHJ1Y3RvcjsK
KworICAgIGFzc2VydF9ub3RfZXF1YWxzKHByb3RvdHlwZS5jb25zdHJ1Y3RvciwgbmV3Q29uc3Ry
dWN0b3IsIGtleSk7CisgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShoZWlyLCAiY29uc3RydWN0b3Ii
LCBrZXkpOworICAgIGFzc2VydF9lcXVhbHMoaGVpci5jb25zdHJ1Y3RvciwgbmV3Q29uc3RydWN0
b3IsIGtleSk7CisgIH0KK30sICJBbGwgd2luZG93LiogY29uc3RydWN0b3JzIik7Cis8L3Njcmlw
dD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>