<?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>153895</bug_id>
          
          <creation_ts>2016-02-04 14:07:15 -0800</creation_ts>
          <short_desc>Instance property getters / setters cannot be called on another instance of the same type</short_desc>
          <delta_ts>2016-02-05 16:18:52 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=133559</see_also>
          <bug_file_loc>http://heycam.github.io/webidl/#dfn-attribute-getter</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>153817</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>alecflett</cc>
    
    <cc>barraclough</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>jsbell</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1162185</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-02-04 14:07:15 -0800</bug_when>
    <thetext>Instance property getters / setters cannot be called on another instance of the same type. This does not match the behavior of Firefox or the Web IDL specification:
http://heycam.github.io/webidl/#dfn-attribute-getter

The issue is that in our bindings the getters / setters using |slotBase| instead of |thisValue| and therefore end up using the instance the getter was taken from.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1162268</commentid>
    <comment_count>1</comment_count>
      <attachid>270715</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-02-04 18:40:36 -0800</bug_when>
    <thetext>Created attachment 270715
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1162270</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-04 18:43:05 -0800</bug_when>
    <thetext>Attachment 270715 did not pass style-queue:


ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:138:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:153:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:168:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:186:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:201:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp:221:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp:236:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp:251:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp:264:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp:281:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp:296:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp:313:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:753:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:768:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:783:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:818:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:831:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:849:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:864:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:879:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:894:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:909:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:924:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:939:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:954:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:969:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:984:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:999:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1014:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1029:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1044:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1069:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1084:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1099:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1114:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1129:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1144:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1159:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1174:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1189:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1204:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1219:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1236:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1253:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1268:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1283:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1300:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1315:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1330:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1343:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1357:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1372:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1387:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1405:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1422:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1442:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1460:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1480:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1498:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1514:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1531:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1548:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1565:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1580:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1595:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1609:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1627:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1645:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1660:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1674:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1689:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1704:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1719:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1734:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1749:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1764:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1779:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1794:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1809:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1824:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1839:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1854:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1869:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1886:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1901:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1916:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1931:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp:145:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSattribute.cpp:123:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp:439:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp:456:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp:473:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp:488:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp:529:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp:546:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp:563:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp:578:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp:127:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp:148:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp:183:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp:218:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp:253:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp:292:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp:167:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp:182:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:136:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:149:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:155:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 108 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1162289</commentid>
    <comment_count>3</comment_count>
      <attachid>270720</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-02-04 20:08:36 -0800</bug_when>
    <thetext>Created attachment 270720
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1162290</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-04 20:09:24 -0800</bug_when>
    <thetext>Attachment 270720 did not pass style-queue:


ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:138:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:153:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:168:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:186:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:201:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp:221:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp:236:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp:251:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp:264:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp:281:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp:296:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp:313:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:753:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:768:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:783:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:818:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:831:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:849:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:864:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:879:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:894:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:909:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:924:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:939:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:954:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:969:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:984:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:999:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1014:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1029:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1044:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1069:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1084:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1099:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1114:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1129:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1144:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1159:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1174:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1189:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1204:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1219:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1236:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1253:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1268:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1283:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1300:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1315:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1330:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1343:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1357:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1372:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1387:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1405:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1422:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1442:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1460:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1480:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1498:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1514:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1531:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1548:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1565:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1580:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1595:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1609:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1627:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1645:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1660:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1674:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1689:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1704:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1719:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1734:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1749:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1764:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1779:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1794:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1809:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1824:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1839:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1854:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1869:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1886:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1901:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1916:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1931:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:136:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:149:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSattribute.cpp:123:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp:439:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp:456:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp:473:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp:488:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp:529:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp:546:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp:563:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp:578:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp:127:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp:148:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp:183:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp:218:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp:253:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp:292:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp:167:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp:182:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp:145:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:155:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 108 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1162507</commentid>
    <comment_count>5</comment_count>
      <attachid>270720</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2016-02-05 14:49:35 -0800</bug_when>
    <thetext>Comment on attachment 270720
Patch

Looks good to me.
My preference would be, if you&apos;re going to search the prototype chain at all then loop over it. A one-deep prototype check is very peculiar. That being said, since this is just a compatibility hack I&apos;m not going to argue with your decision.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1162513</commentid>
    <comment_count>6</comment_count>
      <attachid>270775</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-02-05 15:17:30 -0800</bug_when>
    <thetext>Created attachment 270775
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1162514</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-05 15:19:48 -0800</bug_when>
    <thetext>Attachment 270775 did not pass style-queue:


ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:138:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:153:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:168:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:186:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:201:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp:221:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp:236:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp:251:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp:264:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp:281:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp:296:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp:313:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:753:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:768:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:783:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:818:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:831:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:849:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:864:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:879:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:894:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:909:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:924:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:939:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:954:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:969:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:984:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:999:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1014:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1029:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1044:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1069:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1084:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1099:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1114:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1129:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1144:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1159:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1174:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1189:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1204:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1219:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1236:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1253:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1268:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1283:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1300:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1315:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1330:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1343:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1357:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1372:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1387:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1405:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1422:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1442:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1460:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1480:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1498:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1514:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1531:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1548:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1565:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1580:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1595:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1609:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1627:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1645:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1660:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1674:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1689:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1704:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1719:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1734:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1749:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1764:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1779:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1794:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1809:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1824:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1839:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1854:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1869:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1886:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1901:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1916:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1931:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:136:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:149:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSattribute.cpp:123:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp:439:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp:456:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp:473:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp:488:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp:529:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp:546:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp:563:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp:578:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp:127:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp:148:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp:183:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp:218:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp:253:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp:292:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp:167:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp:182:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp:145:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:155:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 108 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1162534</commentid>
    <comment_count>8</comment_count>
      <attachid>270775</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-05 16:18:45 -0800</bug_when>
    <thetext>Comment on attachment 270775
Patch

Clearing flags on attachment: 270775

Committed r196200: &lt;http://trac.webkit.org/changeset/196200&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1162535</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-05 16:18:52 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270715</attachid>
            <date>2016-02-04 18:40:36 -0800</date>
            <delta_ts>2016-02-04 20:08:31 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>153895_getters_other_instance_wip.patch</filename>
            <type>text/plain</type>
            <size>122667</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2luc3RhbmNlLXByb3BlcnR5LWdldHRlci1vdGhl
ci1pbnN0YW5jZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9pbnN0YW5jZS1wcm9wZXJ0
eS1nZXR0ZXItb3RoZXItaW5zdGFuY2UtZXhwZWN0ZWQudHh0CmluZGV4IDcwZTk5NzEuLmZlZTAx
NmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2luc3RhbmNlLXByb3BlcnR5LWdldHRlci1v
dGhlci1pbnN0YW5jZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMvaW5zdGFuY2Ut
cHJvcGVydHktZ2V0dGVyLW90aGVyLWluc3RhbmNlLWV4cGVjdGVkLnR4dApAQCAtNyw3ICs3LDcg
QEAgUEFTUyBsb2NhdGlvbkdldHRlciBpcyBhbiBpbnN0YW5jZSBvZiBmdW5jdGlvbiBGdW5jdGlv
bigpIHsKICAgICBbbmF0aXZlIGNvZGVdCiB9CiBQQVNTIGxvY2F0aW9uR2V0dGVyLmNhbGwob3Ro
ZXJXaW5kb3cuZG9jdW1lbnQpLnRvU3RyaW5nKCkgaXMgImFib3V0OmJsYW5rIgotRkFJTCBsb2Nh
dGlvbkdldHRlci5jYWxsKHdpbmRvdy5kb2N1bWVudCkgPT09IHdpbmRvdy5kb2N1bWVudC5sb2Nh
dGlvbiBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZhbHNlLgorUEFTUyBsb2NhdGlvbkdldHRlci5jYWxs
KHdpbmRvdy5kb2N1bWVudCkgPT09IHdpbmRvdy5kb2N1bWVudC5sb2NhdGlvbiBpcyB0cnVlCiBQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXgg
ZTE2YjQ5Mi4uOTE3NjhkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTIyODUsMjcgKzIyODUsMjUgQEAgc3ViIEdlbmVy
YXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFVO
VVNFRF9QQVJBTShzbG90QmFzZSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpO1xuIik7CiAgICAgICAgICAgICBpZiAoISRh
dHRyaWJ1dGUtPmlzU3RhdGljIHx8ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29u
c3RydWN0b3IkLykgewotICAgICAgICAgICAgICAgIG15ICR2YXJpYWJsZUZvclR5cGVDaGVjayA9
ICJjYXN0ZWRUaGlzIjsKICAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkN1c3RvbVByb3h5VG9KU09iamVjdCJ9KSB7CiAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8qIGNhc3RlZFRoaXMgPSB0byR7Y2xhc3NO
YW1lfShKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7XG4iKTsKLSAgICAgICAgICAgICAgICB9
IGVsc2lmIChBdHRyaWJ1dGVTaG91bGRCZU9uSW5zdGFuY2UoJGludGVyZmFjZSwgJGF0dHJpYnV0
ZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgIyBGSVhNRTogVGhpcyBkb2VzIG5vdCBzZWVtIHJp
Z2h0LCB3ZSBzaG91bGQgbGlrZWx5IHVzZSB0aGlzVmFsdWUgaW5zdGVhZCBvZiBzbG90QmFzZSBo
ZXJlIHRvIG1hdGNoIHRoZSBzcGVjaWZpY2F0aW9uOgotICAgICAgICAgICAgICAgICAgICAjIGh0
dHA6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZuLWF0dHJpYnV0ZS1nZXR0ZXIKLSAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byogY2FzdGVkVGhpcyA9
IGpzQ2FzdDxKUyR7aW50ZXJmYWNlTmFtZX0qPihzbG90QmFzZSk7XG4iKTsKLSAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiBjYXN0ZWRUaGlz
T2JqZWN0ID0gIiAuIEdldENhc3RpbmdIZWxwZXJGb3JUaGlzT2JqZWN0KCRpbnRlcmZhY2UpIC4g
IihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAg
JHZhcmlhYmxlRm9yVHlwZUNoZWNrID0gImNhc3RlZFRoaXNPYmplY3QiOwogICAgICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICR7Y2xhc3NOYW1lfSogY2FzdGVkVGhpcyA9ICIgLiBHZXRDYXN0aW5nSGVscGVyRm9yVGhpc09i
amVjdCgkaW50ZXJmYWNlKSAuICIoSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpO1xuIik7Cisg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8qIGNhc3RlZFRo
aXMgPSAiIC4gR2V0Q2FzdGluZ0hlbHBlckZvclRoaXNPYmplY3QoJGludGVyZmFjZSkgLiAiKEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTtcbiIpOwogICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAjIEZJWE1FOiBHZXR0ZXJzIG9uIGEgZ2xvYmFsIHNob3VsZCBub3QgcmVxdWly
ZSBhbiBleHBsaWNpdCB0aGlzLgotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGlmIChVTkxJS0VMWSghJHZhcmlhYmxlRm9yVHlwZUNoZWNrKSlcbiIpOworICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHtcbiIpOwogICAgICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJMZW5pZW50VGhpcyJ9KSB7CiAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpO1xuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNpZiAoSW50ZXJmYWNlUmVxdWlyZXNB
dHRyaWJ1dGVzT25JbnN0YW5jZUZvckNvbXBhdGliaWxpdHkoJGludGVyZmFjZSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgIyBGYWxsYmFjayB0byB0cnlpbmcgdG8gZ2V0IHRoZSBwcm9wZXJ0eSBv
biB0aGUgcHJvdG90eXBlIG9iamVjdCBmb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLgorICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgYXV0byogdGhpc09iamVj
dCA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpLmdldE9iamVjdCgpO1xuIik7CisgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBjYXN0ZWRUaGlzID0gdGhp
c09iamVjdCA/ICIgLiBHZXRDYXN0aW5nSGVscGVyRm9yVGhpc09iamVjdCgkaW50ZXJmYWNlKSAu
ICIodGhpc09iamVjdC0+cHJvdG90eXBlKCkpIDogbnVsbHB0cjtcbiIpOworICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgaWYgKCFjYXN0ZWRUaGlzKVxuIik7
CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgXCIkaW50ZXJmYWNlTmFtZVwiLCBcIiRu
YW1lXCIpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCBcIiRpbnRlcmZhY2VOYW1l
XCIsIFwiJG5hbWVcIik7XG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgXCIkaW50ZXJmYWNlTmFtZVwiLCBcIiRuYW1lXCIpO1xuIik7CiAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IH1cbiIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBteSBAYXJndW1lbnRzID0gKCk7
CkBAIC0yNjIyLDIwICsyNjIwLDIyIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIFVOVVNFRF9QQVJBTShiYXNlT2JqZWN0KTtcbiIpOwogICAgICAgICAgICAgaWYgKCEk
YXR0cmlidXRlLT5pc1N0YXRpYykgewotICAgICAgICAgICAgICAgIG15ICR2YXJpYWJsZUZvclR5
cGVDaGVjayA9ICJjYXN0ZWRUaGlzIjsKICAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVByb3h5VG9KU09iamVjdCJ9KSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogY2FzdGVk
VGhpcyA9IHRvJHtjbGFzc05hbWV9KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTtcbiIpOwot
ICAgICAgICAgICAgICAgIH0gZWxzaWYgKEF0dHJpYnV0ZVNob3VsZEJlT25JbnN0YW5jZSgkaW50
ZXJmYWNlLCAkYXR0cmlidXRlKSkgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTJHtpbnRlcmZhY2VOYW1lfSo+
KGJhc2VPYmplY3QpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICR7Y2xhc3NOYW1lfSogY2FzdGVkVGhpc09iamVjdCA9ICIgLiBHZXRDYXN0aW5nSGVs
cGVyRm9yVGhpc09iamVjdCgkaW50ZXJmYWNlKSAuICIoSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgICR2YXJpYWJsZUZvclR5cGVDaGVjayA9ICJj
YXN0ZWRUaGlzT2JqZWN0IjsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgYXV0byogY2FzdGVkVGhpcyA9IHRvJHtjbGFzc05hbWV9KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTtcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogY2FzdGVkVGhpcyA9
ICIgLiBHZXRDYXN0aW5nSGVscGVyRm9yVGhpc09iamVjdCgkaW50ZXJmYWNlKSAuICIoSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIGF1dG8qIGNhc3RlZFRoaXMgPSAiIC4gR2V0Q2FzdGluZ0hlbHBlckZv
clRoaXNPYmplY3QoJGludGVyZmFjZSkgLiAiKEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTtc
biIpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBpZiAoVU5MSUtFTFkoISR2YXJpYWJsZUZvclR5cGVDaGVjaykpIHtcbiIpOworICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHtcbiIpOwogICAgICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJMZW5pZW50VGhpcyJ9KSB7CiAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsKICAgICAgICAgICAg
ICAgICB9IGVsc2lmIChJbnRlcmZhY2VSZXF1aXJlc0F0dHJpYnV0ZXNPbkluc3RhbmNlRm9yQ29t
cGF0aWJpbGl0eSgkaW50ZXJmYWNlKSkgeworICAgICAgICAgICAgICAgICAgICAjIEZhbGxiYWNr
IHRvIHRyeWluZyB0byBzZXQgdGhlIHByb3BlcnR5IG9uIHRoZSBwcm90b3R5cGUgb2JqZWN0IGZv
ciBjb21wYXRpYmlsaXR5IHJlYXNvbnMuCisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICAgICBhdXRvKiB0aGlzT2JqZWN0ID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkuZ2V0T2JqZWN0KCk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgIGNhc3RlZFRoaXMgPSB0aGlzT2JqZWN0ID8gIiAuIEdldENhc3RpbmdI
ZWxwZXJGb3JUaGlzT2JqZWN0KCRpbnRlcmZhY2UpIC4gIih0aGlzT2JqZWN0LT5wcm90b3R5cGUo
KSkgOiBudWxscHRyO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICBpZiAoIWNhc3RlZFRoaXMpIHtcbiIpOworICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgICAgIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgXCIkaW50ZXJmYWNlTmFtZVwiLCBcIiRuYW1lXCIpO1xuIik7CisgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAgICAgcmV0dXJuO1xuIik7CisgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICB9XG4iKTsKICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJlcG9ydERlcHJlY2F0ZWRT
ZXR0ZXJFcnJvcigqc3RhdGUsIFwiJGludGVyZmFjZU5hbWVcIiwgXCIkbmFtZVwiKTtcbiIpOwog
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIFwiJGludGVyZmFj
ZU5hbWVcIiwgXCIkbmFtZVwiKTtcbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNw
cAppbmRleCAyNWQ2Y2UyLi45ZWRjYjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0
LmNwcApAQCAtMTQ5LDEwICsxNDksMTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0QWN0aXZlRE9N
T2JqZWN0RXhjaXRpbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG8KICAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRoaXNWYWx1ZSk7Ci0gICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rl
c3RBY3RpdmVET01PYmplY3QqPihzbG90QmFzZSk7Ci0gICAgSlNUZXN0QWN0aXZlRE9NT2JqZWN0
KiBjYXN0ZWRUaGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RBY3RpdmVET01PYmplY3Qq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzT2JqZWN0KSkKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RB
Y3RpdmVET01PYmplY3QqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdEFjdGl2ZURPTU9iamVjdCIsICJleGNpdGluZ0F0dHIiKTsKKyAgICB9
CiAgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3co
c3RhdGUsIGNhc3RlZFRoaXMtPndyYXBwZWQoKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAppbmRleCBjYTA2YzhkLi45
MWU4MmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCkBAIC0xNjEsOSAr
MTYxLDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0b3JBdHRyMShFeGVj
U3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsCiAgICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwotICAgIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdEV2ZW50Q29uc3RydWN0b3IqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RFdmVudENvbnN0cnVjdG9yIiwg
ImF0dHIxIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5hdHRy
MSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xNzUsOSArMTc2
LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0b3JBdHRyMihFeGVjU3Rh
dGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsCiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
ICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwotICAgIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdEV2ZW50Q29uc3RydWN0b3IqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0g
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RFdmVudENvbnN0cnVjdG9yIiwgImF0
dHIyIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5hdHRyMigp
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24u
Y3BwCmluZGV4IGEwZTc2ODMuLjZkMGE1MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCkBAIC0x
MzksMTAgKzEzOSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFeGNlcHRpb25OYW1lKEV4ZWNT
dGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZAogICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhpc1ZhbHVlKTsKLSAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdEV4Y2VwdGlv
bio+KHNsb3RCYXNlKTsKLSAgICBKU1Rlc3RFeGNlcHRpb24qIGNhc3RlZFRoaXNPYmplY3QgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdEV4Y2VwdGlvbio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXNPYmplY3QpKQorICAgIGF1dG8qIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV4Y2VwdGlvbio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0RXhjZXB0aW9uIiwgIm5hbWUi
KTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLm5hbWUoKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcApp
bmRleCBiZjg1MDgwLi5lZmZhZTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcApAQCAtNDMzLDkg
KzQzMywxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMShF
eGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhcwogICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKLSAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdEludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdEludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNTdHIxIik7CisgICAgfQog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5pbXBsZW1lbnRzU3RyMSgpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC00NDksOSArNDUwLDEwIEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEpTT2JqZWN0KiBzbG90QmFzCiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVT
RURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwotICAgIEpT
VGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNl
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJm
YWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c1N0cjIiKTsKKyAgICB9CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5n
V2l0aENhY2hlKHN0YXRlLCBpbXBsLmltcGxlbWVudHNTdHIyKCkpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTQ2NSw5ICs0NjcsMTAgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3Qq
IHNsb3RCYXMKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTShzbG90
QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7Ci0gICAgSlNUZXN0SW50ZXJmYWNl
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBh
dXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewog
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFj
ZSIsICJpbXBsZW1lbnRzU3RyMyIpOworICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGNhc3RlZFRoaXMtPmltcGxlbWVudHNTdHIzKCpzdGF0ZSkpOwogfQogCkBAIC00NzksOSArNDgy
LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUltcGxlbWVudHNOb2RlKEV4ZWNT
dGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzCiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
ICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwotICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c05vZGUiKTsKKyAgICB9CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBs
LmltcGxlbWVudHNOb2RlKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CkBAIC01MTksOSArNTIzLDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN1cHBs
ZW1lbnRhbFN0cjEoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCCiAgICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwotICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwot
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OworICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsU3Ry
MSIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIFdlYkNvcmU6OlRlc3RT
dXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbFN0cjEoaW1wbCkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKQEAgLTUzNSw5ICs1NDAsMTAgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCog
c2xvdEIKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFz
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7Ci0gICAgSlNUZXN0SW50ZXJmYWNlKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBhdXRv
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIs
ICJzdXBwbGVtZW50YWxTdHIyIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0
ZSwgV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsU3RyMihpbXBsKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtNTUxLDkgKzU1NywxMCBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIzKEV4ZWNTdGF0ZSog
c3RhdGUsIEpTT2JqZWN0KiBzbG90QgogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKLSAgICBK
U1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFj
ZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQorICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVy
ZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbFN0cjMiKTsKKyAgICB9CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5zdXBwbGVtZW50YWxTdHIzKCpzdGF0ZSkpOwog
fQogCkBAIC01NjUsOSArNTcyLDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN1
cHBsZW1lbnRhbE5vZGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCCiAgICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNF
RF9QQVJBTSh0aGlzVmFsdWUpOwotICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgYXV0byogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOworICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFs
Tm9kZSIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0
KCksIFdURjo6Z2V0UHRyKFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbE5v
ZGUoaW1wbCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC02MzQs
NyArNjQyLDcgQEAgdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMihFeGVjU3Rh
dGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW4KIHsKICAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGJhc2VP
YmplY3QpOwotICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGF1dG8q
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAg
ICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVt
ZW50c1N0cjIiKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjUzLDcgKzY2MSw3IEBAIHZvaWQgc2V0
SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3Qq
IGJhc2VPYmplY3QsIEVuCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTShiYXNlT2JqZWN0KTsKLSAgICBKU1Rlc3RJ
bnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNTdHIzIik7CiAgICAgICAg
IHJldHVybjsKQEAgLTY2OCw3ICs2NzYsNyBAQCB2b2lkIHNldEpTVGVzdEludGVyZmFjZUltcGxl
bWVudHNOb2RlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbgogewog
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBV
TlVTRURfUEFSQU0oYmFzZU9iamVjdCk7Ci0gICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJm
YWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdElu
dGVyZmFjZSIsICJpbXBsZW1lbnRzTm9kZSIpOwogICAgICAgICByZXR1cm47CkBAIC03MDAsNyAr
NzA4LDcgQEAgdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIyKEV4ZWNTdGF0
ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LAogewogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0oYmFzZU9iamVj
dCk7Ci0gICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgYXV0byogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAg
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50
YWxTdHIyIik7CiAgICAgICAgIHJldHVybjsKQEAgLTcxOSw3ICs3MjcsNyBAQCB2b2lkIHNldEpT
VGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3Qq
IGJhc2VPYmplY3QsCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTShiYXNlT2JqZWN0KTsKLSAgICBKU1Rlc3RJbnRl
cmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbFN0cjMiKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtNzM0LDcgKzc0Miw3IEBAIHZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxl
bWVudGFsTm9kZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwKIHsKICAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKGJhc2VPYmplY3QpOwotICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFj
ZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7CiAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRl
cmZhY2UiLCAic3VwcGxlbWVudGFsTm9kZSIpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAppbmRleCA3MjBhOTkzLi5lOTY3MDllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKQEAgLTEzMCw5ICsx
MzAsMTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXR0
cmlidXRlQ3VzdG9tKEV4ZWNTdGF0ZSogc3RhdGUsIEoKICAgICBVTlVTRURfUEFSQU0oc3RhdGUp
OwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1
ZSk7Ci0gICAgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgYXV0byogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewog
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yIiwgInRlc3RBdHRyaWJ1dGVDdXN0b20iKTsKKyAgICB9CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT50ZXN0QXR0cmlidXRlQ3VzdG9tKCpzdGF0ZSkp
OwogfQogCkBAIC0xNDIsOSArMTQzLDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZVJXQ3VzdG9tKEV4ZWNTdGF0ZSogc3RhdGUsCiAgICAg
VU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwotICAgIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcio+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQorICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciIsICJ0ZXN0QXR0cmlidXRlUldDdXN0b20i
KTsKKyAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT50ZXN0QXR0
cmlidXRlUldDdXN0b20oKnN0YXRlKSk7CiB9CiAKQEAgLTE3NCw3ICsxNzYsNyBAQCB2b2lkIHNl
dEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZVJXQ3VzdG9tKEV4ZWNTdGF0
ZSogc3RhdGUsIEpTT2JqZQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0oYmFzZU9iamVjdCk7Ci0gICAgSlNUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3IqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGF1
dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yIiwgInRlc3RBdHRyaWJ1dGVSV0N1c3RvbSIpOwogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Tm9kZS5jcHAKaW5kZXggODIyYTJlNC4uMDM1OGU2MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcApAQCAt
MTIxLDkgKzEyMSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb2RlTmFtZShFeGVjU3RhdGUq
IHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbAogICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhpc1ZhbHVlKTsKLSAgICBKU1Rlc3ROb2RlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3ROb2RlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0Tm9kZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0Tm9kZSIsICJuYW1lIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShz
dGF0ZSwgaW1wbC5uYW1lKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
QEAgLTE1NSw3ICsxNTYsNyBAQCB2b2lkIHNldEpTVGVzdE5vZGVOYW1lKEV4ZWNTdGF0ZSogc3Rh
dGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aAogewogICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFS
QU0oYmFzZU9iamVjdCk7Ci0gICAgSlNUZXN0Tm9kZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0Tm9kZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBhdXRvKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb2RlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5vZGUiLCAibmFtZSIpOwogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAKaW5kZXggMzFmMWQzYy4u
MzkxZWMwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcApAQCAtMTQyLDkg
KzE0MiwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJt
aW5pc3RpY1JlYWRvbmx5QXR0cihFeGVjU3RhdGUqIHN0YQogICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKLSAgICBKU1Rlc3ROb25kZXRlcm1pbmlzdGljKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgYXV0byogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyo+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIs
ICJub25kZXRlcm1pbmlzdGljUmVhZG9ubHlBdHRyIik7CisgICAgfQogI2lmIEVOQUJMRShXRUJf
UkVQTEFZKQogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzdGF0ZS0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpOwogICAgIElucHV0Q3Vyc29yJiBjdXJzb3IgPSBnbG9iYWxPYmplY3Qt
PmlucHV0Q3Vyc29yKCk7CkBAIC0xNzYsOSArMTc3LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0cihFeGVjU3RhdGUq
IHN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2Up
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwotICAgIEpTVGVzdE5vbmRldGVybWluaXN0
aWMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vbmRldGVybWluaXN0aWMqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1p
bmlzdGljKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNXcml0ZWFibGVBdHRy
Iik7CisgICAgfQogI2lmIEVOQUJMRShXRUJfUkVQTEFZKQogICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwogICAgIElucHV0Q3Vy
c29yJiBjdXJzb3IgPSBnbG9iYWxPYmplY3QtPmlucHV0Q3Vyc29yKCk7CkBAIC0yMTAsOSArMjEy
LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlz
dGljRXhjZXB0aW9uQXR0cihFeGVjU3RhdGUqIHN0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
ICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwotICAgIEpTVGVzdE5vbmRldGVybWluaXN0aWMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE5vbmRldGVybWluaXN0aWMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0g
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5v
bmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyIik7CisgICAgfQogI2lmIEVOQUJMRShXRUJfUkVQ
TEFZKQogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzdGF0ZS0+bGV4aWNhbEds
b2JhbE9iamVjdCgpOwogICAgIElucHV0Q3Vyc29yJiBjdXJzb3IgPSBnbG9iYWxPYmplY3QtPmlu
cHV0Q3Vyc29yKCk7CkBAIC0yNDQsOSArMjQ3LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5v
bmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0cihFeGVjU3Rh
CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwotICAgIEpTVGVzdE5vbmRldGVybWluaXN0aWMq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vbmRldGVybWluaXN0aWMqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
KyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlz
dGljKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNHZXR0ZXJFeGNlcHRpb25B
dHRyIik7CisgICAgfQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogI2lmIEVOQUJMRShXRUJf
UkVQTEFZKQogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzdGF0ZS0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpOwpAQCAtMjgyLDkgKzI4NiwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIoRXhl
Y1N0YQogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNl
KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKLSAgICBKU1Rlc3ROb25kZXRlcm1pbmlz
dGljKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJt
aW5pc3RpYyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0
aW9uQXR0ciIpOworICAgIH0KICNpZiBFTkFCTEUoV0VCX1JFUExBWSkKICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBJ
bnB1dEN1cnNvciYgY3Vyc29yID0gZ2xvYmFsT2JqZWN0LT5pbnB1dEN1cnNvcigpOwpAQCAtMzM2
LDcgKzM0MSw3IEBAIHZvaWQgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0
aWNXcml0ZWFibGVBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTCiB7CiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTShiYXNl
T2JqZWN0KTsKLSAgICBKU1Rlc3ROb25kZXRlcm1pbmlzdGljKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vbmRldGVy
bWluaXN0aWMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewogICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0ciIpOwog
ICAgICAgICByZXR1cm47CkBAIC0zNTMsNyArMzU4LDcgQEAgdm9pZCBzZXRKU1Rlc3ROb25kZXRl
cm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY0V4Y2VwdGlvbkF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwg
SlMKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKGJhc2VPYmplY3QpOwotICAgIEpTVGVzdE5vbmRldGVybWluaXN0
aWMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vbmRldGVybWluaXN0aWMqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVybWlu
aXN0aWNFeGNlcHRpb25BdHRyIik7CiAgICAgICAgIHJldHVybjsKQEAgLTM3MCw3ICszNzUsNyBA
QCB2b2lkIHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljR2V0dGVyRXhj
ZXB0aW9uQXR0cihFeGVjU3RhdGUqIHN0YQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0oYmFzZU9iamVjdCk7Ci0g
ICAgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0Tm9uZGV0ZXJtaW5pc3RpYyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBh
dXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5vbmRldGVy
bWluaXN0aWMiLCAibm9uZGV0ZXJtaW5pc3RpY0dldHRlckV4Y2VwdGlvbkF0dHIiKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtMzg3LDcgKzM5Miw3IEBAIHZvaWQgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5p
c3RpY05vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyKEV4ZWNTdGF0ZSogc3RhCiB7
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAg
IFVOVVNFRF9QQVJBTShiYXNlT2JqZWN0KTsKLSAgICBKU1Rlc3ROb25kZXRlcm1pbmlzdGljKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE5vbmRldGVybWluaXN0aWMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGlj
U2V0dGVyRXhjZXB0aW9uQXR0ciIpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IDky
ODc0MDAuLmIzMGQ0NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC03NDcsOSArNzQ3LDEwIEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5TG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmpl
Y3QqIHNsb3RCYXNlLCBFCiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFS
QU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwotICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgYXV0byog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVhZE9ubHlMb25n
QXR0ciIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5yZWFkT25seUxvbmdBdHRyKCkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTc2MSw5ICs3NjIsMTAgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVhZE9ubHlTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEpTT2JqZWN0KiBzbG90QmFzZSwKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVO
VVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7Ci0gICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAg
ICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWFk
T25seVN0cmluZ0F0dHIiKTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBp
bXBsLnJlYWRPbmx5U3RyaW5nQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CkBAIC03NzUsOSArNzc3LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlYWRP
bmx5VGVzdE9iakF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlCiAgICAg
VU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVhZE9ubHlUZXN0T2JqQXR0ciIpOworICAgIH0KICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGlt
cGwucmVhZE9ubHlUZXN0T2JqQXR0cigpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwpAQCAtODA5LDEwICs4MTIsMTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29u
c3RydWN0b3JUZXN0U3ViT2JqKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmEKICAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7Ci0gICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxK
U1Rlc3RPYmoqPihzbG90QmFzZSk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzT2JqZWN0ID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0g
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzT2JqZWN0KSkKKyAgICBhdXRvKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJUZXN0U3ViT2JqIik7CisgICAgfQog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0U3ViT2JqOjpnZXRDb25zdHJ1Y3Rvcihz
dGF0ZS0+dm0oKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIApAQCAtODIyLDEw
ICs4MjUsMTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVGVzdFN1Yk9iakVuYWJsZWRCeVNl
dHRpbmdDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLAogICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKLSAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KHNsb3RCYXNl
KTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXNPYmplY3QpKQorICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgIlRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nIik7CisgICAgfQogICAg
IGlmICghY2FzdGVkVGhpcy0+d3JhcHBlZCgpLmZyYW1lKCkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgU2V0dGluZ3MmIHNldHRpbmdzID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpLmZyYW1lKCktPnNldHRpbmdzKCk7CkBAIC04NDAsOSArODQzLDEw
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakVudW1BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpT
T2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTCiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAg
ICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwot
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
ICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
ZW51bUF0dHIiKTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmVu
dW1BdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTg1NCw5
ICs4NTgsMTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQnl0ZUF0dHIoRXhlY1N0YXRlKiBz
dGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlMKICAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNW
YWx1ZSk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJieXRlQXR0ciIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5ieXRlQXR0cigp
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC04NjgsOSArODczLDEw
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak9jdGV0QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBK
U09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKCiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAg
ICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwot
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
ICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
b2N0ZXRBdHRyIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLm9jdGV0QXR0cigpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC04ODIsOSArODg4LDEwIEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialNob3J0QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVj
dCogc2xvdEJhc2UsIEVuY29kZWRKCiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVT
RURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwotICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAg
YXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic2hvcnRB
dHRyIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLnNob3J0QXR0cigpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC04OTYsOSArOTAzLDEwIEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialVuc2lnbmVkU2hvcnRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2Jq
ZWN0KiBzbG90QmFzZSwKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJB
TShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7Ci0gICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBhdXRvKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ1bnNpZ25lZFNob3J0
QXR0ciIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC51bnNpZ25lZFNob3J0QXR0cigpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC05MTAsOSArOTE4LDEwIEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakxvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2Jq
ZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTCiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBV
TlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwotICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisg
ICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibG9u
Z0F0dHIiKTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwubG9uZ0F0dHIoKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtOTI0LDkgKzkzMywxMCBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpMb25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3Qq
IHNsb3RCYXNlLCBFbmNvZAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKLSAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGF1dG8q
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImxvbmdMb25nQXR0
ciIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5sb25nTG9uZ0F0dHIoKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtOTM4LDkgKzk0OCwxMCBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpVbnNpZ25lZExvbmdMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBK
U09iamVjdCogc2xvdEJhcwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKLSAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGF1dG8q
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInVuc2lnbmVkTG9u
Z0xvbmdBdHRyIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLnVuc2lnbmVkTG9uZ0xvbmdB
dHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTk1Miw5ICs5
NjMsMTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWQKICAgICBVTlVTRURfUEFSQU0oc3RhdGUp
OwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1
ZSk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJzdHJpbmdBdHRyIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwg
aW1wbC5zdHJpbmdBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
QEAgLTk2Niw5ICs5NzgsMTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVGVzdE9iakF0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGUKICAgICBVTlVTRURf
UEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJ0ZXN0T2JqQXR0ciIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwg
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwudGVzdE9iakF0dHIo
KSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTk4MCw5ICs5OTMs
MTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTGVuaWVudFRlc3RPYmpBdHRyKEV4ZWNTdGF0
ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwog
ICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIH0K
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRy
KGltcGwubGVuaWVudFRlc3RPYmpBdHRyKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CkBAIC05OTQsOSArMTAwOCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpY
TUxPYmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZAog
ICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIlhNTE9iakF0dHIiKTsKKyAgICB9CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRv
SlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLnht
bE9iakF0dHIoKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEw
MDgsOSArMTAyMywxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDcmVhdGUoRXhlY1N0YXRl
KiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYQogICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhpc1ZhbHVlKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQorICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgImNyZWF0ZSIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKGltcGwuaXNDcmVh
dGUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTAyMiw5ICsx
MDM4LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5U3ltYm9sQXR0cihFeGVj
U3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsCiAgICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAicmVhZE9ubHlTeW1ib2xBdHRyIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBTeW1ib2w6OmNyZWF0ZShz
dGF0ZS0+dm0oKSwgKihpbXBsLnJlYWRPbmx5U3ltYm9sQXR0cigpKS51aWQoKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTA0Niw5ICsxMDYzLDEwIEBAIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNPYmplY3QqIHNsb3RCYXNlCiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURf
UEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwotICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgYXV0
byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAg
cmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVk
U3RyaW5nQXR0ciIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwu
ZmFzdEdldEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHN0cmluZ2F0dHJB
dHRyKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTA2MCw5ICsx
MDc4LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEludGVncmFsQXR0cihF
eGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhCiAgICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAicmVmbGVjdGVkSW50ZWdyYWxBdHRyIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBs
LmdldEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkaW50ZWdy
YWxhdHRyQXR0cikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEw
NzQsOSArMTA5MywxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRVbnNpZ25l
ZEludGVncmFsQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdAogICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhpc1ZhbHVlKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQorICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgInJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyIik7CisgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSBqc051bWJlcihzdGQ6Om1heCgwLCBpbXBsLmdldEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6
OkhUTUxOYW1lczo6cmVmbGVjdGVkdW5zaWduZWRpbnRlZ3JhbGF0dHJBdHRyKSkpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEwODgsOSArMTEwOCwxMCBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRCb29sZWFuQXR0cihFeGVjU3RhdGUqIHN0YXRl
LCBKU09iamVjdCogc2xvdEJhcwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKLSAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGF1
dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3Rl
ZEJvb2xlYW5BdHRyIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4oaW1wbC5mYXN0SGFzQXR0cmli
dXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkYm9vbGVhbmF0dHJBdHRyKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTEwMiw5ICsxMTIzLDEwIEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFVSTEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNPYmplY3QqIHNsb3RCYXNlLCBFCiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVT
RURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwotICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAg
YXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVj
dGVkVVJMQXR0ciIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwu
Z2V0VVJMQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkdXJsYXR0ckF0dHIp
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xMTE2LDkgKzExMzgs
MTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihFeGVjU3Rh
dGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwog
ICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShz
dGF0ZSwgaW1wbC5mYXN0R2V0QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29u
dGVudFN0cmluZ0F0dHJBdHRyKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OwpAQCAtMTEzMCw5ICsxMTUzLDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3Rl
ZEN1c3RvbUludGVncmFsQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCoKICAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIiKTsKKyAgICB9
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJl
c3VsdCA9IGpzTnVtYmVyKGltcGwuZ2V0SW50ZWdyYWxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5h
bWVzOjpjdXN0b21Db250ZW50SW50ZWdyYWxBdHRyQXR0cikpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKQEAgLTExNDQsOSArMTE2OCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09i
amVjdCogcwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RC
YXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGF1dG8qIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJv
d0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbUJvb2xl
YW5BdHRyIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4oaW1wbC5mYXN0SGFzQXR0cmlidXRlKFdl
YkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudEJvb2xlYW5BdHRyQXR0cikpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTExNTgsOSArMTE4MywxMCBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21VUkxBdHRyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEpTT2JqZWN0KiBzbG90QgogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKLSAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGF1
dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3Rl
ZEN1c3RvbVVSTEF0dHIiKTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBp
bXBsLmdldFVSTEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRVUkxB
dHRyQXR0cikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTExNzIs
OSArMTE5OCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpUeXBlZEFycmF5QXR0cihFeGVj
U3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuYwogICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQorICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgInR5cGVkQXJyYXlBdHRyIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC50eXBlZEFycmF5QXR0cigp
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTE4Niw5ICsxMjEz
LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4
ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
ICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAiYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKKyAgICB9CiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oZWMpKTsK
QEAgLTEyMDIsOSArMTIzMCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyV2l0aEdl
dHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTTwogICAgIFVOVVNF
RF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURf
UEFSQU0odGhpc1ZhbHVlKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2UiKTsK
KyAgICB9CiAgICAgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlIGVjOwogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihp
bXBsLmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2UoZWMpKTsKQEAgLTEyMTgsOSAr
MTI0NywxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlv
bihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdAogICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQorICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CisgICAgfQogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihp
bXBsLmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKQEAgLTEyMzIsOSArMTI2MiwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlKEV4ZWNTdGF0ZSogc3RhdGUsIEpT
TwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
LSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uV2l0
aE1lc3NhZ2UiKTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuYXR0cldpdGhTZXR0ZXJFeGNl
cHRpb25XaXRoTWVzc2FnZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CkBAIC0xMjQ2LDkgKzEyNzcsMTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0
cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QKICAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOworICAg
IH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3Rh
dGUsIGltcGwuc3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oZWMpKTsKQEAgLTEyNjIsOSAr
MTI5NCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNldHRlckV4
Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdAogICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQorICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgInN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CisgICAgfQogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0
cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5zdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbigp
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xMjc2LDkgKzEzMDks
MTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaWN0VHlwZUNoZWNraW5nQXR0cmlidXRl
KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KgogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
LSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQorICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
InN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZSIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwg
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwuc3RyaWN0VHlwZUNo
ZWNraW5nQXR0cmlidXRlKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CkBAIC0xMjkwLDkgKzEzMjQsMTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ3VzdG9tQXR0
cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWQKICAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJjdXN0b21BdHRyIik7CisgICAgfQogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+Y3VzdG9tQXR0cigqc3RhdGUpKTsKIH0KIApAQCAtMTMw
Miw5ICsxMzM3LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak9uZm9vKEV4ZWNTdGF0ZSog
c3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsCiAgICAgVU5VU0VEX1BBUkFN
KHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0
aGlzVmFsdWUpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAib25mb28iKTsKKyAgICB9CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV2ZW50SGFuZGxlckF0dHJpYnV0ZShjYXN0ZWRUaGlz
LT53cmFwcGVkKCksIGV2ZW50TmFtZXMoKS5mb29FdmVudCkpOwogfQpAQCAtMTMxNSw5ICsxMzUx
LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZShF
eGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvCiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
ICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBs
LndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSgqc3RhdGUpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CkBAIC0xMzI5LDkgKzEzNjYsMTAgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqV2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUoRXhlY1N0YXRlKiBz
dGF0ZSwKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFz
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBhdXRvKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoQ2FsbFdpdGhBbmRTZXR0ZXJD
YWxsV2l0aEF0dHJpYnV0ZSIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC53aXRoQ2FsbFdp
dGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZSgqc3RhdGUpKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xMzQzLDkgKzEzODEsMTAgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoRXhlY1N0YXRlKiBz
dGF0ZSwgSlMKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTShzbG90
QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBhdXRvKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEF0dHJpYnV0ZSIpOworICAgIH0KICAgICBhdXRvKiBzY3JpcHRDb250ZXh0ID0ganND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlwdENvbnRleHQpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xMzYwLDkgKzEzOTks
MTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFp
c2VzKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWMKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwog
ICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiKTsKKyAgICB9CiAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgp
LCBXVEY6OmdldFB0cihpbXBsLndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcygqc3RhdGUs
IGVjKSkpOwpAQCAtMTM3Niw5ICsxNDE2LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogc3RhCiAg
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRy
aWJ1dGVSYWlzZXMiKTsKKyAgICB9CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgYXV0
byogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFz
Y3JpcHRDb250ZXh0KQpAQCAtMTM5NSw5ICsxNDM2LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoRXhl
Y1N0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2Up
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgYXV0byogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwor
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIpOworICAgIH0KICAgICBhdXRvKiBzY3JpcHRDb250
ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlwdENvbnRleHQp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xNDEy
LDkgKzE0NTQsMTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcygKICAgICBVTlVTRURfUEFSQU0o
c3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmli
dXRlUmFpc2VzIik7CisgICAgfQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGF1dG8q
IHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghc2Ny
aXB0Q29udGV4dCkKQEAgLTE0MzEsOSArMTQ3NCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJp
YgogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
LSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlIik7CisgICAgfQogICAgIGF1dG8qIHNj
cmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEds
b2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghc2NyaXB0
Q29udGV4dCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
QEAgLTE0NDgsOSArMTQ5MiwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0
QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdAogICAgIFVOVVNF
RF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURf
UEFSQU0odGhpc1ZhbHVlKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1
dGUiKTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgp
LCBXVEY6OmdldFB0cihpbXBsLndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1
dGUoKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE0NjMsOSAr
MTUwOCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKEV4ZWNT
dGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRQogICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQorICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgImNvbmRpdGlvbmFsQXR0cjEiKTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuY29u
ZGl0aW9uYWxBdHRyMSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBA
IC0xNDc5LDkgKzE1MjUsMTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxB
dHRyMihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEUKICAgICBVTlVTRURf
UEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIyIik7CisgICAgfQogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJl
cihpbXBsLmNvbmRpdGlvbmFsQXR0cjIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwpAQCAtMTQ5NSw5ICsxNTQyLDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNv
bmRpdGlvbmFsQXR0cjMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFCiAg
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyMyIpOworICAgIH0KICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNOdW1iZXIoaW1wbC5jb25kaXRpb25hbEF0dHIzKCkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKQEAgLTE1MTEsMTAgKzE1NTksMTAgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEpT
T2JqZWN0KgogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RC
YXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKLSAgICBhdXRvKiBjYXN0ZWRUaGlz
ID0ganNDYXN0PEpTVGVzdE9iaio+KHNsb3RCYXNlKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXNPYmplY3QpKQorICAgIGF1dG8q
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFs
QXR0cjQiKTsKKyAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RPYmplY3RB
OjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkp
KTsKIH0KIApAQCAtMTUyNiwxMCArMTU3NCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpD
b25kaXRpb25hbEF0dHI1Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqCiAg
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwotICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8
SlNUZXN0T2JqKj4oc2xvdEJhc2UpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpc09iamVjdCA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwot
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpc09iamVjdCkpCisgICAgYXV0byogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OworICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyNSIpOwor
ICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE9iamVjdEI6OmdldENvbnN0
cnVjdG9yKHN0YXRlLT52bSgpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSkpOwogfQogCkBA
IC0xNTQxLDEwICsxNTg5LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFs
QXR0cjZDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCoKICAgICBVTlVTRURf
UEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7Ci0gICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoq
PihzbG90QmFzZSk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzT2JqZWN0ID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzT2JqZWN0KSkKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHI2Iik7CisgICAgfQogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0T2JqZWN0Qzo6Z2V0Q29uc3RydWN0b3Ioc3Rh
dGUtPnZtKCksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKQEAgLTE1NTUsOSAr
MTYwMywxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDYWNoZWRBdHRyaWJ1dGUxKEV4ZWNT
dGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRQogICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQorICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgImNhY2hlZEF0dHJpYnV0ZTEiKTsKKyAgICB9CiAgICAgaWYgKEpTVmFsdWUgY2FjaGVk
VmFsdWUgPSBjYXN0ZWRUaGlzLT5tX2NhY2hlZEF0dHJpYnV0ZTEuZ2V0KCkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoY2FjaGVkVmFsdWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CkBAIC0xNTcyLDkgKzE2MjEsMTAgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqQ2FjaGVkQXR0cmlidXRlMihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xv
dEJhc2UsIEUKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTShzbG90
QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBhdXRvKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjYWNoZWRBdHRyaWJ1dGUyIik7
CisgICAgfQogICAgIGlmIChKU1ZhbHVlIGNhY2hlZFZhbHVlID0gY2FzdGVkVGhpcy0+bV9jYWNo
ZWRBdHRyaWJ1dGUyLmdldCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhY2hl
ZFZhbHVlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwpAQCAtMTU4
OSw5ICsxNjM5LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakFueUF0dHJpYnV0ZShFeGVj
U3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kCiAgICAgVU5VU0VEX1BBUkFN
KHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0
aGlzVmFsdWUpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAiYW55QXR0cmlidXRlIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSAoaW1wbC5hbnlBdHRyaWJ1
dGUoKS5oYXNOb1ZhbHVlKCkgPyBqc051bGwoKSA6IGltcGwuYW55QXR0cmlidXRlKCkuanNWYWx1
ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xNjAzLDEwICsx
NjU0LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnRlbnREb2N1bWVudChFeGVjU3Rh
dGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuCiAgICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwotICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oc2xvdEJhc2Up
OwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpc09iamVjdCkpCisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAiY29udGVudERvY3VtZW50Iik7CisgICAgfQogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzaG91
bGRBbGxvd0FjY2Vzc1RvTm9kZShzdGF0ZSwgaW1wbC5jb250ZW50RG9jdW1lbnQoKSkgPyB0b0pT
KHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC5jb250
ZW50RG9jdW1lbnQoKSkpIDoganNOdWxsKCkpOwogfQpAQCAtMTYxNyw5ICsxNjY4LDEwIEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iak11dGFibGVQb2ludChFeGVjU3RhdGUqIHN0YXRlLCBKU09i
amVjdCogc2xvdEJhc2UsIEVuY29kCiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVT
RURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwotICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAg
YXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibXV0YWJs
ZVBvaW50Iik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmpl
Y3QoKSwgV1RGOjpnZXRQdHIoU1ZHU3RhdGljUHJvcGVydHlUZWFyT2ZmPFRlc3RPYmosIFNWR1Bv
aW50Pjo6Y3JlYXRlKGltcGwsIGltcGwubXV0YWJsZVBvaW50KCksICZUZXN0T2JqOjp1cGRhdGVN
dXRhYmxlUG9pbnQpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAt
MTYzMSw5ICsxNjgzLDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakltbXV0YWJsZVBvaW50
KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jCiAgICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJB
TSh0aGlzVmFsdWUpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAiaW1tdXRhYmxlUG9pbnQiKTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUs
IGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihTVkdQcm9wZXJ0eVRlYXJP
ZmY8U1ZHUG9pbnQ+OjpjcmVhdGUoaW1wbC5pbW11dGFibGVQb2ludCgpKSkpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE2NDUsOSArMTY5OCwxMCBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpTdHJhd2JlcnJ5KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBz
bG90QmFzZSwgRW5jb2RlZAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKLSAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGF1dG8q
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmF3YmVycnki
KTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuYmx1ZWJlcnJ5KCkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE2NTksOSArMTcxMywxMCBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpTdHJpY3RGbG9hdChFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xv
dEJhc2UsIEVuY29kZQogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKLSAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGF1dG8qIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmljdEZsb2F0Iik7
CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLnN0cmljdEZsb2F0KCkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE2NzMsOSArMTcyOCwxMCBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpEZXNjcmlwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xv
dEJhc2UsIEVuY29kZQogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKLSAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGF1dG8qIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImRlc2NyaXB0aW9uIik7
CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmRlc2NyaXB0aW9uKCkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE2ODcsOSArMTc0MywxMCBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpJZChFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVu
Y29kZWRKU1ZhbHVlCiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0o
c2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwotICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgYXV0byogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiaWQiKTsKKyAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzTnVtYmVyKGltcGwuaWQoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwpAQCAtMTcwMSw5ICsxNzU4LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakhhc2go
RXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1CiAgICAg
VU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiaGFzaCIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRo
Q2FjaGUoc3RhdGUsIGltcGwuaGFzaCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CkBAIC0xNzE1LDkgKzE3NzMsMTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVw
bGFjZWFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXMKICAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZXBsYWNlYWJsZUF0dHJpYnV0ZSIpOworICAgIH0K
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0ganNOdW1iZXIoaW1wbC5yZXBsYWNlYWJsZUF0dHJpYnV0ZSgpKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xNzI5LDkgKzE3ODgsMTAgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqTnVsbGFibGVEb3VibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNPYmplY3QqIHNsb3QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJB
TShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7Ci0gICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBhdXRvKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJudWxsYWJsZURvdWJs
ZUF0dHJpYnV0ZSIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9OdWxsYWJsZUpTTnVtYmVyKGltcGwubnVsbGFi
bGVEb3VibGVBdHRyaWJ1dGUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OwpAQCAtMTc0Myw5ICsxODAzLDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxl
TG9uZ0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhCiAgICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNF
RF9QQVJBTSh0aGlzVmFsdWUpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAibnVsbGFibGVMb25nQXR0cmlidXRlIik7CisgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSB0b051bGxhYmxlSlNOdW1iZXIoaW1wbC5udWxsYWJsZUxvbmdBdHRyaWJ1dGUoKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTc1Nyw5ICsxODE4LDEwIEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZShFeGVjU3RhdGUq
IHN0YXRlLCBKU09iamVjdCogc2xvCiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVT
RURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwotICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAg
YXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibnVsbGFi
bGVCb29sZWFuQXR0cmlidXRlIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4oaW1wbC5udWxsYWJs
ZUJvb2xlYW5BdHRyaWJ1dGUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OwpAQCAtMTc3MSw5ICsxODMzLDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxl
U3RyaW5nQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90CiAgICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNF
RF9QQVJBTSh0aGlzVmFsdWUpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAibnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUiKTsKKyAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLm51bGxhYmxlU3RyaW5nQXR0cmlidXRl
KCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE3ODUsOSArMTg0
OCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJp
YnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVl
KTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQorICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgIm51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlIik7CisgICAgfQogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b051bGxh
YmxlSlNOdW1iZXIoaW1wbC5udWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSgpKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xNzk5LDkgKzE4NjMsMTAgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZShFeGVjU3RhdGUqIHN0YXRl
LCBKU09iamVjdCogc2xvdEJhc2UKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNF
RF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7Ci0gICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBh
dXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJudWxsYWJs
ZVN0cmluZ1ZhbHVlIik7CisgICAgfQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0
b051bGxhYmxlSlNOdW1iZXIoaW1wbC5udWxsYWJsZVN0cmluZ1ZhbHVlKGVjKSk7CkBAIC0xODE1
LDkgKzE4ODAsMTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cmlidXRlKEV4ZWNTdGF0
ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEoKICAgICBVTlVTRURfUEFSQU0o
c3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJhdHRyaWJ1dGUiKTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0
YXRlLCBpbXBsLmF0dHJpYnV0ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CkBAIC0xODI5LDkgKzE4OTUsMTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cmli
dXRlV2l0aFJlc2VydmVkRW51bVR5cGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QKICAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRoaXNWYWx1ZSk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSIpOwor
ICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuYXR0cmlidXRlV2l0aFJl
c2VydmVkRW51bVR5cGUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpA
QCAtMTg0Myw5ICsxOTEwLDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialB1dEZvcndhcmRz
QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzCiAgICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAicHV0Rm9yd2FyZHNBdHRyaWJ1dGUiKTsKKyAgICB9CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRv
SlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLnB1
dEZvcndhcmRzQXR0cmlidXRlKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CkBAIC0xODU3LDkgKzE5MjUsMTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHV0Rm9y
d2FyZHNOdWxsYWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCoKICAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRoaXNWYWx1ZSk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJwdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlIik7Cisg
ICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpn
ZXRQdHIoaW1wbC5wdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlKCkpKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xOTAyLDkgKzE5NzEsOCBAQCB2b2lkIHNldEpT
VGVzdE9ialRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBz
dGF0ZSwgSlNPYmplYwogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0oYmFzZU9iamVjdCk7Ci0gICAgYXV0byogY2Fz
dGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihiYXNlT2JqZWN0KTsKLSAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXNPYmplY3QpKSB7
CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
ICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJUZXN0U3Vi
T2JqRW5hYmxlZEJ5U2V0dGluZyIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTkxNyw3
ICsxOTg1LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpFbnVtQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBK
U09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVmFsdWUKIHsKICAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGJhc2VP
YmplY3QpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGF1dG8qIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiZW51bUF0dHIiKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtMTkzNiw3ICsyMDA0LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpCeXRlQXR0cihFeGVjU3RhdGUq
IHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVmFsdWUKIHsKICAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKGJhc2VPYmplY3QpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGF1dG8qIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYnl0ZUF0dHIiKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtMTk1Myw3ICsyMDIxLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpPY3RldEF0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZWRKU1ZhbHUKIHsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKGJhc2VPYmplY3QpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAg
IGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAg
ICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib2N0ZXRBdHRyIik7
CiAgICAgICAgIHJldHVybjsKQEAgLTE5NzAsNyArMjAzOCw3IEBAIHZvaWQgc2V0SlNUZXN0T2Jq
U2hvcnRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVk
SlNWYWx1CiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOwogICAgIFVOVVNFRF9QQVJBTShiYXNlT2JqZWN0KTsKLSAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewogICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInNo
b3J0QXR0ciIpOwogICAgICAgICByZXR1cm47CkBAIC0xOTg3LDcgKzIwNTUsNyBAQCB2b2lkIHNl
dEpTVGVzdE9ialVuc2lnbmVkU2hvcnRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBi
YXNlT2JqZWN0LCBFbmNvZAogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0oYmFzZU9iamVjdCk7Ci0gICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJ1bnNpZ25lZFNob3J0QXR0ciIpOwogICAgICAgICByZXR1cm47CkBAIC0yMDA0LDcg
KzIwNzIsNyBAQCB2b2lkIHNldEpTVGVzdE9iakxvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpT
T2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZQogewogICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0oYmFzZU9i
amVjdCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJsb25nQXR0ciIpOwogICAgICAgICByZXR1cm47CkBA
IC0yMDIxLDcgKzIwODksNyBAQCB2b2lkIHNldEpTVGVzdE9iakxvbmdMb25nQXR0cihFeGVjU3Rh
dGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVgogewogICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFS
QU0oYmFzZU9iamVjdCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgYXV0byogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJsb25nTG9uZ0F0dHIiKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtMjAzOCw3ICsyMTA2LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpVbnNpZ25l
ZExvbmdMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW4K
IHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKGJhc2VPYmplY3QpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwor
ICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAg
ICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidW5zaWduZWRM
b25nTG9uZ0F0dHIiKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjA1NSw3ICsyMTIzLDcgQEAgdm9p
ZCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNl
T2JqZWN0LCBFbmNvZGVkSlNWYWwKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGJhc2VPYmplY3QpOwotICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAic3RyaW5nQXR0ciIpOwogICAgICAgICByZXR1cm47CkBAIC0yMDcyLDcgKzIx
NDAsNyBAQCB2b2lkIHNldEpTVGVzdE9ialRlc3RPYmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpT
T2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNWYQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0oYmFzZU9iamVj
dCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ0ZXN0T2JqQXR0ciIpOwogICAgICAgICByZXR1cm47CkBA
IC0yMDg5LDcgKzIxNTcsNyBAQCB2b2lkIHNldEpTVGVzdE9iakxlbmllbnRUZXN0T2JqQXR0cihF
eGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jbwogewogICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFS
QU0oYmFzZU9iamVjdCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgYXV0byogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTIxMDUsNyArMjE3Myw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqWE1MT2JqQXR0
cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVmFsCiB7
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAg
IFVOVVNFRF9QQVJBTShiYXNlT2JqZWN0KTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAg
ICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAg
ICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIlhNTE9iakF0dHIi
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjEyMiw3ICsyMTkwLDcgQEAgdm9pZCBzZXRKU1Rlc3RP
YmpDcmVhdGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHQKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGJhc2VPYmplY3QpOwotICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7CiAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
Y3JlYXRlIik7CiAgICAgICAgIHJldHVybjsKQEAgLTIxMzksNyArMjIwNyw3IEBAIHZvaWQgc2V0
SlNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCog
YmFzZU9iamVjdCwgRW5jCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTShiYXNlT2JqZWN0KTsKLSAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkgewogICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgInJlZmxlY3RlZFN0cmluZ0F0dHIiKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjE1Niw3
ICsyMjI0LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0dHIoRXhlY1N0
YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEUKIHsKICAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGJhc2VP
YmplY3QpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGF1dG8qIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkSW50ZWdyYWxBdHRyIik7CiAgICAg
ICAgIHJldHVybjsKQEAgLTIxNzMsNyArMjI0MSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVj
dGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VP
CiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwog
ICAgIFVOVVNFRF9QQVJBTShiYXNlT2JqZWN0KTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
KyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewog
ICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3Rl
ZFVuc2lnbmVkSW50ZWdyYWxBdHRyIik7CiAgICAgICAgIHJldHVybjsKQEAgLTIxOTAsNyArMjI1
OCw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQm9vbGVhbkF0dHIoRXhlY1N0YXRlKiBz
dGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTShiYXNlT2JqZWN0
KTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEJvb2xlYW5BdHRyIik7CiAgICAgICAgIHJl
dHVybjsKQEAgLTIyMDcsNyArMjI3NSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkVVJM
QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlCiB7CiAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVO
VVNFRF9QQVJBTShiYXNlT2JqZWN0KTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBh
dXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAg
ICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZFVSTEF0
dHIiKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjIyNCw3ICsyMjkyLDcgQEAgdm9pZCBzZXRKU1Rl
c3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNl
T2JqZWN0LCBFbmMKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGJhc2VPYmplY3QpOwotICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7CiAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAicmVmbGVjdGVkU3RyaW5nQXR0ciIpOwogICAgICAgICByZXR1cm47CkBAIC0yMjQxLDcgKzIz
MDksNyBAQCB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0cihFeGVj
U3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iagogewogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0oYmFzZU9iamVj
dCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIiKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtMjI1OCw3ICsyMzI2LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZWZs
ZWN0ZWRDdXN0b21Cb29sZWFuQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9i
amUKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKGJhc2VPYmplY3QpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
CiAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVj
dGVkQ3VzdG9tQm9vbGVhbkF0dHIiKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjI3NSw3ICsyMzQz
LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21VUkxBdHRyKEV4ZWNTdGF0ZSog
c3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LAogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0oYmFzZU9iamVjdCk7
Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRDdXN0b21VUkxBdHRyIik7CiAgICAgICAgIHJl
dHVybjsKQEAgLTIyOTIsNyArMjM2MCw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqVHlwZWRBcnJheUF0
dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZWRKCiB7CiAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVO
VVNFRF9QQVJBTShiYXNlT2JqZWN0KTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBh
dXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAg
ICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInR5cGVkQXJyYXlBdHRy
Iik7CiAgICAgICAgIHJldHVybjsKQEAgLTIzMDksNyArMjM3Nyw3IEBAIHZvaWQgc2V0SlNUZXN0
T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJh
c2VPYmplY3QsCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTShiYXNlT2JqZWN0KTsKLSAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkgewogICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
ImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAgICAgICAgIHJldHVybjsKQEAgLTIzMjYsNyAr
MjM5NCw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25XaXRoTWVz
c2FnZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCoKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGJhc2VPYmpl
Y3QpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYXR0cldpdGhHZXR0ZXJFeGNlcHRpb25XaXRoTWVzc2Fn
ZSIpOwogICAgICAgICByZXR1cm47CkBAIC0yMzQzLDcgKzI0MTEsNyBAQCB2b2lkIHNldEpTVGVz
dE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBi
YXNlT2JqZWN0LAogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0oYmFzZU9iamVjdCk7Ci0gICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm47CkBAIC0yMzYyLDcg
KzI0MzAsNyBAQCB2b2lkIHNldEpTVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uV2l0aE1l
c3NhZ2UoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTShiYXNlT2Jq
ZWN0KTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uV2l0aE1lc3Nh
Z2UiKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjM4MSw3ICsyNDQ5LDcgQEAgdm9pZCBzZXRKU1Rl
c3RPYmpTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBKU09i
amVjdCogYmFzZU8KIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGJhc2VPYmplY3QpOwotICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7CiAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
MjM5OCw3ICsyNDY2LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNldHRlckV4
Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU8KIHsKICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KGJhc2VPYmplY3QpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGF1dG8qIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNl
cHRpb24iKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjQxNyw3ICsyNDg1LDcgQEAgdm9pZCBzZXRK
U1Rlc3RPYmpTdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNP
YmplY3QqIGJhc2VPYmoKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGJhc2VPYmplY3QpOwotICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7CiAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAic3RyaWN0VHlwZUNoZWNraW5nQXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybjsKQEAg
LTI0MzgsNyArMjUwNiw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqQ3VzdG9tQXR0cihFeGVjU3RhdGUq
IHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVmFsCiB7CiAgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJB
TShiYXNlT2JqZWN0KTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBhdXRvKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImN1c3RvbUF0dHIiKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtMjQ1MSw3ICsyNTE5LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpPbmZvbyhFeGVj
U3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGgKIHsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKGJhc2VPYmplY3QpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAg
IGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAg
ICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib25mb28iKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtMjQ2NCw3ICsyNTMyLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpXaXRo
U2NyaXB0U3RhdGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmpl
Y3QKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKGJhc2VPYmplY3QpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
CiAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNj
cmlwdFN0YXRlQXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybjsKQEAgLTI0ODEsNyArMjU0OSw3
IEBAIHZvaWQgc2V0SlNUZXN0T2JqV2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1
dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTShiYXNlT2JqZWN0KTsK
LSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgIndpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRl
Iik7CiAgICAgICAgIHJldHVybjsKQEAgLTI0OTgsNyArMjU2Niw3IEBAIHZvaWQgc2V0SlNUZXN0
T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNPYmplY3QqCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTShiYXNlT2JqZWN0KTsKLSAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkgewogICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
IndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybjsK
QEAgLTI1MTgsNyArMjU4Niw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0
cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlCiB7CiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9Q
QVJBTShiYXNlT2JqZWN0KTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBhdXRvKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0ZUF0dHJp
YnV0ZVJhaXNlcyIpOwogICAgICAgICByZXR1cm47CkBAIC0yNTM1LDcgKzI2MDMsNyBAQCB2b2lk
IHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKEV4
ZWNTdGF0ZSogc3RhdGUsIEpTTwogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0oYmFzZU9iamVjdCk7Ci0gICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyIpOwog
ICAgICAgICByZXR1cm47CkBAIC0yNTU1LDcgKzI2MjMsNyBAQCB2b2lkIHNldEpTVGVzdE9ialdp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoRXhlY1N0YXRl
KiBzdAogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKICAgICBVTlVTRURfUEFSQU0oYmFzZU9iamVjdCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlIik7CiAgICAgICAg
IHJldHVybjsKQEAgLTI1NzUsNyArMjY0Myw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhFeGVjU3RhCiB7
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAg
IFVOVVNFRF9QQVJBTShiYXNlT2JqZWN0KTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAg
ICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAg
ICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtMjU5NSw3ICsyNjYzLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZShFeGUKIHsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKGJhc2VPYmplY3QpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAg
IGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAg
ICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUiKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtMjYxNSw3ICsyNjgzLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2Ny
aXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2IK
IHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKGJhc2VPYmplY3QpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwor
ICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAg
ICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlw
dEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm47CkBAIC0y
NjMzLDcgKzI3MDEsNyBAQCB2b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjEoRXhlY1N0
YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZQogewogICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0o
YmFzZU9iamVjdCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgYXV0byogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIxIik7CiAgICAg
ICAgIHJldHVybjsKQEAgLTI2NTIsNyArMjcyMCw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0
aW9uYWxBdHRyMihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2Rl
CiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwog
ICAgIFVOVVNFRF9QQVJBTShiYXNlT2JqZWN0KTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
KyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewog
ICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlv
bmFsQXR0cjIiKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjY3MSw3ICsyNzM5LDcgQEAgdm9pZCBz
ZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIzKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBi
YXNlT2JqZWN0LCBFbmNvZGUKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGJhc2VPYmplY3QpOwotICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyMyIpOwogICAgICAgICByZXR1cm47CkBAIC0yNjkwLDkg
KzI3NTgsOCBAQCB2b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjRDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iagogewogICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0oYmFzZU9i
amVjdCk7Ci0gICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihiYXNlT2Jq
ZWN0KTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXNPYmplY3QpKSB7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHI0Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0yNzA3LDkgKzI3NzQsOCBAQCB2b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjVD
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iagogewogICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURf
UEFSQU0oYmFzZU9iamVjdCk7Ci0gICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RP
YmoqPihiYXNlT2JqZWN0KTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXNPYmplY3QgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXNPYmplY3QpKSB7CisgICAgYXV0byogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwor
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHI1Iik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CkBAIC0yNzI0LDkgKzI3OTAsOCBAQCB2b2lkIHNldEpTVGVzdE9iakNvbmRp
dGlvbmFsQXR0cjZDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9i
agogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
ICAgICBVTlVTRURfUEFSQU0oYmFzZU9iamVjdCk7Ci0gICAgYXV0byogY2FzdGVkVGhpcyA9IGpz
Q2FzdDxKU1Rlc3RPYmoqPihiYXNlT2JqZWN0KTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXNP
YmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXNPYmplY3QpKSB7CisgICAgYXV0byog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHI2Iik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNzQwLDcgKzI4MDUsNyBAQCB2b2lkIHNldEpT
VGVzdE9iakFueUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVj
dCwgRW5jb2RlZEpTVgogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0oYmFzZU9iamVjdCk7Ci0gICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJhbnlBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjc1Nyw3ICsyODIyLDcg
QEAgdm9pZCBzZXRKU1Rlc3RPYmpNdXRhYmxlUG9pbnQoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmpl
Y3QqIGJhc2VPYmplY3QsIEVuY29kZWRKU1YKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGJhc2VPYmplY3QpOwot
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAibXV0YWJsZVBvaW50Iik7CiAgICAgICAgIHJldHVybjsKQEAgLTI3
NzQsNyArMjgzOSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqSW1tdXRhYmxlUG9pbnQoRXhlY1N0YXRl
KiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZWRKCiB7CiAgICAgSlNWYWx1ZSB2
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTShi
YXNlT2JqZWN0KTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBhdXRvKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImltbXV0YWJsZVBvaW50Iik7CiAgICAgICAg
IHJldHVybjsKQEAgLTI3OTEsNyArMjg1Niw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqU3RyYXdiZXJy
eShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVmFsCiB7
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAg
IFVOVVNFRF9QQVJBTShiYXNlT2JqZWN0KTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAg
ICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAg
ICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmF3YmVycnki
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjgwOCw3ICsyODczLDcgQEAgdm9pZCBzZXRKU1Rlc3RP
YmpTdHJpY3RGbG9hdChFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5j
b2RlZEpTVmEKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGJhc2VPYmplY3QpOwotICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7CiAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
c3RyaWN0RmxvYXQiKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjgyNSw3ICsyODkwLDcgQEAgdm9p
ZCBzZXRKU1Rlc3RPYmpJZChFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1YKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGJhc2VPYmplY3QpOwotICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAiaWQiKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjg0Miw3ICsyOTA3LDcgQEAg
dm9pZCBzZXRKU1Rlc3RPYmpSZXBsYWNlYWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBK
U09iamVjdCogYmFzZU9iamVjdCwgRW4KIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGJhc2VPYmplY3QpOwotICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAicmVwbGFjZWFibGVBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtMjg1Niw3ICsyOTIxLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJs
ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU8KIHsKICAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKGJhc2VPYmplY3QpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGF1dG8qIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibnVsbGFibGVMb25nU2V0dGFibGVB
dHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjg3Myw3ICsyOTM4LDcgQEAgdm9pZCBz
ZXRKU1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0
KiBiYXNlT2JqZWN0LCBFbmMKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGJhc2VPYmplY3QpOwotICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAibnVsbGFibGVTdHJpbmdWYWx1ZSIpOwogICAgICAgICByZXR1cm47CkBAIC0yODkw
LDcgKzI5NTUsNyBAQCB2b2lkIHNldEpTVGVzdE9iakF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1U
eXBlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlTwogewogICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0oYmFz
ZU9iamVjdCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgYXV0byogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlw
ZSIpOwogICAgICAgICByZXR1cm47CkBAIC0yOTA5LDcgKzI5NzQsNyBAQCB2b2lkIHNldEpTVGVz
dE9ialB1dEZvcndhcmRzQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNl
T2JqZWN0LCBFbgogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0oYmFzZU9iamVjdCk7Ci0gICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJwdXRGb3J3YXJkc0F0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm47CkBAIC0yOTI3LDcgKzI5
OTIsNyBAQCB2b2lkIHNldEpTVGVzdE9ialB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUoRXhl
Y1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYgogewogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0oYmFzZU9iamVj
dCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJwdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlIik7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZS5jcHAKaW5kZXggYjY3YjkyMS4uZGFkYWNjOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAg
LTEzMiw5ICsxMzIsMTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmoKICAgICBVTlVTRURfUEFS
QU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRoaXNWYWx1ZSk7Ci0gICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZSIsICJ2YWx1ZSIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gaW1wbC52YWx1ZSgpID8gaW1wbC52YWx1ZSgp
LT5kZXNlcmlhbGl6ZShzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIDApIDoganNO
dWxsKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTQ2LDkgKzE0
NywxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2VSZWFkb25seVZhbHVlKEV4ZWNTdGF0ZSogc3RhdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVl
KTsKLSAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQorICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgInJl
YWRvbmx5VmFsdWUiKTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGltcGwucmVhZG9ubHlWYWx1ZSgpID8gaW1wbC5y
ZWFkb25seVZhbHVlKCktPmRlc2VyaWFsaXplKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmpl
Y3QoKSwgMCkgOiBqc051bGwoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CkBAIC0xNjAsOSArMTYyLDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZUNhY2hlZFZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsCiAgICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwotICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UiLCAiY2FjaGVkVmFsdWUiKTsKKyAgICB9CiAgICAgaWYgKEpTVmFsdWUgY2FjaGVk
VmFsdWUgPSBjYXN0ZWRUaGlzLT5tX2NhY2hlZFZhbHVlLmdldCgpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGNhY2hlZFZhbHVlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwpAQCAtMTc3LDkgKzE4MCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQb3J0cyhFeGVjU3RhdGUqIHN0YXRlLCBKU09i
agogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKLSAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAg
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgInBvcnRzIik7CisgICAgfQogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0FycmF5KHN0
YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5wb3J0cygpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xOTEsOSArMTk1LDEwIEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhY2hlZFJlYWRvbmx5
VmFsdWUoRXhlY1N0YXRlCiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFS
QU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwotICAgIEpTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgYXV0byogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAiY2FjaGVkUmVhZG9ubHlWYWx1
ZSIpOworICAgIH0KICAgICBpZiAoSlNWYWx1ZSBjYWNoZWRWYWx1ZSA9IGNhc3RlZFRoaXMtPm1f
Y2FjaGVkUmVhZG9ubHlWYWx1ZS5nZXQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjYWNoZWRWYWx1ZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
QEAgLTIyOCw3ICsyMzMsNyBAQCB2b2lkIHNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZVZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYQogewogICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFS
QU0oYmFzZU9iamVjdCk7Ci0gICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgYXV0byogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJ2YWx1ZSIpOwogICAgICAgICByZXR1cm47CkBA
IC0yNDUsNyArMjUwLDcgQEAgdm9pZCBzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2VDYWNoZWRWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamUKIHsKICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KGJhc2VPYmplY3QpOwotICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGF1dG8qIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7CiAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAiY2FjaGVkVmFsdWUiKTsKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFR5cGVkZWZzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RUeXBlZGVmcy5jcHAKaW5kZXggNWY1MTA5Yi4uYjI5MTIwNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlw
ZWRlZnMuY3BwCkBAIC0yMTUsOSArMjE1LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVk
ZWZzVW5zaWduZWRMb25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsCiAg
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwotICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGF1dG8qIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJ1bnNpZ25lZExv
bmdMb25nQXR0ciIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC51bnNpZ25lZExvbmdMb25n
QXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0yMjksOSAr
MjMwLDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzSW1tdXRhYmxlU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTCiAgICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwotICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQorICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdFR5cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJpbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUi
KTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGltcGwuaW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlKCkgPyBp
bXBsLmltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpLT5kZXNlcmlhbGl6ZShzdGF0ZSwg
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIDApIDoganNOdWxsKCk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMjQzLDEwICsyNDUsMTAgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvclRlc3RTdWJPYmooRXhlY1N0YXRlKiBzdGF0ZSwg
SlNPYmplY3QqIHMKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTShz
bG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7Ci0gICAgYXV0byogY2FzdGVk
VGhpcyA9IGpzQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KHNsb3RCYXNlKTsKLSAgICBKU1Rlc3RUeXBl
ZGVmcyogY2FzdGVkVGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
T2JqZWN0KSkKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBl
ZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0VHlwZWRlZnMiLCAiVGVzdFN1Yk9iaiIpOworICAgIH0KICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTVGVzdFN1Yk9iajo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGNhc3Rl
ZFRoaXMtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKQEAgLTI1Niw5ICsyNTgsMTAgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0VHlwZWRlZnNBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUq
IHN0YXRlLCBKU09iamVjdCoKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9Q
QVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7Ci0gICAgSlNUZXN0
VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5
cGVkZWZzIiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CisgICAgfQogICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9u
KGVjKSk7CkBAIC0yNzIsOSArMjc1LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZz
QXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqCiAgICAg
VU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwotICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGF1dG8qIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOworICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJhdHRyV2l0aFNldHRl
ckV4Y2VwdGlvbiIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5hdHRyV2l0aFNldHRlckV4
Y2VwdGlvbigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0yODYs
OSArMjkwLDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPCiAgICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwotICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlv
biIpOworICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRo
Q2FjaGUoc3RhdGUsIGltcGwuc3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oZWMpKTsKQEAg
LTMwMiw5ICszMDcsMTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNTdHJpbmdBdHRy
V2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBKU08KICAgICBVTlVTRURfUEFS
QU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRoaXNWYWx1ZSk7Ci0gICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ0F0dHJXaXRoU2V0dGVyRXhj
ZXB0aW9uIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5zdHJp
bmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CkBAIC0zMzYsNyArMzQyLDcgQEAgdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc1Vuc2ln
bmVkTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWMKIHsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKGJhc2VPYmplY3QpOwotICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVm
cyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7CiAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBl
ZGVmcyIsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIpOwogICAgICAgICByZXR1cm47CkBAIC0zNTMs
NyArMzU5LDcgQEAgdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc0ltbXV0YWJsZVNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCoKIHsKICAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGJhc2VP
YmplY3QpOwotICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBhdXRvKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAg
IHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJpbW11dGFibGVT
ZXJpYWxpemVkU2NyaXB0VmFsdWUiKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzcwLDcgKzM3Niw3
IEBAIHZvaWQgc2V0SlNUZXN0VHlwZWRlZnNBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3Rh
dGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTShiYXNlT2JqZWN0KTsK
LSAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlw
ZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgYXV0byogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiYXR0cldpdGhHZXR0ZXJFeGNl
cHRpb24iKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzg3LDcgKzM5Myw3IEBAIHZvaWQgc2V0SlNU
ZXN0VHlwZWRlZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBKU09i
amVjdCogYmFzZU9iCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTShiYXNlT2JqZWN0KTsKLSAgICBKU1Rlc3RUeXBl
ZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0VHlwZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtNDA2LDcgKzQxMiw3IEBAIHZvaWQgc2V0SlNUZXN0VHlwZWRlZnNTdHJp
bmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCoKIHsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKGJhc2VPYmplY3QpOwotICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVm
cyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7CiAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBl
ZGVmcyIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm47
CkBAIC00MjMsNyArNDI5LDcgQEAgdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRo
U2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KgogewogICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFS
QU0oYmFzZU9iamVjdCk7Ci0gICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAg
IGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
ICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInN0
cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUu
Y3BwCmluZGV4IGFjN2FkODAuLjg5ZjNmMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcApAQCAtMTE3LDkgKzEx
NywxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc2F0dHJpYnV0ZVJlYWRvbmx5KEV4ZWNTdGF0ZSogc3Rh
dGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVl
KTsKLSAgICBKU2F0dHJpYnV0ZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNhdHRyaWJ1
dGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU2F0dHJpYnV0
ZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJh
dHRyaWJ1dGUiLCAicmVhZG9ubHkiKTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0
YXRlLCBpbXBsLnJlYWRvbmx5KCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270720</attachid>
            <date>2016-02-04 20:08:36 -0800</date>
            <delta_ts>2016-02-05 15:17:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153895-20160204200812.patch</filename>
            <type>text/plain</type>
            <size>84561</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2MTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzdhMDJjYmQ0NDBmNGQ2
NTIxZDllNjlhZjNmOWNkYmM1ODIwNmZlOS4uODMxZTZhMTU1YjQzYjUyMTU4MmQ3ZWY3MjFkZTFi
MmZjODRkODAwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE2LTAyLTA0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW5zdGFuY2UgcHJvcGVydHkg
Z2V0dGVycyAvIHNldHRlcnMgY2Fubm90IGJlIGNhbGxlZCBvbiBhbm90aGVyIGluc3RhbmNlIG9m
IHRoZSBzYW1lIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1Mzg5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBjYWxsIGluc3RhbmNlIHByb3BlcnR5IGdl
dHRlcnMgLyBzZXR0ZXJzIG9uCisgICAgICAgIG90aGVyIGluc3RhbmNlcyBvZiB0aGUgc2FtZSB0
eXBlLCBhcyBwZXIgdGhlIFdFQiBJREwgc3BlY2lmaWNhdGlvbjoKKyAgICAgICAgLSBodHRwOi8v
aGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2Rmbi1hdHRyaWJ1dGUtZ2V0dGVyCisgICAgICAgIC0g
aHR0cDovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNkZm4tYXR0cmlidXRlLXNldHRlcgorCisg
ICAgICAgIFRoaXMgbWF0Y2hlcyB0aGUgYmVoYXZpb3Igb2YgRmlyZWZveC4KKworICAgICAgICBU
aGUgaXNzdWUgd2l0aG91dCBvdXIgYmluZGluZ3Mgd2FzIHRoYXQgdGhlIGdldHRlcnMgLyBzZXR0
ZXJzIHdlcmUKKyAgICAgICAgdXNpbmcgfHNsb3RCYXNlfCBpbnN0ZWFkIG9mIHx0aGlzVmFsdWV8
IGFuZCB0aGVyZWZvcmUgZW5kZWQgdXAgdXNpbmcKKyAgICAgICAgdGhlIGluc3RhbmNlIHRoZSBn
ZXR0ZXIgd2FzIHRha2VuIGZyb20gaW5zdGVhZCBvZiB0aGUgYWN0dWFsIHRhcmdldAorICAgICAg
ICBvYmplY3QuCisKKyAgICAgICAgVGVzdDoKKyAgICAgICAganMvaW5zdGFuY2UtcHJvcGVydHkt
Z2V0dGVyLW90aGVyLWluc3RhbmNlLmh0bWwKKyAgICAgICAganMvaW5zdGFuY2UtcHJvcGVydHkt
c2V0dGVyLW90aGVyLWluc3RhbmNlLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6Cisg
ICAgICAgIC0gSGF2ZSBpbnN0YW5jZSBnZXR0ZXJzIC8gc2V0dGVycyB1c2UgdGhpc1ZhbHVlIGlu
c3RlYWQgb2Ygc2xvdEJhc2UuCisgICAgICAgIC0gSW4gdGhlIGNhc2Ugb2YgaW50ZXJmYWNlcyB0
aGF0IGhhdmUgYXR0cmlidXRlcyBvbiB0aGUgaW5zdGFuY2UgZm9yCisgICAgICAgICAgY29tcGF0
aWJpbGl0eSByZWFzb25zLCB0cnkgdGhlIHByb3RvdHlwZSBvYmplY3QgaWYgfHRoaXNWYWx1ZXwg
ZG9lcworICAgICAgICAgIGRvZXMgaGF2ZSB0aGUgcmlnaHQgdHlwZSwgaW5zdGVhZCBvZiB1c2lu
ZyBzbG90QmFzZSBsaWtlIHByZXZpb3VzbHkuCisgICAgICAgICAgSSBiZWxpZXZlIHRoaXMgbWFp
bnRhaW5zIHRoZSBvcmlnaW5hbCBjb21wYXRpYmlsaXR5IGludGVudGlvbiB3aGlsZQorICAgICAg
ICAgIGFsc28gYmVoYXZpbmcgY29ycmVjdGx5IHdoZW4gY2FsbGVkIG9uIGFub3RoZXIgaW5zdGFu
Y2UuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9N
T2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZl
bnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV4Y2VwdGlvbi5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHA6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcDoKKyAgICAgICAgUmViYXNl
bGluZSBiaW5kaW5ncyB0ZXN0cy4KKwogMjAxNi0wMi0wNCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRl
c0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViS2l0IGZvciBpT1MgU2ltdWxhdG9yIGZhaWxzIHRv
IGJ1aWxkIHdpdGggcHVibGljIGlPUyBTREsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggZTE2YjQ5MjljMmQ0ZjkwNmY5MGZk
ZDAyZThhMzdlNGQ3YTdmYmEyOC4uNzc5ZTFjMTQ3MGEzZThkYTcwOWVjYWRhMGI2NzNjMDM3MWY2
ZjkzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0KQEAgLTIyODUsMjcgKzIyODUsMjUgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTShz
bG90QmFzZSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNF
RF9QQVJBTSh0aGlzVmFsdWUpO1xuIik7CiAgICAgICAgICAgICBpZiAoISRhdHRyaWJ1dGUtPmlz
U3RhdGljIHx8ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0b3IkLykg
ewotICAgICAgICAgICAgICAgIG15ICR2YXJpYWJsZUZvclR5cGVDaGVjayA9ICJjYXN0ZWRUaGlz
IjsKICAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkN1c3RvbVByb3h5VG9KU09iamVjdCJ9KSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIGF1dG8qIGNhc3RlZFRoaXMgPSB0byR7Y2xhc3NOYW1lfShKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7XG4iKTsKLSAgICAgICAgICAgICAgICB9IGVsc2lmIChBdHRy
aWJ1dGVTaG91bGRCZU9uSW5zdGFuY2UoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgIyBGSVhNRTogVGhpcyBkb2VzIG5vdCBzZWVtIHJpZ2h0LCB3ZSBzaG91
bGQgbGlrZWx5IHVzZSB0aGlzVmFsdWUgaW5zdGVhZCBvZiBzbG90QmFzZSBoZXJlIHRvIG1hdGNo
IHRoZSBzcGVjaWZpY2F0aW9uOgotICAgICAgICAgICAgICAgICAgICAjIGh0dHA6Ly9oZXljYW0u
Z2l0aHViLmlvL3dlYmlkbC8jZGZuLWF0dHJpYnV0ZS1nZXR0ZXIKLSAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKUyR7
aW50ZXJmYWNlTmFtZX0qPihzbG90QmFzZSk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiBjYXN0ZWRUaGlzT2JqZWN0ID0gIiAu
IEdldENhc3RpbmdIZWxwZXJGb3JUaGlzT2JqZWN0KCRpbnRlcmZhY2UpIC4gIihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgJHZhcmlhYmxlRm9y
VHlwZUNoZWNrID0gImNhc3RlZFRoaXNPYmplY3QiOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1l
fSogY2FzdGVkVGhpcyA9ICIgLiBHZXRDYXN0aW5nSGVscGVyRm9yVGhpc09iamVjdCgkaW50ZXJm
YWNlKSAuICIoSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpO1xuIik7CiAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICMgRklYTUU6IEdldHRlcnMgb24gYSBnbG9iYWwgc2hvdWxk
IG5vdCByZXF1aXJlIGFuIGV4cGxpY2l0IHRoaXMuCi0gICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgaWYgKFVOTElLRUxZKCEkdmFyaWFibGVGb3JUeXBlQ2hlY2spKVxuIik7
CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkge1xuIik7CiAgICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkxlbmllbnRUaGlzIn0pIHsKICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7XG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2lmIChJbnRlcmZh
Y2VSZXF1aXJlc0F0dHJpYnV0ZXNPbkluc3RhbmNlRm9yQ29tcGF0aWJpbGl0eSgkaW50ZXJmYWNl
KSkgeworICAgICAgICAgICAgICAgICAgICAjIEZhbGxiYWNrIHRvIHRyeWluZyB0byBnZXQgdGhl
IHByb3BlcnR5IG9uIHRoZSBwcm90b3R5cGUgb2JqZWN0IGZvciBjb21wYXRpYmlsaXR5IHJlYXNv
bnMuCisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBKU09i
amVjdCogdGhpc09iamVjdCA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpLmdldE9iamVjdCgp
O1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBj
YXN0ZWRUaGlzID0gdGhpc09iamVjdCA/ICIgLiBHZXRDYXN0aW5nSGVscGVyRm9yVGhpc09iamVj
dCgkaW50ZXJmYWNlKSAuICIodGhpc09iamVjdC0+cHJvdG90eXBlKCkpIDogbnVsbHB0cjtcbiIp
OworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgaWYgKCFj
YXN0ZWRUaGlzKVxuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgXCIkaW50ZXJm
YWNlTmFtZVwiLCBcIiRuYW1lXCIpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKnN0YXRlLCBc
IiRpbnRlcmZhY2VOYW1lXCIsIFwiJG5hbWVcIik7XG4iKTsKICAgICAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgXCIkaW50ZXJmYWNlTmFtZVwiLCBcIiRu
YW1lXCIpO1xuIik7CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIH1cbiIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBteSBA
YXJndW1lbnRzID0gKCk7CkBAIC0yNjIyLDIwICsyNjIwLDIyIEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7XG4iKTsKICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTShiYXNlT2JqZWN0KTtcbiIpOwogICAg
ICAgICAgICAgaWYgKCEkYXR0cmlidXRlLT5pc1N0YXRpYykgewotICAgICAgICAgICAgICAgIG15
ICR2YXJpYWJsZUZvclR5cGVDaGVjayA9ICJjYXN0ZWRUaGlzIjsKICAgICAgICAgICAgICAgICBp
ZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVByb3h5VG9KU09iamVj
dCJ9KSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xh
c3NOYW1lfSogY2FzdGVkVGhpcyA9IHRvJHtjbGFzc05hbWV9KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTtcbiIpOwotICAgICAgICAgICAgICAgIH0gZWxzaWYgKEF0dHJpYnV0ZVNob3VsZEJl
T25JbnN0YW5jZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKSkgewotICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTJHtp
bnRlcmZhY2VOYW1lfSo+KGJhc2VPYmplY3QpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogY2FzdGVkVGhpc09iamVjdCA9ICIg
LiBHZXRDYXN0aW5nSGVscGVyRm9yVGhpc09iamVjdCgkaW50ZXJmYWNlKSAuICIoSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgICR2YXJpYWJsZUZv
clR5cGVDaGVjayA9ICJjYXN0ZWRUaGlzT2JqZWN0IjsKICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFt
ZX0qIGNhc3RlZFRoaXMgPSAiIC4gR2V0Q2FzdGluZ0hlbHBlckZvclRoaXNPYmplY3QoJGludGVy
ZmFjZSkgLiAiKEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTtcbiIpOwogICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoVU5MSUtF
TFkoISR2YXJpYWJsZUZvclR5cGVDaGVjaykpIHtcbiIpOworICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHtcbiIpOwogICAg
ICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJMZW5pZW50VGhpcyJ9KSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2lmIChJbnRl
cmZhY2VSZXF1aXJlc0F0dHJpYnV0ZXNPbkluc3RhbmNlRm9yQ29tcGF0aWJpbGl0eSgkaW50ZXJm
YWNlKSkgeworICAgICAgICAgICAgICAgICAgICAjIEZhbGxiYWNrIHRvIHRyeWluZyB0byBzZXQg
dGhlIHByb3BlcnR5IG9uIHRoZSBwcm90b3R5cGUgb2JqZWN0IGZvciBjb21wYXRpYmlsaXR5IHJl
YXNvbnMuCisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBK
U09iamVjdCogdGhpc09iamVjdCA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpLmdldE9iamVj
dCgpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAg
ICBjYXN0ZWRUaGlzID0gdGhpc09iamVjdCA/ICIgLiBHZXRDYXN0aW5nSGVscGVyRm9yVGhpc09i
amVjdCgkaW50ZXJmYWNlKSAuICIodGhpc09iamVjdC0+cHJvdG90eXBlKCkpIDogbnVsbHB0cjtc
biIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgaWYg
KCFjYXN0ZWRUaGlzKSB7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgICAgICB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIFwiJGludGVyZmFj
ZU5hbWVcIiwgXCIkbmFtZVwiKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAgICAgICAgIHJldHVybjtcbiIpOworICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgfVxuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXBvcnREZXByZWNhdGVkU2V0dGVyRXJyb3IoKnN0
YXRlLCBcIiRpbnRlcmZhY2VOYW1lXCIsIFwiJG5hbWVcIik7XG4iKTsKICAgICAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCBcIiRpbnRlcmZhY2VOYW1lXCIsIFwiJG5h
bWVcIik7XG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKaW5kZXggMjVkNmNl
MmViMGQ4MWY4ZjA2NGM2ZGEwNTVlZjQ3MGJjYjFjNzhmYS4uMDYxMWRmM2YyNjYxNjQxMzQxYTA4
MDY4ZjVlNWRiNzRlODk1MDA1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAK
QEAgLTE0OSwxMCArMTQ5LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEFjdGl2ZURPTU9iamVj
dEV4Y2l0aW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvCiAgICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwotICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0QWN0
aXZlRE9NT2JqZWN0Kj4oc2xvdEJhc2UpOwotICAgIEpTVGVzdEFjdGl2ZURPTU9iamVjdCogY2Fz
dGVkVGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Kj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpc09i
amVjdCkpCisgICAgSlNUZXN0QWN0aXZlRE9NT2JqZWN0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RBY3RpdmVET01PYmplY3QqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEFjdGl2ZURPTU9iamVjdCIsICJleGNpdGluZ0F0
dHIiKTsKKyAgICB9CiAgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNz
VG9ET01XaW5kb3coc3RhdGUsIGNhc3RlZFRoaXMtPndyYXBwZWQoKSkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAppbmRl
eCBjYTA2YzhkOWVjODFmMmViMGZlMjAxYjRjMjUwZDkwNTY5Nzc4OTkzLi4zNjcwNjUxMDA3OWNi
ZDEyMmIzMDYxOTVhMGZlOGFiNWYyOThiODEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3Ry
dWN0b3IuY3BwCkBAIC0xNjIsOCArMTYyLDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0RXZlbnRD
b25zdHJ1Y3RvckF0dHIxKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwKICAg
ICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwog
ICAgIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdEV2ZW50Q29uc3RydWN0b3IqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0RXZl
bnRDb25zdHJ1Y3RvciIsICJhdHRyMSIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUo
c3RhdGUsIGltcGwuYXR0cjEoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OwpAQCAtMTc2LDggKzE3Nyw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0
b3JBdHRyMihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsCiAgICAgVU5VU0VE
X1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rl
c3RFdmVudENvbnN0cnVjdG9yKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVu
dENvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEV2ZW50Q29uc3Ry
dWN0b3IiLCAiYXR0cjIiKTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBp
bXBsLmF0dHIyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNl
cHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV4Y2VwdGlvbi5jcHAKaW5kZXggYTBlNzY4MzliZDdiMzYzMTRhNTE1MGQwOGU3YTdjZWMxN2Y1
YmQ4OS4uMDkzNDZlM2M0OTgxZDE4NTgwMWU0OTI1N2NkOTNmZGMxMmQ3M2UyMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV4Y2VwdGlvbi5jcHAKQEAgLTEzOSwxMCArMTM5LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dEV4Y2VwdGlvbk5hbWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNv
ZGVkCiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2Up
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwotICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBq
c0Nhc3Q8SlNUZXN0RXhjZXB0aW9uKj4oc2xvdEJhc2UpOwotICAgIEpTVGVzdEV4Y2VwdGlvbiog
Y2FzdGVkVGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXhjZXB0aW9uKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpc09iamVj
dCkpCisgICAgSlNUZXN0RXhjZXB0aW9uKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RFeGNlcHRpb24qPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdEV4Y2VwdGlvbiIsICJuYW1lIik7CisgICAgfQogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dp
dGhDYWNoZShzdGF0ZSwgaW1wbC5uYW1lKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKaW5kZXggYmY4NTA4MGQ5MDAzNjM3MzZkYTgy
ODM4ZDc0NTNlYjAxMzQ0NGNmNC4uYzkxMjY4MjE4YmM2MzBlZDNiY2I4MmEzYjdlZTEzYjc0YThj
YWRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKQEAgLTQzNCw4ICs0MzQsOSBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMShFeGVjU3RhdGUqIHN0YXRlLCBK
U09iamVjdCogc2xvdEJhcwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNTdHIxIik7CisgICAgfQogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dp
dGhDYWNoZShzdGF0ZSwgaW1wbC5pbXBsZW1lbnRzU3RyMSgpKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC00NTAsOCArNDUxLDkgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNs
b3RCYXMKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewog
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFj
ZSIsICJpbXBsZW1lbnRzU3RyMiIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3Rh
dGUsIGltcGwuaW1wbGVtZW50c1N0cjIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwpAQCAtNDY2LDggKzQ2OCw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFj
ZUltcGxlbWVudHNTdHIzKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzCiAgICAg
VU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAg
ICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVy
ZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVt
ZW50c1N0cjMiKTsKKyAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlz
LT5pbXBsZW1lbnRzU3RyMygqc3RhdGUpKTsKIH0KIApAQCAtNDgwLDggKzQ4Myw5IEBAIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUltcGxlbWVudHNOb2RlKEV4ZWNTdGF0ZSogc3RhdGUs
IEpTT2JqZWN0KiBzbG90QmFzCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVT
RURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c05vZGUiKTsKKyAgICB9CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3Rh
dGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLmltcGxlbWVu
dHNOb2RlKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC01MjAs
OCArNTI0LDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3Ry
MShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEIKICAgICBVTlVTRURfUEFSQU0oc2xv
dEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdEludGVyZmFj
ZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxTdHIxIik7Cisg
ICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgV2ViQ29yZTo6VGVzdFN1cHBsZW1l
bnRhbDo6c3VwcGxlbWVudGFsU3RyMShpbXBsKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwpAQCAtNTM2LDggKzU0MSw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVy
ZmFjZVN1cHBsZW1lbnRhbFN0cjIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCCiAg
ICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdElu
dGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAg
cmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3Vw
cGxlbWVudGFsU3RyMiIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIFdl
YkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbFN0cjIoaW1wbCkpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTU1Miw4ICs1NTgsOSBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIzKEV4ZWNTdGF0ZSogc3RhdGUs
IEpTT2JqZWN0KiBzbG90QgogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbFN0cjMiKTsKKyAgICB9CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5zdXBwbGVtZW50YWxTdHIzKCpzdGF0ZSkpOwogfQog
CkBAIC01NjYsOCArNTczLDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxl
bWVudGFsTm9kZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEIKICAgICBVTlVTRURf
UEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVz
dEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxO
b2RlIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3Qo
KSwgV1RGOjpnZXRQdHIoV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsTm9k
ZShpbXBsKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0
aW5Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCmluZGV4IDcyMGE5OTMyY2JjYjRmNTUx
MWIxZTZkNjYxOGU2OWVhMDgxZjE5ZTQuLmI1N2Y1YjgyYzJkYmVlOWZjMmY5NGNkNTBhZDFjZTYx
YmU2ZGEzYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcApA
QCAtMTMxLDggKzEzMSw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yVGVzdEF0dHJpYnV0ZUN1c3RvbShFeGVjU3RhdGUqIHN0YXRlLCBKCiAgICAgVU5VU0VEX1BB
UkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RK
U0J1aWx0aW5Db25zdHJ1Y3RvciogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3IqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SlNCdWls
dGluQ29uc3RydWN0b3IiLCAidGVzdEF0dHJpYnV0ZUN1c3RvbSIpOworICAgIH0KICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnRlc3RBdHRyaWJ1dGVDdXN0b20oKnN0YXRl
KSk7CiB9CiAKQEAgLTE0Myw4ICsxNDQsOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RKU0J1aWx0
aW5Db25zdHJ1Y3RvclRlc3RBdHRyaWJ1dGVSV0N1c3RvbShFeGVjU3RhdGUqIHN0YXRlLAogICAg
IFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAg
ICAgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yIiwgInRlc3RBdHRyaWJ1dGVSV0N1c3RvbSIpOworICAg
IH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnRlc3RBdHRyaWJ1dGVS
V0N1c3RvbSgqc3RhdGUpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCmluZGV4IDgyMmEyZTQ3Y2EzNjI0MTdl
OTQzZjgxNDVmODE4OGU2MjhhODA0ZDAuLjMxYTg3MDRkZDcxNTY2ZGJjMWUwN2Y1MTg4NzdiYjU0
OWQ0NzVmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKQEAgLTEyMiw4ICsxMjIsOSBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3ROb2RlTmFtZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVu
Y29kZWRKU1ZhbAogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0Tm9kZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0Tm9kZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb2RlIiwgIm5hbWUi
KTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLm5hbWUoKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVy
bWluaXN0aWMuY3BwCmluZGV4IDMxZjFkM2NmZjcxMmQxYWE5NDhmYmIxZWUxZmRkZWZlMGRjZTJi
NWQuLmQ2MDE3MzQ0ZTQ1MzNlMDg2ZDJkZGY3NjI0OTg0ZGFmYWM0MjNiOGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1p
bmlzdGljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAKQEAgLTE0Myw4ICsxNDMsOSBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1JlYWRvbmx5QXR0cihF
eGVjU3RhdGUqIHN0YQogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyo+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNSZWFkb25s
eUF0dHIiKTsKKyAgICB9CiAjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCiAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgSW5w
dXRDdXJzb3ImIGN1cnNvciA9IGdsb2JhbE9iamVjdC0+aW5wdXRDdXJzb3IoKTsKQEAgLTE3Nyw4
ICsxNzgsOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJt
aW5pc3RpY1dyaXRlYWJsZUF0dHIoRXhlY1N0YXRlKiBzdAogICAgIFVOVVNFRF9QQVJBTShzbG90
QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0Tm9uZGV0ZXJt
aW5pc3RpYyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3Rp
Yyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5v
bmRldGVybWluaXN0aWNXcml0ZWFibGVBdHRyIik7CisgICAgfQogI2lmIEVOQUJMRShXRUJfUkVQ
TEFZKQogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzdGF0ZS0+bGV4aWNhbEds
b2JhbE9iamVjdCgpOwogICAgIElucHV0Q3Vyc29yJiBjdXJzb3IgPSBnbG9iYWxPYmplY3QtPmlu
cHV0Q3Vyc29yKCk7CkBAIC0yMTEsOCArMjEzLDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9u
ZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyKEV4ZWNTdGF0ZSogc3QK
ICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVGVzdE5vbmRldGVybWluaXN0aWMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE5vbmRldGVybWluaXN0aWMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0g
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0ciIpOworICAg
IH0KICNpZiBFTkFCTEUoV0VCX1JFUExBWSkKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBJbnB1dEN1cnNvciYgY3Vy
c29yID0gZ2xvYmFsT2JqZWN0LT5pbnB1dEN1cnNvcigpOwpAQCAtMjQ1LDggKzI0OCw5IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljR2V0dGVy
RXhjZXB0aW9uQXR0cihFeGVjU3RhCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3ROb25kZXRlcm1pbmlzdGljKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5pc3Rp
Y0dldHRlckV4Y2VwdGlvbkF0dHIiKTsKKyAgICB9CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CiAjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CkBAIC0yODMsOCArMjg3LDkgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNTZXR0ZXJF
eGNlcHRpb25BdHRyKEV4ZWNTdGEKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE5vbmRldGVybWluaXN0aWMqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vbmRldGVybWluaXN0aWMqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGlj
U2V0dGVyRXhjZXB0aW9uQXR0ciIpOworICAgIH0KICNpZiBFTkFCTEUoV0VCX1JFUExBWSkKICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3RhdGUtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKTsKICAgICBJbnB1dEN1cnNvciYgY3Vyc29yID0gZ2xvYmFsT2JqZWN0LT5pbnB1dEN1cnNv
cigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcAppbmRleCA5Mjg3NDAwMGQ2ODRkMWU4MmQ1N2RjYWNlZmVjZjg0MGMwZDBj
MjZhLi4wZjI4OGExZjY5MmFlMDY0OGY4OTMwNzcyM2ZjNmIyNzEwZTNhNzFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNw
cApAQCAtNzQ4LDggKzc0OCw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5TG9u
Z0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFCiAgICAgVU5VU0VE
X1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVhZE9ubHlMb25nQXR0ciIpOworICAgIH0KICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNOdW1iZXIoaW1wbC5yZWFkT25seUxvbmdBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKQEAgLTc2Miw4ICs3NjMsOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpSZWFkT25seVN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RC
YXNlLAogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNW
YWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlYWRPbmx5U3RyaW5n
QXR0ciIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwucmVhZE9u
bHlTdHJpbmdBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAg
LTc3Niw4ICs3NzgsOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWFkT25seVRlc3RPYmpB
dHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZQogICAgIFVOVVNFRF9QQVJB
TShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgInJlYWRPbmx5VGVzdE9iakF0dHIiKTsKKyAgICB9CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBs
LnJlYWRPbmx5VGVzdE9iakF0dHIoKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKQEAgLTgwOSwxMCArODEyLDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0
cnVjdG9yVGVzdFN1Yk9iaihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhCiAgICAg
VU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwotICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNU
ZXN0T2JqKj4oc2xvdEJhc2UpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpc09iamVjdCA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpc09iamVjdCkpCisgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJUZXN0U3ViT2JqIik7CisgICAg
fQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0U3ViT2JqOjpnZXRDb25zdHJ1Y3Rv
cihzdGF0ZS0+dm0oKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIApAQCAtODIy
LDEwICs4MjUsMTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVGVzdFN1Yk9iakVuYWJsZWRC
eVNldHRpbmdDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLAogICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKLSAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KHNsb3RC
YXNlKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXNPYmplY3QpKQorICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmciKTsKKyAg
ICB9CiAgICAgaWYgKCFjYXN0ZWRUaGlzLT53cmFwcGVkKCkuZnJhbWUoKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBTZXR0aW5ncyYgc2V0dGlu
Z3MgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCkuZnJhbWUoKS0+c2V0dGluZ3MoKTsKQEAgLTg0MSw4
ICs4NDQsOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpFbnVtQXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKUwogICAgIFVOVVNFRF9QQVJBTShzbG90
QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgImVudW1BdHRyIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNo
ZShzdGF0ZSwgaW1wbC5lbnVtQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CkBAIC04NTUsOCArODU5LDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQnl0ZUF0
dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlMKICAgICBV
TlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJieXRlQXR0ciIpOworICAgIH0KICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNOdW1iZXIoaW1wbC5ieXRlQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CkBAIC04NjksOCArODc0LDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqT2N0ZXRB
dHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEoKICAgICBV
TlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvY3RldEF0dHIiKTsKKyAgICB9CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzTnVtYmVyKGltcGwub2N0ZXRBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKQEAgLTg4Myw4ICs4ODksOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTaG9y
dEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSgogICAg
IFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
KyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInNob3J0QXR0ciIpOworICAgIH0KICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNOdW1iZXIoaW1wbC5zaG9ydEF0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwpAQCAtODk3LDggKzkwNCw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialVu
c2lnbmVkU2hvcnRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwKICAg
ICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwog
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ1bnNpZ25lZFNob3J0QXR0ciIpOwor
ICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC51bnNpZ25lZFNob3J0QXR0cigpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC05MTEsOCArOTE5LDkgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqTG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RC
YXNlLCBFbmNvZGVkSlMKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJsb25n
QXR0ciIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5sb25nQXR0cigpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC05MjUsOCArOTM0LDkgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBz
bG90QmFzZSwgRW5jb2QKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJsb25n
TG9uZ0F0dHIiKTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwubG9uZ0xvbmdBdHRyKCkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTkzOSw4ICs5NDksOSBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpVbnNpZ25lZExvbmdMb25nQXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBKU09iamVjdCogc2xvdEJhcwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLnVu
c2lnbmVkTG9uZ0xvbmdBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKQEAgLTk1Myw4ICs5NjQsOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRy
KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZAogICAgIFVOVVNF
RF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmluZ0F0dHIiKTsKKyAgICB9CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
U3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLnN0cmluZ0F0dHIoKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtOTY3LDggKzk3OSw5IEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialRlc3RPYmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFz
ZSwgRW5jb2RlCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAg
cmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidGVzdE9iakF0
dHIiKTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgp
LCBXVEY6OmdldFB0cihpbXBsLnRlc3RPYmpBdHRyKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CkBAIC05ODEsOCArOTk0LDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqTGVuaWVudFRlc3RPYmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFz
ZSwKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwg
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwubGVuaWVudFRlc3RP
YmpBdHRyKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC05OTUs
OCArMTAwOSw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialhNTE9iakF0dHIoRXhlY1N0YXRl
KiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkCiAgICAgVU5VU0VEX1BBUkFNKHNs
b3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAiWE1MT2JqQXR0ciIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwg
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwueG1sT2JqQXR0cigp
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTAwOSw4ICsxMDI0
LDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ3JlYXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpT
T2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmEKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2Up
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJjcmVhdGUiKTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihpbXBsLmlzQ3JlYXRl
KCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEwMjMsOCArMTAz
OSw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5U3ltYm9sQXR0cihFeGVjU3Rh
dGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNl
KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAicmVhZE9ubHlTeW1ib2xBdHRyIik7CisgICAgfQogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBTeW1ib2w6OmNy
ZWF0ZShzdGF0ZS0+dm0oKSwgKihpbXBsLnJlYWRPbmx5U3ltYm9sQXR0cigpKS51aWQoKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTA0Nyw4ICsxMDY0LDkgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBKU09iamVjdCogc2xvdEJhc2UKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNo
ZShzdGF0ZSwgaW1wbC5mYXN0R2V0QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVj
dGVkc3RyaW5nYXR0ckF0dHIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CkBAIC0xMDYxLDggKzEwNzksOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRJ
bnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYQogICAgIFVOVVNF
RF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEludGVncmFsQXR0ciIpOworICAg
IH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNOdW1iZXIoaW1wbC5nZXRJbnRlZ3JhbEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1M
TmFtZXM6OnJlZmxlY3RlZGludGVncmFsYXR0ckF0dHIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CkBAIC0xMDc1LDggKzEwOTQsOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpSZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09i
amVjdAogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNW
YWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZFVuc2ln
bmVkSW50ZWdyYWxBdHRyIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihzdGQ6Om1heCgwLCBpbXBs
LmdldEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkdW5zaWdu
ZWRpbnRlZ3JhbGF0dHJBdHRyKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKQEAgLTEwODksOCArMTEwOSw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3Rl
ZEJvb2xlYW5BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzCiAgICAgVU5V
U0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkQm9vbGVhbkF0dHIiKTsKKyAg
ICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVl
IHJlc3VsdCA9IGpzQm9vbGVhbihpbXBsLmZhc3RIYXNBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5h
bWVzOjpyZWZsZWN0ZWRib29sZWFuYXR0ckF0dHIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CkBAIC0xMTAzLDggKzExMjQsOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpSZWZsZWN0ZWRVUkxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwg
RQogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1
ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZFVSTEF0dHIi
KTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmdldFVSTEF0dHJp
YnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHVybGF0dHJBdHRyKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTExNyw4ICsxMTM5LDkgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBK
U09iamVjdCogc2xvdEJhc2UKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNF
RF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewog
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJy
ZWZsZWN0ZWRTdHJpbmdBdHRyIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0
ZSwgaW1wbC5mYXN0R2V0QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVu
dFN0cmluZ0F0dHJBdHRyKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpA
QCAtMTEzMSw4ICsxMTU0LDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkQ3Vz
dG9tSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KgogICAgIFVOVVNFRF9Q
QVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ciIpOwor
ICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5nZXRJbnRlZ3JhbEF0dHJpYnV0ZShXZWJDb3JlOjpI
VE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRJbnRlZ3JhbEF0dHJBdHRyKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTE0NSw4ICsxMTY5LDkgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNPYmplY3QqIHMKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJB
TSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0
ZWRDdXN0b21Cb29sZWFuQXR0ciIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKGltcGwuZmFzdEhh
c0F0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRCb29sZWFuQXR0ckF0
dHIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xMTU5LDggKzEx
ODQsOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21VUkxBdHRyKEV4
ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QgogICAgIFVOVVNFRF9QQVJBTShzbG90QmFz
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbVVSTEF0dHIiKTsKKyAgICB9CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3Ry
aW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmdldFVSTEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFt
ZXM6OmN1c3RvbUNvbnRlbnRVUkxBdHRyQXR0cikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKQEAgLTExNzMsOCArMTE5OSw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alR5cGVkQXJyYXlBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5j
CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVl
KTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidHlwZWRBcnJheUF0dHIiKTsK
KyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6
OmdldFB0cihpbXBsLnR5cGVkQXJyYXlBdHRyKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CkBAIC0xMTg3LDggKzEyMTQsOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xv
dAogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1
ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImF0dHJXaXRoR2V0dGVyRXhj
ZXB0aW9uIik7CisgICAgfQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJl
cihpbXBsLmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKGVjKSk7CkBAIC0xMjAzLDggKzEyMzEsOSBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbldpdGhNZXNz
YWdlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTTwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0g
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2UiKTsKKyAgICB9CiAgICAg
RXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlIGVjOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmF0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2UoZWMpKTsKQEAgLTEyMTksOCArMTI0OCw5IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSog
c3RhdGUsIEpTT2JqZWN0KiBzbG90CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwu
YXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwpAQCAtMTIzMyw4ICsxMjYzLDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0
cldpdGhTZXR0ZXJFeGNlcHRpb25XaXRoTWVzc2FnZShFeGVjU3RhdGUqIHN0YXRlLCBKU08KICAg
ICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwog
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlv
bldpdGhNZXNzYWdlIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmF0dHJXaXRoU2V0dGVy
RXhjZXB0aW9uV2l0aE1lc3NhZ2UoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwpAQCAtMTI0Nyw4ICsxMjc4LDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaW5n
QXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QKICAgICBV
TlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2Vw
dGlvbiIpOworICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdX
aXRoQ2FjaGUoc3RhdGUsIGltcGwuc3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oZWMpKTsK
QEAgLTEyNjMsOCArMTI5NSw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0CiAgICAgVU5VU0VE
X1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24i
KTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLnN0cmluZ0F0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKQEAgLTEyNzcsOCArMTMxMCw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmljdFR5
cGVDaGVja2luZ0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCoKICAgICBVTlVT
RURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUi
KTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBX
VEY6OmdldFB0cihpbXBsLnN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZSgpKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTI5MSw4ICsxMzI1LDkgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqQ3VzdG9tQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCog
c2xvdEJhc2UsIEVuY29kZWQKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNF
RF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewog
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJj
dXN0b21BdHRyIik7CisgICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhp
cy0+Y3VzdG9tQXR0cigqc3RhdGUpKTsKIH0KIApAQCAtMTMwMyw4ICsxMzM4LDkgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqT25mb28oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RC
YXNlLCBFbmNvZGVkSlNWYWwKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNF
RF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewog
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJv
bmZvbyIpOworICAgIH0KICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoZXZlbnRIYW5kbGVyQXR0cmlidXRlKGNhc3RlZFRoaXMtPndyYXBwZWQoKSwg
ZXZlbnROYW1lcygpLmZvb0V2ZW50KSk7CiB9CkBAIC0xMzE2LDggKzEzNTIsOSBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0
ZSwgSlNPYmplY3QqIHNsbwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAg
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndp
dGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC53aXRo
U2NyaXB0U3RhdGVBdHRyaWJ1dGUoKnN0YXRlKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwpAQCAtMTMzMCw4ICsxMzY3LDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
V2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwK
ICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoQ2FsbFdpdGhBbmRTZXR0
ZXJDYWxsV2l0aEF0dHJpYnV0ZSIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC53aXRoQ2Fs
bFdpdGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZSgqc3RhdGUpKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xMzQ0LDggKzEzODIsOSBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZShFeGVjU3RhdGUq
IHN0YXRlLCBKUwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlIik7CisgICAgfQogICAgIGF1dG8qIHNjcmlwdENv
bnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghc2NyaXB0Q29udGV4
dCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTEz
NjEsOCArMTQwMCw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0
dHJpYnV0ZVJhaXNlcyhFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjCiAgICAgVU5VU0VEX1BBUkFN
KHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIik7Cisg
ICAgfQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC53aXRoU2NyaXB0U3RhdGVBdHRy
aWJ1dGVSYWlzZXMoKnN0YXRlLCBlYykpKTsKQEAgLTEzNzcsOCArMTQxNyw5IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2Vz
KEV4ZWNTdGF0ZSogc3RhCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURf
UEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMiKTsKKyAgICB9CiAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgYXV0byogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFzY3JpcHRDb250ZXh0KQpAQCAtMTM5Niw4ICsxNDM3
LDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZShFeGVjU3QKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2Up
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmli
dXRlIik7CisgICAgfQogICAgIGF1dG8qIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOwogICAgIGlmICghc2NyaXB0Q29udGV4dCkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE0MTMsOCArMTQ1NSw5IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVB
dHRyaWJ1dGVSYWlzZXMoCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURf
UEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyIpOwor
ICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBhdXRvKiBzY3JpcHRDb250ZXh0
ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlwdENvbnRleHQpCkBA
IC0xNDMyLDggKzE0NzUsOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYgogICAgIFVOVVNFRF9Q
QVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlIik7CisgICAgfQogICAgIGF1dG8qIHNjcmlwdENv
bnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghc2NyaXB0Q29udGV4
dCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE0
NDksOCArMTQ5Myw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRBcmd1bWVu
dHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0CiAgICAgVU5VU0VEX1BBUkFN
KHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJp
YnV0ZSIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0
KCksIFdURjo6Z2V0UHRyKGltcGwud2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJp
YnV0ZSgpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTQ2NCw4
ICsxNTA5LDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMShFeGVj
U3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEUKICAgICBVTlVTRURfUEFSQU0oc2xv
dEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIxIik7CisgICAgfQogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJl
cihpbXBsLmNvbmRpdGlvbmFsQXR0cjEoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwpAQCAtMTQ4MCw4ICsxNTI2LDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29u
ZGl0aW9uYWxBdHRyMihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEUKICAg
ICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwog
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIyIik7Cisg
ICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmNvbmRpdGlvbmFsQXR0cjIoKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTQ5Niw4ICsxNTQzLDkgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMyhFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVj
dCogc2xvdEJhc2UsIEUKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25k
aXRpb25hbEF0dHIzIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmNvbmRpdGlvbmFsQXR0
cjMoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTUxMSwxMCAr
MTU1OSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHI0Q29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqCiAgICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwotICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oc2xvdEJhc2Up
OwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpc09iamVjdCkpCisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHI0Iik7CisgICAgfQogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0T2JqZWN0QTo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZt
KCksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKQEAgLTE1MjYsMTAgKzE1NzQs
MTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNUNvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KgogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
LSAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KHNsb3RCYXNlKTsKLSAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXNPYmplY3QpKQorICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyNSIpOworICAgIH0KICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTVGVzdE9iamVjdEI6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSkpOwogfQogCkBAIC0xNTQxLDEwICsxNTg5LDEwIEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjZDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIHN0YXRlLCBKU09iamVjdCoKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVO
VVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7Ci0gICAg
YXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihzbG90QmFzZSk7Ci0gICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzT2Jq
ZWN0KSkKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjYiKTsKKyAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU1Rlc3RPYmplY3RDOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIApAQCAtMTU1Niw4ICsxNjA0LDkgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqQ2FjaGVkQXR0cmlidXRlMShFeGVjU3RhdGUqIHN0YXRlLCBKU09i
amVjdCogc2xvdEJhc2UsIEUKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNF
RF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewog
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJj
YWNoZWRBdHRyaWJ1dGUxIik7CisgICAgfQogICAgIGlmIChKU1ZhbHVlIGNhY2hlZFZhbHVlID0g
Y2FzdGVkVGhpcy0+bV9jYWNoZWRBdHRyaWJ1dGUxLmdldCgpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGNhY2hlZFZhbHVlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwpAQCAtMTU3Myw4ICsxNjIyLDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
Q2FjaGVkQXR0cmlidXRlMihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEUK
ICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjYWNoZWRBdHRyaWJ1dGUyIik7
CisgICAgfQogICAgIGlmIChKU1ZhbHVlIGNhY2hlZFZhbHVlID0gY2FzdGVkVGhpcy0+bV9jYWNo
ZWRBdHRyaWJ1dGUyLmdldCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhY2hl
ZFZhbHVlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwpAQCAtMTU5
MCw4ICsxNjQwLDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQW55QXR0cmlidXRlKEV4ZWNT
dGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2QKICAgICBVTlVTRURfUEFSQU0o
c2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJhbnlBdHRyaWJ1dGUiKTsKKyAgICB9CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IChpbXBsLmFu
eUF0dHJpYnV0ZSgpLmhhc05vVmFsdWUoKSA/IGpzTnVsbCgpIDogaW1wbC5hbnlBdHRyaWJ1dGUo
KS5qc1ZhbHVlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE2
MDMsMTAgKzE2NTQsMTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29udGVudERvY3VtZW50
KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW4KICAgICBVTlVTRURfUEFS
QU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRoaXNWYWx1ZSk7Ci0gICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihz
bG90QmFzZSk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzT2JqZWN0ID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzT2JqZWN0KSkKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbnRlbnREb2N1bWVudCIpOworICAgIH0KICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoc2hvdWxkQWxsb3dBY2Nlc3NUb05vZGUoc3RhdGUsIGltcGwuY29udGVudERvY3Vt
ZW50KCkpID8gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0
UHRyKGltcGwuY29udGVudERvY3VtZW50KCkpKSA6IGpzTnVsbCgpKTsKIH0KQEAgLTE2MTgsOCAr
MTY2OSw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak11dGFibGVQb2ludChFeGVjU3RhdGUq
IHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RC
YXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAibXV0YWJsZVBvaW50Iik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoU1ZHU3RhdGljUHJvcGVydHlU
ZWFyT2ZmPFRlc3RPYmosIFNWR1BvaW50Pjo6Y3JlYXRlKGltcGwsIGltcGwubXV0YWJsZVBvaW50
KCksICZUZXN0T2JqOjp1cGRhdGVNdXRhYmxlUG9pbnQpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwpAQCAtMTYzMiw4ICsxNjg0LDkgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqSW1tdXRhYmxlUG9pbnQoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNl
LCBFbmMKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJpbW11dGFibGVQb2lu
dCIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCks
IFdURjo6Z2V0UHRyKFNWR1Byb3BlcnR5VGVhck9mZjxTVkdQb2ludD46OmNyZWF0ZShpbXBsLmlt
bXV0YWJsZVBvaW50KCkpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpA
QCAtMTY0Niw4ICsxNjk5LDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyYXdiZXJyeShF
eGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWQKICAgICBVTlVTRURf
UEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJhd2JlcnJ5Iik7CisgICAgfQogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051
bWJlcihpbXBsLmJsdWViZXJyeSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CkBAIC0xNjYwLDggKzE3MTQsOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpY3RG
bG9hdChFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZQogICAgIFVO
VVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmljdEZsb2F0Iik7CisgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSBqc051bWJlcihpbXBsLnN0cmljdEZsb2F0KCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKQEAgLTE2NzQsOCArMTcyOSw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
akRlc2NyaXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2Rl
CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVl
KTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiZGVzY3JpcHRpb24iKTsKKyAg
ICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVl
IHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuZGVzY3JpcHRpb24oKSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTY4OCw4ICsxNzQ0LDkgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqSWQoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVk
SlNWYWx1ZQogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImlkIik7CisgICAg
fQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc051bWJlcihpbXBsLmlkKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKQEAgLTE3MDIsOCArMTc1OSw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakhh
c2goRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1CiAg
ICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiaGFzaCIpOworICAgIH0KICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuaGFzaCgpKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xNzE2LDggKzE3NzQsOSBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpSZXBsYWNlYWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCog
c2xvdEJhcwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlcGxhY2VhYmxl
QXR0cmlidXRlIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLnJlcGxhY2VhYmxlQXR0cmli
dXRlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE3MzAsOCAr
MTc4OSw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlRG91YmxlQXR0cmlidXRl
KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RC
YXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAibnVsbGFibGVEb3VibGVBdHRyaWJ1dGUiKTsKKyAgICB9CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRv
TnVsbGFibGVKU051bWJlcihpbXBsLm51bGxhYmxlRG91YmxlQXR0cmlidXRlKCkpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE3NDQsOCArMTgwNCw5IEBAIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlTG9uZ0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRl
LCBKU09iamVjdCogc2xvdEJhCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVT
RURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
ICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
bnVsbGFibGVMb25nQXR0cmlidXRlIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b051bGxhYmxlSlNOdW1iZXIo
aW1wbC5udWxsYWJsZUxvbmdBdHRyaWJ1dGUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwpAQCAtMTc1OCw4ICsxODE5LDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
TnVsbGFibGVCb29sZWFuQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG8K
ICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJudWxsYWJsZUJvb2xlYW5BdHRy
aWJ1dGUiKTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihpbXBsLm51bGxhYmxlQm9vbGVhbkF0dHJp
YnV0ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xNzcyLDgg
KzE4MzQsOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ0F0dHJpYnV0
ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdAogICAgIFVOVVNFRF9QQVJBTShzbG90
QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgIm51bGxhYmxlU3RyaW5nQXR0cmlidXRlIik7CisgICAgfQogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5udWxsYWJsZVN0cmluZ0F0dHJpYnV0ZSgpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xNzg2LDggKzE4NDksOSBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShF
eGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdAogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0g
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgIm51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlIik7CisgICAgfQogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b051
bGxhYmxlSlNOdW1iZXIoaW1wbC5udWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSgpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xODAwLDggKzE4NjQsOSBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlKEV4ZWNTdGF0ZSogc3Rh
dGUsIEpTT2JqZWN0KiBzbG90QmFzZQogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgIm51bGxhYmxlU3RyaW5nVmFsdWUiKTsKKyAgICB9CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVl
IHJlc3VsdCA9IHRvTnVsbGFibGVKU051bWJlcihpbXBsLm51bGxhYmxlU3RyaW5nVmFsdWUoZWMp
KTsKQEAgLTE4MTYsOCArMTg4MSw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJpYnV0
ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKCiAgICAgVU5V
U0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYXR0cmlidXRlIik7CisgICAgfQogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5hdHRyaWJ1dGUoKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTgzMCw4ICsxODk2LDkgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqQXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUoRXhlY1N0YXRlKiBzdGF0
ZSwgSlNPYmplY3QKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJB
TSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhdHRyaWJ1
dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUo
c3RhdGUsIGltcGwuYXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUoKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTg0NCw4ICsxOTExLDkgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHV0Rm9yd2FyZHNBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNP
YmplY3QqIHNsb3RCYXMKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJwdXRG
b3J3YXJkc0F0dHJpYnV0ZSIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+
Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwucHV0Rm9yd2FyZHNBdHRyaWJ1dGUoKSkp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE4NTgsOCArMTkyNiw5
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUo
RXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
LSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAicHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSIpOworICAgIH0KICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9K
UyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwucHV0
Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSgpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwpAQCAtMTkwMiw5ICsxOTcxLDggQEAgdm9pZCBzZXRKU1Rlc3RPYmpUZXN0U3Vi
T2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWMK
IHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKGJhc2VPYmplY3QpOwotICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nh
c3Q8SlNUZXN0T2JqKj4oYmFzZU9iamVjdCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzT2Jq
ZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzT2JqZWN0KSkgeworICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAg
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJUZXN0U3ViT2JqRW5hYmxl
ZEJ5U2V0dGluZyIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjY5MCw5ICsyNzU4LDgg
QEAgdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI0Q29uc3RydWN0b3IoRXhlY1N0YXRl
KiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYmoKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGJhc2VPYmplY3QpOwot
ICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYmFzZU9iamVjdCk7Ci0g
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzT2JqZWN0KSkgeworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHI0Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC0yNzA3LDkgKzI3NzQsOCBAQCB2b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjVDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iagogewogICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFS
QU0oYmFzZU9iamVjdCk7Ci0gICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoq
PihiYXNlT2JqZWN0KTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXNPYmplY3QgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXNPYmplY3QpKSB7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjUiKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KQEAgLTI3MjQsOSArMjc5MCw4IEBAIHZvaWQgc2V0SlNUZXN0T2JqQ29u
ZGl0aW9uYWxBdHRyNkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNl
T2JqCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwogICAgIFVOVVNFRF9QQVJBTShiYXNlT2JqZWN0KTsKLSAgICBhdXRvKiBjYXN0ZWRUaGlzID0g
anNDYXN0PEpTVGVzdE9iaio+KGJhc2VPYmplY3QpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
c09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpc09iamVjdCkpIHsKKyAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAg
ICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxB
dHRyNiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAppbmRleCBiNjdiOTIxZWM0ZTcw
MmY0N2QwNzNkNzlhMzhjZmI0MjBiMDkyODVjLi5iMWY2NDFmNDVjM2IxM2VjY2U0YjkxMWRlMDUy
NGU4OTc4ZDVhMjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlLmNwcApAQCAtMTMzLDggKzEzMyw5IEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVZhbHVlKEV4ZWNTdGF0ZSogc3Rh
dGUsIEpTT2JqCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UiLCAidmFsdWUiKTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGltcGwudmFsdWUoKSA/IGltcGwu
dmFsdWUoKS0+ZGVzZXJpYWxpemUoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCAw
KSA6IGpzTnVsbCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE0
Nyw4ICsxNDgsOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2VSZWFkb25seVZhbHVlKEV4ZWNTdGF0ZSogc3RhdAogICAgIFVOVVNFRF9QQVJBTShz
bG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgInJlYWRvbmx5VmFsdWUi
KTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGltcGwucmVhZG9ubHlWYWx1ZSgpID8gaW1wbC5yZWFkb25seVZhbHVl
KCktPmRlc2VyaWFsaXplKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgMCkgOiBq
c051bGwoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xNjEsOCAr
MTYzLDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlQ2FjaGVkVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwKICAgICBVTlVTRURfUEFSQU0oc2xvdEJh
c2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJjYWNoZWRWYWx1ZSIpOworICAg
IH0KICAgICBpZiAoSlNWYWx1ZSBjYWNoZWRWYWx1ZSA9IGNhc3RlZFRoaXMtPm1fY2FjaGVkVmFs
dWUuZ2V0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FjaGVkVmFsdWUpOwog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CkBAIC0xNzgsOCArMTgxLDkg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUG9y
dHMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmoKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJwb3J0cyIpOworICAgIH0KICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNB
cnJheShzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwucG9ydHMoKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTkyLDggKzE5Niw5IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhY2hlZFJl
YWRvbmx5VmFsdWUoRXhlY1N0YXRlCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
ICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAiY2FjaGVkUmVhZG9ubHlWYWx1ZSIpOworICAgIH0K
ICAgICBpZiAoSlNWYWx1ZSBjYWNoZWRWYWx1ZSA9IGNhc3RlZFRoaXMtPm1fY2FjaGVkUmVhZG9u
bHlWYWx1ZS5nZXQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWNoZWRWYWx1
ZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRl
ZnMuY3BwCmluZGV4IDVmNTEwOWIwOWRlNzBjNzQ1NzFiMWU1OTM3MzIyOWVmZDRjYmRkNWYuLmY5
NGNiYmIwMmRhNzY0YTUyYWMzZmJiYjMxYzI0M2Q2NDA3YThiZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZz
LmNwcApAQCAtMjE2LDggKzIxNiw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzVW5z
aWduZWRMb25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsCiAgICAgVU5V
U0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAidW5zaWduZWRMb25n
TG9uZ0F0dHIiKTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwudW5zaWduZWRMb25nTG9uZ0F0
dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMjMwLDggKzIz
MSw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzSW1tdXRhYmxlU2VyaWFsaXplZFNj
cmlwdFZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNl
KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RUeXBlZGVmcyogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiaW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVl
Iik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSBpbXBsLmltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpID8g
aW1wbC5pbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUoKS0+ZGVzZXJpYWxpemUoc3RhdGUs
IGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCAwKSA6IGpzTnVsbCgpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTI0MywxMCArMjQ1LDEwIEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdFR5cGVkZWZzQ29uc3RydWN0b3JUZXN0U3ViT2JqKEV4ZWNTdGF0ZSogc3RhdGUs
IEpTT2JqZWN0KiBzCiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0o
c2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwotICAgIGF1dG8qIGNhc3Rl
ZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihzbG90QmFzZSk7Ci0gICAgSlNUZXN0VHlw
ZWRlZnMqIGNhc3RlZFRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
c09iamVjdCkpCisgICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJUZXN0U3ViT2JqIik7CisgICAgfQogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0U3ViT2JqOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+
dm0oKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIApAQCAtMjU3LDggKzI1OSw5
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24o
RXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKKyAgICB9
CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuYXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb24oZWMpKTsKQEAgLTI3Myw4ICsyNzYsOSBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RUeXBlZGVmc0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEpT
T2JqZWN0KgogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewog
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZz
IiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBs
LmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKQEAgLTI4Nyw4ICsyOTEsOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVm
c1N0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEpTTwogICAg
IFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAg
ICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVk
ZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ0F0
dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CisgICAgfQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5zdHJpbmdBdHRyV2l0aEdldHRl
ckV4Y2VwdGlvbihlYykpOwpAQCAtMzAzLDggKzMwOCw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dFR5cGVkZWZzU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwg
SlNPCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0VHlwZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAg
ICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAi
c3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0
aENhY2hlKHN0YXRlLCBpbXBsLnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKCkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUuY3BwCmluZGV4IGFjN2Fk
ODA4ZWQwNDAzYzc0MjgxZWZiNzI2M2ViNDc0MWUzYjdmYTIuLjRlZDY3MTYwZGU3ODllYzYxODA3
YjRhMThiNGJhZTdhNzY2M2Q1MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcApAQCAtMTE4LDggKzExOCw5IEBA
IEVuY29kZWRKU1ZhbHVlIGpzYXR0cmlidXRlUmVhZG9ubHkoRXhlY1N0YXRlKiBzdGF0ZSwgSlNP
YmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU2F0dHJpYnV0ZSogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNhdHRyaWJ1dGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJh
dHRyaWJ1dGUiLCAicmVhZG9ubHkiKTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0
YXRlLCBpbXBsLnJlYWRvbmx5KCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCA1NGRhZjBhNDg5ODczODFlNzhhZTQxMjI3MzQwY2QzMzNkZDA5OTRhLi44YjI0
MmI3ZjUzZTM4ZTI0NzM3N2E4YzdlYzkzNjgzZjJhNGZhMWQxIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjcg
QEAKIDIwMTYtMDItMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAorICAgICAg
ICBJbnN0YW5jZSBwcm9wZXJ0eSBnZXR0ZXJzIC8gc2V0dGVycyBjYW5ub3QgYmUgY2FsbGVkIG9u
IGFub3RoZXIgaW5zdGFuY2Ugb2YgdGhlIHNhbWUgdHlwZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzODk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9kb20vc2NyaXB0LXRlc3RzL3NoYWRvdy1u
YXZpZ2F0b3ItZ2VvbG9jYXRpb24taW4tc3RyaWN0LW1vZGUtZG9lcy1ub3QtdGhyb3cuanM6Cisg
ICAgICAgICoganMvZG9tL3NoYWRvdy1uYXZpZ2F0b3ItZ2VvbG9jYXRpb24taW4tc3RyaWN0LW1v
ZGUtZG9lcy1ub3QtdGhyb3ctZXhwZWN0ZWQudHh0OgorICAgICAgICBFeHRlbmQgdGhpcyBsYXlv
dXQgdGVzdCBjb3ZlcmFnZSB0byBjb3ZlciB0aGUgZ2V0dGVyIGNhc2UgaW4gYWRkaXRpb24gdG8g
dGhlCisgICAgICAgIHNldHRlciBjYXNlLiBUaGlzIHRlc3QgY292ZXJzIHRoZSBjb21wYXRpYmls
aXR5IG1vZGUgd2hlcmUgd2UgZG9uJ3QgdGhyb3cuCisgICAgICAgIEkgbWFkZSBzdXJlIHRvIG1h
aW50YWluIHRoaXMgYmVoYXZpb3Igd2hlbiByZWZhY3RvcmluZyB0aGUgYmluZGluZ3MgdG8gYXZv
aWQKKyAgICAgICAgYnJlYWthZ2UuCisKKyAgICAgICAgKiBqcy9pbnN0YW5jZS1wcm9wZXJ0eS1n
ZXR0ZXItb3RoZXItaW5zdGFuY2UtZXhwZWN0ZWQudHh0OgorICAgICAgICBSZWJhc2VsaW5lIG5v
dyB0aGF0IHRoaXMgdGVzdCBwYXNzZXMuCisKKyAgICAgICAgKiBqcy9pbnN0YW5jZS1wcm9wZXJ0
eS1zZXR0ZXItb3RoZXItaW5zdGFuY2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBq
cy9pbnN0YW5jZS1wcm9wZXJ0eS1zZXR0ZXItb3RoZXItaW5zdGFuY2UuaHRtbDogQWRkZWQuCisg
ICAgICAgIEFkZCB0ZXN0IHRvIGNvdmVyIHRoZSBzZXR0ZXIgY2FzZS4KKworCisyMDE2LTAyLTA0
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAgT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcigpIHJldHVybnMgaW5jb21wbGV0ZSBkZXNjcmlwdG9yIGZvciBp
bnN0YW5jZSBwcm9wZXJ0aWVzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTM4MTcKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL3Njcmlw
dC10ZXN0cy9zaGFkb3ctbmF2aWdhdG9yLWdlb2xvY2F0aW9uLWluLXN0cmljdC1tb2RlLWRvZXMt
bm90LXRocm93LmpzIGIvTGF5b3V0VGVzdHMvanMvZG9tL3NjcmlwdC10ZXN0cy9zaGFkb3ctbmF2
aWdhdG9yLWdlb2xvY2F0aW9uLWluLXN0cmljdC1tb2RlLWRvZXMtbm90LXRocm93LmpzCmluZGV4
IDhlNmVjNmVlNTJhMmQyMDMyMTQwODliZWU3Mzg5OWJiMGFiYmU3MDkuLjVlZWQzMTA2YWFhNzJl
M2RhMzQ0MjYzODk0YWJmNzQzN2I1N2Y4YjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2Rv
bS9zY3JpcHQtdGVzdHMvc2hhZG93LW5hdmlnYXRvci1nZW9sb2NhdGlvbi1pbi1zdHJpY3QtbW9k
ZS1kb2VzLW5vdC10aHJvdy5qcworKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vc2NyaXB0LXRlc3Rz
L3NoYWRvdy1uYXZpZ2F0b3ItZ2VvbG9jYXRpb24taW4tc3RyaWN0LW1vZGUtZG9lcy1ub3QtdGhy
b3cuanMKQEAgLTEsMyArMSw1IEBACisndXNlIHN0cmljdCc7CisKIGRlc2NyaXB0aW9uKCJUZXN0
cyB0aGF0IHdlIGRvbid0IHRocm93IGEgdHlwZSBlcnJvciBpbiBzdHJpY3QgbW9kZSB3aGVuIGFz
c2lnbmluZyB0byBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgdGhhdCBzaGFkb3dzIG5hdmlnYXRvci5n
ZW9sb2NhdGlvbi4gU2VlIDxhIGhyZWY9J2h0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzM1NTknPmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzM1NTk8L2E+Iik7CiAKIGZ1bmN0aW9uIGNyZWF0ZU9iamVjdFdpdGhQcm90b3R5cGUocHJvdG90
eXBlKQpAQCAtNyw2ICs5LDkgQEAgZnVuY3Rpb24gY3JlYXRlT2JqZWN0V2l0aFByb3RvdHlwZShw
cm90b3R5cGUpCiAgICAgcmV0dXJuIG5ldyBGKCk7CiB9CiAKLXNob3VsZE5vdFRocm93KCIndXNl
IHN0cmljdCc7IHZhciBteU5hdmlnYXRvciA9IGNyZWF0ZU9iamVjdFdpdGhQcm90b3R5cGUod2lu
ZG93Lm5hdmlnYXRvcik7IG15TmF2aWdhdG9yLmdlb2xvY2F0aW9uID0gMSIpOwordmFyIG15TmF2
aWdhdG9yID0gY3JlYXRlT2JqZWN0V2l0aFByb3RvdHlwZSh3aW5kb3cubmF2aWdhdG9yKQorc2hv
dWxkQmUoIm15TmF2aWdhdG9yLmdlb2xvY2F0aW9uIiwgIm5hdmlnYXRvci5nZW9sb2NhdGlvbiIp
Oworc2hvdWxkTm90VGhyb3coIm15TmF2aWdhdG9yLmdlb2xvY2F0aW9uID0gMSIpOworc2hvdWxk
QmUoIm15TmF2aWdhdG9yLmdlb2xvY2F0aW9uIiwgIm5hdmlnYXRvci5nZW9sb2NhdGlvbiIpOwog
CiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
anMvZG9tL3NoYWRvdy1uYXZpZ2F0b3ItZ2VvbG9jYXRpb24taW4tc3RyaWN0LW1vZGUtZG9lcy1u
b3QtdGhyb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvZG9tL3NoYWRvdy1uYXZpZ2F0
b3ItZ2VvbG9jYXRpb24taW4tc3RyaWN0LW1vZGUtZG9lcy1ub3QtdGhyb3ctZXhwZWN0ZWQudHh0
CmluZGV4IDI4MjE1M2ZkNWJmNjE3YzkzZmExNTI4Y2E5Njc4NzU2MWQ1YTg1ZGQuLjU3NjZiZDVh
OGQyYTkxNzcxOWFlNWJiZTI1ZmRkYmNmYzE4OGJlYzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2pzL2RvbS9zaGFkb3ctbmF2aWdhdG9yLWdlb2xvY2F0aW9uLWluLXN0cmljdC1tb2RlLWRvZXMt
bm90LXRocm93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vc2hhZG93LW5h
dmlnYXRvci1nZW9sb2NhdGlvbi1pbi1zdHJpY3QtbW9kZS1kb2VzLW5vdC10aHJvdy1leHBlY3Rl
ZC50eHQKQEAgLTEsMTAgKzEsMTQgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyMTg6IERlcHJl
Y2F0ZWQgYXR0ZW1wdCB0byBhY2Nlc3MgcHJvcGVydHkgJ2dlb2xvY2F0aW9uJyBvbiBhIG5vbi1O
YXZpZ2F0b3Igb2JqZWN0LgogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDU4ODogRGVwcmVjYXRlZCBh
dHRlbXB0IHRvIHNldCBwcm9wZXJ0eSAnZ2VvbG9jYXRpb24nIG9uIGEgbm9uLU5hdmlnYXRvciBv
YmplY3QuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjE4OiBEZXByZWNhdGVkIGF0dGVtcHQgdG8g
YWNjZXNzIHByb3BlcnR5ICdnZW9sb2NhdGlvbicgb24gYSBub24tTmF2aWdhdG9yIG9iamVjdC4K
IFRlc3RzIHRoYXQgd2UgZG9uJ3QgdGhyb3cgYSB0eXBlIGVycm9yIGluIHN0cmljdCBtb2RlIHdo
ZW4gYXNzaWduaW5nIHRvIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSB0aGF0IHNoYWRvd3MgbmF2aWdh
dG9yLmdlb2xvY2F0aW9uLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEzMzU1OQogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotUEFTUyAndXNlIHN0
cmljdCc7IHZhciBteU5hdmlnYXRvciA9IGNyZWF0ZU9iamVjdFdpdGhQcm90b3R5cGUod2luZG93
Lm5hdmlnYXRvcik7IG15TmF2aWdhdG9yLmdlb2xvY2F0aW9uID0gMSBkaWQgbm90IHRocm93IGV4
Y2VwdGlvbi4KK1BBU1MgbXlOYXZpZ2F0b3IuZ2VvbG9jYXRpb24gaXMgbmF2aWdhdG9yLmdlb2xv
Y2F0aW9uCitQQVNTIG15TmF2aWdhdG9yLmdlb2xvY2F0aW9uID0gMSBkaWQgbm90IHRocm93IGV4
Y2VwdGlvbi4KK1BBU1MgbXlOYXZpZ2F0b3IuZ2VvbG9jYXRpb24gaXMgbmF2aWdhdG9yLmdlb2xv
Y2F0aW9uCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2luc3RhbmNlLXByb3BlcnR5LWdldHRlci1vdGhl
ci1pbnN0YW5jZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9pbnN0YW5jZS1wcm9wZXJ0
eS1nZXR0ZXItb3RoZXItaW5zdGFuY2UtZXhwZWN0ZWQudHh0CmluZGV4IDcwZTk5NzExODkxNTlm
MzkwOWQyOTA5NDAzODA4OTU5ZjE2N2NjYTMuLmZlZTAxNmJiN2EzZmMxMjdhNTJmZjBjMDQ4ZTAz
MjNlMmUxNjY2NGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2luc3RhbmNlLXByb3BlcnR5
LWdldHRlci1vdGhlci1pbnN0YW5jZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMv
aW5zdGFuY2UtcHJvcGVydHktZ2V0dGVyLW90aGVyLWluc3RhbmNlLWV4cGVjdGVkLnR4dApAQCAt
Nyw3ICs3LDcgQEAgUEFTUyBsb2NhdGlvbkdldHRlciBpcyBhbiBpbnN0YW5jZSBvZiBmdW5jdGlv
biBGdW5jdGlvbigpIHsKICAgICBbbmF0aXZlIGNvZGVdCiB9CiBQQVNTIGxvY2F0aW9uR2V0dGVy
LmNhbGwob3RoZXJXaW5kb3cuZG9jdW1lbnQpLnRvU3RyaW5nKCkgaXMgImFib3V0OmJsYW5rIgot
RkFJTCBsb2NhdGlvbkdldHRlci5jYWxsKHdpbmRvdy5kb2N1bWVudCkgPT09IHdpbmRvdy5kb2N1
bWVudC5sb2NhdGlvbiBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZhbHNlLgorUEFTUyBsb2NhdGlvbkdl
dHRlci5jYWxsKHdpbmRvdy5kb2N1bWVudCkgPT09IHdpbmRvdy5kb2N1bWVudC5sb2NhdGlvbiBp
cyB0cnVlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2luc3RhbmNlLXByb3BlcnR5LXNldHRlci1vdGhl
ci1pbnN0YW5jZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9pbnN0YW5jZS1wcm9wZXJ0
eS1zZXR0ZXItb3RoZXItaW5zdGFuY2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0YjY2OWM2
NjM1N2EzNjMwNTk5MjY1ZDg1NmY5Y2FmZWVlZmQ5MWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9qcy9pbnN0YW5jZS1wcm9wZXJ0eS1zZXR0ZXItb3RoZXItaW5zdGFuY2UtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1Rlc3RzIHRoYXQgY2FsbGluZyBhbiBpbnN0YW5jZSBw
cm9wZXJ0eSBzZXR0ZXIgb24gYW5vdGhlciBpbnN0YW5jZSB3b3JrcyBhcyBleHBlY3RlZAorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBsb2NhdGlvblNldHRlciBpcyBhbiBp
bnN0YW5jZSBvZiBmdW5jdGlvbiBGdW5jdGlvbigpIHsKKyAgICBbbmF0aXZlIGNvZGVdCit9CitQ
QVNTIGZyYW1lc1swXS5kb2N1bWVudC5sb2NhdGlvbi50b1N0cmluZygpIGlzICJhYm91dDpibGFu
ayIKK2xvY2F0aW9uU2V0dGVyLmNhbGwoZnJhbWVzWzBdLmRvY3VtZW50LCAncmVzb3VyY2VzL3Bh
c3MtYW5kLWZpbmlzaC5odG1sJykKK1BBU1MgQ2hhbmdlZCBpZnJhbWUgZG9jdW1lbnQncyBsb2Nh
dGlvbgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2luc3RhbmNlLXByb3BlcnR5LXNldHRlci1vdGhl
ci1pbnN0YW5jZS5odG1sIGIvTGF5b3V0VGVzdHMvanMvaW5zdGFuY2UtcHJvcGVydHktc2V0dGVy
LW90aGVyLWluc3RhbmNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjcxMzFmNTgwYjU3OTQ5MzI2MTQyMDQ4
YTUwYjU2ZWIwZGY3NGQxZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2luc3Rh
bmNlLXByb3BlcnR5LXNldHRlci1vdGhlci1pbnN0YW5jZS5odG1sCkBAIC0wLDAgKzEsMjQgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8aWZyYW1lIGlkPSJzdWJm
cmFtZSIgc3JjPSJhYm91dDpibGFuayI+PC9pZnJhbWU+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24o
IlRlc3RzIHRoYXQgY2FsbGluZyBhbiBpbnN0YW5jZSBwcm9wZXJ0eSBzZXR0ZXIgb24gYW5vdGhl
ciBpbnN0YW5jZSB3b3JrcyBhcyBleHBlY3RlZCIpOworanNUZXN0SXNBc3luYyA9IHRydWU7CisK
K2Z1bmN0aW9uIHByaW50U3VjY2Vzc0FuZEZpbmlzaCgpCit7CisgICAgdGVzdFBhc3NlZCgiQ2hh
bmdlZCBpZnJhbWUgZG9jdW1lbnQncyBsb2NhdGlvbiIpOworICAgIGZpbmlzaEpTVGVzdCgpOwor
fQorCitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBsb2NhdGlvblNldHRlciA9IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod2luZG93LmRvY3VtZW50LCAibG9jYXRpb24iKS5zZXQ7
CisgICAgc2hvdWxkQmVUeXBlKCJsb2NhdGlvblNldHRlciIsIEZ1bmN0aW9uKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImZyYW1lc1swXS5kb2N1bWVudC5sb2NhdGlvbi50b1N0cmluZygp
IiwgImFib3V0OmJsYW5rIik7CisgICAgZXZhbEFuZExvZygibG9jYXRpb25TZXR0ZXIuY2FsbChm
cmFtZXNbMF0uZG9jdW1lbnQsICdyZXNvdXJjZXMvcGFzcy1hbmQtZmluaXNoLmh0bWwnKSIpOwor
fQorPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZXNvdXJjZXMv
cGFzcy1hbmQtZmluaXNoLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9yZXNvdXJjZXMvcGFzcy1hbmQt
ZmluaXNoLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTgzYjk5MmU2OTRlYjUyOWE4NzYwYTA0NzA0ZWU1NmJi
ODhkZjk1YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Jlc291cmNlcy9wYXNz
LWFuZC1maW5pc2guaHRtbApAQCAtMCwwICsxLDMgQEAKKzxzY3JpcHQ+CitwYXJlbnQucHJpbnRT
dWNjZXNzQW5kRmluaXNoKCk7Cis8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270775</attachid>
            <date>2016-02-05 15:17:30 -0800</date>
            <delta_ts>2016-02-05 16:18:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153895-20160205151707.patch</filename>
            <type>text/plain</type>
            <size>84959</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2MTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDkxYWM5NWM2NWUxNTYx
MGEwMjE4Njg0MTE2MzMzMzk4NmYzYTZlOC4uZDg1NDUyNjkxNjY5ZWExMzM2Y2I2ZTllNTBkM2Mx
NDA4NzUwMGJlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE2LTAyLTA1ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW5zdGFuY2UgcHJvcGVydHkg
Z2V0dGVycyAvIHNldHRlcnMgY2Fubm90IGJlIGNhbGxlZCBvbiBhbm90aGVyIGluc3RhbmNlIG9m
IHRoZSBzYW1lIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1Mzg5NQorCisgICAgICAgIFJldmlld2VkIGJ5IEdhdmluIEJhcnJhY2xvdWdoLgor
CisgICAgICAgIEl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBjYWxsIGluc3RhbmNlIHByb3BlcnR5
IGdldHRlcnMgLyBzZXR0ZXJzIG9uCisgICAgICAgIG90aGVyIGluc3RhbmNlcyBvZiB0aGUgc2Ft
ZSB0eXBlLCBhcyBwZXIgdGhlIFdFQiBJREwgc3BlY2lmaWNhdGlvbjoKKyAgICAgICAgLSBodHRw
Oi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2Rmbi1hdHRyaWJ1dGUtZ2V0dGVyCisgICAgICAg
IC0gaHR0cDovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNkZm4tYXR0cmlidXRlLXNldHRlcgor
CisgICAgICAgIFRoaXMgbWF0Y2hlcyB0aGUgYmVoYXZpb3Igb2YgRmlyZWZveC4KKworICAgICAg
ICBUaGUgaXNzdWUgd2l0aG91dCBvdXIgYmluZGluZ3Mgd2FzIHRoYXQgdGhlIGdldHRlcnMgLyBz
ZXR0ZXJzIHdlcmUKKyAgICAgICAgdXNpbmcgfHNsb3RCYXNlfCBpbnN0ZWFkIG9mIHx0aGlzVmFs
dWV8IGFuZCB0aGVyZWZvcmUgZW5kZWQgdXAgdXNpbmcKKyAgICAgICAgdGhlIGluc3RhbmNlIHRo
ZSBnZXR0ZXIgd2FzIHRha2VuIGZyb20gaW5zdGVhZCBvZiB0aGUgYWN0dWFsIHRhcmdldAorICAg
ICAgICBvYmplY3QuCisKKyAgICAgICAgVGVzdDoKKyAgICAgICAganMvaW5zdGFuY2UtcHJvcGVy
dHktZ2V0dGVyLW90aGVyLWluc3RhbmNlLmh0bWwKKyAgICAgICAganMvaW5zdGFuY2UtcHJvcGVy
dHktc2V0dGVyLW90aGVyLWluc3RhbmNlLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6
CisgICAgICAgIC0gSGF2ZSBpbnN0YW5jZSBnZXR0ZXJzIC8gc2V0dGVycyB1c2UgdGhpc1ZhbHVl
IGluc3RlYWQgb2Ygc2xvdEJhc2UuCisgICAgICAgIC0gSW4gdGhlIGNhc2Ugb2YgaW50ZXJmYWNl
cyB0aGF0IGhhdmUgYXR0cmlidXRlcyBvbiB0aGUgaW5zdGFuY2UgZm9yCisgICAgICAgICAgY29t
cGF0aWJpbGl0eSByZWFzb25zLCB0cnkgdGhlIHByb3RvdHlwZSBvYmplY3QgaWYgfHRoaXNWYWx1
ZXwgZG9lcworICAgICAgICAgIGRvZXMgaGF2ZSB0aGUgcmlnaHQgdHlwZSwgaW5zdGVhZCBvZiB1
c2luZyBzbG90QmFzZSBsaWtlIHByZXZpb3VzbHkuCisgICAgICAgICAgSSBiZWxpZXZlIHRoaXMg
bWFpbnRhaW5zIHRoZSBvcmlnaW5hbCBjb21wYXRpYmlsaXR5IGludGVudGlvbiB3aGlsZQorICAg
ICAgICAgIGFsc28gYmVoYXZpbmcgY29ycmVjdGx5IHdoZW4gY2FsbGVkIG9uIGFub3RoZXIgaW5z
dGFuY2UuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZl
RE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV4Y2VwdGlvbi5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHA6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcDoKKyAgICAgICAgUmVi
YXNlbGluZSBiaW5kaW5ncyB0ZXN0cy4KKwogMjAxNi0wMi0wNSAgQnJhZHkgRWlkc29uICA8YmVp
ZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW9kZXJuIElEQjogVW5pcXVlSURCRGF0YWJhc2Un
cyBtX2RhdGFiYXNlSW5mbyBpcyB1bnNhZmVseSB1c2VkIGZyb20gbXVsdGlwbGUgdGhyZWFkcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0KaW5kZXggZTE2YjQ5MjljMmQ0ZjkwNmY5MGZkZDAyZThhMzdlNGQ3YTdmYmEyOC4uYjRjMmE4
NTM4YmY5YzdiYTI5MTM2Y2FhNTc2MTc3NTM3NmM2NmVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTIyODUsMjcgKzIy
ODUsMjggQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7XG4iKTsKICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpO1xuIik7CiAg
ICAgICAgICAgICBpZiAoISRhdHRyaWJ1dGUtPmlzU3RhdGljIHx8ICRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0b3IkLykgewotICAgICAgICAgICAgICAgIG15ICR2YXJp
YWJsZUZvclR5cGVDaGVjayA9ICJjYXN0ZWRUaGlzIjsKICAgICAgICAgICAgICAgICBpZiAoJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVByb3h5VG9KU09iamVjdCJ9KSB7
CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8qIGNhc3Rl
ZFRoaXMgPSB0byR7Y2xhc3NOYW1lfShKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7XG4iKTsK
LSAgICAgICAgICAgICAgICB9IGVsc2lmIChBdHRyaWJ1dGVTaG91bGRCZU9uSW5zdGFuY2UoJGlu
dGVyZmFjZSwgJGF0dHJpYnV0ZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgIyBGSVhNRTogVGhp
cyBkb2VzIG5vdCBzZWVtIHJpZ2h0LCB3ZSBzaG91bGQgbGlrZWx5IHVzZSB0aGlzVmFsdWUgaW5z
dGVhZCBvZiBzbG90QmFzZSBoZXJlIHRvIG1hdGNoIHRoZSBzcGVjaWZpY2F0aW9uOgotICAgICAg
ICAgICAgICAgICAgICAjIGh0dHA6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZuLWF0dHJp
YnV0ZS1nZXR0ZXIKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
YXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKUyR7aW50ZXJmYWNlTmFtZX0qPihzbG90QmFzZSk7
XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFz
c05hbWV9KiBjYXN0ZWRUaGlzT2JqZWN0ID0gIiAuIEdldENhc3RpbmdIZWxwZXJGb3JUaGlzT2Jq
ZWN0KCRpbnRlcmZhY2UpIC4gIihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7XG4iKTsKLSAg
ICAgICAgICAgICAgICAgICAgJHZhcmlhYmxlRm9yVHlwZUNoZWNrID0gImNhc3RlZFRoaXNPYmpl
Y3QiOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogY2FzdGVkVGhpcyA9ICIgLiBHZXRDYXN0
aW5nSGVscGVyRm9yVGhpc09iamVjdCgkaW50ZXJmYWNlKSAuICIoSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpO1xuIik7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICMgRklY
TUU6IEdldHRlcnMgb24gYSBnbG9iYWwgc2hvdWxkIG5vdCByZXF1aXJlIGFuIGV4cGxpY2l0IHRo
aXMuCi0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKFVOTElLRUxZ
KCEkdmFyaWFibGVGb3JUeXBlQ2hlY2spKVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkge1xuIik7CiAgICAgICAg
ICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkxlbmllbnRUaGlzIn0pIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7XG4iKTsKICAg
ICAgICAgICAgICAgICB9IGVsc2lmIChJbnRlcmZhY2VSZXF1aXJlc0F0dHJpYnV0ZXNPbkluc3Rh
bmNlRm9yQ29tcGF0aWJpbGl0eSgkaW50ZXJmYWNlKSkgeworICAgICAgICAgICAgICAgICAgICAj
IEZhbGxiYWNrIHRvIHRyeWluZyB0byBzZWFyY2hpbmcgdGhlIHByb3RvdHlwZSBjaGFpbiBmb3Ig
Y29tcGF0aWJpbGl0eSByZWFzb25zLgorICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKS5nZXRPYmplY3QoKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAgICAgZm9yICh0aGlzT2JqZWN0ID0gdGhpc09iamVjdCA/IHRoaXNPYmpl
Y3QtPnByb3RvdHlwZSgpLmdldE9iamVjdCgpIDogbnVsbHB0cjsgdGhpc09iamVjdDsgdGhpc09i
amVjdCA9IHRoaXNPYmplY3QtPnByb3RvdHlwZSgpLmdldE9iamVjdCgpKSB7XG4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICAgICBpZiAoKGNhc3Rl
ZFRoaXMgPSAiIC4gR2V0Q2FzdGluZ0hlbHBlckZvclRoaXNPYmplY3QoJGludGVyZmFjZSkgLiAi
KHRoaXNPYmplY3QpKSlcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgICAgICAgICBicmVhaztcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgfVxuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICBpZiAoIWNhc3RlZFRoaXMpXG4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCBcIiRpbnRlcmZhY2VOYW1lXCIsIFwiJG5hbWVcIik7XG4iKTsK
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJlcG9ydERl
cHJlY2F0ZWRHZXR0ZXJFcnJvcigqc3RhdGUsIFwiJGludGVyZmFjZU5hbWVcIiwgXCIkbmFtZVwi
KTtcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCBcIiRpbnRlcmZhY2VOYW1lXCIsIFwiJG5hbWVcIik7XG4iKTsKICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIG15IEBhcmd1bWVudHMgPSAoKTsKQEAgLTI2MjIsMjAg
KzI2MjMsMjMgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VE
X1BBUkFNKGJhc2VPYmplY3QpO1xuIik7CiAgICAgICAgICAgICBpZiAoISRhdHRyaWJ1dGUtPmlz
U3RhdGljKSB7Ci0gICAgICAgICAgICAgICAgbXkgJHZhcmlhYmxlRm9yVHlwZUNoZWNrID0gImNh
c3RlZFRoaXMiOwogICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQ3VzdG9tUHJveHlUb0pTT2JqZWN0In0pIHsKICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiBjYXN0ZWRUaGlzID0gdG8ke2Ns
YXNzTmFtZX0oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpO1xuIik7Ci0gICAgICAgICAgICAg
ICAgfSBlbHNpZiAoQXR0cmlidXRlU2hvdWxkQmVPbkluc3RhbmNlKCRpbnRlcmZhY2UsICRhdHRy
aWJ1dGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1
dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlMke2ludGVyZmFjZU5hbWV9Kj4oYmFzZU9iamVjdCk7
XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFz
c05hbWV9KiBjYXN0ZWRUaGlzT2JqZWN0ID0gIiAuIEdldENhc3RpbmdIZWxwZXJGb3JUaGlzT2Jq
ZWN0KCRpbnRlcmZhY2UpIC4gIihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7XG4iKTsKLSAg
ICAgICAgICAgICAgICAgICAgJHZhcmlhYmxlRm9yVHlwZUNoZWNrID0gImNhc3RlZFRoaXNPYmpl
Y3QiOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogY2FzdGVkVGhpcyA9ICIgLiBHZXRDYXN0
aW5nSGVscGVyRm9yVGhpc09iamVjdCgkaW50ZXJmYWNlKSAuICIoSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpO1xuIik7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGlmIChVTkxJS0VMWSghJHZhcmlhYmxlRm9yVHlwZUNoZWNrKSkg
e1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkge1xuIik7CiAgICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUt
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkxlbmllbnRUaGlzIn0pIHsKICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybjtcbiIpOwog
ICAgICAgICAgICAgICAgIH0gZWxzaWYgKEludGVyZmFjZVJlcXVpcmVzQXR0cmlidXRlc09uSW5z
dGFuY2VGb3JDb21wYXRpYmlsaXR5KCRpbnRlcmZhY2UpKSB7CisgICAgICAgICAgICAgICAgICAg
ICMgRmFsbGJhY2sgdG8gdHJ5aW5nIHRvIHNlYXJjaGluZyB0aGUgcHJvdG90eXBlIGNoYWluIGZv
ciBjb21wYXRpYmlsaXR5IHJlYXNvbnMuCisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpLmdldE9iamVjdCgpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICBmb3IgKHRoaXNPYmplY3QgPSB0aGlzT2JqZWN0ID8gdGhpc09i
amVjdC0+cHJvdG90eXBlKCkuZ2V0T2JqZWN0KCkgOiBudWxscHRyOyB0aGlzT2JqZWN0OyB0aGlz
T2JqZWN0ID0gdGhpc09iamVjdC0+cHJvdG90eXBlKCkuZ2V0T2JqZWN0KCkpIHtcbiIpOworICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgICAgIGlmICgoY2Fz
dGVkVGhpcyA9ICIgLiBHZXRDYXN0aW5nSGVscGVyRm9yVGhpc09iamVjdCgkaW50ZXJmYWNlKSAu
ICIodGhpc09iamVjdCkpKVxuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICAgICAgICAgIGJyZWFrO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICB9XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIGlmICghY2FzdGVkVGhpcylcbiIpOworICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgICAgIHJldHVybiB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsIFwiJGludGVyZmFjZU5hbWVcIiwgXCIkbmFtZVwiKTtcbiIp
OwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmVwb3J0
RGVwcmVjYXRlZFNldHRlckVycm9yKCpzdGF0ZSwgXCIkaW50ZXJmYWNlTmFtZVwiLCBcIiRuYW1l
XCIpO1xuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
XCIkaW50ZXJmYWNlTmFtZVwiLCBcIiRuYW1lXCIpO1xuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVE
T01PYmplY3QuY3BwCmluZGV4IDI1ZDZjZTJlYjBkODFmOGYwNjRjNmRhMDU1ZWY0NzBiY2IxYzc4
ZmEuLjA2MTFkZjNmMjY2MTY0MTM0MWEwODA2OGY1ZTVkYjc0ZTg5NTAwNTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01P
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCkBAIC0xNDksMTAgKzE0OSwxMCBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RBY3RpdmVET01PYmplY3RFeGNpdGluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNPYmplY3QqIHNsbwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKLSAgICBhdXRvKiBjYXN0
ZWRUaGlzID0ganNDYXN0PEpTVGVzdEFjdGl2ZURPTU9iamVjdCo+KHNsb3RCYXNlKTsKLSAgICBK
U1Rlc3RBY3RpdmVET01PYmplY3QqIGNhc3RlZFRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdEFjdGl2ZURPTU9iamVjdCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXNPYmplY3QpKQorICAgIEpTVGVzdEFjdGl2ZURPTU9iamVj
dCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Kj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RBY3Rp
dmVET01PYmplY3QiLCAiZXhjaXRpbmdBdHRyIik7CisgICAgfQogICAgIGlmICghQmluZGluZ1Nl
Y3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KHN0YXRlLCBjYXN0ZWRUaGlzLT53
cmFwcGVkKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RXZlbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggY2EwNmM4ZDllYzgxZjJlYjBmZTIwMWI0YzI1MGQ5
MDU2OTc3ODk5My4uMzY3MDY1MTAwNzljYmQxMjJiMzA2MTk1YTBmZThhYjVmMjk4YjgxMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcApAQCAtMTYyLDggKzE2Miw5IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0b3JBdHRyMShFeGVjU3RhdGUqIHN0YXRl
LCBKU09iamVjdCogc2xvdEJhc2UsCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdEV2ZW50Q29uc3RydWN0b3IiLCAiYXR0cjEiKTsKKyAgICB9
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJl
c3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmF0dHIxKCkpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE3Niw4ICsxNzcsOSBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9yQXR0cjIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmpl
Y3QqIHNsb3RCYXNlLAogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvciogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RFdmVudENvbnN0cnVjdG9yIiwgImF0dHIyIik7CisgICAgfQogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5hdHRyMigpKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCmluZGV4IGEwZTc2ODM5YmQ3
YjM2MzE0YTUxNTBkMDhlN2E3Y2VjMTdmNWJkODkuLjA5MzQ2ZTNjNDk4MWQxODU4MDFlNDkyNTdj
ZDkzZmRjMTJkNzNlMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCkBAIC0xMzksMTAgKzEzOSwx
MCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFeGNlcHRpb25OYW1lKEV4ZWNTdGF0ZSogc3RhdGUs
IEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
LSAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdEV4Y2VwdGlvbio+KHNsb3RCYXNl
KTsKLSAgICBKU1Rlc3RFeGNlcHRpb24qIGNhc3RlZFRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdEV4Y2VwdGlvbio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXNPYmplY3QpKQorICAgIEpTVGVzdEV4Y2VwdGlvbiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXhjZXB0aW9uKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RFeGNlcHRpb24iLCAibmFtZSIp
OworICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwubmFtZSgpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCmlu
ZGV4IGJmODUwODBkOTAwMzYzNzM2ZGE4MjgzOGQ3NDUzZWIwMTM0NDRjZjQuLmM5MTI2ODIxOGJj
NjMwZWQzYmNiODJhM2I3ZWUxM2I3NGE4Y2FkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCkBA
IC00MzQsOCArNDM0LDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW1wbGVtZW50
c1N0cjEoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXMKICAgICBVTlVTRURfUEFS
QU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdElu
dGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzU3RyMSIp
OworICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuaW1wbGVtZW50c1N0
cjEoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtNDUwLDggKzQ1
MSw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIyKEV4ZWNT
dGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNl
KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c1N0cjIiKTsKKyAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmltcGxlbWVudHNTdHIyKCkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTQ2Niw4ICs0NjgsOSBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMyhFeGVjU3RhdGUqIHN0YXRl
LCBKU09iamVjdCogc2xvdEJhcwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNTdHIzIik7CisgICAgfQogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+aW1wbGVtZW50c1N0cjMoKnN0YXRlKSk7CiB9CiAK
QEAgLTQ4MCw4ICs0ODMsOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1l
bnRzTm9kZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhcwogICAgIFVOVVNFRF9Q
QVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0
SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJv
d0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNOb2Rl
Iik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwg
V1RGOjpnZXRQdHIoaW1wbC5pbXBsZW1lbnRzTm9kZSgpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwpAQCAtNTIwLDggKzUyNCw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjEoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNs
b3RCCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdEludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2Ui
LCAic3VwcGxlbWVudGFsU3RyMSIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3Rh
dGUsIFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbFN0cjEoaW1wbCkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTUzNiw4ICs1NDEsOSBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIyKEV4ZWNTdGF0ZSog
c3RhdGUsIEpTT2JqZWN0KiBzbG90QgogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbFN0cjIiKTsKKyAgICB9CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
U3RyaW5nV2l0aENhY2hlKHN0YXRlLCBXZWJDb3JlOjpUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVt
ZW50YWxTdHIyKGltcGwpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBA
IC01NTIsOCArNTU4LDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVu
dGFsU3RyMyhFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEIKICAgICBVTlVTRURfUEFS
QU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdElu
dGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxTdHIz
Iik7CisgICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+c3VwcGxl
bWVudGFsU3RyMygqc3RhdGUpKTsKIH0KIApAQCAtNTY2LDggKzU3Myw5IEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbE5vZGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNP
YmplY3QqIHNsb3RCCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFS
QU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJ
bnRlcmZhY2UiLCAic3VwcGxlbWVudGFsTm9kZSIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwg
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKFdlYkNvcmU6OlRlc3RTdXBw
bGVtZW50YWw6OnN1cHBsZW1lbnRhbE5vZGUoaW1wbCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNw
cAppbmRleCA3MjBhOTkzMmNiY2I0ZjU1MTFiMWU2ZDY2MThlNjllYTA4MWYxOWU0Li5iNTdmNWI4
MmMyZGJlZTlmYzJmOTRjZDUwYWQxY2U2MWJlNmRhM2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RK
U0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKQEAgLTEzMSw4ICsxMzEsOSBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRlc3RBdHRyaWJ1dGVDdXN0b20oRXhlY1N0YXRl
KiBzdGF0ZSwgSgogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yIiwgInRlc3RBdHRyaWJ1dGVD
dXN0b20iKTsKKyAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT50
ZXN0QXR0cmlidXRlQ3VzdG9tKCpzdGF0ZSkpOwogfQogCkBAIC0xNDMsOCArMTQ0LDkgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXR0cmlidXRlUldDdXN0
b20oRXhlY1N0YXRlKiBzdGF0ZSwKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcio+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciIsICJ0ZXN0
QXR0cmlidXRlUldDdXN0b20iKTsKKyAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
YXN0ZWRUaGlzLT50ZXN0QXR0cmlidXRlUldDdXN0b20oKnN0YXRlKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNw
cAppbmRleCA4MjJhMmU0N2NhMzYyNDE3ZTk0M2Y4MTQ1ZjgxODhlNjI4YTgwNGQwLi4zMWE4NzA0
ZGQ3MTU2NmRiYzFlMDdmNTE4ODc3YmI1NDlkNDc1Zjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCkBAIC0xMjIs
OCArMTIyLDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9kZU5hbWUoRXhlY1N0YXRlKiBzdGF0
ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWwKICAgICBVTlVTRURfUEFSQU0oc2xv
dEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE5vZGUqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vZGUqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0Tm9kZSIsICJuYW1lIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNo
ZShzdGF0ZSwgaW1wbC5uYW1lKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcAppbmRleCAzMWYxZDNjZmY3MTJk
MWFhOTQ4ZmJiMWVlMWZkZGVmZTBkY2UyYjVkLi5kNjAxNzM0NGU0NTMzZTA4NmQyZGRmNzYyNDk4
NGRhZmFjNDIzYjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwCkBAIC0x
NDMsOCArMTQzLDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRl
dGVybWluaXN0aWNSZWFkb25seUF0dHIoRXhlY1N0YXRlKiBzdGEKICAgICBVTlVTRURfUEFSQU0o
c2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE5vbmRl
dGVybWluaXN0aWMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vbmRldGVybWlu
aXN0aWMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIs
ICJub25kZXRlcm1pbmlzdGljUmVhZG9ubHlBdHRyIik7CisgICAgfQogI2lmIEVOQUJMRShXRUJf
UkVQTEFZKQogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzdGF0ZS0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpOwogICAgIElucHV0Q3Vyc29yJiBjdXJzb3IgPSBnbG9iYWxPYmplY3Qt
PmlucHV0Q3Vyc29yKCk7CkBAIC0xNzcsOCArMTc4LDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNXcml0ZWFibGVBdHRyKEV4ZWNTdGF0ZSog
c3QKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVGVzdE5vbmRldGVybWluaXN0aWMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE5vbmRldGVybWluaXN0aWMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0ciIpOwor
ICAgIH0KICNpZiBFTkFCTEUoV0VCX1JFUExBWSkKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBJbnB1dEN1cnNvciYg
Y3Vyc29yID0gZ2xvYmFsT2JqZWN0LT5pbnB1dEN1cnNvcigpOwpAQCAtMjExLDggKzIxMyw5IEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljRXhj
ZXB0aW9uQXR0cihFeGVjU3RhdGUqIHN0CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3ROb25kZXRlcm1pbmlzdGljKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5p
c3RpY0V4Y2VwdGlvbkF0dHIiKTsKKyAgICB9CiAjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCiAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCk7CiAgICAgSW5wdXRDdXJzb3ImIGN1cnNvciA9IGdsb2JhbE9iamVjdC0+aW5wdXRDdXJzb3Io
KTsKQEAgLTI0NSw4ICsyNDgsOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlz
dGljTm9uZGV0ZXJtaW5pc3RpY0dldHRlckV4Y2VwdGlvbkF0dHIoRXhlY1N0YQogICAgIFVOVVNF
RF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNU
ZXN0Tm9uZGV0ZXJtaW5pc3RpYyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9u
ZGV0ZXJtaW5pc3RpYyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1p
bmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRyIik7CisgICAgfQog
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogI2lmIEVOQUJMRShXRUJfUkVQTEFZKQogICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
OwpAQCAtMjgzLDggKzI4Nyw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0
aWNOb25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0cihFeGVjU3RhCiAgICAgVU5VU0VE
X1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rl
c3ROb25kZXRlcm1pbmlzdGljKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb25k
ZXRlcm1pbmlzdGljKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5vbmRldGVybWlu
aXN0aWMiLCAibm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIiKTsKKyAgICB9CiAj
aWYgRU5BQkxFKFdFQl9SRVBMQVkpCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgSW5wdXRDdXJzb3ImIGN1cnNvciA9
IGdsb2JhbE9iamVjdC0+aW5wdXRDdXJzb3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggOTI4NzQwMDBkNjg0
ZDFlODJkNTdkY2FjZWZlY2Y4NDBjMGQwYzI2YS4uMGYyODhhMWY2OTJhZTA2NDhmODkzMDc3MjNm
YzZiMjcxMGUzYTcxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTc0OCw4ICs3NDgsOSBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpSZWFkT25seUxvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0
KiBzbG90QmFzZSwgRQogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAg
ICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlYWRP
bmx5TG9uZ0F0dHIiKTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwucmVhZE9ubHlMb25nQXR0
cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC03NjIsOCArNzYz
LDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVhZE9ubHlTdHJpbmdBdHRyKEV4ZWNTdGF0
ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2Up
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJyZWFkT25seVN0cmluZ0F0dHIiKTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0
aENhY2hlKHN0YXRlLCBpbXBsLnJlYWRPbmx5U3RyaW5nQXR0cigpKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC03NzYsOCArNzc4LDkgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUmVhZE9ubHlUZXN0T2JqQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCog
c2xvdEJhc2UKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0
aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWFkT25seVRl
c3RPYmpBdHRyIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxP
YmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC5yZWFkT25seVRlc3RPYmpBdHRyKCkpKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC04MDksMTAgKzgxMiwxMCBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvclRlc3RTdWJPYmooRXhlY1N0YXRlKiBzdGF0
ZSwgSlNPYmplY3QqIHNsb3RCYQogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKLSAgICBhdXRv
KiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KHNsb3RCYXNlKTsKLSAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXNPYmplY3Qp
KQorICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAiVGVzdFN1Yk9iaiIpOworICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
VGVzdFN1Yk9iajo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpKSk7CiB9CiAKQEAgLTgyMiwxMCArODI1LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBz
dGF0ZSwKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFz
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7Ci0gICAgYXV0byogY2FzdGVkVGhpcyA9
IGpzQ2FzdDxKU1Rlc3RPYmoqPihzbG90QmFzZSk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzT2JqZWN0KSkKKyAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIlRlc3RTdWJP
YmpFbmFibGVkQnlTZXR0aW5nIik7CisgICAgfQogICAgIGlmICghY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpLmZyYW1lKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAgICAgU2V0dGluZ3MmIHNldHRpbmdzID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpLmZyYW1l
KCktPnNldHRpbmdzKCk7CkBAIC04NDEsOCArODQ0LDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqRW51bUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVk
SlMKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJlbnVtQXR0ciIpOworICAg
IH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuZW51bUF0dHIoKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtODU1LDggKzg1OSw5IEBAIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9iakJ5dGVBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBz
bG90QmFzZSwgRW5jb2RlZEpTCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVT
RURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
ICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
Ynl0ZUF0dHIiKTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuYnl0ZUF0dHIoKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtODY5LDggKzg3NCw5IEBAIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9iak9jdGV0QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCog
c2xvdEJhc2UsIEVuY29kZWRKCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVT
RURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
ICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
b2N0ZXRBdHRyIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLm9jdGV0QXR0cigpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC04ODMsOCArODg5LDkgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqU2hvcnRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0
KiBzbG90QmFzZSwgRW5jb2RlZEoKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJzaG9ydEF0dHIiKTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuc2hvcnRBdHRyKCkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTg5Nyw4ICs5MDQsOSBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpVbnNpZ25lZFNob3J0QXR0cihFeGVjU3RhdGUqIHN0YXRl
LCBKU09iamVjdCogc2xvdEJhc2UsCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAidW5zaWduZWRTaG9ydEF0dHIiKTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwudW5zaWdu
ZWRTaG9ydEF0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAt
OTExLDggKzkxOSw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakxvbmdBdHRyKEV4ZWNTdGF0
ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTCiAgICAgVU5VU0VEX1BBUkFN
KHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAibG9uZ0F0dHIiKTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGlt
cGwubG9uZ0F0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAt
OTI1LDggKzkzNCw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakxvbmdMb25nQXR0cihFeGVj
U3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kCiAgICAgVU5VU0VEX1BBUkFN
KHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAibG9uZ0xvbmdBdHRyIik7CisgICAgfQogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJl
cihpbXBsLmxvbmdMb25nQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CkBAIC05MzksOCArOTQ5LDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVW5zaWduZWRM
b25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXMKICAgICBVTlVT
RURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIpOworICAg
IH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNOdW1iZXIoaW1wbC51bnNpZ25lZExvbmdMb25nQXR0cigpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC05NTMsOCArOTY0LDkgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqU3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xv
dEJhc2UsIEVuY29kZWQKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJp
bmdBdHRyIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5zdHJp
bmdBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTk2Nyw4
ICs5NzksOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpUZXN0T2JqQXR0cihFeGVjU3RhdGUq
IHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZQogICAgIFVOVVNFRF9QQVJBTShzbG90
QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgInRlc3RPYmpBdHRyIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC50ZXN0T2JqQXR0cigp
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtOTgxLDggKzk5NCw5
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakxlbmllbnRUZXN0T2JqQXR0cihFeGVjU3RhdGUq
IHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
LSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
KyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6
OmdldFB0cihpbXBsLmxlbmllbnRUZXN0T2JqQXR0cigpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwpAQCAtOTk1LDggKzEwMDksOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpYTUxPYmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5j
b2RlZAogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNW
YWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIlhNTE9iakF0dHIiKTsK
KyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6
OmdldFB0cihpbXBsLnhtbE9iakF0dHIoKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKQEAgLTEwMDksOCArMTAyNCw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNy
ZWF0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhCiAg
ICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY3JlYXRlIik7CisgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSBqc0Jvb2xlYW4oaW1wbC5pc0NyZWF0ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CkBAIC0xMDIzLDggKzEwMzksOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpS
ZWFkT25seVN5bWJvbEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLAog
ICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJv
d0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlYWRPbmx5U3ltYm9sQXR0ciIp
OworICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0gU3ltYm9sOjpjcmVhdGUoc3RhdGUtPnZtKCksICooaW1wbC5yZWFkT25s
eVN5bWJvbEF0dHIoKSkudWlkKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKQEAgLTEwNDcsOCArMTA2NCw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3Rl
ZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlCiAgICAgVU5V
U0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkU3RyaW5nQXR0ciIpOworICAg
IH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuZmFzdEdldEF0dHJpYnV0ZShX
ZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHN0cmluZ2F0dHJBdHRyKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTA2MSw4ICsxMDc5LDkgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUmVmbGVjdGVkSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpT
T2JqZWN0KiBzbG90QmEKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZs
ZWN0ZWRJbnRlZ3JhbEF0dHIiKTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuZ2V0SW50ZWdy
YWxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRpbnRlZ3JhbGF0dHJBdHRy
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTA3NSw4ICsxMDk0
LDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0
dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2Up
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ciIpOworICAgIH0KICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNOdW1iZXIoc3RkOjptYXgoMCwgaW1wbC5nZXRJbnRlZ3JhbEF0dHJpYnV0ZShXZWJDb3JlOjpI
VE1MTmFtZXM6OnJlZmxlY3RlZHVuc2lnbmVkaW50ZWdyYWxhdHRyQXR0cikpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xMDg5LDggKzExMDksOSBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRCb29sZWFuQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBK
U09iamVjdCogc2xvdEJhcwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAg
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJl
ZmxlY3RlZEJvb2xlYW5BdHRyIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4oaW1wbC5mYXN0SGFz
QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkYm9vbGVhbmF0dHJBdHRyKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTEwMyw4ICsxMTI0LDkg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkVVJMQXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEUKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwot
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJyZWZsZWN0ZWRVUkxBdHRyIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNo
ZShzdGF0ZSwgaW1wbC5nZXRVUkxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0
ZWR1cmxhdHRyQXR0cikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAg
LTExMTcsOCArMTEzOSw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFN0cmlu
Z0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlCiAgICAgVU5VU0VEX1BB
UkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkU3RyaW5nQXR0ciIpOworICAgIH0KICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuZmFzdEdldEF0dHJpYnV0ZShXZWJDb3Jl
OjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRTdHJpbmdBdHRyQXR0cikpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTExMzEsOCArMTE1NCw5IEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0cihFeGVjU3RhdGUqIHN0YXRl
LCBKU09iamVjdCoKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJB
TSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0
ZWRDdXN0b21JbnRlZ3JhbEF0dHIiKTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuZ2V0SW50
ZWdyYWxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50SW50ZWdyYWxB
dHRyQXR0cikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTExNDUs
OCArMTE2OSw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbUJvb2xl
YW5BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzCiAgICAgVU5VU0VEX1BBUkFNKHNs
b3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIiKTsKKyAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzQm9vbGVhbihpbXBsLmZhc3RIYXNBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpj
dXN0b21Db250ZW50Qm9vbGVhbkF0dHJBdHRyKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwpAQCAtMTE1OSw4ICsxMTg0LDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UmVmbGVjdGVkQ3VzdG9tVVJMQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEIK
ICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRDdXN0b21VUkxB
dHRyIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5nZXRVUkxB
dHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50VVJMQXR0ckF0dHIpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xMTczLDggKzExOTksOSBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpUeXBlZEFycmF5QXR0cihFeGVjU3RhdGUqIHN0YXRl
LCBKU09iamVjdCogc2xvdEJhc2UsIEVuYwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0g
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgInR5cGVkQXJyYXlBdHRyIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC50eXBlZEFycmF5QXR0cigpKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTE4Nyw4ICsxMjE0LDkg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0
YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3QKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwot
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOworICAgIH0KICAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5hdHRyV2l0aEdldHRlckV4Y2VwdGlvbihl
YykpOwpAQCAtMTIwMyw4ICsxMjMxLDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cldp
dGhHZXR0ZXJFeGNlcHRpb25XaXRoTWVzc2FnZShFeGVjU3RhdGUqIHN0YXRlLCBKU08KICAgICBV
TlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbldp
dGhNZXNzYWdlIik7CisgICAgfQogICAgIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSBlYzsKICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNOdW1iZXIoaW1wbC5hdHRyV2l0aEdldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlKGVjKSk7
CkBAIC0xMjE5LDggKzEyNDgsOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyV2l0aFNl
dHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdAogICAgIFVOVVNF
RF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7Cisg
ICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKCkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEyMzMsOCArMTI2Myw5IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2Uo
RXhlY1N0YXRlKiBzdGF0ZSwgSlNPCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRpb25XaXRoTWVzc2FnZSIpOworICAgIH0KICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNO
dW1iZXIoaW1wbC5hdHRyV2l0aFNldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlKCkpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEyNDcsOCArMTI3OCw5IEBAIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0
ZSogc3RhdGUsIEpTT2JqZWN0CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVT
RURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
ICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKKyAgICB9CiAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLnN0cmluZ0F0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uKGVjKSk7CkBAIC0xMjYzLDggKzEyOTUsOSBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0
YXRlLCBKU09iamVjdAogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAg
ICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmlu
Z0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNo
ZShzdGF0ZSwgaW1wbC5zdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbigpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xMjc3LDggKzEzMTAsOSBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpTdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUoRXhlY1N0YXRlKiBz
dGF0ZSwgSlNPYmplY3QqCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURf
UEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3Ry
aWN0VHlwZUNoZWNraW5nQXR0cmlidXRlIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC5zdHJpY3RUeXBlQ2hlY2tp
bmdBdHRyaWJ1dGUoKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAg
LTEyOTEsOCArMTMyNSw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakN1c3RvbUF0dHIoRXhl
Y1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkCiAgICAgVU5VU0VEX1BB
UkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY3VzdG9tQXR0ciIpOworICAgIH0KICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmN1c3RvbUF0dHIoKnN0YXRlKSk7CiB9CiAKQEAg
LTEzMDMsOCArMTMzOCw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak9uZm9vKEV4ZWNTdGF0
ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsCiAgICAgVU5VU0VEX1BB
UkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib25mb28iKTsKKyAgICB9CiAgICAgVU5VU0VEX1BBUkFN
KHN0YXRlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV2ZW50SGFuZGxlckF0dHJpYnV0
ZShjYXN0ZWRUaGlzLT53cmFwcGVkKCksIGV2ZW50TmFtZXMoKS5mb29FdmVudCkpOwogfQpAQCAt
MTMxNiw4ICsxMzUyLDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdFN0YXRl
QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG8KICAgICBVTlVTRURfUEFS
QU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUiKTsKKyAgICB9
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJl
c3VsdCA9IGpzTnVtYmVyKGltcGwud2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKCpzdGF0ZSkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEzMzAsOCArMTM2Nyw5IEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0
cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAid2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUiKTsKKyAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzTnVtYmVyKGltcGwud2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUo
KnN0YXRlKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTM0NCw4
ICsxMzgyLDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlMKICAgICBVTlVTRURfUEFSQU0oc2xv
dEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSIpOwor
ICAgIH0KICAgICBhdXRvKiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKICAgICBpZiAoIXNjcmlwdENvbnRleHQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xMzYxLDggKzE0MDAsOSBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNPYmplYwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRT
dGF0ZUF0dHJpYnV0ZVJhaXNlcyIpOworICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRy
KGltcGwud2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKCpzdGF0ZSwgZWMpKSk7CkBAIC0x
Mzc3LDggKzE0MTcsOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyhFeGVjU3RhdGUqIHN0YQogICAgIFVOVVNFRF9QQVJB
TShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRl
UmFpc2VzIik7CisgICAgfQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGF1dG8qIHNj
cmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEds
b2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghc2NyaXB0
Q29udGV4dCkKQEAgLTEzOTYsOCArMTQzNyw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoRXhlY1N0CiAg
ICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIpOworICAgIH0KICAgICBhdXRvKiBzY3JpcHRD
b250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxP
YmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlwdENvbnRl
eHQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0x
NDEzLDggKzE0NTUsOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKAogICAgIFVOVVNFRF9QQVJB
TShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGVBdHRyaWJ1dGVSYWlzZXMiKTsKKyAgICB9CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CiAgICAgYXV0byogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0
YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAg
ICAgaWYgKCFzY3JpcHRDb250ZXh0KQpAQCAtMTQzMiw4ICsxNDc1LDkgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhT
cGFjZXNBdHRyaWIKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJB
TSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSIpOwor
ICAgIH0KICAgICBhdXRvKiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKICAgICBpZiAoIXNjcmlwdENvbnRleHQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xNDQ5LDggKzE0OTMsOSBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKEV4ZWNTdGF0
ZSogc3RhdAogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRB
cmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUiKTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUs
IGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLndpdGhTY3JpcHRB
cmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUoKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKQEAgLTE0NjQsOCArMTUwOSw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9iakNvbmRpdGlvbmFsQXR0cjEoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNl
LCBFCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRy
MSIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5jb25kaXRpb25hbEF0dHIxKCkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE0ODAsOCArMTUyNiw5IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjIoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNPYmplY3QqIHNsb3RCYXNlLCBFCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAiY29uZGl0aW9uYWxBdHRyMiIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5jb25kaXRp
b25hbEF0dHIyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE0
OTYsOCArMTU0Myw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjMo
RXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFCiAgICAgVU5VU0VEX1BBUkFN
KHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyMyIpOworICAgIH0KICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNO
dW1iZXIoaW1wbC5jb25kaXRpb25hbEF0dHIzKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKQEAgLTE1MTEsMTAgKzE1NTksMTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqQ29uZGl0aW9uYWxBdHRyNENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0
KgogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKLSAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganND
YXN0PEpTVGVzdE9iaio+KHNsb3RCYXNlKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXNPYmpl
Y3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXNPYmplY3QpKQorICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxB
dHRyNCIpOworICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE9iamVjdEE6
OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSkp
OwogfQogCkBAIC0xNTI2LDEwICsxNTc0LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNv
bmRpdGlvbmFsQXR0cjVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCoKICAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7Ci0gICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxK
U1Rlc3RPYmoqPihzbG90QmFzZSk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzT2JqZWN0ID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0g
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzT2JqZWN0KSkKKyAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjUi
KTsKKyAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RPYmplY3RCOjpnZXRD
b25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0K
IApAQCAtMTU0MSwxMCArMTU4OSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRp
b25hbEF0dHI2Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqCiAgICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNF
RF9QQVJBTSh0aGlzVmFsdWUpOwotICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0
T2JqKj4oc2xvdEJhc2UpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpc09iamVjdCA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpc09iamVjdCkpCisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHI2Iik7Cisg
ICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0T2JqZWN0Qzo6Z2V0Q29uc3Ry
dWN0b3Ioc3RhdGUtPnZtKCksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKQEAg
LTE1NTYsOCArMTYwNCw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNhY2hlZEF0dHJpYnV0
ZTEoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFCiAgICAgVU5VU0VEX1BB
UkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY2FjaGVkQXR0cmlidXRlMSIpOworICAgIH0KICAgICBp
ZiAoSlNWYWx1ZSBjYWNoZWRWYWx1ZSA9IGNhc3RlZFRoaXMtPm1fY2FjaGVkQXR0cmlidXRlMS5n
ZXQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWNoZWRWYWx1ZSk7CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKQEAgLTE1NzMsOCArMTYyMiw5IEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNhY2hlZEF0dHJpYnV0ZTIoRXhlY1N0YXRlKiBzdGF0
ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAiY2FjaGVkQXR0cmlidXRlMiIpOworICAgIH0KICAgICBpZiAoSlNWYWx1ZSBjYWNoZWRW
YWx1ZSA9IGNhc3RlZFRoaXMtPm1fY2FjaGVkQXR0cmlidXRlMi5nZXQoKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShjYWNoZWRWYWx1ZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKQEAgLTE1OTAsOCArMTY0MCw5IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iakFueUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2Us
IEVuY29kCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYW55QXR0cmlidXRl
Iik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSAoaW1wbC5hbnlBdHRyaWJ1dGUoKS5oYXNOb1ZhbHVlKCkgPyBqc051
bGwoKSA6IGltcGwuYW55QXR0cmlidXRlKCkuanNWYWx1ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xNjAzLDEwICsxNjU0LDEwIEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9iakNvbnRlbnREb2N1bWVudChFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xv
dEJhc2UsIEVuCiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0oc2xv
dEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwotICAgIGF1dG8qIGNhc3RlZFRo
aXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oc2xvdEJhc2UpOwotICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpc09iamVjdCkpCisgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb250
ZW50RG9jdW1lbnQiKTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNob3VsZEFsbG93QWNjZXNzVG9Ob2Rl
KHN0YXRlLCBpbXBsLmNvbnRlbnREb2N1bWVudCgpKSA/IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMt
Pmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLmNvbnRlbnREb2N1bWVudCgpKSkgOiBq
c051bGwoKSk7CiB9CkBAIC0xNjE4LDggKzE2NjksOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpNdXRhYmxlUG9pbnQoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNv
ZAogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1
ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm11dGFibGVQb2ludCIpOwor
ICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6
Z2V0UHRyKFNWR1N0YXRpY1Byb3BlcnR5VGVhck9mZjxUZXN0T2JqLCBTVkdQb2ludD46OmNyZWF0
ZShpbXBsLCBpbXBsLm11dGFibGVQb2ludCgpLCAmVGVzdE9iajo6dXBkYXRlTXV0YWJsZVBvaW50
KSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE2MzIsOCArMTY4
NCw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakltbXV0YWJsZVBvaW50KEV4ZWNTdGF0ZSog
c3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNl
KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAiaW1tdXRhYmxlUG9pbnQiKTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNh
c3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihTVkdQcm9wZXJ0eVRlYXJPZmY8
U1ZHUG9pbnQ+OjpjcmVhdGUoaW1wbC5pbW11dGFibGVQb2ludCgpKSkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE2NDYsOCArMTY5OSw5IEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialN0cmF3YmVycnkoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RC
YXNlLCBFbmNvZGVkCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFS
QU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyYXdi
ZXJyeSIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5ibHVlYmVycnkoKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTY2MCw4ICsxNzE0LDkgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqU3RyaWN0RmxvYXQoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3Qq
IHNsb3RCYXNlLCBFbmNvZGUKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNF
RF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewog
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJz
dHJpY3RGbG9hdCIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5zdHJpY3RGbG9hdCgpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xNjc0LDggKzE3MjksOSBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpEZXNjcmlwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBK
U09iamVjdCogc2xvdEJhc2UsIEVuY29kZQogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0g
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgImRlc2NyaXB0aW9uIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmRlc2NyaXB0
aW9uKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE2ODgsOCAr
MTc0NCw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iaklkKEV4ZWNTdGF0ZSogc3RhdGUsIEpT
T2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUKICAgICBVTlVTRURfUEFSQU0oc2xvdEJh
c2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJpZCIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5pZCgpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xNzAyLDggKzE3NTksOSBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpIYXNoKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBz
bG90QmFzZSwgRW5jb2RlZEpTVmFsdQogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgImhhc2giKTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmhh
c2goKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTcxNiw4ICsx
Nzc0LDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVwbGFjZWFibGVBdHRyaWJ1dGUoRXhl
Y1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXMKICAgICBVTlVTRURfUEFSQU0oc2xvdEJh
c2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJyZXBsYWNlYWJsZUF0dHJpYnV0ZSIpOworICAgIH0KICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1i
ZXIoaW1wbC5yZXBsYWNlYWJsZUF0dHJpYnV0ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CkBAIC0xNzMwLDggKzE3ODksOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpOdWxsYWJsZURvdWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xv
dAogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1
ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm51bGxhYmxlRG91YmxlQXR0
cmlidXRlIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b051bGxhYmxlSlNOdW1iZXIoaW1wbC5udWxsYWJsZURv
dWJsZUF0dHJpYnV0ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBA
IC0xNzQ0LDggKzE4MDQsOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUxvbmdB
dHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYQogICAgIFVOVVNFRF9Q
QVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm51bGxhYmxlTG9uZ0F0dHJpYnV0ZSIpOworICAgIH0K
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0gdG9OdWxsYWJsZUpTTnVtYmVyKGltcGwubnVsbGFibGVMb25nQXR0cmlidXRlKCkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE3NTgsOCArMTgxOSw5IEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZShFeGVjU3Rh
dGUqIHN0YXRlLCBKU09iamVjdCogc2xvCiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAibnVsbGFibGVCb29sZWFuQXR0cmlidXRlIik7CisgICAgfQogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4o
aW1wbC5udWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwpAQCAtMTc3Miw4ICsxODM0LDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqTnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNs
b3QKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJudWxsYWJsZVN0cmluZ0F0
dHJpYnV0ZSIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwubnVs
bGFibGVTdHJpbmdBdHRyaWJ1dGUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwpAQCAtMTc4Niw4ICsxODQ5LDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFi
bGVMb25nU2V0dGFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QKICAgICBV
TlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJp
YnV0ZSIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9OdWxsYWJsZUpTTnVtYmVyKGltcGwubnVsbGFibGVMb25n
U2V0dGFibGVBdHRyaWJ1dGUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OwpAQCAtMTgwMCw4ICsxODY0LDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVT
dHJpbmdWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UKICAgICBVTlVT
RURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJudWxsYWJsZVN0cmluZ1ZhbHVlIik7CisgICAg
fQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b051bGxhYmxlSlNOdW1iZXIoaW1w
bC5udWxsYWJsZVN0cmluZ1ZhbHVlKGVjKSk7CkBAIC0xODE2LDggKzE4ODEsOSBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNs
b3RCYXNlLCBFbmNvZGVkSgogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAg
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImF0
dHJpYnV0ZSIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuYXR0
cmlidXRlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE4MzAs
OCArMTg5Niw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJpYnV0ZVdpdGhSZXNlcnZl
ZEVudW1UeXBlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0CiAgICAgVU5VU0VEX1BBUkFNKHNs
b3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAiYXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUiKTsKKyAgICB9
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJl
c3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmF0dHJpYnV0ZVdpdGhSZXNlcnZl
ZEVudW1UeXBlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE4
NDQsOCArMTkxMSw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialB1dEZvcndhcmRzQXR0cmli
dXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzCiAgICAgVU5VU0VEX1BBUkFN
KHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAicHV0Rm9yd2FyZHNBdHRyaWJ1dGUiKTsKKyAgICB9CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBs
LnB1dEZvcndhcmRzQXR0cmlidXRlKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CkBAIC0xODU4LDggKzE5MjYsOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQdXRG
b3J3YXJkc051bGxhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KgogICAg
IFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
KyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInB1dEZvcndhcmRzTnVsbGFibGVBdHRy
aWJ1dGUiKTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpLCBXVEY6OmdldFB0cihpbXBsLnB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUoKSkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE5MDIsOSArMTk3MSw4IEBA
IHZvaWQgc2V0SlNUZXN0T2JqVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIHN0YXRlLCBKU09iamVjCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTShiYXNlT2JqZWN0KTsKLSAg
ICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGJhc2VPYmplY3QpOwotICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
c09iamVjdCkpIHsKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAiVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmciKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTI2OTAsOSArMjc1OCw4IEBAIHZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxB
dHRyNENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqCiB7CiAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVO
VVNFRF9QQVJBTShiYXNlT2JqZWN0KTsKLSAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpT
VGVzdE9iaio+KGJhc2VPYmplY3QpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpc09iamVjdCA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwot
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpc09iamVjdCkpIHsKKyAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyNCIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjcwNyw5ICsyNzc0LDggQEAgdm9pZCBzZXRKU1Rl
c3RPYmpDb25kaXRpb25hbEF0dHI1Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmpl
Y3QqIGJhc2VPYmoKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGJhc2VPYmplY3QpOwotICAgIGF1dG8qIGNhc3Rl
ZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYmFzZU9iamVjdCk7Ci0gICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzT2JqZWN0KSkgewor
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25k
aXRpb25hbEF0dHI1Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNzI0LDkgKzI3OTAs
OCBAQCB2b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjZDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iagogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0oYmFzZU9iamVjdCk7
Ci0gICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihiYXNlT2JqZWN0KTsK
LSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXNPYmplY3QpKSB7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjYiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZS5jcHAKaW5kZXggYjY3YjkyMWVjNGU3MDJmNDdkMDczZDc5YTM4Y2ZiNDIwYjA5Mjg1Yy4uYjFm
NjQxZjQ1YzNiMTNlY2NlNGI5MTFkZTA1MjRlODk3OGQ1YTI3OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTEzMyw4
ICsxMzMsOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2VWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iagogICAgIFVOVVNFRF9QQVJBTShzbG90
QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgInZhbHVlIik7CisgICAgfQog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBpbXBsLnZhbHVlKCkgPyBpbXBsLnZhbHVlKCktPmRlc2VyaWFsaXplKHN0YXRlLCBjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgMCkgOiBqc051bGwoKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xNDcsOCArMTQ4LDkgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUmVhZG9ubHlWYWx1ZShFeGVjU3RhdGUq
IHN0YXQKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZSIsICJyZWFkb25seVZhbHVlIik7CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBpbXBsLnJlYWRvbmx5VmFs
dWUoKSA/IGltcGwucmVhZG9ubHlWYWx1ZSgpLT5kZXNlcmlhbGl6ZShzdGF0ZSwgY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIDApIDoganNOdWxsKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwpAQCAtMTYxLDggKzE2Myw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhY2hlZFZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUs
CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVl
KTsKICAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UiLCAiY2FjaGVkVmFsdWUiKTsKKyAgICB9CiAgICAgaWYgKEpTVmFsdWUgY2FjaGVkVmFsdWUg
PSBjYXN0ZWRUaGlzLT5tX2NhY2hlZFZhbHVlLmdldCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGNhY2hlZFZhbHVlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwpAQCAtMTc4LDggKzE4MSw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVBvcnRzKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqCiAgICAg
VU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAg
ICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAi
cG9ydHMiKTsKKyAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQXJyYXkoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9i
amVjdCgpLCBpbXBsLnBvcnRzKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKQEAgLTE5Miw4ICsxOTYsOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2VDYWNoZWRSZWFkb25seVZhbHVlKEV4ZWNTdGF0ZQogICAgIFVOVVNF
RF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgImNhY2hl
ZFJlYWRvbmx5VmFsdWUiKTsKKyAgICB9CiAgICAgaWYgKEpTVmFsdWUgY2FjaGVkVmFsdWUgPSBj
YXN0ZWRUaGlzLT5tX2NhY2hlZFJlYWRvbmx5VmFsdWUuZ2V0KCkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY2FjaGVkVmFsdWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAppbmRleCA1ZjUxMDliMDlkZTcwYzc0NTcx
YjFlNTkzNzMyMjllZmQ0Y2JkZDVmLi5mOTRjYmJiMDJkYTc2NGE1MmFjM2ZiYmIzMWMyNDNkNjQw
N2E4YmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0VHlwZWRlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKQEAgLTIxNiw4ICsyMTYsOSBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Vuc2lnbmVkTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEpTT2JqZWN0KiBzbAogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwot
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dFR5cGVkZWZzIiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7CisgICAgfQogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJl
cihpbXBsLnVuc2lnbmVkTG9uZ0xvbmdBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKQEAgLTIzMCw4ICsyMzEsOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBl
ZGVmc0ltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBKUwog
ICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5
cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgImltbXV0
YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIpOworICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gaW1wbC5pbW11dGFibGVT
ZXJpYWxpemVkU2NyaXB0VmFsdWUoKSA/IGltcGwuaW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZh
bHVlKCktPmRlc2VyaWFsaXplKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgMCkg
OiBqc051bGwoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0yNDMs
MTAgKzI0NSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yVGVz
dFN1Yk9iaihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogcwogICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKLSAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdFR5cGVkZWZzKj4o
c2xvdEJhc2UpOwotICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzT2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXNPYmplY3QpKQorICAgIEpTVGVzdFR5cGVkZWZzKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CiAgICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiVGVz
dFN1Yk9iaiIpOworICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdFN1Yk9i
ajo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgp
KSk7CiB9CiAKQEAgLTI1Nyw4ICsyNTksOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVm
c0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KgogICAg
IFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAg
ICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVk
ZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgImF0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uIik7CisgICAgfQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSBqc051bWJlcihpbXBsLmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKGVjKSk7CkBAIC0yNzMsOCAr
Mjc2LDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNBdHRyV2l0aFNldHRlckV4Y2Vw
dGlvbihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCoKICAgICBVTlVTRURfUEFSQU0oc2xvdEJh
c2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdFR5cGVkZWZzKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwor
ICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5hdHRyV2l0aFNldHRlckV4Y2VwdGlvbigpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0yODcsOCArMjkxLDkgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihF
eGVjU3RhdGUqIHN0YXRlLCBKU08KICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RUeXBlZGVmcyIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOworICAgIH0K
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUs
IGltcGwuc3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oZWMpKTsKQEAgLTMwMyw4ICszMDgs
OSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoU2V0dGVyRXhj
ZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEpTTwogICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7
CisgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5zdHJpbmdBdHRyV2l0
aFNldHRlckV4Y2VwdGlvbigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNh
dHRyaWJ1dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
YXR0cmlidXRlLmNwcAppbmRleCBhYzdhZDgwOGVkMDQwM2M3NDI4MWVmYjcyNjNlYjQ3NDFlM2I3
ZmEyLi40ZWQ2NzE2MGRlNzg5ZWM2MTgwN2I0YTE4YjRiYWU3YTc2NjNkNTIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0
ZS5jcHAKQEAgLTExOCw4ICsxMTgsOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc2F0dHJpYnV0ZVJlYWRv
bmx5KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZAogICAgIFVO
VVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAg
SlNhdHRyaWJ1dGUqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTYXR0cmlidXRlKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiYXR0cmlidXRlIiwgInJlYWRvbmx5Iik7CisgICAgfQog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5yZWFkb25seSgpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODAwNGU3ZTUxNmVjOTUyZTE2ZjNm
OTgzZDI5ZTcwZGQyZGYzNzcxMS4uMzg4YzlhZjA0MjY0YzI5ODY4NjkzNDQ0YzYxMmJjNDhlMjFh
ZjhhMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE2LTAyLTA1ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW5zdGFuY2UgcHJvcGVydHkgZ2V0dGVycyAvIHNl
dHRlcnMgY2Fubm90IGJlIGNhbGxlZCBvbiBhbm90aGVyIGluc3RhbmNlIG9mIHRoZSBzYW1lIHR5
cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Mzg5
NQorCisgICAgICAgIFJldmlld2VkIGJ5IEdhdmluIEJhcnJhY2xvdWdoLgorCisgICAgICAgICog
anMvZG9tL3NjcmlwdC10ZXN0cy9zaGFkb3ctbmF2aWdhdG9yLWdlb2xvY2F0aW9uLWluLXN0cmlj
dC1tb2RlLWRvZXMtbm90LXRocm93LmpzOgorICAgICAgICAqIGpzL2RvbS9zaGFkb3ctbmF2aWdh
dG9yLWdlb2xvY2F0aW9uLWluLXN0cmljdC1tb2RlLWRvZXMtbm90LXRocm93LWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgRXh0ZW5kIHRoaXMgbGF5b3V0IHRlc3QgY292ZXJhZ2UgdG8gY292ZXIgdGhl
IGdldHRlciBjYXNlIGluIGFkZGl0aW9uIHRvIHRoZQorICAgICAgICBzZXR0ZXIgY2FzZS4gVGhp
cyB0ZXN0IGNvdmVycyB0aGUgY29tcGF0aWJpbGl0eSBtb2RlIHdoZXJlIHdlIGRvbid0IHRocm93
LgorICAgICAgICBJIG1hZGUgc3VyZSB0byBtYWludGFpbiB0aGlzIGJlaGF2aW9yIHdoZW4gcmVm
YWN0b3JpbmcgdGhlIGJpbmRpbmdzIHRvIGF2b2lkCisgICAgICAgIGJyZWFrYWdlLgorCisgICAg
ICAgICoganMvaW5zdGFuY2UtcHJvcGVydHktZ2V0dGVyLW90aGVyLWluc3RhbmNlLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgUmViYXNlbGluZSBub3cgdGhhdCB0aGlzIHRlc3QgcGFzc2VzLgorCisg
ICAgICAgICoganMvaW5zdGFuY2UtcHJvcGVydHktc2V0dGVyLW90aGVyLWluc3RhbmNlLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvaW5zdGFuY2UtcHJvcGVydHktc2V0dGVyLW90
aGVyLWluc3RhbmNlLmh0bWw6IEFkZGVkLgorICAgICAgICBBZGQgdGVzdCB0byBjb3ZlciB0aGUg
c2V0dGVyIGNhc2UuCisKKwogMjAxNi0wMi0wNSAgTmFuIFdhbmcgIDxuX3dhbmdAYXBwbGUuY29t
PgogCiAgICAgICAgIEFYOiBXZWJLaXQgaGFuZ2luZyB3aGVuIFZvaWNlT3ZlciBhdHRlbXB0cyB0
byBmb2N1cyBpbiBvbiBwYWdlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vc2NyaXB0
LXRlc3RzL3NoYWRvdy1uYXZpZ2F0b3ItZ2VvbG9jYXRpb24taW4tc3RyaWN0LW1vZGUtZG9lcy1u
b3QtdGhyb3cuanMgYi9MYXlvdXRUZXN0cy9qcy9kb20vc2NyaXB0LXRlc3RzL3NoYWRvdy1uYXZp
Z2F0b3ItZ2VvbG9jYXRpb24taW4tc3RyaWN0LW1vZGUtZG9lcy1ub3QtdGhyb3cuanMKaW5kZXgg
OGU2ZWM2ZWU1MmEyZDIwMzIxNDA4OWJlZTczODk5YmIwYWJiZTcwOS4uNWVlZDMxMDZhYWE3MmUz
ZGEzNDQyNjM4OTRhYmY3NDM3YjU3ZjhiOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvZG9t
L3NjcmlwdC10ZXN0cy9zaGFkb3ctbmF2aWdhdG9yLWdlb2xvY2F0aW9uLWluLXN0cmljdC1tb2Rl
LWRvZXMtbm90LXRocm93LmpzCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9zY3JpcHQtdGVzdHMv
c2hhZG93LW5hdmlnYXRvci1nZW9sb2NhdGlvbi1pbi1zdHJpY3QtbW9kZS1kb2VzLW5vdC10aHJv
dy5qcwpAQCAtMSwzICsxLDUgQEAKKyd1c2Ugc3RyaWN0JzsKKwogZGVzY3JpcHRpb24oIlRlc3Rz
IHRoYXQgd2UgZG9uJ3QgdGhyb3cgYSB0eXBlIGVycm9yIGluIHN0cmljdCBtb2RlIHdoZW4gYXNz
aWduaW5nIHRvIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSB0aGF0IHNoYWRvd3MgbmF2aWdhdG9yLmdl
b2xvY2F0aW9uLiBTZWUgPGEgaHJlZj0naHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzMzU1OSc+aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEz
MzU1OTwvYT4iKTsKIAogZnVuY3Rpb24gY3JlYXRlT2JqZWN0V2l0aFByb3RvdHlwZShwcm90b3R5
cGUpCkBAIC03LDYgKzksOSBAQCBmdW5jdGlvbiBjcmVhdGVPYmplY3RXaXRoUHJvdG90eXBlKHBy
b3RvdHlwZSkKICAgICByZXR1cm4gbmV3IEYoKTsKIH0KIAotc2hvdWxkTm90VGhyb3coIid1c2Ug
c3RyaWN0JzsgdmFyIG15TmF2aWdhdG9yID0gY3JlYXRlT2JqZWN0V2l0aFByb3RvdHlwZSh3aW5k
b3cubmF2aWdhdG9yKTsgbXlOYXZpZ2F0b3IuZ2VvbG9jYXRpb24gPSAxIik7Cit2YXIgbXlOYXZp
Z2F0b3IgPSBjcmVhdGVPYmplY3RXaXRoUHJvdG90eXBlKHdpbmRvdy5uYXZpZ2F0b3IpCitzaG91
bGRCZSgibXlOYXZpZ2F0b3IuZ2VvbG9jYXRpb24iLCAibmF2aWdhdG9yLmdlb2xvY2F0aW9uIik7
CitzaG91bGROb3RUaHJvdygibXlOYXZpZ2F0b3IuZ2VvbG9jYXRpb24gPSAxIik7CitzaG91bGRC
ZSgibXlOYXZpZ2F0b3IuZ2VvbG9jYXRpb24iLCAibmF2aWdhdG9yLmdlb2xvY2F0aW9uIik7CiAK
IHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gZmFsc2U7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9q
cy9kb20vc2hhZG93LW5hdmlnYXRvci1nZW9sb2NhdGlvbi1pbi1zdHJpY3QtbW9kZS1kb2VzLW5v
dC10aHJvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20vc2hhZG93LW5hdmlnYXRv
ci1nZW9sb2NhdGlvbi1pbi1zdHJpY3QtbW9kZS1kb2VzLW5vdC10aHJvdy1leHBlY3RlZC50eHQK
aW5kZXggMjgyMTUzZmQ1YmY2MTdjOTNmYTE1MjhjYTk2Nzg3NTYxZDVhODVkZC4uNTc2NmJkNWE4
ZDJhOTE3NzE5YWU1YmJlMjVmZGRiY2ZjMTg4YmVjNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
anMvZG9tL3NoYWRvdy1uYXZpZ2F0b3ItZ2VvbG9jYXRpb24taW4tc3RyaWN0LW1vZGUtZG9lcy1u
b3QtdGhyb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9zaGFkb3ctbmF2
aWdhdG9yLWdlb2xvY2F0aW9uLWluLXN0cmljdC1tb2RlLWRvZXMtbm90LXRocm93LWV4cGVjdGVk
LnR4dApAQCAtMSwxMCArMSwxNCBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIxODogRGVwcmVj
YXRlZCBhdHRlbXB0IHRvIGFjY2VzcyBwcm9wZXJ0eSAnZ2VvbG9jYXRpb24nIG9uIGEgbm9uLU5h
dmlnYXRvciBvYmplY3QuCiBDT05TT0xFIE1FU1NBR0U6IGxpbmUgNTg4OiBEZXByZWNhdGVkIGF0
dGVtcHQgdG8gc2V0IHByb3BlcnR5ICdnZW9sb2NhdGlvbicgb24gYSBub24tTmF2aWdhdG9yIG9i
amVjdC4KK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyMTg6IERlcHJlY2F0ZWQgYXR0ZW1wdCB0byBh
Y2Nlc3MgcHJvcGVydHkgJ2dlb2xvY2F0aW9uJyBvbiBhIG5vbi1OYXZpZ2F0b3Igb2JqZWN0Lgog
VGVzdHMgdGhhdCB3ZSBkb24ndCB0aHJvdyBhIHR5cGUgZXJyb3IgaW4gc3RyaWN0IG1vZGUgd2hl
biBhc3NpZ25pbmcgdG8gYW4gaW5zdGFuY2UgYXR0cmlidXRlIHRoYXQgc2hhZG93cyBuYXZpZ2F0
b3IuZ2VvbG9jYXRpb24uIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTMzNTU5CiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTICd1c2Ugc3Ry
aWN0JzsgdmFyIG15TmF2aWdhdG9yID0gY3JlYXRlT2JqZWN0V2l0aFByb3RvdHlwZSh3aW5kb3cu
bmF2aWdhdG9yKTsgbXlOYXZpZ2F0b3IuZ2VvbG9jYXRpb24gPSAxIGRpZCBub3QgdGhyb3cgZXhj
ZXB0aW9uLgorUEFTUyBteU5hdmlnYXRvci5nZW9sb2NhdGlvbiBpcyBuYXZpZ2F0b3IuZ2VvbG9j
YXRpb24KK1BBU1MgbXlOYXZpZ2F0b3IuZ2VvbG9jYXRpb24gPSAxIGRpZCBub3QgdGhyb3cgZXhj
ZXB0aW9uLgorUEFTUyBteU5hdmlnYXRvci5nZW9sb2NhdGlvbiBpcyBuYXZpZ2F0b3IuZ2VvbG9j
YXRpb24KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvaW5zdGFuY2UtcHJvcGVydHktZ2V0dGVyLW90aGVy
LWluc3RhbmNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2luc3RhbmNlLXByb3BlcnR5
LWdldHRlci1vdGhlci1pbnN0YW5jZS1leHBlY3RlZC50eHQKaW5kZXggNzBlOTk3MTE4OTE1OWYz
OTA5ZDI5MDk0MDM4MDg5NTlmMTY3Y2NhMy4uZmVlMDE2YmI3YTNmYzEyN2E1MmZmMGMwNDhlMDMy
M2UyZTE2NjY0YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvaW5zdGFuY2UtcHJvcGVydHkt
Z2V0dGVyLW90aGVyLWluc3RhbmNlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9p
bnN0YW5jZS1wcm9wZXJ0eS1nZXR0ZXItb3RoZXItaW5zdGFuY2UtZXhwZWN0ZWQudHh0CkBAIC03
LDcgKzcsNyBAQCBQQVNTIGxvY2F0aW9uR2V0dGVyIGlzIGFuIGluc3RhbmNlIG9mIGZ1bmN0aW9u
IEZ1bmN0aW9uKCkgewogICAgIFtuYXRpdmUgY29kZV0KIH0KIFBBU1MgbG9jYXRpb25HZXR0ZXIu
Y2FsbChvdGhlcldpbmRvdy5kb2N1bWVudCkudG9TdHJpbmcoKSBpcyAiYWJvdXQ6YmxhbmsiCi1G
QUlMIGxvY2F0aW9uR2V0dGVyLmNhbGwod2luZG93LmRvY3VtZW50KSA9PT0gd2luZG93LmRvY3Vt
ZW50LmxvY2F0aW9uIHNob3VsZCBiZSB0cnVlLiBXYXMgZmFsc2UuCitQQVNTIGxvY2F0aW9uR2V0
dGVyLmNhbGwod2luZG93LmRvY3VtZW50KSA9PT0gd2luZG93LmRvY3VtZW50LmxvY2F0aW9uIGlz
IHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvaW5zdGFuY2UtcHJvcGVydHktc2V0dGVyLW90aGVy
LWluc3RhbmNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2luc3RhbmNlLXByb3BlcnR5
LXNldHRlci1vdGhlci1pbnN0YW5jZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDRiNjY5YzY2
MzU3YTM2MzA1OTkyNjVkODU2ZjljYWZlZWVmZDkxYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2pzL2luc3RhbmNlLXByb3BlcnR5LXNldHRlci1vdGhlci1pbnN0YW5jZS1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxNSBAQAorVGVzdHMgdGhhdCBjYWxsaW5nIGFuIGluc3RhbmNlIHBy
b3BlcnR5IHNldHRlciBvbiBhbm90aGVyIGluc3RhbmNlIHdvcmtzIGFzIGV4cGVjdGVkCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGxvY2F0aW9uU2V0dGVyIGlzIGFuIGlu
c3RhbmNlIG9mIGZ1bmN0aW9uIEZ1bmN0aW9uKCkgeworICAgIFtuYXRpdmUgY29kZV0KK30KK1BB
U1MgZnJhbWVzWzBdLmRvY3VtZW50LmxvY2F0aW9uLnRvU3RyaW5nKCkgaXMgImFib3V0OmJsYW5r
IgorbG9jYXRpb25TZXR0ZXIuY2FsbChmcmFtZXNbMF0uZG9jdW1lbnQsICdyZXNvdXJjZXMvcGFz
cy1hbmQtZmluaXNoLmh0bWwnKQorUEFTUyBDaGFuZ2VkIGlmcmFtZSBkb2N1bWVudCdzIGxvY2F0
aW9uCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvaW5zdGFuY2UtcHJvcGVydHktc2V0dGVyLW90aGVy
LWluc3RhbmNlLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9pbnN0YW5jZS1wcm9wZXJ0eS1zZXR0ZXIt
b3RoZXItaW5zdGFuY2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNzEzMWY1ODBiNTc5NDkzMjYxNDIwNDhh
NTBiNTZlYjBkZjc0ZDFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvaW5zdGFu
Y2UtcHJvcGVydHktc2V0dGVyLW90aGVyLWluc3RhbmNlLmh0bWwKQEAgLTAsMCArMSwyNCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxpZnJhbWUgaWQ9InN1YmZy
YW1lIiBzcmM9ImFib3V0OmJsYW5rIj48L2lmcmFtZT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigi
VGVzdHMgdGhhdCBjYWxsaW5nIGFuIGluc3RhbmNlIHByb3BlcnR5IHNldHRlciBvbiBhbm90aGVy
IGluc3RhbmNlIHdvcmtzIGFzIGV4cGVjdGVkIik7Citqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwor
ZnVuY3Rpb24gcHJpbnRTdWNjZXNzQW5kRmluaXNoKCkKK3sKKyAgICB0ZXN0UGFzc2VkKCJDaGFu
Z2VkIGlmcmFtZSBkb2N1bWVudCdzIGxvY2F0aW9uIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9
CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGxvY2F0aW9uU2V0dGVyID0gT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcih3aW5kb3cuZG9jdW1lbnQsICJsb2NhdGlvbiIpLnNldDsK
KyAgICBzaG91bGRCZVR5cGUoImxvY2F0aW9uU2V0dGVyIiwgRnVuY3Rpb24pOworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiZnJhbWVzWzBdLmRvY3VtZW50LmxvY2F0aW9uLnRvU3RyaW5nKCki
LCAiYWJvdXQ6YmxhbmsiKTsKKyAgICBldmFsQW5kTG9nKCJsb2NhdGlvblNldHRlci5jYWxsKGZy
YW1lc1swXS5kb2N1bWVudCwgJ3Jlc291cmNlcy9wYXNzLWFuZC1maW5pc2guaHRtbCcpIik7Cit9
Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3Jlc291cmNlcy9w
YXNzLWFuZC1maW5pc2guaHRtbCBiL0xheW91dFRlc3RzL2pzL3Jlc291cmNlcy9wYXNzLWFuZC1m
aW5pc2guaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODNiOTkyZTY5NGViNTI5YTg3NjBhMDQ3MDRlZTU2YmI4
OGRmOTViCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVzb3VyY2VzL3Bhc3Mt
YW5kLWZpbmlzaC5odG1sCkBAIC0wLDAgKzEsMyBAQAorPHNjcmlwdD4KK3BhcmVudC5wcmludFN1
Y2Nlc3NBbmRGaW5pc2goKTsKKzwvc2NyaXB0Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>