<?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>200326</bug_id>
          
          <creation_ts>2019-07-31 17:10:46 -0700</creation_ts>
          <short_desc>Split testb3 into multiple files</short_desc>
          <delta_ts>2019-08-01 10:01:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1557454</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-07-31 17:10:46 -0700</bug_when>
    <thetext>Split testb3 into multiple files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557455</commentid>
    <comment_count>1</comment_count>
      <attachid>375269</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-07-31 17:11:11 -0700</bug_when>
    <thetext>Created attachment 375269
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557457</commentid>
    <comment_count>2</comment_count>
      <attachid>375270</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-07-31 17:16:07 -0700</bug_when>
    <thetext>Created attachment 375270
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557459</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-07-31 17:20:38 -0700</bug_when>
    <thetext>Attachment 375270 did not pass style-queue:

ERROR: Source/JavaScriptCore/b3/testb3_3.cpp:1871:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_3.cpp:1871:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_3.cpp:1962:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/b3/testb3_3.cpp:1964:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/b3/testb3_3.cpp:1967:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/b3/testb3_3.cpp:2712:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_3.cpp:2713:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_3.cpp:2733:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_3.cpp:2734:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_3.cpp:2751:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_3.cpp:2752:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_3.cpp:2771:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_3.cpp:2772:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_3.cpp:2823:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_3.cpp:2841:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_3.cpp:2842:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_3.cpp:2862:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_3.cpp:2863:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_3.cpp:2880:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_3.cpp:2881:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_3.cpp:2900:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_3.cpp:2901:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_1.cpp:1050:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_1.cpp:1051:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_1.cpp:1052:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_1.cpp:1053:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_1.cpp:1054:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_1.cpp:1055:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_1.cpp:1056:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_1.cpp:1057:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_1.cpp:1058:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_1.cpp:1059:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_1.cpp:1060:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.h:93:  Do not use &apos;using namespace JSC;&apos;.  [build/using_namespace] [4]
ERROR: Source/JavaScriptCore/b3/testb3.h:94:  Do not use &apos;using namespace JSC::B3;&apos;.  [build/using_namespace] [4]
ERROR: Source/JavaScriptCore/b3/testb3.h:713:  The parameter name &quot;rep&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/testb3.h:717:  The parameter name &quot;rep&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/testb3.h:816:  The parameter name &quot;opcode&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/testb3.h:817:  The parameter name &quot;opcode&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/testb3_7.cpp:379:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/JavaScriptCore/b3/testb3_7.cpp:1433:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:46:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:72:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:80:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:97:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:106:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:125:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:135:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:162:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:162:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:163:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:183:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:183:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:213:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:246:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:246:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:247:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:247:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:248:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:249:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:250:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:296:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:296:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:298:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:298:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:300:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:302:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:304:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:353:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:353:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:355:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:355:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:357:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:359:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:361:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:419:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:419:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:421:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:421:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:423:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:425:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:427:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:503:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:505:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:507:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:509:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:511:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:514:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:516:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:518:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:520:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:522:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:541:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:544:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:579:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:582:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:617:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:656:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:691:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:752:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:772:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:776:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:785:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:789:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:815:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:819:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:828:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:832:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:861:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:861:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:862:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:894:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:894:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:895:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:915:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:918:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:954:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:999:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:1039:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:1100:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:1118:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:1150:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:1187:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:1230:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:1278:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:1281:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:1314:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:1375:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:1395:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:1399:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:1408:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:1412:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:1438:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:1442:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:1451:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:1455:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:1478:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:1543:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:1892:  l is incorrectly named. Don&apos;t use the single letter &apos;l&apos; as an identifier name.  [readability/naming] [4]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:1916:  l is incorrectly named. Don&apos;t use the single letter &apos;l&apos; as an identifier name.  [readability/naming] [4]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:1944:  Missing space after ,  [whitespace/comma] [3]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:1963:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:1965:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:1967:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:1969:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:2040:  l is incorrectly named. Don&apos;t use the single letter &apos;l&apos; as an identifier name.  [readability/naming] [4]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:2064:  l is incorrectly named. Don&apos;t use the single letter &apos;l&apos; as an identifier name.  [readability/naming] [4]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:2435:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:2445:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:2516:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:2517:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:2518:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:2518:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:2519:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:2519:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:2520:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:2520:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:2521:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:2521:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_5.cpp:2558:  Missing spaces around /  [whitespace/operators] [3]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:65:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:66:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:67:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:68:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:84:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:85:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:86:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:87:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:106:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:107:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:108:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:109:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:110:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:140:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:141:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:142:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:143:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:144:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:145:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:146:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:178:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:179:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:180:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:181:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:182:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:183:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:184:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:476:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:477:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:478:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:479:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:480:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:481:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:482:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:698:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:699:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:700:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:701:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:702:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:703:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:704:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:746:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:747:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:748:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:749:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:791:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:792:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:792:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:793:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:864:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:865:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:866:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:866:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:867:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:868:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:912:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:913:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:913:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:914:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:961:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:979:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:998:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:1017:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:1268:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:1269:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:1269:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:1270:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:1270:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:1434:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:1467:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:1467:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:1521:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:1521:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:1522:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:1525:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:1525:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:1836:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:1945:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:1946:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:1947:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:1948:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:1949:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:1950:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:2259:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:2260:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:2261:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:2263:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:2264:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_6.cpp:2265:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:815:  Consider using CHECK_EQ instead
 of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:816:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:852:  Missing spaces around /  [whitespace/operators] [3]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:870:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1203:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1204:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1204:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1228:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1229:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1229:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1261:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1262:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1262:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1291:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1292:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1292:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1321:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1322:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1322:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1354:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1355:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1355:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1384:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1385:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1385:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1417:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1418:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1418:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1447:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1448:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1448:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1480:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1481:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1481:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1897:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1899:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1899:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1927:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1929:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1929:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1957:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1959:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1959:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1987:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1989:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:1989:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:2017:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:2019:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:2019:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:2047:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:2049:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:2049:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:2087:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:2089:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:2089:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:2494:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:2502:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:2521:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:2533:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:2573:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:2589:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:2608:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:2620:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:2653:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:2696:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:2716:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:2729:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:2744:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:2752:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:2768:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:2776:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:2793:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:2812:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:2829:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:2842:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:2901:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:2905:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_4.cpp:2912:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_2.cpp:38:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_2.cpp:52:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_2.cpp:70:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_2.cpp:88:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_2.cpp:103:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_2.cpp:527:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3_2.cpp:1013:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3_2.cpp:1037:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3_2.cpp:1064:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3_2.cpp:1091:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3_2.cpp:1115:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3_2.cpp:1139:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3_2.cpp:1166:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3_2.cpp:1193:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3_2.cpp:1216:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3_2.cpp:1240:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 343 in 12 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>1557468</commentid>
    <comment_count>4</comment_count>
      <attachid>375270</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-07-31 17:53:35 -0700</bug_when>
    <thetext>Comment on attachment 375270
Patch

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

It might be cleaner if each file just has it&apos;s own addTests() method. I&apos;m not going to block landing on that though.

&gt; Source/JavaScriptCore/ChangeLog:29


Is there any way we can give each file more a meaningful name? Something like testb3_rotation_ops.cpp would be better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557470</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-07-31 17:58:21 -0700</bug_when>
    <thetext>(In reply to Keith Miller from comment #4)
&gt; Comment on attachment 375270 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=375270&amp;action=review
&gt; 
&gt; It might be cleaner if each file just has it&apos;s own addTests() method. I&apos;m
&gt; not going to block landing on that though.
That&apos;s the next step. I just wanted this big change out of the way.

&gt; &gt; Source/JavaScriptCore/ChangeLog:29
&gt; 
&gt; 
&gt; Is there any way we can give each file more a meaningful name? Something
&gt; like testb3_rotation_ops.cpp would be better.
I think we should do that with new files and do future organization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557472</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-07-31 18:02:13 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/248087/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557473</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-07-31 18:03:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/53790261&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557479</commentid>
    <comment_count>8</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-07-31 18:21:17 -0700</bug_when>
    <thetext>Neither your changelog nor this bug have any motivation for doing this. Please can you say why you&apos;re doing this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557536</commentid>
    <comment_count>9</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-07-31 22:30:34 -0700</bug_when>
    <thetext>I&apos;m doing this because this file takes 30 seconds to build, can only be on one core right now, and is an unsustainable mess. It needs parallelization and organization, so I&apos;m doing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557630</commentid>
    <comment_count>10</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-08-01 10:01:01 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #9)
&gt; I&apos;m doing this because this file takes 30 seconds to build, can only be on
&gt; one core right now, and is an unsustainable mess. It needs parallelization
&gt; and organization, so I&apos;m doing it.

Sounds reasonable. This is good information to put in the changelog instead of leaving it blank :-)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375269</attachid>
            <date>2019-07-31 17:11:11 -0700</date>
            <delta_ts>2019-07-31 17:16:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200326-20190731171110.patch</filename>
            <type>text/plain</type>
            <size>1838055</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4MDc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ODRiNTYzMDNkNjJkZjQ0ZWY3YzQyOTNmMzM1ZGNhMjk3ZDNmZTEyLi43ZTk0YjQxZTZmMzMyNTYw
NDljOGI4ZGZjZjgyMjcxOGI2NWFhYTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NTEgQEAKKzIwMTktMDctMzEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KKworICAgICAgICBTcGxpdCB0ZXN0YjMgaW50byBtdWx0aXBsZSBmaWxlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwMzI2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGIzL3Rlc3RiMy5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogYjMvdGVzdGIzLmg6IEFkZGVkLgorICAgICAgICAoaGlk
ZGVuVHJ1dGhCZWNhdXNlTm9SZXR1cm5Jc1N0dXBpZCk6CisgICAgICAgICh1c2FnZSk6CisgICAg
ICAgIChzaG91bGRCZVZlcmJvc2UpOgorICAgICAgICAoY29tcGlsZVByb2MpOgorICAgICAgICAo
aW52b2tlKToKKyAgICAgICAgKGNvbXBpbGVBbmRSdW4pOgorICAgICAgICAobG93ZXJUb0FpckZv
clRlc3RpbmcpOgorICAgICAgICAoY2hlY2tEaXNhc3NlbWJseSk6CisgICAgICAgIChjaGVja1Vz
ZXNJbnN0cnVjdGlvbik6CisgICAgICAgIChjaGVja0RvZXNOb3RVc2VJbnN0cnVjdGlvbik6Cisg
ICAgICAgIChwb3B1bGF0ZVdpdGhJbnRlcmVzdGluZ1ZhbHVlcyk6CisgICAgICAgIChmbG9hdGlu
Z1BvaW50T3BlcmFuZHMpOgorICAgICAgICAoaW50NjRPcGVyYW5kcyk6CisgICAgICAgIChpbnQz
Mk9wZXJhbmRzKToKKyAgICAgICAgKGFkZDMyKToKKyAgICAgICAgKG1vZGVsTG9hZCk6CisgICAg
ICAgIChmbG9hdD4pOgorICAgICAgICAoZG91YmxlPik6CisgICAgICAgICogYjMvdGVzdGIzXzEu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKHplcm8pOgorICAgICAgICAobmVnYXRpdmVaZXJvKToKKyAg
ICAgICAgKHNob3VsZFJ1bik6CisgICAgICAgICh0ZXN0Um90Uik6CisgICAgICAgICh0ZXN0Um90
TCk6CisgICAgICAgICh0ZXN0Um90UldpdGhJbW1TaGlmdCk6CisgICAgICAgICh0ZXN0Um90TFdp
dGhJbW1TaGlmdCk6CisgICAgICAgICh0ZXN0Q29tcHV0ZURpdmlzaW9uTWFnaWMpOgorICAgICAg
ICAocnVuKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAoZGxsTGF1bmNoZXJFbnRyeVBvaW50
KToKKyAgICAgICAgKiBiMy90ZXN0YjNfMi5jcHA6IEFkZGVkLgorICAgICAgICAodGVzdDQyKToK
KyAgICAgICAgKHRlc3RMb2FkNDIpOgorICAgICAgICAodGVzdExvYWRBY3E0Mik6CisgICAgICAg
ICh0ZXN0TG9hZFdpdGhPZmZzZXRJbXBsKToKKyAgICAgICAgKHRlc3RMb2FkT2Zmc2V0SW1tOU1h
eCk6CisgICAgICAgICh0ZXN0TG9hZE9mZnNldEltbTlNYXhQbHVzT25lKToKKyAgICAgICAgKHRl
c3RMb2FkT2Zmc2V0SW1tOU1heFBsdXNUd28pOgorICAgICAgICAodGVzdExvYWRPZmZzZXRJbW05
TWluKToKKyAgICAgICAgKHRlc3RMb2FkT2Zmc2V0SW1tOU1pbk1pbnVzT25lKToKKyAgICAgICAg
KHRlc3RMb2FkT2Zmc2V0U2NhbGVkVW5zaWduZWRJbW0xMk1heCk6CisgICAgICAgICh0ZXN0TG9h
ZE9mZnNldFNjYWxlZFVuc2lnbmVkT3ZlckltbTEyTWF4KToKKyAgICAgICAgKHRlc3RCaXRYb3JU
cmVlQXJncyk6CisgICAgICAgICh0ZXN0Qml0WG9yVHJlZUFyZ3NFdmVuKToKKyAgICAgICAgKHRl
c3RCaXRYb3JUcmVlQXJnSW1tKToKKyAgICAgICAgKHRlc3RBZGRUcmVlQXJnMzIpOgorICAgICAg
ICAodGVzdE11bFRyZWVBcmczMik6CisgICAgICAgICh0ZXN0Qml0QW5kVHJlZUFyZzMyKToKKyAg
ICAgICAgKHRlc3RCaXRPclRyZWVBcmczMik6CisgICAgICAgICh0ZXN0QXJnKToKKyAgICAgICAg
KHRlc3RSZXR1cm5Db25zdDY0KToKKyAgICAgICAgKHRlc3RSZXR1cm5Wb2lkKToKKyAgICAgICAg
KHRlc3RBZGRBcmcpOgorICAgICAgICAodGVzdEFkZEFyZ3MpOgorICAgICAgICAodGVzdEFkZEFy
Z0ltbSk6CisgICAgICAgICh0ZXN0QWRkSW1tQXJnKToKKyAgICAgICAgKHRlc3RBZGRBcmdNZW0p
OgorICAgICAgICAodGVzdEFkZE1lbUFyZyk6CisgICAgICAgICh0ZXN0QWRkSW1tTWVtKToKKyAg
ICAgICAgKHRlc3RBZGRBcmczMik6CisgICAgICAgICh0ZXN0QWRkQXJnczMyKToKKyAgICAgICAg
KHRlc3RBZGRBcmdNZW0zMik6CisgICAgICAgICh0ZXN0QWRkTWVtQXJnMzIpOgorICAgICAgICAo
dGVzdEFkZEltbU1lbTMyKToKKyAgICAgICAgKHRlc3RBZGROZWcxKToKKyAgICAgICAgKHRlc3RB
ZGROZWcyKToKKyAgICAgICAgKHRlc3RBZGRBcmdaZXJvSW1tWkRlZik6CisgICAgICAgICh0ZXN0
QWRkTG9hZFR3aWNlKToKKyAgICAgICAgKHRlc3RBZGRBcmdEb3VibGUpOgorICAgICAgICAodGVz
dEFkZEFyZ3NEb3VibGUpOgorICAgICAgICAodGVzdEFkZEFyZ0ltbURvdWJsZSk6CisgICAgICAg
ICh0ZXN0QWRkSW1tQXJnRG91YmxlKToKKyAgICAgICAgKHRlc3RBZGRJbW1zRG91YmxlKToKKyAg
ICAgICAgKHRlc3RBZGRBcmdGbG9hdCk6CisgICAgICAgICh0ZXN0QWRkQXJnc0Zsb2F0KToKKyAg
ICAgICAgKHRlc3RBZGRGUFJBcmdzRmxvYXQpOgorICAgICAgICAodGVzdEFkZEFyZ0ltbUZsb2F0
KToKKyAgICAgICAgKHRlc3RBZGRJbW1BcmdGbG9hdCk6CisgICAgICAgICh0ZXN0QWRkSW1tc0Zs
b2F0KToKKyAgICAgICAgKHRlc3RBZGRBcmdGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lv
bik6CisgICAgICAgICh0ZXN0QWRkQXJnc0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9u
KToKKyAgICAgICAgKHRlc3RBZGRBcmdzRmxvYXRXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lv
bik6CisgICAgICAgICh0ZXN0QWRkTXVsTXVsQXJncyk6CisgICAgICAgICh0ZXN0TXVsQXJnKToK
KyAgICAgICAgKHRlc3RNdWxBcmdTdG9yZSk6CisgICAgICAgICh0ZXN0TXVsQWRkQXJnKToKKyAg
ICAgICAgKHRlc3RNdWxBcmdzKToKKyAgICAgICAgKHRlc3RNdWxBcmdOZWdBcmcpOgorICAgICAg
ICAodGVzdE11bE5lZ0FyZ0FyZyk6CisgICAgICAgICh0ZXN0TXVsQXJnSW1tKToKKyAgICAgICAg
KHRlc3RNdWxJbW1BcmcpOgorICAgICAgICAodGVzdE11bEFyZ3MzMik6CisgICAgICAgICh0ZXN0
TXVsQXJnczMyU2lnbkV4dGVuZCk6CisgICAgICAgICh0ZXN0TXVsSW1tMzJTaWduRXh0ZW5kKToK
KyAgICAgICAgKHRlc3RNdWxMb2FkVHdpY2UpOgorICAgICAgICAodGVzdE11bEFkZEFyZ3NMZWZ0
KToKKyAgICAgICAgKHRlc3RNdWxBZGRBcmdzUmlnaHQpOgorICAgICAgICAodGVzdE11bEFkZEFy
Z3NMZWZ0MzIpOgorICAgICAgICAodGVzdE11bEFkZEFyZ3NSaWdodDMyKToKKyAgICAgICAgKHRl
c3RNdWxTdWJBcmdzTGVmdCk6CisgICAgICAgICh0ZXN0TXVsU3ViQXJnc1JpZ2h0KToKKyAgICAg
ICAgKHRlc3RNdWxTdWJBcmdzTGVmdDMyKToKKyAgICAgICAgKHRlc3RNdWxTdWJBcmdzUmlnaHQz
Mik6CisgICAgICAgICh0ZXN0TXVsTmVnQXJncyk6CisgICAgICAgICh0ZXN0TXVsTmVnQXJnczMy
KToKKyAgICAgICAgKHRlc3RNdWxBcmdEb3VibGUpOgorICAgICAgICAodGVzdE11bEFyZ3NEb3Vi
bGUpOgorICAgICAgICAodGVzdE11bEFyZ0ltbURvdWJsZSk6CisgICAgICAgICh0ZXN0TXVsSW1t
QXJnRG91YmxlKToKKyAgICAgICAgKHRlc3RNdWxJbW1zRG91YmxlKToKKyAgICAgICAgKHRlc3RN
dWxBcmdGbG9hdCk6CisgICAgICAgICh0ZXN0TXVsQXJnc0Zsb2F0KToKKyAgICAgICAgKHRlc3RN
dWxBcmdJbW1GbG9hdCk6CisgICAgICAgICh0ZXN0TXVsSW1tQXJnRmxvYXQpOgorICAgICAgICAo
dGVzdE11bEltbXNGbG9hdCk6CisgICAgICAgICh0ZXN0TXVsQXJnRmxvYXRXaXRoVXNlbGVzc0Rv
dWJsZUNvbnZlcnNpb24pOgorICAgICAgICAodGVzdE11bEFyZ3NGbG9hdFdpdGhVc2VsZXNzRG91
YmxlQ29udmVyc2lvbik6CisgICAgICAgICh0ZXN0TXVsQXJnc0Zsb2F0V2l0aEVmZmVjdGZ1bERv
dWJsZUNvbnZlcnNpb24pOgorICAgICAgICAodGVzdERpdkFyZ0RvdWJsZSk6CisgICAgICAgICh0
ZXN0RGl2QXJnc0RvdWJsZSk6CisgICAgICAgICh0ZXN0RGl2QXJnSW1tRG91YmxlKToKKyAgICAg
ICAgKHRlc3REaXZJbW1BcmdEb3VibGUpOgorICAgICAgICAodGVzdERpdkltbXNEb3VibGUpOgor
ICAgICAgICAodGVzdERpdkFyZ0Zsb2F0KToKKyAgICAgICAgKHRlc3REaXZBcmdzRmxvYXQpOgor
ICAgICAgICAodGVzdERpdkFyZ0ltbUZsb2F0KToKKyAgICAgICAgKHRlc3REaXZJbW1BcmdGbG9h
dCk6CisgICAgICAgICh0ZXN0RGl2SW1tc0Zsb2F0KToKKyAgICAgICAgKHRlc3RNb2RBcmdEb3Vi
bGUpOgorICAgICAgICAodGVzdE1vZEFyZ3NEb3VibGUpOgorICAgICAgICAodGVzdE1vZEFyZ0lt
bURvdWJsZSk6CisgICAgICAgICh0ZXN0TW9kSW1tQXJnRG91YmxlKToKKyAgICAgICAgKHRlc3RN
b2RJbW1zRG91YmxlKToKKyAgICAgICAgKHRlc3RNb2RBcmdGbG9hdCk6CisgICAgICAgICh0ZXN0
TW9kQXJnc0Zsb2F0KToKKyAgICAgICAgKHRlc3RNb2RBcmdJbW1GbG9hdCk6CisgICAgICAgICh0
ZXN0TW9kSW1tQXJnRmxvYXQpOgorICAgICAgICAodGVzdE1vZEltbXNGbG9hdCk6CisgICAgICAg
ICh0ZXN0RGl2QXJnRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24pOgorICAgICAgICAo
dGVzdERpdkFyZ3NGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbik6CisgICAgICAgICh0
ZXN0RGl2QXJnc0Zsb2F0V2l0aEVmZmVjdGZ1bERvdWJsZUNvbnZlcnNpb24pOgorICAgICAgICAo
dGVzdFVEaXZBcmdzSW50MzIpOgorICAgICAgICAodGVzdFVEaXZBcmdzSW50NjQpOgorICAgICAg
ICAodGVzdFVNb2RBcmdzSW50MzIpOgorICAgICAgICAodGVzdFVNb2RBcmdzSW50NjQpOgorICAg
ICAgICAodGVzdFN1YkFyZyk6CisgICAgICAgICh0ZXN0U3ViQXJncyk6CisgICAgICAgICh0ZXN0
U3ViQXJnSW1tKToKKyAgICAgICAgKHRlc3RTdWJOZWcpOgorICAgICAgICAodGVzdE5lZ1N1Yik6
CisgICAgICAgICh0ZXN0TmVnVmFsdWVTdWJPbmUpOgorICAgICAgICAodGVzdFN1YlN1Yik6Cisg
ICAgICAgICh0ZXN0U3ViU3ViMik6CisgICAgICAgICh0ZXN0U3ViQWRkKToKKyAgICAgICAgKHRl
c3RTdWJGaXJzdE5lZyk6CisgICAgICAgICh0ZXN0U3ViSW1tQXJnKToKKyAgICAgICAgKHRlc3RT
dWJBcmdNZW0pOgorICAgICAgICAodGVzdFN1Yk1lbUFyZyk6CisgICAgICAgICh0ZXN0U3ViSW1t
TWVtKToKKyAgICAgICAgKHRlc3RTdWJNZW1JbW0pOgorICAgICAgICAodGVzdFN1YkFyZ3MzMik6
CisgICAgICAgICh0ZXN0U3ViQXJnSW1tMzIpOgorICAgICAgICAodGVzdFN1YkltbUFyZzMyKToK
KyAgICAgICAgKHRlc3RTdWJNZW1BcmczMik6CisgICAgICAgICh0ZXN0U3ViQXJnTWVtMzIpOgor
ICAgICAgICAodGVzdFN1YkltbU1lbTMyKToKKyAgICAgICAgKHRlc3RTdWJNZW1JbW0zMik6Cisg
ICAgICAgICh0ZXN0TmVnVmFsdWVTdWJPbmUzMik6CisgICAgICAgICh0ZXN0TmVnTXVsQXJnSW1t
KToKKyAgICAgICAgKHRlc3RTdWJNdWxNdWxBcmdzKToKKyAgICAgICAgKHRlc3RTdWJBcmdEb3Vi
bGUpOgorICAgICAgICAodGVzdFN1YkFyZ3NEb3VibGUpOgorICAgICAgICAodGVzdFN1YkFyZ0lt
bURvdWJsZSk6CisgICAgICAgICh0ZXN0U3ViSW1tQXJnRG91YmxlKToKKyAgICAgICAgKHRlc3RT
dWJJbW1zRG91YmxlKToKKyAgICAgICAgKHRlc3RTdWJBcmdGbG9hdCk6CisgICAgICAgICh0ZXN0
U3ViQXJnc0Zsb2F0KToKKyAgICAgICAgKHRlc3RTdWJBcmdJbW1GbG9hdCk6CisgICAgICAgICh0
ZXN0U3ViSW1tQXJnRmxvYXQpOgorICAgICAgICAodGVzdFN1YkltbXNGbG9hdCk6CisgICAgICAg
ICh0ZXN0U3ViQXJnRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24pOgorICAgICAgICAo
dGVzdFN1YkFyZ3NGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbik6CisgICAgICAgICh0
ZXN0U3ViQXJnc0Zsb2F0V2l0aEVmZmVjdGZ1bERvdWJsZUNvbnZlcnNpb24pOgorICAgICAgICAo
dGVzdFRlcm5hcnlTdWJJbnN0cnVjdGlvblNlbGVjdGlvbik6CisgICAgICAgICh0ZXN0TmVnRG91
YmxlKToKKyAgICAgICAgKHRlc3ROZWdGbG9hdCk6CisgICAgICAgICh0ZXN0TmVnRmxvYXRXaXRo
VXNlbGVzc0RvdWJsZUNvbnZlcnNpb24pOgorICAgICAgICAodGVzdEJpdEFuZEFyZ3MpOgorICAg
ICAgICAodGVzdEJpdEFuZFNhbWVBcmcpOgorICAgICAgICAodGVzdEJpdEFuZE5vdE5vdCk6Cisg
ICAgICAgICh0ZXN0Qml0QW5kTm90SW1tKToKKyAgICAgICAgKHRlc3RCaXRBbmRJbW1zKToKKyAg
ICAgICAgKHRlc3RCaXRBbmRBcmdJbW0pOgorICAgICAgICAodGVzdEJpdEFuZEltbUFyZyk6Cisg
ICAgICAgICh0ZXN0Qml0QW5kQml0QW5kQXJnSW1tSW1tKToKKyAgICAgICAgKHRlc3RCaXRBbmRJ
bW1CaXRBbmRBcmdJbW0pOgorICAgICAgICAodGVzdEJpdEFuZEFyZ3MzMik6CisgICAgICAgICh0
ZXN0Qml0QW5kU2FtZUFyZzMyKToKKyAgICAgICAgKHRlc3RCaXRBbmRJbW1zMzIpOgorICAgICAg
ICAodGVzdEJpdEFuZEFyZ0ltbTMyKToKKyAgICAgICAgKHRlc3RCaXRBbmRJbW1BcmczMik6Cisg
ICAgICAgICh0ZXN0Qml0QW5kQml0QW5kQXJnSW1tSW1tMzIpOgorICAgICAgICAodGVzdEJpdEFu
ZEltbUJpdEFuZEFyZ0ltbTMyKToKKyAgICAgICAgKHRlc3RCaXRBbmRXaXRoTWFza1JldHVybnNC
b29sZWFucyk6CisgICAgICAgIChiaXRBbmREb3VibGUpOgorICAgICAgICAodGVzdEJpdEFuZEFy
Z0RvdWJsZSk6CisgICAgICAgICh0ZXN0Qml0QW5kQXJnc0RvdWJsZSk6CisgICAgICAgICh0ZXN0
Qml0QW5kQXJnSW1tRG91YmxlKToKKyAgICAgICAgKHRlc3RCaXRBbmRJbW1zRG91YmxlKToKKyAg
ICAgICAgKGJpdEFuZEZsb2F0KToKKyAgICAgICAgKHRlc3RCaXRBbmRBcmdGbG9hdCk6CisgICAg
ICAgICh0ZXN0Qml0QW5kQXJnc0Zsb2F0KToKKyAgICAgICAgKHRlc3RCaXRBbmRBcmdJbW1GbG9h
dCk6CisgICAgICAgICh0ZXN0Qml0QW5kSW1tc0Zsb2F0KToKKyAgICAgICAgKHRlc3RCaXRBbmRB
cmdzRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24pOgorICAgICAgICAodGVzdEJpdE9y
QXJncyk6CisgICAgICAgICh0ZXN0Qml0T3JTYW1lQXJnKToKKyAgICAgICAgKHRlc3RCaXRPckFu
ZEFuZEFyZ3MpOgorICAgICAgICAodGVzdEJpdE9yQW5kU2FtZUFyZ3MpOgorICAgICAgICAodGVz
dEJpdE9yTm90Tm90KToKKyAgICAgICAgKHRlc3RCaXRPck5vdEltbSk6CisgICAgICAgICh0ZXN0
Qml0T3JJbW1zKToKKyAgICAgICAgKHRlc3RCaXRPckFyZ0ltbSk6CisgICAgICAgICh0ZXN0Qml0
T3JJbW1BcmcpOgorICAgICAgICAodGVzdEJpdE9yQml0T3JBcmdJbW1JbW0pOgorICAgICAgICAo
dGVzdEJpdE9ySW1tQml0T3JBcmdJbW0pOgorICAgICAgICAodGVzdEJpdE9yQXJnczMyKToKKyAg
ICAgICAgKHRlc3RCaXRPclNhbWVBcmczMik6CisgICAgICAgICh0ZXN0Qml0T3JJbW1zMzIpOgor
ICAgICAgICAodGVzdEJpdE9yQXJnSW1tMzIpOgorICAgICAgICAodGVzdEJpdE9ySW1tQXJnMzIp
OgorICAgICAgICAqIGIzL3Rlc3RiM18zLmNwcDogQWRkZWQuCisgICAgICAgICh0ZXN0Qml0T3JC
aXRPckFyZ0ltbUltbTMyKToKKyAgICAgICAgKHRlc3RCaXRPckltbUJpdE9yQXJnSW1tMzIpOgor
ICAgICAgICAoYml0T3JEb3VibGUpOgorICAgICAgICAodGVzdEJpdE9yQXJnRG91YmxlKToKKyAg
ICAgICAgKHRlc3RCaXRPckFyZ3NEb3VibGUpOgorICAgICAgICAodGVzdEJpdE9yQXJnSW1tRG91
YmxlKToKKyAgICAgICAgKHRlc3RCaXRPckltbXNEb3VibGUpOgorICAgICAgICAoYml0T3JGbG9h
dCk6CisgICAgICAgICh0ZXN0Qml0T3JBcmdGbG9hdCk6CisgICAgICAgICh0ZXN0Qml0T3JBcmdz
RmxvYXQpOgorICAgICAgICAodGVzdEJpdE9yQXJnSW1tRmxvYXQpOgorICAgICAgICAodGVzdEJp
dE9ySW1tc0Zsb2F0KToKKyAgICAgICAgKHRlc3RCaXRPckFyZ3NGbG9hdFdpdGhVc2VsZXNzRG91
YmxlQ29udmVyc2lvbik6CisgICAgICAgICh0ZXN0Qml0WG9yQXJncyk6CisgICAgICAgICh0ZXN0
Qml0WG9yU2FtZUFyZyk6CisgICAgICAgICh0ZXN0Qml0WG9yQW5kQW5kQXJncyk6CisgICAgICAg
ICh0ZXN0Qml0WG9yQW5kU2FtZUFyZ3MpOgorICAgICAgICAodGVzdEJpdFhvckltbXMpOgorICAg
ICAgICAodGVzdEJpdFhvckFyZ0ltbSk6CisgICAgICAgICh0ZXN0Qml0WG9ySW1tQXJnKToKKyAg
ICAgICAgKHRlc3RCaXRYb3JCaXRYb3JBcmdJbW1JbW0pOgorICAgICAgICAodGVzdEJpdFhvcklt
bUJpdFhvckFyZ0ltbSk6CisgICAgICAgICh0ZXN0Qml0WG9yQXJnczMyKToKKyAgICAgICAgKHRl
c3RCaXRYb3JTYW1lQXJnMzIpOgorICAgICAgICAodGVzdEJpdFhvckltbXMzMik6CisgICAgICAg
ICh0ZXN0Qml0WG9yQXJnSW1tMzIpOgorICAgICAgICAodGVzdEJpdFhvckltbUFyZzMyKToKKyAg
ICAgICAgKHRlc3RCaXRYb3JCaXRYb3JBcmdJbW1JbW0zMik6CisgICAgICAgICh0ZXN0Qml0WG9y
SW1tQml0WG9yQXJnSW1tMzIpOgorICAgICAgICAodGVzdEJpdE5vdEFyZyk6CisgICAgICAgICh0
ZXN0Qml0Tm90SW1tKToKKyAgICAgICAgKHRlc3RCaXROb3RNZW0pOgorICAgICAgICAodGVzdEJp
dE5vdEFyZzMyKToKKyAgICAgICAgKHRlc3RCaXROb3RJbW0zMik6CisgICAgICAgICh0ZXN0Qml0
Tm90TWVtMzIpOgorICAgICAgICAodGVzdE5vdE9uQm9vbGVhbkFuZEJyYW5jaDMyKToKKyAgICAg
ICAgKHRlc3RCaXROb3RPbkJvb2xlYW5BbmRCcmFuY2gzMik6CisgICAgICAgICh0ZXN0U2hsQXJn
cyk6CisgICAgICAgICh0ZXN0U2hsSW1tcyk6CisgICAgICAgICh0ZXN0U2hsQXJnSW1tKToKKyAg
ICAgICAgKHRlc3RTaGxTU2hyQXJnSW1tKToKKyAgICAgICAgKHRlc3RTaGxBcmczMik6CisgICAg
ICAgICh0ZXN0U2hsQXJnczMyKToKKyAgICAgICAgKHRlc3RTaGxJbW1zMzIpOgorICAgICAgICAo
dGVzdFNobEFyZ0ltbTMyKToKKyAgICAgICAgKHRlc3RTaGxaU2hyQXJnSW1tMzIpOgorICAgICAg
ICAodGVzdFNTaHJBcmdzKToKKyAgICAgICAgKHRlc3RTU2hySW1tcyk6CisgICAgICAgICh0ZXN0
U1NockFyZ0ltbSk6CisgICAgICAgICh0ZXN0U1NockFyZzMyKToKKyAgICAgICAgKHRlc3RTU2hy
QXJnczMyKToKKyAgICAgICAgKHRlc3RTU2hySW1tczMyKToKKyAgICAgICAgKHRlc3RTU2hyQXJn
SW1tMzIpOgorICAgICAgICAodGVzdFpTaHJBcmdzKToKKyAgICAgICAgKHRlc3RaU2hySW1tcyk6
CisgICAgICAgICh0ZXN0WlNockFyZ0ltbSk6CisgICAgICAgICh0ZXN0WlNockFyZzMyKToKKyAg
ICAgICAgKHRlc3RaU2hyQXJnczMyKToKKyAgICAgICAgKHRlc3RaU2hySW1tczMyKToKKyAgICAg
ICAgKHRlc3RaU2hyQXJnSW1tMzIpOgorICAgICAgICAoY291bnRMZWFkaW5nWmVybyk6CisgICAg
ICAgICh0ZXN0Q2x6QXJnNjQpOgorICAgICAgICAodGVzdENsek1lbTY0KToKKyAgICAgICAgKHRl
c3RDbHpBcmczMik6CisgICAgICAgICh0ZXN0Q2x6TWVtMzIpOgorICAgICAgICAodGVzdEFic0Fy
Zyk6CisgICAgICAgICh0ZXN0QWJzSW1tKToKKyAgICAgICAgKHRlc3RBYnNNZW0pOgorICAgICAg
ICAodGVzdEFic0Fic0FyZyk6CisgICAgICAgICh0ZXN0QWJzTmVnQXJnKToKKyAgICAgICAgKHRl
c3RBYnNCaXR3aXNlQ2FzdEFyZyk6CisgICAgICAgICh0ZXN0Qml0d2lzZUNhc3RBYnNCaXR3aXNl
Q2FzdEFyZyk6CisgICAgICAgICh0ZXN0QWJzQXJnV2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9u
KToKKyAgICAgICAgKHRlc3RBYnNBcmdXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lvbik6Cisg
ICAgICAgICh0ZXN0Q2VpbEFyZyk6CisgICAgICAgICh0ZXN0Q2VpbEltbSk6CisgICAgICAgICh0
ZXN0Q2VpbE1lbSk6CisgICAgICAgICh0ZXN0Q2VpbENlaWxBcmcpOgorICAgICAgICAodGVzdEZs
b29yQ2VpbEFyZyk6CisgICAgICAgICh0ZXN0Q2VpbElUb0Q2NCk6CisgICAgICAgICh0ZXN0Q2Vp
bElUb0QzMik6CisgICAgICAgICh0ZXN0Q2VpbEFyZ1dpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lv
bik6CisgICAgICAgICh0ZXN0Q2VpbEFyZ1dpdGhFZmZlY3RmdWxEb3VibGVDb252ZXJzaW9uKToK
KyAgICAgICAgKHRlc3RGbG9vckFyZyk6CisgICAgICAgICh0ZXN0Rmxvb3JJbW0pOgorICAgICAg
ICAodGVzdEZsb29yTWVtKToKKyAgICAgICAgKHRlc3RGbG9vckZsb29yQXJnKToKKyAgICAgICAg
KHRlc3RDZWlsRmxvb3JBcmcpOgorICAgICAgICAodGVzdEZsb29ySVRvRDY0KToKKyAgICAgICAg
KHRlc3RGbG9vcklUb0QzMik6CisgICAgICAgICh0ZXN0Rmxvb3JBcmdXaXRoVXNlbGVzc0RvdWJs
ZUNvbnZlcnNpb24pOgorICAgICAgICAodGVzdEZsb29yQXJnV2l0aEVmZmVjdGZ1bERvdWJsZUNv
bnZlcnNpb24pOgorICAgICAgICAoY29ycmVjdFNxcnQpOgorICAgICAgICAodGVzdFNxcnRBcmcp
OgorICAgICAgICAodGVzdFNxcnRJbW0pOgorICAgICAgICAodGVzdFNxcnRNZW0pOgorICAgICAg
ICAodGVzdFNxcnRBcmdXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24pOgorICAgICAgICAodGVz
dFNxcnRBcmdXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lvbik6CisgICAgICAgICh0ZXN0Q29t
cGFyZVR3b0Zsb2F0VG9Eb3VibGUpOgorICAgICAgICAodGVzdENvbXBhcmVPbmVGbG9hdFRvRG91
YmxlKToKKyAgICAgICAgKHRlc3RDb21wYXJlRmxvYXRUb0RvdWJsZVRocm91Z2hQaGkpOgorICAg
ICAgICAodGVzdERvdWJsZVRvRmxvYXRUaHJvdWdoUGhpKToKKyAgICAgICAgKHRlc3RSZWR1Y2VG
bG9hdFRvRG91YmxlVmFsaWRhdGVzKToKKyAgICAgICAgKHRlc3REb3VibGVQcm9kdWNlclBoaVRv
RmxvYXRDb252ZXJzaW9uKToKKyAgICAgICAgKHRlc3REb3VibGVQcm9kdWNlclBoaVRvRmxvYXRD
b252ZXJzaW9uV2l0aERvdWJsZUNvbnN1bWVyKToKKyAgICAgICAgKHRlc3REb3VibGVQcm9kdWNl
clBoaVdpdGhOb25GbG9hdENvbnN0KToKKyAgICAgICAgKHRlc3REb3VibGVBcmdUb0ludDY0Qml0
d2lzZUNhc3QpOgorICAgICAgICAodGVzdERvdWJsZUltbVRvSW50NjRCaXR3aXNlQ2FzdCk6Cisg
ICAgICAgICh0ZXN0VHdvQml0d2lzZUNhc3RPbkRvdWJsZSk6CisgICAgICAgICh0ZXN0Qml0d2lz
ZUNhc3RPbkRvdWJsZUluTWVtb3J5KToKKyAgICAgICAgKHRlc3RCaXR3aXNlQ2FzdE9uRG91Ymxl
SW5NZW1vcnlJbmRleGVkKToKKyAgICAgICAgKHRlc3RJbnQ2NEJBcmdUb0RvdWJsZUJpdHdpc2VD
YXN0KToKKyAgICAgICAgKHRlc3RJbnQ2NEJJbW1Ub0RvdWJsZUJpdHdpc2VDYXN0KToKKyAgICAg
ICAgKHRlc3RUd29CaXR3aXNlQ2FzdE9uSW50NjQpOgorICAgICAgICAodGVzdEJpdHdpc2VDYXN0
T25JbnQ2NEluTWVtb3J5KToKKyAgICAgICAgKHRlc3RCaXR3aXNlQ2FzdE9uSW50NjRJbk1lbW9y
eUluZGV4ZWQpOgorICAgICAgICAodGVzdEZsb2F0SW1tVG9JbnQzMkJpdHdpc2VDYXN0KToKKyAg
ICAgICAgKHRlc3RCaXR3aXNlQ2FzdE9uRmxvYXRJbk1lbW9yeSk6CisgICAgICAgICh0ZXN0SW50
MzJCQXJnVG9GbG9hdEJpdHdpc2VDYXN0KToKKyAgICAgICAgKHRlc3RJbnQzMkJJbW1Ub0Zsb2F0
Qml0d2lzZUNhc3QpOgorICAgICAgICAodGVzdFR3b0JpdHdpc2VDYXN0T25JbnQzMik6CisgICAg
ICAgICh0ZXN0Qml0d2lzZUNhc3RPbkludDMySW5NZW1vcnkpOgorICAgICAgICAodGVzdENvbnZl
cnREb3VibGVUb0Zsb2F0QXJnKToKKyAgICAgICAgKHRlc3RDb252ZXJ0RG91YmxlVG9GbG9hdElt
bSk6CisgICAgICAgICh0ZXN0Q29udmVydERvdWJsZVRvRmxvYXRNZW0pOgorICAgICAgICAodGVz
dENvbnZlcnRGbG9hdFRvRG91YmxlQXJnKToKKyAgICAgICAgKHRlc3RDb252ZXJ0RmxvYXRUb0Rv
dWJsZUltbSk6CisgICAgICAgICh0ZXN0Q29udmVydEZsb2F0VG9Eb3VibGVNZW0pOgorICAgICAg
ICAodGVzdENvbnZlcnREb3VibGVUb0Zsb2F0VG9Eb3VibGVUb0Zsb2F0KToKKyAgICAgICAgKHRl
c3RMb2FkRmxvYXRDb252ZXJ0RG91YmxlQ29udmVydEZsb2F0U3RvcmVGbG9hdCk6CisgICAgICAg
ICh0ZXN0RnJvdW5kQXJnKToKKyAgICAgICAgKHRlc3RGcm91bmRNZW0pOgorICAgICAgICAodGVz
dElUb0Q2NEFyZyk6CisgICAgICAgICh0ZXN0SVRvRjY0QXJnKToKKyAgICAgICAgKHRlc3RJVG9E
MzJBcmcpOgorICAgICAgICAodGVzdElUb0YzMkFyZyk6CisgICAgICAgICh0ZXN0SVRvRDY0TWVt
KToKKyAgICAgICAgKHRlc3RJVG9GNjRNZW0pOgorICAgICAgICAodGVzdElUb0QzMk1lbSk6Cisg
ICAgICAgICh0ZXN0SVRvRjMyTWVtKToKKyAgICAgICAgKHRlc3RJVG9ENjRJbW0pOgorICAgICAg
ICAodGVzdElUb0Y2NEltbSk6CisgICAgICAgICh0ZXN0SVRvRDMySW1tKToKKyAgICAgICAgKHRl
c3RJVG9GMzJJbW0pOgorICAgICAgICAodGVzdElUb0RSZWR1Y2VkVG9JVG9GNjRBcmcpOgorICAg
ICAgICAodGVzdElUb0RSZWR1Y2VkVG9JVG9GMzJBcmcpOgorICAgICAgICAodGVzdFN0b3JlMzIp
OgorICAgICAgICAodGVzdFN0b3JlQ29uc3RhbnQpOgorICAgICAgICAodGVzdFN0b3JlQ29uc3Rh
bnRQdHIpOgorICAgICAgICAodGVzdFN0b3JlOEFyZyk6CisgICAgICAgICh0ZXN0U3RvcmU4SW1t
KToKKyAgICAgICAgKHRlc3RTdG9yZVBhcnRpYWw4Qml0UmVnaXN0ZXJPblg4Nik6CisgICAgICAg
ICh0ZXN0U3RvcmUxNkFyZyk6CisgICAgICAgICh0ZXN0U3RvcmUxNkltbSk6CisgICAgICAgICh0
ZXN0VHJ1bmMpOgorICAgICAgICAodGVzdEFkZDEpOgorICAgICAgICAodGVzdEFkZDFQdHIpOgor
ICAgICAgICAodGVzdE5lZzMyKToKKyAgICAgICAgKHRlc3ROZWdQdHIpOgorICAgICAgICAodGVz
dFN0b3JlQWRkTG9hZDMyKToKKyAgICAgICAgKiBiMy90ZXN0YjNfNC5jcHA6IEFkZGVkLgorICAg
ICAgICAodGVzdFN0b3JlUmVsQWRkTG9hZEFjcTMyKToKKyAgICAgICAgKHRlc3RTdG9yZUFkZExv
YWRJbW0zMik6CisgICAgICAgICh0ZXN0U3RvcmVBZGRMb2FkOCk6CisgICAgICAgICh0ZXN0U3Rv
cmVSZWxBZGRMb2FkQWNxOCk6CisgICAgICAgICh0ZXN0U3RvcmVSZWxBZGRGZW5jZUxvYWRBY3E4
KToKKyAgICAgICAgKHRlc3RTdG9yZUFkZExvYWRJbW04KToKKyAgICAgICAgKHRlc3RTdG9yZUFk
ZExvYWQxNik6CisgICAgICAgICh0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxMTYpOgorICAgICAgICAo
dGVzdFN0b3JlQWRkTG9hZEltbTE2KToKKyAgICAgICAgKHRlc3RTdG9yZUFkZExvYWQ2NCk6Cisg
ICAgICAgICh0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxNjQpOgorICAgICAgICAodGVzdFN0b3JlQWRk
TG9hZEltbTY0KToKKyAgICAgICAgKHRlc3RTdG9yZUFkZExvYWQzMkluZGV4KToKKyAgICAgICAg
KHRlc3RTdG9yZUFkZExvYWRJbW0zMkluZGV4KToKKyAgICAgICAgKHRlc3RTdG9yZUFkZExvYWQ4
SW5kZXgpOgorICAgICAgICAodGVzdFN0b3JlQWRkTG9hZEltbThJbmRleCk6CisgICAgICAgICh0
ZXN0U3RvcmVBZGRMb2FkMTZJbmRleCk6CisgICAgICAgICh0ZXN0U3RvcmVBZGRMb2FkSW1tMTZJ
bmRleCk6CisgICAgICAgICh0ZXN0U3RvcmVBZGRMb2FkNjRJbmRleCk6CisgICAgICAgICh0ZXN0
U3RvcmVBZGRMb2FkSW1tNjRJbmRleCk6CisgICAgICAgICh0ZXN0U3RvcmVTdWJMb2FkKToKKyAg
ICAgICAgKHRlc3RTdG9yZUFkZExvYWRJbnRlcmZlcmVuY2UpOgorICAgICAgICAodGVzdFN0b3Jl
QWRkQW5kTG9hZCk6CisgICAgICAgICh0ZXN0U3RvcmVOZWdMb2FkMzIpOgorICAgICAgICAodGVz
dFN0b3JlTmVnTG9hZFB0cik6CisgICAgICAgICh0ZXN0QWRkMVVuY29tbXV0ZWQpOgorICAgICAg
ICAodGVzdExvYWRPZmZzZXQpOgorICAgICAgICAodGVzdExvYWRPZmZzZXROb3RDb25zdGFudCk6
CisgICAgICAgICh0ZXN0TG9hZE9mZnNldFVzaW5nQWRkKToKKyAgICAgICAgKHRlc3RMb2FkT2Zm
c2V0VXNpbmdBZGRJbnRlcmZlcmVuY2UpOgorICAgICAgICAodGVzdExvYWRPZmZzZXRVc2luZ0Fk
ZE5vdENvbnN0YW50KToKKyAgICAgICAgKHRlc3RMb2FkQWRkclNoaWZ0KToKKyAgICAgICAgKHRl
c3RGcmFtZVBvaW50ZXIpOgorICAgICAgICAodGVzdE92ZXJyaWRlRnJhbWVQb2ludGVyKToKKyAg
ICAgICAgKHRlc3RTdGFja1Nsb3QpOgorICAgICAgICAodGVzdExvYWRGcm9tRnJhbWVQb2ludGVy
KToKKyAgICAgICAgKHRlc3RTdG9yZUxvYWRTdGFja1Nsb3QpOgorICAgICAgICAodGVzdFN0b3Jl
RmxvYXQpOgorICAgICAgICAodGVzdFN0b3JlRG91YmxlQ29uc3RhbnRBc0Zsb2F0KToKKyAgICAg
ICAgKHRlc3RTcGlsbEdQKToKKyAgICAgICAgKHRlc3RTcGlsbEZQKToKKyAgICAgICAgKHRlc3RJ
bnQzMlRvRG91YmxlUGFydGlhbFJlZ2lzdGVyU3RhbGwpOgorICAgICAgICAodGVzdEludDMyVG9E
b3VibGVQYXJ0aWFsUmVnaXN0ZXJXaXRob3V0U3RhbGwpOgorICAgICAgICAodGVzdEJyYW5jaCk6
CisgICAgICAgICh0ZXN0QnJhbmNoUHRyKToKKyAgICAgICAgKHRlc3REaWFtb25kKToKKyAgICAg
ICAgKHRlc3RCcmFuY2hOb3RFcXVhbCk6CisgICAgICAgICh0ZXN0QnJhbmNoTm90RXF1YWxDb21t
dXRlKToKKyAgICAgICAgKHRlc3RCcmFuY2hOb3RFcXVhbE5vdEVxdWFsKToKKyAgICAgICAgKHRl
c3RCcmFuY2hFcXVhbCk6CisgICAgICAgICh0ZXN0QnJhbmNoRXF1YWxFcXVhbCk6CisgICAgICAg
ICh0ZXN0QnJhbmNoRXF1YWxDb21tdXRlKToKKyAgICAgICAgKHRlc3RCcmFuY2hFcXVhbEVxdWFs
MSk6CisgICAgICAgICh0ZXN0QnJhbmNoRXF1YWxPclVub3JkZXJlZEFyZ3MpOgorICAgICAgICAo
dGVzdEJyYW5jaE5vdEVxdWFsQW5kT3JkZXJlZEFyZ3MpOgorICAgICAgICAodGVzdEJyYW5jaEVx
dWFsT3JVbm9yZGVyZWREb3VibGVBcmdJbW0pOgorICAgICAgICAodGVzdEJyYW5jaEVxdWFsT3JV
bm9yZGVyZWRGbG9hdEFyZ0ltbSk6CisgICAgICAgICh0ZXN0QnJhbmNoRXF1YWxPclVub3JkZXJl
ZERvdWJsZUltbXMpOgorICAgICAgICAodGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVyZWRGbG9hdElt
bXMpOgorICAgICAgICAodGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVyZWRGbG9hdFdpdGhVc2VsZXNz
RG91YmxlQ29udmVyc2lvbik6CisgICAgICAgICh0ZXN0QnJhbmNoRm9sZCk6CisgICAgICAgICh0
ZXN0RGlhbW9uZEZvbGQpOgorICAgICAgICAodGVzdEJyYW5jaE5vdEVxdWFsRm9sZFB0cik6Cisg
ICAgICAgICh0ZXN0QnJhbmNoRXF1YWxGb2xkUHRyKToKKyAgICAgICAgKHRlc3RCcmFuY2hMb2Fk
UHRyKToKKyAgICAgICAgKHRlc3RCcmFuY2hMb2FkMzIpOgorICAgICAgICAodGVzdEJyYW5jaExv
YWQ4Uyk6CisgICAgICAgICh0ZXN0QnJhbmNoTG9hZDhaKToKKyAgICAgICAgKHRlc3RCcmFuY2hM
b2FkMTZTKToKKyAgICAgICAgKHRlc3RCcmFuY2hMb2FkMTZaKToKKyAgICAgICAgKHRlc3RCcmFu
Y2g4V2l0aExvYWQ4WkluZGV4KToKKyAgICAgICAgKHRlc3RDb21wbGV4KToKKyAgICAgICAgKHRl
c3RCcmFuY2hCaXRUZXN0MzJUbXBJbW0pOgorICAgICAgICAodGVzdEJyYW5jaEJpdFRlc3QzMkFk
ZHJJbW0pOgorICAgICAgICAodGVzdEJyYW5jaEJpdFRlc3QzMlRtcFRtcCk6CisgICAgICAgICh0
ZXN0QnJhbmNoQml0VGVzdDY0VG1wVG1wKToKKyAgICAgICAgKHRlc3RCcmFuY2hCaXRUZXN0NjRB
ZGRyVG1wKToKKyAgICAgICAgKHRlc3RCcmFuY2hCaXRUZXN0TmVnYXRpb24pOgorICAgICAgICAo
dGVzdEJyYW5jaEJpdFRlc3ROZWdhdGlvbjIpOgorICAgICAgICAodGVzdFNpbXBsZVBhdGNocG9p
bnQpOgorICAgICAgICAodGVzdFNpbXBsZVBhdGNocG9pbnRXaXRob3V0T3VwdXRDbG9iYmVyc0dQ
QXJncyk6CisgICAgICAgICh0ZXN0U2ltcGxlUGF0Y2hwb2ludFdpdGhPdXB1dENsb2JiZXJzR1BB
cmdzKToKKyAgICAgICAgKHRlc3RTaW1wbGVQYXRjaHBvaW50V2l0aG91dE91cHV0Q2xvYmJlcnNG
UEFyZ3MpOgorICAgICAgICAodGVzdFNpbXBsZVBhdGNocG9pbnRXaXRoT3VwdXRDbG9iYmVyc0ZQ
QXJncyk6CisgICAgICAgICh0ZXN0UGF0Y2hwb2ludFdpdGhFYXJseUNsb2JiZXIpOgorICAgICAg
ICAodGVzdFBhdGNocG9pbnRDYWxsQXJnKToKKyAgICAgICAgKHRlc3RQYXRjaHBvaW50Rml4ZWRS
ZWdpc3Rlcik6CisgICAgICAgICh0ZXN0UGF0Y2hwb2ludEFueSk6CisgICAgICAgICh0ZXN0UGF0
Y2hwb2ludEdQU2NyYXRjaCk6CisgICAgICAgICh0ZXN0UGF0Y2hwb2ludEZQU2NyYXRjaCk6Cisg
ICAgICAgICh0ZXN0UGF0Y2hwb2ludExvdHNPZkxhdGVBbnlzKToKKyAgICAgICAgKHRlc3RQYXRj
aHBvaW50QW55SW1tKToKKyAgICAgICAgKiBiMy90ZXN0YjNfNS5jcHA6IEFkZGVkLgorICAgICAg
ICAodGVzdFBhdGNocG9pbnRNYW55SW1tcyk6CisgICAgICAgICh0ZXN0UGF0Y2hwb2ludFdpdGhS
ZWdpc3RlclJlc3VsdCk6CisgICAgICAgICh0ZXN0UGF0Y2hwb2ludFdpdGhTdGFja0FyZ3VtZW50
UmVzdWx0KToKKyAgICAgICAgKHRlc3RQYXRjaHBvaW50V2l0aEFueVJlc3VsdCk6CisgICAgICAg
ICh0ZXN0U2ltcGxlQ2hlY2spOgorICAgICAgICAodGVzdENoZWNrRmFsc2UpOgorICAgICAgICAo
dGVzdENoZWNrVHJ1ZSk6CisgICAgICAgICh0ZXN0Q2hlY2tMZXNzVGhhbik6CisgICAgICAgICh0
ZXN0Q2hlY2tNZWdhQ29tYm8pOgorICAgICAgICAodGVzdENoZWNrVHJpY2t5TWVnYUNvbWJvKToK
KyAgICAgICAgKHRlc3RDaGVja1R3b01lZ2FDb21ib3MpOgorICAgICAgICAodGVzdENoZWNrVHdv
Tm9uUmVkdW5kYW50TWVnYUNvbWJvcyk6CisgICAgICAgICh0ZXN0Q2hlY2tBZGRJbW0pOgorICAg
ICAgICAodGVzdENoZWNrQWRkSW1tQ29tbXV0ZSk6CisgICAgICAgICh0ZXN0Q2hlY2tBZGRJbW1T
b21lUmVnaXN0ZXIpOgorICAgICAgICAodGVzdENoZWNrQWRkKToKKyAgICAgICAgKHRlc3RDaGVj
a0FkZDY0KToKKyAgICAgICAgKHRlc3RDaGVja0FkZEZvbGQpOgorICAgICAgICAodGVzdENoZWNr
QWRkRm9sZEZhaWwpOgorICAgICAgICAodGVzdENoZWNrQWRkQXJndW1lbnRBbGlhc2luZzY0KToK
KyAgICAgICAgKHRlc3RDaGVja0FkZEFyZ3VtZW50QWxpYXNpbmczMik6CisgICAgICAgICh0ZXN0
Q2hlY2tBZGRTZWxmT3ZlcmZsb3c2NCk6CisgICAgICAgICh0ZXN0Q2hlY2tBZGRTZWxmT3ZlcmZs
b3czMik6CisgICAgICAgICh0ZXN0Q2hlY2tTdWJJbW0pOgorICAgICAgICAodGVzdENoZWNrU3Vi
QmFkSW1tKToKKyAgICAgICAgKHRlc3RDaGVja1N1Yik6CisgICAgICAgIChkb3VibGVTdWIpOgor
ICAgICAgICAodGVzdENoZWNrU3ViNjQpOgorICAgICAgICAodGVzdENoZWNrU3ViRm9sZCk6Cisg
ICAgICAgICh0ZXN0Q2hlY2tTdWJGb2xkRmFpbCk6CisgICAgICAgICh0ZXN0Q2hlY2tOZWcpOgor
ICAgICAgICAodGVzdENoZWNrTmVnNjQpOgorICAgICAgICAodGVzdENoZWNrTXVsKToKKyAgICAg
ICAgKHRlc3RDaGVja011bE1lbW9yeSk6CisgICAgICAgICh0ZXN0Q2hlY2tNdWwyKToKKyAgICAg
ICAgKHRlc3RDaGVja011bDY0KToKKyAgICAgICAgKHRlc3RDaGVja011bEZvbGQpOgorICAgICAg
ICAodGVzdENoZWNrTXVsRm9sZEZhaWwpOgorICAgICAgICAodGVzdENoZWNrTXVsQXJndW1lbnRB
bGlhc2luZzY0KToKKyAgICAgICAgKHRlc3RDaGVja011bEFyZ3VtZW50QWxpYXNpbmczMik6Cisg
ICAgICAgICh0ZXN0Q2hlY2tNdWw2NFNTaHIpOgorICAgICAgICAoZ2VuZXJpY1Rlc3RDb21wYXJl
KToKKyAgICAgICAgKG1vZGVsQ29tcGFyZSk6CisgICAgICAgICh0ZXN0Q29tcGFyZUxvYWQpOgor
ICAgICAgICAodGVzdENvbXBhcmVJbXBsKToKKyAgICAgICAgKHRlc3RDb21wYXJlKToKKyAgICAg
ICAgKHRlc3RFcXVhbERvdWJsZSk6CisgICAgICAgIChzaW1wbGVGdW5jdGlvbik6CisgICAgICAg
ICh0ZXN0Q2FsbFNpbXBsZSk6CisgICAgICAgICh0ZXN0Q2FsbFJhcmUpOgorICAgICAgICAodGVz
dENhbGxSYXJlTGl2ZSk6CisgICAgICAgICh0ZXN0Q2FsbFNpbXBsZVB1cmUpOgorICAgICAgICAo
ZnVuY3Rpb25XaXRoSGVsbGFBcmd1bWVudHMpOgorICAgICAgICAodGVzdENhbGxGdW5jdGlvbldp
dGhIZWxsYUFyZ3VtZW50cyk6CisgICAgICAgIChmdW5jdGlvbldpdGhIZWxsYUFyZ3VtZW50czIp
OgorICAgICAgICAodGVzdENhbGxGdW5jdGlvbldpdGhIZWxsYUFyZ3VtZW50czIpOgorICAgICAg
ICAoZnVuY3Rpb25XaXRoSGVsbGFBcmd1bWVudHMzKToKKyAgICAgICAgKHRlc3RDYWxsRnVuY3Rp
b25XaXRoSGVsbGFBcmd1bWVudHMzKToKKyAgICAgICAgKHRlc3RSZXR1cm5Eb3VibGUpOgorICAg
ICAgICAodGVzdFJldHVybkZsb2F0KToKKyAgICAgICAgKHNpbXBsZUZ1bmN0aW9uRG91YmxlKToK
KyAgICAgICAgKHRlc3RDYWxsU2ltcGxlRG91YmxlKToKKyAgICAgICAgKHNpbXBsZUZ1bmN0aW9u
RmxvYXQpOgorICAgICAgICAodGVzdENhbGxTaW1wbGVGbG9hdCk6CisgICAgICAgIChmdW5jdGlv
bldpdGhIZWxsYURvdWJsZUFyZ3VtZW50cyk6CisgICAgICAgICh0ZXN0Q2FsbEZ1bmN0aW9uV2l0
aEhlbGxhRG91YmxlQXJndW1lbnRzKToKKyAgICAgICAgKGZ1bmN0aW9uV2l0aEhlbGxhRmxvYXRB
cmd1bWVudHMpOgorICAgICAgICAodGVzdENhbGxGdW5jdGlvbldpdGhIZWxsYUZsb2F0QXJndW1l
bnRzKToKKyAgICAgICAgKHRlc3RMaW5lYXJTY2FuV2l0aENhbGxlZU9uU3RhY2spOgorICAgICAg
ICAodGVzdENoaWxsRGl2KToKKyAgICAgICAgKHRlc3RDaGlsbERpdlR3aWNlKToKKyAgICAgICAg
KHRlc3RDaGlsbERpdjY0KToKKyAgICAgICAgKHRlc3RNb2RBcmcpOgorICAgICAgICAodGVzdE1v
ZEFyZ3MpOgorICAgICAgICAodGVzdE1vZEltbXMpOgorICAgICAgICAodGVzdE1vZEFyZzMyKToK
KyAgICAgICAgKHRlc3RNb2RBcmdzMzIpOgorICAgICAgICAodGVzdE1vZEltbXMzMik6CisgICAg
ICAgICh0ZXN0Q2hpbGxNb2RBcmcpOgorICAgICAgICAodGVzdENoaWxsTW9kQXJncyk6CisgICAg
ICAgICh0ZXN0Q2hpbGxNb2RJbW1zKToKKyAgICAgICAgKHRlc3RDaGlsbE1vZEFyZzMyKToKKyAg
ICAgICAgKHRlc3RDaGlsbE1vZEFyZ3MzMik6CisgICAgICAgICh0ZXN0Q2hpbGxNb2RJbW1zMzIp
OgorICAgICAgICAodGVzdExvb3BXaXRoTXVsdGlwbGVIZWFkZXJFZGdlcyk6CisgICAgICAgICh0
ZXN0U3dpdGNoKToKKyAgICAgICAgKHRlc3RTd2l0Y2hTYW1lQ2FzZUFzRGVmYXVsdCk6CisgICAg
ICAgICh0ZXN0U3dpdGNoQ2hpbGxEaXYpOgorICAgICAgICAodGVzdFN3aXRjaFRhcmdldHRpbmdT
YW1lQmxvY2spOgorICAgICAgICAodGVzdFN3aXRjaFRhcmdldHRpbmdTYW1lQmxvY2tGb2xkUGF0
aENvbnN0YW50KToKKyAgICAgICAgKHRlc3RUcnVuY0ZvbGQpOgorICAgICAgICAodGVzdFpFeHQz
Mik6CisgICAgICAgICh0ZXN0WkV4dDMyRm9sZCk6CisgICAgICAgICh0ZXN0U0V4dDMyKToKKyAg
ICAgICAgKHRlc3RTRXh0MzJGb2xkKToKKyAgICAgICAgKHRlc3RUcnVuY1pFeHQzMik6CisgICAg
ICAgICh0ZXN0VHJ1bmNTRXh0MzIpOgorICAgICAgICAodGVzdFNFeHQ4KToKKyAgICAgICAgKHRl
c3RTRXh0OEZvbGQpOgorICAgICAgICAodGVzdFNFeHQ4U0V4dDgpOgorICAgICAgICAodGVzdFNF
eHQ4U0V4dDE2KToKKyAgICAgICAgKHRlc3RTRXh0OEJpdEFuZCk6CisgICAgICAgICh0ZXN0Qml0
QW5kU0V4dDgpOgorICAgICAgICAodGVzdFNFeHQxNik6CisgICAgICAgICh0ZXN0U0V4dDE2Rm9s
ZCk6CisgICAgICAgICh0ZXN0U0V4dDE2U0V4dDE2KToKKyAgICAgICAgKHRlc3RTRXh0MTZTRXh0
OCk6CisgICAgICAgICh0ZXN0U0V4dDE2Qml0QW5kKToKKyAgICAgICAgKHRlc3RCaXRBbmRTRXh0
MTYpOgorICAgICAgICAodGVzdFNFeHQzMkJpdEFuZCk6CisgICAgICAgICogYjMvdGVzdGIzXzYu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKHRlc3RCaXRBbmRTRXh0MzIpOgorICAgICAgICAodGVzdEJh
c2ljU2VsZWN0KToKKyAgICAgICAgKHRlc3RTZWxlY3RUZXN0KToKKyAgICAgICAgKHRlc3RTZWxl
Y3RDb21wYXJlRG91YmxlKToKKyAgICAgICAgKHRlc3RTZWxlY3RDb21wYXJlRmxvYXQpOgorICAg
ICAgICAodGVzdFNlbGVjdENvbXBhcmVGbG9hdFRvRG91YmxlKToKKyAgICAgICAgKHRlc3RTZWxl
Y3REb3VibGUpOgorICAgICAgICAodGVzdFNlbGVjdERvdWJsZVRlc3QpOgorICAgICAgICAodGVz
dFNlbGVjdERvdWJsZUNvbXBhcmVEb3VibGUpOgorICAgICAgICAodGVzdFNlbGVjdERvdWJsZUNv
bXBhcmVGbG9hdCk6CisgICAgICAgICh0ZXN0U2VsZWN0RmxvYXRDb21wYXJlRmxvYXQpOgorICAg
ICAgICAodGVzdFNlbGVjdERvdWJsZUNvbXBhcmVEb3VibGVXaXRoQWxpYXNpbmcpOgorICAgICAg
ICAodGVzdFNlbGVjdEZsb2F0Q29tcGFyZUZsb2F0V2l0aEFsaWFzaW5nKToKKyAgICAgICAgKHRl
c3RTZWxlY3RGb2xkKToKKyAgICAgICAgKHRlc3RTZWxlY3RJbnZlcnQpOgorICAgICAgICAodGVz
dENoZWNrU2VsZWN0KToKKyAgICAgICAgKHRlc3RDaGVja1NlbGVjdENoZWNrU2VsZWN0KToKKyAg
ICAgICAgKHRlc3RDaGVja1NlbGVjdEFuZENTRSk6CisgICAgICAgIChiM1Bvdyk6CisgICAgICAg
ICh0ZXN0UG93RG91YmxlQnlJbnRlZ2VyTG9vcCk6CisgICAgICAgICh0ZXN0VHJ1bmNPckhpZ2gp
OgorICAgICAgICAodGVzdFRydW5jT3JMb3cpOgorICAgICAgICAodGVzdEJpdEFuZE9ySGlnaCk6
CisgICAgICAgICh0ZXN0Qml0QW5kT3JMb3cpOgorICAgICAgICAodGVzdEJyYW5jaDY0RXF1YWwp
OgorICAgICAgICAodGVzdEJyYW5jaDY0RXF1YWxJbW0pOgorICAgICAgICAodGVzdEJyYW5jaDY0
RXF1YWxNZW0pOgorICAgICAgICAodGVzdEJyYW5jaDY0RXF1YWxNZW1JbW0pOgorICAgICAgICAo
dGVzdFN0b3JlOExvYWQ4Wik6CisgICAgICAgICh0ZXN0U3RvcmUxNkxvYWQxNlopOgorICAgICAg
ICAodGVzdFNTaHJTaGwzMik6CisgICAgICAgICh0ZXN0U1NoclNobDY0KToKKyAgICAgICAgKHRl
c3RUcml2aWFsSW5maW5pdGVMb29wKToKKyAgICAgICAgKHRlc3RGb2xkUGF0aEVxdWFsKToKKyAg
ICAgICAgKHRlc3RMU2hpZnRTZWxmMzIpOgorICAgICAgICAodGVzdFJTaGlmdFNlbGYzMik6Cisg
ICAgICAgICh0ZXN0VVJTaGlmdFNlbGYzMik6CisgICAgICAgICh0ZXN0TFNoaWZ0U2VsZjY0KToK
KyAgICAgICAgKHRlc3RSU2hpZnRTZWxmNjQpOgorICAgICAgICAodGVzdFVSU2hpZnRTZWxmNjQp
OgorICAgICAgICAodGVzdFBhdGNocG9pbnREb3VibGVSZWdzKToKKyAgICAgICAgKHRlc3RTcGls
bERlZlNtYWxsZXJUaGFuVXNlKToKKyAgICAgICAgKHRlc3RTcGlsbFVzZUxhcmdlclRoYW5EZWYp
OgorICAgICAgICAodGVzdExhdGVSZWdpc3Rlcik6CisgICAgICAgIChpbnRlcnByZXRlclByaW50
KToKKyAgICAgICAgKHRlc3RJbnRlcnByZXRlcik6CisgICAgICAgICh0ZXN0UmVkdWNlU3RyZW5n
dGhDaGVja0JvdHRvbVVzZUluQW5vdGhlckJsb2NrKToKKyAgICAgICAgKHRlc3RSZXNldFJlYWNo
YWJpbGl0eURhbmdsaW5nUmVmZXJlbmNlKToKKyAgICAgICAgKHRlc3RFbnRyeVN3aXRjaFNpbXBs
ZSk6CisgICAgICAgICh0ZXN0RW50cnlTd2l0Y2hOb0VudHJ5U3dpdGNoKToKKyAgICAgICAgKHRl
c3RFbnRyeVN3aXRjaFdpdGhDb21tb25QYXRocyk6CisgICAgICAgICh0ZXN0RW50cnlTd2l0Y2hX
aXRoQ29tbW9uUGF0aHNBbmROb25Ucml2aWFsRW50cnlwb2ludCk6CisgICAgICAgICh0ZXN0RW50
cnlTd2l0Y2hMb29wKToKKyAgICAgICAgKHRlc3RTb21lRWFybHlSZWdpc3Rlcik6CisgICAgICAg
ICh0ZXN0QnJhbmNoQml0QW5kSW1tRnVzaW9uKToKKyAgICAgICAgKHRlc3RUZXJtaW5hbFBhdGNo
cG9pbnRUaGF0TmVlZHNUb0JlU3BpbGxlZCk6CisgICAgICAgICh0ZXN0VGVybWluYWxQYXRjaHBv
aW50VGhhdE5lZWRzVG9CZVNwaWxsZWQyKToKKyAgICAgICAgKHRlc3RQYXRjaHBvaW50VGVybWlu
YWxSZXR1cm5WYWx1ZSk6CisgICAgICAgICh0ZXN0TWVtb3J5RmVuY2UpOgorICAgICAgICAodGVz
dFN0b3JlRmVuY2UpOgorICAgICAgICAodGVzdExvYWRGZW5jZSk6CisgICAgICAgICh0ZXN0VHJh
cHBpbmdMb2FkKToKKyAgICAgICAgKHRlc3RUcmFwcGluZ1N0b3JlKToKKyAgICAgICAgKHRlc3RU
cmFwcGluZ0xvYWRBZGRTdG9yZSk6CisgICAgICAgICh0ZXN0VHJhcHBpbmdMb2FkRENFKToKKyAg
ICAgICAgKHRlc3RUcmFwcGluZ1N0b3JlRWxpbWluYXRpb24pOgorICAgICAgICAodGVzdE1vdmVD
b25zdGFudHMpOgorICAgICAgICAodGVzdFBDT3JpZ2luTWFwRG9lc250SW5zZXJ0Tm9wcyk6Cisg
ICAgICAgICogYjMvdGVzdGIzXzcuY3BwOiBBZGRlZC4KKyAgICAgICAgKHRlc3RQaW5SZWdpc3Rl
cnMpOgorICAgICAgICAodGVzdFg4NkxlYUFkZEFkZFNobExlZnQpOgorICAgICAgICAodGVzdFg4
NkxlYUFkZEFkZFNobFJpZ2h0KToKKyAgICAgICAgKHRlc3RYODZMZWFBZGRBZGQpOgorICAgICAg
ICAodGVzdFg4NkxlYUFkZFNobFJpZ2h0KToKKyAgICAgICAgKHRlc3RYODZMZWFBZGRTaGxMZWZ0
U2NhbGUxKToKKyAgICAgICAgKHRlc3RYODZMZWFBZGRTaGxMZWZ0U2NhbGUyKToKKyAgICAgICAg
KHRlc3RYODZMZWFBZGRTaGxMZWZ0U2NhbGU0KToKKyAgICAgICAgKHRlc3RYODZMZWFBZGRTaGxM
ZWZ0U2NhbGU4KToKKyAgICAgICAgKHRlc3RBZGRTaGwzMik6CisgICAgICAgICh0ZXN0QWRkU2hs
NjQpOgorICAgICAgICAodGVzdEFkZFNobDY1KToKKyAgICAgICAgKHRlc3RSZWR1Y2VTdHJlbmd0
aFJlYXNzb2NpYXRpb24pOgorICAgICAgICAodGVzdExvYWRCYXNlSW5kZXhTaGlmdDIpOgorICAg
ICAgICAodGVzdExvYWRCYXNlSW5kZXhTaGlmdDMyKToKKyAgICAgICAgKHRlc3RPcHRpbWl6ZU1h
dGVyaWFsaXphdGlvbik6CisgICAgICAgIChnZW5lcmF0ZUxvb3ApOgorICAgICAgICAobWFrZUFy
cmF5Rm9yTG9vcHMpOgorICAgICAgICAoZ2VuZXJhdGVMb29wTm90QmFja3dhcmRzRG9taW5hbnQp
OgorICAgICAgICAob25lRnVuY3Rpb24pOgorICAgICAgICAobm9PcEZ1bmN0aW9uKToKKyAgICAg
ICAgKHRlc3RMSUNNUHVyZSk6CisgICAgICAgICh0ZXN0TElDTVB1cmVTaWRlRXhpdHMpOgorICAg
ICAgICAodGVzdExJQ01QdXJlV3JpdGVzUGlubmVkKToKKyAgICAgICAgKHRlc3RMSUNNUHVyZVdy
aXRlcyk6CisgICAgICAgICh0ZXN0TElDTVJlYWRzTG9jYWxTdGF0ZSk6CisgICAgICAgICh0ZXN0
TElDTVJlYWRzUGlubmVkKToKKyAgICAgICAgKHRlc3RMSUNNUmVhZHMpOgorICAgICAgICAodGVz
dExJQ01QdXJlTm90QmFja3dhcmRzRG9taW5hbnQpOgorICAgICAgICAodGVzdExJQ01QdXJlRm9p
bGVkQnlDaGlsZCk6CisgICAgICAgICh0ZXN0TElDTVB1cmVOb3RCYWNrd2FyZHNEb21pbmFudEZv
aWxlZEJ5Q2hpbGQpOgorICAgICAgICAodGVzdExJQ01FeGl0c1NpZGV3YXlzKToKKyAgICAgICAg
KHRlc3RMSUNNV3JpdGVzTG9jYWxTdGF0ZSk6CisgICAgICAgICh0ZXN0TElDTVdyaXRlcyk6Cisg
ICAgICAgICh0ZXN0TElDTUZlbmNlKToKKyAgICAgICAgKHRlc3RMSUNNV3JpdGVzUGlubmVkKToK
KyAgICAgICAgKHRlc3RMSUNNQ29udHJvbERlcGVuZGVudCk6CisgICAgICAgICh0ZXN0TElDTUNv
bnRyb2xEZXBlbmRlbnROb3RCYWNrd2FyZHNEb21pbmFudCk6CisgICAgICAgICh0ZXN0TElDTUNv
bnRyb2xEZXBlbmRlbnRTaWRlRXhpdHMpOgorICAgICAgICAodGVzdExJQ01SZWFkc1Bpbm5lZFdy
aXRlc1Bpbm5lZCk6CisgICAgICAgICh0ZXN0TElDTVJlYWRzV3JpdGVzRGlmZmVyZW50SGVhcHMp
OgorICAgICAgICAodGVzdExJQ01SZWFkc1dyaXRlc092ZXJsYXBwaW5nSGVhcHMpOgorICAgICAg
ICAodGVzdExJQ01EZWZhdWx0Q2FsbCk6CisgICAgICAgICh0ZXN0RGVwZW5kMzIpOgorICAgICAg
ICAodGVzdERlcGVuZDY0KToKKyAgICAgICAgKHRlc3RXYXNtQm91bmRzQ2hlY2spOgorICAgICAg
ICAodGVzdFdhc21BZGRyZXNzKToKKyAgICAgICAgKHRlc3RGYXN0VExTTG9hZCk6CisgICAgICAg
ICh0ZXN0RmFzdFRMU1N0b3JlKToKKyAgICAgICAgKGRvdWJsZUVxKToKKyAgICAgICAgKGRvdWJs
ZU5lcSk6CisgICAgICAgIChkb3VibGVHdCk6CisgICAgICAgIChkb3VibGVHdGUpOgorICAgICAg
ICAoZG91YmxlTHQpOgorICAgICAgICAoZG91YmxlTHRlKToKKyAgICAgICAgKHRlc3REb3VibGVM
aXRlcmFsQ29tcGFyaXNvbik6CisgICAgICAgICh0ZXN0RmxvYXRFcXVhbE9yVW5vcmRlcmVkRm9s
ZGluZyk6CisgICAgICAgICh0ZXN0RmxvYXRFcXVhbE9yVW5vcmRlcmVkRm9sZGluZ05hTik6Cisg
ICAgICAgICh0ZXN0RmxvYXRFcXVhbE9yVW5vcmRlcmVkRG9udEZvbGQpOgorICAgICAgICAoZnVu
Y3Rpb25OaW5lQXJncyk6CisgICAgICAgICh0ZXN0U2h1ZmZsZURvZXNudFRyYXNoQ2FsbGVlU2F2
ZXMpOgorICAgICAgICAodGVzdERlbW90ZVBhdGNocG9pbnRUZXJtaW5hbCk6CisgICAgICAgICh0
ZXN0UmVwb3J0VXNlZFJlZ2lzdGVyc0xhdGVVc2VGb2xsb3dlZEJ5RWFybHlEZWZEb2VzTm90TWFy
a1VzZUFzRGVhZCk6CisgICAgICAgICh0ZXN0SW5maW5pdGVMb29wRG9lc250Q2F1c2VCYWRIb2lz
dGluZyk6CisgICAgICAgICogYjMvdGVzdGIzXzguY3BwOiBBZGRlZC4KKyAgICAgICAgKHRlc3RB
dG9taWNXZWFrQ0FTKToKKyAgICAgICAgKHRlc3RBdG9taWNTdHJvbmdDQVMpOgorICAgICAgICAo
dGVzdEF0b21pY1hjaGcpOgorICAgICAgICAoYWRkQXRvbWljVGVzdHMpOgorICAgICAgICAodGVz
dExvYWQpOgorICAgICAgICAoYWRkTG9hZFRlc3RzKToKKwogMjAxOS0wNy0zMCAgWXVzdWtlIFN1
enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEVtaXQgd3JpdGUgYmFy
cmllciBhZnRlciBzdG9yaW5nIGluc3RlYWQgb2YgYmVmb3JlIHN0b3JpbmcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggNzNmNmVkZWNkNzYzYjg3ZGM3NDcwZTBkYmNjOGY4OTBjMzRl
MzYzZi4uZmFmMjU5ZWJlOGNlZDI1MWVlZTYzYzJiNzc2MDQ0MjcwZjA4MzJlNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY5MCw3ICs2OTAsNyBAQAogCQkwRkVDODU5MTFCREFD
REM3MDA4MEZGNzQgLyogQWlyVmFsaWRhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NTZDMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJWYWxpZGF0
ZS5oICovOyB9OwogCQkwRkVDODVBMzFCREI1Q0YxMDA4MEZGNzQgLyogRm91bmRhdGlvbi5mcmFt
ZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUYwRUI2MTA1Qzg2QzZCMDBFNkRGMUIgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi87IH07CiAJ
CTBGRUM4NUE0MUJEQjVDRjEwMDgwRkY3NCAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4g
RnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzJGNUJEOTA4
MjJBMUM3MDA3MzY5NzUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwotCQkwRkVD
ODVBRjFCREI1RDVFMDA4MEZGNzQgLyogdGVzdGIzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NUFFMUJEQjVENUUwMDgwRkY3NCAvKiB0ZXN0
YjMuY3BwICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICItTzAgLURSRUxFQVNFX1dJ
VEhPVVRfT1BUSU1JWkFUSU9OUyI7IH07IH07CisJCTBGRUM4NUFGMUJEQjVENUUwMDgwRkY3NCAv
KiB0ZXN0YjNfMS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkVDODVBRTFCREI1RDVFMDA4MEZGNzQgLyogdGVzdGIzXzEuY3BwICovOyBzZXR0aW5n
cyA9IHtDT01QSUxFUl9GTEFHUyA9ICItTzAgLURSRUxFQVNFX1dJVEhPVVRfT1BUSU1JWkFUSU9O
UyI7IH07IH07CiAJCTBGRUM4NUIzMUJERUQ5NTcwMDgwRkY3NCAvKiBCM0NvbnN0UHRyVmFsdWUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NUIy
MUJERUQ5NTcwMDgwRkY3NCAvKiBCM0NvbnN0UHRyVmFsdWUuaCAqLzsgfTsKIAkJMEZFQzg1QkEx
QkUxNDYyRjAwODBGRjc0IC8qIEIzSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODVCNTFCRTE0NjJGMDA4MEZGNzQgLyogQjNJ
bnNlcnRpb25TZXQuaCAqLzsgfTsKIAkJMEZFQzg1QkIxQkUxNDYyRjAwODBGRjc0IC8qIEIzSW5z
ZXJ0aW9uU2V0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZFQzg1QjYxQkUxNDYyRjAwODBGRjc0IC8qIEIzSW5zZXJ0aW9uU2V0SW5saW5l
cy5oICovOyB9OwpAQCAtMTEwNiw2ICsxMTA2LDEzIEBACiAJCTVCNzBDRkRFMURCNjlFNjYwMEVD
MjNGOSAvKiBKU0FzeW5jRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVCNzBDRkQ4MURCNjlFNUMwMEVDMjNGOSAvKiBKU0FzeW5jRnVuY3Rp
b24uaCAqLzsgfTsKIAkJNUI3MENGRTAxREI2OUU2NjAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Q
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVCNzBDRkRBMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmggKi87
IH07CiAJCTVCNzBDRkUyMURCNjlFNjYwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVCNzBD
RkRDMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuaCAqLzsgfTsK
KwkJNUMzQTc3QjQyMkYyNDdGQzAwMzgyN0ZGIC8qIHRlc3RiM184LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDM0E3N0IzMjJGMjQ3Q0IwMDM4MjdG
RiAvKiB0ZXN0YjNfOC5jcHAgKi87IH07CisJCTVDM0E3N0I1MjJGMjQ4MDAwMDM4MjdGRiAvKiB0
ZXN0YjNfNy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1QzNBNzdBRDIyRjI0N0M5MDAzODI3RkYgLyogdGVzdGIzXzcuY3BwICovOyB9OworCQk1QzNB
NzdCNjIyRjI0ODAzMDAzODI3RkYgLyogdGVzdGIzXzYuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMzQTc3QUYyMkYyNDdDQTAwMzgyN0ZGIC8qIHRl
c3RiM182LmNwcCAqLzsgfTsKKwkJNUMzQTc3QjcyMkYyNDgwNjAwMzgyN0ZGIC8qIHRlc3RiM181
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDM0E3
N0IwMjJGMjQ3Q0IwMDM4MjdGRiAvKiB0ZXN0YjNfNS5jcHAgKi87IH07CisJCTVDM0E3N0I4MjJG
MjQ4MDkwMDM4MjdGRiAvKiB0ZXN0YjNfNC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1QzNBNzdBRTIyRjI0N0NBMDAzODI3RkYgLyogdGVzdGIzXzQu
Y3BwICovOyB9OworCQk1QzNBNzdCOTIyRjI0ODBCMDAzODI3RkYgLyogdGVzdGIzXzMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMzQTc3QjEyMkYy
NDdDQjAwMzgyN0ZGIC8qIHRlc3RiM18zLmNwcCAqLzsgfTsKKwkJNUMzQTc3QkEyMkYyNDgwRjAw
MzgyN0ZGIC8qIHRlc3RiM18yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDM0E3N0IyMjJGMjQ3Q0IwMDM4MjdGRiAvKiB0ZXN0YjNfMi5jcHAgKi87
IH07CiAJCTVDNDE5NjYyMjI3MEUwMDAwMDQ3QjdDRCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlckNvbXBhdGliaWxpdHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNUM0MTk2NjEyMjcwREZGMzAwNDdCN0NEIC8qIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyQ29tcGF0aWJpbGl0eS5jcHAgKi87IH07CiAJCTVDNEU4RTk2MURCRUJFNjIwMDM2
RjFGQyAvKiBKU09OUGFyc2VUZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDNEU4RTk0MURCRUJEQTIwMDM2RjFGQyAvKiBKU09OUGFyc2VUZXN0
LmNwcCAqLzsgfTsKIAkJNUQ1RDhBRDEwRTBEMEVCRTAwRjlDNjkyIC8qIGxpYmVkaXQuZHlsaWIg
aW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RDVEOEFE
MDBFMEQwRUJFMDBGOUM2OTIgLyogbGliZWRpdC5keWxpYiAqLzsgfTsKQEAgLTMwNjIsNyArMzA2
OSw3IEBACiAJCTBGRUM4NTZDMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJWYWxpZGF0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBaXJWYWxpZGF0ZS5oOyBwYXRoID0gYjMvYWly
L0FpclZhbGlkYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRUM4NTkyMUJE
QjFFMTAwMDgwRkY3NCAvKiBBaXJHZW5lcmF0ZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gQWlyR2VuZXJhdGVkLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJHZW5lcmF0
ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkVDODVBRDFCREI1Q0YxMDA4
MEZGNzQgLyogdGVzdGIzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0Rmls
ZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7
IHBhdGggPSB0ZXN0YjM7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0JCTBG
RUM4NUFFMUJEQjVENUUwMDgwRkY3NCAvKiB0ZXN0YjMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gdGVzdGIzLmNwcDsgcGF0aCA9IGIzL3Rlc3RiMy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUM4NUFFMUJEQjVENUUwMDgwRkY3NCAvKiB0ZXN0
YjNfMS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSB0ZXN0YjNfMS5j
cHA7IHBhdGggPSBiMy90ZXN0YjNfMS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGRUM4NUIyMUJERUQ5NTcwMDgwRkY3NCAvKiBCM0NvbnN0UHRyVmFsdWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNDb25zdFB0clZhbHVlLmg7IHBhdGggPSBiMy9CM0Nv
bnN0UHRyVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFQzg1QjQxQkUx
NDYyRjAwODBGRjc0IC8qIEIzSW5zZXJ0aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEIzSW5zZXJ0aW9uU2V0LmNwcDsgcGF0aCA9IGIzL0IzSW5zZXJ0aW9u
U2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFQzg1QjUxQkUxNDYyRjAw
ODBGRjc0IC8qIEIzSW5zZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEIzSW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBiMy9CM0luc2VydGlvblNldC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzY5MCw2ICszNjk3LDE0IEBACiAJCTVCNzBDRkRDMURC
NjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVCNzBDRkREMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1
bmN0aW9uQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUI4MjQzMDQxREI3QUE0OTAwRUE2Mzg0IC8qIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUu
anMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBBc3luY0Z1bmN0aW9u
UHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzNBNzdBRDIyRjI0
N0M5MDAzODI3RkYgLyogdGVzdGIzXzcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gdGVzdGIzXzcuY3BwOyBwYXRoID0gYjMvdGVzdGIzXzcuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1QzNBNzdBRTIyRjI0N0NBMDAzODI3RkYgLyogdGVzdGIzXzQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gdGVzdGIzXzQuY3BwOyBw
YXRoID0gYjMvdGVzdGIzXzQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzNB
NzdBRjIyRjI0N0NBMDAzODI3RkYgLyogdGVzdGIzXzYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gdGVzdGIzXzYuY3BwOyBwYXRoID0gYjMvdGVzdGIzXzYuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzNBNzdCMDIyRjI0N0NCMDAzODI3RkYgLyog
dGVzdGIzXzUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gdGVzdGIz
XzUuY3BwOyBwYXRoID0gYjMvdGVzdGIzXzUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1QzNBNzdCMTIyRjI0N0NCMDAzODI3RkYgLyogdGVzdGIzXzMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gdGVzdGIzXzMuY3BwOyBwYXRoID0gYjMvdGVzdGIz
XzMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzNBNzdCMjIyRjI0N0NCMDAz
ODI3RkYgLyogdGVzdGIzXzIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gdGVzdGIzXzIuY3BwOyBwYXRoID0gYjMvdGVzdGIzXzIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1QzNBNzdCMzIyRjI0N0NCMDAzODI3RkYgLyogdGVzdGIzXzguY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gdGVzdGIzXzguY3BwOyBwYXRoID0g
YjMvdGVzdGIzXzguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzNBNzdCQjIy
RjI0ODkwMDAzODI3RkYgLyogdGVzdGIzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IHRlc3RiMy5oOyBwYXRoID0gYjMvdGVzdGIzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVDNDE5NjYxMjI3MERGRjMwMDQ3QjdDRCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlckNvbXBhdGliaWxpdHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJDb21wYXRpYmlsaXR5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM0RThFOTQxREJFQkRBMjAwMzZGMUZDIC8qIEpTT05QYXJz
ZVRlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNPTlBhcnNl
VGVzdC5jcHA7IHBhdGggPSBBUEkvdGVzdHMvSlNPTlBhcnNlVGVzdC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTVDNEU4RTk1MURCRUJEQTIwMDM2RjFGQyAvKiBKU09OUGFyc2VU
ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTT05QYXJzZVRlc3QuaDsg
cGF0aCA9IEFQSS90ZXN0cy9KU09OUGFyc2VUZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC01NTQ1LDcgKzU1NjAsMTUgQEAKIAkJCQk1MzQxRkM3MTFEQUMzNDNDMDBFN0U0RDcg
LyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oICovLAogCQkJCTBGMkM2M0FEMUU2MEFFM0MwMEMx
MzgzOSAvKiBCM1dpZHRoLmNwcCAqLywKIAkJCQkwRjJDNjNBRTFFNjBBRTNEMDBDMTM4MzkgLyog
QjNXaWR0aC5oICovLAotCQkJCTBGRUM4NUFFMUJEQjVENUUwMDgwRkY3NCAvKiB0ZXN0YjMuY3Bw
ICovLAorCQkJCTVDM0E3N0JCMjJGMjQ4OTAwMDM4MjdGRiAvKiB0ZXN0YjMuaCAqLywKKwkJCQkw
RkVDODVBRTFCREI1RDVFMDA4MEZGNzQgLyogdGVzdGIzXzEuY3BwICovLAorCQkJCTVDM0E3N0Iy
MjJGMjQ3Q0IwMDM4MjdGRiAvKiB0ZXN0YjNfMi5jcHAgKi8sCisJCQkJNUMzQTc3QjEyMkYyNDdD
QjAwMzgyN0ZGIC8qIHRlc3RiM18zLmNwcCAqLywKKwkJCQk1QzNBNzdBRTIyRjI0N0NBMDAzODI3
RkYgLyogdGVzdGIzXzQuY3BwICovLAorCQkJCTVDM0E3N0IwMjJGMjQ3Q0IwMDM4MjdGRiAvKiB0
ZXN0YjNfNS5jcHAgKi8sCisJCQkJNUMzQTc3QUYyMkYyNDdDQTAwMzgyN0ZGIC8qIHRlc3RiM182
LmNwcCAqLywKKwkJCQk1QzNBNzdBRDIyRjI0N0M5MDAzODI3RkYgLyogdGVzdGIzXzcuY3BwICov
LAorCQkJCTVDM0E3N0IzMjJGMjQ3Q0IwMDM4MjdGRiAvKiB0ZXN0YjNfOC5jcHAgKi8sCiAJCQkp
OwogCQkJbmFtZSA9IGIzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTEwNzA4LDcg
KzEwNzMxLDE0IEBACiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0
aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKLQkJCQkwRkVDODVBRjFCREI1RDVF
MDA4MEZGNzQgLyogdGVzdGIzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGRUM4NUFGMUJEQjVE
NUUwMDgwRkY3NCAvKiB0ZXN0YjNfMS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1QzNBNzdCQTIy
RjI0ODBGMDAzODI3RkYgLyogdGVzdGIzXzIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUMzQTc3
QjkyMkYyNDgwQjAwMzgyN0ZGIC8qIHRlc3RiM18zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVD
M0E3N0I4MjJGMjQ4MDkwMDM4MjdGRiAvKiB0ZXN0YjNfNC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk1QzNBNzdCNzIyRjI0ODA2MDAzODI3RkYgLyogdGVzdGIzXzUuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNUMzQTc3QjYyMkYyNDgwMzAwMzgyN0ZGIC8qIHRlc3RiM182LmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTVDM0E3N0I1MjJGMjQ4MDAwMDM4MjdGRiAvKiB0ZXN0YjNfNy5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk1QzNBNzdCNDIyRjI0N0ZDMDAzODI3RkYgLyogdGVzdGIzXzguY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA0NDExZTAzYjkwZTEwMGI1YzJlYzdkNzY4MTEzYTliMDY1ZTM5ZTc1
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTkyMTYgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLQotI2luY2x1ZGUgIkFpckNvZGUuaCIKLSNpbmNsdWRlICJB
aXJJbnN0SW5saW5lcy5oIgotI2luY2x1ZGUgIkFpclZhbGlkYXRlLmgiCi0jaW5jbHVkZSAiQWxs
b3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmgiCi0jaW5jbHVkZSAiQjNBcmd1bWVudFJlZ1Zh
bHVlLmgiCi0jaW5jbHVkZSAiQjNBdG9taWNWYWx1ZS5oIgotI2luY2x1ZGUgIkIzQmFzaWNCbG9j
a0lubGluZXMuaCIKLSNpbmNsdWRlICJCM0JyZWFrQ3JpdGljYWxFZGdlcy5oIgotI2luY2x1ZGUg
IkIzQ0NhbGxWYWx1ZS5oIgotI2luY2x1ZGUgIkIzQ29tcGlsYXRpb24uaCIKLSNpbmNsdWRlICJC
M0NvbXBpbGUuaCIKLSNpbmNsdWRlICJCM0NvbXB1dGVEaXZpc2lvbk1hZ2ljLmgiCi0jaW5jbHVk
ZSAiQjNDb25zdDMyVmFsdWUuaCIKLSNpbmNsdWRlICJCM0NvbnN0NjRWYWx1ZS5oIgotI2luY2x1
ZGUgIkIzQ29uc3RQdHJWYWx1ZS5oIgotI2luY2x1ZGUgIkIzRWZmZWN0cy5oIgotI2luY2x1ZGUg
IkIzRmVuY2VWYWx1ZS5oIgotI2luY2x1ZGUgIkIzRml4U1NBLmgiCi0jaW5jbHVkZSAiQjNHZW5l
cmF0ZS5oIgotI2luY2x1ZGUgIkIzTG93ZXJUb0Fpci5oIgotI2luY2x1ZGUgIkIzTWF0aEV4dHJh
cy5oIgotI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIKLSNpbmNsdWRlICJCM01vdmVDb25zdGFu
dHMuaCIKLSNpbmNsdWRlICJCM05hdGl2ZVRyYWl0cy5oIgotI2luY2x1ZGUgIkIzUHJvY2VkdXJl
LmgiCi0jaW5jbHVkZSAiQjNSZWR1Y2VTdHJlbmd0aC5oIgotI2luY2x1ZGUgIkIzU2xvdEJhc2VW
YWx1ZS5oIgotI2luY2x1ZGUgIkIzU3RhY2tTbG90LmgiCi0jaW5jbHVkZSAiQjNTdGFja21hcEdl
bmVyYXRpb25QYXJhbXMuaCIKLSNpbmNsdWRlICJCM1N3aXRjaFZhbHVlLmgiCi0jaW5jbHVkZSAi
QjNVcHNpbG9uVmFsdWUuaCIKLSNpbmNsdWRlICJCM1VzZUNvdW50cy5oIgotI2luY2x1ZGUgIkIz
VmFsaWRhdGUuaCIKLSNpbmNsdWRlICJCM1ZhbHVlSW5saW5lcy5oIgotI2luY2x1ZGUgIkIzVmFy
aWFibGVWYWx1ZS5oIgotI2luY2x1ZGUgIkIzV2FzbUFkZHJlc3NWYWx1ZS5oIgotI2luY2x1ZGUg
IkIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCIKLSNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKLSNp
bmNsdWRlICJGUFJJbmZvLmgiCi0jaW5jbHVkZSAiR1BSSW5mby5oIgotI2luY2x1ZGUgIkluaXRp
YWxpemVUaHJlYWRpbmcuaCIKLSNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCi0jaW5jbHVkZSAiTGlu
a0J1ZmZlci5oIgotI2luY2x1ZGUgIlB1cmVOYU4uaCIKLSNpbmNsdWRlIDxjbWF0aD4KLSNpbmNs
dWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8d3RmL0Zhc3RUTFMuaD4KLSNpbmNsdWRlIDx3dGYvSW5k
ZXhTZXQuaD4KLSNpbmNsdWRlIDx3dGYvTGlzdER1bXAuaD4KLSNpbmNsdWRlIDx3dGYvTG9jay5o
PgotI2luY2x1ZGUgPHd0Zi9OdW1iZXJPZkNvcmVzLmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExpc3Qu
aD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
Q29tbW9uLmg+Ci0KLS8vIFdlIGRvbid0IGhhdmUgYSBOT19SRVRVUk5fRFVFX1RPX0VYSVQsIG5v
ciBzaG91bGQgd2UuIFRoYXQncyByaWRpY3Vsb3VzLgotc3RhdGljIGJvb2wgaGlkZGVuVHJ1dGhC
ZWNhdXNlTm9SZXR1cm5Jc1N0dXBpZCgpIHsgcmV0dXJuIHRydWU7IH0KLQotc3RhdGljIHZvaWQg
dXNhZ2UoKQotewotICAgIGRhdGFMb2coIlVzYWdlOiB0ZXN0YjMgWzxmaWx0ZXI+XVxuIik7Ci0g
ICAgaWYgKGhpZGRlblRydXRoQmVjYXVzZU5vUmV0dXJuSXNTdHVwaWQoKSkKLSAgICAgICAgZXhp
dCgxKTsKLX0KLQotI2lmIEVOQUJMRShCM19KSVQpCi0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci11
c2luZyBuYW1lc3BhY2UgSlNDOjpCMzsKLQotbmFtZXNwYWNlIHsKLQotYm9vbCBzaG91bGRCZVZl
cmJvc2UoKQotewotICAgIHJldHVybiBzaG91bGREdW1wSVIoQjNNb2RlKTsKLX0KLQotTG9jayBj
cmFzaExvY2s7Ci0KLS8vIE5vdGhpbmcgZmFuY3kgZm9yIG5vdzsgd2UganVzdCB1c2UgdGhlIGV4
aXN0aW5nIFdURiBhc3NlcnRpb24gbWFjaGluZXJ5LgotI2RlZmluZSBDSEVDSyh4KSBkbyB7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAg
ICBpZiAoISEoeCkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBjcmFzaExvY2subG9jaygpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBX
VEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKF9fRklMRV9fLCBfX0xJTkVfXywgV1RGX1BSRVRUWV9G
VU5DVElPTiwgI3gpOyBcCi0gICAgICAgIENSQVNIKCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSB3aGlsZSAoZmFsc2UpCi0K
LSNkZWZpbmUgQ0hFQ0tfRVEoeCwgeSkgZG8geyBcCi0gICAgICAgIGF1dG8gX194ID0gKHgpOyBc
Ci0gICAgICAgIGF1dG8gX195ID0gKHkpOyBcCi0gICAgICAgIGlmIChfX3ggPT0gX195KSBcCi0g
ICAgICAgICAgICBicmVhazsgXAotICAgICAgICBjcmFzaExvY2subG9jaygpOyBcCi0gICAgICAg
IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoX19GSUxFX18sIF9fTElORV9fLCBXVEZfUFJFVFRZ
X0ZVTkNUSU9OLCB0b0NTdHJpbmcoI3ggIiA9PSAiICN5LCAiICgiICN4ICIgPT0gIiwgX194LCAi
LCAiICN5ICIgPT0gIiwgX195LCAiKSIpLmRhdGEoKSk7IFwKLSAgICAgICAgQ1JBU0goKTsgXAot
ICAgIH0gd2hpbGUgKGZhbHNlKQotCi1zdGQ6OnVuaXF1ZV9wdHI8Q29tcGlsYXRpb24+IGNvbXBp
bGVQcm9jKFByb2NlZHVyZSYgcHJvY2VkdXJlLCB1bnNpZ25lZCBvcHRMZXZlbCA9IE9wdGlvbnM6
OmRlZmF1bHRCM09wdExldmVsKCkpCi17Ci0gICAgcHJvY2VkdXJlLnNldE9wdExldmVsKG9wdExl
dmVsKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb21waWxhdGlvbj4oQjM6OmNvbXBp
bGUocHJvY2VkdXJlKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFy
Z3VtZW50cz4KLVQgaW52b2tlKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxCM0NvbXBpbGF0aW9uUHRy
VGFnPiBwdHIsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCi17Ci0gICAgdm9pZCogZXhlY3V0YWJs
ZUFkZHJlc3MgPSB1bnRhZ0NGdW5jdGlvblB0cjxCM0NvbXBpbGF0aW9uUHRyVGFnPihwdHIuZXhl
Y3V0YWJsZUFkZHJlc3MoKSk7Ci0gICAgVCAoKmZ1bmN0aW9uKShBcmd1bWVudHMuLi4pID0gYml0
d2lzZV9jYXN0PFQoKikoQXJndW1lbnRzLi4uKT4oZXhlY3V0YWJsZUFkZHJlc3MpOwotICAgIHJl
dHVybiBmdW5jdGlvbihhcmd1bWVudHMuLi4pOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZS4uLiBBcmd1bWVudHM+Ci1UIGludm9rZShjb25zdCBDb21waWxhdGlvbiYgY29kZSwg
QXJndW1lbnRzLi4uIGFyZ3VtZW50cykKLXsKLSAgICByZXR1cm4gaW52b2tlPFQ+KGNvZGUuY29k
ZSgpLCBhcmd1bWVudHMuLi4pOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4u
LiBBcmd1bWVudHM+Ci1UIGNvbXBpbGVBbmRSdW4oUHJvY2VkdXJlJiBwcm9jZWR1cmUsIEFyZ3Vt
ZW50cy4uLiBhcmd1bWVudHMpCi17Ci0gICAgcmV0dXJuIGludm9rZTxUPigqY29tcGlsZVByb2Mo
cHJvY2VkdXJlKSwgYXJndW1lbnRzLi4uKTsKLX0KLQotdm9pZCBsb3dlclRvQWlyRm9yVGVzdGlu
ZyhQcm9jZWR1cmUmIHByb2MpCi17Ci0gICAgcHJvYy5yZXNldFJlYWNoYWJpbGl0eSgpOwotICAg
IAotICAgIGlmIChzaG91bGRCZVZlcmJvc2UoKSkKLSAgICAgICAgZGF0YUxvZygiQjMgYmVmb3Jl
IGxvd2VyaW5nOlxuIiwgcHJvYyk7Ci0gICAgCi0gICAgdmFsaWRhdGUocHJvYyk7Ci0gICAgbG93
ZXJUb0Fpcihwcm9jKTsKLSAgICAKLSAgICBpZiAoc2hvdWxkQmVWZXJib3NlKCkpCi0gICAgICAg
IGRhdGFMb2coIkFpciBhZnRlciBsb3dlcmluZzpcbiIsIHByb2MuY29kZSgpKTsKLSAgICAKLSAg
ICBBaXI6OnZhbGlkYXRlKHByb2MuY29kZSgpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Yz4KLXZvaWQgY2hlY2tEaXNhc3NlbWJseShDb21waWxhdGlvbiYgY29tcGlsYXRpb24sIGNvbnN0
IEZ1bmMmIGZ1bmMsIGNvbnN0IENTdHJpbmcmIGZhaWxUZXh0KQotewotICAgIENTdHJpbmcgZGlz
YXNzZW1ibHkgPSBjb21waWxhdGlvbi5kaXNhc3NlbWJseSgpOwotICAgIGlmIChmdW5jKGRpc2Fz
c2VtYmx5LmRhdGEoKSkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBjcmFzaExvY2subG9j
aygpOwotICAgIGRhdGFMb2coIkJhZCBsb3dlcmluZyEgICIsIGZhaWxUZXh0LCAiXG4iKTsKLSAg
ICBkYXRhTG9nKGRpc2Fzc2VtYmx5KTsKLSAgICBDUkFTSCgpOwotfQotCi12b2lkIGNoZWNrVXNl
c0luc3RydWN0aW9uKENvbXBpbGF0aW9uJiBjb21waWxhdGlvbiwgY29uc3QgY2hhciogdGV4dCkK
LXsKLSAgICBjaGVja0Rpc2Fzc2VtYmx5KAotICAgICAgICBjb21waWxhdGlvbiwKLSAgICAgICAg
WyZdIChjb25zdCBjaGFyKiBkaXNhc3NlbWJseSkgLT4gYm9vbCB7Ci0gICAgICAgICAgICByZXR1
cm4gc3Ryc3RyKGRpc2Fzc2VtYmx5LCB0ZXh0KTsKLSAgICAgICAgfSwKLSAgICAgICAgdG9DU3Ry
aW5nKCJFeHBlY3RlZCB0byBmaW5kICIsIHRleHQsICIgYnV0IGRpZG50ISIpKTsKLX0KLQotdm9p
ZCBjaGVja0RvZXNOb3RVc2VJbnN0cnVjdGlvbihDb21waWxhdGlvbiYgY29tcGlsYXRpb24sIGNv
bnN0IGNoYXIqIHRleHQpCi17Ci0gICAgY2hlY2tEaXNhc3NlbWJseSgKLSAgICAgICAgY29tcGls
YXRpb24sCi0gICAgICAgIFsmXSAoY29uc3QgY2hhciogZGlzYXNzZW1ibHkpIC0+IGJvb2wgewot
ICAgICAgICAgICAgcmV0dXJuICFzdHJzdHIoZGlzYXNzZW1ibHksIHRleHQpOwotICAgICAgICB9
LAotICAgICAgICB0b0NTdHJpbmcoIkRpZCBub3QgZXhwZWN0ZWQgdG8gZmluZCAiLCB0ZXh0LCAi
IGJ1dCBpdCdzIHRoZXJlISIpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KLXN0cnVj
dCBPcGVyYW5kIHsKLSAgICBjb25zdCBjaGFyKiBuYW1lOwotICAgIFR5cGUgdmFsdWU7Ci19Owot
Ci10eXBlZGVmIE9wZXJhbmQ8aW50NjRfdD4gSW50NjRPcGVyYW5kOwotdHlwZWRlZiBPcGVyYW5k
PGludDMyX3Q+IEludDMyT3BlcmFuZDsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRmxvYXRUeXBlPgot
dm9pZCBwb3B1bGF0ZVdpdGhJbnRlcmVzdGluZ1ZhbHVlcyhWZWN0b3I8T3BlcmFuZDxGbG9hdFR5
cGU+PiYgb3BlcmFuZHMpCi17Ci0gICAgb3BlcmFuZHMuYXBwZW5kKHsgIjAuIiwgc3RhdGljX2Nh
c3Q8RmxvYXRUeXBlPigwLikgfSk7Ci0gICAgb3BlcmFuZHMuYXBwZW5kKHsgIi0wLiIsIHN0YXRp
Y19jYXN0PEZsb2F0VHlwZT4oLTAuKSB9KTsKLSAgICBvcGVyYW5kcy5hcHBlbmQoeyAiMC40Iiwg
c3RhdGljX2Nhc3Q8RmxvYXRUeXBlPigwLjUpIH0pOwotICAgIG9wZXJhbmRzLmFwcGVuZCh7ICIt
MC40Iiwgc3RhdGljX2Nhc3Q8RmxvYXRUeXBlPigtMC41KSB9KTsKLSAgICBvcGVyYW5kcy5hcHBl
bmQoeyAiMC41Iiwgc3RhdGljX2Nhc3Q8RmxvYXRUeXBlPigwLjUpIH0pOwotICAgIG9wZXJhbmRz
LmFwcGVuZCh7ICItMC41Iiwgc3RhdGljX2Nhc3Q8RmxvYXRUeXBlPigtMC41KSB9KTsKLSAgICBv
cGVyYW5kcy5hcHBlbmQoeyAiMC42Iiwgc3RhdGljX2Nhc3Q8RmxvYXRUeXBlPigwLjUpIH0pOwot
ICAgIG9wZXJhbmRzLmFwcGVuZCh7ICItMC42Iiwgc3RhdGljX2Nhc3Q8RmxvYXRUeXBlPigtMC41
KSB9KTsKLSAgICBvcGVyYW5kcy5hcHBlbmQoeyAiMS4iLCBzdGF0aWNfY2FzdDxGbG9hdFR5cGU+
KDEuKSB9KTsKLSAgICBvcGVyYW5kcy5hcHBlbmQoeyAiLTEuIiwgc3RhdGljX2Nhc3Q8RmxvYXRU
eXBlPigtMS4pIH0pOwotICAgIG9wZXJhbmRzLmFwcGVuZCh7ICIyLiIsIHN0YXRpY19jYXN0PEZs
b2F0VHlwZT4oMi4pIH0pOwotICAgIG9wZXJhbmRzLmFwcGVuZCh7ICItMi4iLCBzdGF0aWNfY2Fz
dDxGbG9hdFR5cGU+KC0yLikgfSk7Ci0gICAgb3BlcmFuZHMuYXBwZW5kKHsgIk1fUEkiLCBzdGF0
aWNfY2FzdDxGbG9hdFR5cGU+KE1fUEkpIH0pOwotICAgIG9wZXJhbmRzLmFwcGVuZCh7ICItTV9Q
SSIsIHN0YXRpY19jYXN0PEZsb2F0VHlwZT4oLU1fUEkpIH0pOwotICAgIG9wZXJhbmRzLmFwcGVu
ZCh7ICJtaW4iLCBzdGQ6Om51bWVyaWNfbGltaXRzPEZsb2F0VHlwZT46Om1pbigpIH0pOwotICAg
IG9wZXJhbmRzLmFwcGVuZCh7ICJtYXgiLCBzdGQ6Om51bWVyaWNfbGltaXRzPEZsb2F0VHlwZT46
Om1heCgpIH0pOwotICAgIG9wZXJhbmRzLmFwcGVuZCh7ICJsb3dlc3QiLCBzdGQ6Om51bWVyaWNf
bGltaXRzPEZsb2F0VHlwZT46Omxvd2VzdCgpIH0pOwotICAgIG9wZXJhbmRzLmFwcGVuZCh7ICJl
cHNpbG9uIiwgc3RkOjpudW1lcmljX2xpbWl0czxGbG9hdFR5cGU+OjplcHNpbG9uKCkgfSk7Ci0g
ICAgb3BlcmFuZHMuYXBwZW5kKHsgImluZmluaXRpIiwgc3RkOjpudW1lcmljX2xpbWl0czxGbG9h
dFR5cGU+OjppbmZpbml0eSgpIH0pOwotICAgIG9wZXJhbmRzLmFwcGVuZCh7ICItaW5maW5pdGki
LCAtIHN0ZDo6bnVtZXJpY19saW1pdHM8RmxvYXRUeXBlPjo6aW5maW5pdHkoKSB9KTsKLSAgICBv
cGVyYW5kcy5hcHBlbmQoeyAiUE5hTiIsIHN0YXRpY19jYXN0PEZsb2F0VHlwZT4oUE5hTikgfSk7
Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZsb2F0VHlwZT4KLVZlY3RvcjxPcGVyYW5kPEZsb2F0
VHlwZT4+IGZsb2F0aW5nUG9pbnRPcGVyYW5kcygpCi17Ci0gICAgVmVjdG9yPE9wZXJhbmQ8Rmxv
YXRUeXBlPj4gb3BlcmFuZHM7Ci0gICAgcG9wdWxhdGVXaXRoSW50ZXJlc3RpbmdWYWx1ZXMob3Bl
cmFuZHMpOwotICAgIHJldHVybiBvcGVyYW5kczsKLX07Ci0KLXN0YXRpYyBWZWN0b3I8SW50NjRP
cGVyYW5kPiBpbnQ2NE9wZXJhbmRzKCkKLXsKLSAgICBWZWN0b3I8SW50NjRPcGVyYW5kPiBvcGVy
YW5kczsKLSAgICBvcGVyYW5kcy5hcHBlbmQoeyAiMCIsIDAgfSk7Ci0gICAgb3BlcmFuZHMuYXBw
ZW5kKHsgIjEiLCAxIH0pOwotICAgIG9wZXJhbmRzLmFwcGVuZCh7ICItMSIsIC0xIH0pOwotICAg
IG9wZXJhbmRzLmFwcGVuZCh7ICI0MiIsIDQyIH0pOwotICAgIG9wZXJhbmRzLmFwcGVuZCh7ICIt
NDIiLCAtNDIgfSk7Ci0gICAgb3BlcmFuZHMuYXBwZW5kKHsgImludDY0LW1heCIsIHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpIH0pOwotICAgIG9wZXJhbmRzLmFwcGVuZCh7ICJp
bnQ2NC1taW4iLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSB9KTsKLSAgICBv
cGVyYW5kcy5hcHBlbmQoeyAiaW50MzItbWF4Iiwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90
Pjo6bWF4KCkgfSk7Ci0gICAgb3BlcmFuZHMuYXBwZW5kKHsgImludDMyLW1pbiIsIHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpIH0pOwotICAgIG9wZXJhbmRzLmFwcGVuZCh7ICJ1
aW50NjQtbWF4Iiwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50
NjRfdD46Om1heCgpKSB9KTsKLSAgICBvcGVyYW5kcy5hcHBlbmQoeyAidWludDY0LW1pbiIsIHN0
YXRpY19jYXN0PGludDY0X3Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptaW4oKSkg
fSk7Ci0gICAgb3BlcmFuZHMuYXBwZW5kKHsgInVpbnQzMi1tYXgiLCBzdGF0aWNfY2FzdDxpbnQ2
NF90PihzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpIH0pOwotICAgIG9wZXJh
bmRzLmFwcGVuZCh7ICJ1aW50MzItbWluIiwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oc3RkOjpudW1l
cmljX2xpbWl0czx1aW50MzJfdD46Om1pbigpKSB9KTsKLQotICAgIHJldHVybiBvcGVyYW5kczsK
LX0KLQotc3RhdGljIFZlY3RvcjxJbnQzMk9wZXJhbmQ+IGludDMyT3BlcmFuZHMoKQotewotICAg
IFZlY3RvcjxJbnQzMk9wZXJhbmQ+IG9wZXJhbmRzKHsKLSAgICAgICAgeyAiMCIsIDAgfSwKLSAg
ICAgICAgeyAiMSIsIDEgfSwKLSAgICAgICAgeyAiLTEiLCAtMSB9LAotICAgICAgICB7ICI0MiIs
IDQyIH0sCi0gICAgICAgIHsgIi00MiIsIC00MiB9LAotICAgICAgICB7ICJpbnQzMi1tYXgiLCBz
dGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSB9LAotICAgICAgICB7ICJpbnQzMi1t
aW4iLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSB9LAotICAgICAgICB7ICJ1
aW50MzItbWF4Iiwgc3RhdGljX2Nhc3Q8aW50MzJfdD4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50
MzJfdD46Om1heCgpKSB9LAotICAgICAgICB7ICJ1aW50MzItbWluIiwgc3RhdGljX2Nhc3Q8aW50
MzJfdD4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1pbigpKSB9Ci0gICAgfSk7Ci0g
ICAgcmV0dXJuIG9wZXJhbmRzOwotfQotCi12b2lkIGFkZDMyKENDYWxsSGVscGVycyYgaml0LCBH
UFJSZWcgc3JjMSwgR1BSUmVnIHNyYzIsIEdQUlJlZyBkZXN0KQotewotICAgIGlmIChzcmMyID09
IGRlc3QpCi0gICAgICAgIGppdC5hZGQzMihzcmMxLCBkZXN0KTsKLSAgICBlbHNlIHsKLSAgICAg
ICAgaml0Lm1vdmUoc3JjMSwgZGVzdCk7Ci0gICAgICAgIGppdC5hZGQzMihzcmMyLCBkZXN0KTsK
LSAgICB9Ci19Ci0KLXZvaWQgdGVzdDQyKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBjb25zdDQyID0g
cm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKTsKLSAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY29uc3Q0
Mik7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYykgPT0gNDIpOwotfQotCi12
b2lkIHRlc3RMb2FkNDIoKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgaW50IHggPSA0MjsKLSAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBMb2Fk
LCBJbnQzMiwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksICZ4KSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxp
bnQ+KHByb2MpID09IDQyKTsKLX0KLQotdm9pZCB0ZXN0TG9hZEFjcTQyKCkKLXsKLSAgICBQcm9j
ZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAg
IGludCB4ID0gNDI7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFs
dWU+KAotICAgICAgICAgICAgcHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLAotICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmeCksCi0g
ICAgICAgICAgICAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKSk7Ci0KLSAgICBhdXRv
IGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBpZiAoaXNBUk02NCgpKQotICAgICAgICBj
aGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxkYSIpOwotICAgIENIRUNLKGludm9rZTxpbnQ+
KCpjb2RlKSA9PSA0Mik7Ci19Ci0KLXZvaWQgdGVzdExvYWRXaXRoT2Zmc2V0SW1wbChpbnQzMl90
IG9mZnNldDY0LCBpbnQzMl90IG9mZnNldDMyKQotewotICAgIHsKLSAgICAgICAgUHJvY2VkdXJl
IHByb2M7Ci0gICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAg
ICAgIGludDY0X3QgeCA9IC00MjsKLSAgICAgICAgVmFsdWUqIGJhc2UgPSByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwKLSAg
ICAgICAgICAgICAgICBiYXNlLAotICAgICAgICAgICAgICAgIG9mZnNldDY0KSk7Ci0KLSAgICAg
ICAgY2hhciogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KCZ4KSAtIG9mZnNldDY0
OwotICAgICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGFkZHJlc3MpID09
IC00Mik7Ci0gICAgfQotICAgIHsKLSAgICAgICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgIGludDMyX3QgeCA9IC00
MjsKLSAgICAgICAgVmFsdWUqIGJhc2UgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICAg
ICAgICAgIHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICBiYXNl
LAotICAgICAgICAgICAgICAgIG9mZnNldDMyKSk7Ci0KLSAgICAgICAgY2hhciogYWRkcmVzcyA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KCZ4KSAtIG9mZnNldDMyOwotICAgICAgICBDSEVDSyhj
b21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGFkZHJlc3MpID09IC00Mik7Ci0gICAgfQotfQot
Ci12b2lkIHRlc3RMb2FkT2Zmc2V0SW1tOU1heCgpCi17Ci0gICAgdGVzdExvYWRXaXRoT2Zmc2V0
SW1wbCgyNTUsIDI1NSk7Ci19Ci0KLXZvaWQgdGVzdExvYWRPZmZzZXRJbW05TWF4UGx1c09uZSgp
Ci17Ci0gICAgdGVzdExvYWRXaXRoT2Zmc2V0SW1wbCgyNTYsIDI1Nik7Ci19Ci0KLXZvaWQgdGVz
dExvYWRPZmZzZXRJbW05TWF4UGx1c1R3bygpCi17Ci0gICAgdGVzdExvYWRXaXRoT2Zmc2V0SW1w
bCgyNTcsIDI1Nyk7Ci19Ci0KLXZvaWQgdGVzdExvYWRPZmZzZXRJbW05TWluKCkKLXsKLSAgICB0
ZXN0TG9hZFdpdGhPZmZzZXRJbXBsKC0yNTYsIC0yNTYpOwotfQotCi12b2lkIHRlc3RMb2FkT2Zm
c2V0SW1tOU1pbk1pbnVzT25lKCkKLXsKLSAgICB0ZXN0TG9hZFdpdGhPZmZzZXRJbXBsKC0yNTcs
IC0yNTcpOwotfQotCi12b2lkIHRlc3RMb2FkT2Zmc2V0U2NhbGVkVW5zaWduZWRJbW0xMk1heCgp
Ci17Ci0gICAgdGVzdExvYWRXaXRoT2Zmc2V0SW1wbCgzMjc2MCwgMTYzODApOwotfQotCi12b2lk
IHRlc3RMb2FkT2Zmc2V0U2NhbGVkVW5zaWduZWRPdmVySW1tMTJNYXgoKQotewotICAgIHRlc3RM
b2FkV2l0aE9mZnNldEltcGwoMzI3NjAsIDMyNzYwKTsKLSAgICB0ZXN0TG9hZFdpdGhPZmZzZXRJ
bXBsKDMyNzYxLCAxNjM4MSk7Ci0gICAgdGVzdExvYWRXaXRoT2Zmc2V0SW1wbCgzMjc2OCwgMTYz
ODQpOwotfQotCi12b2lkIHRlc3RCaXRYb3JUcmVlQXJncyhpbnQ2NF90IGEsIGludDY0X3QgYikK
LXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOwotICAgIFZhbHVlKiBhcmdBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIFZhbHVlKiBh
cmdCID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgIFZhbHVlKiBub2RlID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLCBhcmdBLCBhcmdCKTsKLSAgICBub2RlID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLCBub2RlLCBhcmdC
KTsKLSAgICBub2RlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRYb3IsIE9yaWdp
bigpLCBub2RlLCBhcmdBKTsKLSAgICBub2RlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXRYb3IsIE9yaWdpbigpLCBub2RlLCBhcmdCKTsKLSAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIG5vZGUpOwotCi0gICAgQ0hFQ0tfRVEoY29tcGls
ZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhLCBiKSwgKCgoYSBeIGIpIF4gYikgXiBhKSBeIGIpOwot
fQotCi12b2lkIHRlc3RCaXRYb3JUcmVlQXJnc0V2ZW4oaW50NjRfdCBhLCBpbnQ2NF90IGIpCi17
Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKLSAgICBWYWx1ZSogYXJnQSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBWYWx1ZSogYXJn
QiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICBWYWx1ZSogbm9kZSA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgQml0WG9yLCBPcmlnaW4oKSwgYXJnQSwgYXJnQik7Ci0gICAgbm9kZSA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0WG9yLCBPcmlnaW4oKSwgbm9kZSwgYXJnQik7
Ci0gICAgbm9kZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0WG9yLCBPcmlnaW4o
KSwgbm9kZSwgYXJnQSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCBub2RlKTsKLQotICAgIENIRUNLX0VRKGNvbXBpbGVBbmRSdW48aW50NjRfdD4o
cHJvYywgYSwgYiksICgoYSBeIGIpIF4gYikgXiBhKTsKLX0KLQotdm9pZCB0ZXN0Qml0WG9yVHJl
ZUFyZ0ltbShpbnQ2NF90IGEsIGludDY0X3QgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmdBID0g
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOwotICAgIFZhbHVlKiBpbW1CID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0
NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpOwotICAgIFZhbHVlKiBub2RlID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLCBhcmdBLCBpbW1CKTsKLSAgICBu
b2RlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLCBhcmdB
LCBub2RlKTsKLSAgICBub2RlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRYb3Is
IE9yaWdpbigpLCBhcmdBLCBub2RlKTsKLSAgICBub2RlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLCBpbW1CLCBub2RlKTsKLSAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIG5vZGUpOwotCi0gICAgQ0hFQ0tfRVEo
Y29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhKSwgYiBeIChhIF4gKGEgXiAoYSBeIGIpKSkp
OwotfQotCi12b2lkIHRlc3RBZGRUcmVlQXJnMzIoaW50MzJfdCBhKQotewotICAgIFByb2NlZHVy
ZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFs
dWUqIGFyZ0EgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgYXJnQSA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLCBhcmdBKTsKLSAgICBWYWx1ZSogbm9kZSA9IGFy
Z0E7Ci0gICAgaW50MzJfdCBleHBlY3RlZFJlc3VsdCA9IGE7Ci0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IDIwOyArK2kpIHsKLSAgICAgICAgVmFsdWUqIG90aGVyTm9kZTsKLSAgICAgICAg
aWYgKCEoaSAlIDMpKSB7Ci0gICAgICAgICAgICBvdGhlck5vZGUgPSByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgaSk7Ci0gICAgICAgICAgICBleHBlY3RlZFJl
c3VsdCArPSBpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgb3RoZXJOb2RlID0gYXJn
QTsKLSAgICAgICAgICAgIGV4cGVjdGVkUmVzdWx0ICs9IGE7Ci0gICAgICAgIH0KLSAgICAgICAg
bm9kZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgbm9kZSwg
b3RoZXJOb2RlKTsKLSAgICB9Ci0gICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCBub2RlKTsKLQotICAgIENIRUNLX0VRKGNvbXBpbGVBbmRSdW48aW50MzJf
dD4ocHJvYywgYSksIGV4cGVjdGVkUmVzdWx0KTsKLX0KLQotdm9pZCB0ZXN0TXVsVHJlZUFyZzMy
KGludDMyX3QgYSkKLXsKLSAgICAvLyBGaWJvbmFjY2ktbGlrZSBleHByZXNzaW9uIHRyZWUgd2l0
aCBtdWx0aXBsaWNhdGlvbiBpbnN0ZWFkIG9mIGFkZGl0aW9uLgotICAgIC8vIFZlcmlmaWVzIHRo
YXQgd2UgZG9uJ3QgZXhwbG9kZSBvbiBoZWF2aWx5IGZhY3RvcmVkIGdyYXBocy4KLSAgICBQcm9j
ZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAg
IFZhbHVlKiBhcmdBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIGFyZ0EgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwgYXJnQSk7Ci0gICAgVmFsdWUqIG5vZGVB
ID0gYXJnQTsKLSAgICBWYWx1ZSogbm9kZUIgPSBhcmdBOwotICAgIGludDMyX3QgZXhwZWN0ZWRB
ID0gYSwgZXhwZWN0ZWRSZXN1bHQgPSBhOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAy
MDsgKytpKSB7Ci0gICAgICAgIFZhbHVlKiBuZXdOb2RlQiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgbm9kZUEsIG5vZGVCKTsKLSAgICAgICAgbm9kZUEgPSBu
b2RlQjsKLSAgICAgICAgbm9kZUIgPSBuZXdOb2RlQjsKLSAgICAgICAgaW50MzJfdCBuZXdFeHBl
Y3RlZFJlc3VsdCA9IGV4cGVjdGVkQSAqIGV4cGVjdGVkUmVzdWx0OwotICAgICAgICBleHBlY3Rl
ZEEgPSBleHBlY3RlZFJlc3VsdDsKLSAgICAgICAgZXhwZWN0ZWRSZXN1bHQgPSBuZXdFeHBlY3Rl
ZFJlc3VsdDsKLSAgICB9Ci0gICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCBub2RlQik7Ci0KLSAgICBDSEVDS19FUShjb21waWxlQW5kUnVuPGludDMyX3Q+
KHByb2MsIGEpLCBleHBlY3RlZFJlc3VsdCk7Ci19Ci0KLXZvaWQgdGVzdEJpdEFuZFRyZWVBcmcz
MihpbnQzMl90IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJnQSA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
LSAgICBhcmdBID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCks
IGFyZ0EpOwotICAgIFZhbHVlKiBub2RlID0gYXJnQTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgODsgKytpKSB7Ci0gICAgICAgIFZhbHVlKiBjb25zdEkgPSByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgaSB8IDQyKTsKLSAgICAgICAgVmFsdWUqIG5l
d0JpdEFuZCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwg
YXJnQSwgY29uc3RJKTsKLSAgICAgICAgbm9kZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQml0QW5kLCBPcmlnaW4oKSwgbm9kZSwgbmV3Qml0QW5kKTsKLSAgICB9Ci0gICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBub2RlKTsKLQotICAgIENI
RUNLX0VRKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYSksIGEgJiA0Mik7Ci19Ci0KLXZv
aWQgdGVzdEJpdE9yVHJlZUFyZzMyKGludDMyX3QgYSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsK
LSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmdB
ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOwotICAgIGFyZ0EgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwgYXJnQSk7Ci0gICAgVmFsdWUqIG5vZGUgPSBhcmdBOwotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCA4OyArK2kpIHsKLSAgICAgICAgVmFsdWUqIGNvbnN0
SSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBpKTsKLSAg
ICAgICAgVmFsdWUqIG5ld0JpdEFuZCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0
T3IsIE9yaWdpbigpLCBhcmdBLCBjb25zdEkpOwotICAgICAgICBub2RlID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXRPciwgT3JpZ2luKCksIG5vZGUsIG5ld0JpdEFuZCk7Ci0gICAg
fQotICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgbm9k
ZSk7Ci0KLSAgICBDSEVDS19FUShjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGEpLCBhIHwg
Nyk7Ci19Ci0KLXZvaWQgdGVzdEFyZyhpbnQgYXJndW1lbnQpCi17Ci0gICAgUHJvY2VkdXJlIHBy
b2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0g
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4o
cHJvYywgYXJndW1lbnQpID09IGFyZ3VtZW50KTsKLX0KLQotdm9pZCB0ZXN0UmV0dXJuQ29uc3Q2
NChpbnQ2NF90IHZhbHVlKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmRO
ZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdmFsdWUpKTsKLQotICAgIENIRUNLKGNv
bXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYykgPT0gdmFsdWUpOwotfQotCi12b2lkIHRlc3RSZXR1
cm5Wb2lkKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpKTsKLSAgICBjb21waWxlQW5kUnVuPHZvaWQ+KHByb2MpOwotfQotCi12
b2lkIHRlc3RBZGRBcmcoaW50IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogdmFsdWUgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEFkZCwgT3JpZ2luKCksIHZhbHVlLCB2YWx1ZSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1
bjxpbnQ+KHByb2MsIGEpID09IGEgKyBhKTsKLX0KLQotdm9pZCB0ZXN0QWRkQXJncyhpbnQgYSwg
aW50IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAg
IHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
Ci0gICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSk7Ci0KLSAgICBDSEVDSyhjb21w
aWxlQW5kUnVuPGludD4ocHJvYywgYSwgYikgPT0gYSArIGIpOwotfQotCi12b2lkIHRlc3RBZGRB
cmdJbW0oaW50IGEsIGludCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKLSAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxp
bnQ+KHByb2MsIGEpID09IGEgKyBiKTsKLX0KLQotdm9pZCB0ZXN0QWRkSW1tQXJnKGludCBhLCBp
bnQgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
LSAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBl
bmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSksCi0gICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCkpKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBiKSA9
PSBhICsgYik7Ci19Ci0KLXZvaWQgdGVzdEFkZEFyZ01lbShpbnQ2NF90IGEsIGludDY0X3QgYikK
LXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOwotICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgIE1lbW9y
eVZhbHVlKiBsb2FkID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJ
bnQ2NCwgT3JpZ2luKCksIGFkZHJlc3MpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSwKLSAgICAgICAgbG9hZCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9j
LCBTdG9yZSwgT3JpZ2luKCksIHJlc3VsdCwgYWRkcmVzcyk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7Ci0KLSAgICBpbnQ2NF90IGlucHV0T3V0cHV0
ID0gYjsKLSAgICBDSEVDSyghY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhLCAmaW5wdXRP
dXRwdXQpKTsKLSAgICBDSEVDSyhpbnB1dE91dHB1dCA9PSBhICsgYik7Ci19Ci0KLXZvaWQgdGVz
dEFkZE1lbUFyZyhpbnQ2NF90IGEsIGludDY0X3QgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsK
LSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhZGRy
ZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIE1lbW9yeVZhbHVlKiBsb2FkID0gcm9vdC0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksIGFkZHJlc3Mp
OwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwg
T3JpZ2luKCksCi0gICAgICAgIGxvYWQsCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Ci0gICAg
cm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3Vs
dCk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsICZhLCBiKSA9PSBh
ICsgYik7Ci19Ci0KLXZvaWQgdGVzdEFkZEltbU1lbShpbnQ2NF90IGEsIGludDY0X3QgYikKLXsK
LSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOwotICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIE1lbW9yeVZh
bHVlKiBsb2FkID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQ2
NCwgT3JpZ2luKCksIGFkZHJlc3MpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxD
b25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKSwKLSAgICAgICAgbG9hZCk7Ci0gICAgcm9v
dC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHJlc3VsdCwg
YWRkcmVzcyk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwg
T3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAw
KSk7Ci0KLSAgICBpbnQ2NF90IGlucHV0T3V0cHV0ID0gYjsKLSAgICBDSEVDSyghY29tcGlsZUFu
ZFJ1bjxpbnQ+KHByb2MsICZpbnB1dE91dHB1dCkpOwotICAgIENIRUNLKGlucHV0T3V0cHV0ID09
IGEgKyBiKTsKLX0KLQotdm9pZCB0ZXN0QWRkQXJnMzIoaW50IGEpCi17Ci0gICAgUHJvY2VkdXJl
IHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1
ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwK
LSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgdmFsdWUsIHZhbHVlKSk7Ci0KLSAgICBD
SEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYSkgPT0gYSArIGEpOwotfQotCi12b2lkIHRl
c3RBZGRBcmdzMzIoaW50IGEsIGludCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKLSAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywg
VHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCi0gICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIFRy
dW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKSk7Ci0KLSAg
ICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYSwgYikgPT0gYSArIGIpOwotfQotCi12
b2lkIHRlc3RBZGRBcmdNZW0zMihpbnQzMl90IGEsIGludDMyX3QgYikKLXsKLSAgICBQcm9jZWR1
cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZh
bHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgIE1lbW9yeVZhbHVlKiBsb2FkID0g
cm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCks
IGFkZHJlc3MpOwotICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZh
bHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCks
IGFyZ3VtZW50LCBsb2FkKTsKLSAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2Ms
IFN0b3JlLCBPcmlnaW4oKSwgcmVzdWx0LCBhZGRyZXNzKTsKLSAgICByb290LT5hcHBlbmROZXdD
b250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kTmV3PENvbnN0
MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKLQotICAgIGludDMyX3QgaW5wdXRPdXRwdXQg
PSBiOwotICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGEsICZpbnB1dE91
dHB1dCkpOwotICAgIENIRUNLKGlucHV0T3V0cHV0ID09IGEgKyBiKTsKLX0KLQotdm9pZCB0ZXN0
QWRkTWVtQXJnMzIoaW50MzJfdCBhLCBpbnQzMl90IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7
Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYWRk
cmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBNZW1vcnlWYWx1ZSogbG9hZCA9IHJvb3QtPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBhZGRyZXNz
KTsKLSAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRy
dW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKLSAgICBWYWx1ZSogcmVz
dWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBsb2FkLCBh
cmd1bWVudCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwg
T3JpZ2luKCksIHJlc3VsdCk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDMyX3Q+KHBy
b2MsICZhLCBiKSA9PSBhICsgYik7Ci19Ci0KLXZvaWQgdGVzdEFkZEltbU1lbTMyKGludDMyX3Qg
YSwgaW50MzJfdCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7Ci0gICAgTWVtb3J5VmFsdWUqIGxvYWQgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgYWRkcmVzcyk7Ci0gICAgVmFsdWUqIHJlc3Vs
dCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpLAotICAgICAg
ICBsb2FkKTsKLSAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlLCBP
cmlnaW4oKSwgcmVzdWx0LCBhZGRyZXNzKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIDApKTsKLQotICAgIGludDMyX3QgaW5wdXRPdXRwdXQgPSBiOwotICAg
IENIRUNLKCFjb21waWxlQW5kUnVuPGludD4ocHJvYywgJmlucHV0T3V0cHV0KSk7Ci0gICAgQ0hF
Q0soaW5wdXRPdXRwdXQgPT0gYSArIGIpOwotfQotCi12b2lkIHRlc3RBZGROZWcxKGludCBhLCBp
bnQgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
LSAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIE5lZywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpOwotICAgIAotICAgIENI
RUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhLCBiKSA9PSAoLSBhKSArIGIpOwotfQotCi12
b2lkIHRlc3RBZGROZWcyKGludCBhLCBpbnQgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCks
Ci0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIE5lZywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjEpKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEsIGIpID09
IGEgKyAoLSBiKSk7Ci19Ci0KLXZvaWQgdGVzdEFkZEFyZ1plcm9JbW1aRGVmKCkKLXsKLSAgICBQ
cm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwot
ICAgIFZhbHVlKiBhcmcgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBU
cnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGNv
bnN0WmVybyA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAw
KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAg
ICBwcm9jLCBBZGQsIE9yaWdpbigpLAotICAgICAgICAgICAgYXJnLAotICAgICAgICAgICAgY29u
c3RaZXJvKSk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jLCAwKTsKLSAgICBD
SEVDSyhpbnZva2U8aW50NjRfdD4oKmNvZGUsIDB4MDEyMzQ1Njc4OWFiY2RlZikgPT0gMHg4OWFi
Y2RlZik7Ci19Ci0KLXZvaWQgdGVzdEFkZExvYWRUd2ljZSgpCi17Ci0gICAgYXV0byB0ZXN0ID0g
WyZdICgpIHsKLSAgICAgICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgIGludDMyX3QgdmFsdWUgPSA0MjsKLSAgICAg
ICAgVmFsdWUqIGxvYWQgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICAg
ICAgcHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmdmFsdWUpKTsKLSAgICAgICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmln
aW4oKSwgbG9hZCwgbG9hZCkpOwotCi0gICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHBy
b2MpOwotICAgICAgICBDSEVDSyhpbnZva2U8aW50MzJfdD4oKmNvZGUpID09IDQyICogMik7Ci0g
ICAgfTsKLQotICAgIHRlc3QoKTsKLX0KLQotdm9pZCB0ZXN0QWRkQXJnRG91YmxlKGRvdWJsZSBh
KQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7Ci0gICAgVmFsdWUqIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwotICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwK
LSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCB2YWx1
ZSwgdmFsdWUpKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91Ymxl
Pihwcm9jLCBhKSwgYSArIGEpKTsKLX0KLQotdm9pZCB0ZXN0QWRkQXJnc0RvdWJsZShkb3VibGUg
YSwgZG91YmxlIGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogdmFsdWVBID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjAp
OwotICAgIFZhbHVlKiB2YWx1ZUIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7Ci0gICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIHZhbHVlQSwgdmFs
dWVCKSk7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJv
YywgYSwgYiksIGEgKyBiKSk7Ci19Ci0KLXZvaWQgdGVzdEFkZEFyZ0ltbURvdWJsZShkb3VibGUg
YSwgZG91YmxlIGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogdmFsdWVBID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjAp
OwotICAgIFZhbHVlKiB2YWx1ZUIgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIGIpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAg
ICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCB2YWx1ZUEsIHZhbHVlQikpOwotCi0gICAgQ0hFQ0so
aXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEpLCBhICsgYikpOwotfQot
Ci12b2lkIHRlc3RBZGRJbW1BcmdEb3VibGUoZG91YmxlIGEsIGRvdWJsZSBiKQotewotICAgIFBy
b2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0g
ICAgVmFsdWUqIHZhbHVlQSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgYSk7Ci0gICAgVmFsdWUqIHZhbHVlQiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKLSAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3Jp
Z2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4o
KSwgdmFsdWVBLCB2YWx1ZUIpKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRS
dW48ZG91YmxlPihwcm9jLCBiKSwgYSArIGIpKTsKLX0KLQotdm9pZCB0ZXN0QWRkSW1tc0RvdWJs
ZShkb3VibGUgYSwgZG91YmxlIGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogdmFsdWVBID0gcm9vdC0+
YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKLSAgICBWYWx1
ZSogdmFsdWVCID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBiKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2Ms
IFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
QWRkLCBPcmlnaW4oKSwgdmFsdWVBLCB2YWx1ZUIpKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2Fs
KGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jKSwgYSArIGIpKTsKLX0KLQotdm9pZCB0ZXN0QWRk
QXJnRmxvYXQoZmxvYXQgYSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSk7Ci0gICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7Ci0gICAgVmFsdWUqIHJl
c3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgZmxvYXRW
YWx1ZSwgZmxvYXRWYWx1ZSk7Ci0gICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsK
LQotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBi
aXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSArIGEpKSk7
Ci19Ci0KLXZvaWQgdGVzdEFkZEFyZ3NGbG9hdChmbG9hdCBhLCBmbG9hdCBiKQotewotICAgIFBy
b2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0g
ICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBU
cnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGFy
Z3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2lu
KCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Ci0gICAgVmFsdWUqIGZsb2F0VmFsdWUxID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3Vt
ZW50MWludDMyKTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQyaW50MzIpOwotICAgIFZh
bHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCks
IGZsb2F0VmFsdWUxLCBmbG9hdFZhbHVlMik7Ci0gICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7Ci0g
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJl
c3VsdDMyKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4o
cHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYikp
LCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSArIGIpKSk7Ci19Ci0KLXZvaWQgdGVzdEFkZEZQUkFy
Z3NGbG9hdChmbG9hdCBhLCBmbG9hdCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50MSA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86
OmFyZ3VtZW50RlBSMCkpOwotICAgIFZhbHVlKiBhcmd1bWVudDIgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpKTsK
LSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9y
aWdpbigpLCBhcmd1bWVudDEsIGFyZ3VtZW50Mik7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7Ci0KLSAgICBDSEVDSyhpc0lk
ZW50aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jLCBhLCBiKSwgYSArIGIpKTsKLX0KLQot
dm9pZCB0ZXN0QWRkQXJnSW1tRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKLXsKLSAgICBQcm9jZWR1
cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZh
bHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3Jp
Z2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGZsb2F0VmFsdWUg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJn
dW1lbnQzMik7Ci0gICAgVmFsdWUqIGNvbnN0VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3RG
bG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZSwgY29uc3RW
YWx1ZSk7Ci0gICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKLQotICAgIENIRUNL
KGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGlu
dDMyX3Q+KGEpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgKyBiKSkpOwotfQotCi12b2lkIHRl
c3RBZGRJbW1BcmdGbG9hdChmbG9hdCBhLCBmbG9hdCBiKQotewotICAgIFByb2NlZHVyZSBwcm9j
OwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFy
Z3VtZW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwK
LSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZSA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDMy
KTsKLSAgICBWYWx1ZSogY29uc3RWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFs
dWU+KHByb2MsIE9yaWdpbigpLCBhKTsKLSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBjb25zdFZhbHVlLCBmbG9hdFZhbHVlKTsK
LSAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdp
c2VDYXN0LCBPcmlnaW4oKSwgcmVzdWx0KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOwotCi0gICAgQ0hFQ0soaXNJZGVu
dGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4o
YikpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSArIGIpKSk7Ci19Ci0KLXZvaWQgdGVzdEFkZElt
bXNGbG9hdChmbG9hdCBhLCBmbG9hdCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGNvbnN0VmFsdWUx
ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpOwot
ICAgIFZhbHVlKiBjb25zdFZhbHVlMiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+
KHByb2MsIE9yaWdpbigpLCBiKTsKLSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBjb25zdFZhbHVlMSwgY29uc3RWYWx1ZTIpOwot
ICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lz
ZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7Ci0KLSAgICBDSEVDSyhpc0lkZW50
aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4o
YSArIGIpKSk7Ci19Ci0KLXZvaWQgdGVzdEFkZEFyZ0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252
ZXJzaW9uKGZsb2F0IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnRJbnQzMiA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCkpOwotICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50SW50MzIpOwotICAgIFZhbHVl
KiBhc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwg
T3JpZ2luKCksIGZsb2F0VmFsdWUpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGFzRG91YmxlLCBhc0RvdWJsZSk7Ci0gICAg
VmFsdWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVU
b0Zsb2F0LCBPcmlnaW4oKSwgcmVzdWx0KTsKLSAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1bHQp
OwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LCByZXN1bHQzMik7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMy
X3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90
PihhICsgYSkpKTsKLX0KLQotdm9pZCB0ZXN0QWRkQXJnc0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVD
b252ZXJzaW9uKGZsb2F0IGEsIGZsb2F0IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnQx
aW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogYXJndW1lbnQyaW50MzIgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjEpKTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZTEgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQxaW50MzIpOwotICAgIFZh
bHVlKiBmbG9hdFZhbHVlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNh
c3QsIE9yaWdpbigpLCBhcmd1bWVudDJpbnQzMik7Ci0gICAgVmFsdWUqIGFzRG91YmxlMSA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0
VmFsdWUxKTsKLSAgICBWYWx1ZSogYXNEb3VibGUyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZTIpOwotICAgIFZhbHVlKiBy
ZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGFzRG91
YmxlMSwgYXNEb3VibGUyKTsKLSAgICBWYWx1ZSogZmxvYXRSZXN1bHQgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCByZXN1bHQpOwotICAgIFZh
bHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3Qs
IE9yaWdpbigpLCBmbG9hdFJlc3VsdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKLQotICAgIENIRUNLKGlzSWRlbnRp
Y2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEp
LCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYikpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSArIGIp
KSk7Ci19Ci0KLXZvaWQgdGVzdEFkZEFyZ3NGbG9hdFdpdGhFZmZlY3RmdWxEb3VibGVDb252ZXJz
aW9uKGZsb2F0IGEsIGZsb2F0IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnQxaW50MzIg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogYXJndW1lbnQyaW50MzIgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjEpKTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZTEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQxaW50MzIpOwotICAgIFZhbHVlKiBm
bG9hdFZhbHVlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9y
aWdpbigpLCBhcmd1bWVudDJpbnQzMik7Ci0gICAgVmFsdWUqIGFzRG91YmxlMSA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUx
KTsKLSAgICBWYWx1ZSogYXNEb3VibGUyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBG
bG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZTIpOwotICAgIFZhbHVlKiByZXN1bHQg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGFzRG91YmxlMSwg
YXNEb3VibGUyKTsKLSAgICBWYWx1ZSogZmxvYXRSZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCByZXN1bHQpOwotICAgIFZhbHVlKiBk
b3VibGVBZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwotICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1v
cnlWYWx1ZT4ocHJvYywgU3RvcmUsIE9yaWdpbigpLCByZXN1bHQsIGRvdWJsZUFkZHJlc3MpOwot
ICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lz
ZUNhc3QsIE9yaWdpbigpLCBmbG9hdFJlc3VsdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKLQotICAgIGRvdWJsZSBl
ZmZlY3QgPSAwOwotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4o
cHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYiks
ICZlZmZlY3QpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSArIGIpKSk7Ci0gICAgQ0hFQ0soaXNJ
ZGVudGljYWwoZWZmZWN0LCBzdGF0aWNfY2FzdDxkb3VibGU+KGEpICsgc3RhdGljX2Nhc3Q8ZG91
YmxlPihiKSkpOwotfQotCi12b2lkIHRlc3RBZGRNdWxNdWxBcmdzKGludDY0X3QgYSwgaW50NjRf
dCBiLCBpbnQ2NF90IGMpCi17Ci0gICAgLy8gV2Ugd2FudCB0byBjaGVjayBldmVyeSBwb3NzaWJs
ZSBvcmRlcmluZyBvZiBhcmd1bWVudHMgKHRvIHByb3Blcmx5IGNoZWNrIGV2ZXJ5IHBhdGggaW4g
QjNSZWR1Y2VTdHJlbmd0aCk6Ci0gICAgLy8gKChhICogYikgKyAoYSAqIGMpKQotICAgIC8vICgo
YSAqIGIpICsgKGMgKiBhKSkKLSAgICAvLyAoKGIgKiBhKSArIChhICogYykpCi0gICAgLy8gKChi
ICogYSkgKyAoYyAqIGEpKQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgKytpKSB7Ci0gICAg
ICAgIFByb2NlZHVyZSBwcm9jOwotICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOwotICAgICAgICBWYWx1ZSogYXJnQSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAg
VmFsdWUqIGFyZ0IgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIFZhbHVlKiBhcmdDID0gcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjIpOwotICAgICAgICBWYWx1ZSogbXVsQUIgPSBpICYgMiA/IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgYXJnQSwgYXJnQikKLSAgICAgICAgICAg
IDogcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBhcmdCLCBhcmdB
KTsKLSAgICAgICAgVmFsdWUqIG11bEFDID0gaSAmIDEgPyByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIE11bCwgT3JpZ2luKCksIGFyZ0EsIGFyZ0MpCi0gICAgICAgICAgICA6IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgYXJnQywgYXJnQSk7Ci0gICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwKLSAgICAgICAg
ICAgICAgICBtdWxBQiwKLSAgICAgICAgICAgICAgICBtdWxBQykpOwotCi0gICAgICAgIENIRUNL
X0VRKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYSwgYiwgYyksICgoYSAqIGIpICsgKGEg
KiBjKSkpOwotICAgIH0KLX0KLQotdm9pZCB0ZXN0TXVsQXJnKGludCBhKQotewotICAgIFByb2Nl
ZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAg
VmFsdWUqIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgVHJ1
bmMsIE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCB2YWx1ZSwgdmFsdWUpKTsKLQot
ICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhKSA9PSBhICogYSk7Ci19Ci0KLXZv
aWQgdGVzdE11bEFyZ1N0b3JlKGludCBhKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBpbnQgbXVsU2xvdDsKLSAg
ICBpbnQgdmFsdWVTbG90OwotICAgIAotICAgIFZhbHVlKiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKTsKLSAgICBWYWx1ZSogbXVsID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBNdWwsIE9yaWdpbigpLCB2YWx1ZSwgdmFsdWUpOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3PE1l
bW9yeVZhbHVlPigKLSAgICAgICAgcHJvYywgU3RvcmUsIE9yaWdpbigpLCB2YWx1ZSwKLSAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmdmFsdWVT
bG90KSwgMCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAgcHJv
YywgU3RvcmUsIE9yaWdpbigpLCBtdWwsCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0
clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJm11bFNsb3QpLCAwKTsKLQotICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKLQotICAgIENIRUNL
KCFjb21waWxlQW5kUnVuPGludD4ocHJvYywgYSkpOwotICAgIENIRUNLKG11bFNsb3QgPT0gYSAq
IGEpOwotICAgIENIRUNLKHZhbHVlU2xvdCA9PSBhKTsKLX0KLQotdm9pZCB0ZXN0TXVsQWRkQXJn
KGludCBhKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKLSAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAg
ICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIE11bCwgT3JpZ2luKCksIHZhbHVlLCB2YWx1ZSksCi0gICAgICAgICAgICB2YWx1
ZSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEpID09IGEgKiBhICsg
YSk7Ci19Ci0KLXZvaWQgdGVzdE11bEFyZ3MoaW50IGEsIGludCBiKQotewotICAgIFByb2NlZHVy
ZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgTXVs
LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKLSAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIxKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEs
IGIpID09IGEgKiBiKTsKLX0KLQotdm9pZCB0ZXN0TXVsQXJnTmVnQXJnKGludCBhLCBpbnQgYikK
LXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOwotICAgIFZhbHVlKiBhcmdBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIFZhbHVlKiBh
cmdCID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgIFZhbHVlKiBuZWdCID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBOZWcsIE9yaWdpbigpLCBhcmdCKTsKLSAgICBWYWx1ZSogcmVzdWx0ID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBhcmdBLCBuZWdCKTsK
LSAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3Vs
dCk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYSwgYikgPT0gYSAqICgt
YikpOwotfQotCi12b2lkIHRlc3RNdWxOZWdBcmdBcmcoaW50IGEsIGludCBiKQotewotICAgIFBy
b2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0g
ICAgVmFsdWUqIGFyZ0EgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgVmFsdWUqIGFyZ0IgPSByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMSk7Ci0gICAgVmFsdWUqIG5lZ0EgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIE5lZywgT3JpZ2luKCksIGFyZ0EpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIG5lZ0EsIGFyZ0IpOwotICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKLQotICAg
IENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhLCBiKSA9PSAoLWEpICogYik7Ci19Ci0K
LXZvaWQgdGVzdE11bEFyZ0ltbShpbnQ2NF90IGEsIGludDY0X3QgYikKLXsKLSAgICBQcm9jZWR1
cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIE11
bCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYikpKTsKLQotICAg
IENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYSkgPT0gYSAqIGIpOwotfQotCi12
b2lkIHRlc3RNdWxJbW1BcmcoaW50IGEsIGludCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwot
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgTXVsLCBPcmlnaW4o
KSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdp
bigpLCBhKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOwotCi0gICAgQ0hFQ0soY29t
cGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGIpID09IGEgKiBiKTsKLX0KLQotdm9pZCB0ZXN0TXVsQXJn
czMyKGludCBhLCBpbnQgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIE11bCwgT3JpZ2luKCksCi0gICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBP
cmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAotICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3Jp
Z2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSkpOwotCi0gICAgQ0hFQ0so
Y29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEsIGIpID09IGEgKiBiKTsKLX0KLQotdm9pZCB0ZXN0
TXVsQXJnczMyU2lnbkV4dGVuZChpbnQgYSwgaW50IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7
Ci0gICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEpCi0gICAgICAgIHJldHVybjsKLSAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKLSAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMSkpOwotICAgIFZhbHVlKiBhcmcxNjQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFNFeHQzMiwgT3JpZ2luKCksIGFyZzEpOwotICAgIFZhbHVlKiBhcmcyNjQgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIFNFeHQzMiwgT3JpZ2luKCksIGFyZzIpOwotICAgIFZhbHVlKiBt
dWwgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIGFyZzE2NCwg
YXJnMjY0KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgbXVsKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotCi0g
ICAgQ0hFQ0soaW52b2tlPGxvbmcgaW50PigqY29kZSwgYSwgYikgPT0gKChsb25nIGludCkgYSkg
KiAoKGxvbmcgaW50KSBiKSk7Ci19Ci0KLXZvaWQgdGVzdE11bEltbTMyU2lnbkV4dGVuZChjb25z
dCBpbnQgYSwgaW50IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgaWYgKHByb2Mub3B0
TGV2ZWwoKSA8IDEpCi0gICAgICAgIHJldHVybjsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpOwotICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMSkpOwotICAgIFZhbHVlKiBhcmcyNjQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFNFeHQzMiwgT3JpZ2luKCksIGFyZzIpOwotICAgIFZhbHVlKiBtdWwgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIGFyZzEsIGFyZzI2NCk7Ci0gICAg
cm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIG11bCk7
Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLQotICAgIENIRUNLKGludm9r
ZTxsb25nIGludD4oKmNvZGUsIGIpID09ICgobG9uZyBpbnQpIGEpICogKChsb25nIGludCkgYikp
OwotfQotCi12b2lkIHRlc3RNdWxMb2FkVHdpY2UoKQotewotICAgIGF1dG8gdGVzdCA9IFsmXSAo
KSB7Ci0gICAgICAgIFByb2NlZHVyZSBwcm9jOwotICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOwotICAgICAgICBpbnQzMl90IHZhbHVlID0gNDI7Ci0gICAgICAgIFZh
bHVlKiBsb2FkID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAgICAgIHBy
b2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxD
b25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnZhbHVlKSk7Ci0gICAgICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
Ci0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCks
IGxvYWQsIGxvYWQpKTsKLQotICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsK
LSAgICAgICAgQ0hFQ0soaW52b2tlPGludDMyX3Q+KCpjb2RlKSA9PSA0MiAqIDQyKTsKLSAgICB9
OwotCi0gICAgdGVzdCgpOwotfQotCi12b2lkIHRlc3RNdWxBZGRBcmdzTGVmdCgpCi17Ci0gICAg
UHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
LQotICAgIFZhbHVlKiBhcmcwID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIFZhbHVlKiBhcmcxID0g
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEpOwotICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwotICAg
IFZhbHVlKiBtdWx0aXBsaWVkID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9y
aWdpbigpLCBhcmcwLCBhcmcxKTsKLSAgICBWYWx1ZSogYWRkZWQgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIG11bHRpcGxpZWQsIGFyZzIpOwotICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBhZGRlZCk7Ci0K
LSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLQotICAgIGF1dG8gdGVzdFZhbHVl
cyA9IGludDY0T3BlcmFuZHMoKTsKLSAgICBmb3IgKGF1dG8gYSA6IHRlc3RWYWx1ZXMpIHsKLSAg
ICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8g
YyA6IHRlc3RWYWx1ZXMpIHsKLSAgICAgICAgICAgICAgICBDSEVDSyhpbnZva2U8aW50NjRfdD4o
KmNvZGUsIGEudmFsdWUsIGIudmFsdWUsIGMudmFsdWUpID09IGEudmFsdWUgKiBiLnZhbHVlICsg
Yy52YWx1ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgdGVz
dE11bEFkZEFyZ3NSaWdodCgpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIFZhbHVlKiBhcmcwID0gcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOwotICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgIFZhbHVlKiBh
cmcyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjIpOwotICAgIFZhbHVlKiBtdWx0aXBsaWVkID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBhcmcxLCBhcmcyKTsKLSAgICBWYWx1
ZSogYWRkZWQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGFy
ZzAsIG11bHRpcGxpZWQpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCBhZGRlZCk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhw
cm9jKTsKLQotICAgIGF1dG8gdGVzdFZhbHVlcyA9IGludDY0T3BlcmFuZHMoKTsKLSAgICBmb3Ig
KGF1dG8gYSA6IHRlc3RWYWx1ZXMpIHsKLSAgICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVz
KSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8gYyA6IHRlc3RWYWx1ZXMpIHsKLSAgICAgICAgICAg
ICAgICBDSEVDSyhpbnZva2U8aW50NjRfdD4oKmNvZGUsIGEudmFsdWUsIGIudmFsdWUsIGMudmFs
dWUpID09IGEudmFsdWUgKyBiLnZhbHVlICogYy52YWx1ZSk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgdGVzdE11bEFkZEFyZ3NMZWZ0MzIoKQotewotICAgIFBy
b2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0K
LSAgICBWYWx1ZSogYXJnMCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9y
aWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZhbHVlKiBhcmcxID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKSk7Ci0gICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpKTsKLSAgICBWYWx1
ZSogbXVsdGlwbGllZCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4o
KSwgYXJnMCwgYXJnMSk7Ci0gICAgVmFsdWUqIGFkZGVkID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBBZGQsIE9yaWdpbigpLCBtdWx0aXBsaWVkLCBhcmcyKTsKLSAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgYWRkZWQpOwotCi0gICAg
YXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0KLSAgICBhdXRvIHRlc3RWYWx1ZXMgPSBp
bnQzMk9wZXJhbmRzKCk7Ci0gICAgZm9yIChhdXRvIGEgOiB0ZXN0VmFsdWVzKSB7Ci0gICAgICAg
IGZvciAoYXV0byBiIDogdGVzdFZhbHVlcykgewotICAgICAgICAgICAgZm9yIChhdXRvIGMgOiB0
ZXN0VmFsdWVzKSB7Ci0gICAgICAgICAgICAgICAgQ0hFQ0soaW52b2tlPGludDMyX3Q+KCpjb2Rl
LCBhLnZhbHVlLCBiLnZhbHVlLCBjLnZhbHVlKSA9PSBhLnZhbHVlICogYi52YWx1ZSArIGMudmFs
dWUpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIHRlc3RNdWxB
ZGRBcmdzUmlnaHQzMigpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIFZhbHVlKiBhcmcwID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSk7Ci0gICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5j
LCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKLSAgICBWYWx1ZSogYXJnMiA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMikpOwotICAgIFZhbHVlKiBtdWx0aXBsaWVkID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBhcmcxLCBhcmcyKTsKLSAgICBWYWx1ZSogYWRk
ZWQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGFyZzAsIG11
bHRpcGxpZWQpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCBhZGRlZCk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsK
LQotICAgIGF1dG8gdGVzdFZhbHVlcyA9IGludDMyT3BlcmFuZHMoKTsKLSAgICBmb3IgKGF1dG8g
YSA6IHRlc3RWYWx1ZXMpIHsKLSAgICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKSB7Ci0g
ICAgICAgICAgICBmb3IgKGF1dG8gYyA6IHRlc3RWYWx1ZXMpIHsKLSAgICAgICAgICAgICAgICBD
SEVDSyhpbnZva2U8aW50MzJfdD4oKmNvZGUsIGEudmFsdWUsIGIudmFsdWUsIGMudmFsdWUpID09
IGEudmFsdWUgKyBiLnZhbHVlICogYy52YWx1ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICB9Ci19Ci0KLXZvaWQgdGVzdE11bFN1YkFyZ3NMZWZ0KCkKLXsKLSAgICBQcm9jZWR1cmUg
cHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgVmFs
dWUqIGFyZzAgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMSk7Ci0gICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7Ci0gICAgVmFsdWUqIG11
bHRpcGxpZWQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIGFy
ZzAsIGFyZzEpOwotICAgIFZhbHVlKiBhZGRlZCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgU3ViLCBPcmlnaW4oKSwgbXVsdGlwbGllZCwgYXJnMik7Ci0gICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFkZGVkKTsKLQotICAgIGF1dG8g
Y29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotCi0gICAgYXV0byB0ZXN0VmFsdWVzID0gaW50NjRP
cGVyYW5kcygpOwotICAgIGZvciAoYXV0byBhIDogdGVzdFZhbHVlcykgewotICAgICAgICBmb3Ig
KGF1dG8gYiA6IHRlc3RWYWx1ZXMpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byBjIDogdGVzdFZh
bHVlcykgewotICAgICAgICAgICAgICAgIENIRUNLKGludm9rZTxpbnQ2NF90PigqY29kZSwgYS52
YWx1ZSwgYi52YWx1ZSwgYy52YWx1ZSkgPT0gYS52YWx1ZSAqIGIudmFsdWUgLSBjLnZhbHVlKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCB0ZXN0TXVsU3ViQXJn
c1JpZ2h0KCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOwotCi0gICAgVmFsdWUqIGFyZzAgPSByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0g
ICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgVmFsdWUqIGFyZzIgPSByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMik7Ci0gICAgVmFsdWUqIG11bHRpcGxpZWQgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIE11bCwgT3JpZ2luKCksIGFyZzEsIGFyZzIpOwotICAgIFZhbHVlKiBhZGRlZCA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgYXJnMCwgbXVsdGlw
bGllZCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIGFkZGVkKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotCi0g
ICAgYXV0byB0ZXN0VmFsdWVzID0gaW50NjRPcGVyYW5kcygpOwotICAgIGZvciAoYXV0byBhIDog
dGVzdFZhbHVlcykgewotICAgICAgICBmb3IgKGF1dG8gYiA6IHRlc3RWYWx1ZXMpIHsKLSAgICAg
ICAgICAgIGZvciAoYXV0byBjIDogdGVzdFZhbHVlcykgewotICAgICAgICAgICAgICAgIENIRUNL
KGludm9rZTxpbnQ2NF90PigqY29kZSwgYS52YWx1ZSwgYi52YWx1ZSwgYy52YWx1ZSkgPT0gYS52
YWx1ZSAtIGIudmFsdWUgKiBjLnZhbHVlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
IH0KLX0KLQotdm9pZCB0ZXN0TXVsU3ViQXJnc0xlZnQzMigpCi17Ci0gICAgUHJvY2VkdXJlIHBy
b2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIFZhbHVl
KiBhcmcwID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0g
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEp
KTsKLSAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMs
IE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMikpOwotICAgIFZhbHVlKiBtdWx0aXBs
aWVkID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBhcmcwLCBh
cmcxKTsKLSAgICBWYWx1ZSogYWRkZWQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1
YiwgT3JpZ2luKCksIG11bHRpcGxpZWQsIGFyZzIpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBhZGRlZCk7Ci0KLSAgICBhdXRvIGNvZGUg
PSBjb21waWxlUHJvYyhwcm9jKTsKLQotICAgIGF1dG8gdGVzdFZhbHVlcyA9IGludDMyT3BlcmFu
ZHMoKTsKLSAgICBmb3IgKGF1dG8gYSA6IHRlc3RWYWx1ZXMpIHsKLSAgICAgICAgZm9yIChhdXRv
IGIgOiB0ZXN0VmFsdWVzKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8gYyA6IHRlc3RWYWx1ZXMp
IHsKLSAgICAgICAgICAgICAgICBDSEVDSyhpbnZva2U8aW50MzJfdD4oKmNvZGUsIGEudmFsdWUs
IGIudmFsdWUsIGMudmFsdWUpID09IGEudmFsdWUgKiBiLnZhbHVlIC0gYy52YWx1ZSk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgdGVzdE11bFN1YkFyZ3NSaWdo
dDMyKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOwotCi0gICAgVmFsdWUqIGFyZzAgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBW
YWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigp
LAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOwotICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIyKSk7Ci0gICAgVmFsdWUqIG11bHRpcGxpZWQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIE11bCwgT3JpZ2luKCksIGFyZzEsIGFyZzIpOwotICAgIFZhbHVlKiBhZGRlZCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgYXJnMCwgbXVsdGlwbGllZCk7
Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCks
IGFkZGVkKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotCi0gICAgYXV0
byB0ZXN0VmFsdWVzID0gaW50MzJPcGVyYW5kcygpOwotICAgIGZvciAoYXV0byBhIDogdGVzdFZh
bHVlcykgewotICAgICAgICBmb3IgKGF1dG8gYiA6IHRlc3RWYWx1ZXMpIHsKLSAgICAgICAgICAg
IGZvciAoYXV0byBjIDogdGVzdFZhbHVlcykgewotICAgICAgICAgICAgICAgIENIRUNLKGludm9r
ZTxpbnQzMl90PigqY29kZSwgYS52YWx1ZSwgYi52YWx1ZSwgYy52YWx1ZSkgPT0gYS52YWx1ZSAt
IGIudmFsdWUgKiBjLnZhbHVlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0K
LQotdm9pZCB0ZXN0TXVsTmVnQXJncygpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIFZhbHVlKiBhcmcwID0gcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOwotICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgIFZh
bHVlKiBtdWx0aXBsaWVkID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdp
bigpLCBhcmcwLCBhcmcxKTsKLSAgICBWYWx1ZSogemVybyA9IHJvb3QtPmFwcGVuZE5ldzxDb25z
dDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKTsKLSAgICBWYWx1ZSogYWRkZWQgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIHplcm8sIG11bHRpcGxpZWQpOwot
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBh
ZGRlZCk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLQotICAgIGF1dG8g
dGVzdFZhbHVlcyA9IGludDY0T3BlcmFuZHMoKTsKLSAgICBmb3IgKGF1dG8gYSA6IHRlc3RWYWx1
ZXMpIHsKLSAgICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKSB7Ci0gICAgICAgICAgICBD
SEVDSyhpbnZva2U8aW50NjRfdD4oKmNvZGUsIGEudmFsdWUsIGIudmFsdWUpID09IC0oYS52YWx1
ZSAqIGIudmFsdWUpKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCB0ZXN0TXVsTmVnQXJn
czMyKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOwotCi0gICAgVmFsdWUqIGFyZzAgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBW
YWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigp
LAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOwotICAgIFZhbHVlKiBtdWx0aXBsaWVkID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBhcmcwLCBhcmcxKTsKLSAg
ICBWYWx1ZSogemVybyA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCAwKTsKLSAgICBWYWx1ZSogYWRkZWQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFN1YiwgT3JpZ2luKCksIHplcm8sIG11bHRpcGxpZWQpOwotICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBhZGRlZCk7Ci0KLSAgICBhdXRvIGNv
ZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLQotICAgIGF1dG8gdGVzdFZhbHVlcyA9IGludDMyT3Bl
cmFuZHMoKTsKLSAgICBmb3IgKGF1dG8gYSA6IHRlc3RWYWx1ZXMpIHsKLSAgICAgICAgZm9yIChh
dXRvIGIgOiB0ZXN0VmFsdWVzKSB7Ci0gICAgICAgICAgICBDSEVDSyhpbnZva2U8aW50MzJfdD4o
KmNvZGUsIGEudmFsdWUsIGIudmFsdWUpID09IC0oYS52YWx1ZSAqIGIudmFsdWUpKTsKLSAgICAg
ICAgfQotICAgIH0KLX0KLQotdm9pZCB0ZXN0TXVsQXJnRG91YmxlKGRvdWJsZSBhKQotewotICAg
IFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
Ci0gICAgVmFsdWUqIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwotICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCB2YWx1ZSwgdmFsdWUp
KTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBh
KSwgYSAqIGEpKTsKLX0KLQotdm9pZCB0ZXN0TXVsQXJnc0RvdWJsZShkb3VibGUgYSwgZG91Ymxl
IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICBWYWx1ZSogdmFsdWVBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwotICAgIFZh
bHVlKiB2YWx1ZUIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIHZhbHVlQSwgdmFsdWVCKSk7Ci0K
LSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgYSwgYiks
IGEgKiBiKSk7Ci19Ci0KLXZvaWQgdGVzdE11bEFyZ0ltbURvdWJsZShkb3VibGUgYSwgZG91Ymxl
IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICBWYWx1ZSogdmFsdWVBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwotICAgIFZh
bHVlKiB2YWx1ZUIgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIGIpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBNdWwsIE9yaWdpbigpLCB2YWx1ZUEsIHZhbHVlQikpOwotCi0gICAgQ0hFQ0soaXNJZGVudGlj
YWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEpLCBhICogYikpOwotfQotCi12b2lkIHRl
c3RNdWxJbW1BcmdEb3VibGUoZG91YmxlIGEsIGRvdWJsZSBiKQotewotICAgIFByb2NlZHVyZSBw
cm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUq
IHZhbHVlQSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgYSk7Ci0gICAgVmFsdWUqIHZhbHVlQiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKLSAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0g
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgdmFsdWVB
LCB2YWx1ZUIpKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91Ymxl
Pihwcm9jLCBiKSwgYSAqIGIpKTsKLX0KLQotdm9pZCB0ZXN0TXVsSW1tc0RvdWJsZShkb3VibGUg
YSwgZG91YmxlIGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogdmFsdWVBID0gcm9vdC0+YXBwZW5kTmV3
PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKLSAgICBWYWx1ZSogdmFsdWVC
ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKTsK
LSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwg
T3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmln
aW4oKSwgdmFsdWVBLCB2YWx1ZUIpKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVB
bmRSdW48ZG91YmxlPihwcm9jKSwgYSAqIGIpKTsKLX0KLQotdm9pZCB0ZXN0TXVsQXJnRmxvYXQo
ZmxvYXQgYSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7
Ci0gICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJp
dHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZSwgZmxv
YXRWYWx1ZSk7Ci0gICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKLQotCi0gICAg
Q0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nh
c3Q8aW50MzJfdD4oYSkpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAqIGEpKSk7Ci19Ci0KLXZv
aWQgdGVzdE11bEFyZ3NGbG9hdChmbG9hdCBhLCBmbG9hdCBiKQotewotICAgIFByb2NlZHVyZSBw
cm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUq
IGFyZ3VtZW50MWludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3Jp
Z2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50Mmlu
dDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxKSk7Ci0gICAgVmFsdWUqIGZsb2F0VmFsdWUxID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MWludDMy
KTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQyaW50MzIpOwotICAgIFZhbHVlKiByZXN1
bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIGZsb2F0VmFs
dWUxLCBmbG9hdFZhbHVlMik7Ci0gICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsK
LQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0
d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYikpLCBiaXR3aXNl
X2Nhc3Q8aW50MzJfdD4oYSAqIGIpKSk7Ci19Ci0KLXZvaWQgdGVzdE11bEFyZ0ltbUZsb2F0KGZs
b2F0IGEsIGZsb2F0IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCkpOwotICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOwotICAgIFZhbHVlKiBjb25z
dFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IGIpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11
bCwgT3JpZ2luKCksIGZsb2F0VmFsdWUsIGNvbnN0VmFsdWUpOwotICAgIFZhbHVlKiByZXN1bHQz
MiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBy
ZXN1bHQpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCByZXN1bHQzMik7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVu
PGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2VfY2FzdDxp
bnQzMl90PihhICogYikpKTsKLX0KLQotdm9pZCB0ZXN0TXVsSW1tQXJnRmxvYXQoZmxvYXQgYSwg
ZmxvYXQgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7
Ci0gICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJp
dHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7Ci0gICAgVmFsdWUqIGNvbnN0VmFsdWUg
PSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7Ci0g
ICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmln
aW4oKSwgY29uc3RWYWx1ZSwgZmxvYXRWYWx1ZSk7Ci0gICAgVmFsdWUqIHJlc3VsdDMyID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7
Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCks
IHJlc3VsdDMyKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJf
dD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+
KGEgKiBiKSkpOwotfQotCi12b2lkIHRlc3RNdWxJbW1zRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikK
LXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOwotICAgIFZhbHVlKiBjb25zdFZhbHVlMSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdEZs
b2F0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKLSAgICBWYWx1ZSogY29uc3RWYWx1ZTIgPSBy
b290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7Ci0gICAg
VmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4o
KSwgY29uc3RWYWx1ZTEsIGNvbnN0VmFsdWUyKTsKLSAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgcmVzdWx0KTsK
LSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwg
cmVzdWx0MzIpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90
Pihwcm9jKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgKiBiKSkpOwotfQotCi12b2lkIHRlc3RN
dWxBcmdGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbihmbG9hdCBhKQotewotICAgIFBy
b2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0g
ICAgVmFsdWUqIGFyZ3VtZW50SW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRy
dW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogZmxv
YXRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdp
bigpLCBhcmd1bWVudEludDMyKTsKLSAgICBWYWx1ZSogYXNEb3VibGUgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlKTsKLSAg
ICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdp
bigpLCBhc0RvdWJsZSwgYXNEb3VibGUpOwotICAgIFZhbHVlKiBmbG9hdFJlc3VsdCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIHJlc3VsdCk7
Ci0gICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3
aXNlQ2FzdCwgT3JpZ2luKCksIGZsb2F0UmVzdWx0KTsKLSAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOwotCi0gICAgQ0hFQ0so
aXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50
MzJfdD4oYSkpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAqIGEpKSk7Ci19Ci0KLXZvaWQgdGVz
dE11bEFyZ3NGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbihmbG9hdCBhLCBmbG9hdCBi
KQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0g
ICAgVmFsdWUqIGFyZ3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBU
cnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Ci0gICAgVmFsdWUqIGZs
b2F0VmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3Jp
Z2luKCksIGFyZ3VtZW50MWludDMyKTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZTIgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQyaW50
MzIpOwotICAgIFZhbHVlKiBhc0RvdWJsZTEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlMSk7Ci0gICAgVmFsdWUqIGFzRG91
YmxlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2lu
KCksIGZsb2F0VmFsdWUyKTsKLSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBhc0RvdWJsZTEsIGFzRG91YmxlMik7Ci0gICAgVmFs
dWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zs
b2F0LCBPcmlnaW4oKSwgcmVzdWx0KTsKLSAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1bHQpOwot
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBy
ZXN1bHQzMik7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+
KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIp
KSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgKiBiKSkpOwotfQotCi12b2lkIHRlc3RNdWxBcmdz
RmxvYXRXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lvbihmbG9hdCBhLCBmbG9hdCBiKQotewot
ICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFs
dWUqIGFyZ3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywg
T3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Ci0gICAgVmFsdWUqIGZsb2F0VmFs
dWUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCks
IGFyZ3VtZW50MWludDMyKTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZTIgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQyaW50MzIpOwot
ICAgIFZhbHVlKiBhc0RvdWJsZTEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0
VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlMSk7Ci0gICAgVmFsdWUqIGFzRG91YmxlMiA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZs
b2F0VmFsdWUyKTsKLSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBNdWwsIE9yaWdpbigpLCBhc0RvdWJsZTEsIGFzRG91YmxlMik7Ci0gICAgVmFsdWUqIGZs
b2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBP
cmlnaW4oKSwgcmVzdWx0KTsKLSAgICBWYWx1ZSogZG91YmxlTXVscmVzcyA9IHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIyKTsKLSAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlLCBPcmln
aW4oKSwgcmVzdWx0LCBkb3VibGVNdWxyZXNzKTsKLSAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1
bHQpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCByZXN1bHQzMik7Ci0KLSAgICBkb3VibGUgZWZmZWN0ID0gMDsKLSAgICBDSEVDSyhpc0lk
ZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90
PihhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpLCAmZWZmZWN0KSwgYml0d2lzZV9jYXN0PGlu
dDMyX3Q+KGEgKiBiKSkpOwotICAgIENIRUNLKGlzSWRlbnRpY2FsKGVmZmVjdCwgc3RhdGljX2Nh
c3Q8ZG91YmxlPihhKSAqIHN0YXRpY19jYXN0PGRvdWJsZT4oYikpKTsKLX0KLQotdm9pZCB0ZXN0
RGl2QXJnRG91YmxlKGRvdWJsZSBhKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIHZhbHVlID0gcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1
bWVudEZQUjApOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBEaXYsIE9yaWdpbigpLCB2YWx1ZSwgdmFsdWUpKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2Fs
KGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBhKSwgYSAvIGEpKTsKLX0KLQotdm9pZCB0ZXN0
RGl2QXJnc0RvdWJsZShkb3VibGUgYSwgZG91YmxlIGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7
Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogdmFs
dWVBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBG
UFJJbmZvOjphcmd1bWVudEZQUjApOwotICAgIFZhbHVlKiB2YWx1ZUIgPSByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBS
MSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERpdiwg
T3JpZ2luKCksIHZhbHVlQSwgdmFsdWVCKSk7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21w
aWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgYSwgYiksIGEgLyBiKSk7Ci19Ci0KLXZvaWQgdGVzdERp
dkFyZ0ltbURvdWJsZShkb3VibGUgYSwgZG91YmxlIGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7
Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogdmFs
dWVBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBG
UFJJbmZvOjphcmd1bWVudEZQUjApOwotICAgIFZhbHVlKiB2YWx1ZUIgPSByb290LT5hcHBlbmRO
ZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpOwotICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEaXYsIE9yaWdpbigpLCB2YWx1ZUEsIHZh
bHVlQikpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHBy
b2MsIGEpLCBhIC8gYikpOwotfQotCi12b2lkIHRlc3REaXZJbW1BcmdEb3VibGUoZG91YmxlIGEs
IGRvdWJsZSBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIHZhbHVlQSA9IHJvb3QtPmFwcGVuZE5ldzxD
b25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7Ci0gICAgVmFsdWUqIHZhbHVlQiA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5m
bzo6YXJndW1lbnRGUFIwKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgRGl2LCBPcmlnaW4oKSwgdmFsdWVBLCB2YWx1ZUIpKTsKLQotICAgIENIRUNLKGlz
SWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBiKSwgYSAvIGIpKTsKLX0KLQot
dm9pZCB0ZXN0RGl2SW1tc0RvdWJsZShkb3VibGUgYSwgZG91YmxlIGIpCi17Ci0gICAgUHJvY2Vk
dXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBW
YWx1ZSogdmFsdWVBID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBhKTsKLSAgICBWYWx1ZSogdmFsdWVCID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91
YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgRGl2LCBPcmlnaW4oKSwgdmFsdWVBLCB2YWx1ZUIpKTsKLQot
ICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jKSwgYSAvIGIp
KTsKLX0KLQotdm9pZCB0ZXN0RGl2QXJnRmxvYXQoZmxvYXQgYSkKLXsKLSAgICBQcm9jZWR1cmUg
cHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVl
KiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2lu
KCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGZsb2F0VmFsdWUgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1l
bnQzMik7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
RGl2LCBPcmlnaW4oKSwgZmxvYXRWYWx1ZSwgZmxvYXRWYWx1ZSk7Ci0gICAgVmFsdWUqIHJlc3Vs
dDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCks
IHJlc3VsdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwg
T3JpZ2luKCksIHJlc3VsdDMyKTsKLQotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFu
ZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXR3aXNlX2Nh
c3Q8aW50MzJfdD4oYSAvIGEpKSk7Ci19Ci0KLXZvaWQgdGVzdERpdkFyZ3NGbG9hdChmbG9hdCBh
LCBmbG9hdCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Ci0gICAg
VmFsdWUqIGZsb2F0VmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNl
Q2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MWludDMyKTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZTIg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJn
dW1lbnQyaW50MzIpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIERpdiwgT3JpZ2luKCksIGZsb2F0VmFsdWUxLCBmbG9hdFZhbHVlMik7Ci0gICAgVmFs
dWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwg
T3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2Ms
IFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNv
bXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3
aXNlX2Nhc3Q8aW50MzJfdD4oYikpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAvIGIpKSk7Ci19
Ci0KLXZvaWQgdGVzdERpdkFyZ0ltbUZsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCi17Ci0gICAgUHJv
Y2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAg
ICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMs
IE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZhbHVlKiBmbG9hdFZh
bHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCks
IGFyZ3VtZW50MzIpOwotICAgIFZhbHVlKiBjb25zdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENv
bnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpOwotICAgIFZhbHVlKiByZXN1bHQgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERpdiwgT3JpZ2luKCksIGZsb2F0VmFsdWUsIGNv
bnN0VmFsdWUpOwotICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOwotICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7Ci0KLSAgICBD
SEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2Fz
dDxpbnQzMl90PihhKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhIC8gYikpKTsKLX0KLQotdm9p
ZCB0ZXN0RGl2SW1tQXJnRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKLXsKLSAgICBQcm9jZWR1cmUg
cHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVl
KiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2lu
KCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGZsb2F0VmFsdWUgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1l
bnQzMik7Ci0gICAgVmFsdWUqIGNvbnN0VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9h
dFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgRGl2LCBPcmlnaW4oKSwgY29uc3RWYWx1ZSwgZmxvYXRWYWx1
ZSk7Ci0gICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBC
aXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKLQotICAgIENIRUNLKGlz
SWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMy
X3Q+KGIpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgLyBiKSkpOwotfQotCi12b2lkIHRlc3RE
aXZJbW1zRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBjb25zdFZh
bHVlMSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBh
KTsKLSAgICBWYWx1ZSogY29uc3RWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYik7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgRGl2LCBPcmlnaW4oKSwgY29uc3RWYWx1ZTEsIGNvbnN0VmFsdWUy
KTsKLSAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJp
dHdpc2VDYXN0LCBPcmlnaW4oKSwgcmVzdWx0KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOwotCi0gICAgQ0hFQ0soaXNJ
ZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jKSwgYml0d2lzZV9jYXN0PGludDMy
X3Q+KGEgLyBiKSkpOwotfQotCi12b2lkIHRlc3RNb2RBcmdEb3VibGUoZG91YmxlIGEpCi17Ci0g
ICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKLSAgICBWYWx1ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Ci0gICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE1vZCwgT3JpZ2luKCksIHZhbHVlLCB2YWx1
ZSkpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2Ms
IGEpLCBmbW9kKGEsIGEpKSk7Ci19Ci0KLXZvaWQgdGVzdE1vZEFyZ3NEb3VibGUoZG91YmxlIGEs
IGRvdWJsZSBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIHZhbHVlQSA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsK
LSAgICBWYWx1ZSogdmFsdWVCID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOwotICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNb2QsIE9yaWdpbigpLCB2YWx1ZUEsIHZhbHVl
QikpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2Ms
IGEsIGIpLCBmbW9kKGEsIGIpKSk7Ci19Ci0KLXZvaWQgdGVzdE1vZEFyZ0ltbURvdWJsZShkb3Vi
bGUgYSwgZG91YmxlIGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogdmFsdWVBID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQ
UjApOwotICAgIFZhbHVlKiB2YWx1ZUIgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIGIpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
LSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBNb2QsIE9yaWdpbigpLCB2YWx1ZUEsIHZhbHVlQikpOwotCi0gICAgQ0hF
Q0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEpLCBmbW9kKGEsIGIp
KSk7Ci19Ci0KLXZvaWQgdGVzdE1vZEltbUFyZ0RvdWJsZShkb3VibGUgYSwgZG91YmxlIGIpCi17
Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKLSAgICBWYWx1ZSogdmFsdWVBID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBhKTsKLSAgICBWYWx1ZSogdmFsdWVCID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQ
UjApOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNb2Qs
IE9yaWdpbigpLCB2YWx1ZUEsIHZhbHVlQikpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29t
cGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGIpLCBmbW9kKGEsIGIpKSk7Ci19Ci0KLXZvaWQgdGVz
dE1vZEltbXNEb3VibGUoZG91YmxlIGEsIGRvdWJsZSBiKQotewotICAgIFByb2NlZHVyZSBwcm9j
OwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIHZh
bHVlQSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
YSk7Ci0gICAgVmFsdWUqIHZhbHVlQiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgYik7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAot
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIE1vZCwgT3JpZ2luKCksIHZhbHVlQSwgdmFsdWVCKSk7Ci0KLSAgICBDSEVD
Syhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYyksIGZtb2QoYSwgYikpKTsK
LX0KLQotdm9pZCB0ZXN0TW9kQXJnRmxvYXQoZmxvYXQgYSkKLXsKLSAgICBQcm9jZWR1cmUgcHJv
YzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBh
cmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCks
Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQz
Mik7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTW9k
LCBPcmlnaW4oKSwgZmxvYXRWYWx1ZSwgZmxvYXRWYWx1ZSk7Ci0gICAgVmFsdWUqIHJlc3VsdDMy
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJl
c3VsdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIHJlc3VsdDMyKTsKLQotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1
bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXR3aXNlX2Nhc3Q8
aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KGZtb2QoYSwgYSkpKSkpOwotfQotCi12b2lkIHRl
c3RNb2RBcmdzRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsK
LSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1
bWVudDFpbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigp
LAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZhbHVlKiBhcmd1bWVudDJpbnQzMiA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMSkpOwotICAgIFZhbHVlKiBmbG9hdFZhbHVlMSA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDFpbnQzMik7Ci0g
ICAgVmFsdWUqIGZsb2F0VmFsdWUyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3
aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MmludDMyKTsKLSAgICBWYWx1ZSogcmVzdWx0ID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNb2QsIE9yaWdpbigpLCBmbG9hdFZhbHVlMSwg
ZmxvYXRWYWx1ZTIpOwotICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOwotICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7Ci0KLSAg
ICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2Vf
Y2FzdDxpbnQzMl90PihhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpKSwgYml0d2lzZV9jYXN0
PGludDMyX3Q+KHN0YXRpY19jYXN0PGZsb2F0PihmbW9kKGEsIGIpKSkpKTsKLX0KLQotdm9pZCB0
ZXN0TW9kQXJnSW1tRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJv
YzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBh
cmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCks
Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQz
Mik7Ci0gICAgVmFsdWUqIGNvbnN0VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYik7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgTW9kLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZSwgY29uc3RWYWx1ZSk7
Ci0gICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3
aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKLQotICAgIENIRUNLKGlzSWRl
bnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+
KGEpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KHN0YXRpY19jYXN0PGZsb2F0PihmbW9kKGEsIGIp
KSkpKTsKLX0KLQotdm9pZCB0ZXN0TW9kSW1tQXJnRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKLXsK
LSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOwotICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUq
IGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBP
cmlnaW4oKSwgYXJndW1lbnQzMik7Ci0gICAgVmFsdWUqIGNvbnN0VmFsdWUgPSByb290LT5hcHBl
bmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7Ci0gICAgVmFsdWUqIHJl
c3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTW9kLCBPcmlnaW4oKSwgY29uc3RW
YWx1ZSwgZmxvYXRWYWx1ZSk7Ci0gICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsK
LQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0
d2lzZV9jYXN0PGludDMyX3Q+KGIpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KHN0YXRpY19jYXN0
PGZsb2F0PihmbW9kKGEsIGIpKSkpKTsKLX0KLQotdm9pZCB0ZXN0TW9kSW1tc0Zsb2F0KGZsb2F0
IGEsIGZsb2F0IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogY29uc3RWYWx1ZTEgPSByb290LT5hcHBl
bmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7Ci0gICAgVmFsdWUqIGNv
bnN0VmFsdWUyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIGIpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IE1vZCwgT3JpZ2luKCksIGNvbnN0VmFsdWUxLCBjb25zdFZhbHVlMik7Ci0gICAgVmFsdWUqIHJl
c3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2lu
KCksIHJlc3VsdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVy
biwgT3JpZ2luKCksIHJlc3VsdDMyKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVB
bmRSdW48aW50MzJfdD4ocHJvYyksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihzdGF0aWNfY2FzdDxm
bG9hdD4oZm1vZChhLCBiKSkpKSk7Ci19Ci0KLXZvaWQgdGVzdERpdkFyZ0Zsb2F0V2l0aFVzZWxl
c3NEb3VibGVDb252ZXJzaW9uKGZsb2F0IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnRJ
bnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50SW50MzIp
OwotICAgIFZhbHVlKiBhc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxv
YXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUpOwotICAgIFZhbHVlKiByZXN1bHQgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERpdiwgT3JpZ2luKCksIGFzRG91YmxlLCBhc0Rv
dWJsZSk7Ci0gICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgcmVzdWx0KTsKLSAgICBWYWx1ZSogcmVzdWx0
MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwg
ZmxvYXRSZXN1bHQpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCByZXN1bHQzMik7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxl
QW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2Vf
Y2FzdDxpbnQzMl90PihhIC8gYSkpKTsKLX0KLQotdm9pZCB0ZXN0RGl2QXJnc0Zsb2F0V2l0aFVz
ZWxlc3NEb3VibGVDb252ZXJzaW9uKGZsb2F0IGEsIGZsb2F0IGIpCi17Ci0gICAgUHJvY2VkdXJl
IHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1
ZSogYXJndW1lbnQxaW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBP
cmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogYXJndW1lbnQy
aW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpKTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZTEgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQxaW50
MzIpOwotICAgIFZhbHVlKiBmbG9hdFZhbHVlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDJpbnQzMik7Ci0gICAgVmFsdWUqIGFz
RG91YmxlMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3Jp
Z2luKCksIGZsb2F0VmFsdWUxKTsKLSAgICBWYWx1ZSogYXNEb3VibGUyID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZTIpOwot
ICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERpdiwgT3Jp
Z2luKCksIGFzRG91YmxlMSwgYXNEb3VibGUyKTsKLSAgICBWYWx1ZSogZmxvYXRSZXN1bHQgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCByZXN1
bHQpOwotICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
Qml0d2lzZUNhc3QsIE9yaWdpbigpLCBmbG9hdFJlc3VsdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKLQotICAgIENI
RUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0
PGludDMyX3Q+KGEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYikpLCBiaXR3aXNlX2Nhc3Q8aW50
MzJfdD4oYSAvIGIpKSk7Ci19Ci0KLXZvaWQgdGVzdERpdkFyZ3NGbG9hdFdpdGhFZmZlY3RmdWxE
b3VibGVDb252ZXJzaW9uKGZsb2F0IGEsIGZsb2F0IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7
Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJn
dW1lbnQxaW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4o
KSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogYXJndW1lbnQyaW50MzIg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEpKTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZTEgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQxaW50MzIpOwot
ICAgIFZhbHVlKiBmbG9hdFZhbHVlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0
d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDJpbnQzMik7Ci0gICAgVmFsdWUqIGFzRG91Ymxl
MSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCks
IGZsb2F0VmFsdWUxKTsKLSAgICBWYWx1ZSogYXNEb3VibGUyID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZTIpOwotICAgIFZh
bHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERpdiwgT3JpZ2luKCks
IGFzRG91YmxlMSwgYXNEb3VibGUyKTsKLSAgICBWYWx1ZSogZmxvYXRSZXN1bHQgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCByZXN1bHQpOwot
ICAgIFZhbHVlKiBkb3VibGVEaXZyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwotICAgIHJvb3QtPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmUsIE9yaWdpbigpLCByZXN1bHQsIGRvdWJs
ZURpdnJlc3MpOwotICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBmbG9hdFJlc3VsdCk7Ci0gICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKLQot
ICAgIGRvdWJsZSBlZmZlY3QgPSAwOwotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRS
dW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3aXNlX2Nhc3Q8
aW50MzJfdD4oYiksICZlZmZlY3QpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAvIGIpKSk7Ci0g
ICAgQ0hFQ0soaXNJZGVudGljYWwoZWZmZWN0LCBzdGF0aWNfY2FzdDxkb3VibGU+KGEpIC8gc3Rh
dGljX2Nhc3Q8ZG91YmxlPihiKSkpOwotfQotCi12b2lkIHRlc3RVRGl2QXJnc0ludDMyKHVpbnQz
Ml90IGEsIHVpbnQzMl90IGIpCi17Ci0gICAgLy8gVURpdiB3aXRoIGRlbm9taW5hdG9yID09IDAg
aXMgaW52YWxpZC4KLSAgICBpZiAoIWIpCi0gICAgICAgIHJldHVybjsKLQotICAgIFByb2NlZHVy
ZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFs
dWUqIGFyZ3VtZW50MSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdp
bigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZhbHVlKiBhcmd1bWVudDIgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjEpKTsKLSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBVRGl2LCBPcmlnaW4oKSwgYXJndW1lbnQxLCBhcmd1bWVudDIpOwotICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKLQotICAg
IENIRUNLX0VRKGNvbXBpbGVBbmRSdW48dWludDMyX3Q+KHByb2MsIGEsIGIpLCBhIC8gYik7Ci19
Ci0KLXZvaWQgdGVzdFVEaXZBcmdzSW50NjQodWludDY0X3QgYSwgdWludDY0X3QgYikKLXsKLSAg
ICAvLyBVRGl2IHdpdGggZGVub21pbmF0b3IgPT0gMCBpcyBpbnZhbGlkLgotICAgIGlmICghYikK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnQxID0gcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOwotICAgIFZhbHVlKiBhcmd1bWVudDIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgVmFs
dWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVURpdiwgT3JpZ2luKCks
IGFyZ3VtZW50MSwgYXJndW1lbnQyKTsKLSAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7Ci0KLSAgICBDSEVDS19FUShjb21waWxlQW5kUnVu
PHVpbnQ2NF90Pihwcm9jLCBhLCBiKSwgYSAvIGIpOwotfQotCi12b2lkIHRlc3RVTW9kQXJnc0lu
dDMyKHVpbnQzMl90IGEsIHVpbnQzMl90IGIpCi17Ci0gICAgLy8gVU1vZCB3aXRoIGRlbm9taW5h
dG9yID09IDAgaXMgaW52YWxpZC4KLSAgICBpZiAoIWIpCi0gICAgICAgIHJldHVybjsKLQotICAg
IFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
Ci0gICAgVmFsdWUqIGFyZ3VtZW50MSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1
bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZhbHVlKiBhcmd1
bWVudDIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpKTsKLSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBVTW9kLCBPcmlnaW4oKSwgYXJndW1lbnQxLCBhcmd1bWVudDIpOwot
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0
KTsKLQotICAgIENIRUNLX0VRKGNvbXBpbGVBbmRSdW48dWludDMyX3Q+KHByb2MsIGEsIGIpLCBh
ICUgYik7Ci19Ci0KLXZvaWQgdGVzdFVNb2RBcmdzSW50NjQodWludDY0X3QgYSwgdWludDY0X3Qg
YikKLXsKLSAgICAvLyBVTW9kIHdpdGggZGVub21pbmF0b3IgPT0gMCBpcyBpbnZhbGlkLgotICAg
IGlmICghYikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnQxID0g
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOwotICAgIFZhbHVlKiBhcmd1bWVudDIgPSByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7
Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVU1vZCwg
T3JpZ2luKCksIGFyZ3VtZW50MSwgYXJndW1lbnQyKTsKLSAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgCi0gICAgQ0hFQ0tfRVEo
Y29tcGlsZUFuZFJ1bjx1aW50NjRfdD4ocHJvYywgYSwgYiksIGEgJSBiKTsKLX0KLQotdm9pZCB0
ZXN0U3ViQXJnKGludCBhKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIHZhbHVlID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIs
IE9yaWdpbigpLCB2YWx1ZSwgdmFsdWUpKTsKLQotICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGlu
dD4ocHJvYywgYSkpOwotfQotCi12b2lkIHRlc3RTdWJBcmdzKGludCBhLCBpbnQgYikKLXsKLSAg
ICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAg
IHByb2MsIFN1YiwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50
Pihwcm9jLCBhLCBiKSA9PSBhIC0gYik7Ci19Ci0KLXZvaWQgdGVzdFN1YkFyZ0ltbShpbnQ2NF90
IGEsIGludDY0X3QgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
LSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIFN1YiwgT3JpZ2luKCksCi0gICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgYikpKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRf
dD4ocHJvYywgYSkgPT0gYSAtIGIpOwotfQotCi12b2lkIHRlc3RTdWJOZWcoaW50IGEsIGludCBi
KQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAg
ICAgICAgICAgcHJvYywgU3ViLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTmVnLCBPcmlnaW4o
KSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKSk7Ci0gICAgCi0gICAgQ0hFQ0so
Y29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEsIGIpID09IGEgLSAoLSBiKSk7Ci19Ci0KLXZvaWQg
dGVzdE5lZ1N1YihpbnQgYSwgaW50IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBOZWcsIE9yaWdpbigpLAotICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLAotICAg
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMSkpKSk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYSwgYikgPT0g
LShhIC0gYikpOwotfQotCi12b2lkIHRlc3ROZWdWYWx1ZVN1Yk9uZShpbnQgYSkKLXsKLSAgICBQ
cm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwot
ICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBWYWx1ZSogbmVnQXJn
dW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksCi0gICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSwKLSAg
ICAgICAgYXJndW1lbnQpOwotICAgIFZhbHVlKiBuZWdBcmd1bWVudE1pbnVzT25lID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLAotICAgICAgICBuZWdBcmd1bWVu
dCwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IDEpKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmln
aW4oKSwgbmVnQXJndW1lbnRNaW51c09uZSk7Ci0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+
KHByb2MsIGEpID09IC1hIC0gMSk7Ci19Ci0KLXZvaWQgdGVzdFN1YlN1YihpbnQgYSwgaW50IGIs
IGludCBjKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAotICAgICAgICAgICAgcHJvYywgU3ViLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSwKLSAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIyKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHBy
b2MsIGEsIGIsIGMpID09IChhLWIpLWMpOwotfQotCi12b2lkIHRlc3RTdWJTdWIyKGludCBhLCBp
bnQgYiwgaW50IGMpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0g
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBTdWIsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBT
dWIsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSwKLSAgICAgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMikpKSk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGlu
dD4ocHJvYywgYSwgYiwgYykgPT0gYS0oYi1jKSk7Ci19Ci0KLXZvaWQgdGVzdFN1YkFkZChpbnQg
YSwgaW50IGIsIGludCBjKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgU3ViLCBPcmlnaW4oKSwKLSAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwKLSAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSwK
LSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1
bjxpbnQ+KHByb2MsIGEsIGIsIGMpID09IChhK2IpLWMpOwotfQotCi12b2lkIHRlc3RTdWJGaXJz
dE5lZyhpbnQgYSwgaW50IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBTdWIsIE9yaWdpbigpLAotICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBOZWcsIE9yaWdpbigpLAotICAgICAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKTsK
LQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhLCBiKSA9PSAoLWEpLWIpOwot
fQotCi12b2lkIHRlc3RTdWJJbW1BcmcoaW50IGEsIGludCBiKQotewotICAgIFByb2NlZHVyZSBw
cm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAot
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgU3ViLCBP
cmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBhKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOwotCi0gICAgQ0hF
Q0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGIpID09IGEgLSBiKTsKLX0KLQotdm9pZCB0ZXN0
U3ViQXJnTWVtKGludDY0X3QgYSwgaW50NjRfdCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwot
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFkZHJl
c3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgTWVtb3J5VmFsdWUqIGxvYWQgPSByb290LT5hcHBl
bmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwgYWRkcmVzcyk7
Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBP
cmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAotICAgICAgICBsb2FkKTsKLSAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0
KTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYSwgJmIpID09IGEg
LSBiKTsKLX0KLQotdm9pZCB0ZXN0U3ViTWVtQXJnKGludDY0X3QgYSwgaW50NjRfdCBiKQotewot
ICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7Ci0gICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgTWVtb3J5VmFs
dWUqIGxvYWQgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDY0
LCBPcmlnaW4oKSwgYWRkcmVzcyk7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwKLSAgICAgICAgbG9hZCwKLSAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjEpKTsKLSAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0
b3JlLCBPcmlnaW4oKSwgcmVzdWx0LCBhZGRyZXNzKTsKLSAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKLQotICAgIGludDY0X3QgaW5wdXRPdXRwdXQgPSBh
OwotICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsICZpbnB1dE91dHB1dCwg
YikpOwotICAgIENIRUNLKGlucHV0T3V0cHV0ID09IGEgLSBiKTsKLX0KLQotdm9pZCB0ZXN0U3Vi
SW1tTWVtKGludDY0X3QgYSwgaW50NjRfdCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFkZHJlc3Mg
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgTWVtb3J5VmFsdWUqIGxvYWQgPSByb290LT5hcHBlbmRO
ZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwgYWRkcmVzcyk7Ci0g
ICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmln
aW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIGEpLAotICAgICAgICBsb2FkKTsKLSAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KHByb2MsIFN0b3JlLCBPcmlnaW4oKSwgcmVzdWx0LCBhZGRyZXNzKTsKLSAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKLQotICAgIGludDY0X3QgaW5wdXRP
dXRwdXQgPSBiOwotICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludD4ocHJvYywgJmlucHV0T3V0
cHV0KSk7Ci0gICAgQ0hFQ0soaW5wdXRPdXRwdXQgPT0gYSAtIGIpOwotfQotCi12b2lkIHRlc3RT
dWJNZW1JbW0oaW50NjRfdCBhLCBpbnQ2NF90IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0g
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYWRkcmVz
cyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBNZW1vcnlWYWx1ZSogbG9hZCA9IHJvb3QtPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50NjQsIE9yaWdpbigpLCBhZGRyZXNzKTsK
LSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9y
aWdpbigpLAotICAgICAgICBsb2FkLAotICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYikpOwotICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1
ZT4ocHJvYywgU3RvcmUsIE9yaWdpbigpLCByZXN1bHQsIGFkZHJlc3MpOwotICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByb290LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwotCi0gICAgaW50NjRfdCBpbnB1
dE91dHB1dCA9IGE7Ci0gICAgQ0hFQ0soIWNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCAmaW5wdXRP
dXRwdXQpKTsKLSAgICBDSEVDSyhpbnB1dE91dHB1dCA9PSBhIC0gYik7Ci19Ci0KLQotdm9pZCB0
ZXN0U3ViQXJnczMyKGludCBhLCBpbnQgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIFN1YiwgT3JpZ2luKCksCi0g
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAotICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBU
cnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSkpOwotCi0g
ICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEsIGIpID09IGEgLSBiKTsKLX0KLQot
dm9pZCB0ZXN0U3ViQXJnSW1tMzIoaW50IGEsIGludCBiKQotewotICAgIFByb2NlZHVyZSBwcm9j
OwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgU3ViLCBPcmln
aW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAg
ICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmln
aW4oKSwgYikpKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhKSA9PSBh
IC0gYik7Ci19Ci0KLXZvaWQgdGVzdFN1YkltbUFyZzMyKGludCBhLCBpbnQgYikKLXsKLSAgICBQ
cm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwot
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHBy
b2MsIFN1YiwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYSksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAotICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCkpKSk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4o
cHJvYywgYikgPT0gYSAtIGIpOwotfQotCi12b2lkIHRlc3RTdWJNZW1BcmczMihpbnQzMl90IGEs
IGludDMyX3QgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OwotICAgIE1lbW9yeVZhbHVlKiBsb2FkID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihw
cm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksIGFkZHJlc3MpOwotICAgIFZhbHVlKiBhcmd1bWVu
dCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSkpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIGxvYWQsIGFyZ3VtZW50KTsKLSAgICByb290LT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlLCBPcmlnaW4oKSwgcmVzdWx0LCBhZGRy
ZXNzKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmln
aW4oKSwgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsK
LQotICAgIGludDMyX3QgaW5wdXRPdXRwdXQgPSBhOwotICAgIENIRUNLKCFjb21waWxlQW5kUnVu
PGludDMyX3Q+KHByb2MsICZpbnB1dE91dHB1dCwgYikpOwotICAgIENIRUNLKGlucHV0T3V0cHV0
ID09IGEgLSBiKTsKLX0KLQotdm9pZCB0ZXN0U3ViQXJnTWVtMzIoaW50MzJfdCBhLCBpbnQzMl90
IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICBN
ZW1vcnlWYWx1ZSogbG9hZCA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9h
ZCwgSW50MzIsIE9yaWdpbigpLCBhZGRyZXNzKTsKLSAgICBWYWx1ZSogYXJndW1lbnQgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKTsKLSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBTdWIsIE9yaWdpbigpLCBhcmd1bWVudCwgbG9hZCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7Ci0KLSAgICBDSEVD
Syhjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGEsICZiKSA9PSBhIC0gYik7Ci19Ci0KLXZv
aWQgdGVzdFN1YkltbU1lbTMyKGludDMyX3QgYSwgaW50MzJfdCBiKQotewotICAgIFByb2NlZHVy
ZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFs
dWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgTWVtb3J5VmFsdWUqIGxvYWQgPSBy
b290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwg
YWRkcmVzcyk7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgU3ViLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIGEpLAotICAgICAgICBsb2FkKTsKLSAgICByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlLCBPcmlnaW4oKSwgcmVzdWx0LCBhZGRyZXNzKTsKLSAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9v
dC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKLQotICAgIGlu
dDMyX3QgaW5wdXRPdXRwdXQgPSBiOwotICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludD4ocHJv
YywgJmlucHV0T3V0cHV0KSk7Ci0gICAgQ0hFQ0soaW5wdXRPdXRwdXQgPT0gYSAtIGIpOwotfQot
Ci12b2lkIHRlc3RTdWJNZW1JbW0zMihpbnQzMl90IGEsIGludDMyX3QgYikKLXsKLSAgICBQcm9j
ZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAg
IFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIE1lbW9yeVZhbHVlKiBsb2Fk
ID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2lu
KCksIGFkZHJlc3MpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFN1YiwgT3JpZ2luKCksCi0gICAgICAgIGxvYWQsCi0gICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSk7Ci0gICAgcm9vdC0+YXBwZW5k
TmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHJlc3VsdCwgYWRkcmVzcyk7
Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCks
IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7Ci0KLSAg
ICBpbnQzMl90IGlucHV0T3V0cHV0ID0gYTsKLSAgICBDSEVDSyghY29tcGlsZUFuZFJ1bjxpbnQ+
KHByb2MsICZpbnB1dE91dHB1dCkpOwotICAgIENIRUNLKGlucHV0T3V0cHV0ID09IGEgLSBiKTsK
LX0KLQotdm9pZCB0ZXN0TmVnVmFsdWVTdWJPbmUzMihpbnQgYSkKLXsKLSAgICBQcm9jZWR1cmUg
cHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVl
KiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigp
LAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZhbHVlKiBuZWdBcmd1bWVudCA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApLAotICAgICAgICBhcmd1
bWVudCk7Ci0gICAgVmFsdWUqIG5lZ0FyZ3VtZW50TWludXNPbmUgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksCi0gICAgICAgIG5lZ0FyZ3VtZW50LAotICAgICAg
ICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpOwotICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBuZWdB
cmd1bWVudE1pbnVzT25lKTsKLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYSkg
PT0gLWEgLSAxKTsKLX0KLQotdm9pZCB0ZXN0TmVnTXVsQXJnSW1tKGludDY0X3QgYSwgaW50NjRf
dCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAg
IFZhbHVlKiBjb25zdGFudCA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9y
aWdpbigpLCBiKTsKLSAgICBWYWx1ZSogbXVsID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBNdWwsIE9yaWdpbigpLCBhcmd1bWVudCwgY29uc3RhbnQpOwotICAgIFZhbHVlKiByZXN1bHQg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE5lZywgT3JpZ2luKCksIG11bCk7Ci0gICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOwot
Ci0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhKSA9PSAtKGEgKiBiKSk7
Ci19Ci0KLXZvaWQgdGVzdFN1Yk11bE11bEFyZ3MoaW50NjRfdCBhLCBpbnQ2NF90IGIsIGludDY0
X3QgYykKLXsKLSAgICAvLyBXZSB3YW50IHRvIGNoZWNrIGV2ZXJ5IHBvc3NpYmxlIG9yZGVyaW5n
IG9mIGFyZ3VtZW50cyAodG8gcHJvcGVybHkgY2hlY2sgZXZlcnkgcGF0aCBpbiBCM1JlZHVjZVN0
cmVuZ3RoKToKLSAgICAvLyAoKGEgKiBiKSAtIChhICogYykpCi0gICAgLy8gKChhICogYikgLSAo
YyAqIGEpKQotICAgIC8vICgoYiAqIGEpIC0gKGEgKiBjKSkKLSAgICAvLyAoKGIgKiBhKSAtIChj
ICogYSkpCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyArK2kpIHsKLSAgICAgICAgUHJvY2Vk
dXJlIHByb2M7Ci0gICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0g
ICAgICAgIFZhbHVlKiBhcmdBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgICAgICBWYWx1ZSogYXJn
QiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAgVmFsdWUqIGFyZ0MgPSByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
Mik7Ci0gICAgICAgIFZhbHVlKiBtdWxBQiA9IGkgJiAyID8gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBNdWwsIE9yaWdpbigpLCBhcmdBLCBhcmdCKQotICAgICAgICAgICAgOiByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIGFyZ0IsIGFyZ0EpOwotICAgICAg
ICBWYWx1ZSogbXVsQUMgPSBpICYgMSA/IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVs
LCBPcmlnaW4oKSwgYXJnQSwgYXJnQykKLSAgICAgICAgICAgIDogcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBhcmdDLCBhcmdBKTsKLSAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIG11
bEFCLAotICAgICAgICAgICAgICAgIG11bEFDKSk7Ci0KLSAgICAgICAgQ0hFQ0tfRVEoY29tcGls
ZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhLCBiLCBjKSwgKChhICogYikgLSAoYSAqIGMpKSk7Ci0g
ICAgfQotfQotCi12b2lkIHRlc3RTdWJBcmdEb3VibGUoZG91YmxlIGEpCi17Ci0gICAgUHJvY2Vk
dXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBW
YWx1ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIHZhbHVlLCB2YWx1ZSkpOwotCi0g
ICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEpLCBhIC0g
YSkpOwotfQotCi12b2lkIHRlc3RTdWJBcmdzRG91YmxlKGRvdWJsZSBhLCBkb3VibGUgYikKLXsK
LSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOwotICAgIFZhbHVlKiB2YWx1ZUEgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Ci0gICAgVmFsdWUqIHZh
bHVlQiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
RlBSSW5mbzo6YXJndW1lbnRGUFIxKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
Ci0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgdmFsdWVBLCB2YWx1ZUIpKTsKLQotICAgIENI
RUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBhLCBiKSwgYSAtIGIp
KTsKLX0KLQotdm9pZCB0ZXN0U3ViQXJnSW1tRG91YmxlKGRvdWJsZSBhLCBkb3VibGUgYikKLXsK
LSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOwotICAgIFZhbHVlKiB2YWx1ZUEgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Ci0gICAgVmFsdWUqIHZh
bHVlQiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
Yik7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1Yiwg
T3JpZ2luKCksIHZhbHVlQSwgdmFsdWVCKSk7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21w
aWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgYSksIGEgLSBiKSk7Ci19Ci0KLXZvaWQgdGVzdFN1Yklt
bUFyZ0RvdWJsZShkb3VibGUgYSwgZG91YmxlIGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0g
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogdmFsdWVB
ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsK
LSAgICBWYWx1ZSogdmFsdWVCID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwotICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCB2YWx1ZUEsIHZhbHVl
QikpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2Ms
IGIpLCBhIC0gYikpOwotfQotCi12b2lkIHRlc3RTdWJJbW1zRG91YmxlKGRvdWJsZSBhLCBkb3Vi
bGUgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiB2YWx1ZUEgPSByb290LT5hcHBlbmROZXc8Q29uc3RE
b3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpOwotICAgIFZhbHVlKiB2YWx1ZUIgPSByb290
LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpOwotICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCB2
YWx1ZUEsIHZhbHVlQikpOwotICAgIAotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRS
dW48ZG91YmxlPihwcm9jKSwgYSAtIGIpKTsKLX0KLQotdm9pZCB0ZXN0U3ViQXJnRmxvYXQoZmxv
YXQgYSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0g
ICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdp
c2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZSwgZmxvYXRW
YWx1ZSk7Ci0gICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKLQotCi0gICAgQ0hF
Q0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8
aW50MzJfdD4oYSkpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAtIGEpKSk7Ci19Ci0KLXZvaWQg
dGVzdFN1YkFyZ3NGbG9hdChmbG9hdCBhLCBmbG9hdCBiKQotewotICAgIFByb2NlZHVyZSBwcm9j
OwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFy
Z3VtZW50MWludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2lu
KCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50MmludDMy
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIxKSk7Ci0gICAgVmFsdWUqIGZsb2F0VmFsdWUxID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MWludDMyKTsK
LSAgICBWYWx1ZSogZmxvYXRWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJp
dHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQyaW50MzIpOwotICAgIFZhbHVlKiByZXN1bHQg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIGZsb2F0VmFsdWUx
LCBmbG9hdFZhbHVlMik7Ci0gICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKLQot
ICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lz
ZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYikpLCBiaXR3aXNlX2Nh
c3Q8aW50MzJfdD4oYSAtIGIpKSk7Ci19Ci0KLXZvaWQgdGVzdFN1YkFyZ0ltbUZsb2F0KGZsb2F0
IGEsIGZsb2F0IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpOwotICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOwotICAgIFZhbHVlKiBjb25zdFZh
bHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIp
OwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1Yiwg
T3JpZ2luKCksIGZsb2F0VmFsdWUsIGNvbnN0VmFsdWUpOwotICAgIFZhbHVlKiByZXN1bHQzMiA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1
bHQpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCByZXN1bHQzMik7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGlu
dDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2VfY2FzdDxpbnQz
Ml90PihhIC0gYikpKTsKLX0KLQotdm9pZCB0ZXN0U3ViSW1tQXJnRmxvYXQoZmxvYXQgYSwgZmxv
YXQgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0g
ICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdp
c2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7Ci0gICAgVmFsdWUqIGNvbnN0VmFsdWUgPSBy
b290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7Ci0gICAg
VmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4o
KSwgY29uc3RWYWx1ZSwgZmxvYXRWYWx1ZSk7Ci0gICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7Ci0g
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJl
c3VsdDMyKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4o
cHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEg
LSBiKSkpOwotfQotCi12b2lkIHRlc3RTdWJJbW1zRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKLXsK
LSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOwotICAgIFZhbHVlKiBjb25zdFZhbHVlMSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdEZsb2F0
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKLSAgICBWYWx1ZSogY29uc3RWYWx1ZTIgPSByb290
LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7Ci0gICAgVmFs
dWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwg
Y29uc3RWYWx1ZTEsIGNvbnN0VmFsdWUyKTsKLSAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgcmVzdWx0KTsKLSAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVz
dWx0MzIpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihw
cm9jKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgLSBiKSkpOwotfQotCi12b2lkIHRlc3RTdWJB
cmdGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbihmbG9hdCBhKQotewotICAgIFByb2Nl
ZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAg
VmFsdWUqIGFyZ3VtZW50SW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5j
LCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogZmxvYXRW
YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigp
LCBhcmd1bWVudEludDMyKTsKLSAgICBWYWx1ZSogYXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlKTsKLSAgICBW
YWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigp
LCBhc0RvdWJsZSwgYXNEb3VibGUpOwotICAgIFZhbHVlKiBmbG9hdFJlc3VsdCA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIHJlc3VsdCk7Ci0g
ICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNl
Q2FzdCwgT3JpZ2luKCksIGZsb2F0UmVzdWx0KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOwotCi0gICAgQ0hFQ0soaXNJ
ZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJf
dD4oYSkpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAtIGEpKSk7Ci19Ci0KLXZvaWQgdGVzdFN1
YkFyZ3NGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbihmbG9hdCBhLCBmbG9hdCBiKQot
ewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAg
VmFsdWUqIGFyZ3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVu
YywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Ci0gICAgVmFsdWUqIGZsb2F0
VmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2lu
KCksIGFyZ3VtZW50MWludDMyKTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZTIgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQyaW50MzIp
OwotICAgIFZhbHVlKiBhc0RvdWJsZTEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZs
b2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlMSk7Ci0gICAgVmFsdWUqIGFzRG91Ymxl
MiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCks
IGZsb2F0VmFsdWUyKTsKLSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBTdWIsIE9yaWdpbigpLCBhc0RvdWJsZTEsIGFzRG91YmxlMik7Ci0gICAgVmFsdWUq
IGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0
LCBPcmlnaW4oKSwgcmVzdWx0KTsKLSAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1bHQpOwotICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1
bHQzMik7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHBy
b2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpKSwg
Yml0d2lzZV9jYXN0PGludDMyX3Q+KGEgLSBiKSkpOwotfQotCi12b2lkIHRlc3RTdWJBcmdzRmxv
YXRXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lvbihmbG9hdCBhLCBmbG9hdCBiKQotewotICAg
IFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
Ci0gICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUq
IGFyZ3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3Jp
Z2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Ci0gICAgVmFsdWUqIGZsb2F0VmFsdWUx
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFy
Z3VtZW50MWludDMyKTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQyaW50MzIpOwotICAg
IFZhbHVlKiBhc0RvdWJsZTEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9E
b3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlMSk7Ci0gICAgVmFsdWUqIGFzRG91YmxlMiA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0
VmFsdWUyKTsKLSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBTdWIsIE9yaWdpbigpLCBhc0RvdWJsZTEsIGFzRG91YmxlMik7Ci0gICAgVmFsdWUqIGZsb2F0
UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmln
aW4oKSwgcmVzdWx0KTsKLSAgICBWYWx1ZSogZG91YmxlU3VicmVzcyA9IHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIy
KTsKLSAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlLCBPcmlnaW4o
KSwgcmVzdWx0LCBkb3VibGVTdWJyZXNzKTsKLSAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1bHQp
OwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LCByZXN1bHQzMik7Ci0KLSAgICBkb3VibGUgZWZmZWN0ID0gMDsKLSAgICBDSEVDSyhpc0lkZW50
aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90Pihh
KSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpLCAmZWZmZWN0KSwgYml0d2lzZV9jYXN0PGludDMy
X3Q+KGEgLSBiKSkpOwotICAgIENIRUNLKGlzSWRlbnRpY2FsKGVmZmVjdCwgc3RhdGljX2Nhc3Q8
ZG91YmxlPihhKSAtIHN0YXRpY19jYXN0PGRvdWJsZT4oYikpKTsKLX0KLQotdm9pZCB0ZXN0VGVy
bmFyeVN1Ykluc3RydWN0aW9uU2VsZWN0aW9uKEIzOjpPcGNvZGUgdmFsdWVNb2RpZmllciwgVHlw
ZSB2YWx1ZVR5cGUsIEFpcjo6T3Bjb2RlIGV4cGVjdGVkT3Bjb2RlKQotewotICAgIFByb2NlZHVy
ZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBW
YWx1ZSogbGVmdCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBWYWx1ZSogcmlnaHQgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSk7Ci0KLSAgICBpZiAodmFsdWVNb2RpZmllciA9PSBUcnVuYykgewotICAgICAgICBs
ZWZ0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCB2YWx1ZU1vZGlmaWVyLCB2YWx1ZVR5
cGUsIE9yaWdpbigpLCBsZWZ0KTsKLSAgICAgICAgcmlnaHQgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIHZhbHVlTW9kaWZpZXIsIHZhbHVlVHlwZSwgT3JpZ2luKCksIHJpZ2h0KTsKLSAg
ICB9Ci0KLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3Vi
LCBPcmlnaW4oKSwgbGVmdCwgcmlnaHQpKTsKLQotICAgIGxvd2VyVG9BaXJGb3JUZXN0aW5nKHBy
b2MpOwotCi0gICAgYXV0byBibG9jayA9IHByb2MuY29kZSgpWzBdOwotICAgIHVuc2lnbmVkIG51
bWJlck9mU3ViSW5zdHJ1Y3Rpb25zID0gMDsKLSAgICBmb3IgKGF1dG8gaW5zdHJ1Y3Rpb24gOiAq
YmxvY2spIHsKLSAgICAgICAgaWYgKGluc3RydWN0aW9uLmtpbmQub3Bjb2RlID09IGV4cGVjdGVk
T3Bjb2RlKSB7Ci0gICAgICAgICAgICBDSEVDS19FUShpbnN0cnVjdGlvbi5hcmdzLnNpemUoKSwg
M3VsKTsKLSAgICAgICAgICAgIENIRUNLX0VRKGluc3RydWN0aW9uLmFyZ3NbMF0ua2luZCgpLCBB
aXI6OkFyZzo6VG1wKTsKLSAgICAgICAgICAgIENIRUNLX0VRKGluc3RydWN0aW9uLmFyZ3NbMV0u
a2luZCgpLCBBaXI6OkFyZzo6VG1wKTsKLSAgICAgICAgICAgIENIRUNLX0VRKGluc3RydWN0aW9u
LmFyZ3NbMl0ua2luZCgpLCBBaXI6OkFyZzo6VG1wKTsKLSAgICAgICAgICAgIG51bWJlck9mU3Vi
SW5zdHJ1Y3Rpb25zKys7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgQ0hFQ0tfRVEobnVtYmVyT2ZT
dWJJbnN0cnVjdGlvbnMsIDF1bCk7Ci19Ci0KLXZvaWQgdGVzdE5lZ0RvdWJsZShkb3VibGUgYSkK
LXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAg
ICAgICAgIHByb2MsIE5lZywgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCkp
KTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBh
KSwgLWEpKTsKLX0KLQotdm9pZCB0ZXN0TmVnRmxvYXQoZmxvYXQgYSkKLXsKLSAgICBQcm9jZWR1
cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZh
bHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3Jp
Z2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGZsb2F0VmFsdWUg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJn
dW1lbnQzMik7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IE5lZywgT3JpZ2luKCksIGZsb2F0VmFsdWUpKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNv
bXBpbGVBbmRSdW48ZmxvYXQ+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIC1hKSk7
Ci19Ci0KLXZvaWQgdGVzdE5lZ0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uKGZsb2F0
IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnRJbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwot
ICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3
aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50SW50MzIpOwotICAgIFZhbHVlKiBhc0RvdWJsZSA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZs
b2F0VmFsdWUpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIE5lZywgT3JpZ2luKCksIGFzRG91YmxlKTsKLSAgICBWYWx1ZSogZmxvYXRSZXN1bHQgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCByZXN1
bHQpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCBmbG9hdFJlc3VsdCk7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVu
PGZsb2F0Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCAtYSkpOwotfQotCi12b2lk
IHRlc3RCaXRBbmRBcmdzKGludDY0X3QgYSwgaW50NjRfdCBiKQotewotICAgIFByb2NlZHVyZSBw
cm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAot
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0QW5k
LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKLSAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIxKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9j
LCBhLCBiKSA9PSAoYSAmIGIpKTsKLX0KLQotdm9pZCB0ZXN0Qml0QW5kU2FtZUFyZyhpbnQ2NF90
IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAg
cm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywg
Qml0QW5kLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIGFyZ3VtZW50LAotICAgICAgICAgICAgYXJn
dW1lbnQpKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYSkgPT0g
YSk7Ci19Ci0KLXZvaWQgdGVzdEJpdEFuZE5vdE5vdChpbnQ2NF90IGEsIGludDY0X3QgYikKLXsK
LSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOwotICAgIFZhbHVlKiBhcmdBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIFZhbHVlKiBhcmdC
ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjEpOwotICAgIFZhbHVlKiBub3RBID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLCBhcmdBLCByb290LT5hcHBlbmROZXc8Q29uc3Q2
NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTEpKTsKLSAgICBWYWx1ZSogbm90QiA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0WG9yLCBPcmlnaW4oKSwgYXJnQiwgcm9vdC0+YXBwZW5k
TmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xKSk7Ci0gICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0QW5kLCBPcmln
aW4oKSwKLSAgICAgICAgICAgIG5vdEEsCi0gICAgICAgICAgICBub3RCKSk7Ci0KLSAgICBDSEVD
S19FUShjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEsIGIpLCAofmEgJiB+YikpOwotfQot
Ci12b2lkIHRlc3RCaXRBbmROb3RJbW0oaW50NjRfdCBhLCBpbnQ2NF90IGIpCi17Ci0gICAgUHJv
Y2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAg
ICBWYWx1ZSogYXJnQSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBWYWx1ZSogbm90QSA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0WG9yLCBPcmlnaW4oKSwgYXJnQSwgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xKSk7Ci0gICAgVmFsdWUqIGNz
dEIgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7Ci0g
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJv
YywgQml0QW5kLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIG5vdEEsCi0gICAgICAgICAgICBjc3RC
KSk7Ci0KLSAgICBDSEVDS19FUShjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEsIGIpLCAo
fmEgJiBiKSk7Ci19Ci0KLXZvaWQgdGVzdEJpdEFuZEltbXMoaW50NjRfdCBhLCBpbnQ2NF90IGIp
Ci17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2Ms
IFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAg
ICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpLAotICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpKSk7Ci0KLSAgICBDSEVD
Syhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MpID09IChhICYgYikpOwotfQotCi12b2lkIHRl
c3RCaXRBbmRBcmdJbW0oaW50NjRfdCBhLCBpbnQ2NF90IGIpCi17Ci0gICAgUHJvY2VkdXJlIHBy
b2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0g
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBCaXRBbmQs
IE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAotICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpKSk7Ci0KLSAgICBD
SEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEpID09IChhICYgYikpOwotfQotCi12
b2lkIHRlc3RCaXRBbmRJbW1BcmcoaW50NjRfdCBhLCBpbnQ2NF90IGIpCi17Ci0gICAgUHJvY2Vk
dXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBC
aXRBbmQsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIGEpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSk7Ci0K
LSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGIpID09IChhICYgYikpOwot
fQotCi12b2lkIHRlc3RCaXRBbmRCaXRBbmRBcmdJbW1JbW0oaW50NjRfdCBhLCBpbnQ2NF90IGIs
IGludDY0X3QgYykKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBpbm5lckJpdEFuZCA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIEJpdEFuZCwgT3JpZ2luKCksCi0gICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIGIpKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCi0gICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAotICAgICAgICAgICAgaW5u
ZXJCaXRBbmQsCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgYykpKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJv
YywgYSkgPT0gKChhICYgYikgJiBjKSk7Ci19Ci0KLXZvaWQgdGVzdEJpdEFuZEltbUJpdEFuZEFy
Z0ltbShpbnQ2NF90IGEsIGludDY0X3QgYiwgaW50NjRfdCBjKQotewotICAgIFByb2NlZHVyZSBw
cm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUq
IGlubmVyQml0QW5kID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgQml0
QW5kLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAotICAgICAgICByb290LT5h
cHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYykpOwotICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEJpdEFuZCwg
T3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgYSksCi0gICAgICAgICAgICBpbm5lckJpdEFuZCkpOwotCi0gICAgQ0hFQ0so
Y29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBiKSA9PSAoYSAmIChiICYgYykpKTsKLX0KLQot
dm9pZCB0ZXN0Qml0QW5kQXJnczMyKGludCBhLCBpbnQgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJv
YzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEJpdEFuZCwg
T3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAg
ICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCkpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAg
ICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjEpKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEsIGIpID09IChh
ICYgYikpOwotfQotCi12b2lkIHRlc3RCaXRBbmRTYW1lQXJnMzIoaW50IGEpCi17Ci0gICAgUHJv
Y2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAg
ICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBP
cmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICByb290LT5hcHBlbmROZXdD
b250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigp
LAotICAgICAgICAgICAgYXJndW1lbnQsCi0gICAgICAgICAgICBhcmd1bWVudCkpOwotCi0gICAg
Q0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEpID09IGEpOwotfQotCi12b2lkIHRlc3RC
aXRBbmRJbW1zMzIoaW50IGEsIGludCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwK
LSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBhKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBiKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpID09IChh
ICYgYikpOwotfQotCi12b2lkIHRlc3RCaXRBbmRBcmdJbW0zMihpbnQgYSwgaW50IGIpCi17Ci0g
ICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAg
ICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1
bjxpbnQ+KHByb2MsIGEpID09IChhICYgYikpOwotfQotCi12b2lkIHRlc3RCaXRBbmRJbW1Bcmcz
MihpbnQgYSwgaW50IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
Ci0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAotICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpLAotICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBU
cnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSkpOwotCi0g
ICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGIpID09IChhICYgYikpOwotfQotCi12
b2lkIHRlc3RCaXRBbmRCaXRBbmRBcmdJbW1JbW0zMihpbnQgYSwgaW50IGIsIGludCBjKQotewot
ICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7Ci0gICAgVmFsdWUqIGlubmVyQml0QW5kID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAg
ICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKLSAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKSksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBiKSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAg
ICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAotICAgICAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIGlu
bmVyQml0QW5kLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIGMpKSk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywg
YSkgPT0gKChhICYgYikgJiBjKSk7Ci19Ci0KLXZvaWQgdGVzdEJpdEFuZEltbUJpdEFuZEFyZ0lt
bTMyKGludCBhLCBpbnQgYiwgaW50IGMpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogaW5uZXJCaXRBbmQg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigp
LAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgVHJ1
bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKLSAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGMpKTsKLSAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBCaXRB
bmQsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIGEpLAotICAgICAgICAgICAgaW5uZXJCaXRBbmQpKTsKLQotICAgIENI
RUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBiKSA9PSAoYSAmIChiICYgYykpKTsKLX0KLQot
dm9pZCB0ZXN0Qml0QW5kV2l0aE1hc2tSZXR1cm5zQm9vbGVhbnMoaW50NjRfdCBhLCBpbnQ2NF90
IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJnMCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBWYWx1
ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICBWYWx1ZSogZXF1YWwgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEVxdWFsLCBPcmlnaW4oKSwgYXJnMCwgYXJnMSk7Ci0gICAgVmFs
dWUqIG1hc2tlZEVxdWFsID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9y
aWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmln
aW4oKSwgMHg1KSwKLSAgICAgICAgZXF1YWwpOwotICAgIFZhbHVlKiBpbnZlcnRlZCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0WG9yLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDB4MSksCi0gICAgICAgIG1h
c2tlZEVxdWFsKTsKLSAgICBWYWx1ZSogc2VsZWN0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBTZWxlY3QsIE9yaWdpbigpLCBpbnZlcnRlZCwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKSwKLSAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC01KSk7Ci0KLSAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgc2VsZWN0KTsKLQotICAg
IGludDY0X3QgZXhwZWN0ZWQgPSAoYSA9PSBiKSA/IC01IDogNDI7Ci0gICAgQ0hFQ0soY29tcGls
ZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhLCBiKSA9PSBleHBlY3RlZCk7Ci19Ci0KLWRvdWJsZSBi
aXRBbmREb3VibGUoZG91YmxlIGEsIGRvdWJsZSBiKQotewotICAgIHJldHVybiBiaXR3aXNlX2Nh
c3Q8ZG91YmxlPihiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+KGEpICYgYml0d2lzZV9jYXN0PHVpbnQ2
NF90PihiKSk7Ci19Ci0KLXZvaWQgdGVzdEJpdEFuZEFyZ0RvdWJsZShkb3VibGUgYSkKLXsKLSAg
ICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OwotICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKLSAgICBWYWx1ZSogcmVz
dWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBhcmd1
bWVudCwgYXJndW1lbnQpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGls
ZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEpLCBiaXRBbmREb3VibGUoYSwgYSkpKTsKLX0KLQotdm9p
ZCB0ZXN0Qml0QW5kQXJnc0RvdWJsZShkb3VibGUgYSwgZG91YmxlIGIpCi17Ci0gICAgUHJvY2Vk
dXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBW
YWx1ZSogYXJndW1lbnRBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwotICAgIFZhbHVlKiBhcmd1bWVudEIg
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUklu
Zm86OmFyZ3VtZW50RlBSMSk7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwgYXJndW1lbnRBLCBhcmd1bWVudEIpOwotICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1
bHQpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2Ms
IGEsIGIpLCBiaXRBbmREb3VibGUoYSwgYikpKTsKLX0KLQotdm9pZCB0ZXN0Qml0QW5kQXJnSW1t
RG91YmxlKGRvdWJsZSBhLCBkb3VibGUgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudEEg
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUklu
Zm86OmFyZ3VtZW50RlBSMCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50QiA9IHJvb3QtPmFwcGVuZE5l
dzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7Ci0gICAgVmFsdWUqIHJlc3Vs
dCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwgYXJndW1l
bnRBLCBhcmd1bWVudEIpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGls
ZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEsIGIpLCBiaXRBbmREb3VibGUoYSwgYikpKTsKLX0KLQot
dm9pZCB0ZXN0Qml0QW5kSW1tc0RvdWJsZShkb3VibGUgYSwgZG91YmxlIGIpCi17Ci0gICAgUHJv
Y2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAg
ICBWYWx1ZSogYXJndW1lbnRBID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBhKTsKLSAgICBWYWx1ZSogYXJndW1lbnRCID0gcm9vdC0+YXBwZW5kTmV3
PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKTsKLSAgICBWYWx1ZSogcmVzdWx0
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBhcmd1bWVu
dEEsIGFyZ3VtZW50Qik7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJl
dHVybiwgT3JpZ2luKCksIHJlc3VsdCk7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxl
QW5kUnVuPGRvdWJsZT4ocHJvYyksIGJpdEFuZERvdWJsZShhLCBiKSkpOwotfQotCi1mbG9hdCBi
aXRBbmRGbG9hdChmbG9hdCBhLCBmbG9hdCBiKQotewotICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8
ZmxvYXQ+KGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oYSkgJiBiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+
KGIpKTsKLX0KLQotdm9pZCB0ZXN0Qml0QW5kQXJnRmxvYXQoZmxvYXQgYSkKLXsKLSAgICBQcm9j
ZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAg
IFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNh
c3QsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5j
LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOwotICAgIFZhbHVlKiBy
ZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCksIGFy
Z3VtZW50LCBhcmd1bWVudCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2Ms
IFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21w
aWxlQW5kUnVuPGZsb2F0Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXRBbmRG
bG9hdChhLCBhKSkpOwotfQotCi12b2lkIHRlc3RCaXRBbmRBcmdzRmxvYXQoZmxvYXQgYSwgZmxv
YXQgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudEEgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpKTsKLSAgICBWYWx1ZSogYXJndW1lbnRCID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSk7Ci0g
ICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBP
cmlnaW4oKSwgYXJndW1lbnRBLCBhcmd1bWVudEIpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOwotCi0gICAgQ0hFQ0soaXNJ
ZGVudGljYWwoY29tcGlsZUFuZFJ1bjxmbG9hdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+
KGEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYikpLCBiaXRBbmRGbG9hdChhLCBiKSkpOwotfQot
Ci12b2lkIHRlc3RCaXRBbmRBcmdJbW1GbG9hdChmbG9hdCBhLCBmbG9hdCBiKQotewotICAgIFBy
b2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0g
ICAgVmFsdWUqIGFyZ3VtZW50QSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lz
ZUNhc3QsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRy
dW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOwotICAgIFZhbHVl
KiBhcmd1bWVudEIgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmln
aW4oKSwgYik7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQml0QW5kLCBPcmlnaW4oKSwgYXJndW1lbnRBLCBhcmd1bWVudEIpOwotICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOwotCi0g
ICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxmbG9hdD4ocHJvYywgYml0d2lzZV9j
YXN0PGludDMyX3Q+KGEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYikpLCBiaXRBbmRGbG9hdChh
LCBiKSkpOwotfQotCi12b2lkIHRlc3RCaXRBbmRJbW1zRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikK
LXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudEEgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9h
dFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50QiA9IHJvb3Qt
PmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKTsKLSAgICBWYWx1
ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigp
LCBhcmd1bWVudEEsIGFyZ3VtZW50Qik7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNh
bChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jKSwgYml0QW5kRmxvYXQoYSwgYikpKTsKLX0KLQot
dm9pZCB0ZXN0Qml0QW5kQXJnc0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uKGZsb2F0
IGEsIGZsb2F0IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnRBID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKSk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50QiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIx
KSkpOwotICAgIFZhbHVlKiBhcmd1bWVudEFhc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGFyZ3VtZW50QSk7Ci0gICAgVmFsdWUq
IGFyZ3VtZW50QmFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRv
RG91YmxlLCBPcmlnaW4oKSwgYXJndW1lbnRCKTsKLSAgICBWYWx1ZSogZG91YmxlUmVzdWx0ID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBhcmd1bWVudEFh
c0RvdWJsZSwgYXJndW1lbnRCYXNEb3VibGUpOwotICAgIFZhbHVlKiBmbG9hdFJlc3VsdCA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIGRvdWJs
ZVJlc3VsdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwg
T3JpZ2luKCksIGZsb2F0UmVzdWx0KTsKLQotICAgIGRvdWJsZSBkb3VibGVBID0gYTsKLSAgICBk
b3VibGUgZG91YmxlQiA9IGI7Ci0gICAgZmxvYXQgZXhwZWN0ZWQgPSBzdGF0aWNfY2FzdDxmbG9h
dD4oYml0QW5kRG91YmxlKGRvdWJsZUEsIGRvdWJsZUIpKTsKLSAgICBDSEVDSyhpc0lkZW50aWNh
bChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSksIGJp
dHdpc2VfY2FzdDxpbnQzMl90PihiKSksIGV4cGVjdGVkKSk7Ci19Ci0KLXZvaWQgdGVzdEJpdE9y
QXJncyhpbnQ2NF90IGEsIGludDY0X3QgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEJpdE9yLCBPcmlnaW4oKSwK
LSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIx
KSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhLCBiKSA9PSAo
YSB8IGIpKTsKLX0KLQotdm9pZCB0ZXN0Qml0T3JTYW1lQXJnKGludDY0X3QgYSkKLXsKLSAgICBQ
cm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwot
ICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBCaXRPciwgT3JpZ2lu
KCksCi0gICAgICAgICAgICBhcmd1bWVudCwKLSAgICAgICAgICAgIGFyZ3VtZW50KSk7Ci0KLSAg
ICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEpID09IGEpOwotfQotCi12b2lk
IHRlc3RCaXRPckFuZEFuZEFyZ3MoaW50NjRfdCBhLCBpbnQ2NF90IGIsIGludDY0X3QgYykKLXsK
LSAgICAvLyBXZSB3YW50IHRvIGNoZWNrIGV2ZXJ5IHBvc3NpYmxlIG9yZGVyaW5nIG9mIGFyZ3Vt
ZW50cyAodG8gcHJvcGVybHkgY2hlY2sgZXZlcnkgcGF0aCBpbiBCM1JlZHVjZVN0cmVuZ3RoKToK
LSAgICAvLyAoKGEgJiBiKSB8IChhICYgYykpCi0gICAgLy8gKChhICYgYikgfCAoYyAmIGEpKQot
ICAgIC8vICgoYiAmIGEpIHwgKGEgJiBjKSkKLSAgICAvLyAoKGIgJiBhKSB8IChjICYgYSkpCi0g
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyArK2kpIHsKLSAgICAgICAgUHJvY2VkdXJlIHByb2M7
Ci0gICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgIFZh
bHVlKiBhcmdBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgICAgICBWYWx1ZSogYXJnQiA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKTsKLSAgICAgICAgVmFsdWUqIGFyZ0MgPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7Ci0gICAg
ICAgIFZhbHVlKiBhbmRBQiA9IGkgJiAyID8gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBC
aXRBbmQsIE9yaWdpbigpLCBhcmdBLCBhcmdCKQotICAgICAgICAgICAgOiByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCksIGFyZ0IsIGFyZ0EpOwotICAgICAgICBW
YWx1ZSogYW5kQUMgPSBpICYgMSA/IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5k
LCBPcmlnaW4oKSwgYXJnQSwgYXJnQykKLSAgICAgICAgICAgIDogcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBhcmdDLCBhcmdBKTsKLSAgICAgICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAg
cHJvYywgQml0T3IsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIGFuZEFCLAotICAgICAgICAg
ICAgICAgIGFuZEFDKSk7Ci0KLSAgICAgICAgQ0hFQ0tfRVEoY29tcGlsZUFuZFJ1bjxpbnQ2NF90
Pihwcm9jLCBhLCBiLCBjKSwgKChhICYgYikgfCAoYSAmIGMpKSk7Ci0gICAgfQotfQotCi12b2lk
IHRlc3RCaXRPckFuZFNhbWVBcmdzKGludDY0X3QgYSwgaW50NjRfdCBiKQotewotICAgIC8vIFdl
IHdhbnQgdG8gY2hlY2sgZXZlcnkgcG9zc2libGUgb3JkZXJpbmcgb2YgYXJndW1lbnRzICh0byBw
cm9wZXJseSBjaGVjayBldmVyeSBwYXRoIGluIEIzUmVkdWNlU3RyZW5ndGgpOgotICAgIC8vICgo
YSAmIGIpIHwgYSkKLSAgICAvLyAoKGIgJiBhKSB8IGEpCi0gICAgLy8gKGEgfCAoYSAmIGIpKQot
ICAgIC8vIChhIHwgKGIgJiBhKSkKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7ICsraSkgewot
ICAgICAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICAgICAgVmFsdWUqIGFyZ0EgPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAg
ICAgIFZhbHVlKiBhcmdCID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAgICBWYWx1ZSogYW5kQUIg
PSBpICYgMSA/IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwg
YXJnQSwgYXJnQikKLSAgICAgICAgICAgIDogcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBC
aXRBbmQsIE9yaWdpbigpLCBhcmdCLCBhcmdBKTsKLSAgICAgICAgVmFsdWUqIHJlc3VsdCA9IGkg
JiAyID8gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRPciwgT3JpZ2luKCksIGFuZEFC
LCBhcmdBKQotICAgICAgICAgICAgOiByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdE9y
LCBPcmlnaW4oKSwgYXJnQSwgYW5kQUIpOwotICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKLQotICAgICAgICBDSEVDS19F
UShjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEsIGIpLCAoKGEgJiBiKSB8IGEpKTsKLSAg
ICB9Ci19Ci0KLXZvaWQgdGVzdEJpdE9yTm90Tm90KGludDY0X3QgYSwgaW50NjRfdCBiKQotewot
ICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7Ci0gICAgVmFsdWUqIGFyZ0EgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgVmFsdWUqIGFyZ0Ig
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgVmFsdWUqIG5vdEEgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEJpdFhvciwgT3JpZ2luKCksIGFyZ0EsIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0
VmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMSkpOwotICAgIFZhbHVlKiBub3RCID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLCBhcmdCLCByb290LT5hcHBlbmRO
ZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTEpKTsKLSAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBCaXRPciwgT3JpZ2lu
KCksCi0gICAgICAgICAgICBub3RBLAotICAgICAgICAgICAgbm90QikpOwotCi0gICAgQ0hFQ0tf
RVEoY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhLCBiKSwgKH5hIHwgfmIpKTsKLX0KLQot
dm9pZCB0ZXN0Qml0T3JOb3RJbW0oaW50NjRfdCBhLCBpbnQ2NF90IGIpCi17Ci0gICAgUHJvY2Vk
dXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBW
YWx1ZSogYXJnQSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBWYWx1ZSogbm90QSA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0WG9yLCBPcmlnaW4oKSwgYXJnQSwgcm9vdC0+YXBwZW5k
TmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xKSk7Ci0gICAgVmFsdWUqIGNzdEIg
PSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7Ci0gICAg
cm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywg
Qml0T3IsIE9yaWdpbigpLAotICAgICAgICAgICAgbm90QSwKLSAgICAgICAgICAgIGNzdEIpKTsK
LSAgICAKLSAgICBDSEVDS19FUShjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEsIGIpLCAo
fmEgfCBiKSk7Ci19Ci0KLXZvaWQgdGVzdEJpdE9ySW1tcyhpbnQ2NF90IGEsIGludDY0X3QgYikK
LXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAg
ICAgICAgIHByb2MsIEJpdE9yLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKSwKLSAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSkpOwotCi0gICAgQ0hFQ0so
Y29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jKSA9PSAoYSB8IGIpKTsKLX0KLQotdm9pZCB0ZXN0
Qml0T3JBcmdJbW0oaW50NjRfdCBhLCBpbnQ2NF90IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7
Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBCaXRPciwgT3Jp
Z2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgICAgICByb290LT5h
cHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYikpKTsKLQotICAgIENIRUNL
KGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYSkgPT0gKGEgfCBiKSk7Ci19Ci0KLXZvaWQg
dGVzdEJpdE9ySW1tQXJnKGludDY0X3QgYSwgaW50NjRfdCBiKQotewotICAgIFByb2NlZHVyZSBw
cm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAot
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0T3Is
IE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIGEpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSk7Ci0KLSAgICBD
SEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGIpID09IChhIHwgYikpOwotfQotCi12
b2lkIHRlc3RCaXRPckJpdE9yQXJnSW1tSW1tKGludDY0X3QgYSwgaW50NjRfdCBiLCBpbnQ2NF90
IGMpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICBWYWx1ZSogaW5uZXJCaXRPciA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCi0gICAgICAgIHByb2MsIEJpdE9yLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApLAotICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgYikpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAg
ICAgICAgIHByb2MsIEJpdE9yLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIGlubmVyQml0T3IsCi0g
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
YykpKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYSkgPT0gKChh
IHwgYikgfCBjKSk7Ci19Ci0KLXZvaWQgdGVzdEJpdE9ySW1tQml0T3JBcmdJbW0oaW50NjRfdCBh
LCBpbnQ2NF90IGIsIGludDY0X3QgYykKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBpbm5lckJpdE9yID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgQml0T3IsIE9yaWdpbigpLAot
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBjKSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0T3IsIE9yaWdpbigpLAotICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpLAot
ICAgICAgICAgICAgaW5uZXJCaXRPcikpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2
NF90Pihwcm9jLCBiKSA9PSAoYSB8IChiIHwgYykpKTsKLX0KLQotdm9pZCB0ZXN0Qml0T3JBcmdz
MzIoaW50IGEsIGludCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0T3IsIE9yaWdpbigpLAotICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywg
T3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKLSAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9y
aWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpKTsKLQotICAgIENIRUNL
KGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhLCBiKSA9PSAoYSB8IGIpKTsKLX0KLQotdm9pZCB0
ZXN0Qml0T3JTYW1lQXJnMzIoaW50IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnQgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0g
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEJpdE9yLCBPcmlnaW4oKSwKLSAgICAg
ICAgICAgIGFyZ3VtZW50LAotICAgICAgICAgICAgYXJndW1lbnQpKTsKLQotICAgIENIRUNLKGNv
bXBpbGVBbmRSdW48aW50Pihwcm9jLCBhKSA9PSBhKTsKLX0KLQotdm9pZCB0ZXN0Qml0T3JJbW1z
MzIoaW50IGEsIGludCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0T3IsIE9yaWdpbigpLAotICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpLAotICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIp
KSk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYykgPT0gKGEgfCBiKSk7Ci19
Ci0KLXZvaWQgdGVzdEJpdE9yQXJnSW1tMzIoaW50IGEsIGludCBiKQotewotICAgIFByb2NlZHVy
ZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0
T3IsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAg
ICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBiKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2Ms
IGEpID09IChhIHwgYikpOwotfQotCi12b2lkIHRlc3RCaXRPckltbUFyZzMyKGludCBhLCBpbnQg
YikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAg
ICAgICAgICAgIHByb2MsIEJpdE9yLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKSwKLSAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigp
LAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpKTsKLQotICAgIENIRUNLKGNvbXBp
bGVBbmRSdW48aW50Pihwcm9jLCBiKSA9PSAoYSB8IGIpKTsKLX0KLQotdm9pZCB0ZXN0Qml0T3JC
aXRPckFyZ0ltbUltbTMyKGludCBhLCBpbnQgYiwgaW50IGMpCi17Ci0gICAgUHJvY2VkdXJlIHBy
b2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSog
aW5uZXJCaXRPciA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIEJpdE9y
LCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAg
IHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCi0g
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSk7
Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAg
cHJvYywgQml0T3IsIE9yaWdpbigpLAotICAgICAgICAgICAgaW5uZXJCaXRPciwKLSAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBjKSkpOwot
Ci0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEpID09ICgoYSB8IGIpIHwgYykp
OwotfQotCi12b2lkIHRlc3RCaXRPckltbUJpdE9yQXJnSW1tMzIoaW50IGEsIGludCBiLCBpbnQg
YykKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOwotICAgIFZhbHVlKiBpbm5lckJpdE9yID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKLSAgICAgICAgcHJvYywgQml0T3IsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIGMpKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
Ci0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBCaXRPciwgT3JpZ2luKCksCi0gICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSksCi0gICAg
ICAgICAgICBpbm5lckJpdE9yKSk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJv
YywgYikgPT0gKGEgfCAoYiB8IGMpKSk7Ci19Ci0KLWRvdWJsZSBiaXRPckRvdWJsZShkb3VibGUg
YSwgZG91YmxlIGIpCi17Ci0gICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxkb3VibGU+KGJpdHdpc2Vf
Y2FzdDx1aW50NjRfdD4oYSkgfCBiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+KGIpKTsKLX0KLQotdm9p
ZCB0ZXN0Qml0T3JBcmdEb3VibGUoZG91YmxlIGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0g
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1l
bnQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQ
UkluZm86OmFyZ3VtZW50RlBSMCk7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgQml0T3IsIE9yaWdpbigpLCBhcmd1bWVudCwgYXJndW1lbnQpOwotICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1
bHQpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2Ms
IGEpLCBiaXRPckRvdWJsZShhLCBhKSkpOwotfQotCi12b2lkIHRlc3RCaXRPckFyZ3NEb3VibGUo
ZG91YmxlIGEsIGRvdWJsZSBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50QSA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJn
dW1lbnRGUFIwKTsKLSAgICBWYWx1ZSogYXJndW1lbnRCID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOwotICAg
IFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdE9yLCBPcmln
aW4oKSwgYXJndW1lbnRBLCBhcmd1bWVudEIpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOwotCi0gICAgQ0hFQ0soaXNJZGVu
dGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEsIGIpLCBiaXRPckRvdWJsZShhLCBi
KSkpOwotfQotCi12b2lkIHRlc3RCaXRPckFyZ0ltbURvdWJsZShkb3VibGUgYSwgZG91YmxlIGIp
Ci17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnRBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwotICAgIFZh
bHVlKiBhcmd1bWVudEIgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIGIpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEJpdE9yLCBPcmlnaW4oKSwgYXJndW1lbnRBLCBhcmd1bWVudEIpOwotICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOwot
Ci0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEsIGIp
LCBiaXRPckRvdWJsZShhLCBiKSkpOwotfQotCi12b2lkIHRlc3RCaXRPckltbXNEb3VibGUoZG91
YmxlIGEsIGRvdWJsZSBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50QSA9IHJvb3QtPmFw
cGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7Ci0gICAgVmFsdWUq
IGFyZ3VtZW50QiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmln
aW4oKSwgYik7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQml0T3IsIE9yaWdpbigpLCBhcmd1bWVudEEsIGFyZ3VtZW50Qik7Ci0gICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7Ci0gICAg
Ci0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MpLCBiaXRP
ckRvdWJsZShhLCBiKSkpOwotfQotCi1mbG9hdCBiaXRPckZsb2F0KGZsb2F0IGEsIGZsb2F0IGIp
Ci17Ci0gICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxmbG9hdD4oYml0d2lzZV9jYXN0PHVpbnQzMl90
PihhKSB8IGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oYikpOwotfQotCi12b2lkIHRlc3RCaXRPckFy
Z0Zsb2F0KGZsb2F0IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCkpKTsKLSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBCaXRPciwgT3JpZ2luKCksIGFyZ3VtZW50LCBhcmd1bWVudCk7Ci0gICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7Ci0K
LSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jLCBiaXR3aXNl
X2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXRPckZsb2F0KGEsIGEpKSk7Ci19Ci0KLXZvaWQgdGVzdEJp
dE9yQXJnc0Zsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0g
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1l
bnRBID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCks
Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAot
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50QiA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLAotICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxKSkpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEJpdE9yLCBPcmlnaW4oKSwgYXJndW1lbnRBLCBhcmd1bWVudEIpOwot
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBy
ZXN1bHQpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxmbG9hdD4ocHJv
YywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYikpLCBi
aXRPckZsb2F0KGEsIGIpKSk7Ci19Ci0KLXZvaWQgdGVzdEJpdE9yQXJnSW1tRmxvYXQoZmxvYXQg
YSwgZmxvYXQgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudEEgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCkpKTsKLSAgICBWYWx1ZSogYXJndW1lbnRCID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0
RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdE9yLCBPcmlnaW4oKSwgYXJndW1lbnRBLCBhcmd1
bWVudEIpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCByZXN1bHQpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxm
bG9hdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJf
dD4oYikpLCBiaXRPckZsb2F0KGEsIGIpKSk7Ci19Ci0KLXZvaWQgdGVzdEJpdE9ySW1tc0Zsb2F0
KGZsb2F0IGEsIGZsb2F0IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnRBID0gcm9vdC0+
YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpOwotICAgIFZhbHVl
KiBhcmd1bWVudEIgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmln
aW4oKSwgYik7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQml0T3IsIE9yaWdpbigpLCBhcmd1bWVudEEsIGFyZ3VtZW50Qik7Ci0gICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7Ci0KLSAg
ICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jKSwgYml0T3JGbG9h
dChhLCBiKSkpOwotfQotCi12b2lkIHRlc3RCaXRPckFyZ3NGbG9hdFdpdGhVc2VsZXNzRG91Ymxl
Q29udmVyc2lvbihmbG9hdCBhLCBmbG9hdCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50
QSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLAot
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOwotICAgIFZhbHVlKiBhcmd1bWVudEIgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSkpKTsKLSAgICBWYWx1ZSogYXJndW1lbnRBYXNEb3VibGUgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBhcmd1bWVu
dEEpOwotICAgIFZhbHVlKiBhcmd1bWVudEJhc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGFyZ3VtZW50Qik7Ci0gICAgVmFsdWUq
IGRvdWJsZVJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0T3IsIE9yaWdp
bigpLCBhcmd1bWVudEFhc0RvdWJsZSwgYXJndW1lbnRCYXNEb3VibGUpOwotICAgIFZhbHVlKiBm
bG9hdFJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwg
T3JpZ2luKCksIGRvdWJsZVJlc3VsdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KHByb2MsIFJldHVybiwgT3JpZ2luKCksIGZsb2F0UmVzdWx0KTsKLSAgICAKLSAgICBkb3VibGUg
ZG91YmxlQSA9IGE7Ci0gICAgZG91YmxlIGRvdWJsZUIgPSBiOwotICAgIGZsb2F0IGV4cGVjdGVk
ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGJpdE9yRG91YmxlKGRvdWJsZUEsIGRvdWJsZUIpKTsKLSAg
ICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jLCBiaXR3aXNlX2Nh
c3Q8aW50MzJfdD4oYSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihiKSksIGV4cGVjdGVkKSk7Ci19
Ci0KLXZvaWQgdGVzdEJpdFhvckFyZ3MoaW50NjRfdCBhLCBpbnQ2NF90IGIpCi17Ci0gICAgUHJv
Y2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3Jp
Z2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9j
LCBCaXRYb3IsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAotICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpKSk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0
X3Q+KHByb2MsIGEsIGIpID09IChhIF4gYikpOwotfQotCi12b2lkIHRlc3RCaXRYb3JTYW1lQXJn
KGludDY0X3QgYSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAg
ICBwcm9jLCBCaXRYb3IsIE9yaWdpbigpLAotICAgICAgICAgICAgYXJndW1lbnQsCi0gICAgICAg
ICAgICBhcmd1bWVudCkpOwotCi0gICAgQ0hFQ0soIWNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJv
YywgYSkpOwotfQotCi12b2lkIHRlc3RCaXRYb3JBbmRBbmRBcmdzKGludDY0X3QgYSwgaW50NjRf
dCBiLCBpbnQ2NF90IGMpCi17Ci0gICAgLy8gV2Ugd2FudCB0byBjaGVjayBldmVyeSBwb3NzaWJs
ZSBvcmRlcmluZyBvZiBhcmd1bWVudHMgKHRvIHByb3Blcmx5IGNoZWNrIGV2ZXJ5IHBhdGggaW4g
QjNSZWR1Y2VTdHJlbmd0aCk6Ci0gICAgLy8gKChhICYgYikgXiAoYSAmIGMpKQotICAgIC8vICgo
YSAmIGIpIF4gKGMgJiBhKSkKLSAgICAvLyAoKGIgJiBhKSBeIChhICYgYykpCi0gICAgLy8gKChi
ICYgYSkgXiAoYyAmIGEpKQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgKytpKSB7Ci0gICAg
ICAgIFByb2NlZHVyZSBwcm9jOwotICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOwotICAgICAgICBWYWx1ZSogYXJnQSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAg
VmFsdWUqIGFyZ0IgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIFZhbHVlKiBhcmdDID0gcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjIpOwotICAgICAgICBWYWx1ZSogYW5kQUIgPSBpICYgMiA/IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwgYXJnQSwgYXJnQikKLSAgICAgICAg
ICAgIDogcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBhcmdC
LCBhcmdBKTsKLSAgICAgICAgVmFsdWUqIGFuZEFDID0gaSAmIDEgPyByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCksIGFyZ0EsIGFyZ0MpCi0gICAgICAgICAgICA6
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwgYXJnQywgYXJn
QSk7Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAotICAgICAgICAgICAgICAgIHByb2MsIEJpdFhvciwgT3JpZ2luKCksCi0gICAgICAgICAgICAg
ICAgYW5kQUIsCi0gICAgICAgICAgICAgICAgYW5kQUMpKTsKLQotICAgICAgICBDSEVDS19FUShj
b21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEsIGIsIGMpLCAoKGEgJiBiKSBeIChhICYgYykp
KTsKLSAgICB9Ci19Ci0KLXZvaWQgdGVzdEJpdFhvckFuZFNhbWVBcmdzKGludDY0X3QgYSwgaW50
NjRfdCBiKQotewotICAgIC8vIFdlIHdhbnQgdG8gY2hlY2sgZXZlcnkgcG9zc2libGUgb3JkZXJp
bmcgb2YgYXJndW1lbnRzICh0byBwcm9wZXJseSBjaGVjayBldmVyeSBwYXRoIGluIEIzUmVkdWNl
U3RyZW5ndGgpOgotICAgIC8vICgoYSAmIGIpIF4gYSkKLSAgICAvLyAoKGIgJiBhKSBeIGEpCi0g
ICAgLy8gKGEgXiAoYSAmIGIpKQotICAgIC8vIChhIF4gKGIgJiBhKSkKLSAgICBmb3IgKGludCBp
ID0gMDsgaSA8IDQ7ICsraSkgewotICAgICAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICAgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICAgICAgVmFsdWUqIGFyZ0EgPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIFZhbHVlKiBhcmdCID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwot
ICAgICAgICBWYWx1ZSogYW5kQUIgPSBpICYgMSA/IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQml0QW5kLCBPcmlnaW4oKSwgYXJnQSwgYXJnQikKLSAgICAgICAgICAgIDogcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBhcmdCLCBhcmdBKTsKLSAgICAg
ICAgVmFsdWUqIHJlc3VsdCA9IGkgJiAyID8gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBC
aXRYb3IsIE9yaWdpbigpLCBhbmRBQiwgYXJnQSkKLSAgICAgICAgICAgIDogcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLCBhcmdBLCBhbmRBQik7Ci0gICAgICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1
bHQpOwotICAgICAgICAKLSAgICAgICAgQ0hFQ0tfRVEoY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihw
cm9jLCBhLCBiKSwgKChhICYgYikgXiBhKSk7Ci0gICAgfQotfQotCi12b2lkIHRlc3RCaXRYb3JJ
bW1zKGludDY0X3QgYSwgaW50NjRfdCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0WG9yLCBPcmlnaW4oKSwK
LSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigp
LCBhKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9y
aWdpbigpLCBiKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jKSA9
PSAoYSBeIGIpKTsKLX0KLQotdm9pZCB0ZXN0Qml0WG9yQXJnSW1tKGludDY0X3QgYSwgaW50NjRf
dCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAot
ICAgICAgICAgICAgcHJvYywgQml0WG9yLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBiKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9j
LCBhKSA9PSAoYSBeIGIpKTsKLX0KLQotdm9pZCB0ZXN0Qml0WG9ySW1tQXJnKGludDY0X3QgYSwg
aW50NjRfdCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAg
ICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAotICAgICAgICAgICAgcHJvYywgQml0WG9yLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKSwKLSAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90
Pihwcm9jLCBiKSA9PSAoYSBeIGIpKTsKLX0KLQotdm9pZCB0ZXN0Qml0WG9yQml0WG9yQXJnSW1t
SW1tKGludDY0X3QgYSwgaW50NjRfdCBiLCBpbnQ2NF90IGMpCi17Ci0gICAgUHJvY2VkdXJlIHBy
b2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSog
aW5uZXJCaXRYb3IgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBCaXRY
b3IsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSk7Ci0gICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0WG9yLCBP
cmlnaW4oKSwKLSAgICAgICAgICAgIGlubmVyQml0WG9yLAotICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGMpKSk7Ci0KLSAgICBDSEVDSyhj
b21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEpID09ICgoYSBeIGIpIF4gYykpOwotfQotCi12
b2lkIHRlc3RCaXRYb3JJbW1CaXRYb3JBcmdJbW0oaW50NjRfdCBhLCBpbnQ2NF90IGIsIGludDY0
X3QgYykKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBpbm5lckJpdFhvciA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCi0gICAgICAgIHByb2MsIEJpdFhvciwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIGMpKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0g
ICAgICAgICAgICBwcm9jLCBCaXRYb3IsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpLAotICAgICAgICAgICAgaW5u
ZXJCaXRYb3IpKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYikg
PT0gKGEgXiAoYiBeIGMpKSk7Ci19Ci0KLXZvaWQgdGVzdEJpdFhvckFyZ3MzMihpbnQgYSwgaW50
IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0g
ICAgICAgICAgICBwcm9jLCBCaXRYb3IsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0g
ICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAg
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRS
dW48aW50Pihwcm9jLCBhLCBiKSA9PSAoYSBeIGIpKTsKLX0KLQotdm9pZCB0ZXN0Qml0WG9yU2Ft
ZUFyZzMyKGludCBhKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCi0gICAgICAgICAgICBwcm9jLCBCaXRYb3IsIE9yaWdpbigpLAotICAgICAgICAgICAgYXJn
dW1lbnQsCi0gICAgICAgICAgICBhcmd1bWVudCkpOwotCi0gICAgQ0hFQ0soIWNvbXBpbGVBbmRS
dW48aW50Pihwcm9jLCBhKSk7Ci19Ci0KLXZvaWQgdGVzdEJpdFhvckltbXMzMihpbnQgYSwgaW50
IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0g
ICAgICAgICAgICBwcm9jLCBCaXRYb3IsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpLAotICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpKSk7Ci0KLSAgICBD
SEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYykgPT0gKGEgXiBiKSk7Ci19Ci0KLXZvaWQgdGVz
dEJpdFhvckFyZ0ltbTMyKGludCBhLCBpbnQgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEJpdFhvciwgT3JpZ2lu
KCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAg
IHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkp
LAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIGIpKSk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYSkgPT0gKGEg
XiBiKSk7Ci19Ci0KLXZvaWQgdGVzdEJpdFhvckltbUFyZzMyKGludCBhLCBpbnQgYikKLXsKLSAg
ICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAg
IHByb2MsIEJpdFhvciwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSksCi0gICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVu
PGludD4ocHJvYywgYikgPT0gKGEgXiBiKSk7Ci19Ci0KLXZvaWQgdGVzdEJpdFhvckJpdFhvckFy
Z0ltbUltbTMyKGludCBhLCBpbnQgYiwgaW50IGMpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0g
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogaW5uZXJC
aXRYb3IgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBCaXRYb3IsIE9y
aWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJv
YywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKLSAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpKTsKLSAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3Jp
Z2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9j
LCBCaXRYb3IsIE9yaWdpbigpLAotICAgICAgICAgICAgaW5uZXJCaXRYb3IsCi0gICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYykpKTsKLQot
ICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhKSA9PSAoKGEgXiBiKSBeIGMpKTsK
LX0KLQotdm9pZCB0ZXN0Qml0WG9ySW1tQml0WG9yQXJnSW1tMzIoaW50IGEsIGludCBiLCBpbnQg
YykKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOwotICAgIFZhbHVlKiBpbm5lckJpdFhvciA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCi0gICAgICAgIHByb2MsIEJpdFhvciwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCkpLAotICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYykpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEJpdFhvciwgT3JpZ2luKCksCi0gICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSksCi0g
ICAgICAgICAgICBpbm5lckJpdFhvcikpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+
KHByb2MsIGIpID09IChhIF4gKGIgXiBjKSkpOwotfQotCi12b2lkIHRlc3RCaXROb3RBcmcoaW50
NjRfdCBhKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAotICAgICAgICAgICAgcHJvYywgQml0WG9yLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMSksCi0gICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCkpKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRS
dW48aW50NjRfdD4ocHJvYywgYSksIHN0YXRpY19jYXN0PGludDY0X3Q+KChzdGF0aWNfY2FzdDx1
aW50NjRfdD4oYSkgXiAweGZmZmZmZmZmZmZmZmZmZmYpKSkpOwotfQotCi12b2lkIHRlc3RCaXRO
b3RJbW0oaW50NjRfdCBhKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0WG9yLCBPcmlnaW4oKSwKLSAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMSksCi0g
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
YSkpKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJv
YywgYSksIHN0YXRpY19jYXN0PGludDY0X3Q+KChzdGF0aWNfY2FzdDx1aW50NjRfdD4oYSkgXiAw
eGZmZmZmZmZmZmZmZmZmZmYpKSkpOwotfQotCi12b2lkIHRlc3RCaXROb3RNZW0oaW50NjRfdCBh
KQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgTWVt
b3J5VmFsdWUqIGxvYWQgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQs
IEludDY0LCBPcmlnaW4oKSwgYWRkcmVzcyk7Ci0gICAgVmFsdWUqIG5vdExvYWQgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdFhvciwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMSksCi0gICAgICAgIGxvYWQp
OwotICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmUsIE9yaWdpbigp
LCBub3RMb2FkLCBhZGRyZXNzKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIDApKTsKLQotICAgIGludDY0X3QgaW5wdXQgPSBhOwotICAgIGNvbXBpbGVBbmRS
dW48aW50MzJfdD4ocHJvYywgJmlucHV0KTsKLSAgICBDSEVDSyhpc0lkZW50aWNhbChpbnB1dCwg
c3RhdGljX2Nhc3Q8aW50NjRfdD4oKHN0YXRpY19jYXN0PHVpbnQ2NF90PihhKSBeIDB4ZmZmZmZm
ZmZmZmZmZmZmZikpKSk7Ci19Ci0KLXZvaWQgdGVzdEJpdE5vdEFyZzMyKGludDMyX3QgYSkKLXsK
LSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOwotICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
VHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLAotICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0x
KSwKLSAgICAgICAgICAgIGFyZ3VtZW50KSk7Ci0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGls
ZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBhKSwgc3RhdGljX2Nhc3Q8aW50MzJfdD4oKHN0YXRpY19j
YXN0PHVpbnQzMl90PihhKSBeIDB4ZmZmZmZmZmYpKSkpOwotfQotCi12b2lkIHRlc3RCaXROb3RJ
bW0zMihpbnQzMl90IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
Ci0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBCaXRYb3IsIE9yaWdpbigpLAotICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xKSwKLSAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBh
KSkpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9j
LCBhKSwgc3RhdGljX2Nhc3Q8aW50MzJfdD4oKHN0YXRpY19jYXN0PHVpbnQzMl90PihhKSBeIDB4
ZmZmZmZmZmYpKSkpOwotfQotCi12b2lkIHRlc3RCaXROb3RNZW0zMihpbnQzMl90IGEpCi17Ci0g
ICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKLSAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBNZW1vcnlWYWx1
ZSogbG9hZCA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIs
IE9yaWdpbigpLCBhZGRyZXNzKTsKLSAgICBWYWx1ZSogbm90TG9hZCA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgQml0WG9yLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xKSwKLSAgICAgICAgbG9hZCk7Ci0gICAg
cm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIG5vdExv
YWQsIGFkZHJlc3MpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgMCkpOwotCi0gICAgaW50MzJfdCBpbnB1dCA9IGE7Ci0gICAgY29tcGlsZUFuZFJ1bjxpbnQz
Ml90Pihwcm9jLCAmaW5wdXQpOwotICAgIENIRUNLKGlzSWRlbnRpY2FsKGlucHV0LCBzdGF0aWNf
Y2FzdDxpbnQzMl90Pigoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGEpIF4gMHhmZmZmZmZmZikpKSk7
Ci19Ci0KLXZvaWQgdGVzdE5vdE9uQm9vbGVhbkFuZEJyYW5jaDMyKGludDY0X3QgYSwgaW50NjRf
dCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7
Ci0gICAgQmFzaWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBWYWx1
ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAot
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIx
KSk7Ci0gICAgVmFsdWUqIGFyZ3NBcmVFcXVhbCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgRXF1YWwsIE9yaWdpbigpLCBhcmcxLCBhcmcyKTsKLSAgICBWYWx1ZSogYXJnc0FyZU5vdEVx
dWFsID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLAotICAg
ICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSksCi0g
ICAgICAgIGFyZ3NBcmVFcXVhbCk7Ci0KLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
Ci0gICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCi0gICAgICAgIGFyZ3NBcmVOb3RFcXVh
bCwKLSAgICAgICAgRnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVs
c2VDYXNlKSk7Ci0KLSAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENv
bnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKSk7Ci0KLSAgICBlbHNlQ2FzZS0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAg
ICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC00Mikp
OwotCi0gICAgaW50MzJfdCBleHBlY3RlZFZhbHVlID0gKGEgIT0gYikgPyA0MiA6IC00MjsKLSAg
ICBDSEVDSyhjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGEsIGIpID09IGV4cGVjdGVkVmFs
dWUpOwotfQotCi12b2lkIHRlc3RCaXROb3RPbkJvb2xlYW5BbmRCcmFuY2gzMihpbnQ2NF90IGEs
IGludDY0X3QgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRC
bG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOwotCi0g
ICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmln
aW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogYXJnMiA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSkpOwotICAgIFZhbHVlKiBhcmdzQXJlRXF1YWwgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEVxdWFsLCBPcmlnaW4oKSwgYXJnMSwgYXJnMik7Ci0gICAgVmFsdWUqIGJpdE5v
dEFyZ3NBcmVFcXVhbCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0WG9yLCBPcmln
aW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIC0xKSwKLSAgICAgICAgYXJnc0FyZUVxdWFsKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZShwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAotICAgICAgICBiaXROb3RBcmdzQXJl
RXF1YWwsIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2Fz
ZSkpOwotCi0gICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAotICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIDQyKSk7Ci0KLSAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIGVsc2VDYXNlLT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTQyKSk7Ci0KLSAgICBzdGF0aWMgY29uc3RleHBy
IGludDMyX3QgZXhwZWN0ZWRWYWx1ZSA9IDQyOwotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50
MzJfdD4ocHJvYywgYSwgYikgPT0gZXhwZWN0ZWRWYWx1ZSk7Ci19Ci0KLXZvaWQgdGVzdFNobEFy
Z3MoaW50NjRfdCBhLCBpbnQ2NF90IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdpbigpLAotICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2
NF90Pihwcm9jLCBhLCBiKSA9PSAoYSA8PCBiKSk7Ci19Ci0KLXZvaWQgdGVzdFNobEltbXMoaW50
NjRfdCBhLCBpbnQ2NF90IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdpbigpLAotICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpLAotICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIp
KSk7Ci0KLSAgICBiID0gYiAmIDB4M2Y7IC8vIHRvIGF2b2lkIHVuZGVmaW5lZCBiZWhhdmlvdXIg
YmVsb3cKLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MpID09IChhIDw8IGIp
KTsKLX0KLQotdm9pZCB0ZXN0U2hsQXJnSW1tKGludDY0X3QgYSwgaW50NjRfdCBiKQotewotICAg
IFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAg
cHJvYywgU2hsLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKLSAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSkp
OwotCi0gICAgYiA9IGIgJiAweDNmOyAvLyB0byBhdm9pZCB1bmRlZmluZWQgYmVoYXZpb3VyIGJl
bG93Ci0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhKSA9PSAoYSA8PCBi
KSk7Ci19Ci0KLXZvaWQgdGVzdFNobFNTaHJBcmdJbW0oaW50NjRfdCBhLCBpbnQ2NF90IGIpCi17
Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKLSAgICBWYWx1ZSogYXJnQSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBWYWx1ZSogY29u
c3RCID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpOwot
ICAgIFZhbHVlKiBpbm5lclNoaWZ0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTU2hy
LCBPcmlnaW4oKSwgYXJnQSwgY29uc3RCKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdpbigpLAotICAgICAgICAg
ICAgaW5uZXJTaGlmdCwKLSAgICAgICAgICAgIGNvbnN0QikpOwotCi0gICAgYiA9IGIgJiAweDNm
OyAvLyB0byBhdm9pZCB1bmRlZmluZWQgYmVoYXZpb3VyIGJlbG93Ci0gICAgQ0hFQ0soY29tcGls
ZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhKSA9PSAoKGEgPj4gYikgPDwgYikpOwotfQotCi12b2lk
IHRlc3RTaGxBcmczMihpbnQzMl90IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogdmFsdWUgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAot
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFNobCwgT3JpZ2luKCksIHZhbHVlLCB2YWx1ZSkpOwotCi0gICAgQ0hFQ0so
Y29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBhKSA9PSAoYSA8PCBhKSk7Ci19Ci0KLXZvaWQg
dGVzdFNobEFyZ3MzMihpbnQzMl90IGEsIGludDMyX3QgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJv
YzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIFNobCwgT3Jp
Z2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAg
ICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAg
ICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEp
KSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBhLCBiKSA9PSAo
YSA8PCBiKSk7Ci19Ci0KLXZvaWQgdGVzdFNobEltbXMzMihpbnQzMl90IGEsIGludDMyX3QgYikK
LXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAg
ICAgICAgIHByb2MsIFNobCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSksCi0gICAgICAgICAgICByb290LT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYikpKTsKLQotICAgIGIgPSBiICYg
MHgxZjsgLy8gdG8gYXZvaWQgdW5kZWZpbmVkIGJlaGF2aW91ciBiZWxvdwotICAgIENIRUNLKGNv
bXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYykgPT0gKGEgPDwgYikpOwotfQotCi12b2lkIHRlc3RT
aGxBcmdJbW0zMihpbnQzMl90IGEsIGludDMyX3QgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsK
LSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIFNobCwgT3JpZ2lu
KCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAg
IHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkp
LAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIGIpKSk7Ci0KLSAgICBiID0gYiAmIDB4MWY7IC8vIHRvIGF2b2lkIHVuZGVmaW5lZCBiZWhh
dmlvdXIgYmVsb3cKLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGEpID09
IChhIDw8IGIpKTsKLX0KLQotdm9pZCB0ZXN0U2hsWlNockFyZ0ltbTMyKGludDMyX3QgYSwgaW50
MzJfdCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ0EgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KAotICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSk7Ci0gICAgVmFsdWUqIGNvbnN0QiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBiKTsKLSAgICBWYWx1ZSogaW5uZXJTaGlmdCA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgWlNociwgT3JpZ2luKCksIGFyZ0EsIGNvbnN0Qik7Ci0gICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAot
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgU2hsLCBP
cmlnaW4oKSwKLSAgICAgICAgICAgIGlubmVyU2hpZnQsCi0gICAgICAgICAgICBjb25zdEIpKTsK
LQotICAgIGIgPSBiICYgMHgxZjsgLy8gdG8gYXZvaWQgdW5kZWZpbmVkIGJlaGF2aW91ciBiZWxv
dwotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYSkgPT0gc3RhdGljX2Nh
c3Q8aW50MzJfdD4oKHN0YXRpY19jYXN0PHVpbnQzMl90PihhKSA+PiBiKSA8PCBiKSk7Ci19Ci0K
LXZvaWQgdGVzdFNTaHJBcmdzKGludDY0X3QgYSwgaW50NjRfdCBiKQotewotICAgIFByb2NlZHVy
ZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgU1No
ciwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmln
aW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKSk7Ci0KLSAgICBDSEVDSyhj
b21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEsIGIpID09IChhID4+IGIpKTsKLX0KLQotdm9p
ZCB0ZXN0U1NockltbXMoaW50NjRfdCBhLCBpbnQ2NF90IGIpCi17Ci0gICAgUHJvY2VkdXJlIHBy
b2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0g
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBTU2hyLCBP
cmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBhKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBiKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90
Pihwcm9jKSA9PSAoYSA+PiBiKSk7Ci19Ci0KLXZvaWQgdGVzdFNTaHJBcmdJbW0oaW50NjRfdCBh
LCBpbnQ2NF90IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0g
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBTU2hyLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBiKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90
Pihwcm9jLCBhKSA9PSAoYSA+PiBiKSk7Ci19Ci0KLXZvaWQgdGVzdFNTaHJBcmczMihpbnQzMl90
IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICBWYWx1ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAot
ICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7
Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNTaHIsIE9y
aWdpbigpLCB2YWx1ZSwgdmFsdWUpKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50MzJf
dD4ocHJvYywgYSkgPT0gKGEgPj4gKGEgJiAzMSkpKTsKLX0KLQotdm9pZCB0ZXN0U1NockFyZ3Mz
MihpbnQzMl90IGEsIGludDMyX3QgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIFNTaHIsIE9yaWdpbigpLAotICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBU
cnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKLSAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgVHJ1
bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpKTsKLQotICAg
IENIRUNLKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYSwgYikgPT0gKGEgPj4gYikpOwot
fQotCi12b2lkIHRlc3RTU2hySW1tczMyKGludDMyX3QgYSwgaW50MzJfdCBiKQotewotICAgIFBy
b2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0g
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJv
YywgU1NociwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYSksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYikpKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRS
dW48aW50MzJfdD4ocHJvYykgPT0gKGEgPj4gYikpOwotfQotCi12b2lkIHRlc3RTU2hyQXJnSW1t
MzIoaW50MzJfdCBhLCBpbnQzMl90IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBTU2hyLCBPcmlnaW4oKSwKLSAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywg
VHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCi0gICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYikp
KTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYSkgPT0gKGEgPj4g
YikpOwotfQotCi12b2lkIHRlc3RaU2hyQXJncyh1aW50NjRfdCBhLCB1aW50NjRfdCBiKQotewot
ICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAg
ICAgcHJvYywgWlNociwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0g
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKSk7Ci0K
LSAgICBDSEVDSyhjb21waWxlQW5kUnVuPHVpbnQ2NF90Pihwcm9jLCBhLCBiKSA9PSAoYSA+PiBi
KSk7Ci19Ci0KLXZvaWQgdGVzdFpTaHJJbW1zKHVpbnQ2NF90IGEsIHVpbnQ2NF90IGIpCi17Ci0g
ICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAg
ICBwcm9jLCBaU2hyLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25z
dDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSkpOwotCi0gICAgQ0hFQ0soY29tcGls
ZUFuZFJ1bjx1aW50NjRfdD4ocHJvYykgPT0gKGEgPj4gYikpOwotfQotCi12b2lkIHRlc3RaU2hy
QXJnSW1tKHVpbnQ2NF90IGEsIHVpbnQ2NF90IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0g
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBaU2hyLCBPcmlnaW4o
KSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSkpOwotCi0gICAgQ0hFQ0soY29t
cGlsZUFuZFJ1bjx1aW50NjRfdD4ocHJvYywgYSkgPT0gKGEgPj4gYikpOwotfQotCi12b2lkIHRl
c3RaU2hyQXJnMzIodWludDMyX3QgYSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiB2YWx1ZSA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0g
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgWlNociwgT3JpZ2luKCksIHZhbHVlLCB2YWx1ZSkpOwotCi0gICAgQ0hFQ0so
Y29tcGlsZUFuZFJ1bjx1aW50MzJfdD4ocHJvYywgYSkgPT0gKGEgPj4gKGEgJiAzMSkpKTsKLX0K
LQotdm9pZCB0ZXN0WlNockFyZ3MzMih1aW50MzJfdCBhLCB1aW50MzJfdCBiKQotewotICAgIFBy
b2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0g
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJv
YywgWlNociwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAot
ICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCkpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAg
ICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjEpKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjx1aW50MzJfdD4ocHJv
YywgYSwgYikgPT0gKGEgPj4gYikpOwotfQotCi12b2lkIHRlc3RaU2hySW1tczMyKHVpbnQzMl90
IGEsIHVpbnQzMl90IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
Ci0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBaU2hyLCBPcmlnaW4oKSwKLSAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKSwKLSAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSkp
OwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjx1aW50MzJfdD4ocHJvYykgPT0gKGEgPj4gYikp
OwotfQotCi12b2lkIHRlc3RaU2hyQXJnSW1tMzIodWludDMyX3QgYSwgdWludDMyX3QgYikKLXsK
LSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAg
ICAgIHByb2MsIFpTaHIsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1
bjx1aW50MzJfdD4ocHJvYywgYSkgPT0gKGEgPj4gYikpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBJbnRlZ2VyVHlwZT4KLXN0YXRpYyB1bnNpZ25lZCBjb3VudExlYWRpbmdaZXJvKEludGVnZXJU
eXBlIHZhbHVlKQotewotICAgIHVuc2lnbmVkIGJpdENvdW50ID0gc2l6ZW9mKEludGVnZXJUeXBl
KSAqIDg7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIGJpdENvdW50OwotCi0gICAg
dW5zaWduZWQgY291bnRlciA9IDA7Ci0gICAgd2hpbGUgKCEoc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KHZhbHVlKSAmICgxbCA8PCAoYml0Q291bnQgLSAxKSkpKSB7Ci0gICAgICAgIHZhbHVlIDw8PSAx
OwotICAgICAgICArK2NvdW50ZXI7Ci0gICAgfQotICAgIHJldHVybiBjb3VudGVyOwotfQotCi12
b2lkIHRlc3RDbHpBcmc2NChpbnQ2NF90IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnQg
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgVmFsdWUqIGNselZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBDbHosIE9yaWdpbigpLCBhcmd1bWVudCk7Ci0gICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGNselZhbHVlKTsKLSAgICBD
SEVDSyhjb21waWxlQW5kUnVuPHVuc2lnbmVkPihwcm9jLCBhKSA9PSBjb3VudExlYWRpbmdaZXJv
KGEpKTsKLX0KLQotdm9pZCB0ZXN0Q2x6TWVtNjQoaW50NjRfdCBhKQotewotICAgIFByb2NlZHVy
ZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFs
dWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgTWVtb3J5VmFsdWUqIHZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCks
IGFkZHJlc3MpOwotICAgIFZhbHVlKiBjbHpWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgQ2x6LCBPcmlnaW4oKSwgdmFsdWUpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBjbHpWYWx1ZSk7Ci0gICAgQ0hFQ0soY29tcGls
ZUFuZFJ1bjx1bnNpZ25lZD4ocHJvYywgJmEpID09IGNvdW50TGVhZGluZ1plcm8oYSkpOwotfQot
Ci12b2lkIHRlc3RDbHpBcmczMihpbnQzMl90IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0g
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1l
bnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogY2x6VmFsdWUgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIENseiwgT3JpZ2luKCksIGFyZ3VtZW50KTsKLSAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2x6VmFsdWUpOwotICAg
IENIRUNLKGNvbXBpbGVBbmRSdW48dW5zaWduZWQ+KHByb2MsIGEpID09IGNvdW50TGVhZGluZ1pl
cm8oYSkpOwotfQotCi12b2lkIHRlc3RDbHpNZW0zMihpbnQzMl90IGEpCi17Ci0gICAgUHJvY2Vk
dXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBW
YWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBNZW1vcnlWYWx1ZSogdmFsdWUg
PSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4o
KSwgYWRkcmVzcyk7Ci0gICAgVmFsdWUqIGNselZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBDbHosIE9yaWdpbigpLCB2YWx1ZSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGNselZhbHVlKTsKLSAgICBDSEVDSyhjb21w
aWxlQW5kUnVuPHVuc2lnbmVkPihwcm9jLCAmYSkgPT0gY291bnRMZWFkaW5nWmVybyhhKSk7Ci19
Ci0KLXZvaWQgdGVzdEFic0FyZyhkb3VibGUgYSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEFicywgT3JpZ2luKCks
Ci0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApKSk7Ci0KLSAgICBDSEVDSyhpc0lkZW50
aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgYSksIGZhYnMoYSkpKTsKLX0KLQotdm9p
ZCB0ZXN0QWJzSW1tKGRvdWJsZSBhKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9v
dC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKLSAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWJzLCBPcmlnaW4oKSwg
YXJndW1lbnQpKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91Ymxl
Pihwcm9jKSwgZmFicyhhKSkpOwotfQotCi12b2lkIHRlc3RBYnNNZW0oZG91YmxlIGEpCi17Ci0g
ICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKLSAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBNZW1vcnlWYWx1
ZSogbG9hZERvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwg
RG91YmxlLCBPcmlnaW4oKSwgYWRkcmVzcyk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEFicywgT3JpZ2luKCksIGxvYWREb3VibGUpKTsKLQotICAgIENI
RUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCAmYSksIGZhYnMoYSkp
KTsKLX0KLQotdm9pZCB0ZXN0QWJzQWJzQXJnKGRvdWJsZSBhKQotewotICAgIFByb2NlZHVyZSBw
cm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUq
IGZpcnN0QWJzID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBYnMsIE9yaWdpbigpLAot
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEZQUkluZm86OmFyZ3VtZW50RlBSMCkpOwotICAgIFZhbHVlKiBzZWNvbmRBYnMgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEFicywgT3JpZ2luKCksIGZpcnN0QWJzKTsKLSAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgc2Vjb25kQWJz
KTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBh
KSwgZmFicyhmYWJzKGEpKSkpOwotfQotCi12b2lkIHRlc3RBYnNOZWdBcmcoZG91YmxlIGEpCi17
Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKLSAgICBWYWx1ZSogbmVnID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBOZWcs
IE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCkpOwotICAgIFZhbHVlKiBhYnMgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFicywgT3JpZ2luKCksIG5lZyk7Ci0gICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFicyk7Ci0g
ICAgCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEp
LCBmYWJzKC0gYSkpKTsKLX0KLQotdm9pZCB0ZXN0QWJzQml0d2lzZUNhc3RBcmcoZG91YmxlIGEp
Ci17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnRBc0ludDY0ID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwot
ICAgIFZhbHVlKiBhcmd1bWVudEFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50QXNJbnQ2NCk7Ci0gICAgVmFsdWUqIGFi
c1ZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBYnMsIE9yaWdpbigpLCBhcmd1
bWVudEFzRG91YmxlKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwgYWJzVmFsdWUpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGls
ZUFuZFJ1bjxkb3VibGU+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQ2NF90PihhKSksIGZhYnMoYSkp
KTsKLX0KLQotdm9pZCB0ZXN0Qml0d2lzZUNhc3RBYnNCaXR3aXNlQ2FzdEFyZyhkb3VibGUgYSkK
LXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudEFzSW50NjQgPSByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0g
ICAgVmFsdWUqIGFyZ3VtZW50QXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnRBc0ludDY0KTsKLSAgICBWYWx1ZSogYWJz
VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFicywgT3JpZ2luKCksIGFyZ3Vt
ZW50QXNEb3VibGUpOwotICAgIFZhbHVlKiByZXN1bHRBc0ludDY0ID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFic1ZhbHVlKTsKLQotICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHRB
c0ludDY0KTsKLQotICAgIGludDY0X3QgZXhwZWN0ZWRSZXN1bHQgPSBiaXR3aXNlX2Nhc3Q8aW50
NjRfdD4oZmFicyhhKSk7Ci0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQ2
NF90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50NjRfdD4oYSkpLCBleHBlY3RlZFJlc3VsdCkpOwot
fQotCi12b2lkIHRlc3RBYnNBcmcoZmxvYXQgYSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVu
dDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOwotICAg
IFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFicywgT3JpZ2lu
KCksIGFyZ3VtZW50KTsKLSAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgcmVzdWx0KTsKLSAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOwotCi0g
ICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNl
X2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8Zmxv
YXQ+KGZhYnMoYSkpKSkpOwotfQotCi12b2lkIHRlc3RBYnNJbW0oZmxvYXQgYSkKLXsKLSAgICBQ
cm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwot
ICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBhKTsKLSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBBYnMsIE9yaWdpbigpLCBhcmd1bWVudCk7Ci0gICAgVmFsdWUqIHJlc3VsdDMy
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJl
c3VsdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIHJlc3VsdDMyKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48
aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgYml0d2lzZV9jYXN0PGlu
dDMyX3Q+KHN0YXRpY19jYXN0PGZsb2F0PihmYWJzKGEpKSkpKTsKLX0KLQotdm9pZCB0ZXN0QWJz
TWVtKGZsb2F0IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKLSAgICBNZW1vcnlWYWx1ZSogbG9hZEZsb2F0ID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZh
bHVlPihwcm9jLCBMb2FkLCBGbG9hdCwgT3JpZ2luKCksIGFkZHJlc3MpOwotICAgIFZhbHVlKiBy
ZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFicywgT3JpZ2luKCksIGxvYWRG
bG9hdCk7Ci0gICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKLQotICAgIENIRUNL
KGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgJmEpLCBiaXR3aXNlX2Nh
c3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KGZhYnMoYSkpKSkpOwotfQotCi12b2lkIHRl
c3RBYnNBYnNBcmcoZmxvYXQgYSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOwotICAgIFZhbHVlKiBm
aXJzdEFicyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWJzLCBPcmlnaW4oKSwgYXJn
dW1lbnQpOwotICAgIFZhbHVlKiBzZWNvbmRBYnMgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEFicywgT3JpZ2luKCksIGZpcnN0QWJzKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgc2Vjb25kQWJzKTsKLQotICAgIENIRUNLKGlz
SWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZmxvYXQ+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90
PihhKSksIHN0YXRpY19jYXN0PGZsb2F0PihmYWJzKGZhYnMoYSkpKSkpOwotfQotCi12b2lkIHRl
c3RBYnNOZWdBcmcoZmxvYXQgYSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOwotICAgIFZhbHVlKiBu
ZWcgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE5lZywgT3JpZ2luKCksIGFyZ3VtZW50
KTsKLSAgICBWYWx1ZSogYWJzID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBYnMsIE9y
aWdpbigpLCBuZWcpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCBhYnMpOwotICAgIAotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVB
bmRSdW48ZmxvYXQ+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIHN0YXRpY19jYXN0
PGZsb2F0PihmYWJzKC0gYSkpKSk7Ci19Ci0KLXZvaWQgdGVzdEFic0JpdHdpc2VDYXN0QXJnKGZs
b2F0IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnRBc0ludDMyID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50QXNmbG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudEFzSW50MzIpOwotICAgIFZhbHVl
KiBhYnNWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWJzLCBPcmlnaW4oKSwg
YXJndW1lbnRBc2Zsb2F0KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgYWJzVmFsdWUpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29t
cGlsZUFuZFJ1bjxmbG9hdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KGZhYnMoYSkpKSk7Ci19Ci0KLXZvaWQgdGVzdEJpdHdpc2VDYXN0QWJzQml0
d2lzZUNhc3RBcmcoZmxvYXQgYSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudEFzSW50MzIg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogYXJndW1lbnRBc2Zsb2F0ID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50QXNJbnQz
Mik7Ci0gICAgVmFsdWUqIGFic1ZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBB
YnMsIE9yaWdpbigpLCBhcmd1bWVudEFzZmxvYXQpOwotICAgIFZhbHVlKiByZXN1bHRBc0ludDY0
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFi
c1ZhbHVlKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCByZXN1bHRBc0ludDY0KTsKLQotICAgIGludDMyX3QgZXhwZWN0ZWRSZXN1bHQg
PSBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KGZhYnMoYSkpKTsKLSAg
ICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2Vf
Y2FzdDxpbnQzMl90PihhKSksIGV4cGVjdGVkUmVzdWx0KSk7Ci19Ci0KLXZvaWQgdGVzdEFic0Fy
Z1dpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbihmbG9hdCBhKQotewotICAgIFByb2NlZHVyZSBw
cm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUq
IGFyZ3VtZW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4o
KSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZSA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVu
dDMyKTsKLSAgICBWYWx1ZSogYXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlKTsKLSAgICBWYWx1ZSogcmVzdWx0
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBYnMsIE9yaWdpbigpLCBhc0RvdWJsZSk7
Ci0gICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBE
b3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgcmVzdWx0KTsKLSAgICBWYWx1ZSogcmVzdWx0MzIgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRS
ZXN1bHQpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCByZXN1bHQzMik7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVu
PGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2VfY2FzdDxp
bnQzMl90PihzdGF0aWNfY2FzdDxmbG9hdD4oZmFicyhhKSkpKSk7Ci19Ci0KLXZvaWQgdGVzdEFi
c0FyZ1dpdGhFZmZlY3RmdWxEb3VibGVDb252ZXJzaW9uKGZsb2F0IGEpCi17Ci0gICAgUHJvY2Vk
dXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBW
YWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9y
aWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZhbHVlKiBmbG9hdFZhbHVl
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFy
Z3VtZW50MzIpOwotICAgIFZhbHVlKiBhc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUpOwotICAgIFZhbHVlKiBy
ZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFicywgT3JpZ2luKCksIGFzRG91
YmxlKTsKLSAgICBWYWx1ZSogZmxvYXRSZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCByZXN1bHQpOwotICAgIFZhbHVlKiByZXN1bHQz
MiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBm
bG9hdFJlc3VsdCk7Ci0gICAgVmFsdWUqIGRvdWJsZUFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7
Ci0gICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCks
IHJlc3VsdCwgZG91YmxlQWRkcmVzcyk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKLQotICAgIGRvdWJsZSBlZmZlY3Qg
PSAwOwotICAgIGludDMyX3QgcmVzdWx0VmFsdWUgPSBjb21waWxlQW5kUnVuPGludDMyX3Q+KHBy
b2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgJmVmZmVjdCk7Ci0gICAgQ0hFQ0soaXNJZGVu
dGljYWwocmVzdWx0VmFsdWUsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihzdGF0aWNfY2FzdDxmbG9h
dD4oZmFicyhhKSkpKSk7Ci0gICAgQ0hFQ0soaXNJZGVudGljYWwoZWZmZWN0LCBzdGF0aWNfY2Fz
dDxkb3VibGU+KGZhYnMoYSkpKSk7Ci19Ci0KLXZvaWQgdGVzdENlaWxBcmcoZG91YmxlIGEpCi17
Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAg
ICAgICBwcm9jLCBDZWlsLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBS
MCkpKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9j
LCBhKSwgY2VpbChhKSkpOwotfQotCi12b2lkIHRlc3RDZWlsSW1tKGRvdWJsZSBhKQotewotICAg
IFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
Ci0gICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBhKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0g
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgQ2VpbCwgT3JpZ2luKCksIGFyZ3VtZW50KSk7Ci0KLSAgICBDSEVDSyhpc0lk
ZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYyksIGNlaWwoYSkpKTsKLX0KLQotdm9p
ZCB0ZXN0Q2VpbE1lbShkb3VibGUgYSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhZGRyZXNzID0gcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOwotICAgIE1lbW9yeVZhbHVlKiBsb2FkRG91YmxlID0gcm9vdC0+YXBwZW5k
TmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBEb3VibGUsIE9yaWdpbigpLCBhZGRyZXNzKTsK
LSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwg
T3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQ2VpbCwgT3Jp
Z2luKCksIGxvYWREb3VibGUpKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRS
dW48ZG91YmxlPihwcm9jLCAmYSksIGNlaWwoYSkpKTsKLX0KLQotdm9pZCB0ZXN0Q2VpbENlaWxB
cmcoZG91YmxlIGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogZmlyc3RDZWlsID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBDZWlsLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjAp
KTsKLSAgICBWYWx1ZSogc2Vjb25kQ2VpbCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
Q2VpbCwgT3JpZ2luKCksIGZpcnN0Q2VpbCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHNlY29uZENlaWwpOwotCi0gICAgQ0hFQ0soaXNJ
ZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEpLCBjZWlsKGEpKSk7Ci19Ci0K
LXZvaWQgdGVzdEZsb29yQ2VpbEFyZyhkb3VibGUgYSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsK
LSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBmaXJz
dENlaWwgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIENlaWwsIE9yaWdpbigpLAotICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQ
UkluZm86OmFyZ3VtZW50RlBSMCkpOwotICAgIFZhbHVlKiB3cmFwcGluZ0Zsb29yID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9vciwgT3JpZ2luKCksIGZpcnN0Q2VpbCk7Ci0gICAg
cm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHdyYXBw
aW5nRmxvb3IpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+
KHByb2MsIGEpLCBjZWlsKGEpKSk7Ci19Ci0KLXZvaWQgdGVzdENlaWxJVG9ENjQoaW50NjRfdCBh
KQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIFZh
bHVlKiBhcmd1bWVudEFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJVG9E
LCBPcmlnaW4oKSwgYXJndW1lbnQpOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIENlaWwsIE9yaWdpbigpLCBhcmd1bWVudEFzRG91YmxlKSk7Ci0KLSAg
ICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgYSksIGNlaWwo
c3RhdGljX2Nhc3Q8ZG91YmxlPihhKSkpKTsKLX0KLQotdm9pZCB0ZXN0Q2VpbElUb0QzMihpbnQ2
NF90IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAg
ICBWYWx1ZSogYXJndW1lbnRBc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
SVRvRCwgT3JpZ2luKCksIGFyZ3VtZW50KTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBDZWlsLCBPcmlnaW4oKSwgYXJndW1lbnRBc0RvdWJsZSkpOwot
Ci0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEpLCBj
ZWlsKHN0YXRpY19jYXN0PGRvdWJsZT4oYSkpKSk7Ci19Ci0KLXZvaWQgdGVzdENlaWxBcmcoZmxv
YXQgYSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0g
ICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNl
Q2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIENlaWwsIE9yaWdpbigpLCBhcmd1bWVudCk7Ci0gICAgVmFs
dWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwg
T3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2Ms
IFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNv
bXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgYml0
d2lzZV9jYXN0PGludDMyX3Q+KGNlaWxmKGEpKSkpOwotfQotCi12b2lkIHRlc3RDZWlsSW1tKGZs
b2F0IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8Q29u
c3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQ2VpbCwgT3JpZ2luKCksIGFyZ3VtZW50KTsKLSAg
ICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VD
YXN0LCBPcmlnaW4oKSwgcmVzdWx0KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOwotCi0gICAgQ0hFQ0soaXNJZGVudGlj
YWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkp
LCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oY2VpbGYoYSkpKSk7Ci19Ci0KLXZvaWQgdGVzdENlaWxN
ZW0oZmxvYXQgYSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OwotICAgIE1lbW9yeVZhbHVlKiBsb2FkRmxvYXQgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFs
dWU+KHByb2MsIExvYWQsIEZsb2F0LCBPcmlnaW4oKSwgYWRkcmVzcyk7Ci0gICAgVmFsdWUqIHJl
c3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQ2VpbCwgT3JpZ2luKCksIGxvYWRG
bG9hdCk7Ci0gICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKLQotICAgIENIRUNL
KGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgJmEpLCBiaXR3aXNlX2Nh
c3Q8aW50MzJfdD4oY2VpbGYoYSkpKSk7Ci19Ci0KLXZvaWQgdGVzdENlaWxDZWlsQXJnKGZsb2F0
IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAg
IFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNh
c3QsIE9yaWdpbigpLCBhcmd1bWVudDMyKTsKLSAgICBWYWx1ZSogZmlyc3RDZWlsID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBDZWlsLCBPcmlnaW4oKSwgYXJndW1lbnQpOwotICAgIFZh
bHVlKiBzZWNvbmRDZWlsID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBDZWlsLCBPcmln
aW4oKSwgZmlyc3RDZWlsKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgc2Vjb25kQ2VpbCk7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChj
b21waWxlQW5kUnVuPGZsb2F0Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBjZWls
ZihhKSkpOwotfQotCi12b2lkIHRlc3RGbG9vckNlaWxBcmcoZmxvYXQgYSkKLXsKLSAgICBQcm9j
ZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAg
IFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywg
T3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFy
Z3VtZW50MzIpOwotICAgIFZhbHVlKiBmaXJzdENlaWwgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIENlaWwsIE9yaWdpbigpLCBhcmd1bWVudCk7Ci0gICAgVmFsdWUqIHdyYXBwaW5nRmxv
b3IgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb29yLCBPcmlnaW4oKSwgZmlyc3RD
ZWlsKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmln
aW4oKSwgd3JhcHBpbmdGbG9vcik7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5k
UnVuPGZsb2F0Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBjZWlsZihhKSkpOwot
fQotCi12b2lkIHRlc3RDZWlsQXJnV2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uKGZsb2F0IGEp
Ci17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZh
bHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2Fz
dCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOwotICAgIFZhbHVlKiBhc0RvdWJsZSA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUp
OwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIENlaWws
IE9yaWdpbigpLCBhc0RvdWJsZSk7Ci0gICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgcmVzdWx0KTsKLSAg
ICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VD
YXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1bHQpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7Ci0KLSAgICBDSEVDSyhpc0lk
ZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90
PihhKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihjZWlsZihhKSkpKTsKLX0KLQotdm9pZCB0ZXN0
Q2VpbEFyZ1dpdGhFZmZlY3RmdWxEb3VibGVDb252ZXJzaW9uKGZsb2F0IGEpCi17Ci0gICAgUHJv
Y2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAg
ICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMs
IE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZhbHVlKiBmbG9hdFZh
bHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCks
IGFyZ3VtZW50MzIpOwotICAgIFZhbHVlKiBhc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUpOwotICAgIFZhbHVl
KiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIENlaWwsIE9yaWdpbigpLCBh
c0RvdWJsZSk7Ci0gICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgcmVzdWx0KTsKLSAgICBWYWx1ZSogcmVz
dWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4o
KSwgZmxvYXRSZXN1bHQpOwotICAgIFZhbHVlKiBkb3VibGVBZGRyZXNzID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjEpOwotICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmUsIE9yaWdp
bigpLCByZXN1bHQsIGRvdWJsZUFkZHJlc3MpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7Ci0KLSAgICBkb3VibGUgZWZm
ZWN0ID0gMDsKLSAgICBpbnQzMl90IHJlc3VsdFZhbHVlID0gY29tcGlsZUFuZFJ1bjxpbnQzMl90
Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSksICZlZmZlY3QpOwotICAgIENIRUNLKGlz
SWRlbnRpY2FsKHJlc3VsdFZhbHVlLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oY2VpbGYoYSkpKSk7
Ci0gICAgQ0hFQ0soaXNJZGVudGljYWwoZWZmZWN0LCBzdGF0aWNfY2FzdDxkb3VibGU+KGNlaWxm
KGEpKSkpOwotfQotCi12b2lkIHRlc3RGbG9vckFyZyhkb3VibGUgYSkKLXsKLSAgICBQcm9jZWR1
cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEZs
b29yLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCkpKTsKLQotICAg
IENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBhKSwgZmxvb3Io
YSkpKTsKLX0KLQotdm9pZCB0ZXN0Rmxvb3JJbW0oZG91YmxlIGEpCi17Ci0gICAgUHJvY2VkdXJl
IHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1
ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIGEpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBGbG9vciwgT3JpZ2luKCksIGFyZ3VtZW50KSk7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChj
b21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYyksIGZsb29yKGEpKSk7Ci19Ci0KLXZvaWQgdGVzdEZs
b29yTWVtKGRvdWJsZSBhKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7Ci0gICAgTWVtb3J5VmFsdWUqIGxvYWREb3VibGUgPSByb290LT5hcHBlbmROZXc8TWVt
b3J5VmFsdWU+KHByb2MsIExvYWQsIERvdWJsZSwgT3JpZ2luKCksIGFkZHJlc3MpOwotICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9vciwgT3JpZ2luKCks
IGxvYWREb3VibGUpKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91
YmxlPihwcm9jLCAmYSksIGZsb29yKGEpKSk7Ci19Ci0KLXZvaWQgdGVzdEZsb29yRmxvb3JBcmco
ZG91YmxlIGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogZmlyc3RGbG9vciA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgRmxvb3IsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCkp
OwotICAgIFZhbHVlKiBzZWNvbmRGbG9vciA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
Rmxvb3IsIE9yaWdpbigpLCBmaXJzdEZsb29yKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgc2Vjb25kRmxvb3IpOwotCi0gICAgQ0hFQ0so
aXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEpLCBmbG9vcihhKSkpOwot
fQotCi12b2lkIHRlc3RDZWlsRmxvb3JBcmcoZG91YmxlIGEpCi17Ci0gICAgUHJvY2VkdXJlIHBy
b2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSog
Zmlyc3RGbG9vciA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvb3IsIE9yaWdpbigp
LAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCkpOwotICAgIFZhbHVlKiB3cmFwcGluZ0NlaWwgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIENlaWwsIE9yaWdpbigpLCBmaXJzdEZsb29yKTsK
LSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwg
d3JhcHBpbmdDZWlsKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91
YmxlPihwcm9jLCBhKSwgZmxvb3IoYSkpKTsKLX0KLQotdm9pZCB0ZXN0Rmxvb3JJVG9ENjQoaW50
NjRfdCBhKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwot
ICAgIFZhbHVlKiBhcmd1bWVudEFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBJVG9ELCBPcmlnaW4oKSwgYXJndW1lbnQpOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb29yLCBPcmlnaW4oKSwgYXJndW1lbnRBc0RvdWJsZSkp
OwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEp
LCBmbG9vcihzdGF0aWNfY2FzdDxkb3VibGU+KGEpKSkpOwotfQotCi12b2lkIHRlc3RGbG9vcklU
b0QzMihpbnQ2NF90IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApKTsKLSAgICBWYWx1ZSogYXJndW1lbnRBc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgSVRvRCwgT3JpZ2luKCksIGFyZ3VtZW50KTsKLQotICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9vciwgT3JpZ2luKCksIGFyZ3VtZW50QXNE
b3VibGUpKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihw
cm9jLCBhKSwgZmxvb3Ioc3RhdGljX2Nhc3Q8ZG91YmxlPihhKSkpKTsKLX0KLQotdm9pZCB0ZXN0
Rmxvb3JBcmcoZmxvYXQgYSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOwotICAgIFZhbHVlKiByZXN1
bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb29yLCBPcmlnaW4oKSwgYXJndW1l
bnQpOwotICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
Qml0d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7Ci0KLSAgICBDSEVDSyhp
c0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQz
Ml90PihhKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihmbG9vcmYoYSkpKSk7Ci19Ci0KLXZvaWQg
dGVzdEZsb29ySW1tKGZsb2F0IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnQgPSByb290
LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7Ci0gICAgVmFs
dWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvb3IsIE9yaWdpbigp
LCBhcmd1bWVudCk7Ci0gICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKLQotICAg
IENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9j
YXN0PGludDMyX3Q+KGEpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGZsb29yZihhKSkpKTsKLX0K
LQotdm9pZCB0ZXN0Rmxvb3JNZW0oZmxvYXQgYSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhZGRyZXNz
ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOwotICAgIE1lbW9yeVZhbHVlKiBsb2FkRmxvYXQgPSByb290LT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEZsb2F0LCBPcmlnaW4oKSwgYWRkcmVz
cyk7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxv
b3IsIE9yaWdpbigpLCBsb2FkRmxvYXQpOwotICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOwotICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1
bHQzMik7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHBy
b2MsICZhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGZsb29yZihhKSkpKTsKLX0KLQotdm9pZCB0
ZXN0Rmxvb3JGbG9vckFyZyhmbG9hdCBhKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50MzIg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7Ci0gICAgVmFs
dWUqIGZpcnN0Rmxvb3IgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb29yLCBPcmln
aW4oKSwgYXJndW1lbnQpOwotICAgIFZhbHVlKiBzZWNvbmRGbG9vciA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgRmxvb3IsIE9yaWdpbigpLCBmaXJzdEZsb29yKTsKLSAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgc2Vjb25kRmxvb3Ip
OwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxmbG9hdD4ocHJvYywgYml0
d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgZmxvb3JmKGEpKSk7Ci19Ci0KLXZvaWQgdGVzdENlaWxG
bG9vckFyZyhmbG9hdCBhKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50MzIgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApKTsKLSAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7Ci0gICAgVmFsdWUqIGZpcnN0
Rmxvb3IgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb29yLCBPcmlnaW4oKSwgYXJn
dW1lbnQpOwotICAgIFZhbHVlKiB3cmFwcGluZ0NlaWwgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIENlaWwsIE9yaWdpbigpLCBmaXJzdEZsb29yKTsKLSAgICByb290LT5hcHBlbmROZXdD
b250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgd3JhcHBpbmdDZWlsKTsKLQotICAg
IENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZmxvYXQ+KHByb2MsIGJpdHdpc2VfY2Fz
dDxpbnQzMl90PihhKSksIGZsb29yZihhKSkpOwotfQotCi12b2lkIHRlc3RGbG9vckFyZ1dpdGhV
c2VsZXNzRG91YmxlQ29udmVyc2lvbihmbG9hdCBhKQotewotICAgIFByb2NlZHVyZSBwcm9jOwot
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3Vt
ZW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZSA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDMyKTsK
LSAgICBWYWx1ZSogYXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0
VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlKTsKLSAgICBWYWx1ZSogcmVzdWx0ID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9vciwgT3JpZ2luKCksIGFzRG91YmxlKTsKLSAg
ICBWYWx1ZSogZmxvYXRSZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJs
ZVRvRmxvYXQsIE9yaWdpbigpLCByZXN1bHQpOwotICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBmbG9hdFJlc3Vs
dCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2lu
KCksIHJlc3VsdDMyKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50
MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgYml0d2lzZV9jYXN0PGludDMy
X3Q+KGZsb29yZihhKSkpKTsKLX0KLQotdm9pZCB0ZXN0Rmxvb3JBcmdXaXRoRWZmZWN0ZnVsRG91
YmxlQ29udmVyc2lvbihmbG9hdCBhKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50MzIgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDMyKTsKLSAgICBWYWx1
ZSogYXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUs
IE9yaWdpbigpLCBmbG9hdFZhbHVlKTsKLSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBGbG9vciwgT3JpZ2luKCksIGFzRG91YmxlKTsKLSAgICBWYWx1ZSog
ZmxvYXRSZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQs
IE9yaWdpbigpLCByZXN1bHQpOwotICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBmbG9hdFJlc3VsdCk7Ci0gICAg
VmFsdWUqIGRvdWJsZUFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgcm9vdC0+YXBwZW5k
TmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHJlc3VsdCwgZG91YmxlQWRk
cmVzcyk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIHJlc3VsdDMyKTsKLQotICAgIGRvdWJsZSBlZmZlY3QgPSAwOwotICAgIGludDMyX3Qg
cmVzdWx0VmFsdWUgPSBjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxp
bnQzMl90PihhKSwgJmVmZmVjdCk7Ci0gICAgQ0hFQ0soaXNJZGVudGljYWwocmVzdWx0VmFsdWUs
IGJpdHdpc2VfY2FzdDxpbnQzMl90PihmbG9vcmYoYSkpKSk7Ci0gICAgQ0hFQ0soaXNJZGVudGlj
YWwoZWZmZWN0LCBzdGF0aWNfY2FzdDxkb3VibGU+KGZsb29yZihhKSkpKTsKLX0KLQotZG91Ymxl
IGNvcnJlY3RTcXJ0KGRvdWJsZSB2YWx1ZSkKLXsKLSNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0
KQotICAgIGRvdWJsZSByZXN1bHQ7Ci0gICAgYXNtICgic3FydHNkICUxLCAlMCIgOiAiPXgiKHJl
c3VsdCkgOiAieCIodmFsdWUpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotI2Vsc2UgICAgCi0gICAg
cmV0dXJuIHNxcnQodmFsdWUpOwotI2VuZGlmCi19Ci0KLXZvaWQgdGVzdFNxcnRBcmcoZG91Ymxl
IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0g
ICAgICAgICAgICBwcm9jLCBTcXJ0LCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3Vt
ZW50RlBSMCkpKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91Ymxl
Pihwcm9jLCBhKSwgY29ycmVjdFNxcnQoYSkpKTsKLX0KLQotdm9pZCB0ZXN0U3FydEltbShkb3Vi
bGUgYSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxDb25z
dERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNxcnQsIE9yaWdpbigpLCBhcmd1bWVudCkpOwotCi0g
ICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MpLCBjb3JyZWN0
U3FydChhKSkpOwotfQotCi12b2lkIHRlc3RTcXJ0TWVtKGRvdWJsZSBhKQotewotICAgIFByb2Nl
ZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAg
VmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgTWVtb3J5VmFsdWUqIGxvYWRE
b3VibGUgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIERvdWJsZSwg
T3JpZ2luKCksIGFkZHJlc3MpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAg
ICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBTcXJ0LCBPcmlnaW4oKSwgbG9hZERvdWJsZSkpOwotCi0gICAgQ0hFQ0soaXNJ
ZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsICZhKSwgY29ycmVjdFNxcnQoYSkp
KTsKLX0KLQotdm9pZCB0ZXN0U3FydEFyZyhmbG9hdCBhKQotewotICAgIFByb2NlZHVyZSBwcm9j
OwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFy
Z3VtZW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwK
LSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7
Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3FydCwg
T3JpZ2luKCksIGFyZ3VtZW50KTsKLSAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgcmVzdWx0KTsKLSAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIp
OwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBi
aXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGNvcnJlY3RTcXJ0KGEpKSkpKTsKLX0KLQotdm9pZCB0ZXN0U3FydEltbShmbG9h
dCBhKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0
RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNxcnQsIE9yaWdpbigpLCBhcmd1bWVudCk7Ci0gICAg
VmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2Fz
dCwgT3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHBy
b2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2Fs
KGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwg
Yml0d2lzZV9jYXN0PGludDMyX3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihjb3JyZWN0U3FydChhKSkp
KSk7Ci19Ci0KLXZvaWQgdGVzdFNxcnRNZW0oZmxvYXQgYSkKLXsKLSAgICBQcm9jZWR1cmUgcHJv
YzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBh
ZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIE1lbW9yeVZhbHVlKiBsb2FkRmxvYXQgPSBy
b290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEZsb2F0LCBPcmlnaW4oKSwg
YWRkcmVzcyk7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgU3FydCwgT3JpZ2luKCksIGxvYWRGbG9hdCk7Ci0gICAgVmFsdWUqIHJlc3VsdDMyID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7
Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCks
IHJlc3VsdDMyKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJf
dD4ocHJvYywgJmEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNv
cnJlY3RTcXJ0KGEpKSkpKTsKLX0KLQotdm9pZCB0ZXN0U3FydEFyZ1dpdGhVc2VsZXNzRG91Ymxl
Q29udmVyc2lvbihmbG9hdCBhKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50MzIgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDMyKTsKLSAgICBWYWx1ZSog
YXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9y
aWdpbigpLCBmbG9hdFZhbHVlKTsKLSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBTcXJ0LCBPcmlnaW4oKSwgYXNEb3VibGUpOwotICAgIFZhbHVlKiBmbG9h
dFJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3Jp
Z2luKCksIHJlc3VsdCk7Ci0gICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGZsb2F0UmVzdWx0KTsKLSAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIp
OwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBi
aXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGNvcnJlY3RTcXJ0KGEpKSkpKTsKLX0KLQotdm9pZCB0ZXN0U3FydEFyZ1dpdGhF
ZmZlY3RmdWxEb3VibGVDb252ZXJzaW9uKGZsb2F0IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7
Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJn
dW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAot
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIp
OwotICAgIFZhbHVlKiBhc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxv
YXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUpOwotICAgIFZhbHVlKiByZXN1bHQgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNxcnQsIE9yaWdpbigpLCBhc0RvdWJsZSk7Ci0g
ICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3Vi
bGVUb0Zsb2F0LCBPcmlnaW4oKSwgcmVzdWx0KTsKLSAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1
bHQpOwotICAgIFZhbHVlKiBkb3VibGVBZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgIHJv
b3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmUsIE9yaWdpbigpLCByZXN1bHQs
IGRvdWJsZUFkZHJlc3MpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7Ci0KLSAgICBkb3VibGUgZWZmZWN0ID0gMDsKLSAg
ICBpbnQzMl90IHJlc3VsdFZhbHVlID0gY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3
aXNlX2Nhc3Q8aW50MzJfdD4oYSksICZlZmZlY3QpOwotICAgIENIRUNLKGlzSWRlbnRpY2FsKHJl
c3VsdFZhbHVlLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvcnJl
Y3RTcXJ0KGEpKSkpKTsKLSAgICBkb3VibGUgZXhwZWN0ZWQgPSBzdGF0aWNfY2FzdDxkb3VibGU+
KGNvcnJlY3RTcXJ0KGEpKTsKLSAgICBDSEVDSyhpc0lkZW50aWNhbChlZmZlY3QsIGV4cGVjdGVk
KSk7Ci19Ci0KLXZvaWQgdGVzdENvbXBhcmVUd29GbG9hdFRvRG91YmxlKGZsb2F0IGEsIGZsb2F0
IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLQotICAgIFZhbHVlKiBhcmcxQXMzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAg
IFZhbHVlKiBhcmcxRmxvYXQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VD
YXN0LCBPcmlnaW4oKSwgYXJnMUFzMzIpOwotICAgIFZhbHVlKiBhcmcxQXNEb3VibGUgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBhcmcxRmxv
YXQpOwotCi0gICAgVmFsdWUqIGFyZzJBczMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Ci0gICAgVmFsdWUq
IGFyZzJGbG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9y
aWdpbigpLCBhcmcyQXMzMik7Ci0gICAgVmFsdWUqIGFyZzJBc0RvdWJsZSA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGFyZzJGbG9hdCk7Ci0g
ICAgVmFsdWUqIGVxdWFsID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBFcXVhbCwgT3Jp
Z2luKCksIGFyZzFBc0RvdWJsZSwgYXJnMkFzRG91YmxlKTsKLQotICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBlcXVhbCk7Ci0KLSAgICBDSEVD
Syhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwg
Yml0d2lzZV9jYXN0PGludDMyX3Q+KGIpKSA9PSAoYSA9PSBiKSk7Ci19Ci0KLXZvaWQgdGVzdENv
bXBhcmVPbmVGbG9hdFRvRG91YmxlKGZsb2F0IGEsIGRvdWJsZSBiKQotewotICAgIFByb2NlZHVy
ZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBW
YWx1ZSogYXJnMUFzMzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmln
aW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogYXJnMUZsb2F0ID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZzFB
czMyKTsKLSAgICBWYWx1ZSogYXJnMUFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgYXJnMUZsb2F0KTsKLQotICAgIFZhbHVlKiBh
cmcyQXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Ci0gICAgVmFsdWUqIGVxdWFsID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBFcXVhbCwgT3JpZ2luKCksIGFyZzFBc0RvdWJsZSwgYXJn
MkFzRG91YmxlKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCBlcXVhbCk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+
KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYikgPT0gKGEgPT0gYikpOwotfQotCi12
b2lkIHRlc3RDb21wYXJlRmxvYXRUb0RvdWJsZVRocm91Z2hQaGkoZmxvYXQgYSwgZmxvYXQgYikK
LXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOwotICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOwotICAg
IEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sq
IHRhaWwgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBWYWx1ZSogY29uZGl0aW9uID0gcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApOwotCi0gICAgVmFsdWUqIGFyZzFBczMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Ci0gICAg
VmFsdWUqIGFyZzFGbG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNh
c3QsIE9yaWdpbigpLCBhcmcxQXMzMik7Ci0gICAgVmFsdWUqIGFyZzFBc0RvdWJsZSA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGFyZzFGbG9h
dCk7Ci0KLSAgICBWYWx1ZSogYXJnMkFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwotICAgIFZh
bHVlKiBhcmcyQXNGbG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9G
bG9hdCwgT3JpZ2luKCksIGFyZzJBc0RvdWJsZSk7Ci0gICAgVmFsdWUqIGFyZzJBc0ZSb3VuZGVk
RG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmln
aW4oKSwgYXJnMkFzRmxvYXQpOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAot
ICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAotICAgICAgICBjb25kaXRpb24sCi0gICAg
ICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkp
OwotCi0gICAgVXBzaWxvblZhbHVlKiB0aGVuVmFsdWUgPSB0aGVuQ2FzZS0+YXBwZW5kTmV3PFVw
c2lsb25WYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFyZzFBc0RvdWJsZSk7Ci0gICAgdGhlbkNhc2Ut
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4oKSwgRnJlcXVlbnRlZEJs
b2NrKHRhaWwpKTsKLQotICAgIFZhbHVlKiBlbHNlQ29uc3QgPSBlbHNlQ2FzZS0+YXBwZW5kTmV3
PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwLik7Ci0gICAgVXBzaWxvblZhbHVl
KiBlbHNlVmFsdWUgPSBlbHNlQ2FzZS0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIGVsc2VDb25zdCk7Ci0gICAgZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShw
cm9jLCBKdW1wLCBPcmlnaW4oKSwgRnJlcXVlbnRlZEJsb2NrKHRhaWwpKTsKLQotICAgIFZhbHVl
KiBkb3VibGVJbnB1dCA9IHRhaWwtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUGhpLCBEb3VibGUs
IE9yaWdpbigpKTsKLSAgICB0aGVuVmFsdWUtPnNldFBoaShkb3VibGVJbnB1dCk7Ci0gICAgZWxz
ZVZhbHVlLT5zZXRQaGkoZG91YmxlSW5wdXQpOwotICAgIFZhbHVlKiBlcXVhbCA9IHRhaWwtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgRXF1YWwsIE9yaWdpbigpLCBkb3VibGVJbnB1dCwgYXJnMkFz
RlJvdW5kZWREb3VibGUpOwotICAgIHRhaWwtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCBlcXVhbCk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhw
cm9jKTsKLSAgICBpbnQzMl90IGludGVnZXJBID0gYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpOwot
ICAgIGRvdWJsZSBkb3VibGVCID0gYjsKLSAgICBDSEVDSyhpbnZva2U8aW50NjRfdD4oKmNvZGUs
IDEsIGludGVnZXJBLCBkb3VibGVCKSA9PSAoYSA9PSBiKSk7Ci0gICAgQ0hFQ0soaW52b2tlPGlu
dDY0X3Q+KCpjb2RlLCAwLCBpbnRlZ2VyQSwgZG91YmxlQikgPT0gKGIgPT0gMCkpOwotfQotCi12
b2lkIHRlc3REb3VibGVUb0Zsb2F0VGhyb3VnaFBoaShmbG9hdCB2YWx1ZSkKLXsKLSAgICAvLyBT
aW1wbGUgY2FzZSBvZjoKLSAgICAvLyAgICAgaWYgKGEpIHsKLSAgICAvLyAgICAgICAgIHggPSBE
b3VibGVBZGQoYSwgYikKLSAgICAvLyAgICAgZWxzZQotICAgIC8vICAgICAgICAgeCA9IERvdWJs
ZUFkZChhLCBjKQotICAgIC8vICAgICBEb3VibGVUb0Zsb2F0KHgpCi0gICAgLy8KLSAgICAvLyBC
b3RoIEFkZHMgY2FuIGJlIGNvbnZlcnRlZCB0byBmbG9hdCBhZGQuCi0gICAgUHJvY2VkdXJlIHBy
b2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Js
b2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBlbHNlQ2Fz
ZSA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiB0YWlsID0gcHJvYy5hZGRCbG9j
aygpOwotCi0gICAgVmFsdWUqIGNvbmRpdGlvbiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBWYWx1
ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdp
bigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOwotICAgIFZhbHVlKiBmbG9hdFZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3Vt
ZW50MzIpOwotICAgIFZhbHVlKiBhcmdBc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUpOwotCi0gICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAot
ICAgICAgICBjb25kaXRpb24sCi0gICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZy
ZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOwotCi0gICAgVmFsdWUqIHBvc3RpdGl2ZUNvbnN0ID0g
dGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDIu
NWYpOwotICAgIFZhbHVlKiB0aGVuQWRkID0gdGhlbkNhc2UtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQWRkLCBPcmlnaW4oKSwgYXJnQXNEb3VibGUsIHBvc3RpdGl2ZUNvbnN0KTsKLSAgICBVcHNp
bG9uVmFsdWUqIHRoZW5WYWx1ZSA9IHRoZW5DYXNlLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgdGhlbkFkZCk7Ci0gICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4oKSwgRnJlcXVlbnRlZEJsb2NrKHRhaWwpKTsKLQotICAg
IFZhbHVlKiBlbHNlQ29uc3QgPSBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBNX1BJKTsKLSAgICBVcHNpbG9uVmFsdWUqIGVsc2VWYWx1ZSA9IGVs
c2VDYXNlLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4oKSwgZWxzZUNvbnN0
KTsKLSAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIEp1bXAsIE9yaWdp
bigpLCBGcmVxdWVudGVkQmxvY2sodGFpbCkpOwotCi0gICAgVmFsdWUqIGRvdWJsZUlucHV0ID0g
dGFpbC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBQaGksIERvdWJsZSwgT3JpZ2luKCkpOwotICAg
IHRoZW5WYWx1ZS0+c2V0UGhpKGRvdWJsZUlucHV0KTsKLSAgICBlbHNlVmFsdWUtPnNldFBoaShk
b3VibGVJbnB1dCk7Ci0gICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gdGFpbC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgZG91YmxlSW5wdXQpOwotICAgIHRh
aWwtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBmbG9hdFJl
c3VsdCk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBDSEVDSyhp
c0lkZW50aWNhbChpbnZva2U8ZmxvYXQ+KCpjb2RlLCAxLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4o
dmFsdWUpKSwgdmFsdWUgKyA0Mi41ZikpOwotICAgIENIRUNLKGlzSWRlbnRpY2FsKGludm9rZTxm
bG9hdD4oKmNvZGUsIDAsIGJpdHdpc2VfY2FzdDxpbnQzMl90Pih2YWx1ZSkpLCBzdGF0aWNfY2Fz
dDxmbG9hdD4oTV9QSSkpKTsKLX0KLQotdm9pZCB0ZXN0UmVkdWNlRmxvYXRUb0RvdWJsZVZhbGlk
YXRlcygpCi17Ci0gICAgLy8gU2ltcGxlIGNhc2Ugb2Y6Ci0gICAgLy8gICAgIGYgPSBEb3VibGVU
b0Zsb2F0KEJpdGNhc3QoYXJnR1BSMCkpCi0gICAgLy8gICAgIGlmIChhKSB7Ci0gICAgLy8gICAg
ICAgICB4ID0gRmxvYXRDb25zdCgpCi0gICAgLy8gICAgIGVsc2UKLSAgICAvLyAgICAgICAgIHgg
PSBGbG9hdENvbnN0KCkKLSAgICAvLyAgICAgcCA9IFBoaSh4KQotICAgIC8vICAgICBhID0gTXVs
KHAsIHApCi0gICAgLy8gICAgIGIgPSBBZGQoYSwgZikKLSAgICAvLyAgICAgYyA9IEFkZChwLCBi
KQotICAgIC8vICAgICBSZXR1cm4oYykKLSAgICAvLwotICAgIC8vIFRoaXMgc2hvdWxkIG5vdCBj
cmFzaCBpbiB0aGUgdmFsaWRhdG9yIGFmdGVyIFJlZHVjZUZsb2F0VG9Eb3VibGUuCi0gICAgUHJv
Y2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAg
ICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2Nr
KiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiB0YWlsID0gcHJv
Yy5hZGRCbG9jaygpOwotCi0gICAgVmFsdWUqIGNvbmRpdGlvbiA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
LSAgICBWYWx1ZSogdGhpbmd5ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNl
Q2FzdCwgT3JpZ2luKCksIGNvbmRpdGlvbik7Ci0gICAgdGhpbmd5ID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgdGhpbmd5KTsgLy8gTWFrZSB0
aGUgcGhhc2UgdGhpbmsgaXQgaGFzIHdvcmsgdG8gZG8uCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAotICAgICAgICBjb25k
aXRpb24sCi0gICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9j
ayhlbHNlQ2FzZSkpOwotCi0gICAgVXBzaWxvblZhbHVlKiB0aGVuVmFsdWUgPSB0aGVuQ2FzZS0+
YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4ocHJvYywgT3JpZ2luKCksCi0gICAgICAgIHRoZW5DYXNl
LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMTEuNSkpOwotICAg
IHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgSnVtcCwgT3JpZ2luKCksIEZy
ZXF1ZW50ZWRCbG9jayh0YWlsKSk7Ci0KLSAgICBVcHNpbG9uVmFsdWUqIGVsc2VWYWx1ZSA9IGVs
c2VDYXNlLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4oKSwgCi0gICAgICAg
IGVsc2VDYXNlLT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMTAu
NSkpOwotICAgIGVsc2VDYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgSnVtcCwgT3Jp
Z2luKCksIEZyZXF1ZW50ZWRCbG9jayh0YWlsKSk7Ci0KLSAgICBWYWx1ZSogcGhpID0gIHRhaWwt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUGhpLCBGbG9hdCwgT3JpZ2luKCkpOwotICAgIHRoZW5W
YWx1ZS0+c2V0UGhpKHBoaSk7Ci0gICAgZWxzZVZhbHVlLT5zZXRQaGkocGhpKTsKLSAgICBWYWx1
ZSogcmVzdWx0ID0gdGFpbC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCAK
LSAgICAgICAgICAgIHBoaSwgcGhpKTsKLSAgICByZXN1bHQgPSB0YWlsLT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIAotICAgICAgICAgICAgcmVzdWx0LAotICAgICAgICAg
ICAgdGhpbmd5KTsKLSAgICByZXN1bHQgPSB0YWlsLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFk
ZCwgT3JpZ2luKCksIAotICAgICAgICAgICAgcGhpLAotICAgICAgICAgICAgcmVzdWx0KTsKLSAg
ICB0YWlsLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVz
dWx0KTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotICAgIENIRUNLKGlz
SWRlbnRpY2FsKGludm9rZTxmbG9hdD4oKmNvZGUsIDEpLCAxMS41ZiAqIDExLjVmICsgc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KGJpdHdpc2VfY2FzdDxkb3VibGU+KHN0YXRpY19jYXN0PHVpbnQ2NF90Pigx
KSkpICsgMTEuNWYpKTsKLSAgICBDSEVDSyhpc0lkZW50aWNhbChpbnZva2U8ZmxvYXQ+KCpjb2Rl
LCAwKSwgMTAuNWYgKiAxMC41ZiArIHN0YXRpY19jYXN0PGZsb2F0PihiaXR3aXNlX2Nhc3Q8ZG91
YmxlPihzdGF0aWNfY2FzdDx1aW50NjRfdD4oMCkpKSArIDEwLjVmKSk7Ci19Ci0KLXZvaWQgdGVz
dERvdWJsZVByb2R1Y2VyUGhpVG9GbG9hdENvbnZlcnNpb24oZmxvYXQgdmFsdWUpCi17Ci0gICAg
UHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
LSAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Js
b2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiB0YWlsID0g
cHJvYy5hZGRCbG9jaygpOwotCi0gICAgVmFsdWUqIGNvbmRpdGlvbiA9IHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKLSAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
VHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOwotICAgIFZhbHVlKiBm
bG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3Jp
Z2luKCksIGFyZ3VtZW50MzIpOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAot
ICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAotICAgICAgICBjb25kaXRpb24sCi0gICAg
ICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkp
OwotCi0gICAgVmFsdWUqIGFzRG91YmxlID0gdGhlbkNhc2UtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUpOwotICAgIFVwc2lsb25WYWx1
ZSogdGhlblZhbHVlID0gdGhlbkNhc2UtPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBhc0RvdWJsZSk7Ci0gICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShw
cm9jLCBKdW1wLCBPcmlnaW4oKSwgRnJlcXVlbnRlZEJsb2NrKHRhaWwpKTsKLQotICAgIFZhbHVl
KiBjb25zdERvdWJsZSA9IGVsc2VDYXNlLT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIDQyLjUpOwotICAgIFVwc2lsb25WYWx1ZSogZWxzZVZhbHVlID0gZWxzZUNh
c2UtPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KHByb2MsIE9yaWdpbigpLCBjb25zdERvdWJsZSk7
Ci0gICAgZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4o
KSwgRnJlcXVlbnRlZEJsb2NrKHRhaWwpKTsKLQotICAgIFZhbHVlKiBkb3VibGVJbnB1dCA9IHRh
aWwtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUGhpLCBEb3VibGUsIE9yaWdpbigpKTsKLSAgICB0
aGVuVmFsdWUtPnNldFBoaShkb3VibGVJbnB1dCk7Ci0gICAgZWxzZVZhbHVlLT5zZXRQaGkoZG91
YmxlSW5wdXQpOwotCi0gICAgVmFsdWUqIGFyZ0FzRG91YmxlQWdhaW4gPSB0YWlsLT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlKTsKLSAg
ICBWYWx1ZSogZmluYWxBZGQgPSB0YWlsLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3Jp
Z2luKCksIGRvdWJsZUlucHV0LCBhcmdBc0RvdWJsZUFnYWluKTsKLSAgICBWYWx1ZSogZmxvYXRS
ZXN1bHQgPSB0YWlsLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdp
bigpLCBmaW5hbEFkZCk7Ci0gICAgdGFpbC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJl
dHVybiwgT3JpZ2luKCksIGZsb2F0UmVzdWx0KTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQ
cm9jKHByb2MpOwotICAgIENIRUNLKGlzSWRlbnRpY2FsKGludm9rZTxmbG9hdD4oKmNvZGUsIDEs
IGJpdHdpc2VfY2FzdDxpbnQzMl90Pih2YWx1ZSkpLCB2YWx1ZSArIHZhbHVlKSk7Ci0gICAgQ0hF
Q0soaXNJZGVudGljYWwoaW52b2tlPGZsb2F0PigqY29kZSwgMCwgYml0d2lzZV9jYXN0PGludDMy
X3Q+KHZhbHVlKSksIDQyLjVmICsgdmFsdWUpKTsKLX0KLQotdm9pZCB0ZXN0RG91YmxlUHJvZHVj
ZXJQaGlUb0Zsb2F0Q29udmVyc2lvbldpdGhEb3VibGVDb25zdW1lcihmbG9hdCB2YWx1ZSkKLXsK
LSAgICAvLyBJbiB0aGlzIGNhc2UsIHRoZSBVcHNpbG9uLVBoaSBlZmZlY3RpdmVseSBjb250YWlu
cyBhIEZsb2F0IHZhbHVlLCBidXQgaXQgaXMgdXNlZAotICAgIC8vIGFzIGEgRmxvYXQgYW5kIGFz
IGEgRG91YmxlLgotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2Nr
KCk7Ci0gICAgQmFzaWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFz
aWNCbG9jayogdGFpbCA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIFZhbHVlKiBjb25kaXRpb24g
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50MzIgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEp
KTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
Qml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDMyKTsKLQotICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKLSAgICAgICAg
Y29uZGl0aW9uLAotICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVk
QmxvY2soZWxzZUNhc2UpKTsKLQotICAgIFZhbHVlKiBhc0RvdWJsZSA9IHRoZW5DYXNlLT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlKTsK
LSAgICBVcHNpbG9uVmFsdWUqIHRoZW5WYWx1ZSA9IHRoZW5DYXNlLT5hcHBlbmROZXc8VXBzaWxv
blZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYXNEb3VibGUpOwotICAgIHRoZW5DYXNlLT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUocHJvYywgSnVtcCwgT3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayh0YWls
KSk7Ci0KLSAgICBWYWx1ZSogY29uc3REb3VibGUgPSBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0
RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0Mi41KTsKLSAgICBVcHNpbG9uVmFsdWUqIGVs
c2VWYWx1ZSA9IGVsc2VDYXNlLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgY29uc3REb3VibGUpOwotICAgIGVsc2VDYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJv
YywgSnVtcCwgT3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayh0YWlsKSk7Ci0KLSAgICBWYWx1ZSog
ZG91YmxlSW5wdXQgPSB0YWlsLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFBoaSwgRG91YmxlLCBP
cmlnaW4oKSk7Ci0gICAgdGhlblZhbHVlLT5zZXRQaGkoZG91YmxlSW5wdXQpOwotICAgIGVsc2VW
YWx1ZS0+c2V0UGhpKGRvdWJsZUlucHV0KTsKLQotICAgIFZhbHVlKiBhcmdBc0RvdWJsZUFnYWlu
ID0gdGFpbC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwg
ZmxvYXRWYWx1ZSk7Ci0gICAgVmFsdWUqIGZsb2F0QWRkID0gdGFpbC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBBZGQsIE9yaWdpbigpLCBkb3VibGVJbnB1dCwgYXJnQXNEb3VibGVBZ2Fpbik7Ci0K
LSAgICAvLyBGUm91bmQuCi0gICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gdGFpbC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgZmxvYXRBZGQpOwotICAgIFZh
bHVlKiBkb3VibGVSZXN1bHQgPSB0YWlsLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9E
b3VibGUsIE9yaWdpbigpLCBmbG9hdFJlc3VsdCk7Ci0KLSAgICAvLyBUaGlzIG9uZSAqY2Fubm90
KiBiZSBlbGltaW5hdGVkCi0gICAgVmFsdWUqIGRvdWJsZUFkZCA9IHRhaWwtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgZG91YmxlSW5wdXQsIGRvdWJsZVJlc3VsdCk7Ci0K
LSAgICB0YWlsLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwg
ZG91YmxlQWRkKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotICAgIENI
RUNLKGlzSWRlbnRpY2FsKGludm9rZTxkb3VibGU+KCpjb2RlLCAxLCBiaXR3aXNlX2Nhc3Q8aW50
MzJfdD4odmFsdWUpKSwgKHZhbHVlICsgdmFsdWUpICsgc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1
ZSkpKTsKLSAgICBDSEVDSyhpc0lkZW50aWNhbChpbnZva2U8ZG91YmxlPigqY29kZSwgMCwgYml0
d2lzZV9jYXN0PGludDMyX3Q+KHZhbHVlKSksIHN0YXRpY19jYXN0PGRvdWJsZT4oKDQyLjVmICsg
dmFsdWUpICsgNDIuNWYpKSk7Ci19Ci0KLXZvaWQgdGVzdERvdWJsZVByb2R1Y2VyUGhpV2l0aE5v
bkZsb2F0Q29uc3QoZmxvYXQgdmFsdWUsIGRvdWJsZSBjb25zdFZhbHVlKQotewotICAgIFByb2Nl
ZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAg
QmFzaWNCbG9jayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayog
ZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogdGFpbCA9IHByb2Mu
YWRkQmxvY2soKTsKLQotICAgIFZhbHVlKiBjb25kaXRpb24gPSByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0g
ICAgVmFsdWUqIGFyZ3VtZW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5j
LCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKLSAgICBWYWx1ZSogZmxvYXRW
YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigp
LCBhcmd1bWVudDMyKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAg
ICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKLSAgICAgICAgY29uZGl0aW9uLAotICAgICAgICBG
cmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKLQot
ICAgIFZhbHVlKiBhc0RvdWJsZSA9IHRoZW5DYXNlLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZs
b2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlKTsKLSAgICBVcHNpbG9uVmFsdWUqIHRo
ZW5WYWx1ZSA9IHRoZW5DYXNlLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgYXNEb3VibGUpOwotICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywg
SnVtcCwgT3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayh0YWlsKSk7Ci0KLSAgICBWYWx1ZSogY29u
c3REb3VibGUgPSBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBjb25zdFZhbHVlKTsKLSAgICBVcHNpbG9uVmFsdWUqIGVsc2VWYWx1ZSA9IGVsc2VD
YXNlLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4oKSwgY29uc3REb3VibGUp
OwotICAgIGVsc2VDYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgSnVtcCwgT3JpZ2lu
KCksIEZyZXF1ZW50ZWRCbG9jayh0YWlsKSk7Ci0KLSAgICBWYWx1ZSogZG91YmxlSW5wdXQgPSB0
YWlsLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFBoaSwgRG91YmxlLCBPcmlnaW4oKSk7Ci0gICAg
dGhlblZhbHVlLT5zZXRQaGkoZG91YmxlSW5wdXQpOwotICAgIGVsc2VWYWx1ZS0+c2V0UGhpKGRv
dWJsZUlucHV0KTsKLQotICAgIFZhbHVlKiBhcmdBc0RvdWJsZUFnYWluID0gdGFpbC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZSk7Ci0g
ICAgVmFsdWUqIGZpbmFsQWRkID0gdGFpbC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9y
aWdpbigpLCBkb3VibGVJbnB1dCwgYXJnQXNEb3VibGVBZ2Fpbik7Ci0gICAgVmFsdWUqIGZsb2F0
UmVzdWx0ID0gdGFpbC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmln
aW4oKSwgZmluYWxBZGQpOwotICAgIHRhaWwtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCBmbG9hdFJlc3VsdCk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxl
UHJvYyhwcm9jKTsKLSAgICBDSEVDSyhpc0lkZW50aWNhbChpbnZva2U8ZmxvYXQ+KCpjb2RlLCAx
LCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4odmFsdWUpKSwgdmFsdWUgKyB2YWx1ZSkpOwotICAgIENI
RUNLKGlzSWRlbnRpY2FsKGludm9rZTxmbG9hdD4oKmNvZGUsIDAsIGJpdHdpc2VfY2FzdDxpbnQz
Ml90Pih2YWx1ZSkpLCBzdGF0aWNfY2FzdDxmbG9hdD4oY29uc3RWYWx1ZSArIHZhbHVlKSkpOwot
fQotCi12b2lkIHRlc3REb3VibGVBcmdUb0ludDY0Qml0d2lzZUNhc3QoZG91YmxlIHZhbHVlKQot
ewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwotCi0gICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0
d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudCkpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwo
Y29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCB2YWx1ZSksIGJpdHdpc2VfY2FzdDxpbnQ2NF90
Pih2YWx1ZSkpKTsKLX0KLQotdm9pZCB0ZXN0RG91YmxlSW1tVG9JbnQ2NEJpdHdpc2VDYXN0KGRv
dWJsZSB2YWx1ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5l
dzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdmFsdWUpOwotCi0gICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAot
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0d2lz
ZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudCkpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29t
cGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jKSwgYml0d2lzZV9jYXN0PGludDY0X3Q+KHZhbHVlKSkp
OwotfQotCi12b2lkIHRlc3RUd29CaXR3aXNlQ2FzdE9uRG91YmxlKGRvdWJsZSB2YWx1ZSkKLXsK
LSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOwotICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKLSAgICBWYWx1ZSog
Zmlyc3QgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4o
KSwgYXJndW1lbnQpOwotICAgIFZhbHVlKiBzZWNvbmQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmlyc3QpOwotICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBzZWNvbmQpOwotCi0gICAgQ0hF
Q0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIHZhbHVlKSwgdmFsdWUp
KTsKLX0KLQotdm9pZCB0ZXN0Qml0d2lzZUNhc3RPbkRvdWJsZUluTWVtb3J5KGRvdWJsZSB2YWx1
ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOwotICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIE1l
bW9yeVZhbHVlKiBsb2FkRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9j
LCBMb2FkLCBEb3VibGUsIE9yaWdpbigpLCBhZGRyZXNzKTsKLSAgICBWYWx1ZSogY2FzdCA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBsb2FkRG91
YmxlKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmln
aW4oKSwgY2FzdCk7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDY0
X3Q+KHByb2MsICZ2YWx1ZSksIGJpdHdpc2VfY2FzdDxpbnQ2NF90Pih2YWx1ZSkpKTsKLX0KLQot
dm9pZCB0ZXN0Qml0d2lzZUNhc3RPbkRvdWJsZUluTWVtb3J5SW5kZXhlZChkb3VibGUgdmFsdWUp
Ci17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKLSAgICBWYWx1ZSogYmFzZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBWYWx1ZSog
b2Zmc2V0ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgIFZhbHVlKiBzY2FsZWRPZmZzZXQgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNobCwgT3JpZ2luKCksCi0gICAgICAgIG9mZnNldCwK
LSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDMp
KTsKLSAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRk
LCBPcmlnaW4oKSwgYmFzZSwgc2NhbGVkT2Zmc2V0KTsKLSAgICBNZW1vcnlWYWx1ZSogbG9hZERv
dWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgRG91YmxlLCBP
cmlnaW4oKSwgYWRkcmVzcyk7Ci0gICAgVmFsdWUqIGNhc3QgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgbG9hZERvdWJsZSk7Ci0gICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGNhc3QpOwotCi0g
ICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCAmdmFsdWUs
IDApLCBiaXR3aXNlX2Nhc3Q8aW50NjRfdD4odmFsdWUpKSk7Ci19Ci0KLXZvaWQgdGVzdEludDY0
QkFyZ1RvRG91YmxlQml0d2lzZUNhc3QoaW50NjRfdCB2YWx1ZSkKLXsKLSAgICBQcm9jZWR1cmUg
cHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVl
KiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4o
KSwgYXJndW1lbnQpKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91
YmxlPihwcm9jLCB2YWx1ZSksIGJpdHdpc2VfY2FzdDxkb3VibGU+KHZhbHVlKSkpOwotfQotCi12
b2lkIHRlc3RJbnQ2NEJJbW1Ub0RvdWJsZUJpdHdpc2VDYXN0KGludDY0X3QgdmFsdWUpCi17Ci0g
ICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKLSAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgdmFsdWUpOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1
bWVudCkpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHBy
b2MpLCBiaXR3aXNlX2Nhc3Q8ZG91YmxlPih2YWx1ZSkpKTsKLX0KLQotdm9pZCB0ZXN0VHdvQml0
d2lzZUNhc3RPbkludDY0KGludDY0X3QgdmFsdWUpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0g
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1l
bnQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgVmFsdWUqIGZpcnN0ID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50KTsKLSAgICBWYWx1
ZSogc2Vjb25kID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3Jp
Z2luKCksIGZpcnN0KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwgc2Vjb25kKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVB
bmRSdW48aW50NjRfdD4ocHJvYywgdmFsdWUpLCB2YWx1ZSkpOwotfQotCi12b2lkIHRlc3RCaXR3
aXNlQ2FzdE9uSW50NjRJbk1lbW9yeShpbnQ2NF90IHZhbHVlKQotewotICAgIFByb2NlZHVyZSBw
cm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUq
IGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgTWVtb3J5VmFsdWUqIGxvYWREb3VibGUg
PSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4o
KSwgYWRkcmVzcyk7Ci0gICAgVmFsdWUqIGNhc3QgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgbG9hZERvdWJsZSk7Ci0gICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGNhc3QpOwotCi0gICAgQ0hF
Q0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsICZ2YWx1ZSksIGJpdHdp
c2VfY2FzdDxkb3VibGU+KHZhbHVlKSkpOwotfQotCi12b2lkIHRlc3RCaXR3aXNlQ2FzdE9uSW50
NjRJbk1lbW9yeUluZGV4ZWQoaW50NjRfdCB2YWx1ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsK
LSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBiYXNl
ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOwotICAgIFZhbHVlKiBvZmZzZXQgPSByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7
Ci0gICAgVmFsdWUqIHNjYWxlZE9mZnNldCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
U2hsLCBPcmlnaW4oKSwKLSAgICAgICAgb2Zmc2V0LAotICAgICAgICByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMykpOwotICAgIFZhbHVlKiBhZGRyZXNzID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBiYXNlLCBzY2FsZWRP
ZmZzZXQpOwotICAgIE1lbW9yeVZhbHVlKiBsb2FkRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PE1l
bW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksIGFkZHJlc3MpOwotICAgIFZh
bHVlKiBjYXN0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3Jp
Z2luKCksIGxvYWREb3VibGUpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLCBjYXN0KTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBp
bGVBbmRSdW48ZG91YmxlPihwcm9jLCAmdmFsdWUsIDApLCBiaXR3aXNlX2Nhc3Q8ZG91YmxlPih2
YWx1ZSkpKTsKLX0KLQotdm9pZCB0ZXN0RmxvYXRJbW1Ub0ludDMyQml0d2lzZUNhc3QoZmxvYXQg
dmFsdWUpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8Q29u
c3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdmFsdWUpOwotCi0gICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0d2lzZUNhc3Qs
IE9yaWdpbigpLCBhcmd1bWVudCkpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFu
ZFJ1bjxpbnQzMl90Pihwcm9jKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KHZhbHVlKSkpOwotfQot
Ci12b2lkIHRlc3RCaXR3aXNlQ2FzdE9uRmxvYXRJbk1lbW9yeShmbG9hdCB2YWx1ZSkKLXsKLSAg
ICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OwotICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIE1lbW9yeVZhbHVl
KiBsb2FkRmxvYXQgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEZs
b2F0LCBPcmlnaW4oKSwgYWRkcmVzcyk7Ci0gICAgVmFsdWUqIGNhc3QgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgbG9hZEZsb2F0KTsKLSAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2FzdCk7
Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsICZ2
YWx1ZSksIGJpdHdpc2VfY2FzdDxpbnQzMl90Pih2YWx1ZSkpKTsKLX0KLQotdm9pZCB0ZXN0SW50
MzJCQXJnVG9GbG9hdEJpdHdpc2VDYXN0KGludDMyX3QgdmFsdWUpCi17Ci0gICAgUHJvY2VkdXJl
IHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1
ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0KLSAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2lu
KCksIGFyZ3VtZW50KSk7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGZs
b2F0Pihwcm9jLCB2YWx1ZSksIGJpdHdpc2VfY2FzdDxmbG9hdD4odmFsdWUpKSk7Ci19Ci0KLXZv
aWQgdGVzdEludDMyQkltbVRvRmxvYXRCaXR3aXNlQ2FzdChpbnQzMl90IHZhbHVlKQotewotICAg
IFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
Ci0gICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIHZhbHVlKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
LSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1l
bnQpKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZmxvYXQ+KHByb2Mp
LCBiaXR3aXNlX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSkpOwotfQotCi12b2lkIHRlc3RUd29CaXR3aXNl
Q2FzdE9uSW50MzIoaW50MzJfdCB2YWx1ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudCA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKLSAgICBWYWx1ZSogZmlyc3QgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQpOwotICAgIFZhbHVlKiBz
ZWNvbmQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4o
KSwgZmlyc3QpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCBzZWNvbmQpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1
bjxpbnQzMl90Pihwcm9jLCB2YWx1ZSksIHZhbHVlKSk7Ci19Ci0KLXZvaWQgdGVzdEJpdHdpc2VD
YXN0T25JbnQzMkluTWVtb3J5KGludDMyX3QgdmFsdWUpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7
Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYWRk
cmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBNZW1vcnlWYWx1ZSogbG9hZEZsb2F0ID0gcm9v
dC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksIGFk
ZHJlc3MpOwotICAgIFZhbHVlKiBjYXN0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBC
aXR3aXNlQ2FzdCwgT3JpZ2luKCksIGxvYWRGbG9hdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGNhc3QpOwotCi0gICAgQ0hFQ0soaXNJ
ZGVudGljYWwoY29tcGlsZUFuZFJ1bjxmbG9hdD4ocHJvYywgJnZhbHVlKSwgYml0d2lzZV9jYXN0
PGZsb2F0Pih2YWx1ZSkpKTsKLX0KLQotdm9pZCB0ZXN0Q29udmVydERvdWJsZVRvRmxvYXRBcmco
ZG91YmxlIHZhbHVlKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQ
UjApOwotICAgIFZhbHVlKiBhc0Zsb2F0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBE
b3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgYXJndW1lbnQpOwotICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBhc0Zsb2F0KTsKLQotICAgIENIRUNL
KGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZmxvYXQ+KHByb2MsIHZhbHVlKSwgc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHZhbHVlKSkpOwotfQotCi12b2lkIHRlc3RDb252ZXJ0RG91YmxlVG9GbG9hdElt
bShkb3VibGUgdmFsdWUpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBl
bmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHZhbHVlKTsKLSAgICBWYWx1
ZSogYXNGbG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwg
T3JpZ2luKCksIGFyZ3VtZW50KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwgYXNGbG9hdCk7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChj
b21waWxlQW5kUnVuPGZsb2F0Pihwcm9jKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSkpOwot
fQotCi12b2lkIHRlc3RDb252ZXJ0RG91YmxlVG9GbG9hdE1lbShkb3VibGUgdmFsdWUpCi17Ci0g
ICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKLSAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBNZW1vcnlWYWx1
ZSogbG9hZGVkRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2Fk
LCBEb3VibGUsIE9yaWdpbigpLCBhZGRyZXNzKTsKLSAgICBWYWx1ZSogYXNGbG9hdCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIGxvYWRlZERv
dWJsZSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIGFzRmxvYXQpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxm
bG9hdD4ocHJvYywgJnZhbHVlKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSkpOwotfQotCi12
b2lkIHRlc3RDb252ZXJ0RmxvYXRUb0RvdWJsZUFyZyhmbG9hdCB2YWx1ZSkKLXsKLSAgICBQcm9j
ZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAg
IFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywg
T3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGZsb2F0VmFs
dWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwg
YXJndW1lbnQzMik7Ci0gICAgVmFsdWUqIGFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZSk7Ci0gICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFzRG91YmxlKTsK
LQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBiaXR3
aXNlX2Nhc3Q8aW50MzJfdD4odmFsdWUpKSwgc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSkpKTsK
LX0KLQotdm9pZCB0ZXN0Q29udmVydEZsb2F0VG9Eb3VibGVJbW0oZmxvYXQgdmFsdWUpCi17Ci0g
ICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKLSAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgdmFsdWUpOwotICAgIFZhbHVlKiBhc0RvdWJsZSA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGFyZ3VtZW50KTsK
LSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwg
YXNEb3VibGUpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+
KHByb2MpLCBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKSkpOwotfQotCi12b2lkIHRlc3RDb252
ZXJ0RmxvYXRUb0RvdWJsZU1lbShmbG9hdCB2YWx1ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsK
LSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhZGRy
ZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIE1lbW9yeVZhbHVlKiBsb2FkZWRGbG9hdCA9IHJv
b3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgRmxvYXQsIE9yaWdpbigpLCBh
ZGRyZXNzKTsKLSAgICBWYWx1ZSogYXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBsb2FkZWRGbG9hdCk7Ci0gICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFzRG91YmxlKTsKLQot
ICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCAmdmFsdWUp
LCBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKSkpOwotfQotCi12b2lkIHRlc3RDb252ZXJ0RG91
YmxlVG9GbG9hdFRvRG91YmxlVG9GbG9hdChkb3VibGUgdmFsdWUpCi17Ci0gICAgUHJvY2VkdXJl
IHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1
ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Ci0gICAgVmFsdWUqIGFzRmxvYXQgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCBhcmd1bWVu
dCk7Ci0gICAgVmFsdWUqIGFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBG
bG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgYXNGbG9hdCk7Ci0gICAgVmFsdWUqIGFzRmxvYXRBZ2Fp
biA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCks
IGFzRG91YmxlKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwgYXNGbG9hdEFnYWluKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBp
bGVBbmRSdW48ZmxvYXQ+KHByb2MsIHZhbHVlKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSkp
OwotfQotCi12b2lkIHRlc3RMb2FkRmxvYXRDb252ZXJ0RG91YmxlQ29udmVydEZsb2F0U3RvcmVG
bG9hdChmbG9hdCB2YWx1ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBzcmMgPSByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7Ci0gICAgVmFsdWUqIGRzdCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICBNZW1vcnlWYWx1ZSog
bG9hZGVkRmxvYXQgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEZs
b2F0LCBPcmlnaW4oKSwgc3JjKTsKLSAgICBWYWx1ZSogYXNEb3VibGUgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBsb2FkZWRGbG9hdCk7Ci0g
ICAgVmFsdWUqIGFzRmxvYXRBZ2FpbiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91
YmxlVG9GbG9hdCwgT3JpZ2luKCksIGFzRG91YmxlKTsKLSAgICByb290LT5hcHBlbmROZXc8TWVt
b3J5VmFsdWU+KHByb2MsIFN0b3JlLCBPcmlnaW4oKSwgYXNGbG9hdEFnYWluLCBkc3QpOwotCi0g
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJv
b3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7Ci0KLSAgICBm
bG9hdCBpbnB1dCA9IHZhbHVlOwotICAgIGZsb2F0IG91dHB1dCA9IDAuOwotICAgIENIRUNLKCFj
b21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsICZpbnB1dCwgJm91dHB1dCkpOwotICAgIENIRUNL
KGlzSWRlbnRpY2FsKGlucHV0LCBvdXRwdXQpKTsKLX0KLQotdm9pZCB0ZXN0RnJvdW5kQXJnKGRv
dWJsZSB2YWx1ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIw
KTsKLSAgICBWYWx1ZSogYXNGbG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91
YmxlVG9GbG9hdCwgT3JpZ2luKCksIGFyZ3VtZW50KTsKLSAgICBWYWx1ZSogYXNEb3VibGUgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBhc0Zs
b2F0KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmln
aW4oKSwgYXNEb3VibGUpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxk
b3VibGU+KHByb2MsIHZhbHVlKSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGF0aWNfY2FzdDxmbG9h
dD4odmFsdWUpKSkpOwotfQotCi12b2lkIHRlc3RGcm91bmRNZW0oZG91YmxlIHZhbHVlKQotewot
ICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7Ci0gICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgTWVtb3J5VmFs
dWUqIGxvYWRlZERvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9h
ZCwgRG91YmxlLCBPcmlnaW4oKSwgYWRkcmVzcyk7Ci0gICAgVmFsdWUqIGFzRmxvYXQgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCBsb2FkZWRE
b3VibGUpOwotICAgIFZhbHVlKiBhc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGFzRmxvYXQpOwotICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBhc0RvdWJsZSk7Ci0KLSAgICBD
SEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgJnZhbHVlKSwgc3Rh
dGljX2Nhc3Q8ZG91YmxlPihzdGF0aWNfY2FzdDxmbG9hdD4odmFsdWUpKSkpOwotfQotCi12b2lk
IHRlc3RJVG9ENjRBcmcoKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIHNyYyA9IHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKLSAgICBWYWx1ZSogc3JjQXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IElUb0QsIE9yaWdpbigpLCBzcmMpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLCBzcmNBc0RvdWJsZSk7Ci0KLSAgICBhdXRvIGNvZGUgPSBj
b21waWxlUHJvYyhwcm9jKTsKLSAgICBmb3IgKGF1dG8gdGVzdFZhbHVlIDogaW50NjRPcGVyYW5k
cygpKQotICAgICAgICBDSEVDSyhpc0lkZW50aWNhbChpbnZva2U8ZG91YmxlPigqY29kZSwgdGVz
dFZhbHVlLnZhbHVlKSwgc3RhdGljX2Nhc3Q8ZG91YmxlPih0ZXN0VmFsdWUudmFsdWUpKSk7Ci19
Ci0KLXZvaWQgdGVzdElUb0Y2NEFyZygpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogc3JjID0gcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApOwotICAgIFZhbHVlKiBzcmNBc0Zsb2F0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBJVG9GLCBPcmlnaW4oKSwgc3JjKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgc3JjQXNGbG9hdCk7Ci0KLSAgICBhdXRvIGNv
ZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBmb3IgKGF1dG8gdGVzdFZhbHVlIDogaW50NjRP
cGVyYW5kcygpKQotICAgICAgICBDSEVDSyhpc0lkZW50aWNhbChpbnZva2U8ZmxvYXQ+KCpjb2Rl
LCB0ZXN0VmFsdWUudmFsdWUpLCBzdGF0aWNfY2FzdDxmbG9hdD4odGVzdFZhbHVlLnZhbHVlKSkp
OwotfQotCi12b2lkIHRlc3RJVG9EMzJBcmcoKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIHNyYyA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCkpOwotICAgIFZhbHVlKiBzcmNBc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgSVRvRCwgT3JpZ2luKCksIHNyYyk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHNyY0FzRG91YmxlKTsKLQotICAgIGF1
dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotICAgIGZvciAoYXV0byB0ZXN0VmFsdWUgOiBp
bnQzMk9wZXJhbmRzKCkpCi0gICAgICAgIENIRUNLKGlzSWRlbnRpY2FsKGludm9rZTxkb3VibGU+
KCpjb2RlLCB0ZXN0VmFsdWUudmFsdWUpLCBzdGF0aWNfY2FzdDxkb3VibGU+KHRlc3RWYWx1ZS52
YWx1ZSkpKTsKLX0KLQotdm9pZCB0ZXN0SVRvRjMyQXJnKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJv
YzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBz
cmMgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogc3JjQXNGbG9hdCA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgSVRvRiwgT3JpZ2luKCksIHNyYyk7Ci0gICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHNyY0FzRmxvYXQpOwotCi0g
ICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAgZm9yIChhdXRvIHRlc3RWYWx1
ZSA6IGludDMyT3BlcmFuZHMoKSkKLSAgICAgICAgQ0hFQ0soaXNJZGVudGljYWwoaW52b2tlPGZs
b2F0PigqY29kZSwgdGVzdFZhbHVlLnZhbHVlKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHRlc3RWYWx1
ZS52YWx1ZSkpKTsKLX0KLQotdm9pZCB0ZXN0SVRvRDY0TWVtKCkKLXsKLSAgICBQcm9jZWR1cmUg
cHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVl
KiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIE1lbW9yeVZhbHVlKiBsb2FkZWRTcmMg
PSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4o
KSwgYWRkcmVzcyk7Ci0gICAgVmFsdWUqIHNyY0FzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBJVG9ELCBPcmlnaW4oKSwgbG9hZGVkU3JjKTsKLSAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgc3JjQXNEb3VibGUpOwotCi0g
ICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAgaW50NjRfdCBpbk1lbW9yeVZh
bHVlOwotICAgIGZvciAoYXV0byB0ZXN0VmFsdWUgOiBpbnQ2NE9wZXJhbmRzKCkpIHsKLSAgICAg
ICAgaW5NZW1vcnlWYWx1ZSA9IHRlc3RWYWx1ZS52YWx1ZTsKLSAgICAgICAgQ0hFQ0soaXNJZGVu
dGljYWwoaW52b2tlPGRvdWJsZT4oKmNvZGUsICZpbk1lbW9yeVZhbHVlKSwgc3RhdGljX2Nhc3Q8
ZG91YmxlPih0ZXN0VmFsdWUudmFsdWUpKSk7Ci0gICAgICAgIENIRUNLKGluTWVtb3J5VmFsdWUg
PT0gdGVzdFZhbHVlLnZhbHVlKTsKLSAgICB9Ci19Ci0KLXZvaWQgdGVzdElUb0Y2NE1lbSgpCi17
Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKLSAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBNZW1vcnlW
YWx1ZSogbG9hZGVkU3JjID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2Fk
LCBJbnQ2NCwgT3JpZ2luKCksIGFkZHJlc3MpOwotICAgIFZhbHVlKiBzcmNBc0Zsb2F0ID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJVG9GLCBPcmlnaW4oKSwgbG9hZGVkU3JjKTsKLSAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgc3Jj
QXNGbG9hdCk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBpbnQ2
NF90IGluTWVtb3J5VmFsdWU7Ci0gICAgZm9yIChhdXRvIHRlc3RWYWx1ZSA6IGludDY0T3BlcmFu
ZHMoKSkgewotICAgICAgICBpbk1lbW9yeVZhbHVlID0gdGVzdFZhbHVlLnZhbHVlOwotICAgICAg
ICBDSEVDSyhpc0lkZW50aWNhbChpbnZva2U8ZmxvYXQ+KCpjb2RlLCAmaW5NZW1vcnlWYWx1ZSks
IHN0YXRpY19jYXN0PGZsb2F0Pih0ZXN0VmFsdWUudmFsdWUpKSk7Ci0gICAgICAgIENIRUNLKGlu
TWVtb3J5VmFsdWUgPT0gdGVzdFZhbHVlLnZhbHVlKTsKLSAgICB9Ci19Ci0KLXZvaWQgdGVzdElU
b0QzMk1lbSgpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
LSAgICBNZW1vcnlWYWx1ZSogbG9hZGVkU3JjID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVl
Pihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksIGFkZHJlc3MpOwotICAgIFZhbHVlKiBzcmNB
c0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSVRvRCwgT3JpZ2luKCksIGxv
YWRlZFNyYyk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwg
T3JpZ2luKCksIHNyY0FzRG91YmxlKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHBy
b2MpOwotICAgIGludDMyX3QgaW5NZW1vcnlWYWx1ZTsKLSAgICBmb3IgKGF1dG8gdGVzdFZhbHVl
IDogaW50MzJPcGVyYW5kcygpKSB7Ci0gICAgICAgIGluTWVtb3J5VmFsdWUgPSB0ZXN0VmFsdWUu
dmFsdWU7Ci0gICAgICAgIENIRUNLKGlzSWRlbnRpY2FsKGludm9rZTxkb3VibGU+KCpjb2RlLCAm
aW5NZW1vcnlWYWx1ZSksIHN0YXRpY19jYXN0PGRvdWJsZT4odGVzdFZhbHVlLnZhbHVlKSkpOwot
ICAgICAgICBDSEVDSyhpbk1lbW9yeVZhbHVlID09IHRlc3RWYWx1ZS52YWx1ZSk7Ci0gICAgfQot
fQotCi12b2lkIHRlc3RJVG9GMzJNZW0oKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFkZHJlc3MgPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7Ci0gICAgTWVtb3J5VmFsdWUqIGxvYWRlZFNyYyA9IHJvb3QtPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBhZGRyZXNzKTsK
LSAgICBWYWx1ZSogc3JjQXNGbG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSVRv
RiwgT3JpZ2luKCksIGxvYWRlZFNyYyk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHNyY0FzRmxvYXQpOwotCi0gICAgYXV0byBjb2RlID0g
Y29tcGlsZVByb2MocHJvYyk7Ci0gICAgaW50MzJfdCBpbk1lbW9yeVZhbHVlOwotICAgIGZvciAo
YXV0byB0ZXN0VmFsdWUgOiBpbnQzMk9wZXJhbmRzKCkpIHsKLSAgICAgICAgaW5NZW1vcnlWYWx1
ZSA9IHRlc3RWYWx1ZS52YWx1ZTsKLSAgICAgICAgQ0hFQ0soaXNJZGVudGljYWwoaW52b2tlPGZs
b2F0PigqY29kZSwgJmluTWVtb3J5VmFsdWUpLCBzdGF0aWNfY2FzdDxmbG9hdD4odGVzdFZhbHVl
LnZhbHVlKSkpOwotICAgICAgICBDSEVDSyhpbk1lbW9yeVZhbHVlID09IHRlc3RWYWx1ZS52YWx1
ZSk7Ci0gICAgfQotfQotCi12b2lkIHRlc3RJVG9ENjRJbW0oaW50NjRfdCB2YWx1ZSkKLXsKLSAg
ICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OwotICAgIFZhbHVlKiBzcmMgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgdmFsdWUpOwotICAgIFZhbHVlKiBzcmNBc0Zsb2F0aW5nUG9pbnQgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIElUb0QsIE9yaWdpbigpLCBzcmMpOwotICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBzcmNBc0Zsb2F0aW5n
UG9pbnQpOwotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9j
KSwgc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSkpKTsKLX0KLQotdm9pZCB0ZXN0SVRvRjY0SW1t
KGludDY0X3QgdmFsdWUpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogc3JjID0gcm9vdC0+YXBwZW5kTmV3
PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHZhbHVlKTsKLSAgICBWYWx1ZSogc3JjQXNG
bG9hdGluZ1BvaW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJVG9GLCBPcmlnaW4o
KSwgc3JjKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgc3JjQXNGbG9hdGluZ1BvaW50KTsKLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21w
aWxlQW5kUnVuPGZsb2F0Pihwcm9jKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSkpOwotfQot
Ci12b2lkIHRlc3RJVG9EMzJJbW0oaW50MzJfdCB2YWx1ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJv
YzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBz
cmMgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdmFsdWUp
OwotICAgIFZhbHVlKiBzcmNBc0Zsb2F0aW5nUG9pbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIElUb0QsIE9yaWdpbigpLCBzcmMpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBzcmNBc0Zsb2F0aW5nUG9pbnQpOwotICAgIENI
RUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jKSwgc3RhdGljX2Nhc3Q8
ZG91YmxlPih2YWx1ZSkpKTsKLX0KLQotdm9pZCB0ZXN0SVRvRjMySW1tKGludDMyX3QgdmFsdWUp
Ci17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKLSAgICBWYWx1ZSogc3JjID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIHZhbHVlKTsKLSAgICBWYWx1ZSogc3JjQXNGbG9hdGluZ1BvaW50ID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJVG9GLCBPcmlnaW4oKSwgc3JjKTsKLSAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgc3JjQXNG
bG9hdGluZ1BvaW50KTsKLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGZsb2F0
Pihwcm9jKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSkpOwotfQotCi12b2lkIHRlc3RJVG9E
UmVkdWNlZFRvSVRvRjY0QXJnKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBzcmMgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7Ci0gICAgVmFsdWUqIHNyY0FzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBJVG9ELCBPcmlnaW4oKSwgc3JjKTsKLSAgICBWYWx1ZSogZmxvYXRSZXN1bHQgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCBzcmNBc0Rv
dWJsZSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIGZsb2F0UmVzdWx0KTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2Mp
OwotICAgIGZvciAoYXV0byB0ZXN0VmFsdWUgOiBpbnQ2NE9wZXJhbmRzKCkpCi0gICAgICAgIENI
RUNLKGlzSWRlbnRpY2FsKGludm9rZTxmbG9hdD4oKmNvZGUsIHRlc3RWYWx1ZS52YWx1ZSksIHN0
YXRpY19jYXN0PGZsb2F0Pih0ZXN0VmFsdWUudmFsdWUpKSk7Ci19Ci0KLXZvaWQgdGVzdElUb0RS
ZWR1Y2VkVG9JVG9GMzJBcmcoKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIHNyYyA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpOwotICAgIFZhbHVlKiBzcmNBc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgSVRvRCwgT3JpZ2luKCksIHNyYyk7Ci0gICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgc3JjQXNEb3Vi
bGUpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCBmbG9hdFJlc3VsdCk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsK
LSAgICBmb3IgKGF1dG8gdGVzdFZhbHVlIDogaW50MzJPcGVyYW5kcygpKQotICAgICAgICBDSEVD
Syhpc0lkZW50aWNhbChpbnZva2U8ZmxvYXQ+KCpjb2RlLCB0ZXN0VmFsdWUudmFsdWUpLCBzdGF0
aWNfY2FzdDxmbG9hdD4odGVzdFZhbHVlLnZhbHVlKSkpOwotfQotCi12b2lkIHRlc3RTdG9yZTMy
KGludCB2YWx1ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIGludCBzbG90ID0gMHhiYWFkYmVlZjsKLSAgICByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCks
Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBUcnVu
YywgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAotICAgICAgICByb290
LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZzbG90KSwgMCk7Ci0g
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkp
OwotCi0gICAgQ0hFQ0soIWNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCB2YWx1ZSkpOwotICAgIENI
RUNLKHNsb3QgPT0gdmFsdWUpOwotfQotCi12b2lkIHRlc3RTdG9yZUNvbnN0YW50KGludCB2YWx1
ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOwotICAgIGludCBzbG90ID0gMHhiYWFkYmVlZjsKLSAgICByb290LT5hcHBlbmRO
ZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksCi0gICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB2YWx1ZSksCi0g
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnNs
b3QpLCAwKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2Ms
IFJldHVybiwgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCAwKSk7Ci0KLSAgICBDSEVDSyghY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpKTsKLSAg
ICBDSEVDSyhzbG90ID09IHZhbHVlKTsKLX0KLQotdm9pZCB0ZXN0U3RvcmVDb25zdGFudFB0cihp
bnRwdHJfdCB2YWx1ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIGludHB0cl90IHNsb3Q7Ci0jaWYgQ1BVKEFERFJF
U1M2NCkKLSAgICBzbG90ID0gKHN0YXRpY19jYXN0PGludHB0cl90PigweGJhYWRiZWVmKSA8PCAz
MikgKyBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMHhiYWFkYmVlZik7Ci0jZWxzZQotICAgIHNsb3Qg
PSAweGJhYWRiZWVmOwotI2VuZGlmCi0gICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigK
LSAgICAgICAgcHJvYywgU3RvcmUsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHZhbHVlKSwKLSAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmc2xvdCksIDApOwotICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKLQot
ICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludD4ocHJvYykpOwotICAgIENIRUNLKHNsb3QgPT0g
dmFsdWUpOwotfQotCi12b2lkIHRlc3RTdG9yZThBcmcoKQotewotICAgIHsgLy8gRGlyZWN0IGFk
ZHJlc3NpbmcuCi0gICAgICAgIFByb2NlZHVyZSBwcm9jOwotICAgICAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgICAgIFZhbHVlKiB2YWx1ZSA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKTsKLSAgICAgICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0K
LSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZTgsIE9yaWdp
bigpLCB2YWx1ZSwgYWRkcmVzcyk7Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCB2YWx1ZSk7Ci0KLSAgICAgICAgaW50OF90IHN0b3Jh
Z2UgPSAwOwotICAgICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIDQyLCAm
c3RvcmFnZSkgPT0gNDIpOwotICAgICAgICBDSEVDSyhzdG9yYWdlID09IDQyKTsKLSAgICB9Ci0K
LSAgICB7IC8vIEluZGV4ZWQgYWRkcmVzc2luZy4KLSAgICAgICAgUHJvY2VkdXJlIHByb2M7Ci0g
ICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICAgICAgVmFs
dWUqIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCks
Ci0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgICAgICBWYWx1ZSogYmFzZSA9IHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIxKTsKLSAgICAgICAgVmFsdWUqIG9mZnNldCA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsK
LSAgICAgICAgVmFsdWUqIGRpc3BsYWNlbWVudCA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFs
dWU+KHByb2MsIE9yaWdpbigpLCAtMSk7Ci0KLSAgICAgICAgVmFsdWUqIGJhc2VEaXNwbGFjZW1l
bnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGRpc3BsYWNl
bWVudCwgYmFzZSk7Ci0gICAgICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBiYXNlRGlzcGxhY2VtZW50LCBvZmZzZXQpOwotCi0g
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmU4LCBPcmlnaW4o
KSwgdmFsdWUsIGFkZHJlc3MpOwotICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgdmFsdWUpOwotCi0gICAgICAgIGludDhfdCBzdG9yYWdl
ID0gMDsKLSAgICAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCA0MiwgJnN0
b3JhZ2UsIDEpID09IDQyKTsKLSAgICAgICAgQ0hFQ0soc3RvcmFnZSA9PSA0Mik7Ci0gICAgfQot
fQotCi12b2lkIHRlc3RTdG9yZThJbW0oKQotewotICAgIHsgLy8gRGlyZWN0IGFkZHJlc3Npbmcu
Ci0gICAgICAgIFByb2NlZHVyZSBwcm9jOwotICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOwotCi0gICAgICAgIFZhbHVlKiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0Mik7Ci0gICAgICAgIFZhbHVlKiBhZGRyZXNz
ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOwotCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1
ZT4ocHJvYywgU3RvcmU4LCBPcmlnaW4oKSwgdmFsdWUsIGFkZHJlc3MpOwotICAgICAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgdmFsdWUpOwot
Ci0gICAgICAgIGludDhfdCBzdG9yYWdlID0gMDsKLSAgICAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1
bjxpbnQ2NF90Pihwcm9jLCAmc3RvcmFnZSkgPT0gNDIpOwotICAgICAgICBDSEVDSyhzdG9yYWdl
ID09IDQyKTsKLSAgICB9Ci0KLSAgICB7IC8vIEluZGV4ZWQgYWRkcmVzc2luZy4KLSAgICAgICAg
UHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7Ci0KLSAgICAgICAgVmFsdWUqIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIDQyKTsKLSAgICAgICAgVmFsdWUqIGJhc2UgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7Ci0gICAgICAgIFZhbHVlKiBvZmZzZXQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAg
IFZhbHVlKiBkaXNwbGFjZW1lbnQgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgLTEpOwotCi0gICAgICAgIFZhbHVlKiBiYXNlRGlzcGxhY2VtZW50ID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBkaXNwbGFjZW1lbnQsIGJh
c2UpOwotICAgICAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQWRkLCBPcmlnaW4oKSwgYmFzZURpc3BsYWNlbWVudCwgb2Zmc2V0KTsKLQotICAgICAgICBy
b290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlOCwgT3JpZ2luKCksIHZhbHVl
LCBhZGRyZXNzKTsKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJl
dHVybiwgT3JpZ2luKCksIHZhbHVlKTsKLQotICAgICAgICBpbnQ4X3Qgc3RvcmFnZSA9IDA7Ci0g
ICAgICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgJnN0b3JhZ2UsIDEpID09
IDQyKTsKLSAgICAgICAgQ0hFQ0soc3RvcmFnZSA9PSA0Mik7Ci0gICAgfQotfQotCi12b2lkIHRl
c3RTdG9yZVBhcnRpYWw4Qml0UmVnaXN0ZXJPblg4NigpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7
Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIC8vIFdlIHdh
bnQgdG8gaGF2ZSB0aGlzIGluIEVDWC4KLSAgICBWYWx1ZSogcmV0dXJuVmFsdWUgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7Ci0KLSAgICAvLyBXZSB3YW50IHRoaXMgc3VjayBpbiBFRFguCi0gICAgVmFsdWUq
IHdoZXJlVG9TdG9yZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLQotICAgIC8vIFRoZSBwYXRjaCBwb2lu
dCBpcyB0aGVyZSB0byBoZWxwIHVzIGZvcmNlIHRoZSBoYW5kIG9mIHRoZSBjb21waWxlci4KLSAg
ICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2lu
dFZhbHVlPihwcm9jLCBJbnQzMiwgT3JpZ2luKCkpOwotCi0gICAgLy8gRm9yIHRoZSB2YWx1ZSBh
Ym92ZSB0byBiZSBtYXRlcmlhbGl6ZWQgYW5kIGdpdmUgdGhlIGFsbG9jYXRvcgotICAgIC8vIGEg
c3Ryb25nZXIgaW5zZW50aXZlIHRvIG5hbWUgdGhvc2UgcmVnaXN0ZXIgdGhlIHdheSB3ZSBuZWVk
LgotICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKHJldHVyblZhbHVlLCBW
YWx1ZVJlcChHUFJJbmZvOjpyZWdUMykpKTsKLSAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3Ry
YWluZWRWYWx1ZSh3aGVyZVRvU3RvcmUsIFZhbHVlUmVwKEdQUkluZm86OnJlZ1QyKSkpOwotCi0g
ICAgLy8gV2UnbGwgcHJvZHVjZSBFREkuCi0gICAgcGF0Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWlu
dCA9IFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6cmVnVDYpOwotCi0gICAgLy8gR2l2ZSB0aGUgYWxs
b2NhdG9yIGEgZ29vZCByZWFzb24gbm90IHRvIHVzZSBhbnkgb3RoZXIgcmVnaXN0ZXIuCi0gICAg
UmVnaXN0ZXJTZXQgY2xvYmJlclNldCA9IFJlZ2lzdGVyU2V0OjphbGxHUFJzKCk7Ci0gICAgY2xv
YmJlclNldC5leGNsdWRlKFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKTsKLSAgICBjbG9i
YmVyU2V0LmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSk7
Ci0gICAgY2xvYmJlclNldC5jbGVhcihHUFJJbmZvOjpyZWdUMyk7Ci0gICAgY2xvYmJlclNldC5j
bGVhcihHUFJJbmZvOjpyZWdUMik7Ci0gICAgY2xvYmJlclNldC5jbGVhcihHUFJJbmZvOjpyZWdU
Nik7Ci0gICAgcGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUoY2xvYmJlclNldCk7Ci0KLSAgICAvLyBT
ZXQgRURJLgotICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKLSAgICAgICAgWyZdIChDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsK
LSAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2go
aml0KTsKLSAgICAgICAgICAgIGppdC54b3I2NChwYXJhbXNbMF0uZ3ByKCksIHBhcmFtc1swXS5n
cHIoKSk7Ci0gICAgICAgIH0pOwotCi0gICAgLy8gSWYgZXZlcnl0aGluZyB3ZW50IHdlbGwsIHdl
IHNob3VsZCBoYXZlIHRoZSBiaWcgbnVtYmVyIGluIGVheCwKLSAgICAvLyBwYXRjaHBvaW50ID09
IEVESSBhbmQgd2hlcmVUb1N0b3JlID0gRURYLgotICAgIC8vIFNpbmNlIEVESSA9PSA1LCBhbmQg
QUggPSA1IG9uIDggYml0IHN0b3JlLCB0aGlzIHdvdWxkIGdvIHdyb25nCi0gICAgLy8gaWYgd2Ug
dXNlIFg4NiBwYXJ0aWFsIHJlZ2lzdGVycy4KLSAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFs
dWU+KHByb2MsIFN0b3JlOCwgT3JpZ2luKCksIHBhdGNocG9pbnQsIHdoZXJlVG9TdG9yZSk7Ci0K
LSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwg
cmV0dXJuVmFsdWUpOwotCi0gICAgaW50OF90IHN0b3JhZ2UgPSAweGZmOwotICAgIENIRUNLKGNv
bXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgMHgxMjM0NTY3OGFiY2RlZjEyLCAmc3RvcmFnZSkg
PT0gMHgxMjM0NTY3OGFiY2RlZjEyKTsKLSAgICBDSEVDSyghc3RvcmFnZSk7Ci19Ci0KLXZvaWQg
dGVzdFN0b3JlMTZBcmcoKQotewotICAgIHsgLy8gRGlyZWN0IGFkZHJlc3NpbmcuCi0gICAgICAg
IFByb2NlZHVyZSBwcm9jOwotICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOwotCi0gICAgICAgIFZhbHVlKiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICAg
ICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0KLSAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZTE2LCBPcmlnaW4oKSwgdmFsdWUsIGFkZHJl
c3MpOwotICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgdmFsdWUpOwotCi0gICAgICAgIGludDE2X3Qgc3RvcmFnZSA9IC0xOwotICAgICAg
ICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIDQyLCAmc3RvcmFnZSkgPT0gNDIp
OwotICAgICAgICBDSEVDSyhzdG9yYWdlID09IDQyKTsKLSAgICB9Ci0KLSAgICB7IC8vIEluZGV4
ZWQgYWRkcmVzc2luZy4KLSAgICAgICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICAgICAgVmFsdWUqIHZhbHVlID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCkpOwotICAgICAgICBWYWx1ZSogYmFzZSA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsK
LSAgICAgICAgVmFsdWUqIG9mZnNldCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLSAgICAgICAgVmFsdWUq
IGRpc3BsYWNlbWVudCA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdp
bigpLCAtMSk7Ci0KLSAgICAgICAgVmFsdWUqIGJhc2VEaXNwbGFjZW1lbnQgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGRpc3BsYWNlbWVudCwgYmFzZSk7Ci0g
ICAgICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQs
IE9yaWdpbigpLCBiYXNlRGlzcGxhY2VtZW50LCBvZmZzZXQpOwotCi0gICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmUxNiwgT3JpZ2luKCksIHZhbHVlLCBhZGRy
ZXNzKTsKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwg
T3JpZ2luKCksIHZhbHVlKTsKLQotICAgICAgICBpbnQxNl90IHN0b3JhZ2UgPSAtMTsKLSAgICAg
ICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCA0MiwgJnN0b3JhZ2UsIDEpID09
IDQyKTsKLSAgICAgICAgQ0hFQ0soc3RvcmFnZSA9PSA0Mik7Ci0gICAgfQotfQotCi12b2lkIHRl
c3RTdG9yZTE2SW1tKCkKLXsKLSAgICB7IC8vIERpcmVjdCBhZGRyZXNzaW5nLgotICAgICAgICBQ
cm9jZWR1cmUgcHJvYzsKLSAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKLQotICAgICAgICBWYWx1ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgNDIpOwotICAgICAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKLQotICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0
b3JlMTYsIE9yaWdpbigpLCB2YWx1ZSwgYWRkcmVzcyk7Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCB2YWx1ZSk7Ci0KLSAgICAgICAg
aW50MTZfdCBzdG9yYWdlID0gLTE7Ci0gICAgICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRf
dD4ocHJvYywgJnN0b3JhZ2UpID09IDQyKTsKLSAgICAgICAgQ0hFQ0soc3RvcmFnZSA9PSA0Mik7
Ci0gICAgfQotCi0gICAgeyAvLyBJbmRleGVkIGFkZHJlc3NpbmcuCi0gICAgICAgIFByb2NlZHVy
ZSBwcm9jOwotICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotCi0g
ICAgICAgIFZhbHVlKiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCA0Mik7Ci0gICAgICAgIFZhbHVlKiBiYXNlID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwot
ICAgICAgICBWYWx1ZSogb2Zmc2V0ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAgICBWYWx1ZSog
ZGlzcGxhY2VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIC0xKTsKLQotICAgICAgICBWYWx1ZSogYmFzZURpc3BsYWNlbWVudCA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgZGlzcGxhY2VtZW50LCBiYXNlKTsKLSAg
ICAgICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwg
T3JpZ2luKCksIGJhc2VEaXNwbGFjZW1lbnQsIG9mZnNldCk7Ci0KLSAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZTE2LCBPcmlnaW4oKSwgdmFsdWUsIGFkZHJl
c3MpOwotICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgdmFsdWUpOwotCi0gICAgICAgIGludDE2X3Qgc3RvcmFnZSA9IC0xOwotICAgICAg
ICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsICZzdG9yYWdlLCAxKSA9PSA0Mik7
Ci0gICAgICAgIENIRUNLKHN0b3JhZ2UgPT0gNDIpOwotICAgIH0KLX0KLQotdm9pZCB0ZXN0VHJ1
bmMoaW50NjRfdCB2YWx1ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHBy
b2MsIHZhbHVlKSA9PSBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlKSk7Ci19Ci0KLXZvaWQgdGVzdEFk
ZDEoaW50IHZhbHVlKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAot
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdp
bigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCi0gICAgICAgICAgICByb290
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpKTsKLQotICAgIENI
RUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCB2YWx1ZSkgPT0gdmFsdWUgKyAxKTsKLX0KLQot
dm9pZCB0ZXN0QWRkMVB0cihpbnRwdHJfdCB2YWx1ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsK
LSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2lu
KCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgICAgICByb290LT5hcHBl
bmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKSk7Ci0KLSAgICBDSEVDSyhj
b21waWxlQW5kUnVuPGludHB0cl90Pihwcm9jLCB2YWx1ZSkgPT0gdmFsdWUgKyAxKTsKLX0KLQot
dm9pZCB0ZXN0TmVnMzIoaW50MzJfdCB2YWx1ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIFN1YiwgT3JpZ2luKCks
Ci0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgMCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAg
ICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpKSk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIHZhbHVlKSA9
PSAtdmFsdWUpOwotfQotCi12b2lkIHRlc3ROZWdQdHIoaW50cHRyX3QgdmFsdWUpCi17Ci0gICAg
UHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
LSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwg
T3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBw
cm9jLCBTdWIsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkp
OwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnRwdHJfdD4ocHJvYywgdmFsdWUpID09IC12
YWx1ZSk7Ci19Ci0KLXZvaWQgdGVzdFN0b3JlQWRkTG9hZDMyKGludCBhbW91bnQpCi17Ci0gICAg
UHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
LSAgICBpbnQgc2xvdCA9IDM3OwotICAgIENvbnN0UHRyVmFsdWUqIHNsb3RQdHIgPSByb290LT5h
cHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZzbG90KTsKLSAgICByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCks
Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBBZGQs
IE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9j
LCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksIHNsb3RQdHIpLAotICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0g
ICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSksCi0gICAgICAgIHNsb3RQdHIsIDApOwot
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIDApKTsKLQotICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludD4ocHJvYywgYW1vdW50
KSk7Ci0gICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7Ci19Ci0KLXZvaWQgdGVzdFN0b3Jl
UmVsQWRkTG9hZEFjcTMyKGludCBhbW91bnQpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBpbnQgc2xvdCA9IDM3Owot
ICAgIENvbnN0UHRyVmFsdWUqIHNsb3RQdHIgPSByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1
ZT4ocHJvYywgT3JpZ2luKCksICZzbG90KTsKLSAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFs
dWU+KAotICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAotICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBM
b2FkLCBJbnQzMiwgT3JpZ2luKCksIHNsb3RQdHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5n
ZSg0MikpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAg
ICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApKSksCi0gICAgICAgIHNsb3RQdHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSg0Mikp
OwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIDApKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotICAg
IGlmIChpc0FSTTY0KCkpIHsKLSAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJs
ZGEiKTsKLSAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJzdGwiKTsKLSAgICB9
Ci0gICAgaWYgKGlzWDg2KCkpCi0gICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAi
eGNoZyIpOwotICAgIENIRUNLKCFpbnZva2U8aW50PigqY29kZSwgYW1vdW50KSk7Ci0gICAgQ0hF
Q0soc2xvdCA9PSAzNyArIGFtb3VudCk7Ci19Ci0KLXZvaWQgdGVzdFN0b3JlQWRkTG9hZEltbTMy
KGludCBhbW91bnQpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBpbnQgc2xvdCA9IDM3OwotICAgIENvbnN0UHRyVmFs
dWUqIHNsb3RQdHIgPSByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksICZzbG90KTsKLSAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICBw
cm9jLCBTdG9yZSwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0g
ICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksIHNsb3RQdHIpLAot
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IGFtb3VudCkpLAotICAgICAgICBzbG90UHRyLCAwKTsKLSAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7Ci0KLSAgICBDSEVD
SyghY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpKTsKLSAgICBDSEVDSyhzbG90ID09IDM3ICsgYW1v
dW50KTsKLX0KLQotdm9pZCB0ZXN0U3RvcmVBZGRMb2FkOChpbnQgYW1vdW50LCBCMzo6T3Bjb2Rl
IGxvYWRPcGNvZGUpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBpbnQ4X3Qgc2xvdCA9IDM3OwotICAgIENvbnN0UHRy
VmFsdWUqIHNsb3RQdHIgPSByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksICZzbG90KTsKLSAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAg
ICBwcm9jLCBTdG9yZTgsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAotICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgbG9hZE9wY29kZSwgT3JpZ2luKCksIHNsb3RQdHIp
LAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBw
cm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSks
Ci0gICAgICAgIHNsb3RQdHIsIDApOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
LSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKLQotICAgIENIRUNLKCFjb21waWxl
QW5kUnVuPGludD4ocHJvYywgYW1vdW50KSk7Ci0gICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3Vu
dCk7Ci19Ci0KLXZvaWQgdGVzdFN0b3JlUmVsQWRkTG9hZEFjcTgoaW50IGFtb3VudCwgQjM6Ok9w
Y29kZSBsb2FkT3Bjb2RlKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgaW50OF90IHNsb3QgPSAzNzsKLSAgICBDb25z
dFB0clZhbHVlKiBzbG90UHRyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAmc2xvdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAg
ICAgICAgcHJvYywgU3RvcmU4LCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKLSAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIGxvYWRPcGNv
ZGUsIE9yaWdpbigpLCBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKSwK
LSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJv
YywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpLAot
ICAgICAgICBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKTsKLSAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCAwKSk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBpZiAoaXNB
Uk02NCgpKSB7Ci0gICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibGRhIik7Ci0g
ICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAic3RsIik7Ci0gICAgfQotICAgIGlm
IChpc1g4NigpKQotICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgInhjaGciKTsK
LSAgICBDSEVDSyghaW52b2tlPGludD4oKmNvZGUsIGFtb3VudCkpOwotICAgIENIRUNLKHNsb3Qg
PT0gMzcgKyBhbW91bnQpOwotfQotCi12b2lkIHRlc3RTdG9yZVJlbEFkZEZlbmNlTG9hZEFjcTgo
aW50IGFtb3VudCwgQjM6Ok9wY29kZSBsb2FkT3Bjb2RlKQotewotICAgIFByb2NlZHVyZSBwcm9j
OwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgaW50OF90IHNs
b3QgPSAzNzsKLSAgICBDb25zdFB0clZhbHVlKiBzbG90UHRyID0gcm9vdC0+YXBwZW5kTmV3PENv
bnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmc2xvdCk7Ci0gICAgVmFsdWUqIGxvYWRlZFZh
bHVlID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAgcHJvYywgbG9hZE9w
Y29kZSwgT3JpZ2luKCksIHNsb3RQdHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSg0Mikp
OwotICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IHJvb3QtPmFwcGVuZE5ldzxQYXRj
aHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKLSAgICBwYXRjaHBvaW50LT5jbG9i
YmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7Ci0gICAgcGF0Y2hwb2lu
dC0+c2V0R2VuZXJhdG9yKAotICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBT
dGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7Ci0gICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRj
aFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAgICAgICAgICBqaXQuc3RvcmU4
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDB4YmVlZiksICZzbG90KTsKLSAgICAgICAgfSk7
Ci0gICAgcGF0Y2hwb2ludC0+ZWZmZWN0cyA9IEVmZmVjdHM6Om5vbmUoKTsKLSAgICBwYXRjaHBv
aW50LT5lZmZlY3RzLmZlbmNlID0gdHJ1ZTsKLSAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFs
dWU+KAotICAgICAgICBwcm9jLCBTdG9yZTgsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKLSAgICAgICAg
ICAgIGxvYWRlZFZhbHVlLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAg
ICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApKSksCi0gICAgICAgIHNsb3RQdHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBS
YW5nZSg0MikpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHBy
b2MpOwotICAgIGlmIChpc0FSTTY0KCkpIHsKLSAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24o
KmNvZGUsICJsZGEiKTsKLSAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJzdGwi
KTsKLSAgICB9Ci0gICAgaWYgKGlzWDg2KCkpCi0gICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9u
KCpjb2RlLCAieGNoZyIpOwotICAgIENIRUNLKCFpbnZva2U8aW50PigqY29kZSwgYW1vdW50KSk7
Ci0gICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7Ci19Ci0KLXZvaWQgdGVzdFN0b3JlQWRk
TG9hZEltbTgoaW50IGFtb3VudCwgQjM6Ok9wY29kZSBsb2FkT3Bjb2RlKQotewotICAgIFByb2Nl
ZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAg
aW50OF90IHNsb3QgPSAzNzsKLSAgICBDb25zdFB0clZhbHVlKiBzbG90UHRyID0gcm9vdC0+YXBw
ZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmc2xvdCk7Ci0gICAgcm9vdC0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAgcHJvYywgU3RvcmU4LCBPcmlnaW4oKSwK
LSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEFkZCwg
T3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2Ms
IGxvYWRPcGNvZGUsIE9yaWdpbigpLCBzbG90UHRyKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpKSwKLSAgICAgICAgc2xv
dFB0ciwgMCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgMCkpOwotCi0gICAgQ0hFQ0soIWNvbXBpbGVBbmRSdW48aW50Pihw
cm9jKSk7Ci0gICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7Ci19Ci0KLXZvaWQgdGVzdFN0
b3JlQWRkTG9hZDE2KGludCBhbW91bnQsIEIzOjpPcGNvZGUgbG9hZE9wY29kZSkKLXsKLSAgICBQ
cm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwot
ICAgIGludDE2X3Qgc2xvdCA9IDM3OwotICAgIENvbnN0UHRyVmFsdWUqIHNsb3RQdHIgPSByb290
LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZzbG90KTsKLSAgICBy
b290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICBwcm9jLCBTdG9yZTE2LCBPcmln
aW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2Ms
IEFkZCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KHByb2MsIGxvYWRPcGNvZGUsIE9yaWdpbigpLCBzbG90UHRyKSwKLSAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigp
LAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpLAotICAgICAgICBzbG90UHRyLCAw
KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAwKSk7Ci0KLSAgICBDSEVDSyghY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGFt
b3VudCkpOwotICAgIENIRUNLKHNsb3QgPT0gMzcgKyBhbW91bnQpOwotfQotCi12b2lkIHRlc3RT
dG9yZVJlbEFkZExvYWRBY3ExNihpbnQgYW1vdW50LCBCMzo6T3Bjb2RlIGxvYWRPcGNvZGUpCi17
Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKLSAgICBpbnQxNl90IHNsb3QgPSAzNzsKLSAgICBDb25zdFB0clZhbHVlKiBzbG90UHRy
ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmc2xvdCk7
Ci0gICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAgcHJvYywgU3RvcmUx
NiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAg
ICBwcm9jLCBBZGQsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBsb2FkT3Bjb2RlLCBPcmlnaW4oKSwgc2xv
dFB0ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQyKSksCi0gICAgICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4o
KSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSwKLSAgICAgICAgc2xvdFB0ciwg
MCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQyKSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwotCi0gICAgYXV0
byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAgaWYgKGlzQVJNNjQoKSkgewotICAgICAg
ICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxkYSIpOwotICAgICAgICBjaGVja1VzZXNJ
bnN0cnVjdGlvbigqY29kZSwgInN0bCIpOwotICAgIH0KLSAgICBpZiAoaXNYODYoKSkKLSAgICAg
ICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJ4Y2hnIik7Ci0gICAgQ0hFQ0soIWludm9r
ZTxpbnQ+KCpjb2RlLCBhbW91bnQpKTsKLSAgICBDSEVDSyhzbG90ID09IDM3ICsgYW1vdW50KTsK
LX0KLQotdm9pZCB0ZXN0U3RvcmVBZGRMb2FkSW1tMTYoaW50IGFtb3VudCwgQjM6Ok9wY29kZSBs
b2FkT3Bjb2RlKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgaW50MTZfdCBzbG90ID0gMzc7Ci0gICAgQ29uc3RQdHJW
YWx1ZSogc2xvdFB0ciA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmln
aW4oKSwgJnNsb3QpOwotICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAg
IHByb2MsIFN0b3JlMTYsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAotICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgbG9hZE9wY29kZSwgT3JpZ2luKCksIHNsb3RQdHIp
LAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIGFtb3VudCkpLAotICAgICAgICBzbG90UHRyLCAwKTsKLSAgICByb290LT5hcHBlbmROZXdD
b250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7Ci0KLSAgICBD
SEVDSyghY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpKTsKLSAgICBDSEVDSyhzbG90ID09IDM3ICsg
YW1vdW50KTsKLX0KLQotdm9pZCB0ZXN0U3RvcmVBZGRMb2FkNjQoaW50IGFtb3VudCkKLXsKLSAg
ICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OwotICAgIGludDY0X3Qgc2xvdCA9IDM3MDAwMDAwMDAwbGw7Ci0gICAgQ29uc3RQdHJWYWx1ZSog
c2xvdFB0ciA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
JnNsb3QpOwotICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgIHByb2Ms
IFN0b3JlLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAg
ICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwgc2xvdFB0ciksCi0gICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAotICAgICAgICBzbG90UHRyLCAwKTsKLSAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAw
KSk7Ci0KLSAgICBDSEVDSyghY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGFtb3VudCkpOwotICAg
IENIRUNLKHNsb3QgPT0gMzcwMDAwMDAwMDBsbCArIGFtb3VudCk7Ci19Ci0KLXZvaWQgdGVzdFN0
b3JlUmVsQWRkTG9hZEFjcTY0KGludCBhbW91bnQpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0g
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBpbnQ2NF90IHNsb3Qg
PSAzNzAwMDAwMDAwMGxsOwotICAgIENvbnN0UHRyVmFsdWUqIHNsb3RQdHIgPSByb290LT5hcHBl
bmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZzbG90KTsKLSAgICByb290LT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksCi0g
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBBZGQsIE9y
aWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAg
ICAgICAgICAgICBwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksIHNsb3RQdHIsIDAsIEhlYXBS
YW5nZSg0MiksIEhlYXBSYW5nZSg0MikpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwK
LSAgICAgICAgc2xvdFB0ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQyKSk7Ci0gICAg
cm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgMCkpOwotCi0gICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAgaWYgKGlz
QVJNNjQoKSkgewotICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxkYSIpOwot
ICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgInN0bCIpOwotICAgIH0KLSAgICBp
ZiAoaXNYODYoKSkKLSAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJ4Y2hnIik7
Ci0gICAgQ0hFQ0soIWludm9rZTxpbnQ+KCpjb2RlLCBhbW91bnQpKTsKLSAgICBDSEVDSyhzbG90
ID09IDM3MDAwMDAwMDAwbGwgKyBhbW91bnQpOwotfQotCi12b2lkIHRlc3RTdG9yZUFkZExvYWRJ
bW02NChpbnQ2NF90IGFtb3VudCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIGludDY0X3Qgc2xvdCA9IDM3MDAwMDAw
MDAwMGxsOwotICAgIENvbnN0UHRyVmFsdWUqIHNsb3RQdHIgPSByb290LT5hcHBlbmROZXc8Q29u
c3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZzbG90KTsKLSAgICByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KAotICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksCi0gICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAot
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQ2
NCwgT3JpZ2luKCksIHNsb3RQdHIpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0
NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCkpLAotICAgICAgICBzbG90UHRyLCAwKTsK
LSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwg
T3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCAwKSk7Ci0KLSAgICBDSEVDSyghY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpKTsKLSAg
ICBDSEVDSyhzbG90ID09IDM3MDAwMDAwMDAwMGxsICsgYW1vdW50KTsKLX0KLQotdm9pZCB0ZXN0
U3RvcmVBZGRMb2FkMzJJbmRleChpbnQgYW1vdW50KQotewotICAgIFByb2NlZHVyZSBwcm9jOwot
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgaW50IHNsb3QgPSAz
NzsKLSAgICBpbnQqIHB0ciA9ICZzbG90OwotICAgIGludHB0cl90IHplcm8gPSAwOwotICAgIFZh
bHVlKiBzbG90UHRyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgQWRk
LCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAg
ICAgICAgIHByb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigpLAotICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmcHRyKSksCi0g
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBM
b2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnplcm8pKSk7Ci0gICAgcm9vdC0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAgcHJvYywgU3RvcmUsIE9yaWdpbigpLAotICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQWRkLCBPcmln
aW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9h
ZCwgSW50MzIsIE9yaWdpbigpLCBzbG90UHRyKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpLAotICAgICAgICBzbG90UHRyLCAwKTsKLSAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCAwKSk7Ci0KLSAgICBDSEVDSyghY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGFtb3VudCkpOwot
ICAgIENIRUNLKHNsb3QgPT0gMzcgKyBhbW91bnQpOwotfQotCi12b2lkIHRlc3RTdG9yZUFkZExv
YWRJbW0zMkluZGV4KGludCBhbW91bnQpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBpbnQgc2xvdCA9IDM3OwotICAg
IGludCogcHRyID0gJnNsb3Q7Ci0gICAgaW50cHRyX3QgemVybyA9IDA7Ci0gICAgVmFsdWUqIHNs
b3RQdHIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBBZGQsIE9yaWdp
bigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAg
cHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5h
cHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZwdHIpKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIExvYWQsIHBv
aW50ZXJUeXBlKCksIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0
UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmemVybykpKTsKLSAgICByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KAotICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksCi0gICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAot
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQz
MiwgT3JpZ2luKCksIHNsb3RQdHIpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0
MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCkpLAotICAgICAgICBzbG90UHRyLCAwKTsK
LSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwg
T3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCAwKSk7Ci0KLSAgICBDSEVDSyghY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpKTsKLSAg
ICBDSEVDSyhzbG90ID09IDM3ICsgYW1vdW50KTsKLX0KLQotdm9pZCB0ZXN0U3RvcmVBZGRMb2Fk
OEluZGV4KGludCBhbW91bnQsIEIzOjpPcGNvZGUgbG9hZE9wY29kZSkKLXsKLSAgICBQcm9jZWR1
cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIGlu
dDhfdCBzbG90ID0gMzc7Ci0gICAgaW50OF90KiBwdHIgPSAmc2xvdDsKLSAgICBpbnRwdHJfdCB6
ZXJvID0gMDsKLSAgICBWYWx1ZSogc2xvdFB0ciA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0g
ICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1v
cnlWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4o
KSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmln
aW4oKSwgJnB0cikpLAotICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAg
ICAgICAgICAgcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCksCi0gICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZ6ZXJvKSkp
OwotICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgIHByb2MsIFN0b3Jl
OCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAg
ICBwcm9jLCBBZGQsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPihwcm9jLCBsb2FkT3Bjb2RlLCBPcmlnaW4oKSwgc2xvdFB0ciksCi0gICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBP
cmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSwKLSAgICAgICAgc2xv
dFB0cik7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgMCkpOwotCi0gICAgQ0hFQ0soIWNvbXBpbGVBbmRSdW48aW50Pihwcm9j
LCBhbW91bnQpKTsKLSAgICBDSEVDSyhzbG90ID09IDM3ICsgYW1vdW50KTsKLX0KLQotdm9pZCB0
ZXN0U3RvcmVBZGRMb2FkSW1tOEluZGV4KGludCBhbW91bnQsIEIzOjpPcGNvZGUgbG9hZE9wY29k
ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOwotICAgIGludDhfdCBzbG90ID0gMzc7Ci0gICAgaW50OF90KiBwdHIgPSAmc2xv
dDsKLSAgICBpbnRwdHJfdCB6ZXJvID0gMDsKLSAgICBWYWx1ZSogc2xvdFB0ciA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCi0gICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBMb2FkLCBwb2lu
dGVyVHlwZSgpLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0
clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnB0cikpLAotICAgICAgICByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3Jp
Z2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksICZ6ZXJvKSkpOwotICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0g
ICAgICAgIHByb2MsIFN0b3JlOCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBsb2FkT3Bjb2RlLCBPcmlnaW4oKSwgc2xv
dFB0ciksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgYW1vdW50KSksCi0gICAgICAgIHNsb3RQdHIpOwotICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKLQotICAg
IENIRUNLKCFjb21waWxlQW5kUnVuPGludD4ocHJvYykpOwotICAgIENIRUNLKHNsb3QgPT0gMzcg
KyBhbW91bnQpOwotfQotCi12b2lkIHRlc3RTdG9yZUFkZExvYWQxNkluZGV4KGludCBhbW91bnQs
IEIzOjpPcGNvZGUgbG9hZE9wY29kZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIGludDE2X3Qgc2xvdCA9IDM3Owot
ICAgIGludDE2X3QqIHB0ciA9ICZzbG90OwotICAgIGludHB0cl90IHplcm8gPSAwOwotICAgIFZh
bHVlKiBzbG90UHRyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgQWRk
LCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAg
ICAgICAgIHByb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigpLAotICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmcHRyKSksCi0g
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBM
b2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnplcm8pKSk7Ci0gICAgcm9vdC0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAgcHJvYywgU3RvcmUxNiwgT3JpZ2luKCksCi0g
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBBZGQsIE9y
aWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBs
b2FkT3Bjb2RlLCBPcmlnaW4oKSwgc2xvdFB0ciksCi0gICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSwKLSAgICAgICAgc2xvdFB0cik7Ci0gICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LAotICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
MCkpOwotCi0gICAgQ0hFQ0soIWNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhbW91bnQpKTsKLSAg
ICBDSEVDSyhzbG90ID09IDM3ICsgYW1vdW50KTsKLX0KLQotdm9pZCB0ZXN0U3RvcmVBZGRMb2Fk
SW1tMTZJbmRleChpbnQgYW1vdW50LCBCMzo6T3Bjb2RlIGxvYWRPcGNvZGUpCi17Ci0gICAgUHJv
Y2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAg
ICBpbnQxNl90IHNsb3QgPSAzNzsKLSAgICBpbnQxNl90KiBwdHIgPSAmc2xvdDsKLSAgICBpbnRw
dHJfdCB6ZXJvID0gMDsKLSAgICBWYWx1ZSogc2xvdFB0ciA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCi0gICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBP
cmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgJnB0cikpLAotICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KAotICAgICAgICAgICAgcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCksCi0gICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZ6
ZXJvKSkpOwotICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgIHByb2Ms
IFN0b3JlMTYsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAg
ICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4ocHJvYywgbG9hZE9wY29kZSwgT3JpZ2luKCksIHNsb3RQdHIpLAotICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFt
b3VudCkpLAotICAgICAgICBzbG90UHRyKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7Ci0KLSAgICBDSEVDSyghY29t
cGlsZUFuZFJ1bjxpbnQ+KHByb2MpKTsKLSAgICBDSEVDSyhzbG90ID09IDM3ICsgYW1vdW50KTsK
LX0KLQotdm9pZCB0ZXN0U3RvcmVBZGRMb2FkNjRJbmRleChpbnQgYW1vdW50KQotewotICAgIFBy
b2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0g
ICAgaW50NjRfdCBzbG90ID0gMzcwMDAwMDAwMDBsbDsKLSAgICBpbnQ2NF90KiBwdHIgPSAmc2xv
dDsKLSAgICBpbnRwdHJfdCB6ZXJvID0gMDsKLSAgICBWYWx1ZSogc2xvdFB0ciA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCi0gICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBMb2FkLCBwb2lu
dGVyVHlwZSgpLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0
clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnB0cikpLAotICAgICAgICByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3Jp
Z2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksICZ6ZXJvKSkpOwotICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0g
ICAgICAgIHByb2MsIFN0b3JlLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKLSAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwgc2xv
dFB0ciksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAotICAgICAgICBzbG90UHRyLCAw
KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAwKSk7Ci0KLSAgICBDSEVDSyghY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGFt
b3VudCkpOwotICAgIENIRUNLKHNsb3QgPT0gMzcwMDAwMDAwMDBsbCArIGFtb3VudCk7Ci19Ci0K
LXZvaWQgdGVzdFN0b3JlQWRkTG9hZEltbTY0SW5kZXgoaW50NjRfdCBhbW91bnQpCi17Ci0gICAg
UHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
LSAgICBpbnQ2NF90IHNsb3QgPSAzNzAwMDAwMDAwMDBsbDsKLSAgICBpbnQ2NF90KiBwdHIgPSAm
c2xvdDsKLSAgICBpbnRwdHJfdCB6ZXJvID0gMDsKLSAgICBWYWx1ZSogc2xvdFB0ciA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCi0gICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBMb2FkLCBw
b2ludGVyVHlwZSgpLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25z
dFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnB0cikpLAotICAgICAgICByb290LT5hcHBlbmRO
ZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwg
T3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksICZ6ZXJvKSkpOwotICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
Ci0gICAgICAgIHByb2MsIFN0b3JlLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCi0gICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwg
c2xvdFB0ciksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgYW1vdW50KSksCi0gICAgICAgIHNsb3RQdHIsIDApOwotICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsK
LQotICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludD4ocHJvYykpOwotICAgIENIRUNLKHNsb3Qg
PT0gMzcwMDAwMDAwMDAwbGwgKyBhbW91bnQpOwotfQotCi12b2lkIHRlc3RTdG9yZVN1YkxvYWQo
aW50IGFtb3VudCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIGludDMyX3Qgc3RhcnRWYWx1ZSA9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50MzJfdD46Om1pbigpOwotICAgIGludDMyX3Qgc2xvdCA9IHN0YXJ0VmFsdWU7
Ci0gICAgQ29uc3RQdHJWYWx1ZSogc2xvdFB0ciA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgJnNsb3QpOwotICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlW
YWx1ZT4oCi0gICAgICAgIHByb2MsIFN0b3JlLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIFN1YiwgT3JpZ2luKCksCi0gICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmln
aW4oKSwgc2xvdFB0ciksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAg
ICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCkpKSwKLSAgICAgICAgc2xvdFB0ciwgMCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICBy
b290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwotCi0gICAg
Q0hFQ0soIWNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhbW91bnQpKTsKLSAgICBDSEVDSyhzbG90
ID09IHN0YXJ0VmFsdWUgLSBhbW91bnQpOwotfQotCi12b2lkIHRlc3RTdG9yZUFkZExvYWRJbnRl
cmZlcmVuY2UoaW50IGFtb3VudCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIGludCBzbG90ID0gMzc7Ci0gICAgQ29u
c3RQdHJWYWx1ZSogc2xvdFB0ciA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgJnNsb3QpOwotICAgIEFyZ3VtZW50UmVnVmFsdWUqIG90aGVyU2xvdFB0ciA9
Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBNZW1vcnlWYWx1ZSogbG9hZCA9IHJvb3Qt
PmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBzbG90
UHRyKTsKLSAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICBwcm9jLCBT
dG9yZSwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCA2NjYpLAotICAgICAgICBvdGhlclNsb3RQdHIsIDApOwotICAgIHJvb3Qt
PmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgIHByb2MsIFN0b3JlLCBPcmlnaW4oKSwK
LSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEFkZCwg
T3JpZ2luKCksCi0gICAgICAgICAgICBsb2FkLCByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KSksCi0gICAgICAgIHNsb3RQdHIsIDApOwotICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IDApKTsKLQotICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludD4ocHJvYywgJnNsb3QpKTsKLSAg
ICBDSEVDSyhzbG90ID09IDM3ICsgYW1vdW50KTsKLX0KLQotdm9pZCB0ZXN0U3RvcmVBZGRBbmRM
b2FkKGludCBhbW91bnQsIGludCBtYXNrKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgaW50IHNsb3QgPSAzNzsKLSAg
ICBDb25zdFB0clZhbHVlKiBzbG90UHRyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCAmc2xvdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVl
PigKLSAgICAgICAgcHJvYywgU3RvcmUsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKLSAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgQWRkLCBP
cmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHBy
b2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgc2xvdFB0ciksCi0gICAgICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCkpLAotICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIG1h
c2spKSwKLSAgICAgICAgc2xvdFB0ciwgMCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwotCi0gICAgQ0hFQ0soIWNv
bXBpbGVBbmRSdW48aW50Pihwcm9jKSk7Ci0gICAgQ0hFQ0soc2xvdCA9PSAoKDM3ICsgYW1vdW50
KSAmIG1hc2spKTsKLX0KLQotdm9pZCB0ZXN0U3RvcmVOZWdMb2FkMzIoaW50MzJfdCB2YWx1ZSkK
LXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOwotCi0gICAgaW50MzJfdCBzbG90ID0gdmFsdWU7Ci0KLSAgICBDb25zdFB0clZhbHVl
KiBzbG90UHRyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCAmc2xvdCk7Ci0gICAgCi0gICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAg
ICAgcHJvYywgU3RvcmUsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAotICAgICAgICAgICAgcHJvYywgU3ViLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSwKLSAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBz
bG90UHRyKSksCi0gICAgICAgIHNsb3RQdHIsIDApOwotICAgIAotICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKLQotICAgIENIRUNLKCFj
b21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MpKTsKLSAgICBDSEVDSyhzbG90ID09IC12YWx1ZSk7
Ci19Ci0KLXZvaWQgdGVzdFN0b3JlTmVnTG9hZFB0cihpbnRwdHJfdCB2YWx1ZSkKLXsKLSAgICBQ
cm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwot
Ci0gICAgaW50cHRyX3Qgc2xvdCA9IHZhbHVlOwotCi0gICAgQ29uc3RQdHJWYWx1ZSogc2xvdFB0
ciA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnNsb3Qp
OwotICAgIAotICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgIHByb2Ms
IFN0b3JlLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAg
ICAgICAgIHByb2MsIFN1YiwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApLAotICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSwg
c2xvdFB0cikpLAotICAgICAgICBzbG90UHRyLCAwKTsKLSAgICAKLSAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJvb3QtPmFw
cGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7Ci0KLSAgICBDSEVDSygh
Y29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jKSk7Ci0gICAgQ0hFQ0soc2xvdCA9PSAtdmFsdWUp
OwotfQotCi12b2lkIHRlc3RBZGQxVW5jb21tdXRlZChpbnQgdmFsdWUpCi17Ci0gICAgUHJvY2Vk
dXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBB
ZGQsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIDEpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
LSAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2Ms
IHZhbHVlKSA9PSB2YWx1ZSArIDEpOwotfQotCi12b2lkIHRlc3RMb2FkT2Zmc2V0KCkKLXsKLSAg
ICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OwotICAgIGludCBhcnJheVtdID0geyAxLCAyIH07Ci0gICAgQ29uc3RQdHJWYWx1ZSogYXJyYXlQ
dHIgPSByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFycmF5
KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAg
ICBwcm9jLCBBZGQsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksIGFycmF5UHRyLCAwKSwKLSAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9y
aWdpbigpLCBhcnJheVB0ciwgc3RhdGljX2Nhc3Q8aW50MzJfdD4oc2l6ZW9mKGludCkpKSkpOwot
Ci0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpID09IGFycmF5WzBdICsgYXJyYXlb
MV0pOwotfQotCi12b2lkIHRlc3RMb2FkT2Zmc2V0Tm90Q29uc3RhbnQoKQotewotICAgIFByb2Nl
ZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAg
aW50IGFycmF5W10gPSB7IDEsIDIgfTsKLSAgICBWYWx1ZSogYXJyYXlQdHIgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAg
ICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxN
ZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBhcnJheVB0ciwgMCksCi0g
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMy
LCBPcmlnaW4oKSwgYXJyYXlQdHIsIHN0YXRpY19jYXN0PGludDMyX3Q+KHNpemVvZihpbnQpKSkp
KTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCAmYXJyYXlbMF0pID09IGFy
cmF5WzBdICsgYXJyYXlbMV0pOwotfQotCi12b2lkIHRlc3RMb2FkT2Zmc2V0VXNpbmdBZGQoKQot
ewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7Ci0gICAgaW50IGFycmF5W10gPSB7IDEsIDIgfTsKLSAgICBDb25zdFB0clZhbHVlKiBh
cnJheVB0ciA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
YXJyYXkpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAg
ICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4o
KSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAg
ICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLCBhcnJheVB0ciwKLSAgICAgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSkpLAot
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAgICAgICAg
ICBwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwg
YXJyYXlQdHIsCi0gICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgc3RhdGljX2Nhc3Q8aW50MzJfdD4oc2l6ZW9mKGludCkpKSkp
KSk7Ci0gICAgCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpID09IGFycmF5WzBd
ICsgYXJyYXlbMV0pOwotfQotCi12b2lkIHRlc3RMb2FkT2Zmc2V0VXNpbmdBZGRJbnRlcmZlcmVu
Y2UoKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7Ci0gICAgaW50IGFycmF5W10gPSB7IDEsIDIgfTsKLSAgICBDb25zdFB0clZh
bHVlKiBhcnJheVB0ciA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmln
aW4oKSwgYXJyYXkpOwotICAgIEFyZ3VtZW50UmVnVmFsdWUqIG90aGVyQXJyYXlQdHIgPQotICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgQ29uc3QzMlZhbHVlKiB0aGVOdW1iZXJPZlRoZUJl
YXN0ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDY2Nik7
Ci0gICAgTWVtb3J5VmFsdWUqIGxlZnQgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAot
ICAgICAgICBwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLCBhcnJheVB0ciwK
LSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgMCkpKTsKLSAgICBNZW1vcnlWYWx1ZSogcmlnaHQgPSByb290LT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KAotICAgICAgICBwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksCi0gICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLCBh
cnJheVB0ciwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgc3RhdGljX2Nhc3Q8aW50MzJfdD4oc2l6ZW9mKGludCkpKSkpOwotICAgIHJv
b3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgIHByb2MsIFN0b3JlLCBPcmlnaW4o
KSwgdGhlTnVtYmVyT2ZUaGVCZWFzdCwgb3RoZXJBcnJheVB0ciwgMCk7Ci0gICAgcm9vdC0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAgcHJvYywgU3RvcmUsIE9yaWdpbigpLCB0aGVO
dW1iZXJPZlRoZUJlYXN0LCBvdGhlckFycmF5UHRyLCBzdGF0aWNfY2FzdDxpbnQzMl90PihzaXpl
b2YoaW50KSkpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAg
ICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksIGxlZnQsIHJpZ2h0KSk7Ci0gICAgCi0gICAg
Q0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsICZhcnJheVswXSkgPT0gMSArIDIpOwotICAg
IENIRUNLKGFycmF5WzBdID09IDY2Nik7Ci0gICAgQ0hFQ0soYXJyYXlbMV0gPT0gNjY2KTsKLX0K
LQotdm9pZCB0ZXN0TG9hZE9mZnNldFVzaW5nQWRkTm90Q29uc3RhbnQoKQotewotICAgIFByb2Nl
ZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAg
aW50IGFycmF5W10gPSB7IDEsIDIgfTsKLSAgICBWYWx1ZSogYXJyYXlQdHIgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAg
ICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxN
ZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigp
LAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAg
ICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksIGFycmF5UHRyLAotICAgICAgICAgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKSksCi0g
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAgICAg
IHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLCBh
cnJheVB0ciwKLSAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBzdGF0aWNfY2FzdDxpbnQzMl90PihzaXplb2YoaW50KSkpKSkp
KTsKLSAgICAKLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgJmFycmF5WzBdKSA9
PSBhcnJheVswXSArIGFycmF5WzFdKTsKLX0KLQotdm9pZCB0ZXN0TG9hZEFkZHJTaGlmdCh1bnNp
Z25lZCBzaGlmdCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIGludCBzbG90c1syXTsKLQotICAgIC8vIEZpZ3VyZSBv
dXQgd2hpY2ggc2xvdCB0byB1c2Ugd2hpbGUgaGF2aW5nIHByb3BlciBhbGlnbm1lbnQgZm9yIHRo
ZSBzaGlmdC4KLSAgICBpbnQqIHNsb3Q7Ci0gICAgdWludHB0cl90IGFyZzsKLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSBzaXplb2Yoc2xvdHMpL3NpemVvZihzbG90c1swXSk7IGktLTspIHsKLSAgICAg
ICAgc2xvdCA9IHNsb3RzICsgaTsKLSAgICAgICAgYXJnID0gYml0d2lzZV9jYXN0PHVpbnRwdHJf
dD4oc2xvdCkgPj4gc2hpZnQ7Ci0gICAgICAgIGlmIChiaXR3aXNlX2Nhc3Q8aW50Kj4oYXJnIDw8
IHNoaWZ0KSA9PSBzbG90KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgKnNsb3Qg
PSA4Njc1MzA5OwotICAgIAotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwKLSAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgU2hs
LCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHNoaWZ0
KSkpKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhcmcpID09IDg2NzUz
MDkpOwotfQotCi12b2lkIHRlc3RGcmFtZVBvaW50ZXIoKQotewotICAgIFByb2NlZHVyZSBwcm9j
OwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZyYW1lUG9pbnRlciwgT3JpZ2luKCkp
KTsKLQotICAgIHZvaWQqIGZwID0gY29tcGlsZUFuZFJ1bjx2b2lkKj4ocHJvYyk7Ci0gICAgQ0hF
Q0soZnAgPCAmcHJvYyk7Ci0gICAgQ0hFQ0soZnAgPj0gYml0d2lzZV9jYXN0PGNoYXIqPigmcHJv
YykgLSAxMDAwMCk7Ci19Ci0KLXZvaWQgdGVzdE92ZXJyaWRlRnJhbWVQb2ludGVyKCkKLXsKLSAg
ICB7Ci0gICAgICAgIFByb2NlZHVyZSBwcm9jOwotICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOwotCi0gICAgICAgIC8vIEFkZCBhIHN0YWNrIHNsb3QgdG8gbWFrZSB0
aGUgZnJhbWUgbm9uIHRyaXZpYWwuCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxTbG90QmFzZVZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgcHJvYy5hZGRTdGFja1Nsb3QoOCkpOwotCi0gICAgICAgIC8v
IFN1YiBvbiB4ODYgVXNlRGVmIHRoZSBzb3VyY2UuIElmIEZQIGlzIG5vdCBwcm90ZWN0ZWQgY29y
cmVjdGx5LCBpdCB3aWxsIGJlIG92ZXJyaWRkZW4gc2luY2UgaXQgaXMgdGhlIGxhc3QgdmlzaWJs
ZSB1c2UuCi0gICAgICAgIFZhbHVlKiBvZmZzZXQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAg
IFZhbHVlKiBmcCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRnJhbWVQb2ludGVyLCBP
cmlnaW4oKSk7Ci0gICAgICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFN1YiwgT3JpZ2luKCksIGZwLCBvZmZzZXQpOwotCi0gICAgICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOwotICAgICAg
ICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIDEpKTsKLSAgICB9Ci0gICAgewot
ICAgICAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLQotICAgICAgICByb290LT5hcHBlbmROZXc8U2xvdEJhc2VWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIHByb2MuYWRkU3RhY2tTbG90KDgpKTsKLQotICAgICAgICBWYWx1ZSogb2Zm
c2V0ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgICAgICBWYWx1ZSogZnAgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEZyYW1lUG9pbnRlciwgT3JpZ2luKCkpOwotICAgICAgICBWYWx1ZSog
b2Zmc2V0RlAgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCks
IG9mZnNldCwgZnApOwotICAgICAgICBWYWx1ZSogYXJnID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAg
ICAgICBWYWx1ZSogb2Zmc2V0QXJnID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQs
IE9yaWdpbigpLCBvZmZzZXQsIGFyZyk7Ci0gICAgICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIG9mZnNldEFyZywgb2Zmc2V0RlAp
OwotCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCByZXN1bHQpOwotICAgICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHBy
b2MsIDEsIDIpKTsKLSAgICB9Ci19Ci0KLXZvaWQgdGVzdFN0YWNrU2xvdCgpCi17Ci0gICAgUHJv
Y2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3Jp
Z2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxTbG90QmFzZVZhbHVlPihwcm9jLCBPcmln
aW4oKSwgcHJvYy5hZGRTdGFja1Nsb3QoMSkpKTsKLQotICAgIHZvaWQqIHN0YWNrU2xvdCA9IGNv
bXBpbGVBbmRSdW48dm9pZCo+KHByb2MpOwotICAgIENIRUNLKHN0YWNrU2xvdCA8ICZwcm9jKTsK
LSAgICBDSEVDSyhzdGFja1Nsb3QgPj0gYml0d2lzZV9jYXN0PGNoYXIqPigmcHJvYykgLSAxMDAw
MCk7Ci19Ci0KLXZvaWQgdGVzdExvYWRGcm9tRnJhbWVQb2ludGVyKCkKLXsKLSAgICBQcm9jZWR1
cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAgICAgIHBy
b2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBGcmFtZVBvaW50ZXIsIE9yaWdpbigpKSkpOwotCi0gICAgdm9p
ZCogZnAgPSBjb21waWxlQW5kUnVuPHZvaWQqPihwcm9jKTsKLSAgICB2b2lkKiBteUZQID0gX19i
dWlsdGluX2ZyYW1lX2FkZHJlc3MoMCk7Ci0gICAgQ0hFQ0soZnAgPD0gbXlGUCk7Ci0gICAgQ0hF
Q0soZnAgPj0gYml0d2lzZV9jYXN0PGNoYXIqPihteUZQKSAtIDEwMDAwKTsKLX0KLQotdm9pZCB0
ZXN0U3RvcmVMb2FkU3RhY2tTbG90KGludCB2YWx1ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsK
LSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgU2xvdEJhc2VW
YWx1ZSogc3RhY2sgPQotICAgICAgICByb290LT5hcHBlbmROZXc8U2xvdEJhc2VWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIHByb2MuYWRkU3RhY2tTbG90KHNpemVvZihpbnQpKSk7Ci0KLSAgICByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCks
Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBUcnVu
YywgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAotICAgICAgICBzdGFj
aywgMCk7Ci0gICAgCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFs
dWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgc3RhY2spKTsKLQotICAgIENIRUNLKGNv
bXBpbGVBbmRSdW48aW50Pihwcm9jLCB2YWx1ZSkgPT0gdmFsdWUpOwotfQotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBMb2FkZWRUeXBlLCB0eXBlbmFtZSBFZmZlY3RpdmVUeXBlPgotRWZmZWN0aXZlVHlw
ZSBtb2RlbExvYWQoRWZmZWN0aXZlVHlwZSB2YWx1ZSkKLXsKLSAgICB1bmlvbiB7Ci0gICAgICAg
IEVmZmVjdGl2ZVR5cGUgb3JpZ2luYWw7Ci0gICAgICAgIExvYWRlZFR5cGUgbG9hZGVkOwotICAg
IH0gdTsKLQotICAgIHUub3JpZ2luYWwgPSB2YWx1ZTsKLSAgICBpZiAoc3RkOjppc19zaWduZWQ8
TG9hZGVkVHlwZT46OnZhbHVlKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWZmZWN0aXZl
VHlwZT4odS5sb2FkZWQpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFZmZlY3RpdmVUeXBlPihz
dGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6Om1ha2VfdW5zaWduZWQ8RWZmZWN0aXZlVHlwZT46OnR5
cGU+KHUubG9hZGVkKSk7Ci19Ci0KLXRlbXBsYXRlPD4KLWZsb2F0IG1vZGVsTG9hZDxmbG9hdCwg
ZmxvYXQ+KGZsb2F0IHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfQotCi10ZW1wbGF0ZTw+Ci1kb3Vi
bGUgbW9kZWxMb2FkPGRvdWJsZSwgZG91YmxlPihkb3VibGUgdmFsdWUpIHsgcmV0dXJuIHZhbHVl
OyB9Ci0KLXRlbXBsYXRlPEIzOjpUeXBlIHR5cGUsIHR5cGVuYW1lIENUeXBlLCB0eXBlbmFtZSBJ
bnB1dFR5cGU+Ci12b2lkIHRlc3RMb2FkKEIzOjpPcGNvZGUgb3Bjb2RlLCBJbnB1dFR5cGUgdmFs
dWUpCi17Ci0gICAgLy8gU2ltcGxlIGxvYWQgZnJvbSBhbiBhYnNvbHV0ZSBhZGRyZXNzLgotICAg
IHsKLSAgICAgICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgIAotICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUoCi0gICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBvcGNv
ZGUsIHR5cGUsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25z
dFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnZhbHVlKSkpOwotCi0gICAgICAgIENIRUNLKGlz
SWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48Q1R5cGU+KHByb2MpLCBtb2RlbExvYWQ8Q1R5cGU+KHZh
bHVlKSkpOwotICAgIH0KLSAgICAKLSAgICAvLyBTaW1wbGUgbG9hZCBmcm9tIGFuIGFkZHJlc3Mg
aW4gYSByZWdpc3Rlci4KLSAgICB7Ci0gICAgICAgIFByb2NlZHVyZSBwcm9jOwotICAgICAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgICAgICAKLSAgICAgICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAg
ICAgICAgICAgcHJvYywgb3Bjb2RlLCB0eXBlLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCkpKTsKLQotICAgICAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5k
UnVuPENUeXBlPihwcm9jLCAmdmFsdWUpLCBtb2RlbExvYWQ8Q1R5cGU+KHZhbHVlKSkpOwotICAg
IH0KLSAgICAKLSAgICAvLyBTaW1wbGUgbG9hZCBmcm9tIGFuIGFkZHJlc3MgaW4gYSByZWdpc3Rl
ciwgYXQgYW4gb2Zmc2V0LgotICAgIHsKLSAgICAgICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgIAotICAgICAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAg
ICAgICAgICAgICBwcm9jLCBvcGNvZGUsIHR5cGUsIE9yaWdpbigpLAotICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKSwKLSAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQzMl90Pihz
aXplb2YoSW5wdXRUeXBlKSkpKTsKLQotICAgICAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxl
QW5kUnVuPENUeXBlPihwcm9jLCAmdmFsdWUgLSAxKSwgbW9kZWxMb2FkPENUeXBlPih2YWx1ZSkp
KTsKLSAgICB9Ci0KLSAgICAvLyBMb2FkIGZyb20gYSBzaW1wbGUgYmFzZS1pbmRleCB3aXRoIHZh
cmlvdXMgc2NhbGVzLgotICAgIGZvciAodW5zaWduZWQgbG9nU2NhbGUgPSAwOyBsb2dTY2FsZSA8
PSAzOyArK2xvZ1NjYWxlKSB7Ci0gICAgICAgIFByb2NlZHVyZSBwcm9jOwotICAgICAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAgICAgIHBy
b2MsIG9wY29kZSwgdHlwZSwgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKLSAg
ICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAotICAgICAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgICAgICAgICAgcHJvYywgU2hs
LCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBsb2dTY2FsZSkpKSkpOwotCi0gICAgICAgIENIRUNLKGlzSWRlbnRpY2FsKGNv
bXBpbGVBbmRSdW48Q1R5cGU+KHByb2MsICZ2YWx1ZSAtIDIsIChzaXplb2YoSW5wdXRUeXBlKSAq
IDIpID4+IGxvZ1NjYWxlKSwgbW9kZWxMb2FkPENUeXBlPih2YWx1ZSkpKTsKLSAgICB9Ci0KLSAg
ICAvLyBMb2FkIGZyb20gYSBzaW1wbGUgYmFzZS1pbmRleCB3aXRoIHZhcmlvdXMgc2NhbGVzLCBi
dXQgY29tbXV0ZWQuCi0gICAgZm9yICh1bnNpZ25lZCBsb2dTY2FsZSA9IDA7IGxvZ1NjYWxlIDw9
IDM7ICsrbG9nU2NhbGUpIHsKLSAgICAgICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKAotICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJv
Yywgb3Bjb2RlLCB0eXBlLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAotICAg
ICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAg
ICAgICAgICAgcHJvYywgU2hsLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBsb2dTY2FsZSkpLAotICAgICAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCkpKSk7Ci0KLSAgICAgICAgQ0hFQ0soaXNJZGVudGljYWwoY29t
cGlsZUFuZFJ1bjxDVHlwZT4ocHJvYywgJnZhbHVlIC0gMiwgKHNpemVvZihJbnB1dFR5cGUpICog
MikgPj4gbG9nU2NhbGUpLCBtb2RlbExvYWQ8Q1R5cGU+KHZhbHVlKSkpOwotICAgIH0KLX0KLQot
dGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZvaWQgdGVzdExvYWQoQjM6Ok9wY29kZSBvcGNvZGUsIGlu
dDMyX3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIHRlc3RMb2FkPEludDMyLCBUPihvcGNvZGUsIHZh
bHVlKTsKLX0KLQotdGVtcGxhdGU8QjM6OlR5cGUgdHlwZSwgdHlwZW5hbWUgVD4KLXZvaWQgdGVz
dExvYWQoVCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gdGVzdExvYWQ8dHlwZSwgVD4oTG9hZCwgdmFs
dWUpOwotfQotCi12b2lkIHRlc3RTdG9yZUZsb2F0KGRvdWJsZSBpbnB1dCkKLXsKLSAgICAvLyBT
aW1wbGUgc3RvcmUgZnJvbSBhbiBhZGRyZXNzIGluIGEgcmVnaXN0ZXIuCi0gICAgewotICAgICAg
ICBQcm9jZWR1cmUgcHJvYzsKLSAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKLSAgICAgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwotICAgICAg
ICBWYWx1ZSogYXJndW1lbnRBc0Zsb2F0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBE
b3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgYXJndW1lbnQpOwotCi0gICAgICAgIFZhbHVlKiBkZXN0
aW5hdGlvbkFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmUsIE9yaWdpbigpLCBhcmd1bWVudEFzRmxvYXQsIGRl
c3RpbmF0aW9uQWRkcmVzcyk7Ci0KLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCAwKSk7Ci0KLSAgICAgICAgZmxvYXQgb3V0cHV0ID0gMC47Ci0gICAgICAg
IENIRUNLKCFjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGlucHV0LCAmb3V0cHV0KSk7Ci0g
ICAgICAgIENIRUNLKGlzSWRlbnRpY2FsKHN0YXRpY19jYXN0PGZsb2F0PihpbnB1dCksIG91dHB1
dCkpOwotICAgIH0KLQotICAgIC8vIFNpbXBsZSBpbmRleGVkIHN0b3JlLgotICAgIHsKLSAgICAg
ICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7Ci0gICAgICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKLSAgICAg
ICAgVmFsdWUqIGFyZ3VtZW50QXNGbG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
RG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIGFyZ3VtZW50KTsKLQotICAgICAgICBWYWx1ZSogZGVz
dGluYXRpb25CYXNlQWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAgVmFsdWUqIGlu
ZGV4ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAgICBWYWx1ZSogc2NhbGVkSW5kZXggPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgU2hsLCBPcmlnaW4oKSwKLSAg
ICAgICAgICAgIGluZGV4LAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIDIpKTsKLSAgICAgICAgVmFsdWUqIGRlc3RpbmF0aW9uQWRkcmVz
cyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgc2NhbGVkSW5k
ZXgsIGRlc3RpbmF0aW9uQmFzZUFkZHJlc3MpOwotCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxN
ZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmUsIE9yaWdpbigpLCBhcmd1bWVudEFzRmxvYXQsIGRlc3Rp
bmF0aW9uQWRkcmVzcyk7Ci0KLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHBy
b2MsIFJldHVybiwgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAwKSk7Ci0KLSAgICAgICAgZmxvYXQgb3V0cHV0ID0gMC47Ci0gICAgICAgIENI
RUNLKCFjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGlucHV0LCAmb3V0cHV0IC0gMSwgMSkp
OwotICAgICAgICBDSEVDSyhpc0lkZW50aWNhbChzdGF0aWNfY2FzdDxmbG9hdD4oaW5wdXQpLCBv
dXRwdXQpKTsKLSAgICB9Ci19Ci0KLXZvaWQgdGVzdFN0b3JlRG91YmxlQ29uc3RhbnRBc0Zsb2F0
KGRvdWJsZSBpbnB1dCkKLXsKLSAgICAvLyBTaW1wbGUgc3RvcmUgZnJvbSBhbiBhZGRyZXNzIGlu
IGEgcmVnaXN0ZXIuCi0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29u
c3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGlucHV0KTsKLSAgICBWYWx1ZSogdmFsdWVB
c0Zsb2F0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmln
aW4oKSwgdmFsdWUpOwotCi0gICAgVmFsdWUqIGRlc3RpbmF0aW9uQWRkcmVzcyA9IHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmUs
IE9yaWdpbigpLCB2YWx1ZUFzRmxvYXQsIGRlc3RpbmF0aW9uQWRkcmVzcyk7Ci0KLSAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKLQotICAgIGZsb2F0IG91
dHB1dCA9IDAuOwotICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGlucHV0
LCAmb3V0cHV0KSk7Ci0gICAgQ0hFQ0soaXNJZGVudGljYWwoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGlu
cHV0KSwgb3V0cHV0KSk7Ci19Ci0KLXZvaWQgdGVzdFNwaWxsR1AoKQotewotICAgIFByb2NlZHVy
ZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBW
ZWN0b3I8VmFsdWUqPiBzb3VyY2VzOwotICAgIHNvdXJjZXMuYXBwZW5kKHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSk7Ci0gICAgc291cmNlcy5hcHBlbmQocm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKLQotICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCAzMDsgKytpKSB7Ci0gICAgICAgIHNvdXJjZXMuYXBwZW5kKAotICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBzb3Vy
Y2VzW3NvdXJjZXMuc2l6ZSgpIC0gMV0sIHNvdXJjZXNbc291cmNlcy5zaXplKCkgLSAyXSkKLSAg
ICAgICAgKTsKLSAgICB9Ci0KLSAgICBWYWx1ZSogdG90YWwgPSByb290LT5hcHBlbmROZXc8Q29u
c3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCk7Ci0gICAgZm9yIChWYWx1ZSogdmFsdWUgOiBz
b3VyY2VzKQotICAgICAgICB0b3RhbCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRk
LCBPcmlnaW4oKSwgdG90YWwsIHZhbHVlKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCB0b3RhbCk7Ci0gICAgY29tcGlsZUFuZFJ1bjxp
bnQ+KHByb2MsIDEsIDIpOwotfQotCi12b2lkIHRlc3RTcGlsbEZQKCkKLXsKLSAgICBQcm9jZWR1
cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAg
VmVjdG9yPFZhbHVlKj4gc291cmNlczsKLSAgICBzb3VyY2VzLmFwcGVuZChyb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBS
MCkpOwotICAgIHNvdXJjZXMuYXBwZW5kKHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIxKSk7Ci0KLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgMzA7ICsraSkgewotICAgICAgICBzb3VyY2VzLmFwcGVuZCgKLSAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgc291
cmNlc1tzb3VyY2VzLnNpemUoKSAtIDFdLCBzb3VyY2VzW3NvdXJjZXMuc2l6ZSgpIC0gMl0pCi0g
ICAgICAgICk7Ci0gICAgfQotCi0gICAgVmFsdWUqIHRvdGFsID0gcm9vdC0+YXBwZW5kTmV3PENv
bnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwLik7Ci0gICAgZm9yIChWYWx1ZSogdmFs
dWUgOiBzb3VyY2VzKQotICAgICAgICB0b3RhbCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQWRkLCBPcmlnaW4oKSwgdG90YWwsIHZhbHVlKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCB0b3RhbCk7Ci0gICAgY29tcGlsZUFu
ZFJ1bjxkb3VibGU+KHByb2MsIDEuMSwgMi41KTsKLX0KLQotdm9pZCB0ZXN0SW50MzJUb0RvdWJs
ZVBhcnRpYWxSZWdpc3RlclN0YWxsKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGxvb3AgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogZG9uZSA9IHByb2MuYWRkQmxvY2soKTsK
LQotICAgIC8vIEhlYWQuCi0gICAgVmFsdWUqIHRvdGFsID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0
RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwLik7Ci0gICAgVmFsdWUqIGNvdW50ZXIgPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7Ci0gICAgVXBzaWxvblZhbHVlKiBvcmlnaW5hbFRvdGFsID0gcm9vdC0+
YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRvdGFsKTsKLSAgICBVcHNp
bG9uVmFsdWUqIG9yaWdpbmFsQ291bnRlciA9IHJvb3QtPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBjb3VudGVyKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUocHJvYywgSnVtcCwgT3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayhsb29wKSk7Ci0KLSAgICAv
LyBMb29wLgotICAgIFZhbHVlKiBsb29wQ291bnRlciA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgUGhpLCBJbnQ2NCwgT3JpZ2luKCkpOwotICAgIFZhbHVlKiBsb29wVG90YWwgPSBsb29w
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFBoaSwgRG91YmxlLCBPcmlnaW4oKSk7Ci0gICAgb3Jp
Z2luYWxDb3VudGVyLT5zZXRQaGkobG9vcENvdW50ZXIpOwotICAgIG9yaWdpbmFsVG90YWwtPnNl
dFBoaShsb29wVG90YWwpOwotCi0gICAgVmFsdWUqIHRydW5jYXRlZENvdW50ZXIgPSBsb29wLT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwgbG9vcENvdW50ZXIpOwotICAg
IFZhbHVlKiBkb3VibGVDb3VudGVyID0gbG9vcC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJVG9E
LCBPcmlnaW4oKSwgdHJ1bmNhdGVkQ291bnRlcik7Ci0gICAgVmFsdWUqIHVwZGF0ZWRUb3RhbCA9
IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgZG91YmxlQ291bnRl
ciwgbG9vcFRvdGFsKTsKLSAgICBVcHNpbG9uVmFsdWUqIHVwZGF0ZWRUb3RhbFVwc2lsb24gPSBs
b29wLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdXBkYXRlZFRvdGFs
KTsKLSAgICB1cGRhdGVkVG90YWxVcHNpbG9uLT5zZXRQaGkobG9vcFRvdGFsKTsKLQotICAgIFZh
bHVlKiBkZWNDb3VudGVyID0gbG9vcC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdp
bigpLCBsb29wQ291bnRlciwgbG9vcC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIDEpKTsKLSAgICBVcHNpbG9uVmFsdWUqIGRlY0NvdW50ZXJVcHNpbG9uID0gbG9vcC0+
YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4ocHJvYywgT3JpZ2luKCksIGRlY0NvdW50ZXIpOwotICAg
IGRlY0NvdW50ZXJVcHNpbG9uLT5zZXRQaGkobG9vcENvdW50ZXIpOwotICAgIGxvb3AtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKLSAgICAg
ICAgZGVjQ291bnRlciwKLSAgICAgICAgRnJlcXVlbnRlZEJsb2NrKGxvb3ApLCBGcmVxdWVudGVk
QmxvY2soZG9uZSkpOwotCi0gICAgLy8gVGFpbC4KLSAgICBkb25lLT5hcHBlbmROZXdDb250cm9s
VmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgdXBkYXRlZFRvdGFsKTsKLSAgICBDSEVDSyhp
c0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgMTAwMDAwKSwgNTAwMDA1MDAw
MC4pKTsKLX0KLQotdm9pZCB0ZXN0SW50MzJUb0RvdWJsZVBhcnRpYWxSZWdpc3RlcldpdGhvdXRT
dGFsbCgpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBsb29wID0gcHJvYy5hZGRCbG9jaygpOwot
ICAgIEJhc2ljQmxvY2sqIGRvbmUgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICAvLyBIZWFkLgot
ICAgIFZhbHVlKiB0b3RhbCA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgMC4pOwotICAgIFZhbHVlKiBjb3VudGVyID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwot
ICAgIFVwc2lsb25WYWx1ZSogb3JpZ2luYWxUb3RhbCA9IHJvb3QtPmFwcGVuZE5ldzxVcHNpbG9u
VmFsdWU+KHByb2MsIE9yaWdpbigpLCB0b3RhbCk7Ci0gICAgVXBzaWxvblZhbHVlKiBvcmlnaW5h
bENvdW50ZXIgPSByb290LT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
Y291bnRlcik7Ci0gICAgdWludDY0X3QgZm9yUGFkZGluZ0lucHV0OwotICAgIFZhbHVlKiBmb3JQ
YWRkaW5nSW5wdXRBZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAmZm9yUGFkZGluZ0lucHV0KTsKLSAgICB1aW50NjRfdCBmb3JQYWRkaW5nT3V0
cHV0OwotICAgIFZhbHVlKiBmb3JQYWRkaW5nT3V0cHV0QWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5l
dzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJmZvclBhZGRpbmdPdXRwdXQpOwotICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4oKSwgRnJlcXVl
bnRlZEJsb2NrKGxvb3ApKTsKLQotICAgIC8vIExvb3AuCi0gICAgVmFsdWUqIGxvb3BDb3VudGVy
ID0gbG9vcC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBQaGksIEludDY0LCBPcmlnaW4oKSk7Ci0g
ICAgVmFsdWUqIGxvb3BUb3RhbCA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUGhpLCBE
b3VibGUsIE9yaWdpbigpKTsKLSAgICBvcmlnaW5hbENvdW50ZXItPnNldFBoaShsb29wQ291bnRl
cik7Ci0gICAgb3JpZ2luYWxUb3RhbC0+c2V0UGhpKGxvb3BUb3RhbCk7Ci0KLSAgICBWYWx1ZSog
dHJ1bmNhdGVkQ291bnRlciA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9y
aWdpbigpLCBsb29wQ291bnRlcik7Ci0gICAgVmFsdWUqIGRvdWJsZUNvdW50ZXIgPSBsb29wLT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIElUb0QsIE9yaWdpbigpLCB0cnVuY2F0ZWRDb3VudGVyKTsK
LSAgICBWYWx1ZSogdXBkYXRlZFRvdGFsID0gbG9vcC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBB
ZGQsIE9yaWdpbigpLCBkb3VibGVDb3VudGVyLCBsb29wVG90YWwpOwotCi0gICAgLy8gQWRkIGVu
b3VnaCBwYWRkaW5nIGluc3RydWN0aW9ucyB0byBhdm9pZCBhIHN0YWxsLgotICAgIFZhbHVlKiBs
b2FkUGFkZGluZyA9IGxvb3AtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50
NjQsIE9yaWdpbigpLCBmb3JQYWRkaW5nSW5wdXRBZGRyZXNzKTsKLSAgICBWYWx1ZSogcGFkZGlu
ZyA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0WG9yLCBPcmlnaW4oKSwgbG9hZFBh
ZGRpbmcsIGxvb3BDb3VudGVyKTsKLSAgICBwYWRkaW5nID0gbG9vcC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBBZGQsIE9yaWdpbigpLCBwYWRkaW5nLCBsb29wQ291bnRlcik7Ci0gICAgcGFkZGlu
ZyA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0T3IsIE9yaWdpbigpLCBwYWRkaW5n
LCBsb29wQ291bnRlcik7Ci0gICAgcGFkZGluZyA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgU3ViLCBPcmlnaW4oKSwgcGFkZGluZywgbG9vcENvdW50ZXIpOwotICAgIHBhZGRpbmcgPSBs
b29wLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdFhvciwgT3JpZ2luKCksIHBhZGRpbmcsIGxv
b3BDb3VudGVyKTsKLSAgICBwYWRkaW5nID0gbG9vcC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBB
ZGQsIE9yaWdpbigpLCBwYWRkaW5nLCBsb29wQ291bnRlcik7Ci0gICAgcGFkZGluZyA9IGxvb3At
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0T3IsIE9yaWdpbigpLCBwYWRkaW5nLCBsb29wQ291
bnRlcik7Ci0gICAgcGFkZGluZyA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBP
cmlnaW4oKSwgcGFkZGluZywgbG9vcENvdW50ZXIpOwotICAgIHBhZGRpbmcgPSBsb29wLT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdFhvciwgT3JpZ2luKCksIHBhZGRpbmcsIGxvb3BDb3VudGVy
KTsKLSAgICBwYWRkaW5nID0gbG9vcC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdp
bigpLCBwYWRkaW5nLCBsb29wQ291bnRlcik7Ci0gICAgcGFkZGluZyA9IGxvb3AtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgQml0T3IsIE9yaWdpbigpLCBwYWRkaW5nLCBsb29wQ291bnRlcik7Ci0g
ICAgcGFkZGluZyA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwg
cGFkZGluZywgbG9vcENvdW50ZXIpOwotICAgIGxvb3AtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
cHJvYywgU3RvcmUsIE9yaWdpbigpLCBwYWRkaW5nLCBmb3JQYWRkaW5nT3V0cHV0QWRkcmVzcyk7
Ci0KLSAgICBVcHNpbG9uVmFsdWUqIHVwZGF0ZWRUb3RhbFVwc2lsb24gPSBsb29wLT5hcHBlbmRO
ZXc8VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdXBkYXRlZFRvdGFsKTsKLSAgICB1cGRh
dGVkVG90YWxVcHNpbG9uLT5zZXRQaGkobG9vcFRvdGFsKTsKLQotICAgIFZhbHVlKiBkZWNDb3Vu
dGVyID0gbG9vcC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBsb29wQ291
bnRlciwgbG9vcC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKTsK
LSAgICBVcHNpbG9uVmFsdWUqIGRlY0NvdW50ZXJVcHNpbG9uID0gbG9vcC0+YXBwZW5kTmV3PFVw
c2lsb25WYWx1ZT4ocHJvYywgT3JpZ2luKCksIGRlY0NvdW50ZXIpOwotICAgIGRlY0NvdW50ZXJV
cHNpbG9uLT5zZXRQaGkobG9vcENvdW50ZXIpOwotICAgIGxvb3AtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKLSAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKLSAgICAgICAgZGVjQ291bnRl
ciwKLSAgICAgICAgRnJlcXVlbnRlZEJsb2NrKGxvb3ApLCBGcmVxdWVudGVkQmxvY2soZG9uZSkp
OwotCi0gICAgLy8gVGFpbC4KLSAgICBkb25lLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgdXBkYXRlZFRvdGFsKTsKLSAgICBDSEVDSyhpc0lkZW50aWNhbChj
b21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgMTAwMDAwKSwgNTAwMDA1MDAwMC4pKTsKLX0KLQot
dm9pZCB0ZXN0QnJhbmNoKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJv
Yy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygp
OwotCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBCcmFu
Y2gsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAg
ICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwK
LSAgICAgICAgRnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VD
YXNlKSk7Ci0KLSAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnN0
MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKTsKLQotICAgIGVsc2VDYXNlLT5hcHBlbmROZXdD
b250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIGVs
c2VDYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwotCi0g
ICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAgQ0hFQ0soaW52b2tlPGludD4o
KmNvZGUsIDQyKSA9PSAxKTsKLSAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgMCkgPT0gMCk7
Ci19Ci0KLXZvaWQgdGVzdEJyYW5jaFB0cigpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiB0aGVu
Q2FzZSA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2Mu
YWRkQmxvY2soKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAg
cHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAotICAgICAg
ICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsK
LQotICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCi0gICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgMSkpOwotCi0gICAgZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgZWxzZUNhc2Ut
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7Ci0KLSAgICBhdXRv
IGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwg
c3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDQyKSkgPT0gMSk7Ci0gICAgQ0hFQ0soaW52b2tlPGludD4o
KmNvZGUsIHN0YXRpY19jYXN0PGludHB0cl90PigwKSkgPT0gMCk7Ci19Ci0KLXZvaWQgdGVzdERp
YW1vbmQoKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2Nr
KCk7Ci0gICAgQmFzaWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFz
aWNCbG9jayogZG9uZSA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKLSAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwK
LSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCi0gICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0
aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOwotCi0gICAgVXBzaWxvblZhbHVl
KiB0aGVuUmVzdWx0ID0gdGhlbkNhc2UtPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KAotICAgICAg
ICBwcm9jLCBPcmlnaW4oKSwgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAxKSk7Ci0gICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9j
LCBKdW1wLCBPcmlnaW4oKSwgRnJlcXVlbnRlZEJsb2NrKGRvbmUpKTsKLQotICAgIFVwc2lsb25W
YWx1ZSogZWxzZVJlc3VsdCA9IGVsc2VDYXNlLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPigKLSAg
ICAgICAgcHJvYywgT3JpZ2luKCksIGVsc2VDYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgMCkpOwotICAgIGVsc2VDYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUo
cHJvYywgSnVtcCwgT3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayhkb25lKSk7Ci0KLSAgICBWYWx1
ZSogcGhpID0gZG9uZS0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBQaGksIEludDMyLCBPcmlnaW4o
KSk7Ci0gICAgdGhlblJlc3VsdC0+c2V0UGhpKHBoaSk7Ci0gICAgZWxzZVJlc3VsdC0+c2V0UGhp
KHBoaSk7Ci0gICAgZG9uZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIHBoaSk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBD
SEVDSyhpbnZva2U8aW50PigqY29kZSwgNDIpID09IDEpOwotICAgIENIRUNLKGludm9rZTxpbnQ+
KCpjb2RlLCAwKSA9PSAwKTsKLX0KLQotdm9pZCB0ZXN0QnJhbmNoTm90RXF1YWwoKQotewotICAg
IFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
Ci0gICAgQmFzaWNCbG9jayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNC
bG9jayogZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICByb290LT5hcHBlbmROZXdD
b250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCi0gICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBOb3RFcXVhbCwgT3JpZ2lu
KCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAg
IHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkp
LAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIDApKSwKLSAgICAgICAgRnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJs
b2NrKGVsc2VDYXNlKSk7Ci0KLSAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAot
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICB0aGVuQ2FzZS0+YXBwZW5k
TmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKTsKLQotICAgIGVsc2VDYXNlLT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0g
ICAgICAgIGVsc2VDYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
MCkpOwotCi0gICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAgQ0hFQ0soaW52
b2tlPGludD4oKmNvZGUsIDQyKSA9PSAxKTsKLSAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwg
MCkgPT0gMCk7Ci19Ci0KLXZvaWQgdGVzdEJyYW5jaE5vdEVxdWFsQ29tbXV0ZSgpCi17Ci0gICAg
UHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
LSAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Js
b2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKLSAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIE5vdEVxdWFsLCBPcmlnaW4o
KSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCAwKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAg
ICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSkpLAotICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxv
Y2soZWxzZUNhc2UpKTsKLQotICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0g
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHRoZW5DYXNlLT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpOwotCi0gICAgZWxzZUNhc2UtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAg
ICAgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAw
KSk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBDSEVDSyhpbnZv
a2U8aW50PigqY29kZSwgNDIpID09IDEpOwotICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAw
KSA9PSAwKTsKLX0KLQotdm9pZCB0ZXN0QnJhbmNoTm90RXF1YWxOb3RFcXVhbCgpCi17Ci0gICAg
UHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
LSAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Js
b2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKLSAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIE5vdEVxdWFsLCBPcmlnaW4o
KSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAg
cHJvYywgTm90RXF1YWwsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAg
ICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKLSAgICAgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpLAotICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKSwKLSAg
ICAgICAgRnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNl
KSk7Ci0KLSAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKTsKLQotICAgIGVsc2VDYXNlLT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIGVsc2VD
YXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwotCi0gICAg
YXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAgQ0hFQ0soaW52b2tlPGludD4oKmNv
ZGUsIDQyKSA9PSAxKTsKLSAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgMCkgPT0gMCk7Ci19
Ci0KLXZvaWQgdGVzdEJyYW5jaEVxdWFsKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIHRoZW5D
YXNlID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5h
ZGRCbG9jaygpOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBw
cm9jLCBCcmFuY2gsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAot
ICAgICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0g
ICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSksCi0gICAgICAgIEZyZXF1ZW50
ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOwotCi0gICAgdGhl
bkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKLSAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCAwKSk7Ci0KLSAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAg
ICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKTsKLQotICAgIGF1dG8gY29kZSA9IGNv
bXBpbGVQcm9jKHByb2MpOwotICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCA0MikgPT0gMSk7
Ci0gICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsIDApID09IDApOwotfQotCi12b2lkIHRlc3RC
cmFuY2hFcXVhbEVxdWFsKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJv
Yy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygp
OwotCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBCcmFu
Y2gsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAg
ICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBFcXVhbCwgT3JpZ2luKCksCi0gICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICAgICAgcHJvYywg
VHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAot
ICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCAwKSksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgMCkpLAotICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVx
dWVudGVkQmxvY2soZWxzZUNhc2UpKTsKLQotICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9s
VmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHRoZW5DYXNl
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpOwotCi0gICAgZWxz
ZUNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKLSAgICAgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCAwKSk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBD
SEVDSyhpbnZva2U8aW50PigqY29kZSwgNDIpID09IDEpOwotICAgIENIRUNLKGludm9rZTxpbnQ+
KCpjb2RlLCAwKSA9PSAwKTsKLX0KLQotdm9pZCB0ZXN0QnJhbmNoRXF1YWxDb21tdXRlKCkKLXsK
LSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOwotICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJh
c2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAotICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdp
bigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIDApLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAg
ICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApKSksCi0gICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRC
bG9jayhlbHNlQ2FzZSkpOwotCi0gICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
LSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgdGhlbkNhc2UtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7Ci0KLSAgICBlbHNlQ2FzZS0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAot
ICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IDEpKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotICAgIENIRUNLKGlu
dm9rZTxpbnQ+KCpjb2RlLCA0MikgPT0gMSk7Ci0gICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUs
IDApID09IDApOwotfQotCi12b2lkIHRlc3RCcmFuY2hFcXVhbEVxdWFsMSgpCi17Ci0gICAgUHJv
Y2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAg
ICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2Nr
KiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZSgKLSAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4oKSwKLSAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywg
RXF1YWwsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
Ci0gICAgICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpLAotICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKSwKLSAgICAgICAgRnJl
cXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNlKSk7Ci0KLSAg
ICB0aGVuQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAotICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIDApKTsKLQotICAgIGVsc2VDYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUo
Ci0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIGVsc2VDYXNlLT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpOwotCi0gICAgYXV0byBjb2Rl
ID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsIDQyKSA9
PSAxKTsKLSAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgMCkgPT0gMCk7Ci19Ci0KLXZvaWQg
dGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVyZWRBcmdzKGRvdWJsZSBhLCBkb3VibGUgYikKLXsKLSAg
ICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OwotICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2lj
QmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgVmFsdWUqIGFyZ3VtZW50
QSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBS
SW5mbzo6YXJndW1lbnRGUFIwKTsKLSAgICBWYWx1ZSogYXJndW1lbnRCID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQ
UjEpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgQnJh
bmNoLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAg
ICAgIHByb2MsIEVxdWFsT3JVbm9yZGVyZWQsIE9yaWdpbigpLAotICAgICAgICAgICAgYXJndW1l
bnRBLAotICAgICAgICAgICAgYXJndW1lbnRCKSwKLSAgICAgICAgRnJlcXVlbnRlZEJsb2NrKHRo
ZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNlKSk7Ci0KLSAgICB0aGVuQ2FzZS0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAg
ICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQy
KSk7Ci0KLSAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xMykpOwotCi0gICAgaW50NjRfdCBleHBlY3RlZCA9IChz
dGQ6OmlzdW5vcmRlcmVkKGEsIGIpIHx8IGEgPT0gYikgPyA0MiA6IC0xMzsKLSAgICBDSEVDSyhj
b21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEsIGIpID09IGV4cGVjdGVkKTsKLX0KLQotdm9p
ZCB0ZXN0QnJhbmNoRXF1YWxPclVub3JkZXJlZEFyZ3MoZmxvYXQgYSwgZmxvYXQgYikKLXsKLSAg
ICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OwotICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2lj
QmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgVmFsdWUqIGFyZ3VtZW50
QSA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgRmxvYXQsIE9yaWdp
bigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZhbHVlKiBhcmd1bWVudEIgPSBy
b290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEZsb2F0LCBPcmlnaW4oKSwK
LSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKLSAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEVxdWFsT3JVbm9yZGVyZWQsIE9yaWdp
bigpLAotICAgICAgICAgICAgYXJndW1lbnRBLAotICAgICAgICAgICAgYXJndW1lbnRCKSwKLSAg
ICAgICAgRnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNl
KSk7Ci0KLSAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKSk7Ci0KLSAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICBlbHNl
Q2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xMykpOwotCi0g
ICAgaW50NjRfdCBleHBlY3RlZCA9IChzdGQ6OmlzdW5vcmRlcmVkKGEsIGIpIHx8IGEgPT0gYikg
PyA0MiA6IC0xMzsKLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsICZhLCAm
YikgPT0gZXhwZWN0ZWQpOwotfQotCi12b2lkIHRlc3RCcmFuY2hOb3RFcXVhbEFuZE9yZGVyZWRB
cmdzKGRvdWJsZSBhLCBkb3VibGUgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNl
ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRC
bG9jaygpOwotCi0gICAgVmFsdWUqIGFyZ3VtZW50QSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKLSAgICBW
YWx1ZSogYXJndW1lbnRCID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOwotICAgIFZhbHVlKiBlcXVhbE9yVW5v
cmRlcmVkID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgRXF1YWxPclVu
b3JkZXJlZCwgT3JpZ2luKCksCi0gICAgICAgIGFyZ3VtZW50QSwKLSAgICAgICAgYXJndW1lbnRC
KTsKLSAgICBWYWx1ZSogbm90RXF1YWxBbmRPcmRlcmVkID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKLSAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCksCi0gICAgICAgIGVxdWFsT3JVbm9y
ZGVyZWQpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywg
QnJhbmNoLCBPcmlnaW4oKSwKLSAgICAgICAgbm90RXF1YWxBbmRPcmRlcmVkLAotICAgICAgICBG
cmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKLQot
ICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCi0gICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgNDIpKTsKLQotICAgIGVsc2VDYXNlLT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIGVsc2VDYXNlLT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTEzKSk7Ci0KLSAgICBpbnQ2
NF90IGV4cGVjdGVkID0gKCFzdGQ6OmlzdW5vcmRlcmVkKGEsIGIpICYmIGEgIT0gYikgPyA0MiA6
IC0xMzsKLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEsIGIpID09IGV4
cGVjdGVkKTsKLX0KLQotdm9pZCB0ZXN0QnJhbmNoTm90RXF1YWxBbmRPcmRlcmVkQXJncyhmbG9h
dCBhLCBmbG9hdCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogdGhlbkNhc2UgPSBwcm9jLmFk
ZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7Ci0K
LSAgICBWYWx1ZSogYXJndW1lbnRBID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9j
LCBMb2FkLCBGbG9hdCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAg
VmFsdWUqIGFyZ3VtZW50QiA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9h
ZCwgRmxvYXQsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOwotICAgIFZhbHVl
KiBlcXVhbE9yVW5vcmRlcmVkID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJv
YywgRXF1YWxPclVub3JkZXJlZCwgT3JpZ2luKCksCi0gICAgICAgIGFyZ3VtZW50QSwKLSAgICAg
ICAgYXJndW1lbnRCKTsKLSAgICBWYWx1ZSogbm90RXF1YWxBbmRPcmRlcmVkID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAotICAgICAgICBy
b290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCksCi0gICAgICAg
IGVxdWFsT3JVbm9yZGVyZWQpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAg
ICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKLSAgICAgICAgbm90RXF1YWxBbmRPcmRlcmVk
LAotICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxz
ZUNhc2UpKTsKLQotICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAg
IHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDIpKTsKLQotICAgIGVsc2VDYXNlLT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAg
IGVsc2VDYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTEzKSk7
Ci0KLSAgICBpbnQ2NF90IGV4cGVjdGVkID0gKCFzdGQ6OmlzdW5vcmRlcmVkKGEsIGIpICYmIGEg
IT0gYikgPyA0MiA6IC0xMzsKLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2Ms
ICZhLCAmYikgPT0gZXhwZWN0ZWQpOwotfQotCi12b2lkIHRlc3RCcmFuY2hFcXVhbE9yVW5vcmRl
cmVkRG91YmxlQXJnSW1tKGRvdWJsZSBhLCBkb3VibGUgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJv
YzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxv
Y2sqIHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNl
ID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgVmFsdWUqIGFyZ3VtZW50QSA9IHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRG
UFIwKTsKLSAgICBWYWx1ZSogYXJndW1lbnRCID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91Ymxl
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCi0gICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBFcXVhbE9yVW5vcmRlcmVkLCBPcmlnaW4o
KSwKLSAgICAgICAgICAgIGFyZ3VtZW50QSwKLSAgICAgICAgICAgIGFyZ3VtZW50QiksCi0gICAg
ICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkp
OwotCi0gICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCA0MikpOwotCi0gICAgZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgZWxzZUNh
c2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMTMpKTsKLQotICAg
IGludDY0X3QgZXhwZWN0ZWQgPSAoc3RkOjppc3Vub3JkZXJlZChhLCBiKSB8fCBhID09IGIpID8g
NDIgOiAtMTM7Ci0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhKSA9PSBl
eHBlY3RlZCk7Ci19Ci0KLXZvaWQgdGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVyZWRGbG9hdEFyZ0lt
bShmbG9hdCBhLCBmbG9hdCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogdGhlbkNhc2UgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2Nr
KCk7Ci0KLSAgICBWYWx1ZSogYXJndW1lbnRBID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVl
Pihwcm9jLCBMb2FkLCBGbG9hdCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7
Ci0gICAgVmFsdWUqIGFyZ3VtZW50QiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+
KHByb2MsIE9yaWdpbigpLCBiKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
LSAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEVxdWFsT3JVbm9yZGVyZWQsIE9yaWdpbigpLAot
ICAgICAgICAgICAgYXJndW1lbnRBLAotICAgICAgICAgICAgYXJndW1lbnRCKSwKLSAgICAgICAg
RnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNlKSk7Ci0K
LSAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAotICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIDQyKSk7Ci0KLSAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICBlbHNlQ2FzZS0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xMykpOwotCi0gICAgaW50
NjRfdCBleHBlY3RlZCA9IChzdGQ6OmlzdW5vcmRlcmVkKGEsIGIpIHx8IGEgPT0gYikgPyA0MiA6
IC0xMzsKLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsICZhKSA9PSBleHBl
Y3RlZCk7Ci19Ci0KLXZvaWQgdGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVyZWREb3VibGVJbW1zKGRv
dWJsZSBhLCBkb3VibGUgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJv
Yy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygp
OwotCi0gICAgVmFsdWUqIGFyZ3VtZW50QSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50QiA9IHJvb3QtPmFw
cGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7Ci0gICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAot
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgRXF1YWxP
clVub3JkZXJlZCwgT3JpZ2luKCksCi0gICAgICAgICAgICBhcmd1bWVudEEsCi0gICAgICAgICAg
ICBhcmd1bWVudEIpLAotICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVu
dGVkQmxvY2soZWxzZUNhc2UpKTsKLQotICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHRoZW5DYXNlLT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDIpKTsKLQotICAgIGVsc2VD
YXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksCi0gICAgICAgIGVsc2VDYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmln
aW4oKSwgLTEzKSk7Ci0KLSAgICBpbnQ2NF90IGV4cGVjdGVkID0gKHN0ZDo6aXN1bm9yZGVyZWQo
YSwgYikgfHwgYSA9PSBiKSA/IDQyIDogLTEzOwotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50
NjRfdD4ocHJvYykgPT0gZXhwZWN0ZWQpOwotfQotCi12b2lkIHRlc3RCcmFuY2hFcXVhbE9yVW5v
cmRlcmVkRmxvYXRJbW1zKGZsb2F0IGEsIGZsb2F0IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7
Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2Nr
KiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9
IHByb2MuYWRkQmxvY2soKTsKLQotICAgIFZhbHVlKiBhcmd1bWVudEEgPSByb290LT5hcHBlbmRO
ZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7Ci0gICAgVmFsdWUqIGFyZ3Vt
ZW50QiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBi
KTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgQnJh
bmNoLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAg
ICAgIHByb2MsIEVxdWFsT3JVbm9yZGVyZWQsIE9yaWdpbigpLAotICAgICAgICAgICAgYXJndW1l
bnRBLAotICAgICAgICAgICAgYXJndW1lbnRCKSwKLSAgICAgICAgRnJlcXVlbnRlZEJsb2NrKHRo
ZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNlKSk7Ci0KLSAgICB0aGVuQ2FzZS0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAg
ICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQy
KSk7Ci0KLSAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xMykpOwotCi0gICAgaW50NjRfdCBleHBlY3RlZCA9IChz
dGQ6OmlzdW5vcmRlcmVkKGEsIGIpIHx8IGEgPT0gYikgPyA0MiA6IC0xMzsKLSAgICBDSEVDSyhj
b21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MpID09IGV4cGVjdGVkKTsKLX0KLQotdm9pZCB0ZXN0
QnJhbmNoRXF1YWxPclVub3JkZXJlZEZsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uKGZs
b2F0IGEsIGZsb2F0IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsK
LQotICAgIFZhbHVlKiBhcmd1bWVudDEgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHBy
b2MsIExvYWQsIEZsb2F0LCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAg
ICBWYWx1ZSogYXJndW1lbnQyID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBM
b2FkLCBGbG9hdCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Ci0gICAgVmFs
dWUqIGFyZ3VtZW50MUFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9h
dFRvRG91YmxlLCBPcmlnaW4oKSwgYXJndW1lbnQxKTsKLSAgICBWYWx1ZSogYXJndW1lbnQyQXNE
b3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdp
bigpLCBhcmd1bWVudDIpOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAg
ICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAotICAgICAgICAgICAgcHJvYywgRXF1YWxPclVub3JkZXJlZCwgT3JpZ2luKCksCi0gICAg
ICAgICAgICBhcmd1bWVudDFBc0RvdWJsZSwKLSAgICAgICAgICAgIGFyZ3VtZW50MkFzRG91Ymxl
KSwKLSAgICAgICAgRnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVs
c2VDYXNlKSk7Ci0KLSAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENv
bnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKSk7Ci0KLSAgICBlbHNlQ2FzZS0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAg
ICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xMykp
OwotCi0gICAgaW50NjRfdCBleHBlY3RlZCA9IChzdGQ6OmlzdW5vcmRlcmVkKGEsIGIpIHx8IGEg
PT0gYikgPyA0MiA6IC0xMzsKLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2Ms
ICZhLCAmYikgPT0gZXhwZWN0ZWQpOwotfQotCi12b2lkIHRlc3RCcmFuY2hGb2xkKGludCB2YWx1
ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOwot
ICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAot
ICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdmFs
dWUpLAotICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2so
ZWxzZUNhc2UpKTsKLQotICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpOwotCi0gICAgZWxzZUNhc2UtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAg
ICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7
Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYykgPT0gISF2YWx1ZSk7Ci19Ci0K
LXZvaWQgdGVzdERpYW1vbmRGb2xkKGludCB2YWx1ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsK
LSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sq
IHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0g
cHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGRvbmUgPSBwcm9jLmFkZEJsb2NrKCk7
Ci0KLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIEJyYW5j
aCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCB2YWx1ZSksCi0gICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZy
ZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOwotCi0gICAgVXBzaWxvblZhbHVlKiB0aGVuUmVzdWx0
ID0gdGhlbkNhc2UtPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KAotICAgICAgICBwcm9jLCBPcmln
aW4oKSwgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAx
KSk7Ci0gICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmln
aW4oKSwgRnJlcXVlbnRlZEJsb2NrKGRvbmUpKTsKLQotICAgIFVwc2lsb25WYWx1ZSogZWxzZVJl
c3VsdCA9IGVsc2VDYXNlLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPigKLSAgICAgICAgcHJvYywg
T3JpZ2luKCksIGVsc2VDYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgMCkpOwotICAgIGVsc2VDYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgSnVtcCwg
T3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayhkb25lKSk7Ci0KLSAgICBWYWx1ZSogcGhpID0gZG9u
ZS0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBQaGksIEludDMyLCBPcmlnaW4oKSk7Ci0gICAgdGhl
blJlc3VsdC0+c2V0UGhpKHBoaSk7Ci0gICAgZWxzZVJlc3VsdC0+c2V0UGhpKHBoaSk7Ci0gICAg
ZG9uZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHBoaSk7
Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYykgPT0gISF2YWx1ZSk7Ci19Ci0K
LXZvaWQgdGVzdEJyYW5jaE5vdEVxdWFsRm9sZFB0cihpbnRwdHJfdCB2YWx1ZSkKLXsKLSAgICBQ
cm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwot
ICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxv
Y2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAotICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgTm90RXF1YWwsIE9yaWdpbigp
LAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCB2YWx1ZSksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIDApKSwKLSAgICAgICAgRnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwg
RnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNlKSk7Ci0KLSAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICB0aGVu
Q2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKTsKLQotICAg
IGVsc2VDYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwg
T3JpZ2luKCksCi0gICAgICAgIGVsc2VDYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgMCkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpID09
ICEhdmFsdWUpOwotfQotCi12b2lkIHRlc3RCcmFuY2hFcXVhbEZvbGRQdHIoaW50cHRyX3QgdmFs
dWUpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsK
LSAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwK
LSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEVxdWFs
LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgdmFsdWUpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0
UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSksCi0gICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0
aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOwotCi0gICAgdGhlbkNhc2UtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAg
ICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAx
KSk7Ci0KLSAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50
Pihwcm9jKSA9PSAhdmFsdWUpOwotfQotCi12b2lkIHRlc3RCcmFuY2hMb2FkUHRyKCkKLXsKLSAg
ICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OwotICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2lj
QmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAotICAgICAgICBy
b290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgTG9hZCwgcG9p
bnRlclR5cGUoKSwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAotICAg
ICAgICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2Up
KTsKLQotICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2Ms
IFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpOwotCi0gICAgZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgZWxzZUNh
c2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7Ci0KLSAgICBh
dXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBpbnRwdHJfdCBjb25kOwotICAgIGNv
bmQgPSA0MjsKLSAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgJmNvbmQpID09IDEpOwotICAg
IGNvbmQgPSAwOwotICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAmY29uZCkgPT0gMCk7Ci19
Ci0KLXZvaWQgdGVzdEJyYW5jaExvYWQzMigpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiB0aGVu
Q2FzZSA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2Mu
YWRkQmxvY2soKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAg
cHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZh
bHVlPigKLSAgICAgICAgICAgIHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwKLSAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSksCi0gICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSks
IEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOwotCi0gICAgdGhlbkNhc2UtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgdGhl
bkNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7Ci0KLSAg
ICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAotICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIDApKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwot
ICAgIGludDMyX3QgY29uZDsKLSAgICBjb25kID0gNDI7Ci0gICAgQ0hFQ0soaW52b2tlPGludD4o
KmNvZGUsICZjb25kKSA9PSAxKTsKLSAgICBjb25kID0gMDsKLSAgICBDSEVDSyhpbnZva2U8aW50
PigqY29kZSwgJmNvbmQpID09IDApOwotfQotCi12b2lkIHRlc3RCcmFuY2hMb2FkOFMoKQotewot
ICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7Ci0gICAgQmFzaWNCbG9jayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFz
aWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCi0gICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBMb2FkOFMs
IE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKLSAgICAgICAgRnJlcXVl
bnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNlKSk7Ci0KLSAgICB0
aGVuQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAotICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIDEpKTsKLQotICAgIGVsc2VDYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0g
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIGVsc2VDYXNlLT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwotCi0gICAgYXV0byBjb2RlID0g
Y29tcGlsZVByb2MocHJvYyk7Ci0gICAgaW50OF90IGNvbmQ7Ci0gICAgY29uZCA9IC0xOwotICAg
IENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAmY29uZCkgPT0gMSk7Ci0gICAgY29uZCA9IDA7Ci0g
ICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsICZjb25kKSA9PSAwKTsKLX0KLQotdm9pZCB0ZXN0
QnJhbmNoTG9hZDhaKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5h
ZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOwot
Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBCcmFuY2gs
IE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAg
ICAgICAgcHJvYywgTG9hZDhaLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSksCi0gICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhl
bHNlQ2FzZSkpOwotCi0gICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7Ci0KLSAgICBlbHNlQ2FzZS0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAg
ICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsK
LQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotICAgIHVpbnQ4X3QgY29uZDsK
LSAgICBjb25kID0gMTsKLSAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgJmNvbmQpID09IDEp
OwotICAgIGNvbmQgPSAwOwotICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAmY29uZCkgPT0g
MCk7Ci19Ci0KLXZvaWQgdGVzdEJyYW5jaExvYWQxNlMoKQotewotICAgIFByb2NlZHVyZSBwcm9j
OwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9j
ayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogZWxzZUNhc2Ug
PSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0g
ICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxN
ZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBMb2FkMTZTLCBPcmlnaW4oKSwKLSAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCi0gICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2Fz
ZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOwotCi0gICAgdGhlbkNhc2UtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAg
dGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7Ci0K
LSAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAotICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIDApKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2Mp
OwotICAgIGludDE2X3QgY29uZDsKLSAgICBjb25kID0gLTE7Ci0gICAgQ0hFQ0soaW52b2tlPGlu
dD4oKmNvZGUsICZjb25kKSA9PSAxKTsKLSAgICBjb25kID0gMDsKLSAgICBDSEVDSyhpbnZva2U8
aW50PigqY29kZSwgJmNvbmQpID09IDApOwotfQotCi12b2lkIHRlc3RCcmFuY2hMb2FkMTZaKCkK
LXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOwotICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOwotICAg
IEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAotICAg
ICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgTG9h
ZDE2WiwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAotICAgICAgICBG
cmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKLQot
ICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCi0gICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgMSkpOwotCi0gICAgZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgZWxzZUNhc2UtPmFw
cGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7Ci0KLSAgICBhdXRvIGNv
ZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICB1aW50MTZfdCBjb25kOwotICAgIGNvbmQgPSAx
OwotICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAmY29uZCkgPT0gMSk7Ci0gICAgY29uZCA9
IDA7Ci0gICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsICZjb25kKSA9PSAwKTsKLX0KLQotdm9p
ZCB0ZXN0QnJhbmNoOFdpdGhMb2FkOFpJbmRleCgpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0g
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiB0
aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHBy
b2MuYWRkQmxvY2soKTsKLQotICAgIGludCBsb2dTY2FsZSA9IDE7Ci0gICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAotICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQWJvdmUsIE9yaWdp
bigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAg
ICAgICAgICBwcm9jLCBMb2FkOFosIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCks
Ci0gICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKLSAgICAgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb2Ms
IFNobCwgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgbG9nU2NhbGUpKSkpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDI1MCkpLAotICAgICAgICBGcmVxdWVudGVk
QmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKLQotICAgIHRoZW5D
YXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksCi0gICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmln
aW4oKSwgMSkpOwotCi0gICAgZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21w
aWxlUHJvYyhwcm9jKTsKLSAgICB1aW50MzJfdCBjb25kOwotICAgIGNvbmQgPSAweGZmZmZmZmZm
VTsgLy8gQWxsIGJ5dGVzIGFyZSAweGZmLgotICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAm
Y29uZCAtIDIsIChzaXplb2YodWludDMyX3QpICogMikgPj4gbG9nU2NhbGUpID09IDEpOwotICAg
IGNvbmQgPSAweDAwMDAwMDAwVTsgLy8gQWxsIGJ5dGVzIGFyZSAwLgotICAgIENIRUNLKGludm9r
ZTxpbnQ+KCpjb2RlLCAmY29uZCAtIDIsIChzaXplb2YodWludDMyX3QpICogMikgPj4gbG9nU2Nh
bGUpID09IDApOwotfQotCi12b2lkIHRlc3RDb21wbGV4KHVuc2lnbmVkIG51bVZhcnMsIHVuc2ln
bmVkIG51bUNvbnN0cnVjdHMpCi17Ci0gICAgTW9ub3RvbmljVGltZSBiZWZvcmUgPSBNb25vdG9u
aWNUaW1lOjpub3coKTsKLSAgICAKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2Nr
KiBjdXJyZW50ID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgQ29uc3QzMlZhbHVlKiBvbmUgPSBj
dXJyZW50LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSk7Ci0KLSAg
ICBWZWN0b3I8aW50MzJfdD4gdmFyU2xvdHM7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gbnVtVmFy
czsgaS0tOykKLSAgICAgICAgdmFyU2xvdHMuYXBwZW5kKGkpOwotCi0gICAgVmVjdG9yPFZhbHVl
Kj4gdmFyczsKLSAgICBmb3IgKGludDMyX3QmIHZhclNsb3QgOiB2YXJTbG90cykgewotICAgICAg
ICBWYWx1ZSogdmFyU2xvdFB0ciA9IGN1cnJlbnQtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgJnZhclNsb3QpOwotICAgICAgICB2YXJzLmFwcGVuZChjdXJyZW50LT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgdmFyU2xv
dFB0cikpOwotICAgIH0KLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Db25zdHJ1
Y3RzOyArK2kpIHsKLSAgICAgICAgaWYgKGkgJiAxKSB7Ci0gICAgICAgICAgICAvLyBDb250cm9s
IGZsb3cgZGlhbW9uZC4KLSAgICAgICAgICAgIHVuc2lnbmVkIHByZWRpY2F0ZVZhckluZGV4ID0g
KChpID4+IDEpICsgMikgJSBudW1WYXJzOwotICAgICAgICAgICAgdW5zaWduZWQgdGhlbkluY1Zh
ckluZGV4ID0gKChpID4+IDEpICsgMCkgJSBudW1WYXJzOwotICAgICAgICAgICAgdW5zaWduZWQg
ZWxzZUluY1ZhckluZGV4ID0gKChpID4+IDEpICsgMSkgJSBudW1WYXJzOwotCi0gICAgICAgICAg
ICBCYXNpY0Jsb2NrKiB0aGVuQmxvY2sgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgICAgICBC
YXNpY0Jsb2NrKiBlbHNlQmxvY2sgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgICAgICBCYXNp
Y0Jsb2NrKiBjb250aW51YXRpb24gPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICAgICAgICAgIGN1
cnJlbnQtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgICAgICAgICBwcm9jLCBCcmFu
Y2gsIE9yaWdpbigpLCB2YXJzW3ByZWRpY2F0ZVZhckluZGV4XSwKLSAgICAgICAgICAgICAgICBG
cmVxdWVudGVkQmxvY2sodGhlbkJsb2NrKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VCbG9jaykpOwot
Ci0gICAgICAgICAgICBVcHNpbG9uVmFsdWUqIHRoZW5UaGVuUmVzdWx0ID0gdGhlbkJsb2NrLT5h
cHBlbmROZXc8VXBzaWxvblZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBPcmlnaW4oKSwK
LSAgICAgICAgICAgICAgICB0aGVuQmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBP
cmlnaW4oKSwgdmFyc1t0aGVuSW5jVmFySW5kZXhdLCBvbmUpKTsKLSAgICAgICAgICAgIFVwc2ls
b25WYWx1ZSogdGhlbkVsc2VSZXN1bHQgPSB0aGVuQmxvY2stPmFwcGVuZE5ldzxVcHNpbG9uVmFs
dWU+KAotICAgICAgICAgICAgICAgIHByb2MsIE9yaWdpbigpLCB2YXJzW2Vsc2VJbmNWYXJJbmRl
eF0pOwotICAgICAgICAgICAgdGhlbkJsb2NrLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywg
SnVtcCwgT3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayhjb250aW51YXRpb24pKTsKLQotICAgICAg
ICAgICAgVXBzaWxvblZhbHVlKiBlbHNlRWxzZVJlc3VsdCA9IGVsc2VCbG9jay0+YXBwZW5kTmV3
PFVwc2lsb25WYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgT3JpZ2luKCksCi0gICAgICAg
ICAgICAgICAgZWxzZUJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCks
IHZhcnNbZWxzZUluY1ZhckluZGV4XSwgb25lKSk7Ci0gICAgICAgICAgICBVcHNpbG9uVmFsdWUq
IGVsc2VUaGVuUmVzdWx0ID0gZWxzZUJsb2NrLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPigKLSAg
ICAgICAgICAgICAgICBwcm9jLCBPcmlnaW4oKSwgdmFyc1t0aGVuSW5jVmFySW5kZXhdKTsKLSAg
ICAgICAgICAgIGVsc2VCbG9jay0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIEp1bXAsIE9y
aWdpbigpLCBGcmVxdWVudGVkQmxvY2soY29udGludWF0aW9uKSk7Ci0KLSAgICAgICAgICAgIFZh
bHVlKiB0aGVuUGhpID0gY29udGludWF0aW9uLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFBoaSwg
SW50MzIsIE9yaWdpbigpKTsKLSAgICAgICAgICAgIHRoZW5UaGVuUmVzdWx0LT5zZXRQaGkodGhl
blBoaSk7Ci0gICAgICAgICAgICBlbHNlVGhlblJlc3VsdC0+c2V0UGhpKHRoZW5QaGkpOwotICAg
ICAgICAgICAgdmFyc1t0aGVuSW5jVmFySW5kZXhdID0gdGhlblBoaTsKLSAgICAgICAgICAgIAot
ICAgICAgICAgICAgVmFsdWUqIGVsc2VQaGkgPSBjb250aW51YXRpb24tPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgUGhpLCBJbnQzMiwgT3JpZ2luKCkpOwotICAgICAgICAgICAgdGhlbkVsc2VSZXN1
bHQtPnNldFBoaShlbHNlUGhpKTsKLSAgICAgICAgICAgIGVsc2VFbHNlUmVzdWx0LT5zZXRQaGko
ZWxzZVBoaSk7Ci0gICAgICAgICAgICB2YXJzW2Vsc2VJbmNWYXJJbmRleF0gPSB0aGVuUGhpOwot
ICAgICAgICAgICAgCi0gICAgICAgICAgICBjdXJyZW50ID0gY29udGludWF0aW9uOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgLy8gTG9vcC4KLQotICAgICAgICAgICAgQmFzaWNCbG9j
ayogbG9vcEVudHJ5ID0gcHJvYy5hZGRCbG9jaygpOwotICAgICAgICAgICAgQmFzaWNCbG9jayog
bG9vcFJlZW50cnkgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgICAgICBCYXNpY0Jsb2NrKiBs
b29wQm9keSA9IHByb2MuYWRkQmxvY2soKTsKLSAgICAgICAgICAgIEJhc2ljQmxvY2sqIGxvb3BF
eGl0ID0gcHJvYy5hZGRCbG9jaygpOwotICAgICAgICAgICAgQmFzaWNCbG9jayogbG9vcFNraXAg
PSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgICAgICBCYXNpY0Jsb2NrKiBjb250aW51YXRpb24g
PSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIFZhbHVlKiBzdGFy
dEluZGV4ID0gdmFyc1soKGkgPj4gMSkgKyAxKSAlIG51bVZhcnNdOwotICAgICAgICAgICAgVmFs
dWUqIHN0YXJ0U3VtID0gY3VycmVudC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIDApOwotICAgICAgICAgICAgY3VycmVudC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAot
ICAgICAgICAgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksIHN0YXJ0SW5kZXgsCi0gICAg
ICAgICAgICAgICAgRnJlcXVlbnRlZEJsb2NrKGxvb3BFbnRyeSksIEZyZXF1ZW50ZWRCbG9jayhs
b29wU2tpcCkpOwotCi0gICAgICAgICAgICBVcHNpbG9uVmFsdWUqIHN0YXJ0SW5kZXhGb3JCb2R5
ID0gbG9vcEVudHJ5LT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPigKLSAgICAgICAgICAgICAgICBw
cm9jLCBPcmlnaW4oKSwgc3RhcnRJbmRleCk7Ci0gICAgICAgICAgICBVcHNpbG9uVmFsdWUqIHN0
YXJ0U3VtRm9yQm9keSA9IGxvb3BFbnRyeS0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4oCi0gICAg
ICAgICAgICAgICAgcHJvYywgT3JpZ2luKCksIHN0YXJ0U3VtKTsKLSAgICAgICAgICAgIGxvb3BF
bnRyeS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIEp1bXAsIE9yaWdpbigpLCBGcmVxdWVu
dGVkQmxvY2sobG9vcEJvZHkpKTsKLQotICAgICAgICAgICAgVmFsdWUqIGJvZHlJbmRleCA9IGxv
b3BCb2R5LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFBoaSwgSW50MzIsIE9yaWdpbigpKTsKLSAg
ICAgICAgICAgIHN0YXJ0SW5kZXhGb3JCb2R5LT5zZXRQaGkoYm9keUluZGV4KTsKLSAgICAgICAg
ICAgIFZhbHVlKiBib2R5U3VtID0gbG9vcEJvZHktPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUGhp
LCBJbnQzMiwgT3JpZ2luKCkpOwotICAgICAgICAgICAgc3RhcnRTdW1Gb3JCb2R5LT5zZXRQaGko
Ym9keVN1bSk7Ci0gICAgICAgICAgICBWYWx1ZSogbmV3Qm9keUluZGV4ID0gbG9vcEJvZHktPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgYm9keUluZGV4LCBvbmUpOwotICAg
ICAgICAgICAgVmFsdWUqIG5ld0JvZHlTdW0gPSBsb29wQm9keS0+YXBwZW5kTmV3PFZhbHVlPigK
LSAgICAgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIGJv
ZHlTdW0sCi0gICAgICAgICAgICAgICAgbG9vcEJvZHktPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
Ci0gICAgICAgICAgICAgICAgICAgIHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwKLSAgICAg
ICAgICAgICAgICAgICAgbG9vcEJvZHktPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAg
ICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgICAgICAgICAg
bG9vcEJvZHktPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdmFyU2xv
dHMuZGF0YSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvb3BCb2R5LT5hcHBlbmROZXc8
VmFsdWU+KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2MsIFNobCwgT3JpZ2luKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcEJvZHktPmFwcGVuZE5ldzxWYWx1ZT4o
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2MsIFpFeHQzMiwgT3JpZ2luKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3BCb2R5LT5hcHBlbmROZXc8VmFs
dWU+KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvYywgQml0QW5kLCBP
cmlnaW4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0JvZHlJbmRl
eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3BCb2R5LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwcm9jLCBPcmlnaW4oKSwgbnVtVmFycyAtIDEpKSksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbG9vcEJvZHktPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAy
KSkpKSk7Ci0gICAgICAgICAgICBsb29wQm9keS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAg
ICAgICAgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksIG5ld0JvZHlJbmRleCwKLSAgICAg
ICAgICAgICAgICBGcmVxdWVudGVkQmxvY2sobG9vcFJlZW50cnkpLCBGcmVxdWVudGVkQmxvY2so
bG9vcEV4aXQpKTsKLQotICAgICAgICAgICAgbG9vcFJlZW50cnktPmFwcGVuZE5ldzxVcHNpbG9u
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBuZXdCb2R5SW5kZXgsIGJvZHlJbmRleCk7Ci0gICAgICAg
ICAgICBsb29wUmVlbnRyeS0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4ocHJvYywgT3JpZ2luKCks
IG5ld0JvZHlTdW0sIGJvZHlTdW0pOwotICAgICAgICAgICAgbG9vcFJlZW50cnktPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4oKSwgRnJlcXVlbnRlZEJsb2NrKGxvb3BC
b2R5KSk7Ci0KLSAgICAgICAgICAgIFVwc2lsb25WYWx1ZSogZXhpdFN1bSA9IGxvb3BFeGl0LT5h
cHBlbmROZXc8VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbmV3Qm9keVN1bSk7Ci0gICAg
ICAgICAgICBsb29wRXhpdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIEp1bXAsIE9yaWdp
bigpLCBGcmVxdWVudGVkQmxvY2soY29udGludWF0aW9uKSk7Ci0KLSAgICAgICAgICAgIFVwc2ls
b25WYWx1ZSogc2tpcFN1bSA9IGxvb3BTa2lwLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgc3RhcnRTdW0pOwotICAgICAgICAgICAgbG9vcFNraXAtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4oKSwgRnJlcXVlbnRlZEJsb2NrKGNvbnRpbnVh
dGlvbikpOwotCi0gICAgICAgICAgICBWYWx1ZSogZmluYWxTdW0gPSBjb250aW51YXRpb24tPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgUGhpLCBJbnQzMiwgT3JpZ2luKCkpOwotICAgICAgICAgICAg
ZXhpdFN1bS0+c2V0UGhpKGZpbmFsU3VtKTsKLSAgICAgICAgICAgIHNraXBTdW0tPnNldFBoaShm
aW5hbFN1bSk7Ci0KLSAgICAgICAgICAgIGN1cnJlbnQgPSBjb250aW51YXRpb247Ci0gICAgICAg
ICAgICB2YXJzWygoaSA+PiAxKSArIDApICUgbnVtVmFyc10gPSBmaW5hbFN1bTsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIGN1cnJlbnQtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCB2YXJzWzBdKTsKLQotICAgIGNvbXBpbGVQcm9jKHByb2MpOwotCi0gICAg
TW9ub3RvbmljVGltZSBhZnRlciA9IE1vbm90b25pY1RpbWU6Om5vdygpOwotICAgIGRhdGFMb2co
dG9DU3RyaW5nKCIgICAgVGhhdCB0b29rICIsIChhZnRlciAtIGJlZm9yZSkubWlsbGlzZWNvbmRz
KCksICIgbXMuXG4iKSk7Ci19Ci0KLXZvaWQgdGVzdEJyYW5jaEJpdFRlc3QzMlRtcEltbSh1aW50
MzJfdCB2YWx1ZSwgdWludDMyX3QgaW1tKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogdGhlbkNh
c2UgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFk
ZEJsb2NrKCk7Ci0KLSAgICBWYWx1ZSogdGVzdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKLSAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpOwotICAgIFZhbHVlKiBiaXRPZmZzZXQgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgaW1tKTsKLQotICAgIFZhbHVlKiBvbmUgPSByb290LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSk7Ci0gICAgVmFsdWUqIGJpdFRlc3Qg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigp
LAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNTaHIsIE9yaWdpbigpLCB0
ZXN0VmFsdWUsIGJpdE9mZnNldCksCi0gICAgICAgIG9uZSk7Ci0KLSAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCi0gICAgICAg
IGJpdFRlc3QsCi0gICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRC
bG9jayhlbHNlQ2FzZSkpOwotCi0gICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
LSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgdGhlbkNhc2UtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7Ci0KLSAgICBlbHNlQ2FzZS0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAot
ICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IDApKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotICAgIENIRUNLX0VR
KGludm9rZTx1aW50MzJfdD4oKmNvZGUsIHZhbHVlKSwgKHZhbHVlPj4oaW1tJTMyKSkmMSk7Ci19
Ci0KLXZvaWQgdGVzdEJyYW5jaEJpdFRlc3QzMkFkZHJJbW0odWludDMyX3QgdmFsdWUsIHVpbnQz
Ml90IGltbSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRCbG9j
aygpOwotICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAg
VmFsdWUqIHRlc3RWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAg
IHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsK
LSAgICBWYWx1ZSogYml0T2Zmc2V0ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIGltbSk7Ci0KLSAgICBWYWx1ZSogb25lID0gcm9vdC0+YXBwZW5kTmV3PENv
bnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpOwotICAgIFZhbHVlKiBiaXRUZXN0ID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKLSAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTU2hyLCBPcmlnaW4oKSwgdGVzdFZh
bHVlLCBiaXRPZmZzZXQpLAotICAgICAgICBvbmUpOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAotICAgICAgICBiaXRU
ZXN0LAotICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2so
ZWxzZUNhc2UpKTsKLQotICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpOwotCi0gICAgZWxzZUNhc2UtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAg
ICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7
Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBDSEVDS19FUShpbnZv
a2U8dWludDMyX3Q+KCpjb2RlLCAmdmFsdWUpLCAodmFsdWU+PihpbW0lMzIpKSYxKTsKLX0KLQot
dm9pZCB0ZXN0QnJhbmNoQml0VGVzdDMyVG1wVG1wKHVpbnQzMl90IHZhbHVlLCB1aW50MzJfdCB2
YWx1ZTIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2so
KTsKLSAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIFZh
bHVlKiB0ZXN0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBU
cnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGJp
dE9mZnNldCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIFRydW5jLCBP
cmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKLQotICAgIFZhbHVlKiBvbmUgPSBy
b290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSk7Ci0gICAgVmFs
dWUqIGJpdFRlc3QgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBCaXRB
bmQsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNTaHIs
IE9yaWdpbigpLCB0ZXN0VmFsdWUsIGJpdE9mZnNldCksCi0gICAgICAgIG9uZSk7Ci0KLSAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2lu
KCksCi0gICAgICAgIGJpdFRlc3QsCi0gICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSks
IEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOwotCi0gICAgdGhlbkNhc2UtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgdGhl
bkNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7Ci0KLSAg
ICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAotICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIDApKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwot
ICAgIENIRUNLX0VRKGludm9rZTx1aW50MzJfdD4oKmNvZGUsIHZhbHVlLCB2YWx1ZTIpLCAodmFs
dWU+Pih2YWx1ZTIlMzIpKSYxKTsKLX0KLQotdm9pZCB0ZXN0QnJhbmNoQml0VGVzdDY0VG1wVG1w
KHVpbnQ2NF90IHZhbHVlLCB1aW50NjRfdCB2YWx1ZTIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7
Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2Nr
KiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9
IHByb2MuYWRkQmxvY2soKTsKLQotICAgIFZhbHVlKiB0ZXN0VmFsdWUgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEJpdFhvciwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IC0xbCkpOwotICAgIFZhbHVlKiBiaXRPZmZzZXQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAot
ICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7
Ci0KLSAgICBWYWx1ZSogb25lID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIDEpOwotICAgIFZhbHVlKiBiaXRUZXN0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKLSAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKLSAgICAgICAgdGVzdFZhbHVlLAot
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNobCwgT3JpZ2luKCksIG9uZSwg
Yml0T2Zmc2V0KSk7Ci0KLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAg
IHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCi0gICAgICAgIGJpdFRlc3QsCi0gICAgICAgIEZyZXF1
ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOwotCi0gICAg
dGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKLSAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAwKSk7Ci0KLSAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAot
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICBlbHNlQ2FzZS0+YXBwZW5k
TmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKTsKLQotICAgIGF1dG8gY29kZSA9
IGNvbXBpbGVQcm9jKHByb2MpOwotICAgIENIRUNLX0VRKGludm9rZTx1aW50NjRfdD4oKmNvZGUs
IHZhbHVlLCB2YWx1ZTIpLCAodmFsdWU+Pih2YWx1ZTIlNjQpKSYxKTsKLX0KLQotdm9pZCB0ZXN0
QnJhbmNoQml0VGVzdDY0QWRkclRtcCh1aW50NjRfdCB2YWx1ZSwgdWludDY0X3QgdmFsdWUyKQot
ewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7Ci0gICAgQmFzaWNCbG9jayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAg
QmFzaWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBWYWx1ZSogdGVz
dFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAgcHJvYywgTG9h
ZCwgSW50NjQsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZhbHVl
KiBiaXRPZmZzZXQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBUcnVu
YywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Ci0KLSAgICBWYWx1ZSogb25l
ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpOwotICAg
IFZhbHVlKiBiaXRUZXN0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywg
Qml0QW5kLCBPcmlnaW4oKSwKLSAgICAgICAgdGVzdFZhbHVlLAotICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIFNobCwgT3JpZ2luKCksIG9uZSwgYml0T2Zmc2V0KSk7Ci0KLSAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIEJyYW5jaCwgT3Jp
Z2luKCksCi0gICAgICAgIGJpdFRlc3QsCi0gICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2Fz
ZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOwotCi0gICAgdGhlbkNhc2UtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAg
dGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7Ci0K
LSAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAotICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIDApKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2Mp
OwotICAgIENIRUNLX0VRKGludm9rZTx1aW50NjRfdD4oKmNvZGUsICZ2YWx1ZSwgdmFsdWUyKSwg
KHZhbHVlPj4odmFsdWUyJTY0KSkmMSk7Ci19Ci0KLXZvaWQgdGVzdEJyYW5jaEJpdFRlc3ROZWdh
dGlvbih1aW50NjRfdCB2YWx1ZSwgdWludDY0X3QgdmFsdWUyKQotewotICAgIFByb2NlZHVyZSBw
cm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNC
bG9jayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogZWxzZUNh
c2UgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBWYWx1ZSogdGVzdFZhbHVlID0gcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOwotICAgIFZhbHVlKiBiaXRPZmZzZXQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAot
ICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7
Ci0gICAgVmFsdWUqIHNoaWZ0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTU2hyLCBP
cmlnaW4oKSwgdGVzdFZhbHVlLCBiaXRPZmZzZXQpOwotCi0gICAgVmFsdWUqIG9uZSA9IHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKTsKLSAgICBWYWx1ZSog
Yml0VGVzdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIEJpdEFuZCwg
T3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0WG9yLCBP
cmlnaW4oKSwgc2hpZnQsIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdp
bigpLCAtMWwpKSwKLSAgICAgICAgb25lKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKLSAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKLSAgICAgICAgYml0VGVzdCwK
LSAgICAgICAgRnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VD
YXNlKSk7Ci0KLSAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnN0
NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKLQotICAgIGVsc2VDYXNlLT5hcHBlbmROZXdD
b250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIGVs
c2VDYXNlLT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpOwotCi0g
ICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPHVp
bnQ2NF90PigqY29kZSwgdmFsdWUsIHZhbHVlMiksICh2YWx1ZT4+KHZhbHVlMiU2NCkpJjEpOwot
fQotCi12b2lkIHRlc3RCcmFuY2hCaXRUZXN0TmVnYXRpb24yKHVpbnQ2NF90IHZhbHVlLCB1aW50
NjRfdCB2YWx1ZTIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRk
QmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKLQot
ICAgIFZhbHVlKiB0ZXN0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdFhv
ciwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKLSAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xbCkpOwotICAgIFZhbHVlKiBi
aXRPZmZzZXQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBUcnVuYywg
T3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Ci0gICAgVmFsdWUqIHNoaWZ0ID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTU2hyLCBPcmlnaW4oKSwgdGVzdFZhbHVlLCBi
aXRPZmZzZXQpOwotCi0gICAgVmFsdWUqIG9uZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFs
dWU+KHByb2MsIE9yaWdpbigpLCAxKTsKLSAgICBWYWx1ZSogYml0VGVzdCA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIEJpdEFuZCwgT3JpZ2luKCksCi0gICAgICAgIHNo
aWZ0LAotICAgICAgICBvbmUpOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAot
ICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAotICAgICAgICBiaXRUZXN0LAotICAgICAg
ICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsK
LQotICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCi0gICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgMCkpOwotCi0gICAgZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgZWxzZUNhc2Ut
PmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7Ci0KLSAgICBhdXRv
IGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBDSEVDS19FUShpbnZva2U8dWludDY0X3Q+
KCpjb2RlLCB2YWx1ZSwgdmFsdWUyKSwgKHZhbHVlPj4odmFsdWUyJTY0KSkmMSk7Ci19Ci0KLXZv
aWQgdGVzdFNpbXBsZVBhdGNocG9pbnQoKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZzEgPSByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7Ci0gICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgUGF0
Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1
ZT4ocHJvYywgSW50MzIsIE9yaWdpbigpKTsKLSAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3Ry
YWluZWRWYWx1ZShhcmcxLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7Ci0gICAgcGF0Y2hwb2lu
dC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMiwgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcikp
OwotICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKLSAgICAgICAgWyZdIChDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKLSAgICAg
ICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsK
LSAgICAgICAgICAgIENIRUNLKHBhcmFtcy5zaXplKCkgPT0gMyk7Ci0gICAgICAgICAgICBDSEVD
SyhwYXJhbXNbMF0uaXNHUFIoKSk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0uaXNHUFIo
KSk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXNbMl0uaXNHUFIoKSk7Ci0gICAgICAgICAgICBh
ZGQzMihqaXQsIHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzJdLmdwcigpLCBwYXJhbXNbMF0uZ3By
KCkpOwotICAgICAgICB9KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgcGF0Y2hwb2ludCk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVu
PGludD4ocHJvYywgMSwgMikgPT0gMyk7Ci19Ci0KLXZvaWQgdGVzdFNpbXBsZVBhdGNocG9pbnRX
aXRob3V0T3VwdXRDbG9iYmVyc0dQQXJncygpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJnMSA9IHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKLSAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICBW
YWx1ZSogY29uc3QxID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIDQyKTsKLSAgICBWYWx1ZSogY29uc3QyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIDEzKTsKLQotICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2lu
dCA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigp
KTsKLSAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShSZWdpc3RlclNldChHUFJJbmZvOjphcmd1
bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOwotICAgIHBhdGNocG9pbnQtPmFwcGVu
ZChDb25zdHJhaW5lZFZhbHVlKGNvbnN0MSwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOwotICAg
IHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGNvbnN0MiwgVmFsdWVSZXA6OlNv
bWVSZWdpc3RlcikpOwotICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKLSAgICAgICAgWyZd
IChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJh
bXMpIHsKLSAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1Nj
cmF0Y2goaml0KTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtcy5zaXplKCkgPT0gMik7Ci0gICAg
ICAgICAgICBDSEVDSyhwYXJhbXNbMF0uaXNHUFIoKSk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJh
bXNbMV0uaXNHUFIoKSk7Ci0gICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMigweDAwZmYwMGZmKSwgcGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgICAgIGppdC5t
b3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDB4MDBmZjAwZmYpLCBwYXJhbXNbMV0uZ3By
KCkpOwotICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMHgw
MGZmMDBmZiksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgICAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigweDAwZmYwMGZmKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIxKTsKLSAgICAgICAgfSk7Ci0KLSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBhcmcxLCBhcmcyKTsKLSAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKLQotICAg
IENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCAxLCAyKSA9PSAzKTsKLX0KLQotdm9pZCB0
ZXN0U2ltcGxlUGF0Y2hwb2ludFdpdGhPdXB1dENsb2JiZXJzR1BBcmdzKCkKLXsKLSAgICAvLyBX
ZSBjYW4ndCBwcmVkaWN0IHdoZXJlIHRoZSBvdXRwdXQgd2lsbCBiZSBidXQgd2Ugd2FudCB0byBi
ZSBzdXJlIGl0IGlzIG5vdAotICAgIC8vIG9uZSBvZiB0aGUgY2xvYmJlcmVkIHJlZ2lzdGVycyB3
aGljaCBpcyBhIGJpdCBoYXJkIHRvIHRlc3QuCi0gICAgLy8KLSAgICAvLyBXaGF0IHdlIGRvIGlz
IGZvcmNlIHRoZSBoYW5kIG9mIG91ciByZWdpc3RlciBhbGxvY2F0b3IgYnkgY2xvYmJlcmluZyBh
YnNvbHV0ZWx5Ci0gICAgLy8gZXZlcnl0aGluZyBidXQgMS4gVGhlIG9ubHkgdmFsaWQgYWxsb2Nh
dGlvbiBpcyB0byBnaXZlIGl0IHRvIHRoZSByZXN1bHQgYW5kCi0gICAgLy8gc3BpbGwgZXZlcnl0
aGluZyBlbHNlLgotCi0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgaWYgKHByb2Mub3B0TGV2ZWwo
KSA8IDEpIHsKLSAgICAgICAgLy8gRklYTUU6IEFpciBPMCBhbGxvY2F0b3IgY2FuJ3QgaGFuZGxl
IHN1Y2ggcHJvZ3JhbXMuIFdlIHJlbHkgb24gV2FzbUFpcklSR2VuZXJhdG9yCi0gICAgICAgIC8v
IHRvIG5vdCB1c2UgYW55IHN1Y2ggY29uc3RydWN0cyB3aGVyZSB0aGUgcmVnaXN0ZXIgYWxsb2Nh
dG9yIGlzIGNvcm5lcmVkIGluIHN1Y2gKLSAgICAgICAgLy8gYSB3YXkuCi0gICAgICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ2MzMKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAg
IFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjEpOwotICAgIFZhbHVlKiBjb25zdDEgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgNDIpOwotICAgIFZhbHVlKiBjb25zdDIgPSByb290LT5hcHBl
bmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMTMpOwotCi0gICAgUGF0Y2hwb2lu
dFZhbHVlKiBwYXRjaHBvaW50ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJv
YywgSW50NjQsIE9yaWdpbigpKTsKLQotICAgIFJlZ2lzdGVyU2V0IGNsb2JiZXJBbGwgPSBSZWdp
c3RlclNldDo6YWxsR1BScygpOwotICAgIGNsb2JiZXJBbGwuZXhjbHVkZShSZWdpc3RlclNldDo6
c3RhY2tSZWdpc3RlcnMoKSk7Ci0gICAgY2xvYmJlckFsbC5leGNsdWRlKFJlZ2lzdGVyU2V0Ojpy
ZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOwotICAgIGNsb2JiZXJBbGwuY2xlYXIoR1BSSW5m
bzo6YXJndW1lbnRHUFIyKTsKLSAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShjbG9iYmVyQWxs
KTsKLQotICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGNvbnN0MSwgVmFs
dWVSZXA6OlNvbWVSZWdpc3RlcikpOwotICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5l
ZFZhbHVlKGNvbnN0MiwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOwotCi0gICAgcGF0Y2hwb2lu
dC0+c2V0R2VuZXJhdG9yKAotICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBT
dGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewotICAgICAgICAgICAgQWxsb3dNYWNy
b1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwotICAgICAgICAgICAgQ0hF
Q0socGFyYW1zLnNpemUoKSA9PSAzKTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtc1swXS5pc0dQ
UigpKTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtc1sxXS5pc0dQUigpKTsKLSAgICAgICAgICAg
IENIRUNLKHBhcmFtc1syXS5pc0dQUigpKTsKLSAgICAgICAgICAgIGppdC5tb3ZlKHBhcmFtc1sx
XS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgICAgIGppdC5hZGQ2NChwYXJhbXNb
Ml0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7Ci0KLSAgICAgICAgICAgIGNsb2JiZXJBbGwuZm9y
RWFjaChbJl0gKFJlZyByZWcpIHsKLSAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMigweDAwZmYwMGZmKSwgcmVnLmdwcigpKTsKLSAgICAgICAgICAgIH0p
OwotICAgICAgICB9KTsKLQotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIHBhdGNocG9pbnQsCi0gICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgYXJnMSwgYXJnMikpOwotICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOwot
Ci0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIDEsIDIpID09IDU4KTsKLX0KLQot
dm9pZCB0ZXN0U2ltcGxlUGF0Y2hwb2ludFdpdGhvdXRPdXB1dENsb2JiZXJzRlBBcmdzKCkKLXsK
LSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOwotICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwotICAgIFZhbHVlKiBhcmcy
ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJ
bmZvOjphcmd1bWVudEZQUjEpOwotICAgIFZhbHVlKiBjb25zdDEgPSByb290LT5hcHBlbmROZXc8
Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyLjUpOwotICAgIFZhbHVlKiBjb25z
dDIgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEz
LjEpOwotCi0gICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gcm9vdC0+YXBwZW5kTmV3
PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgVm9pZCwgT3JpZ2luKCkpOwotICAgIHBhdGNocG9pbnQt
PmNsb2JiZXJMYXRlKFJlZ2lzdGVyU2V0KEZQUkluZm86OmFyZ3VtZW50RlBSMCwgRlBSSW5mbzo6
YXJndW1lbnRGUFIxKSk7Ci0gICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUo
Y29uc3QxLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7Ci0gICAgcGF0Y2hwb2ludC0+YXBwZW5k
KENvbnN0cmFpbmVkVmFsdWUoY29uc3QyLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7Ci0gICAg
cGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAotICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0
LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewotICAgICAgICAgICAg
QWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwotICAgICAg
ICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9PSAyKTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFt
c1swXS5pc0ZQUigpKTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtc1sxXS5pc0ZQUigpKTsKLSAg
ICAgICAgICAgIGppdC5tb3ZlWmVyb1RvRG91YmxlKHBhcmFtc1swXS5mcHIoKSk7Ci0gICAgICAg
ICAgICBqaXQubW92ZVplcm9Ub0RvdWJsZShwYXJhbXNbMV0uZnByKCkpOwotICAgICAgICAgICAg
aml0Lm1vdmVaZXJvVG9Eb3VibGUoRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKLSAgICAgICAgICAg
IGppdC5tb3ZlWmVyb1RvRG91YmxlKEZQUkluZm86OmFyZ3VtZW50RlBSMSk7Ci0gICAgICAgIH0p
OwotCi0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRk
LCBPcmlnaW4oKSwgYXJnMSwgYXJnMik7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5k
UnVuPGRvdWJsZT4ocHJvYywgMS41LCAyLjUpID09IDQpOwotfQotCi12b2lkIHRlc3RTaW1wbGVQ
YXRjaHBvaW50V2l0aE91cHV0Q2xvYmJlcnNGUEFyZ3MoKQotewotICAgIFByb2NlZHVyZSBwcm9j
OwotICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAxKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBBaXIg
TzAgYWxsb2NhdG9yIGNhbid0IGhhbmRsZSBzdWNoIHByb2dyYW1zLiBXZSByZWx5IG9uIFdhc21B
aXJJUkdlbmVyYXRvcgotICAgICAgICAvLyB0byBub3QgdXNlIGFueSBzdWNoIGNvbnN0cnVjdHMg
d2hlcmUgdGhlIHJlZ2lzdGVyIGFsbG9jYXRvciBpcyBjb3JuZXJlZCBpbiBzdWNoCi0gICAgICAg
IC8vIGEgd2F5LgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk0NjMzCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsK
LSAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIxKTsKLSAgICBWYWx1ZSogY29uc3QxID0g
cm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0Mi41KTsK
LSAgICBWYWx1ZSogY29uc3QyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCAxMy4xKTsKLQotICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9
IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIERvdWJsZSwgT3JpZ2luKCkp
OwotCi0gICAgUmVnaXN0ZXJTZXQgY2xvYmJlckFsbCA9IFJlZ2lzdGVyU2V0OjphbGxGUFJzKCk7
Ci0gICAgY2xvYmJlckFsbC5leGNsdWRlKFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKTsK
LSAgICBjbG9iYmVyQWxsLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdp
c3RlcnMoKSk7Ci0gICAgY2xvYmJlckFsbC5jbGVhcihGUFJJbmZvOjphcmd1bWVudEZQUjIpOwot
ICAgIHBhdGNocG9pbnQtPmNsb2JiZXJMYXRlKGNsb2JiZXJBbGwpOwotCi0gICAgcGF0Y2hwb2lu
dC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoY29uc3QxLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVy
KSk7Ci0gICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoY29uc3QyLCBWYWx1
ZVJlcDo6U29tZVJlZ2lzdGVyKSk7Ci0KLSAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCi0g
ICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNh
Z2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09
IDMpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzBdLmlzRlBSKCkpOwotICAgICAgICAgICAg
Q0hFQ0socGFyYW1zWzFdLmlzRlBSKCkpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzJdLmlz
RlBSKCkpOwotICAgICAgICAgICAgaml0LmFkZERvdWJsZShwYXJhbXNbMV0uZnByKCksIHBhcmFt
c1syXS5mcHIoKSwgcGFyYW1zWzBdLmZwcigpKTsKLQotICAgICAgICAgICAgY2xvYmJlckFsbC5m
b3JFYWNoKFsmXSAoUmVnIHJlZykgewotICAgICAgICAgICAgICAgIGppdC5tb3ZlWmVyb1RvRG91
YmxlKHJlZy5mcHIoKSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICBWYWx1
ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBw
YXRjaHBvaW50LAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3Jp
Z2luKCksIGFyZzEsIGFyZzIpKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48
ZG91YmxlPihwcm9jLCAxLjUsIDIuNSkgPT0gNTkuNik7Ci19Ci0KLXZvaWQgdGVzdFBhdGNocG9p
bnRXaXRoRWFybHlDbG9iYmVyKCkKLXsKLSAgICBhdXRvIHRlc3QgPSBbXSAoR1BSUmVnIHJlZ2lz
dGVyVG9DbG9iYmVyLCBib29sIGFyZzFJbkFyZ0dQUiwgYm9vbCBhcmcySW5BcmdHUFIpIHsKLSAg
ICAgICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7Ci0gICAgICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgICAg
ICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAgCi0gICAgICAgIFBhdGNo
cG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+
KHByb2MsIEludDMyLCBPcmlnaW4oKSk7Ci0gICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25z
dHJhaW5lZFZhbHVlKGFyZzEsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKLSAgICAgICAgcGF0
Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMiwgVmFsdWVSZXA6OlNvbWVSZWdp
c3RlcikpOwotICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyRWFybHkoUmVnaXN0ZXJTZXQocmVn
aXN0ZXJUb0Nsb2JiZXIpKTsKLSAgICAgICAgdW5zaWduZWQgb3B0TGV2ZWwgPSBwcm9jLm9wdExl
dmVsKCk7Ci0gICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKLSAgICAgICAgICAgIFsm
XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFy
YW1zKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG9wdExldmVsID4gMSkgewotICAgICAgICAgICAg
ICAgICAgICBDSEVDSygocGFyYW1zWzFdLmdwcigpID09IEdQUkluZm86OmFyZ3VtZW50R1BSMCkg
PT0gYXJnMUluQXJnR1BSKTsKLSAgICAgICAgICAgICAgICAgICAgQ0hFQ0soKHBhcmFtc1syXS5n
cHIoKSA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjEpID09IGFyZzJJbkFyZ0dQUik7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGFkZDMyKGppdCwg
cGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMl0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7Ci0gICAg
ICAgICAgICB9KTsKLQotICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgcGF0Y2hwb2ludCk7Ci0KLSAgICAgICAgQ0hFQ0soY29tcGlsZUFu
ZFJ1bjxpbnQ+KHByb2MsIDEsIDIpID09IDMpOwotICAgIH07Ci0KLSAgICB0ZXN0KEdQUkluZm86
Om5vbkFyZ0dQUjAsIHRydWUsIHRydWUpOwotICAgIHRlc3QoR1BSSW5mbzo6YXJndW1lbnRHUFIw
LCBmYWxzZSwgdHJ1ZSk7Ci0gICAgdGVzdChHUFJJbmZvOjphcmd1bWVudEdQUjEsIHRydWUsIGZh
bHNlKTsKLX0KLQotdm9pZCB0ZXN0UGF0Y2hwb2ludENhbGxBcmcoKQotewotICAgIFByb2NlZHVy
ZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFs
dWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMSk7Ci0gICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gcm9vdC0+YXBwZW5kTmV3
PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgSW50MzIsIE9yaWdpbigpKTsKLSAgICBwYXRjaHBvaW50
LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmcxLCBWYWx1ZVJlcDo6c3RhY2tBcmd1bWVudCgw
KSkpOwotICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzIsIFZhbHVl
UmVwOjpzdGFja0FyZ3VtZW50KDgpKSk7Ci0gICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAot
ICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25Q
YXJhbXMmIHBhcmFtcykgewotICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVz
YWdlIGFsbG93U2NyYXRjaChqaXQpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9
PSAzKTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtc1swXS5pc0dQUigpKTsKLSAgICAgICAgICAg
IENIRUNLKHBhcmFtc1sxXS5pc1N0YWNrKCkpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzJd
LmlzU3RhY2soKSk7Ci0gICAgICAgICAgICBqaXQubG9hZDMyKAotICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgcGFyYW1zWzFd
Lm9mZnNldEZyb21GUCgpKSwKLSAgICAgICAgICAgICAgICBwYXJhbXNbMF0uZ3ByKCkpOwotICAg
ICAgICAgICAgaml0LmFkZDMyKAotICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVz
cyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgcGFyYW1zWzJdLm9mZnNldEZyb21GUCgpKSwK
LSAgICAgICAgICAgICAgICBwYXJhbXNbMF0uZ3ByKCkpOwotICAgICAgICB9KTsKLSAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcGF0Y2hwb2lu
dCk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgMSwgMikgPT0gMyk7Ci19
Ci0KLXZvaWQgdGVzdFBhdGNocG9pbnRGaXhlZFJlZ2lzdGVyKCkKLXsKLSAgICBQcm9jZWR1cmUg
cHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVl
KiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjEpOwotICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IHJvb3QtPmFwcGVuZE5ldzxQ
YXRjaHBvaW50VmFsdWU+KHByb2MsIEludDMyLCBPcmlnaW4oKSk7Ci0gICAgcGF0Y2hwb2ludC0+
YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMSwgVmFsdWVSZXAoR1BSSW5mbzo6cmVnVDApKSk7
Ci0gICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMiwgVmFsdWVSZXAo
R1BSSW5mbzo6cmVnVDEpKSk7Ci0gICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAotICAgICAg
ICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMm
IHBhcmFtcykgewotICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFs
bG93U2NyYXRjaChqaXQpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9PSAzKTsK
LSAgICAgICAgICAgIENIRUNLKHBhcmFtc1swXS5pc0dQUigpKTsKLSAgICAgICAgICAgIENIRUNL
KHBhcmFtc1sxXSA9PSBWYWx1ZVJlcChHUFJJbmZvOjpyZWdUMCkpOwotICAgICAgICAgICAgQ0hF
Q0socGFyYW1zWzJdID09IFZhbHVlUmVwKEdQUkluZm86OnJlZ1QxKSk7Ci0gICAgICAgICAgICBh
ZGQzMihqaXQsIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSwgcGFyYW1zWzBdLmdwcigp
KTsKLSAgICAgICAgfSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJl
dHVybiwgT3JpZ2luKCksIHBhdGNocG9pbnQpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxp
bnQ+KHByb2MsIDEsIDIpID09IDMpOwotfQotCi12b2lkIHRlc3RQYXRjaHBvaW50QW55KFZhbHVl
UmVwIHJlcCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAg
IFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0
Y2hwb2ludCA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIEludDMyLCBP
cmlnaW4oKSk7Ci0gICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMSwg
cmVwKSk7Ci0gICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMiwgcmVw
KSk7Ci0gICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAotICAgICAgICBbJl0gKENDYWxsSGVs
cGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewotICAg
ICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQp
OwotICAgICAgICAgICAgLy8gV2Ugc2hvdWxkbid0IGhhdmUgc3BpbGxlZCB0aGUgaW5wdXRzLCBz
byB3ZSBhc3NlcnQgdGhhdCB0aGV5J3JlIGluIHJlZ2lzdGVycy4KLSAgICAgICAgICAgIENIRUNL
KHBhcmFtcy5zaXplKCkgPT0gMyk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXNbMF0uaXNHUFIo
KSk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0uaXNHUFIoKSk7Ci0gICAgICAgICAgICBD
SEVDSyhwYXJhbXNbMl0uaXNHUFIoKSk7Ci0gICAgICAgICAgICBhZGQzMihqaXQsIHBhcmFtc1sx
XS5ncHIoKSwgcGFyYW1zWzJdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOwotICAgICAgICB9KTsK
LSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwg
cGF0Y2hwb2ludCk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgMSwgMikg
PT0gMyk7Ci19Ci0KLXZvaWQgdGVzdFBhdGNocG9pbnRHUFNjcmF0Y2goKQotewotICAgIFByb2Nl
ZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAg
VmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgVmFsdWUqIGFyZzIgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSk7Ci0gICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gcm9vdC0+YXBwZW5k
TmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgSW50MzIsIE9yaWdpbigpKTsKLSAgICBwYXRjaHBv
aW50LT5hcHBlbmQoYXJnMSwgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7Ci0gICAgcGF0Y2hwb2lu
dC0+YXBwZW5kKGFyZzIsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpOwotICAgIHBhdGNocG9pbnQt
Pm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDI7Ci0gICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9y
KAotICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRp
b25QYXJhbXMmIHBhcmFtcykgewotICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3Rl
clVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwotICAgICAgICAgICAgLy8gV2Ugc2hvdWxkbid0IGhh
dmUgc3BpbGxlZCB0aGUgaW5wdXRzLCBzbyB3ZSBhc3NlcnQgdGhhdCB0aGV5J3JlIGluIHJlZ2lz
dGVycy4KLSAgICAgICAgICAgIENIRUNLKHBhcmFtcy5zaXplKCkgPT0gMyk7Ci0gICAgICAgICAg
ICBDSEVDSyhwYXJhbXNbMF0uaXNHUFIoKSk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0u
aXNHUFIoKSk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXNbMl0uaXNHUFIoKSk7Ci0gICAgICAg
ICAgICBDSEVDSyhwYXJhbXMuZ3BTY3JhdGNoKDApICE9IEludmFsaWRHUFJSZWcpOwotICAgICAg
ICAgICAgQ0hFQ0socGFyYW1zLmdwU2NyYXRjaCgwKSAhPSBwYXJhbXNbMF0uZ3ByKCkpOwotICAg
ICAgICAgICAgQ0hFQ0socGFyYW1zLmdwU2NyYXRjaCgwKSAhPSBwYXJhbXNbMV0uZ3ByKCkpOwot
ICAgICAgICAgICAgQ0hFQ0socGFyYW1zLmdwU2NyYXRjaCgwKSAhPSBwYXJhbXNbMl0uZ3ByKCkp
OwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zLmdwU2NyYXRjaCgxKSAhPSBJbnZhbGlkR1BSUmVn
KTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtcy5ncFNjcmF0Y2goMSkgIT0gcGFyYW1zLmdwU2Ny
YXRjaCgwKSk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXMuZ3BTY3JhdGNoKDEpICE9IHBhcmFt
c1swXS5ncHIoKSk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXMuZ3BTY3JhdGNoKDEpICE9IHBh
cmFtc1sxXS5ncHIoKSk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXMuZ3BTY3JhdGNoKDEpICE9
IHBhcmFtc1syXS5ncHIoKSk7Ci0gICAgICAgICAgICBDSEVDSyghcGFyYW1zLnVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCkuZ2V0KHBhcmFtcy5ncFNjcmF0Y2goMCkpKTsKLSAgICAgICAgICAgIENIRUNL
KCFwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKS5nZXQocGFyYW1zLmdwU2NyYXRjaCgxKSkp
OwotICAgICAgICAgICAgYWRkMzIoaml0LCBwYXJhbXNbMV0uZ3ByKCksIHBhcmFtc1syXS5ncHIo
KSwgcGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgfSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHBhdGNocG9pbnQpOwotCi0gICAgQ0hF
Q0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIDEsIDIpID09IDMpOwotfQotCi12b2lkIHRlc3RQ
YXRjaHBvaW50RlBTY3JhdGNoKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOwotICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgIFBhdGNocG9p
bnRWYWx1ZSogcGF0Y2hwb2ludCA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHBy
b2MsIEludDMyLCBPcmlnaW4oKSk7Ci0gICAgcGF0Y2hwb2ludC0+YXBwZW5kKGFyZzEsIFZhbHVl
UmVwOjpTb21lUmVnaXN0ZXIpOwotICAgIHBhdGNocG9pbnQtPmFwcGVuZChhcmcyLCBWYWx1ZVJl
cDo6U29tZVJlZ2lzdGVyKTsKLSAgICBwYXRjaHBvaW50LT5udW1GUFNjcmF0Y2hSZWdpc3RlcnMg
PSAyOwotICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKLSAgICAgICAgWyZdIChDQ2FsbEhl
bHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKLSAg
ICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0
KTsKLSAgICAgICAgICAgIC8vIFdlIHNob3VsZG4ndCBoYXZlIHNwaWxsZWQgdGhlIGlucHV0cywg
c28gd2UgYXNzZXJ0IHRoYXQgdGhleSdyZSBpbiByZWdpc3RlcnMuCi0gICAgICAgICAgICBDSEVD
SyhwYXJhbXMuc2l6ZSgpID09IDMpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzBdLmlzR1BS
KCkpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzFdLmlzR1BSKCkpOwotICAgICAgICAgICAg
Q0hFQ0socGFyYW1zWzJdLmlzR1BSKCkpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zLmZwU2Ny
YXRjaCgwKSAhPSBJbnZhbGlkRlBSUmVnKTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtcy5mcFNj
cmF0Y2goMSkgIT0gSW52YWxpZEZQUlJlZyk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXMuZnBT
Y3JhdGNoKDEpICE9IHBhcmFtcy5mcFNjcmF0Y2goMCkpOwotICAgICAgICAgICAgQ0hFQ0soIXBh
cmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLmdldChwYXJhbXMuZnBTY3JhdGNoKDApKSk7Ci0g
ICAgICAgICAgICBDSEVDSyghcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCkuZ2V0KHBhcmFt
cy5mcFNjcmF0Y2goMSkpKTsKLSAgICAgICAgICAgIGFkZDMyKGppdCwgcGFyYW1zWzFdLmdwcigp
LCBwYXJhbXNbMl0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7Ci0gICAgICAgIH0pOwotICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBwYXRjaHBv
aW50KTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCAxLCAyKSA9PSAzKTsK
LX0KLQotdm9pZCB0ZXN0UGF0Y2hwb2ludExvdHNPZkxhdGVBbnlzKCkKLXsKLSAgICBQcm9jZWR1
cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZl
Y3RvcjxpbnQ+IHRoaW5nczsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAyMDA7IGktLTspCi0gICAg
ICAgIHRoaW5ncy5hcHBlbmQoaSk7Ci0KLSAgICBWZWN0b3I8VmFsdWUqPiB2YWx1ZXM7Ci0gICAg
Zm9yIChpbnQmIHRoaW5nIDogdGhpbmdzKSB7Ci0gICAgICAgIFZhbHVlKiB2YWx1ZSA9IHJvb3Qt
PmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBMb2FkLCBJbnQzMiwg
T3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksICZ0aGluZykpOwotICAgICAgICB2YWx1ZXMuYXBwZW5kKHZhbHVlKTsKLSAg
ICB9Ci0KLSAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8
UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBJbnQzMiwgT3JpZ2luKCkpOwotICAgIHBhdGNocG9pbnQt
PmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKLSAgICBmb3Ig
KFZhbHVlKiB2YWx1ZSA6IHZhbHVlcykKLSAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0
cmFpbmVkVmFsdWUodmFsdWUsIFZhbHVlUmVwOjpMYXRlQ29sZEFueSkpOwotICAgIHBhdGNocG9p
bnQtPnNldEdlbmVyYXRvcigKLSAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3Qg
U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAgIEFsbG93TWFj
cm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKLSAgICAgICAgICAgIC8v
IFdlIHNob3VsZG4ndCBoYXZlIHNwaWxsZWQgdGhlIGlucHV0cywgc28gd2UgYXNzZXJ0IHRoYXQg
dGhleSdyZSBpbiByZWdpc3RlcnMuCi0gICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09
IHRoaW5ncy5zaXplKCkgKyAxKTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtc1swXS5pc0dQUigp
KTsKLSAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDApLCBw
YXJhbXNbMF0uZ3ByKCkpOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IHBh
cmFtcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgICAgIGlmIChwYXJhbXNbaV0uaXNHUFIo
KSkgewotICAgICAgICAgICAgICAgICAgICBDSEVDSyhwYXJhbXNbaV0gIT0gcGFyYW1zWzBdKTsK
LSAgICAgICAgICAgICAgICAgICAgaml0LmFkZDMyKHBhcmFtc1tpXS5ncHIoKSwgcGFyYW1zWzBd
LmdwcigpKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBD
SEVDSyhwYXJhbXNbaV0uaXNTdGFjaygpKTsKLSAgICAgICAgICAgICAgICAgICAgaml0LmFkZDMy
KENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgcGFyYW1z
W2ldLm9mZnNldEZyb21GUCgpKSwgcGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBwYXRjaHBvaW50KTsKLQotICAgIENIRUNLKHN0
YXRpY19jYXN0PHNpemVfdD4oY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpKSA9PSAodGhpbmdzLnNp
emUoKSAqICh0aGluZ3Muc2l6ZSgpIC0gMSkpIC8gMik7Ci19Ci0KLXZvaWQgdGVzdFBhdGNocG9p
bnRBbnlJbW0oVmFsdWVSZXAgcmVwKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZzEgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDIpOwotICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0
Y2hwb2ludCA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIEludDMyLCBP
cmlnaW4oKSk7Ci0gICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMSwg
cmVwKSk7Ci0gICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMiwgcmVw
KSk7Ci0gICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAotICAgICAgICBbJl0gKENDYWxsSGVs
cGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewotICAg
ICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQp
OwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9PSAzKTsKLSAgICAgICAgICAgIENI
RUNLKHBhcmFtc1swXS5pc0dQUigpKTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtc1sxXS5pc0dQ
UigpKTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtc1syXS5pc0NvbnN0YW50KCkpOwotICAgICAg
ICAgICAgQ0hFQ0socGFyYW1zWzJdLnZhbHVlKCkgPT0gNDIpOwotICAgICAgICAgICAgaml0LmFk
ZDMyKAotICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHN0YXRpY19j
YXN0PGludDMyX3Q+KHBhcmFtc1syXS52YWx1ZSgpKSksCi0gICAgICAgICAgICAgICAgcGFyYW1z
WzFdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOwotICAgICAgICB9KTsKLSAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcGF0Y2hwb2ludCk7Ci0K
LSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgMSkgPT0gNDMpOwotfQotCi12b2lk
IHRlc3RQYXRjaHBvaW50TWFueUltbXMoKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZzEgPSByb290
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDIpOwotICAgIFZhbHVl
KiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQz
KTsKLSAgICBWYWx1ZSogYXJnMyA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2Ms
IE9yaWdpbigpLCA0MzAwMDAwMDAwMDAwMGxsKTsKLSAgICBWYWx1ZSogYXJnNCA9IHJvb3QtPmFw
cGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDIuNSk7Ci0gICAgUGF0
Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1
ZT4ocHJvYywgVm9pZCwgT3JpZ2luKCkpOwotICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJh
aW5lZFZhbHVlKGFyZzEsIFZhbHVlUmVwOjpXYXJtQW55KSk7Ci0gICAgcGF0Y2hwb2ludC0+YXBw
ZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMiwgVmFsdWVSZXA6Oldhcm1BbnkpKTsKLSAgICBwYXRj
aHBvaW50LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmczLCBWYWx1ZVJlcDo6V2FybUFueSkp
OwotICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzQsIFZhbHVlUmVw
OjpXYXJtQW55KSk7Ci0gICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAotICAgICAgICBbJl0g
KENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7
Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09IDQpOwotICAgICAgICAgICAgQ0hF
Q0socGFyYW1zWzBdID09IFZhbHVlUmVwOjpjb25zdGFudCg0MikpOwotICAgICAgICAgICAgQ0hF
Q0socGFyYW1zWzFdID09IFZhbHVlUmVwOjpjb25zdGFudCg0MykpOwotICAgICAgICAgICAgQ0hF
Q0socGFyYW1zWzJdID09IFZhbHVlUmVwOjpjb25zdGFudCg0MzAwMDAwMDAwMDAwMGxsKSk7Ci0g
ICAgICAgICAgICBDSEVDSyhwYXJhbXNbM10gPT0gVmFsdWVSZXA6OmNvbnN0YW50KGJpdHdpc2Vf
Y2FzdDxpbnQ2NF90Pig0Mi41KSkpOwotICAgICAgICB9KTsKLSAgICByb290LT5hcHBlbmROZXdD
b250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7Ci0KLSAgICBD
SEVDSyghY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpKTsKLX0KLQotdm9pZCB0ZXN0UGF0Y2hwb2lu
dFdpdGhSZWdpc3RlclJlc3VsdCgpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKLSAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICBQYXRjaHBv
aW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihw
cm9jLCBJbnQzMiwgT3JpZ2luKCkpOwotICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5l
ZFZhbHVlKGFyZzEsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKLSAgICBwYXRjaHBvaW50LT5h
cHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmcyLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7Ci0g
ICAgcGF0Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWludCA9IFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6
bm9uQXJnR1BSMCk7Ci0gICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAotICAgICAgICBbJl0g
KENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFt
cykgewotICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2Ny
YXRjaChqaXQpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9PSAzKTsKLSAgICAg
ICAgICAgIENIRUNLKHBhcmFtc1swXSA9PSBWYWx1ZVJlcDo6cmVnKEdQUkluZm86Om5vbkFyZ0dQ
UjApKTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtc1sxXS5pc0dQUigpKTsKLSAgICAgICAgICAg
IENIRUNLKHBhcmFtc1syXS5pc0dQUigpKTsKLSAgICAgICAgICAgIGFkZDMyKGppdCwgcGFyYW1z
WzFdLmdwcigpLCBwYXJhbXNbMl0uZ3ByKCksIEdQUkluZm86Om5vbkFyZ0dQUjApOwotICAgICAg
ICB9KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmln
aW4oKSwgcGF0Y2hwb2ludCk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywg
MSwgMikgPT0gMyk7Ci19Ci0KLXZvaWQgdGVzdFBhdGNocG9pbnRXaXRoU3RhY2tBcmd1bWVudFJl
c3VsdCgpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBW
YWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNo
cG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBJbnQzMiwgT3Jp
Z2luKCkpOwotICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzEsIFZh
bHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKLSAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3RyYWlu
ZWRWYWx1ZShhcmcyLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7Ci0gICAgcGF0Y2hwb2ludC0+
cmVzdWx0Q29uc3RyYWludCA9IFZhbHVlUmVwOjpzdGFja0FyZ3VtZW50KDApOwotICAgIHBhdGNo
cG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKLSAg
ICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAg
ICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAg
ICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09IDMpOwotICAgICAgICAgICAgQ0hFQ0socGFy
YW1zWzBdID09IFZhbHVlUmVwOjpzdGFjaygtc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHByb2MuZnJh
bWVTaXplKCkpKSk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0uaXNHUFIoKSk7Ci0gICAg
ICAgICAgICBDSEVDSyhwYXJhbXNbMl0uaXNHUFIoKSk7Ci0gICAgICAgICAgICBqaXQuYWRkMzIo
cGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMl0uZ3ByKCksIGppdC5zY3JhdGNoUmVnaXN0ZXIoKSk7
Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMihqaXQuc2NyYXRjaFJlZ2lzdGVyKCksIENDYWxsSGVs
cGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCAwKSk7Ci0g
ICAgICAgIH0pOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCBwYXRjaHBvaW50KTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihw
cm9jLCAxLCAyKSA9PSAzKTsKLX0KLQotdm9pZCB0ZXN0UGF0Y2hwb2ludFdpdGhBbnlSZXN1bHQo
KQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgVmFsdWUq
IGFyZzIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50
ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgRG91YmxlLCBPcmlnaW4o
KSk7Ci0gICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMSwgVmFsdWVS
ZXA6OlNvbWVSZWdpc3RlcikpOwotICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZh
bHVlKGFyZzIsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKLSAgICBwYXRjaHBvaW50LT5yZXN1
bHRDb25zdHJhaW50ID0gVmFsdWVSZXA6Oldhcm1Bbnk7Ci0gICAgcGF0Y2hwb2ludC0+Y2xvYmJl
ckxhdGUoUmVnaXN0ZXJTZXQ6OmFsbEZQUnMoKSk7Ci0gICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihS
ZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwotICAgIHBhdGNocG9pbnQtPmNs
b2JiZXIoUmVnaXN0ZXJTZXQoR1BSSW5mbzo6cmVnVDApKTsKLSAgICBwYXRjaHBvaW50LT5zZXRH
ZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRj
aFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJh
bXMuc2l6ZSgpID09IDMpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzBdLmlzU3RhY2soKSk7
Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0uaXNHUFIoKSk7Ci0gICAgICAgICAgICBDSEVD
SyhwYXJhbXNbMl0uaXNHUFIoKSk7Ci0gICAgICAgICAgICBhZGQzMihqaXQsIHBhcmFtc1sxXS5n
cHIoKSwgcGFyYW1zWzJdLmdwcigpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQu
Y29udmVydEludDMyVG9Eb3VibGUoR1BSSW5mbzo6cmVnVDAsIEZQUkluZm86OmZwUmVnVDApOwot
ICAgICAgICAgICAgaml0LnN0b3JlRG91YmxlKEZQUkluZm86OmZwUmVnVDAsIENDYWxsSGVscGVy
czo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgcGFyYW1zWzBdLm9mZnNldEZy
b21GUCgpKSk7Ci0gICAgICAgIH0pOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLCBwYXRjaHBvaW50KTsKLQotICAgIENIRUNLKGNvbXBpbGVB
bmRSdW48ZG91YmxlPihwcm9jLCAxLCAyKSA9PSAzKTsKLX0KLQotdm9pZCB0ZXN0U2ltcGxlQ2hl
Y2soKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAx
KQotICAgICAgICByZXR1cm47Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKLSAgICBWYWx1ZSogYXJnID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIENoZWNrVmFsdWUqIGNo
ZWNrID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrLCBPcmlnaW4oKSwg
YXJnKTsKLSAgICBjaGVjay0+c2V0R2VuZXJhdG9yKAotICAgICAgICBbJl0gKENDYWxsSGVscGVy
cyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewotICAgICAg
ICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwot
ICAgICAgICAgICAgQ0hFQ0soIXBhcmFtcy5zaXplKCkpOwotCi0gICAgICAgICAgICAvLyBUaGlz
IHNob3VsZCBhbHdheXMgd29yayBiZWNhdXNlIGEgZnVuY3Rpb24gdGhpcyBzaW1wbGUgc2hvdWxk
IG5ldmVyIGhhdmUgY2FsbGVlCi0gICAgICAgICAgICAvLyBzYXZlcy4KLSAgICAgICAgICAgIGpp
dC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDQyKSwgR1BSSW5mbzo6cmV0dXJuVmFs
dWVHUFIpOwotICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7Ci0gICAgICAg
ICAgICBqaXQucmV0KCk7Ci0gICAgICAgIH0pOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kTmV3PENv
bnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBp
bGVQcm9jKHByb2MpOwotICAgIAotICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAwKSA9PSAw
KTsKLSAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgMSkgPT0gNDIpOwotfQotCi12b2lkIHRl
c3RDaGVja0ZhbHNlKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIENoZWNrVmFsdWUqIGNoZWNrID0gcm9vdC0+YXBw
ZW5kTmV3PENoZWNrVmFsdWU+KAotICAgICAgICBwcm9jLCBDaGVjaywgT3JpZ2luKCksIHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7Ci0gICAgdW5zaWdu
ZWQgb3B0TGV2ZWwgPSBwcm9jLm9wdExldmVsKCk7Ci0gICAgY2hlY2stPnNldEdlbmVyYXRvcigK
LSAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmLCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJh
bXMmKSB7Ci0gICAgICAgICAgICBpZiAob3B0TGV2ZWwgPiAxKQotICAgICAgICAgICAgICAgIENI
RUNLKCEiVGhpcyBzaG91bGQgbm90IGhhdmUgZXhlY3V0ZWQiKTsKLSAgICAgICAgfSk7Ci0gICAg
cm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwot
Ci0gICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAgCi0gICAgQ0hFQ0soaW52
b2tlPGludD4oKmNvZGUpID09IDApOwotfQotCi12b2lkIHRlc3RDaGVja1RydWUoKQotewotICAg
IFByb2NlZHVyZSBwcm9jOwotICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAxKQotICAgICAgICBy
ZXR1cm47Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBDaGVj
a1ZhbHVlKiBjaGVjayA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPigKLSAgICAgICAgcHJv
YywgQ2hlY2ssIE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgMSkpOwotICAgIHVuc2lnbmVkIG9wdExldmVsID0gcHJvYy5vcHRMZXZlbCgpOwot
ICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQs
IGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICBB
bGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAgICAg
ICAgICBpZiAob3B0TGV2ZWwgPiAxKQotICAgICAgICAgICAgICAgIENIRUNLKHBhcmFtcy52YWx1
ZSgpLT5vcGNvZGUoKSA9PSBQYXRjaHBvaW50KTsKLSAgICAgICAgICAgIENIRUNLKCFwYXJhbXMu
c2l6ZSgpKTsKLQotICAgICAgICAgICAgLy8gVGhpcyBzaG91bGQgYWx3YXlzIHdvcmsgYmVjYXVz
ZSBhIGZ1bmN0aW9uIHRoaXMgc2ltcGxlIHNob3VsZCBuZXZlciBoYXZlIGNhbGxlZQotICAgICAg
ICAgICAgLy8gc2F2ZXMuCi0gICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMig0MiksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKLSAgICAgICAgICAgIGppdC5l
bWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwotICAgICAgICAgICAgaml0LnJldCgpOwotICAgICAgICB9
KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCAwKSk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICAKLSAgICBD
SEVDSyhpbnZva2U8aW50PigqY29kZSkgPT0gNDIpOwotfQotCi12b2lkIHRlc3RDaGVja0xlc3NU
aGFuKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBpZiAocHJvYy5vcHRMZXZlbCgpIDwg
MSkKLSAgICAgICAgcmV0dXJuOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7Ci0gICAgVmFsdWUqIGFyZyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBDaGVj
a1ZhbHVlKiBjaGVjayA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPigKLSAgICAgICAgcHJv
YywgQ2hlY2ssIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAg
ICAgICAgICAgcHJvYywgTGVzc1RoYW4sIE9yaWdpbigpLCBhcmcsCi0gICAgICAgICAgICByb290
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDIpKSk7Ci0gICAgY2hl
Y2stPnNldEdlbmVyYXRvcigKLSAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3Qg
U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAgIEFsbG93TWFj
cm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKLSAgICAgICAgICAgIENI
RUNLKCFwYXJhbXMuc2l6ZSgpKTsKLQotICAgICAgICAgICAgLy8gVGhpcyBzaG91bGQgYWx3YXlz
IHdvcmsgYmVjYXVzZSBhIGZ1bmN0aW9uIHRoaXMgc2ltcGxlIHNob3VsZCBuZXZlciBoYXZlIGNh
bGxlZQotICAgICAgICAgICAgLy8gc2F2ZXMuCi0gICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMig0MiksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKLSAgICAg
ICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwotICAgICAgICAgICAgaml0LnJldCgp
OwotICAgICAgICB9KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAg
IHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCAwKSk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsK
LSAgICAKLSAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgNDIpID09IDApOwotICAgIENIRUNL
KGludm9rZTxpbnQ+KCpjb2RlLCAxMDAwKSA9PSAwKTsKLSAgICBDSEVDSyhpbnZva2U8aW50Pigq
Y29kZSwgNDEpID09IDQyKTsKLSAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgMCkgPT0gNDIp
OwotICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAtMSkgPT0gNDIpOwotfQotCi12b2lkIHRl
c3RDaGVja01lZ2FDb21ibygpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgaWYgKHByb2Mu
b3B0TGV2ZWwoKSA8IDEpCi0gICAgICAgIHJldHVybjsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBiYXNlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAg
IFZhbHVlKiBpbmRleCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIFpF
eHQzMiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAg
ICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkp
KTsKLQotICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBw
cm9jLCBBZGQsIE9yaWdpbigpLCBiYXNlLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAotICAgICAgICAgICAgcHJvYywgU2hsLCBPcmlnaW4oKSwgaW5kZXgsCi0gICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpKTsKLSAgICAK
LSAgICBDaGVja1ZhbHVlKiBjaGVjayA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPigKLSAg
ICAgICAgcHJvYywgQ2hlY2ssIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAotICAgICAgICAgICAgcHJvYywgTGVzc1RoYW4sIE9yaWdpbigpLAotICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkOFMsIE9yaWdpbigpLCBwdHIp
LAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIDQyKSkpOwotICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxI
ZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0g
ICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGpp
dCk7Ci0gICAgICAgICAgICBDSEVDSyghcGFyYW1zLnNpemUoKSk7Ci0KLSAgICAgICAgICAgIC8v
IFRoaXMgc2hvdWxkIGFsd2F5cyB3b3JrIGJlY2F1c2UgYSBmdW5jdGlvbiB0aGlzIHNpbXBsZSBz
aG91bGQgbmV2ZXIgaGF2ZSBjYWxsZWUKLSAgICAgICAgICAgIC8vIHNhdmVzLgotICAgICAgICAg
ICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoNDIpLCBHUFJJbmZvOjpyZXR1
cm5WYWx1ZUdQUik7Ci0gICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKLSAg
ICAgICAgICAgIGppdC5yZXQoKTsKLSAgICAgICAgfSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByb290LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwotCi0gICAgYXV0byBjb2RlID0g
Y29tcGlsZVByb2MocHJvYyk7Ci0KLSAgICBpbnQ4X3QgdmFsdWU7Ci0gICAgdmFsdWUgPSA0MjsK
LSAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgJnZhbHVlIC0gMiwgMSkgPT0gMCk7Ci0gICAg
dmFsdWUgPSAxMjc7Ci0gICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsICZ2YWx1ZSAtIDIsIDEp
ID09IDApOwotICAgIHZhbHVlID0gNDE7Ci0gICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsICZ2
YWx1ZSAtIDIsIDEpID09IDQyKTsKLSAgICB2YWx1ZSA9IDA7Ci0gICAgQ0hFQ0soaW52b2tlPGlu
dD4oKmNvZGUsICZ2YWx1ZSAtIDIsIDEpID09IDQyKTsKLSAgICB2YWx1ZSA9IC0xOwotICAgIENI
RUNLKGludm9rZTxpbnQ+KCpjb2RlLCAmdmFsdWUgLSAyLCAxKSA9PSA0Mik7Ci19Ci0KLXZvaWQg
dGVzdENoZWNrVHJpY2t5TWVnYUNvbWJvKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBp
ZiAocHJvYy5vcHRMZXZlbCgpIDwgMSkKLSAgICAgICAgcmV0dXJuOwotICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGJhc2UgPSByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7Ci0gICAgVmFsdWUqIGluZGV4ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAg
cHJvYywgWkV4dDMyLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
LSAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKSk7Ci0KLSAgICBWYWx1ZSogcHRy
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwg
YmFzZSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2Ms
IFNobCwgT3JpZ2luKCksIGluZGV4LAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0
MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKSk7Ci0gICAgCi0gICAgQ2hlY2tWYWx1ZSogY2hl
Y2sgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4oCi0gICAgICAgIHByb2MsIENoZWNrLCBP
cmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHBy
b2MsIExlc3NUaGFuLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1v
cnlWYWx1ZT4ocHJvYywgTG9hZDhTLCBPcmlnaW4oKSwgcHRyKSwKLSAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0MikpKTsKLSAgICBjaGVj
ay0+c2V0R2VuZXJhdG9yKAotICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBT
dGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewotICAgICAgICAgICAgQWxsb3dNYWNy
b1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwotICAgICAgICAgICAgQ0hF
Q0soIXBhcmFtcy5zaXplKCkpOwotCi0gICAgICAgICAgICAvLyBUaGlzIHNob3VsZCBhbHdheXMg
d29yayBiZWNhdXNlIGEgZnVuY3Rpb24gdGhpcyBzaW1wbGUgc2hvdWxkIG5ldmVyIGhhdmUgY2Fs
bGVlCi0gICAgICAgICAgICAvLyBzYXZlcy4KLSAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKDQyKSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwotICAgICAg
ICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7Ci0gICAgICAgICAgICBqaXQucmV0KCk7
Ci0gICAgICAgIH0pOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIDApKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwot
Ci0gICAgaW50OF90IHZhbHVlOwotICAgIHZhbHVlID0gNDI7Ci0gICAgQ0hFQ0soaW52b2tlPGlu
dD4oKmNvZGUsICZ2YWx1ZSAtIDIsIDApID09IDApOwotICAgIHZhbHVlID0gMTI3OwotICAgIENI
RUNLKGludm9rZTxpbnQ+KCpjb2RlLCAmdmFsdWUgLSAyLCAwKSA9PSAwKTsKLSAgICB2YWx1ZSA9
IDQxOwotICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAmdmFsdWUgLSAyLCAwKSA9PSA0Mik7
Ci0gICAgdmFsdWUgPSAwOwotICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAmdmFsdWUgLSAy
LCAwKSA9PSA0Mik7Ci0gICAgdmFsdWUgPSAtMTsKLSAgICBDSEVDSyhpbnZva2U8aW50PigqY29k
ZSwgJnZhbHVlIC0gMiwgMCkgPT0gNDIpOwotfQotCi12b2lkIHRlc3RDaGVja1R3b01lZ2FDb21i
b3MoKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAx
KQotICAgICAgICByZXR1cm47Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKLSAgICBWYWx1ZSogYmFzZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBWYWx1ZSogaW5kZXgg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBaRXh0MzIsIE9yaWdpbigp
LAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgVHJ1
bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSk7Ci0KLSAgICBWYWx1
ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgQWRkLCBPcmln
aW4oKSwgYmFzZSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAg
IHByb2MsIFNobCwgT3JpZ2luKCksIGluZGV4LAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKSk7Ci0KLSAgICBWYWx1ZSogcHJlZGlj
YXRlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgTGVzc1RoYW4sIE9y
aWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQ4
UywgT3JpZ2luKCksIHB0ciksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCA0MikpOwotICAgIAotICAgIENoZWNrVmFsdWUqIGNoZWNrID0gcm9v
dC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrLCBPcmlnaW4oKSwgcHJlZGljYXRl
KTsKLSAgICBjaGVjay0+c2V0R2VuZXJhdG9yKAotICAgICAgICBbJl0gKENDYWxsSGVscGVycyYg
aml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewotICAgICAgICAg
ICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwotICAg
ICAgICAgICAgQ0hFQ0soIXBhcmFtcy5zaXplKCkpOwotCi0gICAgICAgICAgICAvLyBUaGlzIHNo
b3VsZCBhbHdheXMgd29yayBiZWNhdXNlIGEgZnVuY3Rpb24gdGhpcyBzaW1wbGUgc2hvdWxkIG5l
dmVyIGhhdmUgY2FsbGVlCi0gICAgICAgICAgICAvLyBzYXZlcy4KLSAgICAgICAgICAgIGppdC5t
b3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDQyKSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVH
UFIpOwotICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7Ci0gICAgICAgICAg
ICBqaXQucmV0KCk7Ci0gICAgICAgIH0pOwotICAgIENoZWNrVmFsdWUqIGNoZWNrMiA9IHJvb3Qt
PmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVjaywgT3JpZ2luKCksIHByZWRpY2F0ZSk7
Ci0gICAgY2hlY2syLT5zZXRHZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAg
ICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAg
ICAgICAgICBDSEVDSyghcGFyYW1zLnNpemUoKSk7Ci0KLSAgICAgICAgICAgIC8vIFRoaXMgc2hv
dWxkIGFsd2F5cyB3b3JrIGJlY2F1c2UgYSBmdW5jdGlvbiB0aGlzIHNpbXBsZSBzaG91bGQgbmV2
ZXIgaGF2ZSBjYWxsZWUKLSAgICAgICAgICAgIC8vIHNhdmVzLgotICAgICAgICAgICAgaml0Lm1v
dmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoNDMpLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQ
Uik7Ci0gICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKLSAgICAgICAgICAg
IGppdC5yZXQoKTsKLSAgICAgICAgfSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8Q29uc3Qz
MlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwotCi0gICAgYXV0byBjb2RlID0gY29tcGlsZVBy
b2MocHJvYyk7Ci0KLSAgICBpbnQ4X3QgdmFsdWU7Ci0gICAgdmFsdWUgPSA0MjsKLSAgICBDSEVD
SyhpbnZva2U8aW50PigqY29kZSwgJnZhbHVlIC0gMiwgMSkgPT0gMCk7Ci0gICAgdmFsdWUgPSAx
Mjc7Ci0gICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsICZ2YWx1ZSAtIDIsIDEpID09IDApOwot
ICAgIHZhbHVlID0gNDE7Ci0gICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsICZ2YWx1ZSAtIDIs
IDEpID09IDQyKTsKLSAgICB2YWx1ZSA9IDA7Ci0gICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUs
ICZ2YWx1ZSAtIDIsIDEpID09IDQyKTsKLSAgICB2YWx1ZSA9IC0xOwotICAgIENIRUNLKGludm9r
ZTxpbnQ+KCpjb2RlLCAmdmFsdWUgLSAyLCAxKSA9PSA0Mik7Ci19Ci0KLXZvaWQgdGVzdENoZWNr
VHdvTm9uUmVkdW5kYW50TWVnYUNvbWJvcygpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAg
aWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNl
ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRC
bG9jaygpOwotICAgIAotICAgIFZhbHVlKiBiYXNlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIFZh
bHVlKiBpbmRleCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIFpFeHQz
MiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAg
ICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKTsK
LSAgICBWYWx1ZSogYnJhbmNoUHJlZGljYXRlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAg
ICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKLSAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIyKSksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCAweGZmKSk7Ci0KLSAgICBWYWx1ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKLSAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwgYmFzZSwKLSAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIFNobCwgT3JpZ2luKCksIGlu
ZGV4LAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIDEpKSk7Ci0KLSAgICBWYWx1ZSogY2hlY2tQcmVkaWNhdGUgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBMZXNzVGhhbiwgT3JpZ2luKCksCi0gICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZDhTLCBPcmlnaW4oKSwgcHRyKSwK
LSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQy
KSk7Ci0KLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIEJy
YW5jaCwgT3JpZ2luKCksIGJyYW5jaFByZWRpY2F0ZSwKLSAgICAgICAgRnJlcXVlbnRlZEJsb2Nr
KHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNlKSk7Ci0gICAgCi0gICAgQ2hlY2tW
YWx1ZSogY2hlY2sgPSB0aGVuQ2FzZS0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNr
LCBPcmlnaW4oKSwgY2hlY2tQcmVkaWNhdGUpOwotICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoCi0g
ICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNh
Z2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAgICAgICAgICBDSEVDSyghcGFyYW1zLnNpemUoKSk7
Ci0KLSAgICAgICAgICAgIC8vIFRoaXMgc2hvdWxkIGFsd2F5cyB3b3JrIGJlY2F1c2UgYSBmdW5j
dGlvbiB0aGlzIHNpbXBsZSBzaG91bGQgbmV2ZXIgaGF2ZSBjYWxsZWUKLSAgICAgICAgICAgIC8v
IHNhdmVzLgotICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
NDIpLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7Ci0gICAgICAgICAgICBqaXQuZW1pdEZ1bmN0
aW9uRXBpbG9ndWUoKTsKLSAgICAgICAgICAgIGppdC5yZXQoKTsKLSAgICAgICAgfSk7Ci0gICAg
dGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCA0MykpOwotCi0gICAgQ2hlY2tWYWx1ZSogY2hlY2syID0gZWxzZUNhc2UtPmFwcGVuZE5ldzxD
aGVja1ZhbHVlPihwcm9jLCBDaGVjaywgT3JpZ2luKCksIGNoZWNrUHJlZGljYXRlKTsKLSAgICBj
aGVjazItPnNldEdlbmVyYXRvcigKLSAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29u
c3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAgIEFsbG93
TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKLSAgICAgICAgICAg
IENIRUNLKCFwYXJhbXMuc2l6ZSgpKTsKLQotICAgICAgICAgICAgLy8gVGhpcyBzaG91bGQgYWx3
YXlzIHdvcmsgYmVjYXVzZSBhIGZ1bmN0aW9uIHRoaXMgc2ltcGxlIHNob3VsZCBuZXZlciBoYXZl
IGNhbGxlZQotICAgICAgICAgICAgLy8gc2F2ZXMuCi0gICAgICAgICAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMig0NCksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKLSAg
ICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwotICAgICAgICAgICAgaml0LnJl
dCgpOwotICAgICAgICB9KTsKLSAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAot
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0
MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQ1KSk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxl
UHJvYyhwcm9jKTsKLQotICAgIGludDhfdCB2YWx1ZTsKLQotICAgIHZhbHVlID0gNDI7Ci0gICAg
Q0hFQ0soaW52b2tlPGludD4oKmNvZGUsICZ2YWx1ZSAtIDIsIDEsIHRydWUpID09IDQzKTsKLSAg
ICB2YWx1ZSA9IDEyNzsKLSAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgJnZhbHVlIC0gMiwg
MSwgdHJ1ZSkgPT0gNDMpOwotICAgIHZhbHVlID0gNDE7Ci0gICAgQ0hFQ0soaW52b2tlPGludD4o
KmNvZGUsICZ2YWx1ZSAtIDIsIDEsIHRydWUpID09IDQyKTsKLSAgICB2YWx1ZSA9IDA7Ci0gICAg
Q0hFQ0soaW52b2tlPGludD4oKmNvZGUsICZ2YWx1ZSAtIDIsIDEsIHRydWUpID09IDQyKTsKLSAg
ICB2YWx1ZSA9IC0xOwotICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAmdmFsdWUgLSAyLCAx
LCB0cnVlKSA9PSA0Mik7Ci0KLSAgICB2YWx1ZSA9IDQyOwotICAgIENIRUNLKGludm9rZTxpbnQ+
KCpjb2RlLCAmdmFsdWUgLSAyLCAxLCBmYWxzZSkgPT0gNDUpOwotICAgIHZhbHVlID0gMTI3Owot
ICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAmdmFsdWUgLSAyLCAxLCBmYWxzZSkgPT0gNDUp
OwotICAgIHZhbHVlID0gNDE7Ci0gICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsICZ2YWx1ZSAt
IDIsIDEsIGZhbHNlKSA9PSA0NCk7Ci0gICAgdmFsdWUgPSAwOwotICAgIENIRUNLKGludm9rZTxp
bnQ+KCpjb2RlLCAmdmFsdWUgLSAyLCAxLCBmYWxzZSkgPT0gNDQpOwotICAgIHZhbHVlID0gLTE7
Ci0gICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsICZ2YWx1ZSAtIDIsIDEsIGZhbHNlKSA9PSA0
NCk7Ci19Ci0KLXZvaWQgdGVzdENoZWNrQWRkSW1tKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsK
LSAgICBpZiAocHJvYy5vcHRMZXZlbCgpIDwgMSkKLSAgICAgICAgcmV0dXJuOwotICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZzEgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDIpOwotICAgIENoZWNrVmFsdWUqIGNoZWNrQWRk
ID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrQWRkLCBPcmlnaW4oKSwg
YXJnMSwgYXJnMik7Ci0gICAgY2hlY2tBZGQtPmFwcGVuZChhcmcxKTsKLSAgICBjaGVja0FkZC0+
YXBwZW5kKGFyZzIpOwotICAgIGNoZWNrQWRkLT5zZXRHZW5lcmF0b3IoCi0gICAgICAgIFsmXSAo
Q0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1z
KSB7Ci0gICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3Jh
dGNoKGppdCk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09IDIpOwotICAgICAg
ICAgICAgQ0hFQ0socGFyYW1zWzBdLmlzR1BSKCkpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1z
WzFdLmlzQ29uc3RhbnQoKSk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0udmFsdWUoKSA9
PSA0Mik7Ci0gICAgICAgICAgICBqaXQuY29udmVydEludDMyVG9Eb3VibGUocGFyYW1zWzBdLmdw
cigpLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5jb252ZXJ0SW50MzJUb0Rv
dWJsZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMig0MiksIEZQUkluZm86OmZwUmVnVDEpOwot
ICAgICAgICAgICAgaml0LmFkZERvdWJsZShGUFJJbmZvOjpmcFJlZ1QxLCBGUFJJbmZvOjpmcFJl
Z1QwKTsKLSAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwotICAgICAgICAg
ICAgaml0LnJldCgpOwotICAgICAgICB9KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgSVRvRCwgT3JpZ2luKCksIGNoZWNrQWRkKSk7Ci0KLSAgICBhdXRv
IGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLQotICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpj
b2RlLCAwKSA9PSA0Mi4wKTsKLSAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgMSkgPT0g
NDMuMCk7Ci0gICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDQyKSA9PSA4NC4wKTsKLSAg
ICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgMjE0NzQ4MzY0NykgPT0gMjE0NzQ4MzY4OS4w
KTsKLX0KLQotdm9pZCB0ZXN0Q2hlY2tBZGRJbW1Db21tdXRlKCkKLXsKLSAgICBQcm9jZWR1cmUg
cHJvYzsKLSAgICBpZiAocHJvYy5vcHRMZXZlbCgpIDwgMSkKLSAgICAgICAgcmV0dXJuOwotICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZzEgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0g
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDIpOwotICAgIENoZWNrVmFsdWUqIGNo
ZWNrQWRkID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrQWRkLCBPcmln
aW4oKSwgYXJnMiwgYXJnMSk7Ci0gICAgY2hlY2tBZGQtPmFwcGVuZChhcmcxKTsKLSAgICBjaGVj
a0FkZC0+YXBwZW5kKGFyZzIpOwotICAgIGNoZWNrQWRkLT5zZXRHZW5lcmF0b3IoCi0gICAgICAg
IFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYg
cGFyYW1zKSB7Ci0gICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxs
b3dTY3JhdGNoKGppdCk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09IDIpOwot
ICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzBdLmlzR1BSKCkpOwotICAgICAgICAgICAgQ0hFQ0so
cGFyYW1zWzFdLmlzQ29uc3RhbnQoKSk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0udmFs
dWUoKSA9PSA0Mik7Ci0gICAgICAgICAgICBqaXQuY29udmVydEludDMyVG9Eb3VibGUocGFyYW1z
WzBdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5jb252ZXJ0SW50
MzJUb0RvdWJsZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMig0MiksIEZQUkluZm86OmZwUmVn
VDEpOwotICAgICAgICAgICAgaml0LmFkZERvdWJsZShGUFJJbmZvOjpmcFJlZ1QxLCBGUFJJbmZv
OjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwotICAg
ICAgICAgICAgaml0LnJldCgpOwotICAgICAgICB9KTsKLSAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSVRvRCwgT3JpZ2luKCksIGNoZWNrQWRkKSk7Ci0KLSAg
ICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLQotICAgIENIRUNLKGludm9rZTxkb3Vi
bGU+KCpjb2RlLCAwKSA9PSA0Mi4wKTsKLSAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwg
MSkgPT0gNDMuMCk7Ci0gICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDQyKSA9PSA4NC4w
KTsKLSAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgMjE0NzQ4MzY0NykgPT0gMjE0NzQ4
MzY4OS4wKTsKLX0KLQotdm9pZCB0ZXN0Q2hlY2tBZGRJbW1Tb21lUmVnaXN0ZXIoKQotewotICAg
IFByb2NlZHVyZSBwcm9jOwotICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAxKQotICAgICAgICBy
ZXR1cm47Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1
ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIFRydW5jLCBP
cmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogYXJnMiA9IHJv
b3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0Mik7Ci0gICAgQ2hl
Y2tWYWx1ZSogY2hlY2tBZGQgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hl
Y2tBZGQsIE9yaWdpbigpLCBhcmcxLCBhcmcyKTsKLSAgICBjaGVja0FkZC0+YXBwZW5kU29tZVJl
Z2lzdGVyKGFyZzEpOwotICAgIGNoZWNrQWRkLT5hcHBlbmRTb21lUmVnaXN0ZXIoYXJnMik7Ci0g
ICAgY2hlY2tBZGQtPnNldEdlbmVyYXRvcigKLSAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAg
IEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKLSAgICAg
ICAgICAgIENIRUNLKHBhcmFtcy5zaXplKCkgPT0gMik7Ci0gICAgICAgICAgICBDSEVDSyhwYXJh
bXNbMF0uaXNHUFIoKSk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0uaXNHUFIoKSk7Ci0g
ICAgICAgICAgICBqaXQuY29udmVydEludDMyVG9Eb3VibGUocGFyYW1zWzBdLmdwcigpLCBGUFJJ
bmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShwYXJh
bXNbMV0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDEpOwotICAgICAgICAgICAgaml0LmFkZERvdWJs
ZShGUFJJbmZvOjpmcFJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5l
bWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwotICAgICAgICAgICAgaml0LnJldCgpOwotICAgICAgICB9
KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSVRvRCwg
T3JpZ2luKCksIGNoZWNrQWRkKSk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9j
KTsKLQotICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAwKSA9PSA0Mi4wKTsKLSAgICBD
SEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgMSkgPT0gNDMuMCk7Ci0gICAgQ0hFQ0soaW52b2tl
PGRvdWJsZT4oKmNvZGUsIDQyKSA9PSA4NC4wKTsKLSAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigq
Y29kZSwgMjE0NzQ4MzY0NykgPT0gMjE0NzQ4MzY4OS4wKTsKLX0KLQotdm9pZCB0ZXN0Q2hlY2tB
ZGQoKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAx
KQotICAgICAgICByZXR1cm47Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKLSAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1
ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIFRydW5jLCBP
cmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKLSAgICBDaGVja1ZhbHVlKiBjaGVj
a0FkZCA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja0FkZCwgT3JpZ2lu
KCksIGFyZzEsIGFyZzIpOwotICAgIGNoZWNrQWRkLT5hcHBlbmRTb21lUmVnaXN0ZXIoYXJnMSk7
Ci0gICAgY2hlY2tBZGQtPmFwcGVuZFNvbWVSZWdpc3RlcihhcmcyKTsKLSAgICBjaGVja0FkZC0+
c2V0R2VuZXJhdG9yKAotICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewotICAgICAgICAgICAgQWxsb3dNYWNyb1Nj
cmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwotICAgICAgICAgICAgQ0hFQ0so
cGFyYW1zLnNpemUoKSA9PSAyKTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtc1swXS5pc0dQUigp
KTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtc1sxXS5pc0dQUigpKTsKLSAgICAgICAgICAgIGpp
dC5jb252ZXJ0SW50MzJUb0RvdWJsZShwYXJhbXNbMF0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDAp
OwotICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKHBhcmFtc1sxXS5ncHIoKSwg
RlBSSW5mbzo6ZnBSZWdUMSk7Ci0gICAgICAgICAgICBqaXQuYWRkRG91YmxlKEZQUkluZm86OmZw
UmVnVDEsIEZQUkluZm86OmZwUmVnVDApOwotICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVw
aWxvZ3VlKCk7Ci0gICAgICAgICAgICBqaXQucmV0KCk7Ci0gICAgICAgIH0pOwotICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwK
LSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJVG9ELCBPcmlnaW4oKSwgY2hl
Y2tBZGQpKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotCi0gICAgQ0hF
Q0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDAsIDQyKSA9PSA0Mi4wKTsKLSAgICBDSEVDSyhpbnZv
a2U8ZG91YmxlPigqY29kZSwgMSwgNDIpID09IDQzLjApOwotICAgIENIRUNLKGludm9rZTxkb3Vi
bGU+KCpjb2RlLCA0MiwgNDIpID09IDg0LjApOwotICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpj
b2RlLCAyMTQ3NDgzNjQ3LCA0MikgPT0gMjE0NzQ4MzY4OS4wKTsKLX0KLQotdm9pZCB0ZXN0Q2hl
Y2tBZGQ2NCgpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgaWYgKHByb2Mub3B0TGV2ZWwo
KSA8IDEpCi0gICAgICAgIHJldHVybjsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOwotICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIFZhbHVlKiBh
cmcyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgIENoZWNrVmFsdWUqIGNoZWNrQWRkID0gcm9vdC0+
YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrQWRkLCBPcmlnaW4oKSwgYXJnMSwgYXJn
Mik7Ci0gICAgY2hlY2tBZGQtPmFwcGVuZFNvbWVSZWdpc3RlcihhcmcxKTsKLSAgICBjaGVja0Fk
ZC0+YXBwZW5kU29tZVJlZ2lzdGVyKGFyZzIpOwotICAgIGNoZWNrQWRkLT5zZXRHZW5lcmF0b3Io
Ci0gICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlv
blBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVy
VXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgp
ID09IDIpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzBdLmlzR1BSKCkpOwotICAgICAgICAg
ICAgQ0hFQ0socGFyYW1zWzFdLmlzR1BSKCkpOwotICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQ2
NFRvRG91YmxlKHBhcmFtc1swXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAg
ICBqaXQuY29udmVydEludDY0VG9Eb3VibGUocGFyYW1zWzFdLmdwcigpLCBGUFJJbmZvOjpmcFJl
Z1QxKTsKLSAgICAgICAgICAgIGppdC5hZGREb3VibGUoRlBSSW5mbzo6ZnBSZWdUMSwgRlBSSW5m
bzo6ZnBSZWdUMCk7Ci0gICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKLSAg
ICAgICAgICAgIGppdC5yZXQoKTsKLSAgICAgICAgfSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIElUb0QsIE9yaWdpbigpLCBjaGVja0FkZCkpOwotCi0g
ICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0KLSAgICBDSEVDSyhpbnZva2U8ZG91
YmxlPigqY29kZSwgMGxsLCA0MmxsKSA9PSA0Mi4wKTsKLSAgICBDSEVDSyhpbnZva2U8ZG91Ymxl
PigqY29kZSwgMWxsLCA0MmxsKSA9PSA0My4wKTsKLSAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigq
Y29kZSwgNDJsbCwgNDJsbCkgPT0gODQuMCk7Ci0gICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNv
ZGUsIDkyMjMzNzIwMzY4NTQ3NzU4MDdsbCwgNDJsbCkgPT0gc3RhdGljX2Nhc3Q8ZG91YmxlPig5
MjIzMzcyMDM2ODU0Nzc1ODA3bGwpICsgNDIuMCk7Ci19Ci0KLXZvaWQgdGVzdENoZWNrQWRkRm9s
ZChpbnQgYSwgaW50IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5l
dzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKLSAgICBWYWx1ZSogYXJnMiA9IHJv
b3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKTsKLSAgICBDaGVj
a1ZhbHVlKiBjaGVja0FkZCA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVj
a0FkZCwgT3JpZ2luKCksIGFyZzEsIGFyZzIpOwotICAgIHVuc2lnbmVkIG9wdExldmVsID0gcHJv
Yy5vcHRMZXZlbCgpOwotICAgIGNoZWNrQWRkLT5zZXRHZW5lcmF0b3IoCi0gICAgICAgIFsmXSAo
Q0NhbGxIZWxwZXJzJiwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewotICAgICAg
ICAgICAgaWYgKG9wdExldmVsID4gMSkKLSAgICAgICAgICAgICAgICBDSEVDSyghIlNob3VsZCBo
YXZlIGJlZW4gZm9sZGVkIik7Ci0gICAgICAgIH0pOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBjaGVja0FkZCk7Ci0KLSAgICBhdXRvIGNv
ZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLQotICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlKSA9
PSBhICsgYik7Ci19Ci0KLXZvaWQgdGVzdENoZWNrQWRkRm9sZEZhaWwoaW50IGEsIGludCBiKQot
ewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAxKQotICAg
ICAgICByZXR1cm47Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAg
ICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBhKTsKLSAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBiKTsKLSAgICBDaGVja1ZhbHVlKiBjaGVja0FkZCA9IHJvb3QtPmFw
cGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja0FkZCwgT3JpZ2luKCksIGFyZzEsIGFyZzIp
OwotICAgIGNoZWNrQWRkLT5zZXRHZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJz
JiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKLSAgICAgICAgICAgIEFs
bG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKLSAgICAgICAg
ICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDQyKSwgR1BSSW5mbzo6cmV0
dXJuVmFsdWVHUFIpOwotICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7Ci0g
ICAgICAgICAgICBqaXQucmV0KCk7Ci0gICAgICAgIH0pOwotICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBjaGVja0FkZCk7Ci0KLSAgICBhdXRv
IGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLQotICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2Rl
KSA9PSA0Mik7Ci19Ci0KLXZvaWQgdGVzdENoZWNrQWRkQXJndW1lbnRBbGlhc2luZzY0KCkKLXsK
LSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOwotICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIFZhbHVlKiBhcmcy
ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjEpOwotICAgIFZhbHVlKiBhcmczID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwot
Ci0gICAgLy8gUHJldGVuZCB0byB1c2UgYWxsIHRoZSBhcmdzLgotICAgIFBhdGNocG9pbnRWYWx1
ZSogdXNlQXJncyA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQs
IE9yaWdpbigpKTsKLSAgICB1c2VBcmdzLT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmcxLCBW
YWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7Ci0gICAgdXNlQXJncy0+YXBwZW5kKENvbnN0cmFpbmVk
VmFsdWUoYXJnMiwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOwotICAgIHVzZUFyZ3MtPmFwcGVu
ZChDb25zdHJhaW5lZFZhbHVlKGFyZzMsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKLSAgICB1
c2VBcmdzLT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMmLCBjb25zdCBTdGFja21hcEdl
bmVyYXRpb25QYXJhbXMmKSB7IH0pOwotCi0gICAgLy8gTGFzdCB1c2Ugb2YgZmlyc3QgYXJnICho
ZXJlLCBhcmcxKS4KLSAgICBDaGVja1ZhbHVlKiBjaGVja0FkZDEgPSByb290LT5hcHBlbmROZXc8
Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2tBZGQsIE9yaWdpbigpLCBhcmcxLCBhcmcyKTsKLSAgICBj
aGVja0FkZDEtPnNldEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMmKSB7IGppdC5vb3BzKCk7IH0pOwotCi0gICAgLy8gTGFzdCB1
c2Ugb2Ygc2Vjb25kIGFyZyAoaGVyZSwgYXJnMikuCi0gICAgQ2hlY2tWYWx1ZSogY2hlY2tBZGQy
ID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrQWRkLCBPcmlnaW4oKSwg
YXJnMywgYXJnMik7Ci0gICAgY2hlY2tBZGQyLT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyBqaXQub29wcygpOyB9
KTsKLQotICAgIC8vIEtlZXAgYXJnMyBsaXZlLgotICAgIFBhdGNocG9pbnRWYWx1ZSoga2VlcEFy
ZzJMaXZlID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgVm9pZCwgT3Jp
Z2luKCkpOwotICAgIGtlZXBBcmcyTGl2ZS0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMiwg
VmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOwotICAgIGtlZXBBcmcyTGl2ZS0+c2V0R2VuZXJhdG9y
KFsmXSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9
KTsKLQotICAgIC8vIE9ubHkgdXNlIG9mIGNoZWNrQWRkMSBhbmQgY2hlY2tBZGQyLgotICAgIENo
ZWNrVmFsdWUqIGNoZWNrQWRkMyA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBD
aGVja0FkZCwgT3JpZ2luKCksIGNoZWNrQWRkMSwgY2hlY2tBZGQyKTsKLSAgICBjaGVja0FkZDMt
PnNldEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMmKSB7IGppdC5vb3BzKCk7IH0pOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGNoZWNrQWRkMyk7Ci0KLSAgICBDSEVD
Syhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIDEsIDIsIDMpID09IDgpOwotfQotCi12b2lk
IHRlc3RDaGVja0FkZEFyZ3VtZW50QWxpYXNpbmczMigpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7
Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJn
MSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4o
KSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEpKTsKLSAgICBWYWx1ZSogYXJnMyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCi0gICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjIpKTsKLQotICAgIC8vIFByZXRlbmQgdG8gdXNlIGFsbCB0aGUgYXJncy4KLSAgICBQYXRjaHBv
aW50VmFsdWUqIHVzZUFyZ3MgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9j
LCBWb2lkLCBPcmlnaW4oKSk7Ci0gICAgdXNlQXJncy0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUo
YXJnMSwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOwotICAgIHVzZUFyZ3MtPmFwcGVuZChDb25z
dHJhaW5lZFZhbHVlKGFyZzIsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKLSAgICB1c2VBcmdz
LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmczLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7
Ci0gICAgdXNlQXJncy0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKLQotICAgIC8vIExhc3QgdXNlIG9mIGZpcnN0
IGFyZyAoaGVyZSwgYXJnMSkuCi0gICAgQ2hlY2tWYWx1ZSogY2hlY2tBZGQxID0gcm9vdC0+YXBw
ZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrQWRkLCBPcmlnaW4oKSwgYXJnMSwgYXJnMik7
Ci0gICAgY2hlY2tBZGQxLT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29u
c3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyBqaXQub29wcygpOyB9KTsKLQotICAgIC8v
IExhc3QgdXNlIG9mIHNlY29uZCBhcmcgKGhlcmUsIGFyZzMpLgotICAgIENoZWNrVmFsdWUqIGNo
ZWNrQWRkMiA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja0FkZCwgT3Jp
Z2luKCksIGFyZzIsIGFyZzMpOwotICAgIGNoZWNrQWRkMi0+c2V0R2VuZXJhdG9yKFsmXSAoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsgaml0Lm9v
cHMoKTsgfSk7Ci0KLSAgICAvLyBLZWVwIGFyZzMgbGl2ZS4KLSAgICBQYXRjaHBvaW50VmFsdWUq
IGtlZXBBcmcyTGl2ZSA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZv
aWQsIE9yaWdpbigpKTsKLSAgICBrZWVwQXJnMkxpdmUtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVl
KGFyZzIsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKLSAgICBrZWVwQXJnMkxpdmUtPnNldEdl
bmVyYXRvcihbJl0gKENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFt
cyYpIHsgfSk7Ci0KLSAgICAvLyBPbmx5IHVzZSBvZiBjaGVja0FkZDEgYW5kIGNoZWNrQWRkMi4K
LSAgICBDaGVja1ZhbHVlKiBjaGVja0FkZDMgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4o
cHJvYywgQ2hlY2tBZGQsIE9yaWdpbigpLCBjaGVja0FkZDEsIGNoZWNrQWRkMik7Ci0gICAgY2hl
Y2tBZGQzLT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2tt
YXBHZW5lcmF0aW9uUGFyYW1zJikgeyBqaXQub29wcygpOyB9KTsKLQotICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBjaGVja0FkZDMpOwotCi0g
ICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCAxLCAyLCAzKSA9PSA4KTsKLX0K
LQotdm9pZCB0ZXN0Q2hlY2tBZGRTZWxmT3ZlcmZsb3c2NCgpCi17Ci0gICAgUHJvY2VkdXJlIHBy
b2M7Ci0gICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEpCi0gICAgICAgIHJldHVybjsKLSAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmcgPSByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7Ci0gICAgQ2hlY2tWYWx1ZSogY2hlY2tBZGQgPSByb290LT5hcHBlbmROZXc8
Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2tBZGQsIE9yaWdpbigpLCBhcmcsIGFyZyk7Ci0gICAgY2hl
Y2tBZGQtPmFwcGVuZChhcmcpOwotICAgIGNoZWNrQWRkLT5zZXRHZW5lcmF0b3IoCi0gICAgICAg
IFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYg
cGFyYW1zKSB7Ci0gICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxs
b3dTY3JhdGNoKGppdCk7Ci0gICAgICAgICAgICBqaXQubW92ZShwYXJhbXNbMF0uZ3ByKCksIEdQ
UkluZm86OnJldHVyblZhbHVlR1BSKTsKLSAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGls
b2d1ZSgpOwotICAgICAgICAgICAgaml0LnJldCgpOwotICAgICAgICB9KTsKLQotICAgIC8vIE1h
a2Ugc3VyZSB0aGUgYXJnIGlzIG5vdCB0aGUgZGVzdGluYXRpb24gb2YgdGhlIG9wZXJhdGlvbi4K
LSAgICBQYXRjaHBvaW50VmFsdWUqIG9wYXF1ZVVzZSA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBv
aW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKLSAgICBvcGFxdWVVc2UtPmFwcGVuZChD
b25zdHJhaW5lZFZhbHVlKGFyZywgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOwotICAgIG9wYXF1
ZVVzZS0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3RhY2ttYXBHZW5l
cmF0aW9uUGFyYW1zJikgeyB9KTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLCBjaGVja0FkZCk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21w
aWxlUHJvYyhwcm9jKTsKLQotICAgIENIRUNLKGludm9rZTxpbnQ2NF90PigqY29kZSwgMGxsKSA9
PSAwKTsKLSAgICBDSEVDSyhpbnZva2U8aW50NjRfdD4oKmNvZGUsIDFsbCkgPT0gMik7Ci0gICAg
Q0hFQ0soaW52b2tlPGludDY0X3Q+KCpjb2RlLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+
OjptYXgoKSkgPT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCkpOwotfQotCi12
b2lkIHRlc3RDaGVja0FkZFNlbGZPdmVyZmxvdzMyKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsK
LSAgICBpZiAocHJvYy5vcHRMZXZlbCgpIDwgMSkKLSAgICAgICAgcmV0dXJuOwotICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZyA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApKTsKLSAgICBDaGVja1ZhbHVlKiBjaGVja0FkZCA9IHJvb3QtPmFwcGVu
ZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja0FkZCwgT3JpZ2luKCksIGFyZywgYXJnKTsKLSAg
ICBjaGVja0FkZC0+YXBwZW5kKGFyZyk7Ci0gICAgY2hlY2tBZGQtPnNldEdlbmVyYXRvcigKLSAg
ICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2Fn
ZSBhbGxvd1NjcmF0Y2goaml0KTsKLSAgICAgICAgICAgIGppdC5tb3ZlKHBhcmFtc1swXS5ncHIo
KSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwotICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlv
bkVwaWxvZ3VlKCk7Ci0gICAgICAgICAgICBqaXQucmV0KCk7Ci0gICAgICAgIH0pOwotCi0gICAg
Ly8gTWFrZSBzdXJlIHRoZSBhcmcgaXMgbm90IHRoZSBkZXN0aW5hdGlvbiBvZiB0aGUgb3BlcmF0
aW9uLgotICAgIFBhdGNocG9pbnRWYWx1ZSogb3BhcXVlVXNlID0gcm9vdC0+YXBwZW5kTmV3PFBh
dGNocG9pbnRWYWx1ZT4ocHJvYywgVm9pZCwgT3JpZ2luKCkpOwotICAgIG9wYXF1ZVVzZS0+YXBw
ZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7Ci0gICAg
b3BhcXVlVXNlLT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMmLCBjb25zdCBTdGFja21h
cEdlbmVyYXRpb25QYXJhbXMmKSB7IH0pOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGNoZWNrQWRkKTsKLQotICAgIGF1dG8gY29kZSA9
IGNvbXBpbGVQcm9jKHByb2MpOwotCi0gICAgQ0hFQ0soaW52b2tlPGludDMyX3Q+KCpjb2RlLCAw
bGwpID09IDApOwotICAgIENIRUNLKGludm9rZTxpbnQzMl90PigqY29kZSwgMWxsKSA9PSAyKTsK
LSAgICBDSEVDSyhpbnZva2U8aW50MzJfdD4oKmNvZGUsIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
MzJfdD46Om1heCgpKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7Ci19
Ci0KLXZvaWQgdGVzdENoZWNrU3ViSW1tKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBp
ZiAocHJvYy5vcHRMZXZlbCgpIDwgMSkKLSAgICAgICAgcmV0dXJuOwotICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgNDIpOwotICAgIENoZWNrVmFsdWUqIGNoZWNrU3ViID0gcm9v
dC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrU3ViLCBPcmlnaW4oKSwgYXJnMSwg
YXJnMik7Ci0gICAgY2hlY2tTdWItPmFwcGVuZChhcmcxKTsKLSAgICBjaGVja1N1Yi0+YXBwZW5k
KGFyZzIpOwotICAgIGNoZWNrU3ViLT5zZXRHZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxI
ZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0g
ICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGpp
dCk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09IDIpOwotICAgICAgICAgICAg
Q0hFQ0socGFyYW1zWzBdLmlzR1BSKCkpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzFdLmlz
Q29uc3RhbnQoKSk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0udmFsdWUoKSA9PSA0Mik7
Ci0gICAgICAgICAgICBqaXQuY29udmVydEludDMyVG9Eb3VibGUocGFyYW1zWzBdLmdwcigpLCBG
UFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMig0MiksIEZQUkluZm86OmZwUmVnVDEpOwotICAgICAg
ICAgICAgaml0LnN1YkRvdWJsZShGUFJJbmZvOjpmcFJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsK
LSAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwotICAgICAgICAgICAgaml0
LnJldCgpOwotICAgICAgICB9KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0g
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgSVRvRCwgT3JpZ2luKCksIGNoZWNrU3ViKSk7Ci0KLSAgICBhdXRvIGNvZGUg
PSBjb21waWxlUHJvYyhwcm9jKTsKLQotICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAw
KSA9PSAtNDIuMCk7Ci0gICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDEpID09IC00MS4w
KTsKLSAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgNDIpID09IDAuMCk7Ci0gICAgQ0hF
Q0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIC0yMTQ3NDgzNjQ3KSA9PSAtMjE0NzQ4MzY4OS4wKTsK
LX0KLQotdm9pZCB0ZXN0Q2hlY2tTdWJCYWRJbW0oKQotewotICAgIFByb2NlZHVyZSBwcm9jOwot
ICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAxKQotICAgICAgICByZXR1cm47Ci0gICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApKTsKLSAgICBpbnQzMl90IGJhZEltbSA9IHN0ZDo6bnVtZXJpY19saW1p
dHM8aW50Pjo6bWluKCk7Ci0gICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8Q29uc3Qz
MlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYmFkSW1tKTsKLSAgICBDaGVja1ZhbHVlKiBjaGVja1N1
YiA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja1N1YiwgT3JpZ2luKCks
IGFyZzEsIGFyZzIpOwotICAgIGNoZWNrU3ViLT5hcHBlbmQoYXJnMSk7Ci0gICAgY2hlY2tTdWIt
PmFwcGVuZChhcmcyKTsKLSAgICBjaGVja1N1Yi0+c2V0R2VuZXJhdG9yKAotICAgICAgICBbJl0g
KENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFt
cykgewotICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2Ny
YXRjaChqaXQpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9PSAyKTsKLSAgICAg
ICAgICAgIENIRUNLKHBhcmFtc1swXS5pc0dQUigpKTsKLSAgICAgICAgICAgIGppdC5jb252ZXJ0
SW50MzJUb0RvdWJsZShwYXJhbXNbMF0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDApOwotCi0gICAg
ICAgICAgICBpZiAocGFyYW1zWzFdLmlzQ29uc3RhbnQoKSkgewotICAgICAgICAgICAgICAgIENI
RUNLKHBhcmFtc1sxXS52YWx1ZSgpID09IGJhZEltbSk7Ci0gICAgICAgICAgICAgICAgaml0LmNv
bnZlcnRJbnQzMlRvRG91YmxlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGJhZEltbSksIEZQ
UkluZm86OmZwUmVnVDEpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBD
SEVDSyhwYXJhbXNbMV0uaXNHUFIoKSk7Ci0gICAgICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQz
MlRvRG91YmxlKHBhcmFtc1sxXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMSk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBqaXQuc3ViRG91YmxlKEZQUkluZm86OmZwUmVnVDEsIEZQUkluZm86
OmZwUmVnVDApOwotICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7Ci0gICAg
ICAgICAgICBqaXQucmV0KCk7Ci0gICAgICAgIH0pOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJVG9ELCBPcmlnaW4oKSwgY2hlY2tTdWIpKTsKLQotICAg
IGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotCi0gICAgQ0hFQ0soaW52b2tlPGRvdWJs
ZT4oKmNvZGUsIDApID09IC1zdGF0aWNfY2FzdDxkb3VibGU+KGJhZEltbSkpOwotICAgIENIRUNL
KGludm9rZTxkb3VibGU+KCpjb2RlLCAtMSkgPT0gLXN0YXRpY19jYXN0PGRvdWJsZT4oYmFkSW1t
KSAtIDEpOwotICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAxKSA9PSAtc3RhdGljX2Nh
c3Q8ZG91YmxlPihiYWRJbW0pICsgMSk7Ci0gICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUs
IDQyKSA9PSAtc3RhdGljX2Nhc3Q8ZG91YmxlPihiYWRJbW0pICsgNDIpOwotfQotCi12b2lkIHRl
c3RDaGVja1N1YigpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgaWYgKHByb2Mub3B0TGV2
ZWwoKSA8IDEpCi0gICAgICAgIHJldHVybjsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAg
ICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwot
ICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywg
VHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOwotICAgIENoZWNrVmFs
dWUqIGNoZWNrU3ViID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrU3Vi
LCBPcmlnaW4oKSwgYXJnMSwgYXJnMik7Ci0gICAgY2hlY2tTdWItPmFwcGVuZChhcmcxKTsKLSAg
ICBjaGVja1N1Yi0+YXBwZW5kKGFyZzIpOwotICAgIGNoZWNrU3ViLT5zZXRHZW5lcmF0b3IoCi0g
ICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNh
Z2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09
IDIpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzBdLmlzR1BSKCkpOwotICAgICAgICAgICAg
Q0hFQ0socGFyYW1zWzFdLmlzR1BSKCkpOwotICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRv
RG91YmxlKHBhcmFtc1swXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAgICBq
aXQuY29udmVydEludDMyVG9Eb3VibGUocGFyYW1zWzFdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1Qx
KTsKLSAgICAgICAgICAgIGppdC5zdWJEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMSwgRlBSSW5mbzo6
ZnBSZWdUMCk7Ci0gICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKLSAgICAg
ICAgICAgIGppdC5yZXQoKTsKLSAgICAgICAgfSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIElUb0QsIE9yaWdpbigpLCBjaGVja1N1YikpOwotCi0gICAg
YXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0KLSAgICBDSEVDSyhpbnZva2U8ZG91Ymxl
PigqY29kZSwgMCwgNDIpID09IC00Mi4wKTsKLSAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29k
ZSwgMSwgNDIpID09IC00MS4wKTsKLSAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgNDIs
IDQyKSA9PSAwLjApOwotICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAtMjE0NzQ4MzY0
NywgNDIpID09IC0yMTQ3NDgzNjg5LjApOwotfQotCi1ORVZFUl9JTkxJTkUgZG91YmxlIGRvdWJs
ZVN1Yihkb3VibGUgYSwgZG91YmxlIGIpCi17Ci0gICAgcmV0dXJuIGEgLSBiOwotfQotCi12b2lk
IHRlc3RDaGVja1N1YjY0KCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBpZiAocHJvYy5v
cHRMZXZlbCgpIDwgMSkKLSAgICAgICAgcmV0dXJuOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAg
VmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgQ2hlY2tWYWx1ZSogY2hlY2tTdWIg
PSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2tTdWIsIE9yaWdpbigpLCBh
cmcxLCBhcmcyKTsKLSAgICBjaGVja1N1Yi0+YXBwZW5kKGFyZzEpOwotICAgIGNoZWNrU3ViLT5h
cHBlbmQoYXJnMik7Ci0gICAgY2hlY2tTdWItPnNldEdlbmVyYXRvcigKLSAgICAgICAgWyZdIChD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMp
IHsKLSAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0
Y2goaml0KTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtcy5zaXplKCkgPT0gMik7Ci0gICAgICAg
ICAgICBDSEVDSyhwYXJhbXNbMF0uaXNHUFIoKSk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXNb
MV0uaXNHUFIoKSk7Ci0gICAgICAgICAgICBqaXQuY29udmVydEludDY0VG9Eb3VibGUocGFyYW1z
WzBdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5jb252ZXJ0SW50
NjRUb0RvdWJsZShwYXJhbXNbMV0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDEpOwotICAgICAgICAg
ICAgaml0LnN1YkRvdWJsZShGUFJJbmZvOjpmcFJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAg
ICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwotICAgICAgICAgICAgaml0LnJl
dCgpOwotICAgICAgICB9KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgSVRvRCwgT3JpZ2luKCksIGNoZWNrU3ViKSk7Ci0KLSAgICBhdXRvIGNvZGUgPSBj
b21waWxlUHJvYyhwcm9jKTsKLQotICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAwbGws
IDQybGwpID09IC00Mi4wKTsKLSAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgMWxsLCA0
MmxsKSA9PSAtNDEuMCk7Ci0gICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDQybGwsIDQy
bGwpID09IDAuMCk7Ci0gICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIC05MjIzMzcyMDM2
ODU0Nzc1ODA3bGwsIDQybGwpID09IGRvdWJsZVN1YihzdGF0aWNfY2FzdDxkb3VibGU+KC05MjIz
MzcyMDM2ODU0Nzc1ODA3bGwpLCA0Mi4wKSk7Ci19Ci0KLXZvaWQgdGVzdENoZWNrU3ViRm9sZChp
bnQgYSwgaW50IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKLSAgICBWYWx1ZSogYXJnMiA9IHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKTsKLSAgICBDaGVja1Zh
bHVlKiBjaGVja1N1YiA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja1N1
YiwgT3JpZ2luKCksIGFyZzEsIGFyZzIpOwotICAgIHVuc2lnbmVkIG9wdExldmVsID0gcHJvYy5v
cHRMZXZlbCgpOwotICAgIGNoZWNrU3ViLT5zZXRHZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0Nh
bGxIZWxwZXJzJiwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewotICAgICAgICAg
ICAgaWYgKG9wdExldmVsID4gMSkKLSAgICAgICAgICAgICAgICBDSEVDSyghIlNob3VsZCBoYXZl
IGJlZW4gZm9sZGVkIik7Ci0gICAgICAgIH0pOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBjaGVja1N1Yik7Ci0KLSAgICBhdXRvIGNvZGUg
PSBjb21waWxlUHJvYyhwcm9jKTsKLQotICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlKSA9PSBh
IC0gYik7Ci19Ci0KLXZvaWQgdGVzdENoZWNrU3ViRm9sZEZhaWwoaW50IGEsIGludCBiKQotewot
ICAgIFByb2NlZHVyZSBwcm9jOwotICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAxKQotICAgICAg
ICByZXR1cm47Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBW
YWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBhKTsKLSAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBiKTsKLSAgICBDaGVja1ZhbHVlKiBjaGVja1N1YiA9IHJvb3QtPmFwcGVu
ZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja1N1YiwgT3JpZ2luKCksIGFyZzEsIGFyZzIpOwot
ICAgIGNoZWNrU3ViLT5zZXRHZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKLSAgICAgICAgICAgIEFsbG93
TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKLSAgICAgICAgICAg
IGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDQyKSwgR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIpOwotICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7Ci0gICAg
ICAgICAgICBqaXQucmV0KCk7Ci0gICAgICAgIH0pOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBjaGVja1N1Yik7Ci0KLSAgICBhdXRvIGNv
ZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLQotICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlKSA9
PSA0Mik7Ci19Ci0KLXZvaWQgdGVzdENoZWNrTmVnKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsK
LSAgICBpZiAocHJvYy5vcHRMZXZlbCgpIDwgMSkKLSAgICAgICAgcmV0dXJuOwotICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZzEgPSByb290LT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCk7Ci0gICAgVmFsdWUqIGFy
ZzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2lu
KCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgQ2hlY2tWYWx1ZSogY2hlY2tOZWcg
PSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2tTdWIsIE9yaWdpbigpLCBh
cmcxLCBhcmcyKTsKLSAgICBjaGVja05lZy0+YXBwZW5kKGFyZzIpOwotICAgIGNoZWNrTmVnLT5z
ZXRHZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICBBbGxvd01hY3JvU2Ny
YXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAgICAgICAgICBDSEVDSyhw
YXJhbXMuc2l6ZSgpID09IDEpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzBdLmlzR1BSKCkp
OwotICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKHBhcmFtc1swXS5ncHIoKSwg
RlBSSW5mbzo6ZnBSZWdUMSk7Ci0gICAgICAgICAgICBqaXQubmVnYXRlRG91YmxlKEZQUkluZm86
OmZwUmVnVDEsIEZQUkluZm86OmZwUmVnVDApOwotICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlv
bkVwaWxvZ3VlKCk7Ci0gICAgICAgICAgICBqaXQucmV0KCk7Ci0gICAgICAgIH0pOwotICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJVG9ELCBPcmlnaW4oKSwg
Y2hlY2tOZWcpKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotCi0gICAg
Q0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDApID09IDAuMCk7Ci0gICAgQ0hFQ0soaW52b2tl
PGRvdWJsZT4oKmNvZGUsIDEpID09IC0xLjApOwotICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpj
b2RlLCA0MikgPT0gLTQyLjApOwotICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAtMjE0
NzQ4MzY0NyAtIDEpID09IDIxNDc0ODM2NDguMCk7Ci19Ci0KLXZvaWQgdGVzdENoZWNrTmVnNjQo
KQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAxKQot
ICAgICAgICByZXR1cm47Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
LSAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9y
aWdpbigpLCAwKTsKLSAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBDaGVj
a1ZhbHVlKiBjaGVja05lZyA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVj
a1N1YiwgT3JpZ2luKCksIGFyZzEsIGFyZzIpOwotICAgIGNoZWNrTmVnLT5hcHBlbmQoYXJnMik7
Ci0gICAgY2hlY2tOZWctPnNldEdlbmVyYXRvcigKLSAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMm
IGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKLSAgICAgICAg
ICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKLSAg
ICAgICAgICAgIENIRUNLKHBhcmFtcy5zaXplKCkgPT0gMSk7Ci0gICAgICAgICAgICBDSEVDSyhw
YXJhbXNbMF0uaXNHUFIoKSk7Ci0gICAgICAgICAgICBqaXQuY29udmVydEludDY0VG9Eb3VibGUo
cGFyYW1zWzBdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QxKTsKLSAgICAgICAgICAgIGppdC5uZWdh
dGVEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAg
ICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKLSAgICAgICAgICAgIGppdC5yZXQoKTsKLSAg
ICAgICAgfSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IElUb0QsIE9yaWdpbigpLCBjaGVja05lZykpOwotCi0gICAgYXV0byBjb2RlID0gY29tcGlsZVBy
b2MocHJvYyk7Ci0KLSAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgMGxsKSA9PSAwLjAp
OwotICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAxbGwpID09IC0xLjApOwotICAgIENI
RUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCA0MmxsKSA9PSAtNDIuMCk7Ci0gICAgQ0hFQ0soaW52
b2tlPGRvdWJsZT4oKmNvZGUsIC05MjIzMzcyMDM2ODU0Nzc1ODA3bGwgLSAxKSA9PSA5MjIzMzcy
MDM2ODU0Nzc1ODA4LjApOwotfQotCi12b2lkIHRlc3RDaGVja011bCgpCi17Ci0gICAgUHJvY2Vk
dXJlIHByb2M7Ci0gICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEpCi0gICAgICAgIHJldHVybjsK
LSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmcx
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigp
LAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMSkpOwotICAgIENoZWNrVmFsdWUqIGNoZWNrTXVsID0gcm9vdC0+YXBwZW5k
TmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrTXVsLCBPcmlnaW4oKSwgYXJnMSwgYXJnMik7Ci0g
ICAgY2hlY2tNdWwtPmFwcGVuZChhcmcxKTsKLSAgICBjaGVja011bC0+YXBwZW5kKGFyZzIpOwot
ICAgIGNoZWNrTXVsLT5zZXRHZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAg
ICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAg
ICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09IDIpOwotICAgICAgICAgICAgQ0hFQ0socGFy
YW1zWzBdLmlzR1BSKCkpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzFdLmlzR1BSKCkpOwot
ICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKHBhcmFtc1swXS5ncHIoKSwgRlBS
SW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAgICBqaXQuY29udmVydEludDMyVG9Eb3VibGUocGFy
YW1zWzFdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QxKTsKLSAgICAgICAgICAgIGppdC5tdWxEb3Vi
bGUoRlBSSW5mbzo6ZnBSZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAgICBqaXQu
ZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKLSAgICAgICAgICAgIGppdC5yZXQoKTsKLSAgICAgICAg
fSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIElUb0Qs
IE9yaWdpbigpLCBjaGVja011bCkpOwotCi0gICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJv
Yyk7Ci0KLSAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgMCwgNDIpID09IDAuMCk7Ci0g
ICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDEsIDQyKSA9PSA0Mi4wKTsKLSAgICBDSEVD
SyhpbnZva2U8ZG91YmxlPigqY29kZSwgNDIsIDQyKSA9PSA0Mi4wICogNDIuMCk7Ci0gICAgQ0hF
Q0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDIxNDc0ODM2NDcsIDQyKSA9PSAyMTQ3NDgzNjQ3LjAg
KiA0Mi4wKTsKLX0KLQotdm9pZCB0ZXN0Q2hlY2tNdWxNZW1vcnkoKQotewotICAgIFByb2NlZHVy
ZSBwcm9jOwotICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAxKQotICAgICAgICByZXR1cm47Ci0g
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIGludCBsZWZ0Owot
ICAgIGludCByaWdodDsKLSAgICAKLSAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxN
ZW1vcnlWYWx1ZT4oCi0gICAgICAgIHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwKLSAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmbGVmdCkp
OwotICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAg
ICAgcHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZyaWdodCkpOwotICAgIENoZWNrVmFsdWUq
IGNoZWNrTXVsID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrTXVsLCBP
cmlnaW4oKSwgYXJnMSwgYXJnMik7Ci0gICAgY2hlY2tNdWwtPmFwcGVuZChhcmcxKTsKLSAgICBj
aGVja011bC0+YXBwZW5kKGFyZzIpOwotICAgIGNoZWNrTXVsLT5zZXRHZW5lcmF0b3IoCi0gICAg
ICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFt
cyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2Ug
YWxsb3dTY3JhdGNoKGppdCk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09IDIp
OwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzBdLmlzR1BSKCkpOwotICAgICAgICAgICAgQ0hF
Q0socGFyYW1zWzFdLmlzR1BSKCkpOwotICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91
YmxlKHBhcmFtc1swXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAgICBqaXQu
Y29udmVydEludDMyVG9Eb3VibGUocGFyYW1zWzFdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QxKTsK
LSAgICAgICAgICAgIGppdC5tdWxEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMSwgRlBSSW5mbzo6ZnBS
ZWdUMCk7Ci0gICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKLSAgICAgICAg
ICAgIGppdC5yZXQoKTsKLSAgICAgICAgfSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIElUb0QsIE9yaWdpbigpLCBjaGVja011bCkpOwotCi0gICAgYXV0
byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0KLSAgICBsZWZ0ID0gMDsKLSAgICByaWdodCA9
IDQyOwotICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlKSA9PSAwLjApOwotICAgIAotICAg
IGxlZnQgPSAxOwotICAgIHJpZ2h0ID0gNDI7Ci0gICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNv
ZGUpID09IDQyLjApOwotCi0gICAgbGVmdCA9IDQyOwotICAgIHJpZ2h0ID0gNDI7Ci0gICAgQ0hF
Q0soaW52b2tlPGRvdWJsZT4oKmNvZGUpID09IDQyLjAgKiA0Mi4wKTsKLQotICAgIGxlZnQgPSAy
MTQ3NDgzNjQ3OwotICAgIHJpZ2h0ID0gNDI7Ci0gICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNv
ZGUpID09IDIxNDc0ODM2NDcuMCAqIDQyLjApOwotfQotCi12b2lkIHRlc3RDaGVja011bDIoKQot
ewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAxKQotICAg
ICAgICByZXR1cm47Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAg
ICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIFRy
dW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogYXJn
MiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAyKTsKLSAg
ICBDaGVja1ZhbHVlKiBjaGVja011bCA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9j
LCBDaGVja011bCwgT3JpZ2luKCksIGFyZzEsIGFyZzIpOwotICAgIGNoZWNrTXVsLT5hcHBlbmQo
YXJnMSk7Ci0gICAgY2hlY2tNdWwtPmFwcGVuZChhcmcyKTsKLSAgICBjaGVja011bC0+c2V0R2Vu
ZXJhdG9yKAotICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdl
bmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewotICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hS
ZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1z
LnNpemUoKSA9PSAyKTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtc1swXS5pc0dQUigpKTsKLSAg
ICAgICAgICAgIENIRUNLKHBhcmFtc1sxXS5pc0NvbnN0YW50KCkpOwotICAgICAgICAgICAgQ0hF
Q0socGFyYW1zWzFdLnZhbHVlKCkgPT0gMik7Ci0gICAgICAgICAgICBqaXQuY29udmVydEludDMy
VG9Eb3VibGUocGFyYW1zWzBdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgICAg
IGppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigyKSwg
RlBSSW5mbzo6ZnBSZWdUMSk7Ci0gICAgICAgICAgICBqaXQubXVsRG91YmxlKEZQUkluZm86OmZw
UmVnVDEsIEZQUkluZm86OmZwUmVnVDApOwotICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVw
aWxvZ3VlKCk7Ci0gICAgICAgICAgICBqaXQucmV0KCk7Ci0gICAgICAgIH0pOwotICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwK
LSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJVG9ELCBPcmlnaW4oKSwgY2hl
Y2tNdWwpKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotCi0gICAgQ0hF
Q0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDApID09IDAuMCk7Ci0gICAgQ0hFQ0soaW52b2tlPGRv
dWJsZT4oKmNvZGUsIDEpID09IDIuMCk7Ci0gICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUs
IDQyKSA9PSA0Mi4wICogMi4wKTsKLSAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgMjE0
NzQ4MzY0NykgPT0gMjE0NzQ4MzY0Ny4wICogMi4wKTsKLX0KLQotdm9pZCB0ZXN0Q2hlY2tNdWw2
NCgpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEp
Ci0gICAgICAgIHJldHVybjsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OwotICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIFZhbHVlKiBhcmcyID0g
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEpOwotICAgIENoZWNrVmFsdWUqIGNoZWNrTXVsID0gcm9vdC0+YXBwZW5k
TmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrTXVsLCBPcmlnaW4oKSwgYXJnMSwgYXJnMik7Ci0g
ICAgY2hlY2tNdWwtPmFwcGVuZChhcmcxKTsKLSAgICBjaGVja011bC0+YXBwZW5kKGFyZzIpOwot
ICAgIGNoZWNrTXVsLT5zZXRHZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAg
ICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAg
ICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09IDIpOwotICAgICAgICAgICAgQ0hFQ0socGFy
YW1zWzBdLmlzR1BSKCkpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzFdLmlzR1BSKCkpOwot
ICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQ2NFRvRG91YmxlKHBhcmFtc1swXS5ncHIoKSwgRlBS
SW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAgICBqaXQuY29udmVydEludDY0VG9Eb3VibGUocGFy
YW1zWzFdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QxKTsKLSAgICAgICAgICAgIGppdC5tdWxEb3Vi
bGUoRlBSSW5mbzo6ZnBSZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAgICBqaXQu
ZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKLSAgICAgICAgICAgIGppdC5yZXQoKTsKLSAgICAgICAg
fSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIElUb0Qs
IE9yaWdpbigpLCBjaGVja011bCkpOwotCi0gICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJv
Yyk7Ci0KLSAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgMCwgNDIpID09IDAuMCk7Ci0g
ICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDEsIDQyKSA9PSA0Mi4wKTsKLSAgICBDSEVD
SyhpbnZva2U8ZG91YmxlPigqY29kZSwgNDIsIDQyKSA9PSA0Mi4wICogNDIuMCk7Ci0gICAgQ0hF
Q0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDkyMjMzNzIwMzY4NTQ3NzU4MDdsbCwgNDIpID09IHN0
YXRpY19jYXN0PGRvdWJsZT4oOTIyMzM3MjAzNjg1NDc3NTgwN2xsKSAqIDQyLjApOwotfQotCi12
b2lkIHRlc3RDaGVja011bEZvbGQoaW50IGEsIGludCBiKQotewotICAgIFByb2NlZHVyZSBwcm9j
OwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFy
ZzEgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7Ci0g
ICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmln
aW4oKSwgYik7Ci0gICAgQ2hlY2tWYWx1ZSogY2hlY2tNdWwgPSByb290LT5hcHBlbmROZXc8Q2hl
Y2tWYWx1ZT4ocHJvYywgQ2hlY2tNdWwsIE9yaWdpbigpLCBhcmcxLCBhcmcyKTsKLSAgICB1bnNp
Z25lZCBvcHRMZXZlbCA9IHByb2Mub3B0TGV2ZWwoKTsKLSAgICBjaGVja011bC0+c2V0R2VuZXJh
dG9yKAotICAgICAgICBbJl0gKENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlv
blBhcmFtcyYpIHsKLSAgICAgICAgICAgIGlmIChvcHRMZXZlbCA+IDEpCi0gICAgICAgICAgICAg
ICAgQ0hFQ0soISJTaG91bGQgaGF2ZSBiZWVuIGZvbGRlZCIpOwotICAgICAgICB9KTsKLSAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2hlY2tN
dWwpOwotCi0gICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0KLSAgICBDSEVDSyhp
bnZva2U8aW50PigqY29kZSkgPT0gYSAqIGIpOwotfQotCi12b2lkIHRlc3RDaGVja011bEZvbGRG
YWlsKGludCBhLCBpbnQgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBpZiAocHJvYy5v
cHRMZXZlbCgpIDwgMSkKLSAgICAgICAgcmV0dXJuOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8Q29uc3Qz
MlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7Ci0gICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7Ci0gICAgQ2hlY2tWYWx1ZSog
Y2hlY2tNdWwgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2tNdWwsIE9y
aWdpbigpLCBhcmcxLCBhcmcyKTsKLSAgICBjaGVja011bC0+c2V0R2VuZXJhdG9yKAotICAgICAg
ICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMm
KSB7Ci0gICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3Jh
dGNoKGppdCk7Ci0gICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
Mig0MiksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKLSAgICAgICAgICAgIGppdC5lbWl0RnVu
Y3Rpb25FcGlsb2d1ZSgpOwotICAgICAgICAgICAgaml0LnJldCgpOwotICAgICAgICB9KTsKLSAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2hl
Y2tNdWwpOwotCi0gICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0KLSAgICBDSEVD
SyhpbnZva2U8aW50PigqY29kZSkgPT0gNDIpOwotfQotCi12b2lkIHRlc3RDaGVja011bEFyZ3Vt
ZW50QWxpYXNpbmc2NCgpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKLSAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICBWYWx1ZSogYXJnMyA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIyKTsKLQotICAgIC8vIFByZXRlbmQgdG8gdXNlIGFsbCB0aGUgYXJncy4K
LSAgICBQYXRjaHBvaW50VmFsdWUqIHVzZUFyZ3MgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2lu
dFZhbHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7Ci0gICAgdXNlQXJncy0+YXBwZW5kKENvbnN0
cmFpbmVkVmFsdWUoYXJnMSwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOwotICAgIHVzZUFyZ3Mt
PmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzIsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsK
LSAgICB1c2VBcmdzLT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmczLCBWYWx1ZVJlcDo6U29t
ZVJlZ2lzdGVyKSk7Ci0gICAgdXNlQXJncy0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxwZXJz
JiwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKLQotICAgIC8vIExhc3Qg
dXNlIG9mIGZpcnN0IGFyZyAoaGVyZSwgYXJnMSkuCi0gICAgQ2hlY2tWYWx1ZSogY2hlY2tNdWwx
ID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrTXVsLCBPcmlnaW4oKSwg
YXJnMSwgYXJnMik7Ci0gICAgY2hlY2tNdWwxLT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyBqaXQub29wcygpOyB9
KTsKLQotICAgIC8vIExhc3QgdXNlIG9mIHNlY29uZCBhcmcgKGhlcmUsIGFyZzIpLgotICAgIENo
ZWNrVmFsdWUqIGNoZWNrTXVsMiA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBD
aGVja011bCwgT3JpZ2luKCksIGFyZzMsIGFyZzIpOwotICAgIGNoZWNrTXVsMi0+c2V0R2VuZXJh
dG9yKFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFt
cyYpIHsgaml0Lm9vcHMoKTsgfSk7Ci0KLSAgICAvLyBLZWVwIGFyZzMgbGl2ZS4KLSAgICBQYXRj
aHBvaW50VmFsdWUqIGtlZXBBcmcyTGl2ZSA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFs
dWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKLSAgICBrZWVwQXJnMkxpdmUtPmFwcGVuZChDb25z
dHJhaW5lZFZhbHVlKGFyZzIsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKLSAgICBrZWVwQXJn
MkxpdmUtPnNldEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2Vu
ZXJhdGlvblBhcmFtcyYpIHsgfSk7Ci0KLSAgICAvLyBPbmx5IHVzZSBvZiBjaGVja011bDEgYW5k
IGNoZWNrTXVsMi4KLSAgICBDaGVja1ZhbHVlKiBjaGVja011bDMgPSByb290LT5hcHBlbmROZXc8
Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2tNdWwsIE9yaWdpbigpLCBjaGVja011bDEsIGNoZWNrTXVs
Mik7Ci0gICAgY2hlY2tNdWwzLT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwg
Y29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyBqaXQub29wcygpOyB9KTsKLQotICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBjaGVj
a011bDMpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCAyLCAzLCA0
KSA9PSA3Mik7Ci19Ci0KLXZvaWQgdGVzdENoZWNrTXVsQXJndW1lbnRBbGlhc2luZzMyKCkKLXsK
LSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOwotICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAg
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZh
bHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgVHJ1bmMs
IE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOwotICAgIFZhbHVlKiBhcmczID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAot
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMikpOwotCi0gICAgLy8gUHJldGVuZCB0byB1c2UgYWxsIHRo
ZSBhcmdzLgotICAgIFBhdGNocG9pbnRWYWx1ZSogdXNlQXJncyA9IHJvb3QtPmFwcGVuZE5ldzxQ
YXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKLSAgICB1c2VBcmdzLT5hcHBl
bmQoQ29uc3RyYWluZWRWYWx1ZShhcmcxLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7Ci0gICAg
dXNlQXJncy0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMiwgVmFsdWVSZXA6OlNvbWVSZWdp
c3RlcikpOwotICAgIHVzZUFyZ3MtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzMsIFZhbHVl
UmVwOjpTb21lUmVnaXN0ZXIpKTsKLSAgICB1c2VBcmdzLT5zZXRHZW5lcmF0b3IoWyZdIChDQ2Fs
bEhlbHBlcnMmLCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7IH0pOwotCi0gICAg
Ly8gTGFzdCB1c2Ugb2YgZmlyc3QgYXJnIChoZXJlLCBhcmcxKS4KLSAgICBDaGVja1ZhbHVlKiBj
aGVja011bDEgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2tNdWwsIE9y
aWdpbigpLCBhcmcxLCBhcmcyKTsKLSAgICBjaGVja011bDEtPnNldEdlbmVyYXRvcihbJl0gKEND
YWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7IGppdC5v
b3BzKCk7IH0pOwotCi0gICAgLy8gTGFzdCB1c2Ugb2Ygc2Vjb25kIGFyZyAoaGVyZSwgYXJnMyku
Ci0gICAgQ2hlY2tWYWx1ZSogY2hlY2tNdWwyID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+
KHByb2MsIENoZWNrTXVsLCBPcmlnaW4oKSwgYXJnMiwgYXJnMyk7Ci0gICAgY2hlY2tNdWwyLT5z
ZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0
aW9uUGFyYW1zJikgeyBqaXQub29wcygpOyB9KTsKLQotICAgIC8vIEtlZXAgYXJnMyBsaXZlLgot
ICAgIFBhdGNocG9pbnRWYWx1ZSoga2VlcEFyZzJMaXZlID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNo
cG9pbnRWYWx1ZT4ocHJvYywgVm9pZCwgT3JpZ2luKCkpOwotICAgIGtlZXBBcmcyTGl2ZS0+YXBw
ZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMiwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOwotICAg
IGtlZXBBcmcyTGl2ZS0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKLQotICAgIC8vIE9ubHkgdXNlIG9mIGNoZWNr
TXVsMSBhbmQgY2hlY2tNdWwyLgotICAgIENoZWNrVmFsdWUqIGNoZWNrTXVsMyA9IHJvb3QtPmFw
cGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja011bCwgT3JpZ2luKCksIGNoZWNrTXVsMSwg
Y2hlY2tNdWwyKTsKLSAgICBjaGVja011bDMtPnNldEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVy
cyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7IGppdC5vb3BzKCk7IH0p
OwotCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2lu
KCksIGNoZWNrTXVsMyk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2Ms
IDIsIDMsIDQpID09IDcyKTsKLX0KLQotdm9pZCB0ZXN0Q2hlY2tNdWw2NFNTaHIoKQotewotICAg
IFByb2NlZHVyZSBwcm9jOwotICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAxKQotICAgICAgICBy
ZXR1cm47Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1
ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIFNTaHIsIE9y
aWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7Ci0gICAgVmFsdWUqIGFyZzIgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBTU2hyLCBPcmlnaW4oKSwKLSAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpLAotICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpOwotICAgIENoZWNrVmFsdWUqIGNoZWNrTXVsID0gcm9v
dC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrTXVsLCBPcmlnaW4oKSwgYXJnMSwg
YXJnMik7Ci0gICAgY2hlY2tNdWwtPmFwcGVuZChhcmcxKTsKLSAgICBjaGVja011bC0+YXBwZW5k
KGFyZzIpOwotICAgIGNoZWNrTXVsLT5zZXRHZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxI
ZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0g
ICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGpp
dCk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09IDIpOwotICAgICAgICAgICAg
Q0hFQ0socGFyYW1zWzBdLmlzR1BSKCkpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzFdLmlz
R1BSKCkpOwotICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQ2NFRvRG91YmxlKHBhcmFtc1swXS5n
cHIoKSwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAgICBqaXQuY29udmVydEludDY0VG9E
b3VibGUocGFyYW1zWzFdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QxKTsKLSAgICAgICAgICAgIGpp
dC5tdWxEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAg
ICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKLSAgICAgICAgICAgIGppdC5yZXQoKTsK
LSAgICAgICAgfSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIElUb0QsIE9yaWdpbigpLCBjaGVja011bCkpOwotCi0gICAgYXV0byBjb2RlID0gY29tcGls
ZVByb2MocHJvYyk7Ci0KLSAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgMGxsLCA0Mmxs
KSA9PSAwLjApOwotICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAxbGwsIDQybGwpID09
IDAuMCk7Ci0gICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDQybGwsIDQybGwpID09ICg0
Mi4wIC8gMi4wKSAqICg0Mi4wIC8gMi4wKSk7Ci0gICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNv
ZGUsIDEwMDAwMDAwMDAwbGwsIDEwMDAwMDAwMDAwbGwpID09IDI1MDAwMDAwMDAwMDAwMDAwMDAw
LjApOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBMZWZ0RnVuY3RvciwgdHlwZW5hbWUgUmlnaHRG
dW5jdG9yLCB0eXBlbmFtZSBJbnB1dFR5cGU+Ci12b2lkIGdlbmVyaWNUZXN0Q29tcGFyZSgKLSAg
ICBCMzo6T3Bjb2RlIG9wY29kZSwgY29uc3QgTGVmdEZ1bmN0b3ImIGxlZnRGdW5jdG9yLCBjb25z
dCBSaWdodEZ1bmN0b3ImIHJpZ2h0RnVuY3RvciwKLSAgICBJbnB1dFR5cGUgbGVmdCwgSW5wdXRU
eXBlIHJpZ2h0LCBpbnQgcmVzdWx0KQotewotICAgIC8vIFVzaW5nIGEgY29tcGFyZS4KLSAgICB7
Ci0gICAgICAgIFByb2NlZHVyZSBwcm9jOwotICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOwotCi0gICAgICAgIFZhbHVlKiBsZWZ0VmFsdWUgPSBsZWZ0RnVuY3Rvcihy
b290LCBwcm9jKTsKLSAgICAgICAgVmFsdWUqIHJpZ2h0VmFsdWUgPSByaWdodEZ1bmN0b3Iocm9v
dCwgcHJvYyk7Ci0gICAgICAgIFZhbHVlKiBjb21wYXJpc29uUmVzdWx0ID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBvcGNvZGUsIE9yaWdpbigpLCBsZWZ0VmFsdWUsIHJpZ2h0VmFsdWUp
OwotICAgICAgICAKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAg
ICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgTm90RXF1YWwsIE9yaWdpbigpLAotICAg
ICAgICAgICAgICAgIGNvbXBhcmlzb25SZXN1bHQsCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIGNvbXBhcmlzb25SZXN1bHQtPnR5cGUoKSwg
MCkpKTsKLQotICAgICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgbGVmdCwgcmln
aHQpID09IHJlc3VsdCk7Ci0gICAgfQotICAgIAotICAgIC8vIFVzaW5nIGEgYnJhbmNoLgotICAg
IHsKLSAgICAgICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRC
bG9jaygpOwotICAgICAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsK
LQotICAgICAgICBWYWx1ZSogbGVmdFZhbHVlID0gbGVmdEZ1bmN0b3Iocm9vdCwgcHJvYyk7Ci0g
ICAgICAgIFZhbHVlKiByaWdodFZhbHVlID0gcmlnaHRGdW5jdG9yKHJvb3QsIHByb2MpOwotCi0g
ICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgICAgIHByb2MsIEJy
YW5jaCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IG9wY29kZSwgT3JpZ2luKCksIGxlZnRWYWx1ZSwgcmlnaHRWYWx1ZSksCi0gICAgICAgICAgICBG
cmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKLQot
ICAgICAgICAvLyBXZSB1c2UgYSBwYXRjaHBvaW50IG9uIHRoZSB0aGVuIGNhc2UgdG8gZW5zdXJl
IHRoYXQgdGhpcyBkb2Vzbid0IGdldCBpZi1jb252ZXJ0ZWQuCi0gICAgICAgIFBhdGNocG9pbnRW
YWx1ZSogcGF0Y2hwb2ludCA9IHRoZW5DYXNlLT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihw
cm9jLCBJbnQzMiwgT3JpZ2luKCkpOwotICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3Io
Ci0gICAgICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMmIHBhcmFtcykgewotICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNo
UmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKLSAgICAgICAgICAgICAgICBDSEVDSyhw
YXJhbXMuc2l6ZSgpID09IDEpOwotICAgICAgICAgICAgICAgIENIRUNLKHBhcmFtc1swXS5pc0dQ
UigpKTsKLSAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MigxKSwgcGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB0aGVuQ2Fz
ZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHBhdGNocG9p
bnQpOwotCi0gICAgICAgIGVsc2VDYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAg
ICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICAgICAgZWxzZUNhc2UtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7Ci0KLSAgICAgICAgQ0hFQ0so
Y29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGxlZnQsIHJpZ2h0KSA9PSByZXN1bHQpOwotICAgIH0K
LX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgSW5wdXRUeXBlPgotSW5wdXRUeXBlIG1vZGVsQ29tcGFy
ZShCMzo6T3Bjb2RlIG9wY29kZSwgSW5wdXRUeXBlIGxlZnQsIElucHV0VHlwZSByaWdodCkKLXsK
LSAgICBzd2l0Y2ggKG9wY29kZSkgewotICAgIGNhc2UgRXF1YWw6Ci0gICAgICAgIHJldHVybiBs
ZWZ0ID09IHJpZ2h0OwotICAgIGNhc2UgTm90RXF1YWw6Ci0gICAgICAgIHJldHVybiBsZWZ0ICE9
IHJpZ2h0OwotICAgIGNhc2UgTGVzc1RoYW46Ci0gICAgICAgIHJldHVybiBsZWZ0IDwgcmlnaHQ7
Ci0gICAgY2FzZSBHcmVhdGVyVGhhbjoKLSAgICAgICAgcmV0dXJuIGxlZnQgPiByaWdodDsKLSAg
ICBjYXNlIExlc3NFcXVhbDoKLSAgICAgICAgcmV0dXJuIGxlZnQgPD0gcmlnaHQ7Ci0gICAgY2Fz
ZSBHcmVhdGVyRXF1YWw6Ci0gICAgICAgIHJldHVybiBsZWZ0ID49IHJpZ2h0OwotICAgIGNhc2Ug
QWJvdmU6Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6Om1ha2VfdW5z
aWduZWQ8SW5wdXRUeXBlPjo6dHlwZT4obGVmdCkgPgotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
dHlwZW5hbWUgc3RkOjptYWtlX3Vuc2lnbmVkPElucHV0VHlwZT46OnR5cGU+KHJpZ2h0KTsKLSAg
ICBjYXNlIEJlbG93OgotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjpt
YWtlX3Vuc2lnbmVkPElucHV0VHlwZT46OnR5cGU+KGxlZnQpIDwKLSAgICAgICAgICAgIHN0YXRp
Y19jYXN0PHR5cGVuYW1lIHN0ZDo6bWFrZV91bnNpZ25lZDxJbnB1dFR5cGU+Ojp0eXBlPihyaWdo
dCk7Ci0gICAgY2FzZSBBYm92ZUVxdWFsOgotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dHlw
ZW5hbWUgc3RkOjptYWtlX3Vuc2lnbmVkPElucHV0VHlwZT46OnR5cGU+KGxlZnQpID49Ci0gICAg
ICAgICAgICBzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6Om1ha2VfdW5zaWduZWQ8SW5wdXRUeXBl
Pjo6dHlwZT4ocmlnaHQpOwotICAgIGNhc2UgQmVsb3dFcXVhbDoKLSAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PHR5cGVuYW1lIHN0ZDo6bWFrZV91bnNpZ25lZDxJbnB1dFR5cGU+Ojp0eXBlPihs
ZWZ0KSA8PQotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjptYWtlX3Vuc2ln
bmVkPElucHV0VHlwZT46OnR5cGU+KHJpZ2h0KTsKLSAgICBjYXNlIEJpdEFuZDoKLSAgICAgICAg
cmV0dXJuICEhKGxlZnQgJiByaWdodCk7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotfQotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBUPgotdm9pZCB0ZXN0Q29tcGFyZUxvYWQoQjM6Ok9wY29kZSBvcGNvZGUs
IEIzOjpPcGNvZGUgbG9hZE9wY29kZSwgaW50IGxlZnQsIGludCByaWdodCkKLXsKLSAgICBpbnQg
cmVzdWx0ID0gbW9kZWxDb21wYXJlKG9wY29kZSwgbW9kZWxMb2FkPFQ+KGxlZnQpLCByaWdodCk7
Ci0gICAgCi0gICAgLy8gVGVzdCBhZGRyLXRvLXRtcAotICAgIGludCBzbG90ID0gbGVmdDsKLSAg
ICBnZW5lcmljVGVzdENvbXBhcmUoCi0gICAgICAgIG9wY29kZSwKLSAgICAgICAgWyZdIChCYXNp
Y0Jsb2NrKiBibG9jaywgUHJvY2VkdXJlJiBwcm9jKSB7Ci0gICAgICAgICAgICByZXR1cm4gYmxv
Y2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgbG9hZE9w
Y29kZSwgSW50MzIsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIGJsb2NrLT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZzbG90KSk7Ci0gICAgICAgIH0sCi0gICAg
ICAgIFsmXSAoQmFzaWNCbG9jayogYmxvY2ssIFByb2NlZHVyZSYgcHJvYykgewotICAgICAgICAg
ICAgcmV0dXJuIGJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICBibG9jay0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKLSAg
ICAgICAgfSwKLSAgICAgICAgbGVmdCwgcmlnaHQsIHJlc3VsdCk7Ci0KLSAgICAvLyBUZXN0IGFk
ZHItdG8taW1tCi0gICAgc2xvdCA9IGxlZnQ7Ci0gICAgZ2VuZXJpY1Rlc3RDb21wYXJlKAotICAg
ICAgICBvcGNvZGUsCi0gICAgICAgIFsmXSAoQmFzaWNCbG9jayogYmxvY2ssIFByb2NlZHVyZSYg
cHJvYykgewotICAgICAgICAgICAgcmV0dXJuIGJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KAotICAgICAgICAgICAgICAgIHByb2MsIGxvYWRPcGNvZGUsIEludDMyLCBPcmlnaW4oKSwKLSAg
ICAgICAgICAgICAgICBibG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCAmc2xvdCkpOwotICAgICAgICB9LAotICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGJsb2Nr
LCBQcm9jZWR1cmUmIHByb2MpIHsKLSAgICAgICAgICAgIHJldHVybiBibG9jay0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHJpZ2h0KTsKLSAgICAgICAgfSwKLSAgICAg
ICAgbGVmdCwgcmlnaHQsIHJlc3VsdCk7Ci0KLSAgICByZXN1bHQgPSBtb2RlbENvbXBhcmUob3Bj
b2RlLCBsZWZ0LCBtb2RlbExvYWQ8VD4ocmlnaHQpKTsKLSAgICAKLSAgICAvLyBUZXN0IHRtcC10
by1hZGRyCi0gICAgc2xvdCA9IHJpZ2h0OwotICAgIGdlbmVyaWNUZXN0Q29tcGFyZSgKLSAgICAg
ICAgb3Bjb2RlLAotICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrLCBQcm9jZWR1cmUmIHBy
b2MpIHsKLSAgICAgICAgICAgIHJldHVybiBibG9jay0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAg
ICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgYmxvY2st
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSk7Ci0gICAgICAgIH0sCi0gICAgICAgIFsmXSAoQmFzaWNCbG9jayogYmxvY2ss
IFByb2NlZHVyZSYgcHJvYykgewotICAgICAgICAgICAgcmV0dXJuIGJsb2NrLT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIGxvYWRPcGNvZGUsIEludDMyLCBP
cmlnaW4oKSwKLSAgICAgICAgICAgICAgICBibG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCAmc2xvdCkpOwotICAgICAgICB9LAotICAgICAgICBsZWZ0LCByaWdo
dCwgcmVzdWx0KTsKLQotICAgIC8vIFRlc3QgaW1tLXRvLWFkZHIKLSAgICBzbG90ID0gcmlnaHQ7
Ci0gICAgZ2VuZXJpY1Rlc3RDb21wYXJlKAotICAgICAgICBvcGNvZGUsCi0gICAgICAgIFsmXSAo
QmFzaWNCbG9jayogYmxvY2ssIFByb2NlZHVyZSYgcHJvYykgewotICAgICAgICAgICAgcmV0dXJu
IGJsb2NrLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbGVmdCk7Ci0g
ICAgICAgIH0sCi0gICAgICAgIFsmXSAoQmFzaWNCbG9jayogYmxvY2ssIFByb2NlZHVyZSYgcHJv
YykgewotICAgICAgICAgICAgcmV0dXJuIGJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAot
ICAgICAgICAgICAgICAgIHByb2MsIGxvYWRPcGNvZGUsIEludDMyLCBPcmlnaW4oKSwKLSAgICAg
ICAgICAgICAgICBibG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCAmc2xvdCkpOwotICAgICAgICB9LAotICAgICAgICBsZWZ0LCByaWdodCwgcmVzdWx0KTsKLQot
ICAgIC8vIFRlc3QgYWRkci10by1hZGRyLCB3aXRoIHRoZSBzYW1lIGFkZHIuCi0gICAgc2xvdCA9
IGxlZnQ7Ci0gICAgVmFsdWUqIHZhbHVlOwotICAgIGdlbmVyaWNUZXN0Q29tcGFyZSgKLSAgICAg
ICAgb3Bjb2RlLAotICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrLCBQcm9jZWR1cmUmIHBy
b2MpIHsKLSAgICAgICAgICAgIHZhbHVlID0gYmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
Ci0gICAgICAgICAgICAgICAgcHJvYywgbG9hZE9wY29kZSwgSW50MzIsIE9yaWdpbigpLAotICAg
ICAgICAgICAgICAgIGJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksICZzbG90KSk7Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgICAgIH0sCi0gICAg
ICAgIFsmXSAoQmFzaWNCbG9jayosIFByb2NlZHVyZSYpIHsKLSAgICAgICAgICAgIHJldHVybiB2
YWx1ZTsKLSAgICAgICAgfSwKLSAgICAgICAgbGVmdCwgbGVmdCwgbW9kZWxDb21wYXJlKG9wY29k
ZSwgbW9kZWxMb2FkPFQ+KGxlZnQpLCBtb2RlbExvYWQ8VD4obGVmdCkpKTsKLX0KLQotdm9pZCB0
ZXN0Q29tcGFyZUltcGwoQjM6Ok9wY29kZSBvcGNvZGUsIGludDY0X3QgbGVmdCwgaW50NjRfdCBy
aWdodCkKLXsKLSAgICBpbnQ2NF90IHJlc3VsdCA9IG1vZGVsQ29tcGFyZShvcGNvZGUsIGxlZnQs
IHJpZ2h0KTsKLSAgICBpbnQzMl90IGludDMyUmVzdWx0ID0gbW9kZWxDb21wYXJlKG9wY29kZSwg
c3RhdGljX2Nhc3Q8aW50MzJfdD4obGVmdCksIHN0YXRpY19jYXN0PGludDMyX3Q+KHJpZ2h0KSk7
Ci0gICAgCi0gICAgLy8gVGVzdCB0bXAtdG8tdG1wLgotICAgIGdlbmVyaWNUZXN0Q29tcGFyZSgK
LSAgICAgICAgb3Bjb2RlLAotICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrLCBQcm9jZWR1
cmUmIHByb2MpIHsKLSAgICAgICAgICAgIHJldHVybiBibG9jay0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgICAg
ICB9LAotICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrLCBQcm9jZWR1cmUmIHByb2MpIHsK
LSAgICAgICAgICAgIHJldHVybiBibG9jay0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAgICB9LAotICAgICAg
ICBsZWZ0LCByaWdodCwgcmVzdWx0KTsKLSAgICBnZW5lcmljVGVzdENvbXBhcmUoCi0gICAgICAg
IG9wY29kZSwKLSAgICAgICAgWyZdIChCYXNpY0Jsb2NrKiBibG9jaywgUHJvY2VkdXJlJiBwcm9j
KSB7Ci0gICAgICAgICAgICByZXR1cm4gYmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAg
ICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIGJsb2NrLT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCkpOwotICAgICAgICB9LAotICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrLCBQ
cm9jZWR1cmUmIHByb2MpIHsKLSAgICAgICAgICAgIHJldHVybiBibG9jay0+YXBwZW5kTmV3PFZh
bHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAg
ICAgICAgYmxvY2stPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Ci0gICAgICAgIH0sCi0gICAgICAgIGxlZnQsIHJpZ2h0
LCBpbnQzMlJlc3VsdCk7Ci0KLSAgICAvLyBUZXN0IGltbS10by10bXAuCi0gICAgZ2VuZXJpY1Rl
c3RDb21wYXJlKAotICAgICAgICBvcGNvZGUsCi0gICAgICAgIFsmXSAoQmFzaWNCbG9jayogYmxv
Y2ssIFByb2NlZHVyZSYgcHJvYykgewotICAgICAgICAgICAgcmV0dXJuIGJsb2NrLT5hcHBlbmRO
ZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbGVmdCk7Ci0gICAgICAgIH0sCi0gICAg
ICAgIFsmXSAoQmFzaWNCbG9jayogYmxvY2ssIFByb2NlZHVyZSYgcHJvYykgewotICAgICAgICAg
ICAgcmV0dXJuIGJsb2NrLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIH0sCi0gICAgICAgIGxlZnQsIHJp
Z2h0LCByZXN1bHQpOwotICAgIGdlbmVyaWNUZXN0Q29tcGFyZSgKLSAgICAgICAgb3Bjb2RlLAot
ICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrLCBQcm9jZWR1cmUmIHByb2MpIHsKLSAgICAg
ICAgICAgIHJldHVybiBibG9jay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIGxlZnQpOwotICAgICAgICB9LAotICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrLCBQ
cm9jZWR1cmUmIHByb2MpIHsKLSAgICAgICAgICAgIHJldHVybiBibG9jay0+YXBwZW5kTmV3PFZh
bHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAg
ICAgICAgYmxvY2stPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Ci0gICAgICAgIH0sCi0gICAgICAgIGxlZnQsIHJpZ2h0
LCBpbnQzMlJlc3VsdCk7Ci0KLSAgICAvLyBUZXN0IHRtcC10by1pbW0uCi0gICAgZ2VuZXJpY1Rl
c3RDb21wYXJlKAotICAgICAgICBvcGNvZGUsCi0gICAgICAgIFsmXSAoQmFzaWNCbG9jayogYmxv
Y2ssIFByb2NlZHVyZSYgcHJvYykgewotICAgICAgICAgICAgcmV0dXJuIGJsb2NrLT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7Ci0gICAgICAgIH0sCi0gICAgICAgIFsmXSAoQmFzaWNCbG9jayogYmxvY2ssIFByb2NlZHVy
ZSYgcHJvYykgewotICAgICAgICAgICAgcmV0dXJuIGJsb2NrLT5hcHBlbmROZXc8Q29uc3Q2NFZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgcmlnaHQpOwotICAgICAgICB9LAotICAgICAgICBsZWZ0LCBy
aWdodCwgcmVzdWx0KTsKLSAgICBnZW5lcmljVGVzdENvbXBhcmUoCi0gICAgICAgIG9wY29kZSwK
LSAgICAgICAgWyZdIChCYXNpY0Jsb2NrKiBibG9jaywgUHJvY2VkdXJlJiBwcm9jKSB7Ci0gICAg
ICAgICAgICByZXR1cm4gYmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAg
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIGJsb2NrLT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkp
OwotICAgICAgICB9LAotICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrLCBQcm9jZWR1cmUm
IHByb2MpIHsKLSAgICAgICAgICAgIHJldHVybiBibG9jay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIHJpZ2h0KTsKLSAgICAgICAgfSwKLSAgICAgICAgbGVmdCwgcmln
aHQsIGludDMyUmVzdWx0KTsKLQotICAgIC8vIFRlc3QgaW1tLXRvLWltbS4KLSAgICBnZW5lcmlj
VGVzdENvbXBhcmUoCi0gICAgICAgIG9wY29kZSwKLSAgICAgICAgWyZdIChCYXNpY0Jsb2NrKiBi
bG9jaywgUHJvY2VkdXJlJiBwcm9jKSB7Ci0gICAgICAgICAgICByZXR1cm4gYmxvY2stPmFwcGVu
ZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBsZWZ0KTsKLSAgICAgICAgfSwKLSAg
ICAgICAgWyZdIChCYXNpY0Jsb2NrKiBibG9jaywgUHJvY2VkdXJlJiBwcm9jKSB7Ci0gICAgICAg
ICAgICByZXR1cm4gYmxvY2stPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigp
LCByaWdodCk7Ci0gICAgICAgIH0sCi0gICAgICAgIGxlZnQsIHJpZ2h0LCByZXN1bHQpOwotICAg
IGdlbmVyaWNUZXN0Q29tcGFyZSgKLSAgICAgICAgb3Bjb2RlLAotICAgICAgICBbJl0gKEJhc2lj
QmxvY2sqIGJsb2NrLCBQcm9jZWR1cmUmIHByb2MpIHsKLSAgICAgICAgICAgIHJldHVybiBibG9j
ay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGxlZnQpOwotICAgICAg
ICB9LAotICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrLCBQcm9jZWR1cmUmIHByb2MpIHsK
LSAgICAgICAgICAgIHJldHVybiBibG9jay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIHJpZ2h0KTsKLSAgICAgICAgfSwKLSAgICAgICAgbGVmdCwgcmlnaHQsIGludDMy
UmVzdWx0KTsKLQotICAgIHRlc3RDb21wYXJlTG9hZDxpbnQzMl90PihvcGNvZGUsIExvYWQsIGxl
ZnQsIHJpZ2h0KTsKLSAgICB0ZXN0Q29tcGFyZUxvYWQ8aW50OF90PihvcGNvZGUsIExvYWQ4Uywg
bGVmdCwgcmlnaHQpOwotICAgIHRlc3RDb21wYXJlTG9hZDx1aW50OF90PihvcGNvZGUsIExvYWQ4
WiwgbGVmdCwgcmlnaHQpOwotICAgIHRlc3RDb21wYXJlTG9hZDxpbnQxNl90PihvcGNvZGUsIExv
YWQxNlMsIGxlZnQsIHJpZ2h0KTsKLSAgICB0ZXN0Q29tcGFyZUxvYWQ8dWludDE2X3Q+KG9wY29k
ZSwgTG9hZDE2WiwgbGVmdCwgcmlnaHQpOwotfQotCi12b2lkIHRlc3RDb21wYXJlKEIzOjpPcGNv
ZGUgb3Bjb2RlLCBpbnQ2NF90IGxlZnQsIGludDY0X3QgcmlnaHQpCi17Ci0gICAgdGVzdENvbXBh
cmVJbXBsKG9wY29kZSwgbGVmdCwgcmlnaHQpOwotICAgIHRlc3RDb21wYXJlSW1wbChvcGNvZGUs
IGxlZnQsIHJpZ2h0ICsgMSk7Ci0gICAgdGVzdENvbXBhcmVJbXBsKG9wY29kZSwgbGVmdCwgcmln
aHQgLSAxKTsKLX0KLQotdm9pZCB0ZXN0RXF1YWxEb3VibGUoZG91YmxlIGxlZnQsIGRvdWJsZSBy
aWdodCwgYm9vbCByZXN1bHQpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBFcXVhbCwgT3JpZ2luKCksCi0gICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQ
UkluZm86OmFyZ3VtZW50RlBSMCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMSkpKTsKLQot
ICAgIENIRUNLKGNvbXBpbGVBbmRSdW48Ym9vbD4ocHJvYywgbGVmdCwgcmlnaHQpID09IHJlc3Vs
dCk7Ci19Ci0KLWludCBzaW1wbGVGdW5jdGlvbihpbnQgYSwgaW50IGIpCi17Ci0gICAgcmV0dXJu
IGEgKyBiOwotfQotCi12b2lkIHRlc3RDYWxsU2ltcGxlKGludCBhLCBpbnQgYikKLXsKLSAgICBQ
cm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwot
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAotICAgICAgICAg
ICAgcHJvYywgSW50MzIsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENv
bnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KHNpbXBs
ZUZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCks
Ci0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRS
dW48aW50Pihwcm9jLCBhLCBiKSA9PSBhICsgYik7Ci19Ci0KLXZvaWQgdGVzdENhbGxSYXJlKGlu
dCBhLCBpbnQgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGNvbW1vbiA9IHByb2MuYWRkQmxv
Y2soKTsKLSAgICBCYXNpY0Jsb2NrKiByYXJlID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigp
LAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgIEZyZXF1ZW50ZWRCbG9jayhyYXJl
LCBGcmVxdWVuY3lDbGFzczo6UmFyZSksCi0gICAgICAgIEZyZXF1ZW50ZWRCbG9jayhjb21tb24p
KTsKLQotICAgIGNvbW1vbi0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCBjb21tb24tPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCAwKSk7Ci0gICAgCi0gICAgcmFyZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAg
ICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByYXJlLT5hcHBlbmROZXc8Q0Nh
bGxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksCi0gICAgICAgICAg
ICByYXJlLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5j
dGlvblB0cjx2b2lkKj4oc2ltcGxlRnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSwKLSAgICAgICAg
ICAgIHJhcmUtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxKSwKLSAgICAgICAgICAgIHJhcmUtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKSkpOwotCi0g
ICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIHRydWUsIGEsIGIpID09IGEgKyBiKTsK
LX0KLQotdm9pZCB0ZXN0Q2FsbFJhcmVMaXZlKGludCBhLCBpbnQgYiwgaW50IGMpCi17Ci0gICAg
UHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
LSAgICBCYXNpY0Jsb2NrKiBjb21tb24gPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9j
ayogcmFyZSA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKLSAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApLAotICAgICAgICBGcmVxdWVudGVkQmxvY2socmFyZSwgRnJlcXVlbmN5Q2xhc3M6OlJh
cmUpLAotICAgICAgICBGcmVxdWVudGVkQmxvY2soY29tbW9uKSk7Ci0KLSAgICBjb21tb24tPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY29t
bW9uLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwotICAgIAot
ICAgIHJhcmUtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKLSAgICAgICAgcmFyZS0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHBy
b2MsIEFkZCwgT3JpZ2luKCksCi0gICAgICAgICAgICByYXJlLT5hcHBlbmROZXc8Q0NhbGxWYWx1
ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigpLAotICAgICAgICAgICAg
ICAgIHJhcmUtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1
bmN0aW9uUHRyPHZvaWQqPihzaW1wbGVGdW5jdGlvbiwgQjNDQ2FsbFB0clRhZykpLAotICAgICAg
ICAgICAgICAgIHJhcmUtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSwKLSAgICAgICAgICAgICAgICByYXJlLT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MikpLAotICAgICAgICAgICAgcmFyZS0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAg
ICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcmFyZS0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjMp
KSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIHRydWUsIGEsIGIsIGMp
ID09IGEgKyBiICsgYyk7Ci19Ci0KLXZvaWQgdGVzdENhbGxTaW1wbGVQdXJlKGludCBhLCBpbnQg
YikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+
KAotICAgICAgICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigpLCBFZmZlY3RzOjpub25lKCksCi0g
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4oc2ltcGxlRnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSwK
LSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIx
KSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEsIGIpID09IGEgKyBi
KTsKLX0KLQotaW50IGZ1bmN0aW9uV2l0aEhlbGxhQXJndW1lbnRzKGludCBhLCBpbnQgYiwgaW50
IGMsIGludCBkLCBpbnQgZSwgaW50IGYsIGludCBnLCBpbnQgaCwgaW50IGksIGludCBqLCBpbnQg
aywgaW50IGwsIGludCBtLCBpbnQgbiwgaW50IG8sIGludCBwLCBpbnQgcSwgaW50IHIsIGludCBz
LCBpbnQgdCwgaW50IHUsIGludCB2LCBpbnQgdywgaW50IHgsIGludCB5LCBpbnQgeikKLXsKLSAg
ICByZXR1cm4gKGEgPDwgMCkgKyAoYiA8PCAxKSArIChjIDw8IDIpICsgKGQgPDwgMykgKyAoZSA8
PCA0KSArIChmIDw8IDUpICsgKGcgPDwgNikgKyAoaCA8PCA3KSArIChpIDw8IDgpICsgKGogPDwg
OSkgKyAoayA8PCAxMCkgKyAobCA8PCAxMSkgKyAobSA8PCAxMikgKyAobiA8PCAxMykgKyAobyA8
PCAxNCkgKyAocCA8PCAxNSkgKyAocSA8PCAxNikgKyAociA8PCAxNykgKyAocyA8PCAxOCkgKyAo
dCA8PCAxOSkgKyAodSA8PCAyMCkgKyAodiA8PCAyMSkgKyAodyA8PCAyMikgKyAoeCA8PCAyMykg
KyAoeSA8PCAyNCkgKyAoeiA8PCAyNSk7Ci19Ci0KLXZvaWQgdGVzdENhbGxGdW5jdGlvbldpdGhI
ZWxsYUFyZ3VtZW50cygpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIFZlY3RvcjxWYWx1ZSo+IGFyZ3M7Ci0gICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI2OyArK2kpCi0gICAgICAgIGFyZ3MuYXBwZW5kKHJv
b3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBpICsgMSkpOwotCi0g
ICAgQ0NhbGxWYWx1ZSogY2FsbCA9IHJvb3QtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKLSAgICAg
ICAgcHJvYywgSW50MzIsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQ
dHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4oZnVuY3Rpb25X
aXRoSGVsbGFBcmd1bWVudHMsIEIzQ0NhbGxQdHJUYWcpKSk7Ci0gICAgY2FsbC0+YXBwZW5kQXJn
cyhhcmdzKTsKLSAgICAKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwgY2FsbCk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJv
YykgPT0gZnVuY3Rpb25XaXRoSGVsbGFBcmd1bWVudHMoMSwgMiwgMywgNCwgNSwgNiwgNywgOCwg
OSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIz
LCAyNCwgMjUsIDI2KSk7Ci19Ci0KLXVpbnQ2NF90IGZ1bmN0aW9uV2l0aEhlbGxhQXJndW1lbnRz
Mih1aW50NjRfdCBhLCB1aW50NjRfdCBiLCB1aW50NjRfdCBjLCB1aW50NjRfdCBkLCB1aW50NjRf
dCBlLCB1aW50NjRfdCBmLCB1aW50NjRfdCBnLCB1aW50NjRfdCBoLCB1aW50NjRfdCBpLCB1aW50
NjRfdCBqLCB1aW50NjRfdCBrLCB1aW50NjRfdCBsLCB1aW50NjRfdCBtLCB1aW50NjRfdCBuLCB1
aW50NjRfdCBvLCB1aW50NjRfdCBwLCB1aW50NjRfdCBxLCB1aW50NjRfdCByLCB1aW50NjRfdCBz
LCB1aW50NjRfdCB0LCB1aW50NjRfdCB1LCB1aW50NjRfdCB2LCB1aW50NjRfdCB3LCB1aW50NjRf
dCB4LCB1aW50NjRfdCB5LCB1aW50NjRfdCB6KQotewotICAgIHJldHVybiAoYSA8PCAwKSArIChi
IDw8IDEpICsgKGMgPDwgMikgKyAoZCA8PCAzKSArIChlIDw8IDQpICsgKGYgPDwgNSkgKyAoZyA8
PCA2KSArIChoIDw8IDcpICsgKGkgPDwgOCkgKyAoaiA8PCA5KSArIChrIDw8IDEwKSArIChsIDw8
IDExKSArIChtIDw8IDEyKSArIChuIDw8IDEzKSArIChvIDw8IDE0KSArIChwIDw8IDE1KSArIChx
IDw8IDE2KSArIChyIDw8IDE3KSArIChzIDw8IDE4KSArICh0IDw8IDE5KSArICh1IDw8IDIwKSAr
ICh2IDw8IDIxKSArICh3IDw8IDIyKSArICh4IDw8IDIzKSArICh5IDw8IDI0KSArICh6IDw8IDI1
KTsKLX0KLQotdm9pZCB0ZXN0Q2FsbEZ1bmN0aW9uV2l0aEhlbGxhQXJndW1lbnRzMigpCi17Ci0g
ICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKLQotICAgIHVpbnQ2NF90IGxpbWl0ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KCgxIDw8IDEy
KSAtIDEpOyAvLyBVSU5UMTJfTUFYLCBmb3IgYXJtNjQgdGVzdGluZy4KLQotICAgIFZlY3RvcjxW
YWx1ZSo+IGFyZ3M7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI2OyArK2kpCi0gICAg
ICAgIGFyZ3MuYXBwZW5kKHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdp
bigpLCBsaW1pdCAtIGkpKTsKLQotICAgIENDYWxsVmFsdWUqIGNhbGwgPSByb290LT5hcHBlbmRO
ZXc8Q0NhbGxWYWx1ZT4oCi0gICAgICAgIHByb2MsIEludDY0LCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rp
b25QdHI8dm9pZCo+KGZ1bmN0aW9uV2l0aEhlbGxhQXJndW1lbnRzMiwgQjNDQ2FsbFB0clRhZykp
KTsKLSAgICBjYWxsLT5hcHBlbmRBcmdzKGFyZ3MpOwotICAgIAotICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBjYWxsKTsKLQotICAgIGF1dG8g
YSA9IGNvbXBpbGVBbmRSdW48dWludDY0X3Q+KHByb2MpOwotICAgIGF1dG8gYiA9IGZ1bmN0aW9u
V2l0aEhlbGxhQXJndW1lbnRzMihsaW1pdCwgbGltaXQtMSwgbGltaXQtMiwgbGltaXQtMywgbGlt
aXQtNCwgbGltaXQtNSwgbGltaXQtNiwgbGltaXQtNywgbGltaXQtOCwgbGltaXQtOSwgbGltaXQt
MTAsIGxpbWl0LTExLCBsaW1pdC0xMiwgbGltaXQtMTMsIGxpbWl0LTE0LCBsaW1pdC0xNSwgbGlt
aXQtMTYsIGxpbWl0LTE3LCBsaW1pdC0xOCwgbGltaXQtMTksIGxpbWl0LTIwLCBsaW1pdC0yMSwg
bGltaXQtMjIsIGxpbWl0LTIzLCBsaW1pdC0yNCwgbGltaXQtMjUpOwotICAgIENIRUNLKGEgPT0g
Yik7Ci19Ci0KLWludCBmdW5jdGlvbldpdGhIZWxsYUFyZ3VtZW50czMoaW50IGFyZzAsaW50IGFy
ZzEsaW50IGFyZzIsaW50IGFyZzMsaW50IGFyZzQsaW50IGFyZzUsaW50IGFyZzYsaW50IGFyZzcs
aW50IGFyZzgsaW50IGFyZzksaW50IGFyZzEwLGludCBhcmcxMSxpbnQgYXJnMTIsaW50IGFyZzEz
LGludCBhcmcxNCxpbnQgYXJnMTUsaW50IGFyZzE2LGludCBhcmcxNyxpbnQgYXJnMTgsaW50IGFy
ZzE5LGludCBhcmcyMCxpbnQgYXJnMjEsaW50IGFyZzIyLGludCBhcmcyMyxpbnQgYXJnMjQsaW50
IGFyZzI1LGludCBhcmcyNixpbnQgYXJnMjcsaW50IGFyZzI4LGludCBhcmcyOSxpbnQgYXJnMzAs
aW50IGFyZzMxLGludCBhcmczMixpbnQgYXJnMzMsaW50IGFyZzM0LGludCBhcmczNSxpbnQgYXJn
MzYsaW50IGFyZzM3LGludCBhcmczOCxpbnQgYXJnMzksaW50IGFyZzQwLGludCBhcmc0MSxpbnQg
YXJnNDIsaW50IGFyZzQzLGludCBhcmc0NCxpbnQgYXJnNDUsaW50IGFyZzQ2LGludCBhcmc0Nyxp
bnQgYXJnNDgsaW50IGFyZzQ5LGludCBhcmc1MCxpbnQgYXJnNTEsaW50IGFyZzUyLGludCBhcmc1
MyxpbnQgYXJnNTQsaW50IGFyZzU1LGludCBhcmc1NixpbnQgYXJnNTcsaW50IGFyZzU4LGludCBh
cmc1OSxpbnQgYXJnNjAsaW50IGFyZzYxLGludCBhcmc2MixpbnQgYXJnNjMsaW50IGFyZzY0LGlu
dCBhcmc2NSxpbnQgYXJnNjYsaW50IGFyZzY3LGludCBhcmc2OCxpbnQgYXJnNjksaW50IGFyZzcw
LGludCBhcmc3MSxpbnQgYXJnNzIsaW50IGFyZzczLGludCBhcmc3NCxpbnQgYXJnNzUsaW50IGFy
Zzc2LGludCBhcmc3NyxpbnQgYXJnNzgsaW50IGFyZzc5LGludCBhcmc4MCxpbnQgYXJnODEsaW50
IGFyZzgyLGludCBhcmc4MyxpbnQgYXJnODQsaW50IGFyZzg1LGludCBhcmc4NixpbnQgYXJnODcs
aW50IGFyZzg4LGludCBhcmc4OSxpbnQgYXJnOTAsaW50IGFyZzkxLGludCBhcmc5MixpbnQgYXJn
OTMsaW50IGFyZzk0LGludCBhcmc5NSxpbnQgYXJnOTYsaW50IGFyZzk3LGludCBhcmc5OCxpbnQg
YXJnOTksaW50IGFyZzEwMCxpbnQgYXJnMTAxLGludCBhcmcxMDIsaW50IGFyZzEwMyxpbnQgYXJn
MTA0LGludCBhcmcxMDUsaW50IGFyZzEwNixpbnQgYXJnMTA3LGludCBhcmcxMDgsaW50IGFyZzEw
OSxpbnQgYXJnMTEwLGludCBhcmcxMTEsaW50IGFyZzExMixpbnQgYXJnMTEzLGludCBhcmcxMTQs
aW50IGFyZzExNSxpbnQgYXJnMTE2LGludCBhcmcxMTcsaW50IGFyZzExOCxpbnQgYXJnMTE5LGlu
dCBhcmcxMjAsaW50IGFyZzEyMSxpbnQgYXJnMTIyLGludCBhcmcxMjMsaW50IGFyZzEyNCxpbnQg
YXJnMTI1LGludCBhcmcxMjYsaW50IGFyZzEyNyxpbnQgYXJnMTI4LGludCBhcmcxMjksaW50IGFy
ZzEzMCxpbnQgYXJnMTMxLGludCBhcmcxMzIsaW50IGFyZzEzMyxpbnQgYXJnMTM0LGludCBhcmcx
MzUsaW50IGFyZzEzNixpbnQgYXJnMTM3LGludCBhcmcxMzgsaW50IGFyZzEzOSxpbnQgYXJnMTQw
LGludCBhcmcxNDEsaW50IGFyZzE0MixpbnQgYXJnMTQzLGludCBhcmcxNDQsaW50IGFyZzE0NSxp
bnQgYXJnMTQ2LGludCBhcmcxNDcsaW50IGFyZzE0OCxpbnQgYXJnMTQ5LGludCBhcmcxNTAsaW50
IGFyZzE1MSxpbnQgYXJnMTUyLGludCBhcmcxNTMsaW50IGFyZzE1NCxpbnQgYXJnMTU1LGludCBh
cmcxNTYsaW50IGFyZzE1NyxpbnQgYXJnMTU4LGludCBhcmcxNTksaW50IGFyZzE2MCxpbnQgYXJn
MTYxLGludCBhcmcxNjIsaW50IGFyZzE2MyxpbnQgYXJnMTY0LGludCBhcmcxNjUsaW50IGFyZzE2
NixpbnQgYXJnMTY3LGludCBhcmcxNjgsaW50IGFyZzE2OSxpbnQgYXJnMTcwLGludCBhcmcxNzEs
aW50IGFyZzE3MixpbnQgYXJnMTczLGludCBhcmcxNzQsaW50IGFyZzE3NSxpbnQgYXJnMTc2LGlu
dCBhcmcxNzcsaW50IGFyZzE3OCxpbnQgYXJnMTc5LGludCBhcmcxODAsaW50IGFyZzE4MSxpbnQg
YXJnMTgyLGludCBhcmcxODMsaW50IGFyZzE4NCxpbnQgYXJnMTg1LGludCBhcmcxODYsaW50IGFy
ZzE4NyxpbnQgYXJnMTg4LGludCBhcmcxODksaW50IGFyZzE5MCxpbnQgYXJnMTkxLGludCBhcmcx
OTIsaW50IGFyZzE5MyxpbnQgYXJnMTk0LGludCBhcmcxOTUsaW50IGFyZzE5NixpbnQgYXJnMTk3
LGludCBhcmcxOTgsaW50IGFyZzE5OSxpbnQgYXJnMjAwLGludCBhcmcyMDEsaW50IGFyZzIwMixp
bnQgYXJnMjAzLGludCBhcmcyMDQsaW50IGFyZzIwNSxpbnQgYXJnMjA2LGludCBhcmcyMDcsaW50
IGFyZzIwOCxpbnQgYXJnMjA5LGludCBhcmcyMTAsaW50IGFyZzIxMSxpbnQgYXJnMjEyLGludCBh
cmcyMTMsaW50IGFyZzIxNCxpbnQgYXJnMjE1LGludCBhcmcyMTYsaW50IGFyZzIxNyxpbnQgYXJn
MjE4LGludCBhcmcyMTksaW50IGFyZzIyMCxpbnQgYXJnMjIxLGludCBhcmcyMjIsaW50IGFyZzIy
MyxpbnQgYXJnMjI0LGludCBhcmcyMjUsaW50IGFyZzIyNixpbnQgYXJnMjI3LGludCBhcmcyMjgs
aW50IGFyZzIyOSxpbnQgYXJnMjMwLGludCBhcmcyMzEsaW50IGFyZzIzMixpbnQgYXJnMjMzLGlu
dCBhcmcyMzQsaW50IGFyZzIzNSxpbnQgYXJnMjM2LGludCBhcmcyMzcsaW50IGFyZzIzOCxpbnQg
YXJnMjM5LGludCBhcmcyNDAsaW50IGFyZzI0MSxpbnQgYXJnMjQyLGludCBhcmcyNDMsaW50IGFy
ZzI0NCxpbnQgYXJnMjQ1LGludCBhcmcyNDYsaW50IGFyZzI0NyxpbnQgYXJnMjQ4LGludCBhcmcy
NDksaW50IGFyZzI1MCxpbnQgYXJnMjUxLGludCBhcmcyNTIsaW50IGFyZzI1MyxpbnQgYXJnMjU0
LGludCBhcmcyNTUsaW50IGFyZzI1NixpbnQgYXJnMjU3LGludCBhcmcyNTgsaW50IGFyZzI1OSxp
bnQgYXJnMjYwLGludCBhcmcyNjEsaW50IGFyZzI2MixpbnQgYXJnMjYzLGludCBhcmcyNjQsaW50
IGFyZzI2NSxpbnQgYXJnMjY2LGludCBhcmcyNjcsaW50IGFyZzI2OCxpbnQgYXJnMjY5LGludCBh
cmcyNzAsaW50IGFyZzI3MSxpbnQgYXJnMjcyLGludCBhcmcyNzMsaW50IGFyZzI3NCxpbnQgYXJn
Mjc1LGludCBhcmcyNzYsaW50IGFyZzI3NyxpbnQgYXJnMjc4LGludCBhcmcyNzksaW50IGFyZzI4
MCxpbnQgYXJnMjgxLGludCBhcmcyODIsaW50IGFyZzI4MyxpbnQgYXJnMjg0LGludCBhcmcyODUs
aW50IGFyZzI4NixpbnQgYXJnMjg3LGludCBhcmcyODgsaW50IGFyZzI4OSxpbnQgYXJnMjkwLGlu
dCBhcmcyOTEsaW50IGFyZzI5MixpbnQgYXJnMjkzLGludCBhcmcyOTQsaW50IGFyZzI5NSxpbnQg
YXJnMjk2LGludCBhcmcyOTcsaW50IGFyZzI5OCxpbnQgYXJnMjk5LGludCBhcmczMDAsaW50IGFy
ZzMwMSxpbnQgYXJnMzAyLGludCBhcmczMDMsaW50IGFyZzMwNCxpbnQgYXJnMzA1LGludCBhcmcz
MDYsaW50IGFyZzMwNyxpbnQgYXJnMzA4LGludCBhcmczMDksaW50IGFyZzMxMCxpbnQgYXJnMzEx
LGludCBhcmczMTIsaW50IGFyZzMxMyxpbnQgYXJnMzE0LGludCBhcmczMTUsaW50IGFyZzMxNixp
bnQgYXJnMzE3LGludCBhcmczMTgsaW50IGFyZzMxOSxpbnQgYXJnMzIwLGludCBhcmczMjEsaW50
IGFyZzMyMixpbnQgYXJnMzIzLGludCBhcmczMjQsaW50IGFyZzMyNSxpbnQgYXJnMzI2LGludCBh
cmczMjcsaW50IGFyZzMyOCxpbnQgYXJnMzI5LGludCBhcmczMzAsaW50IGFyZzMzMSxpbnQgYXJn
MzMyLGludCBhcmczMzMsaW50IGFyZzMzNCxpbnQgYXJnMzM1LGludCBhcmczMzYsaW50IGFyZzMz
NyxpbnQgYXJnMzM4LGludCBhcmczMzksaW50IGFyZzM0MCxpbnQgYXJnMzQxLGludCBhcmczNDIs
aW50IGFyZzM0MyxpbnQgYXJnMzQ0LGludCBhcmczNDUsaW50IGFyZzM0NixpbnQgYXJnMzQ3LGlu
dCBhcmczNDgsaW50IGFyZzM0OSxpbnQgYXJnMzUwLGludCBhcmczNTEsaW50IGFyZzM1MixpbnQg
YXJnMzUzLGludCBhcmczNTQsaW50IGFyZzM1NSxpbnQgYXJnMzU2LGludCBhcmczNTcsaW50IGFy
ZzM1OCxpbnQgYXJnMzU5LGludCBhcmczNjAsaW50IGFyZzM2MSxpbnQgYXJnMzYyLGludCBhcmcz
NjMsaW50IGFyZzM2NCxpbnQgYXJnMzY1LGludCBhcmczNjYsaW50IGFyZzM2NyxpbnQgYXJnMzY4
LGludCBhcmczNjksaW50IGFyZzM3MCxpbnQgYXJnMzcxLGludCBhcmczNzIsaW50IGFyZzM3Myxp
bnQgYXJnMzc0LGludCBhcmczNzUsaW50IGFyZzM3NixpbnQgYXJnMzc3LGludCBhcmczNzgsaW50
IGFyZzM3OSxpbnQgYXJnMzgwLGludCBhcmczODEsaW50IGFyZzM4MixpbnQgYXJnMzgzLGludCBh
cmczODQsaW50IGFyZzM4NSxpbnQgYXJnMzg2LGludCBhcmczODcsaW50IGFyZzM4OCxpbnQgYXJn
Mzg5LGludCBhcmczOTAsaW50IGFyZzM5MSxpbnQgYXJnMzkyLGludCBhcmczOTMsaW50IGFyZzM5
NCxpbnQgYXJnMzk1LGludCBhcmczOTYsaW50IGFyZzM5NyxpbnQgYXJnMzk4LGludCBhcmczOTks
aW50IGFyZzQwMCxpbnQgYXJnNDAxLGludCBhcmc0MDIsaW50IGFyZzQwMyxpbnQgYXJnNDA0LGlu
dCBhcmc0MDUsaW50IGFyZzQwNixpbnQgYXJnNDA3LGludCBhcmc0MDgsaW50IGFyZzQwOSxpbnQg
YXJnNDEwLGludCBhcmc0MTEsaW50IGFyZzQxMixpbnQgYXJnNDEzLGludCBhcmc0MTQsaW50IGFy
ZzQxNSxpbnQgYXJnNDE2LGludCBhcmc0MTcsaW50IGFyZzQxOCxpbnQgYXJnNDE5LGludCBhcmc0
MjAsaW50IGFyZzQyMSxpbnQgYXJnNDIyLGludCBhcmc0MjMsaW50IGFyZzQyNCxpbnQgYXJnNDI1
LGludCBhcmc0MjYsaW50IGFyZzQyNyxpbnQgYXJnNDI4LGludCBhcmc0MjksaW50IGFyZzQzMCxp
bnQgYXJnNDMxLGludCBhcmc0MzIsaW50IGFyZzQzMyxpbnQgYXJnNDM0LGludCBhcmc0MzUsaW50
IGFyZzQzNixpbnQgYXJnNDM3LGludCBhcmc0MzgsaW50IGFyZzQzOSxpbnQgYXJnNDQwLGludCBh
cmc0NDEsaW50IGFyZzQ0MixpbnQgYXJnNDQzLGludCBhcmc0NDQsaW50IGFyZzQ0NSxpbnQgYXJn
NDQ2LGludCBhcmc0NDcsaW50IGFyZzQ0OCxpbnQgYXJnNDQ5LGludCBhcmc0NTAsaW50IGFyZzQ1
MSxpbnQgYXJnNDUyLGludCBhcmc0NTMsaW50IGFyZzQ1NCxpbnQgYXJnNDU1LGludCBhcmc0NTYs
aW50IGFyZzQ1NyxpbnQgYXJnNDU4LGludCBhcmc0NTksaW50IGFyZzQ2MCxpbnQgYXJnNDYxLGlu
dCBhcmc0NjIsaW50IGFyZzQ2MyxpbnQgYXJnNDY0LGludCBhcmc0NjUsaW50IGFyZzQ2NixpbnQg
YXJnNDY3LGludCBhcmc0NjgsaW50IGFyZzQ2OSxpbnQgYXJnNDcwLGludCBhcmc0NzEsaW50IGFy
ZzQ3MixpbnQgYXJnNDczLGludCBhcmc0NzQsaW50IGFyZzQ3NSxpbnQgYXJnNDc2LGludCBhcmc0
NzcsaW50IGFyZzQ3OCxpbnQgYXJnNDc5LGludCBhcmc0ODAsaW50IGFyZzQ4MSxpbnQgYXJnNDgy
LGludCBhcmc0ODMsaW50IGFyZzQ4NCxpbnQgYXJnNDg1LGludCBhcmc0ODYsaW50IGFyZzQ4Nyxp
bnQgYXJnNDg4LGludCBhcmc0ODksaW50IGFyZzQ5MCxpbnQgYXJnNDkxLGludCBhcmc0OTIsaW50
IGFyZzQ5MyxpbnQgYXJnNDk0LGludCBhcmc0OTUsaW50IGFyZzQ5NixpbnQgYXJnNDk3LGludCBh
cmc0OTgsaW50IGFyZzQ5OSxpbnQgYXJnNTAwLGludCBhcmc1MDEsaW50IGFyZzUwMixpbnQgYXJn
NTAzLGludCBhcmc1MDQsaW50IGFyZzUwNSxpbnQgYXJnNTA2LGludCBhcmc1MDcsaW50IGFyZzUw
OCxpbnQgYXJnNTA5LGludCBhcmc1MTAsaW50IGFyZzUxMSxpbnQgYXJnNTEyLGludCBhcmc1MTMs
aW50IGFyZzUxNCxpbnQgYXJnNTE1LGludCBhcmc1MTYsaW50IGFyZzUxNyxpbnQgYXJnNTE4LGlu
dCBhcmc1MTksaW50IGFyZzUyMCxpbnQgYXJnNTIxLGludCBhcmc1MjIsaW50IGFyZzUyMyxpbnQg
YXJnNTI0LGludCBhcmc1MjUsaW50IGFyZzUyNixpbnQgYXJnNTI3LGludCBhcmc1MjgsaW50IGFy
ZzUyOSxpbnQgYXJnNTMwLGludCBhcmc1MzEsaW50IGFyZzUzMixpbnQgYXJnNTMzLGludCBhcmc1
MzQsaW50IGFyZzUzNSxpbnQgYXJnNTM2LGludCBhcmc1MzcsaW50IGFyZzUzOCxpbnQgYXJnNTM5
LGludCBhcmc1NDAsaW50IGFyZzU0MSxpbnQgYXJnNTQyLGludCBhcmc1NDMsaW50IGFyZzU0NCxp
bnQgYXJnNTQ1LGludCBhcmc1NDYsaW50IGFyZzU0NyxpbnQgYXJnNTQ4LGludCBhcmc1NDksaW50
IGFyZzU1MCxpbnQgYXJnNTUxLGludCBhcmc1NTIsaW50IGFyZzU1MyxpbnQgYXJnNTU0LGludCBh
cmc1NTUsaW50IGFyZzU1NixpbnQgYXJnNTU3LGludCBhcmc1NTgsaW50IGFyZzU1OSxpbnQgYXJn
NTYwLGludCBhcmc1NjEsaW50IGFyZzU2MixpbnQgYXJnNTYzLGludCBhcmc1NjQsaW50IGFyZzU2
NSxpbnQgYXJnNTY2LGludCBhcmc1NjcsaW50IGFyZzU2OCxpbnQgYXJnNTY5LGludCBhcmc1NzAs
aW50IGFyZzU3MSxpbnQgYXJnNTcyLGludCBhcmc1NzMsaW50IGFyZzU3NCxpbnQgYXJnNTc1LGlu
dCBhcmc1NzYsaW50IGFyZzU3NyxpbnQgYXJnNTc4LGludCBhcmc1NzksaW50IGFyZzU4MCxpbnQg
YXJnNTgxLGludCBhcmc1ODIsaW50IGFyZzU4MyxpbnQgYXJnNTg0LGludCBhcmc1ODUsaW50IGFy
ZzU4NixpbnQgYXJnNTg3LGludCBhcmc1ODgsaW50IGFyZzU4OSxpbnQgYXJnNTkwLGludCBhcmc1
OTEsaW50IGFyZzU5MixpbnQgYXJnNTkzLGludCBhcmc1OTQsaW50IGFyZzU5NSxpbnQgYXJnNTk2
LGludCBhcmc1OTcsaW50IGFyZzU5OCxpbnQgYXJnNTk5LGludCBhcmc2MDAsaW50IGFyZzYwMSxp
bnQgYXJnNjAyLGludCBhcmc2MDMsaW50IGFyZzYwNCxpbnQgYXJnNjA1LGludCBhcmc2MDYsaW50
IGFyZzYwNyxpbnQgYXJnNjA4LGludCBhcmc2MDksaW50IGFyZzYxMCxpbnQgYXJnNjExLGludCBh
cmc2MTIsaW50IGFyZzYxMyxpbnQgYXJnNjE0LGludCBhcmc2MTUsaW50IGFyZzYxNixpbnQgYXJn
NjE3LGludCBhcmc2MTgsaW50IGFyZzYxOSxpbnQgYXJnNjIwLGludCBhcmc2MjEsaW50IGFyZzYy
MixpbnQgYXJnNjIzLGludCBhcmc2MjQsaW50IGFyZzYyNSxpbnQgYXJnNjI2LGludCBhcmc2Mjcs
aW50IGFyZzYyOCxpbnQgYXJnNjI5LGludCBhcmc2MzAsaW50IGFyZzYzMSxpbnQgYXJnNjMyLGlu
dCBhcmc2MzMsaW50IGFyZzYzNCxpbnQgYXJnNjM1LGludCBhcmc2MzYsaW50IGFyZzYzNyxpbnQg
YXJnNjM4LGludCBhcmc2MzksaW50IGFyZzY0MCxpbnQgYXJnNjQxLGludCBhcmc2NDIsaW50IGFy
ZzY0MyxpbnQgYXJnNjQ0LGludCBhcmc2NDUsaW50IGFyZzY0NixpbnQgYXJnNjQ3LGludCBhcmc2
NDgsaW50IGFyZzY0OSxpbnQgYXJnNjUwLGludCBhcmc2NTEsaW50IGFyZzY1MixpbnQgYXJnNjUz
LGludCBhcmc2NTQsaW50IGFyZzY1NSxpbnQgYXJnNjU2LGludCBhcmc2NTcsaW50IGFyZzY1OCxp
bnQgYXJnNjU5LGludCBhcmc2NjAsaW50IGFyZzY2MSxpbnQgYXJnNjYyLGludCBhcmc2NjMsaW50
IGFyZzY2NCxpbnQgYXJnNjY1LGludCBhcmc2NjYsaW50IGFyZzY2NyxpbnQgYXJnNjY4LGludCBh
cmc2NjksaW50IGFyZzY3MCxpbnQgYXJnNjcxLGludCBhcmc2NzIsaW50IGFyZzY3MyxpbnQgYXJn
Njc0LGludCBhcmc2NzUsaW50IGFyZzY3NixpbnQgYXJnNjc3LGludCBhcmc2NzgsaW50IGFyZzY3
OSxpbnQgYXJnNjgwLGludCBhcmc2ODEsaW50IGFyZzY4MixpbnQgYXJnNjgzLGludCBhcmc2ODQs
aW50IGFyZzY4NSxpbnQgYXJnNjg2LGludCBhcmc2ODcsaW50IGFyZzY4OCxpbnQgYXJnNjg5LGlu
dCBhcmc2OTAsaW50IGFyZzY5MSxpbnQgYXJnNjkyLGludCBhcmc2OTMsaW50IGFyZzY5NCxpbnQg
YXJnNjk1LGludCBhcmc2OTYsaW50IGFyZzY5NyxpbnQgYXJnNjk4LGludCBhcmc2OTksaW50IGFy
ZzcwMCxpbnQgYXJnNzAxLGludCBhcmc3MDIsaW50IGFyZzcwMyxpbnQgYXJnNzA0LGludCBhcmc3
MDUsaW50IGFyZzcwNixpbnQgYXJnNzA3LGludCBhcmc3MDgsaW50IGFyZzcwOSxpbnQgYXJnNzEw
LGludCBhcmc3MTEsaW50IGFyZzcxMixpbnQgYXJnNzEzLGludCBhcmc3MTQsaW50IGFyZzcxNSxp
bnQgYXJnNzE2LGludCBhcmc3MTcsaW50IGFyZzcxOCxpbnQgYXJnNzE5LGludCBhcmc3MjAsaW50
IGFyZzcyMSxpbnQgYXJnNzIyLGludCBhcmc3MjMsaW50IGFyZzcyNCxpbnQgYXJnNzI1LGludCBh
cmc3MjYsaW50IGFyZzcyNyxpbnQgYXJnNzI4LGludCBhcmc3MjksaW50IGFyZzczMCxpbnQgYXJn
NzMxLGludCBhcmc3MzIsaW50IGFyZzczMyxpbnQgYXJnNzM0LGludCBhcmc3MzUsaW50IGFyZzcz
NixpbnQgYXJnNzM3LGludCBhcmc3MzgsaW50IGFyZzczOSxpbnQgYXJnNzQwLGludCBhcmc3NDEs
aW50IGFyZzc0MixpbnQgYXJnNzQzLGludCBhcmc3NDQsaW50IGFyZzc0NSxpbnQgYXJnNzQ2LGlu
dCBhcmc3NDcsaW50IGFyZzc0OCxpbnQgYXJnNzQ5LGludCBhcmc3NTAsaW50IGFyZzc1MSxpbnQg
YXJnNzUyLGludCBhcmc3NTMsaW50IGFyZzc1NCxpbnQgYXJnNzU1LGludCBhcmc3NTYsaW50IGFy
Zzc1NyxpbnQgYXJnNzU4LGludCBhcmc3NTksaW50IGFyZzc2MCxpbnQgYXJnNzYxLGludCBhcmc3
NjIsaW50IGFyZzc2MyxpbnQgYXJnNzY0LGludCBhcmc3NjUsaW50IGFyZzc2NixpbnQgYXJnNzY3
LGludCBhcmc3NjgsaW50IGFyZzc2OSxpbnQgYXJnNzcwLGludCBhcmc3NzEsaW50IGFyZzc3Mixp
bnQgYXJnNzczLGludCBhcmc3NzQsaW50IGFyZzc3NSxpbnQgYXJnNzc2LGludCBhcmc3NzcsaW50
IGFyZzc3OCxpbnQgYXJnNzc5LGludCBhcmc3ODAsaW50IGFyZzc4MSxpbnQgYXJnNzgyLGludCBh
cmc3ODMsaW50IGFyZzc4NCxpbnQgYXJnNzg1LGludCBhcmc3ODYsaW50IGFyZzc4NyxpbnQgYXJn
Nzg4LGludCBhcmc3ODksaW50IGFyZzc5MCxpbnQgYXJnNzkxLGludCBhcmc3OTIsaW50IGFyZzc5
MyxpbnQgYXJnNzk0LGludCBhcmc3OTUsaW50IGFyZzc5NixpbnQgYXJnNzk3LGludCBhcmc3OTgs
aW50IGFyZzc5OSxpbnQgYXJnODAwLGludCBhcmc4MDEsaW50IGFyZzgwMixpbnQgYXJnODAzLGlu
dCBhcmc4MDQsaW50IGFyZzgwNSxpbnQgYXJnODA2LGludCBhcmc4MDcsaW50IGFyZzgwOCxpbnQg
YXJnODA5LGludCBhcmc4MTAsaW50IGFyZzgxMSxpbnQgYXJnODEyLGludCBhcmc4MTMsaW50IGFy
ZzgxNCxpbnQgYXJnODE1LGludCBhcmc4MTYsaW50IGFyZzgxNyxpbnQgYXJnODE4LGludCBhcmc4
MTksaW50IGFyZzgyMCxpbnQgYXJnODIxLGludCBhcmc4MjIsaW50IGFyZzgyMyxpbnQgYXJnODI0
LGludCBhcmc4MjUsaW50IGFyZzgyNixpbnQgYXJnODI3LGludCBhcmc4MjgsaW50IGFyZzgyOSxp
bnQgYXJnODMwLGludCBhcmc4MzEsaW50IGFyZzgzMixpbnQgYXJnODMzLGludCBhcmc4MzQsaW50
IGFyZzgzNSxpbnQgYXJnODM2LGludCBhcmc4MzcsaW50IGFyZzgzOCxpbnQgYXJnODM5LGludCBh
cmc4NDAsaW50IGFyZzg0MSxpbnQgYXJnODQyLGludCBhcmc4NDMsaW50IGFyZzg0NCxpbnQgYXJn
ODQ1LGludCBhcmc4NDYsaW50IGFyZzg0NyxpbnQgYXJnODQ4LGludCBhcmc4NDksaW50IGFyZzg1
MCxpbnQgYXJnODUxLGludCBhcmc4NTIsaW50IGFyZzg1MyxpbnQgYXJnODU0LGludCBhcmc4NTUs
aW50IGFyZzg1NixpbnQgYXJnODU3LGludCBhcmc4NTgsaW50IGFyZzg1OSxpbnQgYXJnODYwLGlu
dCBhcmc4NjEsaW50IGFyZzg2MixpbnQgYXJnODYzLGludCBhcmc4NjQsaW50IGFyZzg2NSxpbnQg
YXJnODY2LGludCBhcmc4NjcsaW50IGFyZzg2OCxpbnQgYXJnODY5LGludCBhcmc4NzAsaW50IGFy
Zzg3MSxpbnQgYXJnODcyLGludCBhcmc4NzMsaW50IGFyZzg3NCxpbnQgYXJnODc1LGludCBhcmc4
NzYsaW50IGFyZzg3NyxpbnQgYXJnODc4LGludCBhcmc4NzksaW50IGFyZzg4MCxpbnQgYXJnODgx
LGludCBhcmc4ODIsaW50IGFyZzg4MyxpbnQgYXJnODg0LGludCBhcmc4ODUsaW50IGFyZzg4Nixp
bnQgYXJnODg3LGludCBhcmc4ODgsaW50IGFyZzg4OSxpbnQgYXJnODkwLGludCBhcmc4OTEsaW50
IGFyZzg5MixpbnQgYXJnODkzLGludCBhcmc4OTQsaW50IGFyZzg5NSxpbnQgYXJnODk2LGludCBh
cmc4OTcsaW50IGFyZzg5OCxpbnQgYXJnODk5LGludCBhcmc5MDAsaW50IGFyZzkwMSxpbnQgYXJn
OTAyLGludCBhcmc5MDMsaW50IGFyZzkwNCxpbnQgYXJnOTA1LGludCBhcmc5MDYsaW50IGFyZzkw
NyxpbnQgYXJnOTA4LGludCBhcmc5MDksaW50IGFyZzkxMCxpbnQgYXJnOTExLGludCBhcmc5MTIs
aW50IGFyZzkxMyxpbnQgYXJnOTE0LGludCBhcmc5MTUsaW50IGFyZzkxNixpbnQgYXJnOTE3LGlu
dCBhcmc5MTgsaW50IGFyZzkxOSxpbnQgYXJnOTIwLGludCBhcmc5MjEsaW50IGFyZzkyMixpbnQg
YXJnOTIzLGludCBhcmc5MjQsaW50IGFyZzkyNSxpbnQgYXJnOTI2LGludCBhcmc5MjcsaW50IGFy
ZzkyOCxpbnQgYXJnOTI5LGludCBhcmc5MzAsaW50IGFyZzkzMSxpbnQgYXJnOTMyLGludCBhcmc5
MzMsaW50IGFyZzkzNCxpbnQgYXJnOTM1LGludCBhcmc5MzYsaW50IGFyZzkzNyxpbnQgYXJnOTM4
LGludCBhcmc5MzksaW50IGFyZzk0MCxpbnQgYXJnOTQxLGludCBhcmc5NDIsaW50IGFyZzk0Myxp
bnQgYXJnOTQ0LGludCBhcmc5NDUsaW50IGFyZzk0NixpbnQgYXJnOTQ3LGludCBhcmc5NDgsaW50
IGFyZzk0OSxpbnQgYXJnOTUwLGludCBhcmc5NTEsaW50IGFyZzk1MixpbnQgYXJnOTUzLGludCBh
cmc5NTQsaW50IGFyZzk1NSxpbnQgYXJnOTU2LGludCBhcmc5NTcsaW50IGFyZzk1OCxpbnQgYXJn
OTU5LGludCBhcmc5NjAsaW50IGFyZzk2MSxpbnQgYXJnOTYyLGludCBhcmc5NjMsaW50IGFyZzk2
NCxpbnQgYXJnOTY1LGludCBhcmc5NjYsaW50IGFyZzk2NyxpbnQgYXJnOTY4LGludCBhcmc5Njks
aW50IGFyZzk3MCxpbnQgYXJnOTcxLGludCBhcmc5NzIsaW50IGFyZzk3MyxpbnQgYXJnOTc0LGlu
dCBhcmc5NzUsaW50IGFyZzk3NixpbnQgYXJnOTc3LGludCBhcmc5NzgsaW50IGFyZzk3OSxpbnQg
YXJnOTgwLGludCBhcmc5ODEsaW50IGFyZzk4MixpbnQgYXJnOTgzLGludCBhcmc5ODQsaW50IGFy
Zzk4NSxpbnQgYXJnOTg2LGludCBhcmc5ODcsaW50IGFyZzk4OCxpbnQgYXJnOTg5LGludCBhcmc5
OTAsaW50IGFyZzk5MSxpbnQgYXJnOTkyLGludCBhcmc5OTMsaW50IGFyZzk5NCxpbnQgYXJnOTk1
LGludCBhcmc5OTYsaW50IGFyZzk5NyxpbnQgYXJnOTk4LGludCBhcmc5OTksaW50IGFyZzEwMDAs
aW50IGFyZzEwMDEsaW50IGFyZzEwMDIsaW50IGFyZzEwMDMsaW50IGFyZzEwMDQsaW50IGFyZzEw
MDUsaW50IGFyZzEwMDYsaW50IGFyZzEwMDcsaW50IGFyZzEwMDgsaW50IGFyZzEwMDksaW50IGFy
ZzEwMTAsaW50IGFyZzEwMTEsaW50IGFyZzEwMTIsaW50IGFyZzEwMTMsaW50IGFyZzEwMTQsaW50
IGFyZzEwMTUsaW50IGFyZzEwMTYsaW50IGFyZzEwMTcsaW50IGFyZzEwMTgsaW50IGFyZzEwMTks
aW50IGFyZzEwMjAsaW50IGFyZzEwMjEsaW50IGFyZzEwMjIsaW50IGFyZzEwMjMsaW50IGFyZzEw
MjQsaW50IGFyZzEwMjUsaW50IGFyZzEwMjYsaW50IGFyZzEwMjcsaW50IGFyZzEwMjgsaW50IGFy
ZzEwMjksaW50IGFyZzEwMzAsaW50IGFyZzEwMzEsaW50IGFyZzEwMzIsaW50IGFyZzEwMzMsaW50
IGFyZzEwMzQsaW50IGFyZzEwMzUsaW50IGFyZzEwMzYsaW50IGFyZzEwMzcsaW50IGFyZzEwMzgs
aW50IGFyZzEwMzksaW50IGFyZzEwNDAsaW50IGFyZzEwNDEsaW50IGFyZzEwNDIsaW50IGFyZzEw
NDMsaW50IGFyZzEwNDQsaW50IGFyZzEwNDUsaW50IGFyZzEwNDYsaW50IGFyZzEwNDcsaW50IGFy
ZzEwNDgsaW50IGFyZzEwNDksaW50IGFyZzEwNTAsaW50IGFyZzEwNTEsaW50IGFyZzEwNTIsaW50
IGFyZzEwNTMsaW50IGFyZzEwNTQsaW50IGFyZzEwNTUsaW50IGFyZzEwNTYsaW50IGFyZzEwNTcs
aW50IGFyZzEwNTgsaW50IGFyZzEwNTksaW50IGFyZzEwNjAsaW50IGFyZzEwNjEsaW50IGFyZzEw
NjIsaW50IGFyZzEwNjMsaW50IGFyZzEwNjQsaW50IGFyZzEwNjUsaW50IGFyZzEwNjYsaW50IGFy
ZzEwNjcsaW50IGFyZzEwNjgsaW50IGFyZzEwNjksaW50IGFyZzEwNzAsaW50IGFyZzEwNzEsaW50
IGFyZzEwNzIsaW50IGFyZzEwNzMsaW50IGFyZzEwNzQsaW50IGFyZzEwNzUsaW50IGFyZzEwNzYs
aW50IGFyZzEwNzcsaW50IGFyZzEwNzgsaW50IGFyZzEwNzksaW50IGFyZzEwODAsaW50IGFyZzEw
ODEsaW50IGFyZzEwODIsaW50IGFyZzEwODMsaW50IGFyZzEwODQsaW50IGFyZzEwODUsaW50IGFy
ZzEwODYsaW50IGFyZzEwODcsaW50IGFyZzEwODgsaW50IGFyZzEwODksaW50IGFyZzEwOTAsaW50
IGFyZzEwOTEsaW50IGFyZzEwOTIsaW50IGFyZzEwOTMsaW50IGFyZzEwOTQsaW50IGFyZzEwOTUs
aW50IGFyZzEwOTYsaW50IGFyZzEwOTcsaW50IGFyZzEwOTgsaW50IGFyZzEwOTksaW50IGFyZzEx
MDAsaW50IGFyZzExMDEsaW50IGFyZzExMDIsaW50IGFyZzExMDMsaW50IGFyZzExMDQsaW50IGFy
ZzExMDUsaW50IGFyZzExMDYsaW50IGFyZzExMDcsaW50IGFyZzExMDgsaW50IGFyZzExMDksaW50
IGFyZzExMTAsaW50IGFyZzExMTEsaW50IGFyZzExMTIsaW50IGFyZzExMTMsaW50IGFyZzExMTQs
aW50IGFyZzExMTUsaW50IGFyZzExMTYsaW50IGFyZzExMTcsaW50IGFyZzExMTgsaW50IGFyZzEx
MTksaW50IGFyZzExMjAsaW50IGFyZzExMjEsaW50IGFyZzExMjIsaW50IGFyZzExMjMsaW50IGFy
ZzExMjQsaW50IGFyZzExMjUsaW50IGFyZzExMjYsaW50IGFyZzExMjcsaW50IGFyZzExMjgsaW50
IGFyZzExMjksaW50IGFyZzExMzAsaW50IGFyZzExMzEsaW50IGFyZzExMzIsaW50IGFyZzExMzMs
aW50IGFyZzExMzQsaW50IGFyZzExMzUsaW50IGFyZzExMzYsaW50IGFyZzExMzcsaW50IGFyZzEx
MzgsaW50IGFyZzExMzksaW50IGFyZzExNDAsaW50IGFyZzExNDEsaW50IGFyZzExNDIsaW50IGFy
ZzExNDMsaW50IGFyZzExNDQsaW50IGFyZzExNDUsaW50IGFyZzExNDYsaW50IGFyZzExNDcsaW50
IGFyZzExNDgsaW50IGFyZzExNDksaW50IGFyZzExNTAsaW50IGFyZzExNTEsaW50IGFyZzExNTIs
aW50IGFyZzExNTMsaW50IGFyZzExNTQsaW50IGFyZzExNTUsaW50IGFyZzExNTYsaW50IGFyZzEx
NTcsaW50IGFyZzExNTgsaW50IGFyZzExNTksaW50IGFyZzExNjAsaW50IGFyZzExNjEsaW50IGFy
ZzExNjIsaW50IGFyZzExNjMsaW50IGFyZzExNjQsaW50IGFyZzExNjUsaW50IGFyZzExNjYsaW50
IGFyZzExNjcsaW50IGFyZzExNjgsaW50IGFyZzExNjksaW50IGFyZzExNzAsaW50IGFyZzExNzEs
aW50IGFyZzExNzIsaW50IGFyZzExNzMsaW50IGFyZzExNzQsaW50IGFyZzExNzUsaW50IGFyZzEx
NzYsaW50IGFyZzExNzcsaW50IGFyZzExNzgsaW50IGFyZzExNzksaW50IGFyZzExODAsaW50IGFy
ZzExODEsaW50IGFyZzExODIsaW50IGFyZzExODMsaW50IGFyZzExODQsaW50IGFyZzExODUsaW50
IGFyZzExODYsaW50IGFyZzExODcsaW50IGFyZzExODgsaW50IGFyZzExODksaW50IGFyZzExOTAs
aW50IGFyZzExOTEsaW50IGFyZzExOTIsaW50IGFyZzExOTMsaW50IGFyZzExOTQsaW50IGFyZzEx
OTUsaW50IGFyZzExOTYsaW50IGFyZzExOTcsaW50IGFyZzExOTgsaW50IGFyZzExOTksaW50IGFy
ZzEyMDAsaW50IGFyZzEyMDEsaW50IGFyZzEyMDIsaW50IGFyZzEyMDMsaW50IGFyZzEyMDQsaW50
IGFyZzEyMDUsaW50IGFyZzEyMDYsaW50IGFyZzEyMDcsaW50IGFyZzEyMDgsaW50IGFyZzEyMDks
aW50IGFyZzEyMTAsaW50IGFyZzEyMTEsaW50IGFyZzEyMTIsaW50IGFyZzEyMTMsaW50IGFyZzEy
MTQsaW50IGFyZzEyMTUsaW50IGFyZzEyMTYsaW50IGFyZzEyMTcsaW50IGFyZzEyMTgsaW50IGFy
ZzEyMTksaW50IGFyZzEyMjAsaW50IGFyZzEyMjEsaW50IGFyZzEyMjIsaW50IGFyZzEyMjMsaW50
IGFyZzEyMjQsaW50IGFyZzEyMjUsaW50IGFyZzEyMjYsaW50IGFyZzEyMjcsaW50IGFyZzEyMjgs
aW50IGFyZzEyMjksaW50IGFyZzEyMzAsaW50IGFyZzEyMzEsaW50IGFyZzEyMzIsaW50IGFyZzEy
MzMsaW50IGFyZzEyMzQsaW50IGFyZzEyMzUsaW50IGFyZzEyMzYsaW50IGFyZzEyMzcsaW50IGFy
ZzEyMzgsaW50IGFyZzEyMzksaW50IGFyZzEyNDAsaW50IGFyZzEyNDEsaW50IGFyZzEyNDIsaW50
IGFyZzEyNDMsaW50IGFyZzEyNDQsaW50IGFyZzEyNDUsaW50IGFyZzEyNDYsaW50IGFyZzEyNDcs
aW50IGFyZzEyNDgsaW50IGFyZzEyNDksaW50IGFyZzEyNTAsaW50IGFyZzEyNTEsaW50IGFyZzEy
NTIsaW50IGFyZzEyNTMsaW50IGFyZzEyNTQsaW50IGFyZzEyNTUsaW50IGFyZzEyNTYsaW50IGFy
ZzEyNTcsaW50IGFyZzEyNTgsaW50IGFyZzEyNTksaW50IGFyZzEyNjAsaW50IGFyZzEyNjEsaW50
IGFyZzEyNjIsaW50IGFyZzEyNjMsaW50IGFyZzEyNjQsaW50IGFyZzEyNjUsaW50IGFyZzEyNjYs
aW50IGFyZzEyNjcsaW50IGFyZzEyNjgsaW50IGFyZzEyNjksaW50IGFyZzEyNzAsaW50IGFyZzEy
NzEsaW50IGFyZzEyNzIsaW50IGFyZzEyNzMsaW50IGFyZzEyNzQsaW50IGFyZzEyNzUsaW50IGFy
ZzEyNzYsaW50IGFyZzEyNzcsaW50IGFyZzEyNzgsaW50IGFyZzEyNzksaW50IGFyZzEyODAsaW50
IGFyZzEyODEsaW50IGFyZzEyODIsaW50IGFyZzEyODMsaW50IGFyZzEyODQsaW50IGFyZzEyODUs
aW50IGFyZzEyODYsaW50IGFyZzEyODcsaW50IGFyZzEyODgsaW50IGFyZzEyODksaW50IGFyZzEy
OTAsaW50IGFyZzEyOTEsaW50IGFyZzEyOTIsaW50IGFyZzEyOTMsaW50IGFyZzEyOTQsaW50IGFy
ZzEyOTUsaW50IGFyZzEyOTYsaW50IGFyZzEyOTcsaW50IGFyZzEyOTgsaW50IGFyZzEyOTksaW50
IGFyZzEzMDAsaW50IGFyZzEzMDEsaW50IGFyZzEzMDIsaW50IGFyZzEzMDMsaW50IGFyZzEzMDQs
aW50IGFyZzEzMDUsaW50IGFyZzEzMDYsaW50IGFyZzEzMDcsaW50IGFyZzEzMDgsaW50IGFyZzEz
MDksaW50IGFyZzEzMTAsaW50IGFyZzEzMTEsaW50IGFyZzEzMTIsaW50IGFyZzEzMTMsaW50IGFy
ZzEzMTQsaW50IGFyZzEzMTUsaW50IGFyZzEzMTYsaW50IGFyZzEzMTcsaW50IGFyZzEzMTgsaW50
IGFyZzEzMTksaW50IGFyZzEzMjAsaW50IGFyZzEzMjEsaW50IGFyZzEzMjIsaW50IGFyZzEzMjMs
aW50IGFyZzEzMjQsaW50IGFyZzEzMjUsaW50IGFyZzEzMjYsaW50IGFyZzEzMjcsaW50IGFyZzEz
MjgsaW50IGFyZzEzMjksaW50IGFyZzEzMzAsaW50IGFyZzEzMzEsaW50IGFyZzEzMzIsaW50IGFy
ZzEzMzMsaW50IGFyZzEzMzQsaW50IGFyZzEzMzUsaW50IGFyZzEzMzYsaW50IGFyZzEzMzcsaW50
IGFyZzEzMzgsaW50IGFyZzEzMzksaW50IGFyZzEzNDAsaW50IGFyZzEzNDEsaW50IGFyZzEzNDIs
aW50IGFyZzEzNDMsaW50IGFyZzEzNDQsaW50IGFyZzEzNDUsaW50IGFyZzEzNDYsaW50IGFyZzEz
NDcsaW50IGFyZzEzNDgsaW50IGFyZzEzNDksaW50IGFyZzEzNTAsaW50IGFyZzEzNTEsaW50IGFy
ZzEzNTIsaW50IGFyZzEzNTMsaW50IGFyZzEzNTQsaW50IGFyZzEzNTUsaW50IGFyZzEzNTYsaW50
IGFyZzEzNTcsaW50IGFyZzEzNTgsaW50IGFyZzEzNTksaW50IGFyZzEzNjAsaW50IGFyZzEzNjEs
aW50IGFyZzEzNjIsaW50IGFyZzEzNjMsaW50IGFyZzEzNjQsaW50IGFyZzEzNjUsaW50IGFyZzEz
NjYsaW50IGFyZzEzNjcsaW50IGFyZzEzNjgsaW50IGFyZzEzNjksaW50IGFyZzEzNzAsaW50IGFy
ZzEzNzEsaW50IGFyZzEzNzIsaW50IGFyZzEzNzMsaW50IGFyZzEzNzQsaW50IGFyZzEzNzUsaW50
IGFyZzEzNzYsaW50IGFyZzEzNzcsaW50IGFyZzEzNzgsaW50IGFyZzEzNzksaW50IGFyZzEzODAs
aW50IGFyZzEzODEsaW50IGFyZzEzODIsaW50IGFyZzEzODMsaW50IGFyZzEzODQsaW50IGFyZzEz
ODUsaW50IGFyZzEzODYsaW50IGFyZzEzODcsaW50IGFyZzEzODgsaW50IGFyZzEzODksaW50IGFy
ZzEzOTAsaW50IGFyZzEzOTEsaW50IGFyZzEzOTIsaW50IGFyZzEzOTMsaW50IGFyZzEzOTQsaW50
IGFyZzEzOTUsaW50IGFyZzEzOTYsaW50IGFyZzEzOTcsaW50IGFyZzEzOTgsaW50IGFyZzEzOTks
aW50IGFyZzE0MDAsaW50IGFyZzE0MDEsaW50IGFyZzE0MDIsaW50IGFyZzE0MDMsaW50IGFyZzE0
MDQsaW50IGFyZzE0MDUsaW50IGFyZzE0MDYsaW50IGFyZzE0MDcsaW50IGFyZzE0MDgsaW50IGFy
ZzE0MDksaW50IGFyZzE0MTAsaW50IGFyZzE0MTEsaW50IGFyZzE0MTIsaW50IGFyZzE0MTMsaW50
IGFyZzE0MTQsaW50IGFyZzE0MTUsaW50IGFyZzE0MTYsaW50IGFyZzE0MTcsaW50IGFyZzE0MTgs
aW50IGFyZzE0MTksaW50IGFyZzE0MjAsaW50IGFyZzE0MjEsaW50IGFyZzE0MjIsaW50IGFyZzE0
MjMsaW50IGFyZzE0MjQsaW50IGFyZzE0MjUsaW50IGFyZzE0MjYsaW50IGFyZzE0MjcsaW50IGFy
ZzE0MjgsaW50IGFyZzE0MjksaW50IGFyZzE0MzAsaW50IGFyZzE0MzEsaW50IGFyZzE0MzIsaW50
IGFyZzE0MzMsaW50IGFyZzE0MzQsaW50IGFyZzE0MzUsaW50IGFyZzE0MzYsaW50IGFyZzE0Mzcs
aW50IGFyZzE0MzgsaW50IGFyZzE0MzksaW50IGFyZzE0NDAsaW50IGFyZzE0NDEsaW50IGFyZzE0
NDIsaW50IGFyZzE0NDMsaW50IGFyZzE0NDQsaW50IGFyZzE0NDUsaW50IGFyZzE0NDYsaW50IGFy
ZzE0NDcsaW50IGFyZzE0NDgsaW50IGFyZzE0NDksaW50IGFyZzE0NTAsaW50IGFyZzE0NTEsaW50
IGFyZzE0NTIsaW50IGFyZzE0NTMsaW50IGFyZzE0NTQsaW50IGFyZzE0NTUsaW50IGFyZzE0NTYs
aW50IGFyZzE0NTcsaW50IGFyZzE0NTgsaW50IGFyZzE0NTksaW50IGFyZzE0NjAsaW50IGFyZzE0
NjEsaW50IGFyZzE0NjIsaW50IGFyZzE0NjMsaW50IGFyZzE0NjQsaW50IGFyZzE0NjUsaW50IGFy
ZzE0NjYsaW50IGFyZzE0NjcsaW50IGFyZzE0NjgsaW50IGFyZzE0NjksaW50IGFyZzE0NzAsaW50
IGFyZzE0NzEsaW50IGFyZzE0NzIsaW50IGFyZzE0NzMsaW50IGFyZzE0NzQsaW50IGFyZzE0NzUs
aW50IGFyZzE0NzYsaW50IGFyZzE0NzcsaW50IGFyZzE0NzgsaW50IGFyZzE0NzksaW50IGFyZzE0
ODAsaW50IGFyZzE0ODEsaW50IGFyZzE0ODIsaW50IGFyZzE0ODMsaW50IGFyZzE0ODQsaW50IGFy
ZzE0ODUsaW50IGFyZzE0ODYsaW50IGFyZzE0ODcsaW50IGFyZzE0ODgsaW50IGFyZzE0ODksaW50
IGFyZzE0OTAsaW50IGFyZzE0OTEsaW50IGFyZzE0OTIsaW50IGFyZzE0OTMsaW50IGFyZzE0OTQs
aW50IGFyZzE0OTUsaW50IGFyZzE0OTYsaW50IGFyZzE0OTcsaW50IGFyZzE0OTgsaW50IGFyZzE0
OTksaW50IGFyZzE1MDAsaW50IGFyZzE1MDEsaW50IGFyZzE1MDIsaW50IGFyZzE1MDMsaW50IGFy
ZzE1MDQsaW50IGFyZzE1MDUsaW50IGFyZzE1MDYsaW50IGFyZzE1MDcsaW50IGFyZzE1MDgsaW50
IGFyZzE1MDksaW50IGFyZzE1MTAsaW50IGFyZzE1MTEsaW50IGFyZzE1MTIsaW50IGFyZzE1MTMs
aW50IGFyZzE1MTQsaW50IGFyZzE1MTUsaW50IGFyZzE1MTYsaW50IGFyZzE1MTcsaW50IGFyZzE1
MTgsaW50IGFyZzE1MTksaW50IGFyZzE1MjAsaW50IGFyZzE1MjEsaW50IGFyZzE1MjIsaW50IGFy
ZzE1MjMsaW50IGFyZzE1MjQsaW50IGFyZzE1MjUsaW50IGFyZzE1MjYsaW50IGFyZzE1MjcsaW50
IGFyZzE1MjgsaW50IGFyZzE1MjksaW50IGFyZzE1MzAsaW50IGFyZzE1MzEsaW50IGFyZzE1MzIs
aW50IGFyZzE1MzMsaW50IGFyZzE1MzQsaW50IGFyZzE1MzUsaW50IGFyZzE1MzYsaW50IGFyZzE1
MzcsaW50IGFyZzE1MzgsaW50IGFyZzE1MzksaW50IGFyZzE1NDAsaW50IGFyZzE1NDEsaW50IGFy
ZzE1NDIsaW50IGFyZzE1NDMsaW50IGFyZzE1NDQsaW50IGFyZzE1NDUsaW50IGFyZzE1NDYsaW50
IGFyZzE1NDcsaW50IGFyZzE1NDgsaW50IGFyZzE1NDksaW50IGFyZzE1NTAsaW50IGFyZzE1NTEs
aW50IGFyZzE1NTIsaW50IGFyZzE1NTMsaW50IGFyZzE1NTQsaW50IGFyZzE1NTUsaW50IGFyZzE1
NTYsaW50IGFyZzE1NTcsaW50IGFyZzE1NTgsaW50IGFyZzE1NTksaW50IGFyZzE1NjAsaW50IGFy
ZzE1NjEsaW50IGFyZzE1NjIsaW50IGFyZzE1NjMsaW50IGFyZzE1NjQsaW50IGFyZzE1NjUsaW50
IGFyZzE1NjYsaW50IGFyZzE1NjcsaW50IGFyZzE1NjgsaW50IGFyZzE1NjksaW50IGFyZzE1NzAs
aW50IGFyZzE1NzEsaW50IGFyZzE1NzIsaW50IGFyZzE1NzMsaW50IGFyZzE1NzQsaW50IGFyZzE1
NzUsaW50IGFyZzE1NzYsaW50IGFyZzE1NzcsaW50IGFyZzE1NzgsaW50IGFyZzE1NzksaW50IGFy
ZzE1ODAsaW50IGFyZzE1ODEsaW50IGFyZzE1ODIsaW50IGFyZzE1ODMsaW50IGFyZzE1ODQsaW50
IGFyZzE1ODUsaW50IGFyZzE1ODYsaW50IGFyZzE1ODcsaW50IGFyZzE1ODgsaW50IGFyZzE1ODks
aW50IGFyZzE1OTAsaW50IGFyZzE1OTEsaW50IGFyZzE1OTIsaW50IGFyZzE1OTMsaW50IGFyZzE1
OTQsaW50IGFyZzE1OTUsaW50IGFyZzE1OTYsaW50IGFyZzE1OTcsaW50IGFyZzE1OTgsaW50IGFy
ZzE1OTksaW50IGFyZzE2MDAsaW50IGFyZzE2MDEsaW50IGFyZzE2MDIsaW50IGFyZzE2MDMsaW50
IGFyZzE2MDQsaW50IGFyZzE2MDUsaW50IGFyZzE2MDYsaW50IGFyZzE2MDcsaW50IGFyZzE2MDgs
aW50IGFyZzE2MDksaW50IGFyZzE2MTAsaW50IGFyZzE2MTEsaW50IGFyZzE2MTIsaW50IGFyZzE2
MTMsaW50IGFyZzE2MTQsaW50IGFyZzE2MTUsaW50IGFyZzE2MTYsaW50IGFyZzE2MTcsaW50IGFy
ZzE2MTgsaW50IGFyZzE2MTksaW50IGFyZzE2MjAsaW50IGFyZzE2MjEsaW50IGFyZzE2MjIsaW50
IGFyZzE2MjMsaW50IGFyZzE2MjQsaW50IGFyZzE2MjUsaW50IGFyZzE2MjYsaW50IGFyZzE2Mjcs
aW50IGFyZzE2MjgsaW50IGFyZzE2MjksaW50IGFyZzE2MzAsaW50IGFyZzE2MzEsaW50IGFyZzE2
MzIsaW50IGFyZzE2MzMsaW50IGFyZzE2MzQsaW50IGFyZzE2MzUsaW50IGFyZzE2MzYsaW50IGFy
ZzE2MzcsaW50IGFyZzE2MzgsaW50IGFyZzE2MzksaW50IGFyZzE2NDAsaW50IGFyZzE2NDEsaW50
IGFyZzE2NDIsaW50IGFyZzE2NDMsaW50IGFyZzE2NDQsaW50IGFyZzE2NDUsaW50IGFyZzE2NDYs
aW50IGFyZzE2NDcsaW50IGFyZzE2NDgsaW50IGFyZzE2NDksaW50IGFyZzE2NTAsaW50IGFyZzE2
NTEsaW50IGFyZzE2NTIsaW50IGFyZzE2NTMsaW50IGFyZzE2NTQsaW50IGFyZzE2NTUsaW50IGFy
ZzE2NTYsaW50IGFyZzE2NTcsaW50IGFyZzE2NTgsaW50IGFyZzE2NTksaW50IGFyZzE2NjAsaW50
IGFyZzE2NjEsaW50IGFyZzE2NjIsaW50IGFyZzE2NjMsaW50IGFyZzE2NjQsaW50IGFyZzE2NjUs
aW50IGFyZzE2NjYsaW50IGFyZzE2NjcsaW50IGFyZzE2NjgsaW50IGFyZzE2NjksaW50IGFyZzE2
NzAsaW50IGFyZzE2NzEsaW50IGFyZzE2NzIsaW50IGFyZzE2NzMsaW50IGFyZzE2NzQsaW50IGFy
ZzE2NzUsaW50IGFyZzE2NzYsaW50IGFyZzE2NzcsaW50IGFyZzE2NzgsaW50IGFyZzE2NzksaW50
IGFyZzE2ODAsaW50IGFyZzE2ODEsaW50IGFyZzE2ODIsaW50IGFyZzE2ODMsaW50IGFyZzE2ODQs
aW50IGFyZzE2ODUsaW50IGFyZzE2ODYsaW50IGFyZzE2ODcsaW50IGFyZzE2ODgsaW50IGFyZzE2
ODksaW50IGFyZzE2OTAsaW50IGFyZzE2OTEsaW50IGFyZzE2OTIsaW50IGFyZzE2OTMsaW50IGFy
ZzE2OTQsaW50IGFyZzE2OTUsaW50IGFyZzE2OTYsaW50IGFyZzE2OTcsaW50IGFyZzE2OTgsaW50
IGFyZzE2OTksaW50IGFyZzE3MDAsaW50IGFyZzE3MDEsaW50IGFyZzE3MDIsaW50IGFyZzE3MDMs
aW50IGFyZzE3MDQsaW50IGFyZzE3MDUsaW50IGFyZzE3MDYsaW50IGFyZzE3MDcsaW50IGFyZzE3
MDgsaW50IGFyZzE3MDksaW50IGFyZzE3MTAsaW50IGFyZzE3MTEsaW50IGFyZzE3MTIsaW50IGFy
ZzE3MTMsaW50IGFyZzE3MTQsaW50IGFyZzE3MTUsaW50IGFyZzE3MTYsaW50IGFyZzE3MTcsaW50
IGFyZzE3MTgsaW50IGFyZzE3MTksaW50IGFyZzE3MjAsaW50IGFyZzE3MjEsaW50IGFyZzE3MjIs
aW50IGFyZzE3MjMsaW50IGFyZzE3MjQsaW50IGFyZzE3MjUsaW50IGFyZzE3MjYsaW50IGFyZzE3
MjcsaW50IGFyZzE3MjgsaW50IGFyZzE3MjksaW50IGFyZzE3MzAsaW50IGFyZzE3MzEsaW50IGFy
ZzE3MzIsaW50IGFyZzE3MzMsaW50IGFyZzE3MzQsaW50IGFyZzE3MzUsaW50IGFyZzE3MzYsaW50
IGFyZzE3MzcsaW50IGFyZzE3MzgsaW50IGFyZzE3MzksaW50IGFyZzE3NDAsaW50IGFyZzE3NDEs
aW50IGFyZzE3NDIsaW50IGFyZzE3NDMsaW50IGFyZzE3NDQsaW50IGFyZzE3NDUsaW50IGFyZzE3
NDYsaW50IGFyZzE3NDcsaW50IGFyZzE3NDgsaW50IGFyZzE3NDksaW50IGFyZzE3NTAsaW50IGFy
ZzE3NTEsaW50IGFyZzE3NTIsaW50IGFyZzE3NTMsaW50IGFyZzE3NTQsaW50IGFyZzE3NTUsaW50
IGFyZzE3NTYsaW50IGFyZzE3NTcsaW50IGFyZzE3NTgsaW50IGFyZzE3NTksaW50IGFyZzE3NjAs
aW50IGFyZzE3NjEsaW50IGFyZzE3NjIsaW50IGFyZzE3NjMsaW50IGFyZzE3NjQsaW50IGFyZzE3
NjUsaW50IGFyZzE3NjYsaW50IGFyZzE3NjcsaW50IGFyZzE3NjgsaW50IGFyZzE3NjksaW50IGFy
ZzE3NzAsaW50IGFyZzE3NzEsaW50IGFyZzE3NzIsaW50IGFyZzE3NzMsaW50IGFyZzE3NzQsaW50
IGFyZzE3NzUsaW50IGFyZzE3NzYsaW50IGFyZzE3NzcsaW50IGFyZzE3NzgsaW50IGFyZzE3Nzks
aW50IGFyZzE3ODAsaW50IGFyZzE3ODEsaW50IGFyZzE3ODIsaW50IGFyZzE3ODMsaW50IGFyZzE3
ODQsaW50IGFyZzE3ODUsaW50IGFyZzE3ODYsaW50IGFyZzE3ODcsaW50IGFyZzE3ODgsaW50IGFy
ZzE3ODksaW50IGFyZzE3OTAsaW50IGFyZzE3OTEsaW50IGFyZzE3OTIsaW50IGFyZzE3OTMsaW50
IGFyZzE3OTQsaW50IGFyZzE3OTUsaW50IGFyZzE3OTYsaW50IGFyZzE3OTcsaW50IGFyZzE3OTgs
aW50IGFyZzE3OTksaW50IGFyZzE4MDAsaW50IGFyZzE4MDEsaW50IGFyZzE4MDIsaW50IGFyZzE4
MDMsaW50IGFyZzE4MDQsaW50IGFyZzE4MDUsaW50IGFyZzE4MDYsaW50IGFyZzE4MDcsaW50IGFy
ZzE4MDgsaW50IGFyZzE4MDksaW50IGFyZzE4MTAsaW50IGFyZzE4MTEsaW50IGFyZzE4MTIsaW50
IGFyZzE4MTMsaW50IGFyZzE4MTQsaW50IGFyZzE4MTUsaW50IGFyZzE4MTYsaW50IGFyZzE4MTcs
aW50IGFyZzE4MTgsaW50IGFyZzE4MTksaW50IGFyZzE4MjAsaW50IGFyZzE4MjEsaW50IGFyZzE4
MjIsaW50IGFyZzE4MjMsaW50IGFyZzE4MjQsaW50IGFyZzE4MjUsaW50IGFyZzE4MjYsaW50IGFy
ZzE4MjcsaW50IGFyZzE4MjgsaW50IGFyZzE4MjksaW50IGFyZzE4MzAsaW50IGFyZzE4MzEsaW50
IGFyZzE4MzIsaW50IGFyZzE4MzMsaW50IGFyZzE4MzQsaW50IGFyZzE4MzUsaW50IGFyZzE4MzYs
aW50IGFyZzE4MzcsaW50IGFyZzE4MzgsaW50IGFyZzE4MzksaW50IGFyZzE4NDAsaW50IGFyZzE4
NDEsaW50IGFyZzE4NDIsaW50IGFyZzE4NDMsaW50IGFyZzE4NDQsaW50IGFyZzE4NDUsaW50IGFy
ZzE4NDYsaW50IGFyZzE4NDcsaW50IGFyZzE4NDgsaW50IGFyZzE4NDksaW50IGFyZzE4NTAsaW50
IGFyZzE4NTEsaW50IGFyZzE4NTIsaW50IGFyZzE4NTMsaW50IGFyZzE4NTQsaW50IGFyZzE4NTUs
aW50IGFyZzE4NTYsaW50IGFyZzE4NTcsaW50IGFyZzE4NTgsaW50IGFyZzE4NTksaW50IGFyZzE4
NjAsaW50IGFyZzE4NjEsaW50IGFyZzE4NjIsaW50IGFyZzE4NjMsaW50IGFyZzE4NjQsaW50IGFy
ZzE4NjUsaW50IGFyZzE4NjYsaW50IGFyZzE4NjcsaW50IGFyZzE4NjgsaW50IGFyZzE4NjksaW50
IGFyZzE4NzAsaW50IGFyZzE4NzEsaW50IGFyZzE4NzIsaW50IGFyZzE4NzMsaW50IGFyZzE4NzQs
aW50IGFyZzE4NzUsaW50IGFyZzE4NzYsaW50IGFyZzE4NzcsaW50IGFyZzE4NzgsaW50IGFyZzE4
NzksaW50IGFyZzE4ODAsaW50IGFyZzE4ODEsaW50IGFyZzE4ODIsaW50IGFyZzE4ODMsaW50IGFy
ZzE4ODQsaW50IGFyZzE4ODUsaW50IGFyZzE4ODYsaW50IGFyZzE4ODcsaW50IGFyZzE4ODgsaW50
IGFyZzE4ODksaW50IGFyZzE4OTAsaW50IGFyZzE4OTEsaW50IGFyZzE4OTIsaW50IGFyZzE4OTMs
aW50IGFyZzE4OTQsaW50IGFyZzE4OTUsaW50IGFyZzE4OTYsaW50IGFyZzE4OTcsaW50IGFyZzE4
OTgsaW50IGFyZzE4OTksaW50IGFyZzE5MDAsaW50IGFyZzE5MDEsaW50IGFyZzE5MDIsaW50IGFy
ZzE5MDMsaW50IGFyZzE5MDQsaW50IGFyZzE5MDUsaW50IGFyZzE5MDYsaW50IGFyZzE5MDcsaW50
IGFyZzE5MDgsaW50IGFyZzE5MDksaW50IGFyZzE5MTAsaW50IGFyZzE5MTEsaW50IGFyZzE5MTIs
aW50IGFyZzE5MTMsaW50IGFyZzE5MTQsaW50IGFyZzE5MTUsaW50IGFyZzE5MTYsaW50IGFyZzE5
MTcsaW50IGFyZzE5MTgsaW50IGFyZzE5MTksaW50IGFyZzE5MjAsaW50IGFyZzE5MjEsaW50IGFy
ZzE5MjIsaW50IGFyZzE5MjMsaW50IGFyZzE5MjQsaW50IGFyZzE5MjUsaW50IGFyZzE5MjYsaW50
IGFyZzE5MjcsaW50IGFyZzE5MjgsaW50IGFyZzE5MjksaW50IGFyZzE5MzAsaW50IGFyZzE5MzEs
aW50IGFyZzE5MzIsaW50IGFyZzE5MzMsaW50IGFyZzE5MzQsaW50IGFyZzE5MzUsaW50IGFyZzE5
MzYsaW50IGFyZzE5MzcsaW50IGFyZzE5MzgsaW50IGFyZzE5MzksaW50IGFyZzE5NDAsaW50IGFy
ZzE5NDEsaW50IGFyZzE5NDIsaW50IGFyZzE5NDMsaW50IGFyZzE5NDQsaW50IGFyZzE5NDUsaW50
IGFyZzE5NDYsaW50IGFyZzE5NDcsaW50IGFyZzE5NDgsaW50IGFyZzE5NDksaW50IGFyZzE5NTAs
aW50IGFyZzE5NTEsaW50IGFyZzE5NTIsaW50IGFyZzE5NTMsaW50IGFyZzE5NTQsaW50IGFyZzE5
NTUsaW50IGFyZzE5NTYsaW50IGFyZzE5NTcsaW50IGFyZzE5NTgsaW50IGFyZzE5NTksaW50IGFy
ZzE5NjAsaW50IGFyZzE5NjEsaW50IGFyZzE5NjIsaW50IGFyZzE5NjMsaW50IGFyZzE5NjQsaW50
IGFyZzE5NjUsaW50IGFyZzE5NjYsaW50IGFyZzE5NjcsaW50IGFyZzE5NjgsaW50IGFyZzE5Njks
aW50IGFyZzE5NzAsaW50IGFyZzE5NzEsaW50IGFyZzE5NzIsaW50IGFyZzE5NzMsaW50IGFyZzE5
NzQsaW50IGFyZzE5NzUsaW50IGFyZzE5NzYsaW50IGFyZzE5NzcsaW50IGFyZzE5NzgsaW50IGFy
ZzE5NzksaW50IGFyZzE5ODAsaW50IGFyZzE5ODEsaW50IGFyZzE5ODIsaW50IGFyZzE5ODMsaW50
IGFyZzE5ODQsaW50IGFyZzE5ODUsaW50IGFyZzE5ODYsaW50IGFyZzE5ODcsaW50IGFyZzE5ODgs
aW50IGFyZzE5ODksaW50IGFyZzE5OTAsaW50IGFyZzE5OTEsaW50IGFyZzE5OTIsaW50IGFyZzE5
OTMsaW50IGFyZzE5OTQsaW50IGFyZzE5OTUsaW50IGFyZzE5OTYsaW50IGFyZzE5OTcsaW50IGFy
ZzE5OTgsaW50IGFyZzE5OTksaW50IGFyZzIwMDAsaW50IGFyZzIwMDEsaW50IGFyZzIwMDIsaW50
IGFyZzIwMDMsaW50IGFyZzIwMDQsaW50IGFyZzIwMDUsaW50IGFyZzIwMDYsaW50IGFyZzIwMDcs
aW50IGFyZzIwMDgsaW50IGFyZzIwMDksaW50IGFyZzIwMTAsaW50IGFyZzIwMTEsaW50IGFyZzIw
MTIsaW50IGFyZzIwMTMsaW50IGFyZzIwMTQsaW50IGFyZzIwMTUsaW50IGFyZzIwMTYsaW50IGFy
ZzIwMTcsaW50IGFyZzIwMTgsaW50IGFyZzIwMTksaW50IGFyZzIwMjAsaW50IGFyZzIwMjEsaW50
IGFyZzIwMjIsaW50IGFyZzIwMjMsaW50IGFyZzIwMjQsaW50IGFyZzIwMjUsaW50IGFyZzIwMjYs
aW50IGFyZzIwMjcsaW50IGFyZzIwMjgsaW50IGFyZzIwMjksaW50IGFyZzIwMzAsaW50IGFyZzIw
MzEsaW50IGFyZzIwMzIsaW50IGFyZzIwMzMsaW50IGFyZzIwMzQsaW50IGFyZzIwMzUsaW50IGFy
ZzIwMzYsaW50IGFyZzIwMzcsaW50IGFyZzIwMzgsaW50IGFyZzIwMzksaW50IGFyZzIwNDAsaW50
IGFyZzIwNDEsaW50IGFyZzIwNDIsaW50IGFyZzIwNDMsaW50IGFyZzIwNDQsaW50IGFyZzIwNDUs
aW50IGFyZzIwNDYsaW50IGFyZzIwNDcsaW50IGFyZzIwNDgsaW50IGFyZzIwNDksaW50IGFyZzIw
NTAsaW50IGFyZzIwNTEsaW50IGFyZzIwNTIsaW50IGFyZzIwNTMsaW50IGFyZzIwNTQsaW50IGFy
ZzIwNTUsaW50IGFyZzIwNTYsaW50IGFyZzIwNTcsaW50IGFyZzIwNTgsaW50IGFyZzIwNTksaW50
IGFyZzIwNjAsaW50IGFyZzIwNjEsaW50IGFyZzIwNjIsaW50IGFyZzIwNjMsaW50IGFyZzIwNjQs
aW50IGFyZzIwNjUsaW50IGFyZzIwNjYsaW50IGFyZzIwNjcsaW50IGFyZzIwNjgsaW50IGFyZzIw
NjksaW50IGFyZzIwNzAsaW50IGFyZzIwNzEsaW50IGFyZzIwNzIsaW50IGFyZzIwNzMsaW50IGFy
ZzIwNzQsaW50IGFyZzIwNzUsaW50IGFyZzIwNzYsaW50IGFyZzIwNzcsaW50IGFyZzIwNzgsaW50
IGFyZzIwNzksaW50IGFyZzIwODAsaW50IGFyZzIwODEsaW50IGFyZzIwODIsaW50IGFyZzIwODMs
aW50IGFyZzIwODQsaW50IGFyZzIwODUsaW50IGFyZzIwODYsaW50IGFyZzIwODcsaW50IGFyZzIw
ODgsaW50IGFyZzIwODksaW50IGFyZzIwOTAsaW50IGFyZzIwOTEsaW50IGFyZzIwOTIsaW50IGFy
ZzIwOTMsaW50IGFyZzIwOTQsaW50IGFyZzIwOTUsaW50IGFyZzIwOTYsaW50IGFyZzIwOTcsaW50
IGFyZzIwOTgsaW50IGFyZzIwOTksaW50IGFyZzIxMDAsaW50IGFyZzIxMDEsaW50IGFyZzIxMDIs
aW50IGFyZzIxMDMsaW50IGFyZzIxMDQsaW50IGFyZzIxMDUsaW50IGFyZzIxMDYsaW50IGFyZzIx
MDcsaW50IGFyZzIxMDgsaW50IGFyZzIxMDksaW50IGFyZzIxMTAsaW50IGFyZzIxMTEsaW50IGFy
ZzIxMTIsaW50IGFyZzIxMTMsaW50IGFyZzIxMTQsaW50IGFyZzIxMTUsaW50IGFyZzIxMTYsaW50
IGFyZzIxMTcsaW50IGFyZzIxMTgsaW50IGFyZzIxMTksaW50IGFyZzIxMjAsaW50IGFyZzIxMjEs
aW50IGFyZzIxMjIsaW50IGFyZzIxMjMsaW50IGFyZzIxMjQsaW50IGFyZzIxMjUsaW50IGFyZzIx
MjYsaW50IGFyZzIxMjcsaW50IGFyZzIxMjgsaW50IGFyZzIxMjksaW50IGFyZzIxMzAsaW50IGFy
ZzIxMzEsaW50IGFyZzIxMzIsaW50IGFyZzIxMzMsaW50IGFyZzIxMzQsaW50IGFyZzIxMzUsaW50
IGFyZzIxMzYsaW50IGFyZzIxMzcsaW50IGFyZzIxMzgsaW50IGFyZzIxMzksaW50IGFyZzIxNDAs
aW50IGFyZzIxNDEsaW50IGFyZzIxNDIsaW50IGFyZzIxNDMsaW50IGFyZzIxNDQsaW50IGFyZzIx
NDUsaW50IGFyZzIxNDYsaW50IGFyZzIxNDcsaW50IGFyZzIxNDgsaW50IGFyZzIxNDksaW50IGFy
ZzIxNTAsaW50IGFyZzIxNTEsaW50IGFyZzIxNTIsaW50IGFyZzIxNTMsaW50IGFyZzIxNTQsaW50
IGFyZzIxNTUsaW50IGFyZzIxNTYsaW50IGFyZzIxNTcsaW50IGFyZzIxNTgsaW50IGFyZzIxNTks
aW50IGFyZzIxNjAsaW50IGFyZzIxNjEsaW50IGFyZzIxNjIsaW50IGFyZzIxNjMsaW50IGFyZzIx
NjQsaW50IGFyZzIxNjUsaW50IGFyZzIxNjYsaW50IGFyZzIxNjcsaW50IGFyZzIxNjgsaW50IGFy
ZzIxNjksaW50IGFyZzIxNzAsaW50IGFyZzIxNzEsaW50IGFyZzIxNzIsaW50IGFyZzIxNzMsaW50
IGFyZzIxNzQsaW50IGFyZzIxNzUsaW50IGFyZzIxNzYsaW50IGFyZzIxNzcsaW50IGFyZzIxNzgs
aW50IGFyZzIxNzksaW50IGFyZzIxODAsaW50IGFyZzIxODEsaW50IGFyZzIxODIsaW50IGFyZzIx
ODMsaW50IGFyZzIxODQsaW50IGFyZzIxODUsaW50IGFyZzIxODYsaW50IGFyZzIxODcsaW50IGFy
ZzIxODgsaW50IGFyZzIxODksaW50IGFyZzIxOTAsaW50IGFyZzIxOTEsaW50IGFyZzIxOTIsaW50
IGFyZzIxOTMsaW50IGFyZzIxOTQsaW50IGFyZzIxOTUsaW50IGFyZzIxOTYsaW50IGFyZzIxOTcs
aW50IGFyZzIxOTgsaW50IGFyZzIxOTksaW50IGFyZzIyMDAsaW50IGFyZzIyMDEsaW50IGFyZzIy
MDIsaW50IGFyZzIyMDMsaW50IGFyZzIyMDQsaW50IGFyZzIyMDUsaW50IGFyZzIyMDYsaW50IGFy
ZzIyMDcsaW50IGFyZzIyMDgsaW50IGFyZzIyMDksaW50IGFyZzIyMTAsaW50IGFyZzIyMTEsaW50
IGFyZzIyMTIsaW50IGFyZzIyMTMsaW50IGFyZzIyMTQsaW50IGFyZzIyMTUsaW50IGFyZzIyMTYs
aW50IGFyZzIyMTcsaW50IGFyZzIyMTgsaW50IGFyZzIyMTksaW50IGFyZzIyMjAsaW50IGFyZzIy
MjEsaW50IGFyZzIyMjIsaW50IGFyZzIyMjMsaW50IGFyZzIyMjQsaW50IGFyZzIyMjUsaW50IGFy
ZzIyMjYsaW50IGFyZzIyMjcsaW50IGFyZzIyMjgsaW50IGFyZzIyMjksaW50IGFyZzIyMzAsaW50
IGFyZzIyMzEsaW50IGFyZzIyMzIsaW50IGFyZzIyMzMsaW50IGFyZzIyMzQsaW50IGFyZzIyMzUs
aW50IGFyZzIyMzYsaW50IGFyZzIyMzcsaW50IGFyZzIyMzgsaW50IGFyZzIyMzksaW50IGFyZzIy
NDAsaW50IGFyZzIyNDEsaW50IGFyZzIyNDIsaW50IGFyZzIyNDMsaW50IGFyZzIyNDQsaW50IGFy
ZzIyNDUsaW50IGFyZzIyNDYsaW50IGFyZzIyNDcsaW50IGFyZzIyNDgsaW50IGFyZzIyNDksaW50
IGFyZzIyNTAsaW50IGFyZzIyNTEsaW50IGFyZzIyNTIsaW50IGFyZzIyNTMsaW50IGFyZzIyNTQs
aW50IGFyZzIyNTUsaW50IGFyZzIyNTYsaW50IGFyZzIyNTcsaW50IGFyZzIyNTgsaW50IGFyZzIy
NTksaW50IGFyZzIyNjAsaW50IGFyZzIyNjEsaW50IGFyZzIyNjIsaW50IGFyZzIyNjMsaW50IGFy
ZzIyNjQsaW50IGFyZzIyNjUsaW50IGFyZzIyNjYsaW50IGFyZzIyNjcsaW50IGFyZzIyNjgsaW50
IGFyZzIyNjksaW50IGFyZzIyNzAsaW50IGFyZzIyNzEsaW50IGFyZzIyNzIsaW50IGFyZzIyNzMs
aW50IGFyZzIyNzQsaW50IGFyZzIyNzUsaW50IGFyZzIyNzYsaW50IGFyZzIyNzcsaW50IGFyZzIy
NzgsaW50IGFyZzIyNzksaW50IGFyZzIyODAsaW50IGFyZzIyODEsaW50IGFyZzIyODIsaW50IGFy
ZzIyODMsaW50IGFyZzIyODQsaW50IGFyZzIyODUsaW50IGFyZzIyODYsaW50IGFyZzIyODcsaW50
IGFyZzIyODgsaW50IGFyZzIyODksaW50IGFyZzIyOTAsaW50IGFyZzIyOTEsaW50IGFyZzIyOTIs
aW50IGFyZzIyOTMsaW50IGFyZzIyOTQsaW50IGFyZzIyOTUsaW50IGFyZzIyOTYsaW50IGFyZzIy
OTcsaW50IGFyZzIyOTgsaW50IGFyZzIyOTksaW50IGFyZzIzMDAsaW50IGFyZzIzMDEsaW50IGFy
ZzIzMDIsaW50IGFyZzIzMDMsaW50IGFyZzIzMDQsaW50IGFyZzIzMDUsaW50IGFyZzIzMDYsaW50
IGFyZzIzMDcsaW50IGFyZzIzMDgsaW50IGFyZzIzMDksaW50IGFyZzIzMTAsaW50IGFyZzIzMTEs
aW50IGFyZzIzMTIsaW50IGFyZzIzMTMsaW50IGFyZzIzMTQsaW50IGFyZzIzMTUsaW50IGFyZzIz
MTYsaW50IGFyZzIzMTcsaW50IGFyZzIzMTgsaW50IGFyZzIzMTksaW50IGFyZzIzMjAsaW50IGFy
ZzIzMjEsaW50IGFyZzIzMjIsaW50IGFyZzIzMjMsaW50IGFyZzIzMjQsaW50IGFyZzIzMjUsaW50
IGFyZzIzMjYsaW50IGFyZzIzMjcsaW50IGFyZzIzMjgsaW50IGFyZzIzMjksaW50IGFyZzIzMzAs
aW50IGFyZzIzMzEsaW50IGFyZzIzMzIsaW50IGFyZzIzMzMsaW50IGFyZzIzMzQsaW50IGFyZzIz
MzUsaW50IGFyZzIzMzYsaW50IGFyZzIzMzcsaW50IGFyZzIzMzgsaW50IGFyZzIzMzksaW50IGFy
ZzIzNDAsaW50IGFyZzIzNDEsaW50IGFyZzIzNDIsaW50IGFyZzIzNDMsaW50IGFyZzIzNDQsaW50
IGFyZzIzNDUsaW50IGFyZzIzNDYsaW50IGFyZzIzNDcsaW50IGFyZzIzNDgsaW50IGFyZzIzNDks
aW50IGFyZzIzNTAsaW50IGFyZzIzNTEsaW50IGFyZzIzNTIsaW50IGFyZzIzNTMsaW50IGFyZzIz
NTQsaW50IGFyZzIzNTUsaW50IGFyZzIzNTYsaW50IGFyZzIzNTcsaW50IGFyZzIzNTgsaW50IGFy
ZzIzNTksaW50IGFyZzIzNjAsaW50IGFyZzIzNjEsaW50IGFyZzIzNjIsaW50IGFyZzIzNjMsaW50
IGFyZzIzNjQsaW50IGFyZzIzNjUsaW50IGFyZzIzNjYsaW50IGFyZzIzNjcsaW50IGFyZzIzNjgs
aW50IGFyZzIzNjksaW50IGFyZzIzNzAsaW50IGFyZzIzNzEsaW50IGFyZzIzNzIsaW50IGFyZzIz
NzMsaW50IGFyZzIzNzQsaW50IGFyZzIzNzUsaW50IGFyZzIzNzYsaW50IGFyZzIzNzcsaW50IGFy
ZzIzNzgsaW50IGFyZzIzNzksaW50IGFyZzIzODAsaW50IGFyZzIzODEsaW50IGFyZzIzODIsaW50
IGFyZzIzODMsaW50IGFyZzIzODQsaW50IGFyZzIzODUsaW50IGFyZzIzODYsaW50IGFyZzIzODcs
aW50IGFyZzIzODgsaW50IGFyZzIzODksaW50IGFyZzIzOTAsaW50IGFyZzIzOTEsaW50IGFyZzIz
OTIsaW50IGFyZzIzOTMsaW50IGFyZzIzOTQsaW50IGFyZzIzOTUsaW50IGFyZzIzOTYsaW50IGFy
ZzIzOTcsaW50IGFyZzIzOTgsaW50IGFyZzIzOTksaW50IGFyZzI0MDAsaW50IGFyZzI0MDEsaW50
IGFyZzI0MDIsaW50IGFyZzI0MDMsaW50IGFyZzI0MDQsaW50IGFyZzI0MDUsaW50IGFyZzI0MDYs
aW50IGFyZzI0MDcsaW50IGFyZzI0MDgsaW50IGFyZzI0MDksaW50IGFyZzI0MTAsaW50IGFyZzI0
MTEsaW50IGFyZzI0MTIsaW50IGFyZzI0MTMsaW50IGFyZzI0MTQsaW50IGFyZzI0MTUsaW50IGFy
ZzI0MTYsaW50IGFyZzI0MTcsaW50IGFyZzI0MTgsaW50IGFyZzI0MTksaW50IGFyZzI0MjAsaW50
IGFyZzI0MjEsaW50IGFyZzI0MjIsaW50IGFyZzI0MjMsaW50IGFyZzI0MjQsaW50IGFyZzI0MjUs
aW50IGFyZzI0MjYsaW50IGFyZzI0MjcsaW50IGFyZzI0MjgsaW50IGFyZzI0MjksaW50IGFyZzI0
MzAsaW50IGFyZzI0MzEsaW50IGFyZzI0MzIsaW50IGFyZzI0MzMsaW50IGFyZzI0MzQsaW50IGFy
ZzI0MzUsaW50IGFyZzI0MzYsaW50IGFyZzI0MzcsaW50IGFyZzI0MzgsaW50IGFyZzI0MzksaW50
IGFyZzI0NDAsaW50IGFyZzI0NDEsaW50IGFyZzI0NDIsaW50IGFyZzI0NDMsaW50IGFyZzI0NDQs
aW50IGFyZzI0NDUsaW50IGFyZzI0NDYsaW50IGFyZzI0NDcsaW50IGFyZzI0NDgsaW50IGFyZzI0
NDksaW50IGFyZzI0NTAsaW50IGFyZzI0NTEsaW50IGFyZzI0NTIsaW50IGFyZzI0NTMsaW50IGFy
ZzI0NTQsaW50IGFyZzI0NTUsaW50IGFyZzI0NTYsaW50IGFyZzI0NTcsaW50IGFyZzI0NTgsaW50
IGFyZzI0NTksaW50IGFyZzI0NjAsaW50IGFyZzI0NjEsaW50IGFyZzI0NjIsaW50IGFyZzI0NjMs
aW50IGFyZzI0NjQsaW50IGFyZzI0NjUsaW50IGFyZzI0NjYsaW50IGFyZzI0NjcsaW50IGFyZzI0
NjgsaW50IGFyZzI0NjksaW50IGFyZzI0NzAsaW50IGFyZzI0NzEsaW50IGFyZzI0NzIsaW50IGFy
ZzI0NzMsaW50IGFyZzI0NzQsaW50IGFyZzI0NzUsaW50IGFyZzI0NzYsaW50IGFyZzI0NzcsaW50
IGFyZzI0NzgsaW50IGFyZzI0NzksaW50IGFyZzI0ODAsaW50IGFyZzI0ODEsaW50IGFyZzI0ODIs
aW50IGFyZzI0ODMsaW50IGFyZzI0ODQsaW50IGFyZzI0ODUsaW50IGFyZzI0ODYsaW50IGFyZzI0
ODcsaW50IGFyZzI0ODgsaW50IGFyZzI0ODksaW50IGFyZzI0OTAsaW50IGFyZzI0OTEsaW50IGFy
ZzI0OTIsaW50IGFyZzI0OTMsaW50IGFyZzI0OTQsaW50IGFyZzI0OTUsaW50IGFyZzI0OTYsaW50
IGFyZzI0OTcsaW50IGFyZzI0OTgsaW50IGFyZzI0OTksaW50IGFyZzI1MDAsaW50IGFyZzI1MDEs
aW50IGFyZzI1MDIsaW50IGFyZzI1MDMsaW50IGFyZzI1MDQsaW50IGFyZzI1MDUsaW50IGFyZzI1
MDYsaW50IGFyZzI1MDcsaW50IGFyZzI1MDgsaW50IGFyZzI1MDksaW50IGFyZzI1MTAsaW50IGFy
ZzI1MTEsaW50IGFyZzI1MTIsaW50IGFyZzI1MTMsaW50IGFyZzI1MTQsaW50IGFyZzI1MTUsaW50
IGFyZzI1MTYsaW50IGFyZzI1MTcsaW50IGFyZzI1MTgsaW50IGFyZzI1MTksaW50IGFyZzI1MjAs
aW50IGFyZzI1MjEsaW50IGFyZzI1MjIsaW50IGFyZzI1MjMsaW50IGFyZzI1MjQsaW50IGFyZzI1
MjUsaW50IGFyZzI1MjYsaW50IGFyZzI1MjcsaW50IGFyZzI1MjgsaW50IGFyZzI1MjksaW50IGFy
ZzI1MzAsaW50IGFyZzI1MzEsaW50IGFyZzI1MzIsaW50IGFyZzI1MzMsaW50IGFyZzI1MzQsaW50
IGFyZzI1MzUsaW50IGFyZzI1MzYsaW50IGFyZzI1MzcsaW50IGFyZzI1MzgsaW50IGFyZzI1Mzks
aW50IGFyZzI1NDAsaW50IGFyZzI1NDEsaW50IGFyZzI1NDIsaW50IGFyZzI1NDMsaW50IGFyZzI1
NDQsaW50IGFyZzI1NDUsaW50IGFyZzI1NDYsaW50IGFyZzI1NDcsaW50IGFyZzI1NDgsaW50IGFy
ZzI1NDksaW50IGFyZzI1NTAsaW50IGFyZzI1NTEsaW50IGFyZzI1NTIsaW50IGFyZzI1NTMsaW50
IGFyZzI1NTQsaW50IGFyZzI1NTUsaW50IGFyZzI1NTYsaW50IGFyZzI1NTcsaW50IGFyZzI1NTgs
aW50IGFyZzI1NTksaW50IGFyZzI1NjAsaW50IGFyZzI1NjEsaW50IGFyZzI1NjIsaW50IGFyZzI1
NjMsaW50IGFyZzI1NjQsaW50IGFyZzI1NjUsaW50IGFyZzI1NjYsaW50IGFyZzI1NjcsaW50IGFy
ZzI1NjgsaW50IGFyZzI1NjksaW50IGFyZzI1NzAsaW50IGFyZzI1NzEsaW50IGFyZzI1NzIsaW50
IGFyZzI1NzMsaW50IGFyZzI1NzQsaW50IGFyZzI1NzUsaW50IGFyZzI1NzYsaW50IGFyZzI1Nzcs
aW50IGFyZzI1NzgsaW50IGFyZzI1NzksaW50IGFyZzI1ODAsaW50IGFyZzI1ODEsaW50IGFyZzI1
ODIsaW50IGFyZzI1ODMsaW50IGFyZzI1ODQsaW50IGFyZzI1ODUsaW50IGFyZzI1ODYsaW50IGFy
ZzI1ODcsaW50IGFyZzI1ODgsaW50IGFyZzI1ODksaW50IGFyZzI1OTAsaW50IGFyZzI1OTEsaW50
IGFyZzI1OTIsaW50IGFyZzI1OTMsaW50IGFyZzI1OTQsaW50IGFyZzI1OTUsaW50IGFyZzI1OTYs
aW50IGFyZzI1OTcsaW50IGFyZzI1OTgsaW50IGFyZzI1OTksaW50IGFyZzI2MDAsaW50IGFyZzI2
MDEsaW50IGFyZzI2MDIsaW50IGFyZzI2MDMsaW50IGFyZzI2MDQsaW50IGFyZzI2MDUsaW50IGFy
ZzI2MDYsaW50IGFyZzI2MDcsaW50IGFyZzI2MDgsaW50IGFyZzI2MDksaW50IGFyZzI2MTAsaW50
IGFyZzI2MTEsaW50IGFyZzI2MTIsaW50IGFyZzI2MTMsaW50IGFyZzI2MTQsaW50IGFyZzI2MTUs
aW50IGFyZzI2MTYsaW50IGFyZzI2MTcsaW50IGFyZzI2MTgsaW50IGFyZzI2MTksaW50IGFyZzI2
MjAsaW50IGFyZzI2MjEsaW50IGFyZzI2MjIsaW50IGFyZzI2MjMsaW50IGFyZzI2MjQsaW50IGFy
ZzI2MjUsaW50IGFyZzI2MjYsaW50IGFyZzI2MjcsaW50IGFyZzI2MjgsaW50IGFyZzI2MjksaW50
IGFyZzI2MzAsaW50IGFyZzI2MzEsaW50IGFyZzI2MzIsaW50IGFyZzI2MzMsaW50IGFyZzI2MzQs
aW50IGFyZzI2MzUsaW50IGFyZzI2MzYsaW50IGFyZzI2MzcsaW50IGFyZzI2MzgsaW50IGFyZzI2
MzksaW50IGFyZzI2NDAsaW50IGFyZzI2NDEsaW50IGFyZzI2NDIsaW50IGFyZzI2NDMsaW50IGFy
ZzI2NDQsaW50IGFyZzI2NDUsaW50IGFyZzI2NDYsaW50IGFyZzI2NDcsaW50IGFyZzI2NDgsaW50
IGFyZzI2NDksaW50IGFyZzI2NTAsaW50IGFyZzI2NTEsaW50IGFyZzI2NTIsaW50IGFyZzI2NTMs
aW50IGFyZzI2NTQsaW50IGFyZzI2NTUsaW50IGFyZzI2NTYsaW50IGFyZzI2NTcsaW50IGFyZzI2
NTgsaW50IGFyZzI2NTksaW50IGFyZzI2NjAsaW50IGFyZzI2NjEsaW50IGFyZzI2NjIsaW50IGFy
ZzI2NjMsaW50IGFyZzI2NjQsaW50IGFyZzI2NjUsaW50IGFyZzI2NjYsaW50IGFyZzI2NjcsaW50
IGFyZzI2NjgsaW50IGFyZzI2NjksaW50IGFyZzI2NzAsaW50IGFyZzI2NzEsaW50IGFyZzI2NzIs
aW50IGFyZzI2NzMsaW50IGFyZzI2NzQsaW50IGFyZzI2NzUsaW50IGFyZzI2NzYsaW50IGFyZzI2
NzcsaW50IGFyZzI2NzgsaW50IGFyZzI2NzksaW50IGFyZzI2ODAsaW50IGFyZzI2ODEsaW50IGFy
ZzI2ODIsaW50IGFyZzI2ODMsaW50IGFyZzI2ODQsaW50IGFyZzI2ODUsaW50IGFyZzI2ODYsaW50
IGFyZzI2ODcsaW50IGFyZzI2ODgsaW50IGFyZzI2ODksaW50IGFyZzI2OTAsaW50IGFyZzI2OTEs
aW50IGFyZzI2OTIsaW50IGFyZzI2OTMsaW50IGFyZzI2OTQsaW50IGFyZzI2OTUsaW50IGFyZzI2
OTYsaW50IGFyZzI2OTcsaW50IGFyZzI2OTgsaW50IGFyZzI2OTksaW50IGFyZzI3MDAsaW50IGFy
ZzI3MDEsaW50IGFyZzI3MDIsaW50IGFyZzI3MDMsaW50IGFyZzI3MDQsaW50IGFyZzI3MDUsaW50
IGFyZzI3MDYsaW50IGFyZzI3MDcsaW50IGFyZzI3MDgsaW50IGFyZzI3MDksaW50IGFyZzI3MTAs
aW50IGFyZzI3MTEsaW50IGFyZzI3MTIsaW50IGFyZzI3MTMsaW50IGFyZzI3MTQsaW50IGFyZzI3
MTUsaW50IGFyZzI3MTYsaW50IGFyZzI3MTcsaW50IGFyZzI3MTgsaW50IGFyZzI3MTksaW50IGFy
ZzI3MjAsaW50IGFyZzI3MjEsaW50IGFyZzI3MjIsaW50IGFyZzI3MjMsaW50IGFyZzI3MjQsaW50
IGFyZzI3MjUsaW50IGFyZzI3MjYsaW50IGFyZzI3MjcsaW50IGFyZzI3MjgsaW50IGFyZzI3Mjks
aW50IGFyZzI3MzAsaW50IGFyZzI3MzEsaW50IGFyZzI3MzIsaW50IGFyZzI3MzMsaW50IGFyZzI3
MzQsaW50IGFyZzI3MzUsaW50IGFyZzI3MzYsaW50IGFyZzI3MzcsaW50IGFyZzI3MzgsaW50IGFy
ZzI3MzksaW50IGFyZzI3NDAsaW50IGFyZzI3NDEsaW50IGFyZzI3NDIsaW50IGFyZzI3NDMsaW50
IGFyZzI3NDQsaW50IGFyZzI3NDUsaW50IGFyZzI3NDYsaW50IGFyZzI3NDcsaW50IGFyZzI3NDgs
aW50IGFyZzI3NDksaW50IGFyZzI3NTAsaW50IGFyZzI3NTEsaW50IGFyZzI3NTIsaW50IGFyZzI3
NTMsaW50IGFyZzI3NTQsaW50IGFyZzI3NTUsaW50IGFyZzI3NTYsaW50IGFyZzI3NTcsaW50IGFy
ZzI3NTgsaW50IGFyZzI3NTksaW50IGFyZzI3NjAsaW50IGFyZzI3NjEsaW50IGFyZzI3NjIsaW50
IGFyZzI3NjMsaW50IGFyZzI3NjQsaW50IGFyZzI3NjUsaW50IGFyZzI3NjYsaW50IGFyZzI3Njcs
aW50IGFyZzI3NjgsaW50IGFyZzI3NjksaW50IGFyZzI3NzAsaW50IGFyZzI3NzEsaW50IGFyZzI3
NzIsaW50IGFyZzI3NzMsaW50IGFyZzI3NzQsaW50IGFyZzI3NzUsaW50IGFyZzI3NzYsaW50IGFy
ZzI3NzcsaW50IGFyZzI3NzgsaW50IGFyZzI3NzksaW50IGFyZzI3ODAsaW50IGFyZzI3ODEsaW50
IGFyZzI3ODIsaW50IGFyZzI3ODMsaW50IGFyZzI3ODQsaW50IGFyZzI3ODUsaW50IGFyZzI3ODYs
aW50IGFyZzI3ODcsaW50IGFyZzI3ODgsaW50IGFyZzI3ODksaW50IGFyZzI3OTAsaW50IGFyZzI3
OTEsaW50IGFyZzI3OTIsaW50IGFyZzI3OTMsaW50IGFyZzI3OTQsaW50IGFyZzI3OTUsaW50IGFy
ZzI3OTYsaW50IGFyZzI3OTcsaW50IGFyZzI3OTgsaW50IGFyZzI3OTksaW50IGFyZzI4MDAsaW50
IGFyZzI4MDEsaW50IGFyZzI4MDIsaW50IGFyZzI4MDMsaW50IGFyZzI4MDQsaW50IGFyZzI4MDUs
aW50IGFyZzI4MDYsaW50IGFyZzI4MDcsaW50IGFyZzI4MDgsaW50IGFyZzI4MDksaW50IGFyZzI4
MTAsaW50IGFyZzI4MTEsaW50IGFyZzI4MTIsaW50IGFyZzI4MTMsaW50IGFyZzI4MTQsaW50IGFy
ZzI4MTUsaW50IGFyZzI4MTYsaW50IGFyZzI4MTcsaW50IGFyZzI4MTgsaW50IGFyZzI4MTksaW50
IGFyZzI4MjAsaW50IGFyZzI4MjEsaW50IGFyZzI4MjIsaW50IGFyZzI4MjMsaW50IGFyZzI4MjQs
aW50IGFyZzI4MjUsaW50IGFyZzI4MjYsaW50IGFyZzI4MjcsaW50IGFyZzI4MjgsaW50IGFyZzI4
MjksaW50IGFyZzI4MzAsaW50IGFyZzI4MzEsaW50IGFyZzI4MzIsaW50IGFyZzI4MzMsaW50IGFy
ZzI4MzQsaW50IGFyZzI4MzUsaW50IGFyZzI4MzYsaW50IGFyZzI4MzcsaW50IGFyZzI4MzgsaW50
IGFyZzI4MzksaW50IGFyZzI4NDAsaW50IGFyZzI4NDEsaW50IGFyZzI4NDIsaW50IGFyZzI4NDMs
aW50IGFyZzI4NDQsaW50IGFyZzI4NDUsaW50IGFyZzI4NDYsaW50IGFyZzI4NDcsaW50IGFyZzI4
NDgsaW50IGFyZzI4NDksaW50IGFyZzI4NTAsaW50IGFyZzI4NTEsaW50IGFyZzI4NTIsaW50IGFy
ZzI4NTMsaW50IGFyZzI4NTQsaW50IGFyZzI4NTUsaW50IGFyZzI4NTYsaW50IGFyZzI4NTcsaW50
IGFyZzI4NTgsaW50IGFyZzI4NTksaW50IGFyZzI4NjAsaW50IGFyZzI4NjEsaW50IGFyZzI4NjIs
aW50IGFyZzI4NjMsaW50IGFyZzI4NjQsaW50IGFyZzI4NjUsaW50IGFyZzI4NjYsaW50IGFyZzI4
NjcsaW50IGFyZzI4NjgsaW50IGFyZzI4NjksaW50IGFyZzI4NzAsaW50IGFyZzI4NzEsaW50IGFy
ZzI4NzIsaW50IGFyZzI4NzMsaW50IGFyZzI4NzQsaW50IGFyZzI4NzUsaW50IGFyZzI4NzYsaW50
IGFyZzI4NzcsaW50IGFyZzI4NzgsaW50IGFyZzI4NzksaW50IGFyZzI4ODAsaW50IGFyZzI4ODEs
aW50IGFyZzI4ODIsaW50IGFyZzI4ODMsaW50IGFyZzI4ODQsaW50IGFyZzI4ODUsaW50IGFyZzI4
ODYsaW50IGFyZzI4ODcsaW50IGFyZzI4ODgsaW50IGFyZzI4ODksaW50IGFyZzI4OTAsaW50IGFy
ZzI4OTEsaW50IGFyZzI4OTIsaW50IGFyZzI4OTMsaW50IGFyZzI4OTQsaW50IGFyZzI4OTUsaW50
IGFyZzI4OTYsaW50IGFyZzI4OTcsaW50IGFyZzI4OTgsaW50IGFyZzI4OTksaW50IGFyZzI5MDAs
aW50IGFyZzI5MDEsaW50IGFyZzI5MDIsaW50IGFyZzI5MDMsaW50IGFyZzI5MDQsaW50IGFyZzI5
MDUsaW50IGFyZzI5MDYsaW50IGFyZzI5MDcsaW50IGFyZzI5MDgsaW50IGFyZzI5MDksaW50IGFy
ZzI5MTAsaW50IGFyZzI5MTEsaW50IGFyZzI5MTIsaW50IGFyZzI5MTMsaW50IGFyZzI5MTQsaW50
IGFyZzI5MTUsaW50IGFyZzI5MTYsaW50IGFyZzI5MTcsaW50IGFyZzI5MTgsaW50IGFyZzI5MTks
aW50IGFyZzI5MjAsaW50IGFyZzI5MjEsaW50IGFyZzI5MjIsaW50IGFyZzI5MjMsaW50IGFyZzI5
MjQsaW50IGFyZzI5MjUsaW50IGFyZzI5MjYsaW50IGFyZzI5MjcsaW50IGFyZzI5MjgsaW50IGFy
ZzI5MjksaW50IGFyZzI5MzAsaW50IGFyZzI5MzEsaW50IGFyZzI5MzIsaW50IGFyZzI5MzMsaW50
IGFyZzI5MzQsaW50IGFyZzI5MzUsaW50IGFyZzI5MzYsaW50IGFyZzI5MzcsaW50IGFyZzI5Mzgs
aW50IGFyZzI5MzksaW50IGFyZzI5NDAsaW50IGFyZzI5NDEsaW50IGFyZzI5NDIsaW50IGFyZzI5
NDMsaW50IGFyZzI5NDQsaW50IGFyZzI5NDUsaW50IGFyZzI5NDYsaW50IGFyZzI5NDcsaW50IGFy
ZzI5NDgsaW50IGFyZzI5NDksaW50IGFyZzI5NTAsaW50IGFyZzI5NTEsaW50IGFyZzI5NTIsaW50
IGFyZzI5NTMsaW50IGFyZzI5NTQsaW50IGFyZzI5NTUsaW50IGFyZzI5NTYsaW50IGFyZzI5NTcs
aW50IGFyZzI5NTgsaW50IGFyZzI5NTksaW50IGFyZzI5NjAsaW50IGFyZzI5NjEsaW50IGFyZzI5
NjIsaW50IGFyZzI5NjMsaW50IGFyZzI5NjQsaW50IGFyZzI5NjUsaW50IGFyZzI5NjYsaW50IGFy
ZzI5NjcsaW50IGFyZzI5NjgsaW50IGFyZzI5NjksaW50IGFyZzI5NzAsaW50IGFyZzI5NzEsaW50
IGFyZzI5NzIsaW50IGFyZzI5NzMsaW50IGFyZzI5NzQsaW50IGFyZzI5NzUsaW50IGFyZzI5NzYs
aW50IGFyZzI5NzcsaW50IGFyZzI5NzgsaW50IGFyZzI5NzksaW50IGFyZzI5ODAsaW50IGFyZzI5
ODEsaW50IGFyZzI5ODIsaW50IGFyZzI5ODMsaW50IGFyZzI5ODQsaW50IGFyZzI5ODUsaW50IGFy
ZzI5ODYsaW50IGFyZzI5ODcsaW50IGFyZzI5ODgsaW50IGFyZzI5ODksaW50IGFyZzI5OTAsaW50
IGFyZzI5OTEsaW50IGFyZzI5OTIsaW50IGFyZzI5OTMsaW50IGFyZzI5OTQsaW50IGFyZzI5OTUs
aW50IGFyZzI5OTYsaW50IGFyZzI5OTcsaW50IGFyZzI5OTgsaW50IGFyZzI5OTksaW50IGFyZzMw
MDAsaW50IGFyZzMwMDEsaW50IGFyZzMwMDIsaW50IGFyZzMwMDMsaW50IGFyZzMwMDQsaW50IGFy
ZzMwMDUsaW50IGFyZzMwMDYsaW50IGFyZzMwMDcsaW50IGFyZzMwMDgsaW50IGFyZzMwMDksaW50
IGFyZzMwMTAsaW50IGFyZzMwMTEsaW50IGFyZzMwMTIsaW50IGFyZzMwMTMsaW50IGFyZzMwMTQs
aW50IGFyZzMwMTUsaW50IGFyZzMwMTYsaW50IGFyZzMwMTcsaW50IGFyZzMwMTgsaW50IGFyZzMw
MTksaW50IGFyZzMwMjAsaW50IGFyZzMwMjEsaW50IGFyZzMwMjIsaW50IGFyZzMwMjMsaW50IGFy
ZzMwMjQsaW50IGFyZzMwMjUsaW50IGFyZzMwMjYsaW50IGFyZzMwMjcsaW50IGFyZzMwMjgsaW50
IGFyZzMwMjksaW50IGFyZzMwMzAsaW50IGFyZzMwMzEsaW50IGFyZzMwMzIsaW50IGFyZzMwMzMs
aW50IGFyZzMwMzQsaW50IGFyZzMwMzUsaW50IGFyZzMwMzYsaW50IGFyZzMwMzcsaW50IGFyZzMw
MzgsaW50IGFyZzMwMzksaW50IGFyZzMwNDAsaW50IGFyZzMwNDEsaW50IGFyZzMwNDIsaW50IGFy
ZzMwNDMsaW50IGFyZzMwNDQsaW50IGFyZzMwNDUsaW50IGFyZzMwNDYsaW50IGFyZzMwNDcsaW50
IGFyZzMwNDgsaW50IGFyZzMwNDksaW50IGFyZzMwNTAsaW50IGFyZzMwNTEsaW50IGFyZzMwNTIs
aW50IGFyZzMwNTMsaW50IGFyZzMwNTQsaW50IGFyZzMwNTUsaW50IGFyZzMwNTYsaW50IGFyZzMw
NTcsaW50IGFyZzMwNTgsaW50IGFyZzMwNTksaW50IGFyZzMwNjAsaW50IGFyZzMwNjEsaW50IGFy
ZzMwNjIsaW50IGFyZzMwNjMsaW50IGFyZzMwNjQsaW50IGFyZzMwNjUsaW50IGFyZzMwNjYsaW50
IGFyZzMwNjcsaW50IGFyZzMwNjgsaW50IGFyZzMwNjksaW50IGFyZzMwNzAsaW50IGFyZzMwNzEs
aW50IGFyZzMwNzIsaW50IGFyZzMwNzMsaW50IGFyZzMwNzQsaW50IGFyZzMwNzUsaW50IGFyZzMw
NzYsaW50IGFyZzMwNzcsaW50IGFyZzMwNzgsaW50IGFyZzMwNzksaW50IGFyZzMwODAsaW50IGFy
ZzMwODEsaW50IGFyZzMwODIsaW50IGFyZzMwODMsaW50IGFyZzMwODQsaW50IGFyZzMwODUsaW50
IGFyZzMwODYsaW50IGFyZzMwODcsaW50IGFyZzMwODgsaW50IGFyZzMwODksaW50IGFyZzMwOTAs
aW50IGFyZzMwOTEsaW50IGFyZzMwOTIsaW50IGFyZzMwOTMsaW50IGFyZzMwOTQsaW50IGFyZzMw
OTUsaW50IGFyZzMwOTYsaW50IGFyZzMwOTcsaW50IGFyZzMwOTgsaW50IGFyZzMwOTksaW50IGFy
ZzMxMDAsaW50IGFyZzMxMDEsaW50IGFyZzMxMDIsaW50IGFyZzMxMDMsaW50IGFyZzMxMDQsaW50
IGFyZzMxMDUsaW50IGFyZzMxMDYsaW50IGFyZzMxMDcsaW50IGFyZzMxMDgsaW50IGFyZzMxMDks
aW50IGFyZzMxMTAsaW50IGFyZzMxMTEsaW50IGFyZzMxMTIsaW50IGFyZzMxMTMsaW50IGFyZzMx
MTQsaW50IGFyZzMxMTUsaW50IGFyZzMxMTYsaW50IGFyZzMxMTcsaW50IGFyZzMxMTgsaW50IGFy
ZzMxMTksaW50IGFyZzMxMjAsaW50IGFyZzMxMjEsaW50IGFyZzMxMjIsaW50IGFyZzMxMjMsaW50
IGFyZzMxMjQsaW50IGFyZzMxMjUsaW50IGFyZzMxMjYsaW50IGFyZzMxMjcsaW50IGFyZzMxMjgs
aW50IGFyZzMxMjksaW50IGFyZzMxMzAsaW50IGFyZzMxMzEsaW50IGFyZzMxMzIsaW50IGFyZzMx
MzMsaW50IGFyZzMxMzQsaW50IGFyZzMxMzUsaW50IGFyZzMxMzYsaW50IGFyZzMxMzcsaW50IGFy
ZzMxMzgsaW50IGFyZzMxMzksaW50IGFyZzMxNDAsaW50IGFyZzMxNDEsaW50IGFyZzMxNDIsaW50
IGFyZzMxNDMsaW50IGFyZzMxNDQsaW50IGFyZzMxNDUsaW50IGFyZzMxNDYsaW50IGFyZzMxNDcs
aW50IGFyZzMxNDgsaW50IGFyZzMxNDksaW50IGFyZzMxNTAsaW50IGFyZzMxNTEsaW50IGFyZzMx
NTIsaW50IGFyZzMxNTMsaW50IGFyZzMxNTQsaW50IGFyZzMxNTUsaW50IGFyZzMxNTYsaW50IGFy
ZzMxNTcsaW50IGFyZzMxNTgsaW50IGFyZzMxNTksaW50IGFyZzMxNjAsaW50IGFyZzMxNjEsaW50
IGFyZzMxNjIsaW50IGFyZzMxNjMsaW50IGFyZzMxNjQsaW50IGFyZzMxNjUsaW50IGFyZzMxNjYs
aW50IGFyZzMxNjcsaW50IGFyZzMxNjgsaW50IGFyZzMxNjksaW50IGFyZzMxNzAsaW50IGFyZzMx
NzEsaW50IGFyZzMxNzIsaW50IGFyZzMxNzMsaW50IGFyZzMxNzQsaW50IGFyZzMxNzUsaW50IGFy
ZzMxNzYsaW50IGFyZzMxNzcsaW50IGFyZzMxNzgsaW50IGFyZzMxNzksaW50IGFyZzMxODAsaW50
IGFyZzMxODEsaW50IGFyZzMxODIsaW50IGFyZzMxODMsaW50IGFyZzMxODQsaW50IGFyZzMxODUs
aW50IGFyZzMxODYsaW50IGFyZzMxODcsaW50IGFyZzMxODgsaW50IGFyZzMxODksaW50IGFyZzMx
OTAsaW50IGFyZzMxOTEsaW50IGFyZzMxOTIsaW50IGFyZzMxOTMsaW50IGFyZzMxOTQsaW50IGFy
ZzMxOTUsaW50IGFyZzMxOTYsaW50IGFyZzMxOTcsaW50IGFyZzMxOTgsaW50IGFyZzMxOTksaW50
IGFyZzMyMDAsaW50IGFyZzMyMDEsaW50IGFyZzMyMDIsaW50IGFyZzMyMDMsaW50IGFyZzMyMDQs
aW50IGFyZzMyMDUsaW50IGFyZzMyMDYsaW50IGFyZzMyMDcsaW50IGFyZzMyMDgsaW50IGFyZzMy
MDksaW50IGFyZzMyMTAsaW50IGFyZzMyMTEsaW50IGFyZzMyMTIsaW50IGFyZzMyMTMsaW50IGFy
ZzMyMTQsaW50IGFyZzMyMTUsaW50IGFyZzMyMTYsaW50IGFyZzMyMTcsaW50IGFyZzMyMTgsaW50
IGFyZzMyMTksaW50IGFyZzMyMjAsaW50IGFyZzMyMjEsaW50IGFyZzMyMjIsaW50IGFyZzMyMjMs
aW50IGFyZzMyMjQsaW50IGFyZzMyMjUsaW50IGFyZzMyMjYsaW50IGFyZzMyMjcsaW50IGFyZzMy
MjgsaW50IGFyZzMyMjksaW50IGFyZzMyMzAsaW50IGFyZzMyMzEsaW50IGFyZzMyMzIsaW50IGFy
ZzMyMzMsaW50IGFyZzMyMzQsaW50IGFyZzMyMzUsaW50IGFyZzMyMzYsaW50IGFyZzMyMzcsaW50
IGFyZzMyMzgsaW50IGFyZzMyMzksaW50IGFyZzMyNDAsaW50IGFyZzMyNDEsaW50IGFyZzMyNDIs
aW50IGFyZzMyNDMsaW50IGFyZzMyNDQsaW50IGFyZzMyNDUsaW50IGFyZzMyNDYsaW50IGFyZzMy
NDcsaW50IGFyZzMyNDgsaW50IGFyZzMyNDksaW50IGFyZzMyNTAsaW50IGFyZzMyNTEsaW50IGFy
ZzMyNTIsaW50IGFyZzMyNTMsaW50IGFyZzMyNTQsaW50IGFyZzMyNTUsaW50IGFyZzMyNTYsaW50
IGFyZzMyNTcsaW50IGFyZzMyNTgsaW50IGFyZzMyNTksaW50IGFyZzMyNjAsaW50IGFyZzMyNjEs
aW50IGFyZzMyNjIsaW50IGFyZzMyNjMsaW50IGFyZzMyNjQsaW50IGFyZzMyNjUsaW50IGFyZzMy
NjYsaW50IGFyZzMyNjcsaW50IGFyZzMyNjgsaW50IGFyZzMyNjksaW50IGFyZzMyNzAsaW50IGFy
ZzMyNzEsaW50IGFyZzMyNzIsaW50IGFyZzMyNzMsaW50IGFyZzMyNzQsaW50IGFyZzMyNzUsaW50
IGFyZzMyNzYsaW50IGFyZzMyNzcsaW50IGFyZzMyNzgsaW50IGFyZzMyNzksaW50IGFyZzMyODAs
aW50IGFyZzMyODEsaW50IGFyZzMyODIsaW50IGFyZzMyODMsaW50IGFyZzMyODQsaW50IGFyZzMy
ODUsaW50IGFyZzMyODYsaW50IGFyZzMyODcsaW50IGFyZzMyODgsaW50IGFyZzMyODksaW50IGFy
ZzMyOTAsaW50IGFyZzMyOTEsaW50IGFyZzMyOTIsaW50IGFyZzMyOTMsaW50IGFyZzMyOTQsaW50
IGFyZzMyOTUsaW50IGFyZzMyOTYsaW50IGFyZzMyOTcsaW50IGFyZzMyOTgsaW50IGFyZzMyOTks
aW50IGFyZzMzMDAsaW50IGFyZzMzMDEsaW50IGFyZzMzMDIsaW50IGFyZzMzMDMsaW50IGFyZzMz
MDQsaW50IGFyZzMzMDUsaW50IGFyZzMzMDYsaW50IGFyZzMzMDcsaW50IGFyZzMzMDgsaW50IGFy
ZzMzMDksaW50IGFyZzMzMTAsaW50IGFyZzMzMTEsaW50IGFyZzMzMTIsaW50IGFyZzMzMTMsaW50
IGFyZzMzMTQsaW50IGFyZzMzMTUsaW50IGFyZzMzMTYsaW50IGFyZzMzMTcsaW50IGFyZzMzMTgs
aW50IGFyZzMzMTksaW50IGFyZzMzMjAsaW50IGFyZzMzMjEsaW50IGFyZzMzMjIsaW50IGFyZzMz
MjMsaW50IGFyZzMzMjQsaW50IGFyZzMzMjUsaW50IGFyZzMzMjYsaW50IGFyZzMzMjcsaW50IGFy
ZzMzMjgsaW50IGFyZzMzMjksaW50IGFyZzMzMzAsaW50IGFyZzMzMzEsaW50IGFyZzMzMzIsaW50
IGFyZzMzMzMsaW50IGFyZzMzMzQsaW50IGFyZzMzMzUsaW50IGFyZzMzMzYsaW50IGFyZzMzMzcs
aW50IGFyZzMzMzgsaW50IGFyZzMzMzksaW50IGFyZzMzNDAsaW50IGFyZzMzNDEsaW50IGFyZzMz
NDIsaW50IGFyZzMzNDMsaW50IGFyZzMzNDQsaW50IGFyZzMzNDUsaW50IGFyZzMzNDYsaW50IGFy
ZzMzNDcsaW50IGFyZzMzNDgsaW50IGFyZzMzNDksaW50IGFyZzMzNTAsaW50IGFyZzMzNTEsaW50
IGFyZzMzNTIsaW50IGFyZzMzNTMsaW50IGFyZzMzNTQsaW50IGFyZzMzNTUsaW50IGFyZzMzNTYs
aW50IGFyZzMzNTcsaW50IGFyZzMzNTgsaW50IGFyZzMzNTksaW50IGFyZzMzNjAsaW50IGFyZzMz
NjEsaW50IGFyZzMzNjIsaW50IGFyZzMzNjMsaW50IGFyZzMzNjQsaW50IGFyZzMzNjUsaW50IGFy
ZzMzNjYsaW50IGFyZzMzNjcsaW50IGFyZzMzNjgsaW50IGFyZzMzNjksaW50IGFyZzMzNzAsaW50
IGFyZzMzNzEsaW50IGFyZzMzNzIsaW50IGFyZzMzNzMsaW50IGFyZzMzNzQsaW50IGFyZzMzNzUs
aW50IGFyZzMzNzYsaW50IGFyZzMzNzcsaW50IGFyZzMzNzgsaW50IGFyZzMzNzksaW50IGFyZzMz
ODAsaW50IGFyZzMzODEsaW50IGFyZzMzODIsaW50IGFyZzMzODMsaW50IGFyZzMzODQsaW50IGFy
ZzMzODUsaW50IGFyZzMzODYsaW50IGFyZzMzODcsaW50IGFyZzMzODgsaW50IGFyZzMzODksaW50
IGFyZzMzOTAsaW50IGFyZzMzOTEsaW50IGFyZzMzOTIsaW50IGFyZzMzOTMsaW50IGFyZzMzOTQs
aW50IGFyZzMzOTUsaW50IGFyZzMzOTYsaW50IGFyZzMzOTcsaW50IGFyZzMzOTgsaW50IGFyZzMz
OTksaW50IGFyZzM0MDAsaW50IGFyZzM0MDEsaW50IGFyZzM0MDIsaW50IGFyZzM0MDMsaW50IGFy
ZzM0MDQsaW50IGFyZzM0MDUsaW50IGFyZzM0MDYsaW50IGFyZzM0MDcsaW50IGFyZzM0MDgsaW50
IGFyZzM0MDksaW50IGFyZzM0MTAsaW50IGFyZzM0MTEsaW50IGFyZzM0MTIsaW50IGFyZzM0MTMs
aW50IGFyZzM0MTQsaW50IGFyZzM0MTUsaW50IGFyZzM0MTYsaW50IGFyZzM0MTcsaW50IGFyZzM0
MTgsaW50IGFyZzM0MTksaW50IGFyZzM0MjAsaW50IGFyZzM0MjEsaW50IGFyZzM0MjIsaW50IGFy
ZzM0MjMsaW50IGFyZzM0MjQsaW50IGFyZzM0MjUsaW50IGFyZzM0MjYsaW50IGFyZzM0MjcsaW50
IGFyZzM0MjgsaW50IGFyZzM0MjksaW50IGFyZzM0MzAsaW50IGFyZzM0MzEsaW50IGFyZzM0MzIs
aW50IGFyZzM0MzMsaW50IGFyZzM0MzQsaW50IGFyZzM0MzUsaW50IGFyZzM0MzYsaW50IGFyZzM0
MzcsaW50IGFyZzM0MzgsaW50IGFyZzM0MzksaW50IGFyZzM0NDAsaW50IGFyZzM0NDEsaW50IGFy
ZzM0NDIsaW50IGFyZzM0NDMsaW50IGFyZzM0NDQsaW50IGFyZzM0NDUsaW50IGFyZzM0NDYsaW50
IGFyZzM0NDcsaW50IGFyZzM0NDgsaW50IGFyZzM0NDksaW50IGFyZzM0NTAsaW50IGFyZzM0NTEs
aW50IGFyZzM0NTIsaW50IGFyZzM0NTMsaW50IGFyZzM0NTQsaW50IGFyZzM0NTUsaW50IGFyZzM0
NTYsaW50IGFyZzM0NTcsaW50IGFyZzM0NTgsaW50IGFyZzM0NTksaW50IGFyZzM0NjAsaW50IGFy
ZzM0NjEsaW50IGFyZzM0NjIsaW50IGFyZzM0NjMsaW50IGFyZzM0NjQsaW50IGFyZzM0NjUsaW50
IGFyZzM0NjYsaW50IGFyZzM0NjcsaW50IGFyZzM0NjgsaW50IGFyZzM0NjksaW50IGFyZzM0NzAs
aW50IGFyZzM0NzEsaW50IGFyZzM0NzIsaW50IGFyZzM0NzMsaW50IGFyZzM0NzQsaW50IGFyZzM0
NzUsaW50IGFyZzM0NzYsaW50IGFyZzM0NzcsaW50IGFyZzM0NzgsaW50IGFyZzM0NzksaW50IGFy
ZzM0ODAsaW50IGFyZzM0ODEsaW50IGFyZzM0ODIsaW50IGFyZzM0ODMsaW50IGFyZzM0ODQsaW50
IGFyZzM0ODUsaW50IGFyZzM0ODYsaW50IGFyZzM0ODcsaW50IGFyZzM0ODgsaW50IGFyZzM0ODks
aW50IGFyZzM0OTAsaW50IGFyZzM0OTEsaW50IGFyZzM0OTIsaW50IGFyZzM0OTMsaW50IGFyZzM0
OTQsaW50IGFyZzM0OTUsaW50IGFyZzM0OTYsaW50IGFyZzM0OTcsaW50IGFyZzM0OTgsaW50IGFy
ZzM0OTksaW50IGFyZzM1MDAsaW50IGFyZzM1MDEsaW50IGFyZzM1MDIsaW50IGFyZzM1MDMsaW50
IGFyZzM1MDQsaW50IGFyZzM1MDUsaW50IGFyZzM1MDYsaW50IGFyZzM1MDcsaW50IGFyZzM1MDgs
aW50IGFyZzM1MDksaW50IGFyZzM1MTAsaW50IGFyZzM1MTEsaW50IGFyZzM1MTIsaW50IGFyZzM1
MTMsaW50IGFyZzM1MTQsaW50IGFyZzM1MTUsaW50IGFyZzM1MTYsaW50IGFyZzM1MTcsaW50IGFy
ZzM1MTgsaW50IGFyZzM1MTksaW50IGFyZzM1MjAsaW50IGFyZzM1MjEsaW50IGFyZzM1MjIsaW50
IGFyZzM1MjMsaW50IGFyZzM1MjQsaW50IGFyZzM1MjUsaW50IGFyZzM1MjYsaW50IGFyZzM1Mjcs
aW50IGFyZzM1MjgsaW50IGFyZzM1MjksaW50IGFyZzM1MzAsaW50IGFyZzM1MzEsaW50IGFyZzM1
MzIsaW50IGFyZzM1MzMsaW50IGFyZzM1MzQsaW50IGFyZzM1MzUsaW50IGFyZzM1MzYsaW50IGFy
ZzM1MzcsaW50IGFyZzM1MzgsaW50IGFyZzM1MzksaW50IGFyZzM1NDAsaW50IGFyZzM1NDEsaW50
IGFyZzM1NDIsaW50IGFyZzM1NDMsaW50IGFyZzM1NDQsaW50IGFyZzM1NDUsaW50IGFyZzM1NDYs
aW50IGFyZzM1NDcsaW50IGFyZzM1NDgsaW50IGFyZzM1NDksaW50IGFyZzM1NTAsaW50IGFyZzM1
NTEsaW50IGFyZzM1NTIsaW50IGFyZzM1NTMsaW50IGFyZzM1NTQsaW50IGFyZzM1NTUsaW50IGFy
ZzM1NTYsaW50IGFyZzM1NTcsaW50IGFyZzM1NTgsaW50IGFyZzM1NTksaW50IGFyZzM1NjAsaW50
IGFyZzM1NjEsaW50IGFyZzM1NjIsaW50IGFyZzM1NjMsaW50IGFyZzM1NjQsaW50IGFyZzM1NjUs
aW50IGFyZzM1NjYsaW50IGFyZzM1NjcsaW50IGFyZzM1NjgsaW50IGFyZzM1NjksaW50IGFyZzM1
NzAsaW50IGFyZzM1NzEsaW50IGFyZzM1NzIsaW50IGFyZzM1NzMsaW50IGFyZzM1NzQsaW50IGFy
ZzM1NzUsaW50IGFyZzM1NzYsaW50IGFyZzM1NzcsaW50IGFyZzM1NzgsaW50IGFyZzM1NzksaW50
IGFyZzM1ODAsaW50IGFyZzM1ODEsaW50IGFyZzM1ODIsaW50IGFyZzM1ODMsaW50IGFyZzM1ODQs
aW50IGFyZzM1ODUsaW50IGFyZzM1ODYsaW50IGFyZzM1ODcsaW50IGFyZzM1ODgsaW50IGFyZzM1
ODksaW50IGFyZzM1OTAsaW50IGFyZzM1OTEsaW50IGFyZzM1OTIsaW50IGFyZzM1OTMsaW50IGFy
ZzM1OTQsaW50IGFyZzM1OTUsaW50IGFyZzM1OTYsaW50IGFyZzM1OTcsaW50IGFyZzM1OTgsaW50
IGFyZzM1OTksaW50IGFyZzM2MDAsaW50IGFyZzM2MDEsaW50IGFyZzM2MDIsaW50IGFyZzM2MDMs
aW50IGFyZzM2MDQsaW50IGFyZzM2MDUsaW50IGFyZzM2MDYsaW50IGFyZzM2MDcsaW50IGFyZzM2
MDgsaW50IGFyZzM2MDksaW50IGFyZzM2MTAsaW50IGFyZzM2MTEsaW50IGFyZzM2MTIsaW50IGFy
ZzM2MTMsaW50IGFyZzM2MTQsaW50IGFyZzM2MTUsaW50IGFyZzM2MTYsaW50IGFyZzM2MTcsaW50
IGFyZzM2MTgsaW50IGFyZzM2MTksaW50IGFyZzM2MjAsaW50IGFyZzM2MjEsaW50IGFyZzM2MjIs
aW50IGFyZzM2MjMsaW50IGFyZzM2MjQsaW50IGFyZzM2MjUsaW50IGFyZzM2MjYsaW50IGFyZzM2
MjcsaW50IGFyZzM2MjgsaW50IGFyZzM2MjksaW50IGFyZzM2MzAsaW50IGFyZzM2MzEsaW50IGFy
ZzM2MzIsaW50IGFyZzM2MzMsaW50IGFyZzM2MzQsaW50IGFyZzM2MzUsaW50IGFyZzM2MzYsaW50
IGFyZzM2MzcsaW50IGFyZzM2MzgsaW50IGFyZzM2MzksaW50IGFyZzM2NDAsaW50IGFyZzM2NDEs
aW50IGFyZzM2NDIsaW50IGFyZzM2NDMsaW50IGFyZzM2NDQsaW50IGFyZzM2NDUsaW50IGFyZzM2
NDYsaW50IGFyZzM2NDcsaW50IGFyZzM2NDgsaW50IGFyZzM2NDksaW50IGFyZzM2NTAsaW50IGFy
ZzM2NTEsaW50IGFyZzM2NTIsaW50IGFyZzM2NTMsaW50IGFyZzM2NTQsaW50IGFyZzM2NTUsaW50
IGFyZzM2NTYsaW50IGFyZzM2NTcsaW50IGFyZzM2NTgsaW50IGFyZzM2NTksaW50IGFyZzM2NjAs
aW50IGFyZzM2NjEsaW50IGFyZzM2NjIsaW50IGFyZzM2NjMsaW50IGFyZzM2NjQsaW50IGFyZzM2
NjUsaW50IGFyZzM2NjYsaW50IGFyZzM2NjcsaW50IGFyZzM2NjgsaW50IGFyZzM2NjksaW50IGFy
ZzM2NzAsaW50IGFyZzM2NzEsaW50IGFyZzM2NzIsaW50IGFyZzM2NzMsaW50IGFyZzM2NzQsaW50
IGFyZzM2NzUsaW50IGFyZzM2NzYsaW50IGFyZzM2NzcsaW50IGFyZzM2NzgsaW50IGFyZzM2Nzks
aW50IGFyZzM2ODAsaW50IGFyZzM2ODEsaW50IGFyZzM2ODIsaW50IGFyZzM2ODMsaW50IGFyZzM2
ODQsaW50IGFyZzM2ODUsaW50IGFyZzM2ODYsaW50IGFyZzM2ODcsaW50IGFyZzM2ODgsaW50IGFy
ZzM2ODksaW50IGFyZzM2OTAsaW50IGFyZzM2OTEsaW50IGFyZzM2OTIsaW50IGFyZzM2OTMsaW50
IGFyZzM2OTQsaW50IGFyZzM2OTUsaW50IGFyZzM2OTYsaW50IGFyZzM2OTcsaW50IGFyZzM2OTgs
aW50IGFyZzM2OTksaW50IGFyZzM3MDAsaW50IGFyZzM3MDEsaW50IGFyZzM3MDIsaW50IGFyZzM3
MDMsaW50IGFyZzM3MDQsaW50IGFyZzM3MDUsaW50IGFyZzM3MDYsaW50IGFyZzM3MDcsaW50IGFy
ZzM3MDgsaW50IGFyZzM3MDksaW50IGFyZzM3MTAsaW50IGFyZzM3MTEsaW50IGFyZzM3MTIsaW50
IGFyZzM3MTMsaW50IGFyZzM3MTQsaW50IGFyZzM3MTUsaW50IGFyZzM3MTYsaW50IGFyZzM3MTcs
aW50IGFyZzM3MTgsaW50IGFyZzM3MTksaW50IGFyZzM3MjAsaW50IGFyZzM3MjEsaW50IGFyZzM3
MjIsaW50IGFyZzM3MjMsaW50IGFyZzM3MjQsaW50IGFyZzM3MjUsaW50IGFyZzM3MjYsaW50IGFy
ZzM3MjcsaW50IGFyZzM3MjgsaW50IGFyZzM3MjksaW50IGFyZzM3MzAsaW50IGFyZzM3MzEsaW50
IGFyZzM3MzIsaW50IGFyZzM3MzMsaW50IGFyZzM3MzQsaW50IGFyZzM3MzUsaW50IGFyZzM3MzYs
aW50IGFyZzM3MzcsaW50IGFyZzM3MzgsaW50IGFyZzM3MzksaW50IGFyZzM3NDAsaW50IGFyZzM3
NDEsaW50IGFyZzM3NDIsaW50IGFyZzM3NDMsaW50IGFyZzM3NDQsaW50IGFyZzM3NDUsaW50IGFy
ZzM3NDYsaW50IGFyZzM3NDcsaW50IGFyZzM3NDgsaW50IGFyZzM3NDksaW50IGFyZzM3NTAsaW50
IGFyZzM3NTEsaW50IGFyZzM3NTIsaW50IGFyZzM3NTMsaW50IGFyZzM3NTQsaW50IGFyZzM3NTUs
aW50IGFyZzM3NTYsaW50IGFyZzM3NTcsaW50IGFyZzM3NTgsaW50IGFyZzM3NTksaW50IGFyZzM3
NjAsaW50IGFyZzM3NjEsaW50IGFyZzM3NjIsaW50IGFyZzM3NjMsaW50IGFyZzM3NjQsaW50IGFy
ZzM3NjUsaW50IGFyZzM3NjYsaW50IGFyZzM3NjcsaW50IGFyZzM3NjgsaW50IGFyZzM3NjksaW50
IGFyZzM3NzAsaW50IGFyZzM3NzEsaW50IGFyZzM3NzIsaW50IGFyZzM3NzMsaW50IGFyZzM3NzQs
aW50IGFyZzM3NzUsaW50IGFyZzM3NzYsaW50IGFyZzM3NzcsaW50IGFyZzM3NzgsaW50IGFyZzM3
NzksaW50IGFyZzM3ODAsaW50IGFyZzM3ODEsaW50IGFyZzM3ODIsaW50IGFyZzM3ODMsaW50IGFy
ZzM3ODQsaW50IGFyZzM3ODUsaW50IGFyZzM3ODYsaW50IGFyZzM3ODcsaW50IGFyZzM3ODgsaW50
IGFyZzM3ODksaW50IGFyZzM3OTAsaW50IGFyZzM3OTEsaW50IGFyZzM3OTIsaW50IGFyZzM3OTMs
aW50IGFyZzM3OTQsaW50IGFyZzM3OTUsaW50IGFyZzM3OTYsaW50IGFyZzM3OTcsaW50IGFyZzM3
OTgsaW50IGFyZzM3OTksaW50IGFyZzM4MDAsaW50IGFyZzM4MDEsaW50IGFyZzM4MDIsaW50IGFy
ZzM4MDMsaW50IGFyZzM4MDQsaW50IGFyZzM4MDUsaW50IGFyZzM4MDYsaW50IGFyZzM4MDcsaW50
IGFyZzM4MDgsaW50IGFyZzM4MDksaW50IGFyZzM4MTAsaW50IGFyZzM4MTEsaW50IGFyZzM4MTIs
aW50IGFyZzM4MTMsaW50IGFyZzM4MTQsaW50IGFyZzM4MTUsaW50IGFyZzM4MTYsaW50IGFyZzM4
MTcsaW50IGFyZzM4MTgsaW50IGFyZzM4MTksaW50IGFyZzM4MjAsaW50IGFyZzM4MjEsaW50IGFy
ZzM4MjIsaW50IGFyZzM4MjMsaW50IGFyZzM4MjQsaW50IGFyZzM4MjUsaW50IGFyZzM4MjYsaW50
IGFyZzM4MjcsaW50IGFyZzM4MjgsaW50IGFyZzM4MjksaW50IGFyZzM4MzAsaW50IGFyZzM4MzEs
aW50IGFyZzM4MzIsaW50IGFyZzM4MzMsaW50IGFyZzM4MzQsaW50IGFyZzM4MzUsaW50IGFyZzM4
MzYsaW50IGFyZzM4MzcsaW50IGFyZzM4MzgsaW50IGFyZzM4MzksaW50IGFyZzM4NDAsaW50IGFy
ZzM4NDEsaW50IGFyZzM4NDIsaW50IGFyZzM4NDMsaW50IGFyZzM4NDQsaW50IGFyZzM4NDUsaW50
IGFyZzM4NDYsaW50IGFyZzM4NDcsaW50IGFyZzM4NDgsaW50IGFyZzM4NDksaW50IGFyZzM4NTAs
aW50IGFyZzM4NTEsaW50IGFyZzM4NTIsaW50IGFyZzM4NTMsaW50IGFyZzM4NTQsaW50IGFyZzM4
NTUsaW50IGFyZzM4NTYsaW50IGFyZzM4NTcsaW50IGFyZzM4NTgsaW50IGFyZzM4NTksaW50IGFy
ZzM4NjAsaW50IGFyZzM4NjEsaW50IGFyZzM4NjIsaW50IGFyZzM4NjMsaW50IGFyZzM4NjQsaW50
IGFyZzM4NjUsaW50IGFyZzM4NjYsaW50IGFyZzM4NjcsaW50IGFyZzM4NjgsaW50IGFyZzM4Njks
aW50IGFyZzM4NzAsaW50IGFyZzM4NzEsaW50IGFyZzM4NzIsaW50IGFyZzM4NzMsaW50IGFyZzM4
NzQsaW50IGFyZzM4NzUsaW50IGFyZzM4NzYsaW50IGFyZzM4NzcsaW50IGFyZzM4NzgsaW50IGFy
ZzM4NzksaW50IGFyZzM4ODAsaW50IGFyZzM4ODEsaW50IGFyZzM4ODIsaW50IGFyZzM4ODMsaW50
IGFyZzM4ODQsaW50IGFyZzM4ODUsaW50IGFyZzM4ODYsaW50IGFyZzM4ODcsaW50IGFyZzM4ODgs
aW50IGFyZzM4ODksaW50IGFyZzM4OTAsaW50IGFyZzM4OTEsaW50IGFyZzM4OTIsaW50IGFyZzM4
OTMsaW50IGFyZzM4OTQsaW50IGFyZzM4OTUsaW50IGFyZzM4OTYsaW50IGFyZzM4OTcsaW50IGFy
ZzM4OTgsaW50IGFyZzM4OTksaW50IGFyZzM5MDAsaW50IGFyZzM5MDEsaW50IGFyZzM5MDIsaW50
IGFyZzM5MDMsaW50IGFyZzM5MDQsaW50IGFyZzM5MDUsaW50IGFyZzM5MDYsaW50IGFyZzM5MDcs
aW50IGFyZzM5MDgsaW50IGFyZzM5MDksaW50IGFyZzM5MTAsaW50IGFyZzM5MTEsaW50IGFyZzM5
MTIsaW50IGFyZzM5MTMsaW50IGFyZzM5MTQsaW50IGFyZzM5MTUsaW50IGFyZzM5MTYsaW50IGFy
ZzM5MTcsaW50IGFyZzM5MTgsaW50IGFyZzM5MTksaW50IGFyZzM5MjAsaW50IGFyZzM5MjEsaW50
IGFyZzM5MjIsaW50IGFyZzM5MjMsaW50IGFyZzM5MjQsaW50IGFyZzM5MjUsaW50IGFyZzM5MjYs
aW50IGFyZzM5MjcsaW50IGFyZzM5MjgsaW50IGFyZzM5MjksaW50IGFyZzM5MzAsaW50IGFyZzM5
MzEsaW50IGFyZzM5MzIsaW50IGFyZzM5MzMsaW50IGFyZzM5MzQsaW50IGFyZzM5MzUsaW50IGFy
ZzM5MzYsaW50IGFyZzM5MzcsaW50IGFyZzM5MzgsaW50IGFyZzM5MzksaW50IGFyZzM5NDAsaW50
IGFyZzM5NDEsaW50IGFyZzM5NDIsaW50IGFyZzM5NDMsaW50IGFyZzM5NDQsaW50IGFyZzM5NDUs
aW50IGFyZzM5NDYsaW50IGFyZzM5NDcsaW50IGFyZzM5NDgsaW50IGFyZzM5NDksaW50IGFyZzM5
NTAsaW50IGFyZzM5NTEsaW50IGFyZzM5NTIsaW50IGFyZzM5NTMsaW50IGFyZzM5NTQsaW50IGFy
ZzM5NTUsaW50IGFyZzM5NTYsaW50IGFyZzM5NTcsaW50IGFyZzM5NTgsaW50IGFyZzM5NTksaW50
IGFyZzM5NjAsaW50IGFyZzM5NjEsaW50IGFyZzM5NjIsaW50IGFyZzM5NjMsaW50IGFyZzM5NjQs
aW50IGFyZzM5NjUsaW50IGFyZzM5NjYsaW50IGFyZzM5NjcsaW50IGFyZzM5NjgsaW50IGFyZzM5
NjksaW50IGFyZzM5NzAsaW50IGFyZzM5NzEsaW50IGFyZzM5NzIsaW50IGFyZzM5NzMsaW50IGFy
ZzM5NzQsaW50IGFyZzM5NzUsaW50IGFyZzM5NzYsaW50IGFyZzM5NzcsaW50IGFyZzM5NzgsaW50
IGFyZzM5NzksaW50IGFyZzM5ODAsaW50IGFyZzM5ODEsaW50IGFyZzM5ODIsaW50IGFyZzM5ODMs
aW50IGFyZzM5ODQsaW50IGFyZzM5ODUsaW50IGFyZzM5ODYsaW50IGFyZzM5ODcsaW50IGFyZzM5
ODgsaW50IGFyZzM5ODksaW50IGFyZzM5OTAsaW50IGFyZzM5OTEsaW50IGFyZzM5OTIsaW50IGFy
ZzM5OTMsaW50IGFyZzM5OTQsaW50IGFyZzM5OTUsaW50IGFyZzM5OTYsaW50IGFyZzM5OTcsaW50
IGFyZzM5OTgsaW50IGFyZzM5OTksaW50IGFyZzQwMDAsaW50IGFyZzQwMDEsaW50IGFyZzQwMDIs
aW50IGFyZzQwMDMsaW50IGFyZzQwMDQsaW50IGFyZzQwMDUsaW50IGFyZzQwMDYsaW50IGFyZzQw
MDcsaW50IGFyZzQwMDgsaW50IGFyZzQwMDksaW50IGFyZzQwMTAsaW50IGFyZzQwMTEsaW50IGFy
ZzQwMTIsaW50IGFyZzQwMTMsaW50IGFyZzQwMTQsaW50IGFyZzQwMTUsaW50IGFyZzQwMTYsaW50
IGFyZzQwMTcsaW50IGFyZzQwMTgsaW50IGFyZzQwMTksaW50IGFyZzQwMjAsaW50IGFyZzQwMjEs
aW50IGFyZzQwMjIsaW50IGFyZzQwMjMsaW50IGFyZzQwMjQsaW50IGFyZzQwMjUsaW50IGFyZzQw
MjYsaW50IGFyZzQwMjcsaW50IGFyZzQwMjgsaW50IGFyZzQwMjksaW50IGFyZzQwMzAsaW50IGFy
ZzQwMzEsaW50IGFyZzQwMzIsaW50IGFyZzQwMzMsaW50IGFyZzQwMzQsaW50IGFyZzQwMzUsaW50
IGFyZzQwMzYsaW50IGFyZzQwMzcsaW50IGFyZzQwMzgsaW50IGFyZzQwMzksaW50IGFyZzQwNDAs
aW50IGFyZzQwNDEsaW50IGFyZzQwNDIsaW50IGFyZzQwNDMsaW50IGFyZzQwNDQsaW50IGFyZzQw
NDUsaW50IGFyZzQwNDYsaW50IGFyZzQwNDcsaW50IGFyZzQwNDgsaW50IGFyZzQwNDksaW50IGFy
ZzQwNTAsaW50IGFyZzQwNTEsaW50IGFyZzQwNTIsaW50IGFyZzQwNTMsaW50IGFyZzQwNTQsaW50
IGFyZzQwNTUsaW50IGFyZzQwNTYsaW50IGFyZzQwNTcsaW50IGFyZzQwNTgsaW50IGFyZzQwNTks
aW50IGFyZzQwNjAsaW50IGFyZzQwNjEsaW50IGFyZzQwNjIsaW50IGFyZzQwNjMsaW50IGFyZzQw
NjQsaW50IGFyZzQwNjUsaW50IGFyZzQwNjYsaW50IGFyZzQwNjcsaW50IGFyZzQwNjgsaW50IGFy
ZzQwNjksaW50IGFyZzQwNzAsaW50IGFyZzQwNzEsaW50IGFyZzQwNzIsaW50IGFyZzQwNzMsaW50
IGFyZzQwNzQsaW50IGFyZzQwNzUsaW50IGFyZzQwNzYsaW50IGFyZzQwNzcsaW50IGFyZzQwNzgs
aW50IGFyZzQwNzksaW50IGFyZzQwODAsaW50IGFyZzQwODEsaW50IGFyZzQwODIsaW50IGFyZzQw
ODMsaW50IGFyZzQwODQsaW50IGFyZzQwODUsaW50IGFyZzQwODYsaW50IGFyZzQwODcsaW50IGFy
ZzQwODgsaW50IGFyZzQwODksaW50IGFyZzQwOTAsaW50IGFyZzQwOTEsaW50IGFyZzQwOTIsaW50
IGFyZzQwOTMsaW50IGFyZzQwOTQsaW50IGFyZzQwOTUsaW50IGFyZzQwOTYsaW50IGFyZzQwOTcs
aW50IGFyZzQwOTgsaW50IGFyZzQwOTksaW50IGFyZzQxMDAsaW50IGFyZzQxMDEsaW50IGFyZzQx
MDIsaW50IGFyZzQxMDMsaW50IGFyZzQxMDQsaW50IGFyZzQxMDUsaW50IGFyZzQxMDYsaW50IGFy
ZzQxMDcsaW50IGFyZzQxMDgsaW50IGFyZzQxMDksaW50IGFyZzQxMTAsaW50IGFyZzQxMTEsaW50
IGFyZzQxMTIsaW50IGFyZzQxMTMsaW50IGFyZzQxMTQsaW50IGFyZzQxMTUsaW50IGFyZzQxMTYs
aW50IGFyZzQxMTcsaW50IGFyZzQxMTgsaW50IGFyZzQxMTksaW50IGFyZzQxMjAsaW50IGFyZzQx
MjEsaW50IGFyZzQxMjIsaW50IGFyZzQxMjMsaW50IGFyZzQxMjQsaW50IGFyZzQxMjUsaW50IGFy
ZzQxMjYsaW50IGFyZzQxMjcsaW50IGFyZzQxMjgsaW50IGFyZzQxMjksaW50IGFyZzQxMzAsaW50
IGFyZzQxMzEsaW50IGFyZzQxMzIsaW50IGFyZzQxMzMsaW50IGFyZzQxMzQsaW50IGFyZzQxMzUs
aW50IGFyZzQxMzYsaW50IGFyZzQxMzcsaW50IGFyZzQxMzgsaW50IGFyZzQxMzksaW50IGFyZzQx
NDAsaW50IGFyZzQxNDEsaW50IGFyZzQxNDIsaW50IGFyZzQxNDMsaW50IGFyZzQxNDQsaW50IGFy
ZzQxNDUsaW50IGFyZzQxNDYsaW50IGFyZzQxNDcsaW50IGFyZzQxNDgsaW50IGFyZzQxNDksaW50
IGFyZzQxNTAsaW50IGFyZzQxNTEsaW50IGFyZzQxNTIsaW50IGFyZzQxNTMsaW50IGFyZzQxNTQs
aW50IGFyZzQxNTUsaW50IGFyZzQxNTYsaW50IGFyZzQxNTcsaW50IGFyZzQxNTgsaW50IGFyZzQx
NTksaW50IGFyZzQxNjAsaW50IGFyZzQxNjEsaW50IGFyZzQxNjIsaW50IGFyZzQxNjMsaW50IGFy
ZzQxNjQsaW50IGFyZzQxNjUsaW50IGFyZzQxNjYsaW50IGFyZzQxNjcsaW50IGFyZzQxNjgsaW50
IGFyZzQxNjksaW50IGFyZzQxNzAsaW50IGFyZzQxNzEsaW50IGFyZzQxNzIsaW50IGFyZzQxNzMs
aW50IGFyZzQxNzQsaW50IGFyZzQxNzUsaW50IGFyZzQxNzYsaW50IGFyZzQxNzcsaW50IGFyZzQx
NzgsaW50IGFyZzQxNzksaW50IGFyZzQxODAsaW50IGFyZzQxODEsaW50IGFyZzQxODIsaW50IGFy
ZzQxODMsaW50IGFyZzQxODQsaW50IGFyZzQxODUsaW50IGFyZzQxODYsaW50IGFyZzQxODcsaW50
IGFyZzQxODgsaW50IGFyZzQxODksaW50IGFyZzQxOTAsaW50IGFyZzQxOTEsaW50IGFyZzQxOTIs
aW50IGFyZzQxOTMsaW50IGFyZzQxOTQsaW50IGFyZzQxOTUsaW50IGFyZzQxOTYsaW50IGFyZzQx
OTcsaW50IGFyZzQxOTgsaW50IGFyZzQxOTksaW50IGFyZzQyMDAsaW50IGFyZzQyMDEsaW50IGFy
ZzQyMDIsaW50IGFyZzQyMDMsaW50IGFyZzQyMDQsaW50IGFyZzQyMDUsaW50IGFyZzQyMDYsaW50
IGFyZzQyMDcsaW50IGFyZzQyMDgsaW50IGFyZzQyMDksaW50IGFyZzQyMTAsaW50IGFyZzQyMTEs
aW50IGFyZzQyMTIsaW50IGFyZzQyMTMsaW50IGFyZzQyMTQsaW50IGFyZzQyMTUsaW50IGFyZzQy
MTYsaW50IGFyZzQyMTcsaW50IGFyZzQyMTgsaW50IGFyZzQyMTksaW50IGFyZzQyMjAsaW50IGFy
ZzQyMjEsaW50IGFyZzQyMjIsaW50IGFyZzQyMjMsaW50IGFyZzQyMjQsaW50IGFyZzQyMjUsaW50
IGFyZzQyMjYsaW50IGFyZzQyMjcsaW50IGFyZzQyMjgsaW50IGFyZzQyMjksaW50IGFyZzQyMzAs
aW50IGFyZzQyMzEsaW50IGFyZzQyMzIsaW50IGFyZzQyMzMsaW50IGFyZzQyMzQsaW50IGFyZzQy
MzUsaW50IGFyZzQyMzYsaW50IGFyZzQyMzcsaW50IGFyZzQyMzgsaW50IGFyZzQyMzksaW50IGFy
ZzQyNDAsaW50IGFyZzQyNDEsaW50IGFyZzQyNDIsaW50IGFyZzQyNDMsaW50IGFyZzQyNDQsaW50
IGFyZzQyNDUsaW50IGFyZzQyNDYsaW50IGFyZzQyNDcsaW50IGFyZzQyNDgsaW50IGFyZzQyNDks
aW50IGFyZzQyNTAsaW50IGFyZzQyNTEsaW50IGFyZzQyNTIsaW50IGFyZzQyNTMsaW50IGFyZzQy
NTQsaW50IGFyZzQyNTUsaW50IGFyZzQyNTYsaW50IGFyZzQyNTcsaW50IGFyZzQyNTgsaW50IGFy
ZzQyNTksaW50IGFyZzQyNjAsaW50IGFyZzQyNjEsaW50IGFyZzQyNjIsaW50IGFyZzQyNjMsaW50
IGFyZzQyNjQsaW50IGFyZzQyNjUsaW50IGFyZzQyNjYsaW50IGFyZzQyNjcsaW50IGFyZzQyNjgs
aW50IGFyZzQyNjksaW50IGFyZzQyNzAsaW50IGFyZzQyNzEsaW50IGFyZzQyNzIsaW50IGFyZzQy
NzMsaW50IGFyZzQyNzQsaW50IGFyZzQyNzUsaW50IGFyZzQyNzYsaW50IGFyZzQyNzcsaW50IGFy
ZzQyNzgsaW50IGFyZzQyNzksaW50IGFyZzQyODAsaW50IGFyZzQyODEsaW50IGFyZzQyODIsaW50
IGFyZzQyODMsaW50IGFyZzQyODQsaW50IGFyZzQyODUsaW50IGFyZzQyODYsaW50IGFyZzQyODcs
aW50IGFyZzQyODgsaW50IGFyZzQyODksaW50IGFyZzQyOTAsaW50IGFyZzQyOTEsaW50IGFyZzQy
OTIsaW50IGFyZzQyOTMsaW50IGFyZzQyOTQsaW50IGFyZzQyOTUsaW50IGFyZzQyOTYsaW50IGFy
ZzQyOTcsaW50IGFyZzQyOTgsaW50IGFyZzQyOTksaW50IGFyZzQzMDAsaW50IGFyZzQzMDEsaW50
IGFyZzQzMDIsaW50IGFyZzQzMDMsaW50IGFyZzQzMDQsaW50IGFyZzQzMDUsaW50IGFyZzQzMDYs
aW50IGFyZzQzMDcsaW50IGFyZzQzMDgsaW50IGFyZzQzMDksaW50IGFyZzQzMTAsaW50IGFyZzQz
MTEsaW50IGFyZzQzMTIsaW50IGFyZzQzMTMsaW50IGFyZzQzMTQsaW50IGFyZzQzMTUsaW50IGFy
ZzQzMTYsaW50IGFyZzQzMTcsaW50IGFyZzQzMTgsaW50IGFyZzQzMTksaW50IGFyZzQzMjAsaW50
IGFyZzQzMjEsaW50IGFyZzQzMjIsaW50IGFyZzQzMjMsaW50IGFyZzQzMjQsaW50IGFyZzQzMjUs
aW50IGFyZzQzMjYsaW50IGFyZzQzMjcsaW50IGFyZzQzMjgsaW50IGFyZzQzMjksaW50IGFyZzQz
MzAsaW50IGFyZzQzMzEsaW50IGFyZzQzMzIsaW50IGFyZzQzMzMsaW50IGFyZzQzMzQsaW50IGFy
ZzQzMzUsaW50IGFyZzQzMzYsaW50IGFyZzQzMzcsaW50IGFyZzQzMzgsaW50IGFyZzQzMzksaW50
IGFyZzQzNDAsaW50IGFyZzQzNDEsaW50IGFyZzQzNDIsaW50IGFyZzQzNDMsaW50IGFyZzQzNDQs
aW50IGFyZzQzNDUsaW50IGFyZzQzNDYsaW50IGFyZzQzNDcsaW50IGFyZzQzNDgsaW50IGFyZzQz
NDksaW50IGFyZzQzNTAsaW50IGFyZzQzNTEsaW50IGFyZzQzNTIsaW50IGFyZzQzNTMsaW50IGFy
ZzQzNTQsaW50IGFyZzQzNTUsaW50IGFyZzQzNTYsaW50IGFyZzQzNTcsaW50IGFyZzQzNTgsaW50
IGFyZzQzNTksaW50IGFyZzQzNjAsaW50IGFyZzQzNjEsaW50IGFyZzQzNjIsaW50IGFyZzQzNjMs
aW50IGFyZzQzNjQsaW50IGFyZzQzNjUsaW50IGFyZzQzNjYsaW50IGFyZzQzNjcsaW50IGFyZzQz
NjgsaW50IGFyZzQzNjksaW50IGFyZzQzNzAsaW50IGFyZzQzNzEsaW50IGFyZzQzNzIsaW50IGFy
ZzQzNzMsaW50IGFyZzQzNzQsaW50IGFyZzQzNzUsaW50IGFyZzQzNzYsaW50IGFyZzQzNzcsaW50
IGFyZzQzNzgsaW50IGFyZzQzNzksaW50IGFyZzQzODAsaW50IGFyZzQzODEsaW50IGFyZzQzODIs
aW50IGFyZzQzODMsaW50IGFyZzQzODQsaW50IGFyZzQzODUsaW50IGFyZzQzODYsaW50IGFyZzQz
ODcsaW50IGFyZzQzODgsaW50IGFyZzQzODksaW50IGFyZzQzOTAsaW50IGFyZzQzOTEsaW50IGFy
ZzQzOTIsaW50IGFyZzQzOTMsaW50IGFyZzQzOTQsaW50IGFyZzQzOTUsaW50IGFyZzQzOTYsaW50
IGFyZzQzOTcsaW50IGFyZzQzOTgsaW50IGFyZzQzOTksaW50IGFyZzQ0MDAsaW50IGFyZzQ0MDEs
aW50IGFyZzQ0MDIsaW50IGFyZzQ0MDMsaW50IGFyZzQ0MDQsaW50IGFyZzQ0MDUsaW50IGFyZzQ0
MDYsaW50IGFyZzQ0MDcsaW50IGFyZzQ0MDgsaW50IGFyZzQ0MDksaW50IGFyZzQ0MTAsaW50IGFy
ZzQ0MTEsaW50IGFyZzQ0MTIsaW50IGFyZzQ0MTMsaW50IGFyZzQ0MTQsaW50IGFyZzQ0MTUsaW50
IGFyZzQ0MTYsaW50IGFyZzQ0MTcsaW50IGFyZzQ0MTgsaW50IGFyZzQ0MTksaW50IGFyZzQ0MjAs
aW50IGFyZzQ0MjEsaW50IGFyZzQ0MjIsaW50IGFyZzQ0MjMsaW50IGFyZzQ0MjQsaW50IGFyZzQ0
MjUsaW50IGFyZzQ0MjYsaW50IGFyZzQ0MjcsaW50IGFyZzQ0MjgsaW50IGFyZzQ0MjksaW50IGFy
ZzQ0MzAsaW50IGFyZzQ0MzEsaW50IGFyZzQ0MzIsaW50IGFyZzQ0MzMsaW50IGFyZzQ0MzQsaW50
IGFyZzQ0MzUsaW50IGFyZzQ0MzYsaW50IGFyZzQ0MzcsaW50IGFyZzQ0MzgsaW50IGFyZzQ0Mzks
aW50IGFyZzQ0NDAsaW50IGFyZzQ0NDEsaW50IGFyZzQ0NDIsaW50IGFyZzQ0NDMsaW50IGFyZzQ0
NDQsaW50IGFyZzQ0NDUsaW50IGFyZzQ0NDYsaW50IGFyZzQ0NDcsaW50IGFyZzQ0NDgsaW50IGFy
ZzQ0NDksaW50IGFyZzQ0NTAsaW50IGFyZzQ0NTEsaW50IGFyZzQ0NTIsaW50IGFyZzQ0NTMsaW50
IGFyZzQ0NTQsaW50IGFyZzQ0NTUsaW50IGFyZzQ0NTYsaW50IGFyZzQ0NTcsaW50IGFyZzQ0NTgs
aW50IGFyZzQ0NTksaW50IGFyZzQ0NjAsaW50IGFyZzQ0NjEsaW50IGFyZzQ0NjIsaW50IGFyZzQ0
NjMsaW50IGFyZzQ0NjQsaW50IGFyZzQ0NjUsaW50IGFyZzQ0NjYsaW50IGFyZzQ0NjcsaW50IGFy
ZzQ0NjgsaW50IGFyZzQ0NjksaW50IGFyZzQ0NzAsaW50IGFyZzQ0NzEsaW50IGFyZzQ0NzIsaW50
IGFyZzQ0NzMsaW50IGFyZzQ0NzQsaW50IGFyZzQ0NzUsaW50IGFyZzQ0NzYsaW50IGFyZzQ0Nzcs
aW50IGFyZzQ0NzgsaW50IGFyZzQ0NzksaW50IGFyZzQ0ODAsaW50IGFyZzQ0ODEsaW50IGFyZzQ0
ODIsaW50IGFyZzQ0ODMsaW50IGFyZzQ0ODQsaW50IGFyZzQ0ODUsaW50IGFyZzQ0ODYsaW50IGFy
ZzQ0ODcsaW50IGFyZzQ0ODgsaW50IGFyZzQ0ODksaW50IGFyZzQ0OTAsaW50IGFyZzQ0OTEsaW50
IGFyZzQ0OTIsaW50IGFyZzQ0OTMsaW50IGFyZzQ0OTQsaW50IGFyZzQ0OTUsaW50IGFyZzQ0OTYs
aW50IGFyZzQ0OTcsaW50IGFyZzQ0OTgsaW50IGFyZzQ0OTksaW50IGFyZzQ1MDAsaW50IGFyZzQ1
MDEsaW50IGFyZzQ1MDIsaW50IGFyZzQ1MDMsaW50IGFyZzQ1MDQsaW50IGFyZzQ1MDUsaW50IGFy
ZzQ1MDYsaW50IGFyZzQ1MDcsaW50IGFyZzQ1MDgsaW50IGFyZzQ1MDksaW50IGFyZzQ1MTAsaW50
IGFyZzQ1MTEsaW50IGFyZzQ1MTIsaW50IGFyZzQ1MTMsaW50IGFyZzQ1MTQsaW50IGFyZzQ1MTUs
aW50IGFyZzQ1MTYsaW50IGFyZzQ1MTcsaW50IGFyZzQ1MTgsaW50IGFyZzQ1MTksaW50IGFyZzQ1
MjAsaW50IGFyZzQ1MjEsaW50IGFyZzQ1MjIsaW50IGFyZzQ1MjMsaW50IGFyZzQ1MjQsaW50IGFy
ZzQ1MjUsaW50IGFyZzQ1MjYsaW50IGFyZzQ1MjcsaW50IGFyZzQ1MjgsaW50IGFyZzQ1MjksaW50
IGFyZzQ1MzAsaW50IGFyZzQ1MzEsaW50IGFyZzQ1MzIsaW50IGFyZzQ1MzMsaW50IGFyZzQ1MzQs
aW50IGFyZzQ1MzUsaW50IGFyZzQ1MzYsaW50IGFyZzQ1MzcsaW50IGFyZzQ1MzgsaW50IGFyZzQ1
MzksaW50IGFyZzQ1NDAsaW50IGFyZzQ1NDEsaW50IGFyZzQ1NDIsaW50IGFyZzQ1NDMsaW50IGFy
ZzQ1NDQsaW50IGFyZzQ1NDUsaW50IGFyZzQ1NDYsaW50IGFyZzQ1NDcsaW50IGFyZzQ1NDgsaW50
IGFyZzQ1NDksaW50IGFyZzQ1NTAsaW50IGFyZzQ1NTEsaW50IGFyZzQ1NTIsaW50IGFyZzQ1NTMs
aW50IGFyZzQ1NTQsaW50IGFyZzQ1NTUsaW50IGFyZzQ1NTYsaW50IGFyZzQ1NTcsaW50IGFyZzQ1
NTgsaW50IGFyZzQ1NTksaW50IGFyZzQ1NjAsaW50IGFyZzQ1NjEsaW50IGFyZzQ1NjIsaW50IGFy
ZzQ1NjMsaW50IGFyZzQ1NjQsaW50IGFyZzQ1NjUsaW50IGFyZzQ1NjYsaW50IGFyZzQ1NjcsaW50
IGFyZzQ1NjgsaW50IGFyZzQ1NjksaW50IGFyZzQ1NzAsaW50IGFyZzQ1NzEsaW50IGFyZzQ1NzIs
aW50IGFyZzQ1NzMsaW50IGFyZzQ1NzQsaW50IGFyZzQ1NzUsaW50IGFyZzQ1NzYsaW50IGFyZzQ1
NzcsaW50IGFyZzQ1NzgsaW50IGFyZzQ1NzksaW50IGFyZzQ1ODAsaW50IGFyZzQ1ODEsaW50IGFy
ZzQ1ODIsaW50IGFyZzQ1ODMsaW50IGFyZzQ1ODQsaW50IGFyZzQ1ODUsaW50IGFyZzQ1ODYsaW50
IGFyZzQ1ODcsaW50IGFyZzQ1ODgsaW50IGFyZzQ1ODksaW50IGFyZzQ1OTAsaW50IGFyZzQ1OTEs
aW50IGFyZzQ1OTIsaW50IGFyZzQ1OTMsaW50IGFyZzQ1OTQsaW50IGFyZzQ1OTUsaW50IGFyZzQ1
OTYsaW50IGFyZzQ1OTcsaW50IGFyZzQ1OTgsaW50IGFyZzQ1OTksaW50IGFyZzQ2MDAsaW50IGFy
ZzQ2MDEsaW50IGFyZzQ2MDIsaW50IGFyZzQ2MDMsaW50IGFyZzQ2MDQsaW50IGFyZzQ2MDUsaW50
IGFyZzQ2MDYsaW50IGFyZzQ2MDcsaW50IGFyZzQ2MDgsaW50IGFyZzQ2MDksaW50IGFyZzQ2MTAs
aW50IGFyZzQ2MTEsaW50IGFyZzQ2MTIsaW50IGFyZzQ2MTMsaW50IGFyZzQ2MTQsaW50IGFyZzQ2
MTUsaW50IGFyZzQ2MTYsaW50IGFyZzQ2MTcsaW50IGFyZzQ2MTgsaW50IGFyZzQ2MTksaW50IGFy
ZzQ2MjAsaW50IGFyZzQ2MjEsaW50IGFyZzQ2MjIsaW50IGFyZzQ2MjMsaW50IGFyZzQ2MjQsaW50
IGFyZzQ2MjUsaW50IGFyZzQ2MjYsaW50IGFyZzQ2MjcsaW50IGFyZzQ2MjgsaW50IGFyZzQ2Mjks
aW50IGFyZzQ2MzAsaW50IGFyZzQ2MzEsaW50IGFyZzQ2MzIsaW50IGFyZzQ2MzMsaW50IGFyZzQ2
MzQsaW50IGFyZzQ2MzUsaW50IGFyZzQ2MzYsaW50IGFyZzQ2MzcsaW50IGFyZzQ2MzgsaW50IGFy
ZzQ2MzksaW50IGFyZzQ2NDAsaW50IGFyZzQ2NDEsaW50IGFyZzQ2NDIsaW50IGFyZzQ2NDMsaW50
IGFyZzQ2NDQsaW50IGFyZzQ2NDUsaW50IGFyZzQ2NDYsaW50IGFyZzQ2NDcsaW50IGFyZzQ2NDgs
aW50IGFyZzQ2NDksaW50IGFyZzQ2NTAsaW50IGFyZzQ2NTEsaW50IGFyZzQ2NTIsaW50IGFyZzQ2
NTMsaW50IGFyZzQ2NTQsaW50IGFyZzQ2NTUsaW50IGFyZzQ2NTYsaW50IGFyZzQ2NTcsaW50IGFy
ZzQ2NTgsaW50IGFyZzQ2NTksaW50IGFyZzQ2NjAsaW50IGFyZzQ2NjEsaW50IGFyZzQ2NjIsaW50
IGFyZzQ2NjMsaW50IGFyZzQ2NjQsaW50IGFyZzQ2NjUsaW50IGFyZzQ2NjYsaW50IGFyZzQ2Njcs
aW50IGFyZzQ2NjgsaW50IGFyZzQ2NjksaW50IGFyZzQ2NzAsaW50IGFyZzQ2NzEsaW50IGFyZzQ2
NzIsaW50IGFyZzQ2NzMsaW50IGFyZzQ2NzQsaW50IGFyZzQ2NzUsaW50IGFyZzQ2NzYsaW50IGFy
ZzQ2NzcsaW50IGFyZzQ2NzgsaW50IGFyZzQ2NzksaW50IGFyZzQ2ODAsaW50IGFyZzQ2ODEsaW50
IGFyZzQ2ODIsaW50IGFyZzQ2ODMsaW50IGFyZzQ2ODQsaW50IGFyZzQ2ODUsaW50IGFyZzQ2ODYs
aW50IGFyZzQ2ODcsaW50IGFyZzQ2ODgsaW50IGFyZzQ2ODksaW50IGFyZzQ2OTAsaW50IGFyZzQ2
OTEsaW50IGFyZzQ2OTIsaW50IGFyZzQ2OTMsaW50IGFyZzQ2OTQsaW50IGFyZzQ2OTUsaW50IGFy
ZzQ2OTYsaW50IGFyZzQ2OTcsaW50IGFyZzQ2OTgsaW50IGFyZzQ2OTksaW50IGFyZzQ3MDAsaW50
IGFyZzQ3MDEsaW50IGFyZzQ3MDIsaW50IGFyZzQ3MDMsaW50IGFyZzQ3MDQsaW50IGFyZzQ3MDUs
aW50IGFyZzQ3MDYsaW50IGFyZzQ3MDcsaW50IGFyZzQ3MDgsaW50IGFyZzQ3MDksaW50IGFyZzQ3
MTAsaW50IGFyZzQ3MTEsaW50IGFyZzQ3MTIsaW50IGFyZzQ3MTMsaW50IGFyZzQ3MTQsaW50IGFy
ZzQ3MTUsaW50IGFyZzQ3MTYsaW50IGFyZzQ3MTcsaW50IGFyZzQ3MTgsaW50IGFyZzQ3MTksaW50
IGFyZzQ3MjAsaW50IGFyZzQ3MjEsaW50IGFyZzQ3MjIsaW50IGFyZzQ3MjMsaW50IGFyZzQ3MjQs
aW50IGFyZzQ3MjUsaW50IGFyZzQ3MjYsaW50IGFyZzQ3MjcsaW50IGFyZzQ3MjgsaW50IGFyZzQ3
MjksaW50IGFyZzQ3MzAsaW50IGFyZzQ3MzEsaW50IGFyZzQ3MzIsaW50IGFyZzQ3MzMsaW50IGFy
ZzQ3MzQsaW50IGFyZzQ3MzUsaW50IGFyZzQ3MzYsaW50IGFyZzQ3MzcsaW50IGFyZzQ3MzgsaW50
IGFyZzQ3MzksaW50IGFyZzQ3NDAsaW50IGFyZzQ3NDEsaW50IGFyZzQ3NDIsaW50IGFyZzQ3NDMs
aW50IGFyZzQ3NDQsaW50IGFyZzQ3NDUsaW50IGFyZzQ3NDYsaW50IGFyZzQ3NDcsaW50IGFyZzQ3
NDgsaW50IGFyZzQ3NDksaW50IGFyZzQ3NTAsaW50IGFyZzQ3NTEsaW50IGFyZzQ3NTIsaW50IGFy
ZzQ3NTMsaW50IGFyZzQ3NTQsaW50IGFyZzQ3NTUsaW50IGFyZzQ3NTYsaW50IGFyZzQ3NTcsaW50
IGFyZzQ3NTgsaW50IGFyZzQ3NTksaW50IGFyZzQ3NjAsaW50IGFyZzQ3NjEsaW50IGFyZzQ3NjIs
aW50IGFyZzQ3NjMsaW50IGFyZzQ3NjQsaW50IGFyZzQ3NjUsaW50IGFyZzQ3NjYsaW50IGFyZzQ3
NjcsaW50IGFyZzQ3NjgsaW50IGFyZzQ3NjksaW50IGFyZzQ3NzAsaW50IGFyZzQ3NzEsaW50IGFy
ZzQ3NzIsaW50IGFyZzQ3NzMsaW50IGFyZzQ3NzQsaW50IGFyZzQ3NzUsaW50IGFyZzQ3NzYsaW50
IGFyZzQ3NzcsaW50IGFyZzQ3NzgsaW50IGFyZzQ3NzksaW50IGFyZzQ3ODAsaW50IGFyZzQ3ODEs
aW50IGFyZzQ3ODIsaW50IGFyZzQ3ODMsaW50IGFyZzQ3ODQsaW50IGFyZzQ3ODUsaW50IGFyZzQ3
ODYsaW50IGFyZzQ3ODcsaW50IGFyZzQ3ODgsaW50IGFyZzQ3ODksaW50IGFyZzQ3OTAsaW50IGFy
ZzQ3OTEsaW50IGFyZzQ3OTIsaW50IGFyZzQ3OTMsaW50IGFyZzQ3OTQsaW50IGFyZzQ3OTUsaW50
IGFyZzQ3OTYsaW50IGFyZzQ3OTcsaW50IGFyZzQ3OTgsaW50IGFyZzQ3OTksaW50IGFyZzQ4MDAs
aW50IGFyZzQ4MDEsaW50IGFyZzQ4MDIsaW50IGFyZzQ4MDMsaW50IGFyZzQ4MDQsaW50IGFyZzQ4
MDUsaW50IGFyZzQ4MDYsaW50IGFyZzQ4MDcsaW50IGFyZzQ4MDgsaW50IGFyZzQ4MDksaW50IGFy
ZzQ4MTAsaW50IGFyZzQ4MTEsaW50IGFyZzQ4MTIsaW50IGFyZzQ4MTMsaW50IGFyZzQ4MTQsaW50
IGFyZzQ4MTUsaW50IGFyZzQ4MTYsaW50IGFyZzQ4MTcsaW50IGFyZzQ4MTgsaW50IGFyZzQ4MTks
aW50IGFyZzQ4MjAsaW50IGFyZzQ4MjEsaW50IGFyZzQ4MjIsaW50IGFyZzQ4MjMsaW50IGFyZzQ4
MjQsaW50IGFyZzQ4MjUsaW50IGFyZzQ4MjYsaW50IGFyZzQ4MjcsaW50IGFyZzQ4MjgsaW50IGFy
ZzQ4MjksaW50IGFyZzQ4MzAsaW50IGFyZzQ4MzEsaW50IGFyZzQ4MzIsaW50IGFyZzQ4MzMsaW50
IGFyZzQ4MzQsaW50IGFyZzQ4MzUsaW50IGFyZzQ4MzYsaW50IGFyZzQ4MzcsaW50IGFyZzQ4Mzgs
aW50IGFyZzQ4MzksaW50IGFyZzQ4NDAsaW50IGFyZzQ4NDEsaW50IGFyZzQ4NDIsaW50IGFyZzQ4
NDMsaW50IGFyZzQ4NDQsaW50IGFyZzQ4NDUsaW50IGFyZzQ4NDYsaW50IGFyZzQ4NDcsaW50IGFy
ZzQ4NDgsaW50IGFyZzQ4NDksaW50IGFyZzQ4NTAsaW50IGFyZzQ4NTEsaW50IGFyZzQ4NTIsaW50
IGFyZzQ4NTMsaW50IGFyZzQ4NTQsaW50IGFyZzQ4NTUsaW50IGFyZzQ4NTYsaW50IGFyZzQ4NTcs
aW50IGFyZzQ4NTgsaW50IGFyZzQ4NTksaW50IGFyZzQ4NjAsaW50IGFyZzQ4NjEsaW50IGFyZzQ4
NjIsaW50IGFyZzQ4NjMsaW50IGFyZzQ4NjQsaW50IGFyZzQ4NjUsaW50IGFyZzQ4NjYsaW50IGFy
ZzQ4NjcsaW50IGFyZzQ4NjgsaW50IGFyZzQ4NjksaW50IGFyZzQ4NzAsaW50IGFyZzQ4NzEsaW50
IGFyZzQ4NzIsaW50IGFyZzQ4NzMsaW50IGFyZzQ4NzQsaW50IGFyZzQ4NzUsaW50IGFyZzQ4NzYs
aW50IGFyZzQ4NzcsaW50IGFyZzQ4NzgsaW50IGFyZzQ4NzksaW50IGFyZzQ4ODAsaW50IGFyZzQ4
ODEsaW50IGFyZzQ4ODIsaW50IGFyZzQ4ODMsaW50IGFyZzQ4ODQsaW50IGFyZzQ4ODUsaW50IGFy
ZzQ4ODYsaW50IGFyZzQ4ODcsaW50IGFyZzQ4ODgsaW50IGFyZzQ4ODksaW50IGFyZzQ4OTAsaW50
IGFyZzQ4OTEsaW50IGFyZzQ4OTIsaW50IGFyZzQ4OTMsaW50IGFyZzQ4OTQsaW50IGFyZzQ4OTUs
aW50IGFyZzQ4OTYsaW50IGFyZzQ4OTcsaW50IGFyZzQ4OTgsaW50IGFyZzQ4OTksaW50IGFyZzQ5
MDAsaW50IGFyZzQ5MDEsaW50IGFyZzQ5MDIsaW50IGFyZzQ5MDMsaW50IGFyZzQ5MDQsaW50IGFy
ZzQ5MDUsaW50IGFyZzQ5MDYsaW50IGFyZzQ5MDcsaW50IGFyZzQ5MDgsaW50IGFyZzQ5MDksaW50
IGFyZzQ5MTAsaW50IGFyZzQ5MTEsaW50IGFyZzQ5MTIsaW50IGFyZzQ5MTMsaW50IGFyZzQ5MTQs
aW50IGFyZzQ5MTUsaW50IGFyZzQ5MTYsaW50IGFyZzQ5MTcsaW50IGFyZzQ5MTgsaW50IGFyZzQ5
MTksaW50IGFyZzQ5MjAsaW50IGFyZzQ5MjEsaW50IGFyZzQ5MjIsaW50IGFyZzQ5MjMsaW50IGFy
ZzQ5MjQsaW50IGFyZzQ5MjUsaW50IGFyZzQ5MjYsaW50IGFyZzQ5MjcsaW50IGFyZzQ5MjgsaW50
IGFyZzQ5MjksaW50IGFyZzQ5MzAsaW50IGFyZzQ5MzEsaW50IGFyZzQ5MzIsaW50IGFyZzQ5MzMs
aW50IGFyZzQ5MzQsaW50IGFyZzQ5MzUsaW50IGFyZzQ5MzYsaW50IGFyZzQ5MzcsaW50IGFyZzQ5
MzgsaW50IGFyZzQ5MzksaW50IGFyZzQ5NDAsaW50IGFyZzQ5NDEsaW50IGFyZzQ5NDIsaW50IGFy
ZzQ5NDMsaW50IGFyZzQ5NDQsaW50IGFyZzQ5NDUsaW50IGFyZzQ5NDYsaW50IGFyZzQ5NDcsaW50
IGFyZzQ5NDgsaW50IGFyZzQ5NDksaW50IGFyZzQ5NTAsaW50IGFyZzQ5NTEsaW50IGFyZzQ5NTIs
aW50IGFyZzQ5NTMsaW50IGFyZzQ5NTQsaW50IGFyZzQ5NTUsaW50IGFyZzQ5NTYsaW50IGFyZzQ5
NTcsaW50IGFyZzQ5NTgsaW50IGFyZzQ5NTksaW50IGFyZzQ5NjAsaW50IGFyZzQ5NjEsaW50IGFy
ZzQ5NjIsaW50IGFyZzQ5NjMsaW50IGFyZzQ5NjQsaW50IGFyZzQ5NjUsaW50IGFyZzQ5NjYsaW50
IGFyZzQ5NjcsaW50IGFyZzQ5NjgsaW50IGFyZzQ5NjksaW50IGFyZzQ5NzAsaW50IGFyZzQ5NzEs
aW50IGFyZzQ5NzIsaW50IGFyZzQ5NzMsaW50IGFyZzQ5NzQsaW50IGFyZzQ5NzUsaW50IGFyZzQ5
NzYsaW50IGFyZzQ5NzcsaW50IGFyZzQ5NzgsaW50IGFyZzQ5NzksaW50IGFyZzQ5ODAsaW50IGFy
ZzQ5ODEsaW50IGFyZzQ5ODIsaW50IGFyZzQ5ODMsaW50IGFyZzQ5ODQsaW50IGFyZzQ5ODUsaW50
IGFyZzQ5ODYsaW50IGFyZzQ5ODcsaW50IGFyZzQ5ODgsaW50IGFyZzQ5ODksaW50IGFyZzQ5OTAs
aW50IGFyZzQ5OTEsaW50IGFyZzQ5OTIsaW50IGFyZzQ5OTMsaW50IGFyZzQ5OTQsaW50IGFyZzQ5
OTUsaW50IGFyZzQ5OTYsaW50IGFyZzQ5OTcsaW50IGFyZzQ5OTgsaW50IGFyZzQ5OTkpIHsgcmV0
dXJuIGFyZzArYXJnMSthcmcyK2FyZzMrYXJnNCthcmc1K2FyZzYrYXJnNythcmc4K2FyZzkrYXJn
MTArYXJnMTErYXJnMTIrYXJnMTMrYXJnMTQrYXJnMTUrYXJnMTYrYXJnMTcrYXJnMTgrYXJnMTkr
YXJnMjArYXJnMjErYXJnMjIrYXJnMjMrYXJnMjQrYXJnMjUrYXJnMjYrYXJnMjcrYXJnMjgrYXJn
MjkrYXJnMzArYXJnMzErYXJnMzIrYXJnMzMrYXJnMzQrYXJnMzUrYXJnMzYrYXJnMzcrYXJnMzgr
YXJnMzkrYXJnNDArYXJnNDErYXJnNDIrYXJnNDMrYXJnNDQrYXJnNDUrYXJnNDYrYXJnNDcrYXJn
NDgrYXJnNDkrYXJnNTArYXJnNTErYXJnNTIrYXJnNTMrYXJnNTQrYXJnNTUrYXJnNTYrYXJnNTcr
YXJnNTgrYXJnNTkrYXJnNjArYXJnNjErYXJnNjIrYXJnNjMrYXJnNjQrYXJnNjUrYXJnNjYrYXJn
NjcrYXJnNjgrYXJnNjkrYXJnNzArYXJnNzErYXJnNzIrYXJnNzMrYXJnNzQrYXJnNzUrYXJnNzYr
YXJnNzcrYXJnNzgrYXJnNzkrYXJnODArYXJnODErYXJnODIrYXJnODMrYXJnODQrYXJnODUrYXJn
ODYrYXJnODcrYXJnODgrYXJnODkrYXJnOTArYXJnOTErYXJnOTIrYXJnOTMrYXJnOTQrYXJnOTUr
YXJnOTYrYXJnOTcrYXJnOTgrYXJnOTkrYXJnMTAwK2FyZzEwMSthcmcxMDIrYXJnMTAzK2FyZzEw
NCthcmcxMDUrYXJnMTA2K2FyZzEwNythcmcxMDgrYXJnMTA5K2FyZzExMCthcmcxMTErYXJnMTEy
K2FyZzExMythcmcxMTQrYXJnMTE1K2FyZzExNithcmcxMTcrYXJnMTE4K2FyZzExOSthcmcxMjAr
YXJnMTIxK2FyZzEyMithcmcxMjMrYXJnMTI0K2FyZzEyNSthcmcxMjYrYXJnMTI3K2FyZzEyOCth
cmcxMjkrYXJnMTMwK2FyZzEzMSthcmcxMzIrYXJnMTMzK2FyZzEzNCthcmcxMzUrYXJnMTM2K2Fy
ZzEzNythcmcxMzgrYXJnMTM5K2FyZzE0MCthcmcxNDErYXJnMTQyK2FyZzE0MythcmcxNDQrYXJn
MTQ1K2FyZzE0NithcmcxNDcrYXJnMTQ4K2FyZzE0OSthcmcxNTArYXJnMTUxK2FyZzE1Mithcmcx
NTMrYXJnMTU0K2FyZzE1NSthcmcxNTYrYXJnMTU3K2FyZzE1OCthcmcxNTkrYXJnMTYwK2FyZzE2
MSthcmcxNjIrYXJnMTYzK2FyZzE2NCthcmcxNjUrYXJnMTY2K2FyZzE2NythcmcxNjgrYXJnMTY5
K2FyZzE3MCthcmcxNzErYXJnMTcyK2FyZzE3MythcmcxNzQrYXJnMTc1K2FyZzE3NithcmcxNzcr
YXJnMTc4K2FyZzE3OSthcmcxODArYXJnMTgxK2FyZzE4MithcmcxODMrYXJnMTg0K2FyZzE4NSth
cmcxODYrYXJnMTg3K2FyZzE4OCthcmcxODkrYXJnMTkwK2FyZzE5MSthcmcxOTIrYXJnMTkzK2Fy
ZzE5NCthcmcxOTUrYXJnMTk2K2FyZzE5NythcmcxOTgrYXJnMTk5K2FyZzIwMCthcmcyMDErYXJn
MjAyK2FyZzIwMythcmcyMDQrYXJnMjA1K2FyZzIwNithcmcyMDcrYXJnMjA4K2FyZzIwOSthcmcy
MTArYXJnMjExK2FyZzIxMithcmcyMTMrYXJnMjE0K2FyZzIxNSthcmcyMTYrYXJnMjE3K2FyZzIx
OCthcmcyMTkrYXJnMjIwK2FyZzIyMSthcmcyMjIrYXJnMjIzK2FyZzIyNCthcmcyMjUrYXJnMjI2
K2FyZzIyNythcmcyMjgrYXJnMjI5K2FyZzIzMCthcmcyMzErYXJnMjMyK2FyZzIzMythcmcyMzQr
YXJnMjM1K2FyZzIzNithcmcyMzcrYXJnMjM4K2FyZzIzOSthcmcyNDArYXJnMjQxK2FyZzI0Mith
cmcyNDMrYXJnMjQ0K2FyZzI0NSthcmcyNDYrYXJnMjQ3K2FyZzI0OCthcmcyNDkrYXJnMjUwK2Fy
ZzI1MSthcmcyNTIrYXJnMjUzK2FyZzI1NCthcmcyNTUrYXJnMjU2K2FyZzI1NythcmcyNTgrYXJn
MjU5K2FyZzI2MCthcmcyNjErYXJnMjYyK2FyZzI2MythcmcyNjQrYXJnMjY1K2FyZzI2Nithcmcy
NjcrYXJnMjY4K2FyZzI2OSthcmcyNzArYXJnMjcxK2FyZzI3MithcmcyNzMrYXJnMjc0K2FyZzI3
NSthcmcyNzYrYXJnMjc3K2FyZzI3OCthcmcyNzkrYXJnMjgwK2FyZzI4MSthcmcyODIrYXJnMjgz
K2FyZzI4NCthcmcyODUrYXJnMjg2K2FyZzI4NythcmcyODgrYXJnMjg5K2FyZzI5MCthcmcyOTEr
YXJnMjkyK2FyZzI5MythcmcyOTQrYXJnMjk1K2FyZzI5NithcmcyOTcrYXJnMjk4K2FyZzI5OSth
cmczMDArYXJnMzAxK2FyZzMwMithcmczMDMrYXJnMzA0K2FyZzMwNSthcmczMDYrYXJnMzA3K2Fy
ZzMwOCthcmczMDkrYXJnMzEwK2FyZzMxMSthcmczMTIrYXJnMzEzK2FyZzMxNCthcmczMTUrYXJn
MzE2K2FyZzMxNythcmczMTgrYXJnMzE5K2FyZzMyMCthcmczMjErYXJnMzIyK2FyZzMyMythcmcz
MjQrYXJnMzI1K2FyZzMyNithcmczMjcrYXJnMzI4K2FyZzMyOSthcmczMzArYXJnMzMxK2FyZzMz
MithcmczMzMrYXJnMzM0K2FyZzMzNSthcmczMzYrYXJnMzM3K2FyZzMzOCthcmczMzkrYXJnMzQw
K2FyZzM0MSthcmczNDIrYXJnMzQzK2FyZzM0NCthcmczNDUrYXJnMzQ2K2FyZzM0NythcmczNDgr
YXJnMzQ5K2FyZzM1MCthcmczNTErYXJnMzUyK2FyZzM1MythcmczNTQrYXJnMzU1K2FyZzM1Nith
cmczNTcrYXJnMzU4K2FyZzM1OSthcmczNjArYXJnMzYxK2FyZzM2MithcmczNjMrYXJnMzY0K2Fy
ZzM2NSthcmczNjYrYXJnMzY3K2FyZzM2OCthcmczNjkrYXJnMzcwK2FyZzM3MSthcmczNzIrYXJn
MzczK2FyZzM3NCthcmczNzUrYXJnMzc2K2FyZzM3NythcmczNzgrYXJnMzc5K2FyZzM4MCthcmcz
ODErYXJnMzgyK2FyZzM4MythcmczODQrYXJnMzg1K2FyZzM4NithcmczODcrYXJnMzg4K2FyZzM4
OSthcmczOTArYXJnMzkxK2FyZzM5MithcmczOTMrYXJnMzk0K2FyZzM5NSthcmczOTYrYXJnMzk3
K2FyZzM5OCthcmczOTkrYXJnNDAwK2FyZzQwMSthcmc0MDIrYXJnNDAzK2FyZzQwNCthcmc0MDUr
YXJnNDA2K2FyZzQwNythcmc0MDgrYXJnNDA5K2FyZzQxMCthcmc0MTErYXJnNDEyK2FyZzQxMyth
cmc0MTQrYXJnNDE1K2FyZzQxNithcmc0MTcrYXJnNDE4K2FyZzQxOSthcmc0MjArYXJnNDIxK2Fy
ZzQyMithcmc0MjMrYXJnNDI0K2FyZzQyNSthcmc0MjYrYXJnNDI3K2FyZzQyOCthcmc0MjkrYXJn
NDMwK2FyZzQzMSthcmc0MzIrYXJnNDMzK2FyZzQzNCthcmc0MzUrYXJnNDM2K2FyZzQzNythcmc0
MzgrYXJnNDM5K2FyZzQ0MCthcmc0NDErYXJnNDQyK2FyZzQ0Mythcmc0NDQrYXJnNDQ1K2FyZzQ0
Nithcmc0NDcrYXJnNDQ4K2FyZzQ0OSthcmc0NTArYXJnNDUxK2FyZzQ1Mithcmc0NTMrYXJnNDU0
K2FyZzQ1NSthcmc0NTYrYXJnNDU3K2FyZzQ1OCthcmc0NTkrYXJnNDYwK2FyZzQ2MSthcmc0NjIr
YXJnNDYzK2FyZzQ2NCthcmc0NjUrYXJnNDY2K2FyZzQ2Nythcmc0NjgrYXJnNDY5K2FyZzQ3MCth
cmc0NzErYXJnNDcyK2FyZzQ3Mythcmc0NzQrYXJnNDc1K2FyZzQ3Nithcmc0NzcrYXJnNDc4K2Fy
ZzQ3OSthcmc0ODArYXJnNDgxK2FyZzQ4Mithcmc0ODMrYXJnNDg0K2FyZzQ4NSthcmc0ODYrYXJn
NDg3K2FyZzQ4OCthcmc0ODkrYXJnNDkwK2FyZzQ5MSthcmc0OTIrYXJnNDkzK2FyZzQ5NCthcmc0
OTUrYXJnNDk2K2FyZzQ5Nythcmc0OTgrYXJnNDk5K2FyZzUwMCthcmc1MDErYXJnNTAyK2FyZzUw
Mythcmc1MDQrYXJnNTA1K2FyZzUwNithcmc1MDcrYXJnNTA4K2FyZzUwOSthcmc1MTArYXJnNTEx
K2FyZzUxMithcmc1MTMrYXJnNTE0K2FyZzUxNSthcmc1MTYrYXJnNTE3K2FyZzUxOCthcmc1MTkr
YXJnNTIwK2FyZzUyMSthcmc1MjIrYXJnNTIzK2FyZzUyNCthcmc1MjUrYXJnNTI2K2FyZzUyNyth
cmc1MjgrYXJnNTI5K2FyZzUzMCthcmc1MzErYXJnNTMyK2FyZzUzMythcmc1MzQrYXJnNTM1K2Fy
ZzUzNithcmc1MzcrYXJnNTM4K2FyZzUzOSthcmc1NDArYXJnNTQxK2FyZzU0Mithcmc1NDMrYXJn
NTQ0K2FyZzU0NSthcmc1NDYrYXJnNTQ3K2FyZzU0OCthcmc1NDkrYXJnNTUwK2FyZzU1MSthcmc1
NTIrYXJnNTUzK2FyZzU1NCthcmc1NTUrYXJnNTU2K2FyZzU1Nythcmc1NTgrYXJnNTU5K2FyZzU2
MCthcmc1NjErYXJnNTYyK2FyZzU2Mythcmc1NjQrYXJnNTY1K2FyZzU2Nithcmc1NjcrYXJnNTY4
K2FyZzU2OSthcmc1NzArYXJnNTcxK2FyZzU3Mithcmc1NzMrYXJnNTc0K2FyZzU3NSthcmc1NzYr
YXJnNTc3K2FyZzU3OCthcmc1NzkrYXJnNTgwK2FyZzU4MSthcmc1ODIrYXJnNTgzK2FyZzU4NCth
cmc1ODUrYXJnNTg2K2FyZzU4Nythcmc1ODgrYXJnNTg5K2FyZzU5MCthcmc1OTErYXJnNTkyK2Fy
ZzU5Mythcmc1OTQrYXJnNTk1K2FyZzU5Nithcmc1OTcrYXJnNTk4K2FyZzU5OSthcmc2MDArYXJn
NjAxK2FyZzYwMithcmc2MDMrYXJnNjA0K2FyZzYwNSthcmc2MDYrYXJnNjA3K2FyZzYwOCthcmc2
MDkrYXJnNjEwK2FyZzYxMSthcmc2MTIrYXJnNjEzK2FyZzYxNCthcmc2MTUrYXJnNjE2K2FyZzYx
Nythcmc2MTgrYXJnNjE5K2FyZzYyMCthcmc2MjErYXJnNjIyK2FyZzYyMythcmc2MjQrYXJnNjI1
K2FyZzYyNithcmc2MjcrYXJnNjI4K2FyZzYyOSthcmc2MzArYXJnNjMxK2FyZzYzMithcmc2MzMr
YXJnNjM0K2FyZzYzNSthcmc2MzYrYXJnNjM3K2FyZzYzOCthcmc2MzkrYXJnNjQwK2FyZzY0MSth
cmc2NDIrYXJnNjQzK2FyZzY0NCthcmc2NDUrYXJnNjQ2K2FyZzY0Nythcmc2NDgrYXJnNjQ5K2Fy
ZzY1MCthcmc2NTErYXJnNjUyK2FyZzY1Mythcmc2NTQrYXJnNjU1K2FyZzY1Nithcmc2NTcrYXJn
NjU4K2FyZzY1OSthcmc2NjArYXJnNjYxK2FyZzY2Mithcmc2NjMrYXJnNjY0K2FyZzY2NSthcmc2
NjYrYXJnNjY3K2FyZzY2OCthcmc2NjkrYXJnNjcwK2FyZzY3MSthcmc2NzIrYXJnNjczK2FyZzY3
NCthcmc2NzUrYXJnNjc2K2FyZzY3Nythcmc2NzgrYXJnNjc5K2FyZzY4MCthcmc2ODErYXJnNjgy
K2FyZzY4Mythcmc2ODQrYXJnNjg1K2FyZzY4Nithcmc2ODcrYXJnNjg4K2FyZzY4OSthcmc2OTAr
YXJnNjkxK2FyZzY5Mithcmc2OTMrYXJnNjk0K2FyZzY5NSthcmc2OTYrYXJnNjk3K2FyZzY5OCth
cmc2OTkrYXJnNzAwK2FyZzcwMSthcmc3MDIrYXJnNzAzK2FyZzcwNCthcmc3MDUrYXJnNzA2K2Fy
ZzcwNythcmc3MDgrYXJnNzA5K2FyZzcxMCthcmc3MTErYXJnNzEyK2FyZzcxMythcmc3MTQrYXJn
NzE1K2FyZzcxNithcmc3MTcrYXJnNzE4K2FyZzcxOSthcmc3MjArYXJnNzIxK2FyZzcyMithcmc3
MjMrYXJnNzI0K2FyZzcyNSthcmc3MjYrYXJnNzI3K2FyZzcyOCthcmc3MjkrYXJnNzMwK2FyZzcz
MSthcmc3MzIrYXJnNzMzK2FyZzczNCthcmc3MzUrYXJnNzM2K2FyZzczNythcmc3MzgrYXJnNzM5
K2FyZzc0MCthcmc3NDErYXJnNzQyK2FyZzc0Mythcmc3NDQrYXJnNzQ1K2FyZzc0Nithcmc3NDcr
YXJnNzQ4K2FyZzc0OSthcmc3NTArYXJnNzUxK2FyZzc1Mithcmc3NTMrYXJnNzU0K2FyZzc1NSth
cmc3NTYrYXJnNzU3K2FyZzc1OCthcmc3NTkrYXJnNzYwK2FyZzc2MSthcmc3NjIrYXJnNzYzK2Fy
Zzc2NCthcmc3NjUrYXJnNzY2K2FyZzc2Nythcmc3NjgrYXJnNzY5K2FyZzc3MCthcmc3NzErYXJn
NzcyK2FyZzc3Mythcmc3NzQrYXJnNzc1K2FyZzc3Nithcmc3NzcrYXJnNzc4K2FyZzc3OSthcmc3
ODArYXJnNzgxK2FyZzc4Mithcmc3ODMrYXJnNzg0K2FyZzc4NSthcmc3ODYrYXJnNzg3K2FyZzc4
OCthcmc3ODkrYXJnNzkwK2FyZzc5MSthcmc3OTIrYXJnNzkzK2FyZzc5NCthcmc3OTUrYXJnNzk2
K2FyZzc5Nythcmc3OTgrYXJnNzk5K2FyZzgwMCthcmc4MDErYXJnODAyK2FyZzgwMythcmc4MDQr
YXJnODA1K2FyZzgwNithcmc4MDcrYXJnODA4K2FyZzgwOSthcmc4MTArYXJnODExK2FyZzgxMith
cmc4MTMrYXJnODE0K2FyZzgxNSthcmc4MTYrYXJnODE3K2FyZzgxOCthcmc4MTkrYXJnODIwK2Fy
ZzgyMSthcmc4MjIrYXJnODIzK2FyZzgyNCthcmc4MjUrYXJnODI2K2FyZzgyNythcmc4MjgrYXJn
ODI5K2FyZzgzMCthcmc4MzErYXJnODMyK2FyZzgzMythcmc4MzQrYXJnODM1K2FyZzgzNithcmc4
MzcrYXJnODM4K2FyZzgzOSthcmc4NDArYXJnODQxK2FyZzg0Mithcmc4NDMrYXJnODQ0K2FyZzg0
NSthcmc4NDYrYXJnODQ3K2FyZzg0OCthcmc4NDkrYXJnODUwK2FyZzg1MSthcmc4NTIrYXJnODUz
K2FyZzg1NCthcmc4NTUrYXJnODU2K2FyZzg1Nythcmc4NTgrYXJnODU5K2FyZzg2MCthcmc4NjEr
YXJnODYyK2FyZzg2Mythcmc4NjQrYXJnODY1K2FyZzg2Nithcmc4NjcrYXJnODY4K2FyZzg2OSth
cmc4NzArYXJnODcxK2FyZzg3Mithcmc4NzMrYXJnODc0K2FyZzg3NSthcmc4NzYrYXJnODc3K2Fy
Zzg3OCthcmc4NzkrYXJnODgwK2FyZzg4MSthcmc4ODIrYXJnODgzK2FyZzg4NCthcmc4ODUrYXJn
ODg2K2FyZzg4Nythcmc4ODgrYXJnODg5K2FyZzg5MCthcmc4OTErYXJnODkyK2FyZzg5Mythcmc4
OTQrYXJnODk1K2FyZzg5Nithcmc4OTcrYXJnODk4K2FyZzg5OSthcmc5MDArYXJnOTAxK2FyZzkw
Mithcmc5MDMrYXJnOTA0K2FyZzkwNSthcmc5MDYrYXJnOTA3K2FyZzkwOCthcmc5MDkrYXJnOTEw
K2FyZzkxMSthcmc5MTIrYXJnOTEzK2FyZzkxNCthcmc5MTUrYXJnOTE2K2FyZzkxNythcmc5MTgr
YXJnOTE5K2FyZzkyMCthcmc5MjErYXJnOTIyK2FyZzkyMythcmc5MjQrYXJnOTI1K2FyZzkyNith
cmc5MjcrYXJnOTI4K2FyZzkyOSthcmc5MzArYXJnOTMxK2FyZzkzMithcmc5MzMrYXJnOTM0K2Fy
ZzkzNSthcmc5MzYrYXJnOTM3K2FyZzkzOCthcmc5MzkrYXJnOTQwK2FyZzk0MSthcmc5NDIrYXJn
OTQzK2FyZzk0NCthcmc5NDUrYXJnOTQ2K2FyZzk0Nythcmc5NDgrYXJnOTQ5K2FyZzk1MCthcmc5
NTErYXJnOTUyK2FyZzk1Mythcmc5NTQrYXJnOTU1K2FyZzk1Nithcmc5NTcrYXJnOTU4K2FyZzk1
OSthcmc5NjArYXJnOTYxK2FyZzk2Mithcmc5NjMrYXJnOTY0K2FyZzk2NSthcmc5NjYrYXJnOTY3
K2FyZzk2OCthcmc5NjkrYXJnOTcwK2FyZzk3MSthcmc5NzIrYXJnOTczK2FyZzk3NCthcmc5NzUr
YXJnOTc2K2FyZzk3Nythcmc5NzgrYXJnOTc5K2FyZzk4MCthcmc5ODErYXJnOTgyK2FyZzk4Myth
cmc5ODQrYXJnOTg1K2FyZzk4Nithcmc5ODcrYXJnOTg4K2FyZzk4OSthcmc5OTArYXJnOTkxK2Fy
Zzk5Mithcmc5OTMrYXJnOTk0K2FyZzk5NSthcmc5OTYrYXJnOTk3K2FyZzk5OCthcmc5OTkrYXJn
MTAwMCthcmcxMDAxK2FyZzEwMDIrYXJnMTAwMythcmcxMDA0K2FyZzEwMDUrYXJnMTAwNithcmcx
MDA3K2FyZzEwMDgrYXJnMTAwOSthcmcxMDEwK2FyZzEwMTErYXJnMTAxMithcmcxMDEzK2FyZzEw
MTQrYXJnMTAxNSthcmcxMDE2K2FyZzEwMTcrYXJnMTAxOCthcmcxMDE5K2FyZzEwMjArYXJnMTAy
MSthcmcxMDIyK2FyZzEwMjMrYXJnMTAyNCthcmcxMDI1K2FyZzEwMjYrYXJnMTAyNythcmcxMDI4
K2FyZzEwMjkrYXJnMTAzMCthcmcxMDMxK2FyZzEwMzIrYXJnMTAzMythcmcxMDM0K2FyZzEwMzUr
YXJnMTAzNithcmcxMDM3K2FyZzEwMzgrYXJnMTAzOSthcmcxMDQwK2FyZzEwNDErYXJnMTA0Mith
cmcxMDQzK2FyZzEwNDQrYXJnMTA0NSthcmcxMDQ2K2FyZzEwNDcrYXJnMTA0OCthcmcxMDQ5K2Fy
ZzEwNTArYXJnMTA1MSthcmcxMDUyK2FyZzEwNTMrYXJnMTA1NCthcmcxMDU1K2FyZzEwNTYrYXJn
MTA1NythcmcxMDU4K2FyZzEwNTkrYXJnMTA2MCthcmcxMDYxK2FyZzEwNjIrYXJnMTA2Mythcmcx
MDY0K2FyZzEwNjUrYXJnMTA2NithcmcxMDY3K2FyZzEwNjgrYXJnMTA2OSthcmcxMDcwK2FyZzEw
NzErYXJnMTA3MithcmcxMDczK2FyZzEwNzQrYXJnMTA3NSthcmcxMDc2K2FyZzEwNzcrYXJnMTA3
OCthcmcxMDc5K2FyZzEwODArYXJnMTA4MSthcmcxMDgyK2FyZzEwODMrYXJnMTA4NCthcmcxMDg1
K2FyZzEwODYrYXJnMTA4NythcmcxMDg4K2FyZzEwODkrYXJnMTA5MCthcmcxMDkxK2FyZzEwOTIr
YXJnMTA5MythcmcxMDk0K2FyZzEwOTUrYXJnMTA5NithcmcxMDk3K2FyZzEwOTgrYXJnMTA5OSth
cmcxMTAwK2FyZzExMDErYXJnMTEwMithcmcxMTAzK2FyZzExMDQrYXJnMTEwNSthcmcxMTA2K2Fy
ZzExMDcrYXJnMTEwOCthcmcxMTA5K2FyZzExMTArYXJnMTExMSthcmcxMTEyK2FyZzExMTMrYXJn
MTExNCthcmcxMTE1K2FyZzExMTYrYXJnMTExNythcmcxMTE4K2FyZzExMTkrYXJnMTEyMCthcmcx
MTIxK2FyZzExMjIrYXJnMTEyMythcmcxMTI0K2FyZzExMjUrYXJnMTEyNithcmcxMTI3K2FyZzEx
MjgrYXJnMTEyOSthcmcxMTMwK2FyZzExMzErYXJnMTEzMithcmcxMTMzK2FyZzExMzQrYXJnMTEz
NSthcmcxMTM2K2FyZzExMzcrYXJnMTEzOCthcmcxMTM5K2FyZzExNDArYXJnMTE0MSthcmcxMTQy
K2FyZzExNDMrYXJnMTE0NCthcmcxMTQ1K2FyZzExNDYrYXJnMTE0NythcmcxMTQ4K2FyZzExNDkr
YXJnMTE1MCthcmcxMTUxK2FyZzExNTIrYXJnMTE1MythcmcxMTU0K2FyZzExNTUrYXJnMTE1Nith
cmcxMTU3K2FyZzExNTgrYXJnMTE1OSthcmcxMTYwK2FyZzExNjErYXJnMTE2MithcmcxMTYzK2Fy
ZzExNjQrYXJnMTE2NSthcmcxMTY2K2FyZzExNjcrYXJnMTE2OCthcmcxMTY5K2FyZzExNzArYXJn
MTE3MSthcmcxMTcyK2FyZzExNzMrYXJnMTE3NCthcmcxMTc1K2FyZzExNzYrYXJnMTE3Nythcmcx
MTc4K2FyZzExNzkrYXJnMTE4MCthcmcxMTgxK2FyZzExODIrYXJnMTE4MythcmcxMTg0K2FyZzEx
ODUrYXJnMTE4NithcmcxMTg3K2FyZzExODgrYXJnMTE4OSthcmcxMTkwK2FyZzExOTErYXJnMTE5
MithcmcxMTkzK2FyZzExOTQrYXJnMTE5NSthcmcxMTk2K2FyZzExOTcrYXJnMTE5OCthcmcxMTk5
K2FyZzEyMDArYXJnMTIwMSthcmcxMjAyK2FyZzEyMDMrYXJnMTIwNCthcmcxMjA1K2FyZzEyMDYr
YXJnMTIwNythcmcxMjA4K2FyZzEyMDkrYXJnMTIxMCthcmcxMjExK2FyZzEyMTIrYXJnMTIxMyth
cmcxMjE0K2FyZzEyMTUrYXJnMTIxNithcmcxMjE3K2FyZzEyMTgrYXJnMTIxOSthcmcxMjIwK2Fy
ZzEyMjErYXJnMTIyMithcmcxMjIzK2FyZzEyMjQrYXJnMTIyNSthcmcxMjI2K2FyZzEyMjcrYXJn
MTIyOCthcmcxMjI5K2FyZzEyMzArYXJnMTIzMSthcmcxMjMyK2FyZzEyMzMrYXJnMTIzNCthcmcx
MjM1K2FyZzEyMzYrYXJnMTIzNythcmcxMjM4K2FyZzEyMzkrYXJnMTI0MCthcmcxMjQxK2FyZzEy
NDIrYXJnMTI0MythcmcxMjQ0K2FyZzEyNDUrYXJnMTI0NithcmcxMjQ3K2FyZzEyNDgrYXJnMTI0
OSthcmcxMjUwK2FyZzEyNTErYXJnMTI1MithcmcxMjUzK2FyZzEyNTQrYXJnMTI1NSthcmcxMjU2
K2FyZzEyNTcrYXJnMTI1OCthcmcxMjU5K2FyZzEyNjArYXJnMTI2MSthcmcxMjYyK2FyZzEyNjMr
YXJnMTI2NCthcmcxMjY1K2FyZzEyNjYrYXJnMTI2NythcmcxMjY4K2FyZzEyNjkrYXJnMTI3MCth
cmcxMjcxK2FyZzEyNzIrYXJnMTI3MythcmcxMjc0K2FyZzEyNzUrYXJnMTI3NithcmcxMjc3K2Fy
ZzEyNzgrYXJnMTI3OSthcmcxMjgwK2FyZzEyODErYXJnMTI4MithcmcxMjgzK2FyZzEyODQrYXJn
MTI4NSthcmcxMjg2K2FyZzEyODcrYXJnMTI4OCthcmcxMjg5K2FyZzEyOTArYXJnMTI5MSthcmcx
MjkyK2FyZzEyOTMrYXJnMTI5NCthcmcxMjk1K2FyZzEyOTYrYXJnMTI5NythcmcxMjk4K2FyZzEy
OTkrYXJnMTMwMCthcmcxMzAxK2FyZzEzMDIrYXJnMTMwMythcmcxMzA0K2FyZzEzMDUrYXJnMTMw
NithcmcxMzA3K2FyZzEzMDgrYXJnMTMwOSthcmcxMzEwK2FyZzEzMTErYXJnMTMxMithcmcxMzEz
K2FyZzEzMTQrYXJnMTMxNSthcmcxMzE2K2FyZzEzMTcrYXJnMTMxOCthcmcxMzE5K2FyZzEzMjAr
YXJnMTMyMSthcmcxMzIyK2FyZzEzMjMrYXJnMTMyNCthcmcxMzI1K2FyZzEzMjYrYXJnMTMyNyth
cmcxMzI4K2FyZzEzMjkrYXJnMTMzMCthcmcxMzMxK2FyZzEzMzIrYXJnMTMzMythcmcxMzM0K2Fy
ZzEzMzUrYXJnMTMzNithcmcxMzM3K2FyZzEzMzgrYXJnMTMzOSthcmcxMzQwK2FyZzEzNDErYXJn
MTM0MithcmcxMzQzK2FyZzEzNDQrYXJnMTM0NSthcmcxMzQ2K2FyZzEzNDcrYXJnMTM0OCthcmcx
MzQ5K2FyZzEzNTArYXJnMTM1MSthcmcxMzUyK2FyZzEzNTMrYXJnMTM1NCthcmcxMzU1K2FyZzEz
NTYrYXJnMTM1NythcmcxMzU4K2FyZzEzNTkrYXJnMTM2MCthcmcxMzYxK2FyZzEzNjIrYXJnMTM2
MythcmcxMzY0K2FyZzEzNjUrYXJnMTM2NithcmcxMzY3K2FyZzEzNjgrYXJnMTM2OSthcmcxMzcw
K2FyZzEzNzErYXJnMTM3MithcmcxMzczK2FyZzEzNzQrYXJnMTM3NSthcmcxMzc2K2FyZzEzNzcr
YXJnMTM3OCthcmcxMzc5K2FyZzEzODArYXJnMTM4MSthcmcxMzgyK2FyZzEzODMrYXJnMTM4NCth
cmcxMzg1K2FyZzEzODYrYXJnMTM4NythcmcxMzg4K2FyZzEzODkrYXJnMTM5MCthcmcxMzkxK2Fy
ZzEzOTIrYXJnMTM5MythcmcxMzk0K2FyZzEzOTUrYXJnMTM5NithcmcxMzk3K2FyZzEzOTgrYXJn
MTM5OSthcmcxNDAwK2FyZzE0MDErYXJnMTQwMithcmcxNDAzK2FyZzE0MDQrYXJnMTQwNSthcmcx
NDA2K2FyZzE0MDcrYXJnMTQwOCthcmcxNDA5K2FyZzE0MTArYXJnMTQxMSthcmcxNDEyK2FyZzE0
MTMrYXJnMTQxNCthcmcxNDE1K2FyZzE0MTYrYXJnMTQxNythcmcxNDE4K2FyZzE0MTkrYXJnMTQy
MCthcmcxNDIxK2FyZzE0MjIrYXJnMTQyMythcmcxNDI0K2FyZzE0MjUrYXJnMTQyNithcmcxNDI3
K2FyZzE0MjgrYXJnMTQyOSthcmcxNDMwK2FyZzE0MzErYXJnMTQzMithcmcxNDMzK2FyZzE0MzQr
YXJnMTQzNSthcmcxNDM2K2FyZzE0MzcrYXJnMTQzOCthcmcxNDM5K2FyZzE0NDArYXJnMTQ0MSth
cmcxNDQyK2FyZzE0NDMrYXJnMTQ0NCthcmcxNDQ1K2FyZzE0NDYrYXJnMTQ0NythcmcxNDQ4K2Fy
ZzE0NDkrYXJnMTQ1MCthcmcxNDUxK2FyZzE0NTIrYXJnMTQ1MythcmcxNDU0K2FyZzE0NTUrYXJn
MTQ1NithcmcxNDU3K2FyZzE0NTgrYXJnMTQ1OSthcmcxNDYwK2FyZzE0NjErYXJnMTQ2Mithcmcx
NDYzK2FyZzE0NjQrYXJnMTQ2NSthcmcxNDY2K2FyZzE0NjcrYXJnMTQ2OCthcmcxNDY5K2FyZzE0
NzArYXJnMTQ3MSthcmcxNDcyK2FyZzE0NzMrYXJnMTQ3NCthcmcxNDc1K2FyZzE0NzYrYXJnMTQ3
NythcmcxNDc4K2FyZzE0NzkrYXJnMTQ4MCthcmcxNDgxK2FyZzE0ODIrYXJnMTQ4MythcmcxNDg0
K2FyZzE0ODUrYXJnMTQ4NithcmcxNDg3K2FyZzE0ODgrYXJnMTQ4OSthcmcxNDkwK2FyZzE0OTEr
YXJnMTQ5MithcmcxNDkzK2FyZzE0OTQrYXJnMTQ5NSthcmcxNDk2K2FyZzE0OTcrYXJnMTQ5OCth
cmcxNDk5K2FyZzE1MDArYXJnMTUwMSthcmcxNTAyK2FyZzE1MDMrYXJnMTUwNCthcmcxNTA1K2Fy
ZzE1MDYrYXJnMTUwNythcmcxNTA4K2FyZzE1MDkrYXJnMTUxMCthcmcxNTExK2FyZzE1MTIrYXJn
MTUxMythcmcxNTE0K2FyZzE1MTUrYXJnMTUxNithcmcxNTE3K2FyZzE1MTgrYXJnMTUxOSthcmcx
NTIwK2FyZzE1MjErYXJnMTUyMithcmcxNTIzK2FyZzE1MjQrYXJnMTUyNSthcmcxNTI2K2FyZzE1
MjcrYXJnMTUyOCthcmcxNTI5K2FyZzE1MzArYXJnMTUzMSthcmcxNTMyK2FyZzE1MzMrYXJnMTUz
NCthcmcxNTM1K2FyZzE1MzYrYXJnMTUzNythcmcxNTM4K2FyZzE1MzkrYXJnMTU0MCthcmcxNTQx
K2FyZzE1NDIrYXJnMTU0MythcmcxNTQ0K2FyZzE1NDUrYXJnMTU0NithcmcxNTQ3K2FyZzE1NDgr
YXJnMTU0OSthcmcxNTUwK2FyZzE1NTErYXJnMTU1MithcmcxNTUzK2FyZzE1NTQrYXJnMTU1NSth
cmcxNTU2K2FyZzE1NTcrYXJnMTU1OCthcmcxNTU5K2FyZzE1NjArYXJnMTU2MSthcmcxNTYyK2Fy
ZzE1NjMrYXJnMTU2NCthcmcxNTY1K2FyZzE1NjYrYXJnMTU2NythcmcxNTY4K2FyZzE1NjkrYXJn
MTU3MCthcmcxNTcxK2FyZzE1NzIrYXJnMTU3MythcmcxNTc0K2FyZzE1NzUrYXJnMTU3Nithcmcx
NTc3K2FyZzE1NzgrYXJnMTU3OSthcmcxNTgwK2FyZzE1ODErYXJnMTU4MithcmcxNTgzK2FyZzE1
ODQrYXJnMTU4NSthcmcxNTg2K2FyZzE1ODcrYXJnMTU4OCthcmcxNTg5K2FyZzE1OTArYXJnMTU5
MSthcmcxNTkyK2FyZzE1OTMrYXJnMTU5NCthcmcxNTk1K2FyZzE1OTYrYXJnMTU5NythcmcxNTk4
K2FyZzE1OTkrYXJnMTYwMCthcmcxNjAxK2FyZzE2MDIrYXJnMTYwMythcmcxNjA0K2FyZzE2MDUr
YXJnMTYwNithcmcxNjA3K2FyZzE2MDgrYXJnMTYwOSthcmcxNjEwK2FyZzE2MTErYXJnMTYxMith
cmcxNjEzK2FyZzE2MTQrYXJnMTYxNSthcmcxNjE2K2FyZzE2MTcrYXJnMTYxOCthcmcxNjE5K2Fy
ZzE2MjArYXJnMTYyMSthcmcxNjIyK2FyZzE2MjMrYXJnMTYyNCthcmcxNjI1K2FyZzE2MjYrYXJn
MTYyNythcmcxNjI4K2FyZzE2MjkrYXJnMTYzMCthcmcxNjMxK2FyZzE2MzIrYXJnMTYzMythcmcx
NjM0K2FyZzE2MzUrYXJnMTYzNithcmcxNjM3K2FyZzE2MzgrYXJnMTYzOSthcmcxNjQwK2FyZzE2
NDErYXJnMTY0MithcmcxNjQzK2FyZzE2NDQrYXJnMTY0NSthcmcxNjQ2K2FyZzE2NDcrYXJnMTY0
OCthcmcxNjQ5K2FyZzE2NTArYXJnMTY1MSthcmcxNjUyK2FyZzE2NTMrYXJnMTY1NCthcmcxNjU1
K2FyZzE2NTYrYXJnMTY1NythcmcxNjU4K2FyZzE2NTkrYXJnMTY2MCthcmcxNjYxK2FyZzE2NjIr
YXJnMTY2MythcmcxNjY0K2FyZzE2NjUrYXJnMTY2NithcmcxNjY3K2FyZzE2NjgrYXJnMTY2OSth
cmcxNjcwK2FyZzE2NzErYXJnMTY3MithcmcxNjczK2FyZzE2NzQrYXJnMTY3NSthcmcxNjc2K2Fy
ZzE2NzcrYXJnMTY3OCthcmcxNjc5K2FyZzE2ODArYXJnMTY4MSthcmcxNjgyK2FyZzE2ODMrYXJn
MTY4NCthcmcxNjg1K2FyZzE2ODYrYXJnMTY4NythcmcxNjg4K2FyZzE2ODkrYXJnMTY5MCthcmcx
NjkxK2FyZzE2OTIrYXJnMTY5MythcmcxNjk0K2FyZzE2OTUrYXJnMTY5NithcmcxNjk3K2FyZzE2
OTgrYXJnMTY5OSthcmcxNzAwK2FyZzE3MDErYXJnMTcwMithcmcxNzAzK2FyZzE3MDQrYXJnMTcw
NSthcmcxNzA2K2FyZzE3MDcrYXJnMTcwOCthcmcxNzA5K2FyZzE3MTArYXJnMTcxMSthcmcxNzEy
K2FyZzE3MTMrYXJnMTcxNCthcmcxNzE1K2FyZzE3MTYrYXJnMTcxNythcmcxNzE4K2FyZzE3MTkr
YXJnMTcyMCthcmcxNzIxK2FyZzE3MjIrYXJnMTcyMythcmcxNzI0K2FyZzE3MjUrYXJnMTcyNith
cmcxNzI3K2FyZzE3MjgrYXJnMTcyOSthcmcxNzMwK2FyZzE3MzErYXJnMTczMithcmcxNzMzK2Fy
ZzE3MzQrYXJnMTczNSthcmcxNzM2K2FyZzE3MzcrYXJnMTczOCthcmcxNzM5K2FyZzE3NDArYXJn
MTc0MSthcmcxNzQyK2FyZzE3NDMrYXJnMTc0NCthcmcxNzQ1K2FyZzE3NDYrYXJnMTc0Nythcmcx
NzQ4K2FyZzE3NDkrYXJnMTc1MCthcmcxNzUxK2FyZzE3NTIrYXJnMTc1MythcmcxNzU0K2FyZzE3
NTUrYXJnMTc1NithcmcxNzU3K2FyZzE3NTgrYXJnMTc1OSthcmcxNzYwK2FyZzE3NjErYXJnMTc2
MithcmcxNzYzK2FyZzE3NjQrYXJnMTc2NSthcmcxNzY2K2FyZzE3NjcrYXJnMTc2OCthcmcxNzY5
K2FyZzE3NzArYXJnMTc3MSthcmcxNzcyK2FyZzE3NzMrYXJnMTc3NCthcmcxNzc1K2FyZzE3NzYr
YXJnMTc3NythcmcxNzc4K2FyZzE3NzkrYXJnMTc4MCthcmcxNzgxK2FyZzE3ODIrYXJnMTc4Myth
cmcxNzg0K2FyZzE3ODUrYXJnMTc4NithcmcxNzg3K2FyZzE3ODgrYXJnMTc4OSthcmcxNzkwK2Fy
ZzE3OTErYXJnMTc5MithcmcxNzkzK2FyZzE3OTQrYXJnMTc5NSthcmcxNzk2K2FyZzE3OTcrYXJn
MTc5OCthcmcxNzk5K2FyZzE4MDArYXJnMTgwMSthcmcxODAyK2FyZzE4MDMrYXJnMTgwNCthcmcx
ODA1K2FyZzE4MDYrYXJnMTgwNythcmcxODA4K2FyZzE4MDkrYXJnMTgxMCthcmcxODExK2FyZzE4
MTIrYXJnMTgxMythcmcxODE0K2FyZzE4MTUrYXJnMTgxNithcmcxODE3K2FyZzE4MTgrYXJnMTgx
OSthcmcxODIwK2FyZzE4MjErYXJnMTgyMithcmcxODIzK2FyZzE4MjQrYXJnMTgyNSthcmcxODI2
K2FyZzE4MjcrYXJnMTgyOCthcmcxODI5K2FyZzE4MzArYXJnMTgzMSthcmcxODMyK2FyZzE4MzMr
YXJnMTgzNCthcmcxODM1K2FyZzE4MzYrYXJnMTgzNythcmcxODM4K2FyZzE4MzkrYXJnMTg0MCth
cmcxODQxK2FyZzE4NDIrYXJnMTg0MythcmcxODQ0K2FyZzE4NDUrYXJnMTg0NithcmcxODQ3K2Fy
ZzE4NDgrYXJnMTg0OSthcmcxODUwK2FyZzE4NTErYXJnMTg1MithcmcxODUzK2FyZzE4NTQrYXJn
MTg1NSthcmcxODU2K2FyZzE4NTcrYXJnMTg1OCthcmcxODU5K2FyZzE4NjArYXJnMTg2MSthcmcx
ODYyK2FyZzE4NjMrYXJnMTg2NCthcmcxODY1K2FyZzE4NjYrYXJnMTg2NythcmcxODY4K2FyZzE4
NjkrYXJnMTg3MCthcmcxODcxK2FyZzE4NzIrYXJnMTg3MythcmcxODc0K2FyZzE4NzUrYXJnMTg3
NithcmcxODc3K2FyZzE4NzgrYXJnMTg3OSthcmcxODgwK2FyZzE4ODErYXJnMTg4MithcmcxODgz
K2FyZzE4ODQrYXJnMTg4NSthcmcxODg2K2FyZzE4ODcrYXJnMTg4OCthcmcxODg5K2FyZzE4OTAr
YXJnMTg5MSthcmcxODkyK2FyZzE4OTMrYXJnMTg5NCthcmcxODk1K2FyZzE4OTYrYXJnMTg5Nyth
cmcxODk4K2FyZzE4OTkrYXJnMTkwMCthcmcxOTAxK2FyZzE5MDIrYXJnMTkwMythcmcxOTA0K2Fy
ZzE5MDUrYXJnMTkwNithcmcxOTA3K2FyZzE5MDgrYXJnMTkwOSthcmcxOTEwK2FyZzE5MTErYXJn
MTkxMithcmcxOTEzK2FyZzE5MTQrYXJnMTkxNSthcmcxOTE2K2FyZzE5MTcrYXJnMTkxOCthcmcx
OTE5K2FyZzE5MjArYXJnMTkyMSthcmcxOTIyK2FyZzE5MjMrYXJnMTkyNCthcmcxOTI1K2FyZzE5
MjYrYXJnMTkyNythcmcxOTI4K2FyZzE5MjkrYXJnMTkzMCthcmcxOTMxK2FyZzE5MzIrYXJnMTkz
MythcmcxOTM0K2FyZzE5MzUrYXJnMTkzNithcmcxOTM3K2FyZzE5MzgrYXJnMTkzOSthcmcxOTQw
K2FyZzE5NDErYXJnMTk0MithcmcxOTQzK2FyZzE5NDQrYXJnMTk0NSthcmcxOTQ2K2FyZzE5NDcr
YXJnMTk0OCthcmcxOTQ5K2FyZzE5NTArYXJnMTk1MSthcmcxOTUyK2FyZzE5NTMrYXJnMTk1NCth
cmcxOTU1K2FyZzE5NTYrYXJnMTk1NythcmcxOTU4K2FyZzE5NTkrYXJnMTk2MCthcmcxOTYxK2Fy
ZzE5NjIrYXJnMTk2MythcmcxOTY0K2FyZzE5NjUrYXJnMTk2NithcmcxOTY3K2FyZzE5NjgrYXJn
MTk2OSthcmcxOTcwK2FyZzE5NzErYXJnMTk3MithcmcxOTczK2FyZzE5NzQrYXJnMTk3NSthcmcx
OTc2K2FyZzE5NzcrYXJnMTk3OCthcmcxOTc5K2FyZzE5ODArYXJnMTk4MSthcmcxOTgyK2FyZzE5
ODMrYXJnMTk4NCthcmcxOTg1K2FyZzE5ODYrYXJnMTk4NythcmcxOTg4K2FyZzE5ODkrYXJnMTk5
MCthcmcxOTkxK2FyZzE5OTIrYXJnMTk5MythcmcxOTk0K2FyZzE5OTUrYXJnMTk5NithcmcxOTk3
K2FyZzE5OTgrYXJnMTk5OSthcmcyMDAwK2FyZzIwMDErYXJnMjAwMithcmcyMDAzK2FyZzIwMDQr
YXJnMjAwNSthcmcyMDA2K2FyZzIwMDcrYXJnMjAwOCthcmcyMDA5K2FyZzIwMTArYXJnMjAxMSth
cmcyMDEyK2FyZzIwMTMrYXJnMjAxNCthcmcyMDE1K2FyZzIwMTYrYXJnMjAxNythcmcyMDE4K2Fy
ZzIwMTkrYXJnMjAyMCthcmcyMDIxK2FyZzIwMjIrYXJnMjAyMythcmcyMDI0K2FyZzIwMjUrYXJn
MjAyNithcmcyMDI3K2FyZzIwMjgrYXJnMjAyOSthcmcyMDMwK2FyZzIwMzErYXJnMjAzMithcmcy
MDMzK2FyZzIwMzQrYXJnMjAzNSthcmcyMDM2K2FyZzIwMzcrYXJnMjAzOCthcmcyMDM5K2FyZzIw
NDArYXJnMjA0MSthcmcyMDQyK2FyZzIwNDMrYXJnMjA0NCthcmcyMDQ1K2FyZzIwNDYrYXJnMjA0
NythcmcyMDQ4K2FyZzIwNDkrYXJnMjA1MCthcmcyMDUxK2FyZzIwNTIrYXJnMjA1MythcmcyMDU0
K2FyZzIwNTUrYXJnMjA1NithcmcyMDU3K2FyZzIwNTgrYXJnMjA1OSthcmcyMDYwK2FyZzIwNjEr
YXJnMjA2MithcmcyMDYzK2FyZzIwNjQrYXJnMjA2NSthcmcyMDY2K2FyZzIwNjcrYXJnMjA2OCth
cmcyMDY5K2FyZzIwNzArYXJnMjA3MSthcmcyMDcyK2FyZzIwNzMrYXJnMjA3NCthcmcyMDc1K2Fy
ZzIwNzYrYXJnMjA3NythcmcyMDc4K2FyZzIwNzkrYXJnMjA4MCthcmcyMDgxK2FyZzIwODIrYXJn
MjA4MythcmcyMDg0K2FyZzIwODUrYXJnMjA4NithcmcyMDg3K2FyZzIwODgrYXJnMjA4OSthcmcy
MDkwK2FyZzIwOTErYXJnMjA5MithcmcyMDkzK2FyZzIwOTQrYXJnMjA5NSthcmcyMDk2K2FyZzIw
OTcrYXJnMjA5OCthcmcyMDk5K2FyZzIxMDArYXJnMjEwMSthcmcyMTAyK2FyZzIxMDMrYXJnMjEw
NCthcmcyMTA1K2FyZzIxMDYrYXJnMjEwNythcmcyMTA4K2FyZzIxMDkrYXJnMjExMCthcmcyMTEx
K2FyZzIxMTIrYXJnMjExMythcmcyMTE0K2FyZzIxMTUrYXJnMjExNithcmcyMTE3K2FyZzIxMTgr
YXJnMjExOSthcmcyMTIwK2FyZzIxMjErYXJnMjEyMithcmcyMTIzK2FyZzIxMjQrYXJnMjEyNSth
cmcyMTI2K2FyZzIxMjcrYXJnMjEyOCthcmcyMTI5K2FyZzIxMzArYXJnMjEzMSthcmcyMTMyK2Fy
ZzIxMzMrYXJnMjEzNCthcmcyMTM1K2FyZzIxMzYrYXJnMjEzNythcmcyMTM4K2FyZzIxMzkrYXJn
MjE0MCthcmcyMTQxK2FyZzIxNDIrYXJnMjE0MythcmcyMTQ0K2FyZzIxNDUrYXJnMjE0Nithcmcy
MTQ3K2FyZzIxNDgrYXJnMjE0OSthcmcyMTUwK2FyZzIxNTErYXJnMjE1MithcmcyMTUzK2FyZzIx
NTQrYXJnMjE1NSthcmcyMTU2K2FyZzIxNTcrYXJnMjE1OCthcmcyMTU5K2FyZzIxNjArYXJnMjE2
MSthcmcyMTYyK2FyZzIxNjMrYXJnMjE2NCthcmcyMTY1K2FyZzIxNjYrYXJnMjE2NythcmcyMTY4
K2FyZzIxNjkrYXJnMjE3MCthcmcyMTcxK2FyZzIxNzIrYXJnMjE3MythcmcyMTc0K2FyZzIxNzUr
YXJnMjE3NithcmcyMTc3K2FyZzIxNzgrYXJnMjE3OSthcmcyMTgwK2FyZzIxODErYXJnMjE4Mith
cmcyMTgzK2FyZzIxODQrYXJnMjE4NSthcmcyMTg2K2FyZzIxODcrYXJnMjE4OCthcmcyMTg5K2Fy
ZzIxOTArYXJnMjE5MSthcmcyMTkyK2FyZzIxOTMrYXJnMjE5NCthcmcyMTk1K2FyZzIxOTYrYXJn
MjE5NythcmcyMTk4K2FyZzIxOTkrYXJnMjIwMCthcmcyMjAxK2FyZzIyMDIrYXJnMjIwMythcmcy
MjA0K2FyZzIyMDUrYXJnMjIwNithcmcyMjA3K2FyZzIyMDgrYXJnMjIwOSthcmcyMjEwK2FyZzIy
MTErYXJnMjIxMithcmcyMjEzK2FyZzIyMTQrYXJnMjIxNSthcmcyMjE2K2FyZzIyMTcrYXJnMjIx
OCthcmcyMjE5K2FyZzIyMjArYXJnMjIyMSthcmcyMjIyK2FyZzIyMjMrYXJnMjIyNCthcmcyMjI1
K2FyZzIyMjYrYXJnMjIyNythcmcyMjI4K2FyZzIyMjkrYXJnMjIzMCthcmcyMjMxK2FyZzIyMzIr
YXJnMjIzMythcmcyMjM0K2FyZzIyMzUrYXJnMjIzNithcmcyMjM3K2FyZzIyMzgrYXJnMjIzOSth
cmcyMjQwK2FyZzIyNDErYXJnMjI0MithcmcyMjQzK2FyZzIyNDQrYXJnMjI0NSthcmcyMjQ2K2Fy
ZzIyNDcrYXJnMjI0OCthcmcyMjQ5K2FyZzIyNTArYXJnMjI1MSthcmcyMjUyK2FyZzIyNTMrYXJn
MjI1NCthcmcyMjU1K2FyZzIyNTYrYXJnMjI1NythcmcyMjU4K2FyZzIyNTkrYXJnMjI2MCthcmcy
MjYxK2FyZzIyNjIrYXJnMjI2MythcmcyMjY0K2FyZzIyNjUrYXJnMjI2NithcmcyMjY3K2FyZzIy
NjgrYXJnMjI2OSthcmcyMjcwK2FyZzIyNzErYXJnMjI3MithcmcyMjczK2FyZzIyNzQrYXJnMjI3
NSthcmcyMjc2K2FyZzIyNzcrYXJnMjI3OCthcmcyMjc5K2FyZzIyODArYXJnMjI4MSthcmcyMjgy
K2FyZzIyODMrYXJnMjI4NCthcmcyMjg1K2FyZzIyODYrYXJnMjI4NythcmcyMjg4K2FyZzIyODkr
YXJnMjI5MCthcmcyMjkxK2FyZzIyOTIrYXJnMjI5MythcmcyMjk0K2FyZzIyOTUrYXJnMjI5Nith
cmcyMjk3K2FyZzIyOTgrYXJnMjI5OSthcmcyMzAwK2FyZzIzMDErYXJnMjMwMithcmcyMzAzK2Fy
ZzIzMDQrYXJnMjMwNSthcmcyMzA2K2FyZzIzMDcrYXJnMjMwOCthcmcyMzA5K2FyZzIzMTArYXJn
MjMxMSthcmcyMzEyK2FyZzIzMTMrYXJnMjMxNCthcmcyMzE1K2FyZzIzMTYrYXJnMjMxNythcmcy
MzE4K2FyZzIzMTkrYXJnMjMyMCthcmcyMzIxK2FyZzIzMjIrYXJnMjMyMythcmcyMzI0K2FyZzIz
MjUrYXJnMjMyNithcmcyMzI3K2FyZzIzMjgrYXJnMjMyOSthcmcyMzMwK2FyZzIzMzErYXJnMjMz
MithcmcyMzMzK2FyZzIzMzQrYXJnMjMzNSthcmcyMzM2K2FyZzIzMzcrYXJnMjMzOCthcmcyMzM5
K2FyZzIzNDArYXJnMjM0MSthcmcyMzQyK2FyZzIzNDMrYXJnMjM0NCthcmcyMzQ1K2FyZzIzNDYr
YXJnMjM0NythcmcyMzQ4K2FyZzIzNDkrYXJnMjM1MCthcmcyMzUxK2FyZzIzNTIrYXJnMjM1Myth
cmcyMzU0K2FyZzIzNTUrYXJnMjM1NithcmcyMzU3K2FyZzIzNTgrYXJnMjM1OSthcmcyMzYwK2Fy
ZzIzNjErYXJnMjM2MithcmcyMzYzK2FyZzIzNjQrYXJnMjM2NSthcmcyMzY2K2FyZzIzNjcrYXJn
MjM2OCthcmcyMzY5K2FyZzIzNzArYXJnMjM3MSthcmcyMzcyK2FyZzIzNzMrYXJnMjM3NCthcmcy
Mzc1K2FyZzIzNzYrYXJnMjM3NythcmcyMzc4K2FyZzIzNzkrYXJnMjM4MCthcmcyMzgxK2FyZzIz
ODIrYXJnMjM4MythcmcyMzg0K2FyZzIzODUrYXJnMjM4NithcmcyMzg3K2FyZzIzODgrYXJnMjM4
OSthcmcyMzkwK2FyZzIzOTErYXJnMjM5MithcmcyMzkzK2FyZzIzOTQrYXJnMjM5NSthcmcyMzk2
K2FyZzIzOTcrYXJnMjM5OCthcmcyMzk5K2FyZzI0MDArYXJnMjQwMSthcmcyNDAyK2FyZzI0MDMr
YXJnMjQwNCthcmcyNDA1K2FyZzI0MDYrYXJnMjQwNythcmcyNDA4K2FyZzI0MDkrYXJnMjQxMCth
cmcyNDExK2FyZzI0MTIrYXJnMjQxMythcmcyNDE0K2FyZzI0MTUrYXJnMjQxNithcmcyNDE3K2Fy
ZzI0MTgrYXJnMjQxOSthcmcyNDIwK2FyZzI0MjErYXJnMjQyMithcmcyNDIzK2FyZzI0MjQrYXJn
MjQyNSthcmcyNDI2K2FyZzI0MjcrYXJnMjQyOCthcmcyNDI5K2FyZzI0MzArYXJnMjQzMSthcmcy
NDMyK2FyZzI0MzMrYXJnMjQzNCthcmcyNDM1K2FyZzI0MzYrYXJnMjQzNythcmcyNDM4K2FyZzI0
MzkrYXJnMjQ0MCthcmcyNDQxK2FyZzI0NDIrYXJnMjQ0MythcmcyNDQ0K2FyZzI0NDUrYXJnMjQ0
NithcmcyNDQ3K2FyZzI0NDgrYXJnMjQ0OSthcmcyNDUwK2FyZzI0NTErYXJnMjQ1MithcmcyNDUz
K2FyZzI0NTQrYXJnMjQ1NSthcmcyNDU2K2FyZzI0NTcrYXJnMjQ1OCthcmcyNDU5K2FyZzI0NjAr
YXJnMjQ2MSthcmcyNDYyK2FyZzI0NjMrYXJnMjQ2NCthcmcyNDY1K2FyZzI0NjYrYXJnMjQ2Nyth
cmcyNDY4K2FyZzI0NjkrYXJnMjQ3MCthcmcyNDcxK2FyZzI0NzIrYXJnMjQ3MythcmcyNDc0K2Fy
ZzI0NzUrYXJnMjQ3NithcmcyNDc3K2FyZzI0NzgrYXJnMjQ3OSthcmcyNDgwK2FyZzI0ODErYXJn
MjQ4MithcmcyNDgzK2FyZzI0ODQrYXJnMjQ4NSthcmcyNDg2K2FyZzI0ODcrYXJnMjQ4OCthcmcy
NDg5K2FyZzI0OTArYXJnMjQ5MSthcmcyNDkyK2FyZzI0OTMrYXJnMjQ5NCthcmcyNDk1K2FyZzI0
OTYrYXJnMjQ5NythcmcyNDk4K2FyZzI0OTkrYXJnMjUwMCthcmcyNTAxK2FyZzI1MDIrYXJnMjUw
MythcmcyNTA0K2FyZzI1MDUrYXJnMjUwNithcmcyNTA3K2FyZzI1MDgrYXJnMjUwOSthcmcyNTEw
K2FyZzI1MTErYXJnMjUxMithcmcyNTEzK2FyZzI1MTQrYXJnMjUxNSthcmcyNTE2K2FyZzI1MTcr
YXJnMjUxOCthcmcyNTE5K2FyZzI1MjArYXJnMjUyMSthcmcyNTIyK2FyZzI1MjMrYXJnMjUyNCth
cmcyNTI1K2FyZzI1MjYrYXJnMjUyNythcmcyNTI4K2FyZzI1MjkrYXJnMjUzMCthcmcyNTMxK2Fy
ZzI1MzIrYXJnMjUzMythcmcyNTM0K2FyZzI1MzUrYXJnMjUzNithcmcyNTM3K2FyZzI1MzgrYXJn
MjUzOSthcmcyNTQwK2FyZzI1NDErYXJnMjU0MithcmcyNTQzK2FyZzI1NDQrYXJnMjU0NSthcmcy
NTQ2K2FyZzI1NDcrYXJnMjU0OCthcmcyNTQ5K2FyZzI1NTArYXJnMjU1MSthcmcyNTUyK2FyZzI1
NTMrYXJnMjU1NCthcmcyNTU1K2FyZzI1NTYrYXJnMjU1NythcmcyNTU4K2FyZzI1NTkrYXJnMjU2
MCthcmcyNTYxK2FyZzI1NjIrYXJnMjU2MythcmcyNTY0K2FyZzI1NjUrYXJnMjU2NithcmcyNTY3
K2FyZzI1NjgrYXJnMjU2OSthcmcyNTcwK2FyZzI1NzErYXJnMjU3MithcmcyNTczK2FyZzI1NzQr
YXJnMjU3NSthcmcyNTc2K2FyZzI1NzcrYXJnMjU3OCthcmcyNTc5K2FyZzI1ODArYXJnMjU4MSth
cmcyNTgyK2FyZzI1ODMrYXJnMjU4NCthcmcyNTg1K2FyZzI1ODYrYXJnMjU4NythcmcyNTg4K2Fy
ZzI1ODkrYXJnMjU5MCthcmcyNTkxK2FyZzI1OTIrYXJnMjU5MythcmcyNTk0K2FyZzI1OTUrYXJn
MjU5NithcmcyNTk3K2FyZzI1OTgrYXJnMjU5OSthcmcyNjAwK2FyZzI2MDErYXJnMjYwMithcmcy
NjAzK2FyZzI2MDQrYXJnMjYwNSthcmcyNjA2K2FyZzI2MDcrYXJnMjYwOCthcmcyNjA5K2FyZzI2
MTArYXJnMjYxMSthcmcyNjEyK2FyZzI2MTMrYXJnMjYxNCthcmcyNjE1K2FyZzI2MTYrYXJnMjYx
NythcmcyNjE4K2FyZzI2MTkrYXJnMjYyMCthcmcyNjIxK2FyZzI2MjIrYXJnMjYyMythcmcyNjI0
K2FyZzI2MjUrYXJnMjYyNithcmcyNjI3K2FyZzI2MjgrYXJnMjYyOSthcmcyNjMwK2FyZzI2MzEr
YXJnMjYzMithcmcyNjMzK2FyZzI2MzQrYXJnMjYzNSthcmcyNjM2K2FyZzI2MzcrYXJnMjYzOCth
cmcyNjM5K2FyZzI2NDArYXJnMjY0MSthcmcyNjQyK2FyZzI2NDMrYXJnMjY0NCthcmcyNjQ1K2Fy
ZzI2NDYrYXJnMjY0NythcmcyNjQ4K2FyZzI2NDkrYXJnMjY1MCthcmcyNjUxK2FyZzI2NTIrYXJn
MjY1MythcmcyNjU0K2FyZzI2NTUrYXJnMjY1NithcmcyNjU3K2FyZzI2NTgrYXJnMjY1OSthcmcy
NjYwK2FyZzI2NjErYXJnMjY2MithcmcyNjYzK2FyZzI2NjQrYXJnMjY2NSthcmcyNjY2K2FyZzI2
NjcrYXJnMjY2OCthcmcyNjY5K2FyZzI2NzArYXJnMjY3MSthcmcyNjcyK2FyZzI2NzMrYXJnMjY3
NCthcmcyNjc1K2FyZzI2NzYrYXJnMjY3NythcmcyNjc4K2FyZzI2NzkrYXJnMjY4MCthcmcyNjgx
K2FyZzI2ODIrYXJnMjY4MythcmcyNjg0K2FyZzI2ODUrYXJnMjY4NithcmcyNjg3K2FyZzI2ODgr
YXJnMjY4OSthcmcyNjkwK2FyZzI2OTErYXJnMjY5MithcmcyNjkzK2FyZzI2OTQrYXJnMjY5NSth
cmcyNjk2K2FyZzI2OTcrYXJnMjY5OCthcmcyNjk5K2FyZzI3MDArYXJnMjcwMSthcmcyNzAyK2Fy
ZzI3MDMrYXJnMjcwNCthcmcyNzA1K2FyZzI3MDYrYXJnMjcwNythcmcyNzA4K2FyZzI3MDkrYXJn
MjcxMCthcmcyNzExK2FyZzI3MTIrYXJnMjcxMythcmcyNzE0K2FyZzI3MTUrYXJnMjcxNithcmcy
NzE3K2FyZzI3MTgrYXJnMjcxOSthcmcyNzIwK2FyZzI3MjErYXJnMjcyMithcmcyNzIzK2FyZzI3
MjQrYXJnMjcyNSthcmcyNzI2K2FyZzI3MjcrYXJnMjcyOCthcmcyNzI5K2FyZzI3MzArYXJnMjcz
MSthcmcyNzMyK2FyZzI3MzMrYXJnMjczNCthcmcyNzM1K2FyZzI3MzYrYXJnMjczNythcmcyNzM4
K2FyZzI3MzkrYXJnMjc0MCthcmcyNzQxK2FyZzI3NDIrYXJnMjc0MythcmcyNzQ0K2FyZzI3NDUr
YXJnMjc0NithcmcyNzQ3K2FyZzI3NDgrYXJnMjc0OSthcmcyNzUwK2FyZzI3NTErYXJnMjc1Mith
cmcyNzUzK2FyZzI3NTQrYXJnMjc1NSthcmcyNzU2K2FyZzI3NTcrYXJnMjc1OCthcmcyNzU5K2Fy
ZzI3NjArYXJnMjc2MSthcmcyNzYyK2FyZzI3NjMrYXJnMjc2NCthcmcyNzY1K2FyZzI3NjYrYXJn
Mjc2NythcmcyNzY4K2FyZzI3NjkrYXJnMjc3MCthcmcyNzcxK2FyZzI3NzIrYXJnMjc3Mythcmcy
Nzc0K2FyZzI3NzUrYXJnMjc3NithcmcyNzc3K2FyZzI3NzgrYXJnMjc3OSthcmcyNzgwK2FyZzI3
ODErYXJnMjc4MithcmcyNzgzK2FyZzI3ODQrYXJnMjc4NSthcmcyNzg2K2FyZzI3ODcrYXJnMjc4
OCthcmcyNzg5K2FyZzI3OTArYXJnMjc5MSthcmcyNzkyK2FyZzI3OTMrYXJnMjc5NCthcmcyNzk1
K2FyZzI3OTYrYXJnMjc5NythcmcyNzk4K2FyZzI3OTkrYXJnMjgwMCthcmcyODAxK2FyZzI4MDIr
YXJnMjgwMythcmcyODA0K2FyZzI4MDUrYXJnMjgwNithcmcyODA3K2FyZzI4MDgrYXJnMjgwOSth
cmcyODEwK2FyZzI4MTErYXJnMjgxMithcmcyODEzK2FyZzI4MTQrYXJnMjgxNSthcmcyODE2K2Fy
ZzI4MTcrYXJnMjgxOCthcmcyODE5K2FyZzI4MjArYXJnMjgyMSthcmcyODIyK2FyZzI4MjMrYXJn
MjgyNCthcmcyODI1K2FyZzI4MjYrYXJnMjgyNythcmcyODI4K2FyZzI4MjkrYXJnMjgzMCthcmcy
ODMxK2FyZzI4MzIrYXJnMjgzMythcmcyODM0K2FyZzI4MzUrYXJnMjgzNithcmcyODM3K2FyZzI4
MzgrYXJnMjgzOSthcmcyODQwK2FyZzI4NDErYXJnMjg0MithcmcyODQzK2FyZzI4NDQrYXJnMjg0
NSthcmcyODQ2K2FyZzI4NDcrYXJnMjg0OCthcmcyODQ5K2FyZzI4NTArYXJnMjg1MSthcmcyODUy
K2FyZzI4NTMrYXJnMjg1NCthcmcyODU1K2FyZzI4NTYrYXJnMjg1NythcmcyODU4K2FyZzI4NTkr
YXJnMjg2MCthcmcyODYxK2FyZzI4NjIrYXJnMjg2MythcmcyODY0K2FyZzI4NjUrYXJnMjg2Nith
cmcyODY3K2FyZzI4NjgrYXJnMjg2OSthcmcyODcwK2FyZzI4NzErYXJnMjg3MithcmcyODczK2Fy
ZzI4NzQrYXJnMjg3NSthcmcyODc2K2FyZzI4NzcrYXJnMjg3OCthcmcyODc5K2FyZzI4ODArYXJn
Mjg4MSthcmcyODgyK2FyZzI4ODMrYXJnMjg4NCthcmcyODg1K2FyZzI4ODYrYXJnMjg4Nythcmcy
ODg4K2FyZzI4ODkrYXJnMjg5MCthcmcyODkxK2FyZzI4OTIrYXJnMjg5MythcmcyODk0K2FyZzI4
OTUrYXJnMjg5NithcmcyODk3K2FyZzI4OTgrYXJnMjg5OSthcmcyOTAwK2FyZzI5MDErYXJnMjkw
MithcmcyOTAzK2FyZzI5MDQrYXJnMjkwNSthcmcyOTA2K2FyZzI5MDcrYXJnMjkwOCthcmcyOTA5
K2FyZzI5MTArYXJnMjkxMSthcmcyOTEyK2FyZzI5MTMrYXJnMjkxNCthcmcyOTE1K2FyZzI5MTYr
YXJnMjkxNythcmcyOTE4K2FyZzI5MTkrYXJnMjkyMCthcmcyOTIxK2FyZzI5MjIrYXJnMjkyMyth
cmcyOTI0K2FyZzI5MjUrYXJnMjkyNithcmcyOTI3K2FyZzI5MjgrYXJnMjkyOSthcmcyOTMwK2Fy
ZzI5MzErYXJnMjkzMithcmcyOTMzK2FyZzI5MzQrYXJnMjkzNSthcmcyOTM2K2FyZzI5MzcrYXJn
MjkzOCthcmcyOTM5K2FyZzI5NDArYXJnMjk0MSthcmcyOTQyK2FyZzI5NDMrYXJnMjk0NCthcmcy
OTQ1K2FyZzI5NDYrYXJnMjk0NythcmcyOTQ4K2FyZzI5NDkrYXJnMjk1MCthcmcyOTUxK2FyZzI5
NTIrYXJnMjk1MythcmcyOTU0K2FyZzI5NTUrYXJnMjk1NithcmcyOTU3K2FyZzI5NTgrYXJnMjk1
OSthcmcyOTYwK2FyZzI5NjErYXJnMjk2MithcmcyOTYzK2FyZzI5NjQrYXJnMjk2NSthcmcyOTY2
K2FyZzI5NjcrYXJnMjk2OCthcmcyOTY5K2FyZzI5NzArYXJnMjk3MSthcmcyOTcyK2FyZzI5NzMr
YXJnMjk3NCthcmcyOTc1K2FyZzI5NzYrYXJnMjk3NythcmcyOTc4K2FyZzI5NzkrYXJnMjk4MCth
cmcyOTgxK2FyZzI5ODIrYXJnMjk4MythcmcyOTg0K2FyZzI5ODUrYXJnMjk4NithcmcyOTg3K2Fy
ZzI5ODgrYXJnMjk4OSthcmcyOTkwK2FyZzI5OTErYXJnMjk5MithcmcyOTkzK2FyZzI5OTQrYXJn
Mjk5NSthcmcyOTk2K2FyZzI5OTcrYXJnMjk5OCthcmcyOTk5K2FyZzMwMDArYXJnMzAwMSthcmcz
MDAyK2FyZzMwMDMrYXJnMzAwNCthcmczMDA1K2FyZzMwMDYrYXJnMzAwNythcmczMDA4K2FyZzMw
MDkrYXJnMzAxMCthcmczMDExK2FyZzMwMTIrYXJnMzAxMythcmczMDE0K2FyZzMwMTUrYXJnMzAx
NithcmczMDE3K2FyZzMwMTgrYXJnMzAxOSthcmczMDIwK2FyZzMwMjErYXJnMzAyMithcmczMDIz
K2FyZzMwMjQrYXJnMzAyNSthcmczMDI2K2FyZzMwMjcrYXJnMzAyOCthcmczMDI5K2FyZzMwMzAr
YXJnMzAzMSthcmczMDMyK2FyZzMwMzMrYXJnMzAzNCthcmczMDM1K2FyZzMwMzYrYXJnMzAzNyth
cmczMDM4K2FyZzMwMzkrYXJnMzA0MCthcmczMDQxK2FyZzMwNDIrYXJnMzA0MythcmczMDQ0K2Fy
ZzMwNDUrYXJnMzA0NithcmczMDQ3K2FyZzMwNDgrYXJnMzA0OSthcmczMDUwK2FyZzMwNTErYXJn
MzA1MithcmczMDUzK2FyZzMwNTQrYXJnMzA1NSthcmczMDU2K2FyZzMwNTcrYXJnMzA1OCthcmcz
MDU5K2FyZzMwNjArYXJnMzA2MSthcmczMDYyK2FyZzMwNjMrYXJnMzA2NCthcmczMDY1K2FyZzMw
NjYrYXJnMzA2NythcmczMDY4K2FyZzMwNjkrYXJnMzA3MCthcmczMDcxK2FyZzMwNzIrYXJnMzA3
MythcmczMDc0K2FyZzMwNzUrYXJnMzA3NithcmczMDc3K2FyZzMwNzgrYXJnMzA3OSthcmczMDgw
K2FyZzMwODErYXJnMzA4MithcmczMDgzK2FyZzMwODQrYXJnMzA4NSthcmczMDg2K2FyZzMwODcr
YXJnMzA4OCthcmczMDg5K2FyZzMwOTArYXJnMzA5MSthcmczMDkyK2FyZzMwOTMrYXJnMzA5NCth
cmczMDk1K2FyZzMwOTYrYXJnMzA5NythcmczMDk4K2FyZzMwOTkrYXJnMzEwMCthcmczMTAxK2Fy
ZzMxMDIrYXJnMzEwMythcmczMTA0K2FyZzMxMDUrYXJnMzEwNithcmczMTA3K2FyZzMxMDgrYXJn
MzEwOSthcmczMTEwK2FyZzMxMTErYXJnMzExMithcmczMTEzK2FyZzMxMTQrYXJnMzExNSthcmcz
MTE2K2FyZzMxMTcrYXJnMzExOCthcmczMTE5K2FyZzMxMjArYXJnMzEyMSthcmczMTIyK2FyZzMx
MjMrYXJnMzEyNCthcmczMTI1K2FyZzMxMjYrYXJnMzEyNythcmczMTI4K2FyZzMxMjkrYXJnMzEz
MCthcmczMTMxK2FyZzMxMzIrYXJnMzEzMythcmczMTM0K2FyZzMxMzUrYXJnMzEzNithcmczMTM3
K2FyZzMxMzgrYXJnMzEzOSthcmczMTQwK2FyZzMxNDErYXJnMzE0MithcmczMTQzK2FyZzMxNDQr
YXJnMzE0NSthcmczMTQ2K2FyZzMxNDcrYXJnMzE0OCthcmczMTQ5K2FyZzMxNTArYXJnMzE1MSth
cmczMTUyK2FyZzMxNTMrYXJnMzE1NCthcmczMTU1K2FyZzMxNTYrYXJnMzE1NythcmczMTU4K2Fy
ZzMxNTkrYXJnMzE2MCthcmczMTYxK2FyZzMxNjIrYXJnMzE2MythcmczMTY0K2FyZzMxNjUrYXJn
MzE2NithcmczMTY3K2FyZzMxNjgrYXJnMzE2OSthcmczMTcwK2FyZzMxNzErYXJnMzE3Mithcmcz
MTczK2FyZzMxNzQrYXJnMzE3NSthcmczMTc2K2FyZzMxNzcrYXJnMzE3OCthcmczMTc5K2FyZzMx
ODArYXJnMzE4MSthcmczMTgyK2FyZzMxODMrYXJnMzE4NCthcmczMTg1K2FyZzMxODYrYXJnMzE4
NythcmczMTg4K2FyZzMxODkrYXJnMzE5MCthcmczMTkxK2FyZzMxOTIrYXJnMzE5MythcmczMTk0
K2FyZzMxOTUrYXJnMzE5NithcmczMTk3K2FyZzMxOTgrYXJnMzE5OSthcmczMjAwK2FyZzMyMDEr
YXJnMzIwMithcmczMjAzK2FyZzMyMDQrYXJnMzIwNSthcmczMjA2K2FyZzMyMDcrYXJnMzIwOCth
cmczMjA5K2FyZzMyMTArYXJnMzIxMSthcmczMjEyK2FyZzMyMTMrYXJnMzIxNCthcmczMjE1K2Fy
ZzMyMTYrYXJnMzIxNythcmczMjE4K2FyZzMyMTkrYXJnMzIyMCthcmczMjIxK2FyZzMyMjIrYXJn
MzIyMythcmczMjI0K2FyZzMyMjUrYXJnMzIyNithcmczMjI3K2FyZzMyMjgrYXJnMzIyOSthcmcz
MjMwK2FyZzMyMzErYXJnMzIzMithcmczMjMzK2FyZzMyMzQrYXJnMzIzNSthcmczMjM2K2FyZzMy
MzcrYXJnMzIzOCthcmczMjM5K2FyZzMyNDArYXJnMzI0MSthcmczMjQyK2FyZzMyNDMrYXJnMzI0
NCthcmczMjQ1K2FyZzMyNDYrYXJnMzI0NythcmczMjQ4K2FyZzMyNDkrYXJnMzI1MCthcmczMjUx
K2FyZzMyNTIrYXJnMzI1MythcmczMjU0K2FyZzMyNTUrYXJnMzI1NithcmczMjU3K2FyZzMyNTgr
YXJnMzI1OSthcmczMjYwK2FyZzMyNjErYXJnMzI2MithcmczMjYzK2FyZzMyNjQrYXJnMzI2NSth
cmczMjY2K2FyZzMyNjcrYXJnMzI2OCthcmczMjY5K2FyZzMyNzArYXJnMzI3MSthcmczMjcyK2Fy
ZzMyNzMrYXJnMzI3NCthcmczMjc1K2FyZzMyNzYrYXJnMzI3NythcmczMjc4K2FyZzMyNzkrYXJn
MzI4MCthcmczMjgxK2FyZzMyODIrYXJnMzI4MythcmczMjg0K2FyZzMyODUrYXJnMzI4Nithcmcz
Mjg3K2FyZzMyODgrYXJnMzI4OSthcmczMjkwK2FyZzMyOTErYXJnMzI5MithcmczMjkzK2FyZzMy
OTQrYXJnMzI5NSthcmczMjk2K2FyZzMyOTcrYXJnMzI5OCthcmczMjk5K2FyZzMzMDArYXJnMzMw
MSthcmczMzAyK2FyZzMzMDMrYXJnMzMwNCthcmczMzA1K2FyZzMzMDYrYXJnMzMwNythcmczMzA4
K2FyZzMzMDkrYXJnMzMxMCthcmczMzExK2FyZzMzMTIrYXJnMzMxMythcmczMzE0K2FyZzMzMTUr
YXJnMzMxNithcmczMzE3K2FyZzMzMTgrYXJnMzMxOSthcmczMzIwK2FyZzMzMjErYXJnMzMyMith
cmczMzIzK2FyZzMzMjQrYXJnMzMyNSthcmczMzI2K2FyZzMzMjcrYXJnMzMyOCthcmczMzI5K2Fy
ZzMzMzArYXJnMzMzMSthcmczMzMyK2FyZzMzMzMrYXJnMzMzNCthcmczMzM1K2FyZzMzMzYrYXJn
MzMzNythcmczMzM4K2FyZzMzMzkrYXJnMzM0MCthcmczMzQxK2FyZzMzNDIrYXJnMzM0Mythcmcz
MzQ0K2FyZzMzNDUrYXJnMzM0NithcmczMzQ3K2FyZzMzNDgrYXJnMzM0OSthcmczMzUwK2FyZzMz
NTErYXJnMzM1MithcmczMzUzK2FyZzMzNTQrYXJnMzM1NSthcmczMzU2K2FyZzMzNTcrYXJnMzM1
OCthcmczMzU5K2FyZzMzNjArYXJnMzM2MSthcmczMzYyK2FyZzMzNjMrYXJnMzM2NCthcmczMzY1
K2FyZzMzNjYrYXJnMzM2NythcmczMzY4K2FyZzMzNjkrYXJnMzM3MCthcmczMzcxK2FyZzMzNzIr
YXJnMzM3MythcmczMzc0K2FyZzMzNzUrYXJnMzM3NithcmczMzc3K2FyZzMzNzgrYXJnMzM3OSth
cmczMzgwK2FyZzMzODErYXJnMzM4MithcmczMzgzK2FyZzMzODQrYXJnMzM4NSthcmczMzg2K2Fy
ZzMzODcrYXJnMzM4OCthcmczMzg5K2FyZzMzOTArYXJnMzM5MSthcmczMzkyK2FyZzMzOTMrYXJn
MzM5NCthcmczMzk1K2FyZzMzOTYrYXJnMzM5NythcmczMzk4K2FyZzMzOTkrYXJnMzQwMCthcmcz
NDAxK2FyZzM0MDIrYXJnMzQwMythcmczNDA0K2FyZzM0MDUrYXJnMzQwNithcmczNDA3K2FyZzM0
MDgrYXJnMzQwOSthcmczNDEwK2FyZzM0MTErYXJnMzQxMithcmczNDEzK2FyZzM0MTQrYXJnMzQx
NSthcmczNDE2K2FyZzM0MTcrYXJnMzQxOCthcmczNDE5K2FyZzM0MjArYXJnMzQyMSthcmczNDIy
K2FyZzM0MjMrYXJnMzQyNCthcmczNDI1K2FyZzM0MjYrYXJnMzQyNythcmczNDI4K2FyZzM0Mjkr
YXJnMzQzMCthcmczNDMxK2FyZzM0MzIrYXJnMzQzMythcmczNDM0K2FyZzM0MzUrYXJnMzQzNith
cmczNDM3K2FyZzM0MzgrYXJnMzQzOSthcmczNDQwK2FyZzM0NDErYXJnMzQ0MithcmczNDQzK2Fy
ZzM0NDQrYXJnMzQ0NSthcmczNDQ2K2FyZzM0NDcrYXJnMzQ0OCthcmczNDQ5K2FyZzM0NTArYXJn
MzQ1MSthcmczNDUyK2FyZzM0NTMrYXJnMzQ1NCthcmczNDU1K2FyZzM0NTYrYXJnMzQ1Nythcmcz
NDU4K2FyZzM0NTkrYXJnMzQ2MCthcmczNDYxK2FyZzM0NjIrYXJnMzQ2MythcmczNDY0K2FyZzM0
NjUrYXJnMzQ2NithcmczNDY3K2FyZzM0NjgrYXJnMzQ2OSthcmczNDcwK2FyZzM0NzErYXJnMzQ3
MithcmczNDczK2FyZzM0NzQrYXJnMzQ3NSthcmczNDc2K2FyZzM0NzcrYXJnMzQ3OCthcmczNDc5
K2FyZzM0ODArYXJnMzQ4MSthcmczNDgyK2FyZzM0ODMrYXJnMzQ4NCthcmczNDg1K2FyZzM0ODYr
YXJnMzQ4NythcmczNDg4K2FyZzM0ODkrYXJnMzQ5MCthcmczNDkxK2FyZzM0OTIrYXJnMzQ5Myth
cmczNDk0K2FyZzM0OTUrYXJnMzQ5NithcmczNDk3K2FyZzM0OTgrYXJnMzQ5OSthcmczNTAwK2Fy
ZzM1MDErYXJnMzUwMithcmczNTAzK2FyZzM1MDQrYXJnMzUwNSthcmczNTA2K2FyZzM1MDcrYXJn
MzUwOCthcmczNTA5K2FyZzM1MTArYXJnMzUxMSthcmczNTEyK2FyZzM1MTMrYXJnMzUxNCthcmcz
NTE1K2FyZzM1MTYrYXJnMzUxNythcmczNTE4K2FyZzM1MTkrYXJnMzUyMCthcmczNTIxK2FyZzM1
MjIrYXJnMzUyMythcmczNTI0K2FyZzM1MjUrYXJnMzUyNithcmczNTI3K2FyZzM1MjgrYXJnMzUy
OSthcmczNTMwK2FyZzM1MzErYXJnMzUzMithcmczNTMzK2FyZzM1MzQrYXJnMzUzNSthcmczNTM2
K2FyZzM1MzcrYXJnMzUzOCthcmczNTM5K2FyZzM1NDArYXJnMzU0MSthcmczNTQyK2FyZzM1NDMr
YXJnMzU0NCthcmczNTQ1K2FyZzM1NDYrYXJnMzU0NythcmczNTQ4K2FyZzM1NDkrYXJnMzU1MCth
cmczNTUxK2FyZzM1NTIrYXJnMzU1MythcmczNTU0K2FyZzM1NTUrYXJnMzU1NithcmczNTU3K2Fy
ZzM1NTgrYXJnMzU1OSthcmczNTYwK2FyZzM1NjErYXJnMzU2MithcmczNTYzK2FyZzM1NjQrYXJn
MzU2NSthcmczNTY2K2FyZzM1NjcrYXJnMzU2OCthcmczNTY5K2FyZzM1NzArYXJnMzU3MSthcmcz
NTcyK2FyZzM1NzMrYXJnMzU3NCthcmczNTc1K2FyZzM1NzYrYXJnMzU3NythcmczNTc4K2FyZzM1
NzkrYXJnMzU4MCthcmczNTgxK2FyZzM1ODIrYXJnMzU4MythcmczNTg0K2FyZzM1ODUrYXJnMzU4
NithcmczNTg3K2FyZzM1ODgrYXJnMzU4OSthcmczNTkwK2FyZzM1OTErYXJnMzU5MithcmczNTkz
K2FyZzM1OTQrYXJnMzU5NSthcmczNTk2K2FyZzM1OTcrYXJnMzU5OCthcmczNTk5K2FyZzM2MDAr
YXJnMzYwMSthcmczNjAyK2FyZzM2MDMrYXJnMzYwNCthcmczNjA1K2FyZzM2MDYrYXJnMzYwNyth
cmczNjA4K2FyZzM2MDkrYXJnMzYxMCthcmczNjExK2FyZzM2MTIrYXJnMzYxMythcmczNjE0K2Fy
ZzM2MTUrYXJnMzYxNithcmczNjE3K2FyZzM2MTgrYXJnMzYxOSthcmczNjIwK2FyZzM2MjErYXJn
MzYyMithcmczNjIzK2FyZzM2MjQrYXJnMzYyNSthcmczNjI2K2FyZzM2MjcrYXJnMzYyOCthcmcz
NjI5K2FyZzM2MzArYXJnMzYzMSthcmczNjMyK2FyZzM2MzMrYXJnMzYzNCthcmczNjM1K2FyZzM2
MzYrYXJnMzYzNythcmczNjM4K2FyZzM2MzkrYXJnMzY0MCthcmczNjQxK2FyZzM2NDIrYXJnMzY0
MythcmczNjQ0K2FyZzM2NDUrYXJnMzY0NithcmczNjQ3K2FyZzM2NDgrYXJnMzY0OSthcmczNjUw
K2FyZzM2NTErYXJnMzY1MithcmczNjUzK2FyZzM2NTQrYXJnMzY1NSthcmczNjU2K2FyZzM2NTcr
YXJnMzY1OCthcmczNjU5K2FyZzM2NjArYXJnMzY2MSthcmczNjYyK2FyZzM2NjMrYXJnMzY2NCth
cmczNjY1K2FyZzM2NjYrYXJnMzY2NythcmczNjY4K2FyZzM2NjkrYXJnMzY3MCthcmczNjcxK2Fy
ZzM2NzIrYXJnMzY3MythcmczNjc0K2FyZzM2NzUrYXJnMzY3NithcmczNjc3K2FyZzM2NzgrYXJn
MzY3OSthcmczNjgwK2FyZzM2ODErYXJnMzY4MithcmczNjgzK2FyZzM2ODQrYXJnMzY4NSthcmcz
Njg2K2FyZzM2ODcrYXJnMzY4OCthcmczNjg5K2FyZzM2OTArYXJnMzY5MSthcmczNjkyK2FyZzM2
OTMrYXJnMzY5NCthcmczNjk1K2FyZzM2OTYrYXJnMzY5NythcmczNjk4K2FyZzM2OTkrYXJnMzcw
MCthcmczNzAxK2FyZzM3MDIrYXJnMzcwMythcmczNzA0K2FyZzM3MDUrYXJnMzcwNithcmczNzA3
K2FyZzM3MDgrYXJnMzcwOSthcmczNzEwK2FyZzM3MTErYXJnMzcxMithcmczNzEzK2FyZzM3MTQr
YXJnMzcxNSthcmczNzE2K2FyZzM3MTcrYXJnMzcxOCthcmczNzE5K2FyZzM3MjArYXJnMzcyMSth
cmczNzIyK2FyZzM3MjMrYXJnMzcyNCthcmczNzI1K2FyZzM3MjYrYXJnMzcyNythcmczNzI4K2Fy
ZzM3MjkrYXJnMzczMCthcmczNzMxK2FyZzM3MzIrYXJnMzczMythcmczNzM0K2FyZzM3MzUrYXJn
MzczNithcmczNzM3K2FyZzM3MzgrYXJnMzczOSthcmczNzQwK2FyZzM3NDErYXJnMzc0Mithcmcz
NzQzK2FyZzM3NDQrYXJnMzc0NSthcmczNzQ2K2FyZzM3NDcrYXJnMzc0OCthcmczNzQ5K2FyZzM3
NTArYXJnMzc1MSthcmczNzUyK2FyZzM3NTMrYXJnMzc1NCthcmczNzU1K2FyZzM3NTYrYXJnMzc1
NythcmczNzU4K2FyZzM3NTkrYXJnMzc2MCthcmczNzYxK2FyZzM3NjIrYXJnMzc2MythcmczNzY0
K2FyZzM3NjUrYXJnMzc2NithcmczNzY3K2FyZzM3NjgrYXJnMzc2OSthcmczNzcwK2FyZzM3NzEr
YXJnMzc3MithcmczNzczK2FyZzM3NzQrYXJnMzc3NSthcmczNzc2K2FyZzM3NzcrYXJnMzc3OCth
cmczNzc5K2FyZzM3ODArYXJnMzc4MSthcmczNzgyK2FyZzM3ODMrYXJnMzc4NCthcmczNzg1K2Fy
ZzM3ODYrYXJnMzc4NythcmczNzg4K2FyZzM3ODkrYXJnMzc5MCthcmczNzkxK2FyZzM3OTIrYXJn
Mzc5MythcmczNzk0K2FyZzM3OTUrYXJnMzc5NithcmczNzk3K2FyZzM3OTgrYXJnMzc5OSthcmcz
ODAwK2FyZzM4MDErYXJnMzgwMithcmczODAzK2FyZzM4MDQrYXJnMzgwNSthcmczODA2K2FyZzM4
MDcrYXJnMzgwOCthcmczODA5K2FyZzM4MTArYXJnMzgxMSthcmczODEyK2FyZzM4MTMrYXJnMzgx
NCthcmczODE1K2FyZzM4MTYrYXJnMzgxNythcmczODE4K2FyZzM4MTkrYXJnMzgyMCthcmczODIx
K2FyZzM4MjIrYXJnMzgyMythcmczODI0K2FyZzM4MjUrYXJnMzgyNithcmczODI3K2FyZzM4Mjgr
YXJnMzgyOSthcmczODMwK2FyZzM4MzErYXJnMzgzMithcmczODMzK2FyZzM4MzQrYXJnMzgzNSth
cmczODM2K2FyZzM4MzcrYXJnMzgzOCthcmczODM5K2FyZzM4NDArYXJnMzg0MSthcmczODQyK2Fy
ZzM4NDMrYXJnMzg0NCthcmczODQ1K2FyZzM4NDYrYXJnMzg0NythcmczODQ4K2FyZzM4NDkrYXJn
Mzg1MCthcmczODUxK2FyZzM4NTIrYXJnMzg1MythcmczODU0K2FyZzM4NTUrYXJnMzg1Nithcmcz
ODU3K2FyZzM4NTgrYXJnMzg1OSthcmczODYwK2FyZzM4NjErYXJnMzg2MithcmczODYzK2FyZzM4
NjQrYXJnMzg2NSthcmczODY2K2FyZzM4NjcrYXJnMzg2OCthcmczODY5K2FyZzM4NzArYXJnMzg3
MSthcmczODcyK2FyZzM4NzMrYXJnMzg3NCthcmczODc1K2FyZzM4NzYrYXJnMzg3NythcmczODc4
K2FyZzM4NzkrYXJnMzg4MCthcmczODgxK2FyZzM4ODIrYXJnMzg4MythcmczODg0K2FyZzM4ODUr
YXJnMzg4NithcmczODg3K2FyZzM4ODgrYXJnMzg4OSthcmczODkwK2FyZzM4OTErYXJnMzg5Mith
cmczODkzK2FyZzM4OTQrYXJnMzg5NSthcmczODk2K2FyZzM4OTcrYXJnMzg5OCthcmczODk5K2Fy
ZzM5MDArYXJnMzkwMSthcmczOTAyK2FyZzM5MDMrYXJnMzkwNCthcmczOTA1K2FyZzM5MDYrYXJn
MzkwNythcmczOTA4K2FyZzM5MDkrYXJnMzkxMCthcmczOTExK2FyZzM5MTIrYXJnMzkxMythcmcz
OTE0K2FyZzM5MTUrYXJnMzkxNithcmczOTE3K2FyZzM5MTgrYXJnMzkxOSthcmczOTIwK2FyZzM5
MjErYXJnMzkyMithcmczOTIzK2FyZzM5MjQrYXJnMzkyNSthcmczOTI2K2FyZzM5MjcrYXJnMzky
OCthcmczOTI5K2FyZzM5MzArYXJnMzkzMSthcmczOTMyK2FyZzM5MzMrYXJnMzkzNCthcmczOTM1
K2FyZzM5MzYrYXJnMzkzNythcmczOTM4K2FyZzM5MzkrYXJnMzk0MCthcmczOTQxK2FyZzM5NDIr
YXJnMzk0MythcmczOTQ0K2FyZzM5NDUrYXJnMzk0NithcmczOTQ3K2FyZzM5NDgrYXJnMzk0OSth
cmczOTUwK2FyZzM5NTErYXJnMzk1MithcmczOTUzK2FyZzM5NTQrYXJnMzk1NSthcmczOTU2K2Fy
ZzM5NTcrYXJnMzk1OCthcmczOTU5K2FyZzM5NjArYXJnMzk2MSthcmczOTYyK2FyZzM5NjMrYXJn
Mzk2NCthcmczOTY1K2FyZzM5NjYrYXJnMzk2NythcmczOTY4K2FyZzM5NjkrYXJnMzk3MCthcmcz
OTcxK2FyZzM5NzIrYXJnMzk3MythcmczOTc0K2FyZzM5NzUrYXJnMzk3NithcmczOTc3K2FyZzM5
NzgrYXJnMzk3OSthcmczOTgwK2FyZzM5ODErYXJnMzk4MithcmczOTgzK2FyZzM5ODQrYXJnMzk4
NSthcmczOTg2K2FyZzM5ODcrYXJnMzk4OCthcmczOTg5K2FyZzM5OTArYXJnMzk5MSthcmczOTky
K2FyZzM5OTMrYXJnMzk5NCthcmczOTk1K2FyZzM5OTYrYXJnMzk5NythcmczOTk4K2FyZzM5OTkr
YXJnNDAwMCthcmc0MDAxK2FyZzQwMDIrYXJnNDAwMythcmc0MDA0K2FyZzQwMDUrYXJnNDAwNith
cmc0MDA3K2FyZzQwMDgrYXJnNDAwOSthcmc0MDEwK2FyZzQwMTErYXJnNDAxMithcmc0MDEzK2Fy
ZzQwMTQrYXJnNDAxNSthcmc0MDE2K2FyZzQwMTcrYXJnNDAxOCthcmc0MDE5K2FyZzQwMjArYXJn
NDAyMSthcmc0MDIyK2FyZzQwMjMrYXJnNDAyNCthcmc0MDI1K2FyZzQwMjYrYXJnNDAyNythcmc0
MDI4K2FyZzQwMjkrYXJnNDAzMCthcmc0MDMxK2FyZzQwMzIrYXJnNDAzMythcmc0MDM0K2FyZzQw
MzUrYXJnNDAzNithcmc0MDM3K2FyZzQwMzgrYXJnNDAzOSthcmc0MDQwK2FyZzQwNDErYXJnNDA0
Mithcmc0MDQzK2FyZzQwNDQrYXJnNDA0NSthcmc0MDQ2K2FyZzQwNDcrYXJnNDA0OCthcmc0MDQ5
K2FyZzQwNTArYXJnNDA1MSthcmc0MDUyK2FyZzQwNTMrYXJnNDA1NCthcmc0MDU1K2FyZzQwNTYr
YXJnNDA1Nythcmc0MDU4K2FyZzQwNTkrYXJnNDA2MCthcmc0MDYxK2FyZzQwNjIrYXJnNDA2Myth
cmc0MDY0K2FyZzQwNjUrYXJnNDA2Nithcmc0MDY3K2FyZzQwNjgrYXJnNDA2OSthcmc0MDcwK2Fy
ZzQwNzErYXJnNDA3Mithcmc0MDczK2FyZzQwNzQrYXJnNDA3NSthcmc0MDc2K2FyZzQwNzcrYXJn
NDA3OCthcmc0MDc5K2FyZzQwODArYXJnNDA4MSthcmc0MDgyK2FyZzQwODMrYXJnNDA4NCthcmc0
MDg1K2FyZzQwODYrYXJnNDA4Nythcmc0MDg4K2FyZzQwODkrYXJnNDA5MCthcmc0MDkxK2FyZzQw
OTIrYXJnNDA5Mythcmc0MDk0K2FyZzQwOTUrYXJnNDA5Nithcmc0MDk3K2FyZzQwOTgrYXJnNDA5
OSthcmc0MTAwK2FyZzQxMDErYXJnNDEwMithcmc0MTAzK2FyZzQxMDQrYXJnNDEwNSthcmc0MTA2
K2FyZzQxMDcrYXJnNDEwOCthcmc0MTA5K2FyZzQxMTArYXJnNDExMSthcmc0MTEyK2FyZzQxMTMr
YXJnNDExNCthcmc0MTE1K2FyZzQxMTYrYXJnNDExNythcmc0MTE4K2FyZzQxMTkrYXJnNDEyMCth
cmc0MTIxK2FyZzQxMjIrYXJnNDEyMythcmc0MTI0K2FyZzQxMjUrYXJnNDEyNithcmc0MTI3K2Fy
ZzQxMjgrYXJnNDEyOSthcmc0MTMwK2FyZzQxMzErYXJnNDEzMithcmc0MTMzK2FyZzQxMzQrYXJn
NDEzNSthcmc0MTM2K2FyZzQxMzcrYXJnNDEzOCthcmc0MTM5K2FyZzQxNDArYXJnNDE0MSthcmc0
MTQyK2FyZzQxNDMrYXJnNDE0NCthcmc0MTQ1K2FyZzQxNDYrYXJnNDE0Nythcmc0MTQ4K2FyZzQx
NDkrYXJnNDE1MCthcmc0MTUxK2FyZzQxNTIrYXJnNDE1Mythcmc0MTU0K2FyZzQxNTUrYXJnNDE1
Nithcmc0MTU3K2FyZzQxNTgrYXJnNDE1OSthcmc0MTYwK2FyZzQxNjErYXJnNDE2Mithcmc0MTYz
K2FyZzQxNjQrYXJnNDE2NSthcmc0MTY2K2FyZzQxNjcrYXJnNDE2OCthcmc0MTY5K2FyZzQxNzAr
YXJnNDE3MSthcmc0MTcyK2FyZzQxNzMrYXJnNDE3NCthcmc0MTc1K2FyZzQxNzYrYXJnNDE3Nyth
cmc0MTc4K2FyZzQxNzkrYXJnNDE4MCthcmc0MTgxK2FyZzQxODIrYXJnNDE4Mythcmc0MTg0K2Fy
ZzQxODUrYXJnNDE4Nithcmc0MTg3K2FyZzQxODgrYXJnNDE4OSthcmc0MTkwK2FyZzQxOTErYXJn
NDE5Mithcmc0MTkzK2FyZzQxOTQrYXJnNDE5NSthcmc0MTk2K2FyZzQxOTcrYXJnNDE5OCthcmc0
MTk5K2FyZzQyMDArYXJnNDIwMSthcmc0MjAyK2FyZzQyMDMrYXJnNDIwNCthcmc0MjA1K2FyZzQy
MDYrYXJnNDIwNythcmc0MjA4K2FyZzQyMDkrYXJnNDIxMCthcmc0MjExK2FyZzQyMTIrYXJnNDIx
Mythcmc0MjE0K2FyZzQyMTUrYXJnNDIxNithcmc0MjE3K2FyZzQyMTgrYXJnNDIxOSthcmc0MjIw
K2FyZzQyMjErYXJnNDIyMithcmc0MjIzK2FyZzQyMjQrYXJnNDIyNSthcmc0MjI2K2FyZzQyMjcr
YXJnNDIyOCthcmc0MjI5K2FyZzQyMzArYXJnNDIzMSthcmc0MjMyK2FyZzQyMzMrYXJnNDIzNCth
cmc0MjM1K2FyZzQyMzYrYXJnNDIzNythcmc0MjM4K2FyZzQyMzkrYXJnNDI0MCthcmc0MjQxK2Fy
ZzQyNDIrYXJnNDI0Mythcmc0MjQ0K2FyZzQyNDUrYXJnNDI0Nithcmc0MjQ3K2FyZzQyNDgrYXJn
NDI0OSthcmc0MjUwK2FyZzQyNTErYXJnNDI1Mithcmc0MjUzK2FyZzQyNTQrYXJnNDI1NSthcmc0
MjU2K2FyZzQyNTcrYXJnNDI1OCthcmc0MjU5K2FyZzQyNjArYXJnNDI2MSthcmc0MjYyK2FyZzQy
NjMrYXJnNDI2NCthcmc0MjY1K2FyZzQyNjYrYXJnNDI2Nythcmc0MjY4K2FyZzQyNjkrYXJnNDI3
MCthcmc0MjcxK2FyZzQyNzIrYXJnNDI3Mythcmc0Mjc0K2FyZzQyNzUrYXJnNDI3Nithcmc0Mjc3
K2FyZzQyNzgrYXJnNDI3OSthcmc0MjgwK2FyZzQyODErYXJnNDI4Mithcmc0MjgzK2FyZzQyODQr
YXJnNDI4NSthcmc0Mjg2K2FyZzQyODcrYXJnNDI4OCthcmc0Mjg5K2FyZzQyOTArYXJnNDI5MSth
cmc0MjkyK2FyZzQyOTMrYXJnNDI5NCthcmc0Mjk1K2FyZzQyOTYrYXJnNDI5Nythcmc0Mjk4K2Fy
ZzQyOTkrYXJnNDMwMCthcmc0MzAxK2FyZzQzMDIrYXJnNDMwMythcmc0MzA0K2FyZzQzMDUrYXJn
NDMwNithcmc0MzA3K2FyZzQzMDgrYXJnNDMwOSthcmc0MzEwK2FyZzQzMTErYXJnNDMxMithcmc0
MzEzK2FyZzQzMTQrYXJnNDMxNSthcmc0MzE2K2FyZzQzMTcrYXJnNDMxOCthcmc0MzE5K2FyZzQz
MjArYXJnNDMyMSthcmc0MzIyK2FyZzQzMjMrYXJnNDMyNCthcmc0MzI1K2FyZzQzMjYrYXJnNDMy
Nythcmc0MzI4K2FyZzQzMjkrYXJnNDMzMCthcmc0MzMxK2FyZzQzMzIrYXJnNDMzMythcmc0MzM0
K2FyZzQzMzUrYXJnNDMzNithcmc0MzM3K2FyZzQzMzgrYXJnNDMzOSthcmc0MzQwK2FyZzQzNDEr
YXJnNDM0Mithcmc0MzQzK2FyZzQzNDQrYXJnNDM0NSthcmc0MzQ2K2FyZzQzNDcrYXJnNDM0OCth
cmc0MzQ5K2FyZzQzNTArYXJnNDM1MSthcmc0MzUyK2FyZzQzNTMrYXJnNDM1NCthcmc0MzU1K2Fy
ZzQzNTYrYXJnNDM1Nythcmc0MzU4K2FyZzQzNTkrYXJnNDM2MCthcmc0MzYxK2FyZzQzNjIrYXJn
NDM2Mythcmc0MzY0K2FyZzQzNjUrYXJnNDM2Nithcmc0MzY3K2FyZzQzNjgrYXJnNDM2OSthcmc0
MzcwK2FyZzQzNzErYXJnNDM3Mithcmc0MzczK2FyZzQzNzQrYXJnNDM3NSthcmc0Mzc2K2FyZzQz
NzcrYXJnNDM3OCthcmc0Mzc5K2FyZzQzODArYXJnNDM4MSthcmc0MzgyK2FyZzQzODMrYXJnNDM4
NCthcmc0Mzg1K2FyZzQzODYrYXJnNDM4Nythcmc0Mzg4K2FyZzQzODkrYXJnNDM5MCthcmc0Mzkx
K2FyZzQzOTIrYXJnNDM5Mythcmc0Mzk0K2FyZzQzOTUrYXJnNDM5Nithcmc0Mzk3K2FyZzQzOTgr
YXJnNDM5OSthcmc0NDAwK2FyZzQ0MDErYXJnNDQwMithcmc0NDAzK2FyZzQ0MDQrYXJnNDQwNSth
cmc0NDA2K2FyZzQ0MDcrYXJnNDQwOCthcmc0NDA5K2FyZzQ0MTArYXJnNDQxMSthcmc0NDEyK2Fy
ZzQ0MTMrYXJnNDQxNCthcmc0NDE1K2FyZzQ0MTYrYXJnNDQxNythcmc0NDE4K2FyZzQ0MTkrYXJn
NDQyMCthcmc0NDIxK2FyZzQ0MjIrYXJnNDQyMythcmc0NDI0K2FyZzQ0MjUrYXJnNDQyNithcmc0
NDI3K2FyZzQ0MjgrYXJnNDQyOSthcmc0NDMwK2FyZzQ0MzErYXJnNDQzMithcmc0NDMzK2FyZzQ0
MzQrYXJnNDQzNSthcmc0NDM2K2FyZzQ0MzcrYXJnNDQzOCthcmc0NDM5K2FyZzQ0NDArYXJnNDQ0
MSthcmc0NDQyK2FyZzQ0NDMrYXJnNDQ0NCthcmc0NDQ1K2FyZzQ0NDYrYXJnNDQ0Nythcmc0NDQ4
K2FyZzQ0NDkrYXJnNDQ1MCthcmc0NDUxK2FyZzQ0NTIrYXJnNDQ1Mythcmc0NDU0K2FyZzQ0NTUr
YXJnNDQ1Nithcmc0NDU3K2FyZzQ0NTgrYXJnNDQ1OSthcmc0NDYwK2FyZzQ0NjErYXJnNDQ2Mith
cmc0NDYzK2FyZzQ0NjQrYXJnNDQ2NSthcmc0NDY2K2FyZzQ0NjcrYXJnNDQ2OCthcmc0NDY5K2Fy
ZzQ0NzArYXJnNDQ3MSthcmc0NDcyK2FyZzQ0NzMrYXJnNDQ3NCthcmc0NDc1K2FyZzQ0NzYrYXJn
NDQ3Nythcmc0NDc4K2FyZzQ0NzkrYXJnNDQ4MCthcmc0NDgxK2FyZzQ0ODIrYXJnNDQ4Mythcmc0
NDg0K2FyZzQ0ODUrYXJnNDQ4Nithcmc0NDg3K2FyZzQ0ODgrYXJnNDQ4OSthcmc0NDkwK2FyZzQ0
OTErYXJnNDQ5Mithcmc0NDkzK2FyZzQ0OTQrYXJnNDQ5NSthcmc0NDk2K2FyZzQ0OTcrYXJnNDQ5
OCthcmc0NDk5K2FyZzQ1MDArYXJnNDUwMSthcmc0NTAyK2FyZzQ1MDMrYXJnNDUwNCthcmc0NTA1
K2FyZzQ1MDYrYXJnNDUwNythcmc0NTA4K2FyZzQ1MDkrYXJnNDUxMCthcmc0NTExK2FyZzQ1MTIr
YXJnNDUxMythcmc0NTE0K2FyZzQ1MTUrYXJnNDUxNithcmc0NTE3K2FyZzQ1MTgrYXJnNDUxOSth
cmc0NTIwK2FyZzQ1MjErYXJnNDUyMithcmc0NTIzK2FyZzQ1MjQrYXJnNDUyNSthcmc0NTI2K2Fy
ZzQ1MjcrYXJnNDUyOCthcmc0NTI5K2FyZzQ1MzArYXJnNDUzMSthcmc0NTMyK2FyZzQ1MzMrYXJn
NDUzNCthcmc0NTM1K2FyZzQ1MzYrYXJnNDUzNythcmc0NTM4K2FyZzQ1MzkrYXJnNDU0MCthcmc0
NTQxK2FyZzQ1NDIrYXJnNDU0Mythcmc0NTQ0K2FyZzQ1NDUrYXJnNDU0Nithcmc0NTQ3K2FyZzQ1
NDgrYXJnNDU0OSthcmc0NTUwK2FyZzQ1NTErYXJnNDU1Mithcmc0NTUzK2FyZzQ1NTQrYXJnNDU1
NSthcmc0NTU2K2FyZzQ1NTcrYXJnNDU1OCthcmc0NTU5K2FyZzQ1NjArYXJnNDU2MSthcmc0NTYy
K2FyZzQ1NjMrYXJnNDU2NCthcmc0NTY1K2FyZzQ1NjYrYXJnNDU2Nythcmc0NTY4K2FyZzQ1Njkr
YXJnNDU3MCthcmc0NTcxK2FyZzQ1NzIrYXJnNDU3Mythcmc0NTc0K2FyZzQ1NzUrYXJnNDU3Nith
cmc0NTc3K2FyZzQ1NzgrYXJnNDU3OSthcmc0NTgwK2FyZzQ1ODErYXJnNDU4Mithcmc0NTgzK2Fy
ZzQ1ODQrYXJnNDU4NSthcmc0NTg2K2FyZzQ1ODcrYXJnNDU4OCthcmc0NTg5K2FyZzQ1OTArYXJn
NDU5MSthcmc0NTkyK2FyZzQ1OTMrYXJnNDU5NCthcmc0NTk1K2FyZzQ1OTYrYXJnNDU5Nythcmc0
NTk4K2FyZzQ1OTkrYXJnNDYwMCthcmc0NjAxK2FyZzQ2MDIrYXJnNDYwMythcmc0NjA0K2FyZzQ2
MDUrYXJnNDYwNithcmc0NjA3K2FyZzQ2MDgrYXJnNDYwOSthcmc0NjEwK2FyZzQ2MTErYXJnNDYx
Mithcmc0NjEzK2FyZzQ2MTQrYXJnNDYxNSthcmc0NjE2K2FyZzQ2MTcrYXJnNDYxOCthcmc0NjE5
K2FyZzQ2MjArYXJnNDYyMSthcmc0NjIyK2FyZzQ2MjMrYXJnNDYyNCthcmc0NjI1K2FyZzQ2MjYr
YXJnNDYyNythcmc0NjI4K2FyZzQ2MjkrYXJnNDYzMCthcmc0NjMxK2FyZzQ2MzIrYXJnNDYzMyth
cmc0NjM0K2FyZzQ2MzUrYXJnNDYzNithcmc0NjM3K2FyZzQ2MzgrYXJnNDYzOSthcmc0NjQwK2Fy
ZzQ2NDErYXJnNDY0Mithcmc0NjQzK2FyZzQ2NDQrYXJnNDY0NSthcmc0NjQ2K2FyZzQ2NDcrYXJn
NDY0OCthcmc0NjQ5K2FyZzQ2NTArYXJnNDY1MSthcmc0NjUyK2FyZzQ2NTMrYXJnNDY1NCthcmc0
NjU1K2FyZzQ2NTYrYXJnNDY1Nythcmc0NjU4K2FyZzQ2NTkrYXJnNDY2MCthcmc0NjYxK2FyZzQ2
NjIrYXJnNDY2Mythcmc0NjY0K2FyZzQ2NjUrYXJnNDY2Nithcmc0NjY3K2FyZzQ2NjgrYXJnNDY2
OSthcmc0NjcwK2FyZzQ2NzErYXJnNDY3Mithcmc0NjczK2FyZzQ2NzQrYXJnNDY3NSthcmc0Njc2
K2FyZzQ2NzcrYXJnNDY3OCthcmc0Njc5K2FyZzQ2ODArYXJnNDY4MSthcmc0NjgyK2FyZzQ2ODMr
YXJnNDY4NCthcmc0Njg1K2FyZzQ2ODYrYXJnNDY4Nythcmc0Njg4K2FyZzQ2ODkrYXJnNDY5MCth
cmc0NjkxK2FyZzQ2OTIrYXJnNDY5Mythcmc0Njk0K2FyZzQ2OTUrYXJnNDY5Nithcmc0Njk3K2Fy
ZzQ2OTgrYXJnNDY5OSthcmc0NzAwK2FyZzQ3MDErYXJnNDcwMithcmc0NzAzK2FyZzQ3MDQrYXJn
NDcwNSthcmc0NzA2K2FyZzQ3MDcrYXJnNDcwOCthcmc0NzA5K2FyZzQ3MTArYXJnNDcxMSthcmc0
NzEyK2FyZzQ3MTMrYXJnNDcxNCthcmc0NzE1K2FyZzQ3MTYrYXJnNDcxNythcmc0NzE4K2FyZzQ3
MTkrYXJnNDcyMCthcmc0NzIxK2FyZzQ3MjIrYXJnNDcyMythcmc0NzI0K2FyZzQ3MjUrYXJnNDcy
Nithcmc0NzI3K2FyZzQ3MjgrYXJnNDcyOSthcmc0NzMwK2FyZzQ3MzErYXJnNDczMithcmc0NzMz
K2FyZzQ3MzQrYXJnNDczNSthcmc0NzM2K2FyZzQ3MzcrYXJnNDczOCthcmc0NzM5K2FyZzQ3NDAr
YXJnNDc0MSthcmc0NzQyK2FyZzQ3NDMrYXJnNDc0NCthcmc0NzQ1K2FyZzQ3NDYrYXJnNDc0Nyth
cmc0NzQ4K2FyZzQ3NDkrYXJnNDc1MCthcmc0NzUxK2FyZzQ3NTIrYXJnNDc1Mythcmc0NzU0K2Fy
ZzQ3NTUrYXJnNDc1Nithcmc0NzU3K2FyZzQ3NTgrYXJnNDc1OSthcmc0NzYwK2FyZzQ3NjErYXJn
NDc2Mithcmc0NzYzK2FyZzQ3NjQrYXJnNDc2NSthcmc0NzY2K2FyZzQ3NjcrYXJnNDc2OCthcmc0
NzY5K2FyZzQ3NzArYXJnNDc3MSthcmc0NzcyK2FyZzQ3NzMrYXJnNDc3NCthcmc0Nzc1K2FyZzQ3
NzYrYXJnNDc3Nythcmc0Nzc4K2FyZzQ3NzkrYXJnNDc4MCthcmc0NzgxK2FyZzQ3ODIrYXJnNDc4
Mythcmc0Nzg0K2FyZzQ3ODUrYXJnNDc4Nithcmc0Nzg3K2FyZzQ3ODgrYXJnNDc4OSthcmc0Nzkw
K2FyZzQ3OTErYXJnNDc5Mithcmc0NzkzK2FyZzQ3OTQrYXJnNDc5NSthcmc0Nzk2K2FyZzQ3OTcr
YXJnNDc5OCthcmc0Nzk5K2FyZzQ4MDArYXJnNDgwMSthcmc0ODAyK2FyZzQ4MDMrYXJnNDgwNCth
cmc0ODA1K2FyZzQ4MDYrYXJnNDgwNythcmc0ODA4K2FyZzQ4MDkrYXJnNDgxMCthcmc0ODExK2Fy
ZzQ4MTIrYXJnNDgxMythcmc0ODE0K2FyZzQ4MTUrYXJnNDgxNithcmc0ODE3K2FyZzQ4MTgrYXJn
NDgxOSthcmc0ODIwK2FyZzQ4MjErYXJnNDgyMithcmc0ODIzK2FyZzQ4MjQrYXJnNDgyNSthcmc0
ODI2K2FyZzQ4MjcrYXJnNDgyOCthcmc0ODI5K2FyZzQ4MzArYXJnNDgzMSthcmc0ODMyK2FyZzQ4
MzMrYXJnNDgzNCthcmc0ODM1K2FyZzQ4MzYrYXJnNDgzNythcmc0ODM4K2FyZzQ4MzkrYXJnNDg0
MCthcmc0ODQxK2FyZzQ4NDIrYXJnNDg0Mythcmc0ODQ0K2FyZzQ4NDUrYXJnNDg0Nithcmc0ODQ3
K2FyZzQ4NDgrYXJnNDg0OSthcmc0ODUwK2FyZzQ4NTErYXJnNDg1Mithcmc0ODUzK2FyZzQ4NTQr
YXJnNDg1NSthcmc0ODU2K2FyZzQ4NTcrYXJnNDg1OCthcmc0ODU5K2FyZzQ4NjArYXJnNDg2MSth
cmc0ODYyK2FyZzQ4NjMrYXJnNDg2NCthcmc0ODY1K2FyZzQ4NjYrYXJnNDg2Nythcmc0ODY4K2Fy
ZzQ4NjkrYXJnNDg3MCthcmc0ODcxK2FyZzQ4NzIrYXJnNDg3Mythcmc0ODc0K2FyZzQ4NzUrYXJn
NDg3Nithcmc0ODc3K2FyZzQ4NzgrYXJnNDg3OSthcmc0ODgwK2FyZzQ4ODErYXJnNDg4Mithcmc0
ODgzK2FyZzQ4ODQrYXJnNDg4NSthcmc0ODg2K2FyZzQ4ODcrYXJnNDg4OCthcmc0ODg5K2FyZzQ4
OTArYXJnNDg5MSthcmc0ODkyK2FyZzQ4OTMrYXJnNDg5NCthcmc0ODk1K2FyZzQ4OTYrYXJnNDg5
Nythcmc0ODk4K2FyZzQ4OTkrYXJnNDkwMCthcmc0OTAxK2FyZzQ5MDIrYXJnNDkwMythcmc0OTA0
K2FyZzQ5MDUrYXJnNDkwNithcmc0OTA3K2FyZzQ5MDgrYXJnNDkwOSthcmc0OTEwK2FyZzQ5MTEr
YXJnNDkxMithcmc0OTEzK2FyZzQ5MTQrYXJnNDkxNSthcmc0OTE2K2FyZzQ5MTcrYXJnNDkxOCth
cmc0OTE5K2FyZzQ5MjArYXJnNDkyMSthcmc0OTIyK2FyZzQ5MjMrYXJnNDkyNCthcmc0OTI1K2Fy
ZzQ5MjYrYXJnNDkyNythcmc0OTI4K2FyZzQ5MjkrYXJnNDkzMCthcmc0OTMxK2FyZzQ5MzIrYXJn
NDkzMythcmc0OTM0K2FyZzQ5MzUrYXJnNDkzNithcmc0OTM3K2FyZzQ5MzgrYXJnNDkzOSthcmc0
OTQwK2FyZzQ5NDErYXJnNDk0Mithcmc0OTQzK2FyZzQ5NDQrYXJnNDk0NSthcmc0OTQ2K2FyZzQ5
NDcrYXJnNDk0OCthcmc0OTQ5K2FyZzQ5NTArYXJnNDk1MSthcmc0OTUyK2FyZzQ5NTMrYXJnNDk1
NCthcmc0OTU1K2FyZzQ5NTYrYXJnNDk1Nythcmc0OTU4K2FyZzQ5NTkrYXJnNDk2MCthcmc0OTYx
K2FyZzQ5NjIrYXJnNDk2Mythcmc0OTY0K2FyZzQ5NjUrYXJnNDk2Nithcmc0OTY3K2FyZzQ5Njgr
YXJnNDk2OSthcmc0OTcwK2FyZzQ5NzErYXJnNDk3Mithcmc0OTczK2FyZzQ5NzQrYXJnNDk3NSth
cmc0OTc2K2FyZzQ5NzcrYXJnNDk3OCthcmc0OTc5K2FyZzQ5ODArYXJnNDk4MSthcmc0OTgyK2Fy
ZzQ5ODMrYXJnNDk4NCthcmc0OTg1K2FyZzQ5ODYrYXJnNDk4Nythcmc0OTg4K2FyZzQ5ODkrYXJn
NDk5MCthcmc0OTkxK2FyZzQ5OTIrYXJnNDk5Mythcmc0OTk0K2FyZzQ5OTUrYXJnNDk5Nithcmc0
OTk3K2FyZzQ5OTgrYXJnNDk5OTt9Ci12b2lkIHRlc3RDYWxsRnVuY3Rpb25XaXRoSGVsbGFBcmd1
bWVudHMzKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOwotCi0gICAgVmVjdG9yPFZhbHVlKj4gYXJnczsKLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgNTAwMDsgKytpKQotICAgICAgICBhcmdzLmFwcGVuZChyb290LT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDA5NSAtIDUwMDAgKyBpIC0g
MSkpOwotCi0gICAgQ0NhbGxWYWx1ZSogY2FsbCA9IHJvb3QtPmFwcGVuZE5ldzxDQ2FsbFZhbHVl
PigKLSAgICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmRO
ZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4o
ZnVuY3Rpb25XaXRoSGVsbGFBcmd1bWVudHMzLCBCM0NDYWxsUHRyVGFnKSkpOwotICAgIGNhbGwt
PmFwcGVuZEFyZ3MoYXJncyk7Ci0gICAgCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KHByb2MsIFJldHVybiwgT3JpZ2luKCksIGNhbGwpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPENv
bXBpbGF0aW9uPiBjb21waWxhdGlvbiA9IGNvbXBpbGVQcm9jKHByb2MpOwotICAgIENIRUNLKGlu
dm9rZTxpbnQ+KCpjb21waWxhdGlvbikgPT0gaW52b2tlPGludD4oKmNvbXBpbGF0aW9uKSk7Ci0g
ICAgQ0hFQ0soaW52b2tlPGludD4oKmNvbXBpbGF0aW9uKSA9PSA3OTY3NTAwKTsKLSAgICBDSEVD
SyhpbnZva2U8aW50PigqY29tcGlsYXRpb24pID09IGludm9rZTxpbnQ+KCpjb21waWxhdGlvbikp
OwotICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb21waWxhdGlvbikgPT0gNzk2NzUwMCk7Ci0gICAg
Q0hFQ0soaW52b2tlPGludD4oKmNvbXBpbGF0aW9uKSA9PSBpbnZva2U8aW50PigqY29tcGlsYXRp
b24pKTsKLSAgICBDSEVDSyhpbnZva2U8aW50PigqY29tcGlsYXRpb24pID09IDc5Njc1MDApOwot
ICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb21waWxhdGlvbikgPT0gaW52b2tlPGludD4oKmNvbXBp
bGF0aW9uKSk7Ci0gICAgQ0hFQ0soaW52b2tlPGludD4oKmNvbXBpbGF0aW9uKSA9PSA3OTY3NTAw
KTsKLX0KLQotdm9pZCB0ZXN0UmV0dXJuRG91YmxlKGRvdWJsZSB2YWx1ZSkKLXsKLSAgICBQcm9j
ZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9y
aWdpbigpLCB2YWx1ZSkpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxk
b3VibGU+KHByb2MpLCB2YWx1ZSkpOwotfQotCi12b2lkIHRlc3RSZXR1cm5GbG9hdChmbG9hdCB2
YWx1ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0Rmxv
YXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHZhbHVlKSk7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNh
bChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jKSwgdmFsdWUpKTsKLX0KLQotZG91YmxlIHNpbXBs
ZUZ1bmN0aW9uRG91YmxlKGRvdWJsZSBhLCBkb3VibGUgYikKLXsKLSAgICByZXR1cm4gYSArIGI7
Ci19Ci0KLXZvaWQgdGVzdENhbGxTaW1wbGVEb3VibGUoZG91YmxlIGEsIGRvdWJsZSBiKQotewot
ICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCi0gICAg
ICAgICAgICBwcm9jLCBEb3VibGUsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+
KHNpbXBsZUZ1bmN0aW9uRG91YmxlLCBCM0NDYWxsUHRyVGFnKSksCi0gICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFy
Z3VtZW50RlBSMCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMSkpKTsKLQotICAgIENIRUNL
KGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBhLCBiKSA9PSBhICsgYik7Ci19Ci0KLWZsb2F0
IHNpbXBsZUZ1bmN0aW9uRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKLXsKLSAgICByZXR1cm4gYSAr
IGI7Ci19Ci0KLXZvaWQgdGVzdENhbGxTaW1wbGVGbG9hdChmbG9hdCBhLCBmbG9hdCBiKQotewot
ICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFs
dWUqIGFyZ3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywg
T3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Ci0gICAgVmFsdWUqIGZsb2F0VmFs
dWUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCks
IGFyZ3VtZW50MWludDMyKTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZTIgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQyaW50MzIpOwot
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAotICAgICAgICAg
ICAgcHJvYywgRmxvYXQsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENv
bnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KHNpbXBs
ZUZ1bmN0aW9uRmxvYXQsIEIzQ0NhbGxQdHJUYWcpKSwKLSAgICAgICAgICAgIGZsb2F0VmFsdWUx
LAotICAgICAgICAgICAgZmxvYXRWYWx1ZTIpKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNv
bXBpbGVBbmRSdW48ZmxvYXQ+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYml0d2lz
ZV9jYXN0PGludDMyX3Q+KGIpKSwgYSArIGIpKTsKLX0KLQotZG91YmxlIGZ1bmN0aW9uV2l0aEhl
bGxhRG91YmxlQXJndW1lbnRzKGRvdWJsZSBhLCBkb3VibGUgYiwgZG91YmxlIGMsIGRvdWJsZSBk
LCBkb3VibGUgZSwgZG91YmxlIGYsIGRvdWJsZSBnLCBkb3VibGUgaCwgZG91YmxlIGksIGRvdWJs
ZSBqLCBkb3VibGUgaywgZG91YmxlIGwsIGRvdWJsZSBtLCBkb3VibGUgbiwgZG91YmxlIG8sIGRv
dWJsZSBwLCBkb3VibGUgcSwgZG91YmxlIHIsIGRvdWJsZSBzLCBkb3VibGUgdCwgZG91YmxlIHUs
IGRvdWJsZSB2LCBkb3VibGUgdywgZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgeikKLXsKLSAg
ICByZXR1cm4gYSAqIHBvdygyLCAwKSArIGIgKiBwb3coMiwgMSkgKyBjICogcG93KDIsIDIpICsg
ZCAqIHBvdygyLCAzKSArIGUgKiBwb3coMiwgNCkgKyBmICogcG93KDIsIDUpICsgZyAqIHBvdygy
LCA2KSArIGggKiBwb3coMiwgNykgKyBpICogcG93KDIsIDgpICsgaiAqIHBvdygyLCA5KSArIGsg
KiBwb3coMiwgMTApICsgbCAqIHBvdygyLCAxMSkgKyBtICogcG93KDIsIDEyKSArIG4gKiBwb3co
MiwgMTMpICsgbyAqIHBvdygyLCAxNCkgKyBwICogcG93KDIsIDE1KSArIHEgKiBwb3coMiwgMTYp
ICsgciAqIHBvdygyLCAxNykgKyBzICogcG93KDIsIDE4KSArIHQgKiBwb3coMiwgMTkpICsgdSAq
IHBvdygyLCAyMCkgKyB2ICogcG93KDIsIDIxKSArIHcgKiBwb3coMiwgMjIpICsgeCAqIHBvdygy
LCAyMykgKyB5ICogcG93KDIsIDI0KSArIHogKiBwb3coMiwgMjUpOwotfQotCi12b2lkIHRlc3RD
YWxsRnVuY3Rpb25XaXRoSGVsbGFEb3VibGVBcmd1bWVudHMoKQotewotICAgIFByb2NlZHVyZSBw
cm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBWZWN0
b3I8VmFsdWUqPiBhcmdzOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAyNjsgKytpKQot
ICAgICAgICBhcmdzLmFwcGVuZChyb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIGkgKyAxKSk7Ci0KLSAgICBDQ2FsbFZhbHVlKiBjYWxsID0gcm9vdC0+YXBw
ZW5kTmV3PENDYWxsVmFsdWU+KAotICAgICAgICBwcm9jLCBEb3VibGUsIE9yaWdpbigpLAotICAg
ICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NG
dW5jdGlvblB0cjx2b2lkKj4oZnVuY3Rpb25XaXRoSGVsbGFEb3VibGVBcmd1bWVudHMsIEIzQ0Nh
bGxQdHJUYWcpKSk7Ci0gICAgY2FsbC0+YXBwZW5kQXJncyhhcmdzKTsKLSAgICAKLSAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2FsbCk7Ci0K
LSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYykgPT0gZnVuY3Rpb25XaXRoSGVs
bGFEb3VibGVBcmd1bWVudHMoMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwg
MTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2KSk7
Ci19Ci0KLWZsb2F0IGZ1bmN0aW9uV2l0aEhlbGxhRmxvYXRBcmd1bWVudHMoZmxvYXQgYSwgZmxv
YXQgYiwgZmxvYXQgYywgZmxvYXQgZCwgZmxvYXQgZSwgZmxvYXQgZiwgZmxvYXQgZywgZmxvYXQg
aCwgZmxvYXQgaSwgZmxvYXQgaiwgZmxvYXQgaywgZmxvYXQgbCwgZmxvYXQgbSwgZmxvYXQgbiwg
ZmxvYXQgbywgZmxvYXQgcCwgZmxvYXQgcSwgZmxvYXQgciwgZmxvYXQgcywgZmxvYXQgdCwgZmxv
YXQgdSwgZmxvYXQgdiwgZmxvYXQgdywgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikKLXsKLSAg
ICByZXR1cm4gYSAqIHBvdygyLCAwKSArIGIgKiBwb3coMiwgMSkgKyBjICogcG93KDIsIDIpICsg
ZCAqIHBvdygyLCAzKSArIGUgKiBwb3coMiwgNCkgKyBmICogcG93KDIsIDUpICsgZyAqIHBvdygy
LCA2KSArIGggKiBwb3coMiwgNykgKyBpICogcG93KDIsIDgpICsgaiAqIHBvdygyLCA5KSArIGsg
KiBwb3coMiwgMTApICsgbCAqIHBvdygyLCAxMSkgKyBtICogcG93KDIsIDEyKSArIG4gKiBwb3co
MiwgMTMpICsgbyAqIHBvdygyLCAxNCkgKyBwICogcG93KDIsIDE1KSArIHEgKiBwb3coMiwgMTYp
ICsgciAqIHBvdygyLCAxNykgKyBzICogcG93KDIsIDE4KSArIHQgKiBwb3coMiwgMTkpICsgdSAq
IHBvdygyLCAyMCkgKyB2ICogcG93KDIsIDIxKSArIHcgKiBwb3coMiwgMjIpICsgeCAqIHBvdygy
LCAyMykgKyB5ICogcG93KDIsIDI0KSArIHogKiBwb3coMiwgMjUpOwotfQotCi12b2lkIHRlc3RD
YWxsRnVuY3Rpb25XaXRoSGVsbGFGbG9hdEFyZ3VtZW50cygpCi17Ci0gICAgUHJvY2VkdXJlIHBy
b2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIFZlY3Rv
cjxWYWx1ZSo+IGFyZ3M7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI2OyArK2kpCi0g
ICAgICAgIGFyZ3MuYXBwZW5kKHJvb3QtPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBpICsgMSkpOwotCi0gICAgQ0NhbGxWYWx1ZSogY2FsbCA9IHJvb3QtPmFwcGVu
ZE5ldzxDQ2FsbFZhbHVlPigKLSAgICAgICAgcHJvYywgRmxvYXQsIE9yaWdpbigpLAotICAgICAg
ICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5j
dGlvblB0cjx2b2lkKj4oZnVuY3Rpb25XaXRoSGVsbGFGbG9hdEFyZ3VtZW50cywgQjNDQ2FsbFB0
clRhZykpKTsKLSAgICBjYWxsLT5hcHBlbmRBcmdzKGFyZ3MpOwotICAgIAotICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBjYWxsKTsKLQotICAg
IENIRUNLKGNvbXBpbGVBbmRSdW48ZmxvYXQ+KHByb2MpID09IGZ1bmN0aW9uV2l0aEhlbGxhRmxv
YXRBcmd1bWVudHMoMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0
LCAxNSwgMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2KSk7Ci19Ci0K
LXZvaWQgdGVzdExpbmVhclNjYW5XaXRoQ2FsbGVlT25TdGFjaygpCi17Ci0gICAgLy8gVGhpcyB0
ZXN0cyBwcm9wZXIgQ0NhbGwgZ2VuZXJhdGlvbiB3aGVuIGNvbXBpbGluZyB3aXRoIGEgbG93ZXIg
b3B0aW1pemF0aW9uCi0gICAgLy8gbGV2ZWwgYW5kIG9wZXJhdGluZyB3aXRoIGEgY2FsbGVlIGFy
Z3VtZW50IHRoYXQncyBzcGlsdCBvbiB0aGUgc3RhY2suCi0gICAgLy8gT24gQVJNNjQsIHRoaXMg
Y2F1c2VkIGFuIGFzc2VydCBpbiBNYWNyb0Fzc2VtYmxlckFSTTY0IGJlY2F1c2Ugb2YgZGlzYWxs
b3dlZAotICAgIC8vIHVzZSBvZiB0aGUgc2NyYXRjaCByZWdpc3Rlci4KLSAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwNjcyCi0KLSAgICBQcm9jZWR1cmUg
cHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LAotICAgICAgICByb290LT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9j
LCBJbnQzMiwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4oc2ltcGxlRnVuY3Rp
b24sIEIzQ0NhbGxQdHJUYWcpKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKLSAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpOwotCi0gICAgLy8gRm9yY2UgdGhlIGxpbmVhciBzY2Fu
IGFsZ29yaXRobSB0byBzcGlsbCBldmVyeXRoaW5nLgotICAgIGF1dG8gb3JpZ2luYWwgPSBPcHRp
b25zOjphaXJMaW5lYXJTY2FuU3BpbGxzRXZlcnl0aGluZygpOwotICAgIE9wdGlvbnM6OmFpckxp
bmVhclNjYW5TcGlsbHNFdmVyeXRoaW5nKCkgPSB0cnVlOwotCi0gICAgLy8gQ29tcGlsaW5nIHdp
dGggMSBhcyB0aGUgb3B0aW1pemF0aW9uIGxldmVsIGVuZm9yY2VzIHRoZSB1c2Ugb2YgbGluZWFy
IHNjYW4KLSAgICAvLyBmb3IgcmVnaXN0ZXIgYWxsb2NhdGlvbi4KLSAgICBhdXRvIGNvZGUgPSBj
b21waWxlUHJvYyhwcm9jKTsKLSAgICBDSEVDS19FUShpbnZva2U8aW50PigqY29kZSwgNDEsIDEp
LCA0Mik7Ci0KLSAgICBPcHRpb25zOjphaXJMaW5lYXJTY2FuU3BpbGxzRXZlcnl0aGluZygpID0g
b3JpZ2luYWw7Ci19Ci0KLXZvaWQgdGVzdENoaWxsRGl2KGludCBudW0sIGludCBkZW4sIGludCBy
ZXMpCi17Ci0gICAgLy8gVGVzdCBub24tY29uc3RhbnQuCi0gICAgewotICAgICAgICBQcm9jZWR1
cmUgcHJvYzsKLSAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAg
ICAgICAgCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgICAg
IHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAotICAgICAgICAgICAgICAgIHByb2MsIGNoaWxsKERpdiksIE9yaWdpbigpLAotICAgICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgICAgIHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
KSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAg
ICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKSkpKTsKLQotICAgICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywg
bnVtLCBkZW4pID09IHJlcyk7Ci0gICAgfQotCi0gICAgLy8gVGVzdCBjb25zdGFudC4KLSAgICB7
Ci0gICAgICAgIFByb2NlZHVyZSBwcm9jOwotICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOwotICAgICAgICAKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAotICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgY2hpbGwoRGl2KSwg
T3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIG51bSksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENv
bnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGRlbikpKTsKLSAgICAgICAgCi0gICAgICAgIENI
RUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jKSA9PSByZXMpOwotICAgIH0KLX0KLQotdm9pZCB0
ZXN0Q2hpbGxEaXZUd2ljZShpbnQgbnVtMSwgaW50IGRlbjEsIGludCBudW0yLCBpbnQgZGVuMiwg
aW50IHJlcykKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAg
ICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAotICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgY2hpbGwoRGl2KSwgT3Jp
Z2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAg
ICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCkpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
Ci0gICAgICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIGNoaWxsKERpdiksIE9yaWdpbigpLAotICAg
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgICAg
IHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjIpKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAg
ICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIzKSkpKSk7Ci0gICAgCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHBy
b2MsIG51bTEsIGRlbjEsIG51bTIsIGRlbjIpID09IHJlcyk7Ci19Ci0KLXZvaWQgdGVzdENoaWxs
RGl2NjQoaW50NjRfdCBudW0sIGludDY0X3QgZGVuLCBpbnQ2NF90IHJlcykKLXsKLSAgICBpZiAo
IWlzNjRCaXQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gVGVzdCBub24tY29uc3RhbnQu
Ci0gICAgewotICAgICAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICAgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICAgICAgCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKLSAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIGNoaWxs
KERpdiksIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKLSAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKTsKLSAgICAgICAgCi0gICAgICAgIENIRUNLKGNv
bXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgbnVtLCBkZW4pID09IHJlcyk7Ci0gICAgfQotCi0g
ICAgLy8gVGVzdCBjb25zdGFudC4KLSAgICB7Ci0gICAgICAgIFByb2NlZHVyZSBwcm9jOwotICAg
ICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgICAgICAKLSAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAg
ICAgICAgICAgcHJvYywgY2hpbGwoRGl2KSwgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIG51bSksCi0gICAgICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGRl
bikpKTsKLSAgICAgICAgCi0gICAgICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJv
YykgPT0gcmVzKTsKLSAgICB9Ci19Ci0KLXZvaWQgdGVzdE1vZEFyZyhpbnQ2NF90IHZhbHVlKQot
ewotICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIFByb2NlZHVyZSBwcm9j
OwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBWYWx1ZSog
YXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgTW9kLCBPcmlnaW4oKSwgYXJndW1lbnQsIGFyZ3VtZW50KTsK
LSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwg
cmVzdWx0KTsKLQotICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIHZhbHVl
KSk7Ci19Ci0KLXZvaWQgdGVzdE1vZEFyZ3MoaW50NjRfdCBudW1lcmF0b3IsIGludDY0X3QgZGVu
b21pbmF0b3IpCi17Ci0gICAgaWYgKCFkZW5vbWluYXRvcikKLSAgICAgICAgcmV0dXJuOwotICAg
IGlmIChudW1lcmF0b3IgPT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCkgJiYg
ZGVub21pbmF0b3IgPT0gLTEpCi0gICAgICAgIHJldHVybjsKLQotICAgIFByb2NlZHVyZSBwcm9j
OwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBWYWx1ZSog
YXJndW1lbnQxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIFZhbHVlKiBhcmd1bWVudDIgPSByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMSk7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgTW9kLCBPcmlnaW4oKSwgYXJndW1lbnQxLCBhcmd1bWVudDIpOwotICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOwotCi0g
ICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBudW1lcmF0b3IsIGRlbm9taW5h
dG9yKSA9PSBudW1lcmF0b3IgJSBkZW5vbWluYXRvcik7Ci19Ci0KLXZvaWQgdGVzdE1vZEltbXMo
aW50NjRfdCBudW1lcmF0b3IsIGludDY0X3QgZGVub21pbmF0b3IpCi17Ci0gICAgaWYgKCFkZW5v
bWluYXRvcikKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChudW1lcmF0b3IgPT0gc3RkOjpudW1l
cmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCkgJiYgZGVub21pbmF0b3IgPT0gLTEpCi0gICAgICAg
IHJldHVybjsKLQotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBWYWx1ZSogYXJndW1lbnQxID0gcm9vdC0+YXBwZW5kTmV3
PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIG51bWVyYXRvcik7Ci0gICAgVmFsdWUqIGFy
Z3VtZW50MiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBk
ZW5vbWluYXRvcik7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgTW9kLCBPcmlnaW4oKSwgYXJndW1lbnQxLCBhcmd1bWVudDIpOwotICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOwotCi0g
ICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBudW1lcmF0b3IsIGRlbm9taW5h
dG9yKSA9PSBudW1lcmF0b3IgJSBkZW5vbWluYXRvcik7Ci19Ci0KLXZvaWQgdGVzdE1vZEFyZzMy
KGludDMyX3QgdmFsdWUpCi17Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKLQotICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
VHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZhbHVlKiBy
ZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE1vZCwgT3JpZ2luKCksIGFyZ3Vt
ZW50LCBhcmd1bWVudCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJl
dHVybiwgT3JpZ2luKCksIHJlc3VsdCk7Ci0KLSAgICBDSEVDSyghY29tcGlsZUFuZFJ1bjxpbnQz
Ml90Pihwcm9jLCB2YWx1ZSkpOwotfQotCi12b2lkIHRlc3RNb2RBcmdzMzIoaW50MzJfdCBudW1l
cmF0b3IsIGludDMyX3QgZGVub21pbmF0b3IpCi17Ci0gICAgaWYgKCFkZW5vbWluYXRvcikKLSAg
ICAgICAgcmV0dXJuOwotICAgIGlmIChudW1lcmF0b3IgPT0gc3RkOjpudW1lcmljX2xpbWl0czxp
bnQzMl90Pjo6bWluKCkgJiYgZGVub21pbmF0b3IgPT0gLTEpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7Ci0KLSAgICBWYWx1ZSogYXJndW1lbnQxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUq
IGFyZ3VtZW50MiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigp
LAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIE1vZCwgT3JpZ2luKCksIGFyZ3VtZW50MSwgYXJndW1lbnQy
KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwgcmVzdWx0KTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgbnVt
ZXJhdG9yLCBkZW5vbWluYXRvcikgPT0gbnVtZXJhdG9yICUgZGVub21pbmF0b3IpOwotfQotCi12
b2lkIHRlc3RNb2RJbW1zMzIoaW50MzJfdCBudW1lcmF0b3IsIGludDMyX3QgZGVub21pbmF0b3Ip
Ci17Ci0gICAgaWYgKCFkZW5vbWluYXRvcikKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChudW1l
cmF0b3IgPT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkgJiYgZGVub21pbmF0
b3IgPT0gLTEpCi0gICAgICAgIHJldHVybjsKLQotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBWYWx1ZSogYXJndW1lbnQx
ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIG51bWVyYXRv
cik7Ci0gICAgVmFsdWUqIGFyZ3VtZW50MiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBkZW5vbWluYXRvcik7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTW9kLCBPcmlnaW4oKSwgYXJndW1lbnQxLCBhcmd1bWVu
dDIpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCByZXN1bHQpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBu
dW1lcmF0b3IsIGRlbm9taW5hdG9yKSA9PSBudW1lcmF0b3IgJSBkZW5vbWluYXRvcik7Ci19Ci0K
LXZvaWQgdGVzdENoaWxsTW9kQXJnKGludDY0X3QgdmFsdWUpCi17Ci0gICAgUHJvY2VkdXJlIHBy
b2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIFZhbHVl
KiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBjaGlsbChNb2QpLCBPcmlnaW4oKSwgYXJndW1lbnQsIGFy
Z3VtZW50KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgcmVzdWx0KTsKLQotICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludDY0X3Q+KHBy
b2MsIHZhbHVlKSk7Ci19Ci0KLXZvaWQgdGVzdENoaWxsTW9kQXJncyhpbnQ2NF90IG51bWVyYXRv
ciwgaW50NjRfdCBkZW5vbWluYXRvcikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgVmFsdWUqIGFyZ3VtZW50MSA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKLSAgICBWYWx1ZSogYXJndW1lbnQyID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEp
OwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIGNoaWxs
KE1vZCksIE9yaWdpbigpLCBhcmd1bWVudDEsIGFyZ3VtZW50Mik7Ci0gICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7Ci0KLSAgICBD
SEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIG51bWVyYXRvciwgZGVub21pbmF0b3Ip
ID09IGNoaWxsTW9kKG51bWVyYXRvciwgZGVub21pbmF0b3IpKTsKLX0KLQotdm9pZCB0ZXN0Q2hp
bGxNb2RJbW1zKGludDY0X3QgbnVtZXJhdG9yLCBpbnQ2NF90IGRlbm9taW5hdG9yKQotewotICAg
IFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
Ci0KLSAgICBWYWx1ZSogYXJndW1lbnQxID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIG51bWVyYXRvcik7Ci0gICAgVmFsdWUqIGFyZ3VtZW50MiA9IHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBkZW5vbWluYXRvcik7Ci0g
ICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgY2hpbGwoTW9k
KSwgT3JpZ2luKCksIGFyZ3VtZW50MSwgYXJndW1lbnQyKTsKLSAgICByb290LT5hcHBlbmROZXdD
b250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKLQotICAgIENIRUNL
KGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgbnVtZXJhdG9yLCBkZW5vbWluYXRvcikgPT0g
Y2hpbGxNb2QobnVtZXJhdG9yLCBkZW5vbWluYXRvcikpOwotfQotCi12b2lkIHRlc3RDaGlsbE1v
ZEFyZzMyKGludDMyX3QgdmFsdWUpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIFZhbHVlKiBhcmd1bWVudCA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCkpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIGNoaWxsKE1vZCksIE9yaWdpbigpLCBhcmd1bWVudCwgYXJndW1lbnQpOwotICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQp
OwotCi0gICAgQ0hFQ0soIWNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgdmFsdWUpKTsKLX0K
LQotdm9pZCB0ZXN0Q2hpbGxNb2RBcmdzMzIoaW50MzJfdCBudW1lcmF0b3IsIGludDMyX3QgZGVu
b21pbmF0b3IpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKLQotICAgIFZhbHVlKiBhcmd1bWVudDEgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
KTsKLSAgICBWYWx1ZSogYXJndW1lbnQyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBU
cnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Ci0gICAgVmFsdWUqIHJl
c3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgY2hpbGwoTW9kKSwgT3JpZ2luKCks
IGFyZ3VtZW50MSwgYXJndW1lbnQyKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRS
dW48aW50MzJfdD4ocHJvYywgbnVtZXJhdG9yLCBkZW5vbWluYXRvcikgPT0gY2hpbGxNb2QobnVt
ZXJhdG9yLCBkZW5vbWluYXRvcikpOwotfQotCi12b2lkIHRlc3RDaGlsbE1vZEltbXMzMihpbnQz
Ml90IG51bWVyYXRvciwgaW50MzJfdCBkZW5vbWluYXRvcikKLXsKLSAgICBQcm9jZWR1cmUgcHJv
YzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgVmFsdWUq
IGFyZ3VtZW50MSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBudW1lcmF0b3IpOwotICAgIFZhbHVlKiBhcmd1bWVudDIgPSByb290LT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgZGVub21pbmF0b3IpOwotICAgIFZhbHVlKiByZXN1
bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIGNoaWxsKE1vZCksIE9yaWdpbigpLCBh
cmd1bWVudDEsIGFyZ3VtZW50Mik7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHBy
b2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVu
PGludDMyX3Q+KHByb2MsIG51bWVyYXRvciwgZGVub21pbmF0b3IpID09IGNoaWxsTW9kKG51bWVy
YXRvciwgZGVub21pbmF0b3IpKTsKLX0KLQotdm9pZCB0ZXN0TG9vcFdpdGhNdWx0aXBsZUhlYWRl
ckVkZ2VzKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGlubmVySGVhZGVyID0gcHJvYy5hZGRC
bG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGlubmVyRW5kID0gcHJvYy5hZGRCbG9jaygpOwotICAg
IEJhc2ljQmxvY2sqIG91dGVySGVhZGVyID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxv
Y2sqIG91dGVyRW5kID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGVuZCA9IHBy
b2MuYWRkQmxvY2soKTsKLQotICAgIGF1dG8qIG5lNDIgPSBvdXRlckhlYWRlci0+YXBwZW5kTmV3
PFZhbHVlPigKLSAgICAgICAgcHJvYywgTm90RXF1YWwsIE9yaWdpbigpLAotICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgNDIpKTsKLSAgICBvdXRlckhlYWRlci0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAotICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAotICAgICAgICBuZTQyLAotICAgICAg
ICBGcmVxdWVudGVkQmxvY2soaW5uZXJIZWFkZXIpLCBGcmVxdWVudGVkQmxvY2sob3V0ZXJFbmQp
KTsKLSAgICBvdXRlckVuZC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBC
cmFuY2gsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAg
ICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
KSwKLSAgICAgICAgRnJlcXVlbnRlZEJsb2NrKG91dGVySGVhZGVyKSwgRnJlcXVlbnRlZEJsb2Nr
KGVuZCkpOwotCi0gICAgU3dpdGNoVmFsdWUqIHN3aXRjaFZhbHVlID0gaW5uZXJIZWFkZXItPmFw
cGVuZE5ldzxTd2l0Y2hWYWx1ZT4oCi0gICAgICAgIHByb2MsIE9yaWdpbigpLCByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMSkpOwotICAgIHN3aXRjaFZhbHVlLT5zZXRGYWxsVGhyb3VnaChGcmVxdWVudGVkQmxvY2so
aW5uZXJFbmQpKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjA7ICsraSkgewotICAg
ICAgICBzd2l0Y2hWYWx1ZS0+YXBwZW5kQ2FzZShTd2l0Y2hDYXNlKGksIEZyZXF1ZW50ZWRCbG9j
ayhpbm5lckhlYWRlcikpKTsKLSAgICB9Ci0KLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUocHJvYywgSnVtcCwgT3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayhvdXRlckhlYWRlcikpOwot
Ci0gICAgaW5uZXJFbmQtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4o
KSwgRnJlcXVlbnRlZEJsb2NrKG91dGVyRW5kKSk7Ci0gICAgZW5kLT5hcHBlbmROZXdDb250cm9s
VmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIGVuZC0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDU2NzgpKTsKLQotICAgIGF1dG8g
Y29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOyAvLyBUaGlzIHNob3VsZG4ndCBjcmFzaCBpbiBjb21w
dXRpbmcgTmF0dXJhbExvb3BzLgotICAgIENIRUNLKGludm9rZTxpbnQzMl90PigqY29kZSwgMCwg
MTIzNDUpID09IDU2NzgpOwotfQotCi12b2lkIHRlc3RTd2l0Y2godW5zaWduZWQgZGVncmVlLCB1
bnNpZ25lZCBnYXAgPSAxKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBCYXNpY0Jsb2NrKiB0ZXJtaW5hdGUgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgdGVybWluYXRlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0g
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHRlcm1pbmF0ZS0+YXBwZW5k
TmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKLQotICAgIFN3aXRjaFZhbHVl
KiBzd2l0Y2hWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxTd2l0Y2hWYWx1ZT4oCi0gICAgICAgIHBy
b2MsIE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIHN3aXRjaFZhbHVlLT5zZXRGYWxs
VGhyb3VnaChGcmVxdWVudGVkQmxvY2sodGVybWluYXRlKSk7Ci0KLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgZGVncmVlOyArK2kpIHsKLSAgICAgICAgQmFzaWNCbG9jayogbmV3QmxvY2sg
PSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgIG5ld0Jsb2NrLT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCi0gICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICAgICAgbmV3
QmxvY2stPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9j
LCBPcmlnaW4oKSwgKGkgJiAxKSA/IEdQUkluZm86OmFyZ3VtZW50R1BSMiA6IEdQUkluZm86OmFy
Z3VtZW50R1BSMSkpOwotICAgICAgICBzd2l0Y2hWYWx1ZS0+YXBwZW5kQ2FzZShTd2l0Y2hDYXNl
KGdhcCAqIGksIEZyZXF1ZW50ZWRCbG9jayhuZXdCbG9jaykpKTsKLSAgICB9Ci0KLSAgICBhdXRv
IGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBkZWdyZWU7ICsraSkgewotICAgICAgICBDSEVDSyhpbnZva2U8aW50MzJfdD4oKmNvZGUsIGkg
KiBnYXAsIDQyLCAxMSkgPT0gKChpICYgMSkgPyAxMSA6IDQyKSk7Ci0gICAgICAgIGlmIChnYXAg
PiAxKSB7Ci0gICAgICAgICAgICBDSEVDSyghaW52b2tlPGludDMyX3Q+KCpjb2RlLCBpICogZ2Fw
ICsgMSwgNDIsIDExKSk7Ci0gICAgICAgICAgICBDSEVDSyghaW52b2tlPGludDMyX3Q+KCpjb2Rl
LCBpICogZ2FwIC0gMSwgNDIsIDExKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBDSEVDSygh
aW52b2tlPGludDMyX3Q+KCpjb2RlLCAtMSwgNDIsIDExKSk7Ci0gICAgQ0hFQ0soIWludm9rZTxp
bnQzMl90PigqY29kZSwgZGVncmVlICogZ2FwLCA0MiwgMTEpKTsKLSAgICBDSEVDSyghaW52b2tl
PGludDMyX3Q+KCpjb2RlLCBkZWdyZWUgKiBnYXAgKyAxLCA0MiwgMTEpKTsKLX0KLQotdm9pZCB0
ZXN0U3dpdGNoU2FtZUNhc2VBc0RlZmF1bHQoKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBCYXNpY0Jsb2NrKiBy
ZXR1cm4xMCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByZXR1cm4xMC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByZXR1cm4x
MC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEwKSk7Ci0KLSAgICBW
YWx1ZSogc3dpdGNoT3BlcmFuZCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLQotICAgIEJhc2ljQmxvY2sq
IGNhc2VBbmREZWZhdWx0ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIGNhc2VBbmREZWZhdWx0LT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAot
ICAgICAgICAgICAgY2FzZUFuZERlZmF1bHQtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAg
ICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHN3aXRjaE9wZXJh
bmQsIGNhc2VBbmREZWZhdWx0LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIDApKSk7Ci0KLSAgICBTd2l0Y2hWYWx1ZSogc3dpdGNoVmFsdWUgPSByb290LT5hcHBlbmRO
ZXc8U3dpdGNoVmFsdWU+KHByb2MsIE9yaWdpbigpLCBzd2l0Y2hPcGVyYW5kKTsKLQotICAgIHN3
aXRjaFZhbHVlLT5hcHBlbmRDYXNlKFN3aXRjaENhc2UoMTAwLCBGcmVxdWVudGVkQmxvY2socmV0
dXJuMTApKSk7Ci0KLSAgICAvLyBCZWNhdXNlIGNhc2VBbmREZWZhdWx0IGlzIHJlYWNoZWQgYm90
aCBhcyBkZWZhdWx0IGNhc2UsIGFuZCB3aGVuIGl0J3MgMCwKLSAgICAvLyB3ZSBzaG91bGQgbm90
IGluY29ycmVjdGx5IG9wdGltaXplIGFuZCBhc3N1bWUgdGhhdCBzd2l0Y2hPcGVyYW5kPT0wLgot
ICAgIHN3aXRjaFZhbHVlLT5hcHBlbmRDYXNlKFN3aXRjaENhc2UoMCwgRnJlcXVlbnRlZEJsb2Nr
KGNhc2VBbmREZWZhdWx0KSkpOwotICAgIHN3aXRjaFZhbHVlLT5zZXRGYWxsVGhyb3VnaChGcmVx
dWVudGVkQmxvY2soY2FzZUFuZERlZmF1bHQpKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQ
cm9jKHByb2MpOwotCi0gICAgQ0hFQ0soaW52b2tlPGludDMyX3Q+KCpjb2RlLCAxMDApID09IDEw
KTsKLSAgICBDSEVDSyhpbnZva2U8aW50MzJfdD4oKmNvZGUsIDApID09IDEpOwotICAgIENIRUNL
KGludm9rZTxpbnQzMl90PigqY29kZSwgMSkgPT0gMCk7Ci0gICAgQ0hFQ0soaW52b2tlPGludDMy
X3Q+KCpjb2RlLCAyKSA9PSAwKTsKLSAgICBDSEVDSyhpbnZva2U8aW50MzJfdD4oKmNvZGUsIDk5
KSA9PSAwKTsKLSAgICBDSEVDSyhpbnZva2U8aW50MzJfdD4oKmNvZGUsIDB4YmFhZGJlZWYpID09
IDApOwotfQotCi12b2lkIHRlc3RTd2l0Y2hDaGlsbERpdih1bnNpZ25lZCBkZWdyZWUsIHVuc2ln
bmVkIGdhcCA9IDEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIFZhbHVlKiBsZWZ0ID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEp
OwotICAgIFZhbHVlKiByaWdodCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLQotICAgIEJhc2ljQmxvY2sq
IHRlcm1pbmF0ZSA9IHByb2MuYWRkQmxvY2soKTsKLSAgICB0ZXJtaW5hdGUtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgdGVy
bWluYXRlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwotCi0g
ICAgU3dpdGNoVmFsdWUqIHN3aXRjaFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFN3aXRjaFZhbHVl
PigKLSAgICAgICAgcHJvYywgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgc3dpdGNo
VmFsdWUtPnNldEZhbGxUaHJvdWdoKEZyZXF1ZW50ZWRCbG9jayh0ZXJtaW5hdGUpKTsKLQotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkZWdyZWU7ICsraSkgewotICAgICAgICBCYXNpY0Js
b2NrKiBuZXdCbG9jayA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgICAgICBuZXdCbG9jay0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwK
LSAgICAgICAgICAgIG5ld0Jsb2NrLT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAg
IHByb2MsIGNoaWxsKERpdiksIE9yaWdpbigpLCAoaSAmIDEpID8gcmlnaHQgOiBsZWZ0LCAoaSAm
IDEpID8gbGVmdCA6IHJpZ2h0KSk7Ci0gICAgICAgIAotICAgICAgICBzd2l0Y2hWYWx1ZS0+YXBw
ZW5kQ2FzZShTd2l0Y2hDYXNlKGdhcCAqIGksIEZyZXF1ZW50ZWRCbG9jayhuZXdCbG9jaykpKTsK
LSAgICB9Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLQotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBkZWdyZWU7ICsraSkgewotICAgICAgICBkYXRhTG9nKCJpID0g
IiwgaSwgIlxuIik7Ci0gICAgICAgIGludDMyX3QgcmVzdWx0ID0gaW52b2tlPGludDMyX3Q+KCpj
b2RlLCBpICogZ2FwLCA0MiwgMTEpOwotICAgICAgICBkYXRhTG9nKCJyZXN1bHQgPSAiLCByZXN1
bHQsICJcbiIpOwotICAgICAgICBDSEVDSyhyZXN1bHQgPT0gKChpICYgMSkgPyAxMS80MiA6IDQy
LzExKSk7Ci0gICAgICAgIGlmIChnYXAgPiAxKSB7Ci0gICAgICAgICAgICBDSEVDSyghaW52b2tl
PGludDMyX3Q+KCpjb2RlLCBpICogZ2FwICsgMSwgNDIsIDExKSk7Ci0gICAgICAgICAgICBDSEVD
SyghaW52b2tlPGludDMyX3Q+KCpjb2RlLCBpICogZ2FwIC0gMSwgNDIsIDExKSk7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICBDSEVDSyghaW52b2tlPGludDMyX3Q+KCpjb2RlLCAtMSwgNDIsIDEx
KSk7Ci0gICAgQ0hFQ0soIWludm9rZTxpbnQzMl90PigqY29kZSwgZGVncmVlICogZ2FwLCA0Miwg
MTEpKTsKLSAgICBDSEVDSyghaW52b2tlPGludDMyX3Q+KCpjb2RlLCBkZWdyZWUgKiBnYXAgKyAx
LCA0MiwgMTEpKTsKLX0KLQotdm9pZCB0ZXN0U3dpdGNoVGFyZ2V0dGluZ1NhbWVCbG9jaygpCi17
Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKLQotICAgIEJhc2ljQmxvY2sqIHRlcm1pbmF0ZSA9IHByb2MuYWRkQmxvY2soKTsKLSAg
ICB0ZXJtaW5hdGUtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKLSAgICAgICAgdGVybWluYXRlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgNSkpOwotCi0gICAgU3dpdGNoVmFsdWUqIHN3aXRjaFZhbHVlID0gcm9v
dC0+YXBwZW5kTmV3PFN3aXRjaFZhbHVlPigKLSAgICAgICAgcHJvYywgT3JpZ2luKCksIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSk7Ci0gICAgc3dpdGNoVmFsdWUtPnNldEZhbGxUaHJvdWdoKEZyZXF1ZW50ZWRC
bG9jayh0ZXJtaW5hdGUpKTsKLQotICAgIEJhc2ljQmxvY2sqIG90aGVyVGFyZ2V0ID0gcHJvYy5h
ZGRCbG9jaygpOwotICAgIG90aGVyVGFyZ2V0LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIG90aGVyVGFyZ2V0LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDIpKTsKLSAgICBzd2l0Y2hWYWx1ZS0+
YXBwZW5kQ2FzZShTd2l0Y2hDYXNlKDMsIEZyZXF1ZW50ZWRCbG9jayhvdGhlclRhcmdldCkpKTsK
LSAgICBzd2l0Y2hWYWx1ZS0+YXBwZW5kQ2FzZShTd2l0Y2hDYXNlKDEzLCBGcmVxdWVudGVkQmxv
Y2sob3RoZXJUYXJnZXQpKSk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsK
LQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAyMDsgKytpKSB7Ci0gICAgICAgIGludDMy
X3QgZXhwZWN0ZWQgPSAoaSA9PSAzIHx8IGkgPT0gMTMpID8gNDIgOiA1OwotICAgICAgICBDSEVD
SyhpbnZva2U8aW50MzJfdD4oKmNvZGUsIGkpID09IGV4cGVjdGVkKTsKLSAgICB9Ci19Ci0KLXZv
aWQgdGVzdFN3aXRjaFRhcmdldHRpbmdTYW1lQmxvY2tGb2xkUGF0aENvbnN0YW50KCkKLXsKLSAg
ICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OwotCi0gICAgQmFzaWNCbG9jayogdGVybWluYXRlID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHRl
cm1pbmF0ZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAotICAgICAgICB0ZXJtaW5hdGUtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCA0MikpOwotCi0gICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OwotICAgIFN3aXRjaFZhbHVlKiBzd2l0Y2hWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxTd2l0Y2hW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIGFyZ3VtZW50KTsKLSAgICBzd2l0Y2hWYWx1ZS0+c2V0RmFs
bFRocm91Z2goRnJlcXVlbnRlZEJsb2NrKHRlcm1pbmF0ZSkpOwotCi0gICAgQmFzaWNCbG9jayog
b3RoZXJUYXJnZXQgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgb3RoZXJUYXJnZXQtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgYXJndW1lbnQp
OwotICAgIHN3aXRjaFZhbHVlLT5hcHBlbmRDYXNlKFN3aXRjaENhc2UoMywgRnJlcXVlbnRlZEJs
b2NrKG90aGVyVGFyZ2V0KSkpOwotICAgIHN3aXRjaFZhbHVlLT5hcHBlbmRDYXNlKFN3aXRjaENh
c2UoMTMsIEZyZXF1ZW50ZWRCbG9jayhvdGhlclRhcmdldCkpKTsKLQotICAgIGF1dG8gY29kZSA9
IGNvbXBpbGVQcm9jKHByb2MpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDIwOyAr
K2kpIHsKLSAgICAgICAgaW50MzJfdCBleHBlY3RlZCA9IChpID09IDMgfHwgaSA9PSAxMykgPyBp
IDogNDI7Ci0gICAgICAgIENIRUNLKGludm9rZTxpbnQzMl90PigqY29kZSwgaSkgPT0gZXhwZWN0
ZWQpOwotICAgIH0KLX0KLQotdm9pZCB0ZXN0VHJ1bmNGb2xkKGludDY0X3QgdmFsdWUpCi17Ci0g
ICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAg
ICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29u
c3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdmFsdWUpKSk7Ci0KLSAgICBDSEVDSyhjb21waWxl
QW5kUnVuPGludD4ocHJvYykgPT0gc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSkpOwotfQotCi12b2lk
IHRlc3RaRXh0MzIoaW50MzJfdCB2YWx1ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIFpFeHQzMiwgT3JpZ2luKCks
Ci0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSk7
Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPHVpbnQ2NF90Pihwcm9jLCB2YWx1ZSkgPT0gc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KHN0YXRpY19jYXN0PHVpbnQzMl90Pih2YWx1ZSkpKTsKLX0KLQot
dm9pZCB0ZXN0WkV4dDMyRm9sZChpbnQzMl90IHZhbHVlKQotewotICAgIFByb2NlZHVyZSBwcm9j
OwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgWkV4dDMyLCBP
cmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCB2YWx1ZSkpKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48dWludDY0X3Q+
KHByb2MsIHZhbHVlKSA9PSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KHZhbHVlKSkpOwotfQotCi12b2lkIHRlc3RTRXh0MzIoaW50MzJfdCB2YWx1ZSkKLXsKLSAg
ICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAg
IHByb2MsIFNFeHQzMiwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAotICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCkpKSk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0
X3Q+KHByb2MsIHZhbHVlKSA9PSBzdGF0aWNfY2FzdDxpbnQ2NF90Pih2YWx1ZSkpOwotfQotCi12
b2lkIHRlc3RTRXh0MzJGb2xkKGludDMyX3QgdmFsdWUpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7
Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBTRXh0MzIsIE9y
aWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIHZhbHVlKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihw
cm9jLCB2YWx1ZSkgPT0gc3RhdGljX2Nhc3Q8aW50NjRfdD4odmFsdWUpKTsKLX0KLQotdm9pZCB0
ZXN0VHJ1bmNaRXh0MzIoaW50MzJfdCB2YWx1ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4o
KSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAg
cHJvYywgWkV4dDMyLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAotICAgICAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAg
ICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpKSk7Ci0KLSAgICBDSEVDSyhjb21waWxl
QW5kUnVuPGludDMyX3Q+KHByb2MsIHZhbHVlKSA9PSB2YWx1ZSk7Ci19Ci0KLXZvaWQgdGVzdFRy
dW5jU0V4dDMyKGludDMyX3QgdmFsdWUpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0g
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2Ms
IFNFeHQzMiwgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKLSAgICAgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1
bjxpbnQzMl90Pihwcm9jLCB2YWx1ZSkgPT0gdmFsdWUpOwotfQotCi12b2lkIHRlc3RTRXh0OChp
bnQzMl90IHZhbHVlKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAot
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgU0V4dDgsIE9yaWdpbigpLAotICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3Jp
Z2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSkpOwotCi0gICAgQ0hFQ0so
Y29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCB2YWx1ZSkgPT0gc3RhdGljX2Nhc3Q8aW50MzJf
dD4oc3RhdGljX2Nhc3Q8aW50OF90Pih2YWx1ZSkpKTsKLX0KLQotdm9pZCB0ZXN0U0V4dDhGb2xk
KGludDMyX3QgdmFsdWUpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
Ci0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBTRXh0OCwgT3JpZ2luKCksCi0gICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdmFsdWUpKSk7
Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MpID09IHN0YXRpY19jYXN0
PGludDMyX3Q+KHN0YXRpY19jYXN0PGludDhfdD4odmFsdWUpKSk7Ci19Ci0KLXZvaWQgdGVzdFNF
eHQ4U0V4dDgoaW50MzJfdCB2YWx1ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIFNFeHQ4LCBPcmlnaW4oKSwKLSAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywg
U0V4dDgsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
Ci0gICAgICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSkpKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48
aW50MzJfdD4ocHJvYywgdmFsdWUpID09IHN0YXRpY19jYXN0PGludDMyX3Q+KHN0YXRpY19jYXN0
PGludDhfdD4odmFsdWUpKSk7Ci19Ci0KLXZvaWQgdGVzdFNFeHQ4U0V4dDE2KGludDMyX3QgdmFs
dWUpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0g
ICAgICAgICAgICBwcm9jLCBTRXh0OCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIFNFeHQxNiwgT3JpZ2luKCksCi0g
ICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICAg
ICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCkpKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCB2YWx1
ZSkgPT0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8aW50OF90Pih2YWx1ZSkpKTsK
LX0KLQotdm9pZCB0ZXN0U0V4dDhCaXRBbmQoaW50MzJfdCB2YWx1ZSwgaW50MzJfdCBtYXNrKQot
ewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAg
ICAgICAgcHJvYywgU0V4dDgsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAotICAgICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgICAgIHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
KSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgbWFzaykpKSk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDMyX3Q+KHBy
b2MsIHZhbHVlKSA9PSBzdGF0aWNfY2FzdDxpbnQzMl90PihzdGF0aWNfY2FzdDxpbnQ4X3Q+KHZh
bHVlICYgbWFzaykpKTsKLX0KLQotdm9pZCB0ZXN0Qml0QW5kU0V4dDgoaW50MzJfdCB2YWx1ZSwg
aW50MzJfdCBtYXNrKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAot
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKLSAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgU0V4dDgsIE9y
aWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAg
ICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApKSksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgbWFzaykpKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48
aW50MzJfdD4ocHJvYywgdmFsdWUpID09IChzdGF0aWNfY2FzdDxpbnQzMl90PihzdGF0aWNfY2Fz
dDxpbnQ4X3Q+KHZhbHVlKSkgJiBtYXNrKSk7Ci19Ci0KLXZvaWQgdGVzdFNFeHQxNihpbnQzMl90
IHZhbHVlKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAotICAgICAgICAgICAgcHJvYywgU0V4dDE2LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigp
LAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpKTsKLQotICAgIENIRUNLKGNvbXBp
bGVBbmRSdW48aW50MzJfdD4ocHJvYywgdmFsdWUpID09IHN0YXRpY19jYXN0PGludDMyX3Q+KHN0
YXRpY19jYXN0PGludDE2X3Q+KHZhbHVlKSkpOwotfQotCi12b2lkIHRlc3RTRXh0MTZGb2xkKGlu
dDMyX3QgdmFsdWUpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0g
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBTRXh0MTYsIE9yaWdpbigpLAotICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHZhbHVlKSkpOwot
Ci0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jKSA9PSBzdGF0aWNfY2FzdDxp
bnQzMl90PihzdGF0aWNfY2FzdDxpbnQxNl90Pih2YWx1ZSkpKTsKLX0KLQotdm9pZCB0ZXN0U0V4
dDE2U0V4dDE2KGludDMyX3QgdmFsdWUpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBTRXh0MTYsIE9yaWdpbigpLAot
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9j
LCBTRXh0MTYsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCi0gICAgICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAg
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSkpKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRS
dW48aW50MzJfdD4ocHJvYywgdmFsdWUpID09IHN0YXRpY19jYXN0PGludDMyX3Q+KHN0YXRpY19j
YXN0PGludDE2X3Q+KHZhbHVlKSkpOwotfQotCi12b2lkIHRlc3RTRXh0MTZTRXh0OChpbnQzMl90
IHZhbHVlKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAotICAgICAgICAgICAgcHJvYywgU0V4dDE2LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgU0V4dDgsIE9yaWdpbigp
LAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAg
ICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKSkpKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywg
dmFsdWUpID09IHN0YXRpY19jYXN0PGludDMyX3Q+KHN0YXRpY19jYXN0PGludDhfdD4odmFsdWUp
KSk7Ci19Ci0KLXZvaWQgdGVzdFNFeHQxNkJpdEFuZChpbnQzMl90IHZhbHVlLCBpbnQzMl90IG1h
c2spCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0g
ICAgICAgICAgICBwcm9jLCBTRXh0MTYsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAot
ICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAg
ICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgbWFzaykpKSk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDMy
X3Q+KHByb2MsIHZhbHVlKSA9PSBzdGF0aWNfY2FzdDxpbnQzMl90PihzdGF0aWNfY2FzdDxpbnQx
Nl90Pih2YWx1ZSAmIG1hc2spKSk7Ci19Ci0KLXZvaWQgdGVzdEJpdEFuZFNFeHQxNihpbnQzMl90
IHZhbHVlLCBpbnQzMl90IG1hc2spCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAotICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBT
RXh0MTYsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
Ci0gICAgICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbWFzaykpKTsKLQotICAgIENIRUNLKGNvbXBp
bGVBbmRSdW48aW50MzJfdD4ocHJvYywgdmFsdWUpID09IChzdGF0aWNfY2FzdDxpbnQzMl90Pihz
dGF0aWNfY2FzdDxpbnQxNl90Pih2YWx1ZSkpICYgbWFzaykpOwotfQotCi12b2lkIHRlc3RTRXh0
MzJCaXRBbmQoaW50MzJfdCB2YWx1ZSwgaW50MzJfdCBtYXNrKQotewotICAgIFByb2NlZHVyZSBw
cm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAot
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgU0V4dDMy
LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAg
ICAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2lu
KCksCi0gICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCi0gICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIG1hc2spKSkp
OwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCB2YWx1ZSkgPT0gc3Rh
dGljX2Nhc3Q8aW50NjRfdD4odmFsdWUgJiBtYXNrKSk7Ci19Ci0KLXZvaWQgdGVzdEJpdEFuZFNF
eHQzMihpbnQzMl90IHZhbHVlLCBpbnQ2NF90IG1hc2spCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7
Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9y
aWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAg
ICAgICBwcm9jLCBTRXh0MzIsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwK
LSAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSksCi0gICAgICAgICAgICByb290
LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbWFzaykpKTsKLQotICAg
IENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgdmFsdWUpID09IChzdGF0aWNfY2Fz
dDxpbnQ2NF90Pih2YWx1ZSkgJiBtYXNrKSk7Ci19Ci0KLXZvaWQgdGVzdEJhc2ljU2VsZWN0KCkK
LXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAg
ICAgICAgIHByb2MsIFNlbGVjdCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4oKSwKLSAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0MikpLAotICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjEpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpKSk7Ci0KLSAgICBhdXRv
IGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBDSEVDSyhpbnZva2U8aW50cHRyX3Q+KCpj
b2RlLCA0MiwgMSwgMikgPT0gMSk7Ci0gICAgQ0hFQ0soaW52b2tlPGludHB0cl90PigqY29kZSwg
NDIsIDY0MjQ2MiwgMzI1MzMpID09IDY0MjQ2Mik7Ci0gICAgQ0hFQ0soaW52b2tlPGludHB0cl90
PigqY29kZSwgNDMsIDEsIDIpID09IDIpOwotICAgIENIRUNLKGludm9rZTxpbnRwdHJfdD4oKmNv
ZGUsIDQzLCA2NDI0NjIsIDMyNTMzKSA9PSAzMjUzMyk7Ci19Ci0KLXZvaWQgdGVzdFNlbGVjdFRl
c3QoKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAot
ICAgICAgICAgICAgcHJvYywgU2VsZWN0LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSwKLSAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIyKSkpOwotCi0gICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAg
Q0hFQ0soaW52b2tlPGludHB0cl90PigqY29kZSwgNDIsIDEsIDIpID09IDEpOwotICAgIENIRUNL
KGludm9rZTxpbnRwdHJfdD4oKmNvZGUsIDQyLCA2NDI0NjIsIDMyNTMzKSA9PSA2NDI0NjIpOwot
ICAgIENIRUNLKGludm9rZTxpbnRwdHJfdD4oKmNvZGUsIDAsIDEsIDIpID09IDIpOwotICAgIENI
RUNLKGludm9rZTxpbnRwdHJfdD4oKmNvZGUsIDAsIDY0MjQ2MiwgMzI1MzMpID09IDMyNTMzKTsK
LX0KLQotdm9pZCB0ZXN0U2VsZWN0Q29tcGFyZURvdWJsZSgpCi17Ci0gICAgUHJvY2VkdXJlIHBy
b2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0g
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBTZWxlY3Qs
IE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAg
ICAgICAgICBwcm9jLCBMZXNzVGhhbiwgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1
bWVudEZQUjApLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIxKSksCi0gICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKTsKLQotICAg
IGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotICAgIENIRUNLKGludm9rZTxpbnRwdHJf
dD4oKmNvZGUsIC0xLjAsIDEuMCwgMSwgMikgPT0gMSk7Ci0gICAgQ0hFQ0soaW52b2tlPGludHB0
cl90PigqY29kZSwgNDIuNSwgNDIuNTEsIDY0MjQ2MiwgMzI1MzMpID09IDY0MjQ2Mik7Ci0gICAg
Q0hFQ0soaW52b2tlPGludHB0cl90PigqY29kZSwgUE5hTiwgMC4wLCAxLCAyKSA9PSAyKTsKLSAg
ICBDSEVDSyhpbnZva2U8aW50cHRyX3Q+KCpjb2RlLCA0Mi41MSwgNDIuNSwgNjQyNDYyLCAzMjUz
MykgPT0gMzI1MzMpOwotICAgIENIRUNLKGludm9rZTxpbnRwdHJfdD4oKmNvZGUsIDQyLjUyLCA0
Mi41MiwgNTI0OTc4MjQ1LCAzNTIpID09IDM1Mik7Ci19Ci0KLXRlbXBsYXRlPEIzOjpPcGNvZGUg
b3Bjb2RlPgotdm9pZCB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0KGZsb2F0IGEsIGZsb2F0IGIsIGJv
b2wgKCpvcGVyYXRpb24pKGZsb2F0LCBmbG9hdCkpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0g
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1l
bnQxaW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwK
LSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogYXJndW1lbnQyaW50MzIgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjEpKTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZTEgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQxaW50MzIpOwotICAg
IFZhbHVlKiBmbG9hdFZhbHVlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lz
ZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDJpbnQzMik7Ci0KLSAgICByb290LT5hcHBlbmROZXdD
b250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBTZWxlY3QsIE9yaWdpbigp
LAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBw
cm9jLCBvcGNvZGUsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIGZsb2F0VmFsdWUxLAotICAg
ICAgICAgICAgICAgIGZsb2F0VmFsdWUyKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKSwK
LSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIzKSkpOwotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNv
bXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3
aXNlX2Nhc3Q8aW50MzJfdD4oYiksIDQyLCAtNSksIG9wZXJhdGlvbihhLCBiKSA/IDQyIDogLTUp
KTsKLX0KLQotdm9pZCB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCi17
Ci0gICAgdGVzdFNlbGVjdENvbXBhcmVGbG9hdDxFcXVhbD4oYSwgYiwgW10oZmxvYXQgYSwgZmxv
YXQgYikgLT4gYm9vbCB7IHJldHVybiBhID09IGI7IH0pOwotICAgIHRlc3RTZWxlY3RDb21wYXJl
RmxvYXQ8Tm90RXF1YWw+KGEsIGIsIFtdKGZsb2F0IGEsIGZsb2F0IGIpIC0+IGJvb2wgeyByZXR1
cm4gYSAhPSBiOyB9KTsKLSAgICB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0PExlc3NUaGFuPihhLCBi
LCBbXShmbG9hdCBhLCBmbG9hdCBiKSAtPiBib29sIHsgcmV0dXJuIGEgPCBiOyB9KTsKLSAgICB0
ZXN0U2VsZWN0Q29tcGFyZUZsb2F0PEdyZWF0ZXJUaGFuPihhLCBiLCBbXShmbG9hdCBhLCBmbG9h
dCBiKSAtPiBib29sIHsgcmV0dXJuIGEgPiBiOyB9KTsKLSAgICB0ZXN0U2VsZWN0Q29tcGFyZUZs
b2F0PExlc3NFcXVhbD4oYSwgYiwgW10oZmxvYXQgYSwgZmxvYXQgYikgLT4gYm9vbCB7IHJldHVy
biBhIDw9IGI7IH0pOwotICAgIHRlc3RTZWxlY3RDb21wYXJlRmxvYXQ8R3JlYXRlckVxdWFsPihh
LCBiLCBbXShmbG9hdCBhLCBmbG9hdCBiKSAtPiBib29sIHsgcmV0dXJuIGEgPj0gYjsgfSk7Ci0g
ICAgdGVzdFNlbGVjdENvbXBhcmVGbG9hdDxFcXVhbE9yVW5vcmRlcmVkPihhLCBiLCBbXShmbG9h
dCBhLCBmbG9hdCBiKSAtPiBib29sIHsgcmV0dXJuIGEgIT0gYSB8fCBiICE9IGIgfHwgYSA9PSBi
OyB9KTsKLX0KLQotdGVtcGxhdGU8QjM6Ok9wY29kZSBvcGNvZGU+Ci12b2lkIHRlc3RTZWxlY3RD
b21wYXJlRmxvYXRUb0RvdWJsZShmbG9hdCBhLCBmbG9hdCBiLCBib29sICgqb3BlcmF0aW9uKShm
bG9hdCwgZmxvYXQpKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Ci0g
ICAgVmFsdWUqIGZsb2F0VmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3
aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MWludDMyKTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1
ZTIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwg
YXJndW1lbnQyaW50MzIpOwotICAgIFZhbHVlKiBkb3VibGVWYWx1ZTEgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlMSk7Ci0g
ICAgVmFsdWUqIGRvdWJsZVZhbHVlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxv
YXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUyKTsKLQotICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIFNlbGVjdCwgT3JpZ2lu
KCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAg
IHByb2MsIG9wY29kZSwgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgZG91YmxlVmFsdWUxLAot
ICAgICAgICAgICAgICAgIGRvdWJsZVZhbHVlMiksCi0gICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MiksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMykpKTsKLSAgICBDSEVDSyhpc0lkZW50aWNh
bChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwg
Yml0d2lzZV9jYXN0PGludDMyX3Q+KGIpLCA0MiwgLTUpLCBvcGVyYXRpb24oYSwgYikgPyA0MiA6
IC01KSk7Ci19Ci0KLXZvaWQgdGVzdFNlbGVjdENvbXBhcmVGbG9hdFRvRG91YmxlKGZsb2F0IGEs
IGZsb2F0IGIpCi17Ci0gICAgdGVzdFNlbGVjdENvbXBhcmVGbG9hdFRvRG91YmxlPEVxdWFsPihh
LCBiLCBbXShmbG9hdCBhLCBmbG9hdCBiKSAtPiBib29sIHsgcmV0dXJuIGEgPT0gYjsgfSk7Ci0g
ICAgdGVzdFNlbGVjdENvbXBhcmVGbG9hdFRvRG91YmxlPE5vdEVxdWFsPihhLCBiLCBbXShmbG9h
dCBhLCBmbG9hdCBiKSAtPiBib29sIHsgcmV0dXJuIGEgIT0gYjsgfSk7Ci0gICAgdGVzdFNlbGVj
dENvbXBhcmVGbG9hdFRvRG91YmxlPExlc3NUaGFuPihhLCBiLCBbXShmbG9hdCBhLCBmbG9hdCBi
KSAtPiBib29sIHsgcmV0dXJuIGEgPCBiOyB9KTsKLSAgICB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0
VG9Eb3VibGU8R3JlYXRlclRoYW4+KGEsIGIsIFtdKGZsb2F0IGEsIGZsb2F0IGIpIC0+IGJvb2wg
eyByZXR1cm4gYSA+IGI7IH0pOwotICAgIHRlc3RTZWxlY3RDb21wYXJlRmxvYXRUb0RvdWJsZTxM
ZXNzRXF1YWw+KGEsIGIsIFtdKGZsb2F0IGEsIGZsb2F0IGIpIC0+IGJvb2wgeyByZXR1cm4gYSA8
PSBiOyB9KTsKLSAgICB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0VG9Eb3VibGU8R3JlYXRlckVxdWFs
PihhLCBiLCBbXShmbG9hdCBhLCBmbG9hdCBiKSAtPiBib29sIHsgcmV0dXJuIGEgPj0gYjsgfSk7
Ci0gICAgdGVzdFNlbGVjdENvbXBhcmVGbG9hdFRvRG91YmxlPEVxdWFsT3JVbm9yZGVyZWQ+KGEs
IGIsIFtdKGZsb2F0IGEsIGZsb2F0IGIpIC0+IGJvb2wgeyByZXR1cm4gYSAhPSBhIHx8IGIgIT0g
YiB8fCBhID09IGI7IH0pOwotfQotCi12b2lkIHRlc3RTZWxlY3REb3VibGUoKQotewotICAgIFBy
b2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0g
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJv
YywgU2VsZWN0LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
Ci0gICAgICAgICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAotICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQ
dHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKSksCi0gICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBS
MCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMSkpKTsKLQotICAgIGF1dG8gY29kZSA9IGNv
bXBpbGVQcm9jKHByb2MpOwotICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCA0MiwgMS41
LCAyLjYpID09IDEuNSk7Ci0gICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDQyLCA2NDI0
NjIuNywgMzI1MzMuOCkgPT0gNjQyNDYyLjcpOwotICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpj
b2RlLCA0MywgMS45LCAyLjApID09IDIuMCk7Ci0gICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNv
ZGUsIDQzLCA2NDI0NjIuMSwgMzI1MzMuMikgPT0gMzI1MzMuMik7Ci19Ci0KLXZvaWQgdGVzdFNl
bGVjdERvdWJsZVRlc3QoKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgU2VsZWN0LCBPcmlnaW4oKSwKLSAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKSwKLSAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
RlBSSW5mbzo6YXJndW1lbnRGUFIxKSkpOwotCi0gICAgYXV0byBjb2RlID0gY29tcGlsZVByb2Mo
cHJvYyk7Ci0gICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDQyLCAxLjUsIDIuNikgPT0g
MS41KTsKLSAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgNDIsIDY0MjQ2Mi43LCAzMjUz
My44KSA9PSA2NDI0NjIuNyk7Ci0gICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDAsIDEu
OSwgMi4wKSA9PSAyLjApOwotICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAwLCA2NDI0
NjIuMSwgMzI1MzMuMikgPT0gMzI1MzMuMik7Ci19Ci0KLXZvaWQgdGVzdFNlbGVjdERvdWJsZUNv
bXBhcmVEb3VibGUoKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAot
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgU2VsZWN0LCBPcmlnaW4oKSwKLSAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgTGVzc1RoYW4s
IE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKSwKLSAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQ
UkluZm86OmFyZ3VtZW50RlBSMSkpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjIpLAotICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBGUFJJbmZvOjphcmd1bWVudEZQUjMpKSk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJv
Yyhwcm9jKTsKLSAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgLTEuMCwgMS4wLCAxLjEs
IDIuMikgPT0gMS4xKTsKLSAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgNDIuNSwgNDIu
NTEsIDY0MjQ2Mi4zLCAzMjUzMy40KSA9PSA2NDI0NjIuMyk7Ci0gICAgQ0hFQ0soaW52b2tlPGRv
dWJsZT4oKmNvZGUsIFBOYU4sIDAuMCwgMS41LCAyLjYpID09IDIuNik7Ci0gICAgQ0hFQ0soaW52
b2tlPGRvdWJsZT4oKmNvZGUsIDQyLjUxLCA0Mi41LCA2NDI0NjIuNywgMzI1MzMuOCkgPT0gMzI1
MzMuOCk7Ci0gICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDQyLjUyLCA0Mi41MiwgNTI0
OTc4MjQ1LjksIDM1Mi4wKSA9PSAzNTIuMCk7Ci19Ci0KLXZvaWQgdGVzdFNlbGVjdERvdWJsZUNv
bXBhcmVGbG9hdChmbG9hdCBhLCBmbG9hdCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50
MWludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0g
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50MmludDMyID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKSk7Ci0gICAgVmFsdWUqIGZsb2F0VmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MWludDMyKTsKLSAgICBW
YWx1ZSogZmxvYXRWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VD
YXN0LCBPcmlnaW4oKSwgYXJndW1lbnQyaW50MzIpOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgU2VsZWN0LCBPcmlnaW4oKSwK
LSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJv
YywgTGVzc1RoYW4sIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIGZsb2F0VmFsdWUxLAotICAg
ICAgICAgICAgICAgIGZsb2F0VmFsdWUyKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKSwK
LSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIxKSkpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwo
Y29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYml0
d2lzZV9jYXN0PGludDMyX3Q+KGIpLCA0Mi4xLCAtTV9QSSksIGEgPCBiID8gNDIuMSA6IC1NX1BJ
KSk7Ci19Ci0KLXZvaWQgdGVzdFNlbGVjdEZsb2F0Q29tcGFyZUZsb2F0KGZsb2F0IGEsIGZsb2F0
IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnQxaW50MzIgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsK
LSAgICBWYWx1ZSogYXJndW1lbnQyaW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKLSAgICBWYWx1ZSog
YXJndW1lbnQzaW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmln
aW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpKTsKLSAgICBWYWx1ZSogYXJndW1lbnQ0aW50
MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjMpKTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZTEgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQxaW50MzIp
OwotICAgIFZhbHVlKiBmbG9hdFZhbHVlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
Qml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDJpbnQzMik7Ci0gICAgVmFsdWUqIGZsb2F0
VmFsdWUzID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2lu
KCksIGFyZ3VtZW50M2ludDMyKTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZTQgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQ0aW50MzIp
OwotCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAg
ICAgcHJvYywgU2VsZWN0LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgTGVzc1RoYW4sIE9yaWdpbigpLAotICAgICAg
ICAgICAgICAgIGZsb2F0VmFsdWUxLAotICAgICAgICAgICAgICAgIGZsb2F0VmFsdWUyKSwKLSAg
ICAgICAgICAgIGZsb2F0VmFsdWUzLAotICAgICAgICAgICAgZmxvYXRWYWx1ZTQpKTsKLQotICAg
IENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZmxvYXQ+KHByb2MsIGJpdHdpc2VfY2Fz
dDxpbnQzMl90PihhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpLCBiaXR3aXNlX2Nhc3Q8aW50
MzJfdD4oMS4xZiksIGJpdHdpc2VfY2FzdDxpbnQzMl90PigtNDIuZikpLCBhIDwgYiA/IDEuMWYg
OiAtNDIuZikpOwotfQotCi0KLXRlbXBsYXRlPEIzOjpPcGNvZGUgb3Bjb2RlPgotdm9pZCB0ZXN0
U2VsZWN0RG91YmxlQ29tcGFyZURvdWJsZShib29sICgqb3BlcmF0aW9uKShkb3VibGUsIGRvdWJs
ZSkpCi17Ci0gICAgeyAvLyBDb21wYXJlIGFyZ3VtZW50cyBhbmQgc2VsZWN0ZWQgYXJndW1lbnRz
IGFyZSBhbGwgZGlmZmVyZW50LgotICAgICAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICAgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICAgICAgVmFsdWUqIGFyZzAgPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86
OmFyZ3VtZW50RlBSMCk7Ci0gICAgICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOwot
ICAgICAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIyKTsKLSAgICAgICAgVmFsdWUqIGFy
ZzMgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQ
UkluZm86OmFyZ3VtZW50RlBSMyk7Ci0KLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAotICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgU2VsZWN0LCBPcmln
aW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAg
ICAgICAgICAgICBwcm9jLCBvcGNvZGUsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgICAgICBh
cmcwLAotICAgICAgICAgICAgICAgICAgICBhcmcxKSwKLSAgICAgICAgICAgICAgICBhcmcyLAot
ICAgICAgICAgICAgICAgIGFyZzMpKTsKLSAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2Mo
cHJvYyk7Ci0KLSAgICAgICAgZm9yIChhdXRvJiBsZWZ0IDogZmxvYXRpbmdQb2ludE9wZXJhbmRz
PGRvdWJsZT4oKSkgewotICAgICAgICAgICAgZm9yIChhdXRvJiByaWdodCA6IGZsb2F0aW5nUG9p
bnRPcGVyYW5kczxkb3VibGU+KCkpIHsKLSAgICAgICAgICAgICAgICBkb3VibGUgZXhwZWN0ZWQg
PSBvcGVyYXRpb24obGVmdC52YWx1ZSwgcmlnaHQudmFsdWUpID8gNDIuNSA6IC02Ni41OwotICAg
ICAgICAgICAgICAgIENIRUNLKGlzSWRlbnRpY2FsKGludm9rZTxkb3VibGU+KCpjb2RlLCBsZWZ0
LnZhbHVlLCByaWdodC52YWx1ZSwgNDIuNSwgLTY2LjUpLCBleHBlY3RlZCkpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIHsgLy8gQ29tcGFyZSBhcmd1bWVudHMgYW5kIHNl
bGVjdGVkIGFyZ3VtZW50cyBhcmUgYWxsIGRpZmZlcmVudC4gInRoZW5DYXNlIiBpcyBsaXZlIGFm
dGVyIG9wZXJhdGlvbi4KLSAgICAgICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgIFZhbHVlKiBhcmcwID0gcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1
bWVudEZQUjApOwotICAgICAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIxKTsKLSAgICAg
ICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMik7Ci0gICAgICAgIFZhbHVlKiBhcmczID0g
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZv
Ojphcmd1bWVudEZQUjMpOwotCi0gICAgICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFNlbGVjdCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIG9wY29kZSwgT3JpZ2luKCksIGFyZzAsIGFyZzEpLAotICAgICAg
ICAgICAgYXJnMiwKLSAgICAgICAgICAgIGFyZzMpOwotCi0gICAgICAgIFBhdGNocG9pbnRWYWx1
ZSoga2VlcFZhbHVlc0xpdmUgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9j
LCBWb2lkLCBPcmlnaW4oKSk7Ci0gICAgICAgIGtlZXBWYWx1ZXNMaXZlLT5hcHBlbmQoQ29uc3Ry
YWluZWRWYWx1ZShhcmcyLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7Ci0gICAgICAgIGtlZXBW
YWx1ZXNMaXZlLT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMmLCBjb25zdCBTdGFja21h
cEdlbmVyYXRpb25QYXJhbXMmKSB7IH0pOwotCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOwotICAgICAgICBhdXRvIGNv
ZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLQotICAgICAgICBmb3IgKGF1dG8mIGxlZnQgOiBmbG9h
dGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIHJp
Z2h0IDogZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSkgewotICAgICAgICAgICAgICAg
IGRvdWJsZSBleHBlY3RlZCA9IG9wZXJhdGlvbihsZWZ0LnZhbHVlLCByaWdodC52YWx1ZSkgPyA0
Mi41IDogLTY2LjU7Ci0gICAgICAgICAgICAgICAgQ0hFQ0soaXNJZGVudGljYWwoaW52b2tlPGRv
dWJsZT4oKmNvZGUsIGxlZnQudmFsdWUsIHJpZ2h0LnZhbHVlLCA0Mi41LCAtNjYuNSksIGV4cGVj
dGVkKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgeyAvLyBDb21wYXJl
IGFyZ3VtZW50cyBhbmQgc2VsZWN0ZWQgYXJndW1lbnRzIGFyZSBhbGwgZGlmZmVyZW50LiAiZWxz
ZUNhc2UiIGlzIGxpdmUgYWZ0ZXIgb3BlcmF0aW9uLgotICAgICAgICBQcm9jZWR1cmUgcHJvYzsK
LSAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICAgICAgVmFs
dWUqIGFyZzAgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Ci0gICAgICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1
bWVudEZQUjEpOwotICAgICAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIyKTsKLSAgICAg
ICAgVmFsdWUqIGFyZzMgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMyk7Ci0KLSAgICAgICAgVmFsdWUqIHJlc3Vs
dCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2VsZWN0LCBPcmlnaW4oKSwKLSAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgb3Bjb2RlLCBPcmlnaW4oKSwgYXJn
MCwgYXJnMSksCi0gICAgICAgICAgICBhcmcyLAotICAgICAgICAgICAgYXJnMyk7Ci0KLSAgICAg
ICAgUGF0Y2hwb2ludFZhbHVlKiBrZWVwVmFsdWVzTGl2ZSA9IHJvb3QtPmFwcGVuZE5ldzxQYXRj
aHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKLSAgICAgICAga2VlcFZhbHVlc0xp
dmUtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzMsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIp
KTsKLSAgICAgICAga2VlcFZhbHVlc0xpdmUtPnNldEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVy
cyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsgfSk7Ci0KLSAgICAgICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7
Ci0gICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotCi0gICAgICAgIGZvciAo
YXV0byYgbGVmdCA6IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpIHsKLSAgICAgICAg
ICAgIGZvciAoYXV0byYgcmlnaHQgOiBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKSB7
Ci0gICAgICAgICAgICAgICAgZG91YmxlIGV4cGVjdGVkID0gb3BlcmF0aW9uKGxlZnQudmFsdWUs
IHJpZ2h0LnZhbHVlKSA/IDQyLjUgOiAtNjYuNTsKLSAgICAgICAgICAgICAgICBDSEVDSyhpc0lk
ZW50aWNhbChpbnZva2U8ZG91YmxlPigqY29kZSwgbGVmdC52YWx1ZSwgcmlnaHQudmFsdWUsIDQy
LjUsIC02Ni41KSwgZXhwZWN0ZWQpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0K
LSAgICB7IC8vIENvbXBhcmUgYXJndW1lbnRzIGFuZCBzZWxlY3RlZCBhcmd1bWVudHMgYXJlIGFs
bCBkaWZmZXJlbnQuIEJvdGggY2FzZXMgYXJlIGxpdmUgYWZ0ZXIgb3BlcmF0aW9uLgotICAgICAg
ICBQcm9jZWR1cmUgcHJvYzsKLSAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKLSAgICAgICAgVmFsdWUqIGFyZzAgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Ci0gICAgICAgIFZh
bHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOwotICAgICAgICBWYWx1ZSogYXJnMiA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJn
dW1lbnRGUFIyKTsKLSAgICAgICAgVmFsdWUqIGFyZzMgPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMyk7Ci0KLSAg
ICAgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2VsZWN0
LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgb3Bj
b2RlLCBPcmlnaW4oKSwgYXJnMCwgYXJnMSksCi0gICAgICAgICAgICBhcmcyLAotICAgICAgICAg
ICAgYXJnMyk7Ci0KLSAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBrZWVwVmFsdWVzTGl2ZSA9IHJv
b3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKLSAg
ICAgICAga2VlcFZhbHVlc0xpdmUtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzIsIFZhbHVl
UmVwOjpTb21lUmVnaXN0ZXIpKTsKLSAgICAgICAga2VlcFZhbHVlc0xpdmUtPmFwcGVuZChDb25z
dHJhaW5lZFZhbHVlKGFyZzMsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKLSAgICAgICAga2Vl
cFZhbHVlc0xpdmUtPnNldEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYpIHsgfSk7Ci0KLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgICAgIGF1dG8g
Y29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotCi0gICAgICAgIGZvciAoYXV0byYgbGVmdCA6IGZs
b2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byYg
cmlnaHQgOiBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKSB7Ci0gICAgICAgICAgICAg
ICAgZG91YmxlIGV4cGVjdGVkID0gb3BlcmF0aW9uKGxlZnQudmFsdWUsIHJpZ2h0LnZhbHVlKSA/
IDQyLjUgOiAtNjYuNTsKLSAgICAgICAgICAgICAgICBDSEVDSyhpc0lkZW50aWNhbChpbnZva2U8
ZG91YmxlPigqY29kZSwgbGVmdC52YWx1ZSwgcmlnaHQudmFsdWUsIDQyLjUsIC02Ni41KSwgZXhw
ZWN0ZWQpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICB7IC8vIFRoZSBs
ZWZ0IGFyZ3VtZW50IGlzIHRoZSBzYW1lIGFzIHRoZSAiZWxzZUNhc2UiIGFyZ3VtZW50LgotICAg
ICAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKLSAgICAgICAgVmFsdWUqIGFyZzAgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Ci0gICAgICAg
IFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOwotICAgICAgICBWYWx1ZSogYXJnMiA9IHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6
YXJndW1lbnRGUFIyKTsKLQotICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0g
ICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBTZWxlY3QsIE9yaWdpbigpLAot
ICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAg
ICAgIHByb2MsIG9wY29kZSwgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgICAgIGFyZzAsCi0g
ICAgICAgICAgICAgICAgICAgIGFyZzEpLAotICAgICAgICAgICAgICAgIGFyZzIsCi0gICAgICAg
ICAgICAgICAgYXJnMCkpOwotICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsK
LQotICAgICAgICBmb3IgKGF1dG8mIGxlZnQgOiBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91Ymxl
PigpKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIHJpZ2h0IDogZmxvYXRpbmdQb2ludE9wZXJh
bmRzPGRvdWJsZT4oKSkgewotICAgICAgICAgICAgICAgIGRvdWJsZSBleHBlY3RlZCA9IG9wZXJh
dGlvbihsZWZ0LnZhbHVlLCByaWdodC52YWx1ZSkgPyA0Mi41IDogbGVmdC52YWx1ZTsKLSAgICAg
ICAgICAgICAgICBDSEVDSyhpc0lkZW50aWNhbChpbnZva2U8ZG91YmxlPigqY29kZSwgbGVmdC52
YWx1ZSwgcmlnaHQudmFsdWUsIDQyLjUsIGxlZnQudmFsdWUpLCBleHBlY3RlZCkpOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIHsgLy8gVGhlIGxlZnQgYXJndW1lbnQgaXMg
dGhlIHNhbWUgYXMgdGhlICJlbHNlQ2FzZSIgYXJndW1lbnQuICJ0aGVuQ2FzZSIgaXMgbGl2ZSBh
ZnRlciBvcGVyYXRpb24uCi0gICAgICAgIFByb2NlZHVyZSBwcm9jOwotICAgICAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgICAgICBWYWx1ZSogYXJnMCA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJn
dW1lbnRGUFIwKTsKLSAgICAgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7Ci0gICAg
ICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjIpOwotCi0gICAgICAgIFZhbHVlKiByZXN1
bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNlbGVjdCwgT3JpZ2luKCksCi0gICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIG9wY29kZSwgT3JpZ2luKCksIGFy
ZzAsIGFyZzEpLAotICAgICAgICAgICAgYXJnMiwKLSAgICAgICAgICAgIGFyZzApOwotCi0gICAg
ICAgIFBhdGNocG9pbnRWYWx1ZSoga2VlcFZhbHVlc0xpdmUgPSByb290LT5hcHBlbmROZXc8UGF0
Y2hwb2ludFZhbHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7Ci0gICAgICAgIGtlZXBWYWx1ZXNM
aXZlLT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmcyLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVy
KSk7Ci0gICAgICAgIGtlZXBWYWx1ZXNMaXZlLT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBl
cnMmLCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7IH0pOwotCi0gICAgICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQp
OwotICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLQotICAgICAgICBmb3Ig
KGF1dG8mIGxlZnQgOiBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKSB7Ci0gICAgICAg
ICAgICBmb3IgKGF1dG8mIHJpZ2h0IDogZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSkg
ewotICAgICAgICAgICAgICAgIGRvdWJsZSBleHBlY3RlZCA9IG9wZXJhdGlvbihsZWZ0LnZhbHVl
LCByaWdodC52YWx1ZSkgPyA0Mi41IDogbGVmdC52YWx1ZTsKLSAgICAgICAgICAgICAgICBDSEVD
Syhpc0lkZW50aWNhbChpbnZva2U8ZG91YmxlPigqY29kZSwgbGVmdC52YWx1ZSwgcmlnaHQudmFs
dWUsIDQyLjUsIGxlZnQudmFsdWUpLCBleHBlY3RlZCkpOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgfQotfQotCi12b2lkIHRlc3RTZWxlY3REb3VibGVDb21wYXJlRG91YmxlV2l0aEFs
aWFzaW5nKCkKLXsKLSAgICB0ZXN0U2VsZWN0RG91YmxlQ29tcGFyZURvdWJsZTxFcXVhbD4oW10o
ZG91YmxlIGEsIGRvdWJsZSBiKSAtPiBib29sIHsgcmV0dXJuIGEgPT0gYjsgfSk7Ci0gICAgdGVz
dFNlbGVjdERvdWJsZUNvbXBhcmVEb3VibGU8Tm90RXF1YWw+KFtdKGRvdWJsZSBhLCBkb3VibGUg
YikgLT4gYm9vbCB7IHJldHVybiBhICE9IGI7IH0pOwotICAgIHRlc3RTZWxlY3REb3VibGVDb21w
YXJlRG91YmxlPExlc3NUaGFuPihbXShkb3VibGUgYSwgZG91YmxlIGIpIC0+IGJvb2wgeyByZXR1
cm4gYSA8IGI7IH0pOwotICAgIHRlc3RTZWxlY3REb3VibGVDb21wYXJlRG91YmxlPEdyZWF0ZXJU
aGFuPihbXShkb3VibGUgYSwgZG91YmxlIGIpIC0+IGJvb2wgeyByZXR1cm4gYSA+IGI7IH0pOwot
ICAgIHRlc3RTZWxlY3REb3VibGVDb21wYXJlRG91YmxlPExlc3NFcXVhbD4oW10oZG91YmxlIGEs
IGRvdWJsZSBiKSAtPiBib29sIHsgcmV0dXJuIGEgPD0gYjsgfSk7Ci0gICAgdGVzdFNlbGVjdERv
dWJsZUNvbXBhcmVEb3VibGU8R3JlYXRlckVxdWFsPihbXShkb3VibGUgYSwgZG91YmxlIGIpIC0+
IGJvb2wgeyByZXR1cm4gYSA+PSBiOyB9KTsKLSAgICB0ZXN0U2VsZWN0RG91YmxlQ29tcGFyZURv
dWJsZTxFcXVhbE9yVW5vcmRlcmVkPihbXShkb3VibGUgYSwgZG91YmxlIGIpIC0+IGJvb2wgeyBy
ZXR1cm4gYSAhPSBhIHx8IGIgIT0gYiB8fCBhID09IGI7IH0pOwotfQotCi10ZW1wbGF0ZTxCMzo6
T3Bjb2RlIG9wY29kZT4KLXZvaWQgdGVzdFNlbGVjdEZsb2F0Q29tcGFyZUZsb2F0KGJvb2wgKCpv
cGVyYXRpb24pKGZsb2F0LCBmbG9hdCkpCi17Ci0gICAgeyAvLyBDb21wYXJlIGFyZ3VtZW50cyBh
bmQgc2VsZWN0ZWQgYXJndW1lbnRzIGFyZSBhbGwgZGlmZmVyZW50LgotICAgICAgICBQcm9jZWR1
cmUgcHJvYzsKLSAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLQot
ICAgICAgICBWYWx1ZSogYXJnMCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lz
ZUNhc3QsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSk7Ci0g
ICAgICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNl
Q2FzdCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKTsKLSAg
ICAgICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VD
YXN0LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
VHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKSkpOwotICAg
ICAgICBWYWx1ZSogYXJnMyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNh
c3QsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBU
cnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpKSk7Ci0KLSAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAg
ICAgICAgICAgICAgcHJvYywgU2VsZWN0LCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgICAgICBwcm9jLCBvcGNvZGUsIE9y
aWdpbigpLAotICAgICAgICAgICAgICAgICAgICBhcmcwLAotICAgICAgICAgICAgICAgICAgICBh
cmcxKSwKLSAgICAgICAgICAgICAgICBhcmcyLAotICAgICAgICAgICAgICAgIGFyZzMpKTsKLSAg
ICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0KLSAgICAgICAgZm9yIChhdXRv
JiBsZWZ0IDogZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKSB7Ci0gICAgICAgICAgICBm
b3IgKGF1dG8mIHJpZ2h0IDogZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKSB7Ci0gICAg
ICAgICAgICAgICAgZmxvYXQgZXhwZWN0ZWQgPSBvcGVyYXRpb24obGVmdC52YWx1ZSwgcmlnaHQu
dmFsdWUpID8gNDIuNSA6IC02Ni41OwotICAgICAgICAgICAgICAgIENIRUNLKGlzSWRlbnRpY2Fs
KGludm9rZTxmbG9hdD4oKmNvZGUsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihsZWZ0LnZhbHVlKSwg
Yml0d2lzZV9jYXN0PGludDMyX3Q+KHJpZ2h0LnZhbHVlKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+
KDQyLjVmKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KC02Ni41ZikpLCBleHBlY3RlZCkpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIHsgLy8gQ29tcGFyZSBhcmd1bWVudHMg
YW5kIHNlbGVjdGVkIGFyZ3VtZW50cyBhcmUgYWxsIGRpZmZlcmVudC4gInRoZW5DYXNlIiBpcyBs
aXZlIGFmdGVyIG9wZXJhdGlvbi4KLSAgICAgICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgIFZhbHVlKiBhcmcwID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCi0gICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKTsKLSAgICAgICAgVmFsdWUqIGFyZzEgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwKLSAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAg
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpOwotICAgICAgICBWYWx1ZSogYXJnMiA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLAotICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAg
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpKSk7Ci0gICAgICAgIFZhbHVlKiBhcmczID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCi0gICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMykpKTsKLQotICAgICAgICBWYWx1ZSogcmVzdWx0ID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTZWxlY3QsIE9yaWdpbigpLAotICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBvcGNvZGUsIE9yaWdpbigpLCBhcmcwLCBh
cmcxKSwKLSAgICAgICAgICAgIGFyZzIsCi0gICAgICAgICAgICBhcmczKTsKLQotICAgICAgICBQ
YXRjaHBvaW50VmFsdWUqIGtlZXBWYWx1ZXNMaXZlID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9p
bnRWYWx1ZT4ocHJvYywgVm9pZCwgT3JpZ2luKCkpOwotICAgICAgICBrZWVwVmFsdWVzTGl2ZS0+
YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMiwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOwot
ICAgICAgICBrZWVwVmFsdWVzTGl2ZS0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxwZXJzJiwg
Y29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKLQotICAgICAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKLSAg
ICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0KLSAgICAgICAgZm9yIChhdXRv
JiBsZWZ0IDogZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKSB7Ci0gICAgICAgICAgICBm
b3IgKGF1dG8mIHJpZ2h0IDogZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKSB7Ci0gICAg
ICAgICAgICAgICAgZmxvYXQgZXhwZWN0ZWQgPSBvcGVyYXRpb24obGVmdC52YWx1ZSwgcmlnaHQu
dmFsdWUpID8gNDIuNSA6IC02Ni41OwotICAgICAgICAgICAgICAgIENIRUNLKGlzSWRlbnRpY2Fs
KGludm9rZTxmbG9hdD4oKmNvZGUsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihsZWZ0LnZhbHVlKSwg
Yml0d2lzZV9jYXN0PGludDMyX3Q+KHJpZ2h0LnZhbHVlKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+
KDQyLjVmKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KC02Ni41ZikpLCBleHBlY3RlZCkpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIHsgLy8gQ29tcGFyZSBhcmd1bWVudHMg
YW5kIHNlbGVjdGVkIGFyZ3VtZW50cyBhcmUgYWxsIGRpZmZlcmVudC4gImVsc2VDYXNlIiBpcyBs
aXZlIGFmdGVyIG9wZXJhdGlvbi4KLSAgICAgICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgIFZhbHVlKiBhcmcwID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCi0gICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKTsKLSAgICAgICAgVmFsdWUqIGFyZzEgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwKLSAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAg
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpOwotICAgICAgICBWYWx1ZSogYXJnMiA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLAotICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAg
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpKSk7Ci0gICAgICAgIFZhbHVlKiBhcmczID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCi0gICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMykpKTsKLQotICAgICAgICBWYWx1ZSogcmVzdWx0ID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTZWxlY3QsIE9yaWdpbigpLAotICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBvcGNvZGUsIE9yaWdpbigpLCBhcmcwLCBh
cmcxKSwKLSAgICAgICAgICAgIGFyZzIsCi0gICAgICAgICAgICBhcmczKTsKLQotICAgICAgICBQ
YXRjaHBvaW50VmFsdWUqIGtlZXBWYWx1ZXNMaXZlID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9p
bnRWYWx1ZT4ocHJvYywgVm9pZCwgT3JpZ2luKCkpOwotICAgICAgICBrZWVwVmFsdWVzTGl2ZS0+
YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMywgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOwot
ICAgICAgICBrZWVwVmFsdWVzTGl2ZS0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxwZXJzJiwg
Y29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKLQotICAgICAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKLSAg
ICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0KLSAgICAgICAgZm9yIChhdXRv
JiBsZWZ0IDogZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKSB7Ci0gICAgICAgICAgICBm
b3IgKGF1dG8mIHJpZ2h0IDogZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKSB7Ci0gICAg
ICAgICAgICAgICAgZmxvYXQgZXhwZWN0ZWQgPSBvcGVyYXRpb24obGVmdC52YWx1ZSwgcmlnaHQu
dmFsdWUpID8gNDIuNSA6IC02Ni41OwotICAgICAgICAgICAgICAgIENIRUNLKGlzSWRlbnRpY2Fs
KGludm9rZTxmbG9hdD4oKmNvZGUsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihsZWZ0LnZhbHVlKSwg
Yml0d2lzZV9jYXN0PGludDMyX3Q+KHJpZ2h0LnZhbHVlKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+
KDQyLjVmKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KC02Ni41ZikpLCBleHBlY3RlZCkpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIHsgLy8gQ29tcGFyZSBhcmd1bWVudHMg
YW5kIHNlbGVjdGVkIGFyZ3VtZW50cyBhcmUgYWxsIGRpZmZlcmVudC4gQm90aCBjYXNlcyBhcmUg
bGl2ZSBhZnRlciBvcGVyYXRpb24uCi0gICAgICAgIFByb2NlZHVyZSBwcm9jOwotICAgICAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgICAgICBWYWx1ZSogYXJnMCA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLAotICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0g
ICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSk7Ci0gICAgICAgIFZhbHVlKiBhcmcxID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCi0gICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKTsKLSAgICAgICAgVmFsdWUqIGFyZzIgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwKLSAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAg
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKSkpOwotICAgICAgICBWYWx1ZSogYXJnMyA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLAotICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAg
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpKSk7Ci0KLSAgICAgICAgVmFsdWUqIHJlc3VsdCA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2VsZWN0LCBPcmlnaW4oKSwKLSAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgb3Bjb2RlLCBPcmlnaW4oKSwgYXJnMCwg
YXJnMSksCi0gICAgICAgICAgICBhcmcyLAotICAgICAgICAgICAgYXJnMyk7Ci0KLSAgICAgICAg
UGF0Y2hwb2ludFZhbHVlKiBrZWVwVmFsdWVzTGl2ZSA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBv
aW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKLSAgICAgICAga2VlcFZhbHVlc0xpdmUt
PmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzIsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsK
LSAgICAgICAga2VlcFZhbHVlc0xpdmUtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzMsIFZh
bHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKLSAgICAgICAga2VlcFZhbHVlc0xpdmUtPnNldEdlbmVy
YXRvcihbJl0gKENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYp
IHsgfSk7Ci0KLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVy
biwgT3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHBy
b2MpOwotCi0gICAgICAgIGZvciAoYXV0byYgbGVmdCA6IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxm
bG9hdD4oKSkgewotICAgICAgICAgICAgZm9yIChhdXRvJiByaWdodCA6IGZsb2F0aW5nUG9pbnRP
cGVyYW5kczxmbG9hdD4oKSkgewotICAgICAgICAgICAgICAgIGZsb2F0IGV4cGVjdGVkID0gb3Bl
cmF0aW9uKGxlZnQudmFsdWUsIHJpZ2h0LnZhbHVlKSA/IDQyLjUgOiAtNjYuNTsKLSAgICAgICAg
ICAgICAgICBDSEVDSyhpc0lkZW50aWNhbChpbnZva2U8ZmxvYXQ+KCpjb2RlLCBiaXR3aXNlX2Nh
c3Q8aW50MzJfdD4obGVmdC52YWx1ZSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihyaWdodC52YWx1
ZSksIGJpdHdpc2VfY2FzdDxpbnQzMl90Pig0Mi41ZiksIGJpdHdpc2VfY2FzdDxpbnQzMl90Pigt
NjYuNWYpKSwgZXhwZWN0ZWQpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAg
ICB7IC8vIFRoZSBsZWZ0IGFyZ3VtZW50IGlzIHRoZSBzYW1lIGFzIHRoZSAiZWxzZUNhc2UiIGFy
Z3VtZW50LgotICAgICAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICAgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICAgICAgVmFsdWUqIGFyZzAgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKSkpOwotICAgICAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEpKSk7Ci0gICAgICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMikpKTsKLQotICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
Ci0gICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBTZWxlY3QsIE9yaWdpbigp
LAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAg
ICAgICAgIHByb2MsIG9wY29kZSwgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgICAgIGFyZzAs
Ci0gICAgICAgICAgICAgICAgICAgIGFyZzEpLAotICAgICAgICAgICAgICAgIGFyZzIsCi0gICAg
ICAgICAgICAgICAgYXJnMCkpOwotICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9j
KTsKLQotICAgICAgICBmb3IgKGF1dG8mIGxlZnQgOiBmbG9hdGluZ1BvaW50T3BlcmFuZHM8Zmxv
YXQ+KCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byYgcmlnaHQgOiBmbG9hdGluZ1BvaW50T3Bl
cmFuZHM8ZmxvYXQ+KCkpIHsKLSAgICAgICAgICAgICAgICBmbG9hdCBleHBlY3RlZCA9IG9wZXJh
dGlvbihsZWZ0LnZhbHVlLCByaWdodC52YWx1ZSkgPyA0Mi41IDogbGVmdC52YWx1ZTsKLSAgICAg
ICAgICAgICAgICBDSEVDSyhpc0lkZW50aWNhbChpbnZva2U8ZmxvYXQ+KCpjb2RlLCBiaXR3aXNl
X2Nhc3Q8aW50MzJfdD4obGVmdC52YWx1ZSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihyaWdodC52
YWx1ZSksIGJpdHdpc2VfY2FzdDxpbnQzMl90Pig0Mi41ZiksIGJpdHdpc2VfY2FzdDxpbnQzMl90
PihsZWZ0LnZhbHVlKSksIGV4cGVjdGVkKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgeyAvLyBUaGUgbGVmdCBhcmd1bWVudCBpcyB0aGUgc2FtZSBhcyB0aGUgImVsc2VD
YXNlIiBhcmd1bWVudC4gInRoZW5DYXNlIiBpcyBsaXZlIGFmdGVyIG9wZXJhdGlvbi4KLSAgICAg
ICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7Ci0gICAgICAgIFZhbHVlKiBhcmcwID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpKTsKLSAgICAgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIx
KSkpOwotICAgICAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
Qml0d2lzZUNhc3QsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIp
KSk7Ci0KLSAgICAgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgU2VsZWN0LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgb3Bjb2RlLCBPcmlnaW4oKSwgYXJnMCwgYXJnMSksCi0gICAgICAgICAgICBhcmcyLAot
ICAgICAgICAgICAgYXJnMCk7Ci0KLSAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBrZWVwVmFsdWVz
TGl2ZSA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdp
bigpKTsKLSAgICAgICAga2VlcFZhbHVlc0xpdmUtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFy
ZzIsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKLSAgICAgICAga2VlcFZhbHVlc0xpdmUtPnNl
dEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcyYpIHsgfSk7Ci0KLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2Ms
IFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQ
cm9jKHByb2MpOwotCi0gICAgICAgIGZvciAoYXV0byYgbGVmdCA6IGZsb2F0aW5nUG9pbnRPcGVy
YW5kczxmbG9hdD4oKSkgewotICAgICAgICAgICAgZm9yIChhdXRvJiByaWdodCA6IGZsb2F0aW5n
UG9pbnRPcGVyYW5kczxmbG9hdD4oKSkgewotICAgICAgICAgICAgICAgIGZsb2F0IGV4cGVjdGVk
ID0gb3BlcmF0aW9uKGxlZnQudmFsdWUsIHJpZ2h0LnZhbHVlKSA/IDQyLjUgOiBsZWZ0LnZhbHVl
OwotICAgICAgICAgICAgICAgIENIRUNLKGlzSWRlbnRpY2FsKGludm9rZTxmbG9hdD4oKmNvZGUs
IGJpdHdpc2VfY2FzdDxpbnQzMl90PihsZWZ0LnZhbHVlKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+
KHJpZ2h0LnZhbHVlKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KDQyLjVmKSwgYml0d2lzZV9jYXN0
PGludDMyX3Q+KGxlZnQudmFsdWUpKSwgZXhwZWN0ZWQpKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgIH0KLX0KLQotdm9pZCB0ZXN0U2VsZWN0RmxvYXRDb21wYXJlRmxvYXRXaXRoQWxp
YXNpbmcoKQotewotICAgIHRlc3RTZWxlY3RGbG9hdENvbXBhcmVGbG9hdDxFcXVhbD4oW10oZmxv
YXQgYSwgZmxvYXQgYikgLT4gYm9vbCB7IHJldHVybiBhID09IGI7IH0pOwotICAgIHRlc3RTZWxl
Y3RGbG9hdENvbXBhcmVGbG9hdDxOb3RFcXVhbD4oW10oZmxvYXQgYSwgZmxvYXQgYikgLT4gYm9v
bCB7IHJldHVybiBhICE9IGI7IH0pOwotICAgIHRlc3RTZWxlY3RGbG9hdENvbXBhcmVGbG9hdDxM
ZXNzVGhhbj4oW10oZmxvYXQgYSwgZmxvYXQgYikgLT4gYm9vbCB7IHJldHVybiBhIDwgYjsgfSk7
Ci0gICAgdGVzdFNlbGVjdEZsb2F0Q29tcGFyZUZsb2F0PEdyZWF0ZXJUaGFuPihbXShmbG9hdCBh
LCBmbG9hdCBiKSAtPiBib29sIHsgcmV0dXJuIGEgPiBiOyB9KTsKLSAgICB0ZXN0U2VsZWN0Rmxv
YXRDb21wYXJlRmxvYXQ8TGVzc0VxdWFsPihbXShmbG9hdCBhLCBmbG9hdCBiKSAtPiBib29sIHsg
cmV0dXJuIGEgPD0gYjsgfSk7Ci0gICAgdGVzdFNlbGVjdEZsb2F0Q29tcGFyZUZsb2F0PEdyZWF0
ZXJFcXVhbD4oW10oZmxvYXQgYSwgZmxvYXQgYikgLT4gYm9vbCB7IHJldHVybiBhID49IGI7IH0p
OwotICAgIHRlc3RTZWxlY3RGbG9hdENvbXBhcmVGbG9hdDxFcXVhbE9yVW5vcmRlcmVkPihbXShm
bG9hdCBhLCBmbG9hdCBiKSAtPiBib29sIHsgcmV0dXJuIGEgIT0gYSB8fCBiICE9IGIgfHwgYSA9
PSBiOyB9KTsKLX0KLQotdm9pZCB0ZXN0U2VsZWN0Rm9sZChpbnRwdHJfdCB2YWx1ZSkKLXsKLSAg
ICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAg
IHByb2MsIFNlbGVjdCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAotICAgICAgICAgICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4oKSwKLSAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHZhbHVl
KSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIDQyKSksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSkpKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2Mp
OwotICAgIENIRUNLKGludm9rZTxpbnRwdHJfdD4oKmNvZGUsIDEsIDIpID09ICh2YWx1ZSA9PSA0
MiA/IDEgOiAyKSk7Ci0gICAgQ0hFQ0soaW52b2tlPGludHB0cl90PigqY29kZSwgNjQyNDYyLCAz
MjUzMykgPT0gKHZhbHVlID09IDQyID8gNjQyNDYyIDogMzI1MzMpKTsKLX0KLQotdm9pZCB0ZXN0
U2VsZWN0SW52ZXJ0KCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
LSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIFNlbGVjdCwgT3JpZ2luKCksCi0gICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIEVxdWFsLCBP
cmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAg
ICAgICAgICAgICAgICBwcm9jLCBOb3RFcXVhbCwgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSwKLSAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0MikpLAotICAgICAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSksCi0gICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMikpKTsKLQot
ICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotICAgIENIRUNLKGludm9rZTxpbnRw
dHJfdD4oKmNvZGUsIDQyLCAxLCAyKSA9PSAxKTsKLSAgICBDSEVDSyhpbnZva2U8aW50cHRyX3Q+
KCpjb2RlLCA0MiwgNjQyNDYyLCAzMjUzMykgPT0gNjQyNDYyKTsKLSAgICBDSEVDSyhpbnZva2U8
aW50cHRyX3Q+KCpjb2RlLCA0MywgMSwgMikgPT0gMik7Ci0gICAgQ0hFQ0soaW52b2tlPGludHB0
cl90PigqY29kZSwgNDMsIDY0MjQ2MiwgMzI1MzMpID09IDMyNTMzKTsKLX0KLQotdm9pZCB0ZXN0
Q2hlY2tTZWxlY3QoKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIGlmIChwcm9jLm9wdExl
dmVsKCkgPCAxKQotICAgICAgICByZXR1cm47Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLQotICAgIENoZWNrVmFsdWUqIGNoZWNrID0gcm9vdC0+YXBwZW5kTmV3PENo
ZWNrVmFsdWU+KAotICAgICAgICBwcm9jLCBDaGVjaywgT3JpZ2luKCksCi0gICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAotICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBT
ZWxlY3QsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
Ci0gICAgICAgICAgICAgICAgICAgIHByb2MsIEJpdEFuZCwgT3JpZ2luKCksCi0gICAgICAgICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgICAgICAg
ICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAotICAgICAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMHhmZikp
LAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgLTQyKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIDM1KSksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKSkpOwotICAgIHVuc2lnbmVkIGdlbmVy
YXRpb25Db3VudCA9IDA7Ci0gICAgY2hlY2stPnNldEdlbmVyYXRvcigKLSAgICAgICAgWyZdIChD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewotICAg
ICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQp
OwotCi0gICAgICAgICAgICBnZW5lcmF0aW9uQ291bnQrKzsKLSAgICAgICAgICAgIGppdC5tb3Zl
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDY2NiksIEdQUkluZm86OnJldHVyblZhbHVlR1BS
KTsKLSAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwotICAgICAgICAgICAg
aml0LnJldCgpOwotICAgICAgICB9KTsKLSAgICAKLSAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7Ci0KLSAgICBhdXRvIGNv
ZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBDSEVDSyhnZW5lcmF0aW9uQ291bnQgPT0gMSk7
Ci0gICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsIHRydWUpID09IDApOwotICAgIENIRUNLKGlu
dm9rZTxpbnQ+KCpjb2RlLCBmYWxzZSkgPT0gNjY2KTsKLX0KLQotdm9pZCB0ZXN0Q2hlY2tTZWxl
Y3RDaGVja1NlbGVjdCgpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgaWYgKHByb2Mub3B0
TGV2ZWwoKSA8IDEpCi0gICAgICAgIHJldHVybjsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOwotCi0gICAgQ2hlY2tWYWx1ZSogY2hlY2sgPSByb290LT5hcHBlbmROZXc8
Q2hlY2tWYWx1ZT4oCi0gICAgICAgIHByb2MsIENoZWNrLCBPcmlnaW4oKSwKLSAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCi0g
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2Ms
IFNlbGVjdCwgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKLSAgICAgICAgICAgICAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKLSAgICAgICAg
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPigKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCi0gICAgICAgICAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAweGZm
KSksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAtNDIpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0
clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMzUpKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDIpKSk7Ci0KLSAgICB1bnNpZ25lZCBn
ZW5lcmF0aW9uQ291bnQgPSAwOwotICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoCi0gICAgICAgIFsm
XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsK
LSAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2go
aml0KTsKLQotICAgICAgICAgICAgZ2VuZXJhdGlvbkNvdW50Kys7Ci0gICAgICAgICAgICBqaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMig2NjYpLCBHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUik7Ci0gICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKLSAgICAgICAg
ICAgIGppdC5yZXQoKTsKLSAgICAgICAgfSk7Ci0gICAgCi0gICAgQ2hlY2tWYWx1ZSogY2hlY2sy
ID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KAotICAgICAgICBwcm9jLCBDaGVjaywgT3Jp
Z2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9j
LCBBZGQsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAg
ICAgICAgICAgICAgICBwcm9jLCBTZWxlY3QsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgICAgIHByb2MsIEJpdEFuZCwg
T3JpZ2luKCksCi0gICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0g
ICAgICAgICAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4oCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MSkpLAotICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgMHhmZikpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxD
b25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTQzKSwKLSAgICAgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDM2KSksCi0gICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQzKSkp
OwotCi0gICAgdW5zaWduZWQgZ2VuZXJhdGlvbkNvdW50MiA9IDA7Ci0gICAgY2hlY2syLT5zZXRH
ZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcyYpIHsKLSAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0
ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKLQotICAgICAgICAgICAgZ2VuZXJhdGlvbkNvdW50
MisrOwotICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoNjY3
KSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwotICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlv
bkVwaWxvZ3VlKCk7Ci0gICAgICAgICAgICBqaXQucmV0KCk7Ci0gICAgICAgIH0pOwotICAgIAot
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIDApKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotICAgIENI
RUNLKGdlbmVyYXRpb25Db3VudCA9PSAxKTsKLSAgICBDSEVDSyhnZW5lcmF0aW9uQ291bnQyID09
IDEpOwotICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCB0cnVlLCB0cnVlKSA9PSAwKTsKLSAg
ICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgZmFsc2UsIHRydWUpID09IDY2Nik7Ci0gICAgQ0hF
Q0soaW52b2tlPGludD4oKmNvZGUsIHRydWUsIGZhbHNlKSA9PSA2NjcpOwotfQotCi12b2lkIHRl
c3RDaGVja1NlbGVjdEFuZENTRSgpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgaWYgKHBy
b2Mub3B0TGV2ZWwoKSA8IDEpCi0gICAgICAgIHJldHVybjsKLSAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgYXV0byogc2VsZWN0VmFsdWUgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBTZWxlY3QsIE9yaWdpbigpLAotICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4o
KSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAg
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPigKLSAgICAgICAgICAgICAgICAgICAgcHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCkpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0
MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDB4ZmYpKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAtNDIpLAotICAgICAgICByb290LT5hcHBl
bmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDM1KSk7Ci0KLSAgICBhdXRvKiBj
b25zdGFudCA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
NDIpOwotICAgIGF1dG8qIGFkZFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBB
ZGQsIE9yaWdpbigpLCBzZWxlY3RWYWx1ZSwgY29uc3RhbnQpOwotCi0gICAgQ2hlY2tWYWx1ZSog
Y2hlY2sgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2ssIE9yaWdpbigp
LCBhZGRWYWx1ZSk7Ci0gICAgdW5zaWduZWQgZ2VuZXJhdGlvbkNvdW50ID0gMDsKLSAgICBjaGVj
ay0+c2V0R2VuZXJhdG9yKAotICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBT
dGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7Ci0gICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRj
aFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0KLSAgICAgICAgICAgIGdlbmVyYXRp
b25Db3VudCsrOwotICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoNjY2KSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwotICAgICAgICAgICAgaml0LmVtaXRG
dW5jdGlvbkVwaWxvZ3VlKCk7Ci0gICAgICAgICAgICBqaXQucmV0KCk7Ci0gICAgICAgIH0pOwot
Ci0gICAgYXV0byogYWRkVmFsdWUyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQs
IE9yaWdpbigpLCBzZWxlY3RWYWx1ZSwgY29uc3RhbnQpOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGFkZFZhbHVlLCBhZGRW
YWx1ZTIpKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotICAgIENIRUNL
KGdlbmVyYXRpb25Db3VudCA9PSAxKTsKLSAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgdHJ1
ZSkgPT0gMCk7Ci0gICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsIGZhbHNlKSA9PSA2NjYpOwot
fQotCi1kb3VibGUgYjNQb3coZG91YmxlIHgsIGludCB5KQotewotICAgIGlmICh5IDwgMCB8fCB5
ID4gMTAwMCkKLSAgICAgICAgcmV0dXJuIHBvdyh4LCB5KTsKLSAgICBkb3VibGUgcmVzdWx0ID0g
MTsKLSAgICB3aGlsZSAoeSkgewotICAgICAgICBpZiAoeSAmIDEpCi0gICAgICAgICAgICByZXN1
bHQgKj0geDsKLSAgICAgICAgeCAqPSB4OwotICAgICAgICB5ID4+PSAxOwotICAgIH0KLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIHRlc3RQb3dEb3VibGVCeUludGVnZXJMb29wKGRvdWJs
ZSB4T3BlcmFuZCwgaW50MzJfdCB5T3BlcmFuZCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgVmFsdWUqIHggPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86
OmFyZ3VtZW50RlBSMCk7Ci0gICAgVmFsdWUqIHkgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBhdXRv
IHJlc3VsdCA9IHBvd0RvdWJsZUludDMyKHByb2MsIHJvb3QsIE9yaWdpbigpLCB4LCB5KTsKLSAg
ICBCYXNpY0Jsb2NrKiBjb250aW51YXRpb24gPSByZXN1bHQuZmlyc3Q7Ci0gICAgY29udGludWF0
aW9uLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0
LnNlY29uZCk7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4o
cHJvYywgeE9wZXJhbmQsIHlPcGVyYW5kKSwgYjNQb3coeE9wZXJhbmQsIHlPcGVyYW5kKSkpOwot
fQotCi12b2lkIHRlc3RUcnVuY09ySGlnaCgpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4o
KSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAg
cHJvYywgQml0T3IsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwK
LSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmln
aW4oKSwgMHgxMDAwMDAwMDApKSkpOwotCi0gICAgaW50NjRfdCB2YWx1ZSA9IDB4MTIzNDU2Nzgx
MjM0OwotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCB2YWx1ZSkgPT0gMHg1Njc4
MTIzNCk7Ci19Ci0KLXZvaWQgdGVzdFRydW5jT3JMb3coKQotewotICAgIFByb2NlZHVyZSBwcm9j
OwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0g
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBUcnVuYywg
T3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAg
ICAgICAgIHByb2MsIEJpdE9yLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIDB4MTAwMDAwMCkpKSk7Ci0KLSAgICBpbnQ2NF90IHZhbHVlID0gMHgxMjM0
NTY3ODEyMzQ7Ci0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIHZhbHVlKSA9PSAw
eDU3NzgxMjM0KTsKLX0KLQotdm9pZCB0ZXN0Qml0QW5kT3JIaWdoKCkKLXsKLSAgICBQcm9jZWR1
cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAg
cm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywg
Qml0QW5kLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0g
ICAgICAgICAgICAgICAgcHJvYywgQml0T3IsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgMHg4KSksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8
Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMHg3Nzc3Nzc3Nzc3NzcpKSk7Ci0KLSAgICBp
bnQ2NF90IHZhbHVlID0gMHgxMjM0NTY3ODEyMzQ7Ci0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxp
bnQ2NF90Pihwcm9jLCB2YWx1ZSkgPT0gMHgxMjM0NTY3MDEyMzRsbCk7Ci19Ci0KLXZvaWQgdGVz
dEJpdEFuZE9yTG93KCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKLSAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgQml0T3Is
IE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKLSAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMHgxKSks
Ci0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgMHg3Nzc3Nzc3Nzc3NzcpKSk7Ci0KLSAgICBpbnQ2NF90IHZhbHVlID0gMHgxMjM0NTY3ODEy
MzQ7Ci0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCB2YWx1ZSkgPT0gMHgx
MjM0NTY3MDEyMzVsbCk7Ci19Ci0KLXZvaWQgdGVzdEJyYW5jaDY0RXF1YWwoaW50NjRfdCBsZWZ0
LCBpbnQ2NF90IHJpZ2h0KQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogdGhlbkNhc2UgPSBwcm9j
LmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7
Ci0KLSAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBWYWx1ZSogYXJnMiA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIxKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAg
ICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgRXF1YWwsIE9yaWdpbigpLCBhcmcxLCBhcmcyKSwKLSAgICAgICAgRnJlcXVlbnRl
ZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNlKSk7Ci0KLSAgICBib29s
IHRydWVSZXN1bHQgPSB0cnVlOwotICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUo
Ci0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHRoZW5DYXNlLT5hcHBl
bmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgTG9hZDhaLCBPcmlnaW4oKSwK
LSAgICAgICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksICZ0cnVlUmVzdWx0KSkpOwotCi0gICAgYm9vbCBlbHNlUmVzdWx0ID0gZmFsc2U7Ci0g
ICAgZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKLSAgICAgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0g
ICAgICAgICAgICBwcm9jLCBMb2FkOFosIE9yaWdpbigpLAotICAgICAgICAgICAgZWxzZUNhc2Ut
PmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJmVsc2VSZXN1bHQpKSk7
Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGJvb2w+KHByb2MsIGxlZnQsIHJpZ2h0KSA9PSAo
bGVmdCA9PSByaWdodCkpOwotfQotCi12b2lkIHRlc3RCcmFuY2g2NEVxdWFsSW1tKGludDY0X3Qg
bGVmdCwgaW50NjRfdCByaWdodCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0g
cHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9j
aygpOwotCi0gICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgVmFsdWUqIGFy
ZzIgPSByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHJpZ2h0
KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIEJyYW5j
aCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRXF1YWws
IE9yaWdpbigpLCBhcmcxLCBhcmcyKSwKLSAgICAgICAgRnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNl
KSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNlKSk7Ci0KLSAgICBib29sIHRydWVSZXN1bHQgPSB0
cnVlOwotICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2Ms
IFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8TWVtb3J5VmFs
dWU+KAotICAgICAgICAgICAgcHJvYywgTG9hZDhaLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHRo
ZW5DYXNlLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZ0cnVlUmVz
dWx0KSkpOwotCi0gICAgYm9vbCBlbHNlUmVzdWx0ID0gZmFsc2U7Ci0gICAgZWxzZUNhc2UtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAg
ICAgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICBwcm9j
LCBMb2FkOFosIE9yaWdpbigpLAotICAgICAgICAgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxDb25z
dFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJmVsc2VSZXN1bHQpKSk7Ci0KLSAgICBDSEVDSyhj
b21waWxlQW5kUnVuPGJvb2w+KHByb2MsIGxlZnQpID09IChsZWZ0ID09IHJpZ2h0KSk7Ci19Ci0K
LXZvaWQgdGVzdEJyYW5jaDY0RXF1YWxNZW0oaW50NjRfdCBsZWZ0LCBpbnQ2NF90IHJpZ2h0KQot
ewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7Ci0gICAgQmFzaWNCbG9jayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAg
QmFzaWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBWYWx1ZSogYXJn
MSA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgIHByb2MsIExvYWQsIHBv
aW50ZXJUeXBlKCksIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZh
bHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKLSAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBFcXVhbCwgT3JpZ2luKCksIGFyZzEsIGFyZzIpLAotICAgICAg
ICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsK
LQotICAgIGJvb2wgdHJ1ZVJlc3VsdCA9IHRydWU7Ci0gICAgdGhlbkNhc2UtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgdGhl
bkNhc2UtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBMb2FkOFos
IE9yaWdpbigpLAotICAgICAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgJnRydWVSZXN1bHQpKSk7Ci0KLSAgICBib29sIGVsc2VSZXN1bHQg
PSBmYWxzZTsKLSAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIExvYWQ4WiwgT3JpZ2luKCksCi0gICAgICAgICAg
ICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmZWxz
ZVJlc3VsdCkpKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48Ym9vbD4ocHJvYywgJmxlZnQs
IHJpZ2h0KSA9PSAobGVmdCA9PSByaWdodCkpOwotfQotCi12b2lkIHRlc3RCcmFuY2g2NEVxdWFs
TWVtSW1tKGludDY0X3QgbGVmdCwgaW50NjRfdCByaWdodCkKLXsKLSAgICBQcm9jZWR1cmUgcHJv
YzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxv
Y2sqIHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNl
ID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KAotICAgICAgICBwcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4o
KSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFw
cGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgcmlnaHQpOwotICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwK
LSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBFcXVhbCwgT3JpZ2luKCksIGFy
ZzEsIGFyZzIpLAotICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVk
QmxvY2soZWxzZUNhc2UpKTsKLQotICAgIGJvb2wgdHJ1ZVJlc3VsdCA9IHRydWU7Ci0gICAgdGhl
bkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKLSAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAg
ICAgICBwcm9jLCBMb2FkOFosIE9yaWdpbigpLAotICAgICAgICAgICAgdGhlbkNhc2UtPmFwcGVu
ZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnRydWVSZXN1bHQpKSk7Ci0KLSAg
ICBib29sIGVsc2VSZXN1bHQgPSBmYWxzZTsKLSAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICBlbHNlQ2Fz
ZS0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIExvYWQ4WiwgT3Jp
Z2luKCksCi0gICAgICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCAmZWxzZVJlc3VsdCkpKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48
Ym9vbD4ocHJvYywgJmxlZnQpID09IChsZWZ0ID09IHJpZ2h0KSk7Ci19Ci0KLXZvaWQgdGVzdFN0
b3JlOExvYWQ4WihpbnQzMl90IHZhbHVlKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgCi0gICAgaW50OF90IGJ5dGU7
Ci0gICAgVmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgJmJ5dGUpOwotICAgIAotICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
Ci0gICAgICAgIHByb2MsIFN0b3JlOCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCkpLAotICAgICAgICBwdHIpOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICBy
b290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQ4WiwgT3JpZ2luKCksIHB0cikp
OwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCB2YWx1ZSkgPT0gc3Rh
dGljX2Nhc3Q8dWludDhfdD4odmFsdWUpKTsKLX0KLQotdm9pZCB0ZXN0U3RvcmUxNkxvYWQxNloo
aW50MzJfdCB2YWx1ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIAotICAgIGludDE2X3QgYnl0ZTsKLSAgICBWYWx1
ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAm
Ynl0ZSk7Ci0gICAgCi0gICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAg
cHJvYywgU3RvcmUxNiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
Ci0gICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCkpLAotICAgICAgICBwdHIpOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBl
bmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQxNlosIE9yaWdpbigpLCBwdHIpKTsKLQotICAg
IENIRUNLKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgdmFsdWUpID09IHN0YXRpY19jYXN0
PHVpbnQxNl90Pih2YWx1ZSkpOwotfQotCi12b2lkIHRlc3RTU2hyU2hsMzIoaW50MzJfdCB2YWx1
ZSwgaW50MzJfdCBzc2hyQW1vdW50LCBpbnQzMl90IHNobEFtb3VudCkKLXsKLSAgICBQcm9jZWR1
cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAg
cm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywg
U1NociwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAg
ICAgICAgICAgICAgIHByb2MsIFNobCwgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdp
bigpLAotICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAotICAgICAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBzaGxBbW91
bnQpKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBzc2hyQW1vdW50KSkpOwotCi0gICAgQ0hFQ0soCi0gICAgICAgIGNvbXBpbGVBbmRS
dW48aW50MzJfdD4ocHJvYywgdmFsdWUpCi0gICAgICAgID09ICgodmFsdWUgPDwgKHNobEFtb3Vu
dCAmIDMxKSkgPj4gKHNzaHJBbW91bnQgJiAzMSkpKTsKLX0KLQotdm9pZCB0ZXN0U1NoclNobDY0
KGludDY0X3QgdmFsdWUsIGludDMyX3Qgc3NockFtb3VudCwgaW50MzJfdCBzaGxBbW91bnQpCi17
Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAg
ICAgICAgIHByb2MsIFNTaHIsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdpbigpLAotICAgICAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgc2hsQW1vdW50KSksCi0gICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgc3NockFtb3VudCkp
KTsKLQotICAgIENIRUNLKAotICAgICAgICBjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIHZh
bHVlKQotICAgICAgICA9PSAoKHZhbHVlIDw8IChzaGxBbW91bnQgJiA2MykpID4+IChzc2hyQW1v
dW50ICYgNjMpKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci12b2lkIHRlc3RSb3RSKFQg
dmFsdWVJbnQsIGludDMyX3Qgc2hpZnQpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIFZhbHVlKiB2YWx1ZSA9IHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKLSAgICBpZiAoc2l6ZW9mKFQpID09IDQpCi0gICAgICAgIHZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksIHZhbHVlKTsKLQot
ICAgIFZhbHVlKiBhbW1vdW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywg
T3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgUm90UiwgT3JpZ2luKCksIHZhbHVlLCBhbW1vdW50KSk7Ci0KLSAg
ICBDSEVDS19FUShjb21waWxlQW5kUnVuPFQ+KHByb2MsIHZhbHVlSW50LCBzaGlmdCksIHJvdGF0
ZVJpZ2h0KHZhbHVlSW50LCBzaGlmdCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdm9p
ZCB0ZXN0Um90TChUIHZhbHVlSW50LCBpbnQzMl90IHNoaWZ0KQotewotICAgIFByb2NlZHVyZSBw
cm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBWYWx1
ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgaWYgKHNpemVvZihUKSA9PSA0KQotICAg
ICAgICB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigp
LCB2YWx1ZSk7Ci0KLSAgICBWYWx1ZSogYW1tb3VudCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOwotICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJvdEwsIE9yaWdpbigpLCB2YWx1ZSwgYW1t
b3VudCkpOwotCi0gICAgQ0hFQ0tfRVEoY29tcGlsZUFuZFJ1bjxUPihwcm9jLCB2YWx1ZUludCwg
c2hpZnQpLCByb3RhdGVMZWZ0KHZhbHVlSW50LCBzaGlmdCkpOwotfQotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBUPgotdm9pZCB0ZXN0Um90UldpdGhJbW1TaGlmdChUIHZhbHVlSW50LCBpbnQzMl90IHNo
aWZ0KQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7Ci0KLSAgICBWYWx1ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAg
aWYgKHNpemVvZihUKSA9PSA0KQotICAgICAgICB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLCB2YWx1ZSk7Ci0KLSAgICBWYWx1ZSogYW1tb3VudCA9
IHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCBJbnQzMiwgc2hpZnQpOwot
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAot
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJvdFIsIE9yaWdpbigpLCB2YWx1
ZSwgYW1tb3VudCkpOwotCi0gICAgQ0hFQ0tfRVEoY29tcGlsZUFuZFJ1bjxUPihwcm9jLCB2YWx1
ZUludCwgc2hpZnQpLCByb3RhdGVSaWdodCh2YWx1ZUludCwgc2hpZnQpKTsKLX0KLQotdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLXZvaWQgdGVzdFJvdExXaXRoSW1tU2hpZnQoVCB2YWx1ZUludCwgaW50
MzJfdCBzaGlmdCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgVmFsdWUqIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OwotICAgIGlmIChzaXplb2YoVCkgPT0gNCkKLSAgICAgICAgdmFsdWUgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwgdmFsdWUpOwotCi0gICAgVmFsdWUqIGFt
bW91bnQgPSByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgSW50MzIsIHNo
aWZ0KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSb3RMLCBPcmlnaW4o
KSwgdmFsdWUsIGFtbW91bnQpKTsKLQotICAgIENIRUNLX0VRKGNvbXBpbGVBbmRSdW48VD4ocHJv
YywgdmFsdWVJbnQsIHNoaWZ0KSwgcm90YXRlTGVmdCh2YWx1ZUludCwgc2hpZnQpKTsKLX0KLQot
dGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZvaWQgdGVzdENvbXB1dGVEaXZpc2lvbk1hZ2ljKFQgdmFs
dWUsIFQgbWFnaWNNdWx0aXBsaWVyLCB1bnNpZ25lZCBzaGlmdCkKLXsKLSAgICBEaXZpc2lvbk1h
Z2ljPFQ+IG1hZ2ljID0gY29tcHV0ZURpdmlzaW9uTWFnaWModmFsdWUpOwotICAgIENIRUNLKG1h
Z2ljLm1hZ2ljTXVsdGlwbGllciA9PSBtYWdpY011bHRpcGxpZXIpOwotICAgIENIRUNLKG1hZ2lj
LnNoaWZ0ID09IHNoaWZ0KTsKLX0KLQotdm9pZCB0ZXN0VHJpdmlhbEluZmluaXRlTG9vcCgpCi17
Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKLSAgICBCYXNpY0Jsb2NrKiBsb29wID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4oKSwgRnJlcXVlbnRlZEJs
b2NrKGxvb3ApKTsKLSAgICBsb29wLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgSnVtcCwg
T3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayhsb29wKSk7Ci0KLSAgICBjb21waWxlUHJvYyhwcm9j
KTsKLX0KLQotdm9pZCB0ZXN0Rm9sZFBhdGhFcXVhbCgpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7
Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2Nr
KiB0aGVuQmxvY2sgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogZWxzZUJsb2Nr
ID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgVmFsdWUqIGFyZyA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
LQotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgQnJhbmNo
LCBPcmlnaW4oKSwgYXJnLCBGcmVxdWVudGVkQmxvY2sodGhlbkJsb2NrKSwgRnJlcXVlbnRlZEJs
b2NrKGVsc2VCbG9jaykpOwotCi0gICAgdGhlbkJsb2NrLT5hcHBlbmROZXdDb250cm9sVmFsdWUo
Ci0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHRoZW5CbG9jay0+YXBw
ZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4oKSwgYXJnLCB0
aGVuQmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpKTsK
LQotICAgIGVsc2VCbG9jay0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLAotICAgICAgICBlbHNlQmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4oCi0g
ICAgICAgICAgICBwcm9jLCBFcXVhbCwgT3JpZ2luKCksIGFyZywgZWxzZUJsb2NrLT5hcHBlbmRO
ZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKSk7Ci0KLSAgICBhdXRvIGNvZGUg
PSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBDSEVDSyhpbnZva2U8aW50cHRyX3Q+KCpjb2RlLCAw
KSA9PSAxKTsKLSAgICBDSEVDSyhpbnZva2U8aW50cHRyX3Q+KCpjb2RlLCAxKSA9PSAwKTsKLSAg
ICBDSEVDSyhpbnZva2U8aW50cHRyX3Q+KCpjb2RlLCA0MikgPT0gMCk7Ci19Ci0KLXZvaWQgdGVz
dExTaGlmdFNlbGYzMigpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJnID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKLSAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCkpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBTaGwsIE9yaWdpbigpLCBhcmcsIGFyZykpOwotCi0gICAgYXV0byBjb2RlID0gY29tcGlsZVBy
b2MocHJvYyk7Ci0KLSAgICBhdXRvIGNoZWNrID0gWyZdIChpbnQzMl90IHZhbHVlKSB7Ci0gICAg
ICAgIENIRUNLKGludm9rZTxpbnQzMl90PigqY29kZSwgdmFsdWUpID09IHZhbHVlIDw8ICh2YWx1
ZSAmIDMxKSk7Ci0gICAgfTsKLQotICAgIGNoZWNrKDApOwotICAgIGNoZWNrKDEpOwotICAgIGNo
ZWNrKDMxKTsKLSAgICBjaGVjaygzMik7Ci19Ci0KLXZvaWQgdGVzdFJTaGlmdFNlbGYzMigpCi17
Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKLSAgICBWYWx1ZSogYXJnID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAg
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTU2hyLCBPcmlnaW4oKSwg
YXJnLCBhcmcpKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotCi0gICAg
YXV0byBjaGVjayA9IFsmXSAoaW50MzJfdCB2YWx1ZSkgewotICAgICAgICBDSEVDSyhpbnZva2U8
aW50MzJfdD4oKmNvZGUsIHZhbHVlKSA9PSB2YWx1ZSA+PiAodmFsdWUgJiAzMSkpOwotICAgIH07
Ci0KLSAgICBjaGVjaygwKTsKLSAgICBjaGVjaygxKTsKLSAgICBjaGVjaygzMSk7Ci0gICAgY2hl
Y2soMzIpOwotfQotCi12b2lkIHRlc3RVUlNoaWZ0U2VsZjMyKCkKLXsKLSAgICBQcm9jZWR1cmUg
cHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVl
KiBhcmcgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBUcnVuYywgT3Jp
Z2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFpTaHIsIE9yaWdpbigpLCBhcmcsIGFyZykpOwotCi0g
ICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0KLSAgICBhdXRvIGNoZWNrID0gWyZd
ICh1aW50MzJfdCB2YWx1ZSkgewotICAgICAgICBDSEVDSyhpbnZva2U8dWludDMyX3Q+KCpjb2Rl
LCB2YWx1ZSkgPT0gdmFsdWUgPj4gKHZhbHVlICYgMzEpKTsKLSAgICB9OwotCi0gICAgY2hlY2so
MCk7Ci0gICAgY2hlY2soMSk7Ci0gICAgY2hlY2soMzEpOwotICAgIGNoZWNrKDMyKTsKLX0KLQot
dm9pZCB0ZXN0TFNoaWZ0U2VsZjY0KCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmcgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAg
ICAgICAgICAgcHJvYywgU2hsLCBPcmlnaW4oKSwgYXJnLCByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFRydW5jLCBPcmlnaW4oKSwgYXJnKSkpOwotCi0gICAgYXV0byBjb2RlID0gY29tcGls
ZVByb2MocHJvYyk7Ci0KLSAgICBhdXRvIGNoZWNrID0gWyZdIChpbnQ2NF90IHZhbHVlKSB7Ci0g
ICAgICAgIENIRUNLKGludm9rZTxpbnQ2NF90PigqY29kZSwgdmFsdWUpID09IHZhbHVlIDw8ICh2
YWx1ZSAmIDYzKSk7Ci0gICAgfTsKLQotICAgIGNoZWNrKDApOwotICAgIGNoZWNrKDEpOwotICAg
IGNoZWNrKDMxKTsKLSAgICBjaGVjaygzMik7Ci0gICAgY2hlY2soNjMpOwotICAgIGNoZWNrKDY0
KTsKLX0KLQotdm9pZCB0ZXN0UlNoaWZ0U2VsZjY0KCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsK
LSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmcg
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAg
ICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAotICAgICAgICAgICAgcHJvYywgU1NociwgT3JpZ2luKCksIGFyZywgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksIGFyZykpKTsKLQotICAgIGF1dG8gY29k
ZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotCi0gICAgYXV0byBjaGVjayA9IFsmXSAoaW50NjRfdCB2
YWx1ZSkgewotICAgICAgICBDSEVDSyhpbnZva2U8aW50NjRfdD4oKmNvZGUsIHZhbHVlKSA9PSB2
YWx1ZSA+PiAodmFsdWUgJiA2MykpOwotICAgIH07Ci0KLSAgICBjaGVjaygwKTsKLSAgICBjaGVj
aygxKTsKLSAgICBjaGVjaygzMSk7Ci0gICAgY2hlY2soMzIpOwotICAgIGNoZWNrKDYzKTsKLSAg
ICBjaGVjayg2NCk7Ci19Ci0KLXZvaWQgdGVzdFVSU2hpZnRTZWxmNjQoKQotewotICAgIFByb2Nl
ZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAg
VmFsdWUqIGFyZyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBaU2hyLCBPcmlnaW4oKSwgYXJnLCBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwgYXJnKSkpOwotCi0g
ICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0KLSAgICBhdXRvIGNoZWNrID0gWyZd
ICh1aW50NjRfdCB2YWx1ZSkgewotICAgICAgICBDSEVDSyhpbnZva2U8dWludDY0X3Q+KCpjb2Rl
LCB2YWx1ZSkgPT0gdmFsdWUgPj4gKHZhbHVlICYgNjMpKTsKLSAgICB9OwotCi0gICAgY2hlY2so
MCk7Ci0gICAgY2hlY2soMSk7Ci0gICAgY2hlY2soMzEpOwotICAgIGNoZWNrKDMyKTsKLSAgICBj
aGVjayg2Myk7Ci0gICAgY2hlY2soNjQpOwotfQotCi12b2lkIHRlc3RQYXRjaHBvaW50RG91Ymxl
UmVncygpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKLQotICAgIFZhbHVlKiBhcmcgPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Ci0gICAg
Ci0gICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNo
cG9pbnRWYWx1ZT4ocHJvYywgRG91YmxlLCBPcmlnaW4oKSk7Ci0gICAgcGF0Y2hwb2ludC0+YXBw
ZW5kKGFyZywgVmFsdWVSZXAoRlBSSW5mbzo6ZnBSZWdUMCkpOwotICAgIHBhdGNocG9pbnQtPnJl
c3VsdENvbnN0cmFpbnQgPSBWYWx1ZVJlcChGUFJJbmZvOjpmcFJlZ1QwKTsKLQotICAgIHVuc2ln
bmVkIG51bUNhbGxzID0gMDsKLSAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCi0gICAgICAg
IFsmXSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewot
ICAgICAgICAgICAgbnVtQ2FsbHMrKzsKLSAgICAgICAgfSk7Ci0KLSAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcGF0Y2hwb2ludCk7Ci0KLSAg
ICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBDSEVDSyhudW1DYWxscyA9PSAx
KTsKLSAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgNDIuNSkgPT0gNDIuNSk7Ci19Ci0K
LXZvaWQgdGVzdFNwaWxsRGVmU21hbGxlclRoYW5Vc2UoKQotewotICAgIFByb2NlZHVyZSBwcm9j
OwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICAvLyBNb3Zl
MzIuCi0gICAgVmFsdWUqIGFyZzMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAg
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZh
bHVlKiBhcmc2NCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgWkV4dDMyLCBPcmlnaW4o
KSwgYXJnMzIpOwotCi0gICAgLy8gTWFrZSBzdXJlIGFyZzY0IGlzIG9uIHRoZSBzdGFjay4KLSAg
ICBQYXRjaHBvaW50VmFsdWUqIGZvcmNlU3BpbGwgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2lu
dFZhbHVlPihwcm9jLCBJbnQ2NCwgT3JpZ2luKCkpOwotICAgIFJlZ2lzdGVyU2V0IGNsb2JiZXJT
ZXQgPSBSZWdpc3RlclNldDo6YWxsR1BScygpOwotICAgIGNsb2JiZXJTZXQuZXhjbHVkZShSZWdp
c3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSk7Ci0gICAgY2xvYmJlclNldC5leGNsdWRlKFJlZ2lz
dGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOwotICAgIGNsb2JiZXJTZXQuY2xl
YXIoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOyAvLyBGb3JjZSB0aGUgcmV0dXJuIHZhbHVlIGZv
ciBhbGlhc2luZyBiZWxvdy4KLSAgICBmb3JjZVNwaWxsLT5jbG9iYmVyTGF0ZShjbG9iYmVyU2V0
KTsKLSAgICBmb3JjZVNwaWxsLT5zZXRHZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxIZWxw
ZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAg
ICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7
Ci0gICAgICAgICAgICBqaXQueG9yNjQocGFyYW1zWzBdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkp
OwotICAgICAgICB9KTsKLQotICAgIC8vIE9uIHg4NiwgU3ViIGFkbWl0IGFuIGFkZHJlc3MgZm9y
IGFueSBvcGVyYW5kLiBJZiBpdCB1c2VzIHRoZSBzdGFjaywgdGhlIHRvcCBiaXRzIG11c3QgYmUg
emVyby4KLSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBT
dWIsIE9yaWdpbigpLCBmb3JjZVNwaWxsLCBhcmc2NCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7Ci0KLSAgICBhdXRvIGNv
ZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBDSEVDSyhpbnZva2U8aW50NjRfdD4oKmNvZGUs
IDB4ZmZmZmZmZmYwMDAwMDAwMCkgPT0gMCk7Ci19Ci0KLXZvaWQgdGVzdFNwaWxsVXNlTGFyZ2Vy
VGhhbkRlZigpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxv
Y2soKTsKLSAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBC
YXNpY0Jsb2NrKiB0YWlsID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgUmVnaXN0ZXJTZXQgY2xv
YmJlclNldCA9IFJlZ2lzdGVyU2V0OjphbGxHUFJzKCk7Ci0gICAgY2xvYmJlclNldC5leGNsdWRl
KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKTsKLSAgICBjbG9iYmVyU2V0LmV4Y2x1ZGUo
UmVnaXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSk7Ci0KLSAgICBWYWx1ZSog
Y29uZGl0aW9uID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHBy
b2MsIEJyYW5jaCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0g
ICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICBjb25kaXRpb24p
LAotICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxz
ZUNhc2UpKTsKLQotICAgIFZhbHVlKiB0cnVuY2F0ZWQgPSB0aGVuQ2FzZS0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBaRXh0MzIsIE9yaWdpbigpLAotICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksIGFyZ3VtZW50KSk7Ci0gICAgVXBzaWxvblZh
bHVlKiB0aGVuUmVzdWx0ID0gdGhlbkNhc2UtPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCB0cnVuY2F0ZWQpOwotICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFs
dWUocHJvYywgSnVtcCwgT3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayh0YWlsKSk7Ci0KLSAgICBV
cHNpbG9uVmFsdWUqIGVsc2VSZXN1bHQgPSBlbHNlQ2FzZS0+YXBwZW5kTmV3PFVwc2lsb25WYWx1
ZT4ocHJvYywgT3JpZ2luKCksIGFyZ3VtZW50KTsKLSAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKHByb2MsIEp1bXAsIE9yaWdpbigpLCBGcmVxdWVudGVkQmxvY2sodGFpbCkpOwot
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDEwMDsgKytpKSB7Ci0gICAgICAgIFBhdGNo
cG9pbnRWYWx1ZSogcHJldmVudFRhaWxEdXBsaWNhdGlvbiA9IHRhaWwtPmFwcGVuZE5ldzxQYXRj
aHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKLSAgICAgICAgcHJldmVudFRhaWxE
dXBsaWNhdGlvbi0+Y2xvYmJlckxhdGUoY2xvYmJlclNldCk7Ci0gICAgICAgIHByZXZlbnRUYWls
RHVwbGljYXRpb24tPnNldEdlbmVyYXRvcihbXSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3RhY2tt
YXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKLSAgICB9Ci0KLSAgICBQYXRjaHBvaW50VmFsdWUq
IGZvcmNlU3BpbGwgPSB0YWlsLT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBWb2lk
LCBPcmlnaW4oKSk7Ci0gICAgZm9yY2VTcGlsbC0+Y2xvYmJlckxhdGUoY2xvYmJlclNldCk7Ci0g
ICAgZm9yY2VTcGlsbC0+c2V0R2VuZXJhdG9yKAotICAgICAgICBbJl0gKENDYWxsSGVscGVycyYg
aml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7Ci0gICAgICAgICAgICBBbGxv
d01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAgICAgICAg
ICBjbG9iYmVyU2V0LmZvckVhY2goWyZdIChSZWcgcmVnKSB7Ci0gICAgICAgICAgICAgICAgaml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoMHhmZmZmZmZmZmZmZmZmZmZmKSwgcmVn
LmdwcigpKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLQotICAgIFZhbHVlKiBwaGkg
PSB0YWlsLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFBoaSwgSW50NjQsIE9yaWdpbigpKTsKLSAg
ICB0aGVuUmVzdWx0LT5zZXRQaGkocGhpKTsKLSAgICBlbHNlUmVzdWx0LT5zZXRQaGkocGhpKTsK
LSAgICB0YWlsLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwg
cGhpKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotICAgIENIRUNLKGlu
dm9rZTx1aW50NjRfdD4oKmNvZGUsIDEsIDB4ZmZmZmZmZmYwMDAwMDAwMCkgPT0gMCk7Ci0gICAg
Q0hFQ0soaW52b2tlPHVpbnQ2NF90PigqY29kZSwgMCwgMHhmZmZmZmZmZjAwMDAwMDAwKSA9PSAw
eGZmZmZmZmZmMDAwMDAwMDApOwotCi0gICAgLy8gQSBzZWNvbmQgdGltZSBzaW5jZSB0aGUgcHJl
dmlvdXMgcnVuIGlzIHN0aWxsIG9uIHRoZSBzdGFjay4KLSAgICBDSEVDSyhpbnZva2U8dWludDY0
X3Q+KCpjb2RlLCAxLCAweGZmZmZmZmZmMDAwMDAwMDApID09IDApOwotCi19Ci0KLXZvaWQgdGVz
dExhdGVSZWdpc3RlcigpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0KLSAgICBpZiAoIXByb2Mu
b3B0TGV2ZWwoKSkgewotICAgICAgICAvLyBGSVhNRTogTWFrZSBPMCBoYW5kbGUgc3VjaCBzaXR1
YXRpb25zOgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTk0NjMzCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgLy8gVGhpcyB3b3JrcyBieSBtYWtpbmcgYWxsIGJ1
dCAxIHJlZ2lzdGVyIGJlIGlucHV0IHRvIHRoZSBmaXJzdCBwYXRjaHBvaW50IGFzIExhdGVSZWdp
c3Rlci4KLSAgICAvLyBUaGUgb3RoZXIgMSByZWdpc3RlciBpcyBqdXN0IGEgcmVndWxhciBSZWdp
c3RlciBpbnB1dC4gV2UgYXNzZXJ0IG91ciByZXN1bHQgaXMgdGhlIHJlZ3VsYXIKLSAgICAvLyBy
ZWdpc3RlciBpbnB1dC4gVGhlcmUgd291bGQgYmUgbm8gb3RoZXIgd2F5IGZvciB0aGUgcmVnaXN0
ZXIgYWxsb2NhdG9yIHRvIGFycmFuZ2UgdGhpbmdzCi0gICAgLy8gYmVjYXVzZSBMYXRlUmVnaXN0
ZXIgaW50ZXJmZXJlcyB3aXRoIHRoZSByZXN1bHQuCi0gICAgLy8gVGhlbiwgdGhlIHNlY29uZCBw
YXRjaHBvaW50IHRha2VzIHRoZSByZXN1bHQgb2YgdGhlIGZpcnN0IGFzIGFuIGFyZ3VtZW50IGFu
ZCBhc2tzIGZvcgotICAgIC8vIGl0IGluIGEgcmVnaXN0ZXIgdGhhdCB3YXMgYSBMYXRlUmVnaXN0
ZXIuIFRoaXMgaXMgdG8gaW5jZW50aXZpemUgdGhlIHJlZ2lzdGVyIGFsbG9jYXRvcgotICAgIC8v
IHRvIHVzZSB0aGF0IExhdGVSZWdpc3RlciBhcyB0aGUgcmVzdWx0IGZvciB0aGUgZmlyc3QgcGF0
Y2hwb2ludC4gQnV0IG9mIGNvdXJzZSBpdCBjYW4gbm90IGRvIHRoYXQuCi0gICAgLy8gU28gaXQg
bXVzdCBpc3N1ZSBhIG1vdiBhZnRlciB0aGUgZmlyc3QgcGF0Y2hwb2ludCBmcm9tIHRoZSBmaXJz
dCdzIHJlc3VsdCBpbnRvIHRoZSBzZWNvbmQncyBpbnB1dC4KLQotICAgIFJlZ2lzdGVyU2V0IHJl
Z3MgPSBSZWdpc3RlclNldDo6YWxsR1BScygpOwotICAgIHJlZ3MuZXhjbHVkZShSZWdpc3RlclNl
dDo6c3RhY2tSZWdpc3RlcnMoKSk7Ci0gICAgcmVncy5leGNsdWRlKFJlZ2lzdGVyU2V0OjpyZXNl
cnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOwotICAgIFZlY3RvcjxWYWx1ZSo+IGxhdGVVc2VBcmdz
OwotICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7Ci0gICAgZm9yIChHUFJSZWcgcmVnID0gQ0NhbGxI
ZWxwZXJzOjpmaXJzdFJlZ2lzdGVyKCk7IHJlZyA8PSBDQ2FsbEhlbHBlcnM6Omxhc3RSZWdpc3Rl
cigpOyByZWcgPSBDQ2FsbEhlbHBlcnM6Om5leHRSZWdpc3RlcihyZWcpKSB7Ci0gICAgICAgIGlm
ICghcmVncy5nZXQocmVnKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICByZXN1bHQr
KzsKLSAgICAgICAgaWYgKHJlZyA9PSBHUFJJbmZvOjpyZWdUMCkKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICBWYWx1ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgMSk7Ci0gICAgICAgIGxhdGVVc2VBcmdzLmFwcGVuZCh2YWx1ZSk7
Ci0gICAgfQotICAgIFZhbHVlKiByZWd1bGFyVXNlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpOwotICAgIFBhdGNocG9pbnRWYWx1ZSogZmlyc3RQYXRj
aHBvaW50ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgSW50NjQsIE9y
aWdpbigpKTsKLSAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGkgPSAwOwotICAgICAgICBmb3IgKEdQ
UlJlZyByZWcgPSBDQ2FsbEhlbHBlcnM6OmZpcnN0UmVnaXN0ZXIoKTsgcmVnIDw9IENDYWxsSGVs
cGVyczo6bGFzdFJlZ2lzdGVyKCk7IHJlZyA9IENDYWxsSGVscGVyczo6bmV4dFJlZ2lzdGVyKHJl
ZykpIHsKLSAgICAgICAgICAgIGlmICghcmVncy5nZXQocmVnKSkKLSAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIGlmIChyZWcgPT0gR1BSSW5mbzo6cmVnVDApCi0gICAgICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBWYWx1ZSogdmFsdWUgPSBsYXRlVXNlQXJn
c1tpKytdOwotICAgICAgICAgICAgZmlyc3RQYXRjaHBvaW50LT5hcHBlbmQodmFsdWUsIFZhbHVl
UmVwOjpsYXRlUmVnKHJlZykpOwotICAgICAgICB9Ci0gICAgICAgIGZpcnN0UGF0Y2hwb2ludC0+
YXBwZW5kKHJlZ3VsYXJVc2UsIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6cmVnVDApKTsKLSAgICB9
Ci0KLSAgICBmaXJzdFBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKLSAgICAgICAgWyZdIChDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsK
LSAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2go
aml0KTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtc1swXS5ncHIoKSA9PSBHUFJJbmZvOjpyZWdU
MCk7Ci0gICAgICAgICAgICAvLyBOb3RlIHRoYXQgcmVnVDAgc2hvdWxkIGFsc28gc3RhcnQgb2Zm
IGFzIDEsIHNvIHdlJ3JlIGltcGxpY2l0bHkgc3RhcnRpbmcgb3VyIGFkZCB3aXRoIDEsIHdoaWNo
IGlzIGFsc28gYW4gYXJndW1lbnQuCi0gICAgICAgICAgICB1bnNpZ25lZCBza2lwcGVkID0gMDsK
LSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBwYXJhbXMuc2l6ZSgpOyBpKysp
IHsKLSAgICAgICAgICAgICAgICBpZiAocGFyYW1zW2ldLmdwcigpID09IHBhcmFtc1swXS5ncHIo
KSkgewotICAgICAgICAgICAgICAgICAgICBza2lwcGVkID0gaTsKLSAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGppdC5hZGQ2
NChwYXJhbXNbaV0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBDSEVDSyghIXNraXBwZWQpOwotICAgICAgICB9KTsKLQotICAgIFBhdGNocG9pbnRW
YWx1ZSogc2Vjb25kUGF0Y2hwb2ludCA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+
KHByb2MsIEludDY0LCBPcmlnaW4oKSk7Ci0gICAgc2Vjb25kUGF0Y2hwb2ludC0+YXBwZW5kKGZp
cnN0UGF0Y2hwb2ludCwgVmFsdWVSZXA6OnJlZyhHUFJJbmZvOjpyZWdUMSkpOwotICAgIHNlY29u
ZFBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKLSAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAg
IEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKLSAgICAg
ICAgICAgIENIRUNLKHBhcmFtc1sxXS5ncHIoKSA9PSBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgICAg
ICAgICBqaXQubm9wKCk7Ci0gICAgICAgICAgICBqaXQubm9wKCk7Ci0gICAgICAgICAgICBqaXQu
bW92ZShwYXJhbXNbMV0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7Ci0gICAgICAgICAgICBqaXQu
bm9wKCk7Ci0gICAgICAgICAgICBqaXQubm9wKCk7Ci0gICAgICAgIH0pOwotICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBzZWNvbmRQYXRjaHBv
aW50KTsKLSAgICAKLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBDSEVD
SyhpbnZva2U8dWludDY0X3Q+KCpjb2RlKSA9PSByZXN1bHQpOwotfQotCi12b2lkIGludGVycHJl
dGVyUHJpbnQoVmVjdG9yPGludHB0cl90Piogc3RyZWFtLCBpbnRwdHJfdCB2YWx1ZSkKLXsKLSAg
ICBzdHJlYW0tPmFwcGVuZCh2YWx1ZSk7Ci19Ci0KLXZvaWQgdGVzdEludGVycHJldGVyKCkKLXsK
LSAgICAvLyBUaGlzIGltcGxlbWVudHMgYSBzaWxseSBpbnRlcnByZXRlciB0byB0ZXN0IGJ1aWxk
aW5nIGN1c3RvbSBzd2l0Y2ggc3RhdGVtZW50cyB1c2luZwotICAgIC8vIFBhdGNocG9pbnQuCi0g
ICAgCi0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgCi0gICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBkaXNwYXRjaCA9IHByb2MuYWRkQmxvY2so
KTsKLSAgICBCYXNpY0Jsb2NrKiBhZGRUb0RhdGFQb2ludGVyID0gcHJvYy5hZGRCbG9jaygpOwot
ICAgIEJhc2ljQmxvY2sqIGFkZFRvQ29kZVBvaW50ZXIgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAg
QmFzaWNCbG9jayogYWRkVG9Db2RlUG9pbnRlclRha2VuID0gcHJvYy5hZGRCbG9jaygpOwotICAg
IEJhc2ljQmxvY2sqIGFkZFRvQ29kZVBvaW50ZXJOb3RUYWtlbiA9IHByb2MuYWRkQmxvY2soKTsK
LSAgICBCYXNpY0Jsb2NrKiBhZGRUb0RhdGEgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNC
bG9jayogcHJpbnQgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogc3RvcCA9IHBy
b2MuYWRkQmxvY2soKTsKLSAgICAKLSAgICBWYXJpYWJsZSogZGF0YVBvaW50ZXIgPSBwcm9jLmFk
ZFZhcmlhYmxlKHBvaW50ZXJUeXBlKCkpOwotICAgIFZhcmlhYmxlKiBjb2RlUG9pbnRlciA9IHBy
b2MuYWRkVmFyaWFibGUocG9pbnRlclR5cGUoKSk7Ci0gICAgCi0gICAgcm9vdC0+YXBwZW5kTmV3
PFZhcmlhYmxlVmFsdWU+KAotICAgICAgICBwcm9jLCBTZXQsIE9yaWdpbigpLCBkYXRhUG9pbnRl
ciwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICByb290LT5hcHBlbmROZXc8VmFyaWFi
bGVWYWx1ZT4oCi0gICAgICAgIHByb2MsIFNldCwgT3JpZ2luKCksIGNvZGVQb2ludGVyLAotICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSkpOwotICAgIFZhbHVlKiBjb250ZXh0ID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjIpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4o
KSwgRnJlcXVlbnRlZEJsb2NrKGRpc3BhdGNoKSk7Ci0KLSAgICAvLyBOT1RFOiBJdCdzIHRvdGFs
bHkgdmFsaWQgZm9yIHRoaXMgcGF0Y2hwb2ludCB0byBiZSB0YWlsLWR1cGxpY2F0ZWQuCi0gICAg
VmFsdWUqIGNvZGVQb2ludGVyVmFsdWUgPQotICAgICAgICBkaXNwYXRjaC0+YXBwZW5kTmV3PFZh
cmlhYmxlVmFsdWU+KHByb2MsIEIzOjpHZXQsIE9yaWdpbigpLCBjb2RlUG9pbnRlcik7Ci0gICAg
VmFsdWUqIG9wY29kZSA9IGRpc3BhdGNoLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAg
ICBwcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSwgY29kZVBvaW50ZXJWYWx1ZSk7
Ci0gICAgUGF0Y2hwb2ludFZhbHVlKiBwb2x5SnVtcCA9IGRpc3BhdGNoLT5hcHBlbmROZXc8UGF0
Y2hwb2ludFZhbHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7Ci0gICAgcG9seUp1bXAtPmVmZmVj
dHMgPSBFZmZlY3RzKCk7Ci0gICAgcG9seUp1bXAtPmVmZmVjdHMudGVybWluYWwgPSB0cnVlOwot
ICAgIHBvbHlKdW1wLT5hcHBlbmRTb21lUmVnaXN0ZXIob3Bjb2RlKTsKLSAgICBwb2x5SnVtcC0+
Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwotICAgIHBvbHlK
dW1wLT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAyOwotICAgIGRpc3BhdGNoLT5hcHBlbmRTdWNj
ZXNzb3IoRnJlcXVlbnRlZEJsb2NrKGFkZFRvRGF0YVBvaW50ZXIpKTsKLSAgICBkaXNwYXRjaC0+
YXBwZW5kU3VjY2Vzc29yKEZyZXF1ZW50ZWRCbG9jayhhZGRUb0NvZGVQb2ludGVyKSk7Ci0gICAg
ZGlzcGF0Y2gtPmFwcGVuZFN1Y2Nlc3NvcihGcmVxdWVudGVkQmxvY2soYWRkVG9EYXRhKSk7Ci0g
ICAgZGlzcGF0Y2gtPmFwcGVuZFN1Y2Nlc3NvcihGcmVxdWVudGVkQmxvY2socHJpbnQpKTsKLSAg
ICBkaXNwYXRjaC0+YXBwZW5kU3VjY2Vzc29yKEZyZXF1ZW50ZWRCbG9jayhzdG9wKSk7Ci0gICAg
Ci0gICAgLy8gT3VyICJvcGNvZGVzIi4KLSAgICBzdGF0aWMgY29uc3QgaW50cHRyX3QgQWRkRFAg
PSAwOwotICAgIHN0YXRpYyBjb25zdCBpbnRwdHJfdCBBZGRDUCA9IDE7Ci0gICAgc3RhdGljIGNv
bnN0IGludHB0cl90IEFkZCA9IDI7Ci0gICAgc3RhdGljIGNvbnN0IGludHB0cl90IFByaW50ID0g
MzsKLSAgICBzdGF0aWMgY29uc3QgaW50cHRyX3QgU3RvcCA9IDQ7Ci0gICAgCi0gICAgcG9seUp1
bXAtPnNldEdlbmVyYXRvcigKLSAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3Qg
U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAgIEFsbG93TWFj
cm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKLSAgICAgICAgICAgIFZl
Y3RvcjxCb3g8Q0NhbGxIZWxwZXJzOjpMYWJlbD4+IGxhYmVscyA9IHBhcmFtcy5zdWNjZXNzb3JM
YWJlbHMoKTsKLQotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEIzQ29tcGlsYXRp
b25QdHJUYWc+KiBqdW1wVGFibGUgPSBiaXR3aXNlX2Nhc3Q8TWFjcm9Bc3NlbWJsZXJDb2RlUHRy
PEIzQ29tcGlsYXRpb25QdHJUYWc+Kj4oCi0gICAgICAgICAgICAgICAgcGFyYW1zLnByb2MoKS5h
ZGREYXRhU2VjdGlvbihzaXplb2YoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEIzQ29tcGlsYXRpb25Q
dHJUYWc+KSAqIGxhYmVscy5zaXplKCkpKTsKLQotICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2gg
PSBwYXJhbXMuZ3BTY3JhdGNoKDApOwotCi0gICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoanVtcFRhYmxlKSwgc2NyYXRjaCk7Ci0gICAgICAgICAgICBqaXQu
bG9hZDY0KENDYWxsSGVscGVyczo6QmFzZUluZGV4KHNjcmF0Y2gsIHBhcmFtc1swXS5ncHIoKSwg
Q0NhbGxIZWxwZXJzOjp0aW1lc1B0cigpKSwgc2NyYXRjaCk7Ci0gICAgICAgICAgICBqaXQuanVt
cChzY3JhdGNoLCBCM0NvbXBpbGF0aW9uUHRyVGFnKTsKLQotICAgICAgICAgICAgaml0LmFkZExp
bmtUYXNrKAotICAgICAgICAgICAgICAgIFsmLCBqdW1wVGFibGUsIGxhYmVsc10gKExpbmtCdWZm
ZXImIGxpbmtCdWZmZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
bGFiZWxzLnNpemUoKTsgaS0tOykKLSAgICAgICAgICAgICAgICAgICAgICAgIGp1bXBUYWJsZVtp
XSA9IGxpbmtCdWZmZXIubG9jYXRpb25PZjxCM0NvbXBpbGF0aW9uUHRyVGFnPigqbGFiZWxzW2ld
KTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0gICAgCi0gICAgLy8gQWRkRFAg
PG9wZXJhbmQ+OiBhZGRzIDxvcGVyYW5kPiB0byBEUC4KLSAgICBjb2RlUG9pbnRlclZhbHVlID0K
LSAgICAgICAgYWRkVG9EYXRhUG9pbnRlci0+YXBwZW5kTmV3PFZhcmlhYmxlVmFsdWU+KHByb2Ms
IEIzOjpHZXQsIE9yaWdpbigpLCBjb2RlUG9pbnRlcik7Ci0gICAgYWRkVG9EYXRhUG9pbnRlci0+
YXBwZW5kTmV3PFZhcmlhYmxlVmFsdWU+KAotICAgICAgICBwcm9jLCBTZXQsIE9yaWdpbigpLCBk
YXRhUG9pbnRlciwKLSAgICAgICAgYWRkVG9EYXRhUG9pbnRlci0+YXBwZW5kTmV3PFZhbHVlPigK
LSAgICAgICAgICAgIHByb2MsIEIzOjpBZGQsIE9yaWdpbigpLAotICAgICAgICAgICAgYWRkVG9E
YXRhUG9pbnRlci0+YXBwZW5kTmV3PFZhcmlhYmxlVmFsdWU+KHByb2MsIEIzOjpHZXQsIE9yaWdp
bigpLCBkYXRhUG9pbnRlciksCi0gICAgICAgICAgICBhZGRUb0RhdGFQb2ludGVyLT5hcHBlbmRO
ZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIE11bCwgT3JpZ2luKCksCi0gICAgICAg
ICAgICAgICAgYWRkVG9EYXRhUG9pbnRlci0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAg
ICAgICAgICAgICAgICAgcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCksIGNvZGVQ
b2ludGVyVmFsdWUsIHN0YXRpY19jYXN0PGludDMyX3Q+KHNpemVvZihpbnRwdHJfdCkpKSwKLSAg
ICAgICAgICAgICAgICBhZGRUb0RhdGFQb2ludGVyLT5hcHBlbmRJbnRDb25zdGFudCgKLSAgICAg
ICAgICAgICAgICAgICAgcHJvYywgT3JpZ2luKCksIHBvaW50ZXJUeXBlKCksIHNpemVvZihpbnRw
dHJfdCkpKSkpOwotICAgIGFkZFRvRGF0YVBvaW50ZXItPmFwcGVuZE5ldzxWYXJpYWJsZVZhbHVl
PigKLSAgICAgICAgcHJvYywgU2V0LCBPcmlnaW4oKSwgY29kZVBvaW50ZXIsCi0gICAgICAgIGFk
ZFRvRGF0YVBvaW50ZXItPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBCMzo6
QWRkLCBPcmlnaW4oKSwgY29kZVBvaW50ZXJWYWx1ZSwKLSAgICAgICAgICAgIGFkZFRvRGF0YVBv
aW50ZXItPmFwcGVuZEludENvbnN0YW50KAotICAgICAgICAgICAgICAgIHByb2MsIE9yaWdpbigp
LCBwb2ludGVyVHlwZSgpLCBzaXplb2YoaW50cHRyX3QpICogMikpKTsKLSAgICBhZGRUb0RhdGFQ
b2ludGVyLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgSnVtcCwgT3JpZ2luKCksIEZyZXF1
ZW50ZWRCbG9jayhkaXNwYXRjaCkpOwotICAgIAotICAgIC8vIEFkZENQIDxvcGVyYW5kPjogYWRk
cyA8b3BlcmFuZD4gdG8gQ1AgaWYgdGhlIGN1cnJlbnQgdmFsdWUgYXQgRFAgaXMgbm9uLXplcm8s
IG90aGVyd2lzZQotICAgIC8vIGZhbGxzIHRocm91Z2ggbm9ybWFsbHkuCi0gICAgY29kZVBvaW50
ZXJWYWx1ZSA9Ci0gICAgICAgIGFkZFRvQ29kZVBvaW50ZXItPmFwcGVuZE5ldzxWYXJpYWJsZVZh
bHVlPihwcm9jLCBCMzo6R2V0LCBPcmlnaW4oKSwgY29kZVBvaW50ZXIpOwotICAgIFZhbHVlKiBk
YXRhUG9pbnRlclZhbHVlID0KLSAgICAgICAgYWRkVG9Db2RlUG9pbnRlci0+YXBwZW5kTmV3PFZh
cmlhYmxlVmFsdWU+KHByb2MsIEIzOjpHZXQsIE9yaWdpbigpLCBkYXRhUG9pbnRlcik7Ci0gICAg
YWRkVG9Db2RlUG9pbnRlci0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBC
cmFuY2gsIE9yaWdpbigpLAotICAgICAgICBhZGRUb0NvZGVQb2ludGVyLT5hcHBlbmROZXc8TWVt
b3J5VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2lu
KCksIGRhdGFQb2ludGVyVmFsdWUpLAotICAgICAgICBGcmVxdWVudGVkQmxvY2soYWRkVG9Db2Rl
UG9pbnRlclRha2VuKSwgRnJlcXVlbnRlZEJsb2NrKGFkZFRvQ29kZVBvaW50ZXJOb3RUYWtlbikp
OwotICAgIGFkZFRvQ29kZVBvaW50ZXJUYWtlbi0+YXBwZW5kTmV3PFZhcmlhYmxlVmFsdWU+KAot
ICAgICAgICBwcm9jLCBTZXQsIE9yaWdpbigpLCBjb2RlUG9pbnRlciwKLSAgICAgICAgYWRkVG9D
b2RlUG9pbnRlclRha2VuLT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQjM6
OkFkZCwgT3JpZ2luKCksIGNvZGVQb2ludGVyVmFsdWUsCi0gICAgICAgICAgICBhZGRUb0NvZGVQ
b2ludGVyVGFrZW4tPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgTXVs
LCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICBhZGRUb0NvZGVQb2ludGVyVGFrZW4tPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICAgICAgICAgIHByb2MsIExvYWQsIHBvaW50
ZXJUeXBlKCksIE9yaWdpbigpLCBjb2RlUG9pbnRlclZhbHVlLCBzdGF0aWNfY2FzdDxpbnQzMl90
PihzaXplb2YoaW50cHRyX3QpKSksCi0gICAgICAgICAgICAgICAgYWRkVG9Db2RlUG9pbnRlclRh
a2VuLT5hcHBlbmRJbnRDb25zdGFudCgKLSAgICAgICAgICAgICAgICAgICAgcHJvYywgT3JpZ2lu
KCksIHBvaW50ZXJUeXBlKCksIHNpemVvZihpbnRwdHJfdCkpKSkpOwotICAgIGFkZFRvQ29kZVBv
aW50ZXJUYWtlbi0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIEp1bXAsIE9yaWdpbigpLCBG
cmVxdWVudGVkQmxvY2soZGlzcGF0Y2gpKTsKLSAgICBhZGRUb0NvZGVQb2ludGVyTm90VGFrZW4t
PmFwcGVuZE5ldzxWYXJpYWJsZVZhbHVlPigKLSAgICAgICAgcHJvYywgU2V0LCBPcmlnaW4oKSwg
Y29kZVBvaW50ZXIsCi0gICAgICAgIGFkZFRvQ29kZVBvaW50ZXJOb3RUYWtlbi0+YXBwZW5kTmV3
PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEIzOjpBZGQsIE9yaWdpbigpLCBjb2RlUG9pbnRl
clZhbHVlLAotICAgICAgICAgICAgYWRkVG9Db2RlUG9pbnRlck5vdFRha2VuLT5hcHBlbmRJbnRD
b25zdGFudCgKLSAgICAgICAgICAgICAgICBwcm9jLCBPcmlnaW4oKSwgcG9pbnRlclR5cGUoKSwg
c2l6ZW9mKGludHB0cl90KSAqIDIpKSk7Ci0gICAgYWRkVG9Db2RlUG9pbnRlck5vdFRha2VuLT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIEp1bXAsIE9yaWdpbigpLCBGcmVx
dWVudGVkQmxvY2soZGlzcGF0Y2gpKTsKLQotICAgIC8vIEFkZCA8b3BlcmFuZD46IGFkZHMgPG9w
ZXJhbmQ+IHRvIHRoZSBzbG90IHBvaW50ZWQgdG8gYnkgRFAuCi0gICAgY29kZVBvaW50ZXJWYWx1
ZSA9IGFkZFRvRGF0YS0+YXBwZW5kTmV3PFZhcmlhYmxlVmFsdWU+KHByb2MsIEIzOjpHZXQsIE9y
aWdpbigpLCBjb2RlUG9pbnRlcik7Ci0gICAgZGF0YVBvaW50ZXJWYWx1ZSA9IGFkZFRvRGF0YS0+
YXBwZW5kTmV3PFZhcmlhYmxlVmFsdWU+KHByb2MsIEIzOjpHZXQsIE9yaWdpbigpLCBkYXRhUG9p
bnRlcik7Ci0gICAgYWRkVG9EYXRhLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICBw
cm9jLCBTdG9yZSwgT3JpZ2luKCksCi0gICAgICAgIGFkZFRvRGF0YS0+YXBwZW5kTmV3PFZhbHVl
PigKLSAgICAgICAgICAgIHByb2MsIEIzOjpBZGQsIE9yaWdpbigpLAotICAgICAgICAgICAgYWRk
VG9EYXRhLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIExv
YWQsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigpLCBkYXRhUG9pbnRlclZhbHVlKSwKLSAgICAgICAg
ICAgIGFkZFRvRGF0YS0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAgICAgICAgICBw
cm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSwgY29kZVBvaW50ZXJWYWx1ZSwgc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oc2l6ZW9mKGludHB0cl90KSkpKSwKLSAgICAgICAgZGF0YVBvaW50
ZXJWYWx1ZSk7Ci0gICAgYWRkVG9EYXRhLT5hcHBlbmROZXc8VmFyaWFibGVWYWx1ZT4oCi0gICAg
ICAgIHByb2MsIFNldCwgT3JpZ2luKCksIGNvZGVQb2ludGVyLAotICAgICAgICBhZGRUb0RhdGEt
PmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBCMzo6QWRkLCBPcmlnaW4oKSwg
Y29kZVBvaW50ZXJWYWx1ZSwKLSAgICAgICAgICAgIGFkZFRvRGF0YS0+YXBwZW5kSW50Q29uc3Rh
bnQocHJvYywgT3JpZ2luKCksIHBvaW50ZXJUeXBlKCksIHNpemVvZihpbnRwdHJfdCkgKiAyKSkp
OwotICAgIGFkZFRvRGF0YS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIEp1bXAsIE9yaWdp
bigpLCBGcmVxdWVudGVkQmxvY2soZGlzcGF0Y2gpKTsKLSAgICAKLSAgICAvLyBQcmludDogInBy
aW50cyIgdGhlIHZhbHVlIHBvaW50ZWQgdG8gYnkgRFAuIFdoYXQgdGhpcyBhY3R1YWxseSBtZWFu
cyBpcyB0aGF0IHRoZSB2YWx1ZSBpcwotICAgIC8vIGFwcGVuZGVkIHRvIHRoZSBzdHJlYW0gdmVj
dG9yIGJ5IHRoZSBpbnRlcnByZXRlclByaW50IGZ1bmN0aW9uLgotICAgIGNvZGVQb2ludGVyVmFs
dWUgPSBwcmludC0+YXBwZW5kTmV3PFZhcmlhYmxlVmFsdWU+KHByb2MsIEIzOjpHZXQsIE9yaWdp
bigpLCBjb2RlUG9pbnRlcik7Ci0gICAgZGF0YVBvaW50ZXJWYWx1ZSA9IHByaW50LT5hcHBlbmRO
ZXc8VmFyaWFibGVWYWx1ZT4ocHJvYywgQjM6OkdldCwgT3JpZ2luKCksIGRhdGFQb2ludGVyKTsK
LSAgICBwcmludC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAotICAgICAgICBwcm9jLCBWb2lkLCBP
cmlnaW4oKSwKLSAgICAgICAgcHJpbnQtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPigKLSAgICAg
ICAgICAgIHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KGludGVycHJldGVy
UHJpbnQsIEIzQ0NhbGxQdHJUYWcpKSwKLSAgICAgICAgY29udGV4dCwKLSAgICAgICAgcHJpbnQt
PmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2lu
KCksIGRhdGFQb2ludGVyVmFsdWUpKTsKLSAgICBwcmludC0+YXBwZW5kTmV3PFZhcmlhYmxlVmFs
dWU+KAotICAgICAgICBwcm9jLCBTZXQsIE9yaWdpbigpLCBjb2RlUG9pbnRlciwKLSAgICAgICAg
cHJpbnQtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBCMzo6QWRkLCBPcmln
aW4oKSwgY29kZVBvaW50ZXJWYWx1ZSwKLSAgICAgICAgICAgIHByaW50LT5hcHBlbmRJbnRDb25z
dGFudChwcm9jLCBPcmlnaW4oKSwgcG9pbnRlclR5cGUoKSwgc2l6ZW9mKGludHB0cl90KSkpKTsK
LSAgICBwcmludC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIEp1bXAsIE9yaWdpbigpLCBG
cmVxdWVudGVkQmxvY2soZGlzcGF0Y2gpKTsKLSAgICAKLSAgICAvLyBTdG9wOiByZXR1cm5zLgot
ICAgIHN0b3AtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKLSAgICAgICAgc3RvcC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCks
IHBvaW50ZXJUeXBlKCksIDApKTsKLSAgICAKLSAgICBhdXRvIGludGVycHJldGVyID0gY29tcGls
ZVByb2MocHJvYyk7Ci0gICAgCi0gICAgVmVjdG9yPHVpbnRwdHJfdD4gZGF0YTsKLSAgICBWZWN0
b3I8dWludHB0cl90PiBjb2RlOwotICAgIFZlY3Rvcjx1aW50cHRyX3Q+IHN0cmVhbTsKLSAgICAK
LSAgICBkYXRhLmFwcGVuZCgxKTsKLSAgICBkYXRhLmFwcGVuZCgwKTsKLSAgICAKLSAgICBpZiAo
c2hvdWxkQmVWZXJib3NlKCkpCi0gICAgICAgIGRhdGFMb2coImRhdGEgPSAiLCBsaXN0RHVtcChk
YXRhKSwgIlxuIik7Ci0gICAgCi0gICAgLy8gV2UnbGwgd3JpdGUgYSBwcm9ncmFtIHRoYXQgcHJp
bnRzIHRoZSBudW1iZXJzIDEuLjEwMC4KLSAgICAvLyBXZSBleHBlY3QgRFAgdG8gcG9pbnQgYXQg
IzAuCi0gICAgY29kZS5hcHBlbmQoQWRkQ1ApOwotICAgIGNvZGUuYXBwZW5kKDYpOyAvLyBnbyB0
byBsb29wIGJvZHkKLSAgICAKLSAgICAvLyBMb29wIHJlLWVudHJ5OgotICAgIC8vIFdlIGV4cGVj
dCBEUCB0byBwb2ludCBhdCAjMSBhbmQgZm9yICMxIHRvIGJlIG9mZnNldCBieSAtMTAwLgotICAg
IGNvZGUuYXBwZW5kKEFkZCk7Ci0gICAgY29kZS5hcHBlbmQoMTAwKTsKLSAgICAKLSAgICBjb2Rl
LmFwcGVuZChBZGREUCk7Ci0gICAgY29kZS5hcHBlbmQoLTEpOwotICAgIAotICAgIC8vIExvb3Ag
aGVhZGVyOgotICAgIC8vIFdlIGV4cGVjdCBEUCB0byBwb2ludCBhdCAjMC4KLSAgICBjb2RlLmFw
cGVuZChBZGREUCk7Ci0gICAgY29kZS5hcHBlbmQoMSk7Ci0gICAgCi0gICAgY29kZS5hcHBlbmQo
QWRkKTsKLSAgICBjb2RlLmFwcGVuZCgxKTsKLSAgICAKLSAgICBjb2RlLmFwcGVuZChQcmludCk7
Ci0gICAgCi0gICAgY29kZS5hcHBlbmQoQWRkKTsKLSAgICBjb2RlLmFwcGVuZCgtMTAwKTsKLSAg
ICAKLSAgICAvLyBXZSB3YW50IHRvIHN0b3AgaWYgaXQncyB6ZXJvIGFuZCBjb250aW51ZSBpZiBp
dCdzIG5vbi16ZXJvLiBBZGRDUCB0YWtlcyB0aGUgYnJhbmNoIGlmIGl0J3MKLSAgICAvLyBub24t
emVyby4KLSAgICBjb2RlLmFwcGVuZChBZGRDUCk7Ci0gICAgY29kZS5hcHBlbmQoLTExKTsgLy8g
Z28gdG8gbG9vcCByZS1lbnRyeS4KLSAgICAKLSAgICBjb2RlLmFwcGVuZChTdG9wKTsKLSAgICAK
LSAgICBpZiAoc2hvdWxkQmVWZXJib3NlKCkpCi0gICAgICAgIGRhdGFMb2coImNvZGUgPSAiLCBs
aXN0RHVtcChjb2RlKSwgIlxuIik7Ci0gICAgCi0gICAgQ0hFQ0soIWludm9rZTxpbnRwdHJfdD4o
KmludGVycHJldGVyLCBkYXRhLmRhdGEoKSwgY29kZS5kYXRhKCksICZzdHJlYW0pKTsKLSAgICAK
LSAgICBDSEVDSyhzdHJlYW0uc2l6ZSgpID09IDEwMCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IDEwMDsgKytpKQotICAgICAgICBDSEVDSyhzdHJlYW1baV0gPT0gaSArIDEpOwotICAg
IAotICAgIGlmIChzaG91bGRCZVZlcmJvc2UoKSkKLSAgICAgICAgZGF0YUxvZygic3RyZWFtID0g
IiwgbGlzdER1bXAoc3RyZWFtKSwgIlxuIik7Ci19Ci0KLXZvaWQgdGVzdFJlZHVjZVN0cmVuZ3Ro
Q2hlY2tCb3R0b21Vc2VJbkFub3RoZXJCbG9jaygpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0g
ICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBC
YXNpY0Jsb2NrKiBvbmUgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogdHdvID0g
cHJvYy5hZGRCbG9jaygpOwotICAgIAotICAgIENoZWNrVmFsdWUqIGNoZWNrID0gb25lLT5hcHBl
bmROZXc8Q2hlY2tWYWx1ZT4oCi0gICAgICAgIHByb2MsIENoZWNrLCBPcmlnaW4oKSwgb25lLT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpOwotICAgIGNoZWNrLT5z
ZXRHZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKLSAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVn
aXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKLQotICAgICAgICAgICAgaml0Lm1vdmUoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoNjY2KSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwot
ICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7Ci0gICAgICAgICAgICBqaXQu
cmV0KCk7Ci0gICAgICAgIH0pOwotICAgIFZhbHVlKiBhcmcgPSBvbmUtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAg
ICBvbmUtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4oKSwgRnJlcXVl
bnRlZEJsb2NrKHR3bykpOwotICAgIAotICAgIGNoZWNrID0gdHdvLT5hcHBlbmROZXc8Q2hlY2tW
YWx1ZT4oCi0gICAgICAgIHByb2MsIENoZWNrQWRkLCBPcmlnaW4oKSwgYXJnLAotICAgICAgICB0
d28tPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpOwotICAgIGNo
ZWNrLT5zZXRHZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewotICAgICAgICAgICAgQ0hFQ0soISJTaG91bGQgbm90
IGV4ZWN1dGUiKTsKLSAgICAgICAgfSk7Ci0gICAgdHdvLT5hcHBlbmROZXdDb250cm9sVmFsdWUo
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2hlY2spOwotICAgIAotICAgIHByb2MucmVzZXRSZWFj
aGFiaWxpdHkoKTsKLSAgICByZWR1Y2VTdHJlbmd0aChwcm9jKTsKLX0KLQotdm9pZCB0ZXN0UmVz
ZXRSZWFjaGFiaWxpdHlEYW5nbGluZ1JlZmVyZW5jZSgpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7
Ci0gICAgCi0gICAgQmFzaWNCbG9jayogb25lID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2lj
QmxvY2sqIHR3byA9IHByb2MuYWRkQmxvY2soKTsKLSAgICAKLSAgICBVcHNpbG9uVmFsdWUqIHVw
c2lsb24gPSBvbmUtPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KAotICAgICAgICBwcm9jLCBPcmln
aW4oKSwgb25lLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDIpKTsK
LSAgICBvbmUtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBPb3BzLCBPcmlnaW4oKSk7Ci0g
ICAgCi0gICAgVmFsdWUqIHBoaSA9IHR3by0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBQaGksIElu
dDMyLCBPcmlnaW4oKSk7Ci0gICAgdXBzaWxvbi0+c2V0UGhpKHBoaSk7Ci0gICAgdHdvLT5hcHBl
bmROZXdDb250cm9sVmFsdWUocHJvYywgT29wcywgT3JpZ2luKCkpOwotICAgIAotICAgIHByb2Mu
cmVzZXRSZWFjaGFiaWxpdHkoKTsKLSAgICB2YWxpZGF0ZShwcm9jKTsKLX0KLQotdm9pZCB0ZXN0
RW50cnlTd2l0Y2hTaW1wbGUoKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIHByb2Muc2V0
TnVtRW50cnlwb2ludHMoMyk7Ci0gICAgCi0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBvbmUgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFz
aWNCbG9jayogdHdvID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIHRocmVlID0g
cHJvYy5hZGRCbG9jaygpOwotICAgIAotICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
RW50cnlTd2l0Y2gsIE9yaWdpbigpKTsKLSAgICByb290LT5hcHBlbmRTdWNjZXNzb3IoRnJlcXVl
bnRlZEJsb2NrKG9uZSkpOwotICAgIHJvb3QtPmFwcGVuZFN1Y2Nlc3NvcihGcmVxdWVudGVkQmxv
Y2sodHdvKSk7Ci0gICAgcm9vdC0+YXBwZW5kU3VjY2Vzc29yKEZyZXF1ZW50ZWRCbG9jayh0aHJl
ZSkpOwotICAgIAotICAgIG9uZS0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgb25lLT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAg
ICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIG9uZS0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAotICAg
ICAgICAgICAgb25lLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKTsKLSAgICAKLSAgICB0d28tPmFwcGVuZE5ldzxWYWx1
ZT4oCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHR3by0+YXBwZW5k
TmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIFN1YiwgT3JpZ2luKCksCi0gICAgICAgICAg
ICB0d28tPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKSwKLSAgICAgICAgICAgIHR3by0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSk7Ci0gICAgCi0g
ICAgdGhyZWUtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksCi0gICAgICAgIHRocmVlLT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywg
TXVsLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHRocmVlLT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgICAg
ICB0aHJlZS0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjEpKSk7Ci0gICAgCi0gICAgcHJlcGFyZUZvckdlbmVyYXRpb24ocHJv
Yyk7Ci0gICAgCi0gICAgQ0NhbGxIZWxwZXJzIGppdDsKLSAgICBnZW5lcmF0ZShwcm9jLCBqaXQp
OwotICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcihqaXQsIG51bGxwdHIpOwotICAgIENvZGVMb2Nh
dGlvbkxhYmVsPEIzQ29tcGlsYXRpb25QdHJUYWc+IGxhYmVsT25lID0gbGlua0J1ZmZlci5sb2Nh
dGlvbk9mPEIzQ29tcGlsYXRpb25QdHJUYWc+KHByb2MuZW50cnlwb2ludExhYmVsKDApKTsKLSAg
ICBDb2RlTG9jYXRpb25MYWJlbDxCM0NvbXBpbGF0aW9uUHRyVGFnPiBsYWJlbFR3byA9IGxpbmtC
dWZmZXIubG9jYXRpb25PZjxCM0NvbXBpbGF0aW9uUHRyVGFnPihwcm9jLmVudHJ5cG9pbnRMYWJl
bCgxKSk7Ci0gICAgQ29kZUxvY2F0aW9uTGFiZWw8QjNDb21waWxhdGlvblB0clRhZz4gbGFiZWxU
aHJlZSA9IGxpbmtCdWZmZXIubG9jYXRpb25PZjxCM0NvbXBpbGF0aW9uUHRyVGFnPihwcm9jLmVu
dHJ5cG9pbnRMYWJlbCgyKSk7Ci0KLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8QjNDb21waWxh
dGlvblB0clRhZz4gY29kZVJlZiA9IEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgQjNDb21waWxh
dGlvblB0clRhZywgInRlc3RiMyBjb21waWxhdGlvbiIpOwotCi0gICAgQ0hFQ0soaW52b2tlPGlu
dD4obGFiZWxPbmUsIDEsIDIpID09IDMpOwotICAgIENIRUNLKGludm9rZTxpbnQ+KGxhYmVsVHdv
LCAxLCAyKSA9PSAtMSk7Ci0gICAgQ0hFQ0soaW52b2tlPGludD4obGFiZWxUaHJlZSwgMSwgMikg
PT0gMik7Ci0gICAgQ0hFQ0soaW52b2tlPGludD4obGFiZWxPbmUsIC0xLCAyKSA9PSAxKTsKLSAg
ICBDSEVDSyhpbnZva2U8aW50PihsYWJlbFR3bywgLTEsIDIpID09IC0zKTsKLSAgICBDSEVDSyhp
bnZva2U8aW50PihsYWJlbFRocmVlLCAtMSwgMikgPT0gLTIpOwotfQotCi12b2lkIHRlc3RFbnRy
eVN3aXRjaE5vRW50cnlTd2l0Y2goKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIHByb2Mu
c2V0TnVtRW50cnlwb2ludHMoMyk7Ci0gICAgCi0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICAKLSAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAot
ICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpOwotICAgIAotICAgIHByZXBhcmVG
b3JHZW5lcmF0aW9uKHByb2MpOwotICAgIAotICAgIENDYWxsSGVscGVycyBqaXQ7Ci0gICAgZ2Vu
ZXJhdGUocHJvYywgaml0KTsKLSAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBudWxscHRy
KTsKLSAgICBDb2RlTG9jYXRpb25MYWJlbDxCM0NvbXBpbGF0aW9uUHRyVGFnPiBsYWJlbE9uZSA9
IGxpbmtCdWZmZXIubG9jYXRpb25PZjxCM0NvbXBpbGF0aW9uUHRyVGFnPihwcm9jLmVudHJ5cG9p
bnRMYWJlbCgwKSk7Ci0gICAgQ29kZUxvY2F0aW9uTGFiZWw8QjNDb21waWxhdGlvblB0clRhZz4g
bGFiZWxUd28gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8QjNDb21waWxhdGlvblB0clRhZz4ocHJv
Yy5lbnRyeXBvaW50TGFiZWwoMSkpOwotICAgIENvZGVMb2NhdGlvbkxhYmVsPEIzQ29tcGlsYXRp
b25QdHJUYWc+IGxhYmVsVGhyZWUgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8QjNDb21waWxhdGlv
blB0clRhZz4ocHJvYy5lbnRyeXBvaW50TGFiZWwoMikpOwotCi0gICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEIzQ29tcGlsYXRpb25QdHJUYWc+IGNvZGVSZWYgPSBGSU5BTElaRV9DT0RFKGxpbmtC
dWZmZXIsIEIzQ29tcGlsYXRpb25QdHJUYWcsICJ0ZXN0YjMgY29tcGlsYXRpb24iKTsKLQotICAg
IENIRUNLX0VRKGludm9rZTxpbnQ+KGxhYmVsT25lLCAxLCAyKSwgMyk7Ci0gICAgQ0hFQ0tfRVEo
aW52b2tlPGludD4obGFiZWxUd28sIDEsIDIpLCAzKTsKLSAgICBDSEVDS19FUShpbnZva2U8aW50
PihsYWJlbFRocmVlLCAxLCAyKSwgMyk7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxP
bmUsIC0xLCAyKSwgMSk7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUd28sIC0xLCAy
KSwgMSk7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUaHJlZSwgLTEsIDIpLCAxKTsK
LX0KLQotdm9pZCB0ZXN0RW50cnlTd2l0Y2hXaXRoQ29tbW9uUGF0aHMoKQotewotICAgIFByb2Nl
ZHVyZSBwcm9jOwotICAgIHByb2Muc2V0TnVtRW50cnlwb2ludHMoMyk7Ci0gICAgCi0gICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBvbmUgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogdHdvID0gcHJvYy5hZGRCbG9jaygpOwot
ICAgIEJhc2ljQmxvY2sqIHRocmVlID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sq
IGVuZCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICAKLSAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEVudHJ5U3dpdGNoLCBPcmlnaW4oKSk7Ci0gICAgcm9vdC0+YXBwZW5kU3VjY2Vzc29y
KEZyZXF1ZW50ZWRCbG9jayhvbmUpKTsKLSAgICByb290LT5hcHBlbmRTdWNjZXNzb3IoRnJlcXVl
bnRlZEJsb2NrKHR3bykpOwotICAgIHJvb3QtPmFwcGVuZFN1Y2Nlc3NvcihGcmVxdWVudGVkQmxv
Y2sodGhyZWUpKTsKLSAgICAKLSAgICBVcHNpbG9uVmFsdWUqIHVwc2lsb25PbmUgPSBvbmUtPmFw
cGVuZE5ldzxVcHNpbG9uVmFsdWU+KAotICAgICAgICBwcm9jLCBPcmlnaW4oKSwKLSAgICAgICAg
b25lLT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwK
LSAgICAgICAgICAgIG9uZS0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9j
LCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgb25lLT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAotICAg
ICAgICAgICAgb25lLT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIFRy
dW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICBvbmUtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpKTsKLSAgICBv
bmUtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSnVtcCwgT3JpZ2luKCkpOwotICAgIG9uZS0+c2V0
U3VjY2Vzc29ycyhGcmVxdWVudGVkQmxvY2soZW5kKSk7Ci0gICAgCi0gICAgVXBzaWxvblZhbHVl
KiB1cHNpbG9uVHdvID0gdHdvLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPigKLSAgICAgICAgcHJv
YywgT3JpZ2luKCksCi0gICAgICAgIHR3by0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAg
IHByb2MsIFN1YiwgT3JpZ2luKCksCi0gICAgICAgICAgICB0d28tPmFwcGVuZE5ldzxWYWx1ZT4o
Ci0gICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgICAg
IHR3by0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApKSwKLSAgICAgICAgICAgIHR3by0+YXBwZW5kTmV3PFZhbHVlPigKLSAg
ICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgdHdv
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMSkpKSk7Ci0gICAgdHdvLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEp1bXAsIE9y
aWdpbigpKTsKLSAgICB0d28tPnNldFN1Y2Nlc3NvcnMoRnJlcXVlbnRlZEJsb2NrKGVuZCkpOwot
ICAgIAotICAgIFVwc2lsb25WYWx1ZSogdXBzaWxvblRocmVlID0gdGhyZWUtPmFwcGVuZE5ldzxV
cHNpbG9uVmFsdWU+KAotICAgICAgICBwcm9jLCBPcmlnaW4oKSwKLSAgICAgICAgdGhyZWUtPmFw
cGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBNdWwsIE9yaWdpbigpLAotICAgICAg
ICAgICAgdGhyZWUtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgVHJ1
bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHRocmVlLT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAotICAgICAg
ICAgICAgdGhyZWUtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgVHJ1
bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHRocmVlLT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKSk7Ci0gICAg
dGhyZWUtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSnVtcCwgT3JpZ2luKCkpOwotICAgIHRocmVl
LT5zZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9jayhlbmQpKTsKLSAgICAKLSAgICBWYWx1ZSog
cGhpID0gZW5kLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFBoaSwgSW50MzIsIE9yaWdpbigpKTsK
LSAgICB1cHNpbG9uT25lLT5zZXRQaGkocGhpKTsKLSAgICB1cHNpbG9uVHdvLT5zZXRQaGkocGhp
KTsKLSAgICB1cHNpbG9uVGhyZWUtPnNldFBoaShwaGkpOwotICAgIAotICAgIGVuZC0+YXBwZW5k
TmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgZW5k
LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgY2hpbGwoTW9kKSwgT3JpZ2lu
KCksCi0gICAgICAgICAgICBwaGksIGVuZC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAg
ICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgZW5kLT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MikpKSk7Ci0gICAgCi0gICAgcHJlcGFyZUZvckdlbmVyYXRpb24ocHJvYyk7Ci0gICAgCi0gICAg
Q0NhbGxIZWxwZXJzIGppdDsKLSAgICBnZW5lcmF0ZShwcm9jLCBqaXQpOwotICAgIExpbmtCdWZm
ZXIgbGlua0J1ZmZlcihqaXQsIG51bGxwdHIpOwotICAgIENvZGVMb2NhdGlvbkxhYmVsPEIzQ29t
cGlsYXRpb25QdHJUYWc+IGxhYmVsT25lID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEIzQ29tcGls
YXRpb25QdHJUYWc+KHByb2MuZW50cnlwb2ludExhYmVsKDApKTsKLSAgICBDb2RlTG9jYXRpb25M
YWJlbDxCM0NvbXBpbGF0aW9uUHRyVGFnPiBsYWJlbFR3byA9IGxpbmtCdWZmZXIubG9jYXRpb25P
ZjxCM0NvbXBpbGF0aW9uUHRyVGFnPihwcm9jLmVudHJ5cG9pbnRMYWJlbCgxKSk7Ci0gICAgQ29k
ZUxvY2F0aW9uTGFiZWw8QjNDb21waWxhdGlvblB0clRhZz4gbGFiZWxUaHJlZSA9IGxpbmtCdWZm
ZXIubG9jYXRpb25PZjxCM0NvbXBpbGF0aW9uUHRyVGFnPihwcm9jLmVudHJ5cG9pbnRMYWJlbCgy
KSk7Ci0KLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8QjNDb21waWxhdGlvblB0clRhZz4gY29k
ZVJlZiA9IEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgQjNDb21waWxhdGlvblB0clRhZywgInRl
c3RiMyBjb21waWxhdGlvbiIpOwotCi0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxPbmUs
IDEsIDIsIDEwKSwgMyk7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUd28sIDEsIDIs
IDEwKSwgLTEpOwotICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KGxhYmVsVGhyZWUsIDEsIDIsIDEw
KSwgMik7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxPbmUsIC0xLCAyLCAxMCksIDEp
OwotICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KGxhYmVsVHdvLCAtMSwgMiwgMTApLCAtMyk7Ci0g
ICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUaHJlZSwgLTEsIDIsIDEwKSwgLTIpOwotICAg
IENIRUNLX0VRKGludm9rZTxpbnQ+KGxhYmVsT25lLCAxLCAyLCAyKSwgMSk7Ci0gICAgQ0hFQ0tf
RVEoaW52b2tlPGludD4obGFiZWxUd28sIDEsIDIsIDIpLCAtMSk7Ci0gICAgQ0hFQ0tfRVEoaW52
b2tlPGludD4obGFiZWxUaHJlZSwgMSwgMiwgMiksIDApOwotICAgIENIRUNLX0VRKGludm9rZTxp
bnQ+KGxhYmVsT25lLCAtMSwgMiwgMiksIDEpOwotICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KGxh
YmVsVHdvLCAtMSwgMiwgMiksIC0xKTsKLSAgICBDSEVDS19FUShpbnZva2U8aW50PihsYWJlbFRo
cmVlLCAtMSwgMiwgMiksIDApOwotICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KGxhYmVsT25lLCAx
LCAyLCAwKSwgMCk7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUd28sIDEsIDIsIDAp
LCAwKTsKLSAgICBDSEVDS19FUShpbnZva2U8aW50PihsYWJlbFRocmVlLCAxLCAyLCAwKSwgMCk7
Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxPbmUsIC0xLCAyLCAwKSwgMCk7Ci0gICAg
Q0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUd28sIC0xLCAyLCAwKSwgMCk7Ci0gICAgQ0hFQ0tf
RVEoaW52b2tlPGludD4obGFiZWxUaHJlZSwgLTEsIDIsIDApLCAwKTsKLX0KLQotdm9pZCB0ZXN0
RW50cnlTd2l0Y2hXaXRoQ29tbW9uUGF0aHNBbmROb25Ucml2aWFsRW50cnlwb2ludCgpCi17Ci0g
ICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgcHJvYy5zZXROdW1FbnRyeXBvaW50cygzKTsKLSAgICAK
LSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sq
IG5lZ2F0ZSA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBkaXNwYXRjaCA9IHBy
b2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBvbmUgPSBwcm9jLmFkZEJsb2NrKCk7Ci0g
ICAgQmFzaWNCbG9jayogdHdvID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIHRo
cmVlID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGVuZCA9IHByb2MuYWRkQmxv
Y2soKTsKLQotICAgIFVwc2lsb25WYWx1ZSogdXBzaWxvbkJhc2UgPSByb290LT5hcHBlbmROZXc8
VXBzaWxvblZhbHVlPigKLSAgICAgICAgcHJvYywgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCkpKTsKLSAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBw
cm9jLCBCcmFuY2gsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAot
ICAgICAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIzKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgMHhmZikpKTsKLSAgICByb290LT5zZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRC
bG9jayhuZWdhdGUpLCBGcmVxdWVudGVkQmxvY2soZGlzcGF0Y2gpKTsKLSAgICAKLSAgICBVcHNp
bG9uVmFsdWUqIHVwc2lsb25OZWdhdGUgPSBuZWdhdGUtPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+
KAotICAgICAgICBwcm9jLCBPcmlnaW4oKSwKLSAgICAgICAgbmVnYXRlLT5hcHBlbmROZXc8VmFs
dWU+KAotICAgICAgICAgICAgcHJvYywgTmVnLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIG5lZ2F0
ZS0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2lu
KCksCi0gICAgICAgICAgICAgICAgbmVnYXRlLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSk7Ci0gICAgbmVnYXRlLT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEp1bXAsIE9yaWdpbigpKTsKLSAgICBuZWdhdGUtPnNldFN1
Y2Nlc3NvcnMoRnJlcXVlbnRlZEJsb2NrKGRpc3BhdGNoKSk7Ci0gICAgCi0gICAgVmFsdWUqIGFy
ZzAgPSBkaXNwYXRjaC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBQaGksIEludDMyLCBPcmlnaW4o
KSk7Ci0gICAgdXBzaWxvbkJhc2UtPnNldFBoaShhcmcwKTsKLSAgICB1cHNpbG9uTmVnYXRlLT5z
ZXRQaGkoYXJnMCk7Ci0gICAgZGlzcGF0Y2gtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRW50cnlT
d2l0Y2gsIE9yaWdpbigpKTsKLSAgICBkaXNwYXRjaC0+YXBwZW5kU3VjY2Vzc29yKEZyZXF1ZW50
ZWRCbG9jayhvbmUpKTsKLSAgICBkaXNwYXRjaC0+YXBwZW5kU3VjY2Vzc29yKEZyZXF1ZW50ZWRC
bG9jayh0d28pKTsKLSAgICBkaXNwYXRjaC0+YXBwZW5kU3VjY2Vzc29yKEZyZXF1ZW50ZWRCbG9j
ayh0aHJlZSkpOwotICAgIAotICAgIFVwc2lsb25WYWx1ZSogdXBzaWxvbk9uZSA9IG9uZS0+YXBw
ZW5kTmV3PFVwc2lsb25WYWx1ZT4oCi0gICAgICAgIHByb2MsIE9yaWdpbigpLAotICAgICAgICBv
bmUtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAot
ICAgICAgICAgICAgYXJnMCwgb25lLT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAg
IHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICBvbmUtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkp
KTsKLSAgICBvbmUtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSnVtcCwgT3JpZ2luKCkpOwotICAg
IG9uZS0+c2V0U3VjY2Vzc29ycyhGcmVxdWVudGVkQmxvY2soZW5kKSk7Ci0gICAgCi0gICAgVXBz
aWxvblZhbHVlKiB1cHNpbG9uVHdvID0gdHdvLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPigKLSAg
ICAgICAgcHJvYywgT3JpZ2luKCksCi0gICAgICAgIHR3by0+YXBwZW5kTmV3PFZhbHVlPigKLSAg
ICAgICAgICAgIHByb2MsIFN1YiwgT3JpZ2luKCksCi0gICAgICAgICAgICBhcmcwLCB0d28tPmFw
cGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAot
ICAgICAgICAgICAgICAgIHR3by0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSkpOwotICAgIHR3by0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBKdW1wLCBPcmlnaW4oKSk7Ci0gICAgdHdvLT5zZXRTdWNjZXNzb3JzKEZyZXF1
ZW50ZWRCbG9jayhlbmQpKTsKLSAgICAKLSAgICBVcHNpbG9uVmFsdWUqIHVwc2lsb25UaHJlZSA9
IHRocmVlLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPigKLSAgICAgICAgcHJvYywgT3JpZ2luKCks
Ci0gICAgICAgIHRocmVlLT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgTXVs
LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIGFyZzAsIHRocmVlLT5hcHBlbmROZXc8VmFsdWU+KAot
ICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICB0
aHJlZS0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEpKSkpOwotICAgIHRocmVlLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEp1
bXAsIE9yaWdpbigpKTsKLSAgICB0aHJlZS0+c2V0U3VjY2Vzc29ycyhGcmVxdWVudGVkQmxvY2so
ZW5kKSk7Ci0gICAgCi0gICAgVmFsdWUqIHBoaSA9IGVuZC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBQaGksIEludDMyLCBPcmlnaW4oKSk7Ci0gICAgdXBzaWxvbk9uZS0+c2V0UGhpKHBoaSk7Ci0g
ICAgdXBzaWxvblR3by0+c2V0UGhpKHBoaSk7Ci0gICAgdXBzaWxvblRocmVlLT5zZXRQaGkocGhp
KTsKLSAgICAKLSAgICBlbmQtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCi0gICAgICAgIGVuZC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAg
IHByb2MsIGNoaWxsKE1vZCksIE9yaWdpbigpLAotICAgICAgICAgICAgcGhpLCBlbmQtPmFwcGVu
ZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAg
ICAgICAgICAgICAgIGVuZC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpKSkpOwotICAgIAotICAgIHByZXBhcmVGb3JHZW5l
cmF0aW9uKHByb2MpOwotICAgIAotICAgIENDYWxsSGVscGVycyBqaXQ7Ci0gICAgZ2VuZXJhdGUo
cHJvYywgaml0KTsKLSAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBudWxscHRyKTsKLSAg
ICBDb2RlTG9jYXRpb25MYWJlbDxCM0NvbXBpbGF0aW9uUHRyVGFnPiBsYWJlbE9uZSA9IGxpbmtC
dWZmZXIubG9jYXRpb25PZjxCM0NvbXBpbGF0aW9uUHRyVGFnPihwcm9jLmVudHJ5cG9pbnRMYWJl
bCgwKSk7Ci0gICAgQ29kZUxvY2F0aW9uTGFiZWw8QjNDb21waWxhdGlvblB0clRhZz4gbGFiZWxU
d28gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8QjNDb21waWxhdGlvblB0clRhZz4ocHJvYy5lbnRy
eXBvaW50TGFiZWwoMSkpOwotICAgIENvZGVMb2NhdGlvbkxhYmVsPEIzQ29tcGlsYXRpb25QdHJU
YWc+IGxhYmVsVGhyZWUgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8QjNDb21waWxhdGlvblB0clRh
Zz4ocHJvYy5lbnRyeXBvaW50TGFiZWwoMikpOwotCi0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEIzQ29tcGlsYXRpb25QdHJUYWc+IGNvZGVSZWYgPSBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIs
IEIzQ29tcGlsYXRpb25QdHJUYWcsICJ0ZXN0YjMgY29tcGlsYXRpb24iKTsKLQotICAgIENIRUNL
X0VRKGludm9rZTxpbnQ+KGxhYmVsT25lLCAxLCAyLCAxMCwgZmFsc2UpLCAzKTsKLSAgICBDSEVD
S19FUShpbnZva2U8aW50PihsYWJlbFR3bywgMSwgMiwgMTAsIGZhbHNlKSwgLTEpOwotICAgIENI
RUNLX0VRKGludm9rZTxpbnQ+KGxhYmVsVGhyZWUsIDEsIDIsIDEwLCBmYWxzZSksIDIpOwotICAg
IENIRUNLX0VRKGludm9rZTxpbnQ+KGxhYmVsT25lLCAtMSwgMiwgMTAsIGZhbHNlKSwgMSk7Ci0g
ICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUd28sIC0xLCAyLCAxMCwgZmFsc2UpLCAtMyk7
Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUaHJlZSwgLTEsIDIsIDEwLCBmYWxzZSks
IC0yKTsKLSAgICBDSEVDS19FUShpbnZva2U8aW50PihsYWJlbE9uZSwgMSwgMiwgMTAsIHRydWUp
LCAxKTsKLSAgICBDSEVDS19FUShpbnZva2U8aW50PihsYWJlbFR3bywgMSwgMiwgMTAsIHRydWUp
LCAtMyk7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUaHJlZSwgMSwgMiwgMTAsIHRy
dWUpLCAtMik7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxPbmUsIC0xLCAyLCAxMCwg
dHJ1ZSksIDMpOwotICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KGxhYmVsVHdvLCAtMSwgMiwgMTAs
IHRydWUpLCAtMSk7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUaHJlZSwgLTEsIDIs
IDEwLCB0cnVlKSwgMik7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxPbmUsIDEsIDIs
IDIsIGZhbHNlKSwgMSk7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUd28sIDEsIDIs
IDIsIGZhbHNlKSwgLTEpOwotICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KGxhYmVsVGhyZWUsIDEs
IDIsIDIsIGZhbHNlKSwgMCk7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxPbmUsIC0x
LCAyLCAyLCBmYWxzZSksIDEpOwotICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KGxhYmVsVHdvLCAt
MSwgMiwgMiwgZmFsc2UpLCAtMSk7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUaHJl
ZSwgLTEsIDIsIDIsIGZhbHNlKSwgMCk7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxP
bmUsIDEsIDIsIDAsIGZhbHNlKSwgMCk7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxU
d28sIDEsIDIsIDAsIGZhbHNlKSwgMCk7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxU
aHJlZSwgMSwgMiwgMCwgZmFsc2UpLCAwKTsKLSAgICBDSEVDS19FUShpbnZva2U8aW50PihsYWJl
bE9uZSwgLTEsIDIsIDAsIGZhbHNlKSwgMCk7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFi
ZWxUd28sIC0xLCAyLCAwLCBmYWxzZSksIDApOwotICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KGxh
YmVsVGhyZWUsIC0xLCAyLCAwLCBmYWxzZSksIDApOwotfQotCi12b2lkIHRlc3RFbnRyeVN3aXRj
aExvb3AoKQotewotICAgIC8vIFRoaXMgaXMgYSBjb21wbGV0ZWx5IGFic3VyZCB1c2Ugb2YgRW50
cnlTd2l0Y2gsIHdoZXJlIGl0IGltcGFjdHMgdGhlIGxvb3AgY29uZGl0aW9uLiBUaGlzCi0gICAg
Ly8gc2hvdWxkIGNhdXNlIGR1cGxpY2F0aW9uIG9mIGVpdGhlciBuZWFybHkgdGhlIGVudGlyZSBQ
cm9jZWR1cmUuIEF0IHRpbWUgb2Ygd3JpdGluZywgd2UgZW5kZWQKLSAgICAvLyB1cCBkdXBsaWNh
dGluZyBhbGwgb2YgaXQsIHdoaWNoIGlzIGZpbmUuIEl0J3MgaW1wb3J0YW50IHRvIHRlc3QgdGhp
cyBjYXNlLCB0byBtYWtlIHN1cmUgdGhhdAotICAgIC8vIHRoZSBkdXBsaWNhdGlvbiBhbGdvcml0
aG0gY2FuIGhhbmRsZSBpbnRlcmVzdGluZyBjb250cm9sIGZsb3cuCi0gICAgCi0gICAgUHJvY2Vk
dXJlIHByb2M7Ci0gICAgcHJvYy5zZXROdW1FbnRyeXBvaW50cygyKTsKLSAgICAKLSAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGxvb3BIZWFk
ZXIgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogbG9vcEZvb3RlciA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBlbmQgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAg
ICBVcHNpbG9uVmFsdWUqIGluaXRpYWxWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxVcHNpbG9uVmFs
dWU+KAotICAgICAgICBwcm9jLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAg
ICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSkpOwotICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSnVtcCwgT3JpZ2luKCkp
OwotICAgIHJvb3QtPnNldFN1Y2Nlc3NvcnMobG9vcEhlYWRlcik7Ci0gICAgCi0gICAgVmFsdWUq
IHZhbHVlSW5Mb29wID0gbG9vcEhlYWRlci0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBQaGksIElu
dDMyLCBPcmlnaW4oKSk7Ci0gICAgaW5pdGlhbFZhbHVlLT5zZXRQaGkodmFsdWVJbkxvb3ApOwot
ICAgIFZhbHVlKiBuZXdWYWx1ZSA9IGxvb3BIZWFkZXItPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAg
ICAgIHByb2MsIEFkZCwgT3JpZ2luKCksIHZhbHVlSW5Mb29wLAotICAgICAgICBsb29wSGVhZGVy
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpOwotICAgIGxvb3BI
ZWFkZXItPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRW50cnlTd2l0Y2gsIE9yaWdpbigpKTsKLSAg
ICBsb29wSGVhZGVyLT5hcHBlbmRTdWNjZXNzb3IoZW5kKTsKLSAgICBsb29wSGVhZGVyLT5hcHBl
bmRTdWNjZXNzb3IobG9vcEZvb3Rlcik7Ci0gICAgCi0gICAgbG9vcEZvb3Rlci0+YXBwZW5kTmV3
PFVwc2lsb25WYWx1ZT4ocHJvYywgT3JpZ2luKCksIG5ld1ZhbHVlLCB2YWx1ZUluTG9vcCk7Ci0g
ICAgbG9vcEZvb3Rlci0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgQnJhbmNoLCBP
cmlnaW4oKSwKLSAgICAgICAgbG9vcEZvb3Rlci0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAg
ICAgIHByb2MsIExlc3NUaGFuLCBPcmlnaW4oKSwgbmV3VmFsdWUsCi0gICAgICAgICAgICBsb29w
Rm9vdGVyLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMTAwKSkpOwot
ICAgIGxvb3BGb290ZXItPnNldFN1Y2Nlc3NvcnMobG9vcEhlYWRlciwgZW5kKTsKLSAgICAKLSAg
ICBlbmQtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgbmV3VmFsdWUp
OwotICAgIAotICAgIHByZXBhcmVGb3JHZW5lcmF0aW9uKHByb2MpOwotICAgIAotICAgIENDYWxs
SGVscGVycyBqaXQ7Ci0gICAgZ2VuZXJhdGUocHJvYywgaml0KTsKLSAgICBMaW5rQnVmZmVyIGxp
bmtCdWZmZXIoaml0LCBudWxscHRyKTsKLSAgICBDb2RlTG9jYXRpb25MYWJlbDxCM0NvbXBpbGF0
aW9uUHRyVGFnPiBsYWJlbE9uZSA9IGxpbmtCdWZmZXIubG9jYXRpb25PZjxCM0NvbXBpbGF0aW9u
UHRyVGFnPihwcm9jLmVudHJ5cG9pbnRMYWJlbCgwKSk7Ci0gICAgQ29kZUxvY2F0aW9uTGFiZWw8
QjNDb21waWxhdGlvblB0clRhZz4gbGFiZWxUd28gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8QjND
b21waWxhdGlvblB0clRhZz4ocHJvYy5lbnRyeXBvaW50TGFiZWwoMSkpOwotCi0gICAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEIzQ29tcGlsYXRpb25QdHJUYWc+IGNvZGVSZWYgPSBGSU5BTElaRV9D
T0RFKGxpbmtCdWZmZXIsIEIzQ29tcGlsYXRpb25QdHJUYWcsICJ0ZXN0YjMgY29tcGlsYXRpb24i
KTsKLQotICAgIENIRUNLKGludm9rZTxpbnQ+KGxhYmVsT25lLCAwKSA9PSAxKTsKLSAgICBDSEVD
SyhpbnZva2U8aW50PihsYWJlbE9uZSwgNDIpID09IDQzKTsKLSAgICBDSEVDSyhpbnZva2U8aW50
PihsYWJlbE9uZSwgMTAwMCkgPT0gMTAwMSk7Ci0gICAgCi0gICAgQ0hFQ0soaW52b2tlPGludD4o
bGFiZWxUd28sIDApID09IDEwMCk7Ci0gICAgQ0hFQ0soaW52b2tlPGludD4obGFiZWxUd28sIDQy
KSA9PSAxMDApOwotICAgIENIRUNLKGludm9rZTxpbnQ+KGxhYmVsVHdvLCAxMDAwKSA9PSAxMDAx
KTsKLX0KLQotdm9pZCB0ZXN0U29tZUVhcmx5UmVnaXN0ZXIoKQotewotICAgIGF1dG8gcnVuID0g
WyZdIChib29sIHN1Y2NlZWQpIHsKLSAgICAgICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIAot
ICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgICAgICAKLSAg
ICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNo
cG9pbnRWYWx1ZT4ocHJvYywgSW50MzIsIE9yaWdpbigpKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+
cmVzdWx0Q29uc3RyYWludCA9IFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIp
OwotICAgICAgICBib29sIHJhbkZpcnN0UGF0Y2hwb2ludCA9IGZhbHNlOwotICAgICAgICBwYXRj
aHBvaW50LT5zZXRHZW5lcmF0b3IoCi0gICAgICAgICAgICBbJl0gKENDYWxsSGVscGVycyYsIGNv
bnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICAgICAg
Q0hFQ0socGFyYW1zWzBdLmdwcigpID09IEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKLSAgICAg
ICAgICAgICAgICByYW5GaXJzdFBhdGNocG9pbnQgPSB0cnVlOwotICAgICAgICAgICAgfSk7Ci0g
ICAgICAgIAotICAgICAgICBWYWx1ZSogYXJnID0gcGF0Y2hwb2ludDsKLSAgICAgICAgCi0gICAg
ICAgIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBJ
bnQzMiwgT3JpZ2luKCkpOwotICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIo
YXJnKTsKLSAgICAgICAgaWYgKHN1Y2NlZWQpCi0gICAgICAgICAgICBwYXRjaHBvaW50LT5yZXN1
bHRDb25zdHJhaW50ID0gVmFsdWVSZXA6OlNvbWVFYXJseVJlZ2lzdGVyOwotICAgICAgICBib29s
IHJhblNlY29uZFBhdGNocG9pbnQgPSBmYWxzZTsKLSAgICAgICAgdW5zaWduZWQgb3B0TGV2ZWwg
PSBwcm9jLm9wdExldmVsKCk7Ci0gICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKLSAg
ICAgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAgICAgICBpZiAoc3VjY2VlZCkKLSAgICAgICAgICAg
ICAgICAgICAgQ0hFQ0socGFyYW1zWzBdLmdwcigpICE9IHBhcmFtc1sxXS5ncHIoKSk7Ci0gICAg
ICAgICAgICAgICAgZWxzZSBpZiAob3B0TGV2ZWwgPiAxKQotICAgICAgICAgICAgICAgICAgICBD
SEVDSyhwYXJhbXNbMF0uZ3ByKCkgPT0gcGFyYW1zWzFdLmdwcigpKTsKLSAgICAgICAgICAgICAg
ICByYW5TZWNvbmRQYXRjaHBvaW50ID0gdHJ1ZTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAK
LSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBw
YXRjaHBvaW50KTsKLSAgICAgICAgCi0gICAgICAgIGNvbXBpbGVQcm9jKHByb2MpOwotICAgICAg
ICBDSEVDSyhyYW5GaXJzdFBhdGNocG9pbnQpOwotICAgICAgICBDSEVDSyhyYW5TZWNvbmRQYXRj
aHBvaW50KTsKLSAgICB9OwotICAgIAotICAgIHJ1bih0cnVlKTsKLSAgICBydW4oZmFsc2UpOwot
fQotCi12b2lkIHRlc3RCcmFuY2hCaXRBbmRJbW1GdXNpb24oCi0gICAgQjM6Ok9wY29kZSB2YWx1
ZU1vZGlmaWVyLCBUeXBlIHZhbHVlVHlwZSwgaW50NjRfdCBjb25zdGFudCwKLSAgICBBaXI6Ok9w
Y29kZSBleHBlY3RlZE9wY29kZSwgQWlyOjpBcmc6OktpbmQgZmlyc3RLaW5kKQotewotICAgIC8v
IEN1cnJlbnRseSB0aGlzIHRlc3Qgc2hvdWxkIHBhc3Mgb24gYWxsIENQVXMuIEJ1dCBzb21lIENQ
VXMgbWF5IG5vdCBzdXBwb3J0IHRoaXMgZnVzZWQKLSAgICAvLyBpbnN0cnVjdGlvbi4gSXQncyBP
SyB0byBza2lwIHRoaXMgdGVzdCBvbiB0aG9zZSBDUFVzLgotICAgIAotICAgIFByb2NlZHVyZSBw
cm9jOwotICAgIAotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAg
QmFzaWNCbG9jayogb25lID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIHR3byA9
IHByb2MuYWRkQmxvY2soKTsKLSAgICAKLSAgICBWYWx1ZSogbGVmdCA9IHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKLSAgICAKLSAgICBpZiAodmFsdWVNb2RpZmllciAhPSBJZGVudGl0eSkgewotICAgICAgICBp
ZiAoTWVtb3J5VmFsdWU6OmFjY2VwdHModmFsdWVNb2RpZmllcikpCi0gICAgICAgICAgICBsZWZ0
ID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCB2YWx1ZU1vZGlmaWVyLCB2YWx1
ZVR5cGUsIE9yaWdpbigpLCBsZWZ0KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbGVmdCA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgdmFsdWVNb2RpZmllciwgdmFsdWVUeXBlLCBP
cmlnaW4oKSwgbGVmdCk7Ci0gICAgfQotICAgIAotICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
Ci0gICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBsZWZ0LAotICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHZhbHVlVHlw
ZSwgY29uc3RhbnQpKSk7Ci0gICAgcm9vdC0+c2V0U3VjY2Vzc29ycyhGcmVxdWVudGVkQmxvY2so
b25lKSwgRnJlcXVlbnRlZEJsb2NrKHR3bykpOwotICAgIAotICAgIG9uZS0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBPb3BzLCBPcmlnaW4oKSk7Ci0gICAgdHdvLT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIE9vcHMsIE9yaWdpbigpKTsKLQotICAgIGxvd2VyVG9BaXJGb3JUZXN0aW5nKHByb2MpOwot
Ci0gICAgLy8gVGhlIGZpcnN0IGJhc2ljIGJsb2NrIG11c3QgZW5kIGluIGEgQnJhbmNoVGVzdDY0
KHJlc0NvbmQsIHRtcCwgYml0SW1tKS4KLSAgICBBaXI6Okluc3QgdGVybWluYWwgPSBwcm9jLmNv
ZGUoKVswXS0+bGFzdCgpOwotICAgIENIRUNLX0VRKHRlcm1pbmFsLmtpbmQub3Bjb2RlLCBleHBl
Y3RlZE9wY29kZSk7Ci0gICAgQ0hFQ0tfRVEodGVybWluYWwuYXJnc1swXS5raW5kKCksIEFpcjo6
QXJnOjpSZXNDb25kKTsKLSAgICBDSEVDS19FUSh0ZXJtaW5hbC5hcmdzWzFdLmtpbmQoKSwgZmly
c3RLaW5kKTsKLSAgICBDSEVDSyh0ZXJtaW5hbC5hcmdzWzJdLmtpbmQoKSA9PSBBaXI6OkFyZzo6
Qml0SW1tIHx8IHRlcm1pbmFsLmFyZ3NbMl0ua2luZCgpID09IEFpcjo6QXJnOjpCaXRJbW02NCk7
Ci19Ci0KLXZvaWQgdGVzdFRlcm1pbmFsUGF0Y2hwb2ludFRoYXROZWVkc1RvQmVTcGlsbGVkKCkK
LXsKLSAgICAvLyBUaGlzIGlzIGEgdW5pdCB0ZXN0IGZvciBob3cgRlRMJ3MgaGVhcCBhbGxvY2F0
aW9uIGZhc3QgcGF0aHMgYmVoYXZlLgotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIAotICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogc3VjY2Vz
cyA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBzbG93UGF0aCA9IHByb2MuYWRk
QmxvY2soKTsKLSAgICAKLSAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5h
cHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBJbnQzMiwgT3JpZ2luKCkpOwotICAgIHBh
dGNocG9pbnQtPmVmZmVjdHMudGVybWluYWwgPSB0cnVlOwotICAgIHBhdGNocG9pbnQtPmNsb2Ji
ZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKLSAgICAKLSAgICByb290
LT5hcHBlbmRTdWNjZXNzb3Ioc3VjY2Vzcyk7Ci0gICAgcm9vdC0+YXBwZW5kU3VjY2Vzc29yKEZy
ZXF1ZW50ZWRCbG9jayhzbG93UGF0aCwgRnJlcXVlbmN5Q2xhc3M6OlJhcmUpKTsKLSAgICAKLSAg
ICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAg
ICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAg
ICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMig0MiksIHBhcmFtc1sw
XS5ncHIoKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBq
dW1wVG9TdWNjZXNzOwotICAgICAgICAgICAgaWYgKCFwYXJhbXMuZmFsbHNUaHJvdWdoVG9TdWNj
ZXNzb3IoMCkpCi0gICAgICAgICAgICAgICAganVtcFRvU3VjY2VzcyA9IGppdC5qdW1wKCk7Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIFZlY3RvcjxCb3g8Q0NhbGxIZWxwZXJzOjpMYWJlbD4+
IGxhYmVscyA9IHBhcmFtcy5zdWNjZXNzb3JMYWJlbHMoKTsKLSAgICAgICAgICAgIAotICAgICAg
ICAgICAgcGFyYW1zLmFkZExhdGVQYXRoKAotICAgICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxw
ZXJzJiBqaXQpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGp1bXBUb1N1Y2Nlc3MuaXNTZXQo
KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGp1bXBUb1N1Y2Nlc3MubGlua1RvKCpsYWJlbHNb
MF0sICZqaXQpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICAKLSAgICBW
ZWN0b3I8VmFsdWUqPiBhcmdzOwotICAgIHsKLSAgICAgICAgUmVnaXN0ZXJTZXQgZmlsbEFsbEdQ
UnNTZXQgPSBwcm9jLm11dGFibGVHUFJzKCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBmaWxsQWxsR1BSc1NldC5udW1iZXJPZlNldFJlZ2lzdGVycygpOyBpKyspCi0gICAgICAg
ICAgICBhcmdzLmFwcGVuZChzdWNjZXNzLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgaSkpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgLy8gTm93IGZvcmNlIGFsbCB2
YWx1ZXMgaW50byBldmVyeSBhdmFpbGFibGUgcmVnaXN0ZXIuCi0gICAgICAgIFBhdGNocG9pbnRW
YWx1ZSogcCA9IHN1Y2Nlc3MtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQs
IE9yaWdpbigpKTsKLSAgICAgICAgZm9yIChWYWx1ZSogdiA6IGFyZ3MpCi0gICAgICAgICAgICBw
LT5hcHBlbmQodiwgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7Ci0gICAgICAgIHAtPnNldEdlbmVy
YXRvcihbJl0gKENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYp
IHsgfSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICAvLyBOb3cgcmVxdWlyZSB0aGUgb3JpZ2lu
YWwgcGF0Y2hwb2ludCB0byBiZSBtYXRlcmlhbGl6ZWQgaW50byBhIHJlZ2lzdGVyLgotICAgICAg
ICBQYXRjaHBvaW50VmFsdWUqIHAgPSBzdWNjZXNzLT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVl
Pihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7Ci0gICAgICAgIHAtPmFwcGVuZChwYXRjaHBvaW50LCBW
YWx1ZVJlcDo6U29tZVJlZ2lzdGVyKTsKLSAgICAgICAgcC0+c2V0R2VuZXJhdG9yKFsmXSAoQ0Nh
bGxIZWxwZXJzJiwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKLSAgICB9
Ci0KLSAgICBzdWNjZXNzLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCks
IHN1Y2Nlc3MtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxMCkpOwot
ICAgIAotICAgIHNsb3dQYXRoLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2lu
KCksIHNsb3dQYXRoLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMjAp
KTsKLSAgICAKLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBDSEVDS19F
UShpbnZva2U8aW50PigqY29kZSksIDEwKTsKLX0KLQotdm9pZCB0ZXN0VGVybWluYWxQYXRjaHBv
aW50VGhhdE5lZWRzVG9CZVNwaWxsZWQyKCkKLXsKLSAgICAvLyBUaGlzIGlzIGEgdW5pdCB0ZXN0
IGZvciBob3cgRlRMJ3MgaGVhcCBhbGxvY2F0aW9uIGZhc3QgcGF0aHMgYmVoYXZlLgotICAgIFBy
b2NlZHVyZSBwcm9jOwotCi0gICAgLy8gRklYTUU6IEFpciBPMC9PMSBhbGxvY2F0b3IgY2FuJ3Qg
aGFuZGxlIHN1Y2ggcHJvZ3JhbXMuIFdlIHJlbHkgb24gV2FzbUFpcklSR2VuZXJhdG9yCi0gICAg
Ly8gdG8gbm90IHVzZSBhbnkgc3VjaCBjb25zdHJ1Y3RzIHdoZXJlIHRoZSByZWdpc3RlciBhbGxv
Y2F0b3IgaXMgY29ybmVyZWQgaW4gc3VjaAotICAgIC8vIGEgd2F5LgotICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ2MzMKLSAgICBpZiAocHJvYy5vcHRM
ZXZlbCgpIDwgMikKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogb25lID0gcHJvYy5hZGRCbG9jaygp
OwotICAgIEJhc2ljQmxvY2sqIHN1Y2Nlc3MgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNC
bG9jayogc2xvd1BhdGggPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBWYWx1ZSogYXJnID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCkpOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAg
ICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwgYXJnKTsKLSAgICByb290LT5hcHBlbmRTdWNj
ZXNzb3Iob25lKTsKLSAgICByb290LT5hcHBlbmRTdWNjZXNzb3IoRnJlcXVlbnRlZEJsb2NrKHNs
b3dQYXRoLCBGcmVxdWVuY3lDbGFzczo6UmFyZSkpOwotICAgIAotICAgIFBhdGNocG9pbnRWYWx1
ZSogcGF0Y2hwb2ludCA9IG9uZS0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgSW50
MzIsIE9yaWdpbigpKTsKLSAgICBwYXRjaHBvaW50LT5lZmZlY3RzLnRlcm1pbmFsID0gdHJ1ZTsK
LSAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3Rl
cnMoKSk7Ci0gICAgcGF0Y2hwb2ludC0+YXBwZW5kKGFyZywgVmFsdWVSZXA6OlNvbWVSZWdpc3Rl
cik7Ci0gICAgCi0gICAgb25lLT5hcHBlbmRTdWNjZXNzb3Ioc3VjY2Vzcyk7Ci0gICAgb25lLT5h
cHBlbmRTdWNjZXNzb3IoRnJlcXVlbnRlZEJsb2NrKHNsb3dQYXRoLCBGcmVxdWVuY3lDbGFzczo6
UmFyZSkpOwotICAgIAotICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKLSAgICAgICAgWyZd
IChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJh
bXMpIHsKLSAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1Nj
cmF0Y2goaml0KTsKLSAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKDY2NiksIHBhcmFtc1swXS5ncHIoKSk7Ci0gICAgICAgICAgICBhdXRvIGdvVG9GYXN0UGF0
aCA9IGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkVxdWFsLCBwYXJhbXNbMV0uZ3ByKCksIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDQyKSk7Ci0gICAgICAgICAgICBhdXRvIGp1bXBUb1Ns
b3cgPSBqaXQuanVtcCgpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBNYWtlIHN1cmUg
dGhlIGFzc2VydHMgaGVyZSBwYXNzLgotICAgICAgICAgICAgcGFyYW1zLmZhbGxzVGhyb3VnaFRv
U3VjY2Vzc29yKDApOwotICAgICAgICAgICAgcGFyYW1zLmZhbGxzVGhyb3VnaFRvU3VjY2Vzc29y
KDEpOwotCi0gICAgICAgICAgICBWZWN0b3I8Qm94PENDYWxsSGVscGVyczo6TGFiZWw+PiBsYWJl
bHMgPSBwYXJhbXMuc3VjY2Vzc29yTGFiZWxzKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
IHBhcmFtcy5hZGRMYXRlUGF0aCgKLSAgICAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYg
aml0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGdvVG9GYXN0UGF0aC5saW5rVG8oKmxhYmVsc1sw
XSwgJmppdCk7Ci0gICAgICAgICAgICAgICAgICAgIGp1bXBUb1Nsb3cubGlua1RvKCpsYWJlbHNb
MV0sICZqaXQpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICAKLSAgICBW
ZWN0b3I8VmFsdWUqPiBhcmdzOwotICAgIHsKLSAgICAgICAgUmVnaXN0ZXJTZXQgZmlsbEFsbEdQ
UnNTZXQgPSBwcm9jLm11dGFibGVHUFJzKCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBmaWxsQWxsR1BSc1NldC5udW1iZXJPZlNldFJlZ2lzdGVycygpOyBpKyspCi0gICAgICAg
ICAgICBhcmdzLmFwcGVuZChzdWNjZXNzLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgaSkpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgLy8gTm93IGZvcmNlIGFsbCB2
YWx1ZXMgaW50byBldmVyeSBhdmFpbGFibGUgcmVnaXN0ZXIuCi0gICAgICAgIFBhdGNocG9pbnRW
YWx1ZSogcCA9IHN1Y2Nlc3MtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQs
IE9yaWdpbigpKTsKLSAgICAgICAgZm9yIChWYWx1ZSogdiA6IGFyZ3MpCi0gICAgICAgICAgICBw
LT5hcHBlbmQodiwgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7Ci0gICAgICAgIHAtPnNldEdlbmVy
YXRvcihbJl0gKENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYp
IHsgfSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICAvLyBOb3cgcmVxdWlyZSB0aGUgb3JpZ2lu
YWwgcGF0Y2hwb2ludCB0byBiZSBtYXRlcmlhbGl6ZWQgaW50byBhIHJlZ2lzdGVyLgotICAgICAg
ICBQYXRjaHBvaW50VmFsdWUqIHAgPSBzdWNjZXNzLT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVl
Pihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7Ci0gICAgICAgIHAtPmFwcGVuZChwYXRjaHBvaW50LCBW
YWx1ZVJlcDo6U29tZVJlZ2lzdGVyKTsKLSAgICAgICAgcC0+c2V0R2VuZXJhdG9yKFsmXSAoQ0Nh
bGxIZWxwZXJzJiwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKLSAgICB9
Ci0KLSAgICBzdWNjZXNzLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCks
IHBhdGNocG9pbnQpOwotICAgIAotICAgIHNsb3dQYXRoLT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFJldHVybiwgT3JpZ2luKCksIGFyZyk7Ci0gICAgCi0gICAgYXV0byBvcmlnaW5hbDEgPSBPcHRp
b25zOjptYXhCM1RhaWxEdXBCbG9ja1NpemUoKTsKLSAgICBhdXRvIG9yaWdpbmFsMiA9IE9wdGlv
bnM6Om1heEIzVGFpbER1cEJsb2NrU3VjY2Vzc29ycygpOwotCi0gICAgLy8gVGFpbCBkdXBsaWNh
dGlvbiB3aWxsIGJyZWFrIHRoZSBjcml0aWNhbCBlZGdlIHdlJ3JlIHRyeWluZyB0byB0ZXN0IGJl
Y2F1c2UgaXQKLSAgICAvLyB3aWxsIGNsb25lIHRoZSBzbG93UGF0aCBibG9jayBmb3IgYm90aCBl
ZGdlcyB0byBpdCEKLSAgICBPcHRpb25zOjptYXhCM1RhaWxEdXBCbG9ja1NpemUoKSA9IDA7Ci0g
ICAgT3B0aW9uczo6bWF4QjNUYWlsRHVwQmxvY2tTdWNjZXNzb3JzKCkgPSAwOwotCi0gICAgYXV0
byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKmNv
ZGUsIDEpLCAxKTsKLSAgICBDSEVDS19FUShpbnZva2U8aW50PigqY29kZSwgMCksIDApOwotICAg
IENIRUNLX0VRKGludm9rZTxpbnQ+KCpjb2RlLCA0MiksIDY2Nik7Ci0KLSAgICBPcHRpb25zOjpt
YXhCM1RhaWxEdXBCbG9ja1NpemUoKSA9IG9yaWdpbmFsMTsKLSAgICBPcHRpb25zOjptYXhCM1Rh
aWxEdXBCbG9ja1N1Y2Nlc3NvcnMoKSA9IG9yaWdpbmFsMjsKLX0KLQotdm9pZCB0ZXN0UGF0Y2hw
b2ludFRlcm1pbmFsUmV0dXJuVmFsdWUoYm9vbCBzdWNjZXNzSXNSYXJlKQotewotICAgIC8vIFRo
aXMgaXMgYSB1bml0IHRlc3QgZm9yIGhvdyBGVEwncyBoZWFwIGFsbG9jYXRpb24gZmFzdCBwYXRo
cyBiZWhhdmUuCi0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgCi0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBzdWNjZXNzID0gcHJvYy5hZGRC
bG9jaygpOwotICAgIEJhc2ljQmxvY2sqIHNsb3dQYXRoID0gcHJvYy5hZGRCbG9jaygpOwotICAg
IEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbiA9IHByb2MuYWRkQmxvY2soKTsKLSAgICAKLSAgICBW
YWx1ZSogYXJnID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgVHJ1bmMs
IE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIAotICAgIFBhdGNocG9p
bnRWYWx1ZSogcGF0Y2hwb2ludCA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHBy
b2MsIEludDMyLCBPcmlnaW4oKSk7Ci0gICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy50ZXJtaW5hbCA9
IHRydWU7Ci0gICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNo
UmVnaXN0ZXJzKCkpOwotICAgIAotICAgIGlmIChzdWNjZXNzSXNSYXJlKSB7Ci0gICAgICAgIHJv
b3QtPmFwcGVuZFN1Y2Nlc3NvcihGcmVxdWVudGVkQmxvY2soc3VjY2VzcywgRnJlcXVlbmN5Q2xh
c3M6OlJhcmUpKTsKLSAgICAgICAgcm9vdC0+YXBwZW5kU3VjY2Vzc29yKHNsb3dQYXRoKTsKLSAg
ICB9IGVsc2UgewotICAgICAgICByb290LT5hcHBlbmRTdWNjZXNzb3Ioc3VjY2Vzcyk7Ci0gICAg
ICAgIHJvb3QtPmFwcGVuZFN1Y2Nlc3NvcihGcmVxdWVudGVkQmxvY2soc2xvd1BhdGgsIEZyZXF1
ZW5jeUNsYXNzOjpSYXJlKSk7Ci0gICAgfQotICAgIAotICAgIHBhdGNocG9pbnQtPmFwcGVuZFNv
bWVSZWdpc3RlcihhcmcpOwotICAgIAotICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKLSAg
ICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2Fn
ZSBhbGxvd1NjcmF0Y2goaml0KTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpKdW1wIGp1bXBUb1Nsb3cgPQotICAgICAgICAgICAgICAgIGppdC5icmFuY2gzMihDQ2Fs
bEhlbHBlcnM6OkFib3ZlLCBwYXJhbXNbMV0uZ3ByKCksIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKDQyKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGppdC5hZGQzMihDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMigzMSksIHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGp1bXBUb1N1Y2Nl
c3M7Ci0gICAgICAgICAgICBpZiAoIXBhcmFtcy5mYWxsc1Rocm91Z2hUb1N1Y2Nlc3NvcigwKSkK
LSAgICAgICAgICAgICAgICBqdW1wVG9TdWNjZXNzID0gaml0Lmp1bXAoKTsKLSAgICAgICAgICAg
IAotICAgICAgICAgICAgVmVjdG9yPEJveDxDQ2FsbEhlbHBlcnM6OkxhYmVsPj4gbGFiZWxzID0g
cGFyYW1zLnN1Y2Nlc3NvckxhYmVscygpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBwYXJh
bXMuYWRkTGF0ZVBhdGgoCi0gICAgICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkg
ewotICAgICAgICAgICAgICAgICAgICBqdW1wVG9TbG93LmxpbmtUbygqbGFiZWxzWzFdLCAmaml0
KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGp1bXBUb1N1Y2Nlc3MuaXNTZXQoKSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGp1bXBUb1N1Y2Nlc3MubGlua1RvKCpsYWJlbHNbMF0sICZqaXQp
OwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICAKLSAgICBVcHNpbG9uVmFs
dWUqIHN1Y2Nlc3NVcHNpbG9uID0gc3VjY2Vzcy0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4ocHJv
YywgT3JpZ2luKCksIHBhdGNocG9pbnQpOwotICAgIHN1Y2Nlc3MtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgSnVtcCwgT3JpZ2luKCkpOwotICAgIHN1Y2Nlc3MtPnNldFN1Y2Nlc3NvcnMoY29udGlu
dWF0aW9uKTsKLSAgICAKLSAgICBVcHNpbG9uVmFsdWUqIHNsb3dQYXRoVXBzaWxvbiA9IHNsb3dQ
YXRoLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPigKLSAgICAgICAgcHJvYywgT3JpZ2luKCksIHNs
b3dQYXRoLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNjY2KSk7Ci0g
ICAgc2xvd1BhdGgtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSnVtcCwgT3JpZ2luKCkpOwotICAg
IHNsb3dQYXRoLT5zZXRTdWNjZXNzb3JzKGNvbnRpbnVhdGlvbik7Ci0gICAgCi0gICAgVmFsdWUq
IHBoaSA9IGNvbnRpbnVhdGlvbi0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBQaGksIEludDMyLCBP
cmlnaW4oKSk7Ci0gICAgc3VjY2Vzc1Vwc2lsb24tPnNldFBoaShwaGkpOwotICAgIHNsb3dQYXRo
VXBzaWxvbi0+c2V0UGhpKHBoaSk7Ci0gICAgY29udGludWF0aW9uLT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHBoaSk7Ci0gICAgCi0gICAgYXV0byBjb2RlID0gY29t
cGlsZVByb2MocHJvYyk7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKmNvZGUsIDApLCAzMSk7
Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKmNvZGUsIDEpLCAzMik7Ci0gICAgQ0hFQ0tfRVEo
aW52b2tlPGludD4oKmNvZGUsIDQxKSwgNzIpOwotICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpj
b2RlLCA0MiksIDczKTsKLSAgICBDSEVDS19FUShpbnZva2U8aW50PigqY29kZSwgNDMpLCA2NjYp
OwotICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpjb2RlLCAtMSksIDY2Nik7Ci19Ci0KLXZvaWQg
dGVzdE1lbW9yeUZlbmNlKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLQotICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICByb290LT5hcHBlbmROZXc8RmVuY2VW
YWx1ZT4ocHJvYywgT3JpZ2luKCkpOwotICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCks
IEludDMyLCA0MikpOwotCi0gICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAg
Q0hFQ0tfRVEoaW52b2tlPGludD4oKmNvZGUpLCA0Mik7Ci0gICAgaWYgKGlzWDg2KCkpCi0gICAg
ICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibG9jayBvciAkMHgwLCAoJXJzcCkiKTsK
LSAgICBpZiAoaXNBUk02NCgpKQotICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwg
ImRtYiAgICAgaXNoIik7Ci0gICAgY2hlY2tEb2VzTm90VXNlSW5zdHJ1Y3Rpb24oKmNvZGUsICJt
ZmVuY2UiKTsKLSAgICBjaGVja0RvZXNOb3RVc2VJbnN0cnVjdGlvbigqY29kZSwgImRtYiAgICAg
aXNoc3QiKTsKLX0KLQotdm9pZCB0ZXN0U3RvcmVGZW5jZSgpCi17Ci0gICAgUHJvY2VkdXJlIHBy
b2M7Ci0KLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgcm9v
dC0+YXBwZW5kTmV3PEZlbmNlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBIZWFwUmFuZ2U6OnRvcCgp
LCBIZWFwUmFuZ2UoKSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgSW50MzIs
IDQyKSk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBDSEVDS19F
UShpbnZva2U8aW50PigqY29kZSksIDQyKTsKLSAgICBjaGVja0RvZXNOb3RVc2VJbnN0cnVjdGlv
bigqY29kZSwgImxvY2siKTsKLSAgICBjaGVja0RvZXNOb3RVc2VJbnN0cnVjdGlvbigqY29kZSwg
Im1mZW5jZSIpOwotICAgIGlmIChpc0FSTTY0KCkpCi0gICAgICAgIGNoZWNrVXNlc0luc3RydWN0
aW9uKCpjb2RlLCAiZG1iICAgICBpc2hzdCIpOwotfQotCi12b2lkIHRlc3RMb2FkRmVuY2UoKQot
ewotICAgIFByb2NlZHVyZSBwcm9jOwotCi0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ldzxGZW5jZVZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgSGVhcFJhbmdlKCksIEhlYXBSYW5nZTo6dG9wKCkpOwotICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJv
YywgT3JpZ2luKCksIEludDMyLCA0MikpOwotCi0gICAgYXV0byBjb2RlID0gY29tcGlsZVByb2Mo
cHJvYyk7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKmNvZGUpLCA0Mik7Ci0gICAgY2hlY2tE
b2VzTm90VXNlSW5zdHJ1Y3Rpb24oKmNvZGUsICJsb2NrIik7Ci0gICAgY2hlY2tEb2VzTm90VXNl
SW5zdHJ1Y3Rpb24oKmNvZGUsICJtZmVuY2UiKTsKLSAgICBpZiAoaXNBUk02NCgpKQotICAgICAg
ICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImRtYiAgICAgaXNoIik7Ci0gICAgY2hlY2tE
b2VzTm90VXNlSW5zdHJ1Y3Rpb24oKmNvZGUsICJkbWIgICAgIGlzaHN0Iik7Ci19Ci0KLXZvaWQg
dGVzdFRyYXBwaW5nTG9hZCgpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBpbnQgeCA9IDQyOwotICAgIE1lbW9yeVZh
bHVlKiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgIHByb2Ms
IHRyYXBwaW5nKExvYWQpLCBJbnQzMiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJngpKTsKLSAgICBFZmZlY3RzIGV4cGVj
dGVkRWZmZWN0czsKLSAgICBleHBlY3RlZEVmZmVjdHMuZXhpdHNTaWRld2F5cyA9IHRydWU7Ci0g
ICAgZXhwZWN0ZWRFZmZlY3RzLmNvbnRyb2xEZXBlbmRlbnQ9IHRydWU7Ci0gICAgZXhwZWN0ZWRF
ZmZlY3RzLnJlYWRzID0gSGVhcFJhbmdlOjp0b3AoKTsKLSAgICBDSEVDS19FUSh2YWx1ZS0+cmFu
Z2UoKSwgSGVhcFJhbmdlOjp0b3AoKSk7Ci0gICAgQ0hFQ0tfRVEodmFsdWUtPmVmZmVjdHMoKSwg
ZXhwZWN0ZWRFZmZlY3RzKTsKLSAgICB2YWx1ZS0+c2V0UmFuZ2UoSGVhcFJhbmdlKDApKTsKLSAg
ICBDSEVDS19FUSh2YWx1ZS0+cmFuZ2UoKSwgSGVhcFJhbmdlKDApKTsKLSAgICBDSEVDS19FUSh2
YWx1ZS0+ZWZmZWN0cygpLCBleHBlY3RlZEVmZmVjdHMpOyAvLyBXZSBzdGlsbCByZWFkcyB0b3Ah
Ci0gICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCB2YWx1
ZSk7Ci0gICAgQ0hFQ0tfRVEoY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpLCA0Mik7Ci0gICAgdW5z
aWduZWQgdHJhcHNDb3VudCA9IDA7Ci0gICAgZm9yIChBaXI6OkJhc2ljQmxvY2sqIGJsb2NrIDog
cHJvYy5jb2RlKCkpIHsKLSAgICAgICAgZm9yIChBaXI6Okluc3QmIGluc3QgOiAqYmxvY2spIHsK
LSAgICAgICAgICAgIGlmIChpbnN0LmtpbmQuZWZmZWN0cykKLSAgICAgICAgICAgICAgICB0cmFw
c0NvdW50Kys7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgQ0hFQ0tfRVEodHJhcHNDb3VudCwgMXUp
OwotfQotCi12b2lkIHRlc3RUcmFwcGluZ1N0b3JlKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsK
LSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIGludCB4ID0gNDI7
Ci0gICAgTWVtb3J5VmFsdWUqIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigK
LSAgICAgICAgcHJvYywgdHJhcHBpbmcoU3RvcmUpLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDExMSksCi0gICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJngpLCAwKTsKLSAg
ICBFZmZlY3RzIGV4cGVjdGVkRWZmZWN0czsKLSAgICBleHBlY3RlZEVmZmVjdHMuZXhpdHNTaWRl
d2F5cyA9IHRydWU7Ci0gICAgZXhwZWN0ZWRFZmZlY3RzLmNvbnRyb2xEZXBlbmRlbnQ9IHRydWU7
Ci0gICAgZXhwZWN0ZWRFZmZlY3RzLnJlYWRzID0gSGVhcFJhbmdlOjp0b3AoKTsKLSAgICBleHBl
Y3RlZEVmZmVjdHMud3JpdGVzID0gSGVhcFJhbmdlOjp0b3AoKTsKLSAgICBDSEVDS19FUSh2YWx1
ZS0+cmFuZ2UoKSwgSGVhcFJhbmdlOjp0b3AoKSk7Ci0gICAgQ0hFQ0tfRVEodmFsdWUtPmVmZmVj
dHMoKSwgZXhwZWN0ZWRFZmZlY3RzKTsKLSAgICB2YWx1ZS0+c2V0UmFuZ2UoSGVhcFJhbmdlKDAp
KTsKLSAgICBDSEVDS19FUSh2YWx1ZS0+cmFuZ2UoKSwgSGVhcFJhbmdlKDApKTsKLSAgICBleHBl
Y3RlZEVmZmVjdHMud3JpdGVzID0gSGVhcFJhbmdlKDApOwotICAgIENIRUNLX0VRKHZhbHVlLT5l
ZmZlY3RzKCksIGV4cGVjdGVkRWZmZWN0cyk7IC8vIFdlIHN0aWxsIHJlYWRzIHRvcCEKLSAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOwotICAgIGNvbXBp
bGVBbmRSdW48aW50Pihwcm9jKTsKLSAgICBDSEVDS19FUSh4LCAxMTEpOwotICAgIHVuc2lnbmVk
IHRyYXBzQ291bnQgPSAwOwotICAgIGZvciAoQWlyOjpCYXNpY0Jsb2NrKiBibG9jayA6IHByb2Mu
Y29kZSgpKSB7Ci0gICAgICAgIGZvciAoQWlyOjpJbnN0JiBpbnN0IDogKmJsb2NrKSB7Ci0gICAg
ICAgICAgICBpZiAoaW5zdC5raW5kLmVmZmVjdHMpCi0gICAgICAgICAgICAgICAgdHJhcHNDb3Vu
dCsrOwotICAgICAgICB9Ci0gICAgfQotICAgIENIRUNLX0VRKHRyYXBzQ291bnQsIDF1KTsKLX0K
LQotdm9pZCB0ZXN0VHJhcHBpbmdMb2FkQWRkU3RvcmUoKQotewotICAgIFByb2NlZHVyZSBwcm9j
OwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgaW50IHggPSA0
MjsKLSAgICBDb25zdFB0clZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1
ZT4ocHJvYywgT3JpZ2luKCksICZ4KTsKLSAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KAotICAgICAgICBwcm9jLCB0cmFwcGluZyhTdG9yZSksIE9yaWdpbigpLAotICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKLSAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgdHJhcHBpbmcoTG9h
ZCksIEludDMyLCBPcmlnaW4oKSwgcHRyKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAzKSksCi0gICAgICAgIHB0ciwgMCk7Ci0gICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKLSAgICBjb21w
aWxlQW5kUnVuPGludD4ocHJvYyk7Ci0gICAgQ0hFQ0tfRVEoeCwgNDUpOwotICAgIGJvb2wgdHJh
cHMgPSBmYWxzZTsKLSAgICBmb3IgKEFpcjo6QmFzaWNCbG9jayogYmxvY2sgOiBwcm9jLmNvZGUo
KSkgewotICAgICAgICBmb3IgKEFpcjo6SW5zdCYgaW5zdCA6ICpibG9jaykgewotICAgICAgICAg
ICAgaWYgKGluc3Qua2luZC5lZmZlY3RzKQotICAgICAgICAgICAgICAgIHRyYXBzID0gdHJ1ZTsK
LSAgICAgICAgfQotICAgIH0KLSAgICBDSEVDSyh0cmFwcyk7Ci19Ci0KLXZvaWQgdGVzdFRyYXBw
aW5nTG9hZERDRSgpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBpbnQgeCA9IDQyOwotICAgIHJvb3QtPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgIHByb2MsIHRyYXBwaW5nKExvYWQpLCBJbnQzMiwgT3Jp
Z2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmln
aW4oKSwgJngpKTsKLSAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3Jp
Z2luKCkpOwotICAgIGNvbXBpbGVBbmRSdW48aW50Pihwcm9jKTsKLSAgICB1bnNpZ25lZCB0cmFw
c0NvdW50ID0gMDsKLSAgICBmb3IgKEFpcjo6QmFzaWNCbG9jayogYmxvY2sgOiBwcm9jLmNvZGUo
KSkgewotICAgICAgICBmb3IgKEFpcjo6SW5zdCYgaW5zdCA6ICpibG9jaykgewotICAgICAgICAg
ICAgaWYgKGluc3Qua2luZC5lZmZlY3RzKQotICAgICAgICAgICAgICAgIHRyYXBzQ291bnQrKzsK
LSAgICAgICAgfQotICAgIH0KLSAgICBDSEVDS19FUSh0cmFwc0NvdW50LCAxdSk7Ci19Ci0KLXZv
aWQgdGVzdFRyYXBwaW5nU3RvcmVFbGltaW5hdGlvbigpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7
Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBpbnQgeCA9IDQy
OwotICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksICZ4KTsKLSAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAg
ICBwcm9jLCB0cmFwcGluZyhTdG9yZSksIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDMpLAotICAgICAgICBwdHIpOwotICAg
IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgIHByb2MsIHRyYXBwaW5nKFN0
b3JlKSwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCA0NCksCi0gICAgICAgIHB0cik7Ci0gICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKLSAgICBjb21waWxlQW5kUnVuPGludD4ocHJv
Yyk7Ci0gICAgdW5zaWduZWQgc3RvcmVDb3VudCA9IDA7Ci0gICAgZm9yIChWYWx1ZSogdmFsdWUg
OiBwcm9jLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChpc1N0b3JlKHZhbHVlLT5vcGNvZGUoKSkp
Ci0gICAgICAgICAgICBzdG9yZUNvdW50Kys7Ci0gICAgfQotICAgIENIRUNLX0VRKHN0b3JlQ291
bnQsIDJ1KTsKLX0KLQotdm9pZCB0ZXN0TW92ZUNvbnN0YW50cygpCi17Ci0gICAgYXV0byBjaGVj
ayA9IFtdIChQcm9jZWR1cmUmIHByb2MpIHsKLSAgICAgICAgcHJvYy5yZXNldFJlYWNoYWJpbGl0
eSgpOwotICAgICAgICAKLSAgICAgICAgaWYgKHNob3VsZEJlVmVyYm9zZSgpKSB7Ci0gICAgICAg
ICAgICBkYXRhTG9nKCJJUiBiZWZvcmU6XG4iKTsKLSAgICAgICAgICAgIGRhdGFMb2cocHJvYyk7
Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIG1vdmVDb25zdGFudHMocHJvYyk7Ci0gICAg
ICAgIAotICAgICAgICBpZiAoc2hvdWxkQmVWZXJib3NlKCkpIHsKLSAgICAgICAgICAgIGRhdGFM
b2coIklSIGFmdGVyOlxuIik7Ci0gICAgICAgICAgICBkYXRhTG9nKHByb2MpOwotICAgICAgICB9
Ci0gICAgICAgIAotICAgICAgICBVc2VDb3VudHMgdXNlQ291bnRzKHByb2MpOwotICAgICAgICB1
bnNpZ25lZCBjb3VudCA9IDA7Ci0gICAgICAgIGZvciAoVmFsdWUqIHZhbHVlIDogcHJvYy52YWx1
ZXMoKSkgewotICAgICAgICAgICAgaWYgKHVzZUNvdW50cy5udW1Vc2VzKHZhbHVlKSAmJiB2YWx1
ZS0+aGFzSW50NjQoKSkKLSAgICAgICAgICAgICAgICBjb3VudCsrOwotICAgICAgICB9Ci0gICAg
ICAgIAotICAgICAgICBpZiAoY291bnQgPT0gMSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgCi0gICAgICAgIGNyYXNoTG9jay5sb2NrKCk7Ci0gICAgICAgIGRhdGFMb2coIkZhaWwgaW4g
dGVzdE1vdmVDb25zdGFudHM6IGdvdCBtb3JlIHRoYW4gb25lIENvbnN0NjQ6XG4iKTsKLSAgICAg
ICAgZGF0YUxvZyhwcm9jKTsKLSAgICAgICAgQ1JBU0goKTsKLSAgICB9OwotCi0gICAgewotICAg
ICAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKLSAgICAgICAgVmFsdWUqIGEgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KAotICAgICAgICAgICAgcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCksIAotICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAw
eDEyMzQxMjM0MTIzNCkpOwotICAgICAgICBWYWx1ZSogYiA9IHJvb3QtPmFwcGVuZE5ldzxNZW1v
cnlWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4o
KSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmln
aW4oKSwgMHgxMjM0MTIzNDEzMzQpKTsKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENDYWxsVmFs
dWU+KHByb2MsIFZvaWQsIE9yaWdpbigpLCBhLCBiKTsKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKLSAgICAgICAgY2hlY2socHJvYyk7Ci0g
ICAgfQotICAgIAotICAgIHsKLSAgICAgICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgIFZhbHVlKiB4ID0gcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApOwotICAgICAgICBWYWx1ZSogYSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0g
ICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLCB4LCByb290LT5hcHBlbmROZXc8Q29uc3RQ
dHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDB4MTIzNDEyMzQxMjM0KSk7Ci0gICAgICAgIFZhbHVl
KiBiID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEFkZCwgT3Jp
Z2luKCksIHgsIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
LTB4MTIzNDEyMzQxMjM0KSk7Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPihw
cm9jLCBWb2lkLCBPcmlnaW4oKSwgYSwgYik7Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7Ci0gICAgICAgIGNoZWNrKHByb2MpOwotICAgIH0K
LX0KLQotdm9pZCB0ZXN0UENPcmlnaW5NYXBEb2VzbnRJbnNlcnROb3BzKCkKLXsKLSAgICBQcm9j
ZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotCi0g
ICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCB3YXRjaHBvaW50TGFiZWw7Ci0KLSAgICBQYXRjaHBvaW50
VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9j
LCBWb2lkLCBPcmlnaW4oKSk7Ci0gICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAotICAgICAg
ICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMm
KSB7Ci0gICAgICAgICAgICB3YXRjaHBvaW50TGFiZWwgPSBqaXQud2F0Y2hwb2ludExhYmVsKCk7
Ci0gICAgICAgIH0pOwotCi0gICAgcGF0Y2hwb2ludCA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBv
aW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKLSAgICBwYXRjaHBvaW50LT5zZXRHZW5l
cmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2Vu
ZXJhdGlvblBhcmFtcyYpIHsKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgbGFiZWxJ
Z25vcmluZ1dhdGNocG9pbnRzID0gaml0LmxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpOwotCi0g
ICAgICAgICAgICBDSEVDSyh3YXRjaHBvaW50TGFiZWwgPT0gbGFiZWxJZ25vcmluZ1dhdGNocG9p
bnRzKTsKLSAgICAgICAgfSk7Ci0KLSAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJl
dHVybiwgT3JpZ2luKCkpOwotCi0gICAgY29tcGlsZVByb2MocHJvYyk7Ci19Ci0KLXZvaWQgdGVz
dFBpblJlZ2lzdGVycygpCi17Ci0gICAgYXV0byBnbyA9IFsmXSAoYm9vbCBwaW4pIHsKLSAgICAg
ICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIFJlZ2lzdGVyU2V0IGNzcnM7Ci0gICAgICAgIGNz
cnMubWVyZ2UoUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7Ci0gICAgICAgIGNz
cnMuZXhjbHVkZShSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSk7Ci0gICAgICAgIGlmIChw
aW4pIHsKLSAgICAgICAgICAgIGNzcnMuZm9yRWFjaCgKLSAgICAgICAgICAgICAgICBbJl0gKFJl
ZyByZWcpIHsKLSAgICAgICAgICAgICAgICAgICAgcHJvYy5waW5SZWdpc3RlcihyZWcpOwotICAg
ICAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0gICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgIFZhbHVlKiBhID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAg
ICAgICBWYWx1ZSogYiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAgVmFsdWUqIGMgPSByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMik7Ci0gICAgICAgIFZhbHVlKiBkID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjpyZWdDUzApOwotICAgICAgICByb290
LT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBWb2lkLCBPcmlnaW4o
KSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmln
aW4oKSwgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDB4MTIzNCkpKTsKLSAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PENDYWxsVmFsdWU+KAotICAgICAgICAgICAgcHJvYywgVm9pZCwgT3JpZ2luKCksCi0g
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IHN0YXRpY19jYXN0PGludHB0cl90PigweDEyMzUpKSwKLSAgICAgICAgICAgIGEsIGIsIGMpOwot
ICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0
Y2hwb2ludFZhbHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7Ci0gICAgICAgIHBhdGNocG9pbnQt
PmFwcGVuZFNvbWVSZWdpc3RlcihkKTsKLSAgICAgICAgdW5zaWduZWQgb3B0TGV2ZWwgPSBwcm9j
Lm9wdExldmVsKCk7Ci0gICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKLSAgICAgICAg
ICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBw
YXJhbXMpIHsKLSAgICAgICAgICAgICAgICBpZiAob3B0TGV2ZWwgPiAxKQotICAgICAgICAgICAg
ICAgICAgICBDSEVDS19FUShwYXJhbXNbMF0uZ3ByKCksIEdQUkluZm86OnJlZ0NTMCk7Ci0gICAg
ICAgICAgICB9KTsKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4s
IE9yaWdpbigpKTsKLSAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAg
ICAgIGJvb2wgdXNlc0NTUnMgPSBmYWxzZTsKLSAgICAgICAgZm9yIChBaXI6OkJhc2ljQmxvY2sq
IGJsb2NrIDogcHJvYy5jb2RlKCkpIHsKLSAgICAgICAgICAgIGZvciAoQWlyOjpJbnN0JiBpbnN0
IDogKmJsb2NrKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGluc3Qua2luZC5vcGNvZGUgPT0gQWly
OjpQYXRjaCAmJiBpbnN0Lm9yaWdpbiA9PSBwYXRjaHBvaW50KQotICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBpbnN0LmZvckVhY2hUbXBGYXN0KAotICAgICAg
ICAgICAgICAgICAgICBbJl0gKEFpcjo6VG1wIHRtcCkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKHRtcC5pc1JlZygpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXNDU1Jz
IHw9IGNzcnMuZ2V0KHRtcC5yZWcoKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAyKSB7Ci0g
ICAgICAgICAgICAvLyBPdXIgbGVzcyBnb29kIHJlZ2lzdGVyIGFsbG9jYXRvcnMgbWF5IHVzZSB0
aGUKLSAgICAgICAgICAgIC8vIHBpbm5lZCBDU1JzIGluIGEgbW92ZS4KLSAgICAgICAgICAgIHVz
ZXNDU1JzID0gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgZm9yIChjb25zdCBSZWdpc3RlckF0
T2Zmc2V0JiByZWdBdE9mZnNldCA6IHByb2MuY2FsbGVlU2F2ZVJlZ2lzdGVyQXRPZmZzZXRMaXN0
KCkpCi0gICAgICAgICAgICB1c2VzQ1NScyB8PSBjc3JzLmdldChyZWdBdE9mZnNldC5yZWcoKSk7
Ci0gICAgICAgIENIRUNLX0VRKHVzZXNDU1JzLCAhcGluKTsKLSAgICB9OwotCi0gICAgZ28odHJ1
ZSk7Ci0gICAgZ28oZmFsc2UpOwotfQotCi12b2lkIHRlc3RYODZMZWFBZGRBZGRTaGxMZWZ0KCkK
LXsKLSAgICAvLyBBZGQoQWRkKFNobChAeCwgJGMpLCBAeSksICRkKQotICAgIFByb2NlZHVyZSBw
cm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUq
IHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIEFkZCwgT3Jp
Z2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9j
LCBBZGQsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAg
ICAgICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgMikpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKLSAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxMDAp
KTsKLSAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJl
c3VsdCk7Ci0gICAgCi0gICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAgaWYg
KHByb2Mub3B0TGV2ZWwoKSA+IDEpCi0gICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2Rl
LCAibGVhIDB4NjQoJXJkaSwlcnNpLDQpLCAlcmF4Iik7Ci0gICAgZWxzZQotICAgICAgICBjaGVj
a1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxlYSIpOwotICAgIENIRUNLX0VRKGludm9rZTxpbnRw
dHJfdD4oKmNvZGUsIDEsIDIpLCAoMSArICgyIDw8IDIpKSArIDEwMCk7Ci19Ci0KLXZvaWQgdGVz
dFg4NkxlYUFkZEFkZFNobFJpZ2h0KCkKLXsKLSAgICAvLyBBZGQoQWRkKEB4LCBTaGwoQHksICRj
KSksICRkKQotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
Ci0gICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAg
ICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIxKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgMikpKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCAxMDApKTsKLSAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgCi0gICAgYXV0byBjb2RlID0gY29t
cGlsZVByb2MocHJvYyk7Ci0gICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA+IDEpCi0gICAgICAgIGNo
ZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibGVhIDB4NjQoJXJkaSwlcnNpLDQpLCAlcmF4Iik7
Ci0gICAgZWxzZQotICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxlYSIpOwot
ICAgIENIRUNLX0VRKGludm9rZTxpbnRwdHJfdD4oKmNvZGUsIDEsIDIpLCAoMSArICgyIDw8IDIp
KSArIDEwMCk7Ci19Ci0KLXZvaWQgdGVzdFg4NkxlYUFkZEFkZCgpCi17Ci0gICAgLy8gQWRkKEFk
ZChAeCwgQHkpLCAkYykKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KAotICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKLSAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCi0gICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMTAwKSk7
Ci0gICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1
bHQpOwotICAgIAotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotICAgIENIRUNL
X0VRKGludm9rZTxpbnRwdHJfdD4oKmNvZGUsIDEsIDIpLCAoMSArIDIpICsgMTAwKTsKLSAgICBp
ZiAocHJvYy5vcHRMZXZlbCgpID4gMSkgewotICAgICAgICBjaGVja0Rpc2Fzc2VtYmx5KAotICAg
ICAgICAgICAgKmNvZGUsCi0gICAgICAgICAgICBbJl0gKGNvbnN0IGNoYXIqIGRpc2Fzc2VtYmx5
KSAtPiBib29sIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3Ryc3RyKGRpc2Fzc2VtYmx5LCAi
bGVhIDB4NjQoJXJkaSwlcnNpKSwgJXJheCIpCi0gICAgICAgICAgICAgICAgICAgIHx8IHN0cnN0
cihkaXNhc3NlbWJseSwgImxlYSAweDY0KCVyc2ksJXJkaSksICVyYXgiKTsKLSAgICAgICAgICAg
IH0sCi0gICAgICAgICAgICAiRXhwZWN0ZWQgdG8gZmluZCBzb21ldGhpbmcgbGlrZSBsZWEgMHg2
NCglcmRpLCVyc2kpLCAlcmF4IGJ1dCBkaWRuJ3QhIik7Ci0gICAgfQotfQotCi12b2lkIHRlc3RY
ODZMZWFBZGRTaGxSaWdodCgpCi17Ci0gICAgLy8gQWRkKFNobChAeCwgJGMpLCBAeSkKLSAgICBQ
cm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwot
ICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9j
LCBBZGQsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdpbigpLAotICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjEpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENv
bnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDIpKSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOwotICAgIAotICAgIGF1dG8gY29k
ZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotICAgIGlmIChwcm9jLm9wdExldmVsKCkgPiAxKQotICAg
ICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxlYSAoJXJkaSwlcnNpLDQpLCAlcmF4
Iik7Ci0gICAgZWxzZQotICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxlYSIp
OwotICAgIENIRUNLX0VRKGludm9rZTxpbnRwdHJfdD4oKmNvZGUsIDEsIDIpLCAxICsgKDIgPDwg
MikpOwotfQotCi12b2lkIHRlc3RYODZMZWFBZGRTaGxMZWZ0U2NhbGUxKCkKLXsKLSAgICAvLyBB
ZGQoU2hsKEB4LCAkYyksIEB5KQotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAg
IHByb2MsIFNobCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSksCi0gICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkp
KTsKLSAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJl
c3VsdCk7Ci0gICAgCi0gICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAgQ0hF
Q0tfRVEoaW52b2tlPGludHB0cl90PigqY29kZSwgMSwgMiksIDEgKyAyKTsKLSAgICBpZiAocHJv
Yy5vcHRMZXZlbCgpID4gMSkgewotICAgICAgICBjaGVja0Rpc2Fzc2VtYmx5KAotICAgICAgICAg
ICAgKmNvZGUsCi0gICAgICAgICAgICBbJl0gKGNvbnN0IGNoYXIqIGRpc2Fzc2VtYmx5KSAtPiBi
b29sIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3Ryc3RyKGRpc2Fzc2VtYmx5LCAibGVhICgl
cmRpLCVyc2kpLCAlcmF4IikKLSAgICAgICAgICAgICAgICAgICAgfHwgc3Ryc3RyKGRpc2Fzc2Vt
Ymx5LCAibGVhICglcnNpLCVyZGkpLCAlcmF4Iik7Ci0gICAgICAgICAgICB9LAotICAgICAgICAg
ICAgIkV4cGVjdGVkIHRvIGZpbmQgc29tZXRoaW5nIGxpa2UgbGVhICglcmRpLCVyc2kpLCAlcmF4
IGJ1dCBkaWRuJ3QhIik7Ci0gICAgfQotfQotCi12b2lkIHRlc3RYODZMZWFBZGRTaGxMZWZ0U2Nh
bGUyKCkKLXsKLSAgICAvLyBBZGQoU2hsKEB4LCAkYyksIEB5KQotICAgIFByb2NlZHVyZSBwcm9j
OwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIHJl
c3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIEFkZCwgT3JpZ2lu
KCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKLSAgICAgICAgICAgIHByb2MsIFNobCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMSksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgMSkpKTsKLSAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJl
dHVybiwgT3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgCi0gICAgYXV0byBjb2RlID0gY29tcGlsZVBy
b2MocHJvYyk7Ci0gICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA+IDEpCi0gICAgICAgIGNoZWNrVXNl
c0luc3RydWN0aW9uKCpjb2RlLCAibGVhICglcmRpLCVyc2ksMiksICVyYXgiKTsKLSAgICBlbHNl
Ci0gICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibGVhIik7Ci0gICAgQ0hFQ0tf
RVEoaW52b2tlPGludHB0cl90PigqY29kZSwgMSwgMiksIDEgKyAoMiA8PCAxKSk7Ci19Ci0KLXZv
aWQgdGVzdFg4NkxlYUFkZFNobExlZnRTY2FsZTQoKQotewotICAgIC8vIEFkZChTaGwoQHgsICRj
KSwgQHkpCi0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
LSAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKLSAgICAgICAgICAgIHByb2MsIFNobCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMSksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgMikpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKLSAgICAK
LSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBpZiAocHJvYy5vcHRMZXZl
bCgpID4gMSkKLSAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJsZWEgKCVyZGks
JXJzaSw0KSwgJXJheCIpOwotICAgIGVsc2UKLSAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24o
KmNvZGUsICJsZWEiKTsKLSAgICBDSEVDS19FUShpbnZva2U8aW50cHRyX3Q+KCpjb2RlLCAxLCAy
KSwgMSArICgyIDw8IDIpKTsKLX0KLQotdm9pZCB0ZXN0WDg2TGVhQWRkU2hsTGVmdFNjYWxlOCgp
Ci17Ci0gICAgLy8gQWRkKFNobChAeCwgJGMpLCBAeSkKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiByZXN1bHQg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAot
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
Ci0gICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjEpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIDMpKSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCByZXN1bHQpOwotICAgIAotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHBy
b2MpOwotICAgIGlmIChwcm9jLm9wdExldmVsKCkgPiAxKQotICAgICAgICBjaGVja1VzZXNJbnN0
cnVjdGlvbigqY29kZSwgImxlYSAoJXJkaSwlcnNpLDgpLCAlcmF4Iik7Ci0gICAgZWxzZQotICAg
ICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxlYSIpOwotICAgIENIRUNLX0VRKGlu
dm9rZTxpbnRwdHJfdD4oKmNvZGUsIDEsIDIpLCAxICsgKDIgPDwgMykpOwotfQotCi12b2lkIHRl
c3RBZGRTaGwzMigpCi17Ci0gICAgLy8gQWRkKFNobChAeCwgJGMpLCBAeSkKLSAgICBQcm9jZWR1
cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZh
bHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBBZGQs
IE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdpbigpLAotICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjEpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIDMyKSkpOwotICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKLSAgICAKLSAgICBhdXRvIGNvZGUgPSBj
b21waWxlUHJvYyhwcm9jKTsKLSAgICBDSEVDS19FUShpbnZva2U8aW50NjRfdD4oKmNvZGUsIDEs
IDIpLCAxICsgKHN0YXRpY19jYXN0PGludDY0X3Q+KDIpIDw8IHN0YXRpY19jYXN0PGludDY0X3Q+
KDMyKSkpOwotfQotCi12b2lkIHRlc3RBZGRTaGw2NCgpCi17Ci0gICAgLy8gQWRkKFNobChAeCwg
JGMpLCBAeSkKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KAotICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCks
Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBTaGws
IE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpLAotICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDY0KSkpOwotICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKLSAg
ICAKLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBDSEVDS19FUShpbnZv
a2U8aW50cHRyX3Q+KCpjb2RlLCAxLCAyKSwgMSArIDIpOwotfQotCi12b2lkIHRlc3RBZGRTaGw2
NSgpCi17Ci0gICAgLy8gQWRkKFNobChAeCwgJGMpLCBAeSkKLSAgICBQcm9jZWR1cmUgcHJvYzsK
LSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiByZXN1
bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigp
LAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCi0gICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjEpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIDY1KSkpOwotICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKLSAgICAKLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJv
Yyhwcm9jKTsKLSAgICBDSEVDS19FUShpbnZva2U8aW50cHRyX3Q+KCpjb2RlLCAxLCAyKSwgMSAr
ICgyIDw8IDEpKTsKLX0KLQotdm9pZCB0ZXN0UmVkdWNlU3RyZW5ndGhSZWFzc29jaWF0aW9uKGJv
b2wgZmxpcCkKLXsKLSAgICAvLyBBZGQoQWRkKEB4LCAkYyksIEB5KSAtPiBBZGQoQWRkKEB4LCBA
eSksICRjKQotICAgIC8vIGFuZAotICAgIC8vIEFkZChAeSwgQWRkKEB4LCAkYykpIC0+IEFkZChB
ZGQoQHgsIEB5KSwgJGMpCi0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
LSAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAKLSAgICBWYWx1ZSogaW5u
ZXJBZGQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBBZGQsIE9yaWdp
bigpLCBhcmcxLAotICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIDQyKSk7Ci0gICAgCi0gICAgVmFsdWUqIG91dGVyQWRkOwotICAgIGlmIChmbGlw
KQotICAgICAgICBvdXRlckFkZCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBP
cmlnaW4oKSwgYXJnMiwgaW5uZXJBZGQpOwotICAgIGVsc2UKLSAgICAgICAgb3V0ZXJBZGQgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGlubmVyQWRkLCBhcmcy
KTsKLSAgICAKLSAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2lu
KCksIG91dGVyQWRkKTsKLSAgICAKLSAgICBwcm9jLnJlc2V0UmVhY2hhYmlsaXR5KCk7Ci0KLSAg
ICBpZiAoc2hvdWxkQmVWZXJib3NlKCkpIHsKLSAgICAgICAgZGF0YUxvZygiSVIgYmVmb3JlIHJl
ZHVjZVN0cmVuZ3RoOlxuIik7Ci0gICAgICAgIGRhdGFMb2cocHJvYyk7Ci0gICAgfQotICAgIAot
ICAgIHJlZHVjZVN0cmVuZ3RoKHByb2MpOwotICAgIAotICAgIGlmIChzaG91bGRCZVZlcmJvc2Uo
KSkgewotICAgICAgICBkYXRhTG9nKCJJUiBhZnRlciByZWR1Y2VTdHJlbmd0aDpcbiIpOwotICAg
ICAgICBkYXRhTG9nKHByb2MpOwotICAgIH0KLSAgICAKLSAgICBDSEVDS19FUShyb290LT5sYXN0
KCktPm9wY29kZSgpLCBSZXR1cm4pOwotICAgIENIRUNLX0VRKHJvb3QtPmxhc3QoKS0+Y2hpbGQo
MCktPm9wY29kZSgpLCBBZGQpOwotICAgIENIRUNLKHJvb3QtPmxhc3QoKS0+Y2hpbGQoMCktPmNo
aWxkKDEpLT5pc0ludFB0cig0MikpOwotICAgIENIRUNLX0VRKHJvb3QtPmxhc3QoKS0+Y2hpbGQo
MCktPmNoaWxkKDApLT5vcGNvZGUoKSwgQWRkKTsKLSAgICBDSEVDSygKLSAgICAgICAgKHJvb3Qt
Pmxhc3QoKS0+Y2hpbGQoMCktPmNoaWxkKDApLT5jaGlsZCgwKSA9PSBhcmcxICYmIHJvb3QtPmxh
c3QoKS0+Y2hpbGQoMCktPmNoaWxkKDApLT5jaGlsZCgxKSA9PSBhcmcyKSB8fAotICAgICAgICAo
cm9vdC0+bGFzdCgpLT5jaGlsZCgwKS0+Y2hpbGQoMCktPmNoaWxkKDApID09IGFyZzIgJiYgcm9v
dC0+bGFzdCgpLT5jaGlsZCgwKS0+Y2hpbGQoMCktPmNoaWxkKDEpID09IGFyZzEpKTsKLX0KLQot
dm9pZCB0ZXN0TG9hZEJhc2VJbmRleFNoaWZ0MigpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0g
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgTG9hZCwgSW50MzIs
IE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAg
ICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAg
ICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMSksCi0gICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCAyKSkpKSk7Ci0gICAgYXV0byBjb2RlID0gY29tcGlsZVBy
b2MocHJvYyk7Ci0gICAgaWYgKGlzWDg2KCkgJiYgcHJvYy5vcHRMZXZlbCgpID4gMSkKLSAgICAg
ICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICIoJXJkaSwlcnNpLDQpIik7Ci0gICAgaW50
MzJfdCB2YWx1ZSA9IDEyMzQxMjM0OwotICAgIGNoYXIqIHB0ciA9IGJpdHdpc2VfY2FzdDxjaGFy
Kj4oJnZhbHVlKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMTA7ICsraSkKLSAgICAg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludDMyX3Q+KCpjb2RlLCBwdHIgLSAoc3RhdGljX2Nhc3Q8aW50
cHRyX3Q+KDEpIDw8IHN0YXRpY19jYXN0PGludHB0cl90PigyKSkgKiBpLCBpKSwgMTIzNDEyMzQp
OwotfQotCi12b2lkIHRlc3RMb2FkQmFzZUluZGV4U2hpZnQzMigpCi17Ci0jaWYgQ1BVKEFERFJF
U1M2NCkKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0g
ICAgICAgICAgICBwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCks
Ci0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAotICAgICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgICAgIHByb2MsIFNobCwgT3JpZ2lu
KCksCi0gICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSwKLSAgICAgICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDMyKSkp
KSk7Ci0gICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAgaW50MzJfdCB2YWx1
ZSA9IDEyMzQxMjM0OwotICAgIGNoYXIqIHB0ciA9IGJpdHdpc2VfY2FzdDxjaGFyKj4oJnZhbHVl
KTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMTA7ICsraSkKLSAgICAgICAgQ0hFQ0tf
RVEoaW52b2tlPGludDMyX3Q+KCpjb2RlLCBwdHIgLSAoc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDEp
IDw8IHN0YXRpY19jYXN0PGludHB0cl90PigzMikpICogaSwgaSksIDEyMzQxMjM0KTsKLSNlbmRp
ZgotfQotCi12b2lkIHRlc3RPcHRpbWl6ZU1hdGVyaWFsaXphdGlvbigpCi17Ci0gICAgUHJvY2Vk
dXJlIHByb2M7Ci0gICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDIpCi0gICAgICAgIHJldHVybjsK
LQotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBw
ZW5kTmV3PENDYWxsVmFsdWU+KAotICAgICAgICBwcm9jLCBWb2lkLCBPcmlnaW4oKSwKLSAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAweDEyMzQy
MzQ1MzQ1NmxsdSksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgMHgxMjM0MjM0NTM0NTZsbHUgKyAzNSkpOwotICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7Ci0gICAgCi0gICAgYXV0byBjb2RlID0g
Y29tcGlsZVByb2MocHJvYyk7Ci0gICAgYm9vbCBmb3VuZCA9IGZhbHNlOwotICAgIGZvciAoQWly
OjpCYXNpY0Jsb2NrKiBibG9jayA6IHByb2MuY29kZSgpKSB7Ci0gICAgICAgIGZvciAoQWlyOjpJ
bnN0JiBpbnN0IDogKmJsb2NrKSB7Ci0gICAgICAgICAgICBpZiAoaW5zdC5raW5kLm9wY29kZSAh
PSBBaXI6OkFkZDY0KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYg
KGluc3QuYXJnc1swXSAhPSBBaXI6OkFyZzo6aW1tKDM1KSkKLSAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLSAgICBD
SEVDSyhmb3VuZCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci12b2lkIGdlbmVyYXRl
TG9vcChQcm9jZWR1cmUmIHByb2MsIGNvbnN0IEZ1bmMmIGZ1bmMpCi17Ci0gICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBsb29wID0gcHJvYy5h
ZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGVuZCA9IHByb2MuYWRkQmxvY2soKTsKLQotICAg
IFVwc2lsb25WYWx1ZSogaW5pdGlhbEluZGV4ID0gcm9vdC0+YXBwZW5kTmV3PFVwc2lsb25WYWx1
ZT4oCi0gICAgICAgIHByb2MsIE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgMCkpOwotICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
SnVtcCwgT3JpZ2luKCkpOwotICAgIHJvb3QtPnNldFN1Y2Nlc3NvcnMobG9vcCk7Ci0gICAgCi0g
ICAgVmFsdWUqIGluZGV4ID0gbG9vcC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBQaGksIEludDMy
LCBPcmlnaW4oKSk7Ci0gICAgaW5pdGlhbEluZGV4LT5zZXRQaGkoaW5kZXgpOwotICAgIAotICAg
IFZhbHVlKiBvbmUgPSBmdW5jKGxvb3AsIGluZGV4KTsKLSAgICAKLSAgICBWYWx1ZSogbmV4dElu
ZGV4ID0gbG9vcC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBpbmRleCwg
b25lKTsKLSAgICBVcHNpbG9uVmFsdWUqIGxvb3BJbmRleCA9IGxvb3AtPmFwcGVuZE5ldzxVcHNp
bG9uVmFsdWU+KHByb2MsIE9yaWdpbigpLCBuZXh0SW5kZXgpOwotICAgIGxvb3BJbmRleC0+c2V0
UGhpKGluZGV4KTsKLSAgICBsb29wLT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBC
cmFuY2gsIE9yaWdpbigpLAotICAgICAgICBsb29wLT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAg
ICAgICAgcHJvYywgTGVzc1RoYW4sIE9yaWdpbigpLCBuZXh0SW5kZXgsCi0gICAgICAgICAgICBs
b29wLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMTAwKSkpOwotICAg
IGxvb3AtPnNldFN1Y2Nlc3NvcnMobG9vcCwgZW5kKTsKLSAgICAKLSAgICBlbmQtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7Ci19Ci0KLXN0ZDo6YXJyYXk8aW50LCAx
MDA+IG1ha2VBcnJheUZvckxvb3BzKCkKLXsKLSAgICBzdGQ6OmFycmF5PGludCwgMTAwPiByZXN1
bHQ7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlc3VsdC5zaXplKCk7ICsraSkKLSAg
ICAgICAgcmVzdWx0W2ldID0gaSAmIDE7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdGVtcGxh
dGU8dHlwZW5hbWUgRnVuYz4KLXZvaWQgZ2VuZXJhdGVMb29wTm90QmFja3dhcmRzRG9taW5hbnQo
UHJvY2VkdXJlJiBwcm9jLCBzdGQ6OmFycmF5PGludCwgMTAwPiYgYXJyYXksIGNvbnN0IEZ1bmMm
IGZ1bmMpCi17Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBC
YXNpY0Jsb2NrKiBsb29wSGVhZGVyID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sq
IGxvb3BDYWxsID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGxvb3BGb290ZXIg
PSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogZW5kID0gcHJvYy5hZGRCbG9jaygp
OwotCi0gICAgVXBzaWxvblZhbHVlKiBpbml0aWFsSW5kZXggPSByb290LT5hcHBlbmROZXc8VXBz
aWxvblZhbHVlPigKLSAgICAgICAgcHJvYywgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7Ci0gICAgLy8gSWYgeW91IGxvb2sgY2FyZWZ1
bGx5LCB5b3UnbGwgbm90aWNlIHRoYXQgdGhpcyBpcyBhbiBleHRyZW1lbHkgc25lYWt5IHVzZSBv
ZiBVcHNpbG9uIHRoYXQgZGVtb25zdHJhdGVzCi0gICAgLy8gdGhlIGV4dGVudCB0byB3aGljaCBv
dXIgU1NBIGlzIGRpZmZlcmVudCBmcm9tIG5vcm1hbC1wZXJzb24gU1NBLgotICAgIFVwc2lsb25W
YWx1ZSogZGVmYXVsdE9uZSA9IHJvb3QtPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KAotICAgICAg
ICBwcm9jLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIDEpKTsKLSAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEp1bXAsIE9yaWdp
bigpKTsKLSAgICByb290LT5zZXRTdWNjZXNzb3JzKGxvb3BIZWFkZXIpOwotICAgIAotICAgIFZh
bHVlKiBpbmRleCA9IGxvb3BIZWFkZXItPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUGhpLCBJbnQz
MiwgT3JpZ2luKCkpOwotICAgIGluaXRpYWxJbmRleC0+c2V0UGhpKGluZGV4KTsKLSAgICAKLSAg
ICAvLyBpZiAoYXJyYXlbaW5kZXhdKQotICAgIGxvb3BIZWFkZXItPmFwcGVuZE5ldzxWYWx1ZT4o
Ci0gICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCi0gICAgICAgIGxvb3BIZWFkZXItPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBMb2FkLCBJbnQzMiwgT3Jp
Z2luKCksCi0gICAgICAgICAgICBsb29wSGVhZGVyLT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAg
ICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgbG9vcEhlYWRl
ci0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmYXJyYXkpLAotICAg
ICAgICAgICAgICAgIGxvb3BIZWFkZXItPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAg
ICAgICAgIHByb2MsIE11bCwgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgICAgIGxvb3BIZWFk
ZXItPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgWkV4dDMyLCBPcmlnaW4oKSwgaW5kZXgpLAotICAg
ICAgICAgICAgICAgICAgICBsb29wSGVhZGVyLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIHNpemVvZihpbnQpKSkpKSk7Ci0gICAgbG9vcEhlYWRlci0+c2V0U3VjY2Vz
c29ycyhsb29wQ2FsbCwgbG9vcEZvb3Rlcik7Ci0gICAgCi0gICAgVmFsdWUqIGZ1bmN0aW9uQ2Fs
bCA9IGZ1bmMobG9vcENhbGwsIGluZGV4KTsKLSAgICBVcHNpbG9uVmFsdWUqIG9uZUZyb21GdW5j
dGlvbiA9IGxvb3BDYWxsLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
ZnVuY3Rpb25DYWxsKTsKLSAgICBsb29wQ2FsbC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBKdW1w
LCBPcmlnaW4oKSk7Ci0gICAgbG9vcENhbGwtPnNldFN1Y2Nlc3NvcnMobG9vcEZvb3Rlcik7Ci0g
ICAgCi0gICAgVmFsdWUqIG9uZSA9IGxvb3BGb290ZXItPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
UGhpLCBJbnQzMiwgT3JpZ2luKCkpOwotICAgIGRlZmF1bHRPbmUtPnNldFBoaShvbmUpOwotICAg
IG9uZUZyb21GdW5jdGlvbi0+c2V0UGhpKG9uZSk7Ci0gICAgVmFsdWUqIG5leHRJbmRleCA9IGxv
b3BGb290ZXItPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgaW5kZXgsIG9u
ZSk7Ci0gICAgVXBzaWxvblZhbHVlKiBsb29wSW5kZXggPSBsb29wRm9vdGVyLT5hcHBlbmROZXc8
VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbmV4dEluZGV4KTsKLSAgICBsb29wSW5kZXgt
PnNldFBoaShpbmRleCk7Ci0gICAgbG9vcEZvb3Rlci0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAg
ICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKLSAgICAgICAgbG9vcEZvb3Rlci0+YXBwZW5kTmV3
PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIExlc3NUaGFuLCBPcmlnaW4oKSwgbmV4dEluZGV4
LAotICAgICAgICAgICAgbG9vcEZvb3Rlci0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIDEwMCkpKTsKLSAgICBsb29wRm9vdGVyLT5zZXRTdWNjZXNzb3JzKGxvb3BIZWFk
ZXIsIGVuZCk7Ci0gICAgCi0gICAgZW5kLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwg
T3JpZ2luKCkpOwotfQotCi1zdGF0aWMgaW50IG9uZUZ1bmN0aW9uKGludCogY2FsbENvdW50KQot
ewotICAgICgqY2FsbENvdW50KSsrOwotICAgIHJldHVybiAxOwotfQotCi1zdGF0aWMgdm9pZCBu
b09wRnVuY3Rpb24oKQotewotfQotCi12b2lkIHRlc3RMSUNNUHVyZSgpCi17Ci0gICAgUHJvY2Vk
dXJlIHByb2M7Ci0KLSAgICBpZiAocHJvYy5vcHRMZXZlbCgpIDwgMikKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgZ2VuZXJhdGVMb29wKAotICAgICAgICBwcm9jLAotICAgICAgICBbJl0gKEJhc2lj
QmxvY2sqIGxvb3AsIFZhbHVlKikgLT4gVmFsdWUqIHsKLSAgICAgICAgICAgIHJldHVybiBsb29w
LT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgSW50MzIsIE9y
aWdpbigpLCBFZmZlY3RzOjpub25lKCksCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3
PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG9u
ZUZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSksCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApKTsKLSAgICAgICAgfSk7Ci0gICAgCi0gICAgdW5zaWduZWQgY2FsbENvdW50ID0gMDsKLSAg
ICBjb21waWxlQW5kUnVuPHZvaWQ+KHByb2MsICZjYWxsQ291bnQpOwotICAgIENIRUNLX0VRKGNh
bGxDb3VudCwgMXUpOwotfQotCi12b2lkIHRlc3RMSUNNUHVyZVNpZGVFeGl0cygpCi17Ci0gICAg
UHJvY2VkdXJlIHByb2M7Ci0gICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDIpCi0gICAgICAgIHJl
dHVybjsKLSAgICBnZW5lcmF0ZUxvb3AoCi0gICAgICAgIHByb2MsCi0gICAgICAgIFsmXSAoQmFz
aWNCbG9jayogbG9vcCwgVmFsdWUqKSAtPiBWYWx1ZSogewotICAgICAgICAgICAgRWZmZWN0cyBl
ZmZlY3RzID0gRWZmZWN0czo6bm9uZSgpOwotICAgICAgICAgICAgZWZmZWN0cy5leGl0c1NpZGV3
YXlzID0gdHJ1ZTsKLSAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKLSAg
ICAgICAgICAgICAgICBwcm9jLCBWb2lkLCBPcmlnaW4oKSwgZWZmZWN0cywKLSAgICAgICAgICAg
ICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NG
dW5jdGlvblB0cjx2b2lkKj4obm9PcEZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSkpOwotCi0gICAg
ICAgICAgICByZXR1cm4gbG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAotICAgICAgICAgICAg
ICAgIHByb2MsIEludDMyLCBPcmlnaW4oKSwgRWZmZWN0czo6bm9uZSgpLAotICAgICAgICAgICAg
ICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1
bmN0aW9uUHRyPHZvaWQqPihvbmVGdW5jdGlvbiwgQjNDQ2FsbFB0clRhZykpLAotICAgICAgICAg
ICAgICAgIGxvb3AtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgICAgIH0pOwotICAgIAotICAgIHVuc2lnbmVk
IGNhbGxDb3VudCA9IDA7Ci0gICAgY29tcGlsZUFuZFJ1bjx2b2lkPihwcm9jLCAmY2FsbENvdW50
KTsKLSAgICBDSEVDS19FUShjYWxsQ291bnQsIDF1KTsKLX0KLQotdm9pZCB0ZXN0TElDTVB1cmVX
cml0ZXNQaW5uZWQoKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIGlmIChwcm9jLm9wdExl
dmVsKCkgPCAyKQotICAgICAgICByZXR1cm47Ci0gICAgZ2VuZXJhdGVMb29wKAotICAgICAgICBw
cm9jLAotICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGxvb3AsIFZhbHVlKikgLT4gVmFsdWUqIHsK
LSAgICAgICAgICAgIEVmZmVjdHMgZWZmZWN0cyA9IEVmZmVjdHM6Om5vbmUoKTsKLSAgICAgICAg
ICAgIGVmZmVjdHMud3JpdGVzUGlubmVkID0gdHJ1ZTsKLSAgICAgICAgICAgIGxvb3AtPmFwcGVu
ZE5ldzxDQ2FsbFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBWb2lkLCBPcmlnaW4oKSwg
ZWZmZWN0cywKLSAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4obm9PcEZ1bmN0aW9uLCBCM0ND
YWxsUHRyVGFnKSkpOwotCi0gICAgICAgICAgICByZXR1cm4gbG9vcC0+YXBwZW5kTmV3PENDYWxs
VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIEludDMyLCBPcmlnaW4oKSwgRWZmZWN0czo6
bm9uZSgpLAotICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihvbmVGdW5jdGlvbiwgQjNDQ2Fs
bFB0clRhZykpLAotICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgICAgIH0p
OwotICAgIAotICAgIHVuc2lnbmVkIGNhbGxDb3VudCA9IDA7Ci0gICAgY29tcGlsZUFuZFJ1bjx2
b2lkPihwcm9jLCAmY2FsbENvdW50KTsKLSAgICBDSEVDS19FUShjYWxsQ291bnQsIDF1KTsKLX0K
LQotdm9pZCB0ZXN0TElDTVB1cmVXcml0ZXMoKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAg
IGlmIChwcm9jLm9wdExldmVsKCkgPCAyKQotICAgICAgICByZXR1cm47Ci0gICAgZ2VuZXJhdGVM
b29wKAotICAgICAgICBwcm9jLAotICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGxvb3AsIFZhbHVl
KikgLT4gVmFsdWUqIHsKLSAgICAgICAgICAgIEVmZmVjdHMgZWZmZWN0cyA9IEVmZmVjdHM6Om5v
bmUoKTsKLSAgICAgICAgICAgIGVmZmVjdHMud3JpdGVzID0gSGVhcFJhbmdlKDYzNDc5KTsKLSAg
ICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKLSAgICAgICAgICAgICAgICBw
cm9jLCBWb2lkLCBPcmlnaW4oKSwgZWZmZWN0cywKLSAgICAgICAgICAgICAgICBsb29wLT5hcHBl
bmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lk
Kj4obm9PcEZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSkpOwotCi0gICAgICAgICAgICByZXR1cm4g
bG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIEludDMy
LCBPcmlnaW4oKSwgRWZmZWN0czo6bm9uZSgpLAotICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVu
ZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQq
PihvbmVGdW5jdGlvbiwgQjNDQ2FsbFB0clRhZykpLAotICAgICAgICAgICAgICAgIGxvb3AtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSk7Ci0gICAgICAgIH0pOwotICAgIAotICAgIHVuc2lnbmVkIGNhbGxDb3VudCA9IDA7
Ci0gICAgY29tcGlsZUFuZFJ1bjx2b2lkPihwcm9jLCAmY2FsbENvdW50KTsKLSAgICBDSEVDS19F
UShjYWxsQ291bnQsIDF1KTsKLX0KLQotdm9pZCB0ZXN0TElDTVJlYWRzTG9jYWxTdGF0ZSgpCi17
Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgZ2VuZXJhdGVMb29wKAotICAgICAgICBwcm9jLAot
ICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGxvb3AsIFZhbHVlKikgLT4gVmFsdWUqIHsKLSAgICAg
ICAgICAgIEVmZmVjdHMgZWZmZWN0cyA9IEVmZmVjdHM6Om5vbmUoKTsKLSAgICAgICAgICAgIGVm
ZmVjdHMucmVhZHNMb2NhbFN0YXRlID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiBsb29wLT5h
cHBlbmROZXc8Q0NhbGxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgSW50MzIsIE9yaWdp
bigpLCBlZmZlY3RzLAotICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihvbmVGdW5jdGlvbiwg
QjNDQ2FsbFB0clRhZykpLAotICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAg
ICAgIH0pOwotICAgIAotICAgIHVuc2lnbmVkIGNhbGxDb3VudCA9IDA7Ci0gICAgY29tcGlsZUFu
ZFJ1bjx2b2lkPihwcm9jLCAmY2FsbENvdW50KTsKLSAgICBDSEVDS19FUShjYWxsQ291bnQsIDEw
MHUpOyAvLyBXZSdsbCBmYWlsIHRvIGhvaXN0IGJlY2F1c2UgdGhlIGxvb3AgaGFzIFVwc2lsb25z
LgotfQotCi12b2lkIHRlc3RMSUNNUmVhZHNQaW5uZWQoKQotewotICAgIFByb2NlZHVyZSBwcm9j
OwotICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAyKQotICAgICAgICByZXR1cm47Ci0gICAgZ2Vu
ZXJhdGVMb29wKAotICAgICAgICBwcm9jLAotICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGxvb3As
IFZhbHVlKikgLT4gVmFsdWUqIHsKLSAgICAgICAgICAgIEVmZmVjdHMgZWZmZWN0cyA9IEVmZmVj
dHM6Om5vbmUoKTsKLSAgICAgICAgICAgIGVmZmVjdHMucmVhZHNQaW5uZWQgPSB0cnVlOwotICAg
ICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKLSAgICAgICAgICAg
ICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksIGVmZmVjdHMsCi0gICAgICAgICAgICAgICAgbG9v
cC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25Q
dHI8dm9pZCo+KG9uZUZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSksCi0gICAgICAgICAgICAgICAg
bG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApKTsKLSAgICAgICAgfSk7Ci0gICAgCi0gICAgdW5zaWduZWQgY2FsbENv
dW50ID0gMDsKLSAgICBjb21waWxlQW5kUnVuPHZvaWQ+KHByb2MsICZjYWxsQ291bnQpOwotICAg
IENIRUNLX0VRKGNhbGxDb3VudCwgMXUpOwotfQotCi12b2lkIHRlc3RMSUNNUmVhZHMoKQotewot
ICAgIFByb2NlZHVyZSBwcm9jOwotICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAyKQotICAgICAg
ICByZXR1cm47Ci0gICAgZ2VuZXJhdGVMb29wKAotICAgICAgICBwcm9jLAotICAgICAgICBbJl0g
KEJhc2ljQmxvY2sqIGxvb3AsIFZhbHVlKikgLT4gVmFsdWUqIHsKLSAgICAgICAgICAgIEVmZmVj
dHMgZWZmZWN0cyA9IEVmZmVjdHM6Om5vbmUoKTsKLSAgICAgICAgICAgIGVmZmVjdHMucmVhZHMg
PSBIZWFwUmFuZ2U6OnRvcCgpOwotICAgICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5ldzxD
Q2FsbFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksIGVmZmVj
dHMsCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG9uZUZ1bmN0aW9uLCBCM0NDYWxsUHRy
VGFnKSksCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICAgICAgfSk7Ci0g
ICAgCi0gICAgdW5zaWduZWQgY2FsbENvdW50ID0gMDsKLSAgICBjb21waWxlQW5kUnVuPHZvaWQ+
KHByb2MsICZjYWxsQ291bnQpOwotICAgIENIRUNLX0VRKGNhbGxDb3VudCwgMXUpOwotfQotCi12
b2lkIHRlc3RMSUNNUHVyZU5vdEJhY2t3YXJkc0RvbWluYW50KCkKLXsKLSAgICBQcm9jZWR1cmUg
cHJvYzsKLSAgICBpZiAocHJvYy5vcHRMZXZlbCgpIDwgMikKLSAgICAgICAgcmV0dXJuOwotICAg
IGF1dG8gYXJyYXkgPSBtYWtlQXJyYXlGb3JMb29wcygpOwotICAgIGdlbmVyYXRlTG9vcE5vdEJh
Y2t3YXJkc0RvbWluYW50KAotICAgICAgICBwcm9jLCBhcnJheSwKLSAgICAgICAgWyZdIChCYXNp
Y0Jsb2NrKiBsb29wLCBWYWx1ZSopIC0+IFZhbHVlKiB7Ci0gICAgICAgICAgICByZXR1cm4gbG9v
cC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIEludDMyLCBP
cmlnaW4oKSwgRWZmZWN0czo6bm9uZSgpLAotICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5l
dzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihv
bmVGdW5jdGlvbiwgQjNDQ2FsbFB0clRhZykpLAotICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSk7Ci0gICAgICAgIH0pOwotICAgIAotICAgIHVuc2lnbmVkIGNhbGxDb3VudCA9IDA7Ci0g
ICAgY29tcGlsZUFuZFJ1bjx2b2lkPihwcm9jLCAmY2FsbENvdW50KTsKLSAgICBDSEVDS19FUShj
YWxsQ291bnQsIDF1KTsKLX0KLQotdm9pZCB0ZXN0TElDTVB1cmVGb2lsZWRCeUNoaWxkKCkKLXsK
LSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBnZW5lcmF0ZUxvb3AoCi0gICAgICAgIHByb2MsCi0g
ICAgICAgIFsmXSAoQmFzaWNCbG9jayogbG9vcCwgVmFsdWUqIGluZGV4KSAtPiBWYWx1ZSogewot
ICAgICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKLSAgICAgICAg
ICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksIEVmZmVjdHM6Om5vbmUoKSwKLSAgICAgICAg
ICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRh
Z0NGdW5jdGlvblB0cjx2b2lkKj4ob25lRnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSwKLSAgICAg
ICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgICAgICAgICAgaW5kZXgpOwotICAg
ICAgICB9KTsKLSAgICAKLSAgICB1bnNpZ25lZCBjYWxsQ291bnQgPSAwOwotICAgIGNvbXBpbGVB
bmRSdW48dm9pZD4ocHJvYywgJmNhbGxDb3VudCk7Ci0gICAgQ0hFQ0tfRVEoY2FsbENvdW50LCAx
MDB1KTsKLX0KLQotdm9pZCB0ZXN0TElDTVB1cmVOb3RCYWNrd2FyZHNEb21pbmFudEZvaWxlZEJ5
Q2hpbGQoKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIGlmIChwcm9jLm9wdExldmVsKCkg
PCAyKQotICAgICAgICByZXR1cm47Ci0gICAgYXV0byBhcnJheSA9IG1ha2VBcnJheUZvckxvb3Bz
KCk7Ci0gICAgZ2VuZXJhdGVMb29wTm90QmFja3dhcmRzRG9taW5hbnQoCi0gICAgICAgIHByb2Ms
IGFycmF5LAotICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGxvb3AsIFZhbHVlKiBpbmRleCkgLT4g
VmFsdWUqIHsKLSAgICAgICAgICAgIHJldHVybiBsb29wLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4o
Ci0gICAgICAgICAgICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigpLCBFZmZlY3RzOjpub25lKCks
Ci0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG9uZUZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFn
KSksCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAotICAgICAgICAgICAgICAgIGlu
ZGV4KTsKLSAgICAgICAgfSk7Ci0gICAgCi0gICAgdW5zaWduZWQgY2FsbENvdW50ID0gMDsKLSAg
ICBjb21waWxlQW5kUnVuPHZvaWQ+KHByb2MsICZjYWxsQ291bnQpOwotICAgIENIRUNLX0VRKGNh
bGxDb3VudCwgNTB1KTsKLX0KLQotdm9pZCB0ZXN0TElDTUV4aXRzU2lkZXdheXMoKQotewotICAg
IFByb2NlZHVyZSBwcm9jOwotICAgIGdlbmVyYXRlTG9vcCgKLSAgICAgICAgcHJvYywKLSAgICAg
ICAgWyZdIChCYXNpY0Jsb2NrKiBsb29wLCBWYWx1ZSopIC0+IFZhbHVlKiB7Ci0gICAgICAgICAg
ICBFZmZlY3RzIGVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7Ci0gICAgICAgICAgICBlZmZlY3Rz
LmV4aXRzU2lkZXdheXMgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5l
dzxDQ2FsbFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksIGVm
ZmVjdHMsCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG9uZUZ1bmN0aW9uLCBCM0NDYWxs
UHRyVGFnKSksCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICAgICAgfSk7
Ci0gICAgCi0gICAgdW5zaWduZWQgY2FsbENvdW50ID0gMDsKLSAgICBjb21waWxlQW5kUnVuPHZv
aWQ+KHByb2MsICZjYWxsQ291bnQpOwotICAgIENIRUNLX0VRKGNhbGxDb3VudCwgMTAwdSk7Ci19
Ci0KLXZvaWQgdGVzdExJQ01Xcml0ZXNMb2NhbFN0YXRlKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJv
YzsKLSAgICBnZW5lcmF0ZUxvb3AoCi0gICAgICAgIHByb2MsCi0gICAgICAgIFsmXSAoQmFzaWNC
bG9jayogbG9vcCwgVmFsdWUqKSAtPiBWYWx1ZSogewotICAgICAgICAgICAgRWZmZWN0cyBlZmZl
Y3RzID0gRWZmZWN0czo6bm9uZSgpOwotICAgICAgICAgICAgZWZmZWN0cy53cml0ZXNMb2NhbFN0
YXRlID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiBsb29wLT5hcHBlbmROZXc8Q0NhbGxWYWx1
ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigpLCBlZmZlY3RzLAotICAg
ICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihvbmVGdW5jdGlvbiwgQjNDQ2FsbFB0clRhZykpLAot
ICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgICAgIH0pOwotICAgIAotICAg
IHVuc2lnbmVkIGNhbGxDb3VudCA9IDA7Ci0gICAgY29tcGlsZUFuZFJ1bjx2b2lkPihwcm9jLCAm
Y2FsbENvdW50KTsKLSAgICBDSEVDS19FUShjYWxsQ291bnQsIDEwMHUpOwotfQotCi12b2lkIHRl
c3RMSUNNV3JpdGVzKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBnZW5lcmF0ZUxvb3Ao
Ci0gICAgICAgIHByb2MsCi0gICAgICAgIFsmXSAoQmFzaWNCbG9jayogbG9vcCwgVmFsdWUqKSAt
PiBWYWx1ZSogewotICAgICAgICAgICAgRWZmZWN0cyBlZmZlY3RzID0gRWZmZWN0czo6bm9uZSgp
OwotICAgICAgICAgICAgZWZmZWN0cy53cml0ZXMgPSBIZWFwUmFuZ2UoNjY2KTsKLSAgICAgICAg
ICAgIHJldHVybiBsb29wLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCi0gICAgICAgICAgICAgICAg
cHJvYywgSW50MzIsIE9yaWdpbigpLCBlZmZlY3RzLAotICAgICAgICAgICAgICAgIGxvb3AtPmFw
cGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZv
aWQqPihvbmVGdW5jdGlvbiwgQjNDQ2FsbFB0clRhZykpLAotICAgICAgICAgICAgICAgIGxvb3At
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSk7Ci0gICAgICAgIH0pOwotICAgIAotICAgIHVuc2lnbmVkIGNhbGxDb3VudCA9
IDA7Ci0gICAgY29tcGlsZUFuZFJ1bjx2b2lkPihwcm9jLCAmY2FsbENvdW50KTsKLSAgICBDSEVD
S19FUShjYWxsQ291bnQsIDEwMHUpOwotfQotCi12b2lkIHRlc3RMSUNNRmVuY2UoKQotewotICAg
IFByb2NlZHVyZSBwcm9jOwotICAgIGdlbmVyYXRlTG9vcCgKLSAgICAgICAgcHJvYywKLSAgICAg
ICAgWyZdIChCYXNpY0Jsb2NrKiBsb29wLCBWYWx1ZSopIC0+IFZhbHVlKiB7Ci0gICAgICAgICAg
ICBFZmZlY3RzIGVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7Ci0gICAgICAgICAgICBlZmZlY3Rz
LmZlbmNlID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiBsb29wLT5hcHBlbmROZXc8Q0NhbGxW
YWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigpLCBlZmZlY3RzLAot
ICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmln
aW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihvbmVGdW5jdGlvbiwgQjNDQ2FsbFB0clRhZykp
LAotICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgICAgIH0pOwotICAgIAot
ICAgIHVuc2lnbmVkIGNhbGxDb3VudCA9IDA7Ci0gICAgY29tcGlsZUFuZFJ1bjx2b2lkPihwcm9j
LCAmY2FsbENvdW50KTsKLSAgICBDSEVDS19FUShjYWxsQ291bnQsIDEwMHUpOwotfQotCi12b2lk
IHRlc3RMSUNNV3JpdGVzUGlubmVkKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBnZW5l
cmF0ZUxvb3AoCi0gICAgICAgIHByb2MsCi0gICAgICAgIFsmXSAoQmFzaWNCbG9jayogbG9vcCwg
VmFsdWUqKSAtPiBWYWx1ZSogewotICAgICAgICAgICAgRWZmZWN0cyBlZmZlY3RzID0gRWZmZWN0
czo6bm9uZSgpOwotICAgICAgICAgICAgZWZmZWN0cy53cml0ZXNQaW5uZWQgPSB0cnVlOwotICAg
ICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKLSAgICAgICAgICAg
ICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksIGVmZmVjdHMsCi0gICAgICAgICAgICAgICAgbG9v
cC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25Q
dHI8dm9pZCo+KG9uZUZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSksCi0gICAgICAgICAgICAgICAg
bG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApKTsKLSAgICAgICAgfSk7Ci0gICAgCi0gICAgdW5zaWduZWQgY2FsbENv
dW50ID0gMDsKLSAgICBjb21waWxlQW5kUnVuPHZvaWQ+KHByb2MsICZjYWxsQ291bnQpOwotICAg
IENIRUNLX0VRKGNhbGxDb3VudCwgMTAwdSk7Ci19Ci0KLXZvaWQgdGVzdExJQ01Db250cm9sRGVw
ZW5kZW50KCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBpZiAocHJvYy5vcHRMZXZlbCgp
IDwgMikKLSAgICAgICAgcmV0dXJuOwotICAgIGdlbmVyYXRlTG9vcCgKLSAgICAgICAgcHJvYywK
LSAgICAgICAgWyZdIChCYXNpY0Jsb2NrKiBsb29wLCBWYWx1ZSopIC0+IFZhbHVlKiB7Ci0gICAg
ICAgICAgICBFZmZlY3RzIGVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7Ci0gICAgICAgICAgICBl
ZmZlY3RzLmNvbnRyb2xEZXBlbmRlbnQgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuIGxvb3At
PmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3Jp
Z2luKCksIGVmZmVjdHMsCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG9uZUZ1bmN0aW9u
LCBCM0NDYWxsUHRyVGFnKSksCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAg
ICAgICAgfSk7Ci0gICAgCi0gICAgdW5zaWduZWQgY2FsbENvdW50ID0gMDsKLSAgICBjb21waWxl
QW5kUnVuPHZvaWQ+KHByb2MsICZjYWxsQ291bnQpOwotICAgIENIRUNLX0VRKGNhbGxDb3VudCwg
MXUpOwotfQotCi12b2lkIHRlc3RMSUNNQ29udHJvbERlcGVuZGVudE5vdEJhY2t3YXJkc0RvbWlu
YW50KCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBpZiAocHJvYy5vcHRMZXZlbCgpIDwg
MikKLSAgICAgICAgcmV0dXJuOwotICAgIGF1dG8gYXJyYXkgPSBtYWtlQXJyYXlGb3JMb29wcygp
OwotICAgIGdlbmVyYXRlTG9vcE5vdEJhY2t3YXJkc0RvbWluYW50KAotICAgICAgICBwcm9jLCBh
cnJheSwKLSAgICAgICAgWyZdIChCYXNpY0Jsb2NrKiBsb29wLCBWYWx1ZSopIC0+IFZhbHVlKiB7
Ci0gICAgICAgICAgICBFZmZlY3RzIGVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7Ci0gICAgICAg
ICAgICBlZmZlY3RzLmNvbnRyb2xEZXBlbmRlbnQgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJu
IGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBJbnQz
MiwgT3JpZ2luKCksIGVmZmVjdHMsCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENv
bnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG9uZUZ1
bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSksCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
KTsKLSAgICAgICAgfSk7Ci0gICAgCi0gICAgdW5zaWduZWQgY2FsbENvdW50ID0gMDsKLSAgICBj
b21waWxlQW5kUnVuPHZvaWQ+KHByb2MsICZjYWxsQ291bnQpOwotICAgIENIRUNLX0VRKGNhbGxD
b3VudCwgNTB1KTsKLX0KLQotdm9pZCB0ZXN0TElDTUNvbnRyb2xEZXBlbmRlbnRTaWRlRXhpdHMo
KQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIGdlbmVyYXRlTG9vcCgKLSAgICAgICAgcHJv
YywKLSAgICAgICAgWyZdIChCYXNpY0Jsb2NrKiBsb29wLCBWYWx1ZSopIC0+IFZhbHVlKiB7Ci0g
ICAgICAgICAgICBFZmZlY3RzIGVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7Ci0gICAgICAgICAg
ICBlZmZlY3RzLmV4aXRzU2lkZXdheXMgPSB0cnVlOwotICAgICAgICAgICAgbG9vcC0+YXBwZW5k
TmV3PENDYWxsVmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIFZvaWQsIE9yaWdpbigpLCBl
ZmZlY3RzLAotICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihub09wRnVuY3Rpb24sIEIzQ0Nh
bGxQdHJUYWcpKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGVmZmVjdHMgPSBFZmZlY3Rz
Ojpub25lKCk7Ci0gICAgICAgICAgICBlZmZlY3RzLmNvbnRyb2xEZXBlbmRlbnQgPSB0cnVlOwot
ICAgICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKLSAgICAgICAg
ICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksIGVmZmVjdHMsCi0gICAgICAgICAgICAgICAg
bG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rp
b25QdHI8dm9pZCo+KG9uZUZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSksCi0gICAgICAgICAgICAg
ICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApKTsKLSAgICAgICAgfSk7Ci0gICAgCi0gICAgdW5zaWduZWQgY2Fs
bENvdW50ID0gMDsKLSAgICBjb21waWxlQW5kUnVuPHZvaWQ+KHByb2MsICZjYWxsQ291bnQpOwot
ICAgIENIRUNLX0VRKGNhbGxDb3VudCwgMTAwdSk7Ci19Ci0KLXZvaWQgdGVzdExJQ01SZWFkc1Bp
bm5lZFdyaXRlc1Bpbm5lZCgpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgZ2VuZXJhdGVM
b29wKAotICAgICAgICBwcm9jLAotICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGxvb3AsIFZhbHVl
KikgLT4gVmFsdWUqIHsKLSAgICAgICAgICAgIEVmZmVjdHMgZWZmZWN0cyA9IEVmZmVjdHM6Om5v
bmUoKTsKLSAgICAgICAgICAgIGVmZmVjdHMud3JpdGVzUGlubmVkID0gdHJ1ZTsKLSAgICAgICAg
ICAgIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBW
b2lkLCBPcmlnaW4oKSwgZWZmZWN0cywKLSAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4obm9P
cEZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSkpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBl
ZmZlY3RzID0gRWZmZWN0czo6bm9uZSgpOwotICAgICAgICAgICAgZWZmZWN0cy5yZWFkc1Bpbm5l
ZCA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gbG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+
KAotICAgICAgICAgICAgICAgIHByb2MsIEludDMyLCBPcmlnaW4oKSwgZWZmZWN0cywKLSAgICAg
ICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4ob25lRnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSwKLSAg
ICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgICAgICB9KTsKLSAgICAKLSAgICB1
bnNpZ25lZCBjYWxsQ291bnQgPSAwOwotICAgIGNvbXBpbGVBbmRSdW48dm9pZD4ocHJvYywgJmNh
bGxDb3VudCk7Ci0gICAgQ0hFQ0tfRVEoY2FsbENvdW50LCAxMDB1KTsKLX0KLQotdm9pZCB0ZXN0
TElDTVJlYWRzV3JpdGVzRGlmZmVyZW50SGVhcHMoKQotewotICAgIFByb2NlZHVyZSBwcm9jOwot
ICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAyKQotICAgICAgICByZXR1cm47Ci0gICAgZ2VuZXJh
dGVMb29wKAotICAgICAgICBwcm9jLAotICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGxvb3AsIFZh
bHVlKikgLT4gVmFsdWUqIHsKLSAgICAgICAgICAgIEVmZmVjdHMgZWZmZWN0cyA9IEVmZmVjdHM6
Om5vbmUoKTsKLSAgICAgICAgICAgIGVmZmVjdHMud3JpdGVzID0gSGVhcFJhbmdlKDY0MzYpOwot
ICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAotICAgICAgICAgICAgICAg
IHByb2MsIFZvaWQsIE9yaWdpbigpLCBlZmZlY3RzLAotICAgICAgICAgICAgICAgIGxvb3AtPmFw
cGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZv
aWQqPihub09wRnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSk7Ci0gICAgICAgICAgICAKLSAgICAg
ICAgICAgIGVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7Ci0gICAgICAgICAgICBlZmZlY3RzLnJl
YWRzID0gSGVhcFJhbmdlKDQ4ODYpOwotICAgICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5l
dzxDQ2FsbFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksIGVm
ZmVjdHMsCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG9uZUZ1bmN0aW9uLCBCM0NDYWxs
UHRyVGFnKSksCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICAgICAgfSk7
Ci0gICAgCi0gICAgdW5zaWduZWQgY2FsbENvdW50ID0gMDsKLSAgICBjb21waWxlQW5kUnVuPHZv
aWQ+KHByb2MsICZjYWxsQ291bnQpOwotICAgIENIRUNLX0VRKGNhbGxDb3VudCwgMXUpOwotfQot
Ci12b2lkIHRlc3RMSUNNUmVhZHNXcml0ZXNPdmVybGFwcGluZ0hlYXBzKCkKLXsKLSAgICBQcm9j
ZWR1cmUgcHJvYzsKLSAgICBnZW5lcmF0ZUxvb3AoCi0gICAgICAgIHByb2MsCi0gICAgICAgIFsm
XSAoQmFzaWNCbG9jayogbG9vcCwgVmFsdWUqKSAtPiBWYWx1ZSogewotICAgICAgICAgICAgRWZm
ZWN0cyBlZmZlY3RzID0gRWZmZWN0czo6bm9uZSgpOwotICAgICAgICAgICAgZWZmZWN0cy53cml0
ZXMgPSBIZWFwUmFuZ2UoNjQzNiwgNzQ0NTgpOwotICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3
PENDYWxsVmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIFZvaWQsIE9yaWdpbigpLCBlZmZl
Y3RzLAotICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihub09wRnVuY3Rpb24sIEIzQ0NhbGxQ
dHJUYWcpKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGVmZmVjdHMgPSBFZmZlY3RzOjpu
b25lKCk7Ci0gICAgICAgICAgICBlZmZlY3RzLnJlYWRzID0gSGVhcFJhbmdlKDQ4ODY0LCA3ODIz
OSk7Ci0gICAgICAgICAgICByZXR1cm4gbG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAotICAg
ICAgICAgICAgICAgIHByb2MsIEludDMyLCBPcmlnaW4oKSwgZWZmZWN0cywKLSAgICAgICAgICAg
ICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NG
dW5jdGlvblB0cjx2b2lkKj4ob25lRnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSwKLSAgICAgICAg
ICAgICAgICBsb29wLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgICAgICB9KTsKLSAgICAKLSAgICB1bnNpZ25l
ZCBjYWxsQ291bnQgPSAwOwotICAgIGNvbXBpbGVBbmRSdW48dm9pZD4ocHJvYywgJmNhbGxDb3Vu
dCk7Ci0gICAgQ0hFQ0tfRVEoY2FsbENvdW50LCAxMDB1KTsKLX0KLQotdm9pZCB0ZXN0TElDTURl
ZmF1bHRDYWxsKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBnZW5lcmF0ZUxvb3AoCi0g
ICAgICAgIHByb2MsCi0gICAgICAgIFsmXSAoQmFzaWNCbG9jayogbG9vcCwgVmFsdWUqKSAtPiBW
YWx1ZSogewotICAgICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigK
LSAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAg
bG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rp
b25QdHI8dm9pZCo+KG9uZUZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSksCi0gICAgICAgICAgICAg
ICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApKTsKLSAgICAgICAgfSk7Ci0gICAgCi0gICAgdW5zaWduZWQgY2Fs
bENvdW50ID0gMDsKLSAgICBjb21waWxlQW5kUnVuPHZvaWQ+KHByb2MsICZjYWxsQ291bnQpOwot
ICAgIENIRUNLX0VRKGNhbGxDb3VudCwgMTAwdSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+
Ci12b2lkIHRlc3RBdG9taWNXZWFrQ0FTKCkKLXsKLSAgICBUeXBlIHR5cGUgPSBOYXRpdmVUcmFp
dHM8VD46OnR5cGU7Ci0gICAgV2lkdGggd2lkdGggPSBOYXRpdmVUcmFpdHM8VD46OndpZHRoOwot
ICAgIAotICAgIGF1dG8gY2hlY2tNeURpc2Fzc2VtYmx5ID0gWyZdIChDb21waWxhdGlvbiYgY29t
cGlsYXRpb24sIGJvb2wgZmVuY2VkKSB7Ci0gICAgICAgIGlmIChpc1g4NigpKSB7Ci0gICAgICAg
ICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImxvY2siKTsKLSAgICAgICAg
ICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAiY21weGNoZyIpOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKGZlbmNlZCkgewotICAgICAgICAgICAgICAgIGNo
ZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAibGRheCIpOwotICAgICAgICAgICAgICAg
IGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAic3RseCIpOwotICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlv
biwgImxkeCIpOwotICAgICAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0
aW9uLCAic3R4Iik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9OwotICAgIAotICAg
IHsKLSAgICAgICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgIEJhc2ljQmxvY2sqIHJlbG9vcCA9IHByb2MuYWRkQmxv
Y2soKTsKLSAgICAgICAgQmFzaWNCbG9jayogZG9uZSA9IHByb2MuYWRkQmxvY2soKTsKLSAgICAg
ICAgCi0gICAgICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSnVtcCwgT3JpZ2luKCkpOwotICAgICAgICByb290LT5z
ZXRTdWNjZXNzb3JzKHJlbG9vcCk7Ci0gICAgICAgIAotICAgICAgICByZWxvb3AtPmFwcGVuZE5l
dzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAotICAgICAgICAg
ICAgcmVsb29wLT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2Ms
IEF0b21pY1dlYWtDQVMsIE9yaWdpbigpLCB3aWR0aCwKLSAgICAgICAgICAgICAgICByZWxvb3At
PmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCi0gICAgICAgICAg
ICAgICAgcmVsb29wLT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhi
ZWVmKSwKLSAgICAgICAgICAgICAgICBwdHIpKTsKLSAgICAgICAgcmVsb29wLT5zZXRTdWNjZXNz
b3JzKGRvbmUsIHJlbG9vcCk7Ci0gICAgICAgIAotICAgICAgICBkb25lLT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOwotICAgICAgICAKLSAgICAgICAgYXV0byBjb2Rl
ID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAgICAgIFQgdmFsdWVbMl07Ci0gICAgICAgIHZhbHVl
WzBdID0gNDI7Ci0gICAgICAgIHZhbHVlWzFdID0gMTM7Ci0gICAgICAgIGludm9rZTx2b2lkPigq
Y29kZSwgdmFsdWUpOwotICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4o
MHhiZWVmKSk7Ci0gICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7Ci0gICAgICAgIGNoZWNr
TXlEaXNhc3NlbWJseSgqY29kZSwgdHJ1ZSk7Ci0gICAgfQotICAgIAotICAgIHsKLSAgICAgICAg
UHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7Ci0gICAgICAgIEJhc2ljQmxvY2sqIHJlbG9vcCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICAg
ICAgQmFzaWNCbG9jayogZG9uZSA9IHByb2MuYWRkQmxvY2soKTsKLSAgICAgICAgCi0gICAgICAg
IFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgSnVtcCwgT3JpZ2luKCkpOwotICAgICAgICByb290LT5zZXRTdWNjZXNzb3Jz
KHJlbG9vcCk7Ci0gICAgICAgIAotICAgICAgICByZWxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4oCi0g
ICAgICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAotICAgICAgICAgICAgcmVsb29wLT5h
cHBlbmROZXc8QXRvbWljVmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIEF0b21pY1dlYWtD
QVMsIE9yaWdpbigpLCB3aWR0aCwKLSAgICAgICAgICAgICAgICByZWxvb3AtPmFwcGVuZEludENv
bnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCi0gICAgICAgICAgICAgICAgcmVsb29w
LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKLSAgICAg
ICAgICAgICAgICBwdHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSgpKSk7Ci0gICAgICAg
IHJlbG9vcC0+c2V0U3VjY2Vzc29ycyhkb25lLCByZWxvb3ApOwotICAgICAgICAKLSAgICAgICAg
ZG9uZS0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKLSAgICAgICAg
Ci0gICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotICAgICAgICBUIHZhbHVl
WzJdOwotICAgICAgICB2YWx1ZVswXSA9IDQyOwotICAgICAgICB2YWx1ZVsxXSA9IDEzOwotICAg
ICAgICBpbnZva2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsKLSAgICAgICAgQ0hFQ0tfRVEodmFsdWVb
MF0sIHN0YXRpY19jYXN0PFQ+KDB4YmVlZikpOwotICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwg
MTMpOwotICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUsIGZhbHNlKTsKLSAgICB9Ci0g
ICAgCi0gICAgewotICAgICAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICAgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICAgICAgQmFzaWNCbG9jayogc3VjYyA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICAgICAgQmFzaWNCbG9jayogZmFpbCA9IHByb2MuYWRkQmxvY2soKTsK
LSAgICAgICAgCi0gICAgICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdp
bigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKLSAgICAgICAg
ICAgICAgICBwcm9jLCBBdG9taWNXZWFrQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCi0gICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwK
LSAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwg
dHlwZSwgMHhiZWVmKSwKLSAgICAgICAgICAgICAgICBwdHIpKTsKLSAgICAgICAgcm9vdC0+c2V0
U3VjY2Vzc29ycyhzdWNjLCBmYWlsKTsKLSAgICAgICAgCi0gICAgICAgIHN1Y2MtPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBzdG9yZU9wY29kZShHUCwgd2lkdGgp
LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHN1Y2MtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9y
aWdpbigpLCB0eXBlLCAxMDApLAotICAgICAgICAgICAgcHRyKTsKLSAgICAgICAgc3VjYy0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKLSAgICAgICAgCi0gICAgICAg
IGZhaWwtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7Ci0gICAgICAg
IAotICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICAgICAgVCB2YWx1
ZVsyXTsKLSAgICAgICAgdmFsdWVbMF0gPSA0MjsKLSAgICAgICAgdmFsdWVbMV0gPSAxMzsKLSAg
ICAgICAgd2hpbGUgKHZhbHVlWzBdID09IDQyKQotICAgICAgICAgICAgaW52b2tlPHZvaWQ+KCpj
b2RlLCB2YWx1ZSk7Ci0gICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigx
MDApKTsKLSAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKLSAgICAgICAgdmFsdWVbMF0g
PSBzdGF0aWNfY2FzdDxUPigzMDApOwotICAgICAgICBpbnZva2U8dm9pZD4oKmNvZGUsIHZhbHVl
KTsKLSAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDMwMCkpOwotICAg
ICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOwotICAgICAgICBjaGVja015RGlzYXNzZW1ibHko
KmNvZGUsIHRydWUpOwotICAgIH0KLSAgICAKLSAgICB7Ci0gICAgICAgIFByb2NlZHVyZSBwcm9j
OwotICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgICAgICBC
YXNpY0Jsb2NrKiBzdWNjID0gcHJvYy5hZGRCbG9jaygpOwotICAgICAgICBCYXNpY0Jsb2NrKiBm
YWlsID0gcHJvYy5hZGRCbG9jaygpOwotICAgICAgICAKLSAgICAgICAgVmFsdWUqIHB0ciA9IHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAg
ICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4oKSwKLSAgICAgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAotICAgICAgICAgICAgICAgICAg
ICBwcm9jLCBBdG9taWNXZWFrQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCi0gICAgICAgICAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCi0g
ICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigp
LCB0eXBlLCAweGJlZWYpLAotICAgICAgICAgICAgICAgICAgICBwdHIpLAotICAgICAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCBJbnQzMiwgMCkpKTsK
LSAgICAgICAgcm9vdC0+c2V0U3VjY2Vzc29ycyhmYWlsLCBzdWNjKTsKLSAgICAgICAgCi0gICAg
ICAgIHN1Y2MtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBzdG9y
ZU9wY29kZShHUCwgd2lkdGgpLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHN1Y2MtPmFwcGVuZElu
dENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAxMDApLAotICAgICAgICAgICAgcHRyKTsK
LSAgICAgICAgc3VjYy0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsK
LSAgICAgICAgCi0gICAgICAgIGZhaWwtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBP
cmlnaW4oKSk7Ci0gICAgICAgIAotICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9j
KTsKLSAgICAgICAgVCB2YWx1ZVsyXTsKLSAgICAgICAgdmFsdWVbMF0gPSA0MjsKLSAgICAgICAg
dmFsdWVbMV0gPSAxMzsKLSAgICAgICAgd2hpbGUgKHZhbHVlWzBdID09IDQyKQotICAgICAgICAg
ICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7Ci0gICAgICAgIENIRUNLX0VRKHZhbHVlWzBd
LCBzdGF0aWNfY2FzdDxUPigxMDApKTsKLSAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsK
LSAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxUPigzMDApOwotICAgICAgICBpbnZva2U8
dm9pZD4oKmNvZGUsIHZhbHVlKTsKLSAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19j
YXN0PFQ+KDMwMCkpOwotICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOwotICAgICAgICBj
aGVja015RGlzYXNzZW1ibHkoKmNvZGUsIHRydWUpOwotICAgIH0KLSAgICAKLSAgICB7Ci0gICAg
ICAgIFByb2NlZHVyZSBwcm9jOwotICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOwotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNW
YWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgQXRvbWljV2Vha0NBUywgT3JpZ2luKCksIHdp
ZHRoLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdp
bigpLCB0eXBlLCA0MiksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQo
cHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApKSk7Ci0gICAgICAgIAotICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9j
KTsKLSAgICAgICAgVCB2YWx1ZVsyXTsKLSAgICAgICAgdmFsdWVbMF0gPSA0MjsKLSAgICAgICAg
dmFsdWVbMV0gPSAxMzsKLSAgICAgICAgd2hpbGUgKCFpbnZva2U8Ym9vbD4oKmNvZGUsIHZhbHVl
KSkgeyB9Ci0gICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigweGJlZWYp
KTsKLSAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKLSAgICAgICAgCi0gICAgICAgIHZh
bHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKLSAgICAgICAgQ0hFQ0soIWludm9rZTxib29s
PigqY29kZSwgdmFsdWUpKTsKLSAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0
PFQ+KDMwMCkpOwotICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOwotICAgICAgICBjaGVj
a015RGlzYXNzZW1ibHkoKmNvZGUsIHRydWUpOwotICAgIH0KLSAgICAKLSAgICB7Ci0gICAgICAg
IFByb2NlZHVyZSBwcm9jOwotICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOwotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0g
ICAgICAgICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCi0gICAgICAgICAgICAgICAgICAgIHByb2MsIEF0
b21pY1dlYWtDQVMsIE9yaWdpbigpLCB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKLSAgICAgICAgICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4
YmVlZiksCi0gICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCi0gICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKSk7
Ci0gICAgICAgIAotICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICAg
ICAgVCB2YWx1ZVsyXTsKLSAgICAgICAgdmFsdWVbMF0gPSA0MjsKLSAgICAgICAgdmFsdWVbMV0g
PSAxMzsKLSAgICAgICAgd2hpbGUgKGludm9rZTxib29sPigqY29kZSwgdmFsdWUpKSB7IH0KLSAg
ICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDB4YmVlZikpOwotICAgICAg
ICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOwotICAgICAgICAKLSAgICAgICAgdmFsdWVbMF0gPSBz
dGF0aWNfY2FzdDxUPigzMDApOwotICAgICAgICBDSEVDSyhpbnZva2U8Ym9vbD4oKmNvZGUsIHZh
bHVlKSk7Ci0gICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigzMDApKTsK
LSAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKLSAgICAgICAgY2hlY2tNeURpc2Fzc2Vt
Ymx5KCpjb2RlLCB0cnVlKTsKLSAgICB9Ci0gICAgCi0gICAgewotICAgICAgICBQcm9jZWR1cmUg
cHJvYzsKLSAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3Jp
Z2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAotICAgICAg
ICAgICAgICAgIHByb2MsIEF0b21pY1dlYWtDQVMsIE9yaWdpbigpLCB3aWR0aCwKLSAgICAgICAg
ICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIp
LAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigp
LCB0eXBlLCAweGJlZWYpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKLSAgICAg
ICAgICAgICAgICA0MikpOwotICAgICAgICAKLSAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVBy
b2MocHJvYyk7Ci0gICAgICAgIFQgdmFsdWVbMl07Ci0gICAgICAgIHZhbHVlWzBdID0gNDI7Ci0g
ICAgICAgIHZhbHVlWzFdID0gMTM7Ci0gICAgICAgIHdoaWxlICghaW52b2tlPGJvb2w+KCpjb2Rl
LCBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KHZhbHVlKSAtIDQyKSkgeyB9Ci0gICAgICAgIENIRUNL
X0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigweGJlZWYpKTsKLSAgICAgICAgQ0hFQ0tfRVEo
dmFsdWVbMV0sIDEzKTsKLSAgICAgICAgCi0gICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8
VD4oMzAwKTsKLSAgICAgICAgQ0hFQ0soIWludm9rZTxib29sPigqY29kZSwgYml0d2lzZV9jYXN0
PGludHB0cl90Pih2YWx1ZSkgLSA0MikpOwotICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3Rh
dGljX2Nhc3Q8VD4oMzAwKSk7Ci0gICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7Ci0gICAg
ICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwgdHJ1ZSk7Ci0gICAgfQotfQotCi10ZW1wbGF0
ZTx0eXBlbmFtZSBUPgotdm9pZCB0ZXN0QXRvbWljU3Ryb25nQ0FTKCkKLXsKLSAgICBUeXBlIHR5
cGUgPSBOYXRpdmVUcmFpdHM8VD46OnR5cGU7Ci0gICAgV2lkdGggd2lkdGggPSBOYXRpdmVUcmFp
dHM8VD46OndpZHRoOwotICAgIAotICAgIGF1dG8gY2hlY2tNeURpc2Fzc2VtYmx5ID0gWyZdIChD
b21waWxhdGlvbiYgY29tcGlsYXRpb24sIGJvb2wgZmVuY2VkKSB7Ci0gICAgICAgIGlmIChpc1g4
NigpKSB7Ci0gICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImxv
Y2siKTsKLSAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAiY21w
eGNoZyIpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKGZlbmNlZCkgewotICAg
ICAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAibGRheCIpOwot
ICAgICAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAic3RseCIp
OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVj
dGlvbihjb21waWxhdGlvbiwgImxkeCIpOwotICAgICAgICAgICAgICAgIGNoZWNrVXNlc0luc3Ry
dWN0aW9uKGNvbXBpbGF0aW9uLCAic3R4Iik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9OwotICAgIAotICAgIHsKLSAgICAgICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgIEJhc2ljQmxvY2sqIHN1Y2Mg
PSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgIEJhc2ljQmxvY2sqIGZhaWwgPSBwcm9jLmFkZEJs
b2NrKCk7Ci0gICAgICAgIAotICAgICAgICBWYWx1ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwot
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQnJhbmNo
LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAg
ICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBdG9taWNWYWx1ZT4oCi0gICAgICAgICAgICAgICAgICAgIHByb2MsIEF0b21pY1N0
cm9uZ0NBUywgT3JpZ2luKCksIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICByb290LT5hcHBl
bmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAotICAgICAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVm
KSwKLSAgICAgICAgICAgICAgICAgICAgcHRyKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBl
bmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpKSk7Ci0gICAgICAgIHJvb3Qt
PnNldFN1Y2Nlc3NvcnMoc3VjYywgZmFpbCk7Ci0gICAgICAgIAotICAgICAgICBzdWNjLT5hcHBl
bmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgc3RvcmVPcGNvZGUoR1AsIHdp
ZHRoKSwgT3JpZ2luKCksCi0gICAgICAgICAgICBzdWNjLT5hcHBlbmRJbnRDb25zdGFudChwcm9j
LCBPcmlnaW4oKSwgdHlwZSwgMTAwKSwKLSAgICAgICAgICAgIHB0cik7Ci0gICAgICAgIHN1Y2Mt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7Ci0gICAgICAgIAotICAg
ICAgICBmYWlsLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOwotICAg
ICAgICAKLSAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAgICAgIFQg
dmFsdWVbMl07Ci0gICAgICAgIHZhbHVlWzBdID0gNDI7Ci0gICAgICAgIHZhbHVlWzFdID0gMTM7
Ci0gICAgICAgIGludm9rZTx2b2lkPigqY29kZSwgdmFsdWUpOwotICAgICAgICBDSEVDS19FUSh2
YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMTAwKSk7Ci0gICAgICAgIENIRUNLX0VRKHZhbHVlWzFd
LCAxMyk7Ci0gICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKLSAgICAgICAg
aW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7Ci0gICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBz
dGF0aWNfY2FzdDxUPigzMDApKTsKLSAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKLSAg
ICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlLCB0cnVlKTsKLSAgICB9Ci0gICAgCi0gICAg
ewotICAgICAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKLSAgICAgICAgQmFzaWNCbG9jayogc3VjYyA9IHByb2MuYWRkQmxvY2so
KTsKLSAgICAgICAgQmFzaWNCbG9jayogZmFpbCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICAgICAg
Ci0gICAgICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAotICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBF
cXVhbCwgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1Zh
bHVlPigKLSAgICAgICAgICAgICAgICAgICAgcHJvYywgQXRvbWljU3Ryb25nQ0FTLCBPcmlnaW4o
KSwgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHBy
b2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCi0gICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAotICAgICAgICAgICAg
ICAgICAgICBwdHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSgpKSwKLSAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpKSk7
Ci0gICAgICAgIHJvb3QtPnNldFN1Y2Nlc3NvcnMoc3VjYywgZmFpbCk7Ci0gICAgICAgIAotICAg
ICAgICBzdWNjLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgc3Rv
cmVPcGNvZGUoR1AsIHdpZHRoKSwgT3JpZ2luKCksCi0gICAgICAgICAgICBzdWNjLT5hcHBlbmRJ
bnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMTAwKSwKLSAgICAgICAgICAgIHB0cik7
Ci0gICAgICAgIHN1Y2MtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7
Ci0gICAgICAgIAotICAgICAgICBmYWlsLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwg
T3JpZ2luKCkpOwotICAgICAgICAKLSAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJv
Yyk7Ci0gICAgICAgIFQgdmFsdWVbMl07Ci0gICAgICAgIHZhbHVlWzBdID0gNDI7Ci0gICAgICAg
IHZhbHVlWzFdID0gMTM7Ci0gICAgICAgIGludm9rZTx2b2lkPigqY29kZSwgdmFsdWUpOwotICAg
ICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMTAwKSk7Ci0gICAgICAgIENI
RUNLX0VRKHZhbHVlWzFdLCAxMyk7Ci0gICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4o
MzAwKTsKLSAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7Ci0gICAgICAgIENIRUNL
X0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigzMDApKTsKLSAgICAgICAgQ0hFQ0tfRVEodmFs
dWVbMV0sIDEzKTsKLSAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlLCBmYWxzZSk7Ci0g
ICAgfQotICAgIAotICAgIHsKLSAgICAgICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgIEJhc2ljQmxvY2sqIHN1Y2Mg
PSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgIEJhc2ljQmxvY2sqIGZhaWwgPSBwcm9jLmFkZEJs
b2NrKCk7Ci0gICAgICAgIAotICAgICAgICBWYWx1ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwot
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQnJhbmNo
LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAg
ICAgICAgICAgcHJvYywgTm90RXF1YWwsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCi0gICAgICAgICAgICAgICAgICAgIHByb2MsIEF0b21p
Y1N0cm9uZ0NBUywgT3JpZ2luKCksIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICByb290LT5h
cHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAotICAgICAgICAgICAg
ICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhi
ZWVmKSwKLSAgICAgICAgICAgICAgICAgICAgcHRyKSwKLSAgICAgICAgICAgICAgICByb290LT5h
cHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpKSk7Ci0gICAgICAgIHJv
b3QtPnNldFN1Y2Nlc3NvcnMoZmFpbCwgc3VjYyk7Ci0gICAgICAgIAotICAgICAgICBzdWNjLT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgc3RvcmVPcGNvZGUoR1As
IHdpZHRoKSwgT3JpZ2luKCksCi0gICAgICAgICAgICBzdWNjLT5hcHBlbmRJbnRDb25zdGFudChw
cm9jLCBPcmlnaW4oKSwgdHlwZSwgMTAwKSwKLSAgICAgICAgICAgIHB0cik7Ci0gICAgICAgIHN1
Y2MtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7Ci0gICAgICAgIAot
ICAgICAgICBmYWlsLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOwot
ICAgICAgICAKLSAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAgICAg
IFQgdmFsdWVbMl07Ci0gICAgICAgIHZhbHVlWzBdID0gNDI7Ci0gICAgICAgIHZhbHVlWzFdID0g
MTM7Ci0gICAgICAgIGludm9rZTx2b2lkPigqY29kZSwgdmFsdWUpOwotICAgICAgICBDSEVDS19F
USh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMTAwKSk7Ci0gICAgICAgIENIRUNLX0VRKHZhbHVl
WzFdLCAxMyk7Ci0gICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKLSAgICAg
ICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7Ci0gICAgICAgIENIRUNLX0VRKHZhbHVlWzBd
LCBzdGF0aWNfY2FzdDxUPigzMDApKTsKLSAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsK
LSAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlLCB0cnVlKTsKLSAgICB9Ci0gICAgCi0g
ICAgewotICAgICAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAg
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXRvbWljVmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIEF0b21pY1N0cm9uZ0NBUywg
T3JpZ2luKCksIHdpZHRoLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50
KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5k
SW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCi0gICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApKSk7Ci0gICAgICAgIAotICAgICAgICBhdXRvIGNvZGUgPSBjb21w
aWxlUHJvYyhwcm9jKTsKLSAgICAgICAgVCB2YWx1ZVsyXTsKLSAgICAgICAgdmFsdWVbMF0gPSA0
MjsKLSAgICAgICAgdmFsdWVbMV0gPSAxMzsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPHR5cGVu
YW1lIE5hdGl2ZVRyYWl0czxUPjo6Q2Fub25pY2FsVHlwZT4oKmNvZGUsIHZhbHVlKSwgNDIpOwot
ICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMHhiZWVmKSk7Ci0gICAg
ICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7Ci0gICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nh
c3Q8VD4oMzAwKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPHR5cGVuYW1lIE5hdGl2ZVRyYWl0
czxUPjo6Q2Fub25pY2FsVHlwZT4oKmNvZGUsIHZhbHVlKSwgc3RhdGljX2Nhc3Q8dHlwZW5hbWUg
TmF0aXZlVHJhaXRzPFQ+OjpDYW5vbmljYWxUeXBlPihzdGF0aWNfY2FzdDxUPigzMDApKSk7Ci0g
ICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigzMDApKTsKLSAgICAgICAg
Q0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKLSAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxU
PigtMSk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTx0eXBlbmFtZSBOYXRpdmVUcmFpdHM8VD46
OkNhbm9uaWNhbFR5cGU+KCpjb2RlLCB2YWx1ZSksIHN0YXRpY19jYXN0PHR5cGVuYW1lIE5hdGl2
ZVRyYWl0czxUPjo6Q2Fub25pY2FsVHlwZT4oc3RhdGljX2Nhc3Q8VD4oLTEpKSk7Ci0gICAgICAg
IENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigtMSkpOwotICAgICAgICBDSEVDS19F
USh2YWx1ZVsxXSwgMTMpOwotICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUsIHRydWUp
OwotICAgIH0KLSAgICAKLSAgICB7Ci0gICAgICAgIC8vIFRlc3QgZm9yIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk4NjcuCi0gICAgICAgIAotICAgICAgICBQcm9j
ZWR1cmUgcHJvYzsKLSAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
LSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAg
ICAgICAgICAgIHByb2MsIEJpdFhvciwgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKLSAgICAgICAgICAgICAgICAgICAgcHJvYywgQXRvbWlj
U3Ryb25nQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgIHJvb3QtPmFw
cGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCi0gICAgICAgICAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJl
ZWYpLAotICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAotICAgICAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAxKSkpOwot
ICAgICAgICAKLSAgICAgICAgdHlwZW5hbWUgTmF0aXZlVHJhaXRzPFQ+OjpDYW5vbmljYWxUeXBl
IG9uZSA9IDE7Ci0gICAgICAgIAotICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9j
KTsKLSAgICAgICAgVCB2YWx1ZVsyXTsKLSAgICAgICAgdmFsdWVbMF0gPSA0MjsKLSAgICAgICAg
dmFsdWVbMV0gPSAxMzsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPHR5cGVuYW1lIE5hdGl2ZVRy
YWl0czxUPjo6Q2Fub25pY2FsVHlwZT4oKmNvZGUsIHZhbHVlKSwgNDIgXiBvbmUpOwotICAgICAg
ICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMHhiZWVmKSk7Ci0gICAgICAgIENI
RUNLX0VRKHZhbHVlWzFdLCAxMyk7Ci0gICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4o
MzAwKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPHR5cGVuYW1lIE5hdGl2ZVRyYWl0czxUPjo6
Q2Fub25pY2FsVHlwZT4oKmNvZGUsIHZhbHVlKSwgc3RhdGljX2Nhc3Q8dHlwZW5hbWUgTmF0aXZl
VHJhaXRzPFQ+OjpDYW5vbmljYWxUeXBlPihzdGF0aWNfY2FzdDxUPigzMDApKSBeIG9uZSk7Ci0g
ICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigzMDApKTsKLSAgICAgICAg
Q0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKLSAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxU
PigtMSk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTx0eXBlbmFtZSBOYXRpdmVUcmFpdHM8VD46
OkNhbm9uaWNhbFR5cGU+KCpjb2RlLCB2YWx1ZSksIHN0YXRpY19jYXN0PHR5cGVuYW1lIE5hdGl2
ZVRyYWl0czxUPjo6Q2Fub25pY2FsVHlwZT4oc3RhdGljX2Nhc3Q8VD4oLTEpKSBeIG9uZSk7Ci0g
ICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigtMSkpOwotICAgICAgICBD
SEVDS19FUSh2YWx1ZVsxXSwgMTMpOwotICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUs
IHRydWUpOwotICAgIH0KLSAgICAKLSAgICB7Ci0gICAgICAgIFByb2NlZHVyZSBwcm9jOwotICAg
ICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywg
RXF1YWwsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNW
YWx1ZT4oCi0gICAgICAgICAgICAgICAgICAgIHByb2MsIEF0b21pY1N0cm9uZ0NBUywgT3JpZ2lu
KCksIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChw
cm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAotICAgICAgICAgICAgICAgICAgICByb290LT5hcHBl
bmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKLSAgICAgICAgICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJ
bnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpKSk7Ci0gICAgICAgIAotICAgICAg
ICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICAgICAgVCB2YWx1ZVsyXTsKLSAg
ICAgICAgdmFsdWVbMF0gPSA0MjsKLSAgICAgICAgdmFsdWVbMV0gPSAxMzsKLSAgICAgICAgQ0hF
Q0soaW52b2tlPGJvb2w+KCpjb2RlLCB2YWx1ZSkpOwotICAgICAgICBDSEVDS19FUSh2YWx1ZVsw
XSwgc3RhdGljX2Nhc3Q8VD4oMHhiZWVmKSk7Ci0gICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAx
Myk7Ci0gICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKLSAgICAgICAgQ0hF
Q0soIWludm9rZTxib29sPigqY29kZSwgdmFsdWUpKTsKLSAgICAgICAgQ0hFQ0tfRVEodmFsdWVb
MF0sIHN0YXRpY19jYXN0PFQ+KDMwMCkpOwotICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMp
OwotICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUsIHRydWUpOwotICAgIH0KLSAgICAK
LSAgICB7Ci0gICAgICAgIFByb2NlZHVyZSBwcm9jOwotICAgICAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOwotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAg
ICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAotICAg
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgICAg
IHByb2MsIE5vdEVxdWFsLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEF0b21pY1ZhbHVlPigKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb2MsIEF0b21p
Y1N0cm9uZ0NBUywgT3JpZ2luKCksIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgcm9v
dC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0
eXBlLCAweGJlZWYpLAotICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwK
LSAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2lu
KCksIHR5cGUsIDQyKSksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgYXV0byBj
b2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAgICAgIFQgdmFsdWVbMl07Ci0gICAgICAgIHZh
bHVlWzBdID0gNDI7Ci0gICAgICAgIHZhbHVlWzFdID0gMTM7Ci0gICAgICAgIENIRUNLKGludm9r
ZTxib29sPigqY29kZSwgdmFsdWUpKTsKLSAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRp
Y19jYXN0PFQ+KDB4YmVlZikpOwotICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOwotICAg
ICAgICB2YWx1ZVswXSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7Ci0gICAgICAgIENIRUNLKCFpbnZv
a2U8Ym9vbD4oKmNvZGUsICZ2YWx1ZSkpOwotICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3Rh
dGljX2Nhc3Q8VD4oMzAwKSk7Ci0gICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7Ci0gICAg
ICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwgdHJ1ZSk7Ci0gICAgfQotfQotCi10ZW1wbGF0
ZTx0eXBlbmFtZSBUPgotdm9pZCB0ZXN0QXRvbWljWGNoZyhCMzo6T3Bjb2RlIG9wY29kZSkKLXsK
LSAgICBUeXBlIHR5cGUgPSBOYXRpdmVUcmFpdHM8VD46OnR5cGU7Ci0gICAgV2lkdGggd2lkdGgg
PSBOYXRpdmVUcmFpdHM8VD46OndpZHRoOwotICAgIAotICAgIGF1dG8gZG9UaGVNYXRoID0gWyZd
IChUJiBtZW1vcnksIFQgb3BlcmFuZCkgLT4gVCB7Ci0gICAgICAgIFQgb2xkVmFsdWUgPSBtZW1v
cnk7Ci0gICAgICAgIHN3aXRjaCAob3Bjb2RlKSB7Ci0gICAgICAgIGNhc2UgQXRvbWljWGNoZ0Fk
ZDoKLSAgICAgICAgICAgIG1lbW9yeSArPSBvcGVyYW5kOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKLSAgICAgICAgICAgIG1lbW9yeSAmPSBvcGVyYW5k
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQXRvbWljWGNoZ09yOgotICAgICAg
ICAgICAgbWVtb3J5IHw9IG9wZXJhbmQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBBdG9taWNYY2hnU3ViOgotICAgICAgICAgICAgbWVtb3J5IC09IG9wZXJhbmQ7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBBdG9taWNYY2hnWG9yOgotICAgICAgICAgICAgbWVt
b3J5IF49IG9wZXJhbmQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBBdG9taWNY
Y2hnOgotICAgICAgICAgICAgbWVtb3J5ID0gb3BlcmFuZDsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gb2xkVmFsdWU7Ci0gICAgfTsKLSAgICAKLSAg
ICBhdXRvIG9sZFZhbHVlID0gWyZdIChUIG1lbW9yeSwgVCBvcGVyYW5kKSAtPiBUIHsKLSAgICAg
ICAgcmV0dXJuIGRvVGhlTWF0aChtZW1vcnksIG9wZXJhbmQpOwotICAgIH07Ci0gICAgCi0gICAg
YXV0byBuZXdWYWx1ZSA9IFsmXSAoVCBtZW1vcnksIFQgb3BlcmFuZCkgLT4gVCB7Ci0gICAgICAg
IGRvVGhlTWF0aChtZW1vcnksIG9wZXJhbmQpOwotICAgICAgICByZXR1cm4gbWVtb3J5OwotICAg
IH07Ci0gICAgCi0gICAgYXV0byBjaGVja015RGlzYXNzZW1ibHkgPSBbJl0gKENvbXBpbGF0aW9u
JiBjb21waWxhdGlvbiwgYm9vbCBmZW5jZWQpIHsKLSAgICAgICAgaWYgKGlzWDg2KCkpCi0gICAg
ICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImxvY2siKTsKLSAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAoZmVuY2VkKSB7Ci0gICAgICAgICAgICAgICAgY2hl
Y2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJsZGF4Iik7Ci0gICAgICAgICAgICAgICAg
Y2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJzdGx4Iik7Ci0gICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9u
LCAibGR4Iik7Ci0gICAgICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRp
b24sICJzdHgiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH07Ci0gICAgCi0gICAg
ewotICAgICAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8
QXRvbWljVmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIG9wY29kZSwgT3JpZ2luKCksIHdp
ZHRoLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdp
bigpLCB0eXBlLCAxKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKTsKLSAgICAK
LSAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAgICAgIFQgdmFsdWVb
Ml07Ci0gICAgICAgIHZhbHVlWzBdID0gNTsKLSAgICAgICAgdmFsdWVbMV0gPSAxMDA7Ci0gICAg
ICAgIENIRUNLX0VRKGludm9rZTxUPigqY29kZSwgdmFsdWUpLCBvbGRWYWx1ZSg1LCAxKSk7Ci0g
ICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBuZXdWYWx1ZSg1LCAxKSk7Ci0gICAgICAgIENIRUNL
X0VRKHZhbHVlWzFdLCAxMDApOwotICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUsIHRy
dWUpOwotICAgIH0KLSAgICAKLSAgICB7Ci0gICAgICAgIFByb2NlZHVyZSBwcm9jOwotICAgICAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJv
Yywgb3Bjb2RlLCBPcmlnaW4oKSwgd2lkdGgsCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5k
SW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKLSAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCkpKTsKLSAgICAKLSAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2Mo
cHJvYyk7Ci0gICAgICAgIFQgdmFsdWVbMl07Ci0gICAgICAgIHZhbHVlWzBdID0gNTsKLSAgICAg
ICAgdmFsdWVbMV0gPSAxMDA7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxUPigqY29kZSwgdmFs
dWUpLCBvbGRWYWx1ZSg1LCA0MikpOwotICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgbmV3VmFs
dWUoNSwgNDIpKTsKLSAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEwMCk7Ci0gICAgICAgIGNo
ZWNrTXlEaXNhc3NlbWJseSgqY29kZSwgdHJ1ZSk7Ci0gICAgfQotICAgIAotICAgIHsKLSAgICAg
ICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCi0gICAgICAgICAg
ICBwcm9jLCBvcGNvZGUsIE9yaWdpbigpLCB3aWR0aCwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCi0gICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCkpOwotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVy
biwgT3JpZ2luKCkpOwotICAgIAotICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9j
KTsKLSAgICAgICAgVCB2YWx1ZVsyXTsKLSAgICAgICAgdmFsdWVbMF0gPSA1OwotICAgICAgICB2
YWx1ZVsxXSA9IDEwMDsKLSAgICAgICAgaW52b2tlPFQ+KCpjb2RlLCB2YWx1ZSk7Ci0gICAgICAg
IENIRUNLX0VRKHZhbHVlWzBdLCBuZXdWYWx1ZSg1LCA0MikpOwotICAgICAgICBDSEVDS19FUSh2
YWx1ZVsxXSwgMTAwKTsKLSAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlLCB0cnVlKTsK
LSAgICB9Ci0gICAgCi0gICAgewotICAgICAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICAgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEF0b21pY1ZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIG9wY29kZSwgT3JpZ2luKCksIHdpZHRo
LAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5
cGUsIDQyKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKLSAgICAgICAgICAgIDAsIEhl
YXBSYW5nZSg0MiksIEhlYXBSYW5nZSgpKTsKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKLSAgICAKLSAgICAgICAgYXV0byBjb2RlID0gY29t
cGlsZVByb2MocHJvYyk7Ci0gICAgICAgIFQgdmFsdWVbMl07Ci0gICAgICAgIHZhbHVlWzBdID0g
NTsKLSAgICAgICAgdmFsdWVbMV0gPSAxMDA7Ci0gICAgICAgIGludm9rZTxUPigqY29kZSwgdmFs
dWUpOwotICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgbmV3VmFsdWUoNSwgNDIpKTsKLSAgICAg
ICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEwMCk7Ci0gICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgq
Y29kZSwgZmFsc2UpOwotICAgIH0KLX0KLQotdm9pZCB0ZXN0RGVwZW5kMzIoKQotewotICAgIFBy
b2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0g
ICAgVmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBWYWx1ZSogZmlyc3QgPSByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgcHRy
LCAwKTsKLSAgICBWYWx1ZSogc2Vjb25kID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigK
LSAgICAgICAgcHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwgcHRyLAotICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBa
RXh0MzIsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgRGVwZW5kLCBPcmlnaW4oKSwgZmlyc3QpKSksCi0gICAgICAgIDQpOwotICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgZmlyc3QsIHNl
Y29uZCkpOwotICAgIAotICAgIGludDMyX3QgdmFsdWVzWzJdOwotICAgIHZhbHVlc1swXSA9IDQy
OwotICAgIHZhbHVlc1sxXSA9IDB4YmVlZjsKLSAgICAKLSAgICBhdXRvIGNvZGUgPSBjb21waWxl
UHJvYyhwcm9jKTsKLSAgICBpZiAoaXNBUk02NCgpKQotICAgICAgICBjaGVja1VzZXNJbnN0cnVj
dGlvbigqY29kZSwgImVvciIpOwotICAgIGVsc2UgaWYgKGlzWDg2KCkpIHsKLSAgICAgICAgY2hl
Y2tEb2VzTm90VXNlSW5zdHJ1Y3Rpb24oKmNvZGUsICJtZmVuY2UiKTsKLSAgICAgICAgY2hlY2tE
b2VzTm90VXNlSW5zdHJ1Y3Rpb24oKmNvZGUsICJsb2NrIik7Ci0gICAgfQotICAgIENIRUNLX0VR
KGludm9rZTxpbnQzMl90PigqY29kZSwgdmFsdWVzKSwgNDIgKyAweGJlZWYpOwotfQotCi12b2lk
IHRlc3REZXBlbmQ2NCgpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OwotICAgIFZhbHVlKiBmaXJzdCA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywg
TG9hZCwgSW50NjQsIE9yaWdpbigpLCBwdHIsIDApOwotICAgIFZhbHVlKiBzZWNvbmQgPSByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICBwcm9jLCBMb2FkLCBJbnQ2NCwgT3Jp
Z2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9j
LCBBZGQsIE9yaWdpbigpLCBwdHIsCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIERlcGVuZCwgT3JpZ2luKCksIGZpcnN0KSksCi0gICAgICAgIDgpOwotICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgZmlyc3QsIHNl
Y29uZCkpOwotICAgIAotICAgIGludDY0X3QgdmFsdWVzWzJdOwotICAgIHZhbHVlc1swXSA9IDQy
OwotICAgIHZhbHVlc1sxXSA9IDB4YmVlZjsKLSAgICAKLSAgICBhdXRvIGNvZGUgPSBjb21waWxl
UHJvYyhwcm9jKTsKLSAgICBpZiAoaXNBUk02NCgpKQotICAgICAgICBjaGVja1VzZXNJbnN0cnVj
dGlvbigqY29kZSwgImVvciIpOwotICAgIGVsc2UgaWYgKGlzWDg2KCkpIHsKLSAgICAgICAgY2hl
Y2tEb2VzTm90VXNlSW5zdHJ1Y3Rpb24oKmNvZGUsICJtZmVuY2UiKTsKLSAgICAgICAgY2hlY2tE
b2VzTm90VXNlSW5zdHJ1Y3Rpb24oKmNvZGUsICJsb2NrIik7Ci0gICAgfQotICAgIENIRUNLX0VR
KGludm9rZTxpbnQ2NF90PigqY29kZSwgdmFsdWVzKSwgNDIgKyAweGJlZWYpOwotfQotCi12b2lk
IHRlc3RXYXNtQm91bmRzQ2hlY2sodW5zaWduZWQgb2Zmc2V0KQotewotICAgIFByb2NlZHVyZSBw
cm9jOwotICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAxKQotICAgICAgICByZXR1cm47Ci0gICAg
R1BSUmVnIHBpbm5lZCA9IEdQUkluZm86OmFyZ3VtZW50R1BSMTsKLSAgICBwcm9jLnBpblJlZ2lz
dGVyKHBpbm5lZCk7Ci0KLSAgICBwcm9jLnNldFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvcihbPV0g
KENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgcGlubmVkR1BSKSB7Ci0gICAgICAgIENIRUNLX0VR
KHBpbm5lZEdQUiwgcGlubmVkKTsKLQotICAgICAgICAvLyBUaGlzIHNob3VsZCBhbHdheXMgd29y
ayBiZWNhdXNlIGEgZnVuY3Rpb24gdGhpcyBzaW1wbGUgc2hvdWxkIG5ldmVyIGhhdmUgY2FsbGVl
Ci0gICAgICAgIC8vIHNhdmVzLgotICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMig0MiksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKLSAgICAgICAgaml0LmVtaXRG
dW5jdGlvbkVwaWxvZ3VlKCk7Ci0gICAgICAgIGppdC5yZXQoKTsKLSAgICB9KTsKLQotICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGxlZnQgPSByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7Ci0gICAgaWYgKHBvaW50ZXJUeXBlKCkgIT0gSW50MzIpCi0gICAgICAgIGxl
ZnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwgbGVmdCk7
Ci0gICAgcm9vdC0+YXBwZW5kTmV3PFdhc21Cb3VuZHNDaGVja1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgcGlubmVkLCBsZWZ0LCBvZmZzZXQpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMHg0Mik7Ci0gICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7Ci0KLSAg
ICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICB1aW50MzJfdCBib3VuZCA9IDIg
KyBvZmZzZXQ7Ci0gICAgYXV0byBjb21wdXRlUmVzdWx0ID0gWyZdICh1aW50MzJfdCBpbnB1dCkg
ewotICAgICAgICByZXR1cm4gaW5wdXQgKyBvZmZzZXQgPCBib3VuZCA/IDB4NDIgOiA0MjsKLSAg
ICB9OwotCi0gICAgQ0hFQ0tfRVEoaW52b2tlPGludDMyX3Q+KCpjb2RlLCAxLCBib3VuZCksIGNv
bXB1dGVSZXN1bHQoMSkpOwotICAgIENIRUNLX0VRKGludm9rZTxpbnQzMl90PigqY29kZSwgMywg
Ym91bmQpLCBjb21wdXRlUmVzdWx0KDMpKTsKLSAgICBDSEVDS19FUShpbnZva2U8aW50MzJfdD4o
KmNvZGUsIDIsIGJvdW5kKSwgY29tcHV0ZVJlc3VsdCgyKSk7Ci19Ci0KLXZvaWQgdGVzdFdhc21B
ZGRyZXNzKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBHUFJSZWcgcGlubmVkR1BSID0g
R1BSSW5mbzo6YXJndW1lbnRHUFIyOwotICAgIHByb2MucGluUmVnaXN0ZXIocGlubmVkR1BSKTsK
LQotICAgIHVuc2lnbmVkIGxvb3BDb3VudCA9IDEwMDsKLSAgICBWZWN0b3I8dW5zaWduZWQ+IHZh
bHVlcyhsb29wQ291bnQpOwotICAgIHVuc2lnbmVkIG51bVRvU3RvcmUgPSA0MjsKLQotICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogaGVhZGVy
ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGJvZHkgPSBwcm9jLmFkZEJsb2Nr
KCk7Ci0gICAgQmFzaWNCbG9jayogY29udGludWF0aW9uID0gcHJvYy5hZGRCbG9jaygpOwotCi0g
ICAgLy8gUm9vdAotICAgIFZhbHVlKiBsb29wQ291bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZhbHVl
KiB2YWx1ZVRvU3RvcmUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmln
aW4oKSwgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpKTsKLSAgICBVcHNpbG9uVmFsdWUqIGJlZ2luVXBzaWxvbiA9
IHJvb3QtPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KHByb2MsIE9yaWdpbigpLCByb290LT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwotICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4oKSwgaGVhZGVyKTsKLQotICAgIC8v
IEhlYWRlcgotICAgIFZhbHVlKiBpbmRleFBoaSA9IGhlYWRlci0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBQaGksIEludDMyLCBPcmlnaW4oKSk7Ci0gICAgaGVhZGVyLT5hcHBlbmROZXdDb250cm9s
VmFsdWUocHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKLSAgICAgICAgaGVhZGVyLT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEJlbG93LCBPcmlnaW4oKSwgaW5kZXhQaGksIGxvb3BDb3VudFZhbHVlKSwK
LSAgICAgICAgYm9keSwgY29udGludWF0aW9uKTsKLQotICAgIC8vIEJvZHkKLSAgICBWYWx1ZSog
cG9pbnRlciA9IGJvZHktPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgaW5k
ZXhQaGksCi0gICAgICAgIGJvZHktPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBzaXplb2YodW5zaWduZWQpKSk7Ci0gICAgcG9pbnRlciA9IGJvZHktPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgWkV4dDMyLCBPcmlnaW4oKSwgcG9pbnRlcik7Ci0gICAgYm9keS0+YXBwZW5k
TmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHZhbHVlVG9TdG9yZSwKLSAg
ICAgICAgYm9keS0+YXBwZW5kTmV3PFdhc21BZGRyZXNzVmFsdWU+KHByb2MsIE9yaWdpbigpLCBw
b2ludGVyLCBwaW5uZWRHUFIpLCAwKTsKLSAgICBVcHNpbG9uVmFsdWUqIGluY1Vwc2lsb24gPSBi
b2R5LT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4oKSwKLSAgICAgICAgYm9k
eS0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBpbmRleFBoaSwKLSAgICAg
ICAgICAgIGJvZHktPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSkp
OwotICAgIGJvZHktPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4oKSwg
aGVhZGVyKTsKLQotICAgIC8vIENvbnRpbnVhdGlvbgotICAgIGNvbnRpbnVhdGlvbi0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCkpOwotCi0gICAgYmVnaW5VcHNp
bG9uLT5zZXRQaGkoaW5kZXhQaGkpOwotICAgIGluY1Vwc2lsb24tPnNldFBoaShpbmRleFBoaSk7
Ci0KLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotICAgIGludm9rZTx2b2lk
PigqY29kZSwgbG9vcENvdW50LCBudW1Ub1N0b3JlLCB2YWx1ZXMuZGF0YSgpKTsKLSAgICBmb3Ig
KHVuc2lnbmVkIHZhbHVlIDogdmFsdWVzKQotICAgICAgICBDSEVDS19FUShudW1Ub1N0b3JlLCB2
YWx1ZSk7Ci19Ci0KLXZvaWQgdGVzdEZhc3RUTFNMb2FkKCkKLXsKLSNpZiBFTkFCTEUoRkFTVF9U
TFNfSklUKQotICAgIF9wdGhyZWFkX3NldHNwZWNpZmljX2RpcmVjdChXVEZfVEVTVElOR19LRVks
IGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigweGJlZWYpKSk7Ci0g
ICAgCi0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKLSAgICAKLSAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5h
cHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSk7
Ci0gICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0
ZXJzKCkpOwotICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKLSAgICAgICAgWyZdIChDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsK
LSAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2go
aml0KTsKLSAgICAgICAgICAgIGppdC5sb2FkRnJvbVRMU1B0cihmYXN0VExTT2Zmc2V0Rm9yS2V5
KFdURl9URVNUSU5HX0tFWSksIHBhcmFtc1swXS5ncHIoKSk7Ci0gICAgICAgIH0pOwotCi0gICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBwYXRjaHBvaW50
KTsKLSAgICAKLSAgICBDSEVDS19FUShjb21waWxlQW5kUnVuPHVpbnRwdHJfdD4ocHJvYyksIHN0
YXRpY19jYXN0PHVpbnRwdHJfdD4oMHhiZWVmKSk7Ci0jZW5kaWYKLX0KLQotdm9pZCB0ZXN0RmFz
dFRMU1N0b3JlKCkKLXsKLSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotICAgIFByb2NlZHVyZSBw
cm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBQYXRj
aHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVl
Pihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7Ci0gICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3Rl
clNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwotICAgIHBhdGNocG9pbnQtPm51bUdQU2Ny
YXRjaFJlZ2lzdGVycyA9IDE7Ci0gICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAotICAgICAg
ICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMm
IHBhcmFtcykgewotICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFs
bG93U2NyYXRjaChqaXQpOwotICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2ggPSBwYXJhbXMuZ3BT
Y3JhdGNoKDApOwotICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoMHhkZWFkKSwgc2NyYXRjaCk7Ci0gICAgICAgICAgICBqaXQuc3RvcmVUb1RMU1B0cihzY3Jh
dGNoLCBmYXN0VExTT2Zmc2V0Rm9yS2V5KFdURl9URVNUSU5HX0tFWSkpOwotICAgICAgICB9KTsK
LQotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigp
KTsKLQotICAgIGNvbXBpbGVBbmRSdW48dm9pZD4ocHJvYyk7Ci0gICAgQ0hFQ0tfRVEoYml0d2lz
ZV9jYXN0PHVpbnRwdHJfdD4oX3B0aHJlYWRfZ2V0c3BlY2lmaWNfZGlyZWN0KFdURl9URVNUSU5H
X0tFWSkpLCBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDB4ZGVhZCkpOwotI2VuZGlmCi19Ci0KLU5F
VkVSX0lOTElORSBib29sIGRvdWJsZUVxKGRvdWJsZSBhLCBkb3VibGUgYikgeyByZXR1cm4gYSA9
PSBiOyB9Ci1ORVZFUl9JTkxJTkUgYm9vbCBkb3VibGVOZXEoZG91YmxlIGEsIGRvdWJsZSBiKSB7
IHJldHVybiBhICE9IGI7IH0KLU5FVkVSX0lOTElORSBib29sIGRvdWJsZUd0KGRvdWJsZSBhLCBk
b3VibGUgYikgeyByZXR1cm4gYSA+IGI7IH0KLU5FVkVSX0lOTElORSBib29sIGRvdWJsZUd0ZShk
b3VibGUgYSwgZG91YmxlIGIpIHsgcmV0dXJuIGEgPj0gYjsgfQotTkVWRVJfSU5MSU5FIGJvb2wg
ZG91YmxlTHQoZG91YmxlIGEsIGRvdWJsZSBiKSB7IHJldHVybiBhIDwgYjsgfQotTkVWRVJfSU5M
SU5FIGJvb2wgZG91YmxlTHRlKGRvdWJsZSBhLCBkb3VibGUgYikgeyByZXR1cm4gYSA8PSBiOyB9
Ci0KLXZvaWQgdGVzdERvdWJsZUxpdGVyYWxDb21wYXJpc29uKGRvdWJsZSBhLCBkb3VibGUgYikK
LXsKLSAgICB1c2luZyBUZXN0ID0gc3RkOjp0dXBsZTxCMzo6T3Bjb2RlLCBib29sICgqKShkb3Vi
bGUsIGRvdWJsZSk+OwotICAgIFN0ZExpc3Q8VGVzdD4gdGVzdHMgPSB7Ci0gICAgICAgIFRlc3Qg
eyBOb3RFcXVhbCwgZG91YmxlTmVxIH0sCi0gICAgICAgIFRlc3QgeyBFcXVhbCwgZG91YmxlRXEg
fSwKLSAgICAgICAgVGVzdCB7IEVxdWFsT3JVbm9yZGVyZWQsIGRvdWJsZUVxIH0sCi0gICAgICAg
IFRlc3QgeyBHcmVhdGVyVGhhbiwgZG91YmxlR3QgfSwKLSAgICAgICAgVGVzdCB7IEdyZWF0ZXJF
cXVhbCwgZG91YmxlR3RlIH0sCi0gICAgICAgIFRlc3QgeyBMZXNzVGhhbiwgZG91YmxlTHQgfSwK
LSAgICAgICAgVGVzdCB7IExlc3NFcXVhbCwgZG91YmxlTHRlIH0sCi0gICAgfTsKLQotICAgIGZv
ciAoY29uc3QgVGVzdCYgdGVzdCA6IHRlc3RzKSB7Ci0gICAgICAgIFByb2NlZHVyZSBwcm9jOwot
ICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgICAgICBWYWx1
ZSogdmFsdWVBID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBhKTsKLSAgICAgICAgVmFsdWUqIHZhbHVlQiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERv
dWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7Ci0KLSAgICAgICAgLy8gVGhpcyBpcyBoZXJl
IGp1c3QgdG8gbWFrZSByZWR1Y2VEb3VibGVUb0Zsb2F0IGRvIHRoaW5ncy4KLSAgICAgICAgVmFs
dWUqIHZhbHVlQyA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmln
aW4oKSwgMC4wKTsKLSAgICAgICAgVmFsdWUqIHZhbHVlQXNGbG9hdCA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIHZhbHVlQyk7Ci0KLSAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEJpdEFuZCwgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgc3RkOjpnZXQ8MD4odGVzdCksIE9yaWdpbigpLCB2YWx1ZUEsIHZhbHVlQiks
Ci0gICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRXF1YWws
IE9yaWdpbigpLCB2YWx1ZUFzRmxvYXQsIHZhbHVlQXNGbG9hdCkpKTsKLQotICAgICAgICBDSEVD
SyghIWNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYykgPT0gc3RkOjpnZXQ8MT4odGVzdCkoYSwg
YikpOwotICAgIH0KLX0KLQotdm9pZCB0ZXN0RmxvYXRFcXVhbE9yVW5vcmRlcmVkRm9sZGluZygp
Ci17Ci0gICAgZm9yIChhdXRvJiBmaXJzdCA6IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4o
KSkgewotICAgICAgICBmb3IgKGF1dG8mIHNlY29uZCA6IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxm
bG9hdD4oKSkgewotICAgICAgICAgICAgZmxvYXQgYSA9IGZpcnN0LnZhbHVlOwotICAgICAgICAg
ICAgZmxvYXQgYiA9IHNlY29uZC52YWx1ZTsKLSAgICAgICAgICAgIGJvb2wgZXhwZWN0ZWRSZXN1
bHQgPSAoYSA9PSBiKSB8fCBzdGQ6OmlzdW5vcmRlcmVkKGEsIGIpOwotICAgICAgICAgICAgUHJv
Y2VkdXJlIHByb2M7Ci0gICAgICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOwotICAgICAgICAgICAgVmFsdWUqIGNvbnN0QSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdEZs
b2F0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKLSAgICAgICAgICAgIFZhbHVlKiBjb25zdEIg
PSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7Ci0K
LSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAg
ICAgICAgICAgICAgIHByb2MsIEVxdWFsT3JVbm9yZGVyZWQsIE9yaWdpbigpLAotICAgICAgICAg
ICAgICAgICAgICBjb25zdEEsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0QikpOwotICAgICAg
ICAgICAgQ0hFQ0soISFjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MpID09IGV4cGVjdGVkUmVz
dWx0KTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCB0ZXN0RmxvYXRFcXVhbE9yVW5vcmRl
cmVkRm9sZGluZ05hTigpCi17Ci0gICAgU3RkTGlzdDxmbG9hdD4gbmFucyA9IHsKLSAgICAgICAg
Yml0d2lzZV9jYXN0PGZsb2F0PigweGZmZmZmZmZkKSwKLSAgICAgICAgYml0d2lzZV9jYXN0PGZs
b2F0PigweGZmZmZmZmZlKSwKLSAgICAgICAgYml0d2lzZV9jYXN0PGZsb2F0PigweGZmZmZmZmYw
KSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KFBOYU4pLAotICAgIH07Ci0KLSAgICB1bnNp
Z25lZCBpID0gMDsKLSAgICBmb3IgKGZsb2F0IG5hbiA6IG5hbnMpIHsKLSAgICAgICAgUkVMRUFT
RV9BU1NFUlQoc3RkOjppc25hbihuYW4pKTsKLSAgICAgICAgUHJvY2VkdXJlIHByb2M7Ci0gICAg
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgIFZhbHVlKiBh
ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIG5hbik7
Ci0gICAgICAgIFZhbHVlKiBiID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVU
b0Zsb2F0LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKSk7Ci0KLSAgICAg
ICAgaWYgKGkgJSAyKQotICAgICAgICAgICAgc3RkOjpzd2FwKGEsIGIpOwotICAgICAgICArK2k7
Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBFcXVhbE9yVW5v
cmRlcmVkLCBPcmlnaW4oKSwgYSwgYikpOwotICAgICAgICBDSEVDSyghIWNvbXBpbGVBbmRSdW48
aW50MzJfdD4ocHJvYywgc3RhdGljX2Nhc3Q8ZG91YmxlPigxLjApKSk7Ci0gICAgfQotfQotCi12
b2lkIHRlc3RGbG9hdEVxdWFsT3JVbm9yZGVyZWREb250Rm9sZCgpCi17Ci0gICAgZm9yIChhdXRv
JiBmaXJzdCA6IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSkgewotICAgICAgICBmbG9h
dCBhID0gZmlyc3QudmFsdWU7Ci0gICAgICAgIFByb2NlZHVyZSBwcm9jOwotICAgICAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgICAgICBWYWx1ZSogY29uc3RBID0g
cm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpOwotICAg
ICAgICBWYWx1ZSogYiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9h
dCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCkpOwotICAgICAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgRXF1YWxP
clVub3JkZXJlZCwgT3JpZ2luKCksIGNvbnN0QSwgYikpOwotCi0gICAgICAgIGF1dG8gY29kZSA9
IGNvbXBpbGVQcm9jKHByb2MpOwotCi0gICAgICAgIGZvciAoYXV0byYgc2Vjb25kIDogZmxvYXRp
bmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKSB7Ci0gICAgICAgICAgICBmbG9hdCBiID0gc2Vjb25k
LnZhbHVlOwotICAgICAgICAgICAgYm9vbCBleHBlY3RlZFJlc3VsdCA9IChhID09IGIpIHx8IHN0
ZDo6aXN1bm9yZGVyZWQoYSwgYik7Ci0gICAgICAgICAgICBDSEVDSyghIWludm9rZTxpbnQzMl90
PigqY29kZSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihiKSkgPT0gZXhwZWN0ZWRSZXN1bHQpOwotICAg
ICAgICB9Ci0gICAgfQotfQotCi12b2lkIGZ1bmN0aW9uTmluZUFyZ3MoaW50MzJfdCwgdm9pZCos
IHZvaWQqLCB2b2lkKiwgdm9pZCosIHZvaWQqLCB2b2lkKiwgdm9pZCosIHZvaWQqKSB7IH0KLQot
dm9pZCB0ZXN0U2h1ZmZsZURvZXNudFRyYXNoQ2FsbGVlU2F2ZXMoKQotewotICAgIFByb2NlZHVy
ZSBwcm9jOwotCi0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBC
YXNpY0Jsb2NrKiBsaWtlbHkgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogdW5s
aWtlbHkgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBSZWdpc3RlclNldCByZWdzID0gUmVnaXN0
ZXJTZXQ6OmFsbEdQUnMoKTsKLSAgICByZWdzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVn
aXN0ZXJzKCkpOwotICAgIHJlZ3MuZXhjbHVkZShSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2Fy
ZVJlZ2lzdGVycygpKTsKLSAgICByZWdzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVS
ZWdpc3RlcnMoKSk7Ci0gICAgcmVncy5leGNsdWRlKFJlZ2lzdGVyU2V0Ojphcmd1bWVudEdQUlMo
KSk7Ci0KLSAgICB1bnNpZ25lZCBpID0gMDsKLSAgICBWZWN0b3I8VmFsdWUqPiBwYXRjaGVzOwot
ICAgIGZvciAoUmVnIHJlZyA6IHJlZ3MpIHsKLSAgICAgICAgKytpOwotICAgICAgICBQYXRjaHBv
aW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihw
cm9jLCBJbnQzMiwgT3JpZ2luKCkpOwotICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lz
dGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJU
KHJlZy5pc0dQUigpKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWludCA9IFZh
bHVlUmVwOjpyZWcocmVnLmdwcigpKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9y
KAotICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5l
cmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRj
aFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAgICAgICAgICAgICAgaml0Lm1v
dmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoaSksIHBhcmFtc1swXS5ncHIoKSk7Ci0gICAg
ICAgICAgICB9KTsKLSAgICAgICAgcGF0Y2hlcy5hcHBlbmQocGF0Y2hwb2ludCk7Ci0gICAgfQot
Ci0gICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3RlcigwICUgR1BSSW5mbzo6bnVt
YmVyT2ZBcmd1bWVudFJlZ2lzdGVycykpOwotICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjp0b0FyZ3VtZW50
UmVnaXN0ZXIoMSAlIEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMpKTsKLSAgICBW
YWx1ZSogYXJnMyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6dG9Bcmd1bWVudFJlZ2lzdGVyKDIgJSBHUFJJbmZvOjpudW1iZXJPZkFy
Z3VtZW50UmVnaXN0ZXJzKSk7Ci0gICAgVmFsdWUqIGFyZzQgPSByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3Rl
cigzICUgR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycykpOwotICAgIFZhbHVlKiBh
cmc1ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIoNCAlIEdQUkluZm86Om51bWJlck9mQXJndW1lbnRS
ZWdpc3RlcnMpKTsKLSAgICBWYWx1ZSogYXJnNiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6dG9Bcmd1bWVudFJlZ2lzdGVyKDUgJSBH
UFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzKSk7Ci0gICAgVmFsdWUqIGFyZzcgPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OnRvQXJndW1lbnRSZWdpc3Rlcig2ICUgR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVy
cykpOwotICAgIFZhbHVlKiBhcmc4ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIoNyAlIEdQUkluZm86
Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMpKTsKLQotICAgIFBhdGNocG9pbnRWYWx1ZSogcHRy
ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgSW50NjQsIE9yaWdpbigp
KTsKLSAgICBwdHItPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygp
KTsKLSAgICBwdHItPnJlc3VsdENvbnN0cmFpbnQgPSBWYWx1ZVJlcDo6cmVnKEdQUkluZm86OnJl
Z0NTMCk7Ci0gICAgcHRyLT5hcHBlbmRTb21lUmVnaXN0ZXIoYXJnMSk7Ci0gICAgcHRyLT5zZXRH
ZW5lcmF0b3IoCi0gICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRj
aFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAgICAgICAgICBqaXQubW92ZShw
YXJhbXNbMV0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7Ci0gICAgICAgIH0pOwotCi0gICAgVmFs
dWUqIGNvbmRpdGlvbiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIEVx
dWFsLCBPcmlnaW4oKSwgCi0gICAgICAgIHB0ciwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENv
bnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKLSAgICAgICAgY29u
ZGl0aW9uLAotICAgICAgICBGcmVxdWVudGVkQmxvY2sobGlrZWx5LCBGcmVxdWVuY3lDbGFzczo6
Tm9ybWFsKSwgRnJlcXVlbnRlZEJsb2NrKHVubGlrZWx5LCBGcmVxdWVuY3lDbGFzczo6UmFyZSkp
OwotCi0gICAgLy8gTmV2ZXIgZXhlY3V0ZXMuCi0gICAgVmFsdWUqIGNvbnN0NDIgPSBsaWtlbHkt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0Mik7Ci0gICAgbGlrZWx5
LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY29uc3Q0Mik7
Ci0KLSAgICAvLyBBbHdheXMgZXhlY3V0ZXMuCi0gICAgVmFsdWUqIGNvbnN0TnVtYmVyID0gdW5s
aWtlbHktPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAweDEpOwotCi0g
ICAgdW5saWtlbHktPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKLSAgICAgICAgcHJvYywgVm9pZCwg
T3JpZ2luKCksCi0gICAgICAgIHVubGlrZWx5LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4oZnVuY3Rpb25OaW5lQXJncywgQjND
Q2FsbFB0clRhZykpLAotICAgICAgICBjb25zdE51bWJlciwgYXJnMSwgYXJnMiwgYXJnMywgYXJn
NCwgYXJnNSwgYXJnNiwgYXJnNywgYXJnOCk7Ci0KLSAgICBQYXRjaHBvaW50VmFsdWUqIHZvaWRQ
YXRjaCA9IHVubGlrZWx5LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBWb2lkLCBP
cmlnaW4oKSk7Ci0gICAgdm9pZFBhdGNoLT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0
Y2hSZWdpc3RlcnMoKSk7Ci0gICAgZm9yIChWYWx1ZSogdiA6IHBhdGNoZXMpCi0gICAgICAgIHZv
aWRQYXRjaC0+YXBwZW5kU29tZVJlZ2lzdGVyKHYpOwotICAgIHZvaWRQYXRjaC0+YXBwZW5kU29t
ZVJlZ2lzdGVyKGFyZzEpOwotICAgIHZvaWRQYXRjaC0+YXBwZW5kU29tZVJlZ2lzdGVyKGFyZzIp
OwotICAgIHZvaWRQYXRjaC0+YXBwZW5kU29tZVJlZ2lzdGVyKGFyZzMpOwotICAgIHZvaWRQYXRj
aC0+YXBwZW5kU29tZVJlZ2lzdGVyKGFyZzQpOwotICAgIHZvaWRQYXRjaC0+YXBwZW5kU29tZVJl
Z2lzdGVyKGFyZzUpOwotICAgIHZvaWRQYXRjaC0+YXBwZW5kU29tZVJlZ2lzdGVyKGFyZzYpOwot
ICAgIHZvaWRQYXRjaC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKLQotICAgIHVubGlrZWx5LT5hcHBlbmROZXdD
b250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgdW5saWtlbHktPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBwdHIpKTsK
LQotICAgIGludDMyX3QqIGlucHV0UHRyID0gc3RhdGljX2Nhc3Q8aW50MzJfdCo+KGZhc3RNYWxs
b2Moc2l6ZW9mKGludDMyX3QpKSk7Ci0gICAgKmlucHV0UHRyID0gNDg7Ci0gICAgQ0hFQ0soY29t
cGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBpbnB1dFB0cikgPT0gNDgpOwotICAgIGZhc3RGcmVl
KGlucHV0UHRyKTsKLX0KLQotdm9pZCB0ZXN0RGVtb3RlUGF0Y2hwb2ludFRlcm1pbmFsKCkKLXsK
LSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICAKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGRvbmUgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAg
Ci0gICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNo
cG9pbnRWYWx1ZT4ocHJvYywgSW50MzIsIE9yaWdpbigpKTsKLSAgICBwYXRjaHBvaW50LT5lZmZl
Y3RzLnRlcm1pbmFsID0gdHJ1ZTsKLSAgICByb290LT5zZXRTdWNjZXNzb3JzKGRvbmUpOwotICAg
IAotICAgIGRvbmUtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcGF0
Y2hwb2ludCk7Ci0gICAgCi0gICAgcHJvYy5yZXNldFJlYWNoYWJpbGl0eSgpOwotICAgIGJyZWFr
Q3JpdGljYWxFZGdlcyhwcm9jKTsKLSAgICBJbmRleFNldDxWYWx1ZSo+IHZhbHVlc1RvRGVtb3Rl
OwotICAgIHZhbHVlc1RvRGVtb3RlLmFkZChwYXRjaHBvaW50KTsKLSAgICBkZW1vdGVWYWx1ZXMo
cHJvYywgdmFsdWVzVG9EZW1vdGUpOwotICAgIHZhbGlkYXRlKHByb2MpOwotfQotCi12b2lkIHRl
c3RSZXBvcnRVc2VkUmVnaXN0ZXJzTGF0ZVVzZUZvbGxvd2VkQnlFYXJseURlZkRvZXNOb3RNYXJr
VXNlQXNEZWFkKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBpZiAocHJvYy5vcHRMZXZl
bCgpIDwgMikKLSAgICAgICAgcmV0dXJuOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7Ci0KLSAgICBSZWdpc3RlclNldCBhbGxSZWdzID0gUmVnaXN0ZXJTZXQ6OmFsbEdQ
UnMoKTsKLSAgICBhbGxSZWdzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkp
OwotICAgIGFsbFJlZ3MuZXhjbHVkZShSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lz
dGVycygpKTsKLQotICAgIHsKLSAgICAgICAgLy8gTWFrZSBldmVyeSByZWcgNDIgKGp1c3QgbmVl
ZHMgdG8gYmUgYSB2YWx1ZSBvdGhlciB0aGFuIDEwKS4KLSAgICAgICAgUGF0Y2hwb2ludFZhbHVl
KiBwYXRjaHBvaW50ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgVm9p
ZCwgT3JpZ2luKCkpOwotICAgICAgICBWYWx1ZSogY29uc3Q0MiA9IHJvb3QtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0Mik7Ci0gICAgICAgIGZvciAoUmVnIHJlZyA6
IGFsbFJlZ3MpCi0gICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoY29uc3Q0MiwgVmFsdWVS
ZXA6OnJlZyhyZWcpKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFsmXSAoQ0Nh
bGxIZWxwZXJzJiwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKLSAgICB9
Ci0KLSAgICB7Ci0gICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IHJvb3QtPmFw
cGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKLSAgICAgICAg
VmFsdWUqIGNvbnN0MTAgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmln
aW4oKSwgMTApOwotICAgICAgICBmb3IgKFJlZyByZWcgOiBhbGxSZWdzKQotICAgICAgICAgICAg
cGF0Y2hwb2ludC0+YXBwZW5kKGNvbnN0MTAsIFZhbHVlUmVwOjpsYXRlUmVnKHJlZykpOwotICAg
ICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29u
c3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewotICAgICAgICAgICAgZm9yIChSZWcgcmVn
IDogYWxsUmVncykgewotICAgICAgICAgICAgICAgIGF1dG8gZG9uZSA9IGppdC5icmFuY2gzMihD
Q2FsbEhlbHBlcnM6OkVxdWFsLCByZWcuZ3ByKCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KDEwKSk7Ci0gICAgICAgICAgICAgICAgaml0LmJyZWFrcG9pbnQoKTsKLSAgICAgICAgICAgICAg
ICBkb25lLmxpbmsoJmppdCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotICAgIH0KLQot
ICAgIHsKLSAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gcm9vdC0+YXBwZW5k
TmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgSW50MzIsIE9yaWdpbigpKTsKLSAgICAgICAgcGF0
Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWludCA9IFZhbHVlUmVwOjpTb21lRWFybHlSZWdpc3RlcjsK
LSAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxwZXJzJiwgY29u
c3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGFsbFJlZ3MuY29udGFpbnMocGFyYW1zWzBdLmdwcigpKSk7Ci0gICAgICAgIH0p
OwotICAgIH0KLQotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4s
IE9yaWdpbigpKTsKLQotICAgIGNvbXBpbGVBbmRSdW48dm9pZD4ocHJvYyk7Ci19Ci0KLXZvaWQg
dGVzdEluZmluaXRlTG9vcERvZXNudENhdXNlQmFkSG9pc3RpbmcoKQotewotICAgIFByb2NlZHVy
ZSBwcm9jOwotICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAyKQotICAgICAgICByZXR1cm47Ci0g
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBo
ZWFkZXIgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogbG9hZEJsb2NrID0gcHJv
Yy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIHBvc3RMb2FkQmxvY2sgPSBwcm9jLmFkZEJs
b2NrKCk7Ci0KLSAgICBWYWx1ZSogYXJnID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4oKSwgaGVhZGVyKTsKLQotICAg
IGhlYWRlci0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBCcmFuY2gsIE9y
aWdpbigpLAotICAgICAgICBoZWFkZXItPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRXF1YWwsIE9y
aWdpbigpLAotICAgICAgICAgICAgYXJnLAotICAgICAgICAgICAgaGVhZGVyLT5hcHBlbmROZXc8
Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMTApKSwgaGVhZGVyLCBsb2FkQmxvY2spOwot
Ci0gICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbG9hZEJsb2NrLT5hcHBlbmROZXc8
UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7Ci0gICAgcGF0Y2hwb2ludC0+
ZWZmZWN0cyA9IEVmZmVjdHM6Om5vbmUoKTsKLSAgICBwYXRjaHBvaW50LT5lZmZlY3RzLndyaXRl
c0xvY2FsU3RhdGUgPSB0cnVlOyAvLyBEb24ndCBEQ0UgdGhpcy4KLSAgICBwYXRjaHBvaW50LT5z
ZXRHZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgd29ya3MgYmVjYXVz
ZSB3ZSBkb24ndCBoYXZlIGNhbGxlZSBzYXZlcy4KLSAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rp
b25FcGlsb2d1ZSgpOwotICAgICAgICAgICAgaml0LnJldCgpOwotICAgICAgICB9KTsKLQotICAg
IFZhbHVlKiBiYWRMb2FkID0gbG9hZEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2Ms
IExvYWQsIEludDY0LCBPcmlnaW4oKSwgYXJnLCAwKTsKLQotICAgIGxvYWRCbG9jay0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAotICAgICAg
ICBsb2FkQmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRXF1YWwsIE9yaWdpbigpLAotICAg
ICAgICAgICAgYmFkTG9hZCwKLSAgICAgICAgICAgIGxvYWRCbG9jay0+YXBwZW5kTmV3PENvbnN0
NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQ1KSksIGhlYWRlciwgcG9zdExvYWRCbG9jayk7Ci0K
LSAgICBwb3N0TG9hZEJsb2NrLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgYmFkTG9hZCk7Ci0KLSAgICAvLyBUaGUgcGF0Y2hwb2ludCBlYXJseSByZXQoKSB3
b3JrcyBiZWNhdXNlIHdlIGRvbid0IGhhdmUgY2FsbGVlIHNhdmVzLgotICAgIGF1dG8gY29kZSA9
IGNvbXBpbGVQcm9jKHByb2MpOwotICAgIFJFTEVBU0VfQVNTRVJUKCFwcm9jLmNhbGxlZVNhdmVS
ZWdpc3RlckF0T2Zmc2V0TGlzdCgpLnNpemUoKSk7IAotICAgIGludm9rZTx2b2lkPigqY29kZSwg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KDU1KSk7IC8vIFNob3VsZG4ndCBjcmFzaCBkZXJlZmVybmNp
bmcgNTUuCi19Ci0KLS8vIE1ha2Ugc3VyZSB0aGUgY29tcGlsZXIgZG9lcyBub3QgdHJ5IHRvIG9w
dGltaXplIGFueXRoaW5nIG91dC4KLU5FVkVSX0lOTElORSBkb3VibGUgemVybygpCi17Ci0gICAg
cmV0dXJuIDAuOwotfQotCi1kb3VibGUgbmVnYXRpdmVaZXJvKCkKLXsKLSAgICByZXR1cm4gLXpl
cm8oKTsKLX0KLQotI2RlZmluZSBQUkVGSVggIk8iLCBPcHRpb25zOjpkZWZhdWx0QjNPcHRMZXZl
bCgpLCAiOiAiCi0KLSNkZWZpbmUgUlVOX05PVyh0ZXN0KSBkbyB7ICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAgICAgaWYgKCFzaG91bGRSdW4oI3Rlc3QpKSAgICAgICAgICAgICAgICAgIFwK
LSAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg
ICAgZGF0YUxvZyhQUkVGSVggI3Rlc3QgIi4uLlxuIik7ICAgICAgICAgIFwKLSAgICAgICAgdGVz
dDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZGF0YUxvZyhQ
UkVGSVggI3Rlc3QgIjogT0shXG4iKTsgICAgICAgIFwKLSAgICB9IHdoaWxlIChmYWxzZSkKLSNk
ZWZpbmUgUlVOKHRlc3QpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgICAgIGlmICghc2hvdWxkUnVuKCN0ZXN0KSkgICAgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgICAgICAgdGFza3MuYXBwZW5kKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgICAgICAgICBjcmVhdGVTaGFyZWRUYXNrPHZvaWQoKT4oICAgICAgICAgICAgICAgICAg
XAotICAgICAgICAgICAgICAgIFsmXSAoKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZyhQUkVGSVggI3Rlc3QgIi4uLlxuIik7ICAg
ICBcCi0gICAgICAgICAgICAgICAgICAgIHRlc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKFBSRUZJWCAjdGVzdCAiOiBPSyFcbiIp
OyAgIFwKLSAgICAgICAgICAgICAgICB9KSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0gICAgfSB3aGlsZSAoZmFsc2UpOwotCi0jZGVmaW5lIFJVTl9VTkFSWSh0ZXN0LCB2
YWx1ZXMpIFwKLSAgICBmb3IgKGF1dG8gYSA6IHZhbHVlcykgeyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotICAgICAgICBDU3RyaW5nIHRlc3RTdHIgPSB0b0NTdHJpbmcoUFJFRklYICN0
ZXN0LCAiKCIsIGEubmFtZSwgIikiKTsgXAotICAgICAgICBpZiAoIXNob3VsZFJ1bih0ZXN0U3Ry
LmRhdGEoKSkpICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBjb250aW51ZTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdGFza3MuYXBwZW5kKGNyZWF0
ZVNoYXJlZFRhc2s8dm9pZCgpPiggICAgICAgICAgXAotICAgICAgICAgICAgWz1dICgpIHsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgZGF0YUxv
Zyh0b0NTdHJpbmcodGVzdFN0ciwgIi4uLlxuIikpOyAgIFwKLSAgICAgICAgICAgICAgICB0ZXN0
KGEudmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIGRh
dGFMb2codG9DU3RyaW5nKHRlc3RTdHIsICI6IE9LIVxuIikpOyBcCi0gICAgICAgICAgICB9KSk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9Ci0KLSNkZWZp
bmUgUlVOX0JJTkFSWSh0ZXN0LCB2YWx1ZXNBLCB2YWx1ZXNCKSBcCi0gICAgZm9yIChhdXRvIGEg
OiB2YWx1ZXNBKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGZv
ciAoYXV0byBiIDogdmFsdWVzQikgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
ICAgICAgICBDU3RyaW5nIHRlc3RTdHIgPSB0b0NTdHJpbmcoUFJFRklYICN0ZXN0LCAiKCIsIGEu
bmFtZSwgIiwgIiwgYi5uYW1lLCAiKSIpOyBcCi0gICAgICAgICAgICBpZiAoIXNob3VsZFJ1bih0
ZXN0U3RyLmRhdGEoKSkpICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgY29udGlu
dWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICB0YXNr
cy5hcHBlbmQoY3JlYXRlU2hhcmVkVGFzazx2b2lkKCk+KCAgICAgICAgICBcCi0gICAgICAgICAg
ICAgICAgWz1dICgpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
ICAgICAgICAgICAgICAgIGRhdGFMb2codG9DU3RyaW5nKHRlc3RTdHIsICIuLi5cbiIpKTsgICBc
Ci0gICAgICAgICAgICAgICAgICAgIHRlc3QoYS52YWx1ZSwgYi52YWx1ZSk7ICAgICAgICAgICAg
ICAgICBcCi0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2codG9DU3RyaW5nKHRlc3RTdHIsICI6
IE9LIVxuIikpOyBcCi0gICAgICAgICAgICAgICAgfSkpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfQotI2RlZmluZSBSVU5fVEVSTkFSWSh0ZXN0
LCB2YWx1ZXNBLCB2YWx1ZXNCLCB2YWx1ZXNDKSBcCi0gICAgZm9yIChhdXRvIGEgOiB2YWx1ZXNB
KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBmb3IgKGF1
dG8gYiA6IHZhbHVlc0IpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg
ICAgICAgIGZvciAoYXV0byBjIDogdmFsdWVzQykgeyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgICAgICAgICAgICAgQ1N0cmluZyB0ZXN0U3RyID0gdG9DU3RyaW5nKCN0ZXN0LCAi
KCIsIGEubmFtZSwgIiwgIiwgYi5uYW1lLCAiLCIsIGMubmFtZSwgIikiKTsgXAotICAgICAgICAg
ICAgICAgIGlmICghc2hvdWxkUnVuKHRlc3RTdHIuZGF0YSgpKSkgICAgICAgICAgICAgICAgIFwK
LSAgICAgICAgICAgICAgICAgICAgY29udGludWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0gICAgICAgICAgICAgICAgdGFza3MuYXBwZW5kKGNyZWF0ZVNoYXJlZFRhc2s8
dm9pZCgpPiggICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICBbPV0gKCkgeyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRh
dGFMb2codG9DU3RyaW5nKHRlc3RTdHIsICIuLi5cbiIpKTsgICBcCi0gICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0KGEudmFsdWUsIGIudmFsdWUsIGMudmFsdWUpOyAgICAgICAgXAotICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZyh0b0NTdHJpbmcodGVzdFN0ciwgIjogT0shXG4iKSk7
IFwKLSAgICAgICAgICAgICAgICAgICAgfSkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9Ci0KLXZvaWQgcnVuKGNvbnN0
IGNoYXIqIGZpbHRlcikKLXsKLSAgICBEZXF1ZTxSZWZQdHI8U2hhcmVkVGFzazx2b2lkKCk+Pj4g
dGFza3M7Ci0KLSAgICBhdXRvIHNob3VsZFJ1biA9IFsmXSAoY29uc3QgY2hhciogdGVzdE5hbWUp
IC0+IGJvb2wgewotICAgICAgICAvLyBGSVhNRTogVGhlc2UgdGVzdHMgZmFpbCA8aHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTMzMD4uCi0gICAgICAgIGlmICghZmls
dGVyICYmIGlzQVJNNjQoKSkgewotICAgICAgICAgICAgZm9yIChhdXRvJiBmYWlsaW5nVGVzdCA6
IHsKLSAgICAgICAgICAgICAgICAidGVzdFJlcG9ydFVzZWRSZWdpc3RlcnNMYXRlVXNlRm9sbG93
ZWRCeUVhcmx5RGVmRG9lc05vdE1hcmtVc2VBc0RlYWQiLAotICAgICAgICAgICAgICAgICJ0ZXN0
TmVnRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24iLAotICAgICAgICAgICAgICAgICJ0
ZXN0UGluUmVnaXN0ZXJzIiwKLSAgICAgICAgICAgIH0pIHsKLSAgICAgICAgICAgICAgICBpZiAo
V1RGOjpmaW5kSWdub3JpbmdBU0NJSUNhc2VXaXRob3V0TGVuZ3RoKHRlc3ROYW1lLCBmYWlsaW5n
VGVzdCkgIT0gV1RGOjpub3RGb3VuZCkgewotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG4o
IioqKiBXYXJuaW5nOiBTa2lwcGluZyBrbm93bi1iYWQgdGVzdDogIiwgdGVzdE5hbWUpOwotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmICghZmlsdGVyICYmIGlzWDg2KCkpIHsKLSAg
ICAgICAgICAgIGZvciAoYXV0byYgZmFpbGluZ1Rlc3QgOiB7Ci0gICAgICAgICAgICAgICAgInRl
c3RSZXBvcnRVc2VkUmVnaXN0ZXJzTGF0ZVVzZUZvbGxvd2VkQnlFYXJseURlZkRvZXNOb3RNYXJr
VXNlQXNEZWFkIiwKLSAgICAgICAgICAgIH0pIHsKLSAgICAgICAgICAgICAgICBpZiAoV1RGOjpm
aW5kSWdub3JpbmdBU0NJSUNhc2VXaXRob3V0TGVuZ3RoKHRlc3ROYW1lLCBmYWlsaW5nVGVzdCkg
IT0gV1RGOjpub3RGb3VuZCkgewotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIioqKiBX
YXJuaW5nOiBTa2lwcGluZyBrbm93bi1iYWQgdGVzdDogIiwgdGVzdE5hbWUpOwotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAhZmlsdGVyIHx8IFdURjo6ZmluZElnbm9yaW5n
QVNDSUlDYXNlV2l0aG91dExlbmd0aCh0ZXN0TmFtZSwgZmlsdGVyKSAhPSBXVEY6Om5vdEZvdW5k
OwotICAgIH07Ci0KLSAgICBSVU5fTk9XKHRlc3RUZXJtaW5hbFBhdGNocG9pbnRUaGF0TmVlZHNU
b0JlU3BpbGxlZDIoKSk7Ci0gICAgUlVOKHRlc3Q0MigpKTsKLSAgICBSVU4odGVzdExvYWQ0Migp
KTsKLSAgICBSVU4odGVzdExvYWRBY3E0MigpKTsKLSAgICBSVU4odGVzdExvYWRPZmZzZXRJbW05
TWF4KCkpOwotICAgIFJVTih0ZXN0TG9hZE9mZnNldEltbTlNYXhQbHVzT25lKCkpOwotICAgIFJV
Tih0ZXN0TG9hZE9mZnNldEltbTlNYXhQbHVzVHdvKCkpOwotICAgIFJVTih0ZXN0TG9hZE9mZnNl
dEltbTlNaW4oKSk7Ci0gICAgUlVOKHRlc3RMb2FkT2Zmc2V0SW1tOU1pbk1pbnVzT25lKCkpOwot
ICAgIFJVTih0ZXN0TG9hZE9mZnNldFNjYWxlZFVuc2lnbmVkSW1tMTJNYXgoKSk7Ci0gICAgUlVO
KHRlc3RMb2FkT2Zmc2V0U2NhbGVkVW5zaWduZWRPdmVySW1tMTJNYXgoKSk7Ci0gICAgUlVOKHRl
c3RBcmcoNDMpKTsKLSAgICBSVU4odGVzdFJldHVybkNvbnN0NjQoNSkpOwotICAgIFJVTih0ZXN0
UmV0dXJuQ29uc3Q2NCgtNDIpKTsKLSAgICBSVU4odGVzdFJldHVyblZvaWQoKSk7Ci0KLSAgICBS
VU5fQklOQVJZKHRlc3RCaXRYb3JUcmVlQXJncywgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJh
bmRzKCkpOwotICAgIFJVTl9CSU5BUlkodGVzdEJpdFhvclRyZWVBcmdzRXZlbiwgaW50NjRPcGVy
YW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5BUlkodGVzdEJpdFhvclRyZWVB
cmdJbW0sIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKLSAgICBSVU5fVU5BUlko
dGVzdEFkZFRyZWVBcmczMiwgaW50MzJPcGVyYW5kcygpKTsKLSAgICBSVU5fVU5BUlkodGVzdE11
bFRyZWVBcmczMiwgaW50MzJPcGVyYW5kcygpKTsKLSAgICBSVU5fVU5BUlkodGVzdEJpdEFuZFRy
ZWVBcmczMiwgaW50MzJPcGVyYW5kcygpKTsKLSAgICBSVU5fVU5BUlkodGVzdEJpdE9yVHJlZUFy
ZzMyLCBpbnQzMk9wZXJhbmRzKCkpOwotCi0gICAgUlVOKHRlc3RBZGRBcmcoMTExKSk7Ci0gICAg
UlVOKHRlc3RBZGRBcmdzKDEsIDEpKTsKLSAgICBSVU4odGVzdEFkZEFyZ3MoMSwgMikpOwotICAg
IFJVTih0ZXN0QWRkQXJnSW1tKDEsIDIpKTsKLSAgICBSVU4odGVzdEFkZEFyZ0ltbSgwLCAyKSk7
Ci0gICAgUlVOKHRlc3RBZGRBcmdJbW0oMSwgMCkpOwotICAgIFJVTih0ZXN0QWRkSW1tQXJnKDEs
IDIpKTsKLSAgICBSVU4odGVzdEFkZEltbUFyZygwLCAyKSk7Ci0gICAgUlVOKHRlc3RBZGRJbW1B
cmcoMSwgMCkpOwotICAgIFJVTl9CSU5BUlkodGVzdEFkZEFyZ01lbSwgaW50NjRPcGVyYW5kcygp
LCBpbnQ2NE9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5BUlkodGVzdEFkZE1lbUFyZywgaW50NjRP
cGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5BUlkodGVzdEFkZEltbU1l
bSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0
QWRkQXJnMzIsIGludDMyT3BlcmFuZHMoKSk7Ci0gICAgUlVOKHRlc3RBZGRBcmdzMzIoMSwgMSkp
OwotICAgIFJVTih0ZXN0QWRkQXJnczMyKDEsIDIpKTsKLSAgICBSVU5fQklOQVJZKHRlc3RBZGRB
cmdNZW0zMiwgaW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5B
UlkodGVzdEFkZE1lbUFyZzMyLCBpbnQzMk9wZXJhbmRzKCksIGludDMyT3BlcmFuZHMoKSk7Ci0g
ICAgUlVOX0JJTkFSWSh0ZXN0QWRkSW1tTWVtMzIsIGludDMyT3BlcmFuZHMoKSwgaW50MzJPcGVy
YW5kcygpKTsKLSAgICBSVU5fQklOQVJZKHRlc3RBZGROZWcxLCBpbnQzMk9wZXJhbmRzKCksIGlu
dDMyT3BlcmFuZHMoKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0QWRkTmVnMiwgaW50MzJPcGVyYW5k
cygpLCBpbnQzMk9wZXJhbmRzKCkpOwotICAgIFJVTih0ZXN0QWRkQXJnWmVyb0ltbVpEZWYoKSk7
Ci0gICAgUlVOKHRlc3RBZGRMb2FkVHdpY2UoKSk7Ci0gICAgUlVOX1RFUk5BUlkodGVzdEFkZE11
bE11bEFyZ3MsIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRz
KCkpOwotCi0gICAgUlVOKHRlc3RBZGRBcmdEb3VibGUoTV9QSSkpOwotICAgIFJVTih0ZXN0QWRk
QXJnc0RvdWJsZShNX1BJLCAxKSk7Ci0gICAgUlVOKHRlc3RBZGRBcmdzRG91YmxlKE1fUEksIC1N
X1BJKSk7Ci0gICAgUlVOKHRlc3RBZGRBcmdJbW1Eb3VibGUoTV9QSSwgMSkpOwotICAgIFJVTih0
ZXN0QWRkQXJnSW1tRG91YmxlKE1fUEksIDApKTsKLSAgICBSVU4odGVzdEFkZEFyZ0ltbURvdWJs
ZShNX1BJLCBuZWdhdGl2ZVplcm8oKSkpOwotICAgIFJVTih0ZXN0QWRkQXJnSW1tRG91YmxlKDAs
IDApKTsKLSAgICBSVU4odGVzdEFkZEFyZ0ltbURvdWJsZSgwLCBuZWdhdGl2ZVplcm8oKSkpOwot
ICAgIFJVTih0ZXN0QWRkQXJnSW1tRG91YmxlKG5lZ2F0aXZlWmVybygpLCAwKSk7Ci0gICAgUlVO
KHRlc3RBZGRBcmdJbW1Eb3VibGUobmVnYXRpdmVaZXJvKCksIG5lZ2F0aXZlWmVybygpKSk7Ci0g
ICAgUlVOKHRlc3RBZGRJbW1BcmdEb3VibGUoTV9QSSwgMSkpOwotICAgIFJVTih0ZXN0QWRkSW1t
QXJnRG91YmxlKE1fUEksIDApKTsKLSAgICBSVU4odGVzdEFkZEltbUFyZ0RvdWJsZShNX1BJLCBu
ZWdhdGl2ZVplcm8oKSkpOwotICAgIFJVTih0ZXN0QWRkSW1tQXJnRG91YmxlKDAsIDApKTsKLSAg
ICBSVU4odGVzdEFkZEltbUFyZ0RvdWJsZSgwLCBuZWdhdGl2ZVplcm8oKSkpOwotICAgIFJVTih0
ZXN0QWRkSW1tQXJnRG91YmxlKG5lZ2F0aXZlWmVybygpLCAwKSk7Ci0gICAgUlVOKHRlc3RBZGRJ
bW1BcmdEb3VibGUobmVnYXRpdmVaZXJvKCksIG5lZ2F0aXZlWmVybygpKSk7Ci0gICAgUlVOKHRl
c3RBZGRJbW1zRG91YmxlKE1fUEksIDEpKTsKLSAgICBSVU4odGVzdEFkZEltbXNEb3VibGUoTV9Q
SSwgMCkpOwotICAgIFJVTih0ZXN0QWRkSW1tc0RvdWJsZShNX1BJLCBuZWdhdGl2ZVplcm8oKSkp
OwotICAgIFJVTih0ZXN0QWRkSW1tc0RvdWJsZSgwLCAwKSk7Ci0gICAgUlVOKHRlc3RBZGRJbW1z
RG91YmxlKDAsIG5lZ2F0aXZlWmVybygpKSk7Ci0gICAgUlVOKHRlc3RBZGRJbW1zRG91YmxlKG5l
Z2F0aXZlWmVybygpLCBuZWdhdGl2ZVplcm8oKSkpOwotICAgIFJVTl9VTkFSWSh0ZXN0QWRkQXJn
RmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0
ZXN0QWRkQXJnc0Zsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5n
UG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0QWRkRlBSQXJnc0Zs
b2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5k
czxmbG9hdD4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0QWRkQXJnSW1tRmxvYXQsIGZsb2F0aW5n
UG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsK
LSAgICBSVU5fQklOQVJZKHRlc3RBZGRJbW1BcmdGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRz
PGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTl9CSU5B
UlkodGVzdEFkZEltbXNGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9h
dGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0QWRkQXJnRmxv
YXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9h
dD4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0QWRkQXJnc0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVD
b252ZXJzaW9uLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRP
cGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0QWRkQXJnc0Zsb2F0V2l0aEVm
ZmVjdGZ1bERvdWJsZUNvbnZlcnNpb24sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwg
ZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKLQotICAgIFJVTih0ZXN0TXVsQXJnKDUp
KTsKLSAgICBSVU4odGVzdE11bEFkZEFyZyg1KSk7Ci0gICAgUlVOKHRlc3RNdWxBZGRBcmcoODUp
KTsKLSAgICBSVU4odGVzdE11bEFyZ1N0b3JlKDUpKTsKLSAgICBSVU4odGVzdE11bEFyZ1N0b3Jl
KDg1KSk7Ci0gICAgUlVOKHRlc3RNdWxBcmdzKDEsIDEpKTsKLSAgICBSVU4odGVzdE11bEFyZ3Mo
MSwgMikpOwotICAgIFJVTih0ZXN0TXVsQXJncygzLCAzKSk7Ci0gICAgUlVOKHRlc3RNdWxBcmdJ
bW0oMSwgMikpOwotICAgIFJVTih0ZXN0TXVsQXJnSW1tKDEsIDQpKTsKLSAgICBSVU4odGVzdE11
bEFyZ0ltbSgxLCA4KSk7Ci0gICAgUlVOKHRlc3RNdWxBcmdJbW0oMSwgMTYpKTsKLSAgICBSVU4o
dGVzdE11bEFyZ0ltbSgxLCAweDgwMDAwMDAwbGx1KSk7Ci0gICAgUlVOKHRlc3RNdWxBcmdJbW0o
MSwgMHg4MDAwMDAwMDAwMDBsbHUpKTsKLSAgICBSVU4odGVzdE11bEFyZ0ltbSg3LCAyKSk7Ci0g
ICAgUlVOKHRlc3RNdWxBcmdJbW0oNywgNCkpOwotICAgIFJVTih0ZXN0TXVsQXJnSW1tKDcsIDgp
KTsKLSAgICBSVU4odGVzdE11bEFyZ0ltbSg3LCAxNikpOwotICAgIFJVTih0ZXN0TXVsQXJnSW1t
KDcsIDB4ODAwMDAwMDBsbHUpKTsKLSAgICBSVU4odGVzdE11bEFyZ0ltbSg3LCAweDgwMDAwMDAw
MDAwMGxsdSkpOwotICAgIFJVTih0ZXN0TXVsQXJnSW1tKC00MiwgMikpOwotICAgIFJVTih0ZXN0
TXVsQXJnSW1tKC00MiwgNCkpOwotICAgIFJVTih0ZXN0TXVsQXJnSW1tKC00MiwgOCkpOwotICAg
IFJVTih0ZXN0TXVsQXJnSW1tKC00MiwgMTYpKTsKLSAgICBSVU4odGVzdE11bEFyZ0ltbSgtNDIs
IDB4ODAwMDAwMDBsbHUpKTsKLSAgICBSVU4odGVzdE11bEFyZ0ltbSgtNDIsIDB4ODAwMDAwMDAw
MDAwbGx1KSk7Ci0gICAgUlVOKHRlc3RNdWxBcmdJbW0oMCwgMikpOwotICAgIFJVTih0ZXN0TXVs
QXJnSW1tKDEsIDApKTsKLSAgICBSVU4odGVzdE11bEFyZ0ltbSgzLCAzKSk7Ci0gICAgUlVOKHRl
c3RNdWxBcmdJbW0oMywgLTEpKTsKLSAgICBSVU4odGVzdE11bEFyZ0ltbSgtMywgLTEpKTsKLSAg
ICBSVU4odGVzdE11bEFyZ0ltbSgwLCAtMSkpOwotICAgIFJVTih0ZXN0TXVsSW1tQXJnKDEsIDIp
KTsKLSAgICBSVU4odGVzdE11bEltbUFyZygwLCAyKSk7Ci0gICAgUlVOKHRlc3RNdWxJbW1Bcmco
MSwgMCkpOwotICAgIFJVTih0ZXN0TXVsSW1tQXJnKDMsIDMpKTsKLSAgICBSVU4odGVzdE11bElt
bTMyU2lnbkV4dGVuZCgxLCAyKSk7Ci0gICAgUlVOKHRlc3RNdWxJbW0zMlNpZ25FeHRlbmQoMCwg
MikpOwotICAgIFJVTih0ZXN0TXVsSW1tMzJTaWduRXh0ZW5kKDEsIDApKTsKLSAgICBSVU4odGVz
dE11bEltbTMyU2lnbkV4dGVuZCgzLCAzKSk7Ci0gICAgUlVOKHRlc3RNdWxJbW0zMlNpZ25FeHRl
bmQoMHhGRkZGRkZGRiwgMHhGRkZGRkZGRikpOwotICAgIFJVTih0ZXN0TXVsSW1tMzJTaWduRXh0
ZW5kKDB4RkZGRkZGRkUsIDB4RkZGRkZGRkYpKTsKLSAgICBSVU4odGVzdE11bEltbTMyU2lnbkV4
dGVuZCgweEZGRkZGRkZGLCAweEZGRkZGRkZFKSk7Ci0gICAgUlVOKHRlc3RNdWxBcmdzMzIoMSwg
MSkpOwotICAgIFJVTih0ZXN0TXVsQXJnczMyKDEsIDIpKTsKLSAgICBSVU4odGVzdE11bEFyZ3Mz
MigweEZGRkZGRkZGLCAweEZGRkZGRkZGKSk7Ci0gICAgUlVOKHRlc3RNdWxBcmdzMzIoMHhGRkZG
RkZGRSwgMHhGRkZGRkZGRikpOwotICAgIFJVTih0ZXN0TXVsQXJnczMyU2lnbkV4dGVuZCgxLCAx
KSk7Ci0gICAgUlVOKHRlc3RNdWxBcmdzMzJTaWduRXh0ZW5kKDEsIDIpKTsKLSAgICBSVU4odGVz
dE11bEFyZ3MzMlNpZ25FeHRlbmQoMHhGRkZGRkZGRiwgMHhGRkZGRkZGRikpOwotICAgIFJVTih0
ZXN0TXVsQXJnczMyU2lnbkV4dGVuZCgweEZGRkZGRkZFLCAweEZGRkZGRkZGKSk7Ci0gICAgUlVO
KHRlc3RNdWxMb2FkVHdpY2UoKSk7Ci0gICAgUlVOKHRlc3RNdWxBZGRBcmdzTGVmdCgpKTsKLSAg
ICBSVU4odGVzdE11bEFkZEFyZ3NSaWdodCgpKTsKLSAgICBSVU4odGVzdE11bEFkZEFyZ3NMZWZ0
MzIoKSk7Ci0gICAgUlVOKHRlc3RNdWxBZGRBcmdzUmlnaHQzMigpKTsKLSAgICBSVU4odGVzdE11
bFN1YkFyZ3NMZWZ0KCkpOwotICAgIFJVTih0ZXN0TXVsU3ViQXJnc1JpZ2h0KCkpOwotICAgIFJV
Tih0ZXN0TXVsU3ViQXJnc0xlZnQzMigpKTsKLSAgICBSVU4odGVzdE11bFN1YkFyZ3NSaWdodDMy
KCkpOwotICAgIFJVTih0ZXN0TXVsTmVnQXJncygpKTsKLSAgICBSVU4odGVzdE11bE5lZ0FyZ3Mz
MigpKTsKLQotICAgIFJVTl9CSU5BUlkodGVzdE11bEFyZ05lZ0FyZywgaW50NjRPcGVyYW5kcygp
LCBpbnQ2NE9wZXJhbmRzKCkpCi0gICAgUlVOX0JJTkFSWSh0ZXN0TXVsTmVnQXJnQXJnLCBpbnQ2
NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSkKLSAgICBSVU5fVU5BUlkodGVzdE11bEFyZ0Rv
dWJsZSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0
ZXN0TXVsQXJnc0RvdWJsZSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSwgZmxvYXRp
bmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0TXVsQXJnSW1t
RG91YmxlLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpLCBmbG9hdGluZ1BvaW50T3Bl
cmFuZHM8ZG91YmxlPigpKTsKLSAgICBSVU5fQklOQVJZKHRlc3RNdWxJbW1BcmdEb3VibGUsIGZs
b2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3Vi
bGU+KCkpOwotICAgIFJVTl9CSU5BUlkodGVzdE11bEltbXNEb3VibGUsIGZsb2F0aW5nUG9pbnRP
cGVyYW5kczxkb3VibGU+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwotICAg
IFJVTl9VTkFSWSh0ZXN0TXVsQXJnRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4o
KSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0TXVsQXJnc0Zsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFu
ZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX0JJ
TkFSWSh0ZXN0TXVsQXJnSW1tRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwg
ZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKLSAgICBSVU5fQklOQVJZKHRlc3RNdWxJ
bW1BcmdGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTl9CSU5BUlkodGVzdE11bEltbXNGbG9hdCwgZmxv
YXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+
KCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0TXVsQXJnRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZl
cnNpb24sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0
ZXN0TXVsQXJnc0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAg
UlVOX0JJTkFSWSh0ZXN0TXVsQXJnc0Zsb2F0V2l0aEVmZmVjdGZ1bERvdWJsZUNvbnZlcnNpb24s
IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZs
b2F0PigpKTsKLQotICAgIFJVTih0ZXN0RGl2QXJnRG91YmxlKE1fUEkpKTsKLSAgICBSVU4odGVz
dERpdkFyZ3NEb3VibGUoTV9QSSwgMSkpOwotICAgIFJVTih0ZXN0RGl2QXJnc0RvdWJsZShNX1BJ
LCAtTV9QSSkpOwotICAgIFJVTih0ZXN0RGl2QXJnSW1tRG91YmxlKE1fUEksIDEpKTsKLSAgICBS
VU4odGVzdERpdkFyZ0ltbURvdWJsZShNX1BJLCAwKSk7Ci0gICAgUlVOKHRlc3REaXZBcmdJbW1E
b3VibGUoTV9QSSwgbmVnYXRpdmVaZXJvKCkpKTsKLSAgICBSVU4odGVzdERpdkFyZ0ltbURvdWJs
ZSgwLCAwKSk7Ci0gICAgUlVOKHRlc3REaXZBcmdJbW1Eb3VibGUoMCwgbmVnYXRpdmVaZXJvKCkp
KTsKLSAgICBSVU4odGVzdERpdkFyZ0ltbURvdWJsZShuZWdhdGl2ZVplcm8oKSwgMCkpOwotICAg
IFJVTih0ZXN0RGl2QXJnSW1tRG91YmxlKG5lZ2F0aXZlWmVybygpLCBuZWdhdGl2ZVplcm8oKSkp
OwotICAgIFJVTih0ZXN0RGl2SW1tQXJnRG91YmxlKE1fUEksIDEpKTsKLSAgICBSVU4odGVzdERp
dkltbUFyZ0RvdWJsZShNX1BJLCAwKSk7Ci0gICAgUlVOKHRlc3REaXZJbW1BcmdEb3VibGUoTV9Q
SSwgbmVnYXRpdmVaZXJvKCkpKTsKLSAgICBSVU4odGVzdERpdkltbUFyZ0RvdWJsZSgwLCAwKSk7
Ci0gICAgUlVOKHRlc3REaXZJbW1BcmdEb3VibGUoMCwgbmVnYXRpdmVaZXJvKCkpKTsKLSAgICBS
VU4odGVzdERpdkltbUFyZ0RvdWJsZShuZWdhdGl2ZVplcm8oKSwgMCkpOwotICAgIFJVTih0ZXN0
RGl2SW1tQXJnRG91YmxlKG5lZ2F0aXZlWmVybygpLCBuZWdhdGl2ZVplcm8oKSkpOwotICAgIFJV
Tih0ZXN0RGl2SW1tc0RvdWJsZShNX1BJLCAxKSk7Ci0gICAgUlVOKHRlc3REaXZJbW1zRG91Ymxl
KE1fUEksIDApKTsKLSAgICBSVU4odGVzdERpdkltbXNEb3VibGUoTV9QSSwgbmVnYXRpdmVaZXJv
KCkpKTsKLSAgICBSVU4odGVzdERpdkltbXNEb3VibGUoMCwgMCkpOwotICAgIFJVTih0ZXN0RGl2
SW1tc0RvdWJsZSgwLCBuZWdhdGl2ZVplcm8oKSkpOwotICAgIFJVTih0ZXN0RGl2SW1tc0RvdWJs
ZShuZWdhdGl2ZVplcm8oKSwgbmVnYXRpdmVaZXJvKCkpKTsKLSAgICBSVU5fVU5BUlkodGVzdERp
dkFyZ0Zsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTl9CSU5B
UlkodGVzdERpdkFyZ3NGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9h
dGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTl9CSU5BUlkodGVzdERpdkFyZ0lt
bUZsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVy
YW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0RGl2SW1tQXJnRmxvYXQsIGZsb2F0
aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0Pigp
KTsKLSAgICBSVU5fQklOQVJZKHRlc3REaXZJbW1zRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5k
czxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKLSAgICBSVU5fVU5B
UlkodGVzdERpdkFyZ0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1Bv
aW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTl9CSU5BUlkodGVzdERpdkFyZ3NGbG9hdFdp
dGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbiwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0Pigp
LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTl9CSU5BUlkodGVzdERp
dkFyZ3NGbG9hdFdpdGhFZmZlY3RmdWxEb3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50T3Bl
cmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0KLSAgICBS
VU5fQklOQVJZKHRlc3RVRGl2QXJnc0ludDMyLCBpbnQzMk9wZXJhbmRzKCksIGludDMyT3BlcmFu
ZHMoKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0VURpdkFyZ3NJbnQ2NCwgaW50NjRPcGVyYW5kcygp
LCBpbnQ2NE9wZXJhbmRzKCkpOwotCi0gICAgUlVOX1VOQVJZKHRlc3RNb2RBcmdEb3VibGUsIGZs
b2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwotICAgIFJVTl9CSU5BUlkodGVzdE1vZEFy
Z3NEb3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCksIGZsb2F0aW5nUG9pbnRP
cGVyYW5kczxkb3VibGU+KCkpOwotICAgIFJVTl9CSU5BUlkodGVzdE1vZEFyZ0ltbURvdWJsZSwg
ZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRv
dWJsZT4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0TW9kSW1tQXJnRG91YmxlLCBmbG9hdGluZ1Bv
aW50T3BlcmFuZHM8ZG91YmxlPigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsK
LSAgICBSVU5fQklOQVJZKHRlc3RNb2RJbW1zRG91YmxlLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8
ZG91YmxlPigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKLSAgICBSVU5fVU5B
UlkodGVzdE1vZEFyZ0Zsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAg
IFJVTl9CSU5BUlkodGVzdE1vZEFyZ3NGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0
PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTl9CSU5BUlkodGVz
dE1vZEFyZ0ltbUZsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5n
UG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0TW9kSW1tQXJnRmxv
YXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRz
PGZsb2F0PigpKTsKLSAgICBSVU5fQklOQVJZKHRlc3RNb2RJbW1zRmxvYXQsIGZsb2F0aW5nUG9p
bnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKLQot
ICAgIFJVTl9CSU5BUlkodGVzdFVNb2RBcmdzSW50MzIsIGludDMyT3BlcmFuZHMoKSwgaW50MzJP
cGVyYW5kcygpKTsKLSAgICBSVU5fQklOQVJZKHRlc3RVTW9kQXJnc0ludDY0LCBpbnQ2NE9wZXJh
bmRzKCksIGludDY0T3BlcmFuZHMoKSk7Ci0KLSAgICBSVU4odGVzdFN1YkFyZygyNCkpOwotICAg
IFJVTih0ZXN0U3ViQXJncygxLCAxKSk7Ci0gICAgUlVOKHRlc3RTdWJBcmdzKDEsIDIpKTsKLSAg
ICBSVU4odGVzdFN1YkFyZ3MoMTMsIC00MikpOwotICAgIFJVTih0ZXN0U3ViQXJncygtMTMsIDQy
KSk7Ci0gICAgUlVOKHRlc3RTdWJBcmdJbW0oMSwgMSkpOwotICAgIFJVTih0ZXN0U3ViQXJnSW1t
KDEsIDIpKTsKLSAgICBSVU4odGVzdFN1YkFyZ0ltbSgxMywgLTQyKSk7Ci0gICAgUlVOKHRlc3RT
dWJBcmdJbW0oLTEzLCA0MikpOwotICAgIFJVTih0ZXN0U3ViQXJnSW1tKDQyLCAwKSk7Ci0gICAg
UlVOKHRlc3RTdWJJbW1BcmcoMSwgMSkpOwotICAgIFJVTih0ZXN0U3ViSW1tQXJnKDEsIDIpKTsK
LSAgICBSVU4odGVzdFN1YkltbUFyZygxMywgLTQyKSk7Ci0gICAgUlVOKHRlc3RTdWJJbW1Bcmco
LTEzLCA0MikpOwotICAgIFJVTl9CSU5BUlkodGVzdFN1YkFyZ01lbSwgaW50NjRPcGVyYW5kcygp
LCBpbnQ2NE9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5BUlkodGVzdFN1Yk1lbUFyZywgaW50NjRP
cGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5BUlkodGVzdFN1YkltbU1l
bSwgaW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5BUlkodGVz
dFN1Yk1lbUltbSwgaW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkpOwotICAgIFJVTl9C
SU5BUlkodGVzdFN1Yk5lZywgaW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkpOwotICAg
IFJVTl9CSU5BUlkodGVzdE5lZ1N1YiwgaW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkp
OwotICAgIFJVTl9VTkFSWSh0ZXN0TmVnVmFsdWVTdWJPbmUsIGludDMyT3BlcmFuZHMoKSk7Ci0g
ICAgUlVOX0JJTkFSWSh0ZXN0TmVnTXVsQXJnSW1tLCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3Bl
cmFuZHMoKSk7Ci0gICAgUlVOX1RFUk5BUlkodGVzdFN1Yk11bE11bEFyZ3MsIGludDY0T3BlcmFu
ZHMoKSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOwotCi0gICAgUlVOX1RFUk5B
UlkodGVzdFN1YlN1YiwgaW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCksIGludDMyT3Bl
cmFuZHMoKSk7Ci0gICAgUlVOX1RFUk5BUlkodGVzdFN1YlN1YjIsIGludDMyT3BlcmFuZHMoKSwg
aW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkpOwotICAgIFJVTl9URVJOQVJZKHRlc3RT
dWJBZGQsIGludDMyT3BlcmFuZHMoKSwgaW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkp
OwotICAgIFJVTl9CSU5BUlkodGVzdFN1YkZpcnN0TmVnLCBpbnQzMk9wZXJhbmRzKCksIGludDMy
T3BlcmFuZHMoKSk7Ci0KLSAgICBSVU4odGVzdFN1YkFyZ3MzMigxLCAxKSk7Ci0gICAgUlVOKHRl
c3RTdWJBcmdzMzIoMSwgMikpOwotICAgIFJVTih0ZXN0U3ViQXJnczMyKDEzLCAtNDIpKTsKLSAg
ICBSVU4odGVzdFN1YkFyZ3MzMigtMTMsIDQyKSk7Ci0gICAgUlVOKHRlc3RTdWJBcmdJbW0zMigx
LCAxKSk7Ci0gICAgUlVOKHRlc3RTdWJBcmdJbW0zMigxLCAyKSk7Ci0gICAgUlVOKHRlc3RTdWJB
cmdJbW0zMigxMywgLTQyKSk7Ci0gICAgUlVOKHRlc3RTdWJBcmdJbW0zMigtMTMsIDQyKSk7Ci0g
ICAgUlVOKHRlc3RTdWJJbW1BcmczMigxLCAxKSk7Ci0gICAgUlVOKHRlc3RTdWJJbW1BcmczMigx
LCAyKSk7Ci0gICAgUlVOKHRlc3RTdWJJbW1BcmczMigxMywgLTQyKSk7Ci0gICAgUlVOKHRlc3RT
dWJJbW1BcmczMigtMTMsIDQyKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0U3ViQXJnTWVtMzIsIGlu
dDMyT3BlcmFuZHMoKSwgaW50MzJPcGVyYW5kcygpKTsKLSAgICBSVU5fQklOQVJZKHRlc3RTdWJN
ZW1BcmczMiwgaW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5B
UlkodGVzdFN1YkltbU1lbTMyLCBpbnQzMk9wZXJhbmRzKCksIGludDMyT3BlcmFuZHMoKSk7Ci0g
ICAgUlVOX0JJTkFSWSh0ZXN0U3ViTWVtSW1tMzIsIGludDMyT3BlcmFuZHMoKSwgaW50MzJPcGVy
YW5kcygpKTsKLSAgICBSVU5fVU5BUlkodGVzdE5lZ1ZhbHVlU3ViT25lMzIsIGludDY0T3BlcmFu
ZHMoKSk7Ci0KLSAgICBSVU5fVU5BUlkodGVzdFN1YkFyZ0RvdWJsZSwgZmxvYXRpbmdQb2ludE9w
ZXJhbmRzPGRvdWJsZT4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0U3ViQXJnc0RvdWJsZSwgZmxv
YXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJs
ZT4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0U3ViQXJnSW1tRG91YmxlLCBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZG91YmxlPigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKLSAg
ICBSVU5fQklOQVJZKHRlc3RTdWJJbW1BcmdEb3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxk
b3VibGU+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwotICAgIFJVTl9CSU5B
UlkodGVzdFN1YkltbXNEb3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCksIGZs
b2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0U3ViQXJn
RmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0
ZXN0U3ViQXJnc0Zsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5n
UG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0U3ViQXJnSW1tRmxv
YXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRz
PGZsb2F0PigpKTsKLSAgICBSVU5fQklOQVJZKHRlc3RTdWJJbW1BcmdGbG9hdCwgZmxvYXRpbmdQ
b2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwot
ICAgIFJVTl9CSU5BUlkodGVzdFN1YkltbXNGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZs
b2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTl9VTkFSWSh0
ZXN0U3ViQXJnRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24sIGZsb2F0aW5nUG9pbnRP
cGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0U3ViQXJnc0Zsb2F0V2l0aFVz
ZWxlc3NEb3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZs
b2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0U3ViQXJn
c0Zsb2F0V2l0aEVmZmVjdGZ1bERvdWJsZUNvbnZlcnNpb24sIGZsb2F0aW5nUG9pbnRPcGVyYW5k
czxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKLQotICAgIFJVTl9V
TkFSWSh0ZXN0TmVnRG91YmxlLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKLSAg
ICBSVU5fVU5BUlkodGVzdE5lZ0Zsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkp
OwotICAgIFJVTl9VTkFSWSh0ZXN0TmVnRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24s
IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0KLSAgICBSVU4odGVzdEJpdEFuZEFy
Z3MoNDMsIDQzKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRBcmdzKDQzLCAwKSk7Ci0gICAgUlVOKHRl
c3RCaXRBbmRBcmdzKDEwLCAzKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRBcmdzKDQyLCAweGZmZmZm
ZmZmZmZmZmZmZmYpKTsKLSAgICBSVU4odGVzdEJpdEFuZFNhbWVBcmcoNDMpKTsKLSAgICBSVU4o
dGVzdEJpdEFuZFNhbWVBcmcoMCkpOwotICAgIFJVTih0ZXN0Qml0QW5kU2FtZUFyZygzKSk7Ci0g
ICAgUlVOKHRlc3RCaXRBbmRTYW1lQXJnKDB4ZmZmZmZmZmZmZmZmZmZmZikpOwotICAgIFJVTih0
ZXN0Qml0QW5kSW1tcyg0MywgNDMpKTsKLSAgICBSVU4odGVzdEJpdEFuZEltbXMoNDMsIDApKTsK
LSAgICBSVU4odGVzdEJpdEFuZEltbXMoMTAsIDMpKTsKLSAgICBSVU4odGVzdEJpdEFuZEltbXMo
NDIsIDB4ZmZmZmZmZmZmZmZmZmZmZikpOwotICAgIFJVTih0ZXN0Qml0QW5kQXJnSW1tKDQzLCA0
MykpOwotICAgIFJVTih0ZXN0Qml0QW5kQXJnSW1tKDQzLCAwKSk7Ci0gICAgUlVOKHRlc3RCaXRB
bmRBcmdJbW0oMTAsIDMpKTsKLSAgICBSVU4odGVzdEJpdEFuZEFyZ0ltbSg0MiwgMHhmZmZmZmZm
ZmZmZmZmZmZmKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRBcmdJbW0oNDIsIDB4ZmYpKTsKLSAgICBS
VU4odGVzdEJpdEFuZEFyZ0ltbSgzMDAsIDB4ZmYpKTsKLSAgICBSVU4odGVzdEJpdEFuZEFyZ0lt
bSgtMzAwLCAweGZmKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRBcmdJbW0oNDIsIDB4ZmZmZikpOwot
ICAgIFJVTih0ZXN0Qml0QW5kQXJnSW1tKDQwMDAwLCAweGZmZmYpKTsKLSAgICBSVU4odGVzdEJp
dEFuZEFyZ0ltbSgtNDAwMDAsIDB4ZmZmZikpOwotICAgIFJVTih0ZXN0Qml0QW5kSW1tQXJnKDQz
LCA0MykpOwotICAgIFJVTih0ZXN0Qml0QW5kSW1tQXJnKDQzLCAwKSk7Ci0gICAgUlVOKHRlc3RC
aXRBbmRJbW1BcmcoMTAsIDMpKTsKLSAgICBSVU4odGVzdEJpdEFuZEltbUFyZyg0MiwgMHhmZmZm
ZmZmZmZmZmZmZmZmKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRCaXRBbmRBcmdJbW1JbW0oMiwgNywg
MykpOwotICAgIFJVTih0ZXN0Qml0QW5kQml0QW5kQXJnSW1tSW1tKDEsIDYsIDYpKTsKLSAgICBS
VU4odGVzdEJpdEFuZEJpdEFuZEFyZ0ltbUltbSgweGZmZmYsIDI0LCA3KSk7Ci0gICAgUlVOKHRl
c3RCaXRBbmRJbW1CaXRBbmRBcmdJbW0oNywgMiwgMykpOwotICAgIFJVTih0ZXN0Qml0QW5kSW1t
Qml0QW5kQXJnSW1tKDYsIDEsIDYpKTsKLSAgICBSVU4odGVzdEJpdEFuZEltbUJpdEFuZEFyZ0lt
bSgyNCwgMHhmZmZmLCA3KSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRBcmdzMzIoNDMsIDQzKSk7Ci0g
ICAgUlVOKHRlc3RCaXRBbmRBcmdzMzIoNDMsIDApKTsKLSAgICBSVU4odGVzdEJpdEFuZEFyZ3Mz
MigxMCwgMykpOwotICAgIFJVTih0ZXN0Qml0QW5kQXJnczMyKDQyLCAweGZmZmZmZmZmKSk7Ci0g
ICAgUlVOKHRlc3RCaXRBbmRTYW1lQXJnMzIoNDMpKTsKLSAgICBSVU4odGVzdEJpdEFuZFNhbWVB
cmczMigwKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRTYW1lQXJnMzIoMykpOwotICAgIFJVTih0ZXN0
Qml0QW5kU2FtZUFyZzMyKDB4ZmZmZmZmZmYpKTsKLSAgICBSVU4odGVzdEJpdEFuZEltbXMzMig0
MywgNDMpKTsKLSAgICBSVU4odGVzdEJpdEFuZEltbXMzMig0MywgMCkpOwotICAgIFJVTih0ZXN0
Qml0QW5kSW1tczMyKDEwLCAzKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRJbW1zMzIoNDIsIDB4ZmZm
ZmZmZmYpKTsKLSAgICBSVU4odGVzdEJpdEFuZEFyZ0ltbTMyKDQzLCA0MykpOwotICAgIFJVTih0
ZXN0Qml0QW5kQXJnSW1tMzIoNDMsIDApKTsKLSAgICBSVU4odGVzdEJpdEFuZEFyZ0ltbTMyKDEw
LCAzKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRBcmdJbW0zMig0MiwgMHhmZmZmZmZmZikpOwotICAg
IFJVTih0ZXN0Qml0QW5kSW1tQXJnMzIoNDMsIDQzKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRJbW1B
cmczMig0MywgMCkpOwotICAgIFJVTih0ZXN0Qml0QW5kSW1tQXJnMzIoMTAsIDMpKTsKLSAgICBS
VU4odGVzdEJpdEFuZEltbUFyZzMyKDQyLCAweGZmZmZmZmZmKSk7Ci0gICAgUlVOKHRlc3RCaXRB
bmRJbW1BcmczMig0MiwgMHhmZikpOwotICAgIFJVTih0ZXN0Qml0QW5kSW1tQXJnMzIoMzAwLCAw
eGZmKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRJbW1BcmczMigtMzAwLCAweGZmKSk7Ci0gICAgUlVO
KHRlc3RCaXRBbmRJbW1BcmczMig0MiwgMHhmZmZmKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRJbW1B
cmczMig0MDAwMCwgMHhmZmZmKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRJbW1BcmczMigtNDAwMDAs
IDB4ZmZmZikpOwotICAgIFJVTih0ZXN0Qml0QW5kQml0QW5kQXJnSW1tSW1tMzIoMiwgNywgMykp
OwotICAgIFJVTih0ZXN0Qml0QW5kQml0QW5kQXJnSW1tSW1tMzIoMSwgNiwgNikpOwotICAgIFJV
Tih0ZXN0Qml0QW5kQml0QW5kQXJnSW1tSW1tMzIoMHhmZmZmLCAyNCwgNykpOwotICAgIFJVTih0
ZXN0Qml0QW5kSW1tQml0QW5kQXJnSW1tMzIoNywgMiwgMykpOwotICAgIFJVTih0ZXN0Qml0QW5k
SW1tQml0QW5kQXJnSW1tMzIoNiwgMSwgNikpOwotICAgIFJVTih0ZXN0Qml0QW5kSW1tQml0QW5k
QXJnSW1tMzIoMjQsIDB4ZmZmZiwgNykpOwotICAgIFJVTl9CSU5BUlkodGVzdEJpdEFuZFdpdGhN
YXNrUmV0dXJuc0Jvb2xlYW5zLCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSk7Ci0g
ICAgUlVOX1VOQVJZKHRlc3RCaXRBbmRBcmdEb3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxk
b3VibGU+KCkpOwotICAgIFJVTl9CSU5BUlkodGVzdEJpdEFuZEFyZ3NEb3VibGUsIGZsb2F0aW5n
UG9pbnRPcGVyYW5kczxkb3VibGU+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkp
OwotICAgIFJVTl9CSU5BUlkodGVzdEJpdEFuZEFyZ0ltbURvdWJsZSwgZmxvYXRpbmdQb2ludE9w
ZXJhbmRzPGRvdWJsZT4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7Ci0gICAg
UlVOX0JJTkFSWSh0ZXN0Qml0QW5kSW1tc0RvdWJsZSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRv
dWJsZT4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7Ci0gICAgUlVOX1VOQVJZ
KHRlc3RCaXRBbmRBcmdGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKLSAg
ICBSVU5fQklOQVJZKHRlc3RCaXRBbmRBcmdzRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxm
bG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKLSAgICBSVU5fQklOQVJZ
KHRlc3RCaXRBbmRBcmdJbW1GbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBm
bG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTl9CSU5BUlkodGVzdEJpdEFu
ZEltbXNGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTl9CSU5BUlkodGVzdEJpdEFuZEFyZ3NGbG9hdFdp
dGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbiwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0Pigp
LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTl9CSU5BUlkodGVzdEJp
dEFuZE5vdE5vdCwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOwotICAgIFJVTl9C
SU5BUlkodGVzdEJpdEFuZE5vdEltbSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkp
OwotCi0gICAgUlVOKHRlc3RCaXRPckFyZ3MoNDMsIDQzKSk7Ci0gICAgUlVOKHRlc3RCaXRPckFy
Z3MoNDMsIDApKTsKLSAgICBSVU4odGVzdEJpdE9yQXJncygxMCwgMykpOwotICAgIFJVTih0ZXN0
Qml0T3JBcmdzKDQyLCAweGZmZmZmZmZmZmZmZmZmZmYpKTsKLSAgICBSVU4odGVzdEJpdE9yU2Ft
ZUFyZyg0MykpOwotICAgIFJVTih0ZXN0Qml0T3JTYW1lQXJnKDApKTsKLSAgICBSVU4odGVzdEJp
dE9yU2FtZUFyZygzKSk7Ci0gICAgUlVOKHRlc3RCaXRPclNhbWVBcmcoMHhmZmZmZmZmZmZmZmZm
ZmZmKSk7Ci0gICAgUlVOKHRlc3RCaXRPckltbXMoNDMsIDQzKSk7Ci0gICAgUlVOKHRlc3RCaXRP
ckltbXMoNDMsIDApKTsKLSAgICBSVU4odGVzdEJpdE9ySW1tcygxMCwgMykpOwotICAgIFJVTih0
ZXN0Qml0T3JJbW1zKDQyLCAweGZmZmZmZmZmZmZmZmZmZmYpKTsKLSAgICBSVU4odGVzdEJpdE9y
QXJnSW1tKDQzLCA0MykpOwotICAgIFJVTih0ZXN0Qml0T3JBcmdJbW0oNDMsIDApKTsKLSAgICBS
VU4odGVzdEJpdE9yQXJnSW1tKDEwLCAzKSk7Ci0gICAgUlVOKHRlc3RCaXRPckFyZ0ltbSg0Miwg
MHhmZmZmZmZmZmZmZmZmZmZmKSk7Ci0gICAgUlVOKHRlc3RCaXRPckltbUFyZyg0MywgNDMpKTsK
LSAgICBSVU4odGVzdEJpdE9ySW1tQXJnKDQzLCAwKSk7Ci0gICAgUlVOKHRlc3RCaXRPckltbUFy
ZygxMCwgMykpOwotICAgIFJVTih0ZXN0Qml0T3JJbW1BcmcoNDIsIDB4ZmZmZmZmZmZmZmZmZmZm
ZikpOwotICAgIFJVTih0ZXN0Qml0T3JCaXRPckFyZ0ltbUltbSgyLCA3LCAzKSk7Ci0gICAgUlVO
KHRlc3RCaXRPckJpdE9yQXJnSW1tSW1tKDEsIDYsIDYpKTsKLSAgICBSVU4odGVzdEJpdE9yQml0
T3JBcmdJbW1JbW0oMHhmZmZmLCAyNCwgNykpOwotICAgIFJVTih0ZXN0Qml0T3JJbW1CaXRPckFy
Z0ltbSg3LCAyLCAzKSk7Ci0gICAgUlVOKHRlc3RCaXRPckltbUJpdE9yQXJnSW1tKDYsIDEsIDYp
KTsKLSAgICBSVU4odGVzdEJpdE9ySW1tQml0T3JBcmdJbW0oMjQsIDB4ZmZmZiwgNykpOwotICAg
IFJVTih0ZXN0Qml0T3JBcmdzMzIoNDMsIDQzKSk7Ci0gICAgUlVOKHRlc3RCaXRPckFyZ3MzMig0
MywgMCkpOwotICAgIFJVTih0ZXN0Qml0T3JBcmdzMzIoMTAsIDMpKTsKLSAgICBSVU4odGVzdEJp
dE9yQXJnczMyKDQyLCAweGZmZmZmZmZmKSk7Ci0gICAgUlVOKHRlc3RCaXRPclNhbWVBcmczMig0
MykpOwotICAgIFJVTih0ZXN0Qml0T3JTYW1lQXJnMzIoMCkpOwotICAgIFJVTih0ZXN0Qml0T3JT
YW1lQXJnMzIoMykpOwotICAgIFJVTih0ZXN0Qml0T3JTYW1lQXJnMzIoMHhmZmZmZmZmZikpOwot
ICAgIFJVTih0ZXN0Qml0T3JJbW1zMzIoNDMsIDQzKSk7Ci0gICAgUlVOKHRlc3RCaXRPckltbXMz
Mig0MywgMCkpOwotICAgIFJVTih0ZXN0Qml0T3JJbW1zMzIoMTAsIDMpKTsKLSAgICBSVU4odGVz
dEJpdE9ySW1tczMyKDQyLCAweGZmZmZmZmZmKSk7Ci0gICAgUlVOKHRlc3RCaXRPckFyZ0ltbTMy
KDQzLCA0MykpOwotICAgIFJVTih0ZXN0Qml0T3JBcmdJbW0zMig0MywgMCkpOwotICAgIFJVTih0
ZXN0Qml0T3JBcmdJbW0zMigxMCwgMykpOwotICAgIFJVTih0ZXN0Qml0T3JBcmdJbW0zMig0Miwg
MHhmZmZmZmZmZikpOwotICAgIFJVTih0ZXN0Qml0T3JJbW1BcmczMig0MywgNDMpKTsKLSAgICBS
VU4odGVzdEJpdE9ySW1tQXJnMzIoNDMsIDApKTsKLSAgICBSVU4odGVzdEJpdE9ySW1tQXJnMzIo
MTAsIDMpKTsKLSAgICBSVU4odGVzdEJpdE9ySW1tQXJnMzIoNDIsIDB4ZmZmZmZmZmYpKTsKLSAg
ICBSVU4odGVzdEJpdE9yQml0T3JBcmdJbW1JbW0zMigyLCA3LCAzKSk7Ci0gICAgUlVOKHRlc3RC
aXRPckJpdE9yQXJnSW1tSW1tMzIoMSwgNiwgNikpOwotICAgIFJVTih0ZXN0Qml0T3JCaXRPckFy
Z0ltbUltbTMyKDB4ZmZmZiwgMjQsIDcpKTsKLSAgICBSVU4odGVzdEJpdE9ySW1tQml0T3JBcmdJ
bW0zMig3LCAyLCAzKSk7Ci0gICAgUlVOKHRlc3RCaXRPckltbUJpdE9yQXJnSW1tMzIoNiwgMSwg
NikpOwotICAgIFJVTih0ZXN0Qml0T3JJbW1CaXRPckFyZ0ltbTMyKDI0LCAweGZmZmYsIDcpKTsK
LSAgICBSVU5fVU5BUlkodGVzdEJpdE9yQXJnRG91YmxlLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8
ZG91YmxlPigpKTsKLSAgICBSVU5fQklOQVJZKHRlc3RCaXRPckFyZ3NEb3VibGUsIGZsb2F0aW5n
UG9pbnRPcGVyYW5kczxkb3VibGU+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkp
OwotICAgIFJVTl9CSU5BUlkodGVzdEJpdE9yQXJnSW1tRG91YmxlLCBmbG9hdGluZ1BvaW50T3Bl
cmFuZHM8ZG91YmxlPigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKLSAgICBS
VU5fQklOQVJZKHRlc3RCaXRPckltbXNEb3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3Vi
bGU+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwotICAgIFJVTl9VTkFSWSh0
ZXN0Qml0T3JBcmdGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKLSAgICBS
VU5fQklOQVJZKHRlc3RCaXRPckFyZ3NGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0
PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTl9CSU5BUlkodGVz
dEJpdE9yQXJnSW1tRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRp
bmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKLSAgICBSVU5fQklOQVJZKHRlc3RCaXRPckltbXNG
bG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFu
ZHM8ZmxvYXQ+KCkpOwotICAgIFJVTl9CSU5BUlkodGVzdEJpdE9yQXJnc0Zsb2F0V2l0aFVzZWxl
c3NEb3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0
aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX1RFUk5BUlkodGVzdEJpdE9yQW5k
QW5kQXJncywgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMo
KSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0Qml0T3JBbmRTYW1lQXJncywgaW50NjRPcGVyYW5kcygp
LCBpbnQ2NE9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5BUlkodGVzdEJpdE9yTm90Tm90LCBpbnQ2
NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0Qml0T3JO
b3RJbW0sIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKLQotICAgIFJVTl9CSU5B
UlkodGVzdEJpdFhvckFyZ3MsIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKLSAg
ICBSVU5fVU5BUlkodGVzdEJpdFhvclNhbWVBcmcsIGludDY0T3BlcmFuZHMoKSk7Ci0gICAgUlVO
X0JJTkFSWSh0ZXN0Qml0WG9ySW1tcywgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkp
OwotICAgIFJVTl9CSU5BUlkodGVzdEJpdFhvckFyZ0ltbSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2
NE9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5BUlkodGVzdEJpdFhvckltbUFyZywgaW50NjRPcGVy
YW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOwotICAgIFJVTih0ZXN0Qml0WG9yQml0WG9yQXJnSW1t
SW1tKDIsIDcsIDMpKTsKLSAgICBSVU4odGVzdEJpdFhvckJpdFhvckFyZ0ltbUltbSgxLCA2LCA2
KSk7Ci0gICAgUlVOKHRlc3RCaXRYb3JCaXRYb3JBcmdJbW1JbW0oMHhmZmZmLCAyNCwgNykpOwot
ICAgIFJVTih0ZXN0Qml0WG9ySW1tQml0WG9yQXJnSW1tKDcsIDIsIDMpKTsKLSAgICBSVU4odGVz
dEJpdFhvckltbUJpdFhvckFyZ0ltbSg2LCAxLCA2KSk7Ci0gICAgUlVOKHRlc3RCaXRYb3JJbW1C
aXRYb3JBcmdJbW0oMjQsIDB4ZmZmZiwgNykpOwotICAgIFJVTih0ZXN0Qml0WG9yQXJnczMyKDQz
LCA0MykpOwotICAgIFJVTih0ZXN0Qml0WG9yQXJnczMyKDQzLCAwKSk7Ci0gICAgUlVOKHRlc3RC
aXRYb3JBcmdzMzIoMTAsIDMpKTsKLSAgICBSVU4odGVzdEJpdFhvckFyZ3MzMig0MiwgMHhmZmZm
ZmZmZikpOwotICAgIFJVTih0ZXN0Qml0WG9yU2FtZUFyZzMyKDQzKSk7Ci0gICAgUlVOKHRlc3RC
aXRYb3JTYW1lQXJnMzIoMCkpOwotICAgIFJVTih0ZXN0Qml0WG9yU2FtZUFyZzMyKDMpKTsKLSAg
ICBSVU4odGVzdEJpdFhvclNhbWVBcmczMigweGZmZmZmZmZmKSk7Ci0gICAgUlVOKHRlc3RCaXRY
b3JJbW1zMzIoNDMsIDQzKSk7Ci0gICAgUlVOKHRlc3RCaXRYb3JJbW1zMzIoNDMsIDApKTsKLSAg
ICBSVU4odGVzdEJpdFhvckltbXMzMigxMCwgMykpOwotICAgIFJVTih0ZXN0Qml0WG9ySW1tczMy
KDQyLCAweGZmZmZmZmZmKSk7Ci0gICAgUlVOKHRlc3RCaXRYb3JBcmdJbW0zMig0MywgNDMpKTsK
LSAgICBSVU4odGVzdEJpdFhvckFyZ0ltbTMyKDQzLCAwKSk7Ci0gICAgUlVOKHRlc3RCaXRYb3JB
cmdJbW0zMigxMCwgMykpOwotICAgIFJVTih0ZXN0Qml0WG9yQXJnSW1tMzIoNDIsIDB4ZmZmZmZm
ZmYpKTsKLSAgICBSVU4odGVzdEJpdFhvckltbUFyZzMyKDQzLCA0MykpOwotICAgIFJVTih0ZXN0
Qml0WG9ySW1tQXJnMzIoNDMsIDApKTsKLSAgICBSVU4odGVzdEJpdFhvckltbUFyZzMyKDEwLCAz
KSk7Ci0gICAgUlVOKHRlc3RCaXRYb3JJbW1BcmczMig0MiwgMHhmZmZmZmZmZikpOwotICAgIFJV
Tih0ZXN0Qml0WG9yQml0WG9yQXJnSW1tSW1tMzIoMiwgNywgMykpOwotICAgIFJVTih0ZXN0Qml0
WG9yQml0WG9yQXJnSW1tSW1tMzIoMSwgNiwgNikpOwotICAgIFJVTih0ZXN0Qml0WG9yQml0WG9y
QXJnSW1tSW1tMzIoMHhmZmZmLCAyNCwgNykpOwotICAgIFJVTih0ZXN0Qml0WG9ySW1tQml0WG9y
QXJnSW1tMzIoNywgMiwgMykpOwotICAgIFJVTih0ZXN0Qml0WG9ySW1tQml0WG9yQXJnSW1tMzIo
NiwgMSwgNikpOwotICAgIFJVTih0ZXN0Qml0WG9ySW1tQml0WG9yQXJnSW1tMzIoMjQsIDB4ZmZm
ZiwgNykpOwotICAgIFJVTl9URVJOQVJZKHRlc3RCaXRYb3JBbmRBbmRBcmdzLCBpbnQ2NE9wZXJh
bmRzKCksIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKLSAgICBSVU5fQklOQVJZ
KHRlc3RCaXRYb3JBbmRTYW1lQXJncywgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkp
OwotCi0gICAgUlVOX1VOQVJZKHRlc3RCaXROb3RBcmcsIGludDY0T3BlcmFuZHMoKSk7Ci0gICAg
UlVOX1VOQVJZKHRlc3RCaXROb3RJbW0sIGludDY0T3BlcmFuZHMoKSk7Ci0gICAgUlVOX1VOQVJZ
KHRlc3RCaXROb3RNZW0sIGludDY0T3BlcmFuZHMoKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RCaXRO
b3RBcmczMiwgaW50MzJPcGVyYW5kcygpKTsKLSAgICBSVU5fVU5BUlkodGVzdEJpdE5vdEltbTMy
LCBpbnQzMk9wZXJhbmRzKCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0Qml0Tm90TWVtMzIsIGludDMy
T3BlcmFuZHMoKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0Tm90T25Cb29sZWFuQW5kQnJhbmNoMzIs
IGludDMyT3BlcmFuZHMoKSwgaW50MzJPcGVyYW5kcygpKTsKLSAgICBSVU5fQklOQVJZKHRlc3RC
aXROb3RPbkJvb2xlYW5BbmRCcmFuY2gzMiwgaW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRz
KCkpOwotCi0gICAgUlVOKHRlc3RTaGxBcmdzKDEsIDApKTsKLSAgICBSVU4odGVzdFNobEFyZ3Mo
MSwgMSkpOwotICAgIFJVTih0ZXN0U2hsQXJncygxLCA2MikpOwotICAgIFJVTih0ZXN0U2hsQXJn
cygweGZmZmZmZmZmZmZmZmZmZmYsIDApKTsKLSAgICBSVU4odGVzdFNobEFyZ3MoMHhmZmZmZmZm
ZmZmZmZmZmZmLCAxKSk7Ci0gICAgUlVOKHRlc3RTaGxBcmdzKDB4ZmZmZmZmZmZmZmZmZmZmZiwg
NjMpKTsKLSAgICBSVU4odGVzdFNobEltbXMoMSwgMCkpOwotICAgIFJVTih0ZXN0U2hsSW1tcygx
LCAxKSk7Ci0gICAgUlVOKHRlc3RTaGxJbW1zKDEsIDYyKSk7Ci0gICAgUlVOKHRlc3RTaGxJbW1z
KDEsIDY1KSk7Ci0gICAgUlVOKHRlc3RTaGxJbW1zKDB4ZmZmZmZmZmZmZmZmZmZmZiwgMCkpOwot
ICAgIFJVTih0ZXN0U2hsSW1tcygweGZmZmZmZmZmZmZmZmZmZmYsIDEpKTsKLSAgICBSVU4odGVz
dFNobEltbXMoMHhmZmZmZmZmZmZmZmZmZmZmLCA2MykpOwotICAgIFJVTih0ZXN0U2hsQXJnSW1t
KDEsIDApKTsKLSAgICBSVU4odGVzdFNobEFyZ0ltbSgxLCAxKSk7Ci0gICAgUlVOKHRlc3RTaGxB
cmdJbW0oMSwgNjIpKTsKLSAgICBSVU4odGVzdFNobEFyZ0ltbSgxLCA2NSkpOwotICAgIFJVTih0
ZXN0U2hsQXJnSW1tKDB4ZmZmZmZmZmZmZmZmZmZmZiwgMCkpOwotICAgIFJVTih0ZXN0U2hsQXJn
SW1tKDB4ZmZmZmZmZmZmZmZmZmZmZiwgMSkpOwotICAgIFJVTih0ZXN0U2hsQXJnSW1tKDB4ZmZm
ZmZmZmZmZmZmZmZmZiwgNjMpKTsKLSAgICBSVU4odGVzdFNobFNTaHJBcmdJbW0oMSwgMCkpOwot
ICAgIFJVTih0ZXN0U2hsU1NockFyZ0ltbSgxLCAxKSk7Ci0gICAgUlVOKHRlc3RTaGxTU2hyQXJn
SW1tKDEsIDYyKSk7Ci0gICAgUlVOKHRlc3RTaGxTU2hyQXJnSW1tKDEsIDY1KSk7Ci0gICAgUlVO
KHRlc3RTaGxTU2hyQXJnSW1tKDB4ZmZmZmZmZmZmZmZmZmZmZiwgMCkpOwotICAgIFJVTih0ZXN0
U2hsU1NockFyZ0ltbSgweGZmZmZmZmZmZmZmZmZmZmYsIDEpKTsKLSAgICBSVU4odGVzdFNobFNT
aHJBcmdJbW0oMHhmZmZmZmZmZmZmZmZmZmZmLCA2MykpOwotICAgIFJVTih0ZXN0U2hsQXJnMzIo
MikpOwotICAgIFJVTih0ZXN0U2hsQXJnczMyKDEsIDApKTsKLSAgICBSVU4odGVzdFNobEFyZ3Mz
MigxLCAxKSk7Ci0gICAgUlVOKHRlc3RTaGxBcmdzMzIoMSwgNjIpKTsKLSAgICBSVU4odGVzdFNo
bEltbXMzMigxLCAzMykpOwotICAgIFJVTih0ZXN0U2hsQXJnczMyKDB4ZmZmZmZmZmYsIDApKTsK
LSAgICBSVU4odGVzdFNobEFyZ3MzMigweGZmZmZmZmZmLCAxKSk7Ci0gICAgUlVOKHRlc3RTaGxB
cmdzMzIoMHhmZmZmZmZmZiwgNjMpKTsKLSAgICBSVU4odGVzdFNobEltbXMzMigxLCAwKSk7Ci0g
ICAgUlVOKHRlc3RTaGxJbW1zMzIoMSwgMSkpOwotICAgIFJVTih0ZXN0U2hsSW1tczMyKDEsIDYy
KSk7Ci0gICAgUlVOKHRlc3RTaGxJbW1zMzIoMSwgMzMpKTsKLSAgICBSVU4odGVzdFNobEltbXMz
MigweGZmZmZmZmZmLCAwKSk7Ci0gICAgUlVOKHRlc3RTaGxJbW1zMzIoMHhmZmZmZmZmZiwgMSkp
OwotICAgIFJVTih0ZXN0U2hsSW1tczMyKDB4ZmZmZmZmZmYsIDYzKSk7Ci0gICAgUlVOKHRlc3RT
aGxBcmdJbW0zMigxLCAwKSk7Ci0gICAgUlVOKHRlc3RTaGxBcmdJbW0zMigxLCAxKSk7Ci0gICAg
UlVOKHRlc3RTaGxBcmdJbW0zMigxLCA2MikpOwotICAgIFJVTih0ZXN0U2hsQXJnSW1tMzIoMSwg
MzMpKTsKLSAgICBSVU4odGVzdFNobEFyZ0ltbTMyKDB4ZmZmZmZmZmYsIDApKTsKLSAgICBSVU4o
dGVzdFNobEFyZ0ltbTMyKDB4ZmZmZmZmZmYsIDEpKTsKLSAgICBSVU4odGVzdFNobEFyZ0ltbTMy
KDB4ZmZmZmZmZmYsIDYzKSk7Ci0gICAgUlVOKHRlc3RTaGxaU2hyQXJnSW1tMzIoMSwgMCkpOwot
ICAgIFJVTih0ZXN0U2hsWlNockFyZ0ltbTMyKDEsIDEpKTsKLSAgICBSVU4odGVzdFNobFpTaHJB
cmdJbW0zMigxLCA2MikpOwotICAgIFJVTih0ZXN0U2hsWlNockFyZ0ltbTMyKDEsIDMzKSk7Ci0g
ICAgUlVOKHRlc3RTaGxaU2hyQXJnSW1tMzIoMHhmZmZmZmZmZiwgMCkpOwotICAgIFJVTih0ZXN0
U2hsWlNockFyZ0ltbTMyKDB4ZmZmZmZmZmYsIDEpKTsKLSAgICBSVU4odGVzdFNobFpTaHJBcmdJ
bW0zMigweGZmZmZmZmZmLCA2MykpOwotCi0gICAgUlVOKHRlc3RTU2hyQXJncygxLCAwKSk7Ci0g
ICAgUlVOKHRlc3RTU2hyQXJncygxLCAxKSk7Ci0gICAgUlVOKHRlc3RTU2hyQXJncygxLCA2Mikp
OwotICAgIFJVTih0ZXN0U1NockFyZ3MoMHhmZmZmZmZmZmZmZmZmZmZmLCAwKSk7Ci0gICAgUlVO
KHRlc3RTU2hyQXJncygweGZmZmZmZmZmZmZmZmZmZmYsIDEpKTsKLSAgICBSVU4odGVzdFNTaHJB
cmdzKDB4ZmZmZmZmZmZmZmZmZmZmZiwgNjMpKTsKLSAgICBSVU4odGVzdFNTaHJJbW1zKDEsIDAp
KTsKLSAgICBSVU4odGVzdFNTaHJJbW1zKDEsIDEpKTsKLSAgICBSVU4odGVzdFNTaHJJbW1zKDEs
IDYyKSk7Ci0gICAgUlVOKHRlc3RTU2hySW1tcygxLCA2NSkpOwotICAgIFJVTih0ZXN0U1Nocklt
bXMoMHhmZmZmZmZmZmZmZmZmZmZmLCAwKSk7Ci0gICAgUlVOKHRlc3RTU2hySW1tcygweGZmZmZm
ZmZmZmZmZmZmZmYsIDEpKTsKLSAgICBSVU4odGVzdFNTaHJJbW1zKDB4ZmZmZmZmZmZmZmZmZmZm
ZiwgNjMpKTsKLSAgICBSVU4odGVzdFNTaHJBcmdJbW0oMSwgMCkpOwotICAgIFJVTih0ZXN0U1No
ckFyZ0ltbSgxLCAxKSk7Ci0gICAgUlVOKHRlc3RTU2hyQXJnSW1tKDEsIDYyKSk7Ci0gICAgUlVO
KHRlc3RTU2hyQXJnSW1tKDEsIDY1KSk7Ci0gICAgUlVOKHRlc3RTU2hyQXJnSW1tKDB4ZmZmZmZm
ZmZmZmZmZmZmZiwgMCkpOwotICAgIFJVTih0ZXN0U1NockFyZ0ltbSgweGZmZmZmZmZmZmZmZmZm
ZmYsIDEpKTsKLSAgICBSVU4odGVzdFNTaHJBcmdJbW0oMHhmZmZmZmZmZmZmZmZmZmZmLCA2Mykp
OwotICAgIFJVTih0ZXN0U1NockFyZzMyKDMyKSk7Ci0gICAgUlVOKHRlc3RTU2hyQXJnczMyKDEs
IDApKTsKLSAgICBSVU4odGVzdFNTaHJBcmdzMzIoMSwgMSkpOwotICAgIFJVTih0ZXN0U1NockFy
Z3MzMigxLCA2MikpOwotICAgIFJVTih0ZXN0U1NockFyZ3MzMigxLCAzMykpOwotICAgIFJVTih0
ZXN0U1NockFyZ3MzMigweGZmZmZmZmZmLCAwKSk7Ci0gICAgUlVOKHRlc3RTU2hyQXJnczMyKDB4
ZmZmZmZmZmYsIDEpKTsKLSAgICBSVU4odGVzdFNTaHJBcmdzMzIoMHhmZmZmZmZmZiwgNjMpKTsK
LSAgICBSVU4odGVzdFNTaHJJbW1zMzIoMSwgMCkpOwotICAgIFJVTih0ZXN0U1NockltbXMzMigx
LCAxKSk7Ci0gICAgUlVOKHRlc3RTU2hySW1tczMyKDEsIDYyKSk7Ci0gICAgUlVOKHRlc3RTU2hy
SW1tczMyKDEsIDMzKSk7Ci0gICAgUlVOKHRlc3RTU2hySW1tczMyKDB4ZmZmZmZmZmYsIDApKTsK
LSAgICBSVU4odGVzdFNTaHJJbW1zMzIoMHhmZmZmZmZmZiwgMSkpOwotICAgIFJVTih0ZXN0U1No
ckltbXMzMigweGZmZmZmZmZmLCA2MykpOwotICAgIFJVTih0ZXN0U1NockFyZ0ltbTMyKDEsIDAp
KTsKLSAgICBSVU4odGVzdFNTaHJBcmdJbW0zMigxLCAxKSk7Ci0gICAgUlVOKHRlc3RTU2hyQXJn
SW1tMzIoMSwgNjIpKTsKLSAgICBSVU4odGVzdFNTaHJBcmdJbW0zMigweGZmZmZmZmZmLCAwKSk7
Ci0gICAgUlVOKHRlc3RTU2hyQXJnSW1tMzIoMHhmZmZmZmZmZiwgMSkpOwotICAgIFJVTih0ZXN0
U1NockFyZ0ltbTMyKDB4ZmZmZmZmZmYsIDYzKSk7Ci0KLSAgICBSVU4odGVzdFpTaHJBcmdzKDEs
IDApKTsKLSAgICBSVU4odGVzdFpTaHJBcmdzKDEsIDEpKTsKLSAgICBSVU4odGVzdFpTaHJBcmdz
KDEsIDYyKSk7Ci0gICAgUlVOKHRlc3RaU2hyQXJncygweGZmZmZmZmZmZmZmZmZmZmYsIDApKTsK
LSAgICBSVU4odGVzdFpTaHJBcmdzKDB4ZmZmZmZmZmZmZmZmZmZmZiwgMSkpOwotICAgIFJVTih0
ZXN0WlNockFyZ3MoMHhmZmZmZmZmZmZmZmZmZmZmLCA2MykpOwotICAgIFJVTih0ZXN0WlNocklt
bXMoMSwgMCkpOwotICAgIFJVTih0ZXN0WlNockltbXMoMSwgMSkpOwotICAgIFJVTih0ZXN0WlNo
ckltbXMoMSwgNjIpKTsKLSAgICBSVU4odGVzdFpTaHJJbW1zKDEsIDY1KSk7Ci0gICAgUlVOKHRl
c3RaU2hySW1tcygweGZmZmZmZmZmZmZmZmZmZmYsIDApKTsKLSAgICBSVU4odGVzdFpTaHJJbW1z
KDB4ZmZmZmZmZmZmZmZmZmZmZiwgMSkpOwotICAgIFJVTih0ZXN0WlNockltbXMoMHhmZmZmZmZm
ZmZmZmZmZmZmLCA2MykpOwotICAgIFJVTih0ZXN0WlNockFyZ0ltbSgxLCAwKSk7Ci0gICAgUlVO
KHRlc3RaU2hyQXJnSW1tKDEsIDEpKTsKLSAgICBSVU4odGVzdFpTaHJBcmdJbW0oMSwgNjIpKTsK
LSAgICBSVU4odGVzdFpTaHJBcmdJbW0oMSwgNjUpKTsKLSAgICBSVU4odGVzdFpTaHJBcmdJbW0o
MHhmZmZmZmZmZmZmZmZmZmZmLCAwKSk7Ci0gICAgUlVOKHRlc3RaU2hyQXJnSW1tKDB4ZmZmZmZm
ZmZmZmZmZmZmZiwgMSkpOwotICAgIFJVTih0ZXN0WlNockFyZ0ltbSgweGZmZmZmZmZmZmZmZmZm
ZmYsIDYzKSk7Ci0gICAgUlVOKHRlc3RaU2hyQXJnMzIoMzIpKTsKLSAgICBSVU4odGVzdFpTaHJB
cmdzMzIoMSwgMCkpOwotICAgIFJVTih0ZXN0WlNockFyZ3MzMigxLCAxKSk7Ci0gICAgUlVOKHRl
c3RaU2hyQXJnczMyKDEsIDYyKSk7Ci0gICAgUlVOKHRlc3RaU2hyQXJnczMyKDEsIDMzKSk7Ci0g
ICAgUlVOKHRlc3RaU2hyQXJnczMyKDB4ZmZmZmZmZmYsIDApKTsKLSAgICBSVU4odGVzdFpTaHJB
cmdzMzIoMHhmZmZmZmZmZiwgMSkpOwotICAgIFJVTih0ZXN0WlNockFyZ3MzMigweGZmZmZmZmZm
LCA2MykpOwotICAgIFJVTih0ZXN0WlNockltbXMzMigxLCAwKSk7Ci0gICAgUlVOKHRlc3RaU2hy
SW1tczMyKDEsIDEpKTsKLSAgICBSVU4odGVzdFpTaHJJbW1zMzIoMSwgNjIpKTsKLSAgICBSVU4o
dGVzdFpTaHJJbW1zMzIoMSwgMzMpKTsKLSAgICBSVU4odGVzdFpTaHJJbW1zMzIoMHhmZmZmZmZm
ZiwgMCkpOwotICAgIFJVTih0ZXN0WlNockltbXMzMigweGZmZmZmZmZmLCAxKSk7Ci0gICAgUlVO
KHRlc3RaU2hySW1tczMyKDB4ZmZmZmZmZmYsIDYzKSk7Ci0gICAgUlVOKHRlc3RaU2hyQXJnSW1t
MzIoMSwgMCkpOwotICAgIFJVTih0ZXN0WlNockFyZ0ltbTMyKDEsIDEpKTsKLSAgICBSVU4odGVz
dFpTaHJBcmdJbW0zMigxLCA2MikpOwotICAgIFJVTih0ZXN0WlNockFyZ0ltbTMyKDB4ZmZmZmZm
ZmYsIDApKTsKLSAgICBSVU4odGVzdFpTaHJBcmdJbW0zMigweGZmZmZmZmZmLCAxKSk7Ci0gICAg
UlVOKHRlc3RaU2hyQXJnSW1tMzIoMHhmZmZmZmZmZiwgNjMpKTsKLQotICAgIFJVTl9VTkFSWSh0
ZXN0Q2x6QXJnNjQsIGludDY0T3BlcmFuZHMoKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RDbHpNZW02
NCwgaW50NjRPcGVyYW5kcygpKTsKLSAgICBSVU5fVU5BUlkodGVzdENsekFyZzMyLCBpbnQzMk9w
ZXJhbmRzKCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0Q2x6TWVtMzIsIGludDY0T3BlcmFuZHMoKSk7
Ci0KLSAgICBSVU5fVU5BUlkodGVzdEFic0FyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJs
ZT4oKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RBYnNJbW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxk
b3VibGU+KCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0QWJzTWVtLCBmbG9hdGluZ1BvaW50T3BlcmFu
ZHM8ZG91YmxlPigpKTsKLSAgICBSVU5fVU5BUlkodGVzdEFic0Fic0FyZywgZmxvYXRpbmdQb2lu
dE9wZXJhbmRzPGRvdWJsZT4oKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RBYnNOZWdBcmcsIGZsb2F0
aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0QWJzQml0d2lz
ZUNhc3RBcmcsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwotICAgIFJVTl9VTkFS
WSh0ZXN0Qml0d2lzZUNhc3RBYnNCaXR3aXNlQ2FzdEFyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRz
PGRvdWJsZT4oKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RBYnNBcmcsIGZsb2F0aW5nUG9pbnRPcGVy
YW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RBYnNJbW0sIGZsb2F0aW5nUG9pbnRP
cGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RBYnNNZW0sIGZsb2F0aW5nUG9p
bnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RBYnNBYnNBcmcsIGZsb2F0
aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RBYnNOZWdBcmcs
IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RBYnNC
aXR3aXNlQ2FzdEFyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKLSAgICBSVU5f
VU5BUlkodGVzdEJpdHdpc2VDYXN0QWJzQml0d2lzZUNhc3RBcmcsIGZsb2F0aW5nUG9pbnRPcGVy
YW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RBYnNBcmdXaXRoVXNlbGVzc0RvdWJs
ZUNvbnZlcnNpb24sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX1VO
QVJZKHRlc3RBYnNBcmdXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lvbiwgZmxvYXRpbmdQb2lu
dE9wZXJhbmRzPGZsb2F0PigpKTsKLQotICAgIFJVTl9VTkFSWSh0ZXN0Q2VpbEFyZywgZmxvYXRp
bmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RDZWlsSW1tLCBm
bG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKLSAgICBSVU5fVU5BUlkodGVzdENlaWxN
ZW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0
Q2VpbENlaWxBcmcsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwotICAgIFJVTl9V
TkFSWSh0ZXN0Rmxvb3JDZWlsQXJnLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsK
LSAgICBSVU5fVU5BUlkodGVzdENlaWxJVG9ENjQsIGludDY0T3BlcmFuZHMoKSk7Ci0gICAgUlVO
X1VOQVJZKHRlc3RDZWlsSVRvRDMyLCBpbnQzMk9wZXJhbmRzKCkpOwotICAgIFJVTl9VTkFSWSh0
ZXN0Q2VpbEFyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKLSAgICBSVU5fVU5B
UlkodGVzdENlaWxJbW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVO
X1VOQVJZKHRlc3RDZWlsTWVtLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAg
IFJVTl9VTkFSWSh0ZXN0Q2VpbENlaWxBcmcsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4o
KSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RGbG9vckNlaWxBcmcsIGZsb2F0aW5nUG9pbnRPcGVyYW5k
czxmbG9hdD4oKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RDZWlsQXJnV2l0aFVzZWxlc3NEb3VibGVD
b252ZXJzaW9uLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTl9VTkFS
WSh0ZXN0Q2VpbEFyZ1dpdGhFZmZlY3RmdWxEb3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZmxvYXQ+KCkpOwotCi0gICAgUlVOX1VOQVJZKHRlc3RGbG9vckFyZywgZmxvYXRp
bmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RGbG9vckltbSwg
ZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RGbG9v
ck1lbSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7Ci0gICAgUlVOX1VOQVJZKHRl
c3RGbG9vckZsb29yQXJnLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKLSAgICBS
VU5fVU5BUlkodGVzdENlaWxGbG9vckFyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4o
KSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RGbG9vcklUb0Q2NCwgaW50NjRPcGVyYW5kcygpKTsKLSAg
ICBSVU5fVU5BUlkodGVzdEZsb29ySVRvRDMyLCBpbnQzMk9wZXJhbmRzKCkpOwotICAgIFJVTl9V
TkFSWSh0ZXN0Rmxvb3JBcmcsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAg
UlVOX1VOQVJZKHRlc3RGbG9vckltbSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsK
LSAgICBSVU5fVU5BUlkodGVzdEZsb29yTWVtLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+
KCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0Rmxvb3JGbG9vckFyZywgZmxvYXRpbmdQb2ludE9wZXJh
bmRzPGZsb2F0PigpKTsKLSAgICBSVU5fVU5BUlkodGVzdENlaWxGbG9vckFyZywgZmxvYXRpbmdQ
b2ludE9wZXJhbmRzPGZsb2F0PigpKTsKLSAgICBSVU5fVU5BUlkodGVzdEZsb29yQXJnV2l0aFVz
ZWxlc3NEb3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwot
ICAgIFJVTl9VTkFSWSh0ZXN0Rmxvb3JBcmdXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lvbiwg
ZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKLQotICAgIFJVTl9VTkFSWSh0ZXN0U3Fy
dEFyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7Ci0gICAgUlVOX1VOQVJZKHRl
c3RTcXJ0SW1tLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKLSAgICBSVU5fVU5B
UlkodGVzdFNxcnRNZW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwotICAgIFJV
Tl9VTkFSWSh0ZXN0U3FydEFyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKLSAg
ICBSVU5fVU5BUlkodGVzdFNxcnRJbW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7
Ci0gICAgUlVOX1VOQVJZKHRlc3RTcXJ0TWVtLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+
KCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0U3FydEFyZ1dpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lv
biwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKLSAgICBSVU5fVU5BUlkodGVzdFNx
cnRBcmdXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lvbiwgZmxvYXRpbmdQb2ludE9wZXJhbmRz
PGZsb2F0PigpKTsKLQotICAgIFJVTl9CSU5BUlkodGVzdENvbXBhcmVUd29GbG9hdFRvRG91Ymxl
LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxm
bG9hdD4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0Q29tcGFyZU9uZUZsb2F0VG9Eb3VibGUsIGZs
b2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJs
ZT4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0Q29tcGFyZUZsb2F0VG9Eb3VibGVUaHJvdWdoUGhp
LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxm
bG9hdD4oKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3REb3VibGVUb0Zsb2F0VGhyb3VnaFBoaSwgZmxv
YXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKLSAgICBSVU4odGVzdFJlZHVjZUZsb2F0VG9E
b3VibGVWYWxpZGF0ZXMoKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3REb3VibGVQcm9kdWNlclBoaVRv
RmxvYXRDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJV
Tl9VTkFSWSh0ZXN0RG91YmxlUHJvZHVjZXJQaGlUb0Zsb2F0Q29udmVyc2lvbldpdGhEb3VibGVD
b25zdW1lciwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKLSAgICBSVU5fQklOQVJZ
KHRlc3REb3VibGVQcm9kdWNlclBoaVdpdGhOb25GbG9hdENvbnN0LCBmbG9hdGluZ1BvaW50T3Bl
cmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwotCi0gICAg
UlVOX1VOQVJZKHRlc3REb3VibGVBcmdUb0ludDY0Qml0d2lzZUNhc3QsIGZsb2F0aW5nUG9pbnRP
cGVyYW5kczxkb3VibGU+KCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0RG91YmxlSW1tVG9JbnQ2NEJp
dHdpc2VDYXN0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKLSAgICBSVU5fVU5B
UlkodGVzdFR3b0JpdHdpc2VDYXN0T25Eb3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3Vi
bGU+KCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0Qml0d2lzZUNhc3RPbkRvdWJsZUluTWVtb3J5LCBm
bG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKLSAgICBSVU5fVU5BUlkodGVzdEJpdHdp
c2VDYXN0T25Eb3VibGVJbk1lbW9yeUluZGV4ZWQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3Vi
bGU+KCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0SW50NjRCQXJnVG9Eb3VibGVCaXR3aXNlQ2FzdCwg
aW50NjRPcGVyYW5kcygpKTsKLSAgICBSVU5fVU5BUlkodGVzdEludDY0QkltbVRvRG91YmxlQml0
d2lzZUNhc3QsIGludDY0T3BlcmFuZHMoKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RUd29CaXR3aXNl
Q2FzdE9uSW50NjQsIGludDY0T3BlcmFuZHMoKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RCaXR3aXNl
Q2FzdE9uSW50NjRJbk1lbW9yeSwgaW50NjRPcGVyYW5kcygpKTsKLSAgICBSVU5fVU5BUlkodGVz
dEJpdHdpc2VDYXN0T25JbnQ2NEluTWVtb3J5SW5kZXhlZCwgaW50NjRPcGVyYW5kcygpKTsKLSAg
ICBSVU5fVU5BUlkodGVzdEZsb2F0SW1tVG9JbnQzMkJpdHdpc2VDYXN0LCBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0Qml0d2lzZUNhc3RPbkZsb2F0
SW5NZW1vcnksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX1VOQVJZ
KHRlc3RJbnQzMkJBcmdUb0Zsb2F0Qml0d2lzZUNhc3QsIGludDMyT3BlcmFuZHMoKSk7Ci0gICAg
UlVOX1VOQVJZKHRlc3RJbnQzMkJJbW1Ub0Zsb2F0Qml0d2lzZUNhc3QsIGludDMyT3BlcmFuZHMo
KSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RUd29CaXR3aXNlQ2FzdE9uSW50MzIsIGludDMyT3BlcmFu
ZHMoKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RCaXR3aXNlQ2FzdE9uSW50MzJJbk1lbW9yeSwgaW50
MzJPcGVyYW5kcygpKTsKLQotICAgIFJVTl9VTkFSWSh0ZXN0Q29udmVydERvdWJsZVRvRmxvYXRB
cmcsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0
Q29udmVydERvdWJsZVRvRmxvYXRJbW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkp
OwotICAgIFJVTl9VTkFSWSh0ZXN0Q29udmVydERvdWJsZVRvRmxvYXRNZW0sIGZsb2F0aW5nUG9p
bnRPcGVyYW5kczxkb3VibGU+KCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0Q29udmVydEZsb2F0VG9E
b3VibGVBcmcsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX1VOQVJZ
KHRlc3RDb252ZXJ0RmxvYXRUb0RvdWJsZUltbSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0
PigpKTsKLSAgICBSVU5fVU5BUlkodGVzdENvbnZlcnRGbG9hdFRvRG91YmxlTWVtLCBmbG9hdGlu
Z1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0Q29udmVydERvdWJs
ZVRvRmxvYXRUb0RvdWJsZVRvRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkp
OwotICAgIFJVTl9VTkFSWSh0ZXN0U3RvcmVGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRv
dWJsZT4oKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RTdG9yZURvdWJsZUNvbnN0YW50QXNGbG9hdCwg
ZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RMb2Fk
RmxvYXRDb252ZXJ0RG91YmxlQ29udmVydEZsb2F0U3RvcmVGbG9hdCwgZmxvYXRpbmdQb2ludE9w
ZXJhbmRzPGZsb2F0PigpKTsKLSAgICBSVU5fVU5BUlkodGVzdEZyb3VuZEFyZywgZmxvYXRpbmdQ
b2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RGcm91bmRNZW0sIGZs
b2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwotCi0gICAgUlVOKHRlc3RJVG9ENjRBcmco
KSk7Ci0gICAgUlVOKHRlc3RJVG9GNjRBcmcoKSk7Ci0gICAgUlVOKHRlc3RJVG9EMzJBcmcoKSk7
Ci0gICAgUlVOKHRlc3RJVG9GMzJBcmcoKSk7Ci0gICAgUlVOKHRlc3RJVG9ENjRNZW0oKSk7Ci0g
ICAgUlVOKHRlc3RJVG9GNjRNZW0oKSk7Ci0gICAgUlVOKHRlc3RJVG9EMzJNZW0oKSk7Ci0gICAg
UlVOKHRlc3RJVG9GMzJNZW0oKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RJVG9ENjRJbW0sIGludDY0
T3BlcmFuZHMoKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RJVG9GNjRJbW0sIGludDY0T3BlcmFuZHMo
KSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RJVG9EMzJJbW0sIGludDMyT3BlcmFuZHMoKSk7Ci0gICAg
UlVOX1VOQVJZKHRlc3RJVG9GMzJJbW0sIGludDMyT3BlcmFuZHMoKSk7Ci0gICAgUlVOKHRlc3RJ
VG9EUmVkdWNlZFRvSVRvRjY0QXJnKCkpOwotICAgIFJVTih0ZXN0SVRvRFJlZHVjZWRUb0lUb0Yz
MkFyZygpKTsKLQotICAgIFJVTih0ZXN0U3RvcmUzMig0NCkpOwotICAgIFJVTih0ZXN0U3RvcmVD
b25zdGFudCg0OSkpOwotICAgIFJVTih0ZXN0U3RvcmVDb25zdGFudFB0cig0OSkpOwotICAgIFJV
Tih0ZXN0U3RvcmU4QXJnKCkpOwotICAgIFJVTih0ZXN0U3RvcmU4SW1tKCkpOwotICAgIFJVTih0
ZXN0U3RvcmVQYXJ0aWFsOEJpdFJlZ2lzdGVyT25YODYoKSk7Ci0gICAgUlVOKHRlc3RTdG9yZTE2
QXJnKCkpOwotICAgIFJVTih0ZXN0U3RvcmUxNkltbSgpKTsKLSAgICBSVU4odGVzdFRydW5jKChz
dGF0aWNfY2FzdDxpbnQ2NF90PigxKSA8PCA0MCkgKyA0MikpOwotICAgIFJVTih0ZXN0QWRkMSg0
NSkpOwotICAgIFJVTih0ZXN0QWRkMVB0cig1MSkpOwotICAgIFJVTih0ZXN0QWRkMVB0cihzdGF0
aWNfY2FzdDxpbnRwdHJfdD4oMHhiYWFkYmVlZikpKTsKLSAgICBSVU4odGVzdE5lZzMyKDUyKSk7
Ci0gICAgUlVOKHRlc3ROZWdQdHIoNTMpKTsKLSAgICBSVU4odGVzdFN0b3JlQWRkTG9hZDMyKDQ2
KSk7Ci0gICAgUlVOKHRlc3RTdG9yZVJlbEFkZExvYWRBY3EzMig0NikpOwotICAgIFJVTih0ZXN0
U3RvcmVBZGRMb2FkSW1tMzIoNDYpKTsKLSAgICBSVU4odGVzdFN0b3JlQWRkTG9hZDY0KDQ2MDAp
KTsKLSAgICBSVU4odGVzdFN0b3JlUmVsQWRkTG9hZEFjcTY0KDQ2MDApKTsKLSAgICBSVU4odGVz
dFN0b3JlQWRkTG9hZEltbTY0KDQ2MDApKTsKLSAgICBSVU4odGVzdFN0b3JlQWRkTG9hZDgoNCwg
TG9hZDhaKSk7Ci0gICAgUlVOKHRlc3RTdG9yZVJlbEFkZExvYWRBY3E4KDQsIExvYWQ4WikpOwot
ICAgIFJVTih0ZXN0U3RvcmVSZWxBZGRGZW5jZUxvYWRBY3E4KDQsIExvYWQ4WikpOwotICAgIFJV
Tih0ZXN0U3RvcmVBZGRMb2FkSW1tOCg0LCBMb2FkOFopKTsKLSAgICBSVU4odGVzdFN0b3JlQWRk
TG9hZDgoNCwgTG9hZDhTKSk7Ci0gICAgUlVOKHRlc3RTdG9yZVJlbEFkZExvYWRBY3E4KDQsIExv
YWQ4UykpOwotICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkSW1tOCg0LCBMb2FkOFMpKTsKLSAgICBS
VU4odGVzdFN0b3JlQWRkTG9hZDE2KDYsIExvYWQxNlopKTsKLSAgICBSVU4odGVzdFN0b3JlUmVs
QWRkTG9hZEFjcTE2KDYsIExvYWQxNlopKTsKLSAgICBSVU4odGVzdFN0b3JlQWRkTG9hZEltbTE2
KDYsIExvYWQxNlopKTsKLSAgICBSVU4odGVzdFN0b3JlQWRkTG9hZDE2KDYsIExvYWQxNlMpKTsK
LSAgICBSVU4odGVzdFN0b3JlUmVsQWRkTG9hZEFjcTE2KDYsIExvYWQxNlMpKTsKLSAgICBSVU4o
dGVzdFN0b3JlQWRkTG9hZEltbTE2KDYsIExvYWQxNlMpKTsKLSAgICBSVU4odGVzdFN0b3JlQWRk
TG9hZDMySW5kZXgoNDYpKTsKLSAgICBSVU4odGVzdFN0b3JlQWRkTG9hZEltbTMySW5kZXgoNDYp
KTsKLSAgICBSVU4odGVzdFN0b3JlQWRkTG9hZDY0SW5kZXgoNDYwMCkpOwotICAgIFJVTih0ZXN0
U3RvcmVBZGRMb2FkSW1tNjRJbmRleCg0NjAwKSk7Ci0gICAgUlVOKHRlc3RTdG9yZUFkZExvYWQ4
SW5kZXgoNCwgTG9hZDhaKSk7Ci0gICAgUlVOKHRlc3RTdG9yZUFkZExvYWRJbW04SW5kZXgoNCwg
TG9hZDhaKSk7Ci0gICAgUlVOKHRlc3RTdG9yZUFkZExvYWQ4SW5kZXgoNCwgTG9hZDhTKSk7Ci0g
ICAgUlVOKHRlc3RTdG9yZUFkZExvYWRJbW04SW5kZXgoNCwgTG9hZDhTKSk7Ci0gICAgUlVOKHRl
c3RTdG9yZUFkZExvYWQxNkluZGV4KDYsIExvYWQxNlopKTsKLSAgICBSVU4odGVzdFN0b3JlQWRk
TG9hZEltbTE2SW5kZXgoNiwgTG9hZDE2WikpOwotICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkMTZJ
bmRleCg2LCBMb2FkMTZTKSk7Ci0gICAgUlVOKHRlc3RTdG9yZUFkZExvYWRJbW0xNkluZGV4KDYs
IExvYWQxNlMpKTsKLSAgICBSVU4odGVzdFN0b3JlU3ViTG9hZCg0NikpOwotICAgIFJVTih0ZXN0
U3RvcmVBZGRMb2FkSW50ZXJmZXJlbmNlKDUyKSk7Ci0gICAgUlVOKHRlc3RTdG9yZUFkZEFuZExv
YWQoNDcsIDB4ZmZmZikpOwotICAgIFJVTih0ZXN0U3RvcmVBZGRBbmRMb2FkKDQ3MDAwMCwgMHhm
ZmZmKSk7Ci0gICAgUlVOKHRlc3RTdG9yZU5lZ0xvYWQzMig1NCkpOwotICAgIFJVTih0ZXN0U3Rv
cmVOZWdMb2FkUHRyKDU1KSk7Ci0gICAgUlVOKHRlc3RBZGQxVW5jb21tdXRlZCg0OCkpOwotICAg
IFJVTih0ZXN0TG9hZE9mZnNldCgpKTsKLSAgICBSVU4odGVzdExvYWRPZmZzZXROb3RDb25zdGFu
dCgpKTsKLSAgICBSVU4odGVzdExvYWRPZmZzZXRVc2luZ0FkZCgpKTsKLSAgICBSVU4odGVzdExv
YWRPZmZzZXRVc2luZ0FkZEludGVyZmVyZW5jZSgpKTsKLSAgICBSVU4odGVzdExvYWRPZmZzZXRV
c2luZ0FkZE5vdENvbnN0YW50KCkpOwotICAgIFJVTih0ZXN0TG9hZEFkZHJTaGlmdCgwKSk7Ci0g
ICAgUlVOKHRlc3RMb2FkQWRkclNoaWZ0KDEpKTsKLSAgICBSVU4odGVzdExvYWRBZGRyU2hpZnQo
MikpOwotICAgIFJVTih0ZXN0TG9hZEFkZHJTaGlmdCgzKSk7Ci0gICAgUlVOKHRlc3RGcmFtZVBv
aW50ZXIoKSk7Ci0gICAgUlVOKHRlc3RPdmVycmlkZUZyYW1lUG9pbnRlcigpKTsKLSAgICBSVU4o
dGVzdFN0YWNrU2xvdCgpKTsKLSAgICBSVU4odGVzdExvYWRGcm9tRnJhbWVQb2ludGVyKCkpOwot
ICAgIFJVTih0ZXN0U3RvcmVMb2FkU3RhY2tTbG90KDUwKSk7Ci0gICAgCi0gICAgUlVOKHRlc3RC
cmFuY2goKSk7Ci0gICAgUlVOKHRlc3RCcmFuY2hQdHIoKSk7Ci0gICAgUlVOKHRlc3REaWFtb25k
KCkpOwotICAgIFJVTih0ZXN0QnJhbmNoTm90RXF1YWwoKSk7Ci0gICAgUlVOKHRlc3RCcmFuY2hO
b3RFcXVhbENvbW11dGUoKSk7Ci0gICAgUlVOKHRlc3RCcmFuY2hOb3RFcXVhbE5vdEVxdWFsKCkp
OwotICAgIFJVTih0ZXN0QnJhbmNoRXF1YWwoKSk7Ci0gICAgUlVOKHRlc3RCcmFuY2hFcXVhbEVx
dWFsKCkpOwotICAgIFJVTih0ZXN0QnJhbmNoRXF1YWxDb21tdXRlKCkpOwotICAgIFJVTih0ZXN0
QnJhbmNoRXF1YWxFcXVhbDEoKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0QnJhbmNoRXF1YWxPclVu
b3JkZXJlZEFyZ3MsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCksIGZsb2F0aW5nUG9p
bnRPcGVyYW5kczxkb3VibGU+KCkpOwotICAgIFJVTl9CSU5BUlkodGVzdEJyYW5jaEVxdWFsT3JV
bm9yZGVyZWRBcmdzLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9p
bnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0QnJhbmNoTm90RXF1YWxB
bmRPcmRlcmVkQXJncywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSwgZmxvYXRpbmdQ
b2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0QnJhbmNoTm90RXF1
YWxBbmRPcmRlcmVkQXJncywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGlu
Z1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTl9CSU5BUlkodGVzdEJyYW5jaEVxdWFs
T3JVbm9yZGVyZWREb3VibGVBcmdJbW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCks
IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwotICAgIFJVTl9CSU5BUlkodGVzdEJy
YW5jaEVxdWFsT3JVbm9yZGVyZWRGbG9hdEFyZ0ltbSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZs
b2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTl9CSU5BUlko
dGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVyZWREb3VibGVJbW1zLCBmbG9hdGluZ1BvaW50T3BlcmFu
ZHM8ZG91YmxlPigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKLSAgICBSVU5f
QklOQVJZKHRlc3RCcmFuY2hFcXVhbE9yVW5vcmRlcmVkRmxvYXRJbW1zLCBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAg
UlVOX0JJTkFSWSh0ZXN0QnJhbmNoRXF1YWxPclVub3JkZXJlZEZsb2F0V2l0aFVzZWxlc3NEb3Vi
bGVDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9p
bnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0QnJhbmNoTm90RXF1YWxB
bmRPcmRlcmVkQXJncywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSwgZmxvYXRpbmdQ
b2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0QnJhbmNoTm90RXF1
YWxBbmRPcmRlcmVkQXJncywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGlu
Z1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTih0ZXN0QnJhbmNoRm9sZCg0MikpOwot
ICAgIFJVTih0ZXN0QnJhbmNoRm9sZCgwKSk7Ci0gICAgUlVOKHRlc3REaWFtb25kRm9sZCg0Mikp
OwotICAgIFJVTih0ZXN0RGlhbW9uZEZvbGQoMCkpOwotICAgIFJVTih0ZXN0QnJhbmNoTm90RXF1
YWxGb2xkUHRyKDQyKSk7Ci0gICAgUlVOKHRlc3RCcmFuY2hOb3RFcXVhbEZvbGRQdHIoMCkpOwot
ICAgIFJVTih0ZXN0QnJhbmNoRXF1YWxGb2xkUHRyKDQyKSk7Ci0gICAgUlVOKHRlc3RCcmFuY2hF
cXVhbEZvbGRQdHIoMCkpOwotICAgIFJVTih0ZXN0QnJhbmNoTG9hZFB0cigpKTsKLSAgICBSVU4o
dGVzdEJyYW5jaExvYWQzMigpKTsKLSAgICBSVU4odGVzdEJyYW5jaExvYWQ4UygpKTsKLSAgICBS
VU4odGVzdEJyYW5jaExvYWQ4WigpKTsKLSAgICBSVU4odGVzdEJyYW5jaExvYWQxNlMoKSk7Ci0g
ICAgUlVOKHRlc3RCcmFuY2hMb2FkMTZaKCkpOwotICAgIFJVTih0ZXN0QnJhbmNoOFdpdGhMb2Fk
OFpJbmRleCgpKTsKLQotICAgIFJVTih0ZXN0Q29tcGxleCg2NCwgMTI4KSk7Ci0gICAgUlVOKHRl
c3RDb21wbGV4KDQsIDEyOCkpOwotICAgIFJVTih0ZXN0Q29tcGxleCg0LCAyNTYpKTsKLSAgICBS
VU4odGVzdENvbXBsZXgoNCwgMzg0KSk7Ci0KLSAgICBSVU5fQklOQVJZKHRlc3RCcmFuY2hCaXRU
ZXN0MzJUbXBJbW0sIGludDMyT3BlcmFuZHMoKSwgaW50MzJPcGVyYW5kcygpKTsKLSAgICBSVU5f
QklOQVJZKHRlc3RCcmFuY2hCaXRUZXN0MzJBZGRySW1tLCBpbnQzMk9wZXJhbmRzKCksIGludDMy
T3BlcmFuZHMoKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0QnJhbmNoQml0VGVzdDMyVG1wVG1wLCBp
bnQzMk9wZXJhbmRzKCksIGludDMyT3BlcmFuZHMoKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0QnJh
bmNoQml0VGVzdDY0VG1wVG1wLCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSk7Ci0g
ICAgUlVOX0JJTkFSWSh0ZXN0QnJhbmNoQml0VGVzdDY0QWRkclRtcCwgaW50NjRPcGVyYW5kcygp
LCBpbnQ2NE9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5BUlkodGVzdEJyYW5jaEJpdFRlc3ROZWdh
dGlvbiwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5BUlko
dGVzdEJyYW5jaEJpdFRlc3ROZWdhdGlvbjIsIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5k
cygpKTsKLQotICAgIFJVTih0ZXN0U2ltcGxlUGF0Y2hwb2ludCgpKTsKLSAgICBSVU4odGVzdFNp
bXBsZVBhdGNocG9pbnRXaXRob3V0T3VwdXRDbG9iYmVyc0dQQXJncygpKTsKLSAgICBSVU4odGVz
dFNpbXBsZVBhdGNocG9pbnRXaXRoT3VwdXRDbG9iYmVyc0dQQXJncygpKTsKLSAgICBSVU4odGVz
dFNpbXBsZVBhdGNocG9pbnRXaXRob3V0T3VwdXRDbG9iYmVyc0ZQQXJncygpKTsKLSAgICBSVU4o
dGVzdFNpbXBsZVBhdGNocG9pbnRXaXRoT3VwdXRDbG9iYmVyc0ZQQXJncygpKTsKLSAgICBSVU4o
dGVzdFBhdGNocG9pbnRXaXRoRWFybHlDbG9iYmVyKCkpOwotICAgIFJVTih0ZXN0UGF0Y2hwb2lu
dENhbGxBcmcoKSk7Ci0gICAgUlVOKHRlc3RQYXRjaHBvaW50Rml4ZWRSZWdpc3RlcigpKTsKLSAg
ICBSVU4odGVzdFBhdGNocG9pbnRBbnkoVmFsdWVSZXA6Oldhcm1BbnkpKTsKLSAgICBSVU4odGVz
dFBhdGNocG9pbnRBbnkoVmFsdWVSZXA6OkNvbGRBbnkpKTsKLSAgICBSVU4odGVzdFBhdGNocG9p
bnRHUFNjcmF0Y2goKSk7Ci0gICAgUlVOKHRlc3RQYXRjaHBvaW50RlBTY3JhdGNoKCkpOwotICAg
IFJVTih0ZXN0UGF0Y2hwb2ludExvdHNPZkxhdGVBbnlzKCkpOwotICAgIFJVTih0ZXN0UGF0Y2hw
b2ludEFueUltbShWYWx1ZVJlcDo6V2FybUFueSkpOwotICAgIFJVTih0ZXN0UGF0Y2hwb2ludEFu
eUltbShWYWx1ZVJlcDo6Q29sZEFueSkpOwotICAgIFJVTih0ZXN0UGF0Y2hwb2ludEFueUltbShW
YWx1ZVJlcDo6TGF0ZUNvbGRBbnkpKTsKLSAgICBSVU4odGVzdFBhdGNocG9pbnRNYW55SW1tcygp
KTsKLSAgICBSVU4odGVzdFBhdGNocG9pbnRXaXRoUmVnaXN0ZXJSZXN1bHQoKSk7Ci0gICAgUlVO
KHRlc3RQYXRjaHBvaW50V2l0aFN0YWNrQXJndW1lbnRSZXN1bHQoKSk7Ci0gICAgUlVOKHRlc3RQ
YXRjaHBvaW50V2l0aEFueVJlc3VsdCgpKTsKLSAgICBSVU4odGVzdFNpbXBsZUNoZWNrKCkpOwot
ICAgIFJVTih0ZXN0Q2hlY2tGYWxzZSgpKTsKLSAgICBSVU4odGVzdENoZWNrVHJ1ZSgpKTsKLSAg
ICBSVU4odGVzdENoZWNrTGVzc1RoYW4oKSk7Ci0gICAgUlVOKHRlc3RDaGVja01lZ2FDb21ibygp
KTsKLSAgICBSVU4odGVzdENoZWNrVHJpY2t5TWVnYUNvbWJvKCkpOwotICAgIFJVTih0ZXN0Q2hl
Y2tUd29NZWdhQ29tYm9zKCkpOwotICAgIFJVTih0ZXN0Q2hlY2tUd29Ob25SZWR1bmRhbnRNZWdh
Q29tYm9zKCkpOwotICAgIFJVTih0ZXN0Q2hlY2tBZGRJbW0oKSk7Ci0gICAgUlVOKHRlc3RDaGVj
a0FkZEltbUNvbW11dGUoKSk7Ci0gICAgUlVOKHRlc3RDaGVja0FkZEltbVNvbWVSZWdpc3Rlcigp
KTsKLSAgICBSVU4odGVzdENoZWNrQWRkKCkpOwotICAgIFJVTih0ZXN0Q2hlY2tBZGQ2NCgpKTsK
LSAgICBSVU4odGVzdENoZWNrQWRkRm9sZCgxMDAsIDIwMCkpOwotICAgIFJVTih0ZXN0Q2hlY2tB
ZGRGb2xkRmFpbCgyMTQ3NDgzNjQ3LCAxMDApKTsKLSAgICBSVU4odGVzdENoZWNrQWRkQXJndW1l
bnRBbGlhc2luZzY0KCkpOwotICAgIFJVTih0ZXN0Q2hlY2tBZGRBcmd1bWVudEFsaWFzaW5nMzIo
KSk7Ci0gICAgUlVOKHRlc3RDaGVja0FkZFNlbGZPdmVyZmxvdzY0KCkpOwotICAgIFJVTih0ZXN0
Q2hlY2tBZGRTZWxmT3ZlcmZsb3czMigpKTsKLSAgICBSVU4odGVzdENoZWNrU3ViSW1tKCkpOwot
ICAgIFJVTih0ZXN0Q2hlY2tTdWJCYWRJbW0oKSk7Ci0gICAgUlVOKHRlc3RDaGVja1N1YigpKTsK
LSAgICBSVU4odGVzdENoZWNrU3ViNjQoKSk7Ci0gICAgUlVOKHRlc3RDaGVja1N1YkZvbGQoMTAw
LCAyMDApKTsKLSAgICBSVU4odGVzdENoZWNrU3ViRm9sZEZhaWwoLTIxNDc0ODM2NDcsIDEwMCkp
OwotICAgIFJVTih0ZXN0Q2hlY2tOZWcoKSk7Ci0gICAgUlVOKHRlc3RDaGVja05lZzY0KCkpOwot
ICAgIFJVTih0ZXN0Q2hlY2tNdWwoKSk7Ci0gICAgUlVOKHRlc3RDaGVja011bE1lbW9yeSgpKTsK
LSAgICBSVU4odGVzdENoZWNrTXVsMigpKTsKLSAgICBSVU4odGVzdENoZWNrTXVsNjQoKSk7Ci0g
ICAgUlVOKHRlc3RDaGVja011bEZvbGQoMTAwLCAyMDApKTsKLSAgICBSVU4odGVzdENoZWNrTXVs
Rm9sZEZhaWwoMjE0NzQ4MzY0NywgMTAwKSk7Ci0gICAgUlVOKHRlc3RDaGVja011bEFyZ3VtZW50
QWxpYXNpbmc2NCgpKTsKLSAgICBSVU4odGVzdENoZWNrTXVsQXJndW1lbnRBbGlhc2luZzMyKCkp
OwotCi0gICAgUlVOX0JJTkFSWShbXShpbnQzMl90IGEsIGludDMyX3QgYikgeyB0ZXN0Q29tcGFy
ZShFcXVhbCwgYSwgYik7IH0sIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKLSAg
ICBSVU5fQklOQVJZKFtdKGludDMyX3QgYSwgaW50MzJfdCBiKSB7IHRlc3RDb21wYXJlKE5vdEVx
dWFsLCBhLCBiKTsgfSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOwotICAgIFJV
Tl9CSU5BUlkoW10oaW50MzJfdCBhLCBpbnQzMl90IGIpIHsgdGVzdENvbXBhcmUoTGVzc1RoYW4s
IGEsIGIpOyB9LCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSk7Ci0gICAgUlVOX0JJ
TkFSWShbXShpbnQzMl90IGEsIGludDMyX3QgYikgeyB0ZXN0Q29tcGFyZShHcmVhdGVyVGhhbiwg
YSwgYik7IH0sIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKLSAgICBSVU5fQklO
QVJZKFtdKGludDMyX3QgYSwgaW50MzJfdCBiKSB7IHRlc3RDb21wYXJlKExlc3NFcXVhbCwgYSwg
Yik7IH0sIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKLSAgICBSVU5fQklOQVJZ
KFtdKGludDMyX3QgYSwgaW50MzJfdCBiKSB7IHRlc3RDb21wYXJlKEdyZWF0ZXJFcXVhbCwgYSwg
Yik7IH0sIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKLSAgICBSVU5fQklOQVJZ
KFtdKGludDMyX3QgYSwgaW50MzJfdCBiKSB7IHRlc3RDb21wYXJlKEJlbG93LCBhLCBiKTsgfSwg
aW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5BUlkoW10oaW50
MzJfdCBhLCBpbnQzMl90IGIpIHsgdGVzdENvbXBhcmUoQWJvdmUsIGEsIGIpOyB9LCBpbnQ2NE9w
ZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSk7Ci0gICAgUlVOX0JJTkFSWShbXShpbnQzMl90IGEs
IGludDMyX3QgYikgeyB0ZXN0Q29tcGFyZShCZWxvd0VxdWFsLCBhLCBiKTsgfSwgaW50NjRPcGVy
YW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5BUlkoW10oaW50MzJfdCBhLCBp
bnQzMl90IGIpIHsgdGVzdENvbXBhcmUoQWJvdmVFcXVhbCwgYSwgYik7IH0sIGludDY0T3BlcmFu
ZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKLSAgICBSVU5fQklOQVJZKFtdKGludDMyX3QgYSwgaW50
MzJfdCBiKSB7IHRlc3RDb21wYXJlKEJpdEFuZCwgYSwgYik7IH0sIGludDY0T3BlcmFuZHMoKSwg
aW50NjRPcGVyYW5kcygpKTsKLQotICAgIFJVTih0ZXN0RXF1YWxEb3VibGUoNDIsIDQyLCB0cnVl
KSk7Ci0gICAgUlVOKHRlc3RFcXVhbERvdWJsZSgwLCAtMCwgdHJ1ZSkpOwotICAgIFJVTih0ZXN0
RXF1YWxEb3VibGUoNDIsIDQzLCBmYWxzZSkpOwotICAgIFJVTih0ZXN0RXF1YWxEb3VibGUoUE5h
TiwgNDIsIGZhbHNlKSk7Ci0gICAgUlVOKHRlc3RFcXVhbERvdWJsZSg0MiwgUE5hTiwgZmFsc2Up
KTsKLSAgICBSVU4odGVzdEVxdWFsRG91YmxlKFBOYU4sIFBOYU4sIGZhbHNlKSk7Ci0KLSAgICBS
VU4odGVzdExvYWQ8SW50MzI+KDYwKSk7Ci0gICAgUlVOKHRlc3RMb2FkPEludDMyPigtNjApKTsK
LSAgICBSVU4odGVzdExvYWQ8SW50MzI+KDEwMDApKTsKLSAgICBSVU4odGVzdExvYWQ8SW50MzI+
KC0xMDAwKSk7Ci0gICAgUlVOKHRlc3RMb2FkPEludDMyPigxMDAwMDAwKSk7Ci0gICAgUlVOKHRl
c3RMb2FkPEludDMyPigtMTAwMDAwMCkpOwotICAgIFJVTih0ZXN0TG9hZDxJbnQzMj4oMTAwMDAw
MDAwMCkpOwotICAgIFJVTih0ZXN0TG9hZDxJbnQzMj4oLTEwMDAwMDAwMDApKTsKLSAgICBSVU5f
VU5BUlkodGVzdExvYWQ8SW50NjQ+LCBpbnQ2NE9wZXJhbmRzKCkpOwotICAgIFJVTl9VTkFSWSh0
ZXN0TG9hZDxGbG9hdD4sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVO
X1VOQVJZKHRlc3RMb2FkPERvdWJsZT4sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkp
OwotICAgIAotICAgIFJVTih0ZXN0TG9hZDxpbnQ4X3Q+KExvYWQ4UywgNjApKTsKLSAgICBSVU4o
dGVzdExvYWQ8aW50OF90PihMb2FkOFMsIC02MCkpOwotICAgIFJVTih0ZXN0TG9hZDxpbnQ4X3Q+
KExvYWQ4UywgMTAwMCkpOwotICAgIFJVTih0ZXN0TG9hZDxpbnQ4X3Q+KExvYWQ4UywgLTEwMDAp
KTsKLSAgICBSVU4odGVzdExvYWQ8aW50OF90PihMb2FkOFMsIDEwMDAwMDApKTsKLSAgICBSVU4o
dGVzdExvYWQ8aW50OF90PihMb2FkOFMsIC0xMDAwMDAwKSk7Ci0gICAgUlVOKHRlc3RMb2FkPGlu
dDhfdD4oTG9hZDhTLCAxMDAwMDAwMDAwKSk7Ci0gICAgUlVOKHRlc3RMb2FkPGludDhfdD4oTG9h
ZDhTLCAtMTAwMDAwMDAwMCkpOwotICAgIAotICAgIFJVTih0ZXN0TG9hZDx1aW50OF90PihMb2Fk
OFosIDYwKSk7Ci0gICAgUlVOKHRlc3RMb2FkPHVpbnQ4X3Q+KExvYWQ4WiwgLTYwKSk7Ci0gICAg
UlVOKHRlc3RMb2FkPHVpbnQ4X3Q+KExvYWQ4WiwgMTAwMCkpOwotICAgIFJVTih0ZXN0TG9hZDx1
aW50OF90PihMb2FkOFosIC0xMDAwKSk7Ci0gICAgUlVOKHRlc3RMb2FkPHVpbnQ4X3Q+KExvYWQ4
WiwgMTAwMDAwMCkpOwotICAgIFJVTih0ZXN0TG9hZDx1aW50OF90PihMb2FkOFosIC0xMDAwMDAw
KSk7Ci0gICAgUlVOKHRlc3RMb2FkPHVpbnQ4X3Q+KExvYWQ4WiwgMTAwMDAwMDAwMCkpOwotICAg
IFJVTih0ZXN0TG9hZDx1aW50OF90PihMb2FkOFosIC0xMDAwMDAwMDAwKSk7Ci0KLSAgICBSVU4o
dGVzdExvYWQ8aW50MTZfdD4oTG9hZDE2UywgNjApKTsKLSAgICBSVU4odGVzdExvYWQ8aW50MTZf
dD4oTG9hZDE2UywgLTYwKSk7Ci0gICAgUlVOKHRlc3RMb2FkPGludDE2X3Q+KExvYWQxNlMsIDEw
MDApKTsKLSAgICBSVU4odGVzdExvYWQ8aW50MTZfdD4oTG9hZDE2UywgLTEwMDApKTsKLSAgICBS
VU4odGVzdExvYWQ8aW50MTZfdD4oTG9hZDE2UywgMTAwMDAwMCkpOwotICAgIFJVTih0ZXN0TG9h
ZDxpbnQxNl90PihMb2FkMTZTLCAtMTAwMDAwMCkpOwotICAgIFJVTih0ZXN0TG9hZDxpbnQxNl90
PihMb2FkMTZTLCAxMDAwMDAwMDAwKSk7Ci0gICAgUlVOKHRlc3RMb2FkPGludDE2X3Q+KExvYWQx
NlMsIC0xMDAwMDAwMDAwKSk7Ci0gICAgCi0gICAgUlVOKHRlc3RMb2FkPHVpbnQxNl90PihMb2Fk
MTZaLCA2MCkpOwotICAgIFJVTih0ZXN0TG9hZDx1aW50MTZfdD4oTG9hZDE2WiwgLTYwKSk7Ci0g
ICAgUlVOKHRlc3RMb2FkPHVpbnQxNl90PihMb2FkMTZaLCAxMDAwKSk7Ci0gICAgUlVOKHRlc3RM
b2FkPHVpbnQxNl90PihMb2FkMTZaLCAtMTAwMCkpOwotICAgIFJVTih0ZXN0TG9hZDx1aW50MTZf
dD4oTG9hZDE2WiwgMTAwMDAwMCkpOwotICAgIFJVTih0ZXN0TG9hZDx1aW50MTZfdD4oTG9hZDE2
WiwgLTEwMDAwMDApKTsKLSAgICBSVU4odGVzdExvYWQ8dWludDE2X3Q+KExvYWQxNlosIDEwMDAw
MDAwMDApKTsKLSAgICBSVU4odGVzdExvYWQ8dWludDE2X3Q+KExvYWQxNlosIC0xMDAwMDAwMDAw
KSk7Ci0KLSAgICBSVU4odGVzdFNwaWxsR1AoKSk7Ci0gICAgUlVOKHRlc3RTcGlsbEZQKCkpOwot
Ci0gICAgUlVOKHRlc3RJbnQzMlRvRG91YmxlUGFydGlhbFJlZ2lzdGVyU3RhbGwoKSk7Ci0gICAg
UlVOKHRlc3RJbnQzMlRvRG91YmxlUGFydGlhbFJlZ2lzdGVyV2l0aG91dFN0YWxsKCkpOwotCi0g
ICAgUlVOKHRlc3RDYWxsU2ltcGxlKDEsIDIpKTsKLSAgICBSVU4odGVzdENhbGxSYXJlKDEsIDIp
KTsKLSAgICBSVU4odGVzdENhbGxSYXJlTGl2ZSgxLCAyLCAzKSk7Ci0gICAgUlVOKHRlc3RDYWxs
U2ltcGxlUHVyZSgxLCAyKSk7Ci0gICAgUlVOKHRlc3RDYWxsRnVuY3Rpb25XaXRoSGVsbGFBcmd1
bWVudHMoKSk7Ci0gICAgUlVOKHRlc3RDYWxsRnVuY3Rpb25XaXRoSGVsbGFBcmd1bWVudHMyKCkp
OwotICAgIFJVTih0ZXN0Q2FsbEZ1bmN0aW9uV2l0aEhlbGxhQXJndW1lbnRzMygpKTsKLQotICAg
IFJVTih0ZXN0UmV0dXJuRG91YmxlKDAuMCkpOwotICAgIFJVTih0ZXN0UmV0dXJuRG91YmxlKG5l
Z2F0aXZlWmVybygpKSk7Ci0gICAgUlVOKHRlc3RSZXR1cm5Eb3VibGUoNDIuNSkpOwotICAgIFJV
Tl9VTkFSWSh0ZXN0UmV0dXJuRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7
Ci0KLSAgICBSVU4odGVzdENhbGxTaW1wbGVEb3VibGUoMSwgMikpOwotICAgIFJVTih0ZXN0Q2Fs
bEZ1bmN0aW9uV2l0aEhlbGxhRG91YmxlQXJndW1lbnRzKCkpOwotICAgIFJVTl9CSU5BUlkodGVz
dENhbGxTaW1wbGVGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGlu
Z1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTih0ZXN0Q2FsbEZ1bmN0aW9uV2l0aEhl
bGxhRmxvYXRBcmd1bWVudHMoKSk7Ci0KLSAgICBSVU4odGVzdExpbmVhclNjYW5XaXRoQ2FsbGVl
T25TdGFjaygpKTsKLQotICAgIFJVTih0ZXN0Q2hpbGxEaXYoNCwgMiwgMikpOwotICAgIFJVTih0
ZXN0Q2hpbGxEaXYoMSwgMCwgMCkpOwotICAgIFJVTih0ZXN0Q2hpbGxEaXYoMCwgMCwgMCkpOwot
ICAgIFJVTih0ZXN0Q2hpbGxEaXYoMSwgLTEsIC0xKSk7Ci0gICAgUlVOKHRlc3RDaGlsbERpdigt
MjE0NzQ4MzY0NyAtIDEsIDAsIDApKTsKLSAgICBSVU4odGVzdENoaWxsRGl2KC0yMTQ3NDgzNjQ3
IC0gMSwgMSwgLTIxNDc0ODM2NDcgLSAxKSk7Ci0gICAgUlVOKHRlc3RDaGlsbERpdigtMjE0NzQ4
MzY0NyAtIDEsIC0xLCAtMjE0NzQ4MzY0NyAtIDEpKTsKLSAgICBSVU4odGVzdENoaWxsRGl2KC0y
MTQ3NDgzNjQ3IC0gMSwgMiwgLTEwNzM3NDE4MjQpKTsKLSAgICBSVU4odGVzdENoaWxsRGl2NjQo
NCwgMiwgMikpOwotICAgIFJVTih0ZXN0Q2hpbGxEaXY2NCgxLCAwLCAwKSk7Ci0gICAgUlVOKHRl
c3RDaGlsbERpdjY0KDAsIDAsIDApKTsKLSAgICBSVU4odGVzdENoaWxsRGl2NjQoMSwgLTEsIC0x
KSk7Ci0gICAgUlVOKHRlc3RDaGlsbERpdjY0KC05MjIzMzcyMDM2ODU0Nzc1ODA3bGwgLSAxLCAw
LCAwKSk7Ci0gICAgUlVOKHRlc3RDaGlsbERpdjY0KC05MjIzMzcyMDM2ODU0Nzc1ODA3bGwgLSAx
LCAxLCAtOTIyMzM3MjAzNjg1NDc3NTgwN2xsIC0gMSkpOwotICAgIFJVTih0ZXN0Q2hpbGxEaXY2
NCgtOTIyMzM3MjAzNjg1NDc3NTgwN2xsIC0gMSwgLTEsIC05MjIzMzcyMDM2ODU0Nzc1ODA3bGwg
LSAxKSk7Ci0gICAgUlVOKHRlc3RDaGlsbERpdjY0KC05MjIzMzcyMDM2ODU0Nzc1ODA3bGwgLSAx
LCAyLCAtNDYxMTY4NjAxODQyNzM4NzkwNCkpOwotICAgIFJVTih0ZXN0Q2hpbGxEaXZUd2ljZSg0
LCAyLCA2LCAyLCA1KSk7Ci0gICAgUlVOKHRlc3RDaGlsbERpdlR3aWNlKDQsIDAsIDYsIDIsIDMp
KTsKLSAgICBSVU4odGVzdENoaWxsRGl2VHdpY2UoNCwgMiwgNiwgMCwgMikpOwotCi0gICAgUlVO
X1VOQVJZKHRlc3RNb2RBcmcsIGludDY0T3BlcmFuZHMoKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0
TW9kQXJncywgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5B
UlkodGVzdE1vZEltbXMsIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKLSAgICBS
VU5fVU5BUlkodGVzdE1vZEFyZzMyLCBpbnQzMk9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5BUlko
dGVzdE1vZEFyZ3MzMiwgaW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkpOwotICAgIFJV
Tl9CSU5BUlkodGVzdE1vZEltbXMzMiwgaW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkp
OwotICAgIFJVTl9VTkFSWSh0ZXN0Q2hpbGxNb2RBcmcsIGludDY0T3BlcmFuZHMoKSk7Ci0gICAg
UlVOX0JJTkFSWSh0ZXN0Q2hpbGxNb2RBcmdzLCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFu
ZHMoKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0Q2hpbGxNb2RJbW1zLCBpbnQ2NE9wZXJhbmRzKCks
IGludDY0T3BlcmFuZHMoKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RDaGlsbE1vZEFyZzMyLCBpbnQz
Mk9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5BUlkodGVzdENoaWxsTW9kQXJnczMyLCBpbnQzMk9w
ZXJhbmRzKCksIGludDMyT3BlcmFuZHMoKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0Q2hpbGxNb2RJ
bW1zMzIsIGludDMyT3BlcmFuZHMoKSwgaW50MzJPcGVyYW5kcygpKTsKLQotICAgIFJVTih0ZXN0
U3dpdGNoKDAsIDEpKTsKLSAgICBSVU4odGVzdFN3aXRjaCgxLCAxKSk7Ci0gICAgUlVOKHRlc3RT
d2l0Y2goMiwgMSkpOwotICAgIFJVTih0ZXN0U3dpdGNoKDIsIDIpKTsKLSAgICBSVU4odGVzdFN3
aXRjaCgxMCwgMSkpOwotICAgIFJVTih0ZXN0U3dpdGNoKDEwLCAyKSk7Ci0gICAgUlVOKHRlc3RT
d2l0Y2goMTAwLCAxKSk7Ci0gICAgUlVOKHRlc3RTd2l0Y2goMTAwLCAxMDApKTsKLQotICAgIFJV
Tih0ZXN0U3dpdGNoU2FtZUNhc2VBc0RlZmF1bHQoKSk7Ci0KLSAgICBSVU4odGVzdFN3aXRjaENo
aWxsRGl2KDAsIDEpKTsKLSAgICBSVU4odGVzdFN3aXRjaENoaWxsRGl2KDEsIDEpKTsKLSAgICBS
VU4odGVzdFN3aXRjaENoaWxsRGl2KDIsIDEpKTsKLSAgICBSVU4odGVzdFN3aXRjaENoaWxsRGl2
KDIsIDIpKTsKLSAgICBSVU4odGVzdFN3aXRjaENoaWxsRGl2KDEwLCAxKSk7Ci0gICAgUlVOKHRl
c3RTd2l0Y2hDaGlsbERpdigxMCwgMikpOwotICAgIFJVTih0ZXN0U3dpdGNoQ2hpbGxEaXYoMTAw
LCAxKSk7Ci0gICAgUlVOKHRlc3RTd2l0Y2hDaGlsbERpdigxMDAsIDEwMCkpOwotCi0gICAgUlVO
KHRlc3RTd2l0Y2hUYXJnZXR0aW5nU2FtZUJsb2NrKCkpOwotICAgIFJVTih0ZXN0U3dpdGNoVGFy
Z2V0dGluZ1NhbWVCbG9ja0ZvbGRQYXRoQ29uc3RhbnQoKSk7Ci0KLSAgICBSVU4odGVzdFRydW5j
KDApKTsKLSAgICBSVU4odGVzdFRydW5jKDEpKTsKLSAgICBSVU4odGVzdFRydW5jKC0xKSk7Ci0g
ICAgUlVOKHRlc3RUcnVuYygxMDAwMDAwMDAwMDAwbGwpKTsKLSAgICBSVU4odGVzdFRydW5jKC0x
MDAwMDAwMDAwMDAwbGwpKTsKLSAgICBSVU4odGVzdFRydW5jRm9sZCgwKSk7Ci0gICAgUlVOKHRl
c3RUcnVuY0ZvbGQoMSkpOwotICAgIFJVTih0ZXN0VHJ1bmNGb2xkKC0xKSk7Ci0gICAgUlVOKHRl
c3RUcnVuY0ZvbGQoMTAwMDAwMDAwMDAwMGxsKSk7Ci0gICAgUlVOKHRlc3RUcnVuY0ZvbGQoLTEw
MDAwMDAwMDAwMDBsbCkpOwotICAgIAotICAgIFJVTih0ZXN0WkV4dDMyKDApKTsKLSAgICBSVU4o
dGVzdFpFeHQzMigxKSk7Ci0gICAgUlVOKHRlc3RaRXh0MzIoLTEpKTsKLSAgICBSVU4odGVzdFpF
eHQzMigxMDAwMDAwMDAwbGwpKTsKLSAgICBSVU4odGVzdFpFeHQzMigtMTAwMDAwMDAwMGxsKSk7
Ci0gICAgUlVOKHRlc3RaRXh0MzJGb2xkKDApKTsKLSAgICBSVU4odGVzdFpFeHQzMkZvbGQoMSkp
OwotICAgIFJVTih0ZXN0WkV4dDMyRm9sZCgtMSkpOwotICAgIFJVTih0ZXN0WkV4dDMyRm9sZCgx
MDAwMDAwMDAwbGwpKTsKLSAgICBSVU4odGVzdFpFeHQzMkZvbGQoLTEwMDAwMDAwMDBsbCkpOwot
Ci0gICAgUlVOKHRlc3RTRXh0MzIoMCkpOwotICAgIFJVTih0ZXN0U0V4dDMyKDEpKTsKLSAgICBS
VU4odGVzdFNFeHQzMigtMSkpOwotICAgIFJVTih0ZXN0U0V4dDMyKDEwMDAwMDAwMDBsbCkpOwot
ICAgIFJVTih0ZXN0U0V4dDMyKC0xMDAwMDAwMDAwbGwpKTsKLSAgICBSVU4odGVzdFNFeHQzMkZv
bGQoMCkpOwotICAgIFJVTih0ZXN0U0V4dDMyRm9sZCgxKSk7Ci0gICAgUlVOKHRlc3RTRXh0MzJG
b2xkKC0xKSk7Ci0gICAgUlVOKHRlc3RTRXh0MzJGb2xkKDEwMDAwMDAwMDBsbCkpOwotICAgIFJV
Tih0ZXN0U0V4dDMyRm9sZCgtMTAwMDAwMDAwMGxsKSk7Ci0KLSAgICBSVU4odGVzdFRydW5jWkV4
dDMyKDApKTsKLSAgICBSVU4odGVzdFRydW5jWkV4dDMyKDEpKTsKLSAgICBSVU4odGVzdFRydW5j
WkV4dDMyKC0xKSk7Ci0gICAgUlVOKHRlc3RUcnVuY1pFeHQzMigxMDAwMDAwMDAwbGwpKTsKLSAg
ICBSVU4odGVzdFRydW5jWkV4dDMyKC0xMDAwMDAwMDAwbGwpKTsKLSAgICBSVU4odGVzdFRydW5j
U0V4dDMyKDApKTsKLSAgICBSVU4odGVzdFRydW5jU0V4dDMyKDEpKTsKLSAgICBSVU4odGVzdFRy
dW5jU0V4dDMyKC0xKSk7Ci0gICAgUlVOKHRlc3RUcnVuY1NFeHQzMigxMDAwMDAwMDAwbGwpKTsK
LSAgICBSVU4odGVzdFRydW5jU0V4dDMyKC0xMDAwMDAwMDAwbGwpKTsKLQotICAgIFJVTih0ZXN0
U0V4dDgoMCkpOwotICAgIFJVTih0ZXN0U0V4dDgoMSkpOwotICAgIFJVTih0ZXN0U0V4dDgoNDIp
KTsKLSAgICBSVU4odGVzdFNFeHQ4KC0xKSk7Ci0gICAgUlVOKHRlc3RTRXh0OCgweGZmKSk7Ci0g
ICAgUlVOKHRlc3RTRXh0OCgweDEwMCkpOwotICAgIFJVTih0ZXN0U0V4dDhGb2xkKDApKTsKLSAg
ICBSVU4odGVzdFNFeHQ4Rm9sZCgxKSk7Ci0gICAgUlVOKHRlc3RTRXh0OEZvbGQoNDIpKTsKLSAg
ICBSVU4odGVzdFNFeHQ4Rm9sZCgtMSkpOwotICAgIFJVTih0ZXN0U0V4dDhGb2xkKDB4ZmYpKTsK
LSAgICBSVU4odGVzdFNFeHQ4Rm9sZCgweDEwMCkpOwotICAgIFJVTih0ZXN0U0V4dDhTRXh0OCgw
KSk7Ci0gICAgUlVOKHRlc3RTRXh0OFNFeHQ4KDEpKTsKLSAgICBSVU4odGVzdFNFeHQ4U0V4dDgo
NDIpKTsKLSAgICBSVU4odGVzdFNFeHQ4U0V4dDgoLTEpKTsKLSAgICBSVU4odGVzdFNFeHQ4U0V4
dDgoMHhmZikpOwotICAgIFJVTih0ZXN0U0V4dDhTRXh0OCgweDEwMCkpOwotICAgIFJVTih0ZXN0
U0V4dDhTRXh0MTYoMCkpOwotICAgIFJVTih0ZXN0U0V4dDhTRXh0MTYoMSkpOwotICAgIFJVTih0
ZXN0U0V4dDhTRXh0MTYoNDIpKTsKLSAgICBSVU4odGVzdFNFeHQ4U0V4dDE2KC0xKSk7Ci0gICAg
UlVOKHRlc3RTRXh0OFNFeHQxNigweGZmKSk7Ci0gICAgUlVOKHRlc3RTRXh0OFNFeHQxNigweDEw
MCkpOwotICAgIFJVTih0ZXN0U0V4dDhTRXh0MTYoMHhmZmZmKSk7Ci0gICAgUlVOKHRlc3RTRXh0
OFNFeHQxNigweDEwMDAwKSk7Ci0gICAgUlVOKHRlc3RTRXh0OEJpdEFuZCgwLCAwKSk7Ci0gICAg
UlVOKHRlc3RTRXh0OEJpdEFuZCgxLCAwKSk7Ci0gICAgUlVOKHRlc3RTRXh0OEJpdEFuZCg0Miwg
MCkpOwotICAgIFJVTih0ZXN0U0V4dDhCaXRBbmQoLTEsIDApKTsKLSAgICBSVU4odGVzdFNFeHQ4
Qml0QW5kKDB4ZmYsIDApKTsKLSAgICBSVU4odGVzdFNFeHQ4Qml0QW5kKDB4MTAwLCAwKSk7Ci0g
ICAgUlVOKHRlc3RTRXh0OEJpdEFuZCgweGZmZmYsIDApKTsKLSAgICBSVU4odGVzdFNFeHQ4Qml0
QW5kKDB4MTAwMDAsIDApKTsKLSAgICBSVU4odGVzdFNFeHQ4Qml0QW5kKDAsIDB4ZikpOwotICAg
IFJVTih0ZXN0U0V4dDhCaXRBbmQoMSwgMHhmKSk7Ci0gICAgUlVOKHRlc3RTRXh0OEJpdEFuZCg0
MiwgMHhmKSk7Ci0gICAgUlVOKHRlc3RTRXh0OEJpdEFuZCgtMSwgMHhmKSk7Ci0gICAgUlVOKHRl
c3RTRXh0OEJpdEFuZCgweGZmLCAweGYpKTsKLSAgICBSVU4odGVzdFNFeHQ4Qml0QW5kKDB4MTAw
LCAweGYpKTsKLSAgICBSVU4odGVzdFNFeHQ4Qml0QW5kKDB4ZmZmZiwgMHhmKSk7Ci0gICAgUlVO
KHRlc3RTRXh0OEJpdEFuZCgweDEwMDAwLCAweGYpKTsKLSAgICBSVU4odGVzdFNFeHQ4Qml0QW5k
KDAsIDB4ZmYpKTsKLSAgICBSVU4odGVzdFNFeHQ4Qml0QW5kKDEsIDB4ZmYpKTsKLSAgICBSVU4o
dGVzdFNFeHQ4Qml0QW5kKDQyLCAweGZmKSk7Ci0gICAgUlVOKHRlc3RTRXh0OEJpdEFuZCgtMSwg
MHhmZikpOwotICAgIFJVTih0ZXN0U0V4dDhCaXRBbmQoMHhmZiwgMHhmZikpOwotICAgIFJVTih0
ZXN0U0V4dDhCaXRBbmQoMHgxMDAsIDB4ZmYpKTsKLSAgICBSVU4odGVzdFNFeHQ4Qml0QW5kKDB4
ZmZmZiwgMHhmZikpOwotICAgIFJVTih0ZXN0U0V4dDhCaXRBbmQoMHgxMDAwMCwgMHhmZikpOwot
ICAgIFJVTih0ZXN0U0V4dDhCaXRBbmQoMCwgMHg4MCkpOwotICAgIFJVTih0ZXN0U0V4dDhCaXRB
bmQoMSwgMHg4MCkpOwotICAgIFJVTih0ZXN0U0V4dDhCaXRBbmQoNDIsIDB4ODApKTsKLSAgICBS
VU4odGVzdFNFeHQ4Qml0QW5kKC0xLCAweDgwKSk7Ci0gICAgUlVOKHRlc3RTRXh0OEJpdEFuZCgw
eGZmLCAweDgwKSk7Ci0gICAgUlVOKHRlc3RTRXh0OEJpdEFuZCgweDEwMCwgMHg4MCkpOwotICAg
IFJVTih0ZXN0U0V4dDhCaXRBbmQoMHhmZmZmLCAweDgwKSk7Ci0gICAgUlVOKHRlc3RTRXh0OEJp
dEFuZCgweDEwMDAwLCAweDgwKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRTRXh0OCgwLCAweGYpKTsK
LSAgICBSVU4odGVzdEJpdEFuZFNFeHQ4KDEsIDB4ZikpOwotICAgIFJVTih0ZXN0Qml0QW5kU0V4
dDgoNDIsIDB4ZikpOwotICAgIFJVTih0ZXN0Qml0QW5kU0V4dDgoLTEsIDB4ZikpOwotICAgIFJV
Tih0ZXN0Qml0QW5kU0V4dDgoMHhmZiwgMHhmKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRTRXh0OCgw
eDEwMCwgMHhmKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRTRXh0OCgweGZmZmYsIDB4ZikpOwotICAg
IFJVTih0ZXN0Qml0QW5kU0V4dDgoMHgxMDAwMCwgMHhmKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRT
RXh0OCgwLCAweGZmKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRTRXh0OCgxLCAweGZmKSk7Ci0gICAg
UlVOKHRlc3RCaXRBbmRTRXh0OCg0MiwgMHhmZikpOwotICAgIFJVTih0ZXN0Qml0QW5kU0V4dDgo
LTEsIDB4ZmYpKTsKLSAgICBSVU4odGVzdEJpdEFuZFNFeHQ4KDB4ZmYsIDB4ZmYpKTsKLSAgICBS
VU4odGVzdEJpdEFuZFNFeHQ4KDB4MTAwLCAweGZmKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRTRXh0
OCgweGZmZmYsIDB4ZmYpKTsKLSAgICBSVU4odGVzdEJpdEFuZFNFeHQ4KDB4MTAwMDAsIDB4ZmYp
KTsKLSAgICBSVU4odGVzdEJpdEFuZFNFeHQ4KDAsIDB4ZmZmKSk7Ci0gICAgUlVOKHRlc3RCaXRB
bmRTRXh0OCgxLCAweGZmZikpOwotICAgIFJVTih0ZXN0Qml0QW5kU0V4dDgoNDIsIDB4ZmZmKSk7
Ci0gICAgUlVOKHRlc3RCaXRBbmRTRXh0OCgtMSwgMHhmZmYpKTsKLSAgICBSVU4odGVzdEJpdEFu
ZFNFeHQ4KDB4ZmYsIDB4ZmZmKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRTRXh0OCgweDEwMCwgMHhm
ZmYpKTsKLSAgICBSVU4odGVzdEJpdEFuZFNFeHQ4KDB4ZmZmZiwgMHhmZmYpKTsKLSAgICBSVU4o
dGVzdEJpdEFuZFNFeHQ4KDB4MTAwMDAsIDB4ZmZmKSk7Ci0KLSAgICBSVU4odGVzdFNFeHQxNigw
KSk7Ci0gICAgUlVOKHRlc3RTRXh0MTYoMSkpOwotICAgIFJVTih0ZXN0U0V4dDE2KDQyKSk7Ci0g
ICAgUlVOKHRlc3RTRXh0MTYoLTEpKTsKLSAgICBSVU4odGVzdFNFeHQxNigweGZmZmYpKTsKLSAg
ICBSVU4odGVzdFNFeHQxNigweDEwMDAwKSk7Ci0gICAgUlVOKHRlc3RTRXh0MTZGb2xkKDApKTsK
LSAgICBSVU4odGVzdFNFeHQxNkZvbGQoMSkpOwotICAgIFJVTih0ZXN0U0V4dDE2Rm9sZCg0Mikp
OwotICAgIFJVTih0ZXN0U0V4dDE2Rm9sZCgtMSkpOwotICAgIFJVTih0ZXN0U0V4dDE2Rm9sZCgw
eGZmZmYpKTsKLSAgICBSVU4odGVzdFNFeHQxNkZvbGQoMHgxMDAwMCkpOwotICAgIFJVTih0ZXN0
U0V4dDE2U0V4dDgoMCkpOwotICAgIFJVTih0ZXN0U0V4dDE2U0V4dDgoMSkpOwotICAgIFJVTih0
ZXN0U0V4dDE2U0V4dDgoNDIpKTsKLSAgICBSVU4odGVzdFNFeHQxNlNFeHQ4KC0xKSk7Ci0gICAg
UlVOKHRlc3RTRXh0MTZTRXh0OCgweGZmZmYpKTsKLSAgICBSVU4odGVzdFNFeHQxNlNFeHQ4KDB4
MTAwMDApKTsKLSAgICBSVU4odGVzdFNFeHQxNlNFeHQxNigwKSk7Ci0gICAgUlVOKHRlc3RTRXh0
MTZTRXh0MTYoMSkpOwotICAgIFJVTih0ZXN0U0V4dDE2U0V4dDE2KDQyKSk7Ci0gICAgUlVOKHRl
c3RTRXh0MTZTRXh0MTYoLTEpKTsKLSAgICBSVU4odGVzdFNFeHQxNlNFeHQxNigweGZmZmYpKTsK
LSAgICBSVU4odGVzdFNFeHQxNlNFeHQxNigweDEwMDAwKSk7Ci0gICAgUlVOKHRlc3RTRXh0MTZT
RXh0MTYoMHhmZmZmZmYpKTsKLSAgICBSVU4odGVzdFNFeHQxNlNFeHQxNigweDEwMDAwMDApKTsK
LSAgICBSVU4odGVzdFNFeHQxNkJpdEFuZCgwLCAwKSk7Ci0gICAgUlVOKHRlc3RTRXh0MTZCaXRB
bmQoMSwgMCkpOwotICAgIFJVTih0ZXN0U0V4dDE2Qml0QW5kKDQyLCAwKSk7Ci0gICAgUlVOKHRl
c3RTRXh0MTZCaXRBbmQoLTEsIDApKTsKLSAgICBSVU4odGVzdFNFeHQxNkJpdEFuZCgweGZmZmYs
IDApKTsKLSAgICBSVU4odGVzdFNFeHQxNkJpdEFuZCgweDEwMDAwLCAwKSk7Ci0gICAgUlVOKHRl
c3RTRXh0MTZCaXRBbmQoMHhmZmZmZmYsIDApKTsKLSAgICBSVU4odGVzdFNFeHQxNkJpdEFuZCgw
eDEwMDAwMDAsIDApKTsKLSAgICBSVU4odGVzdFNFeHQxNkJpdEFuZCgwLCAweGYpKTsKLSAgICBS
VU4odGVzdFNFeHQxNkJpdEFuZCgxLCAweGYpKTsKLSAgICBSVU4odGVzdFNFeHQxNkJpdEFuZCg0
MiwgMHhmKSk7Ci0gICAgUlVOKHRlc3RTRXh0MTZCaXRBbmQoLTEsIDB4ZikpOwotICAgIFJVTih0
ZXN0U0V4dDE2Qml0QW5kKDB4ZmZmZiwgMHhmKSk7Ci0gICAgUlVOKHRlc3RTRXh0MTZCaXRBbmQo
MHgxMDAwMCwgMHhmKSk7Ci0gICAgUlVOKHRlc3RTRXh0MTZCaXRBbmQoMHhmZmZmZmYsIDB4Zikp
OwotICAgIFJVTih0ZXN0U0V4dDE2Qml0QW5kKDB4MTAwMDAwMCwgMHhmKSk7Ci0gICAgUlVOKHRl
c3RTRXh0MTZCaXRBbmQoMCwgMHhmZmZmKSk7Ci0gICAgUlVOKHRlc3RTRXh0MTZCaXRBbmQoMSwg
MHhmZmZmKSk7Ci0gICAgUlVOKHRlc3RTRXh0MTZCaXRBbmQoNDIsIDB4ZmZmZikpOwotICAgIFJV
Tih0ZXN0U0V4dDE2Qml0QW5kKC0xLCAweGZmZmYpKTsKLSAgICBSVU4odGVzdFNFeHQxNkJpdEFu
ZCgweGZmZmYsIDB4ZmZmZikpOwotICAgIFJVTih0ZXN0U0V4dDE2Qml0QW5kKDB4MTAwMDAsIDB4
ZmZmZikpOwotICAgIFJVTih0ZXN0U0V4dDE2Qml0QW5kKDB4ZmZmZmZmLCAweGZmZmYpKTsKLSAg
ICBSVU4odGVzdFNFeHQxNkJpdEFuZCgweDEwMDAwMDAsIDB4ZmZmZikpOwotICAgIFJVTih0ZXN0
U0V4dDE2Qml0QW5kKDAsIDB4ODAwMCkpOwotICAgIFJVTih0ZXN0U0V4dDE2Qml0QW5kKDEsIDB4
ODAwMCkpOwotICAgIFJVTih0ZXN0U0V4dDE2Qml0QW5kKDQyLCAweDgwMDApKTsKLSAgICBSVU4o
dGVzdFNFeHQxNkJpdEFuZCgtMSwgMHg4MDAwKSk7Ci0gICAgUlVOKHRlc3RTRXh0MTZCaXRBbmQo
MHhmZmZmLCAweDgwMDApKTsKLSAgICBSVU4odGVzdFNFeHQxNkJpdEFuZCgweDEwMDAwLCAweDgw
MDApKTsKLSAgICBSVU4odGVzdFNFeHQxNkJpdEFuZCgweGZmZmZmZiwgMHg4MDAwKSk7Ci0gICAg
UlVOKHRlc3RTRXh0MTZCaXRBbmQoMHgxMDAwMDAwLCAweDgwMDApKTsKLSAgICBSVU4odGVzdEJp
dEFuZFNFeHQxNigwLCAweGYpKTsKLSAgICBSVU4odGVzdEJpdEFuZFNFeHQxNigxLCAweGYpKTsK
LSAgICBSVU4odGVzdEJpdEFuZFNFeHQxNig0MiwgMHhmKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRT
RXh0MTYoLTEsIDB4ZikpOwotICAgIFJVTih0ZXN0Qml0QW5kU0V4dDE2KDB4ZmZmZiwgMHhmKSk7
Ci0gICAgUlVOKHRlc3RCaXRBbmRTRXh0MTYoMHgxMDAwMCwgMHhmKSk7Ci0gICAgUlVOKHRlc3RC
aXRBbmRTRXh0MTYoMHhmZmZmZmYsIDB4ZikpOwotICAgIFJVTih0ZXN0Qml0QW5kU0V4dDE2KDB4
MTAwMDAwMCwgMHhmKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRTRXh0MTYoMCwgMHhmZmZmKSk7Ci0g
ICAgUlVOKHRlc3RCaXRBbmRTRXh0MTYoMSwgMHhmZmZmKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRT
RXh0MTYoNDIsIDB4ZmZmZikpOwotICAgIFJVTih0ZXN0Qml0QW5kU0V4dDE2KC0xLCAweGZmZmYp
KTsKLSAgICBSVU4odGVzdEJpdEFuZFNFeHQxNigweGZmZmYsIDB4ZmZmZikpOwotICAgIFJVTih0
ZXN0Qml0QW5kU0V4dDE2KDB4MTAwMDAsIDB4ZmZmZikpOwotICAgIFJVTih0ZXN0Qml0QW5kU0V4
dDE2KDB4ZmZmZmZmLCAweGZmZmYpKTsKLSAgICBSVU4odGVzdEJpdEFuZFNFeHQxNigweDEwMDAw
MDAsIDB4ZmZmZikpOwotICAgIFJVTih0ZXN0Qml0QW5kU0V4dDE2KDAsIDB4ZmZmZmYpKTsKLSAg
ICBSVU4odGVzdEJpdEFuZFNFeHQxNigxLCAweGZmZmZmKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRT
RXh0MTYoNDIsIDB4ZmZmZmYpKTsKLSAgICBSVU4odGVzdEJpdEFuZFNFeHQxNigtMSwgMHhmZmZm
ZikpOwotICAgIFJVTih0ZXN0Qml0QW5kU0V4dDE2KDB4ZmZmZiwgMHhmZmZmZikpOwotICAgIFJV
Tih0ZXN0Qml0QW5kU0V4dDE2KDB4MTAwMDAsIDB4ZmZmZmYpKTsKLSAgICBSVU4odGVzdEJpdEFu
ZFNFeHQxNigweGZmZmZmZiwgMHhmZmZmZikpOwotICAgIFJVTih0ZXN0Qml0QW5kU0V4dDE2KDB4
MTAwMDAwMCwgMHhmZmZmZikpOwotCi0gICAgUlVOKHRlc3RTRXh0MzJCaXRBbmQoMCwgMCkpOwot
ICAgIFJVTih0ZXN0U0V4dDMyQml0QW5kKDEsIDApKTsKLSAgICBSVU4odGVzdFNFeHQzMkJpdEFu
ZCg0MiwgMCkpOwotICAgIFJVTih0ZXN0U0V4dDMyQml0QW5kKC0xLCAwKSk7Ci0gICAgUlVOKHRl
c3RTRXh0MzJCaXRBbmQoMHg4MDAwMDAwMCwgMCkpOwotICAgIFJVTih0ZXN0U0V4dDMyQml0QW5k
KDAsIDB4ZikpOwotICAgIFJVTih0ZXN0U0V4dDMyQml0QW5kKDEsIDB4ZikpOwotICAgIFJVTih0
ZXN0U0V4dDMyQml0QW5kKDQyLCAweGYpKTsKLSAgICBSVU4odGVzdFNFeHQzMkJpdEFuZCgtMSwg
MHhmKSk7Ci0gICAgUlVOKHRlc3RTRXh0MzJCaXRBbmQoMHg4MDAwMDAwMCwgMHhmKSk7Ci0gICAg
UlVOKHRlc3RTRXh0MzJCaXRBbmQoMCwgMHg4MDAwMDAwMCkpOwotICAgIFJVTih0ZXN0U0V4dDMy
Qml0QW5kKDEsIDB4ODAwMDAwMDApKTsKLSAgICBSVU4odGVzdFNFeHQzMkJpdEFuZCg0MiwgMHg4
MDAwMDAwMCkpOwotICAgIFJVTih0ZXN0U0V4dDMyQml0QW5kKC0xLCAweDgwMDAwMDAwKSk7Ci0g
ICAgUlVOKHRlc3RTRXh0MzJCaXRBbmQoMHg4MDAwMDAwMCwgMHg4MDAwMDAwMCkpOwotICAgIFJV
Tih0ZXN0Qml0QW5kU0V4dDMyKDAsIDB4ZikpOwotICAgIFJVTih0ZXN0Qml0QW5kU0V4dDMyKDEs
IDB4ZikpOwotICAgIFJVTih0ZXN0Qml0QW5kU0V4dDMyKDQyLCAweGYpKTsKLSAgICBSVU4odGVz
dEJpdEFuZFNFeHQzMigtMSwgMHhmKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRTRXh0MzIoMHhmZmZm
LCAweGYpKTsKLSAgICBSVU4odGVzdEJpdEFuZFNFeHQzMigweDEwMDAwLCAweGYpKTsKLSAgICBS
VU4odGVzdEJpdEFuZFNFeHQzMigweGZmZmZmZiwgMHhmKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRT
RXh0MzIoMHgxMDAwMDAwLCAweGYpKTsKLSAgICBSVU4odGVzdEJpdEFuZFNFeHQzMigwLCAweGZm
ZmYwMDAwMDAwMGxsdSkpOwotICAgIFJVTih0ZXN0Qml0QW5kU0V4dDMyKDEsIDB4ZmZmZjAwMDAw
MDAwbGx1KSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRTRXh0MzIoNDIsIDB4ZmZmZjAwMDAwMDAwbGx1
KSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRTRXh0MzIoLTEsIDB4ZmZmZjAwMDAwMDAwbGx1KSk7Ci0g
ICAgUlVOKHRlc3RCaXRBbmRTRXh0MzIoMHg4MDAwMDAwMCwgMHhmZmZmMDAwMDAwMDBsbHUpKTsK
LQotICAgIFJVTih0ZXN0QmFzaWNTZWxlY3QoKSk7Ci0gICAgUlVOKHRlc3RTZWxlY3RUZXN0KCkp
OwotICAgIFJVTih0ZXN0U2VsZWN0Q29tcGFyZURvdWJsZSgpKTsKLSAgICBSVU5fQklOQVJZKHRl
c3RTZWxlY3RDb21wYXJlRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxv
YXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKLSAgICBSVU5fQklOQVJZKHRlc3RTZWxlY3RD
b21wYXJlRmxvYXRUb0RvdWJsZSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9h
dGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTih0ZXN0U2VsZWN0RG91YmxlKCkp
OwotICAgIFJVTih0ZXN0U2VsZWN0RG91YmxlVGVzdCgpKTsKLSAgICBSVU4odGVzdFNlbGVjdERv
dWJsZUNvbXBhcmVEb3VibGUoKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0U2VsZWN0RG91YmxlQ29t
cGFyZUZsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRP
cGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0U2VsZWN0RmxvYXRDb21wYXJl
RmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJh
bmRzPGZsb2F0PigpKTsKLSAgICBSVU4odGVzdFNlbGVjdERvdWJsZUNvbXBhcmVEb3VibGVXaXRo
QWxpYXNpbmcoKSk7Ci0gICAgUlVOKHRlc3RTZWxlY3RGbG9hdENvbXBhcmVGbG9hdFdpdGhBbGlh
c2luZygpKTsKLSAgICBSVU4odGVzdFNlbGVjdEZvbGQoNDIpKTsKLSAgICBSVU4odGVzdFNlbGVj
dEZvbGQoNDMpKTsKLSAgICBSVU4odGVzdFNlbGVjdEludmVydCgpKTsKLSAgICBSVU4odGVzdENo
ZWNrU2VsZWN0KCkpOwotICAgIFJVTih0ZXN0Q2hlY2tTZWxlY3RDaGVja1NlbGVjdCgpKTsKLSAg
ICBSVU4odGVzdENoZWNrU2VsZWN0QW5kQ1NFKCkpOwotICAgIFJVTl9CSU5BUlkodGVzdFBvd0Rv
dWJsZUJ5SW50ZWdlckxvb3AsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCksIGludDY0
T3BlcmFuZHMoKSk7Ci0KLSAgICBSVU4odGVzdFRydW5jT3JIaWdoKCkpOwotICAgIFJVTih0ZXN0
VHJ1bmNPckxvdygpKTsKLSAgICBSVU4odGVzdEJpdEFuZE9ySGlnaCgpKTsKLSAgICBSVU4odGVz
dEJpdEFuZE9yTG93KCkpOwotCi0gICAgUlVOKHRlc3RCcmFuY2g2NEVxdWFsKDAsIDApKTsKLSAg
ICBSVU4odGVzdEJyYW5jaDY0RXF1YWwoMSwgMSkpOwotICAgIFJVTih0ZXN0QnJhbmNoNjRFcXVh
bCgtMSwgLTEpKTsKLSAgICBSVU4odGVzdEJyYW5jaDY0RXF1YWwoMSwgLTEpKTsKLSAgICBSVU4o
dGVzdEJyYW5jaDY0RXF1YWwoLTEsIDEpKTsKLSAgICBSVU4odGVzdEJyYW5jaDY0RXF1YWxJbW0o
MCwgMCkpOwotICAgIFJVTih0ZXN0QnJhbmNoNjRFcXVhbEltbSgxLCAxKSk7Ci0gICAgUlVOKHRl
c3RCcmFuY2g2NEVxdWFsSW1tKC0xLCAtMSkpOwotICAgIFJVTih0ZXN0QnJhbmNoNjRFcXVhbElt
bSgxLCAtMSkpOwotICAgIFJVTih0ZXN0QnJhbmNoNjRFcXVhbEltbSgtMSwgMSkpOwotICAgIFJV
Tih0ZXN0QnJhbmNoNjRFcXVhbE1lbSgwLCAwKSk7Ci0gICAgUlVOKHRlc3RCcmFuY2g2NEVxdWFs
TWVtKDEsIDEpKTsKLSAgICBSVU4odGVzdEJyYW5jaDY0RXF1YWxNZW0oLTEsIC0xKSk7Ci0gICAg
UlVOKHRlc3RCcmFuY2g2NEVxdWFsTWVtKDEsIC0xKSk7Ci0gICAgUlVOKHRlc3RCcmFuY2g2NEVx
dWFsTWVtKC0xLCAxKSk7Ci0gICAgUlVOKHRlc3RCcmFuY2g2NEVxdWFsTWVtSW1tKDAsIDApKTsK
LSAgICBSVU4odGVzdEJyYW5jaDY0RXF1YWxNZW1JbW0oMSwgMSkpOwotICAgIFJVTih0ZXN0QnJh
bmNoNjRFcXVhbE1lbUltbSgtMSwgLTEpKTsKLSAgICBSVU4odGVzdEJyYW5jaDY0RXF1YWxNZW1J
bW0oMSwgLTEpKTsKLSAgICBSVU4odGVzdEJyYW5jaDY0RXF1YWxNZW1JbW0oLTEsIDEpKTsKLQot
ICAgIFJVTih0ZXN0U3RvcmU4TG9hZDhaKDApKTsKLSAgICBSVU4odGVzdFN0b3JlOExvYWQ4Wigx
MjMpKTsKLSAgICBSVU4odGVzdFN0b3JlOExvYWQ4WigxMjM0NSkpOwotICAgIFJVTih0ZXN0U3Rv
cmU4TG9hZDhaKC0xMjMpKTsKLQotICAgIFJVTih0ZXN0U3RvcmUxNkxvYWQxNlooMCkpOwotICAg
IFJVTih0ZXN0U3RvcmUxNkxvYWQxNlooMTIzKSk7Ci0gICAgUlVOKHRlc3RTdG9yZTE2TG9hZDE2
WigxMjM0NSkpOwotICAgIFJVTih0ZXN0U3RvcmUxNkxvYWQxNlooMTIzNDU2NzgpKTsKLSAgICBS
VU4odGVzdFN0b3JlMTZMb2FkMTZaKC0xMjMpKTsKLQotICAgIFJVTih0ZXN0U1NoclNobDMyKDQy
LCAyNCwgMjQpKTsKLSAgICBSVU4odGVzdFNTaHJTaGwzMigtNDIsIDI0LCAyNCkpOwotICAgIFJV
Tih0ZXN0U1NoclNobDMyKDQyMDAsIDI0LCAyNCkpOwotICAgIFJVTih0ZXN0U1NoclNobDMyKC00
MjAwLCAyNCwgMjQpKTsKLSAgICBSVU4odGVzdFNTaHJTaGwzMig0MjAwMDAwLCAyNCwgMjQpKTsK
LSAgICBSVU4odGVzdFNTaHJTaGwzMigtNDIwMDAwMCwgMjQsIDI0KSk7Ci0KLSAgICBSVU4odGVz
dFNTaHJTaGwzMig0MiwgMTYsIDE2KSk7Ci0gICAgUlVOKHRlc3RTU2hyU2hsMzIoLTQyLCAxNiwg
MTYpKTsKLSAgICBSVU4odGVzdFNTaHJTaGwzMig0MjAwLCAxNiwgMTYpKTsKLSAgICBSVU4odGVz
dFNTaHJTaGwzMigtNDIwMCwgMTYsIDE2KSk7Ci0gICAgUlVOKHRlc3RTU2hyU2hsMzIoNDIwMDAw
MCwgMTYsIDE2KSk7Ci0gICAgUlVOKHRlc3RTU2hyU2hsMzIoLTQyMDAwMDAsIDE2LCAxNikpOwot
Ci0gICAgUlVOKHRlc3RTU2hyU2hsMzIoNDIsIDgsIDgpKTsKLSAgICBSVU4odGVzdFNTaHJTaGwz
MigtNDIsIDgsIDgpKTsKLSAgICBSVU4odGVzdFNTaHJTaGwzMig0MjAwLCA4LCA4KSk7Ci0gICAg
UlVOKHRlc3RTU2hyU2hsMzIoLTQyMDAsIDgsIDgpKTsKLSAgICBSVU4odGVzdFNTaHJTaGwzMig0
MjAwMDAwLCA4LCA4KSk7Ci0gICAgUlVOKHRlc3RTU2hyU2hsMzIoLTQyMDAwMDAsIDgsIDgpKTsK
LSAgICBSVU4odGVzdFNTaHJTaGwzMig0MjAwMDAwMDAsIDgsIDgpKTsKLSAgICBSVU4odGVzdFNT
aHJTaGwzMigtNDIwMDAwMDAwLCA4LCA4KSk7Ci0KLSAgICBSVU4odGVzdFNTaHJTaGw2NCg0Miwg
NTYsIDU2KSk7Ci0gICAgUlVOKHRlc3RTU2hyU2hsNjQoLTQyLCA1NiwgNTYpKTsKLSAgICBSVU4o
dGVzdFNTaHJTaGw2NCg0MjAwLCA1NiwgNTYpKTsKLSAgICBSVU4odGVzdFNTaHJTaGw2NCgtNDIw
MCwgNTYsIDU2KSk7Ci0gICAgUlVOKHRlc3RTU2hyU2hsNjQoNDIwMDAwMCwgNTYsIDU2KSk7Ci0g
ICAgUlVOKHRlc3RTU2hyU2hsNjQoLTQyMDAwMDAsIDU2LCA1NikpOwotICAgIFJVTih0ZXN0U1No
clNobDY0KDQyMDAwMDAwMCwgNTYsIDU2KSk7Ci0gICAgUlVOKHRlc3RTU2hyU2hsNjQoLTQyMDAw
MDAwMCwgNTYsIDU2KSk7Ci0gICAgUlVOKHRlc3RTU2hyU2hsNjQoNDIwMDAwMDAwMDAsIDU2LCA1
NikpOwotICAgIFJVTih0ZXN0U1NoclNobDY0KC00MjAwMDAwMDAwMCwgNTYsIDU2KSk7Ci0KLSAg
ICBSVU4odGVzdFNTaHJTaGw2NCg0MiwgNDgsIDQ4KSk7Ci0gICAgUlVOKHRlc3RTU2hyU2hsNjQo
LTQyLCA0OCwgNDgpKTsKLSAgICBSVU4odGVzdFNTaHJTaGw2NCg0MjAwLCA0OCwgNDgpKTsKLSAg
ICBSVU4odGVzdFNTaHJTaGw2NCgtNDIwMCwgNDgsIDQ4KSk7Ci0gICAgUlVOKHRlc3RTU2hyU2hs
NjQoNDIwMDAwMCwgNDgsIDQ4KSk7Ci0gICAgUlVOKHRlc3RTU2hyU2hsNjQoLTQyMDAwMDAsIDQ4
LCA0OCkpOwotICAgIFJVTih0ZXN0U1NoclNobDY0KDQyMDAwMDAwMCwgNDgsIDQ4KSk7Ci0gICAg
UlVOKHRlc3RTU2hyU2hsNjQoLTQyMDAwMDAwMCwgNDgsIDQ4KSk7Ci0gICAgUlVOKHRlc3RTU2hy
U2hsNjQoNDIwMDAwMDAwMDAsIDQ4LCA0OCkpOwotICAgIFJVTih0ZXN0U1NoclNobDY0KC00MjAw
MDAwMDAwMCwgNDgsIDQ4KSk7Ci0KLSAgICBSVU4odGVzdFNTaHJTaGw2NCg0MiwgMzIsIDMyKSk7
Ci0gICAgUlVOKHRlc3RTU2hyU2hsNjQoLTQyLCAzMiwgMzIpKTsKLSAgICBSVU4odGVzdFNTaHJT
aGw2NCg0MjAwLCAzMiwgMzIpKTsKLSAgICBSVU4odGVzdFNTaHJTaGw2NCgtNDIwMCwgMzIsIDMy
KSk7Ci0gICAgUlVOKHRlc3RTU2hyU2hsNjQoNDIwMDAwMCwgMzIsIDMyKSk7Ci0gICAgUlVOKHRl
c3RTU2hyU2hsNjQoLTQyMDAwMDAsIDMyLCAzMikpOwotICAgIFJVTih0ZXN0U1NoclNobDY0KDQy
MDAwMDAwMCwgMzIsIDMyKSk7Ci0gICAgUlVOKHRlc3RTU2hyU2hsNjQoLTQyMDAwMDAwMCwgMzIs
IDMyKSk7Ci0gICAgUlVOKHRlc3RTU2hyU2hsNjQoNDIwMDAwMDAwMDAsIDMyLCAzMikpOwotICAg
IFJVTih0ZXN0U1NoclNobDY0KC00MjAwMDAwMDAwMCwgMzIsIDMyKSk7Ci0KLSAgICBSVU4odGVz
dFNTaHJTaGw2NCg0MiwgMjQsIDI0KSk7Ci0gICAgUlVOKHRlc3RTU2hyU2hsNjQoLTQyLCAyNCwg
MjQpKTsKLSAgICBSVU4odGVzdFNTaHJTaGw2NCg0MjAwLCAyNCwgMjQpKTsKLSAgICBSVU4odGVz
dFNTaHJTaGw2NCgtNDIwMCwgMjQsIDI0KSk7Ci0gICAgUlVOKHRlc3RTU2hyU2hsNjQoNDIwMDAw
MCwgMjQsIDI0KSk7Ci0gICAgUlVOKHRlc3RTU2hyU2hsNjQoLTQyMDAwMDAsIDI0LCAyNCkpOwot
ICAgIFJVTih0ZXN0U1NoclNobDY0KDQyMDAwMDAwMCwgMjQsIDI0KSk7Ci0gICAgUlVOKHRlc3RT
U2hyU2hsNjQoLTQyMDAwMDAwMCwgMjQsIDI0KSk7Ci0gICAgUlVOKHRlc3RTU2hyU2hsNjQoNDIw
MDAwMDAwMDAsIDI0LCAyNCkpOwotICAgIFJVTih0ZXN0U1NoclNobDY0KC00MjAwMDAwMDAwMCwg
MjQsIDI0KSk7Ci0KLSAgICBSVU4odGVzdFNTaHJTaGw2NCg0MiwgMTYsIDE2KSk7Ci0gICAgUlVO
KHRlc3RTU2hyU2hsNjQoLTQyLCAxNiwgMTYpKTsKLSAgICBSVU4odGVzdFNTaHJTaGw2NCg0MjAw
LCAxNiwgMTYpKTsKLSAgICBSVU4odGVzdFNTaHJTaGw2NCgtNDIwMCwgMTYsIDE2KSk7Ci0gICAg
UlVOKHRlc3RTU2hyU2hsNjQoNDIwMDAwMCwgMTYsIDE2KSk7Ci0gICAgUlVOKHRlc3RTU2hyU2hs
NjQoLTQyMDAwMDAsIDE2LCAxNikpOwotICAgIFJVTih0ZXN0U1NoclNobDY0KDQyMDAwMDAwMCwg
MTYsIDE2KSk7Ci0gICAgUlVOKHRlc3RTU2hyU2hsNjQoLTQyMDAwMDAwMCwgMTYsIDE2KSk7Ci0g
ICAgUlVOKHRlc3RTU2hyU2hsNjQoNDIwMDAwMDAwMDAsIDE2LCAxNikpOwotICAgIFJVTih0ZXN0
U1NoclNobDY0KC00MjAwMDAwMDAwMCwgMTYsIDE2KSk7Ci0KLSAgICBSVU4odGVzdFNTaHJTaGw2
NCg0MiwgOCwgOCkpOwotICAgIFJVTih0ZXN0U1NoclNobDY0KC00MiwgOCwgOCkpOwotICAgIFJV
Tih0ZXN0U1NoclNobDY0KDQyMDAsIDgsIDgpKTsKLSAgICBSVU4odGVzdFNTaHJTaGw2NCgtNDIw
MCwgOCwgOCkpOwotICAgIFJVTih0ZXN0U1NoclNobDY0KDQyMDAwMDAsIDgsIDgpKTsKLSAgICBS
VU4odGVzdFNTaHJTaGw2NCgtNDIwMDAwMCwgOCwgOCkpOwotICAgIFJVTih0ZXN0U1NoclNobDY0
KDQyMDAwMDAwMCwgOCwgOCkpOwotICAgIFJVTih0ZXN0U1NoclNobDY0KC00MjAwMDAwMDAsIDgs
IDgpKTsKLSAgICBSVU4odGVzdFNTaHJTaGw2NCg0MjAwMDAwMDAwMCwgOCwgOCkpOwotICAgIFJV
Tih0ZXN0U1NoclNobDY0KC00MjAwMDAwMDAwMCwgOCwgOCkpOwotCi0gICAgUlVOKHRlc3RDaGVj
a011bDY0U1NocigpKTsKLQotICAgIFJVTl9CSU5BUlkodGVzdFJvdFIsIGludDMyT3BlcmFuZHMo
KSwgaW50MzJPcGVyYW5kcygpKTsKLSAgICBSVU5fQklOQVJZKHRlc3RSb3RSLCBpbnQ2NE9wZXJh
bmRzKCksIGludDMyT3BlcmFuZHMoKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0Um90TCwgaW50MzJP
cGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5BUlkodGVzdFJvdEwsIGlu
dDY0T3BlcmFuZHMoKSwgaW50MzJPcGVyYW5kcygpKTsKLQotICAgIFJVTl9CSU5BUlkodGVzdFJv
dFJXaXRoSW1tU2hpZnQsIGludDMyT3BlcmFuZHMoKSwgaW50MzJPcGVyYW5kcygpKTsKLSAgICBS
VU5fQklOQVJZKHRlc3RSb3RSV2l0aEltbVNoaWZ0LCBpbnQ2NE9wZXJhbmRzKCksIGludDMyT3Bl
cmFuZHMoKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0Um90TFdpdGhJbW1TaGlmdCwgaW50MzJPcGVy
YW5kcygpLCBpbnQzMk9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5BUlkodGVzdFJvdExXaXRoSW1t
U2hpZnQsIGludDY0T3BlcmFuZHMoKSwgaW50MzJPcGVyYW5kcygpKTsKLQotICAgIFJVTih0ZXN0
Q29tcHV0ZURpdmlzaW9uTWFnaWM8aW50MzJfdD4oMiwgLTIxNDc0ODM2NDcsIDApKTsKLSAgICBS
VU4odGVzdFRyaXZpYWxJbmZpbml0ZUxvb3AoKSk7Ci0gICAgUlVOKHRlc3RGb2xkUGF0aEVxdWFs
KCkpOwotICAgIAotICAgIFJVTih0ZXN0UlNoaWZ0U2VsZjMyKCkpOwotICAgIFJVTih0ZXN0VVJT
aGlmdFNlbGYzMigpKTsKLSAgICBSVU4odGVzdExTaGlmdFNlbGYzMigpKTsKLSAgICBSVU4odGVz
dFJTaGlmdFNlbGY2NCgpKTsKLSAgICBSVU4odGVzdFVSU2hpZnRTZWxmNjQoKSk7Ci0gICAgUlVO
KHRlc3RMU2hpZnRTZWxmNjQoKSk7Ci0KLSAgICBSVU4odGVzdFBhdGNocG9pbnREb3VibGVSZWdz
KCkpOwotICAgIFJVTih0ZXN0U3BpbGxEZWZTbWFsbGVyVGhhblVzZSgpKTsKLSAgICBSVU4odGVz
dFNwaWxsVXNlTGFyZ2VyVGhhbkRlZigpKTsKLSAgICBSVU4odGVzdExhdGVSZWdpc3RlcigpKTsK
LSAgICBSVU4odGVzdEludGVycHJldGVyKCkpOwotICAgIFJVTih0ZXN0UmVkdWNlU3RyZW5ndGhD
aGVja0JvdHRvbVVzZUluQW5vdGhlckJsb2NrKCkpOwotICAgIFJVTih0ZXN0UmVzZXRSZWFjaGFi
aWxpdHlEYW5nbGluZ1JlZmVyZW5jZSgpKTsKLSAgICAKLSAgICBSVU4odGVzdEVudHJ5U3dpdGNo
U2ltcGxlKCkpOwotICAgIFJVTih0ZXN0RW50cnlTd2l0Y2hOb0VudHJ5U3dpdGNoKCkpOwotICAg
IFJVTih0ZXN0RW50cnlTd2l0Y2hXaXRoQ29tbW9uUGF0aHMoKSk7Ci0gICAgUlVOKHRlc3RFbnRy
eVN3aXRjaFdpdGhDb21tb25QYXRoc0FuZE5vblRyaXZpYWxFbnRyeXBvaW50KCkpOwotICAgIFJV
Tih0ZXN0RW50cnlTd2l0Y2hMb29wKCkpOwotCi0gICAgUlVOKHRlc3RTb21lRWFybHlSZWdpc3Rl
cigpKTsKLSAgICBSVU4odGVzdFBhdGNocG9pbnRUZXJtaW5hbFJldHVyblZhbHVlKHRydWUpKTsK
LSAgICBSVU4odGVzdFBhdGNocG9pbnRUZXJtaW5hbFJldHVyblZhbHVlKGZhbHNlKSk7Ci0gICAg
UlVOKHRlc3RUZXJtaW5hbFBhdGNocG9pbnRUaGF0TmVlZHNUb0JlU3BpbGxlZCgpKTsKLQotICAg
IFJVTih0ZXN0TWVtb3J5RmVuY2UoKSk7Ci0gICAgUlVOKHRlc3RTdG9yZUZlbmNlKCkpOwotICAg
IFJVTih0ZXN0TG9hZEZlbmNlKCkpOwotICAgIFJVTih0ZXN0VHJhcHBpbmdMb2FkKCkpOwotICAg
IFJVTih0ZXN0VHJhcHBpbmdTdG9yZSgpKTsKLSAgICBSVU4odGVzdFRyYXBwaW5nTG9hZEFkZFN0
b3JlKCkpOwotICAgIFJVTih0ZXN0VHJhcHBpbmdMb2FkRENFKCkpOwotICAgIFJVTih0ZXN0VHJh
cHBpbmdTdG9yZUVsaW1pbmF0aW9uKCkpOwotICAgIFJVTih0ZXN0TW92ZUNvbnN0YW50cygpKTsK
LSAgICBSVU4odGVzdFBDT3JpZ2luTWFwRG9lc250SW5zZXJ0Tm9wcygpKTsKLSAgICBSVU4odGVz
dFBpblJlZ2lzdGVycygpKTsKLSAgICBSVU4odGVzdFJlZHVjZVN0cmVuZ3RoUmVhc3NvY2lhdGlv
bih0cnVlKSk7Ci0gICAgUlVOKHRlc3RSZWR1Y2VTdHJlbmd0aFJlYXNzb2NpYXRpb24oZmFsc2Up
KTsKLSAgICBSVU4odGVzdEFkZFNobDMyKCkpOwotICAgIFJVTih0ZXN0QWRkU2hsNjQoKSk7Ci0g
ICAgUlVOKHRlc3RBZGRTaGw2NSgpKTsKLSAgICBSVU4odGVzdExvYWRCYXNlSW5kZXhTaGlmdDIo
KSk7Ci0gICAgUlVOKHRlc3RMb2FkQmFzZUluZGV4U2hpZnQzMigpKTsKLSAgICBSVU4odGVzdE9w
dGltaXplTWF0ZXJpYWxpemF0aW9uKCkpOwotICAgIFJVTih0ZXN0TElDTVB1cmUoKSk7Ci0gICAg
UlVOKHRlc3RMSUNNUHVyZVNpZGVFeGl0cygpKTsKLSAgICBSVU4odGVzdExJQ01QdXJlV3JpdGVz
UGlubmVkKCkpOwotICAgIFJVTih0ZXN0TElDTVB1cmVXcml0ZXMoKSk7Ci0gICAgUlVOKHRlc3RM
SUNNUmVhZHNMb2NhbFN0YXRlKCkpOwotICAgIFJVTih0ZXN0TElDTVJlYWRzUGlubmVkKCkpOwot
ICAgIFJVTih0ZXN0TElDTVJlYWRzKCkpOwotICAgIFJVTih0ZXN0TElDTVB1cmVOb3RCYWNrd2Fy
ZHNEb21pbmFudCgpKTsKLSAgICBSVU4odGVzdExJQ01QdXJlRm9pbGVkQnlDaGlsZCgpKTsKLSAg
ICBSVU4odGVzdExJQ01QdXJlTm90QmFja3dhcmRzRG9taW5hbnRGb2lsZWRCeUNoaWxkKCkpOwot
ICAgIFJVTih0ZXN0TElDTUV4aXRzU2lkZXdheXMoKSk7Ci0gICAgUlVOKHRlc3RMSUNNV3JpdGVz
TG9jYWxTdGF0ZSgpKTsKLSAgICBSVU4odGVzdExJQ01Xcml0ZXMoKSk7Ci0gICAgUlVOKHRlc3RM
SUNNV3JpdGVzUGlubmVkKCkpOwotICAgIFJVTih0ZXN0TElDTUZlbmNlKCkpOwotICAgIFJVTih0
ZXN0TElDTUNvbnRyb2xEZXBlbmRlbnQoKSk7Ci0gICAgUlVOKHRlc3RMSUNNQ29udHJvbERlcGVu
ZGVudE5vdEJhY2t3YXJkc0RvbWluYW50KCkpOwotICAgIFJVTih0ZXN0TElDTUNvbnRyb2xEZXBl
bmRlbnRTaWRlRXhpdHMoKSk7Ci0gICAgUlVOKHRlc3RMSUNNUmVhZHNQaW5uZWRXcml0ZXNQaW5u
ZWQoKSk7Ci0gICAgUlVOKHRlc3RMSUNNUmVhZHNXcml0ZXNEaWZmZXJlbnRIZWFwcygpKTsKLSAg
ICBSVU4odGVzdExJQ01SZWFkc1dyaXRlc092ZXJsYXBwaW5nSGVhcHMoKSk7Ci0gICAgUlVOKHRl
c3RMSUNNRGVmYXVsdENhbGwoKSk7Ci0KLSAgICBSVU4odGVzdEF0b21pY1dlYWtDQVM8aW50OF90
PigpKTsKLSAgICBSVU4odGVzdEF0b21pY1dlYWtDQVM8aW50MTZfdD4oKSk7Ci0gICAgUlVOKHRl
c3RBdG9taWNXZWFrQ0FTPGludDMyX3Q+KCkpOwotICAgIFJVTih0ZXN0QXRvbWljV2Vha0NBUzxp
bnQ2NF90PigpKTsKLSAgICBSVU4odGVzdEF0b21pY1N0cm9uZ0NBUzxpbnQ4X3Q+KCkpOwotICAg
IFJVTih0ZXN0QXRvbWljU3Ryb25nQ0FTPGludDE2X3Q+KCkpOwotICAgIFJVTih0ZXN0QXRvbWlj
U3Ryb25nQ0FTPGludDMyX3Q+KCkpOwotICAgIFJVTih0ZXN0QXRvbWljU3Ryb25nQ0FTPGludDY0
X3Q+KCkpOwotICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ4X3Q+KEF0b21pY1hjaGdBZGQpKTsK
LSAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50MTZfdD4oQXRvbWljWGNoZ0FkZCkpOwotICAgIFJV
Tih0ZXN0QXRvbWljWGNoZzxpbnQzMl90PihBdG9taWNYY2hnQWRkKSk7Ci0gICAgUlVOKHRlc3RB
dG9taWNYY2hnPGludDY0X3Q+KEF0b21pY1hjaGdBZGQpKTsKLSAgICBSVU4odGVzdEF0b21pY1hj
aGc8aW50OF90PihBdG9taWNYY2hnQW5kKSk7Ci0gICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDE2
X3Q+KEF0b21pY1hjaGdBbmQpKTsKLSAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50MzJfdD4oQXRv
bWljWGNoZ0FuZCkpOwotICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ2NF90PihBdG9taWNYY2hn
QW5kKSk7Ci0gICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDhfdD4oQXRvbWljWGNoZ09yKSk7Ci0g
ICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDE2X3Q+KEF0b21pY1hjaGdPcikpOwotICAgIFJVTih0
ZXN0QXRvbWljWGNoZzxpbnQzMl90PihBdG9taWNYY2hnT3IpKTsKLSAgICBSVU4odGVzdEF0b21p
Y1hjaGc8aW50NjRfdD4oQXRvbWljWGNoZ09yKSk7Ci0gICAgUlVOKHRlc3RBdG9taWNYY2hnPGlu
dDhfdD4oQXRvbWljWGNoZ1N1YikpOwotICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQxNl90PihB
dG9taWNYY2hnU3ViKSk7Ci0gICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDMyX3Q+KEF0b21pY1hj
aGdTdWIpKTsKLSAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50NjRfdD4oQXRvbWljWGNoZ1N1Yikp
OwotICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ4X3Q+KEF0b21pY1hjaGdYb3IpKTsKLSAgICBS
VU4odGVzdEF0b21pY1hjaGc8aW50MTZfdD4oQXRvbWljWGNoZ1hvcikpOwotICAgIFJVTih0ZXN0
QXRvbWljWGNoZzxpbnQzMl90PihBdG9taWNYY2hnWG9yKSk7Ci0gICAgUlVOKHRlc3RBdG9taWNY
Y2hnPGludDY0X3Q+KEF0b21pY1hjaGdYb3IpKTsKLSAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50
OF90PihBdG9taWNYY2hnKSk7Ci0gICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDE2X3Q+KEF0b21p
Y1hjaGcpKTsKLSAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50MzJfdD4oQXRvbWljWGNoZykpOwot
ICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ2NF90PihBdG9taWNYY2hnKSk7Ci0gICAgUlVOKHRl
c3REZXBlbmQzMigpKTsKLSAgICBSVU4odGVzdERlcGVuZDY0KCkpOwotCi0gICAgUlVOKHRlc3RX
YXNtQm91bmRzQ2hlY2soMCkpOwotICAgIFJVTih0ZXN0V2FzbUJvdW5kc0NoZWNrKDEwMCkpOwot
ICAgIFJVTih0ZXN0V2FzbUJvdW5kc0NoZWNrKDEwMDAwKSk7Ci0gICAgUlVOKHRlc3RXYXNtQm91
bmRzQ2hlY2soc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIC0gNSkpOwotCi0g
ICAgUlVOKHRlc3RXYXNtQWRkcmVzcygpKTsKLSAgICAKLSAgICBSVU4odGVzdEZhc3RUTFNMb2Fk
KCkpOwotICAgIFJVTih0ZXN0RmFzdFRMU1N0b3JlKCkpOwotCi0gICAgUlVOKHRlc3REb3VibGVM
aXRlcmFsQ29tcGFyaXNvbihiaXR3aXNlX2Nhc3Q8ZG91YmxlPigweDgwMDAwMDAwMDAwMDAwMDF1
bGwpLCBiaXR3aXNlX2Nhc3Q8ZG91YmxlPigweDAwMDAwMDAwMDAwMDAwMDB1bGwpKSk7Ci0gICAg
UlVOKHRlc3REb3VibGVMaXRlcmFsQ29tcGFyaXNvbihiaXR3aXNlX2Nhc3Q8ZG91YmxlPigweDAw
MDAwMDAwMDAwMDAwMDB1bGwpLCBiaXR3aXNlX2Nhc3Q8ZG91YmxlPigweDgwMDAwMDAwMDAwMDAw
MDF1bGwpKSk7Ci0gICAgUlVOKHRlc3REb3VibGVMaXRlcmFsQ29tcGFyaXNvbigxMjUuMzE0NDQ0
Njk0ODI0MSwgMTI1LjMxNDQ0NDY5NDgyNDIpKTsKLSAgICBSVU4odGVzdERvdWJsZUxpdGVyYWxD
b21wYXJpc29uKDEyNS4zMTQ0NDQ2OTQ4MjQyLCAxMjUuMzE0NDQ0Njk0ODI0MSkpOwotCi0gICAg
UlVOKHRlc3RGbG9hdEVxdWFsT3JVbm9yZGVyZWRGb2xkaW5nKCkpOwotICAgIFJVTih0ZXN0Rmxv
YXRFcXVhbE9yVW5vcmRlcmVkRm9sZGluZ05hTigpKTsKLSAgICBSVU4odGVzdEZsb2F0RXF1YWxP
clVub3JkZXJlZERvbnRGb2xkKCkpOwotICAgIAotICAgIFJVTih0ZXN0U2h1ZmZsZURvZXNudFRy
YXNoQ2FsbGVlU2F2ZXMoKSk7Ci0gICAgUlVOKHRlc3REZW1vdGVQYXRjaHBvaW50VGVybWluYWwo
KSk7Ci0KLSAgICBSVU4odGVzdExvb3BXaXRoTXVsdGlwbGVIZWFkZXJFZGdlcygpKTsKLQotICAg
IFJVTih0ZXN0SW5maW5pdGVMb29wRG9lc250Q2F1c2VCYWRIb2lzdGluZygpKTsKLQotICAgIGlm
IChpc1g4NigpKSB7Ci0gICAgICAgIFJVTih0ZXN0QnJhbmNoQml0QW5kSW1tRnVzaW9uKElkZW50
aXR5LCBJbnQ2NCwgMSwgQWlyOjpCcmFuY2hUZXN0MzIsIEFpcjo6QXJnOjpUbXApKTsKLSAgICAg
ICAgUlVOKHRlc3RCcmFuY2hCaXRBbmRJbW1GdXNpb24oSWRlbnRpdHksIEludDY0LCAweGZmLCBB
aXI6OkJyYW5jaFRlc3QzMiwgQWlyOjpBcmc6OlRtcCkpOwotICAgICAgICBSVU4odGVzdEJyYW5j
aEJpdEFuZEltbUZ1c2lvbihUcnVuYywgSW50MzIsIDEsIEFpcjo6QnJhbmNoVGVzdDMyLCBBaXI6
OkFyZzo6VG1wKSk7Ci0gICAgICAgIFJVTih0ZXN0QnJhbmNoQml0QW5kSW1tRnVzaW9uKFRydW5j
LCBJbnQzMiwgMHhmZiwgQWlyOjpCcmFuY2hUZXN0MzIsIEFpcjo6QXJnOjpUbXApKTsKLSAgICAg
ICAgUlVOKHRlc3RCcmFuY2hCaXRBbmRJbW1GdXNpb24oTG9hZDhTLCBJbnQzMiwgMSwgQWlyOjpC
cmFuY2hUZXN0OCwgQWlyOjpBcmc6OkFkZHIpKTsKLSAgICAgICAgUlVOKHRlc3RCcmFuY2hCaXRB
bmRJbW1GdXNpb24oTG9hZDhaLCBJbnQzMiwgMSwgQWlyOjpCcmFuY2hUZXN0OCwgQWlyOjpBcmc6
OkFkZHIpKTsKLSAgICAgICAgUlVOKHRlc3RCcmFuY2hCaXRBbmRJbW1GdXNpb24oTG9hZCwgSW50
MzIsIDEsIEFpcjo6QnJhbmNoVGVzdDMyLCBBaXI6OkFyZzo6QWRkcikpOwotICAgICAgICBSVU4o
dGVzdEJyYW5jaEJpdEFuZEltbUZ1c2lvbihMb2FkLCBJbnQ2NCwgMSwgQWlyOjpCcmFuY2hUZXN0
MzIsIEFpcjo6QXJnOjpBZGRyKSk7Ci0gICAgICAgIFJVTih0ZXN0WDg2TGVhQWRkQWRkU2hsTGVm
dCgpKTsKLSAgICAgICAgUlVOKHRlc3RYODZMZWFBZGRBZGRTaGxSaWdodCgpKTsKLSAgICAgICAg
UlVOKHRlc3RYODZMZWFBZGRBZGQoKSk7Ci0gICAgICAgIFJVTih0ZXN0WDg2TGVhQWRkU2hsUmln
aHQoKSk7Ci0gICAgICAgIFJVTih0ZXN0WDg2TGVhQWRkU2hsTGVmdFNjYWxlMSgpKTsKLSAgICAg
ICAgUlVOKHRlc3RYODZMZWFBZGRTaGxMZWZ0U2NhbGUyKCkpOwotICAgICAgICBSVU4odGVzdFg4
NkxlYUFkZFNobExlZnRTY2FsZTQoKSk7Ci0gICAgICAgIFJVTih0ZXN0WDg2TGVhQWRkU2hsTGVm
dFNjYWxlOCgpKTsKLSAgICB9Ci0KLSAgICBpZiAoaXNBUk02NCgpKSB7Ci0gICAgICAgIFJVTih0
ZXN0VGVybmFyeVN1Ykluc3RydWN0aW9uU2VsZWN0aW9uKElkZW50aXR5LCBJbnQ2NCwgQWlyOjpT
dWI2NCkpOwotICAgICAgICBSVU4odGVzdFRlcm5hcnlTdWJJbnN0cnVjdGlvblNlbGVjdGlvbihU
cnVuYywgSW50MzIsIEFpcjo6U3ViMzIpKTsKLSAgICB9Ci0KLSAgICBSVU4odGVzdFJlcG9ydFVz
ZWRSZWdpc3RlcnNMYXRlVXNlRm9sbG93ZWRCeUVhcmx5RGVmRG9lc05vdE1hcmtVc2VBc0RlYWQo
KSk7Ci0KLSAgICBpZiAodGFza3MuaXNFbXB0eSgpKQotICAgICAgICB1c2FnZSgpOwotCi0gICAg
TG9jayBsb2NrOwotCi0gICAgVmVjdG9yPFJlZjxUaHJlYWQ+PiB0aHJlYWRzOwotICAgIGZvciAo
dW5zaWduZWQgaSA9IGZpbHRlciA/IDEgOiBXVEY6Om51bWJlck9mUHJvY2Vzc29yQ29yZXMoKTsg
aS0tOykgewotICAgICAgICB0aHJlYWRzLmFwcGVuZCgKLSAgICAgICAgICAgIFRocmVhZDo6Y3Jl
YXRlKAotICAgICAgICAgICAgICAgICJ0ZXN0YjMgdGhyZWFkIiwKLSAgICAgICAgICAgICAgICBb
Jl0gKCkgewotICAgICAgICAgICAgICAgICAgICBmb3IgKDs7KSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBSZWZQdHI8U2hhcmVkVGFzazx2b2lkKCk+PiB0YXNrOwotICAgICAgICAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2Vy
KGxvY2spOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXNrcy5pc0VtcHR5KCkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0YXNrID0gdGFza3MudGFrZUZpcnN0KCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIHRhc2stPnJ1bigpOwotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSkpOwotICAgIH0KLQotICAgIGZvciAo
YXV0byYgdGhyZWFkIDogdGhyZWFkcykKLSAgICAgICAgdGhyZWFkLT53YWl0Rm9yQ29tcGxldGlv
bigpOwotICAgIGNyYXNoTG9jay5sb2NrKCk7Ci0gICAgY3Jhc2hMb2NrLnVubG9jaygpOwotfQot
Ci19IC8vIGFub255bW91cyBuYW1lc3BhY2UKLQotI2Vsc2UgLy8gRU5BQkxFKEIzX0pJVCkKLQot
c3RhdGljIHZvaWQgcnVuKGNvbnN0IGNoYXIqKQotewotICAgIGRhdGFMb2coIkIzIEpJVCBpcyBu
b3QgZW5hYmxlZC5cbiIpOwotfQotCi0jZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKLQotaW50IG1h
aW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQotewotICAgIGNvbnN0IGNoYXIqIGZpbHRlciA9IG51
bGxwdHI7Ci0gICAgc3dpdGNoIChhcmdjKSB7Ci0gICAgY2FzZSAxOgotICAgICAgICBicmVhazsK
LSAgICBjYXNlIDI6Ci0gICAgICAgIGZpbHRlciA9IGFyZ3ZbMV07Ci0gICAgICAgIGJyZWFrOwot
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIHVzYWdlKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQot
ICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwotICAgIAotICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPD0gMjsgKytpKSB7Ci0gICAgICAgIEpTQzo6T3B0aW9uczo6ZGVmYXVsdEIzT3B0
TGV2ZWwoKSA9IGk7Ci0gICAgICAgIHJ1bihmaWx0ZXIpOwotICAgIH0KLQotICAgIHJldHVybiAw
OwotfQotCi0jaWYgT1MoV0lORE9XUykKLWV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxleHBvcnQp
IGludCBXSU5BUEkgZGxsTGF1bmNoZXJFbnRyeVBvaW50KGludCBhcmdjLCBjb25zdCBjaGFyKiBh
cmd2W10pCi17Ci0gICAgcmV0dXJuIG1haW4oYXJnYywgY29uc3RfY2FzdDxjaGFyKio+KGFyZ3Yp
KTsKLX0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3Ri
My5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmMDE0
YmI4NzFmZDM3MzY0NDkzNDkwODc5NjNiM2FiZjUyYjY0NGUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKQEAgLTAsMCArMSwxMDczIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIkFpckNv
ZGUuaCIKKyNpbmNsdWRlICJBaXJJbnN0SW5saW5lcy5oIgorI2luY2x1ZGUgIkFpclZhbGlkYXRl
LmgiCisjaW5jbHVkZSAiQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmgiCisjaW5jbHVk
ZSAiQjNBcmd1bWVudFJlZ1ZhbHVlLmgiCisjaW5jbHVkZSAiQjNBdG9taWNWYWx1ZS5oIgorI2lu
Y2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKKyNpbmNsdWRlICJCM0JyZWFrQ3JpdGljYWxF
ZGdlcy5oIgorI2luY2x1ZGUgIkIzQ0NhbGxWYWx1ZS5oIgorI2luY2x1ZGUgIkIzQ29tcGlsYXRp
b24uaCIKKyNpbmNsdWRlICJCM0NvbXBpbGUuaCIKKyNpbmNsdWRlICJCM0NvbXB1dGVEaXZpc2lv
bk1hZ2ljLmgiCisjaW5jbHVkZSAiQjNDb25zdDMyVmFsdWUuaCIKKyNpbmNsdWRlICJCM0NvbnN0
NjRWYWx1ZS5oIgorI2luY2x1ZGUgIkIzQ29uc3RQdHJWYWx1ZS5oIgorI2luY2x1ZGUgIkIzRWZm
ZWN0cy5oIgorI2luY2x1ZGUgIkIzRmVuY2VWYWx1ZS5oIgorI2luY2x1ZGUgIkIzRml4U1NBLmgi
CisjaW5jbHVkZSAiQjNHZW5lcmF0ZS5oIgorI2luY2x1ZGUgIkIzTG93ZXJUb0Fpci5oIgorI2lu
Y2x1ZGUgIkIzTWF0aEV4dHJhcy5oIgorI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIKKyNpbmNs
dWRlICJCM01vdmVDb25zdGFudHMuaCIKKyNpbmNsdWRlICJCM05hdGl2ZVRyYWl0cy5oIgorI2lu
Y2x1ZGUgIkIzUHJvY2VkdXJlLmgiCisjaW5jbHVkZSAiQjNSZWR1Y2VTdHJlbmd0aC5oIgorI2lu
Y2x1ZGUgIkIzU2xvdEJhc2VWYWx1ZS5oIgorI2luY2x1ZGUgIkIzU3RhY2tTbG90LmgiCisjaW5j
bHVkZSAiQjNTdGFja21hcEdlbmVyYXRpb25QYXJhbXMuaCIKKyNpbmNsdWRlICJCM1N3aXRjaFZh
bHVlLmgiCisjaW5jbHVkZSAiQjNVcHNpbG9uVmFsdWUuaCIKKyNpbmNsdWRlICJCM1VzZUNvdW50
cy5oIgorI2luY2x1ZGUgIkIzVmFsaWRhdGUuaCIKKyNpbmNsdWRlICJCM1ZhbHVlSW5saW5lcy5o
IgorI2luY2x1ZGUgIkIzVmFyaWFibGVWYWx1ZS5oIgorI2luY2x1ZGUgIkIzV2FzbUFkZHJlc3NW
YWx1ZS5oIgorI2luY2x1ZGUgIkIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCIKKyNpbmNsdWRlICJD
Q2FsbEhlbHBlcnMuaCIKKyNpbmNsdWRlICJGUFJJbmZvLmgiCisjaW5jbHVkZSAiR1BSSW5mby5o
IgorI2luY2x1ZGUgIkluaXRpYWxpemVUaHJlYWRpbmcuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCisjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgorI2luY2x1ZGUgIlB1cmVOYU4uaCIKKyNpbmNs
dWRlIDxjbWF0aD4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8d3RmL0Zhc3RUTFMuaD4K
KyNpbmNsdWRlIDx3dGYvSW5kZXhTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTGlzdER1bXAuaD4KKyNp
bmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9OdW1iZXJPZkNvcmVzLmg+CisjaW5j
bHVkZSA8d3RmL1N0ZExpc3QuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQ29tbW9uLmg+CisKKy8vIFdlIGRvbid0IGhhdmUgYSBOT19SRVRV
Uk5fRFVFX1RPX0VYSVQsIG5vciBzaG91bGQgd2UuIFRoYXQncyByaWRpY3Vsb3VzLgoraW5saW5l
IGJvb2wgaGlkZGVuVHJ1dGhCZWNhdXNlTm9SZXR1cm5Jc1N0dXBpZCgpIHsgcmV0dXJuIHRydWU7
IH0KKworaW5saW5lIHZvaWQgdXNhZ2UoKQoreworICAgIGRhdGFMb2coIlVzYWdlOiB0ZXN0YjMg
WzxmaWx0ZXI+XVxuIik7CisgICAgaWYgKGhpZGRlblRydXRoQmVjYXVzZU5vUmV0dXJuSXNTdHVw
aWQoKSkKKyAgICAgICAgZXhpdCgxKTsKK30KKworI2lmIEVOQUJMRShCM19KSVQpCisKK3VzaW5n
IG5hbWVzcGFjZSBKU0M7Cit1c2luZyBuYW1lc3BhY2UgSlNDOjpCMzsKKworaW5saW5lIGJvb2wg
c2hvdWxkQmVWZXJib3NlKCkKK3sKKyAgICByZXR1cm4gc2hvdWxkRHVtcElSKEIzTW9kZSk7Cit9
CisKK2V4dGVybiBMb2NrIGNyYXNoTG9jazsKKworLy8gTm90aGluZyBmYW5jeSBmb3Igbm93OyB3
ZSBqdXN0IHVzZSB0aGUgZXhpc3RpbmcgV1RGIGFzc2VydGlvbiBtYWNoaW5lcnkuCisjZGVmaW5l
IENIRUNLKHgpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgaWYgKCEhKHgpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgYnJlYWs7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNyYXNoTG9jay5sb2Nr
KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
V1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZShfX0ZJTEVfXywgX19MSU5FX18sIFdURl9QUkVUVFlf
RlVOQ1RJT04sICN4KTsgXAorICAgIENSQVNIKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9IHdoaWxlIChmYWxzZSkKKyAgICAKKyNk
ZWZpbmUgQ0hFQ0tfRVEoeCwgeSkgZG8geyBcCisgICAgYXV0byBfX3ggPSAoeCk7IFwKKyAgICBh
dXRvIF9feSA9ICh5KTsgXAorICAgIGlmIChfX3ggPT0gX195KSBcCisgICAgICAgIGJyZWFrOyBc
CisgICAgY3Jhc2hMb2NrLmxvY2soKTsgXAorICAgIFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUo
X19GSUxFX18sIF9fTElORV9fLCBXVEZfUFJFVFRZX0ZVTkNUSU9OLCB0b0NTdHJpbmcoI3ggIiA9
PSAiICN5LCAiICgiICN4ICIgPT0gIiwgX194LCAiLCAiICN5ICIgPT0gIiwgX195LCAiKSIpLmRh
dGEoKSk7IFwKKyAgICBDUkFTSCgpOyBcCit9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBQUkVG
SVggIk8iLCBPcHRpb25zOjpkZWZhdWx0QjNPcHRMZXZlbCgpLCAiOiAiCisKKyNkZWZpbmUgUlVO
KHRlc3QpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIXNob3Vs
ZFJ1bihmaWx0ZXIsICN0ZXN0KSkgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgYnJlYWs7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB0YXNrcy5hcHBlbmQoICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgY3JlYXRlU2hhcmVkVGFz
azx2b2lkKCk+KCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIFsmXSAoKSB7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBkYXRhTG9nKFBSRUZJ
WCAjdGVzdCAiLi4uXG4iKTsgICAgIFwKKyAgICAgICAgICAgICAgICB0ZXN0OyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBkYXRhTG9nKFBSRUZJWCAjdGVz
dCAiOiBPSyFcbiIpOyAgIFwKKyAgICAgICAgICAgIH0pKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSk7CisKKyNkZWZpbmUgUlVOX1VOQVJZ
KHRlc3QsIHZhbHVlcykgXAorICAgIGZvciAoYXV0byBhIDogdmFsdWVzKSB7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIENTdHJpbmcgdGVzdFN0ciA9IHRvQ1N0cmluZyhQ
UkVGSVggI3Rlc3QsICIoIiwgYS5uYW1lLCAiKSIpOyBcCisgICAgICAgIGlmICghc2hvdWxkUnVu
KGZpbHRlciwgdGVzdFN0ci5kYXRhKCkpKSAgICAgICAgIFwKKyAgICAgICAgICAgIGNvbnRpbnVl
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB0YXNrcy5hcHBl
bmQoY3JlYXRlU2hhcmVkVGFzazx2b2lkKCk+KCAgICAgICAgICBcCisgICAgICAgICAgICBbPV0g
KCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAg
ICBkYXRhTG9nKHRvQ1N0cmluZyh0ZXN0U3RyLCAiLi4uXG4iKSk7ICAgXAorICAgICAgICAgICAg
ICAgIHRlc3QoYS52YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg
ICAgICAgZGF0YUxvZyh0b0NTdHJpbmcodGVzdFN0ciwgIjogT0shXG4iKSk7IFwKKyAgICAgICAg
ICAgIH0pKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0K
KworI2RlZmluZSBSVU5fTk9XKHRlc3QpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICBpZiAoIXNob3VsZFJ1bihmaWx0ZXIsICN0ZXN0KSkgICAgICAgICAgXAorICAgICAgICAg
ICAgYnJlYWs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBkYXRhTG9n
KFBSRUZJWCAjdGVzdCAiLi4uXG4iKTsgICAgICAgICAgXAorICAgICAgICB0ZXN0OyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBkYXRhTG9nKFBSRUZJWCAjdGVz
dCAiOiBPSyFcbiIpOyAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIFJV
Tl9CSU5BUlkodGVzdCwgdmFsdWVzQSwgdmFsdWVzQikgXAorICAgIGZvciAoYXV0byBhIDogdmFs
dWVzQSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBmb3IgKGF1
dG8gYiA6IHZhbHVlc0IpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAg
ICAgQ1N0cmluZyB0ZXN0U3RyID0gdG9DU3RyaW5nKFBSRUZJWCAjdGVzdCwgIigiLCBhLm5hbWUs
ICIsICIsIGIubmFtZSwgIikiKTsgXAorICAgICAgICAgICAgaWYgKCFzaG91bGRSdW4oZmlsdGVy
LCB0ZXN0U3RyLmRhdGEoKSkpICAgICAgICAgXAorICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgdGFza3MuYXBw
ZW5kKGNyZWF0ZVNoYXJlZFRhc2s8dm9pZCgpPiggICAgICAgICAgXAorICAgICAgICAgICAgICAg
IFs9XSAoKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nKHRvQ1N0cmluZyh0ZXN0U3RyLCAiLi4uXG4iKSk7ICAgXAorICAg
ICAgICAgICAgICAgICAgICB0ZXN0KGEudmFsdWUsIGIudmFsdWUpOyAgICAgICAgICAgICAgICAg
XAorICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKHRvQ1N0cmluZyh0ZXN0U3RyLCAiOiBPSyFc
biIpKTsgXAorICAgICAgICAgICAgICAgIH0pKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIH0KKyNkZWZpbmUgUlVOX1RFUk5BUlkodGVzdCwgdmFs
dWVzQSwgdmFsdWVzQiwgdmFsdWVzQykgXAorICAgIGZvciAoYXV0byBhIDogdmFsdWVzQSkgeyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZm9yIChhdXRvIGIg
OiB2YWx1ZXNCKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg
ICBmb3IgKGF1dG8gYyA6IHZhbHVlc0MpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICAgICAgICAgIENTdHJpbmcgdGVzdFN0ciA9IHRvQ1N0cmluZygjdGVzdCwgIigiLCBh
Lm5hbWUsICIsICIsIGIubmFtZSwgIiwiLCBjLm5hbWUsICIpIik7IFwKKyAgICAgICAgICAgICAg
ICBpZiAoIXNob3VsZFJ1bihmaWx0ZXIsIHRlc3RTdHIuZGF0YSgpKSkgICAgICAgICBcCisgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICAgICAgICAgIHRhc2tzLmFwcGVuZChjcmVhdGVTaGFyZWRUYXNrPHZvaWQo
KT4oICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgWz1dICgpIHsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
KHRvQ1N0cmluZyh0ZXN0U3RyLCAiLi4uXG4iKSk7ICAgXAorICAgICAgICAgICAgICAgICAgICAg
ICAgdGVzdChhLnZhbHVlLCBiLnZhbHVlLCBjLnZhbHVlKTsgICAgICAgIFwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGFMb2codG9DU3RyaW5nKHRlc3RTdHIsICI6IE9LIVxuIikpOyBcCisg
ICAgICAgICAgICAgICAgICAgIH0pKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCisKK2lubGluZSBzdGQ6OnVuaXF1
ZV9wdHI8Q29tcGlsYXRpb24+IGNvbXBpbGVQcm9jKFByb2NlZHVyZSYgcHJvY2VkdXJlLCB1bnNp
Z25lZCBvcHRMZXZlbCA9IE9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkpCit7CisgICAgcHJv
Y2VkdXJlLnNldE9wdExldmVsKG9wdExldmVsKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxDb21waWxhdGlvbj4oQjM6OmNvbXBpbGUocHJvY2VkdXJlKSk7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KK1QgaW52b2tlKE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjxCM0NvbXBpbGF0aW9uUHRyVGFnPiBwdHIsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMp
Cit7CisgICAgdm9pZCogZXhlY3V0YWJsZUFkZHJlc3MgPSB1bnRhZ0NGdW5jdGlvblB0cjxCM0Nv
bXBpbGF0aW9uUHRyVGFnPihwdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgVCAoKmZ1bmN0
aW9uKShBcmd1bWVudHMuLi4pID0gYml0d2lzZV9jYXN0PFQoKikoQXJndW1lbnRzLi4uKT4oZXhl
Y3V0YWJsZUFkZHJlc3MpOworICAgIHJldHVybiBmdW5jdGlvbihhcmd1bWVudHMuLi4pOworfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CitUIGludm9rZShj
b25zdCBDb21waWxhdGlvbiYgY29kZSwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKK3sKKyAgICBy
ZXR1cm4gaW52b2tlPFQ+KGNvZGUuY29kZSgpLCBhcmd1bWVudHMuLi4pOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CitUIGNvbXBpbGVBbmRSdW4oUHJv
Y2VkdXJlJiBwcm9jZWR1cmUsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCit7CisgICAgcmV0dXJu
IGludm9rZTxUPigqY29tcGlsZVByb2MocHJvY2VkdXJlKSwgYXJndW1lbnRzLi4uKTsKK30KKwor
aW5saW5lIHZvaWQgbG93ZXJUb0FpckZvclRlc3RpbmcoUHJvY2VkdXJlJiBwcm9jKQoreworICAg
IHByb2MucmVzZXRSZWFjaGFiaWxpdHkoKTsKKyAgICAKKyAgICBpZiAoc2hvdWxkQmVWZXJib3Nl
KCkpCisgICAgICAgIGRhdGFMb2coIkIzIGJlZm9yZSBsb3dlcmluZzpcbiIsIHByb2MpOworICAg
IAorICAgIHZhbGlkYXRlKHByb2MpOworICAgIGxvd2VyVG9BaXIocHJvYyk7CisgICAgCisgICAg
aWYgKHNob3VsZEJlVmVyYm9zZSgpKQorICAgICAgICBkYXRhTG9nKCJBaXIgYWZ0ZXIgbG93ZXJp
bmc6XG4iLCBwcm9jLmNvZGUoKSk7CisgICAgCisgICAgQWlyOjp2YWxpZGF0ZShwcm9jLmNvZGUo
KSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Cit2b2lkIGNoZWNrRGlzYXNzZW1ibHko
Q29tcGlsYXRpb24mIGNvbXBpbGF0aW9uLCBjb25zdCBGdW5jJiBmdW5jLCBjb25zdCBDU3RyaW5n
JiBmYWlsVGV4dCkKK3sKKyAgICBDU3RyaW5nIGRpc2Fzc2VtYmx5ID0gY29tcGlsYXRpb24uZGlz
YXNzZW1ibHkoKTsKKyAgICBpZiAoZnVuYyhkaXNhc3NlbWJseS5kYXRhKCkpKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgY3Jhc2hMb2NrLmxvY2soKTsKKyAgICBkYXRhTG9nKCJCYWQgbG93
ZXJpbmchICAiLCBmYWlsVGV4dCwgIlxuIik7CisgICAgZGF0YUxvZyhkaXNhc3NlbWJseSk7Cisg
ICAgQ1JBU0goKTsKK30KKworaW5saW5lIHZvaWQgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oQ29tcGls
YXRpb24mIGNvbXBpbGF0aW9uLCBjb25zdCBjaGFyKiB0ZXh0KQoreworICAgIGNoZWNrRGlzYXNz
ZW1ibHkoCisgICAgICAgIGNvbXBpbGF0aW9uLAorICAgICAgICBbJl0gKGNvbnN0IGNoYXIqIGRp
c2Fzc2VtYmx5KSAtPiBib29sIHsKKyAgICAgICAgICAgIHJldHVybiBzdHJzdHIoZGlzYXNzZW1i
bHksIHRleHQpOworICAgICAgICB9LAorICAgICAgICB0b0NTdHJpbmcoIkV4cGVjdGVkIHRvIGZp
bmQgIiwgdGV4dCwgIiBidXQgZGlkbnQhIikpOworfQorCitpbmxpbmUgdm9pZCBjaGVja0RvZXNO
b3RVc2VJbnN0cnVjdGlvbihDb21waWxhdGlvbiYgY29tcGlsYXRpb24sIGNvbnN0IGNoYXIqIHRl
eHQpCit7CisgICAgY2hlY2tEaXNhc3NlbWJseSgKKyAgICAgICAgY29tcGlsYXRpb24sCisgICAg
ICAgIFsmXSAoY29uc3QgY2hhciogZGlzYXNzZW1ibHkpIC0+IGJvb2wgeworICAgICAgICAgICAg
cmV0dXJuICFzdHJzdHIoZGlzYXNzZW1ibHksIHRleHQpOworICAgICAgICB9LAorICAgICAgICB0
b0NTdHJpbmcoIkRpZCBub3QgZXhwZWN0ZWQgdG8gZmluZCAiLCB0ZXh0LCAiIGJ1dCBpdCdzIHRo
ZXJlISIpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KK3N0cnVjdCBPcGVyYW5kIHsK
KyAgICBjb25zdCBjaGFyKiBuYW1lOworICAgIFR5cGUgdmFsdWU7Cit9OworCit0eXBlZGVmIE9w
ZXJhbmQ8aW50NjRfdD4gSW50NjRPcGVyYW5kOwordHlwZWRlZiBPcGVyYW5kPGludDMyX3Q+IElu
dDMyT3BlcmFuZDsKKwordGVtcGxhdGU8dHlwZW5hbWUgRmxvYXRUeXBlPgordm9pZCBwb3B1bGF0
ZVdpdGhJbnRlcmVzdGluZ1ZhbHVlcyhWZWN0b3I8T3BlcmFuZDxGbG9hdFR5cGU+PiYgb3BlcmFu
ZHMpCit7CisgICAgb3BlcmFuZHMuYXBwZW5kKHsgIjAuIiwgc3RhdGljX2Nhc3Q8RmxvYXRUeXBl
PigwLikgfSk7CisgICAgb3BlcmFuZHMuYXBwZW5kKHsgIi0wLiIsIHN0YXRpY19jYXN0PEZsb2F0
VHlwZT4oLTAuKSB9KTsKKyAgICBvcGVyYW5kcy5hcHBlbmQoeyAiMC40Iiwgc3RhdGljX2Nhc3Q8
RmxvYXRUeXBlPigwLjUpIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICItMC40Iiwgc3RhdGlj
X2Nhc3Q8RmxvYXRUeXBlPigtMC41KSB9KTsKKyAgICBvcGVyYW5kcy5hcHBlbmQoeyAiMC41Iiwg
c3RhdGljX2Nhc3Q8RmxvYXRUeXBlPigwLjUpIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICIt
MC41Iiwgc3RhdGljX2Nhc3Q8RmxvYXRUeXBlPigtMC41KSB9KTsKKyAgICBvcGVyYW5kcy5hcHBl
bmQoeyAiMC42Iiwgc3RhdGljX2Nhc3Q8RmxvYXRUeXBlPigwLjUpIH0pOworICAgIG9wZXJhbmRz
LmFwcGVuZCh7ICItMC42Iiwgc3RhdGljX2Nhc3Q8RmxvYXRUeXBlPigtMC41KSB9KTsKKyAgICBv
cGVyYW5kcy5hcHBlbmQoeyAiMS4iLCBzdGF0aWNfY2FzdDxGbG9hdFR5cGU+KDEuKSB9KTsKKyAg
ICBvcGVyYW5kcy5hcHBlbmQoeyAiLTEuIiwgc3RhdGljX2Nhc3Q8RmxvYXRUeXBlPigtMS4pIH0p
OworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICIyLiIsIHN0YXRpY19jYXN0PEZsb2F0VHlwZT4oMi4p
IH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICItMi4iLCBzdGF0aWNfY2FzdDxGbG9hdFR5cGU+
KC0yLikgfSk7CisgICAgb3BlcmFuZHMuYXBwZW5kKHsgIk1fUEkiLCBzdGF0aWNfY2FzdDxGbG9h
dFR5cGU+KE1fUEkpIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICItTV9QSSIsIHN0YXRpY19j
YXN0PEZsb2F0VHlwZT4oLU1fUEkpIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICJtaW4iLCBz
dGQ6Om51bWVyaWNfbGltaXRzPEZsb2F0VHlwZT46Om1pbigpIH0pOworICAgIG9wZXJhbmRzLmFw
cGVuZCh7ICJtYXgiLCBzdGQ6Om51bWVyaWNfbGltaXRzPEZsb2F0VHlwZT46Om1heCgpIH0pOwor
ICAgIG9wZXJhbmRzLmFwcGVuZCh7ICJsb3dlc3QiLCBzdGQ6Om51bWVyaWNfbGltaXRzPEZsb2F0
VHlwZT46Omxvd2VzdCgpIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICJlcHNpbG9uIiwgc3Rk
OjpudW1lcmljX2xpbWl0czxGbG9hdFR5cGU+OjplcHNpbG9uKCkgfSk7CisgICAgb3BlcmFuZHMu
YXBwZW5kKHsgImluZmluaXRpIiwgc3RkOjpudW1lcmljX2xpbWl0czxGbG9hdFR5cGU+OjppbmZp
bml0eSgpIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICItaW5maW5pdGkiLCAtIHN0ZDo6bnVt
ZXJpY19saW1pdHM8RmxvYXRUeXBlPjo6aW5maW5pdHkoKSB9KTsKKyAgICBvcGVyYW5kcy5hcHBl
bmQoeyAiUE5hTiIsIHN0YXRpY19jYXN0PEZsb2F0VHlwZT4oUE5hTikgfSk7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIEZsb2F0VHlwZT4KK1ZlY3RvcjxPcGVyYW5kPEZsb2F0VHlwZT4+IGZsb2F0
aW5nUG9pbnRPcGVyYW5kcygpCit7CisgICAgVmVjdG9yPE9wZXJhbmQ8RmxvYXRUeXBlPj4gb3Bl
cmFuZHM7CisgICAgcG9wdWxhdGVXaXRoSW50ZXJlc3RpbmdWYWx1ZXMob3BlcmFuZHMpOworICAg
IHJldHVybiBvcGVyYW5kczsKK307CisKK2lubGluZSBWZWN0b3I8SW50NjRPcGVyYW5kPiBpbnQ2
NE9wZXJhbmRzKCkKK3sKKyAgICBWZWN0b3I8SW50NjRPcGVyYW5kPiBvcGVyYW5kczsKKyAgICBv
cGVyYW5kcy5hcHBlbmQoeyAiMCIsIDAgfSk7CisgICAgb3BlcmFuZHMuYXBwZW5kKHsgIjEiLCAx
IH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICItMSIsIC0xIH0pOworICAgIG9wZXJhbmRzLmFw
cGVuZCh7ICI0MiIsIDQyIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICItNDIiLCAtNDIgfSk7
CisgICAgb3BlcmFuZHMuYXBwZW5kKHsgImludDY0LW1heCIsIHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50NjRfdD46Om1heCgpIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICJpbnQ2NC1taW4iLCBz
dGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSB9KTsKKyAgICBvcGVyYW5kcy5hcHBl
bmQoeyAiaW50MzItbWF4Iiwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkgfSk7
CisgICAgb3BlcmFuZHMuYXBwZW5kKHsgImludDMyLW1pbiIsIHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50MzJfdD46Om1pbigpIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICJ1aW50NjQtbWF4Iiwg
c3RhdGljX2Nhc3Q8aW50NjRfdD4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgp
KSB9KTsKKyAgICBvcGVyYW5kcy5hcHBlbmQoeyAidWludDY0LW1pbiIsIHN0YXRpY19jYXN0PGlu
dDY0X3Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptaW4oKSkgfSk7CisgICAgb3Bl
cmFuZHMuYXBwZW5kKHsgInVpbnQzMi1tYXgiLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihzdGQ6Om51
bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7
ICJ1aW50MzItbWluIiwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oc3RkOjpudW1lcmljX2xpbWl0czx1
aW50MzJfdD46Om1pbigpKSB9KTsKKyAgICAKKyAgICByZXR1cm4gb3BlcmFuZHM7Cit9CisKK2lu
bGluZSBWZWN0b3I8SW50MzJPcGVyYW5kPiBpbnQzMk9wZXJhbmRzKCkKK3sKKyAgICBWZWN0b3I8
SW50MzJPcGVyYW5kPiBvcGVyYW5kcyh7CisgICAgICAgIHsgIjAiLCAwIH0sCisgICAgICAgIHsg
IjEiLCAxIH0sCisgICAgICAgIHsgIi0xIiwgLTEgfSwKKyAgICAgICAgeyAiNDIiLCA0MiB9LAor
ICAgICAgICB7ICItNDIiLCAtNDIgfSwKKyAgICAgICAgeyAiaW50MzItbWF4Iiwgc3RkOjpudW1l
cmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkgfSwKKyAgICAgICAgeyAiaW50MzItbWluIiwgc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkgfSwKKyAgICAgICAgeyAidWludDMyLW1h
eCIsIHN0YXRpY19jYXN0PGludDMyX3Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+Ojpt
YXgoKSkgfSwKKyAgICAgICAgeyAidWludDMyLW1pbiIsIHN0YXRpY19jYXN0PGludDMyX3Q+KHN0
ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptaW4oKSkgfQorICAgIH0pOworICAgIHJldHVy
biBvcGVyYW5kczsKK30KKworaW5saW5lIHZvaWQgYWRkMzIoQ0NhbGxIZWxwZXJzJiBqaXQsIEdQ
UlJlZyBzcmMxLCBHUFJSZWcgc3JjMiwgR1BSUmVnIGRlc3QpCit7CisgICAgaWYgKHNyYzIgPT0g
ZGVzdCkKKyAgICAgICAgaml0LmFkZDMyKHNyYzEsIGRlc3QpOworICAgIGVsc2UgeworICAgICAg
ICBqaXQubW92ZShzcmMxLCBkZXN0KTsKKyAgICAgICAgaml0LmFkZDMyKHNyYzIsIGRlc3QpOwor
ICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUgTG9hZGVkVHlwZSwgdHlwZW5hbWUgRWZmZWN0
aXZlVHlwZT4KK0VmZmVjdGl2ZVR5cGUgbW9kZWxMb2FkKEVmZmVjdGl2ZVR5cGUgdmFsdWUpOwor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBMb2FkZWRUeXBlLCB0eXBlbmFtZSBFZmZlY3RpdmVUeXBlPgor
RWZmZWN0aXZlVHlwZSBtb2RlbExvYWQoRWZmZWN0aXZlVHlwZSB2YWx1ZSkKK3sKKyAgICB1bmlv
biB7CisgICAgICAgIEVmZmVjdGl2ZVR5cGUgb3JpZ2luYWw7CisgICAgICAgIExvYWRlZFR5cGUg
bG9hZGVkOworICAgIH0gdTsKKyAgICAKKyAgICB1Lm9yaWdpbmFsID0gdmFsdWU7CisgICAgaWYg
KHN0ZDo6aXNfc2lnbmVkPExvYWRlZFR5cGU+Ojp2YWx1ZSkKKyAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEVmZmVjdGl2ZVR5cGU+KHUubG9hZGVkKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
RWZmZWN0aXZlVHlwZT4oc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjptYWtlX3Vuc2lnbmVkPEVm
ZmVjdGl2ZVR5cGU+Ojp0eXBlPih1LmxvYWRlZCkpOworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUg
ZmxvYXQgbW9kZWxMb2FkPGZsb2F0LCBmbG9hdD4oZmxvYXQgdmFsdWUpIHsgcmV0dXJuIHZhbHVl
OyB9CisKK3RlbXBsYXRlPD4KK2lubGluZSBkb3VibGUgbW9kZWxMb2FkPGRvdWJsZSwgZG91Ymxl
Pihkb3VibGUgdmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9CisKK3ZvaWQgcnVuKGNvbnN0IGNoYXIq
IGZpbHRlcik7Cit2b2lkIHRlc3RCaXRBbmRTRXh0MzIoaW50MzJfdCB2YWx1ZSwgaW50NjRfdCBt
YXNrKTsKK3ZvaWQgdGVzdEJhc2ljU2VsZWN0KCk7Cit2b2lkIHRlc3RTZWxlY3RUZXN0KCk7Cit2
b2lkIHRlc3RTZWxlY3RDb21wYXJlRG91YmxlKCk7Cit2b2lkIHRlc3RTZWxlY3RDb21wYXJlRmxv
YXQoZmxvYXQsIGZsb2F0KTsKK3ZvaWQgdGVzdFNlbGVjdENvbXBhcmVGbG9hdFRvRG91YmxlKGZs
b2F0LCBmbG9hdCk7Cit2b2lkIHRlc3RTZWxlY3REb3VibGUoKTsKK3ZvaWQgdGVzdFNlbGVjdERv
dWJsZVRlc3QoKTsKK3ZvaWQgdGVzdFNlbGVjdERvdWJsZUNvbXBhcmVEb3VibGUoKTsKK3ZvaWQg
dGVzdFNlbGVjdERvdWJsZUNvbXBhcmVGbG9hdChmbG9hdCwgZmxvYXQpOwordm9pZCB0ZXN0U2Vs
ZWN0RmxvYXRDb21wYXJlRmxvYXQoZmxvYXQsIGZsb2F0KTsKK3ZvaWQgdGVzdFNlbGVjdERvdWJs
ZUNvbXBhcmVEb3VibGVXaXRoQWxpYXNpbmcoKTsKK3ZvaWQgdGVzdFNlbGVjdEZsb2F0Q29tcGFy
ZUZsb2F0V2l0aEFsaWFzaW5nKCk7Cit2b2lkIHRlc3RTZWxlY3RGb2xkKGludHB0cl90IHZhbHVl
KTsKK3ZvaWQgdGVzdFNlbGVjdEludmVydCgpOwordm9pZCB0ZXN0Q2hlY2tTZWxlY3QoKTsKK3Zv
aWQgdGVzdENoZWNrU2VsZWN0Q2hlY2tTZWxlY3QoKTsKK3ZvaWQgdGVzdENoZWNrU2VsZWN0QW5k
Q1NFKCk7Cit2b2lkIHRlc3RQb3dEb3VibGVCeUludGVnZXJMb29wKGRvdWJsZSB4T3BlcmFuZCwg
aW50MzJfdCB5T3BlcmFuZCk7Citkb3VibGUgYjNQb3coZG91YmxlIHgsIGludCB5KTsKK3ZvaWQg
dGVzdFRydW5jT3JIaWdoKCk7Cit2b2lkIHRlc3RUcnVuY09yTG93KCk7Cit2b2lkIHRlc3RCaXRB
bmRPckhpZ2goKTsKK3ZvaWQgdGVzdEJpdEFuZE9yTG93KCk7Cit2b2lkIHRlc3RCcmFuY2g2NEVx
dWFsKGludDY0X3QgbGVmdCwgaW50NjRfdCByaWdodCk7Cit2b2lkIHRlc3RCcmFuY2g2NEVxdWFs
SW1tKGludDY0X3QgbGVmdCwgaW50NjRfdCByaWdodCk7Cit2b2lkIHRlc3RCcmFuY2g2NEVxdWFs
TWVtKGludDY0X3QgbGVmdCwgaW50NjRfdCByaWdodCk7Cit2b2lkIHRlc3RCcmFuY2g2NEVxdWFs
TWVtSW1tKGludDY0X3QgbGVmdCwgaW50NjRfdCByaWdodCk7Cit2b2lkIHRlc3RTdG9yZThMb2Fk
OFooaW50MzJfdCB2YWx1ZSk7Cit2b2lkIHRlc3RTdG9yZTE2TG9hZDE2WihpbnQzMl90IHZhbHVl
KTsKK3ZvaWQgdGVzdFNTaHJTaGwzMihpbnQzMl90IHZhbHVlLCBpbnQzMl90IHNzaHJBbW91bnQs
IGludDMyX3Qgc2hsQW1vdW50KTsKK3ZvaWQgdGVzdFNTaHJTaGw2NChpbnQ2NF90IHZhbHVlLCBp
bnQzMl90IHNzaHJBbW91bnQsIGludDMyX3Qgc2hsQW1vdW50KTsKK3ZvaWQgdGVzdFRyaXZpYWxJ
bmZpbml0ZUxvb3AoKTsKK3ZvaWQgdGVzdEZvbGRQYXRoRXF1YWwoKTsKK3ZvaWQgdGVzdExTaGlm
dFNlbGYzMigpOwordm9pZCB0ZXN0UlNoaWZ0U2VsZjMyKCk7Cit2b2lkIHRlc3RVUlNoaWZ0U2Vs
ZjMyKCk7Cit2b2lkIHRlc3RMU2hpZnRTZWxmNjQoKTsKK3ZvaWQgdGVzdFJTaGlmdFNlbGY2NCgp
Owordm9pZCB0ZXN0VVJTaGlmdFNlbGY2NCgpOwordm9pZCB0ZXN0UGF0Y2hwb2ludERvdWJsZVJl
Z3MoKTsKK3ZvaWQgdGVzdFNwaWxsRGVmU21hbGxlclRoYW5Vc2UoKTsKK3ZvaWQgdGVzdFNwaWxs
VXNlTGFyZ2VyVGhhbkRlZigpOwordm9pZCB0ZXN0TGF0ZVJlZ2lzdGVyKCk7Cit2b2lkIGludGVy
cHJldGVyUHJpbnQoVmVjdG9yPGludHB0cl90Piogc3RyZWFtLCBpbnRwdHJfdCB2YWx1ZSk7Cit2
b2lkIHRlc3RJbnRlcnByZXRlcigpOwordm9pZCB0ZXN0UmVkdWNlU3RyZW5ndGhDaGVja0JvdHRv
bVVzZUluQW5vdGhlckJsb2NrKCk7Cit2b2lkIHRlc3RSZXNldFJlYWNoYWJpbGl0eURhbmdsaW5n
UmVmZXJlbmNlKCk7Cit2b2lkIHRlc3RFbnRyeVN3aXRjaFNpbXBsZSgpOwordm9pZCB0ZXN0RW50
cnlTd2l0Y2hOb0VudHJ5U3dpdGNoKCk7Cit2b2lkIHRlc3RFbnRyeVN3aXRjaFdpdGhDb21tb25Q
YXRocygpOwordm9pZCB0ZXN0RW50cnlTd2l0Y2hXaXRoQ29tbW9uUGF0aHNBbmROb25Ucml2aWFs
RW50cnlwb2ludCgpOwordm9pZCB0ZXN0RW50cnlTd2l0Y2hMb29wKCk7Cit2b2lkIHRlc3RTb21l
RWFybHlSZWdpc3RlcigpOwordm9pZCB0ZXN0QnJhbmNoQml0QW5kSW1tRnVzaW9uKEIzOjpPcGNv
ZGUgdmFsdWVNb2RpZmllciwgVHlwZSB2YWx1ZVR5cGUsIGludDY0X3QgY29uc3RhbnQsIEFpcjo6
T3Bjb2RlIGV4cGVjdGVkT3Bjb2RlLCBBaXI6OkFyZzo6S2luZCBmaXJzdEtpbmQpOwordm9pZCB0
ZXN0VGVybWluYWxQYXRjaHBvaW50VGhhdE5lZWRzVG9CZVNwaWxsZWQoKTsKK3ZvaWQgdGVzdFRl
cm1pbmFsUGF0Y2hwb2ludFRoYXROZWVkc1RvQmVTcGlsbGVkMigpOwordm9pZCB0ZXN0UGF0Y2hw
b2ludFRlcm1pbmFsUmV0dXJuVmFsdWUoYm9vbCBzdWNjZXNzSXNSYXJlKTsKK3ZvaWQgdGVzdE1l
bW9yeUZlbmNlKCk7Cit2b2lkIHRlc3RTdG9yZUZlbmNlKCk7Cit2b2lkIHRlc3RMb2FkRmVuY2Uo
KTsKK3ZvaWQgdGVzdFRyYXBwaW5nTG9hZCgpOwordm9pZCB0ZXN0VHJhcHBpbmdTdG9yZSgpOwor
dm9pZCB0ZXN0VHJhcHBpbmdMb2FkQWRkU3RvcmUoKTsKK3ZvaWQgdGVzdFRyYXBwaW5nTG9hZERD
RSgpOwordm9pZCB0ZXN0VHJhcHBpbmdTdG9yZUVsaW1pbmF0aW9uKCk7Cit2b2lkIHRlc3RNb3Zl
Q29uc3RhbnRzKCk7Cit2b2lkIHRlc3RQQ09yaWdpbk1hcERvZXNudEluc2VydE5vcHMoKTsKK3Zv
aWQgdGVzdEJpdE9yQml0T3JBcmdJbW1JbW0zMihpbnQsIGludCwgaW50IGMpOwordm9pZCB0ZXN0
Qml0T3JJbW1CaXRPckFyZ0ltbTMyKGludCwgaW50LCBpbnQgYyk7Citkb3VibGUgYml0T3JEb3Vi
bGUoZG91YmxlLCBkb3VibGUpOwordm9pZCB0ZXN0Qml0T3JBcmdEb3VibGUoZG91YmxlKTsKK3Zv
aWQgdGVzdEJpdE9yQXJnc0RvdWJsZShkb3VibGUsIGRvdWJsZSk7Cit2b2lkIHRlc3RCaXRPckFy
Z0ltbURvdWJsZShkb3VibGUsIGRvdWJsZSk7Cit2b2lkIHRlc3RCaXRPckltbXNEb3VibGUoZG91
YmxlLCBkb3VibGUpOworZmxvYXQgYml0T3JGbG9hdChmbG9hdCwgZmxvYXQpOwordm9pZCB0ZXN0
Qml0T3JBcmdGbG9hdChmbG9hdCk7Cit2b2lkIHRlc3RCaXRPckFyZ3NGbG9hdChmbG9hdCwgZmxv
YXQpOwordm9pZCB0ZXN0Qml0T3JBcmdJbW1GbG9hdChmbG9hdCwgZmxvYXQpOwordm9pZCB0ZXN0
Qml0T3JJbW1zRmxvYXQoZmxvYXQsIGZsb2F0KTsKK3ZvaWQgdGVzdEJpdE9yQXJnc0Zsb2F0V2l0
aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uKGZsb2F0LCBmbG9hdCk7Cit2b2lkIHRlc3RCaXRYb3JB
cmdzKGludDY0X3QsIGludDY0X3QpOwordm9pZCB0ZXN0Qml0WG9yU2FtZUFyZyhpbnQ2NF90KTsK
K3ZvaWQgdGVzdEJpdFhvckFuZEFuZEFyZ3MoaW50NjRfdCwgaW50NjRfdCwgaW50NjRfdCBjKTsK
K3ZvaWQgdGVzdEJpdFhvckFuZFNhbWVBcmdzKGludDY0X3QsIGludDY0X3QpOwordm9pZCB0ZXN0
Qml0WG9ySW1tcyhpbnQ2NF90LCBpbnQ2NF90KTsKK3ZvaWQgdGVzdEJpdFhvckFyZ0ltbShpbnQ2
NF90LCBpbnQ2NF90KTsKK3ZvaWQgdGVzdEJpdFhvckltbUFyZyhpbnQ2NF90LCBpbnQ2NF90KTsK
K3ZvaWQgdGVzdEJpdFhvckJpdFhvckFyZ0ltbUltbShpbnQ2NF90LCBpbnQ2NF90LCBpbnQ2NF90
IGMpOwordm9pZCB0ZXN0Qml0WG9ySW1tQml0WG9yQXJnSW1tKGludDY0X3QsIGludDY0X3QsIGlu
dDY0X3QgYyk7Cit2b2lkIHRlc3RCaXRYb3JBcmdzMzIoaW50LCBpbnQpOwordm9pZCB0ZXN0Qml0
WG9yU2FtZUFyZzMyKGludCk7Cit2b2lkIHRlc3RCaXRYb3JJbW1zMzIoaW50LCBpbnQpOwordm9p
ZCB0ZXN0Qml0WG9yQXJnSW1tMzIoaW50LCBpbnQpOwordm9pZCB0ZXN0Qml0WG9ySW1tQXJnMzIo
aW50LCBpbnQpOwordm9pZCB0ZXN0Qml0WG9yQml0WG9yQXJnSW1tSW1tMzIoaW50LCBpbnQsIGlu
dCBjKTsKK3ZvaWQgdGVzdEJpdFhvckltbUJpdFhvckFyZ0ltbTMyKGludCwgaW50LCBpbnQgYyk7
Cit2b2lkIHRlc3RCaXROb3RBcmcoaW50NjRfdCk7Cit2b2lkIHRlc3RCaXROb3RJbW0oaW50NjRf
dCk7Cit2b2lkIHRlc3RCaXROb3RNZW0oaW50NjRfdCk7Cit2b2lkIHRlc3RCaXROb3RBcmczMihp
bnQzMl90KTsKK3ZvaWQgdGVzdEJpdE5vdEltbTMyKGludDMyX3QpOwordm9pZCB0ZXN0Qml0Tm90
TWVtMzIoaW50MzJfdCk7Cit2b2lkIHRlc3ROb3RPbkJvb2xlYW5BbmRCcmFuY2gzMihpbnQ2NF90
LCBpbnQ2NF90KTsKK3ZvaWQgdGVzdEJpdE5vdE9uQm9vbGVhbkFuZEJyYW5jaDMyKGludDY0X3Qs
IGludDY0X3QpOwordm9pZCB0ZXN0U2hsQXJncyhpbnQ2NF90LCBpbnQ2NF90KTsKK3ZvaWQgdGVz
dFNobEltbXMoaW50NjRfdCwgaW50NjRfdCk7Cit2b2lkIHRlc3RTaGxBcmdJbW0oaW50NjRfdCwg
aW50NjRfdCk7Cit2b2lkIHRlc3RTaGxTU2hyQXJnSW1tKGludDY0X3QsIGludDY0X3QpOwordm9p
ZCB0ZXN0U2hsQXJnMzIoaW50MzJfdCk7Cit2b2lkIHRlc3RTaGxBcmdzMzIoaW50MzJfdCwgaW50
MzJfdCk7Cit2b2lkIHRlc3RTaGxJbW1zMzIoaW50MzJfdCwgaW50MzJfdCk7Cit2b2lkIHRlc3RT
aGxBcmdJbW0zMihpbnQzMl90LCBpbnQzMl90KTsKK3ZvaWQgdGVzdFNobFpTaHJBcmdJbW0zMihp
bnQzMl90LCBpbnQzMl90KTsKK3ZvaWQgdGVzdFNTaHJBcmdzKGludDY0X3QsIGludDY0X3QpOwor
dm9pZCB0ZXN0U1NockltbXMoaW50NjRfdCwgaW50NjRfdCk7Cit2b2lkIHRlc3RTU2hyQXJnSW1t
KGludDY0X3QsIGludDY0X3QpOwordm9pZCB0ZXN0U1NockFyZzMyKGludDMyX3QpOwordm9pZCB0
ZXN0U1NockFyZ3MzMihpbnQzMl90LCBpbnQzMl90KTsKK3ZvaWQgdGVzdFNTaHJJbW1zMzIoaW50
MzJfdCwgaW50MzJfdCk7Cit2b2lkIHRlc3RTU2hyQXJnSW1tMzIoaW50MzJfdCwgaW50MzJfdCk7
Cit2b2lkIHRlc3RaU2hyQXJncyh1aW50NjRfdCwgdWludDY0X3QpOwordm9pZCB0ZXN0WlNocklt
bXModWludDY0X3QsIHVpbnQ2NF90KTsKK3ZvaWQgdGVzdFpTaHJBcmdJbW0odWludDY0X3QsIHVp
bnQ2NF90KTsKK3ZvaWQgdGVzdFpTaHJBcmczMih1aW50MzJfdCk7Cit2b2lkIHRlc3RaU2hyQXJn
czMyKHVpbnQzMl90LCB1aW50MzJfdCk7Cit2b2lkIHRlc3RaU2hySW1tczMyKHVpbnQzMl90LCB1
aW50MzJfdCk7Cit2b2lkIHRlc3RaU2hyQXJnSW1tMzIodWludDMyX3QsIHVpbnQzMl90KTsKK3Zv
aWQgdGVzdENsekFyZzY0KGludDY0X3QpOwordm9pZCB0ZXN0Q2x6TWVtNjQoaW50NjRfdCk7Cit2
b2lkIHRlc3RDbHpBcmczMihpbnQzMl90KTsKK3ZvaWQgdGVzdENsek1lbTMyKGludDMyX3QpOwor
dm9pZCB0ZXN0QWJzQXJnKGRvdWJsZSk7Cit2b2lkIHRlc3RBYnNJbW0oZG91YmxlKTsKK3ZvaWQg
dGVzdEFic01lbShkb3VibGUpOwordm9pZCB0ZXN0QWJzQWJzQXJnKGRvdWJsZSk7Cit2b2lkIHRl
c3RBYnNOZWdBcmcoZG91YmxlKTsKK3ZvaWQgdGVzdEFic0JpdHdpc2VDYXN0QXJnKGRvdWJsZSk7
Cit2b2lkIHRlc3RCaXR3aXNlQ2FzdEFic0JpdHdpc2VDYXN0QXJnKGRvdWJsZSk7Cit2b2lkIHRl
c3RBYnNBcmcoZmxvYXQpOwordm9pZCB0ZXN0QWJzSW1tKGZsb2F0KTsKK3ZvaWQgdGVzdEFic01l
bShmbG9hdCk7Cit2b2lkIHRlc3RBYnNBYnNBcmcoZmxvYXQpOwordm9pZCB0ZXN0QWJzTmVnQXJn
KGZsb2F0KTsKK3ZvaWQgdGVzdEFic0JpdHdpc2VDYXN0QXJnKGZsb2F0KTsKK3ZvaWQgdGVzdEJp
dHdpc2VDYXN0QWJzQml0d2lzZUNhc3RBcmcoZmxvYXQpOwordm9pZCB0ZXN0QWJzQXJnV2l0aFVz
ZWxlc3NEb3VibGVDb252ZXJzaW9uKGZsb2F0KTsKK3ZvaWQgdGVzdEFic0FyZ1dpdGhFZmZlY3Rm
dWxEb3VibGVDb252ZXJzaW9uKGZsb2F0KTsKK3ZvaWQgdGVzdENlaWxBcmcoZG91YmxlKTsKK3Zv
aWQgdGVzdENlaWxJbW0oZG91YmxlKTsKK3ZvaWQgdGVzdENlaWxNZW0oZG91YmxlKTsKK3ZvaWQg
dGVzdENlaWxDZWlsQXJnKGRvdWJsZSk7Cit2b2lkIHRlc3RGbG9vckNlaWxBcmcoZG91YmxlKTsK
K3ZvaWQgdGVzdENlaWxJVG9ENjQoaW50NjRfdCk7Cit2b2lkIHRlc3RDZWlsSVRvRDMyKGludDY0
X3QpOwordm9pZCB0ZXN0Q2VpbEFyZyhmbG9hdCk7Cit2b2lkIHRlc3RDZWlsSW1tKGZsb2F0KTsK
K3ZvaWQgdGVzdENlaWxNZW0oZmxvYXQpOwordm9pZCB0ZXN0Q2VpbENlaWxBcmcoZmxvYXQpOwor
dm9pZCB0ZXN0Rmxvb3JDZWlsQXJnKGZsb2F0KTsKK3ZvaWQgdGVzdENlaWxBcmdXaXRoVXNlbGVz
c0RvdWJsZUNvbnZlcnNpb24oZmxvYXQpOwordm9pZCB0ZXN0Q2VpbEFyZ1dpdGhFZmZlY3RmdWxE
b3VibGVDb252ZXJzaW9uKGZsb2F0KTsKK3ZvaWQgdGVzdEZsb29yQXJnKGRvdWJsZSk7Cit2b2lk
IHRlc3RGbG9vckltbShkb3VibGUpOwordm9pZCB0ZXN0Rmxvb3JNZW0oZG91YmxlKTsKK3ZvaWQg
dGVzdEZsb29yRmxvb3JBcmcoZG91YmxlKTsKK3ZvaWQgdGVzdENlaWxGbG9vckFyZyhkb3VibGUp
Owordm9pZCB0ZXN0Rmxvb3JJVG9ENjQoaW50NjRfdCk7Cit2b2lkIHRlc3RGbG9vcklUb0QzMihp
bnQ2NF90KTsKK3ZvaWQgdGVzdEZsb29yQXJnKGZsb2F0KTsKK3ZvaWQgdGVzdEZsb29ySW1tKGZs
b2F0KTsKK3ZvaWQgdGVzdEZsb29yTWVtKGZsb2F0KTsKK3ZvaWQgdGVzdEZsb29yRmxvb3JBcmco
ZmxvYXQpOwordm9pZCB0ZXN0Q2VpbEZsb29yQXJnKGZsb2F0KTsKK3ZvaWQgdGVzdEZsb29yQXJn
V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uKGZsb2F0KTsKK3ZvaWQgdGVzdEZsb29yQXJnV2l0
aEVmZmVjdGZ1bERvdWJsZUNvbnZlcnNpb24oZmxvYXQpOworZG91YmxlIGNvcnJlY3RTcXJ0KGRv
dWJsZSB2YWx1ZSk7Cit2b2lkIHRlc3RTcXJ0QXJnKGRvdWJsZSk7Cit2b2lkIHRlc3RTcXJ0SW1t
KGRvdWJsZSk7Cit2b2lkIHRlc3RTcXJ0TWVtKGRvdWJsZSk7Cit2b2lkIHRlc3RTcXJ0QXJnKGZs
b2F0KTsKK3ZvaWQgdGVzdFNxcnRJbW0oZmxvYXQpOwordm9pZCB0ZXN0U3FydE1lbShmbG9hdCk7
Cit2b2lkIHRlc3RTcXJ0QXJnV2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uKGZsb2F0KTsKK3Zv
aWQgdGVzdFNxcnRBcmdXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lvbihmbG9hdCk7Cit2b2lk
IHRlc3RDb21wYXJlVHdvRmxvYXRUb0RvdWJsZShmbG9hdCwgZmxvYXQpOwordm9pZCB0ZXN0Q29t
cGFyZU9uZUZsb2F0VG9Eb3VibGUoZmxvYXQsIGRvdWJsZSk7Cit2b2lkIHRlc3RDb21wYXJlRmxv
YXRUb0RvdWJsZVRocm91Z2hQaGkoZmxvYXQsIGZsb2F0KTsKK3ZvaWQgdGVzdERvdWJsZVRvRmxv
YXRUaHJvdWdoUGhpKGZsb2F0IHZhbHVlKTsKK3ZvaWQgdGVzdFJlZHVjZUZsb2F0VG9Eb3VibGVW
YWxpZGF0ZXMoKTsKK3ZvaWQgdGVzdERvdWJsZVByb2R1Y2VyUGhpVG9GbG9hdENvbnZlcnNpb24o
ZmxvYXQgdmFsdWUpOwordm9pZCB0ZXN0RG91YmxlUHJvZHVjZXJQaGlUb0Zsb2F0Q29udmVyc2lv
bldpdGhEb3VibGVDb25zdW1lcihmbG9hdCB2YWx1ZSk7Cit2b2lkIHRlc3REb3VibGVQcm9kdWNl
clBoaVdpdGhOb25GbG9hdENvbnN0KGZsb2F0IHZhbHVlLCBkb3VibGUgY29uc3RWYWx1ZSk7Cit2
b2lkIHRlc3REb3VibGVBcmdUb0ludDY0Qml0d2lzZUNhc3QoZG91YmxlIHZhbHVlKTsKK3ZvaWQg
dGVzdERvdWJsZUltbVRvSW50NjRCaXR3aXNlQ2FzdChkb3VibGUgdmFsdWUpOwordm9pZCB0ZXN0
VHdvQml0d2lzZUNhc3RPbkRvdWJsZShkb3VibGUgdmFsdWUpOwordm9pZCB0ZXN0Qml0d2lzZUNh
c3RPbkRvdWJsZUluTWVtb3J5KGRvdWJsZSB2YWx1ZSk7Cit2b2lkIHRlc3RCaXR3aXNlQ2FzdE9u
RG91YmxlSW5NZW1vcnlJbmRleGVkKGRvdWJsZSB2YWx1ZSk7Cit2b2lkIHRlc3RJbnQ2NEJBcmdU
b0RvdWJsZUJpdHdpc2VDYXN0KGludDY0X3QgdmFsdWUpOwordm9pZCB0ZXN0SW50NjRCSW1tVG9E
b3VibGVCaXR3aXNlQ2FzdChpbnQ2NF90IHZhbHVlKTsKK3ZvaWQgdGVzdFR3b0JpdHdpc2VDYXN0
T25JbnQ2NChpbnQ2NF90IHZhbHVlKTsKK3ZvaWQgdGVzdEJpdHdpc2VDYXN0T25JbnQ2NEluTWVt
b3J5KGludDY0X3QgdmFsdWUpOwordm9pZCB0ZXN0Qml0d2lzZUNhc3RPbkludDY0SW5NZW1vcnlJ
bmRleGVkKGludDY0X3QgdmFsdWUpOwordm9pZCB0ZXN0RmxvYXRJbW1Ub0ludDMyQml0d2lzZUNh
c3QoZmxvYXQgdmFsdWUpOwordm9pZCB0ZXN0Qml0d2lzZUNhc3RPbkZsb2F0SW5NZW1vcnkoZmxv
YXQgdmFsdWUpOwordm9pZCB0ZXN0SW50MzJCQXJnVG9GbG9hdEJpdHdpc2VDYXN0KGludDMyX3Qg
dmFsdWUpOwordm9pZCB0ZXN0SW50MzJCSW1tVG9GbG9hdEJpdHdpc2VDYXN0KGludDMyX3QgdmFs
dWUpOwordm9pZCB0ZXN0VHdvQml0d2lzZUNhc3RPbkludDMyKGludDMyX3QgdmFsdWUpOwordm9p
ZCB0ZXN0Qml0d2lzZUNhc3RPbkludDMySW5NZW1vcnkoaW50MzJfdCB2YWx1ZSk7Cit2b2lkIHRl
c3RDb252ZXJ0RG91YmxlVG9GbG9hdEFyZyhkb3VibGUgdmFsdWUpOwordm9pZCB0ZXN0Q29udmVy
dERvdWJsZVRvRmxvYXRJbW0oZG91YmxlIHZhbHVlKTsKK3ZvaWQgdGVzdENvbnZlcnREb3VibGVU
b0Zsb2F0TWVtKGRvdWJsZSB2YWx1ZSk7Cit2b2lkIHRlc3RDb252ZXJ0RmxvYXRUb0RvdWJsZUFy
ZyhmbG9hdCB2YWx1ZSk7Cit2b2lkIHRlc3RDb252ZXJ0RmxvYXRUb0RvdWJsZUltbShmbG9hdCB2
YWx1ZSk7Cit2b2lkIHRlc3RDb252ZXJ0RmxvYXRUb0RvdWJsZU1lbShmbG9hdCB2YWx1ZSk7Cit2
b2lkIHRlc3RDb252ZXJ0RG91YmxlVG9GbG9hdFRvRG91YmxlVG9GbG9hdChkb3VibGUgdmFsdWUp
Owordm9pZCB0ZXN0TG9hZEZsb2F0Q29udmVydERvdWJsZUNvbnZlcnRGbG9hdFN0b3JlRmxvYXQo
ZmxvYXQgdmFsdWUpOwordm9pZCB0ZXN0RnJvdW5kQXJnKGRvdWJsZSB2YWx1ZSk7Cit2b2lkIHRl
c3RGcm91bmRNZW0oZG91YmxlIHZhbHVlKTsKK3ZvaWQgdGVzdElUb0Q2NEFyZygpOwordm9pZCB0
ZXN0SVRvRjY0QXJnKCk7Cit2b2lkIHRlc3RJVG9EMzJBcmcoKTsKK3ZvaWQgdGVzdElUb0YzMkFy
ZygpOwordm9pZCB0ZXN0SVRvRDY0TWVtKCk7Cit2b2lkIHRlc3RJVG9GNjRNZW0oKTsKK3ZvaWQg
dGVzdElUb0QzMk1lbSgpOwordm9pZCB0ZXN0SVRvRjMyTWVtKCk7Cit2b2lkIHRlc3RJVG9ENjRJ
bW0oaW50NjRfdCB2YWx1ZSk7Cit2b2lkIHRlc3RJVG9GNjRJbW0oaW50NjRfdCB2YWx1ZSk7Cit2
b2lkIHRlc3RJVG9EMzJJbW0oaW50MzJfdCB2YWx1ZSk7Cit2b2lkIHRlc3RJVG9GMzJJbW0oaW50
MzJfdCB2YWx1ZSk7Cit2b2lkIHRlc3RJVG9EUmVkdWNlZFRvSVRvRjY0QXJnKCk7Cit2b2lkIHRl
c3RJVG9EUmVkdWNlZFRvSVRvRjMyQXJnKCk7Cit2b2lkIHRlc3RTdG9yZTMyKGludCB2YWx1ZSk7
Cit2b2lkIHRlc3RTdG9yZUNvbnN0YW50KGludCB2YWx1ZSk7Cit2b2lkIHRlc3RTdG9yZUNvbnN0
YW50UHRyKGludHB0cl90IHZhbHVlKTsKK3ZvaWQgdGVzdFN0b3JlOEFyZygpOwordm9pZCB0ZXN0
U3RvcmU4SW1tKCk7Cit2b2lkIHRlc3RTdG9yZVBhcnRpYWw4Qml0UmVnaXN0ZXJPblg4NigpOwor
dm9pZCB0ZXN0U3RvcmUxNkFyZygpOwordm9pZCB0ZXN0U3RvcmUxNkltbSgpOwordm9pZCB0ZXN0
VHJ1bmMoaW50NjRfdCB2YWx1ZSk7Cit2b2lkIHRlc3RBZGQxKGludCB2YWx1ZSk7Cit2b2lkIHRl
c3RBZGQxUHRyKGludHB0cl90IHZhbHVlKTsKK3ZvaWQgdGVzdE5lZzMyKGludDMyX3QgdmFsdWUp
Owordm9pZCB0ZXN0TmVnUHRyKGludHB0cl90IHZhbHVlKTsKK3ZvaWQgdGVzdFN0b3JlQWRkTG9h
ZDMyKGludCBhbW91bnQpOwordm9pZCB0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxMzIoaW50IGFtb3Vu
dCk7Cit2b2lkIHRlc3RTdG9yZUFkZExvYWRJbW0zMihpbnQgYW1vdW50KTsKK3ZvaWQgdGVzdFN0
b3JlQWRkTG9hZDgoaW50IGFtb3VudCwgQjM6Ok9wY29kZSBsb2FkT3Bjb2RlKTsKK3ZvaWQgdGVz
dFN0b3JlUmVsQWRkTG9hZEFjcTgoaW50IGFtb3VudCwgQjM6Ok9wY29kZSBsb2FkT3Bjb2RlKTsK
K3ZvaWQgdGVzdFN0b3JlUmVsQWRkRmVuY2VMb2FkQWNxOChpbnQgYW1vdW50LCBCMzo6T3Bjb2Rl
IGxvYWRPcGNvZGUpOwordm9pZCB0ZXN0U3RvcmVBZGRMb2FkSW1tOChpbnQgYW1vdW50LCBCMzo6
T3Bjb2RlIGxvYWRPcGNvZGUpOwordm9pZCB0ZXN0U3RvcmVBZGRMb2FkMTYoaW50IGFtb3VudCwg
QjM6Ok9wY29kZSBsb2FkT3Bjb2RlKTsKK3ZvaWQgdGVzdFN0b3JlUmVsQWRkTG9hZEFjcTE2KGlu
dCBhbW91bnQsIEIzOjpPcGNvZGUgbG9hZE9wY29kZSk7Cit2b2lkIHRlc3RTdG9yZUFkZExvYWRJ
bW0xNihpbnQgYW1vdW50LCBCMzo6T3Bjb2RlIGxvYWRPcGNvZGUpOwordm9pZCB0ZXN0U3RvcmVB
ZGRMb2FkNjQoaW50IGFtb3VudCk7Cit2b2lkIHRlc3RTdG9yZVJlbEFkZExvYWRBY3E2NChpbnQg
YW1vdW50KTsKK3ZvaWQgdGVzdFN0b3JlQWRkTG9hZEltbTY0KGludDY0X3QgYW1vdW50KTsKK3Zv
aWQgdGVzdFN0b3JlQWRkTG9hZDMySW5kZXgoaW50IGFtb3VudCk7Cit2b2lkIHRlc3RTdG9yZUFk
ZExvYWRJbW0zMkluZGV4KGludCBhbW91bnQpOwordm9pZCB0ZXN0U3RvcmVBZGRMb2FkOEluZGV4
KGludCBhbW91bnQsIEIzOjpPcGNvZGUgbG9hZE9wY29kZSk7Cit2b2lkIHRlc3RTdG9yZUFkZExv
YWRJbW04SW5kZXgoaW50IGFtb3VudCwgQjM6Ok9wY29kZSBsb2FkT3Bjb2RlKTsKK3ZvaWQgdGVz
dFN0b3JlQWRkTG9hZDE2SW5kZXgoaW50IGFtb3VudCwgQjM6Ok9wY29kZSBsb2FkT3Bjb2RlKTsK
K3ZvaWQgdGVzdFN0b3JlQWRkTG9hZEltbTE2SW5kZXgoaW50IGFtb3VudCwgQjM6Ok9wY29kZSBs
b2FkT3Bjb2RlKTsKK3ZvaWQgdGVzdFN0b3JlQWRkTG9hZDY0SW5kZXgoaW50IGFtb3VudCk7Cit2
b2lkIHRlc3RTdG9yZUFkZExvYWRJbW02NEluZGV4KGludDY0X3QgYW1vdW50KTsKK3ZvaWQgdGVz
dFN0b3JlU3ViTG9hZChpbnQgYW1vdW50KTsKK3ZvaWQgdGVzdFN0b3JlQWRkTG9hZEludGVyZmVy
ZW5jZShpbnQgYW1vdW50KTsKK3ZvaWQgdGVzdFN0b3JlQWRkQW5kTG9hZChpbnQgYW1vdW50LCBp
bnQgbWFzayk7Cit2b2lkIHRlc3RTdG9yZU5lZ0xvYWQzMihpbnQzMl90IHZhbHVlKTsKK3ZvaWQg
dGVzdFN0b3JlTmVnTG9hZFB0cihpbnRwdHJfdCB2YWx1ZSk7Cit2b2lkIHRlc3RBZGQxVW5jb21t
dXRlZChpbnQgdmFsdWUpOwordm9pZCB0ZXN0TG9hZE9mZnNldCgpOwordm9pZCB0ZXN0TG9hZE9m
ZnNldE5vdENvbnN0YW50KCk7Cit2b2lkIHRlc3RMb2FkT2Zmc2V0VXNpbmdBZGQoKTsKK3ZvaWQg
dGVzdExvYWRPZmZzZXRVc2luZ0FkZEludGVyZmVyZW5jZSgpOwordm9pZCB0ZXN0TG9hZE9mZnNl
dFVzaW5nQWRkTm90Q29uc3RhbnQoKTsKK3ZvaWQgdGVzdExvYWRBZGRyU2hpZnQodW5zaWduZWQg
c2hpZnQpOwordm9pZCB0ZXN0RnJhbWVQb2ludGVyKCk7Cit2b2lkIHRlc3RPdmVycmlkZUZyYW1l
UG9pbnRlcigpOwordm9pZCB0ZXN0U3RhY2tTbG90KCk7Cit2b2lkIHRlc3RMb2FkRnJvbUZyYW1l
UG9pbnRlcigpOwordm9pZCB0ZXN0U3RvcmVMb2FkU3RhY2tTbG90KGludCB2YWx1ZSk7Cit2b2lk
IHRlc3RTdG9yZUZsb2F0KGRvdWJsZSBpbnB1dCk7Cit2b2lkIHRlc3RTdG9yZURvdWJsZUNvbnN0
YW50QXNGbG9hdChkb3VibGUgaW5wdXQpOwordm9pZCB0ZXN0U3BpbGxHUCgpOwordm9pZCB0ZXN0
U3BpbGxGUCgpOwordm9pZCB0ZXN0SW50MzJUb0RvdWJsZVBhcnRpYWxSZWdpc3RlclN0YWxsKCk7
Cit2b2lkIHRlc3RJbnQzMlRvRG91YmxlUGFydGlhbFJlZ2lzdGVyV2l0aG91dFN0YWxsKCk7Cit2
b2lkIHRlc3RCcmFuY2goKTsKK3ZvaWQgdGVzdEJyYW5jaFB0cigpOwordm9pZCB0ZXN0RGlhbW9u
ZCgpOwordm9pZCB0ZXN0QnJhbmNoTm90RXF1YWwoKTsKK3ZvaWQgdGVzdEJyYW5jaE5vdEVxdWFs
Q29tbXV0ZSgpOwordm9pZCB0ZXN0QnJhbmNoTm90RXF1YWxOb3RFcXVhbCgpOwordm9pZCB0ZXN0
QnJhbmNoRXF1YWwoKTsKK3ZvaWQgdGVzdEJyYW5jaEVxdWFsRXF1YWwoKTsKK3ZvaWQgdGVzdEJy
YW5jaEVxdWFsQ29tbXV0ZSgpOwordm9pZCB0ZXN0QnJhbmNoRXF1YWxFcXVhbDEoKTsKK3ZvaWQg
dGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVyZWRBcmdzKGRvdWJsZSwgZG91YmxlKTsKK3ZvaWQgdGVz
dEJyYW5jaEVxdWFsT3JVbm9yZGVyZWRBcmdzKGZsb2F0LCBmbG9hdCk7Cit2b2lkIHRlc3RCcmFu
Y2hOb3RFcXVhbEFuZE9yZGVyZWRBcmdzKGRvdWJsZSwgZG91YmxlKTsKK3ZvaWQgdGVzdEJyYW5j
aE5vdEVxdWFsQW5kT3JkZXJlZEFyZ3MoZmxvYXQsIGZsb2F0KTsKK3ZvaWQgdGVzdEJyYW5jaEVx
dWFsT3JVbm9yZGVyZWREb3VibGVBcmdJbW0oZG91YmxlLCBkb3VibGUpOwordm9pZCB0ZXN0QnJh
bmNoRXF1YWxPclVub3JkZXJlZEZsb2F0QXJnSW1tKGZsb2F0LCBmbG9hdCk7Cit2b2lkIHRlc3RC
cmFuY2hFcXVhbE9yVW5vcmRlcmVkRG91YmxlSW1tcyhkb3VibGUsIGRvdWJsZSk7Cit2b2lkIHRl
c3RCcmFuY2hFcXVhbE9yVW5vcmRlcmVkRmxvYXRJbW1zKGZsb2F0LCBmbG9hdCk7Cit2b2lkIHRl
c3RCcmFuY2hFcXVhbE9yVW5vcmRlcmVkRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24o
ZmxvYXQsIGZsb2F0KTsKK3ZvaWQgdGVzdEJyYW5jaEZvbGQoaW50IHZhbHVlKTsKK3ZvaWQgdGVz
dERpYW1vbmRGb2xkKGludCB2YWx1ZSk7Cit2b2lkIHRlc3RCcmFuY2hOb3RFcXVhbEZvbGRQdHIo
aW50cHRyX3QgdmFsdWUpOwordm9pZCB0ZXN0QnJhbmNoRXF1YWxGb2xkUHRyKGludHB0cl90IHZh
bHVlKTsKK3ZvaWQgdGVzdEJyYW5jaExvYWRQdHIoKTsKK3ZvaWQgdGVzdEJyYW5jaExvYWQzMigp
Owordm9pZCB0ZXN0QnJhbmNoTG9hZDhTKCk7Cit2b2lkIHRlc3RCcmFuY2hMb2FkOFooKTsKK3Zv
aWQgdGVzdEJyYW5jaExvYWQxNlMoKTsKK3ZvaWQgdGVzdEJyYW5jaExvYWQxNlooKTsKK3ZvaWQg
dGVzdEJyYW5jaDhXaXRoTG9hZDhaSW5kZXgoKTsKK3ZvaWQgdGVzdENvbXBsZXgodW5zaWduZWQg
bnVtVmFycywgdW5zaWduZWQgbnVtQ29uc3RydWN0cyk7Cit2b2lkIHRlc3RCcmFuY2hCaXRUZXN0
MzJUbXBJbW0odWludDMyX3QgdmFsdWUsIHVpbnQzMl90IGltbSk7Cit2b2lkIHRlc3RCcmFuY2hC
aXRUZXN0MzJBZGRySW1tKHVpbnQzMl90IHZhbHVlLCB1aW50MzJfdCBpbW0pOwordm9pZCB0ZXN0
QnJhbmNoQml0VGVzdDMyVG1wVG1wKHVpbnQzMl90IHZhbHVlLCB1aW50MzJfdCB2YWx1ZTIpOwor
dm9pZCB0ZXN0QnJhbmNoQml0VGVzdDY0VG1wVG1wKHVpbnQ2NF90IHZhbHVlLCB1aW50NjRfdCB2
YWx1ZTIpOwordm9pZCB0ZXN0QnJhbmNoQml0VGVzdDY0QWRkclRtcCh1aW50NjRfdCB2YWx1ZSwg
dWludDY0X3QgdmFsdWUyKTsKK3ZvaWQgdGVzdEJyYW5jaEJpdFRlc3ROZWdhdGlvbih1aW50NjRf
dCB2YWx1ZSwgdWludDY0X3QgdmFsdWUyKTsKK3ZvaWQgdGVzdEJyYW5jaEJpdFRlc3ROZWdhdGlv
bjIodWludDY0X3QgdmFsdWUsIHVpbnQ2NF90IHZhbHVlMik7Cit2b2lkIHRlc3RTaW1wbGVQYXRj
aHBvaW50KCk7Cit2b2lkIHRlc3RTaW1wbGVQYXRjaHBvaW50V2l0aG91dE91cHV0Q2xvYmJlcnNH
UEFyZ3MoKTsKK3ZvaWQgdGVzdFNpbXBsZVBhdGNocG9pbnRXaXRoT3VwdXRDbG9iYmVyc0dQQXJn
cygpOwordm9pZCB0ZXN0U2ltcGxlUGF0Y2hwb2ludFdpdGhvdXRPdXB1dENsb2JiZXJzRlBBcmdz
KCk7Cit2b2lkIHRlc3RTaW1wbGVQYXRjaHBvaW50V2l0aE91cHV0Q2xvYmJlcnNGUEFyZ3MoKTsK
K3ZvaWQgdGVzdFBhdGNocG9pbnRXaXRoRWFybHlDbG9iYmVyKCk7Cit2b2lkIHRlc3RQYXRjaHBv
aW50Q2FsbEFyZygpOwordm9pZCB0ZXN0UGF0Y2hwb2ludEZpeGVkUmVnaXN0ZXIoKTsKK3ZvaWQg
dGVzdFBhdGNocG9pbnRBbnkoVmFsdWVSZXAgcmVwKTsKK3ZvaWQgdGVzdFBhdGNocG9pbnRHUFNj
cmF0Y2goKTsKK3ZvaWQgdGVzdFBhdGNocG9pbnRGUFNjcmF0Y2goKTsKK3ZvaWQgdGVzdFBhdGNo
cG9pbnRMb3RzT2ZMYXRlQW55cygpOwordm9pZCB0ZXN0UGF0Y2hwb2ludEFueUltbShWYWx1ZVJl
cCByZXApOwordm9pZCB0ZXN0UGF0Y2hwb2ludE1hbnlJbW1zKCk7Cit2b2lkIHRlc3RQYXRjaHBv
aW50V2l0aFJlZ2lzdGVyUmVzdWx0KCk7Cit2b2lkIHRlc3RQYXRjaHBvaW50V2l0aFN0YWNrQXJn
dW1lbnRSZXN1bHQoKTsKK3ZvaWQgdGVzdFBhdGNocG9pbnRXaXRoQW55UmVzdWx0KCk7Cit2b2lk
IHRlc3RTaW1wbGVDaGVjaygpOwordm9pZCB0ZXN0Q2hlY2tGYWxzZSgpOwordm9pZCB0ZXN0Q2hl
Y2tUcnVlKCk7Cit2b2lkIHRlc3RDaGVja0xlc3NUaGFuKCk7Cit2b2lkIHRlc3RDaGVja01lZ2FD
b21ibygpOwordm9pZCB0ZXN0Q2hlY2tUcmlja3lNZWdhQ29tYm8oKTsKK3ZvaWQgdGVzdENoZWNr
VHdvTWVnYUNvbWJvcygpOwordm9pZCB0ZXN0Q2hlY2tUd29Ob25SZWR1bmRhbnRNZWdhQ29tYm9z
KCk7Cit2b2lkIHRlc3RDaGVja0FkZEltbSgpOwordm9pZCB0ZXN0Q2hlY2tBZGRJbW1Db21tdXRl
KCk7Cit2b2lkIHRlc3RDaGVja0FkZEltbVNvbWVSZWdpc3RlcigpOwordm9pZCB0ZXN0Q2hlY2tB
ZGQoKTsKK3ZvaWQgdGVzdENoZWNrQWRkNjQoKTsKK3ZvaWQgdGVzdENoZWNrQWRkRm9sZChpbnQs
IGludCk7Cit2b2lkIHRlc3RDaGVja0FkZEZvbGRGYWlsKGludCwgaW50KTsKK3ZvaWQgdGVzdDQy
KCk7Cit2b2lkIHRlc3RMb2FkNDIoKTsKK3ZvaWQgdGVzdExvYWRBY3E0MigpOwordm9pZCB0ZXN0
TG9hZFdpdGhPZmZzZXRJbXBsKGludDMyX3Qgb2Zmc2V0NjQsIGludDMyX3Qgb2Zmc2V0MzIpOwor
dm9pZCB0ZXN0TG9hZE9mZnNldEltbTlNYXgoKTsKK3ZvaWQgdGVzdExvYWRPZmZzZXRJbW05TWF4
UGx1c09uZSgpOwordm9pZCB0ZXN0TG9hZE9mZnNldEltbTlNYXhQbHVzVHdvKCk7Cit2b2lkIHRl
c3RMb2FkT2Zmc2V0SW1tOU1pbigpOwordm9pZCB0ZXN0TG9hZE9mZnNldEltbTlNaW5NaW51c09u
ZSgpOwordm9pZCB0ZXN0TG9hZE9mZnNldFNjYWxlZFVuc2lnbmVkSW1tMTJNYXgoKTsKK3ZvaWQg
dGVzdExvYWRPZmZzZXRTY2FsZWRVbnNpZ25lZE92ZXJJbW0xMk1heCgpOwordm9pZCB0ZXN0Qml0
WG9yVHJlZUFyZ3MoaW50NjRfdCwgaW50NjRfdCk7Cit2b2lkIHRlc3RCaXRYb3JUcmVlQXJnc0V2
ZW4oaW50NjRfdCwgaW50NjRfdCk7Cit2b2lkIHRlc3RCaXRYb3JUcmVlQXJnSW1tKGludDY0X3Qs
IGludDY0X3QpOwordm9pZCB0ZXN0QWRkVHJlZUFyZzMyKGludDMyX3QpOwordm9pZCB0ZXN0TXVs
VHJlZUFyZzMyKGludDMyX3QpOwordm9pZCB0ZXN0Qml0QW5kVHJlZUFyZzMyKGludDMyX3QpOwor
dm9pZCB0ZXN0Qml0T3JUcmVlQXJnMzIoaW50MzJfdCk7Cit2b2lkIHRlc3RBcmcoaW50IGFyZ3Vt
ZW50KTsKK3ZvaWQgdGVzdFJldHVybkNvbnN0NjQoaW50NjRfdCB2YWx1ZSk7Cit2b2lkIHRlc3RS
ZXR1cm5Wb2lkKCk7Cit2b2lkIHRlc3RBZGRBcmcoaW50KTsKK3ZvaWQgdGVzdEFkZEFyZ3MoaW50
LCBpbnQpOwordm9pZCB0ZXN0QWRkQXJnSW1tKGludCwgaW50KTsKK3ZvaWQgdGVzdEFkZEltbUFy
ZyhpbnQsIGludCk7Cit2b2lkIHRlc3RBZGRBcmdNZW0oaW50NjRfdCwgaW50NjRfdCk7Cit2b2lk
IHRlc3RBZGRNZW1BcmcoaW50NjRfdCwgaW50NjRfdCk7Cit2b2lkIHRlc3RBZGRJbW1NZW0oaW50
NjRfdCwgaW50NjRfdCk7Cit2b2lkIHRlc3RBZGRBcmczMihpbnQpOwordm9pZCB0ZXN0QWRkQXJn
czMyKGludCwgaW50KTsKK3ZvaWQgdGVzdEFkZEFyZ01lbTMyKGludDMyX3QsIGludDMyX3QpOwor
dm9pZCB0ZXN0QWRkTWVtQXJnMzIoaW50MzJfdCwgaW50MzJfdCk7Cit2b2lkIHRlc3RBZGRJbW1N
ZW0zMihpbnQzMl90LCBpbnQzMl90KTsKK3ZvaWQgdGVzdEFkZE5lZzEoaW50LCBpbnQpOwordm9p
ZCB0ZXN0QWRkTmVnMihpbnQsIGludCk7Cit2b2lkIHRlc3RBZGRBcmdaZXJvSW1tWkRlZigpOwor
dm9pZCB0ZXN0QWRkTG9hZFR3aWNlKCk7Cit2b2lkIHRlc3RBZGRBcmdEb3VibGUoZG91YmxlKTsK
K3ZvaWQgdGVzdENoZWNrQWRkQXJndW1lbnRBbGlhc2luZzY0KCk7Cit2b2lkIHRlc3RDaGVja0Fk
ZEFyZ3VtZW50QWxpYXNpbmczMigpOwordm9pZCB0ZXN0Q2hlY2tBZGRTZWxmT3ZlcmZsb3c2NCgp
Owordm9pZCB0ZXN0Q2hlY2tBZGRTZWxmT3ZlcmZsb3czMigpOwordm9pZCB0ZXN0Q2hlY2tTdWJJ
bW0oKTsKK3ZvaWQgdGVzdENoZWNrU3ViQmFkSW1tKCk7Cit2b2lkIHRlc3RDaGVja1N1YigpOwor
ZG91YmxlIGRvdWJsZVN1Yihkb3VibGUsIGRvdWJsZSk7Cit2b2lkIHRlc3RDaGVja1N1YjY0KCk7
Cit2b2lkIHRlc3RDaGVja1N1YkZvbGQoaW50LCBpbnQpOwordm9pZCB0ZXN0Q2hlY2tTdWJGb2xk
RmFpbChpbnQsIGludCk7Cit2b2lkIHRlc3RDaGVja05lZygpOwordm9pZCB0ZXN0Q2hlY2tOZWc2
NCgpOwordm9pZCB0ZXN0Q2hlY2tNdWwoKTsKK3ZvaWQgdGVzdENoZWNrTXVsTWVtb3J5KCk7Cit2
b2lkIHRlc3RDaGVja011bDIoKTsKK3ZvaWQgdGVzdENoZWNrTXVsNjQoKTsKK3ZvaWQgdGVzdENo
ZWNrTXVsRm9sZChpbnQsIGludCk7Cit2b2lkIHRlc3RDaGVja011bEZvbGRGYWlsKGludCwgaW50
KTsKK3ZvaWQgdGVzdEFkZEFyZ3NEb3VibGUoZG91YmxlLCBkb3VibGUpOwordm9pZCB0ZXN0QWRk
QXJnSW1tRG91YmxlKGRvdWJsZSwgZG91YmxlKTsKK3ZvaWQgdGVzdEFkZEltbUFyZ0RvdWJsZShk
b3VibGUsIGRvdWJsZSk7Cit2b2lkIHRlc3RBZGRJbW1zRG91YmxlKGRvdWJsZSwgZG91YmxlKTsK
K3ZvaWQgdGVzdEFkZEFyZ0Zsb2F0KGZsb2F0KTsKK3ZvaWQgdGVzdEFkZEFyZ3NGbG9hdChmbG9h
dCwgZmxvYXQpOwordm9pZCB0ZXN0QWRkRlBSQXJnc0Zsb2F0KGZsb2F0LCBmbG9hdCk7Cit2b2lk
IHRlc3RBZGRBcmdJbW1GbG9hdChmbG9hdCwgZmxvYXQpOwordm9pZCB0ZXN0QWRkSW1tQXJnRmxv
YXQoZmxvYXQsIGZsb2F0KTsKK3ZvaWQgdGVzdEFkZEltbXNGbG9hdChmbG9hdCwgZmxvYXQpOwor
dm9pZCB0ZXN0QWRkQXJnRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24oZmxvYXQpOwor
dm9pZCB0ZXN0QWRkQXJnc0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uKGZsb2F0LCBm
bG9hdCk7Cit2b2lkIHRlc3RBZGRBcmdzRmxvYXRXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lv
bihmbG9hdCwgZmxvYXQpOwordm9pZCB0ZXN0QWRkTXVsTXVsQXJncyhpbnQ2NF90LCBpbnQ2NF90
LCBpbnQ2NF90IGMpOwordm9pZCB0ZXN0TXVsQXJnKGludCk7Cit2b2lkIHRlc3RNdWxBcmdTdG9y
ZShpbnQpOwordm9pZCB0ZXN0TXVsQWRkQXJnKGludCk7Cit2b2lkIHRlc3RNdWxBcmdzKGludCwg
aW50KTsKK3ZvaWQgdGVzdE11bEFyZ05lZ0FyZyhpbnQsIGludCk7Cit2b2lkIHRlc3RDaGVja011
bEFyZ3VtZW50QWxpYXNpbmc2NCgpOwordm9pZCB0ZXN0Q2hlY2tNdWxBcmd1bWVudEFsaWFzaW5n
MzIoKTsKK3ZvaWQgdGVzdENoZWNrTXVsNjRTU2hyKCk7Cit2b2lkIHRlc3RDb21wYXJlSW1wbChC
Mzo6T3Bjb2RlIG9wY29kZSwgaW50NjRfdCBsZWZ0LCBpbnQ2NF90IHJpZ2h0KTsKK3ZvaWQgdGVz
dENvbXBhcmUoQjM6Ok9wY29kZSBvcGNvZGUsIGludDY0X3QgbGVmdCwgaW50NjRfdCByaWdodCk7
Cit2b2lkIHRlc3RFcXVhbERvdWJsZShkb3VibGUgbGVmdCwgZG91YmxlIHJpZ2h0LCBib29sIHJl
c3VsdCk7Cit2b2lkIHRlc3RDYWxsU2ltcGxlKGludCwgaW50KTsKK3ZvaWQgdGVzdENhbGxSYXJl
KGludCwgaW50KTsKK3ZvaWQgdGVzdENhbGxSYXJlTGl2ZShpbnQsIGludCwgaW50IGMpOwordm9p
ZCB0ZXN0Q2FsbFNpbXBsZVB1cmUoaW50LCBpbnQpOwordm9pZCB0ZXN0Q2FsbEZ1bmN0aW9uV2l0
aEhlbGxhQXJndW1lbnRzKCk7Cit2b2lkIHRlc3RDYWxsRnVuY3Rpb25XaXRoSGVsbGFBcmd1bWVu
dHMyKCk7Cit2b2lkIHRlc3RDYWxsRnVuY3Rpb25XaXRoSGVsbGFBcmd1bWVudHMzKCk7Cit2b2lk
IHRlc3RSZXR1cm5Eb3VibGUoZG91YmxlIHZhbHVlKTsKK3ZvaWQgdGVzdFJldHVybkZsb2F0KGZs
b2F0IHZhbHVlKTsKK3ZvaWQgdGVzdE11bE5lZ0FyZ0FyZyhpbnQsIGludCk7Cit2b2lkIHRlc3RN
dWxBcmdJbW0oaW50NjRfdCwgaW50NjRfdCk7Cit2b2lkIHRlc3RNdWxJbW1BcmcoaW50LCBpbnQp
Owordm9pZCB0ZXN0TXVsQXJnczMyKGludCwgaW50KTsKK3ZvaWQgdGVzdE11bEFyZ3MzMlNpZ25F
eHRlbmQoaW50LCBpbnQpOwordm9pZCB0ZXN0TXVsSW1tMzJTaWduRXh0ZW5kKGNvbnN0IGludCwg
aW50KTsKK3ZvaWQgdGVzdE11bExvYWRUd2ljZSgpOwordm9pZCB0ZXN0TXVsQWRkQXJnc0xlZnQo
KTsKK3ZvaWQgdGVzdE11bEFkZEFyZ3NSaWdodCgpOwordm9pZCB0ZXN0TXVsQWRkQXJnc0xlZnQz
MigpOwordm9pZCB0ZXN0TXVsQWRkQXJnc1JpZ2h0MzIoKTsKK3ZvaWQgdGVzdE11bFN1YkFyZ3NM
ZWZ0KCk7Cit2b2lkIHRlc3RNdWxTdWJBcmdzUmlnaHQoKTsKK3ZvaWQgdGVzdE11bFN1YkFyZ3NM
ZWZ0MzIoKTsKK3ZvaWQgdGVzdE11bFN1YkFyZ3NSaWdodDMyKCk7Cit2b2lkIHRlc3RNdWxOZWdB
cmdzKCk7Cit2b2lkIHRlc3RNdWxOZWdBcmdzMzIoKTsKK3ZvaWQgdGVzdE11bEFyZ0RvdWJsZShk
b3VibGUpOwordm9pZCB0ZXN0TXVsQXJnc0RvdWJsZShkb3VibGUsIGRvdWJsZSk7Cit2b2lkIHRl
c3RDYWxsU2ltcGxlRG91YmxlKGRvdWJsZSwgZG91YmxlKTsKK3ZvaWQgdGVzdENhbGxTaW1wbGVG
bG9hdChmbG9hdCwgZmxvYXQpOwordm9pZCB0ZXN0Q2FsbEZ1bmN0aW9uV2l0aEhlbGxhRG91Ymxl
QXJndW1lbnRzKCk7Cit2b2lkIHRlc3RDYWxsRnVuY3Rpb25XaXRoSGVsbGFGbG9hdEFyZ3VtZW50
cygpOwordm9pZCB0ZXN0TGluZWFyU2NhbldpdGhDYWxsZWVPblN0YWNrKCk7Cit2b2lkIHRlc3RD
aGlsbERpdihpbnQgbnVtLCBpbnQgZGVuLCBpbnQgcmVzKTsKK3ZvaWQgdGVzdENoaWxsRGl2VHdp
Y2UoaW50IG51bTEsIGludCBkZW4xLCBpbnQgbnVtMiwgaW50IGRlbjIsIGludCByZXMpOwordm9p
ZCB0ZXN0Q2hpbGxEaXY2NChpbnQ2NF90IG51bSwgaW50NjRfdCBkZW4sIGludDY0X3QgcmVzKTsK
K3ZvaWQgdGVzdE1vZEFyZyhpbnQ2NF90IHZhbHVlKTsKK3ZvaWQgdGVzdE1vZEFyZ3MoaW50NjRf
dCBudW1lcmF0b3IsIGludDY0X3QgZGVub21pbmF0b3IpOwordm9pZCB0ZXN0TW9kSW1tcyhpbnQ2
NF90IG51bWVyYXRvciwgaW50NjRfdCBkZW5vbWluYXRvcik7Cit2b2lkIHRlc3RNdWxBcmdJbW1E
b3VibGUoZG91YmxlLCBkb3VibGUpOwordm9pZCB0ZXN0TXVsSW1tQXJnRG91YmxlKGRvdWJsZSwg
ZG91YmxlKTsKK3ZvaWQgdGVzdE11bEltbXNEb3VibGUoZG91YmxlLCBkb3VibGUpOwordm9pZCB0
ZXN0TXVsQXJnRmxvYXQoZmxvYXQpOwordm9pZCB0ZXN0TXVsQXJnc0Zsb2F0KGZsb2F0LCBmbG9h
dCk7Cit2b2lkIHRlc3RNdWxBcmdJbW1GbG9hdChmbG9hdCwgZmxvYXQpOwordm9pZCB0ZXN0TXVs
SW1tQXJnRmxvYXQoZmxvYXQsIGZsb2F0KTsKK3ZvaWQgdGVzdE11bEltbXNGbG9hdChmbG9hdCwg
ZmxvYXQpOwordm9pZCB0ZXN0TXVsQXJnRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24o
ZmxvYXQpOwordm9pZCB0ZXN0TXVsQXJnc0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9u
KGZsb2F0LCBmbG9hdCk7Cit2b2lkIHRlc3RNdWxBcmdzRmxvYXRXaXRoRWZmZWN0ZnVsRG91Ymxl
Q29udmVyc2lvbihmbG9hdCwgZmxvYXQpOwordm9pZCB0ZXN0RGl2QXJnRG91YmxlKGRvdWJsZSk7
Cit2b2lkIHRlc3REaXZBcmdzRG91YmxlKGRvdWJsZSwgZG91YmxlKTsKK3ZvaWQgdGVzdERpdkFy
Z0ltbURvdWJsZShkb3VibGUsIGRvdWJsZSk7Cit2b2lkIHRlc3REaXZJbW1BcmdEb3VibGUoZG91
YmxlLCBkb3VibGUpOwordm9pZCB0ZXN0RGl2SW1tc0RvdWJsZShkb3VibGUsIGRvdWJsZSk7Cit2
b2lkIHRlc3REaXZBcmdGbG9hdChmbG9hdCk7Cit2b2lkIHRlc3REaXZBcmdzRmxvYXQoZmxvYXQs
IGZsb2F0KTsKK3ZvaWQgdGVzdERpdkFyZ0ltbUZsb2F0KGZsb2F0LCBmbG9hdCk7Cit2b2lkIHRl
c3RNb2RBcmczMihpbnQzMl90IHZhbHVlKTsKK3ZvaWQgdGVzdE1vZEFyZ3MzMihpbnQzMl90IG51
bWVyYXRvciwgaW50MzJfdCBkZW5vbWluYXRvcik7Cit2b2lkIHRlc3RNb2RJbW1zMzIoaW50MzJf
dCBudW1lcmF0b3IsIGludDMyX3QgZGVub21pbmF0b3IpOwordm9pZCB0ZXN0Q2hpbGxNb2RBcmco
aW50NjRfdCB2YWx1ZSk7Cit2b2lkIHRlc3RDaGlsbE1vZEFyZ3MoaW50NjRfdCBudW1lcmF0b3Is
IGludDY0X3QgZGVub21pbmF0b3IpOwordm9pZCB0ZXN0Q2hpbGxNb2RJbW1zKGludDY0X3QgbnVt
ZXJhdG9yLCBpbnQ2NF90IGRlbm9taW5hdG9yKTsKK3ZvaWQgdGVzdENoaWxsTW9kQXJnMzIoaW50
MzJfdCB2YWx1ZSk7Cit2b2lkIHRlc3RDaGlsbE1vZEFyZ3MzMihpbnQzMl90IG51bWVyYXRvciwg
aW50MzJfdCBkZW5vbWluYXRvcik7Cit2b2lkIHRlc3RDaGlsbE1vZEltbXMzMihpbnQzMl90IG51
bWVyYXRvciwgaW50MzJfdCBkZW5vbWluYXRvcik7Cit2b2lkIHRlc3RMb29wV2l0aE11bHRpcGxl
SGVhZGVyRWRnZXMoKTsKK3ZvaWQgdGVzdFN3aXRjaCh1bnNpZ25lZCBkZWdyZWUpOwordm9pZCB0
ZXN0U3dpdGNoKHVuc2lnbmVkIGRlZ3JlZSwgdW5zaWduZWQgZ2FwKTsKK3ZvaWQgdGVzdFN3aXRj
aFNhbWVDYXNlQXNEZWZhdWx0KCk7Cit2b2lkIHRlc3RTd2l0Y2hDaGlsbERpdih1bnNpZ25lZCBk
ZWdyZWUsIHVuc2lnbmVkIGdhcCk7Cit2b2lkIHRlc3RTd2l0Y2hUYXJnZXR0aW5nU2FtZUJsb2Nr
KCk7Cit2b2lkIHRlc3RTd2l0Y2hUYXJnZXR0aW5nU2FtZUJsb2NrRm9sZFBhdGhDb25zdGFudCgp
Owordm9pZCB0ZXN0VHJ1bmNGb2xkKGludDY0X3QgdmFsdWUpOwordm9pZCB0ZXN0WkV4dDMyKGlu
dDMyX3QgdmFsdWUpOwordm9pZCB0ZXN0WkV4dDMyRm9sZChpbnQzMl90IHZhbHVlKTsKK3ZvaWQg
dGVzdFNFeHQzMihpbnQzMl90IHZhbHVlKTsKK3ZvaWQgdGVzdFNFeHQzMkZvbGQoaW50MzJfdCB2
YWx1ZSk7Cit2b2lkIHRlc3RUcnVuY1pFeHQzMihpbnQzMl90IHZhbHVlKTsKK3ZvaWQgdGVzdFBp
blJlZ2lzdGVycygpOwordm9pZCB0ZXN0WDg2TGVhQWRkQWRkU2hsTGVmdCgpOwordm9pZCB0ZXN0
WDg2TGVhQWRkQWRkU2hsUmlnaHQoKTsKK3ZvaWQgdGVzdFg4NkxlYUFkZEFkZCgpOwordm9pZCB0
ZXN0WDg2TGVhQWRkU2hsUmlnaHQoKTsKK3ZvaWQgdGVzdFg4NkxlYUFkZFNobExlZnRTY2FsZTEo
KTsKK3ZvaWQgdGVzdFg4NkxlYUFkZFNobExlZnRTY2FsZTIoKTsKK3ZvaWQgdGVzdFg4NkxlYUFk
ZFNobExlZnRTY2FsZTQoKTsKK3ZvaWQgdGVzdFg4NkxlYUFkZFNobExlZnRTY2FsZTgoKTsKK3Zv
aWQgdGVzdEFkZFNobDMyKCk7Cit2b2lkIHRlc3RBZGRTaGw2NCgpOwordm9pZCB0ZXN0QWRkU2hs
NjUoKTsKK3ZvaWQgdGVzdFJlZHVjZVN0cmVuZ3RoUmVhc3NvY2lhdGlvbihib29sIGZsaXApOwor
dm9pZCB0ZXN0TG9hZEJhc2VJbmRleFNoaWZ0MigpOwordm9pZCB0ZXN0TG9hZEJhc2VJbmRleFNo
aWZ0MzIoKTsKK3ZvaWQgdGVzdE9wdGltaXplTWF0ZXJpYWxpemF0aW9uKCk7Cit2b2lkIHRlc3RM
SUNNUHVyZSgpOwordm9pZCB0ZXN0TElDTVB1cmVTaWRlRXhpdHMoKTsKK3ZvaWQgdGVzdFRydW5j
U0V4dDMyKGludDMyX3QgdmFsdWUpOwordm9pZCB0ZXN0U0V4dDgoaW50MzJfdCB2YWx1ZSk7Cit2
b2lkIHRlc3RTRXh0OEZvbGQoaW50MzJfdCB2YWx1ZSk7Cit2b2lkIHRlc3RTRXh0OFNFeHQ4KGlu
dDMyX3QgdmFsdWUpOwordm9pZCB0ZXN0U0V4dDhTRXh0MTYoaW50MzJfdCB2YWx1ZSk7Cit2b2lk
IHRlc3RTRXh0OEJpdEFuZChpbnQzMl90IHZhbHVlLCBpbnQzMl90IG1hc2spOwordm9pZCB0ZXN0
Qml0QW5kU0V4dDgoaW50MzJfdCB2YWx1ZSwgaW50MzJfdCBtYXNrKTsKK3ZvaWQgdGVzdFNFeHQx
NihpbnQzMl90IHZhbHVlKTsKK3ZvaWQgdGVzdFNFeHQxNkZvbGQoaW50MzJfdCB2YWx1ZSk7Cit2
b2lkIHRlc3RTRXh0MTZTRXh0MTYoaW50MzJfdCB2YWx1ZSk7Cit2b2lkIHRlc3RTRXh0MTZTRXh0
OChpbnQzMl90IHZhbHVlKTsKK3ZvaWQgdGVzdExJQ01QdXJlV3JpdGVzUGlubmVkKCk7Cit2b2lk
IHRlc3RMSUNNUHVyZVdyaXRlcygpOwordm9pZCB0ZXN0TElDTVJlYWRzTG9jYWxTdGF0ZSgpOwor
dm9pZCB0ZXN0TElDTVJlYWRzUGlubmVkKCk7Cit2b2lkIHRlc3RMSUNNUmVhZHMoKTsKK3ZvaWQg
dGVzdExJQ01QdXJlTm90QmFja3dhcmRzRG9taW5hbnQoKTsKK3ZvaWQgdGVzdExJQ01QdXJlRm9p
bGVkQnlDaGlsZCgpOwordm9pZCB0ZXN0TElDTVB1cmVOb3RCYWNrd2FyZHNEb21pbmFudEZvaWxl
ZEJ5Q2hpbGQoKTsKK3ZvaWQgdGVzdExJQ01FeGl0c1NpZGV3YXlzKCk7Cit2b2lkIHRlc3RMSUNN
V3JpdGVzTG9jYWxTdGF0ZSgpOwordm9pZCB0ZXN0TElDTVdyaXRlcygpOwordm9pZCB0ZXN0TElD
TUZlbmNlKCk7Cit2b2lkIHRlc3RMSUNNV3JpdGVzUGlubmVkKCk7Cit2b2lkIHRlc3RMSUNNQ29u
dHJvbERlcGVuZGVudCgpOwordm9pZCB0ZXN0TElDTUNvbnRyb2xEZXBlbmRlbnROb3RCYWNrd2Fy
ZHNEb21pbmFudCgpOwordm9pZCB0ZXN0TElDTUNvbnRyb2xEZXBlbmRlbnRTaWRlRXhpdHMoKTsK
K3ZvaWQgdGVzdExJQ01SZWFkc1Bpbm5lZFdyaXRlc1Bpbm5lZCgpOwordm9pZCB0ZXN0TElDTVJl
YWRzV3JpdGVzRGlmZmVyZW50SGVhcHMoKTsKK3ZvaWQgdGVzdExJQ01SZWFkc1dyaXRlc092ZXJs
YXBwaW5nSGVhcHMoKTsKK3ZvaWQgdGVzdExJQ01EZWZhdWx0Q2FsbCgpOwordm9pZCB0ZXN0RGVw
ZW5kMzIoKTsKK3ZvaWQgdGVzdERlcGVuZDY0KCk7Cit2b2lkIHRlc3RXYXNtQm91bmRzQ2hlY2so
dW5zaWduZWQgb2Zmc2V0KTsKK3ZvaWQgdGVzdFdhc21BZGRyZXNzKCk7Cit2b2lkIHRlc3RGYXN0
VExTTG9hZCgpOwordm9pZCB0ZXN0RmFzdFRMU1N0b3JlKCk7Cit2b2lkIHRlc3REb3VibGVMaXRl
cmFsQ29tcGFyaXNvbihkb3VibGUsIGRvdWJsZSk7Cit2b2lkIHRlc3RGbG9hdEVxdWFsT3JVbm9y
ZGVyZWRGb2xkaW5nKCk7Cit2b2lkIHRlc3RGbG9hdEVxdWFsT3JVbm9yZGVyZWRGb2xkaW5nTmFO
KCk7Cit2b2lkIHRlc3RGbG9hdEVxdWFsT3JVbm9yZGVyZWREb250Rm9sZCgpOwordm9pZCB0ZXN0
U0V4dDE2Qml0QW5kKGludDMyX3QgdmFsdWUsIGludDMyX3QgbWFzayk7Cit2b2lkIHRlc3RCaXRB
bmRTRXh0MTYoaW50MzJfdCB2YWx1ZSwgaW50MzJfdCBtYXNrKTsKK3ZvaWQgdGVzdFNFeHQzMkJp
dEFuZChpbnQzMl90IHZhbHVlLCBpbnQzMl90IG1hc2spOwordm9pZCB0ZXN0U2h1ZmZsZURvZXNu
dFRyYXNoQ2FsbGVlU2F2ZXMoKTsKK3ZvaWQgdGVzdERlbW90ZVBhdGNocG9pbnRUZXJtaW5hbCgp
Owordm9pZCB0ZXN0UmVwb3J0VXNlZFJlZ2lzdGVyc0xhdGVVc2VGb2xsb3dlZEJ5RWFybHlEZWZE
b2VzTm90TWFya1VzZUFzRGVhZCgpOwordm9pZCB0ZXN0SW5maW5pdGVMb29wRG9lc250Q2F1c2VC
YWRIb2lzdGluZygpOwordm9pZCB0ZXN0RGl2SW1tQXJnRmxvYXQoZmxvYXQsIGZsb2F0KTsKK3Zv
aWQgdGVzdERpdkltbXNGbG9hdChmbG9hdCwgZmxvYXQpOwordm9pZCB0ZXN0TW9kQXJnRG91Ymxl
KGRvdWJsZSk7Cit2b2lkIHRlc3RNb2RBcmdzRG91YmxlKGRvdWJsZSwgZG91YmxlKTsKK3ZvaWQg
dGVzdE1vZEFyZ0ltbURvdWJsZShkb3VibGUsIGRvdWJsZSk7Cit2b2lkIHRlc3RNb2RJbW1BcmdE
b3VibGUoZG91YmxlLCBkb3VibGUpOwordm9pZCB0ZXN0TW9kSW1tc0RvdWJsZShkb3VibGUsIGRv
dWJsZSk7Cit2b2lkIHRlc3RNb2RBcmdGbG9hdChmbG9hdCk7Cit2b2lkIHRlc3RNb2RBcmdzRmxv
YXQoZmxvYXQsIGZsb2F0KTsKK3ZvaWQgdGVzdE1vZEFyZ0ltbUZsb2F0KGZsb2F0LCBmbG9hdCk7
Cit2b2lkIHRlc3RNb2RJbW1BcmdGbG9hdChmbG9hdCwgZmxvYXQpOwordm9pZCB0ZXN0TW9kSW1t
c0Zsb2F0KGZsb2F0LCBmbG9hdCk7Cit2b2lkIHRlc3REaXZBcmdGbG9hdFdpdGhVc2VsZXNzRG91
YmxlQ29udmVyc2lvbihmbG9hdCk7Cit2b2lkIHRlc3REaXZBcmdzRmxvYXRXaXRoVXNlbGVzc0Rv
dWJsZUNvbnZlcnNpb24oZmxvYXQsIGZsb2F0KTsKK3ZvaWQgdGVzdERpdkFyZ3NGbG9hdFdpdGhF
ZmZlY3RmdWxEb3VibGVDb252ZXJzaW9uKGZsb2F0LCBmbG9hdCk7Cit2b2lkIHRlc3RVRGl2QXJn
c0ludDMyKHVpbnQzMl90LCB1aW50MzJfdCk7Cit2b2lkIHRlc3RVRGl2QXJnc0ludDY0KHVpbnQ2
NF90LCB1aW50NjRfdCk7Cit2b2lkIHRlc3RVTW9kQXJnc0ludDMyKHVpbnQzMl90LCB1aW50MzJf
dCk7Cit2b2lkIHRlc3RVTW9kQXJnc0ludDY0KHVpbnQ2NF90LCB1aW50NjRfdCk7Cit2b2lkIHRl
c3RTdWJBcmcoaW50KTsKK3ZvaWQgdGVzdFN1YkFyZ3MoaW50LCBpbnQpOwordm9pZCB0ZXN0U3Vi
QXJnSW1tKGludDY0X3QsIGludDY0X3QpOwordm9pZCB0ZXN0U3ViTmVnKGludCwgaW50KTsKK3Zv
aWQgdGVzdE5lZ1N1YihpbnQsIGludCk7Cit2b2lkIHRlc3ROZWdWYWx1ZVN1Yk9uZShpbnQpOwor
dm9pZCB0ZXN0U3ViU3ViKGludCwgaW50LCBpbnQgYyk7Cit2b2lkIHRlc3RTdWJTdWIyKGludCwg
aW50LCBpbnQgYyk7Cit2b2lkIHRlc3RTdWJBZGQoaW50LCBpbnQsIGludCBjKTsKK3ZvaWQgdGVz
dFN1YkZpcnN0TmVnKGludCwgaW50KTsKK3ZvaWQgdGVzdFN1YkltbUFyZyhpbnQsIGludCk7Cit2
b2lkIHRlc3RTdWJBcmdNZW0oaW50NjRfdCwgaW50NjRfdCk7Cit2b2lkIHRlc3RTdWJNZW1Bcmco
aW50NjRfdCwgaW50NjRfdCk7Cit2b2lkIHRlc3RTdWJJbW1NZW0oaW50NjRfdCwgaW50NjRfdCk7
Cit2b2lkIHRlc3RTdWJNZW1JbW0oaW50NjRfdCwgaW50NjRfdCk7Cit2b2lkIHRlc3RTdWJBcmdz
MzIoaW50LCBpbnQpOwordm9pZCB0ZXN0U3ViQXJnSW1tMzIoaW50LCBpbnQpOwordm9pZCB0ZXN0
U3ViSW1tQXJnMzIoaW50LCBpbnQpOwordm9pZCB0ZXN0U3ViTWVtQXJnMzIoaW50MzJfdCwgaW50
MzJfdCk7Cit2b2lkIHRlc3RTdWJBcmdNZW0zMihpbnQzMl90LCBpbnQzMl90KTsKK3ZvaWQgdGVz
dFN1YkltbU1lbTMyKGludDMyX3QsIGludDMyX3QpOwordm9pZCB0ZXN0U3ViTWVtSW1tMzIoaW50
MzJfdCwgaW50MzJfdCk7Cit2b2lkIHRlc3ROZWdWYWx1ZVN1Yk9uZTMyKGludCk7Cit2b2lkIHRl
c3ROZWdNdWxBcmdJbW0oaW50NjRfdCwgaW50NjRfdCk7Cit2b2lkIHRlc3RTdWJNdWxNdWxBcmdz
KGludDY0X3QsIGludDY0X3QsIGludDY0X3QgYyk7Cit2b2lkIHRlc3RTdWJBcmdEb3VibGUoZG91
YmxlKTsKK3ZvaWQgdGVzdFN1YkFyZ3NEb3VibGUoZG91YmxlLCBkb3VibGUpOwordm9pZCB0ZXN0
U3ViQXJnSW1tRG91YmxlKGRvdWJsZSwgZG91YmxlKTsKK3ZvaWQgdGVzdFN1YkltbUFyZ0RvdWJs
ZShkb3VibGUsIGRvdWJsZSk7Cit2b2lkIHRlc3RTdWJJbW1zRG91YmxlKGRvdWJsZSwgZG91Ymxl
KTsKK3ZvaWQgdGVzdFN1YkFyZ0Zsb2F0KGZsb2F0KTsKK3ZvaWQgdGVzdFN1YkFyZ3NGbG9hdChm
bG9hdCwgZmxvYXQpOwordm9pZCB0ZXN0U3ViQXJnSW1tRmxvYXQoZmxvYXQsIGZsb2F0KTsKK3Zv
aWQgdGVzdFN1YkltbUFyZ0Zsb2F0KGZsb2F0LCBmbG9hdCk7Cit2b2lkIHRlc3RTdWJJbW1zRmxv
YXQoZmxvYXQsIGZsb2F0KTsKK3ZvaWQgdGVzdFN1YkFyZ0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVD
b252ZXJzaW9uKGZsb2F0KTsKK3ZvaWQgdGVzdFN1YkFyZ3NGbG9hdFdpdGhVc2VsZXNzRG91Ymxl
Q29udmVyc2lvbihmbG9hdCwgZmxvYXQpOwordm9pZCB0ZXN0U3ViQXJnc0Zsb2F0V2l0aEVmZmVj
dGZ1bERvdWJsZUNvbnZlcnNpb24oZmxvYXQsIGZsb2F0KTsKK3ZvaWQgdGVzdFRlcm5hcnlTdWJJ
bnN0cnVjdGlvblNlbGVjdGlvbihCMzo6T3Bjb2RlIHZhbHVlTW9kaWZpZXIsIFR5cGUgdmFsdWVU
eXBlLCBBaXI6Ok9wY29kZSBleHBlY3RlZE9wY29kZSk7Cit2b2lkIHRlc3ROZWdEb3VibGUoZG91
YmxlKTsKK3ZvaWQgdGVzdE5lZ0Zsb2F0KGZsb2F0KTsKK3ZvaWQgdGVzdE5lZ0Zsb2F0V2l0aFVz
ZWxlc3NEb3VibGVDb252ZXJzaW9uKGZsb2F0KTsKK3ZvaWQgdGVzdEJpdEFuZEFyZ3MoaW50NjRf
dCwgaW50NjRfdCk7Cit2b2lkIHRlc3RCaXRBbmRTYW1lQXJnKGludDY0X3QpOwordm9pZCB0ZXN0
Qml0QW5kTm90Tm90KGludDY0X3QsIGludDY0X3QpOwordm9pZCB0ZXN0Qml0QW5kTm90SW1tKGlu
dDY0X3QsIGludDY0X3QpOwordm9pZCB0ZXN0Qml0QW5kSW1tcyhpbnQ2NF90LCBpbnQ2NF90KTsK
K3ZvaWQgdGVzdEJpdEFuZEFyZ0ltbShpbnQ2NF90LCBpbnQ2NF90KTsKK3ZvaWQgdGVzdEJpdEFu
ZEltbUFyZyhpbnQ2NF90LCBpbnQ2NF90KTsKK3ZvaWQgdGVzdEJpdEFuZEJpdEFuZEFyZ0ltbUlt
bShpbnQ2NF90LCBpbnQ2NF90LCBpbnQ2NF90IGMpOwordm9pZCB0ZXN0Qml0QW5kSW1tQml0QW5k
QXJnSW1tKGludDY0X3QsIGludDY0X3QsIGludDY0X3QgYyk7Cit2b2lkIHRlc3RCaXRBbmRBcmdz
MzIoaW50LCBpbnQpOwordm9pZCB0ZXN0Qml0QW5kU2FtZUFyZzMyKGludCk7Cit2b2lkIHRlc3RC
aXRBbmRJbW1zMzIoaW50LCBpbnQpOwordm9pZCB0ZXN0Qml0QW5kQXJnSW1tMzIoaW50LCBpbnQp
Owordm9pZCB0ZXN0Qml0QW5kSW1tQXJnMzIoaW50LCBpbnQpOwordm9pZCB0ZXN0Qml0QW5kQml0
QW5kQXJnSW1tSW1tMzIoaW50LCBpbnQsIGludCBjKTsKK3ZvaWQgdGVzdEJpdEFuZEltbUJpdEFu
ZEFyZ0ltbTMyKGludCwgaW50LCBpbnQgYyk7Cit2b2lkIHRlc3RCaXRBbmRXaXRoTWFza1JldHVy
bnNCb29sZWFucyhpbnQ2NF90LCBpbnQ2NF90KTsKK3ZvaWQgdGVzdEJpdEFuZEFyZ0RvdWJsZShk
b3VibGUpOwordm9pZCB0ZXN0Qml0QW5kQXJnc0RvdWJsZShkb3VibGUsIGRvdWJsZSk7Cit2b2lk
IHRlc3RCaXRBbmRBcmdJbW1Eb3VibGUoZG91YmxlLCBkb3VibGUpOwordm9pZCB0ZXN0Qml0QW5k
SW1tc0RvdWJsZShkb3VibGUsIGRvdWJsZSk7Cit2b2lkIHRlc3RCaXRBbmRBcmdGbG9hdChmbG9h
dCk7Cit2b2lkIHRlc3RCaXRBbmRBcmdzRmxvYXQoZmxvYXQsIGZsb2F0KTsKK3ZvaWQgdGVzdEJp
dEFuZEFyZ0ltbUZsb2F0KGZsb2F0LCBmbG9hdCk7Cit2b2lkIHRlc3RCaXRBbmRJbW1zRmxvYXQo
ZmxvYXQsIGZsb2F0KTsKK3ZvaWQgdGVzdEJpdEFuZEFyZ3NGbG9hdFdpdGhVc2VsZXNzRG91Ymxl
Q29udmVyc2lvbihmbG9hdCwgZmxvYXQpOwordm9pZCB0ZXN0Qml0T3JBcmdzKGludDY0X3QsIGlu
dDY0X3QpOwordm9pZCB0ZXN0Qml0T3JTYW1lQXJnKGludDY0X3QpOwordm9pZCB0ZXN0Qml0T3JB
bmRBbmRBcmdzKGludDY0X3QsIGludDY0X3QsIGludDY0X3QgYyk7Cit2b2lkIHRlc3RCaXRPckFu
ZFNhbWVBcmdzKGludDY0X3QsIGludDY0X3QpOwordm9pZCB0ZXN0Qml0T3JOb3ROb3QoaW50NjRf
dCwgaW50NjRfdCk7Cit2b2lkIHRlc3RCaXRPck5vdEltbShpbnQ2NF90LCBpbnQ2NF90KTsKK3Zv
aWQgdGVzdEJpdE9ySW1tcyhpbnQ2NF90LCBpbnQ2NF90KTsKK3ZvaWQgdGVzdEJpdE9yQXJnSW1t
KGludDY0X3QsIGludDY0X3QpOwordm9pZCB0ZXN0Qml0T3JJbW1BcmcoaW50NjRfdCwgaW50NjRf
dCk7Cit2b2lkIHRlc3RCaXRPckJpdE9yQXJnSW1tSW1tKGludDY0X3QsIGludDY0X3QsIGludDY0
X3QgYyk7Cit2b2lkIHRlc3RCaXRPckltbUJpdE9yQXJnSW1tKGludDY0X3QsIGludDY0X3QsIGlu
dDY0X3QgYyk7Cit2b2lkIHRlc3RCaXRPckFyZ3MzMihpbnQsIGludCk7Cit2b2lkIHRlc3RCaXRP
clNhbWVBcmczMihpbnQpOwordm9pZCB0ZXN0Qml0T3JJbW1zMzIoaW50LCBpbnQpOwordm9pZCB0
ZXN0Qml0T3JBcmdJbW0zMihpbnQsIGludCk7Cit2b2lkIHRlc3RCaXRPckltbUFyZzMyKGludCwg
aW50KTsKKwordm9pZCBhZGRBdG9taWNUZXN0cyhjb25zdCBjaGFyKiBmaWx0ZXIsIERlcXVlPFJl
ZlB0cjxTaGFyZWRUYXNrPHZvaWQoKT4+PiYgdGFza3MpOwordm9pZCBhZGRMb2FkVGVzdHMoY29u
c3QgY2hhciogZmlsdGVyLCBEZXF1ZTxSZWZQdHI8U2hhcmVkVGFzazx2b2lkKCk+Pj4mIHRhc2tz
KTsKK2Jvb2wgc2hvdWxkUnVuKGNvbnN0IGNoYXIqIGZpbHRlciwgY29uc3QgY2hhciogdGVzdE5h
bWUpOworCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy90ZXN0YjNfMS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVz
dGIzXzEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4MzExMmExNmZkNzBjMGY3MTU1OWMwNWZlNDI1YjFjNzYx
ZmRlYmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIz
XzEuY3BwCkBAIC0wLDAgKzEsMTc0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJ0ZXN0
YjMuaCIKKworI2lmIEVOQUJMRShCM19KSVQpCisKK0xvY2sgY3Jhc2hMb2NrOworCisvLyBNYWtl
IHN1cmUgdGhlIGNvbXBpbGVyIGRvZXMgbm90IHRyeSB0byBvcHRpbWl6ZSBhbnl0aGluZyBvdXQu
CitzdGF0aWMgTkVWRVJfSU5MSU5FIGRvdWJsZSB6ZXJvKCkKK3sKKyAgICByZXR1cm4gMC47Cit9
CisKK3N0YXRpYyBkb3VibGUgbmVnYXRpdmVaZXJvKCkKK3sKKyAgICByZXR1cm4gLXplcm8oKTsK
K30KKworYm9vbCBzaG91bGRSdW4oY29uc3QgY2hhciogZmlsdGVyLCBjb25zdCBjaGFyKiB0ZXN0
TmFtZSkKK3sKKyAgICAvLyBGSVhNRTogVGhlc2UgdGVzdHMgZmFpbCA8aHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTMzMD4uCisgICAgaWYgKCFmaWx0ZXIgJiYgaXNB
Uk02NCgpKSB7CisgICAgICAgIGZvciAoYXV0byYgZmFpbGluZ1Rlc3QgOiB7CisgICAgICAgICAg
ICAidGVzdFJlcG9ydFVzZWRSZWdpc3RlcnNMYXRlVXNlRm9sbG93ZWRCeUVhcmx5RGVmRG9lc05v
dE1hcmtVc2VBc0RlYWQiLAorICAgICAgICAgICAgInRlc3ROZWdGbG9hdFdpdGhVc2VsZXNzRG91
YmxlQ29udmVyc2lvbiIsCisgICAgICAgICAgICAidGVzdFBpblJlZ2lzdGVycyIsCisgICAgICAg
IH0pIHsKKyAgICAgICAgICAgIGlmIChXVEY6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZVdpdGhvdXRM
ZW5ndGgodGVzdE5hbWUsIGZhaWxpbmdUZXN0KSAhPSBXVEY6Om5vdEZvdW5kKSB7CisgICAgICAg
ICAgICAgICAgZGF0YUxvZ0xuKCIqKiogV2FybmluZzogU2tpcHBpbmcga25vd24tYmFkIHRlc3Q6
ICIsIHRlc3ROYW1lKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCFmaWx0ZXIgJiYgaXNYODYoKSkgeworICAg
ICAgICBmb3IgKGF1dG8mIGZhaWxpbmdUZXN0IDogeworICAgICAgICAgICAgInRlc3RSZXBvcnRV
c2VkUmVnaXN0ZXJzTGF0ZVVzZUZvbGxvd2VkQnlFYXJseURlZkRvZXNOb3RNYXJrVXNlQXNEZWFk
IiwKKyAgICAgICAgfSkgeworICAgICAgICAgICAgaWYgKFdURjo6ZmluZElnbm9yaW5nQVNDSUlD
YXNlV2l0aG91dExlbmd0aCh0ZXN0TmFtZSwgZmFpbGluZ1Rlc3QpICE9IFdURjo6bm90Rm91bmQp
IHsKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIioqKiBXYXJuaW5nOiBTa2lwcGluZyBrbm93
bi1iYWQgdGVzdDogIiwgdGVzdE5hbWUpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gIWZpbHRlciB8fCBX
VEY6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZVdpdGhvdXRMZW5ndGgodGVzdE5hbWUsIGZpbHRlcikg
IT0gV1RGOjpub3RGb3VuZDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgdGVzdFJv
dFIoVCB2YWx1ZUludCwgaW50MzJfdCBzaGlmdCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIAorICAgIFZhbHVlKiB2
YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBpZiAoc2l6ZW9mKFQpID09IDQpCisgICAgICAg
IHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksIHZh
bHVlKTsKKyAgICAKKyAgICBWYWx1ZSogYW1tb3VudCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJvdFIsIE9yaWdpbigpLCB2YWx1ZSwgYW1t
b3VudCkpOworICAgIAorICAgIENIRUNLX0VRKGNvbXBpbGVBbmRSdW48VD4ocHJvYywgdmFsdWVJ
bnQsIHNoaWZ0KSwgcm90YXRlUmlnaHQodmFsdWVJbnQsIHNoaWZ0KSk7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+Cit2b2lkIHRlc3RSb3RMKFQgdmFsdWVJbnQsIGludDMyX3Qgc2hpZnQpCit7
CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICAKKyAgICBWYWx1ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgaWYg
KHNpemVvZihUKSA9PSA0KQorICAgICAgICB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgVHJ1bmMsIE9yaWdpbigpLCB2YWx1ZSk7CisgICAgCisgICAgVmFsdWUqIGFtbW91bnQg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEpKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBS
b3RMLCBPcmlnaW4oKSwgdmFsdWUsIGFtbW91bnQpKTsKKyAgICAKKyAgICBDSEVDS19FUShjb21w
aWxlQW5kUnVuPFQ+KHByb2MsIHZhbHVlSW50LCBzaGlmdCksIHJvdGF0ZUxlZnQodmFsdWVJbnQs
IHNoaWZ0KSk7Cit9CisKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgdGVzdFJvdFJXaXRo
SW1tU2hpZnQoVCB2YWx1ZUludCwgaW50MzJfdCBzaGlmdCkKK3sKKyAgICBQcm9jZWR1cmUgcHJv
YzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIAorICAgIFZh
bHVlKiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBpZiAoc2l6ZW9mKFQpID09IDQpCisg
ICAgICAgIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2lu
KCksIHZhbHVlKTsKKyAgICAKKyAgICBWYWx1ZSogYW1tb3VudCA9IHJvb3QtPmFwcGVuZEludENv
bnN0YW50KHByb2MsIE9yaWdpbigpLCBJbnQzMiwgc2hpZnQpOworICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIFJvdFIsIE9yaWdpbigpLCB2YWx1ZSwgYW1tb3VudCkpOworICAg
IAorICAgIENIRUNLX0VRKGNvbXBpbGVBbmRSdW48VD4ocHJvYywgdmFsdWVJbnQsIHNoaWZ0KSwg
cm90YXRlUmlnaHQodmFsdWVJbnQsIHNoaWZ0KSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
Cit2b2lkIHRlc3RSb3RMV2l0aEltbVNoaWZ0KFQgdmFsdWVJbnQsIGludDMyX3Qgc2hpZnQpCit7
CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICAKKyAgICBWYWx1ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgaWYg
KHNpemVvZihUKSA9PSA0KQorICAgICAgICB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgVHJ1bmMsIE9yaWdpbigpLCB2YWx1ZSk7CisgICAgCisgICAgVmFsdWUqIGFtbW91bnQg
PSByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgSW50MzIsIHNoaWZ0KTsK
KyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSb3RMLCBPcmlnaW4oKSwgdmFs
dWUsIGFtbW91bnQpKTsKKyAgICAKKyAgICBDSEVDS19FUShjb21waWxlQW5kUnVuPFQ+KHByb2Ms
IHZhbHVlSW50LCBzaGlmdCksIHJvdGF0ZUxlZnQodmFsdWVJbnQsIHNoaWZ0KSk7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+Cit2b2lkIHRlc3RDb21wdXRlRGl2aXNpb25NYWdpYyhUIHZhbHVl
LCBUIG1hZ2ljTXVsdGlwbGllciwgdW5zaWduZWQgc2hpZnQpCit7CisgICAgRGl2aXNpb25NYWdp
YzxUPiBtYWdpYyA9IGNvbXB1dGVEaXZpc2lvbk1hZ2ljKHZhbHVlKTsKKyAgICBDSEVDSyhtYWdp
Yy5tYWdpY011bHRpcGxpZXIgPT0gbWFnaWNNdWx0aXBsaWVyKTsKKyAgICBDSEVDSyhtYWdpYy5z
aGlmdCA9PSBzaGlmdCk7Cit9CisKK3ZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKK3sKKyAg
ICBEZXF1ZTxSZWZQdHI8U2hhcmVkVGFzazx2b2lkKCk+Pj4gdGFza3M7CisKKyAgICBSVU5fTk9X
KHRlc3RUZXJtaW5hbFBhdGNocG9pbnRUaGF0TmVlZHNUb0JlU3BpbGxlZDIoKSk7CisgICAgUlVO
KHRlc3Q0MigpKTsKKyAgICBSVU4odGVzdExvYWQ0MigpKTsKKyAgICBSVU4odGVzdExvYWRBY3E0
MigpKTsKKyAgICBSVU4odGVzdExvYWRPZmZzZXRJbW05TWF4KCkpOworICAgIFJVTih0ZXN0TG9h
ZE9mZnNldEltbTlNYXhQbHVzT25lKCkpOworICAgIFJVTih0ZXN0TG9hZE9mZnNldEltbTlNYXhQ
bHVzVHdvKCkpOworICAgIFJVTih0ZXN0TG9hZE9mZnNldEltbTlNaW4oKSk7CisgICAgUlVOKHRl
c3RMb2FkT2Zmc2V0SW1tOU1pbk1pbnVzT25lKCkpOworICAgIFJVTih0ZXN0TG9hZE9mZnNldFNj
YWxlZFVuc2lnbmVkSW1tMTJNYXgoKSk7CisgICAgUlVOKHRlc3RMb2FkT2Zmc2V0U2NhbGVkVW5z
aWduZWRPdmVySW1tMTJNYXgoKSk7CisgICAgUlVOKHRlc3RBcmcoNDMpKTsKKyAgICBSVU4odGVz
dFJldHVybkNvbnN0NjQoNSkpOworICAgIFJVTih0ZXN0UmV0dXJuQ29uc3Q2NCgtNDIpKTsKKyAg
ICBSVU4odGVzdFJldHVyblZvaWQoKSk7CisKKyAgICBSVU5fQklOQVJZKHRlc3RCaXRYb3JUcmVl
QXJncywgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlko
dGVzdEJpdFhvclRyZWVBcmdzRXZlbiwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkp
OworICAgIFJVTl9CSU5BUlkodGVzdEJpdFhvclRyZWVBcmdJbW0sIGludDY0T3BlcmFuZHMoKSwg
aW50NjRPcGVyYW5kcygpKTsKKyAgICBSVU5fVU5BUlkodGVzdEFkZFRyZWVBcmczMiwgaW50MzJP
cGVyYW5kcygpKTsKKyAgICBSVU5fVU5BUlkodGVzdE11bFRyZWVBcmczMiwgaW50MzJPcGVyYW5k
cygpKTsKKyAgICBSVU5fVU5BUlkodGVzdEJpdEFuZFRyZWVBcmczMiwgaW50MzJPcGVyYW5kcygp
KTsKKyAgICBSVU5fVU5BUlkodGVzdEJpdE9yVHJlZUFyZzMyLCBpbnQzMk9wZXJhbmRzKCkpOwor
CisgICAgUlVOKHRlc3RBZGRBcmcoMTExKSk7CisgICAgUlVOKHRlc3RBZGRBcmdzKDEsIDEpKTsK
KyAgICBSVU4odGVzdEFkZEFyZ3MoMSwgMikpOworICAgIFJVTih0ZXN0QWRkQXJnSW1tKDEsIDIp
KTsKKyAgICBSVU4odGVzdEFkZEFyZ0ltbSgwLCAyKSk7CisgICAgUlVOKHRlc3RBZGRBcmdJbW0o
MSwgMCkpOworICAgIFJVTih0ZXN0QWRkSW1tQXJnKDEsIDIpKTsKKyAgICBSVU4odGVzdEFkZElt
bUFyZygwLCAyKSk7CisgICAgUlVOKHRlc3RBZGRJbW1BcmcoMSwgMCkpOworICAgIFJVTl9CSU5B
UlkodGVzdEFkZEFyZ01lbSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOworICAg
IFJVTl9CSU5BUlkodGVzdEFkZE1lbUFyZywgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRz
KCkpOworICAgIFJVTl9CSU5BUlkodGVzdEFkZEltbU1lbSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2
NE9wZXJhbmRzKCkpOworICAgIFJVTl9VTkFSWSh0ZXN0QWRkQXJnMzIsIGludDMyT3BlcmFuZHMo
KSk7CisgICAgUlVOKHRlc3RBZGRBcmdzMzIoMSwgMSkpOworICAgIFJVTih0ZXN0QWRkQXJnczMy
KDEsIDIpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RBZGRBcmdNZW0zMiwgaW50MzJPcGVyYW5kcygp
LCBpbnQzMk9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlkodGVzdEFkZE1lbUFyZzMyLCBpbnQz
Mk9wZXJhbmRzKCksIGludDMyT3BlcmFuZHMoKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0QWRkSW1t
TWVtMzIsIGludDMyT3BlcmFuZHMoKSwgaW50MzJPcGVyYW5kcygpKTsKKyAgICBSVU5fQklOQVJZ
KHRlc3RBZGROZWcxLCBpbnQzMk9wZXJhbmRzKCksIGludDMyT3BlcmFuZHMoKSk7CisgICAgUlVO
X0JJTkFSWSh0ZXN0QWRkTmVnMiwgaW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkpOwor
ICAgIFJVTih0ZXN0QWRkQXJnWmVyb0ltbVpEZWYoKSk7CisgICAgUlVOKHRlc3RBZGRMb2FkVHdp
Y2UoKSk7CisgICAgUlVOX1RFUk5BUlkodGVzdEFkZE11bE11bEFyZ3MsIGludDY0T3BlcmFuZHMo
KSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOworCisgICAgUlVOKHRlc3RBZGRB
cmdEb3VibGUoTV9QSSkpOworICAgIFJVTih0ZXN0QWRkQXJnc0RvdWJsZShNX1BJLCAxKSk7Cisg
ICAgUlVOKHRlc3RBZGRBcmdzRG91YmxlKE1fUEksIC1NX1BJKSk7CisgICAgUlVOKHRlc3RBZGRB
cmdJbW1Eb3VibGUoTV9QSSwgMSkpOworICAgIFJVTih0ZXN0QWRkQXJnSW1tRG91YmxlKE1fUEks
IDApKTsKKyAgICBSVU4odGVzdEFkZEFyZ0ltbURvdWJsZShNX1BJLCBuZWdhdGl2ZVplcm8oKSkp
OworICAgIFJVTih0ZXN0QWRkQXJnSW1tRG91YmxlKDAsIDApKTsKKyAgICBSVU4odGVzdEFkZEFy
Z0ltbURvdWJsZSgwLCBuZWdhdGl2ZVplcm8oKSkpOworICAgIFJVTih0ZXN0QWRkQXJnSW1tRG91
YmxlKG5lZ2F0aXZlWmVybygpLCAwKSk7CisgICAgUlVOKHRlc3RBZGRBcmdJbW1Eb3VibGUobmVn
YXRpdmVaZXJvKCksIG5lZ2F0aXZlWmVybygpKSk7CisgICAgUlVOKHRlc3RBZGRJbW1BcmdEb3Vi
bGUoTV9QSSwgMSkpOworICAgIFJVTih0ZXN0QWRkSW1tQXJnRG91YmxlKE1fUEksIDApKTsKKyAg
ICBSVU4odGVzdEFkZEltbUFyZ0RvdWJsZShNX1BJLCBuZWdhdGl2ZVplcm8oKSkpOworICAgIFJV
Tih0ZXN0QWRkSW1tQXJnRG91YmxlKDAsIDApKTsKKyAgICBSVU4odGVzdEFkZEltbUFyZ0RvdWJs
ZSgwLCBuZWdhdGl2ZVplcm8oKSkpOworICAgIFJVTih0ZXN0QWRkSW1tQXJnRG91YmxlKG5lZ2F0
aXZlWmVybygpLCAwKSk7CisgICAgUlVOKHRlc3RBZGRJbW1BcmdEb3VibGUobmVnYXRpdmVaZXJv
KCksIG5lZ2F0aXZlWmVybygpKSk7CisgICAgUlVOKHRlc3RBZGRJbW1zRG91YmxlKE1fUEksIDEp
KTsKKyAgICBSVU4odGVzdEFkZEltbXNEb3VibGUoTV9QSSwgMCkpOworICAgIFJVTih0ZXN0QWRk
SW1tc0RvdWJsZShNX1BJLCBuZWdhdGl2ZVplcm8oKSkpOworICAgIFJVTih0ZXN0QWRkSW1tc0Rv
dWJsZSgwLCAwKSk7CisgICAgUlVOKHRlc3RBZGRJbW1zRG91YmxlKDAsIG5lZ2F0aXZlWmVybygp
KSk7CisgICAgUlVOKHRlc3RBZGRJbW1zRG91YmxlKG5lZ2F0aXZlWmVybygpLCBuZWdhdGl2ZVpl
cm8oKSkpOworICAgIFJVTl9VTkFSWSh0ZXN0QWRkQXJnRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVy
YW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0QWRkQXJnc0Zsb2F0LCBmbG9hdGlu
Z1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7
CisgICAgUlVOX0JJTkFSWSh0ZXN0QWRkRlBSQXJnc0Zsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFu
ZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJ
TkFSWSh0ZXN0QWRkQXJnSW1tRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwg
ZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RBZGRJ
bW1BcmdGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdEFkZEltbXNGbG9hdCwgZmxv
YXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+
KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0QWRkQXJnRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZl
cnNpb24sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFSWSh0
ZXN0QWRkQXJnc0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAg
UlVOX0JJTkFSWSh0ZXN0QWRkQXJnc0Zsb2F0V2l0aEVmZmVjdGZ1bERvdWJsZUNvbnZlcnNpb24s
IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZs
b2F0PigpKTsKKworICAgIFJVTih0ZXN0TXVsQXJnKDUpKTsKKyAgICBSVU4odGVzdE11bEFkZEFy
Zyg1KSk7CisgICAgUlVOKHRlc3RNdWxBZGRBcmcoODUpKTsKKyAgICBSVU4odGVzdE11bEFyZ1N0
b3JlKDUpKTsKKyAgICBSVU4odGVzdE11bEFyZ1N0b3JlKDg1KSk7CisgICAgUlVOKHRlc3RNdWxB
cmdzKDEsIDEpKTsKKyAgICBSVU4odGVzdE11bEFyZ3MoMSwgMikpOworICAgIFJVTih0ZXN0TXVs
QXJncygzLCAzKSk7CisgICAgUlVOKHRlc3RNdWxBcmdJbW0oMSwgMikpOworICAgIFJVTih0ZXN0
TXVsQXJnSW1tKDEsIDQpKTsKKyAgICBSVU4odGVzdE11bEFyZ0ltbSgxLCA4KSk7CisgICAgUlVO
KHRlc3RNdWxBcmdJbW0oMSwgMTYpKTsKKyAgICBSVU4odGVzdE11bEFyZ0ltbSgxLCAweDgwMDAw
MDAwbGx1KSk7CisgICAgUlVOKHRlc3RNdWxBcmdJbW0oMSwgMHg4MDAwMDAwMDAwMDBsbHUpKTsK
KyAgICBSVU4odGVzdE11bEFyZ0ltbSg3LCAyKSk7CisgICAgUlVOKHRlc3RNdWxBcmdJbW0oNywg
NCkpOworICAgIFJVTih0ZXN0TXVsQXJnSW1tKDcsIDgpKTsKKyAgICBSVU4odGVzdE11bEFyZ0lt
bSg3LCAxNikpOworICAgIFJVTih0ZXN0TXVsQXJnSW1tKDcsIDB4ODAwMDAwMDBsbHUpKTsKKyAg
ICBSVU4odGVzdE11bEFyZ0ltbSg3LCAweDgwMDAwMDAwMDAwMGxsdSkpOworICAgIFJVTih0ZXN0
TXVsQXJnSW1tKC00MiwgMikpOworICAgIFJVTih0ZXN0TXVsQXJnSW1tKC00MiwgNCkpOworICAg
IFJVTih0ZXN0TXVsQXJnSW1tKC00MiwgOCkpOworICAgIFJVTih0ZXN0TXVsQXJnSW1tKC00Miwg
MTYpKTsKKyAgICBSVU4odGVzdE11bEFyZ0ltbSgtNDIsIDB4ODAwMDAwMDBsbHUpKTsKKyAgICBS
VU4odGVzdE11bEFyZ0ltbSgtNDIsIDB4ODAwMDAwMDAwMDAwbGx1KSk7CisgICAgUlVOKHRlc3RN
dWxBcmdJbW0oMCwgMikpOworICAgIFJVTih0ZXN0TXVsQXJnSW1tKDEsIDApKTsKKyAgICBSVU4o
dGVzdE11bEFyZ0ltbSgzLCAzKSk7CisgICAgUlVOKHRlc3RNdWxBcmdJbW0oMywgLTEpKTsKKyAg
ICBSVU4odGVzdE11bEFyZ0ltbSgtMywgLTEpKTsKKyAgICBSVU4odGVzdE11bEFyZ0ltbSgwLCAt
MSkpOworICAgIFJVTih0ZXN0TXVsSW1tQXJnKDEsIDIpKTsKKyAgICBSVU4odGVzdE11bEltbUFy
ZygwLCAyKSk7CisgICAgUlVOKHRlc3RNdWxJbW1BcmcoMSwgMCkpOworICAgIFJVTih0ZXN0TXVs
SW1tQXJnKDMsIDMpKTsKKyAgICBSVU4odGVzdE11bEltbTMyU2lnbkV4dGVuZCgxLCAyKSk7Cisg
ICAgUlVOKHRlc3RNdWxJbW0zMlNpZ25FeHRlbmQoMCwgMikpOworICAgIFJVTih0ZXN0TXVsSW1t
MzJTaWduRXh0ZW5kKDEsIDApKTsKKyAgICBSVU4odGVzdE11bEltbTMyU2lnbkV4dGVuZCgzLCAz
KSk7CisgICAgUlVOKHRlc3RNdWxJbW0zMlNpZ25FeHRlbmQoMHhGRkZGRkZGRiwgMHhGRkZGRkZG
RikpOworICAgIFJVTih0ZXN0TXVsSW1tMzJTaWduRXh0ZW5kKDB4RkZGRkZGRkUsIDB4RkZGRkZG
RkYpKTsKKyAgICBSVU4odGVzdE11bEltbTMyU2lnbkV4dGVuZCgweEZGRkZGRkZGLCAweEZGRkZG
RkZFKSk7CisgICAgUlVOKHRlc3RNdWxBcmdzMzIoMSwgMSkpOworICAgIFJVTih0ZXN0TXVsQXJn
czMyKDEsIDIpKTsKKyAgICBSVU4odGVzdE11bEFyZ3MzMigweEZGRkZGRkZGLCAweEZGRkZGRkZG
KSk7CisgICAgUlVOKHRlc3RNdWxBcmdzMzIoMHhGRkZGRkZGRSwgMHhGRkZGRkZGRikpOworICAg
IFJVTih0ZXN0TXVsQXJnczMyU2lnbkV4dGVuZCgxLCAxKSk7CisgICAgUlVOKHRlc3RNdWxBcmdz
MzJTaWduRXh0ZW5kKDEsIDIpKTsKKyAgICBSVU4odGVzdE11bEFyZ3MzMlNpZ25FeHRlbmQoMHhG
RkZGRkZGRiwgMHhGRkZGRkZGRikpOworICAgIFJVTih0ZXN0TXVsQXJnczMyU2lnbkV4dGVuZCgw
eEZGRkZGRkZFLCAweEZGRkZGRkZGKSk7CisgICAgUlVOKHRlc3RNdWxMb2FkVHdpY2UoKSk7Cisg
ICAgUlVOKHRlc3RNdWxBZGRBcmdzTGVmdCgpKTsKKyAgICBSVU4odGVzdE11bEFkZEFyZ3NSaWdo
dCgpKTsKKyAgICBSVU4odGVzdE11bEFkZEFyZ3NMZWZ0MzIoKSk7CisgICAgUlVOKHRlc3RNdWxB
ZGRBcmdzUmlnaHQzMigpKTsKKyAgICBSVU4odGVzdE11bFN1YkFyZ3NMZWZ0KCkpOworICAgIFJV
Tih0ZXN0TXVsU3ViQXJnc1JpZ2h0KCkpOworICAgIFJVTih0ZXN0TXVsU3ViQXJnc0xlZnQzMigp
KTsKKyAgICBSVU4odGVzdE11bFN1YkFyZ3NSaWdodDMyKCkpOworICAgIFJVTih0ZXN0TXVsTmVn
QXJncygpKTsKKyAgICBSVU4odGVzdE11bE5lZ0FyZ3MzMigpKTsKKworICAgIFJVTl9CSU5BUlko
dGVzdE11bEFyZ05lZ0FyZywgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpCisgICAg
UlVOX0JJTkFSWSh0ZXN0TXVsTmVnQXJnQXJnLCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFu
ZHMoKSkKKyAgICBSVU5fVU5BUlkodGVzdE11bEFyZ0RvdWJsZSwgZmxvYXRpbmdQb2ludE9wZXJh
bmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0TXVsQXJnc0RvdWJsZSwgZmxvYXRp
bmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4o
KSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0TXVsQXJnSW1tRG91YmxlLCBmbG9hdGluZ1BvaW50T3Bl
cmFuZHM8ZG91YmxlPigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBS
VU5fQklOQVJZKHRlc3RNdWxJbW1BcmdEb3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3Vi
bGU+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9CSU5BUlko
dGVzdE11bEltbXNEb3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCksIGZsb2F0
aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0TXVsQXJnRmxv
YXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0
TXVsQXJnc0Zsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9p
bnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0TXVsQXJnSW1tRmxvYXQs
IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZs
b2F0PigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RNdWxJbW1BcmdGbG9hdCwgZmxvYXRpbmdQb2lu
dE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAg
IFJVTl9CSU5BUlkodGVzdE11bEltbXNGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0
PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0
TXVsQXJnRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24sIGZsb2F0aW5nUG9pbnRPcGVy
YW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0TXVsQXJnc0Zsb2F0V2l0aFVzZWxl
c3NEb3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0
aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0TXVsQXJnc0Zs
b2F0V2l0aEVmZmVjdGZ1bERvdWJsZUNvbnZlcnNpb24sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxm
bG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKworICAgIFJVTih0ZXN0
RGl2QXJnRG91YmxlKE1fUEkpKTsKKyAgICBSVU4odGVzdERpdkFyZ3NEb3VibGUoTV9QSSwgMSkp
OworICAgIFJVTih0ZXN0RGl2QXJnc0RvdWJsZShNX1BJLCAtTV9QSSkpOworICAgIFJVTih0ZXN0
RGl2QXJnSW1tRG91YmxlKE1fUEksIDEpKTsKKyAgICBSVU4odGVzdERpdkFyZ0ltbURvdWJsZShN
X1BJLCAwKSk7CisgICAgUlVOKHRlc3REaXZBcmdJbW1Eb3VibGUoTV9QSSwgbmVnYXRpdmVaZXJv
KCkpKTsKKyAgICBSVU4odGVzdERpdkFyZ0ltbURvdWJsZSgwLCAwKSk7CisgICAgUlVOKHRlc3RE
aXZBcmdJbW1Eb3VibGUoMCwgbmVnYXRpdmVaZXJvKCkpKTsKKyAgICBSVU4odGVzdERpdkFyZ0lt
bURvdWJsZShuZWdhdGl2ZVplcm8oKSwgMCkpOworICAgIFJVTih0ZXN0RGl2QXJnSW1tRG91Ymxl
KG5lZ2F0aXZlWmVybygpLCBuZWdhdGl2ZVplcm8oKSkpOworICAgIFJVTih0ZXN0RGl2SW1tQXJn
RG91YmxlKE1fUEksIDEpKTsKKyAgICBSVU4odGVzdERpdkltbUFyZ0RvdWJsZShNX1BJLCAwKSk7
CisgICAgUlVOKHRlc3REaXZJbW1BcmdEb3VibGUoTV9QSSwgbmVnYXRpdmVaZXJvKCkpKTsKKyAg
ICBSVU4odGVzdERpdkltbUFyZ0RvdWJsZSgwLCAwKSk7CisgICAgUlVOKHRlc3REaXZJbW1BcmdE
b3VibGUoMCwgbmVnYXRpdmVaZXJvKCkpKTsKKyAgICBSVU4odGVzdERpdkltbUFyZ0RvdWJsZShu
ZWdhdGl2ZVplcm8oKSwgMCkpOworICAgIFJVTih0ZXN0RGl2SW1tQXJnRG91YmxlKG5lZ2F0aXZl
WmVybygpLCBuZWdhdGl2ZVplcm8oKSkpOworICAgIFJVTih0ZXN0RGl2SW1tc0RvdWJsZShNX1BJ
LCAxKSk7CisgICAgUlVOKHRlc3REaXZJbW1zRG91YmxlKE1fUEksIDApKTsKKyAgICBSVU4odGVz
dERpdkltbXNEb3VibGUoTV9QSSwgbmVnYXRpdmVaZXJvKCkpKTsKKyAgICBSVU4odGVzdERpdklt
bXNEb3VibGUoMCwgMCkpOworICAgIFJVTih0ZXN0RGl2SW1tc0RvdWJsZSgwLCBuZWdhdGl2ZVpl
cm8oKSkpOworICAgIFJVTih0ZXN0RGl2SW1tc0RvdWJsZShuZWdhdGl2ZVplcm8oKSwgbmVnYXRp
dmVaZXJvKCkpKTsKKyAgICBSVU5fVU5BUlkodGVzdERpdkFyZ0Zsb2F0LCBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdERpdkFyZ3NGbG9hdCwgZmxv
YXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+
KCkpOworICAgIFJVTl9CSU5BUlkodGVzdERpdkFyZ0ltbUZsb2F0LCBmbG9hdGluZ1BvaW50T3Bl
cmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVO
X0JJTkFSWSh0ZXN0RGl2SW1tQXJnRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4o
KSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RE
aXZJbW1zRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2lu
dE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fVU5BUlkodGVzdERpdkFyZ0Zsb2F0V2l0aFVz
ZWxlc3NEb3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwor
ICAgIFJVTl9CSU5BUlkodGVzdERpdkFyZ3NGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lv
biwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8
ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdERpdkFyZ3NGbG9hdFdpdGhFZmZlY3RmdWxE
b3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5n
UG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisKKyAgICBSVU5fQklOQVJZKHRlc3RVRGl2QXJnc0lu
dDMyLCBpbnQzMk9wZXJhbmRzKCksIGludDMyT3BlcmFuZHMoKSk7CisgICAgUlVOX0JJTkFSWSh0
ZXN0VURpdkFyZ3NJbnQ2NCwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOworCisg
ICAgUlVOX1VOQVJZKHRlc3RNb2RBcmdEb3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3Vi
bGU+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdE1vZEFyZ3NEb3VibGUsIGZsb2F0aW5nUG9pbnRP
cGVyYW5kczxkb3VibGU+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAg
IFJVTl9CSU5BUlkodGVzdE1vZEFyZ0ltbURvdWJsZSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRv
dWJsZT4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX0JJTkFS
WSh0ZXN0TW9kSW1tQXJnRG91YmxlLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpLCBm
bG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RNb2RJ
bW1zRG91YmxlLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpLCBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fVU5BUlkodGVzdE1vZEFyZ0Zsb2F0LCBmbG9h
dGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdE1vZEFyZ3NG
bG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFu
ZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdE1vZEFyZ0ltbUZsb2F0LCBmbG9hdGlu
Z1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7
CisgICAgUlVOX0JJTkFSWSh0ZXN0TW9kSW1tQXJnRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5k
czxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fQklO
QVJZKHRlc3RNb2RJbW1zRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxv
YXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKworICAgIFJVTl9CSU5BUlkodGVzdFVNb2RB
cmdzSW50MzIsIGludDMyT3BlcmFuZHMoKSwgaW50MzJPcGVyYW5kcygpKTsKKyAgICBSVU5fQklO
QVJZKHRlc3RVTW9kQXJnc0ludDY0LCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSk7
CisKKyAgICBSVU4odGVzdFN1YkFyZygyNCkpOworICAgIFJVTih0ZXN0U3ViQXJncygxLCAxKSk7
CisgICAgUlVOKHRlc3RTdWJBcmdzKDEsIDIpKTsKKyAgICBSVU4odGVzdFN1YkFyZ3MoMTMsIC00
MikpOworICAgIFJVTih0ZXN0U3ViQXJncygtMTMsIDQyKSk7CisgICAgUlVOKHRlc3RTdWJBcmdJ
bW0oMSwgMSkpOworICAgIFJVTih0ZXN0U3ViQXJnSW1tKDEsIDIpKTsKKyAgICBSVU4odGVzdFN1
YkFyZ0ltbSgxMywgLTQyKSk7CisgICAgUlVOKHRlc3RTdWJBcmdJbW0oLTEzLCA0MikpOworICAg
IFJVTih0ZXN0U3ViQXJnSW1tKDQyLCAwKSk7CisgICAgUlVOKHRlc3RTdWJJbW1BcmcoMSwgMSkp
OworICAgIFJVTih0ZXN0U3ViSW1tQXJnKDEsIDIpKTsKKyAgICBSVU4odGVzdFN1YkltbUFyZygx
MywgLTQyKSk7CisgICAgUlVOKHRlc3RTdWJJbW1BcmcoLTEzLCA0MikpOworICAgIFJVTl9CSU5B
UlkodGVzdFN1YkFyZ01lbSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOworICAg
IFJVTl9CSU5BUlkodGVzdFN1Yk1lbUFyZywgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRz
KCkpOworICAgIFJVTl9CSU5BUlkodGVzdFN1YkltbU1lbSwgaW50MzJPcGVyYW5kcygpLCBpbnQz
Mk9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlkodGVzdFN1Yk1lbUltbSwgaW50MzJPcGVyYW5k
cygpLCBpbnQzMk9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlkodGVzdFN1Yk5lZywgaW50MzJP
cGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlkodGVzdE5lZ1N1Yiwg
aW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkpOworICAgIFJVTl9VTkFSWSh0ZXN0TmVn
VmFsdWVTdWJPbmUsIGludDMyT3BlcmFuZHMoKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0TmVnTXVs
QXJnSW1tLCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSk7CisgICAgUlVOX1RFUk5B
UlkodGVzdFN1Yk11bE11bEFyZ3MsIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpLCBp
bnQ2NE9wZXJhbmRzKCkpOworCisgICAgUlVOX1RFUk5BUlkodGVzdFN1YlN1YiwgaW50MzJPcGVy
YW5kcygpLCBpbnQzMk9wZXJhbmRzKCksIGludDMyT3BlcmFuZHMoKSk7CisgICAgUlVOX1RFUk5B
UlkodGVzdFN1YlN1YjIsIGludDMyT3BlcmFuZHMoKSwgaW50MzJPcGVyYW5kcygpLCBpbnQzMk9w
ZXJhbmRzKCkpOworICAgIFJVTl9URVJOQVJZKHRlc3RTdWJBZGQsIGludDMyT3BlcmFuZHMoKSwg
aW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlkodGVzdFN1
YkZpcnN0TmVnLCBpbnQzMk9wZXJhbmRzKCksIGludDMyT3BlcmFuZHMoKSk7CisKKyAgICBSVU4o
dGVzdFN1YkFyZ3MzMigxLCAxKSk7CisgICAgUlVOKHRlc3RTdWJBcmdzMzIoMSwgMikpOworICAg
IFJVTih0ZXN0U3ViQXJnczMyKDEzLCAtNDIpKTsKKyAgICBSVU4odGVzdFN1YkFyZ3MzMigtMTMs
IDQyKSk7CisgICAgUlVOKHRlc3RTdWJBcmdJbW0zMigxLCAxKSk7CisgICAgUlVOKHRlc3RTdWJB
cmdJbW0zMigxLCAyKSk7CisgICAgUlVOKHRlc3RTdWJBcmdJbW0zMigxMywgLTQyKSk7CisgICAg
UlVOKHRlc3RTdWJBcmdJbW0zMigtMTMsIDQyKSk7CisgICAgUlVOKHRlc3RTdWJJbW1BcmczMigx
LCAxKSk7CisgICAgUlVOKHRlc3RTdWJJbW1BcmczMigxLCAyKSk7CisgICAgUlVOKHRlc3RTdWJJ
bW1BcmczMigxMywgLTQyKSk7CisgICAgUlVOKHRlc3RTdWJJbW1BcmczMigtMTMsIDQyKSk7Cisg
ICAgUlVOX0JJTkFSWSh0ZXN0U3ViQXJnTWVtMzIsIGludDMyT3BlcmFuZHMoKSwgaW50MzJPcGVy
YW5kcygpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RTdWJNZW1BcmczMiwgaW50MzJPcGVyYW5kcygp
LCBpbnQzMk9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlkodGVzdFN1YkltbU1lbTMyLCBpbnQz
Mk9wZXJhbmRzKCksIGludDMyT3BlcmFuZHMoKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0U3ViTWVt
SW1tMzIsIGludDMyT3BlcmFuZHMoKSwgaW50MzJPcGVyYW5kcygpKTsKKyAgICBSVU5fVU5BUlko
dGVzdE5lZ1ZhbHVlU3ViT25lMzIsIGludDY0T3BlcmFuZHMoKSk7CisKKyAgICBSVU5fVU5BUlko
dGVzdFN1YkFyZ0RvdWJsZSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAg
UlVOX0JJTkFSWSh0ZXN0U3ViQXJnc0RvdWJsZSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJs
ZT4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX0JJTkFSWSh0
ZXN0U3ViQXJnSW1tRG91YmxlLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpLCBmbG9h
dGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RTdWJJbW1B
cmdEb3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCksIGZsb2F0aW5nUG9pbnRP
cGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdFN1YkltbXNEb3VibGUsIGZs
b2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3Vi
bGU+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0U3ViQXJnRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVy
YW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0U3ViQXJnc0Zsb2F0LCBmbG9hdGlu
Z1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7
CisgICAgUlVOX0JJTkFSWSh0ZXN0U3ViQXJnSW1tRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5k
czxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fQklO
QVJZKHRlc3RTdWJJbW1BcmdGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBm
bG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdFN1Yklt
bXNGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3Bl
cmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0U3ViQXJnRmxvYXRXaXRoVXNlbGVz
c0RvdWJsZUNvbnZlcnNpb24sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAg
UlVOX0JJTkFSWSh0ZXN0U3ViQXJnc0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uLCBm
bG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9h
dD4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0U3ViQXJnc0Zsb2F0V2l0aEVmZmVjdGZ1bERvdWJs
ZUNvbnZlcnNpb24sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2lu
dE9wZXJhbmRzPGZsb2F0PigpKTsKKworICAgIFJVTl9VTkFSWSh0ZXN0TmVnRG91YmxlLCBmbG9h
dGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fVU5BUlkodGVzdE5lZ0Zsb2F0
LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0TmVn
RmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxm
bG9hdD4oKSk7CisKKyAgICBSVU4odGVzdEJpdEFuZEFyZ3MoNDMsIDQzKSk7CisgICAgUlVOKHRl
c3RCaXRBbmRBcmdzKDQzLCAwKSk7CisgICAgUlVOKHRlc3RCaXRBbmRBcmdzKDEwLCAzKSk7Cisg
ICAgUlVOKHRlc3RCaXRBbmRBcmdzKDQyLCAweGZmZmZmZmZmZmZmZmZmZmYpKTsKKyAgICBSVU4o
dGVzdEJpdEFuZFNhbWVBcmcoNDMpKTsKKyAgICBSVU4odGVzdEJpdEFuZFNhbWVBcmcoMCkpOwor
ICAgIFJVTih0ZXN0Qml0QW5kU2FtZUFyZygzKSk7CisgICAgUlVOKHRlc3RCaXRBbmRTYW1lQXJn
KDB4ZmZmZmZmZmZmZmZmZmZmZikpOworICAgIFJVTih0ZXN0Qml0QW5kSW1tcyg0MywgNDMpKTsK
KyAgICBSVU4odGVzdEJpdEFuZEltbXMoNDMsIDApKTsKKyAgICBSVU4odGVzdEJpdEFuZEltbXMo
MTAsIDMpKTsKKyAgICBSVU4odGVzdEJpdEFuZEltbXMoNDIsIDB4ZmZmZmZmZmZmZmZmZmZmZikp
OworICAgIFJVTih0ZXN0Qml0QW5kQXJnSW1tKDQzLCA0MykpOworICAgIFJVTih0ZXN0Qml0QW5k
QXJnSW1tKDQzLCAwKSk7CisgICAgUlVOKHRlc3RCaXRBbmRBcmdJbW0oMTAsIDMpKTsKKyAgICBS
VU4odGVzdEJpdEFuZEFyZ0ltbSg0MiwgMHhmZmZmZmZmZmZmZmZmZmZmKSk7CisgICAgUlVOKHRl
c3RCaXRBbmRBcmdJbW0oNDIsIDB4ZmYpKTsKKyAgICBSVU4odGVzdEJpdEFuZEFyZ0ltbSgzMDAs
IDB4ZmYpKTsKKyAgICBSVU4odGVzdEJpdEFuZEFyZ0ltbSgtMzAwLCAweGZmKSk7CisgICAgUlVO
KHRlc3RCaXRBbmRBcmdJbW0oNDIsIDB4ZmZmZikpOworICAgIFJVTih0ZXN0Qml0QW5kQXJnSW1t
KDQwMDAwLCAweGZmZmYpKTsKKyAgICBSVU4odGVzdEJpdEFuZEFyZ0ltbSgtNDAwMDAsIDB4ZmZm
ZikpOworICAgIFJVTih0ZXN0Qml0QW5kSW1tQXJnKDQzLCA0MykpOworICAgIFJVTih0ZXN0Qml0
QW5kSW1tQXJnKDQzLCAwKSk7CisgICAgUlVOKHRlc3RCaXRBbmRJbW1BcmcoMTAsIDMpKTsKKyAg
ICBSVU4odGVzdEJpdEFuZEltbUFyZyg0MiwgMHhmZmZmZmZmZmZmZmZmZmZmKSk7CisgICAgUlVO
KHRlc3RCaXRBbmRCaXRBbmRBcmdJbW1JbW0oMiwgNywgMykpOworICAgIFJVTih0ZXN0Qml0QW5k
Qml0QW5kQXJnSW1tSW1tKDEsIDYsIDYpKTsKKyAgICBSVU4odGVzdEJpdEFuZEJpdEFuZEFyZ0lt
bUltbSgweGZmZmYsIDI0LCA3KSk7CisgICAgUlVOKHRlc3RCaXRBbmRJbW1CaXRBbmRBcmdJbW0o
NywgMiwgMykpOworICAgIFJVTih0ZXN0Qml0QW5kSW1tQml0QW5kQXJnSW1tKDYsIDEsIDYpKTsK
KyAgICBSVU4odGVzdEJpdEFuZEltbUJpdEFuZEFyZ0ltbSgyNCwgMHhmZmZmLCA3KSk7CisgICAg
UlVOKHRlc3RCaXRBbmRBcmdzMzIoNDMsIDQzKSk7CisgICAgUlVOKHRlc3RCaXRBbmRBcmdzMzIo
NDMsIDApKTsKKyAgICBSVU4odGVzdEJpdEFuZEFyZ3MzMigxMCwgMykpOworICAgIFJVTih0ZXN0
Qml0QW5kQXJnczMyKDQyLCAweGZmZmZmZmZmKSk7CisgICAgUlVOKHRlc3RCaXRBbmRTYW1lQXJn
MzIoNDMpKTsKKyAgICBSVU4odGVzdEJpdEFuZFNhbWVBcmczMigwKSk7CisgICAgUlVOKHRlc3RC
aXRBbmRTYW1lQXJnMzIoMykpOworICAgIFJVTih0ZXN0Qml0QW5kU2FtZUFyZzMyKDB4ZmZmZmZm
ZmYpKTsKKyAgICBSVU4odGVzdEJpdEFuZEltbXMzMig0MywgNDMpKTsKKyAgICBSVU4odGVzdEJp
dEFuZEltbXMzMig0MywgMCkpOworICAgIFJVTih0ZXN0Qml0QW5kSW1tczMyKDEwLCAzKSk7Cisg
ICAgUlVOKHRlc3RCaXRBbmRJbW1zMzIoNDIsIDB4ZmZmZmZmZmYpKTsKKyAgICBSVU4odGVzdEJp
dEFuZEFyZ0ltbTMyKDQzLCA0MykpOworICAgIFJVTih0ZXN0Qml0QW5kQXJnSW1tMzIoNDMsIDAp
KTsKKyAgICBSVU4odGVzdEJpdEFuZEFyZ0ltbTMyKDEwLCAzKSk7CisgICAgUlVOKHRlc3RCaXRB
bmRBcmdJbW0zMig0MiwgMHhmZmZmZmZmZikpOworICAgIFJVTih0ZXN0Qml0QW5kSW1tQXJnMzIo
NDMsIDQzKSk7CisgICAgUlVOKHRlc3RCaXRBbmRJbW1BcmczMig0MywgMCkpOworICAgIFJVTih0
ZXN0Qml0QW5kSW1tQXJnMzIoMTAsIDMpKTsKKyAgICBSVU4odGVzdEJpdEFuZEltbUFyZzMyKDQy
LCAweGZmZmZmZmZmKSk7CisgICAgUlVOKHRlc3RCaXRBbmRJbW1BcmczMig0MiwgMHhmZikpOwor
ICAgIFJVTih0ZXN0Qml0QW5kSW1tQXJnMzIoMzAwLCAweGZmKSk7CisgICAgUlVOKHRlc3RCaXRB
bmRJbW1BcmczMigtMzAwLCAweGZmKSk7CisgICAgUlVOKHRlc3RCaXRBbmRJbW1BcmczMig0Miwg
MHhmZmZmKSk7CisgICAgUlVOKHRlc3RCaXRBbmRJbW1BcmczMig0MDAwMCwgMHhmZmZmKSk7Cisg
ICAgUlVOKHRlc3RCaXRBbmRJbW1BcmczMigtNDAwMDAsIDB4ZmZmZikpOworICAgIFJVTih0ZXN0
Qml0QW5kQml0QW5kQXJnSW1tSW1tMzIoMiwgNywgMykpOworICAgIFJVTih0ZXN0Qml0QW5kQml0
QW5kQXJnSW1tSW1tMzIoMSwgNiwgNikpOworICAgIFJVTih0ZXN0Qml0QW5kQml0QW5kQXJnSW1t
SW1tMzIoMHhmZmZmLCAyNCwgNykpOworICAgIFJVTih0ZXN0Qml0QW5kSW1tQml0QW5kQXJnSW1t
MzIoNywgMiwgMykpOworICAgIFJVTih0ZXN0Qml0QW5kSW1tQml0QW5kQXJnSW1tMzIoNiwgMSwg
NikpOworICAgIFJVTih0ZXN0Qml0QW5kSW1tQml0QW5kQXJnSW1tMzIoMjQsIDB4ZmZmZiwgNykp
OworICAgIFJVTl9CSU5BUlkodGVzdEJpdEFuZFdpdGhNYXNrUmV0dXJuc0Jvb2xlYW5zLCBpbnQ2
NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSk7CisgICAgUlVOX1VOQVJZKHRlc3RCaXRBbmRB
cmdEb3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9CSU5B
UlkodGVzdEJpdEFuZEFyZ3NEb3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCks
IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdEJp
dEFuZEFyZ0ltbURvdWJsZSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSwgZmxvYXRp
bmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0Qml0QW5kSW1t
c0RvdWJsZSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSwgZmxvYXRpbmdQb2ludE9w
ZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RCaXRBbmRBcmdGbG9hdCwgZmxv
YXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RCaXRBbmRB
cmdzRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9w
ZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RCaXRBbmRBcmdJbW1GbG9hdCwg
ZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8Zmxv
YXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdEJpdEFuZEltbXNGbG9hdCwgZmxvYXRpbmdQb2lu
dE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAg
IFJVTl9CSU5BUlkodGVzdEJpdEFuZEFyZ3NGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lv
biwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8
ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdEJpdEFuZE5vdE5vdCwgaW50NjRPcGVyYW5k
cygpLCBpbnQ2NE9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlkodGVzdEJpdEFuZE5vdEltbSwg
aW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOworCisgICAgUlVOKHRlc3RCaXRPckFy
Z3MoNDMsIDQzKSk7CisgICAgUlVOKHRlc3RCaXRPckFyZ3MoNDMsIDApKTsKKyAgICBSVU4odGVz
dEJpdE9yQXJncygxMCwgMykpOworICAgIFJVTih0ZXN0Qml0T3JBcmdzKDQyLCAweGZmZmZmZmZm
ZmZmZmZmZmYpKTsKKyAgICBSVU4odGVzdEJpdE9yU2FtZUFyZyg0MykpOworICAgIFJVTih0ZXN0
Qml0T3JTYW1lQXJnKDApKTsKKyAgICBSVU4odGVzdEJpdE9yU2FtZUFyZygzKSk7CisgICAgUlVO
KHRlc3RCaXRPclNhbWVBcmcoMHhmZmZmZmZmZmZmZmZmZmZmKSk7CisgICAgUlVOKHRlc3RCaXRP
ckltbXMoNDMsIDQzKSk7CisgICAgUlVOKHRlc3RCaXRPckltbXMoNDMsIDApKTsKKyAgICBSVU4o
dGVzdEJpdE9ySW1tcygxMCwgMykpOworICAgIFJVTih0ZXN0Qml0T3JJbW1zKDQyLCAweGZmZmZm
ZmZmZmZmZmZmZmYpKTsKKyAgICBSVU4odGVzdEJpdE9yQXJnSW1tKDQzLCA0MykpOworICAgIFJV
Tih0ZXN0Qml0T3JBcmdJbW0oNDMsIDApKTsKKyAgICBSVU4odGVzdEJpdE9yQXJnSW1tKDEwLCAz
KSk7CisgICAgUlVOKHRlc3RCaXRPckFyZ0ltbSg0MiwgMHhmZmZmZmZmZmZmZmZmZmZmKSk7Cisg
ICAgUlVOKHRlc3RCaXRPckltbUFyZyg0MywgNDMpKTsKKyAgICBSVU4odGVzdEJpdE9ySW1tQXJn
KDQzLCAwKSk7CisgICAgUlVOKHRlc3RCaXRPckltbUFyZygxMCwgMykpOworICAgIFJVTih0ZXN0
Qml0T3JJbW1BcmcoNDIsIDB4ZmZmZmZmZmZmZmZmZmZmZikpOworICAgIFJVTih0ZXN0Qml0T3JC
aXRPckFyZ0ltbUltbSgyLCA3LCAzKSk7CisgICAgUlVOKHRlc3RCaXRPckJpdE9yQXJnSW1tSW1t
KDEsIDYsIDYpKTsKKyAgICBSVU4odGVzdEJpdE9yQml0T3JBcmdJbW1JbW0oMHhmZmZmLCAyNCwg
NykpOworICAgIFJVTih0ZXN0Qml0T3JJbW1CaXRPckFyZ0ltbSg3LCAyLCAzKSk7CisgICAgUlVO
KHRlc3RCaXRPckltbUJpdE9yQXJnSW1tKDYsIDEsIDYpKTsKKyAgICBSVU4odGVzdEJpdE9ySW1t
Qml0T3JBcmdJbW0oMjQsIDB4ZmZmZiwgNykpOworICAgIFJVTih0ZXN0Qml0T3JBcmdzMzIoNDMs
IDQzKSk7CisgICAgUlVOKHRlc3RCaXRPckFyZ3MzMig0MywgMCkpOworICAgIFJVTih0ZXN0Qml0
T3JBcmdzMzIoMTAsIDMpKTsKKyAgICBSVU4odGVzdEJpdE9yQXJnczMyKDQyLCAweGZmZmZmZmZm
KSk7CisgICAgUlVOKHRlc3RCaXRPclNhbWVBcmczMig0MykpOworICAgIFJVTih0ZXN0Qml0T3JT
YW1lQXJnMzIoMCkpOworICAgIFJVTih0ZXN0Qml0T3JTYW1lQXJnMzIoMykpOworICAgIFJVTih0
ZXN0Qml0T3JTYW1lQXJnMzIoMHhmZmZmZmZmZikpOworICAgIFJVTih0ZXN0Qml0T3JJbW1zMzIo
NDMsIDQzKSk7CisgICAgUlVOKHRlc3RCaXRPckltbXMzMig0MywgMCkpOworICAgIFJVTih0ZXN0
Qml0T3JJbW1zMzIoMTAsIDMpKTsKKyAgICBSVU4odGVzdEJpdE9ySW1tczMyKDQyLCAweGZmZmZm
ZmZmKSk7CisgICAgUlVOKHRlc3RCaXRPckFyZ0ltbTMyKDQzLCA0MykpOworICAgIFJVTih0ZXN0
Qml0T3JBcmdJbW0zMig0MywgMCkpOworICAgIFJVTih0ZXN0Qml0T3JBcmdJbW0zMigxMCwgMykp
OworICAgIFJVTih0ZXN0Qml0T3JBcmdJbW0zMig0MiwgMHhmZmZmZmZmZikpOworICAgIFJVTih0
ZXN0Qml0T3JJbW1BcmczMig0MywgNDMpKTsKKyAgICBSVU4odGVzdEJpdE9ySW1tQXJnMzIoNDMs
IDApKTsKKyAgICBSVU4odGVzdEJpdE9ySW1tQXJnMzIoMTAsIDMpKTsKKyAgICBSVU4odGVzdEJp
dE9ySW1tQXJnMzIoNDIsIDB4ZmZmZmZmZmYpKTsKKyAgICBSVU4odGVzdEJpdE9yQml0T3JBcmdJ
bW1JbW0zMigyLCA3LCAzKSk7CisgICAgUlVOKHRlc3RCaXRPckJpdE9yQXJnSW1tSW1tMzIoMSwg
NiwgNikpOworICAgIFJVTih0ZXN0Qml0T3JCaXRPckFyZ0ltbUltbTMyKDB4ZmZmZiwgMjQsIDcp
KTsKKyAgICBSVU4odGVzdEJpdE9ySW1tQml0T3JBcmdJbW0zMig3LCAyLCAzKSk7CisgICAgUlVO
KHRlc3RCaXRPckltbUJpdE9yQXJnSW1tMzIoNiwgMSwgNikpOworICAgIFJVTih0ZXN0Qml0T3JJ
bW1CaXRPckFyZ0ltbTMyKDI0LCAweGZmZmYsIDcpKTsKKyAgICBSVU5fVU5BUlkodGVzdEJpdE9y
QXJnRG91YmxlLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fQklO
QVJZKHRlc3RCaXRPckFyZ3NEb3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCks
IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdEJp
dE9yQXJnSW1tRG91YmxlLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpLCBmbG9hdGlu
Z1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RCaXRPckltbXNE
b3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCksIGZsb2F0aW5nUG9pbnRPcGVy
YW5kczxkb3VibGU+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Qml0T3JBcmdGbG9hdCwgZmxvYXRp
bmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RCaXRPckFyZ3NG
bG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFu
ZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdEJpdE9yQXJnSW1tRmxvYXQsIGZsb2F0
aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0Pigp
KTsKKyAgICBSVU5fQklOQVJZKHRlc3RCaXRPckltbXNGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJh
bmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9C
SU5BUlkodGVzdEJpdE9yQXJnc0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uLCBmbG9h
dGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4o
KSk7CisgICAgUlVOX1RFUk5BUlkodGVzdEJpdE9yQW5kQW5kQXJncywgaW50NjRPcGVyYW5kcygp
LCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0
Qml0T3JBbmRTYW1lQXJncywgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOworICAg
IFJVTl9CSU5BUlkodGVzdEJpdE9yTm90Tm90LCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFu
ZHMoKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0Qml0T3JOb3RJbW0sIGludDY0T3BlcmFuZHMoKSwg
aW50NjRPcGVyYW5kcygpKTsKKworICAgIFJVTl9CSU5BUlkodGVzdEJpdFhvckFyZ3MsIGludDY0
T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKKyAgICBSVU5fVU5BUlkodGVzdEJpdFhvclNh
bWVBcmcsIGludDY0T3BlcmFuZHMoKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0Qml0WG9ySW1tcywg
aW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlkodGVzdEJp
dFhvckFyZ0ltbSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOworICAgIFJVTl9C
SU5BUlkodGVzdEJpdFhvckltbUFyZywgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkp
OworICAgIFJVTih0ZXN0Qml0WG9yQml0WG9yQXJnSW1tSW1tKDIsIDcsIDMpKTsKKyAgICBSVU4o
dGVzdEJpdFhvckJpdFhvckFyZ0ltbUltbSgxLCA2LCA2KSk7CisgICAgUlVOKHRlc3RCaXRYb3JC
aXRYb3JBcmdJbW1JbW0oMHhmZmZmLCAyNCwgNykpOworICAgIFJVTih0ZXN0Qml0WG9ySW1tQml0
WG9yQXJnSW1tKDcsIDIsIDMpKTsKKyAgICBSVU4odGVzdEJpdFhvckltbUJpdFhvckFyZ0ltbSg2
LCAxLCA2KSk7CisgICAgUlVOKHRlc3RCaXRYb3JJbW1CaXRYb3JBcmdJbW0oMjQsIDB4ZmZmZiwg
NykpOworICAgIFJVTih0ZXN0Qml0WG9yQXJnczMyKDQzLCA0MykpOworICAgIFJVTih0ZXN0Qml0
WG9yQXJnczMyKDQzLCAwKSk7CisgICAgUlVOKHRlc3RCaXRYb3JBcmdzMzIoMTAsIDMpKTsKKyAg
ICBSVU4odGVzdEJpdFhvckFyZ3MzMig0MiwgMHhmZmZmZmZmZikpOworICAgIFJVTih0ZXN0Qml0
WG9yU2FtZUFyZzMyKDQzKSk7CisgICAgUlVOKHRlc3RCaXRYb3JTYW1lQXJnMzIoMCkpOworICAg
IFJVTih0ZXN0Qml0WG9yU2FtZUFyZzMyKDMpKTsKKyAgICBSVU4odGVzdEJpdFhvclNhbWVBcmcz
MigweGZmZmZmZmZmKSk7CisgICAgUlVOKHRlc3RCaXRYb3JJbW1zMzIoNDMsIDQzKSk7CisgICAg
UlVOKHRlc3RCaXRYb3JJbW1zMzIoNDMsIDApKTsKKyAgICBSVU4odGVzdEJpdFhvckltbXMzMigx
MCwgMykpOworICAgIFJVTih0ZXN0Qml0WG9ySW1tczMyKDQyLCAweGZmZmZmZmZmKSk7CisgICAg
UlVOKHRlc3RCaXRYb3JBcmdJbW0zMig0MywgNDMpKTsKKyAgICBSVU4odGVzdEJpdFhvckFyZ0lt
bTMyKDQzLCAwKSk7CisgICAgUlVOKHRlc3RCaXRYb3JBcmdJbW0zMigxMCwgMykpOworICAgIFJV
Tih0ZXN0Qml0WG9yQXJnSW1tMzIoNDIsIDB4ZmZmZmZmZmYpKTsKKyAgICBSVU4odGVzdEJpdFhv
ckltbUFyZzMyKDQzLCA0MykpOworICAgIFJVTih0ZXN0Qml0WG9ySW1tQXJnMzIoNDMsIDApKTsK
KyAgICBSVU4odGVzdEJpdFhvckltbUFyZzMyKDEwLCAzKSk7CisgICAgUlVOKHRlc3RCaXRYb3JJ
bW1BcmczMig0MiwgMHhmZmZmZmZmZikpOworICAgIFJVTih0ZXN0Qml0WG9yQml0WG9yQXJnSW1t
SW1tMzIoMiwgNywgMykpOworICAgIFJVTih0ZXN0Qml0WG9yQml0WG9yQXJnSW1tSW1tMzIoMSwg
NiwgNikpOworICAgIFJVTih0ZXN0Qml0WG9yQml0WG9yQXJnSW1tSW1tMzIoMHhmZmZmLCAyNCwg
NykpOworICAgIFJVTih0ZXN0Qml0WG9ySW1tQml0WG9yQXJnSW1tMzIoNywgMiwgMykpOworICAg
IFJVTih0ZXN0Qml0WG9ySW1tQml0WG9yQXJnSW1tMzIoNiwgMSwgNikpOworICAgIFJVTih0ZXN0
Qml0WG9ySW1tQml0WG9yQXJnSW1tMzIoMjQsIDB4ZmZmZiwgNykpOworICAgIFJVTl9URVJOQVJZ
KHRlc3RCaXRYb3JBbmRBbmRBcmdzLCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSwg
aW50NjRPcGVyYW5kcygpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RCaXRYb3JBbmRTYW1lQXJncywg
aW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOworCisgICAgUlVOX1VOQVJZKHRlc3RC
aXROb3RBcmcsIGludDY0T3BlcmFuZHMoKSk7CisgICAgUlVOX1VOQVJZKHRlc3RCaXROb3RJbW0s
IGludDY0T3BlcmFuZHMoKSk7CisgICAgUlVOX1VOQVJZKHRlc3RCaXROb3RNZW0sIGludDY0T3Bl
cmFuZHMoKSk7CisgICAgUlVOX1VOQVJZKHRlc3RCaXROb3RBcmczMiwgaW50MzJPcGVyYW5kcygp
KTsKKyAgICBSVU5fVU5BUlkodGVzdEJpdE5vdEltbTMyLCBpbnQzMk9wZXJhbmRzKCkpOworICAg
IFJVTl9VTkFSWSh0ZXN0Qml0Tm90TWVtMzIsIGludDMyT3BlcmFuZHMoKSk7CisgICAgUlVOX0JJ
TkFSWSh0ZXN0Tm90T25Cb29sZWFuQW5kQnJhbmNoMzIsIGludDMyT3BlcmFuZHMoKSwgaW50MzJP
cGVyYW5kcygpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RCaXROb3RPbkJvb2xlYW5BbmRCcmFuY2gz
MiwgaW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkpOworCisgICAgUlVOKHRlc3RTaGxB
cmdzKDEsIDApKTsKKyAgICBSVU4odGVzdFNobEFyZ3MoMSwgMSkpOworICAgIFJVTih0ZXN0U2hs
QXJncygxLCA2MikpOworICAgIFJVTih0ZXN0U2hsQXJncygweGZmZmZmZmZmZmZmZmZmZmYsIDAp
KTsKKyAgICBSVU4odGVzdFNobEFyZ3MoMHhmZmZmZmZmZmZmZmZmZmZmLCAxKSk7CisgICAgUlVO
KHRlc3RTaGxBcmdzKDB4ZmZmZmZmZmZmZmZmZmZmZiwgNjMpKTsKKyAgICBSVU4odGVzdFNobElt
bXMoMSwgMCkpOworICAgIFJVTih0ZXN0U2hsSW1tcygxLCAxKSk7CisgICAgUlVOKHRlc3RTaGxJ
bW1zKDEsIDYyKSk7CisgICAgUlVOKHRlc3RTaGxJbW1zKDEsIDY1KSk7CisgICAgUlVOKHRlc3RT
aGxJbW1zKDB4ZmZmZmZmZmZmZmZmZmZmZiwgMCkpOworICAgIFJVTih0ZXN0U2hsSW1tcygweGZm
ZmZmZmZmZmZmZmZmZmYsIDEpKTsKKyAgICBSVU4odGVzdFNobEltbXMoMHhmZmZmZmZmZmZmZmZm
ZmZmLCA2MykpOworICAgIFJVTih0ZXN0U2hsQXJnSW1tKDEsIDApKTsKKyAgICBSVU4odGVzdFNo
bEFyZ0ltbSgxLCAxKSk7CisgICAgUlVOKHRlc3RTaGxBcmdJbW0oMSwgNjIpKTsKKyAgICBSVU4o
dGVzdFNobEFyZ0ltbSgxLCA2NSkpOworICAgIFJVTih0ZXN0U2hsQXJnSW1tKDB4ZmZmZmZmZmZm
ZmZmZmZmZiwgMCkpOworICAgIFJVTih0ZXN0U2hsQXJnSW1tKDB4ZmZmZmZmZmZmZmZmZmZmZiwg
MSkpOworICAgIFJVTih0ZXN0U2hsQXJnSW1tKDB4ZmZmZmZmZmZmZmZmZmZmZiwgNjMpKTsKKyAg
ICBSVU4odGVzdFNobFNTaHJBcmdJbW0oMSwgMCkpOworICAgIFJVTih0ZXN0U2hsU1NockFyZ0lt
bSgxLCAxKSk7CisgICAgUlVOKHRlc3RTaGxTU2hyQXJnSW1tKDEsIDYyKSk7CisgICAgUlVOKHRl
c3RTaGxTU2hyQXJnSW1tKDEsIDY1KSk7CisgICAgUlVOKHRlc3RTaGxTU2hyQXJnSW1tKDB4ZmZm
ZmZmZmZmZmZmZmZmZiwgMCkpOworICAgIFJVTih0ZXN0U2hsU1NockFyZ0ltbSgweGZmZmZmZmZm
ZmZmZmZmZmYsIDEpKTsKKyAgICBSVU4odGVzdFNobFNTaHJBcmdJbW0oMHhmZmZmZmZmZmZmZmZm
ZmZmLCA2MykpOworICAgIFJVTih0ZXN0U2hsQXJnMzIoMikpOworICAgIFJVTih0ZXN0U2hsQXJn
czMyKDEsIDApKTsKKyAgICBSVU4odGVzdFNobEFyZ3MzMigxLCAxKSk7CisgICAgUlVOKHRlc3RT
aGxBcmdzMzIoMSwgNjIpKTsKKyAgICBSVU4odGVzdFNobEltbXMzMigxLCAzMykpOworICAgIFJV
Tih0ZXN0U2hsQXJnczMyKDB4ZmZmZmZmZmYsIDApKTsKKyAgICBSVU4odGVzdFNobEFyZ3MzMigw
eGZmZmZmZmZmLCAxKSk7CisgICAgUlVOKHRlc3RTaGxBcmdzMzIoMHhmZmZmZmZmZiwgNjMpKTsK
KyAgICBSVU4odGVzdFNobEltbXMzMigxLCAwKSk7CisgICAgUlVOKHRlc3RTaGxJbW1zMzIoMSwg
MSkpOworICAgIFJVTih0ZXN0U2hsSW1tczMyKDEsIDYyKSk7CisgICAgUlVOKHRlc3RTaGxJbW1z
MzIoMSwgMzMpKTsKKyAgICBSVU4odGVzdFNobEltbXMzMigweGZmZmZmZmZmLCAwKSk7CisgICAg
UlVOKHRlc3RTaGxJbW1zMzIoMHhmZmZmZmZmZiwgMSkpOworICAgIFJVTih0ZXN0U2hsSW1tczMy
KDB4ZmZmZmZmZmYsIDYzKSk7CisgICAgUlVOKHRlc3RTaGxBcmdJbW0zMigxLCAwKSk7CisgICAg
UlVOKHRlc3RTaGxBcmdJbW0zMigxLCAxKSk7CisgICAgUlVOKHRlc3RTaGxBcmdJbW0zMigxLCA2
MikpOworICAgIFJVTih0ZXN0U2hsQXJnSW1tMzIoMSwgMzMpKTsKKyAgICBSVU4odGVzdFNobEFy
Z0ltbTMyKDB4ZmZmZmZmZmYsIDApKTsKKyAgICBSVU4odGVzdFNobEFyZ0ltbTMyKDB4ZmZmZmZm
ZmYsIDEpKTsKKyAgICBSVU4odGVzdFNobEFyZ0ltbTMyKDB4ZmZmZmZmZmYsIDYzKSk7CisgICAg
UlVOKHRlc3RTaGxaU2hyQXJnSW1tMzIoMSwgMCkpOworICAgIFJVTih0ZXN0U2hsWlNockFyZ0lt
bTMyKDEsIDEpKTsKKyAgICBSVU4odGVzdFNobFpTaHJBcmdJbW0zMigxLCA2MikpOworICAgIFJV
Tih0ZXN0U2hsWlNockFyZ0ltbTMyKDEsIDMzKSk7CisgICAgUlVOKHRlc3RTaGxaU2hyQXJnSW1t
MzIoMHhmZmZmZmZmZiwgMCkpOworICAgIFJVTih0ZXN0U2hsWlNockFyZ0ltbTMyKDB4ZmZmZmZm
ZmYsIDEpKTsKKyAgICBSVU4odGVzdFNobFpTaHJBcmdJbW0zMigweGZmZmZmZmZmLCA2MykpOwor
CisgICAgUlVOKHRlc3RTU2hyQXJncygxLCAwKSk7CisgICAgUlVOKHRlc3RTU2hyQXJncygxLCAx
KSk7CisgICAgUlVOKHRlc3RTU2hyQXJncygxLCA2MikpOworICAgIFJVTih0ZXN0U1NockFyZ3Mo
MHhmZmZmZmZmZmZmZmZmZmZmLCAwKSk7CisgICAgUlVOKHRlc3RTU2hyQXJncygweGZmZmZmZmZm
ZmZmZmZmZmYsIDEpKTsKKyAgICBSVU4odGVzdFNTaHJBcmdzKDB4ZmZmZmZmZmZmZmZmZmZmZiwg
NjMpKTsKKyAgICBSVU4odGVzdFNTaHJJbW1zKDEsIDApKTsKKyAgICBSVU4odGVzdFNTaHJJbW1z
KDEsIDEpKTsKKyAgICBSVU4odGVzdFNTaHJJbW1zKDEsIDYyKSk7CisgICAgUlVOKHRlc3RTU2hy
SW1tcygxLCA2NSkpOworICAgIFJVTih0ZXN0U1NockltbXMoMHhmZmZmZmZmZmZmZmZmZmZmLCAw
KSk7CisgICAgUlVOKHRlc3RTU2hySW1tcygweGZmZmZmZmZmZmZmZmZmZmYsIDEpKTsKKyAgICBS
VU4odGVzdFNTaHJJbW1zKDB4ZmZmZmZmZmZmZmZmZmZmZiwgNjMpKTsKKyAgICBSVU4odGVzdFNT
aHJBcmdJbW0oMSwgMCkpOworICAgIFJVTih0ZXN0U1NockFyZ0ltbSgxLCAxKSk7CisgICAgUlVO
KHRlc3RTU2hyQXJnSW1tKDEsIDYyKSk7CisgICAgUlVOKHRlc3RTU2hyQXJnSW1tKDEsIDY1KSk7
CisgICAgUlVOKHRlc3RTU2hyQXJnSW1tKDB4ZmZmZmZmZmZmZmZmZmZmZiwgMCkpOworICAgIFJV
Tih0ZXN0U1NockFyZ0ltbSgweGZmZmZmZmZmZmZmZmZmZmYsIDEpKTsKKyAgICBSVU4odGVzdFNT
aHJBcmdJbW0oMHhmZmZmZmZmZmZmZmZmZmZmLCA2MykpOworICAgIFJVTih0ZXN0U1NockFyZzMy
KDMyKSk7CisgICAgUlVOKHRlc3RTU2hyQXJnczMyKDEsIDApKTsKKyAgICBSVU4odGVzdFNTaHJB
cmdzMzIoMSwgMSkpOworICAgIFJVTih0ZXN0U1NockFyZ3MzMigxLCA2MikpOworICAgIFJVTih0
ZXN0U1NockFyZ3MzMigxLCAzMykpOworICAgIFJVTih0ZXN0U1NockFyZ3MzMigweGZmZmZmZmZm
LCAwKSk7CisgICAgUlVOKHRlc3RTU2hyQXJnczMyKDB4ZmZmZmZmZmYsIDEpKTsKKyAgICBSVU4o
dGVzdFNTaHJBcmdzMzIoMHhmZmZmZmZmZiwgNjMpKTsKKyAgICBSVU4odGVzdFNTaHJJbW1zMzIo
MSwgMCkpOworICAgIFJVTih0ZXN0U1NockltbXMzMigxLCAxKSk7CisgICAgUlVOKHRlc3RTU2hy
SW1tczMyKDEsIDYyKSk7CisgICAgUlVOKHRlc3RTU2hySW1tczMyKDEsIDMzKSk7CisgICAgUlVO
KHRlc3RTU2hySW1tczMyKDB4ZmZmZmZmZmYsIDApKTsKKyAgICBSVU4odGVzdFNTaHJJbW1zMzIo
MHhmZmZmZmZmZiwgMSkpOworICAgIFJVTih0ZXN0U1NockltbXMzMigweGZmZmZmZmZmLCA2Mykp
OworICAgIFJVTih0ZXN0U1NockFyZ0ltbTMyKDEsIDApKTsKKyAgICBSVU4odGVzdFNTaHJBcmdJ
bW0zMigxLCAxKSk7CisgICAgUlVOKHRlc3RTU2hyQXJnSW1tMzIoMSwgNjIpKTsKKyAgICBSVU4o
dGVzdFNTaHJBcmdJbW0zMigweGZmZmZmZmZmLCAwKSk7CisgICAgUlVOKHRlc3RTU2hyQXJnSW1t
MzIoMHhmZmZmZmZmZiwgMSkpOworICAgIFJVTih0ZXN0U1NockFyZ0ltbTMyKDB4ZmZmZmZmZmYs
IDYzKSk7CisKKyAgICBSVU4odGVzdFpTaHJBcmdzKDEsIDApKTsKKyAgICBSVU4odGVzdFpTaHJB
cmdzKDEsIDEpKTsKKyAgICBSVU4odGVzdFpTaHJBcmdzKDEsIDYyKSk7CisgICAgUlVOKHRlc3Ra
U2hyQXJncygweGZmZmZmZmZmZmZmZmZmZmYsIDApKTsKKyAgICBSVU4odGVzdFpTaHJBcmdzKDB4
ZmZmZmZmZmZmZmZmZmZmZiwgMSkpOworICAgIFJVTih0ZXN0WlNockFyZ3MoMHhmZmZmZmZmZmZm
ZmZmZmZmLCA2MykpOworICAgIFJVTih0ZXN0WlNockltbXMoMSwgMCkpOworICAgIFJVTih0ZXN0
WlNockltbXMoMSwgMSkpOworICAgIFJVTih0ZXN0WlNockltbXMoMSwgNjIpKTsKKyAgICBSVU4o
dGVzdFpTaHJJbW1zKDEsIDY1KSk7CisgICAgUlVOKHRlc3RaU2hySW1tcygweGZmZmZmZmZmZmZm
ZmZmZmYsIDApKTsKKyAgICBSVU4odGVzdFpTaHJJbW1zKDB4ZmZmZmZmZmZmZmZmZmZmZiwgMSkp
OworICAgIFJVTih0ZXN0WlNockltbXMoMHhmZmZmZmZmZmZmZmZmZmZmLCA2MykpOworICAgIFJV
Tih0ZXN0WlNockFyZ0ltbSgxLCAwKSk7CisgICAgUlVOKHRlc3RaU2hyQXJnSW1tKDEsIDEpKTsK
KyAgICBSVU4odGVzdFpTaHJBcmdJbW0oMSwgNjIpKTsKKyAgICBSVU4odGVzdFpTaHJBcmdJbW0o
MSwgNjUpKTsKKyAgICBSVU4odGVzdFpTaHJBcmdJbW0oMHhmZmZmZmZmZmZmZmZmZmZmLCAwKSk7
CisgICAgUlVOKHRlc3RaU2hyQXJnSW1tKDB4ZmZmZmZmZmZmZmZmZmZmZiwgMSkpOworICAgIFJV
Tih0ZXN0WlNockFyZ0ltbSgweGZmZmZmZmZmZmZmZmZmZmYsIDYzKSk7CisgICAgUlVOKHRlc3Ra
U2hyQXJnMzIoMzIpKTsKKyAgICBSVU4odGVzdFpTaHJBcmdzMzIoMSwgMCkpOworICAgIFJVTih0
ZXN0WlNockFyZ3MzMigxLCAxKSk7CisgICAgUlVOKHRlc3RaU2hyQXJnczMyKDEsIDYyKSk7Cisg
ICAgUlVOKHRlc3RaU2hyQXJnczMyKDEsIDMzKSk7CisgICAgUlVOKHRlc3RaU2hyQXJnczMyKDB4
ZmZmZmZmZmYsIDApKTsKKyAgICBSVU4odGVzdFpTaHJBcmdzMzIoMHhmZmZmZmZmZiwgMSkpOwor
ICAgIFJVTih0ZXN0WlNockFyZ3MzMigweGZmZmZmZmZmLCA2MykpOworICAgIFJVTih0ZXN0WlNo
ckltbXMzMigxLCAwKSk7CisgICAgUlVOKHRlc3RaU2hySW1tczMyKDEsIDEpKTsKKyAgICBSVU4o
dGVzdFpTaHJJbW1zMzIoMSwgNjIpKTsKKyAgICBSVU4odGVzdFpTaHJJbW1zMzIoMSwgMzMpKTsK
KyAgICBSVU4odGVzdFpTaHJJbW1zMzIoMHhmZmZmZmZmZiwgMCkpOworICAgIFJVTih0ZXN0WlNo
ckltbXMzMigweGZmZmZmZmZmLCAxKSk7CisgICAgUlVOKHRlc3RaU2hySW1tczMyKDB4ZmZmZmZm
ZmYsIDYzKSk7CisgICAgUlVOKHRlc3RaU2hyQXJnSW1tMzIoMSwgMCkpOworICAgIFJVTih0ZXN0
WlNockFyZ0ltbTMyKDEsIDEpKTsKKyAgICBSVU4odGVzdFpTaHJBcmdJbW0zMigxLCA2MikpOwor
ICAgIFJVTih0ZXN0WlNockFyZ0ltbTMyKDB4ZmZmZmZmZmYsIDApKTsKKyAgICBSVU4odGVzdFpT
aHJBcmdJbW0zMigweGZmZmZmZmZmLCAxKSk7CisgICAgUlVOKHRlc3RaU2hyQXJnSW1tMzIoMHhm
ZmZmZmZmZiwgNjMpKTsKKworICAgIFJVTl9VTkFSWSh0ZXN0Q2x6QXJnNjQsIGludDY0T3BlcmFu
ZHMoKSk7CisgICAgUlVOX1VOQVJZKHRlc3RDbHpNZW02NCwgaW50NjRPcGVyYW5kcygpKTsKKyAg
ICBSVU5fVU5BUlkodGVzdENsekFyZzMyLCBpbnQzMk9wZXJhbmRzKCkpOworICAgIFJVTl9VTkFS
WSh0ZXN0Q2x6TWVtMzIsIGludDY0T3BlcmFuZHMoKSk7CisKKyAgICBSVU5fVU5BUlkodGVzdEFi
c0FyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX1VOQVJZKHRl
c3RBYnNJbW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9VTkFS
WSh0ZXN0QWJzTWVtLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5f
VU5BUlkodGVzdEFic0Fic0FyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7Cisg
ICAgUlVOX1VOQVJZKHRlc3RBYnNOZWdBcmcsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+
KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0QWJzQml0d2lzZUNhc3RBcmcsIGZsb2F0aW5nUG9pbnRP
cGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Qml0d2lzZUNhc3RBYnNCaXR3
aXNlQ2FzdEFyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX1VO
QVJZKHRlc3RBYnNBcmcsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVO
X1VOQVJZKHRlc3RBYnNJbW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAg
UlVOX1VOQVJZKHRlc3RBYnNNZW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Cisg
ICAgUlVOX1VOQVJZKHRlc3RBYnNBYnNBcmcsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4o
KSk7CisgICAgUlVOX1VOQVJZKHRlc3RBYnNOZWdBcmcsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxm
bG9hdD4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RBYnNCaXR3aXNlQ2FzdEFyZywgZmxvYXRpbmdQ
b2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fVU5BUlkodGVzdEJpdHdpc2VDYXN0QWJz
Qml0d2lzZUNhc3RBcmcsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVO
X1VOQVJZKHRlc3RBYnNBcmdXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24sIGZsb2F0aW5nUG9p
bnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RBYnNBcmdXaXRoRWZmZWN0
ZnVsRG91YmxlQ29udmVyc2lvbiwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKwor
ICAgIFJVTl9VTkFSWSh0ZXN0Q2VpbEFyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4o
KSk7CisgICAgUlVOX1VOQVJZKHRlc3RDZWlsSW1tLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91
YmxlPigpKTsKKyAgICBSVU5fVU5BUlkodGVzdENlaWxNZW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5k
czxkb3VibGU+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Q2VpbENlaWxBcmcsIGZsb2F0aW5nUG9p
bnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Rmxvb3JDZWlsQXJnLCBm
bG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fVU5BUlkodGVzdENlaWxJ
VG9ENjQsIGludDY0T3BlcmFuZHMoKSk7CisgICAgUlVOX1VOQVJZKHRlc3RDZWlsSVRvRDMyLCBp
bnQzMk9wZXJhbmRzKCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Q2VpbEFyZywgZmxvYXRpbmdQb2lu
dE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fVU5BUlkodGVzdENlaWxJbW0sIGZsb2F0aW5n
UG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RDZWlsTWVtLCBmbG9h
dGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Q2VpbENlaWxB
cmcsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RG
bG9vckNlaWxBcmcsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX1VO
QVJZKHRlc3RDZWlsQXJnV2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Q2VpbEFyZ1dpdGhFZmZlY3Rm
dWxEb3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworCisg
ICAgUlVOX1VOQVJZKHRlc3RGbG9vckFyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4o
KSk7CisgICAgUlVOX1VOQVJZKHRlc3RGbG9vckltbSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRv
dWJsZT4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RGbG9vck1lbSwgZmxvYXRpbmdQb2ludE9wZXJh
bmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RGbG9vckZsb29yQXJnLCBmbG9hdGlu
Z1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fVU5BUlkodGVzdENlaWxGbG9vckFy
ZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RG
bG9vcklUb0Q2NCwgaW50NjRPcGVyYW5kcygpKTsKKyAgICBSVU5fVU5BUlkodGVzdEZsb29ySVRv
RDMyLCBpbnQzMk9wZXJhbmRzKCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Rmxvb3JBcmcsIGZsb2F0
aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RGbG9vckltbSwg
ZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fVU5BUlkodGVzdEZsb29y
TWVtLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0
Rmxvb3JGbG9vckFyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5f
VU5BUlkodGVzdENlaWxGbG9vckFyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsK
KyAgICBSVU5fVU5BUlkodGVzdEZsb29yQXJnV2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uLCBm
bG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Rmxvb3JB
cmdXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lvbiwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZs
b2F0PigpKTsKKworICAgIFJVTl9VTkFSWSh0ZXN0U3FydEFyZywgZmxvYXRpbmdQb2ludE9wZXJh
bmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RTcXJ0SW1tLCBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fVU5BUlkodGVzdFNxcnRNZW0sIGZsb2F0aW5n
UG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0U3FydEFyZywgZmxv
YXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fVU5BUlkodGVzdFNxcnRJbW0s
IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RTcXJ0
TWVtLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0
U3FydEFyZ1dpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbiwgZmxvYXRpbmdQb2ludE9wZXJhbmRz
PGZsb2F0PigpKTsKKyAgICBSVU5fVU5BUlkodGVzdFNxcnRBcmdXaXRoRWZmZWN0ZnVsRG91Ymxl
Q29udmVyc2lvbiwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKworICAgIFJVTl9C
SU5BUlkodGVzdENvbXBhcmVUd29GbG9hdFRvRG91YmxlLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8
ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFS
WSh0ZXN0Q29tcGFyZU9uZUZsb2F0VG9Eb3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9h
dD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX0JJTkFSWSh0
ZXN0Q29tcGFyZUZsb2F0VG9Eb3VibGVUaHJvdWdoUGhpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8
ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX1VOQVJZ
KHRlc3REb3VibGVUb0Zsb2F0VGhyb3VnaFBoaSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0
PigpKTsKKyAgICBSVU4odGVzdFJlZHVjZUZsb2F0VG9Eb3VibGVWYWxpZGF0ZXMoKSk7CisgICAg
UlVOX1VOQVJZKHRlc3REb3VibGVQcm9kdWNlclBoaVRvRmxvYXRDb252ZXJzaW9uLCBmbG9hdGlu
Z1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0RG91YmxlUHJvZHVj
ZXJQaGlUb0Zsb2F0Q29udmVyc2lvbldpdGhEb3VibGVDb25zdW1lciwgZmxvYXRpbmdQb2ludE9w
ZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3REb3VibGVQcm9kdWNlclBoaVdp
dGhOb25GbG9hdENvbnN0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5n
UG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworCisgICAgUlVOX1VOQVJZKHRlc3REb3VibGVBcmdU
b0ludDY0Qml0d2lzZUNhc3QsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAg
IFJVTl9VTkFSWSh0ZXN0RG91YmxlSW1tVG9JbnQ2NEJpdHdpc2VDYXN0LCBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fVU5BUlkodGVzdFR3b0JpdHdpc2VDYXN0T25E
b3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9VTkFSWSh0
ZXN0Qml0d2lzZUNhc3RPbkRvdWJsZUluTWVtb3J5LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91
YmxlPigpKTsKKyAgICBSVU5fVU5BUlkodGVzdEJpdHdpc2VDYXN0T25Eb3VibGVJbk1lbW9yeUlu
ZGV4ZWQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9VTkFSWSh0
ZXN0SW50NjRCQXJnVG9Eb3VibGVCaXR3aXNlQ2FzdCwgaW50NjRPcGVyYW5kcygpKTsKKyAgICBS
VU5fVU5BUlkodGVzdEludDY0QkltbVRvRG91YmxlQml0d2lzZUNhc3QsIGludDY0T3BlcmFuZHMo
KSk7CisgICAgUlVOX1VOQVJZKHRlc3RUd29CaXR3aXNlQ2FzdE9uSW50NjQsIGludDY0T3BlcmFu
ZHMoKSk7CisgICAgUlVOX1VOQVJZKHRlc3RCaXR3aXNlQ2FzdE9uSW50NjRJbk1lbW9yeSwgaW50
NjRPcGVyYW5kcygpKTsKKyAgICBSVU5fVU5BUlkodGVzdEJpdHdpc2VDYXN0T25JbnQ2NEluTWVt
b3J5SW5kZXhlZCwgaW50NjRPcGVyYW5kcygpKTsKKyAgICBSVU5fVU5BUlkodGVzdEZsb2F0SW1t
VG9JbnQzMkJpdHdpc2VDYXN0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAg
IFJVTl9VTkFSWSh0ZXN0Qml0d2lzZUNhc3RPbkZsb2F0SW5NZW1vcnksIGZsb2F0aW5nUG9pbnRP
cGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RJbnQzMkJBcmdUb0Zsb2F0Qml0
d2lzZUNhc3QsIGludDMyT3BlcmFuZHMoKSk7CisgICAgUlVOX1VOQVJZKHRlc3RJbnQzMkJJbW1U
b0Zsb2F0Qml0d2lzZUNhc3QsIGludDMyT3BlcmFuZHMoKSk7CisgICAgUlVOX1VOQVJZKHRlc3RU
d29CaXR3aXNlQ2FzdE9uSW50MzIsIGludDMyT3BlcmFuZHMoKSk7CisgICAgUlVOX1VOQVJZKHRl
c3RCaXR3aXNlQ2FzdE9uSW50MzJJbk1lbW9yeSwgaW50MzJPcGVyYW5kcygpKTsKKworICAgIFJV
Tl9VTkFSWSh0ZXN0Q29udmVydERvdWJsZVRvRmxvYXRBcmcsIGZsb2F0aW5nUG9pbnRPcGVyYW5k
czxkb3VibGU+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Q29udmVydERvdWJsZVRvRmxvYXRJbW0s
IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Q29u
dmVydERvdWJsZVRvRmxvYXRNZW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwor
ICAgIFJVTl9VTkFSWSh0ZXN0Q29udmVydEZsb2F0VG9Eb3VibGVBcmcsIGZsb2F0aW5nUG9pbnRP
cGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RDb252ZXJ0RmxvYXRUb0RvdWJs
ZUltbSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fVU5BUlkodGVz
dENvbnZlcnRGbG9hdFRvRG91YmxlTWVtLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkp
OworICAgIFJVTl9VTkFSWSh0ZXN0Q29udmVydERvdWJsZVRvRmxvYXRUb0RvdWJsZVRvRmxvYXQs
IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0U3Rv
cmVGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX1VOQVJZ
KHRlc3RTdG9yZURvdWJsZUNvbnN0YW50QXNGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRv
dWJsZT4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RMb2FkRmxvYXRDb252ZXJ0RG91YmxlQ29udmVy
dEZsb2F0U3RvcmVGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBS
VU5fVU5BUlkodGVzdEZyb3VuZEFyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7
CisgICAgUlVOX1VOQVJZKHRlc3RGcm91bmRNZW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3Vi
bGU+KCkpOworCisgICAgUlVOKHRlc3RJVG9ENjRBcmcoKSk7CisgICAgUlVOKHRlc3RJVG9GNjRB
cmcoKSk7CisgICAgUlVOKHRlc3RJVG9EMzJBcmcoKSk7CisgICAgUlVOKHRlc3RJVG9GMzJBcmco
KSk7CisgICAgUlVOKHRlc3RJVG9ENjRNZW0oKSk7CisgICAgUlVOKHRlc3RJVG9GNjRNZW0oKSk7
CisgICAgUlVOKHRlc3RJVG9EMzJNZW0oKSk7CisgICAgUlVOKHRlc3RJVG9GMzJNZW0oKSk7Cisg
ICAgUlVOX1VOQVJZKHRlc3RJVG9ENjRJbW0sIGludDY0T3BlcmFuZHMoKSk7CisgICAgUlVOX1VO
QVJZKHRlc3RJVG9GNjRJbW0sIGludDY0T3BlcmFuZHMoKSk7CisgICAgUlVOX1VOQVJZKHRlc3RJ
VG9EMzJJbW0sIGludDMyT3BlcmFuZHMoKSk7CisgICAgUlVOX1VOQVJZKHRlc3RJVG9GMzJJbW0s
IGludDMyT3BlcmFuZHMoKSk7CisgICAgUlVOKHRlc3RJVG9EUmVkdWNlZFRvSVRvRjY0QXJnKCkp
OworICAgIFJVTih0ZXN0SVRvRFJlZHVjZWRUb0lUb0YzMkFyZygpKTsKKworICAgIFJVTih0ZXN0
U3RvcmUzMig0NCkpOworICAgIFJVTih0ZXN0U3RvcmVDb25zdGFudCg0OSkpOworICAgIFJVTih0
ZXN0U3RvcmVDb25zdGFudFB0cig0OSkpOworICAgIFJVTih0ZXN0U3RvcmU4QXJnKCkpOworICAg
IFJVTih0ZXN0U3RvcmU4SW1tKCkpOworICAgIFJVTih0ZXN0U3RvcmVQYXJ0aWFsOEJpdFJlZ2lz
dGVyT25YODYoKSk7CisgICAgUlVOKHRlc3RTdG9yZTE2QXJnKCkpOworICAgIFJVTih0ZXN0U3Rv
cmUxNkltbSgpKTsKKyAgICBSVU4odGVzdFRydW5jKChzdGF0aWNfY2FzdDxpbnQ2NF90PigxKSA8
PCA0MCkgKyA0MikpOworICAgIFJVTih0ZXN0QWRkMSg0NSkpOworICAgIFJVTih0ZXN0QWRkMVB0
cig1MSkpOworICAgIFJVTih0ZXN0QWRkMVB0cihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMHhiYWFk
YmVlZikpKTsKKyAgICBSVU4odGVzdE5lZzMyKDUyKSk7CisgICAgUlVOKHRlc3ROZWdQdHIoNTMp
KTsKKyAgICBSVU4odGVzdFN0b3JlQWRkTG9hZDMyKDQ2KSk7CisgICAgUlVOKHRlc3RTdG9yZVJl
bEFkZExvYWRBY3EzMig0NikpOworICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkSW1tMzIoNDYpKTsK
KyAgICBSVU4odGVzdFN0b3JlQWRkTG9hZDY0KDQ2MDApKTsKKyAgICBSVU4odGVzdFN0b3JlUmVs
QWRkTG9hZEFjcTY0KDQ2MDApKTsKKyAgICBSVU4odGVzdFN0b3JlQWRkTG9hZEltbTY0KDQ2MDAp
KTsKKyAgICBSVU4odGVzdFN0b3JlQWRkTG9hZDgoNCwgTG9hZDhaKSk7CisgICAgUlVOKHRlc3RT
dG9yZVJlbEFkZExvYWRBY3E4KDQsIExvYWQ4WikpOworICAgIFJVTih0ZXN0U3RvcmVSZWxBZGRG
ZW5jZUxvYWRBY3E4KDQsIExvYWQ4WikpOworICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkSW1tOCg0
LCBMb2FkOFopKTsKKyAgICBSVU4odGVzdFN0b3JlQWRkTG9hZDgoNCwgTG9hZDhTKSk7CisgICAg
UlVOKHRlc3RTdG9yZVJlbEFkZExvYWRBY3E4KDQsIExvYWQ4UykpOworICAgIFJVTih0ZXN0U3Rv
cmVBZGRMb2FkSW1tOCg0LCBMb2FkOFMpKTsKKyAgICBSVU4odGVzdFN0b3JlQWRkTG9hZDE2KDYs
IExvYWQxNlopKTsKKyAgICBSVU4odGVzdFN0b3JlUmVsQWRkTG9hZEFjcTE2KDYsIExvYWQxNlop
KTsKKyAgICBSVU4odGVzdFN0b3JlQWRkTG9hZEltbTE2KDYsIExvYWQxNlopKTsKKyAgICBSVU4o
dGVzdFN0b3JlQWRkTG9hZDE2KDYsIExvYWQxNlMpKTsKKyAgICBSVU4odGVzdFN0b3JlUmVsQWRk
TG9hZEFjcTE2KDYsIExvYWQxNlMpKTsKKyAgICBSVU4odGVzdFN0b3JlQWRkTG9hZEltbTE2KDYs
IExvYWQxNlMpKTsKKyAgICBSVU4odGVzdFN0b3JlQWRkTG9hZDMySW5kZXgoNDYpKTsKKyAgICBS
VU4odGVzdFN0b3JlQWRkTG9hZEltbTMySW5kZXgoNDYpKTsKKyAgICBSVU4odGVzdFN0b3JlQWRk
TG9hZDY0SW5kZXgoNDYwMCkpOworICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkSW1tNjRJbmRleCg0
NjAwKSk7CisgICAgUlVOKHRlc3RTdG9yZUFkZExvYWQ4SW5kZXgoNCwgTG9hZDhaKSk7CisgICAg
UlVOKHRlc3RTdG9yZUFkZExvYWRJbW04SW5kZXgoNCwgTG9hZDhaKSk7CisgICAgUlVOKHRlc3RT
dG9yZUFkZExvYWQ4SW5kZXgoNCwgTG9hZDhTKSk7CisgICAgUlVOKHRlc3RTdG9yZUFkZExvYWRJ
bW04SW5kZXgoNCwgTG9hZDhTKSk7CisgICAgUlVOKHRlc3RTdG9yZUFkZExvYWQxNkluZGV4KDYs
IExvYWQxNlopKTsKKyAgICBSVU4odGVzdFN0b3JlQWRkTG9hZEltbTE2SW5kZXgoNiwgTG9hZDE2
WikpOworICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkMTZJbmRleCg2LCBMb2FkMTZTKSk7CisgICAg
UlVOKHRlc3RTdG9yZUFkZExvYWRJbW0xNkluZGV4KDYsIExvYWQxNlMpKTsKKyAgICBSVU4odGVz
dFN0b3JlU3ViTG9hZCg0NikpOworICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkSW50ZXJmZXJlbmNl
KDUyKSk7CisgICAgUlVOKHRlc3RTdG9yZUFkZEFuZExvYWQoNDcsIDB4ZmZmZikpOworICAgIFJV
Tih0ZXN0U3RvcmVBZGRBbmRMb2FkKDQ3MDAwMCwgMHhmZmZmKSk7CisgICAgUlVOKHRlc3RTdG9y
ZU5lZ0xvYWQzMig1NCkpOworICAgIFJVTih0ZXN0U3RvcmVOZWdMb2FkUHRyKDU1KSk7CisgICAg
UlVOKHRlc3RBZGQxVW5jb21tdXRlZCg0OCkpOworICAgIFJVTih0ZXN0TG9hZE9mZnNldCgpKTsK
KyAgICBSVU4odGVzdExvYWRPZmZzZXROb3RDb25zdGFudCgpKTsKKyAgICBSVU4odGVzdExvYWRP
ZmZzZXRVc2luZ0FkZCgpKTsKKyAgICBSVU4odGVzdExvYWRPZmZzZXRVc2luZ0FkZEludGVyZmVy
ZW5jZSgpKTsKKyAgICBSVU4odGVzdExvYWRPZmZzZXRVc2luZ0FkZE5vdENvbnN0YW50KCkpOwor
ICAgIFJVTih0ZXN0TG9hZEFkZHJTaGlmdCgwKSk7CisgICAgUlVOKHRlc3RMb2FkQWRkclNoaWZ0
KDEpKTsKKyAgICBSVU4odGVzdExvYWRBZGRyU2hpZnQoMikpOworICAgIFJVTih0ZXN0TG9hZEFk
ZHJTaGlmdCgzKSk7CisgICAgUlVOKHRlc3RGcmFtZVBvaW50ZXIoKSk7CisgICAgUlVOKHRlc3RP
dmVycmlkZUZyYW1lUG9pbnRlcigpKTsKKyAgICBSVU4odGVzdFN0YWNrU2xvdCgpKTsKKyAgICBS
VU4odGVzdExvYWRGcm9tRnJhbWVQb2ludGVyKCkpOworICAgIFJVTih0ZXN0U3RvcmVMb2FkU3Rh
Y2tTbG90KDUwKSk7CisgICAgCisgICAgUlVOKHRlc3RCcmFuY2goKSk7CisgICAgUlVOKHRlc3RC
cmFuY2hQdHIoKSk7CisgICAgUlVOKHRlc3REaWFtb25kKCkpOworICAgIFJVTih0ZXN0QnJhbmNo
Tm90RXF1YWwoKSk7CisgICAgUlVOKHRlc3RCcmFuY2hOb3RFcXVhbENvbW11dGUoKSk7CisgICAg
UlVOKHRlc3RCcmFuY2hOb3RFcXVhbE5vdEVxdWFsKCkpOworICAgIFJVTih0ZXN0QnJhbmNoRXF1
YWwoKSk7CisgICAgUlVOKHRlc3RCcmFuY2hFcXVhbEVxdWFsKCkpOworICAgIFJVTih0ZXN0QnJh
bmNoRXF1YWxDb21tdXRlKCkpOworICAgIFJVTih0ZXN0QnJhbmNoRXF1YWxFcXVhbDEoKSk7Cisg
ICAgUlVOX0JJTkFSWSh0ZXN0QnJhbmNoRXF1YWxPclVub3JkZXJlZEFyZ3MsIGZsb2F0aW5nUG9p
bnRPcGVyYW5kczxkb3VibGU+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwor
ICAgIFJVTl9CSU5BUlkodGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVyZWRBcmdzLCBmbG9hdGluZ1Bv
aW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Cisg
ICAgUlVOX0JJTkFSWSh0ZXN0QnJhbmNoTm90RXF1YWxBbmRPcmRlcmVkQXJncywgZmxvYXRpbmdQ
b2ludE9wZXJhbmRzPGRvdWJsZT4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7
CisgICAgUlVOX0JJTkFSWSh0ZXN0QnJhbmNoTm90RXF1YWxBbmRPcmRlcmVkQXJncywgZmxvYXRp
bmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkp
OworICAgIFJVTl9CSU5BUlkodGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVyZWREb3VibGVBcmdJbW0s
IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxk
b3VibGU+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVyZWRGbG9h
dEFyZ0ltbSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3Bl
cmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVy
ZWREb3VibGVJbW1zLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpLCBmbG9hdGluZ1Bv
aW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RCcmFuY2hFcXVhbE9y
VW5vcmRlcmVkRmxvYXRJbW1zLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0
aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0QnJhbmNoRXF1
YWxPclVub3JkZXJlZEZsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1Bv
aW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Cisg
ICAgUlVOX0JJTkFSWSh0ZXN0QnJhbmNoTm90RXF1YWxBbmRPcmRlcmVkQXJncywgZmxvYXRpbmdQ
b2ludE9wZXJhbmRzPGRvdWJsZT4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7
CisgICAgUlVOX0JJTkFSWSh0ZXN0QnJhbmNoTm90RXF1YWxBbmRPcmRlcmVkQXJncywgZmxvYXRp
bmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkp
OworICAgIFJVTih0ZXN0QnJhbmNoRm9sZCg0MikpOworICAgIFJVTih0ZXN0QnJhbmNoRm9sZCgw
KSk7CisgICAgUlVOKHRlc3REaWFtb25kRm9sZCg0MikpOworICAgIFJVTih0ZXN0RGlhbW9uZEZv
bGQoMCkpOworICAgIFJVTih0ZXN0QnJhbmNoTm90RXF1YWxGb2xkUHRyKDQyKSk7CisgICAgUlVO
KHRlc3RCcmFuY2hOb3RFcXVhbEZvbGRQdHIoMCkpOworICAgIFJVTih0ZXN0QnJhbmNoRXF1YWxG
b2xkUHRyKDQyKSk7CisgICAgUlVOKHRlc3RCcmFuY2hFcXVhbEZvbGRQdHIoMCkpOworICAgIFJV
Tih0ZXN0QnJhbmNoTG9hZFB0cigpKTsKKyAgICBSVU4odGVzdEJyYW5jaExvYWQzMigpKTsKKyAg
ICBSVU4odGVzdEJyYW5jaExvYWQ4UygpKTsKKyAgICBSVU4odGVzdEJyYW5jaExvYWQ4WigpKTsK
KyAgICBSVU4odGVzdEJyYW5jaExvYWQxNlMoKSk7CisgICAgUlVOKHRlc3RCcmFuY2hMb2FkMTZa
KCkpOworICAgIFJVTih0ZXN0QnJhbmNoOFdpdGhMb2FkOFpJbmRleCgpKTsKKworICAgIFJVTih0
ZXN0Q29tcGxleCg2NCwgMTI4KSk7CisgICAgUlVOKHRlc3RDb21wbGV4KDQsIDEyOCkpOworICAg
IFJVTih0ZXN0Q29tcGxleCg0LCAyNTYpKTsKKyAgICBSVU4odGVzdENvbXBsZXgoNCwgMzg0KSk7
CisKKyAgICBSVU5fQklOQVJZKHRlc3RCcmFuY2hCaXRUZXN0MzJUbXBJbW0sIGludDMyT3BlcmFu
ZHMoKSwgaW50MzJPcGVyYW5kcygpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RCcmFuY2hCaXRUZXN0
MzJBZGRySW1tLCBpbnQzMk9wZXJhbmRzKCksIGludDMyT3BlcmFuZHMoKSk7CisgICAgUlVOX0JJ
TkFSWSh0ZXN0QnJhbmNoQml0VGVzdDMyVG1wVG1wLCBpbnQzMk9wZXJhbmRzKCksIGludDMyT3Bl
cmFuZHMoKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0QnJhbmNoQml0VGVzdDY0VG1wVG1wLCBpbnQ2
NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0QnJhbmNo
Qml0VGVzdDY0QWRkclRtcCwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOworICAg
IFJVTl9CSU5BUlkodGVzdEJyYW5jaEJpdFRlc3ROZWdhdGlvbiwgaW50NjRPcGVyYW5kcygpLCBp
bnQ2NE9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlkodGVzdEJyYW5jaEJpdFRlc3ROZWdhdGlv
bjIsIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKKworICAgIFJVTih0ZXN0U2lt
cGxlUGF0Y2hwb2ludCgpKTsKKyAgICBSVU4odGVzdFNpbXBsZVBhdGNocG9pbnRXaXRob3V0T3Vw
dXRDbG9iYmVyc0dQQXJncygpKTsKKyAgICBSVU4odGVzdFNpbXBsZVBhdGNocG9pbnRXaXRoT3Vw
dXRDbG9iYmVyc0dQQXJncygpKTsKKyAgICBSVU4odGVzdFNpbXBsZVBhdGNocG9pbnRXaXRob3V0
T3VwdXRDbG9iYmVyc0ZQQXJncygpKTsKKyAgICBSVU4odGVzdFNpbXBsZVBhdGNocG9pbnRXaXRo
T3VwdXRDbG9iYmVyc0ZQQXJncygpKTsKKyAgICBSVU4odGVzdFBhdGNocG9pbnRXaXRoRWFybHlD
bG9iYmVyKCkpOworICAgIFJVTih0ZXN0UGF0Y2hwb2ludENhbGxBcmcoKSk7CisgICAgUlVOKHRl
c3RQYXRjaHBvaW50Rml4ZWRSZWdpc3RlcigpKTsKKyAgICBSVU4odGVzdFBhdGNocG9pbnRBbnko
VmFsdWVSZXA6Oldhcm1BbnkpKTsKKyAgICBSVU4odGVzdFBhdGNocG9pbnRBbnkoVmFsdWVSZXA6
OkNvbGRBbnkpKTsKKyAgICBSVU4odGVzdFBhdGNocG9pbnRHUFNjcmF0Y2goKSk7CisgICAgUlVO
KHRlc3RQYXRjaHBvaW50RlBTY3JhdGNoKCkpOworICAgIFJVTih0ZXN0UGF0Y2hwb2ludExvdHNP
ZkxhdGVBbnlzKCkpOworICAgIFJVTih0ZXN0UGF0Y2hwb2ludEFueUltbShWYWx1ZVJlcDo6V2Fy
bUFueSkpOworICAgIFJVTih0ZXN0UGF0Y2hwb2ludEFueUltbShWYWx1ZVJlcDo6Q29sZEFueSkp
OworICAgIFJVTih0ZXN0UGF0Y2hwb2ludEFueUltbShWYWx1ZVJlcDo6TGF0ZUNvbGRBbnkpKTsK
KyAgICBSVU4odGVzdFBhdGNocG9pbnRNYW55SW1tcygpKTsKKyAgICBSVU4odGVzdFBhdGNocG9p
bnRXaXRoUmVnaXN0ZXJSZXN1bHQoKSk7CisgICAgUlVOKHRlc3RQYXRjaHBvaW50V2l0aFN0YWNr
QXJndW1lbnRSZXN1bHQoKSk7CisgICAgUlVOKHRlc3RQYXRjaHBvaW50V2l0aEFueVJlc3VsdCgp
KTsKKyAgICBSVU4odGVzdFNpbXBsZUNoZWNrKCkpOworICAgIFJVTih0ZXN0Q2hlY2tGYWxzZSgp
KTsKKyAgICBSVU4odGVzdENoZWNrVHJ1ZSgpKTsKKyAgICBSVU4odGVzdENoZWNrTGVzc1RoYW4o
KSk7CisgICAgUlVOKHRlc3RDaGVja01lZ2FDb21ibygpKTsKKyAgICBSVU4odGVzdENoZWNrVHJp
Y2t5TWVnYUNvbWJvKCkpOworICAgIFJVTih0ZXN0Q2hlY2tUd29NZWdhQ29tYm9zKCkpOworICAg
IFJVTih0ZXN0Q2hlY2tUd29Ob25SZWR1bmRhbnRNZWdhQ29tYm9zKCkpOworICAgIFJVTih0ZXN0
Q2hlY2tBZGRJbW0oKSk7CisgICAgUlVOKHRlc3RDaGVja0FkZEltbUNvbW11dGUoKSk7CisgICAg
UlVOKHRlc3RDaGVja0FkZEltbVNvbWVSZWdpc3RlcigpKTsKKyAgICBSVU4odGVzdENoZWNrQWRk
KCkpOworICAgIFJVTih0ZXN0Q2hlY2tBZGQ2NCgpKTsKKyAgICBSVU4odGVzdENoZWNrQWRkRm9s
ZCgxMDAsIDIwMCkpOworICAgIFJVTih0ZXN0Q2hlY2tBZGRGb2xkRmFpbCgyMTQ3NDgzNjQ3LCAx
MDApKTsKKyAgICBSVU4odGVzdENoZWNrQWRkQXJndW1lbnRBbGlhc2luZzY0KCkpOworICAgIFJV
Tih0ZXN0Q2hlY2tBZGRBcmd1bWVudEFsaWFzaW5nMzIoKSk7CisgICAgUlVOKHRlc3RDaGVja0Fk
ZFNlbGZPdmVyZmxvdzY0KCkpOworICAgIFJVTih0ZXN0Q2hlY2tBZGRTZWxmT3ZlcmZsb3czMigp
KTsKKyAgICBSVU4odGVzdENoZWNrU3ViSW1tKCkpOworICAgIFJVTih0ZXN0Q2hlY2tTdWJCYWRJ
bW0oKSk7CisgICAgUlVOKHRlc3RDaGVja1N1YigpKTsKKyAgICBSVU4odGVzdENoZWNrU3ViNjQo
KSk7CisgICAgUlVOKHRlc3RDaGVja1N1YkZvbGQoMTAwLCAyMDApKTsKKyAgICBSVU4odGVzdENo
ZWNrU3ViRm9sZEZhaWwoLTIxNDc0ODM2NDcsIDEwMCkpOworICAgIFJVTih0ZXN0Q2hlY2tOZWco
KSk7CisgICAgUlVOKHRlc3RDaGVja05lZzY0KCkpOworICAgIFJVTih0ZXN0Q2hlY2tNdWwoKSk7
CisgICAgUlVOKHRlc3RDaGVja011bE1lbW9yeSgpKTsKKyAgICBSVU4odGVzdENoZWNrTXVsMigp
KTsKKyAgICBSVU4odGVzdENoZWNrTXVsNjQoKSk7CisgICAgUlVOKHRlc3RDaGVja011bEZvbGQo
MTAwLCAyMDApKTsKKyAgICBSVU4odGVzdENoZWNrTXVsRm9sZEZhaWwoMjE0NzQ4MzY0NywgMTAw
KSk7CisgICAgUlVOKHRlc3RDaGVja011bEFyZ3VtZW50QWxpYXNpbmc2NCgpKTsKKyAgICBSVU4o
dGVzdENoZWNrTXVsQXJndW1lbnRBbGlhc2luZzMyKCkpOworCisgICAgUlVOX0JJTkFSWShbXShp
bnQzMl90IGEsIGludDMyX3QgYikgeyB0ZXN0Q29tcGFyZShFcXVhbCwgYSwgYik7IH0sIGludDY0
T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKKyAgICBSVU5fQklOQVJZKFtdKGludDMyX3Qg
YSwgaW50MzJfdCBiKSB7IHRlc3RDb21wYXJlKE5vdEVxdWFsLCBhLCBiKTsgfSwgaW50NjRPcGVy
YW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlkoW10oaW50MzJfdCBhLCBp
bnQzMl90IGIpIHsgdGVzdENvbXBhcmUoTGVzc1RoYW4sIGEsIGIpOyB9LCBpbnQ2NE9wZXJhbmRz
KCksIGludDY0T3BlcmFuZHMoKSk7CisgICAgUlVOX0JJTkFSWShbXShpbnQzMl90IGEsIGludDMy
X3QgYikgeyB0ZXN0Q29tcGFyZShHcmVhdGVyVGhhbiwgYSwgYik7IH0sIGludDY0T3BlcmFuZHMo
KSwgaW50NjRPcGVyYW5kcygpKTsKKyAgICBSVU5fQklOQVJZKFtdKGludDMyX3QgYSwgaW50MzJf
dCBiKSB7IHRlc3RDb21wYXJlKExlc3NFcXVhbCwgYSwgYik7IH0sIGludDY0T3BlcmFuZHMoKSwg
aW50NjRPcGVyYW5kcygpKTsKKyAgICBSVU5fQklOQVJZKFtdKGludDMyX3QgYSwgaW50MzJfdCBi
KSB7IHRlc3RDb21wYXJlKEdyZWF0ZXJFcXVhbCwgYSwgYik7IH0sIGludDY0T3BlcmFuZHMoKSwg
aW50NjRPcGVyYW5kcygpKTsKKyAgICBSVU5fQklOQVJZKFtdKGludDMyX3QgYSwgaW50MzJfdCBi
KSB7IHRlc3RDb21wYXJlKEJlbG93LCBhLCBiKTsgfSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9w
ZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlkoW10oaW50MzJfdCBhLCBpbnQzMl90IGIpIHsgdGVz
dENvbXBhcmUoQWJvdmUsIGEsIGIpOyB9LCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMo
KSk7CisgICAgUlVOX0JJTkFSWShbXShpbnQzMl90IGEsIGludDMyX3QgYikgeyB0ZXN0Q29tcGFy
ZShCZWxvd0VxdWFsLCBhLCBiKTsgfSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkp
OworICAgIFJVTl9CSU5BUlkoW10oaW50MzJfdCBhLCBpbnQzMl90IGIpIHsgdGVzdENvbXBhcmUo
QWJvdmVFcXVhbCwgYSwgYik7IH0sIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsK
KyAgICBSVU5fQklOQVJZKFtdKGludDMyX3QgYSwgaW50MzJfdCBiKSB7IHRlc3RDb21wYXJlKEJp
dEFuZCwgYSwgYik7IH0sIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKKworICAg
IFJVTih0ZXN0RXF1YWxEb3VibGUoNDIsIDQyLCB0cnVlKSk7CisgICAgUlVOKHRlc3RFcXVhbERv
dWJsZSgwLCAtMCwgdHJ1ZSkpOworICAgIFJVTih0ZXN0RXF1YWxEb3VibGUoNDIsIDQzLCBmYWxz
ZSkpOworICAgIFJVTih0ZXN0RXF1YWxEb3VibGUoUE5hTiwgNDIsIGZhbHNlKSk7CisgICAgUlVO
KHRlc3RFcXVhbERvdWJsZSg0MiwgUE5hTiwgZmFsc2UpKTsKKyAgICBSVU4odGVzdEVxdWFsRG91
YmxlKFBOYU4sIFBOYU4sIGZhbHNlKSk7CisKKyAgICBhZGRMb2FkVGVzdHMoZmlsdGVyLCB0YXNr
cyk7CisKKyAgICBSVU4odGVzdFNwaWxsR1AoKSk7CisgICAgUlVOKHRlc3RTcGlsbEZQKCkpOwor
CisgICAgUlVOKHRlc3RJbnQzMlRvRG91YmxlUGFydGlhbFJlZ2lzdGVyU3RhbGwoKSk7CisgICAg
UlVOKHRlc3RJbnQzMlRvRG91YmxlUGFydGlhbFJlZ2lzdGVyV2l0aG91dFN0YWxsKCkpOworCisg
ICAgUlVOKHRlc3RDYWxsU2ltcGxlKDEsIDIpKTsKKyAgICBSVU4odGVzdENhbGxSYXJlKDEsIDIp
KTsKKyAgICBSVU4odGVzdENhbGxSYXJlTGl2ZSgxLCAyLCAzKSk7CisgICAgUlVOKHRlc3RDYWxs
U2ltcGxlUHVyZSgxLCAyKSk7CisgICAgUlVOKHRlc3RDYWxsRnVuY3Rpb25XaXRoSGVsbGFBcmd1
bWVudHMoKSk7CisgICAgUlVOKHRlc3RDYWxsRnVuY3Rpb25XaXRoSGVsbGFBcmd1bWVudHMyKCkp
OworICAgIFJVTih0ZXN0Q2FsbEZ1bmN0aW9uV2l0aEhlbGxhQXJndW1lbnRzMygpKTsKKworICAg
IFJVTih0ZXN0UmV0dXJuRG91YmxlKDAuMCkpOworICAgIFJVTih0ZXN0UmV0dXJuRG91YmxlKG5l
Z2F0aXZlWmVybygpKSk7CisgICAgUlVOKHRlc3RSZXR1cm5Eb3VibGUoNDIuNSkpOworICAgIFJV
Tl9VTkFSWSh0ZXN0UmV0dXJuRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7
CisKKyAgICBSVU4odGVzdENhbGxTaW1wbGVEb3VibGUoMSwgMikpOworICAgIFJVTih0ZXN0Q2Fs
bEZ1bmN0aW9uV2l0aEhlbGxhRG91YmxlQXJndW1lbnRzKCkpOworICAgIFJVTl9CSU5BUlkodGVz
dENhbGxTaW1wbGVGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGlu
Z1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTih0ZXN0Q2FsbEZ1bmN0aW9uV2l0aEhl
bGxhRmxvYXRBcmd1bWVudHMoKSk7CisKKyAgICBSVU4odGVzdExpbmVhclNjYW5XaXRoQ2FsbGVl
T25TdGFjaygpKTsKKworICAgIFJVTih0ZXN0Q2hpbGxEaXYoNCwgMiwgMikpOworICAgIFJVTih0
ZXN0Q2hpbGxEaXYoMSwgMCwgMCkpOworICAgIFJVTih0ZXN0Q2hpbGxEaXYoMCwgMCwgMCkpOwor
ICAgIFJVTih0ZXN0Q2hpbGxEaXYoMSwgLTEsIC0xKSk7CisgICAgUlVOKHRlc3RDaGlsbERpdigt
MjE0NzQ4MzY0NyAtIDEsIDAsIDApKTsKKyAgICBSVU4odGVzdENoaWxsRGl2KC0yMTQ3NDgzNjQ3
IC0gMSwgMSwgLTIxNDc0ODM2NDcgLSAxKSk7CisgICAgUlVOKHRlc3RDaGlsbERpdigtMjE0NzQ4
MzY0NyAtIDEsIC0xLCAtMjE0NzQ4MzY0NyAtIDEpKTsKKyAgICBSVU4odGVzdENoaWxsRGl2KC0y
MTQ3NDgzNjQ3IC0gMSwgMiwgLTEwNzM3NDE4MjQpKTsKKyAgICBSVU4odGVzdENoaWxsRGl2NjQo
NCwgMiwgMikpOworICAgIFJVTih0ZXN0Q2hpbGxEaXY2NCgxLCAwLCAwKSk7CisgICAgUlVOKHRl
c3RDaGlsbERpdjY0KDAsIDAsIDApKTsKKyAgICBSVU4odGVzdENoaWxsRGl2NjQoMSwgLTEsIC0x
KSk7CisgICAgUlVOKHRlc3RDaGlsbERpdjY0KC05MjIzMzcyMDM2ODU0Nzc1ODA3bGwgLSAxLCAw
LCAwKSk7CisgICAgUlVOKHRlc3RDaGlsbERpdjY0KC05MjIzMzcyMDM2ODU0Nzc1ODA3bGwgLSAx
LCAxLCAtOTIyMzM3MjAzNjg1NDc3NTgwN2xsIC0gMSkpOworICAgIFJVTih0ZXN0Q2hpbGxEaXY2
NCgtOTIyMzM3MjAzNjg1NDc3NTgwN2xsIC0gMSwgLTEsIC05MjIzMzcyMDM2ODU0Nzc1ODA3bGwg
LSAxKSk7CisgICAgUlVOKHRlc3RDaGlsbERpdjY0KC05MjIzMzcyMDM2ODU0Nzc1ODA3bGwgLSAx
LCAyLCAtNDYxMTY4NjAxODQyNzM4NzkwNCkpOworICAgIFJVTih0ZXN0Q2hpbGxEaXZUd2ljZSg0
LCAyLCA2LCAyLCA1KSk7CisgICAgUlVOKHRlc3RDaGlsbERpdlR3aWNlKDQsIDAsIDYsIDIsIDMp
KTsKKyAgICBSVU4odGVzdENoaWxsRGl2VHdpY2UoNCwgMiwgNiwgMCwgMikpOworCisgICAgUlVO
X1VOQVJZKHRlc3RNb2RBcmcsIGludDY0T3BlcmFuZHMoKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0
TW9kQXJncywgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5B
UlkodGVzdE1vZEltbXMsIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKKyAgICBS
VU5fVU5BUlkodGVzdE1vZEFyZzMyLCBpbnQzMk9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlko
dGVzdE1vZEFyZ3MzMiwgaW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkpOworICAgIFJV
Tl9CSU5BUlkodGVzdE1vZEltbXMzMiwgaW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkp
OworICAgIFJVTl9VTkFSWSh0ZXN0Q2hpbGxNb2RBcmcsIGludDY0T3BlcmFuZHMoKSk7CisgICAg
UlVOX0JJTkFSWSh0ZXN0Q2hpbGxNb2RBcmdzLCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFu
ZHMoKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0Q2hpbGxNb2RJbW1zLCBpbnQ2NE9wZXJhbmRzKCks
IGludDY0T3BlcmFuZHMoKSk7CisgICAgUlVOX1VOQVJZKHRlc3RDaGlsbE1vZEFyZzMyLCBpbnQz
Mk9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlkodGVzdENoaWxsTW9kQXJnczMyLCBpbnQzMk9w
ZXJhbmRzKCksIGludDMyT3BlcmFuZHMoKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0Q2hpbGxNb2RJ
bW1zMzIsIGludDMyT3BlcmFuZHMoKSwgaW50MzJPcGVyYW5kcygpKTsKKworICAgIFJVTih0ZXN0
U3dpdGNoKDAsIDEpKTsKKyAgICBSVU4odGVzdFN3aXRjaCgxLCAxKSk7CisgICAgUlVOKHRlc3RT
d2l0Y2goMiwgMSkpOworICAgIFJVTih0ZXN0U3dpdGNoKDIsIDIpKTsKKyAgICBSVU4odGVzdFN3
aXRjaCgxMCwgMSkpOworICAgIFJVTih0ZXN0U3dpdGNoKDEwLCAyKSk7CisgICAgUlVOKHRlc3RT
d2l0Y2goMTAwLCAxKSk7CisgICAgUlVOKHRlc3RTd2l0Y2goMTAwLCAxMDApKTsKKworICAgIFJV
Tih0ZXN0U3dpdGNoU2FtZUNhc2VBc0RlZmF1bHQoKSk7CisKKyAgICBSVU4odGVzdFN3aXRjaENo
aWxsRGl2KDAsIDEpKTsKKyAgICBSVU4odGVzdFN3aXRjaENoaWxsRGl2KDEsIDEpKTsKKyAgICBS
VU4odGVzdFN3aXRjaENoaWxsRGl2KDIsIDEpKTsKKyAgICBSVU4odGVzdFN3aXRjaENoaWxsRGl2
KDIsIDIpKTsKKyAgICBSVU4odGVzdFN3aXRjaENoaWxsRGl2KDEwLCAxKSk7CisgICAgUlVOKHRl
c3RTd2l0Y2hDaGlsbERpdigxMCwgMikpOworICAgIFJVTih0ZXN0U3dpdGNoQ2hpbGxEaXYoMTAw
LCAxKSk7CisgICAgUlVOKHRlc3RTd2l0Y2hDaGlsbERpdigxMDAsIDEwMCkpOworCisgICAgUlVO
KHRlc3RTd2l0Y2hUYXJnZXR0aW5nU2FtZUJsb2NrKCkpOworICAgIFJVTih0ZXN0U3dpdGNoVGFy
Z2V0dGluZ1NhbWVCbG9ja0ZvbGRQYXRoQ29uc3RhbnQoKSk7CisKKyAgICBSVU4odGVzdFRydW5j
KDApKTsKKyAgICBSVU4odGVzdFRydW5jKDEpKTsKKyAgICBSVU4odGVzdFRydW5jKC0xKSk7Cisg
ICAgUlVOKHRlc3RUcnVuYygxMDAwMDAwMDAwMDAwbGwpKTsKKyAgICBSVU4odGVzdFRydW5jKC0x
MDAwMDAwMDAwMDAwbGwpKTsKKyAgICBSVU4odGVzdFRydW5jRm9sZCgwKSk7CisgICAgUlVOKHRl
c3RUcnVuY0ZvbGQoMSkpOworICAgIFJVTih0ZXN0VHJ1bmNGb2xkKC0xKSk7CisgICAgUlVOKHRl
c3RUcnVuY0ZvbGQoMTAwMDAwMDAwMDAwMGxsKSk7CisgICAgUlVOKHRlc3RUcnVuY0ZvbGQoLTEw
MDAwMDAwMDAwMDBsbCkpOworICAgIAorICAgIFJVTih0ZXN0WkV4dDMyKDApKTsKKyAgICBSVU4o
dGVzdFpFeHQzMigxKSk7CisgICAgUlVOKHRlc3RaRXh0MzIoLTEpKTsKKyAgICBSVU4odGVzdFpF
eHQzMigxMDAwMDAwMDAwbGwpKTsKKyAgICBSVU4odGVzdFpFeHQzMigtMTAwMDAwMDAwMGxsKSk7
CisgICAgUlVOKHRlc3RaRXh0MzJGb2xkKDApKTsKKyAgICBSVU4odGVzdFpFeHQzMkZvbGQoMSkp
OworICAgIFJVTih0ZXN0WkV4dDMyRm9sZCgtMSkpOworICAgIFJVTih0ZXN0WkV4dDMyRm9sZCgx
MDAwMDAwMDAwbGwpKTsKKyAgICBSVU4odGVzdFpFeHQzMkZvbGQoLTEwMDAwMDAwMDBsbCkpOwor
CisgICAgUlVOKHRlc3RTRXh0MzIoMCkpOworICAgIFJVTih0ZXN0U0V4dDMyKDEpKTsKKyAgICBS
VU4odGVzdFNFeHQzMigtMSkpOworICAgIFJVTih0ZXN0U0V4dDMyKDEwMDAwMDAwMDBsbCkpOwor
ICAgIFJVTih0ZXN0U0V4dDMyKC0xMDAwMDAwMDAwbGwpKTsKKyAgICBSVU4odGVzdFNFeHQzMkZv
bGQoMCkpOworICAgIFJVTih0ZXN0U0V4dDMyRm9sZCgxKSk7CisgICAgUlVOKHRlc3RTRXh0MzJG
b2xkKC0xKSk7CisgICAgUlVOKHRlc3RTRXh0MzJGb2xkKDEwMDAwMDAwMDBsbCkpOworICAgIFJV
Tih0ZXN0U0V4dDMyRm9sZCgtMTAwMDAwMDAwMGxsKSk7CisKKyAgICBSVU4odGVzdFRydW5jWkV4
dDMyKDApKTsKKyAgICBSVU4odGVzdFRydW5jWkV4dDMyKDEpKTsKKyAgICBSVU4odGVzdFRydW5j
WkV4dDMyKC0xKSk7CisgICAgUlVOKHRlc3RUcnVuY1pFeHQzMigxMDAwMDAwMDAwbGwpKTsKKyAg
ICBSVU4odGVzdFRydW5jWkV4dDMyKC0xMDAwMDAwMDAwbGwpKTsKKyAgICBSVU4odGVzdFRydW5j
U0V4dDMyKDApKTsKKyAgICBSVU4odGVzdFRydW5jU0V4dDMyKDEpKTsKKyAgICBSVU4odGVzdFRy
dW5jU0V4dDMyKC0xKSk7CisgICAgUlVOKHRlc3RUcnVuY1NFeHQzMigxMDAwMDAwMDAwbGwpKTsK
KyAgICBSVU4odGVzdFRydW5jU0V4dDMyKC0xMDAwMDAwMDAwbGwpKTsKKworICAgIFJVTih0ZXN0
U0V4dDgoMCkpOworICAgIFJVTih0ZXN0U0V4dDgoMSkpOworICAgIFJVTih0ZXN0U0V4dDgoNDIp
KTsKKyAgICBSVU4odGVzdFNFeHQ4KC0xKSk7CisgICAgUlVOKHRlc3RTRXh0OCgweGZmKSk7Cisg
ICAgUlVOKHRlc3RTRXh0OCgweDEwMCkpOworICAgIFJVTih0ZXN0U0V4dDhGb2xkKDApKTsKKyAg
ICBSVU4odGVzdFNFeHQ4Rm9sZCgxKSk7CisgICAgUlVOKHRlc3RTRXh0OEZvbGQoNDIpKTsKKyAg
ICBSVU4odGVzdFNFeHQ4Rm9sZCgtMSkpOworICAgIFJVTih0ZXN0U0V4dDhGb2xkKDB4ZmYpKTsK
KyAgICBSVU4odGVzdFNFeHQ4Rm9sZCgweDEwMCkpOworICAgIFJVTih0ZXN0U0V4dDhTRXh0OCgw
KSk7CisgICAgUlVOKHRlc3RTRXh0OFNFeHQ4KDEpKTsKKyAgICBSVU4odGVzdFNFeHQ4U0V4dDgo
NDIpKTsKKyAgICBSVU4odGVzdFNFeHQ4U0V4dDgoLTEpKTsKKyAgICBSVU4odGVzdFNFeHQ4U0V4
dDgoMHhmZikpOworICAgIFJVTih0ZXN0U0V4dDhTRXh0OCgweDEwMCkpOworICAgIFJVTih0ZXN0
U0V4dDhTRXh0MTYoMCkpOworICAgIFJVTih0ZXN0U0V4dDhTRXh0MTYoMSkpOworICAgIFJVTih0
ZXN0U0V4dDhTRXh0MTYoNDIpKTsKKyAgICBSVU4odGVzdFNFeHQ4U0V4dDE2KC0xKSk7CisgICAg
UlVOKHRlc3RTRXh0OFNFeHQxNigweGZmKSk7CisgICAgUlVOKHRlc3RTRXh0OFNFeHQxNigweDEw
MCkpOworICAgIFJVTih0ZXN0U0V4dDhTRXh0MTYoMHhmZmZmKSk7CisgICAgUlVOKHRlc3RTRXh0
OFNFeHQxNigweDEwMDAwKSk7CisgICAgUlVOKHRlc3RTRXh0OEJpdEFuZCgwLCAwKSk7CisgICAg
UlVOKHRlc3RTRXh0OEJpdEFuZCgxLCAwKSk7CisgICAgUlVOKHRlc3RTRXh0OEJpdEFuZCg0Miwg
MCkpOworICAgIFJVTih0ZXN0U0V4dDhCaXRBbmQoLTEsIDApKTsKKyAgICBSVU4odGVzdFNFeHQ4
Qml0QW5kKDB4ZmYsIDApKTsKKyAgICBSVU4odGVzdFNFeHQ4Qml0QW5kKDB4MTAwLCAwKSk7Cisg
ICAgUlVOKHRlc3RTRXh0OEJpdEFuZCgweGZmZmYsIDApKTsKKyAgICBSVU4odGVzdFNFeHQ4Qml0
QW5kKDB4MTAwMDAsIDApKTsKKyAgICBSVU4odGVzdFNFeHQ4Qml0QW5kKDAsIDB4ZikpOworICAg
IFJVTih0ZXN0U0V4dDhCaXRBbmQoMSwgMHhmKSk7CisgICAgUlVOKHRlc3RTRXh0OEJpdEFuZCg0
MiwgMHhmKSk7CisgICAgUlVOKHRlc3RTRXh0OEJpdEFuZCgtMSwgMHhmKSk7CisgICAgUlVOKHRl
c3RTRXh0OEJpdEFuZCgweGZmLCAweGYpKTsKKyAgICBSVU4odGVzdFNFeHQ4Qml0QW5kKDB4MTAw
LCAweGYpKTsKKyAgICBSVU4odGVzdFNFeHQ4Qml0QW5kKDB4ZmZmZiwgMHhmKSk7CisgICAgUlVO
KHRlc3RTRXh0OEJpdEFuZCgweDEwMDAwLCAweGYpKTsKKyAgICBSVU4odGVzdFNFeHQ4Qml0QW5k
KDAsIDB4ZmYpKTsKKyAgICBSVU4odGVzdFNFeHQ4Qml0QW5kKDEsIDB4ZmYpKTsKKyAgICBSVU4o
dGVzdFNFeHQ4Qml0QW5kKDQyLCAweGZmKSk7CisgICAgUlVOKHRlc3RTRXh0OEJpdEFuZCgtMSwg
MHhmZikpOworICAgIFJVTih0ZXN0U0V4dDhCaXRBbmQoMHhmZiwgMHhmZikpOworICAgIFJVTih0
ZXN0U0V4dDhCaXRBbmQoMHgxMDAsIDB4ZmYpKTsKKyAgICBSVU4odGVzdFNFeHQ4Qml0QW5kKDB4
ZmZmZiwgMHhmZikpOworICAgIFJVTih0ZXN0U0V4dDhCaXRBbmQoMHgxMDAwMCwgMHhmZikpOwor
ICAgIFJVTih0ZXN0U0V4dDhCaXRBbmQoMCwgMHg4MCkpOworICAgIFJVTih0ZXN0U0V4dDhCaXRB
bmQoMSwgMHg4MCkpOworICAgIFJVTih0ZXN0U0V4dDhCaXRBbmQoNDIsIDB4ODApKTsKKyAgICBS
VU4odGVzdFNFeHQ4Qml0QW5kKC0xLCAweDgwKSk7CisgICAgUlVOKHRlc3RTRXh0OEJpdEFuZCgw
eGZmLCAweDgwKSk7CisgICAgUlVOKHRlc3RTRXh0OEJpdEFuZCgweDEwMCwgMHg4MCkpOworICAg
IFJVTih0ZXN0U0V4dDhCaXRBbmQoMHhmZmZmLCAweDgwKSk7CisgICAgUlVOKHRlc3RTRXh0OEJp
dEFuZCgweDEwMDAwLCAweDgwKSk7CisgICAgUlVOKHRlc3RCaXRBbmRTRXh0OCgwLCAweGYpKTsK
KyAgICBSVU4odGVzdEJpdEFuZFNFeHQ4KDEsIDB4ZikpOworICAgIFJVTih0ZXN0Qml0QW5kU0V4
dDgoNDIsIDB4ZikpOworICAgIFJVTih0ZXN0Qml0QW5kU0V4dDgoLTEsIDB4ZikpOworICAgIFJV
Tih0ZXN0Qml0QW5kU0V4dDgoMHhmZiwgMHhmKSk7CisgICAgUlVOKHRlc3RCaXRBbmRTRXh0OCgw
eDEwMCwgMHhmKSk7CisgICAgUlVOKHRlc3RCaXRBbmRTRXh0OCgweGZmZmYsIDB4ZikpOworICAg
IFJVTih0ZXN0Qml0QW5kU0V4dDgoMHgxMDAwMCwgMHhmKSk7CisgICAgUlVOKHRlc3RCaXRBbmRT
RXh0OCgwLCAweGZmKSk7CisgICAgUlVOKHRlc3RCaXRBbmRTRXh0OCgxLCAweGZmKSk7CisgICAg
UlVOKHRlc3RCaXRBbmRTRXh0OCg0MiwgMHhmZikpOworICAgIFJVTih0ZXN0Qml0QW5kU0V4dDgo
LTEsIDB4ZmYpKTsKKyAgICBSVU4odGVzdEJpdEFuZFNFeHQ4KDB4ZmYsIDB4ZmYpKTsKKyAgICBS
VU4odGVzdEJpdEFuZFNFeHQ4KDB4MTAwLCAweGZmKSk7CisgICAgUlVOKHRlc3RCaXRBbmRTRXh0
OCgweGZmZmYsIDB4ZmYpKTsKKyAgICBSVU4odGVzdEJpdEFuZFNFeHQ4KDB4MTAwMDAsIDB4ZmYp
KTsKKyAgICBSVU4odGVzdEJpdEFuZFNFeHQ4KDAsIDB4ZmZmKSk7CisgICAgUlVOKHRlc3RCaXRB
bmRTRXh0OCgxLCAweGZmZikpOworICAgIFJVTih0ZXN0Qml0QW5kU0V4dDgoNDIsIDB4ZmZmKSk7
CisgICAgUlVOKHRlc3RCaXRBbmRTRXh0OCgtMSwgMHhmZmYpKTsKKyAgICBSVU4odGVzdEJpdEFu
ZFNFeHQ4KDB4ZmYsIDB4ZmZmKSk7CisgICAgUlVOKHRlc3RCaXRBbmRTRXh0OCgweDEwMCwgMHhm
ZmYpKTsKKyAgICBSVU4odGVzdEJpdEFuZFNFeHQ4KDB4ZmZmZiwgMHhmZmYpKTsKKyAgICBSVU4o
dGVzdEJpdEFuZFNFeHQ4KDB4MTAwMDAsIDB4ZmZmKSk7CisKKyAgICBSVU4odGVzdFNFeHQxNigw
KSk7CisgICAgUlVOKHRlc3RTRXh0MTYoMSkpOworICAgIFJVTih0ZXN0U0V4dDE2KDQyKSk7Cisg
ICAgUlVOKHRlc3RTRXh0MTYoLTEpKTsKKyAgICBSVU4odGVzdFNFeHQxNigweGZmZmYpKTsKKyAg
ICBSVU4odGVzdFNFeHQxNigweDEwMDAwKSk7CisgICAgUlVOKHRlc3RTRXh0MTZGb2xkKDApKTsK
KyAgICBSVU4odGVzdFNFeHQxNkZvbGQoMSkpOworICAgIFJVTih0ZXN0U0V4dDE2Rm9sZCg0Mikp
OworICAgIFJVTih0ZXN0U0V4dDE2Rm9sZCgtMSkpOworICAgIFJVTih0ZXN0U0V4dDE2Rm9sZCgw
eGZmZmYpKTsKKyAgICBSVU4odGVzdFNFeHQxNkZvbGQoMHgxMDAwMCkpOworICAgIFJVTih0ZXN0
U0V4dDE2U0V4dDgoMCkpOworICAgIFJVTih0ZXN0U0V4dDE2U0V4dDgoMSkpOworICAgIFJVTih0
ZXN0U0V4dDE2U0V4dDgoNDIpKTsKKyAgICBSVU4odGVzdFNFeHQxNlNFeHQ4KC0xKSk7CisgICAg
UlVOKHRlc3RTRXh0MTZTRXh0OCgweGZmZmYpKTsKKyAgICBSVU4odGVzdFNFeHQxNlNFeHQ4KDB4
MTAwMDApKTsKKyAgICBSVU4odGVzdFNFeHQxNlNFeHQxNigwKSk7CisgICAgUlVOKHRlc3RTRXh0
MTZTRXh0MTYoMSkpOworICAgIFJVTih0ZXN0U0V4dDE2U0V4dDE2KDQyKSk7CisgICAgUlVOKHRl
c3RTRXh0MTZTRXh0MTYoLTEpKTsKKyAgICBSVU4odGVzdFNFeHQxNlNFeHQxNigweGZmZmYpKTsK
KyAgICBSVU4odGVzdFNFeHQxNlNFeHQxNigweDEwMDAwKSk7CisgICAgUlVOKHRlc3RTRXh0MTZT
RXh0MTYoMHhmZmZmZmYpKTsKKyAgICBSVU4odGVzdFNFeHQxNlNFeHQxNigweDEwMDAwMDApKTsK
KyAgICBSVU4odGVzdFNFeHQxNkJpdEFuZCgwLCAwKSk7CisgICAgUlVOKHRlc3RTRXh0MTZCaXRB
bmQoMSwgMCkpOworICAgIFJVTih0ZXN0U0V4dDE2Qml0QW5kKDQyLCAwKSk7CisgICAgUlVOKHRl
c3RTRXh0MTZCaXRBbmQoLTEsIDApKTsKKyAgICBSVU4odGVzdFNFeHQxNkJpdEFuZCgweGZmZmYs
IDApKTsKKyAgICBSVU4odGVzdFNFeHQxNkJpdEFuZCgweDEwMDAwLCAwKSk7CisgICAgUlVOKHRl
c3RTRXh0MTZCaXRBbmQoMHhmZmZmZmYsIDApKTsKKyAgICBSVU4odGVzdFNFeHQxNkJpdEFuZCgw
eDEwMDAwMDAsIDApKTsKKyAgICBSVU4odGVzdFNFeHQxNkJpdEFuZCgwLCAweGYpKTsKKyAgICBS
VU4odGVzdFNFeHQxNkJpdEFuZCgxLCAweGYpKTsKKyAgICBSVU4odGVzdFNFeHQxNkJpdEFuZCg0
MiwgMHhmKSk7CisgICAgUlVOKHRlc3RTRXh0MTZCaXRBbmQoLTEsIDB4ZikpOworICAgIFJVTih0
ZXN0U0V4dDE2Qml0QW5kKDB4ZmZmZiwgMHhmKSk7CisgICAgUlVOKHRlc3RTRXh0MTZCaXRBbmQo
MHgxMDAwMCwgMHhmKSk7CisgICAgUlVOKHRlc3RTRXh0MTZCaXRBbmQoMHhmZmZmZmYsIDB4Zikp
OworICAgIFJVTih0ZXN0U0V4dDE2Qml0QW5kKDB4MTAwMDAwMCwgMHhmKSk7CisgICAgUlVOKHRl
c3RTRXh0MTZCaXRBbmQoMCwgMHhmZmZmKSk7CisgICAgUlVOKHRlc3RTRXh0MTZCaXRBbmQoMSwg
MHhmZmZmKSk7CisgICAgUlVOKHRlc3RTRXh0MTZCaXRBbmQoNDIsIDB4ZmZmZikpOworICAgIFJV
Tih0ZXN0U0V4dDE2Qml0QW5kKC0xLCAweGZmZmYpKTsKKyAgICBSVU4odGVzdFNFeHQxNkJpdEFu
ZCgweGZmZmYsIDB4ZmZmZikpOworICAgIFJVTih0ZXN0U0V4dDE2Qml0QW5kKDB4MTAwMDAsIDB4
ZmZmZikpOworICAgIFJVTih0ZXN0U0V4dDE2Qml0QW5kKDB4ZmZmZmZmLCAweGZmZmYpKTsKKyAg
ICBSVU4odGVzdFNFeHQxNkJpdEFuZCgweDEwMDAwMDAsIDB4ZmZmZikpOworICAgIFJVTih0ZXN0
U0V4dDE2Qml0QW5kKDAsIDB4ODAwMCkpOworICAgIFJVTih0ZXN0U0V4dDE2Qml0QW5kKDEsIDB4
ODAwMCkpOworICAgIFJVTih0ZXN0U0V4dDE2Qml0QW5kKDQyLCAweDgwMDApKTsKKyAgICBSVU4o
dGVzdFNFeHQxNkJpdEFuZCgtMSwgMHg4MDAwKSk7CisgICAgUlVOKHRlc3RTRXh0MTZCaXRBbmQo
MHhmZmZmLCAweDgwMDApKTsKKyAgICBSVU4odGVzdFNFeHQxNkJpdEFuZCgweDEwMDAwLCAweDgw
MDApKTsKKyAgICBSVU4odGVzdFNFeHQxNkJpdEFuZCgweGZmZmZmZiwgMHg4MDAwKSk7CisgICAg
UlVOKHRlc3RTRXh0MTZCaXRBbmQoMHgxMDAwMDAwLCAweDgwMDApKTsKKyAgICBSVU4odGVzdEJp
dEFuZFNFeHQxNigwLCAweGYpKTsKKyAgICBSVU4odGVzdEJpdEFuZFNFeHQxNigxLCAweGYpKTsK
KyAgICBSVU4odGVzdEJpdEFuZFNFeHQxNig0MiwgMHhmKSk7CisgICAgUlVOKHRlc3RCaXRBbmRT
RXh0MTYoLTEsIDB4ZikpOworICAgIFJVTih0ZXN0Qml0QW5kU0V4dDE2KDB4ZmZmZiwgMHhmKSk7
CisgICAgUlVOKHRlc3RCaXRBbmRTRXh0MTYoMHgxMDAwMCwgMHhmKSk7CisgICAgUlVOKHRlc3RC
aXRBbmRTRXh0MTYoMHhmZmZmZmYsIDB4ZikpOworICAgIFJVTih0ZXN0Qml0QW5kU0V4dDE2KDB4
MTAwMDAwMCwgMHhmKSk7CisgICAgUlVOKHRlc3RCaXRBbmRTRXh0MTYoMCwgMHhmZmZmKSk7Cisg
ICAgUlVOKHRlc3RCaXRBbmRTRXh0MTYoMSwgMHhmZmZmKSk7CisgICAgUlVOKHRlc3RCaXRBbmRT
RXh0MTYoNDIsIDB4ZmZmZikpOworICAgIFJVTih0ZXN0Qml0QW5kU0V4dDE2KC0xLCAweGZmZmYp
KTsKKyAgICBSVU4odGVzdEJpdEFuZFNFeHQxNigweGZmZmYsIDB4ZmZmZikpOworICAgIFJVTih0
ZXN0Qml0QW5kU0V4dDE2KDB4MTAwMDAsIDB4ZmZmZikpOworICAgIFJVTih0ZXN0Qml0QW5kU0V4
dDE2KDB4ZmZmZmZmLCAweGZmZmYpKTsKKyAgICBSVU4odGVzdEJpdEFuZFNFeHQxNigweDEwMDAw
MDAsIDB4ZmZmZikpOworICAgIFJVTih0ZXN0Qml0QW5kU0V4dDE2KDAsIDB4ZmZmZmYpKTsKKyAg
ICBSVU4odGVzdEJpdEFuZFNFeHQxNigxLCAweGZmZmZmKSk7CisgICAgUlVOKHRlc3RCaXRBbmRT
RXh0MTYoNDIsIDB4ZmZmZmYpKTsKKyAgICBSVU4odGVzdEJpdEFuZFNFeHQxNigtMSwgMHhmZmZm
ZikpOworICAgIFJVTih0ZXN0Qml0QW5kU0V4dDE2KDB4ZmZmZiwgMHhmZmZmZikpOworICAgIFJV
Tih0ZXN0Qml0QW5kU0V4dDE2KDB4MTAwMDAsIDB4ZmZmZmYpKTsKKyAgICBSVU4odGVzdEJpdEFu
ZFNFeHQxNigweGZmZmZmZiwgMHhmZmZmZikpOworICAgIFJVTih0ZXN0Qml0QW5kU0V4dDE2KDB4
MTAwMDAwMCwgMHhmZmZmZikpOworCisgICAgUlVOKHRlc3RTRXh0MzJCaXRBbmQoMCwgMCkpOwor
ICAgIFJVTih0ZXN0U0V4dDMyQml0QW5kKDEsIDApKTsKKyAgICBSVU4odGVzdFNFeHQzMkJpdEFu
ZCg0MiwgMCkpOworICAgIFJVTih0ZXN0U0V4dDMyQml0QW5kKC0xLCAwKSk7CisgICAgUlVOKHRl
c3RTRXh0MzJCaXRBbmQoMHg4MDAwMDAwMCwgMCkpOworICAgIFJVTih0ZXN0U0V4dDMyQml0QW5k
KDAsIDB4ZikpOworICAgIFJVTih0ZXN0U0V4dDMyQml0QW5kKDEsIDB4ZikpOworICAgIFJVTih0
ZXN0U0V4dDMyQml0QW5kKDQyLCAweGYpKTsKKyAgICBSVU4odGVzdFNFeHQzMkJpdEFuZCgtMSwg
MHhmKSk7CisgICAgUlVOKHRlc3RTRXh0MzJCaXRBbmQoMHg4MDAwMDAwMCwgMHhmKSk7CisgICAg
UlVOKHRlc3RTRXh0MzJCaXRBbmQoMCwgMHg4MDAwMDAwMCkpOworICAgIFJVTih0ZXN0U0V4dDMy
Qml0QW5kKDEsIDB4ODAwMDAwMDApKTsKKyAgICBSVU4odGVzdFNFeHQzMkJpdEFuZCg0MiwgMHg4
MDAwMDAwMCkpOworICAgIFJVTih0ZXN0U0V4dDMyQml0QW5kKC0xLCAweDgwMDAwMDAwKSk7Cisg
ICAgUlVOKHRlc3RTRXh0MzJCaXRBbmQoMHg4MDAwMDAwMCwgMHg4MDAwMDAwMCkpOworICAgIFJV
Tih0ZXN0Qml0QW5kU0V4dDMyKDAsIDB4ZikpOworICAgIFJVTih0ZXN0Qml0QW5kU0V4dDMyKDEs
IDB4ZikpOworICAgIFJVTih0ZXN0Qml0QW5kU0V4dDMyKDQyLCAweGYpKTsKKyAgICBSVU4odGVz
dEJpdEFuZFNFeHQzMigtMSwgMHhmKSk7CisgICAgUlVOKHRlc3RCaXRBbmRTRXh0MzIoMHhmZmZm
LCAweGYpKTsKKyAgICBSVU4odGVzdEJpdEFuZFNFeHQzMigweDEwMDAwLCAweGYpKTsKKyAgICBS
VU4odGVzdEJpdEFuZFNFeHQzMigweGZmZmZmZiwgMHhmKSk7CisgICAgUlVOKHRlc3RCaXRBbmRT
RXh0MzIoMHgxMDAwMDAwLCAweGYpKTsKKyAgICBSVU4odGVzdEJpdEFuZFNFeHQzMigwLCAweGZm
ZmYwMDAwMDAwMGxsdSkpOworICAgIFJVTih0ZXN0Qml0QW5kU0V4dDMyKDEsIDB4ZmZmZjAwMDAw
MDAwbGx1KSk7CisgICAgUlVOKHRlc3RCaXRBbmRTRXh0MzIoNDIsIDB4ZmZmZjAwMDAwMDAwbGx1
KSk7CisgICAgUlVOKHRlc3RCaXRBbmRTRXh0MzIoLTEsIDB4ZmZmZjAwMDAwMDAwbGx1KSk7Cisg
ICAgUlVOKHRlc3RCaXRBbmRTRXh0MzIoMHg4MDAwMDAwMCwgMHhmZmZmMDAwMDAwMDBsbHUpKTsK
KworICAgIFJVTih0ZXN0QmFzaWNTZWxlY3QoKSk7CisgICAgUlVOKHRlc3RTZWxlY3RUZXN0KCkp
OworICAgIFJVTih0ZXN0U2VsZWN0Q29tcGFyZURvdWJsZSgpKTsKKyAgICBSVU5fQklOQVJZKHRl
c3RTZWxlY3RDb21wYXJlRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxv
YXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RTZWxlY3RD
b21wYXJlRmxvYXRUb0RvdWJsZSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9h
dGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTih0ZXN0U2VsZWN0RG91YmxlKCkp
OworICAgIFJVTih0ZXN0U2VsZWN0RG91YmxlVGVzdCgpKTsKKyAgICBSVU4odGVzdFNlbGVjdERv
dWJsZUNvbXBhcmVEb3VibGUoKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0U2VsZWN0RG91YmxlQ29t
cGFyZUZsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRP
cGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0U2VsZWN0RmxvYXRDb21wYXJl
RmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJh
bmRzPGZsb2F0PigpKTsKKyAgICBSVU4odGVzdFNlbGVjdERvdWJsZUNvbXBhcmVEb3VibGVXaXRo
QWxpYXNpbmcoKSk7CisgICAgUlVOKHRlc3RTZWxlY3RGbG9hdENvbXBhcmVGbG9hdFdpdGhBbGlh
c2luZygpKTsKKyAgICBSVU4odGVzdFNlbGVjdEZvbGQoNDIpKTsKKyAgICBSVU4odGVzdFNlbGVj
dEZvbGQoNDMpKTsKKyAgICBSVU4odGVzdFNlbGVjdEludmVydCgpKTsKKyAgICBSVU4odGVzdENo
ZWNrU2VsZWN0KCkpOworICAgIFJVTih0ZXN0Q2hlY2tTZWxlY3RDaGVja1NlbGVjdCgpKTsKKyAg
ICBSVU4odGVzdENoZWNrU2VsZWN0QW5kQ1NFKCkpOworICAgIFJVTl9CSU5BUlkodGVzdFBvd0Rv
dWJsZUJ5SW50ZWdlckxvb3AsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCksIGludDY0
T3BlcmFuZHMoKSk7CisKKyAgICBSVU4odGVzdFRydW5jT3JIaWdoKCkpOworICAgIFJVTih0ZXN0
VHJ1bmNPckxvdygpKTsKKyAgICBSVU4odGVzdEJpdEFuZE9ySGlnaCgpKTsKKyAgICBSVU4odGVz
dEJpdEFuZE9yTG93KCkpOworCisgICAgUlVOKHRlc3RCcmFuY2g2NEVxdWFsKDAsIDApKTsKKyAg
ICBSVU4odGVzdEJyYW5jaDY0RXF1YWwoMSwgMSkpOworICAgIFJVTih0ZXN0QnJhbmNoNjRFcXVh
bCgtMSwgLTEpKTsKKyAgICBSVU4odGVzdEJyYW5jaDY0RXF1YWwoMSwgLTEpKTsKKyAgICBSVU4o
dGVzdEJyYW5jaDY0RXF1YWwoLTEsIDEpKTsKKyAgICBSVU4odGVzdEJyYW5jaDY0RXF1YWxJbW0o
MCwgMCkpOworICAgIFJVTih0ZXN0QnJhbmNoNjRFcXVhbEltbSgxLCAxKSk7CisgICAgUlVOKHRl
c3RCcmFuY2g2NEVxdWFsSW1tKC0xLCAtMSkpOworICAgIFJVTih0ZXN0QnJhbmNoNjRFcXVhbElt
bSgxLCAtMSkpOworICAgIFJVTih0ZXN0QnJhbmNoNjRFcXVhbEltbSgtMSwgMSkpOworICAgIFJV
Tih0ZXN0QnJhbmNoNjRFcXVhbE1lbSgwLCAwKSk7CisgICAgUlVOKHRlc3RCcmFuY2g2NEVxdWFs
TWVtKDEsIDEpKTsKKyAgICBSVU4odGVzdEJyYW5jaDY0RXF1YWxNZW0oLTEsIC0xKSk7CisgICAg
UlVOKHRlc3RCcmFuY2g2NEVxdWFsTWVtKDEsIC0xKSk7CisgICAgUlVOKHRlc3RCcmFuY2g2NEVx
dWFsTWVtKC0xLCAxKSk7CisgICAgUlVOKHRlc3RCcmFuY2g2NEVxdWFsTWVtSW1tKDAsIDApKTsK
KyAgICBSVU4odGVzdEJyYW5jaDY0RXF1YWxNZW1JbW0oMSwgMSkpOworICAgIFJVTih0ZXN0QnJh
bmNoNjRFcXVhbE1lbUltbSgtMSwgLTEpKTsKKyAgICBSVU4odGVzdEJyYW5jaDY0RXF1YWxNZW1J
bW0oMSwgLTEpKTsKKyAgICBSVU4odGVzdEJyYW5jaDY0RXF1YWxNZW1JbW0oLTEsIDEpKTsKKwor
ICAgIFJVTih0ZXN0U3RvcmU4TG9hZDhaKDApKTsKKyAgICBSVU4odGVzdFN0b3JlOExvYWQ4Wigx
MjMpKTsKKyAgICBSVU4odGVzdFN0b3JlOExvYWQ4WigxMjM0NSkpOworICAgIFJVTih0ZXN0U3Rv
cmU4TG9hZDhaKC0xMjMpKTsKKworICAgIFJVTih0ZXN0U3RvcmUxNkxvYWQxNlooMCkpOworICAg
IFJVTih0ZXN0U3RvcmUxNkxvYWQxNlooMTIzKSk7CisgICAgUlVOKHRlc3RTdG9yZTE2TG9hZDE2
WigxMjM0NSkpOworICAgIFJVTih0ZXN0U3RvcmUxNkxvYWQxNlooMTIzNDU2NzgpKTsKKyAgICBS
VU4odGVzdFN0b3JlMTZMb2FkMTZaKC0xMjMpKTsKKworICAgIFJVTih0ZXN0U1NoclNobDMyKDQy
LCAyNCwgMjQpKTsKKyAgICBSVU4odGVzdFNTaHJTaGwzMigtNDIsIDI0LCAyNCkpOworICAgIFJV
Tih0ZXN0U1NoclNobDMyKDQyMDAsIDI0LCAyNCkpOworICAgIFJVTih0ZXN0U1NoclNobDMyKC00
MjAwLCAyNCwgMjQpKTsKKyAgICBSVU4odGVzdFNTaHJTaGwzMig0MjAwMDAwLCAyNCwgMjQpKTsK
KyAgICBSVU4odGVzdFNTaHJTaGwzMigtNDIwMDAwMCwgMjQsIDI0KSk7CisKKyAgICBSVU4odGVz
dFNTaHJTaGwzMig0MiwgMTYsIDE2KSk7CisgICAgUlVOKHRlc3RTU2hyU2hsMzIoLTQyLCAxNiwg
MTYpKTsKKyAgICBSVU4odGVzdFNTaHJTaGwzMig0MjAwLCAxNiwgMTYpKTsKKyAgICBSVU4odGVz
dFNTaHJTaGwzMigtNDIwMCwgMTYsIDE2KSk7CisgICAgUlVOKHRlc3RTU2hyU2hsMzIoNDIwMDAw
MCwgMTYsIDE2KSk7CisgICAgUlVOKHRlc3RTU2hyU2hsMzIoLTQyMDAwMDAsIDE2LCAxNikpOwor
CisgICAgUlVOKHRlc3RTU2hyU2hsMzIoNDIsIDgsIDgpKTsKKyAgICBSVU4odGVzdFNTaHJTaGwz
MigtNDIsIDgsIDgpKTsKKyAgICBSVU4odGVzdFNTaHJTaGwzMig0MjAwLCA4LCA4KSk7CisgICAg
UlVOKHRlc3RTU2hyU2hsMzIoLTQyMDAsIDgsIDgpKTsKKyAgICBSVU4odGVzdFNTaHJTaGwzMig0
MjAwMDAwLCA4LCA4KSk7CisgICAgUlVOKHRlc3RTU2hyU2hsMzIoLTQyMDAwMDAsIDgsIDgpKTsK
KyAgICBSVU4odGVzdFNTaHJTaGwzMig0MjAwMDAwMDAsIDgsIDgpKTsKKyAgICBSVU4odGVzdFNT
aHJTaGwzMigtNDIwMDAwMDAwLCA4LCA4KSk7CisKKyAgICBSVU4odGVzdFNTaHJTaGw2NCg0Miwg
NTYsIDU2KSk7CisgICAgUlVOKHRlc3RTU2hyU2hsNjQoLTQyLCA1NiwgNTYpKTsKKyAgICBSVU4o
dGVzdFNTaHJTaGw2NCg0MjAwLCA1NiwgNTYpKTsKKyAgICBSVU4odGVzdFNTaHJTaGw2NCgtNDIw
MCwgNTYsIDU2KSk7CisgICAgUlVOKHRlc3RTU2hyU2hsNjQoNDIwMDAwMCwgNTYsIDU2KSk7Cisg
ICAgUlVOKHRlc3RTU2hyU2hsNjQoLTQyMDAwMDAsIDU2LCA1NikpOworICAgIFJVTih0ZXN0U1No
clNobDY0KDQyMDAwMDAwMCwgNTYsIDU2KSk7CisgICAgUlVOKHRlc3RTU2hyU2hsNjQoLTQyMDAw
MDAwMCwgNTYsIDU2KSk7CisgICAgUlVOKHRlc3RTU2hyU2hsNjQoNDIwMDAwMDAwMDAsIDU2LCA1
NikpOworICAgIFJVTih0ZXN0U1NoclNobDY0KC00MjAwMDAwMDAwMCwgNTYsIDU2KSk7CisKKyAg
ICBSVU4odGVzdFNTaHJTaGw2NCg0MiwgNDgsIDQ4KSk7CisgICAgUlVOKHRlc3RTU2hyU2hsNjQo
LTQyLCA0OCwgNDgpKTsKKyAgICBSVU4odGVzdFNTaHJTaGw2NCg0MjAwLCA0OCwgNDgpKTsKKyAg
ICBSVU4odGVzdFNTaHJTaGw2NCgtNDIwMCwgNDgsIDQ4KSk7CisgICAgUlVOKHRlc3RTU2hyU2hs
NjQoNDIwMDAwMCwgNDgsIDQ4KSk7CisgICAgUlVOKHRlc3RTU2hyU2hsNjQoLTQyMDAwMDAsIDQ4
LCA0OCkpOworICAgIFJVTih0ZXN0U1NoclNobDY0KDQyMDAwMDAwMCwgNDgsIDQ4KSk7CisgICAg
UlVOKHRlc3RTU2hyU2hsNjQoLTQyMDAwMDAwMCwgNDgsIDQ4KSk7CisgICAgUlVOKHRlc3RTU2hy
U2hsNjQoNDIwMDAwMDAwMDAsIDQ4LCA0OCkpOworICAgIFJVTih0ZXN0U1NoclNobDY0KC00MjAw
MDAwMDAwMCwgNDgsIDQ4KSk7CisKKyAgICBSVU4odGVzdFNTaHJTaGw2NCg0MiwgMzIsIDMyKSk7
CisgICAgUlVOKHRlc3RTU2hyU2hsNjQoLTQyLCAzMiwgMzIpKTsKKyAgICBSVU4odGVzdFNTaHJT
aGw2NCg0MjAwLCAzMiwgMzIpKTsKKyAgICBSVU4odGVzdFNTaHJTaGw2NCgtNDIwMCwgMzIsIDMy
KSk7CisgICAgUlVOKHRlc3RTU2hyU2hsNjQoNDIwMDAwMCwgMzIsIDMyKSk7CisgICAgUlVOKHRl
c3RTU2hyU2hsNjQoLTQyMDAwMDAsIDMyLCAzMikpOworICAgIFJVTih0ZXN0U1NoclNobDY0KDQy
MDAwMDAwMCwgMzIsIDMyKSk7CisgICAgUlVOKHRlc3RTU2hyU2hsNjQoLTQyMDAwMDAwMCwgMzIs
IDMyKSk7CisgICAgUlVOKHRlc3RTU2hyU2hsNjQoNDIwMDAwMDAwMDAsIDMyLCAzMikpOworICAg
IFJVTih0ZXN0U1NoclNobDY0KC00MjAwMDAwMDAwMCwgMzIsIDMyKSk7CisKKyAgICBSVU4odGVz
dFNTaHJTaGw2NCg0MiwgMjQsIDI0KSk7CisgICAgUlVOKHRlc3RTU2hyU2hsNjQoLTQyLCAyNCwg
MjQpKTsKKyAgICBSVU4odGVzdFNTaHJTaGw2NCg0MjAwLCAyNCwgMjQpKTsKKyAgICBSVU4odGVz
dFNTaHJTaGw2NCgtNDIwMCwgMjQsIDI0KSk7CisgICAgUlVOKHRlc3RTU2hyU2hsNjQoNDIwMDAw
MCwgMjQsIDI0KSk7CisgICAgUlVOKHRlc3RTU2hyU2hsNjQoLTQyMDAwMDAsIDI0LCAyNCkpOwor
ICAgIFJVTih0ZXN0U1NoclNobDY0KDQyMDAwMDAwMCwgMjQsIDI0KSk7CisgICAgUlVOKHRlc3RT
U2hyU2hsNjQoLTQyMDAwMDAwMCwgMjQsIDI0KSk7CisgICAgUlVOKHRlc3RTU2hyU2hsNjQoNDIw
MDAwMDAwMDAsIDI0LCAyNCkpOworICAgIFJVTih0ZXN0U1NoclNobDY0KC00MjAwMDAwMDAwMCwg
MjQsIDI0KSk7CisKKyAgICBSVU4odGVzdFNTaHJTaGw2NCg0MiwgMTYsIDE2KSk7CisgICAgUlVO
KHRlc3RTU2hyU2hsNjQoLTQyLCAxNiwgMTYpKTsKKyAgICBSVU4odGVzdFNTaHJTaGw2NCg0MjAw
LCAxNiwgMTYpKTsKKyAgICBSVU4odGVzdFNTaHJTaGw2NCgtNDIwMCwgMTYsIDE2KSk7CisgICAg
UlVOKHRlc3RTU2hyU2hsNjQoNDIwMDAwMCwgMTYsIDE2KSk7CisgICAgUlVOKHRlc3RTU2hyU2hs
NjQoLTQyMDAwMDAsIDE2LCAxNikpOworICAgIFJVTih0ZXN0U1NoclNobDY0KDQyMDAwMDAwMCwg
MTYsIDE2KSk7CisgICAgUlVOKHRlc3RTU2hyU2hsNjQoLTQyMDAwMDAwMCwgMTYsIDE2KSk7Cisg
ICAgUlVOKHRlc3RTU2hyU2hsNjQoNDIwMDAwMDAwMDAsIDE2LCAxNikpOworICAgIFJVTih0ZXN0
U1NoclNobDY0KC00MjAwMDAwMDAwMCwgMTYsIDE2KSk7CisKKyAgICBSVU4odGVzdFNTaHJTaGw2
NCg0MiwgOCwgOCkpOworICAgIFJVTih0ZXN0U1NoclNobDY0KC00MiwgOCwgOCkpOworICAgIFJV
Tih0ZXN0U1NoclNobDY0KDQyMDAsIDgsIDgpKTsKKyAgICBSVU4odGVzdFNTaHJTaGw2NCgtNDIw
MCwgOCwgOCkpOworICAgIFJVTih0ZXN0U1NoclNobDY0KDQyMDAwMDAsIDgsIDgpKTsKKyAgICBS
VU4odGVzdFNTaHJTaGw2NCgtNDIwMDAwMCwgOCwgOCkpOworICAgIFJVTih0ZXN0U1NoclNobDY0
KDQyMDAwMDAwMCwgOCwgOCkpOworICAgIFJVTih0ZXN0U1NoclNobDY0KC00MjAwMDAwMDAsIDgs
IDgpKTsKKyAgICBSVU4odGVzdFNTaHJTaGw2NCg0MjAwMDAwMDAwMCwgOCwgOCkpOworICAgIFJV
Tih0ZXN0U1NoclNobDY0KC00MjAwMDAwMDAwMCwgOCwgOCkpOworCisgICAgUlVOKHRlc3RDaGVj
a011bDY0U1NocigpKTsKKworICAgIFJVTl9CSU5BUlkodGVzdFJvdFIsIGludDMyT3BlcmFuZHMo
KSwgaW50MzJPcGVyYW5kcygpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RSb3RSLCBpbnQ2NE9wZXJh
bmRzKCksIGludDMyT3BlcmFuZHMoKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0Um90TCwgaW50MzJP
cGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlkodGVzdFJvdEwsIGlu
dDY0T3BlcmFuZHMoKSwgaW50MzJPcGVyYW5kcygpKTsKKworICAgIFJVTl9CSU5BUlkodGVzdFJv
dFJXaXRoSW1tU2hpZnQsIGludDMyT3BlcmFuZHMoKSwgaW50MzJPcGVyYW5kcygpKTsKKyAgICBS
VU5fQklOQVJZKHRlc3RSb3RSV2l0aEltbVNoaWZ0LCBpbnQ2NE9wZXJhbmRzKCksIGludDMyT3Bl
cmFuZHMoKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0Um90TFdpdGhJbW1TaGlmdCwgaW50MzJPcGVy
YW5kcygpLCBpbnQzMk9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlkodGVzdFJvdExXaXRoSW1t
U2hpZnQsIGludDY0T3BlcmFuZHMoKSwgaW50MzJPcGVyYW5kcygpKTsKKworICAgIFJVTih0ZXN0
Q29tcHV0ZURpdmlzaW9uTWFnaWM8aW50MzJfdD4oMiwgLTIxNDc0ODM2NDcsIDApKTsKKyAgICBS
VU4odGVzdFRyaXZpYWxJbmZpbml0ZUxvb3AoKSk7CisgICAgUlVOKHRlc3RGb2xkUGF0aEVxdWFs
KCkpOworICAgIAorICAgIFJVTih0ZXN0UlNoaWZ0U2VsZjMyKCkpOworICAgIFJVTih0ZXN0VVJT
aGlmdFNlbGYzMigpKTsKKyAgICBSVU4odGVzdExTaGlmdFNlbGYzMigpKTsKKyAgICBSVU4odGVz
dFJTaGlmdFNlbGY2NCgpKTsKKyAgICBSVU4odGVzdFVSU2hpZnRTZWxmNjQoKSk7CisgICAgUlVO
KHRlc3RMU2hpZnRTZWxmNjQoKSk7CisKKyAgICBSVU4odGVzdFBhdGNocG9pbnREb3VibGVSZWdz
KCkpOworICAgIFJVTih0ZXN0U3BpbGxEZWZTbWFsbGVyVGhhblVzZSgpKTsKKyAgICBSVU4odGVz
dFNwaWxsVXNlTGFyZ2VyVGhhbkRlZigpKTsKKyAgICBSVU4odGVzdExhdGVSZWdpc3RlcigpKTsK
KyAgICBSVU4odGVzdEludGVycHJldGVyKCkpOworICAgIFJVTih0ZXN0UmVkdWNlU3RyZW5ndGhD
aGVja0JvdHRvbVVzZUluQW5vdGhlckJsb2NrKCkpOworICAgIFJVTih0ZXN0UmVzZXRSZWFjaGFi
aWxpdHlEYW5nbGluZ1JlZmVyZW5jZSgpKTsKKyAgICAKKyAgICBSVU4odGVzdEVudHJ5U3dpdGNo
U2ltcGxlKCkpOworICAgIFJVTih0ZXN0RW50cnlTd2l0Y2hOb0VudHJ5U3dpdGNoKCkpOworICAg
IFJVTih0ZXN0RW50cnlTd2l0Y2hXaXRoQ29tbW9uUGF0aHMoKSk7CisgICAgUlVOKHRlc3RFbnRy
eVN3aXRjaFdpdGhDb21tb25QYXRoc0FuZE5vblRyaXZpYWxFbnRyeXBvaW50KCkpOworICAgIFJV
Tih0ZXN0RW50cnlTd2l0Y2hMb29wKCkpOworCisgICAgUlVOKHRlc3RTb21lRWFybHlSZWdpc3Rl
cigpKTsKKyAgICBSVU4odGVzdFBhdGNocG9pbnRUZXJtaW5hbFJldHVyblZhbHVlKHRydWUpKTsK
KyAgICBSVU4odGVzdFBhdGNocG9pbnRUZXJtaW5hbFJldHVyblZhbHVlKGZhbHNlKSk7CisgICAg
UlVOKHRlc3RUZXJtaW5hbFBhdGNocG9pbnRUaGF0TmVlZHNUb0JlU3BpbGxlZCgpKTsKKworICAg
IFJVTih0ZXN0TWVtb3J5RmVuY2UoKSk7CisgICAgUlVOKHRlc3RTdG9yZUZlbmNlKCkpOworICAg
IFJVTih0ZXN0TG9hZEZlbmNlKCkpOworICAgIFJVTih0ZXN0VHJhcHBpbmdMb2FkKCkpOworICAg
IFJVTih0ZXN0VHJhcHBpbmdTdG9yZSgpKTsKKyAgICBSVU4odGVzdFRyYXBwaW5nTG9hZEFkZFN0
b3JlKCkpOworICAgIFJVTih0ZXN0VHJhcHBpbmdMb2FkRENFKCkpOworICAgIFJVTih0ZXN0VHJh
cHBpbmdTdG9yZUVsaW1pbmF0aW9uKCkpOworICAgIFJVTih0ZXN0TW92ZUNvbnN0YW50cygpKTsK
KyAgICBSVU4odGVzdFBDT3JpZ2luTWFwRG9lc250SW5zZXJ0Tm9wcygpKTsKKyAgICBSVU4odGVz
dFBpblJlZ2lzdGVycygpKTsKKyAgICBSVU4odGVzdFJlZHVjZVN0cmVuZ3RoUmVhc3NvY2lhdGlv
bih0cnVlKSk7CisgICAgUlVOKHRlc3RSZWR1Y2VTdHJlbmd0aFJlYXNzb2NpYXRpb24oZmFsc2Up
KTsKKyAgICBSVU4odGVzdEFkZFNobDMyKCkpOworICAgIFJVTih0ZXN0QWRkU2hsNjQoKSk7Cisg
ICAgUlVOKHRlc3RBZGRTaGw2NSgpKTsKKyAgICBSVU4odGVzdExvYWRCYXNlSW5kZXhTaGlmdDIo
KSk7CisgICAgUlVOKHRlc3RMb2FkQmFzZUluZGV4U2hpZnQzMigpKTsKKyAgICBSVU4odGVzdE9w
dGltaXplTWF0ZXJpYWxpemF0aW9uKCkpOworICAgIFJVTih0ZXN0TElDTVB1cmUoKSk7CisgICAg
UlVOKHRlc3RMSUNNUHVyZVNpZGVFeGl0cygpKTsKKyAgICBSVU4odGVzdExJQ01QdXJlV3JpdGVz
UGlubmVkKCkpOworICAgIFJVTih0ZXN0TElDTVB1cmVXcml0ZXMoKSk7CisgICAgUlVOKHRlc3RM
SUNNUmVhZHNMb2NhbFN0YXRlKCkpOworICAgIFJVTih0ZXN0TElDTVJlYWRzUGlubmVkKCkpOwor
ICAgIFJVTih0ZXN0TElDTVJlYWRzKCkpOworICAgIFJVTih0ZXN0TElDTVB1cmVOb3RCYWNrd2Fy
ZHNEb21pbmFudCgpKTsKKyAgICBSVU4odGVzdExJQ01QdXJlRm9pbGVkQnlDaGlsZCgpKTsKKyAg
ICBSVU4odGVzdExJQ01QdXJlTm90QmFja3dhcmRzRG9taW5hbnRGb2lsZWRCeUNoaWxkKCkpOwor
ICAgIFJVTih0ZXN0TElDTUV4aXRzU2lkZXdheXMoKSk7CisgICAgUlVOKHRlc3RMSUNNV3JpdGVz
TG9jYWxTdGF0ZSgpKTsKKyAgICBSVU4odGVzdExJQ01Xcml0ZXMoKSk7CisgICAgUlVOKHRlc3RM
SUNNV3JpdGVzUGlubmVkKCkpOworICAgIFJVTih0ZXN0TElDTUZlbmNlKCkpOworICAgIFJVTih0
ZXN0TElDTUNvbnRyb2xEZXBlbmRlbnQoKSk7CisgICAgUlVOKHRlc3RMSUNNQ29udHJvbERlcGVu
ZGVudE5vdEJhY2t3YXJkc0RvbWluYW50KCkpOworICAgIFJVTih0ZXN0TElDTUNvbnRyb2xEZXBl
bmRlbnRTaWRlRXhpdHMoKSk7CisgICAgUlVOKHRlc3RMSUNNUmVhZHNQaW5uZWRXcml0ZXNQaW5u
ZWQoKSk7CisgICAgUlVOKHRlc3RMSUNNUmVhZHNXcml0ZXNEaWZmZXJlbnRIZWFwcygpKTsKKyAg
ICBSVU4odGVzdExJQ01SZWFkc1dyaXRlc092ZXJsYXBwaW5nSGVhcHMoKSk7CisgICAgUlVOKHRl
c3RMSUNNRGVmYXVsdENhbGwoKSk7CisKKyAgICBhZGRBdG9taWNUZXN0cyhmaWx0ZXIsIHRhc2tz
KTsKKyAgICBSVU4odGVzdERlcGVuZDMyKCkpOworICAgIFJVTih0ZXN0RGVwZW5kNjQoKSk7CisK
KyAgICBSVU4odGVzdFdhc21Cb3VuZHNDaGVjaygwKSk7CisgICAgUlVOKHRlc3RXYXNtQm91bmRz
Q2hlY2soMTAwKSk7CisgICAgUlVOKHRlc3RXYXNtQm91bmRzQ2hlY2soMTAwMDApKTsKKyAgICBS
VU4odGVzdFdhc21Cb3VuZHNDaGVjayhzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4
KCkgLSA1KSk7CisKKyAgICBSVU4odGVzdFdhc21BZGRyZXNzKCkpOworICAgIAorICAgIFJVTih0
ZXN0RmFzdFRMU0xvYWQoKSk7CisgICAgUlVOKHRlc3RGYXN0VExTU3RvcmUoKSk7CisKKyAgICBS
VU4odGVzdERvdWJsZUxpdGVyYWxDb21wYXJpc29uKGJpdHdpc2VfY2FzdDxkb3VibGU+KDB4ODAw
MDAwMDAwMDAwMDAwMXVsbCksIGJpdHdpc2VfY2FzdDxkb3VibGU+KDB4MDAwMDAwMDAwMDAwMDAw
MHVsbCkpKTsKKyAgICBSVU4odGVzdERvdWJsZUxpdGVyYWxDb21wYXJpc29uKGJpdHdpc2VfY2Fz
dDxkb3VibGU+KDB4MDAwMDAwMDAwMDAwMDAwMHVsbCksIGJpdHdpc2VfY2FzdDxkb3VibGU+KDB4
ODAwMDAwMDAwMDAwMDAwMXVsbCkpKTsKKyAgICBSVU4odGVzdERvdWJsZUxpdGVyYWxDb21wYXJp
c29uKDEyNS4zMTQ0NDQ2OTQ4MjQxLCAxMjUuMzE0NDQ0Njk0ODI0MikpOworICAgIFJVTih0ZXN0
RG91YmxlTGl0ZXJhbENvbXBhcmlzb24oMTI1LjMxNDQ0NDY5NDgyNDIsIDEyNS4zMTQ0NDQ2OTQ4
MjQxKSk7CisKKyAgICBSVU4odGVzdEZsb2F0RXF1YWxPclVub3JkZXJlZEZvbGRpbmcoKSk7Cisg
ICAgUlVOKHRlc3RGbG9hdEVxdWFsT3JVbm9yZGVyZWRGb2xkaW5nTmFOKCkpOworICAgIFJVTih0
ZXN0RmxvYXRFcXVhbE9yVW5vcmRlcmVkRG9udEZvbGQoKSk7CisgICAgCisgICAgUlVOKHRlc3RT
aHVmZmxlRG9lc250VHJhc2hDYWxsZWVTYXZlcygpKTsKKyAgICBSVU4odGVzdERlbW90ZVBhdGNo
cG9pbnRUZXJtaW5hbCgpKTsKKworICAgIFJVTih0ZXN0TG9vcFdpdGhNdWx0aXBsZUhlYWRlckVk
Z2VzKCkpOworCisgICAgUlVOKHRlc3RJbmZpbml0ZUxvb3BEb2VzbnRDYXVzZUJhZEhvaXN0aW5n
KCkpOworCisgICAgaWYgKGlzWDg2KCkpIHsKKyAgICAgICAgUlVOKHRlc3RCcmFuY2hCaXRBbmRJ
bW1GdXNpb24oSWRlbnRpdHksIEludDY0LCAxLCBBaXI6OkJyYW5jaFRlc3QzMiwgQWlyOjpBcmc6
OlRtcCkpOworICAgICAgICBSVU4odGVzdEJyYW5jaEJpdEFuZEltbUZ1c2lvbihJZGVudGl0eSwg
SW50NjQsIDB4ZmYsIEFpcjo6QnJhbmNoVGVzdDMyLCBBaXI6OkFyZzo6VG1wKSk7CisgICAgICAg
IFJVTih0ZXN0QnJhbmNoQml0QW5kSW1tRnVzaW9uKFRydW5jLCBJbnQzMiwgMSwgQWlyOjpCcmFu
Y2hUZXN0MzIsIEFpcjo6QXJnOjpUbXApKTsKKyAgICAgICAgUlVOKHRlc3RCcmFuY2hCaXRBbmRJ
bW1GdXNpb24oVHJ1bmMsIEludDMyLCAweGZmLCBBaXI6OkJyYW5jaFRlc3QzMiwgQWlyOjpBcmc6
OlRtcCkpOworICAgICAgICBSVU4odGVzdEJyYW5jaEJpdEFuZEltbUZ1c2lvbihMb2FkOFMsIElu
dDMyLCAxLCBBaXI6OkJyYW5jaFRlc3Q4LCBBaXI6OkFyZzo6QWRkcikpOworICAgICAgICBSVU4o
dGVzdEJyYW5jaEJpdEFuZEltbUZ1c2lvbihMb2FkOFosIEludDMyLCAxLCBBaXI6OkJyYW5jaFRl
c3Q4LCBBaXI6OkFyZzo6QWRkcikpOworICAgICAgICBSVU4odGVzdEJyYW5jaEJpdEFuZEltbUZ1
c2lvbihMb2FkLCBJbnQzMiwgMSwgQWlyOjpCcmFuY2hUZXN0MzIsIEFpcjo6QXJnOjpBZGRyKSk7
CisgICAgICAgIFJVTih0ZXN0QnJhbmNoQml0QW5kSW1tRnVzaW9uKExvYWQsIEludDY0LCAxLCBB
aXI6OkJyYW5jaFRlc3QzMiwgQWlyOjpBcmc6OkFkZHIpKTsKKyAgICAgICAgUlVOKHRlc3RYODZM
ZWFBZGRBZGRTaGxMZWZ0KCkpOworICAgICAgICBSVU4odGVzdFg4NkxlYUFkZEFkZFNobFJpZ2h0
KCkpOworICAgICAgICBSVU4odGVzdFg4NkxlYUFkZEFkZCgpKTsKKyAgICAgICAgUlVOKHRlc3RY
ODZMZWFBZGRTaGxSaWdodCgpKTsKKyAgICAgICAgUlVOKHRlc3RYODZMZWFBZGRTaGxMZWZ0U2Nh
bGUxKCkpOworICAgICAgICBSVU4odGVzdFg4NkxlYUFkZFNobExlZnRTY2FsZTIoKSk7CisgICAg
ICAgIFJVTih0ZXN0WDg2TGVhQWRkU2hsTGVmdFNjYWxlNCgpKTsKKyAgICAgICAgUlVOKHRlc3RY
ODZMZWFBZGRTaGxMZWZ0U2NhbGU4KCkpOworICAgIH0KKworICAgIGlmIChpc0FSTTY0KCkpIHsK
KyAgICAgICAgUlVOKHRlc3RUZXJuYXJ5U3ViSW5zdHJ1Y3Rpb25TZWxlY3Rpb24oSWRlbnRpdHks
IEludDY0LCBBaXI6OlN1YjY0KSk7CisgICAgICAgIFJVTih0ZXN0VGVybmFyeVN1Ykluc3RydWN0
aW9uU2VsZWN0aW9uKFRydW5jLCBJbnQzMiwgQWlyOjpTdWIzMikpOworICAgIH0KKworICAgIFJV
Tih0ZXN0UmVwb3J0VXNlZFJlZ2lzdGVyc0xhdGVVc2VGb2xsb3dlZEJ5RWFybHlEZWZEb2VzTm90
TWFya1VzZUFzRGVhZCgpKTsKKworICAgIGlmICh0YXNrcy5pc0VtcHR5KCkpCisgICAgICAgIHVz
YWdlKCk7CisKKyAgICBMb2NrIGxvY2s7CisKKyAgICBWZWN0b3I8UmVmPFRocmVhZD4+IHRocmVh
ZHM7CisgICAgZm9yICh1bnNpZ25lZCBpID0gZmlsdGVyID8gMSA6IFdURjo6bnVtYmVyT2ZQcm9j
ZXNzb3JDb3JlcygpOyBpLS07KSB7CisgICAgICAgIHRocmVhZHMuYXBwZW5kKAorICAgICAgICAg
ICAgVGhyZWFkOjpjcmVhdGUoCisgICAgICAgICAgICAgICAgInRlc3RiMyB0aHJlYWQiLAorICAg
ICAgICAgICAgICAgIFsmXSAoKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoOzspIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoKT4+IHRhc2s7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobG9jayk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRh
c2tzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sgPSB0YXNrcy50YWtlRmlyc3QoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgdGFzay0+
cnVuKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KSk7CisgICAg
fQorCisgICAgZm9yIChhdXRvJiB0aHJlYWQgOiB0aHJlYWRzKQorICAgICAgICB0aHJlYWQtPndh
aXRGb3JDb21wbGV0aW9uKCk7CisgICAgY3Jhc2hMb2NrLmxvY2soKTsKKyAgICBjcmFzaExvY2su
dW5sb2NrKCk7Cit9CisKKyNlbHNlIC8vIEVOQUJMRShCM19KSVQpCisKK3N0YXRpYyB2b2lkIHJ1
bihjb25zdCBjaGFyKikKK3sKKyAgICBkYXRhTG9nKCJCMyBKSVQgaXMgbm90IGVuYWJsZWQuXG4i
KTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCisKK2ludCBtYWluKGludCBhcmdjLCBj
aGFyKiogYXJndikKK3sKKyAgICBjb25zdCBjaGFyKiBmaWx0ZXIgPSBudWxscHRyOworICAgIHN3
aXRjaCAoYXJnYykgeworICAgIGNhc2UgMToKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAyOgor
ICAgICAgICBmaWx0ZXIgPSBhcmd2WzFdOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICB1c2FnZSgpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBKU0M6OmluaXRp
YWxpemVUaHJlYWRpbmcoKTsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDw9IDI7
ICsraSkgeworICAgICAgICBKU0M6Ok9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkgPSBpOwor
ICAgICAgICBydW4oZmlsdGVyKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworI2lmIE9T
KFdJTkRPV1MpCitleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBpbnQgV0lOQVBJIGRs
bExhdW5jaGVyRW50cnlQb2ludChpbnQgYXJnYywgY29uc3QgY2hhciogYXJndltdKQoreworICAg
IHJldHVybiBtYWluKGFyZ2MsIGNvbnN0X2Nhc3Q8Y2hhcioqPihhcmd2KSk7Cit9CisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3NWRjMjQ0YWYy
YjUxYmU1ZTQ0YjM5M2JhMmFlZTA2OTM1MzVjNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIuY3BwCkBAIC0wLDAgKzEsMzIxMyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgInRlc3RiMy5oIgorCisjaWYgRU5BQkxFKEIzX0pJVCkKKwordm9p
ZCB0ZXN0NDIoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGNvbnN0NDIgPSByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDIpOworICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBjb25zdDQyKTsKKworICAgIENIRUNL
KGNvbXBpbGVBbmRSdW48aW50Pihwcm9jKSA9PSA0Mik7Cit9CisKK3ZvaWQgdGVzdExvYWQ0Migp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICBpbnQgeCA9IDQyOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmln
aW4oKSwgJngpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYykgPT0gNDIp
OworfQorCit2b2lkIHRlc3RMb2FkQWNxNDIoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgaW50IHggPSA0MjsKKyAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3Jp
Z2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAg
ICBwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZ4KSwKKyAgICAgICAgICAgIDAsIEhl
YXBSYW5nZSg0MiksIEhlYXBSYW5nZSg0MikpKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQ
cm9jKHByb2MpOworICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0
aW9uKCpjb2RlLCAibGRhIik7CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUpID09IDQyKTsK
K30KKwordm9pZCB0ZXN0TG9hZFdpdGhPZmZzZXRJbXBsKGludDMyX3Qgb2Zmc2V0NjQsIGludDMy
X3Qgb2Zmc2V0MzIpCit7CisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgaW50NjRfdCB4ID0g
LTQyOworICAgICAgICBWYWx1ZSogYmFzZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAg
ICAgICAgICAgcHJvYywgTG9hZCwgSW50NjQsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIGJh
c2UsCisgICAgICAgICAgICAgICAgb2Zmc2V0NjQpKTsKKworICAgICAgICBjaGFyKiBhZGRyZXNz
ID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oJngpIC0gb2Zmc2V0NjQ7CisgICAgICAgIENIRUNL
KGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYWRkcmVzcykgPT0gLTQyKTsKKyAgICB9Cisg
ICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgaW50MzJfdCB4ID0gLTQyOworICAgICAgICBWYWx1
ZSogYmFzZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgTG9h
ZCwgSW50MzIsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIGJhc2UsCisgICAgICAgICAgICAg
ICAgb2Zmc2V0MzIpKTsKKworICAgICAgICBjaGFyKiBhZGRyZXNzID0gcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4oJngpIC0gb2Zmc2V0MzI7CisgICAgICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50
MzJfdD4ocHJvYywgYWRkcmVzcykgPT0gLTQyKTsKKyAgICB9Cit9CisKK3ZvaWQgdGVzdExvYWRP
ZmZzZXRJbW05TWF4KCkKK3sKKyAgICB0ZXN0TG9hZFdpdGhPZmZzZXRJbXBsKDI1NSwgMjU1KTsK
K30KKwordm9pZCB0ZXN0TG9hZE9mZnNldEltbTlNYXhQbHVzT25lKCkKK3sKKyAgICB0ZXN0TG9h
ZFdpdGhPZmZzZXRJbXBsKDI1NiwgMjU2KTsKK30KKwordm9pZCB0ZXN0TG9hZE9mZnNldEltbTlN
YXhQbHVzVHdvKCkKK3sKKyAgICB0ZXN0TG9hZFdpdGhPZmZzZXRJbXBsKDI1NywgMjU3KTsKK30K
Kwordm9pZCB0ZXN0TG9hZE9mZnNldEltbTlNaW4oKQoreworICAgIHRlc3RMb2FkV2l0aE9mZnNl
dEltcGwoLTI1NiwgLTI1Nik7Cit9CisKK3ZvaWQgdGVzdExvYWRPZmZzZXRJbW05TWluTWludXNP
bmUoKQoreworICAgIHRlc3RMb2FkV2l0aE9mZnNldEltcGwoLTI1NywgLTI1Nyk7Cit9CisKK3Zv
aWQgdGVzdExvYWRPZmZzZXRTY2FsZWRVbnNpZ25lZEltbTEyTWF4KCkKK3sKKyAgICB0ZXN0TG9h
ZFdpdGhPZmZzZXRJbXBsKDMyNzYwLCAxNjM4MCk7Cit9CisKK3ZvaWQgdGVzdExvYWRPZmZzZXRT
Y2FsZWRVbnNpZ25lZE92ZXJJbW0xMk1heCgpCit7CisgICAgdGVzdExvYWRXaXRoT2Zmc2V0SW1w
bCgzMjc2MCwgMzI3NjApOworICAgIHRlc3RMb2FkV2l0aE9mZnNldEltcGwoMzI3NjEsIDE2Mzgx
KTsKKyAgICB0ZXN0TG9hZFdpdGhPZmZzZXRJbXBsKDMyNzY4LCAxNjM4NCk7Cit9CisKK3ZvaWQg
dGVzdEJpdFhvclRyZWVBcmdzKGludDY0X3QgYSwgaW50NjRfdCBiKQoreworICAgIFByb2NlZHVy
ZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFs
dWUqIGFyZ0EgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgVmFsdWUqIGFyZ0IgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMSk7CisgICAgVmFsdWUqIG5vZGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJp
dFhvciwgT3JpZ2luKCksIGFyZ0EsIGFyZ0IpOworICAgIG5vZGUgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEJpdFhvciwgT3JpZ2luKCksIG5vZGUsIGFyZ0IpOworICAgIG5vZGUgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdFhvciwgT3JpZ2luKCksIG5vZGUsIGFyZ0Ep
OworICAgIG5vZGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdFhvciwgT3JpZ2lu
KCksIG5vZGUsIGFyZ0IpOworICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwgbm9kZSk7CisKKyAgICBDSEVDS19FUShjb21waWxlQW5kUnVuPGludDY0X3Q+
KHByb2MsIGEsIGIpLCAoKChhIF4gYikgXiBiKSBeIGEpIF4gYik7Cit9CisKK3ZvaWQgdGVzdEJp
dFhvclRyZWVBcmdzRXZlbihpbnQ2NF90IGEsIGludDY0X3QgYikKK3sKKyAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVl
KiBhcmdBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVlKiBhcmdCID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjEpOworICAgIFZhbHVlKiBub2RlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRY
b3IsIE9yaWdpbigpLCBhcmdBLCBhcmdCKTsKKyAgICBub2RlID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLCBub2RlLCBhcmdCKTsKKyAgICBub2RlID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLCBub2RlLCBhcmdBKTsK
KyAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIG5vZGUp
OworCisgICAgQ0hFQ0tfRVEoY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhLCBiKSwgKChh
IF4gYikgXiBiKSBeIGEpOworfQorCit2b2lkIHRlc3RCaXRYb3JUcmVlQXJnSW1tKGludDY0X3Qg
YSwgaW50NjRfdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ0EgPSByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
CisgICAgVmFsdWUqIGltbUIgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgYik7CisgICAgVmFsdWUqIG5vZGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEJpdFhvciwgT3JpZ2luKCksIGFyZ0EsIGltbUIpOworICAgIG5vZGUgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdFhvciwgT3JpZ2luKCksIGFyZ0EsIG5vZGUpOworICAgIG5v
ZGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdFhvciwgT3JpZ2luKCksIGFyZ0Es
IG5vZGUpOworICAgIG5vZGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdFhvciwg
T3JpZ2luKCksIGltbUIsIG5vZGUpOworICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgbm9kZSk7CisKKyAgICBDSEVDS19FUShjb21waWxlQW5kUnVuPGlu
dDY0X3Q+KHByb2MsIGEpLCBiIF4gKGEgXiAoYSBeIChhIF4gYikpKSk7Cit9CisKK3ZvaWQgdGVz
dEFkZFRyZWVBcmczMihpbnQzMl90IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJnQSA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKKyAgICBhcmdBID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVu
YywgT3JpZ2luKCksIGFyZ0EpOworICAgIFZhbHVlKiBub2RlID0gYXJnQTsKKyAgICBpbnQzMl90
IGV4cGVjdGVkUmVzdWx0ID0gYTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjA7ICsr
aSkgeworICAgICAgICBWYWx1ZSogb3RoZXJOb2RlOworICAgICAgICBpZiAoIShpICUgMykpIHsK
KyAgICAgICAgICAgIG90aGVyTm9kZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBpKTsKKyAgICAgICAgICAgIGV4cGVjdGVkUmVzdWx0ICs9IGk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBvdGhlck5vZGUgPSBhcmdBOworICAgICAgICAgICAg
ZXhwZWN0ZWRSZXN1bHQgKz0gYTsKKyAgICAgICAgfQorICAgICAgICBub2RlID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBub2RlLCBvdGhlck5vZGUpOworICAg
IH0KKyAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIG5v
ZGUpOworCisgICAgQ0hFQ0tfRVEoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBhKSwgZXhw
ZWN0ZWRSZXN1bHQpOworfQorCit2b2lkIHRlc3RNdWxUcmVlQXJnMzIoaW50MzJfdCBhKQorewor
ICAgIC8vIEZpYm9uYWNjaS1saWtlIGV4cHJlc3Npb24gdHJlZSB3aXRoIG11bHRpcGxpY2F0aW9u
IGluc3RlYWQgb2YgYWRkaXRpb24uCisgICAgLy8gVmVyaWZpZXMgdGhhdCB3ZSBkb24ndCBleHBs
b2RlIG9uIGhlYXZpbHkgZmFjdG9yZWQgZ3JhcGhzLgorICAgIFByb2NlZHVyZSBwcm9jOworICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ0EgPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7CisgICAgYXJnQSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
VHJ1bmMsIE9yaWdpbigpLCBhcmdBKTsKKyAgICBWYWx1ZSogbm9kZUEgPSBhcmdBOworICAgIFZh
bHVlKiBub2RlQiA9IGFyZ0E7CisgICAgaW50MzJfdCBleHBlY3RlZEEgPSBhLCBleHBlY3RlZFJl
c3VsdCA9IGE7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDIwOyArK2kpIHsKKyAgICAg
ICAgVmFsdWUqIG5ld05vZGVCID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9y
aWdpbigpLCBub2RlQSwgbm9kZUIpOworICAgICAgICBub2RlQSA9IG5vZGVCOworICAgICAgICBu
b2RlQiA9IG5ld05vZGVCOworICAgICAgICBpbnQzMl90IG5ld0V4cGVjdGVkUmVzdWx0ID0gZXhw
ZWN0ZWRBICogZXhwZWN0ZWRSZXN1bHQ7CisgICAgICAgIGV4cGVjdGVkQSA9IGV4cGVjdGVkUmVz
dWx0OworICAgICAgICBleHBlY3RlZFJlc3VsdCA9IG5ld0V4cGVjdGVkUmVzdWx0OworICAgIH0K
KyAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIG5vZGVC
KTsKKworICAgIENIRUNLX0VRKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYSksIGV4cGVj
dGVkUmVzdWx0KTsKK30KKwordm9pZCB0ZXN0Qml0QW5kVHJlZUFyZzMyKGludDMyX3QgYSkKK3sK
KyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworICAgIFZhbHVlKiBhcmdBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIGFyZ0EgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwgYXJnQSk7CisgICAgVmFs
dWUqIG5vZGUgPSBhcmdBOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCA4OyArK2kpIHsK
KyAgICAgICAgVmFsdWUqIGNvbnN0SSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBpIHwgNDIpOworICAgICAgICBWYWx1ZSogbmV3Qml0QW5kID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBhcmdBLCBjb25zdEkpOwor
ICAgICAgICBub2RlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdp
bigpLCBub2RlLCBuZXdCaXRBbmQpOworICAgIH0KKyAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFJldHVybiwgT3JpZ2luKCksIG5vZGUpOworCisgICAgQ0hFQ0tfRVEoY29tcGlsZUFu
ZFJ1bjxpbnQzMl90Pihwcm9jLCBhKSwgYSAmIDQyKTsKK30KKwordm9pZCB0ZXN0Qml0T3JUcmVl
QXJnMzIoaW50MzJfdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ0EgPSByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7CisgICAgYXJnQSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdp
bigpLCBhcmdBKTsKKyAgICBWYWx1ZSogbm9kZSA9IGFyZ0E7CisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IDg7ICsraSkgeworICAgICAgICBWYWx1ZSogY29uc3RJID0gcm9vdC0+YXBwZW5k
TmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGkpOworICAgICAgICBWYWx1ZSogbmV3
Qml0QW5kID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRPciwgT3JpZ2luKCksIGFy
Z0EsIGNvbnN0SSk7CisgICAgICAgIG5vZGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEJpdE9yLCBPcmlnaW4oKSwgbm9kZSwgbmV3Qml0QW5kKTsKKyAgICB9CisgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBub2RlKTsKKworICAgIENIRUNL
X0VRKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYSksIGEgfCA3KTsKK30KKwordm9pZCB0
ZXN0QXJnKGludCBhcmd1bWVudCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhcmd1bWVudCkg
PT0gYXJndW1lbnQpOworfQorCit2b2lkIHRlc3RSZXR1cm5Db25zdDY0KGludDY0X3QgdmFsdWUp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2Ms
IFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+
KHByb2MsIE9yaWdpbigpLCB2YWx1ZSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2
NF90Pihwcm9jKSA9PSB2YWx1ZSk7Cit9CisKK3ZvaWQgdGVzdFJldHVyblZvaWQoKQoreworICAg
IFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCkp
OworICAgIGNvbXBpbGVBbmRSdW48dm9pZD4ocHJvYyk7Cit9CisKK3ZvaWQgdGVzdEFkZEFyZyhp
bnQgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOworICAgIFZhbHVlKiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwg
dmFsdWUsIHZhbHVlKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYSkg
PT0gYSArIGEpOworfQorCit2b2lkIHRlc3RBZGRBcmdzKGludCBhLCBpbnQgYikKK3sKKyAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSkpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihw
cm9jLCBhLCBiKSA9PSBhICsgYik7Cit9CisKK3ZvaWQgdGVzdEFkZEFyZ0ltbShpbnQgYSwgaW50
IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIGIpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYSkgPT0g
YSArIGIpOworfQorCit2b2lkIHRlc3RBZGRJbW1BcmcoaW50IGEsIGludCBiKQoreworICAgIFBy
b2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJv
YywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFs
dWU+KHByb2MsIE9yaWdpbigpLCBhKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOwor
CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGIpID09IGEgKyBiKTsKK30KKwor
dm9pZCB0ZXN0QWRkQXJnTWVtKGludDY0X3QgYSwgaW50NjRfdCBiKQoreworICAgIFByb2NlZHVy
ZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFs
dWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgTWVtb3J5VmFsdWUqIGxvYWQgPSBy
b290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwg
YWRkcmVzcyk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAorICAgICAgICBsb2Fk
KTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlLCBPcmlnaW4o
KSwgcmVzdWx0LCBhZGRyZXNzKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIDApKTsKKworICAgIGludDY0X3QgaW5wdXRPdXRwdXQgPSBiOworICAgIENIRUNL
KCFjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEsICZpbnB1dE91dHB1dCkpOworICAgIENI
RUNLKGlucHV0T3V0cHV0ID09IGEgKyBiKTsKK30KKwordm9pZCB0ZXN0QWRkTWVtQXJnKGludDY0
X3QgYSwgaW50NjRfdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7CisgICAgTWVtb3J5VmFsdWUqIGxvYWQgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFs
dWU+KHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwgYWRkcmVzcyk7CisgICAgVmFsdWUqIHJl
c3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwKKyAgICAg
ICAgbG9hZCwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICByb290LT5hcHBlbmROZXdD
b250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKworICAgIENIRUNL
KGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgJmEsIGIpID09IGEgKyBiKTsKK30KKwordm9p
ZCB0ZXN0QWRkSW1tTWVtKGludDY0X3QgYSwgaW50NjRfdCBiKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUq
IGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgTWVtb3J5VmFsdWUqIGxvYWQgPSByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwgYWRk
cmVzcyk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
QWRkLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIGEpLAorICAgICAgICBsb2FkKTsKKyAgICByb290LT5hcHBlbmROZXc8TWVt
b3J5VmFsdWU+KHByb2MsIFN0b3JlLCBPcmlnaW4oKSwgcmVzdWx0LCBhZGRyZXNzKTsKKyAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIGludDY0
X3QgaW5wdXRPdXRwdXQgPSBiOworICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludD4ocHJvYywg
JmlucHV0T3V0cHV0KSk7CisgICAgQ0hFQ0soaW5wdXRPdXRwdXQgPT0gYSArIGIpOworfQorCit2
b2lkIHRlc3RBZGRBcmczMihpbnQgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiB2YWx1ZSA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCkpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBBZGQsIE9yaWdpbigpLCB2YWx1ZSwgdmFsdWUpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRS
dW48aW50Pihwcm9jLCBhKSA9PSBhICsgYSk7Cit9CisKK3ZvaWQgdGVzdEFkZEFyZ3MzMihpbnQg
YSwgaW50IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCks
CisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAor
ICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpKTsKKworICAgIENIRUNLKGNvbXBpbGVB
bmRSdW48aW50Pihwcm9jLCBhLCBiKSA9PSBhICsgYik7Cit9CisKK3ZvaWQgdGVzdEFkZEFyZ01l
bTMyKGludDMyX3QgYSwgaW50MzJfdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFkZHJlc3MgPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMSk7CisgICAgTWVtb3J5VmFsdWUqIGxvYWQgPSByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgYWRkcmVzcyk7CisgICAg
VmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3Jp
Z2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgYXJndW1lbnQsIGxvYWQp
OworICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmUsIE9yaWdpbigp
LCByZXN1bHQsIGFkZHJlc3MpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgMCkpOworCisgICAgaW50MzJfdCBpbnB1dE91dHB1dCA9IGI7CisgICAgQ0hFQ0so
IWNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYSwgJmlucHV0T3V0cHV0KSk7CisgICAgQ0hF
Q0soaW5wdXRPdXRwdXQgPT0gYSArIGIpOworfQorCit2b2lkIHRlc3RBZGRNZW1BcmczMihpbnQz
Ml90IGEsIGludDMyX3QgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOworICAgIE1lbW9yeVZhbHVlKiBsb2FkID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZh
bHVlPihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksIGFkZHJlc3MpOworICAgIFZhbHVlKiBh
cmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGxvYWQsIGFyZ3VtZW50KTsKKyAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0
KTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgJmEsIGIpID09IGEg
KyBiKTsKK30KKwordm9pZCB0ZXN0QWRkSW1tTWVtMzIoaW50MzJfdCBhLCBpbnQzMl90IGIpCit7
CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBNZW1vcnlW
YWx1ZSogbG9hZCA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50
MzIsIE9yaWdpbigpLCBhZGRyZXNzKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSksCisgICAgICAgIGxvYWQpOworICAgIHJv
b3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmUsIE9yaWdpbigpLCByZXN1bHQs
IGFkZHJlc3MpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
MCkpOworCisgICAgaW50MzJfdCBpbnB1dE91dHB1dCA9IGI7CisgICAgQ0hFQ0soIWNvbXBpbGVB
bmRSdW48aW50Pihwcm9jLCAmaW5wdXRPdXRwdXQpKTsKKyAgICBDSEVDSyhpbnB1dE91dHB1dCA9
PSBhICsgYik7Cit9CisKK3ZvaWQgdGVzdEFkZE5lZzEoaW50IGEsIGludCBiKQoreworICAgIFBy
b2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJv
YywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgTmVnLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGlu
dD4ocHJvYywgYSwgYikgPT0gKC0gYSkgKyBiKTsKK30KKwordm9pZCB0ZXN0QWRkTmVnMihpbnQg
YSwgaW50IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBOZWcs
IE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpKTsKKworICAgIENI
RUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhLCBiKSA9PSBhICsgKC0gYikpOworfQorCit2
b2lkIHRlc3RBZGRBcmdaZXJvSW1tWkRlZigpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJnID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBjb25zdFplcm8gPSByb290LT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCk7CisgICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIGFyZywKKyAgICAgICAgICAgIGNvbnN0WmVybykpOworCisgICAgYXV0
byBjb2RlID0gY29tcGlsZVByb2MocHJvYywgMCk7CisgICAgQ0hFQ0soaW52b2tlPGludDY0X3Q+
KCpjb2RlLCAweDAxMjM0NTY3ODlhYmNkZWYpID09IDB4ODlhYmNkZWYpOworfQorCit2b2lkIHRl
c3RBZGRMb2FkVHdpY2UoKQoreworICAgIGF1dG8gdGVzdCA9IFsmXSAoKSB7CisgICAgICAgIFBy
b2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworICAgICAgICBpbnQzMl90IHZhbHVlID0gNDI7CisgICAgICAgIFZhbHVlKiBsb2FkID0gcm9v
dC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIExvYWQsIEludDMy
LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgJnZhbHVlKSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGxvYWQsIGxvYWQpKTsK
KworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgQ0hFQ0so
aW52b2tlPGludDMyX3Q+KCpjb2RlKSA9PSA0MiAqIDIpOworICAgIH07CisKKyAgICB0ZXN0KCk7
Cit9CisKK3ZvaWQgdGVzdEFkZEFyZ0RvdWJsZShkb3VibGUgYSkKK3sKKyAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVl
KiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgdmFsdWUsIHZhbHVlKSk7CisKKyAgICBD
SEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgYSksIGEgKyBhKSk7
Cit9CisKK3ZvaWQgdGVzdEFkZEFyZ3NEb3VibGUoZG91YmxlIGEsIGRvdWJsZSBiKQoreworICAg
IFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisgICAgVmFsdWUqIHZhbHVlQSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICBWYWx1ZSogdmFsdWVC
ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJ
bmZvOjphcmd1bWVudEZQUjEpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAg
ICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCB2YWx1ZUEsIHZhbHVlQikpOworCisgICAgQ0hFQ0so
aXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEsIGIpLCBhICsgYikpOwor
fQorCit2b2lkIHRlc3RBZGRBcmdJbW1Eb3VibGUoZG91YmxlIGEsIGRvdWJsZSBiKQoreworICAg
IFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisgICAgVmFsdWUqIHZhbHVlQSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICBWYWx1ZSogdmFsdWVC
ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKTsK
KyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmln
aW4oKSwgdmFsdWVBLCB2YWx1ZUIpKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVB
bmRSdW48ZG91YmxlPihwcm9jLCBhKSwgYSArIGIpKTsKK30KKwordm9pZCB0ZXN0QWRkSW1tQXJn
RG91YmxlKGRvdWJsZSBhLCBkb3VibGUgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiB2YWx1ZUEgPSBy
b290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpOworICAg
IFZhbHVlKiB2YWx1ZUIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIHZhbHVlQSwgdmFsdWVCKSk7
CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgYiks
IGEgKyBiKSk7Cit9CisKK3ZvaWQgdGVzdEFkZEltbXNEb3VibGUoZG91YmxlIGEsIGRvdWJsZSBi
KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgVmFsdWUqIHZhbHVlQSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJs
ZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7CisgICAgVmFsdWUqIHZhbHVlQiA9IHJvb3QtPmFw
cGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7CisgICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIHZhbHVl
QSwgdmFsdWVCKSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJs
ZT4ocHJvYyksIGEgKyBiKSk7Cit9CisKK3ZvaWQgdGVzdEFkZEFyZ0Zsb2F0KGZsb2F0IGEpCit7
CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVl
KiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwg
T3JpZ2luKCksIGFyZ3VtZW50MzIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGZsb2F0VmFsdWUsIGZsb2F0VmFsdWUpOwor
ICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lz
ZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKworICAgIENIRUNLKGlzSWRl
bnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+
KGEpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgKyBhKSkpOworfQorCit2b2lkIHRlc3RBZGRB
cmdzRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDFp
bnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmd1bWVudDJpbnQzMiA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDFpbnQzMik7CisgICAgVmFs
dWUqIGZsb2F0VmFsdWUyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2Fz
dCwgT3JpZ2luKCksIGFyZ3VtZW50MmludDMyKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBmbG9hdFZhbHVlMSwgZmxvYXRW
YWx1ZTIpOworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVD
Syhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxp
bnQzMl90PihhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpKSwgYml0d2lzZV9jYXN0PGludDMy
X3Q+KGEgKyBiKSkpOworfQorCit2b2lkIHRlc3RBZGRGUFJBcmdzRmxvYXQoZmxvYXQgYSwgZmxv
YXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDEgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApKTsKKyAg
ICBWYWx1ZSogYXJndW1lbnQyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIxKSk7CisgICAgVmFsdWUqIHJlc3VsdCA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgYXJndW1lbnQxLCBh
cmd1bWVudDIpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCByZXN1bHQpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1
bjxmbG9hdD4ocHJvYywgYSwgYiksIGEgKyBiKSk7Cit9CisKK3ZvaWQgdGVzdEFkZEFyZ0ltbUZs
b2F0KGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOworICAgIFZhbHVl
KiBjb25zdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIGIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEFkZCwgT3JpZ2luKCksIGZsb2F0VmFsdWUsIGNvbnN0VmFsdWUpOworICAgIFZhbHVlKiBy
ZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdp
bigpLCByZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxl
QW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2Vf
Y2FzdDxpbnQzMl90PihhICsgYikpKTsKK30KKwordm9pZCB0ZXN0QWRkSW1tQXJnRmxvYXQoZmxv
YXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7CisgICAgVmFsdWUqIGNvbnN0
VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
YSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRk
LCBPcmlnaW4oKSwgY29uc3RWYWx1ZSwgZmxvYXRWYWx1ZSk7CisgICAgVmFsdWUqIHJlc3VsdDMy
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJl
c3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48
aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpKSwgYml0d2lzZV9jYXN0PGlu
dDMyX3Q+KGEgKyBiKSkpOworfQorCit2b2lkIHRlc3RBZGRJbW1zRmxvYXQoZmxvYXQgYSwgZmxv
YXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBjb25zdFZhbHVlMSA9IHJvb3QtPmFwcGVuZE5ldzxD
b25zdEZsb2F0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKKyAgICBWYWx1ZSogY29uc3RWYWx1
ZTIgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7
CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBP
cmlnaW4oKSwgY29uc3RWYWx1ZTEsIGNvbnN0VmFsdWUyKTsKKyAgICBWYWx1ZSogcmVzdWx0MzIg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgcmVz
dWx0KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmln
aW4oKSwgcmVzdWx0MzIpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxp
bnQzMl90Pihwcm9jKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgKyBiKSkpOworfQorCit2b2lk
IHRlc3RBZGRBcmdGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbihmbG9hdCBhKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgVmFsdWUqIGFyZ3VtZW50SW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1
ZSogZmxvYXRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3Qs
IE9yaWdpbigpLCBhcmd1bWVudEludDMyKTsKKyAgICBWYWx1ZSogYXNEb3VibGUgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVl
KTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQs
IE9yaWdpbigpLCBhc0RvdWJsZSwgYXNEb3VibGUpOworICAgIFZhbHVlKiBmbG9hdFJlc3VsdCA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIHJl
c3VsdCk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGZsb2F0UmVzdWx0KTsKKyAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOworCisgICAg
Q0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nh
c3Q8aW50MzJfdD4oYSkpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSArIGEpKSk7Cit9CisKK3Zv
aWQgdGVzdEFkZEFyZ3NGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbihmbG9hdCBhLCBm
bG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSk7CisgICAgVmFsdWUqIGFyZ3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgVmFs
dWUqIGZsb2F0VmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2Fz
dCwgT3JpZ2luKCksIGFyZ3VtZW50MWludDMyKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZTIgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1l
bnQyaW50MzIpOworICAgIFZhbHVlKiBhc0RvdWJsZTEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlMSk7CisgICAgVmFsdWUq
IGFzRG91YmxlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwg
T3JpZ2luKCksIGZsb2F0VmFsdWUyKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBhc0RvdWJsZTEsIGFzRG91YmxlMik7Cisg
ICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3Vi
bGVUb0Zsb2F0LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1
bHQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGlu
dDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYml0d2lzZV9jYXN0PGludDMy
X3Q+KGIpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgKyBiKSkpOworfQorCit2b2lkIHRlc3RB
ZGRBcmdzRmxvYXRXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lvbihmbG9hdCBhLCBmbG9hdCBi
KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Cisg
ICAgVmFsdWUqIGFyZ3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBU
cnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgVmFsdWUqIGZs
b2F0VmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3Jp
Z2luKCksIGFyZ3VtZW50MWludDMyKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZTIgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQyaW50
MzIpOworICAgIFZhbHVlKiBhc0RvdWJsZTEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlMSk7CisgICAgVmFsdWUqIGFzRG91
YmxlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2lu
KCksIGZsb2F0VmFsdWUyKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBhc0RvdWJsZTEsIGFzRG91YmxlMik7CisgICAgVmFs
dWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zs
b2F0LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICBWYWx1ZSogZG91YmxlQWRkcmVzcyA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIyKTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0b3Jl
LCBPcmlnaW4oKSwgcmVzdWx0LCBkb3VibGVBZGRyZXNzKTsKKyAgICBWYWx1ZSogcmVzdWx0MzIg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxv
YXRSZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBkb3VibGUgZWZmZWN0ID0gMDsKKyAgICBDSEVD
Syhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxp
bnQzMl90PihhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpLCAmZWZmZWN0KSwgYml0d2lzZV9j
YXN0PGludDMyX3Q+KGEgKyBiKSkpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGVmZmVjdCwgc3Rh
dGljX2Nhc3Q8ZG91YmxlPihhKSArIHN0YXRpY19jYXN0PGRvdWJsZT4oYikpKTsKK30KKwordm9p
ZCB0ZXN0QWRkTXVsTXVsQXJncyhpbnQ2NF90IGEsIGludDY0X3QgYiwgaW50NjRfdCBjKQorewor
ICAgIC8vIFdlIHdhbnQgdG8gY2hlY2sgZXZlcnkgcG9zc2libGUgb3JkZXJpbmcgb2YgYXJndW1l
bnRzICh0byBwcm9wZXJseSBjaGVjayBldmVyeSBwYXRoIGluIEIzUmVkdWNlU3RyZW5ndGgpOgor
ICAgIC8vICgoYSAqIGIpICsgKGEgKiBjKSkKKyAgICAvLyAoKGEgKiBiKSArIChjICogYSkpCisg
ICAgLy8gKChiICogYSkgKyAoYSAqIGMpKQorICAgIC8vICgoYiAqIGEpICsgKGMgKiBhKSkKKyAg
ICBmb3IgKGludCBpID0gMDsgaSA8IDQ7ICsraSkgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgVmFs
dWUqIGFyZ0EgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBhcmdCID0gcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjEpOworICAgICAgICBWYWx1ZSogYXJnQyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICAg
ICAgVmFsdWUqIG11bEFCID0gaSAmIDIgPyByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11
bCwgT3JpZ2luKCksIGFyZ0EsIGFyZ0IpCisgICAgICAgICAgICA6IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgYXJnQiwgYXJnQSk7CisgICAgICAgIFZhbHVlKiBt
dWxBQyA9IGkgJiAxID8gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigp
LCBhcmdBLCBhcmdDKQorICAgICAgICAgICAgOiByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IE11bCwgT3JpZ2luKCksIGFyZ0MsIGFyZ0EpOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgbXVsQUIsCisgICAg
ICAgICAgICAgICAgbXVsQUMpKTsKKworICAgICAgICBDSEVDS19FUShjb21waWxlQW5kUnVuPGlu
dDY0X3Q+KHByb2MsIGEsIGIsIGMpLCAoKGEgKiBiKSArIChhICogYykpKTsKKyAgICB9Cit9CisK
K3ZvaWQgdGVzdE11bEFyZyhpbnQgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiB2YWx1ZSA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgTXVsLCBPcmlnaW4oKSwgdmFsdWUsIHZhbHVlKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5k
UnVuPGludD4ocHJvYywgYSkgPT0gYSAqIGEpOworfQorCit2b2lkIHRlc3RNdWxBcmdTdG9yZShp
bnQgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOworCisgICAgaW50IG11bFNsb3Q7CisgICAgaW50IHZhbHVlU2xvdDsKKwor
ICAgIFZhbHVlKiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSog
bXVsID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCB2YWx1ZSwg
dmFsdWUpOworCisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJv
YywgU3RvcmUsIE9yaWdpbigpLCB2YWx1ZSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0
UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmdmFsdWVTbG90KSwgMCk7CisgICAgcm9vdC0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywgU3RvcmUsIE9yaWdpbigpLCBtdWws
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
Jm11bFNsb3QpLCAwKTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludD4ocHJv
YywgYSkpOworICAgIENIRUNLKG11bFNsb3QgPT0gYSAqIGEpOworICAgIENIRUNLKHZhbHVlU2xv
dCA9PSBhKTsKK30KKwordm9pZCB0ZXN0TXVsQWRkQXJnKGludCBhKQoreworICAgIFByb2NlZHVy
ZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFs
dWUqIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgVHJ1bmMs
IE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCks
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCks
IHZhbHVlLCB2YWx1ZSksCisgICAgICAgICAgICB2YWx1ZSkpOworCisgICAgQ0hFQ0soY29tcGls
ZUFuZFJ1bjxpbnQ+KHByb2MsIGEpID09IGEgKiBhICsgYSk7Cit9CisKK3ZvaWQgdGVzdE11bEFy
Z3MoaW50IGEsIGludCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTXVsLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpOworCisgICAg
Q0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEsIGIpID09IGEgKiBiKTsKK30KKwordm9p
ZCB0ZXN0TXVsQXJnTmVnQXJnKGludCBhLCBpbnQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmdB
ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVlKiBhcmdCID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwor
ICAgIFZhbHVlKiBuZWdCID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBOZWcsIE9yaWdp
bigpLCBhcmdCKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBNdWwsIE9yaWdpbigpLCBhcmdBLCBuZWdCKTsKKyAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisKKyAgICBDSEVDSyhjb21waWxl
QW5kUnVuPGludD4ocHJvYywgYSwgYikgPT0gYSAqICgtYikpOworfQorCit2b2lkIHRlc3RNdWxO
ZWdBcmdBcmcoaW50IGEsIGludCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ0EgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7CisgICAgVmFsdWUqIGFyZ0IgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgVmFsdWUq
IG5lZ0EgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE5lZywgT3JpZ2luKCksIGFyZ0Ep
OworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwg
T3JpZ2luKCksIG5lZ0EsIGFyZ0IpOworICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50
Pihwcm9jLCBhLCBiKSA9PSAoLWEpICogYik7Cit9CisKK3ZvaWQgdGVzdE11bEFyZ0ltbShpbnQ2
NF90IGEsIGludDY0X3QgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIE11bCwgT3JpZ2luKCksCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYikpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50
NjRfdD4ocHJvYywgYSkgPT0gYSAqIGIpOworfQorCit2b2lkIHRlc3RNdWxJbW1BcmcoaW50IGEs
IGludCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICAgICAgcHJvYywgTXVsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGIp
ID09IGEgKiBiKTsKK30KKwordm9pZCB0ZXN0TXVsQXJnczMyKGludCBhLCBpbnQgYikKK3sKKyAg
ICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
IHByb2MsIE11bCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEpKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2Ms
IGEsIGIpID09IGEgKiBiKTsKK30KKwordm9pZCB0ZXN0TXVsQXJnczMyU2lnbkV4dGVuZChpbnQg
YSwgaW50IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgaWYgKHByb2Mub3B0TGV2ZWwo
KSA8IDEpCisgICAgICAgIHJldHVybjsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAg
ICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAg
IFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgVHJ1
bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgIFZhbHVlKiBhcmcx
NjQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNFeHQzMiwgT3JpZ2luKCksIGFyZzEp
OworICAgIFZhbHVlKiBhcmcyNjQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNFeHQz
MiwgT3JpZ2luKCksIGFyZzIpOworICAgIFZhbHVlKiBtdWwgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIE11bCwgT3JpZ2luKCksIGFyZzE2NCwgYXJnMjY0KTsKKyAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgbXVsKTsKKworICAgIGF1
dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworCisgICAgQ0hFQ0soaW52b2tlPGxvbmcgaW50
PigqY29kZSwgYSwgYikgPT0gKChsb25nIGludCkgYSkgKiAoKGxvbmcgaW50KSBiKSk7Cit9CisK
K3ZvaWQgdGVzdE11bEltbTMyU2lnbkV4dGVuZChjb25zdCBpbnQgYSwgaW50IGIpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEpCisgICAgICAgIHJl
dHVybjsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVl
KiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEp
OworICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJv
YywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgIFZhbHVl
KiBhcmcyNjQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNFeHQzMiwgT3JpZ2luKCks
IGFyZzIpOworICAgIFZhbHVlKiBtdWwgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11
bCwgT3JpZ2luKCksIGFyZzEsIGFyZzI2NCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIG11bCk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21w
aWxlUHJvYyhwcm9jKTsKKworICAgIENIRUNLKGludm9rZTxsb25nIGludD4oKmNvZGUsIGIpID09
ICgobG9uZyBpbnQpIGEpICogKChsb25nIGludCkgYikpOworfQorCit2b2lkIHRlc3RNdWxMb2Fk
VHdpY2UoKQoreworICAgIGF1dG8gdGVzdCA9IFsmXSAoKSB7CisgICAgICAgIFByb2NlZHVyZSBw
cm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAg
ICBpbnQzMl90IHZhbHVlID0gNDI7CisgICAgICAgIFZhbHVlKiBsb2FkID0gcm9vdC0+YXBwZW5k
TmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmln
aW4oKSwgJnZhbHVlKSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAg
ICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIGxvYWQsIGxvYWQpKTsKKworICAgICAg
ICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgQ0hFQ0soaW52b2tlPGlu
dDMyX3Q+KCpjb2RlKSA9PSA0MiAqIDQyKTsKKyAgICB9OworCisgICAgdGVzdCgpOworfQorCit2
b2lkIHRlc3RNdWxBZGRBcmdzTGVmdCgpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBhcmcwID0gcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOworICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgIFZh
bHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgIFZhbHVlKiBtdWx0aXBsaWVkID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBhcmcwLCBhcmcxKTsKKyAg
ICBWYWx1ZSogYWRkZWQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2lu
KCksIG11bHRpcGxpZWQsIGFyZzIpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLCBhZGRlZCk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxl
UHJvYyhwcm9jKTsKKworICAgIGF1dG8gdGVzdFZhbHVlcyA9IGludDY0T3BlcmFuZHMoKTsKKyAg
ICBmb3IgKGF1dG8gYSA6IHRlc3RWYWx1ZXMpIHsKKyAgICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0
VmFsdWVzKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYyA6IHRlc3RWYWx1ZXMpIHsKKyAgICAg
ICAgICAgICAgICBDSEVDSyhpbnZva2U8aW50NjRfdD4oKmNvZGUsIGEudmFsdWUsIGIudmFsdWUs
IGMudmFsdWUpID09IGEudmFsdWUgKiBiLnZhbHVlICsgYy52YWx1ZSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdE11bEFkZEFyZ3NSaWdodCgpCit7Cisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKworICAgIFZhbHVlKiBhcmcwID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVlKiBhcmcx
ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjEpOworICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwor
ICAgIFZhbHVlKiBtdWx0aXBsaWVkID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWws
IE9yaWdpbigpLCBhcmcxLCBhcmcyKTsKKyAgICBWYWx1ZSogYWRkZWQgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGFyZzAsIG11bHRpcGxpZWQpOworICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBhZGRlZCk7
CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKworICAgIGF1dG8gdGVzdFZh
bHVlcyA9IGludDY0T3BlcmFuZHMoKTsKKyAgICBmb3IgKGF1dG8gYSA6IHRlc3RWYWx1ZXMpIHsK
KyAgICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKSB7CisgICAgICAgICAgICBmb3IgKGF1
dG8gYyA6IHRlc3RWYWx1ZXMpIHsKKyAgICAgICAgICAgICAgICBDSEVDSyhpbnZva2U8aW50NjRf
dD4oKmNvZGUsIGEudmFsdWUsIGIudmFsdWUsIGMudmFsdWUpID09IGEudmFsdWUgKyBiLnZhbHVl
ICogYy52YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQg
dGVzdE11bEFkZEFyZ3NMZWZ0MzIoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBWYWx1ZSogYXJnMCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgVmFsdWUq
IGFyZzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjIpKTsKKyAgICBWYWx1ZSogbXVsdGlwbGllZCA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgYXJnMCwgYXJnMSk7CisgICAgVmFs
dWUqIGFkZGVkID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBt
dWx0aXBsaWVkLCBhcmcyKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgYWRkZWQpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2Mo
cHJvYyk7CisKKyAgICBhdXRvIHRlc3RWYWx1ZXMgPSBpbnQzMk9wZXJhbmRzKCk7CisgICAgZm9y
IChhdXRvIGEgOiB0ZXN0VmFsdWVzKSB7CisgICAgICAgIGZvciAoYXV0byBiIDogdGVzdFZhbHVl
cykgeworICAgICAgICAgICAgZm9yIChhdXRvIGMgOiB0ZXN0VmFsdWVzKSB7CisgICAgICAgICAg
ICAgICAgQ0hFQ0soaW52b2tlPGludDMyX3Q+KCpjb2RlLCBhLnZhbHVlLCBiLnZhbHVlLCBjLnZh
bHVlKSA9PSBhLnZhbHVlICogYi52YWx1ZSArIGMudmFsdWUpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RNdWxBZGRBcmdzUmlnaHQzMigpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KworICAgIFZhbHVlKiBhcmcwID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZzEgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjEpKTsKKyAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMikpOworICAgIFZh
bHVlKiBtdWx0aXBsaWVkID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdp
bigpLCBhcmcxLCBhcmcyKTsKKyAgICBWYWx1ZSogYWRkZWQgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGFyZzAsIG11bHRpcGxpZWQpOworICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBhZGRlZCk7CisKKyAg
ICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKworICAgIGF1dG8gdGVzdFZhbHVlcyA9
IGludDMyT3BlcmFuZHMoKTsKKyAgICBmb3IgKGF1dG8gYSA6IHRlc3RWYWx1ZXMpIHsKKyAgICAg
ICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYyA6
IHRlc3RWYWx1ZXMpIHsKKyAgICAgICAgICAgICAgICBDSEVDSyhpbnZva2U8aW50MzJfdD4oKmNv
ZGUsIGEudmFsdWUsIGIudmFsdWUsIGMudmFsdWUpID09IGEudmFsdWUgKyBiLnZhbHVlICogYy52
YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdE11
bFN1YkFyZ3NMZWZ0KCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgVmFsdWUqIGFyZzAgPSByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7CisgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgVmFsdWUqIGFyZzIg
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMik7CisgICAgVmFsdWUqIG11bHRpcGxpZWQgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIGFyZzAsIGFyZzEpOworICAgIFZhbHVlKiBh
ZGRlZCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgbXVsdGlw
bGllZCwgYXJnMik7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVy
biwgT3JpZ2luKCksIGFkZGVkKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2Mp
OworCisgICAgYXV0byB0ZXN0VmFsdWVzID0gaW50NjRPcGVyYW5kcygpOworICAgIGZvciAoYXV0
byBhIDogdGVzdFZhbHVlcykgeworICAgICAgICBmb3IgKGF1dG8gYiA6IHRlc3RWYWx1ZXMpIHsK
KyAgICAgICAgICAgIGZvciAoYXV0byBjIDogdGVzdFZhbHVlcykgeworICAgICAgICAgICAgICAg
IENIRUNLKGludm9rZTxpbnQ2NF90PigqY29kZSwgYS52YWx1ZSwgYi52YWx1ZSwgYy52YWx1ZSkg
PT0gYS52YWx1ZSAqIGIudmFsdWUgLSBjLnZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KK30KKwordm9pZCB0ZXN0TXVsU3ViQXJnc1JpZ2h0KCkKK3sKKyAgICBQcm9jZWR1
cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAg
VmFsdWUqIGFyZzAgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgVmFsdWUqIGFyZzEgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSk7CisgICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisgICAgVmFsdWUq
IG11bHRpcGxpZWQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCks
IGFyZzEsIGFyZzIpOworICAgIFZhbHVlKiBhZGRlZCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgU3ViLCBPcmlnaW4oKSwgYXJnMCwgbXVsdGlwbGllZCk7CisgICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFkZGVkKTsKKworICAgIGF1
dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworCisgICAgYXV0byB0ZXN0VmFsdWVzID0gaW50
NjRPcGVyYW5kcygpOworICAgIGZvciAoYXV0byBhIDogdGVzdFZhbHVlcykgeworICAgICAgICBm
b3IgKGF1dG8gYiA6IHRlc3RWYWx1ZXMpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBjIDogdGVz
dFZhbHVlcykgeworICAgICAgICAgICAgICAgIENIRUNLKGludm9rZTxpbnQ2NF90PigqY29kZSwg
YS52YWx1ZSwgYi52YWx1ZSwgYy52YWx1ZSkgPT0gYS52YWx1ZSAtIGIudmFsdWUgKiBjLnZhbHVl
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0TXVsU3Vi
QXJnc0xlZnQzMigpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBhcmcwID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7
CisgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICBWYWx1ZSogYXJnMiA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMikpOworICAgIFZhbHVlKiBtdWx0aXBsaWVkID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBhcmcwLCBhcmcxKTsKKyAgICBWYWx1ZSogYWRkZWQg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIG11bHRpcGxpZWQs
IGFyZzIpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCBhZGRlZCk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKwor
ICAgIGF1dG8gdGVzdFZhbHVlcyA9IGludDMyT3BlcmFuZHMoKTsKKyAgICBmb3IgKGF1dG8gYSA6
IHRlc3RWYWx1ZXMpIHsKKyAgICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKSB7CisgICAg
ICAgICAgICBmb3IgKGF1dG8gYyA6IHRlc3RWYWx1ZXMpIHsKKyAgICAgICAgICAgICAgICBDSEVD
SyhpbnZva2U8aW50MzJfdD4oKmNvZGUsIGEudmFsdWUsIGIudmFsdWUsIGMudmFsdWUpID09IGEu
dmFsdWUgKiBiLnZhbHVlIC0gYy52YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK3ZvaWQgdGVzdE11bFN1YkFyZ3NSaWdodDMyKCkKK3sKKyAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgVmFs
dWUqIGFyZzAgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MSkpOworICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVu
YywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKSk7CisgICAgVmFsdWUqIG11bHRp
cGxpZWQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIGFyZzEs
IGFyZzIpOworICAgIFZhbHVlKiBhZGRlZCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
U3ViLCBPcmlnaW4oKSwgYXJnMCwgbXVsdGlwbGllZCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFkZGVkKTsKKworICAgIGF1dG8gY29k
ZSA9IGNvbXBpbGVQcm9jKHByb2MpOworCisgICAgYXV0byB0ZXN0VmFsdWVzID0gaW50MzJPcGVy
YW5kcygpOworICAgIGZvciAoYXV0byBhIDogdGVzdFZhbHVlcykgeworICAgICAgICBmb3IgKGF1
dG8gYiA6IHRlc3RWYWx1ZXMpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBjIDogdGVzdFZhbHVl
cykgeworICAgICAgICAgICAgICAgIENIRUNLKGludm9rZTxpbnQzMl90PigqY29kZSwgYS52YWx1
ZSwgYi52YWx1ZSwgYy52YWx1ZSkgPT0gYS52YWx1ZSAtIGIudmFsdWUgKiBjLnZhbHVlKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0TXVsTmVnQXJncygp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKworICAgIFZhbHVlKiBhcmcwID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVl
KiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgIFZhbHVlKiBtdWx0aXBsaWVkID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBhcmcwLCBhcmcxKTsKKyAgICBW
YWx1ZSogemVybyA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigp
LCAwKTsKKyAgICBWYWx1ZSogYWRkZWQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1
YiwgT3JpZ2luKCksIHplcm8sIG11bHRpcGxpZWQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBhZGRlZCk7CisKKyAgICBhdXRvIGNvZGUg
PSBjb21waWxlUHJvYyhwcm9jKTsKKworICAgIGF1dG8gdGVzdFZhbHVlcyA9IGludDY0T3BlcmFu
ZHMoKTsKKyAgICBmb3IgKGF1dG8gYSA6IHRlc3RWYWx1ZXMpIHsKKyAgICAgICAgZm9yIChhdXRv
IGIgOiB0ZXN0VmFsdWVzKSB7CisgICAgICAgICAgICBDSEVDSyhpbnZva2U8aW50NjRfdD4oKmNv
ZGUsIGEudmFsdWUsIGIudmFsdWUpID09IC0oYS52YWx1ZSAqIGIudmFsdWUpKTsKKyAgICAgICAg
fQorICAgIH0KK30KKwordm9pZCB0ZXN0TXVsTmVnQXJnczMyKCkKK3sKKyAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgVmFs
dWUqIGFyZzAgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MSkpOworICAgIFZhbHVlKiBtdWx0aXBsaWVkID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBNdWwsIE9yaWdpbigpLCBhcmcwLCBhcmcxKTsKKyAgICBWYWx1ZSogemVybyA9IHJvb3QtPmFw
cGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKTsKKyAgICBWYWx1ZSogYWRk
ZWQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIHplcm8sIG11
bHRpcGxpZWQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCBhZGRlZCk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsK
KworICAgIGF1dG8gdGVzdFZhbHVlcyA9IGludDMyT3BlcmFuZHMoKTsKKyAgICBmb3IgKGF1dG8g
YSA6IHRlc3RWYWx1ZXMpIHsKKyAgICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKSB7Cisg
ICAgICAgICAgICBDSEVDSyhpbnZva2U8aW50MzJfdD4oKmNvZGUsIGEudmFsdWUsIGIudmFsdWUp
ID09IC0oYS52YWx1ZSAqIGIudmFsdWUpKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0
ZXN0TXVsQXJnRG91YmxlKGRvdWJsZSBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIHZhbHVlID0gcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjph
cmd1bWVudEZQUjApOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBNdWwsIE9yaWdpbigpLCB2YWx1ZSwgdmFsdWUpKTsKKworICAgIENIRUNLKGlzSWRlbnRp
Y2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBhKSwgYSAqIGEpKTsKK30KKwordm9pZCB0
ZXN0TXVsQXJnc0RvdWJsZShkb3VibGUgYSwgZG91YmxlIGIpCit7CisgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSog
dmFsdWVBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgIFZhbHVlKiB2YWx1ZUIgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50
RlBSMSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11
bCwgT3JpZ2luKCksIHZhbHVlQSwgdmFsdWVCKSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChj
b21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgYSwgYiksIGEgKiBiKSk7Cit9CisKK3ZvaWQgdGVz
dE11bEFyZ0ltbURvdWJsZShkb3VibGUgYSwgZG91YmxlIGIpCit7CisgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSog
dmFsdWVBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgIFZhbHVlKiB2YWx1ZUIgPSByb290LT5hcHBl
bmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpOworICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCB2YWx1ZUEs
IHZhbHVlQikpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+
KHByb2MsIGEpLCBhICogYikpOworfQorCit2b2lkIHRlc3RNdWxJbW1BcmdEb3VibGUoZG91Ymxl
IGEsIGRvdWJsZSBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIHZhbHVlQSA9IHJvb3QtPmFwcGVuZE5l
dzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7CisgICAgVmFsdWUqIHZhbHVl
QiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBS
SW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisg
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgdmFsdWVBLCB2YWx1ZUIpKTsKKworICAgIENIRUNL
KGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBiKSwgYSAqIGIpKTsKK30K
Kwordm9pZCB0ZXN0TXVsSW1tc0RvdWJsZShkb3VibGUgYSwgZG91YmxlIGIpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBWYWx1ZSogdmFsdWVBID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBhKTsKKyAgICBWYWx1ZSogdmFsdWVCID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0
RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKTsKKyAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgdmFsdWVBLCB2YWx1ZUIpKTsK
KworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jKSwgYSAq
IGIpKTsKK30KKwordm9pZCB0ZXN0TXVsQXJnRmxvYXQoZmxvYXQgYSkKK3sKKyAgICBQcm9jZWR1
cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZh
bHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3Jp
Z2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJn
dW1lbnQzMik7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgTXVsLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZSwgZmxvYXRWYWx1ZSk7CisgICAgVmFsdWUqIHJl
c3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2lu
KCksIHJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVy
biwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGls
ZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXR3aXNl
X2Nhc3Q8aW50MzJfdD4oYSAqIGEpKSk7Cit9CisKK3ZvaWQgdGVzdE11bEFyZ3NGbG9hdChmbG9h
dCBhLCBmbG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Cisg
ICAgVmFsdWUqIGZsb2F0VmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3
aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MWludDMyKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1
ZTIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwg
YXJndW1lbnQyaW50MzIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIE11bCwgT3JpZ2luKCksIGZsb2F0VmFsdWUxLCBmbG9hdFZhbHVlMik7CisgICAg
VmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2Fz
dCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHBy
b2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2Fs
KGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBi
aXR3aXNlX2Nhc3Q8aW50MzJfdD4oYikpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAqIGIpKSk7
Cit9CisKK3ZvaWQgdGVzdE11bEFyZ0ltbUZsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1
bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBmbG9h
dFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2lu
KCksIGFyZ3VtZW50MzIpOworICAgIFZhbHVlKiBjb25zdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpOworICAgIFZhbHVlKiByZXN1bHQg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIGZsb2F0VmFsdWUs
IGNvbnN0VmFsdWUpOworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOworICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAg
ICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2Vf
Y2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhICogYikpKTsKK30KKwor
dm9pZCB0ZXN0TXVsSW1tQXJnRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1
cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZh
bHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3Jp
Z2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJn
dW1lbnQzMik7CisgICAgVmFsdWUqIGNvbnN0VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3RG
bG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgY29uc3RWYWx1ZSwgZmxvYXRW
YWx1ZSk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNL
KGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGlu
dDMyX3Q+KGIpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgKiBiKSkpOworfQorCit2b2lkIHRl
c3RNdWxJbW1zRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBjb25z
dFZhbHVlMSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+KHByb2MsIE9yaWdpbigp
LCBhKTsKKyAgICBWYWx1ZSogY29uc3RWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9h
dFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgY29uc3RWYWx1ZTEsIGNvbnN0VmFs
dWUyKTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOworCisgICAgQ0hFQ0so
aXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jKSwgYml0d2lzZV9jYXN0PGlu
dDMyX3Q+KGEgKiBiKSkpOworfQorCit2b2lkIHRlc3RNdWxBcmdGbG9hdFdpdGhVc2VsZXNzRG91
YmxlQ29udmVyc2lvbihmbG9hdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50SW50MzIg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudEludDMyKTsKKyAg
ICBWYWx1ZSogYXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9E
b3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBhc0RvdWJsZSwgYXNEb3VibGUp
OworICAgIFZhbHVlKiBmbG9hdFJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
RG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGZsb2F0
UmVzdWx0KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgcmVzdWx0MzIpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1
bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXR3aXNlX2Nhc3Q8
aW50MzJfdD4oYSAqIGEpKSk7Cit9CisKK3ZvaWQgdGVzdE11bEFyZ3NGbG9hdFdpdGhVc2VsZXNz
RG91YmxlQ29udmVyc2lvbihmbG9hdCBhLCBmbG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9j
OworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFy
Z3VtZW50MWludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2lu
KCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50MmludDMy
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIxKSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUxID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MWludDMyKTsK
KyAgICBWYWx1ZSogZmxvYXRWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJp
dHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQyaW50MzIpOworICAgIFZhbHVlKiBhc0RvdWJs
ZTEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigp
LCBmbG9hdFZhbHVlMSk7CisgICAgVmFsdWUqIGFzRG91YmxlMiA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUyKTsKKyAgICBW
YWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigp
LCBhc0RvdWJsZTEsIGFzRG91YmxlMik7CisgICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgcmVzdWx0KTsK
KyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdp
c2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhp
c0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQz
Ml90PihhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+
KGEgKiBiKSkpOworfQorCit2b2lkIHRlc3RNdWxBcmdzRmxvYXRXaXRoRWZmZWN0ZnVsRG91Ymxl
Q29udmVyc2lvbihmbG9hdCBhLCBmbG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50
MWludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50MmludDMyID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MWludDMyKTsKKyAgICBW
YWx1ZSogZmxvYXRWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VD
YXN0LCBPcmlnaW4oKSwgYXJndW1lbnQyaW50MzIpOworICAgIFZhbHVlKiBhc0RvdWJsZTEgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9h
dFZhbHVlMSk7CisgICAgVmFsdWUqIGFzRG91YmxlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUyKTsKKyAgICBWYWx1ZSog
cmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBhc0Rv
dWJsZTEsIGFzRG91YmxlMik7CisgICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICBW
YWx1ZSogZG91YmxlTXVscmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICByb290LT5hcHBlbmRO
ZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlLCBPcmlnaW4oKSwgcmVzdWx0LCBkb3VibGVNdWxy
ZXNzKTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBk
b3VibGUgZWZmZWN0ID0gMDsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGlu
dDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYml0d2lzZV9jYXN0PGludDMy
X3Q+KGIpLCAmZWZmZWN0KSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgKiBiKSkpOworICAgIENI
RUNLKGlzSWRlbnRpY2FsKGVmZmVjdCwgc3RhdGljX2Nhc3Q8ZG91YmxlPihhKSAqIHN0YXRpY19j
YXN0PGRvdWJsZT4oYikpKTsKK30KKwordm9pZCB0ZXN0RGl2QXJnRG91YmxlKGRvdWJsZSBhKQor
eworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgVmFsdWUqIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEaXYsIE9yaWdpbigpLCB2YWx1ZSwg
dmFsdWUpKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihw
cm9jLCBhKSwgYSAvIGEpKTsKK30KKwordm9pZCB0ZXN0RGl2QXJnc0RvdWJsZShkb3VibGUgYSwg
ZG91YmxlIGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogdmFsdWVBID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwor
ICAgIFZhbHVlKiB2YWx1ZUIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7CisgICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERpdiwgT3JpZ2luKCksIHZhbHVlQSwgdmFsdWVC
KSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywg
YSwgYiksIGEgLyBiKSk7Cit9CisKK3ZvaWQgdGVzdERpdkFyZ0ltbURvdWJsZShkb3VibGUgYSwg
ZG91YmxlIGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogdmFsdWVBID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwor
ICAgIFZhbHVlKiB2YWx1ZUIgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIGIpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBEaXYsIE9yaWdpbigpLCB2YWx1ZUEsIHZhbHVlQikpOworCisgICAgQ0hFQ0soaXNJ
ZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEpLCBhIC8gYikpOworfQorCit2
b2lkIHRlc3REaXZJbW1BcmdEb3VibGUoZG91YmxlIGEsIGRvdWJsZSBiKQoreworICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAg
VmFsdWUqIHZhbHVlQSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgYSk7CisgICAgVmFsdWUqIHZhbHVlQiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRGl2LCBPcmlnaW4oKSwg
dmFsdWVBLCB2YWx1ZUIpKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48
ZG91YmxlPihwcm9jLCBiKSwgYSAvIGIpKTsKK30KKwordm9pZCB0ZXN0RGl2SW1tc0RvdWJsZShk
b3VibGUgYSwgZG91YmxlIGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogdmFsdWVBID0gcm9vdC0+YXBw
ZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKKyAgICBWYWx1ZSog
dmFsdWVCID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBiKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRGl2
LCBPcmlnaW4oKSwgdmFsdWVBLCB2YWx1ZUIpKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNv
bXBpbGVBbmRSdW48ZG91YmxlPihwcm9jKSwgYSAvIGIpKTsKK30KKwordm9pZCB0ZXN0RGl2QXJn
RmxvYXQoZmxvYXQgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7CisgICAgVmFsdWUqIHJlc3Vs
dCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRGl2LCBPcmlnaW4oKSwgZmxvYXRWYWx1
ZSwgZmxvYXRWYWx1ZSk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKwor
CisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3
aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAvIGEpKSk7Cit9
CisKK3ZvaWQgdGVzdERpdkFyZ3NGbG9hdChmbG9hdCBhLCBmbG9hdCBiKQoreworICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAg
VmFsdWUqIGFyZ3VtZW50MWludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVu
YywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZ3Vt
ZW50MmludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCks
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUxID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50
MWludDMyKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQyaW50MzIpOworICAgIFZhbHVl
KiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERpdiwgT3JpZ2luKCksIGZs
b2F0VmFsdWUxLCBmbG9hdFZhbHVlMik7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAg
cm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3Vs
dDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJv
YywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYikpLCBi
aXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAvIGIpKSk7Cit9CisKK3ZvaWQgdGVzdERpdkFyZ0ltbUZs
b2F0KGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOworICAgIFZhbHVl
KiBjb25zdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIGIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIERpdiwgT3JpZ2luKCksIGZsb2F0VmFsdWUsIGNvbnN0VmFsdWUpOworICAgIFZhbHVlKiBy
ZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdp
bigpLCByZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxl
QW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2Vf
Y2FzdDxpbnQzMl90PihhIC8gYikpKTsKK30KKwordm9pZCB0ZXN0RGl2SW1tQXJnRmxvYXQoZmxv
YXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7CisgICAgVmFsdWUqIGNvbnN0
VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
YSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRGl2
LCBPcmlnaW4oKSwgY29uc3RWYWx1ZSwgZmxvYXRWYWx1ZSk7CisgICAgVmFsdWUqIHJlc3VsdDMy
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJl
c3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48
aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpKSwgYml0d2lzZV9jYXN0PGlu
dDMyX3Q+KGEgLyBiKSkpOworfQorCit2b2lkIHRlc3REaXZJbW1zRmxvYXQoZmxvYXQgYSwgZmxv
YXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBjb25zdFZhbHVlMSA9IHJvb3QtPmFwcGVuZE5ldzxD
b25zdEZsb2F0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKKyAgICBWYWx1ZSogY29uc3RWYWx1
ZTIgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7
CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRGl2LCBP
cmlnaW4oKSwgY29uc3RWYWx1ZTEsIGNvbnN0VmFsdWUyKTsKKyAgICBWYWx1ZSogcmVzdWx0MzIg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgcmVz
dWx0KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmln
aW4oKSwgcmVzdWx0MzIpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxp
bnQzMl90Pihwcm9jKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgLyBiKSkpOworfQorCit2b2lk
IHRlc3RNb2RBcmdEb3VibGUoZG91YmxlIGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogdmFsdWUgPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86
OmFyZ3VtZW50RlBSMCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIE1vZCwgT3JpZ2luKCksIHZhbHVlLCB2YWx1ZSkpOworCisgICAgQ0hFQ0soaXNJZGVu
dGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEpLCBmbW9kKGEsIGEpKSk7Cit9CisK
K3ZvaWQgdGVzdE1vZEFyZ3NEb3VibGUoZG91YmxlIGEsIGRvdWJsZSBiKQoreworICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAg
VmFsdWUqIHZhbHVlQSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICBWYWx1ZSogdmFsdWVCID0gcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjph
cmd1bWVudEZQUjEpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBNb2QsIE9yaWdpbigpLCB2YWx1ZUEsIHZhbHVlQikpOworCisgICAgQ0hFQ0soaXNJZGVu
dGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEsIGIpLCBmbW9kKGEsIGIpKSk7Cit9
CisKK3ZvaWQgdGVzdE1vZEFyZ0ltbURvdWJsZShkb3VibGUgYSwgZG91YmxlIGIpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBWYWx1ZSogdmFsdWVBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgIFZhbHVlKiB2YWx1ZUIg
PSByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpOwor
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNb2QsIE9yaWdp
bigpLCB2YWx1ZUEsIHZhbHVlQikpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFu
ZFJ1bjxkb3VibGU+KHByb2MsIGEpLCBmbW9kKGEsIGIpKSk7Cit9CisKK3ZvaWQgdGVzdE1vZElt
bUFyZ0RvdWJsZShkb3VibGUgYSwgZG91YmxlIGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogdmFsdWVB
ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsK
KyAgICBWYWx1ZSogdmFsdWVCID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNb2QsIE9yaWdpbigpLCB2YWx1ZUEsIHZhbHVl
QikpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2Ms
IGIpLCBmbW9kKGEsIGIpKSk7Cit9CisKK3ZvaWQgdGVzdE1vZEltbXNEb3VibGUoZG91YmxlIGEs
IGRvdWJsZSBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIHZhbHVlQSA9IHJvb3QtPmFwcGVuZE5ldzxD
b25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7CisgICAgVmFsdWUqIHZhbHVlQiA9
IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7Cisg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE1vZCwgT3JpZ2lu
KCksIHZhbHVlQSwgdmFsdWVCKSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5k
UnVuPGRvdWJsZT4ocHJvYyksIGZtb2QoYSwgYikpKTsKK30KKwordm9pZCB0ZXN0TW9kQXJnRmxv
YXQoZmxvYXQgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7CisgICAgVmFsdWUqIHJlc3VsdCA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTW9kLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZSwg
ZmxvYXRWYWx1ZSk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworCisg
ICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNl
X2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8Zmxv
YXQ+KGZtb2QoYSwgYSkpKSkpOworfQorCit2b2lkIHRlc3RNb2RBcmdzRmxvYXQoZmxvYXQgYSwg
ZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDFpbnQzMiA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpOworICAgIFZhbHVlKiBhcmd1bWVudDJpbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgIFZh
bHVlKiBmbG9hdFZhbHVlMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNh
c3QsIE9yaWdpbigpLCBhcmd1bWVudDFpbnQzMik7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUyID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3Vt
ZW50MmludDMyKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBNb2QsIE9yaWdpbigpLCBmbG9hdFZhbHVlMSwgZmxvYXRWYWx1ZTIpOworICAgIFZhbHVl
KiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9y
aWdpbigpLCByZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21w
aWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYml0d2lz
ZV9jYXN0PGludDMyX3Q+KGIpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KHN0YXRpY19jYXN0PGZs
b2F0PihmbW9kKGEsIGIpKSkpKTsKK30KKwordm9pZCB0ZXN0TW9kQXJnSW1tRmxvYXQoZmxvYXQg
YSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7CisgICAgVmFsdWUqIGNvbnN0VmFs
dWUgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7
CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTW9kLCBP
cmlnaW4oKSwgZmxvYXRWYWx1ZSwgY29uc3RWYWx1ZSk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3Vs
dCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2lu
KCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50
MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgYml0d2lzZV9jYXN0PGludDMy
X3Q+KHN0YXRpY19jYXN0PGZsb2F0PihmbW9kKGEsIGIpKSkpKTsKK30KKwordm9pZCB0ZXN0TW9k
SW1tQXJnRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVu
dDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7Cisg
ICAgVmFsdWUqIGNvbnN0VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgYSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgTW9kLCBPcmlnaW4oKSwgY29uc3RWYWx1ZSwgZmxvYXRWYWx1ZSk7CisgICAg
VmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2Fz
dCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHBy
b2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2Fs
KGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpKSwg
Yml0d2lzZV9jYXN0PGludDMyX3Q+KHN0YXRpY19jYXN0PGZsb2F0PihmbW9kKGEsIGIpKSkpKTsK
K30KKwordm9pZCB0ZXN0TW9kSW1tc0Zsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBWYWx1ZSogY29uc3RWYWx1ZTEgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgYSk7CisgICAgVmFsdWUqIGNvbnN0VmFsdWUyID0gcm9vdC0+YXBwZW5k
TmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpOworICAgIFZhbHVlKiByZXN1
bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE1vZCwgT3JpZ2luKCksIGNvbnN0VmFs
dWUxLCBjb25zdFZhbHVlMik7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsK
KworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYyksIGJp
dHdpc2VfY2FzdDxpbnQzMl90PihzdGF0aWNfY2FzdDxmbG9hdD4oZm1vZChhLCBiKSkpKSk7Cit9
CisKK3ZvaWQgdGVzdERpdkFyZ0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uKGZsb2F0
IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnRJbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwor
ICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3
aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50SW50MzIpOworICAgIFZhbHVlKiBhc0RvdWJsZSA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZs
b2F0VmFsdWUpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIERpdiwgT3JpZ2luKCksIGFzRG91YmxlLCBhc0RvdWJsZSk7CisgICAgVmFsdWUqIGZsb2F0
UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmln
aW4oKSwgcmVzdWx0KTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1bHQpOworICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7
CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJp
dHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhIC8gYSkpKTsK
K30KKwordm9pZCB0ZXN0RGl2QXJnc0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uKGZs
b2F0IGEsIGZsb2F0IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQxaW50MzIgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKTsKKyAgICBWYWx1ZSogYXJndW1lbnQyaW50MzIgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsK
KyAgICBWYWx1ZSogZmxvYXRWYWx1ZTEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJp
dHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQxaW50MzIpOworICAgIFZhbHVlKiBmbG9hdFZh
bHVlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigp
LCBhcmd1bWVudDJpbnQzMik7CisgICAgVmFsdWUqIGFzRG91YmxlMSA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUxKTsKKyAg
ICBWYWx1ZSogYXNEb3VibGUyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRv
RG91YmxlLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZTIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERpdiwgT3JpZ2luKCksIGFzRG91YmxlMSwgYXNEb3Vi
bGUyKTsKKyAgICBWYWx1ZSogZmxvYXRSZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCByZXN1bHQpOworICAgIFZhbHVlKiByZXN1bHQz
MiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBm
bG9hdFJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVy
biwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVB
bmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3aXNlX2Nh
c3Q8aW50MzJfdD4oYikpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAvIGIpKSk7Cit9CisKK3Zv
aWQgdGVzdERpdkFyZ3NGbG9hdFdpdGhFZmZlY3RmdWxEb3VibGVDb252ZXJzaW9uKGZsb2F0IGEs
IGZsb2F0IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQxaW50MzIgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApKTsKKyAgICBWYWx1ZSogYXJndW1lbnQyaW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICBW
YWx1ZSogZmxvYXRWYWx1ZTEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VD
YXN0LCBPcmlnaW4oKSwgYXJndW1lbnQxaW50MzIpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlMiA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1
bWVudDJpbnQzMik7CisgICAgVmFsdWUqIGFzRG91YmxlMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUxKTsKKyAgICBWYWx1
ZSogYXNEb3VibGUyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91Ymxl
LCBPcmlnaW4oKSwgZmxvYXRWYWx1ZTIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIERpdiwgT3JpZ2luKCksIGFzRG91YmxlMSwgYXNEb3VibGUyKTsK
KyAgICBWYWx1ZSogZmxvYXRSZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERv
dWJsZVRvRmxvYXQsIE9yaWdpbigpLCByZXN1bHQpOworICAgIFZhbHVlKiBkb3VibGVEaXZyZXNz
ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjIpOworICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJv
YywgU3RvcmUsIE9yaWdpbigpLCByZXN1bHQsIGRvdWJsZURpdnJlc3MpOworICAgIFZhbHVlKiBy
ZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdp
bigpLCBmbG9hdFJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2Ms
IFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIGRvdWJsZSBlZmZlY3QgPSAwOwor
ICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lz
ZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYiksICZlZmZlY3QpLCBi
aXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAvIGIpKSk7CisgICAgQ0hFQ0soaXNJZGVudGljYWwoZWZm
ZWN0LCBzdGF0aWNfY2FzdDxkb3VibGU+KGEpIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihiKSkpOwor
fQorCit2b2lkIHRlc3RVRGl2QXJnc0ludDMyKHVpbnQzMl90IGEsIHVpbnQzMl90IGIpCit7Cisg
ICAgLy8gVURpdiB3aXRoIGRlbm9taW5hdG9yID09IDAgaXMgaW52YWxpZC4KKyAgICBpZiAoIWIp
CisgICAgICAgIHJldHVybjsKKworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MSA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCkpOworICAgIFZhbHVlKiBhcmd1bWVudDIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICBWYWx1
ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBVRGl2LCBPcmlnaW4oKSwg
YXJndW1lbnQxLCBhcmd1bWVudDIpOworICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKworICAgIENIRUNLX0VRKGNvbXBpbGVBbmRSdW48
dWludDMyX3Q+KHByb2MsIGEsIGIpLCBhIC8gYik7Cit9CisKK3ZvaWQgdGVzdFVEaXZBcmdzSW50
NjQodWludDY0X3QgYSwgdWludDY0X3QgYikKK3sKKyAgICAvLyBVRGl2IHdpdGggZGVub21pbmF0
b3IgPT0gMCBpcyBpbnZhbGlkLgorICAgIGlmICghYikKKyAgICAgICAgcmV0dXJuOworCisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBWYWx1ZSogYXJndW1lbnQxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVlKiBhcmd1
bWVudDIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgVURpdiwgT3JpZ2luKCksIGFyZ3VtZW50MSwgYXJndW1lbnQyKTsK
KyAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3Vs
dCk7CisKKyAgICBDSEVDS19FUShjb21waWxlQW5kUnVuPHVpbnQ2NF90Pihwcm9jLCBhLCBiKSwg
YSAvIGIpOworfQorCit2b2lkIHRlc3RVTW9kQXJnc0ludDMyKHVpbnQzMl90IGEsIHVpbnQzMl90
IGIpCit7CisgICAgLy8gVU1vZCB3aXRoIGRlbm9taW5hdG9yID09IDAgaXMgaW52YWxpZC4KKyAg
ICBpZiAoIWIpCisgICAgICAgIHJldHVybjsKKworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MSA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmd1bWVudDIgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsK
KyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBVTW9kLCBP
cmlnaW4oKSwgYXJndW1lbnQxLCBhcmd1bWVudDIpOworICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKworICAgIENIRUNLX0VRKGNvbXBp
bGVBbmRSdW48dWludDMyX3Q+KHByb2MsIGEsIGIpLCBhICUgYik7Cit9CisKK3ZvaWQgdGVzdFVN
b2RBcmdzSW50NjQodWludDY0X3QgYSwgdWludDY0X3QgYikKK3sKKyAgICAvLyBVTW9kIHdpdGgg
ZGVub21pbmF0b3IgPT0gMCBpcyBpbnZhbGlkLgorICAgIGlmICghYikKKyAgICAgICAgcmV0dXJu
OworCisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZh
bHVlKiBhcmd1bWVudDIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVU1vZCwgT3JpZ2luKCksIGFyZ3VtZW50MSwgYXJn
dW1lbnQyKTsKKyAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2lu
KCksIHJlc3VsdCk7CisKKyAgICBDSEVDS19FUShjb21waWxlQW5kUnVuPHVpbnQ2NF90Pihwcm9j
LCBhLCBiKSwgYSAlIGIpOworfQorCit2b2lkIHRlc3RTdWJBcmcoaW50IGEpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBWYWx1ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIHZhbHVlLCB2YWx1ZSkpOwor
CisgICAgQ0hFQ0soIWNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhKSk7Cit9CisKK3ZvaWQgdGVz
dFN1YkFyZ3MoaW50IGEsIGludCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgU3ViLCBPcmlnaW4oKSwKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpOwor
CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEsIGIpID09IGEgLSBiKTsKK30K
Kwordm9pZCB0ZXN0U3ViQXJnSW1tKGludDY0X3QgYSwgaW50NjRfdCBiKQoreworICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAg
cm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywg
U3ViLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSkpOworCisg
ICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhKSA9PSBhIC0gYik7Cit9CisK
K3ZvaWQgdGVzdFN1Yk5lZyhpbnQgYSwgaW50IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTdWIsIE9yaWdpbigp
LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBOZWcsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIxKSkpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhLCBiKSA9
PSBhIC0gKC0gYikpOworfQorCit2b2lkIHRlc3ROZWdTdWIoaW50IGEsIGludCBiKQoreworICAg
IFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAg
cHJvYywgTmVnLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgU3ViLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCisg
ICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFu
ZFJ1bjxpbnQ+KHByb2MsIGEsIGIpID09IC0oYSAtIGIpKTsKK30KKwordm9pZCB0ZXN0TmVnVmFs
dWVTdWJPbmUoaW50IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7CisgICAgVmFsdWUqIG5lZ0FyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBTdWIsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgMCksCisgICAgICAgIGFyZ3VtZW50KTsKKyAgICBWYWx1ZSogbmVn
QXJndW1lbnRNaW51c09uZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmln
aW4oKSwKKyAgICAgICAgbmVnQXJndW1lbnQsCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25z
dDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIG5lZ0FyZ3VtZW50TWludXNPbmUpOworICAg
IENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhKSA9PSAtYSAtIDEpOworfQorCit2b2lk
IHRlc3RTdWJTdWIoaW50IGEsIGludCBiLCBpbnQgYykKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFN1YiwgT3JpZ2lu
KCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2lu
KCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAorICAgICAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIxKSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMikpKTsKKworICAgIENI
RUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhLCBiLCBjKSA9PSAoYS1iKS1jKTsKK30KKwor
dm9pZCB0ZXN0U3ViU3ViMihpbnQgYSwgaW50IGIsIGludCBjKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgU3ViLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMSksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpKSkpOworCisg
ICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEsIGIsIGMpID09IGEtKGItYykpOwor
fQorCit2b2lkIHRlc3RTdWJBZGQoaW50IGEsIGludCBiLCBpbnQgYykKK3sKKyAgICBQcm9jZWR1
cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFN1
YiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFk
ZCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAorICAgICAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxKSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMikpKTsK
KworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhLCBiLCBjKSA9PSAoYStiKS1j
KTsKK30KKwordm9pZCB0ZXN0U3ViRmlyc3ROZWcoaW50IGEsIGludCBiKQoreworICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAg
cm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywg
U3ViLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
TmVnLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4o
cHJvYywgYSwgYikgPT0gKC1hKS1iKTsKK30KKwordm9pZCB0ZXN0U3ViSW1tQXJnKGludCBhLCBp
bnQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgIHByb2MsIFN1YiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSksCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCkpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBiKSA9
PSBhIC0gYik7Cit9CisKK3ZvaWQgdGVzdFN1YkFyZ01lbShpbnQ2NF90IGEsIGludDY0X3QgYikK
K3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgIE1lbW9y
eVZhbHVlKiBsb2FkID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJ
bnQ2NCwgT3JpZ2luKCksIGFkZHJlc3MpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSwKKyAgICAgICAgbG9hZCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2Ms
IFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGlu
dDY0X3Q+KHByb2MsIGEsICZiKSA9PSBhIC0gYik7Cit9CisKK3ZvaWQgdGVzdFN1Yk1lbUFyZyhp
bnQ2NF90IGEsIGludDY0X3QgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApOworICAgIE1lbW9yeVZhbHVlKiBsb2FkID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPihwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksIGFkZHJlc3MpOworICAgIFZhbHVl
KiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksCisg
ICAgICAgIGxvYWQsCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgcm9vdC0+YXBwZW5k
TmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHJlc3VsdCwgYWRkcmVzcyk7
CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCks
IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAg
ICBpbnQ2NF90IGlucHV0T3V0cHV0ID0gYTsKKyAgICBDSEVDSyghY29tcGlsZUFuZFJ1bjxpbnQ2
NF90Pihwcm9jLCAmaW5wdXRPdXRwdXQsIGIpKTsKKyAgICBDSEVDSyhpbnB1dE91dHB1dCA9PSBh
IC0gYik7Cit9CisKK3ZvaWQgdGVzdFN1YkltbU1lbShpbnQ2NF90IGEsIGludDY0X3QgYikKK3sK
KyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIE1lbW9yeVZh
bHVlKiBsb2FkID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQ2
NCwgT3JpZ2luKCksIGFkZHJlc3MpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxD
b25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKSwKKyAgICAgICAgbG9hZCk7CisgICAgcm9v
dC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHJlc3VsdCwg
YWRkcmVzcyk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwg
T3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAw
KSk7CisKKyAgICBpbnQ2NF90IGlucHV0T3V0cHV0ID0gYjsKKyAgICBDSEVDSyghY29tcGlsZUFu
ZFJ1bjxpbnQ+KHByb2MsICZpbnB1dE91dHB1dCkpOworICAgIENIRUNLKGlucHV0T3V0cHV0ID09
IGEgLSBiKTsKK30KKwordm9pZCB0ZXN0U3ViTWVtSW1tKGludDY0X3QgYSwgaW50NjRfdCBiKQor
eworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgTWVtb3J5
VmFsdWUqIGxvYWQgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIElu
dDY0LCBPcmlnaW4oKSwgYWRkcmVzcyk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwKKyAgICAgICAgbG9hZCwKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpKTsKKyAgICBy
b290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlLCBPcmlnaW4oKSwgcmVzdWx0
LCBhZGRyZXNzKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IDApKTsKKworICAgIGludDY0X3QgaW5wdXRPdXRwdXQgPSBhOworICAgIENIRUNLKCFjb21waWxl
QW5kUnVuPGludD4ocHJvYywgJmlucHV0T3V0cHV0KSk7CisgICAgQ0hFQ0soaW5wdXRPdXRwdXQg
PT0gYSAtIGIpOworfQorCisKK3ZvaWQgdGVzdFN1YkFyZ3MzMihpbnQgYSwgaW50IGIpCit7Cisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAg
ICBwcm9jLCBTdWIsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIxKSkpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9j
LCBhLCBiKSA9PSBhIC0gYik7Cit9CisKK3ZvaWQgdGVzdFN1YkFyZ0ltbTMyKGludCBhLCBpbnQg
YikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIFN1YiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpKSk7CisKKyAgICBDSEVDSyhjb21waWxl
QW5kUnVuPGludD4ocHJvYywgYSkgPT0gYSAtIGIpOworfQorCit2b2lkIHRlc3RTdWJJbW1Bcmcz
MihpbnQgYSwgaW50IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
CisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTdWIsIE9yaWdpbigpLAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpLAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBUcnVu
YywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSkpOworCisgICAg
Q0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGIpID09IGEgLSBiKTsKK30KKwordm9pZCB0
ZXN0U3ViTWVtQXJnMzIoaW50MzJfdCBhLCBpbnQzMl90IGIpCit7CisgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSog
YWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBNZW1vcnlWYWx1ZSogbG9hZCA9IHJvb3Qt
PmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBhZGRy
ZXNzKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICBWYWx1ZSog
cmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBsb2Fk
LCBhcmd1bWVudCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9y
ZSwgT3JpZ2luKCksIHJlc3VsdCwgYWRkcmVzcyk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICBpbnQzMl90IGlucHV0T3V0cHV0ID0gYTsK
KyAgICBDSEVDSyghY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCAmaW5wdXRPdXRwdXQsIGIp
KTsKKyAgICBDSEVDSyhpbnB1dE91dHB1dCA9PSBhIC0gYik7Cit9CisKK3ZvaWQgdGVzdFN1YkFy
Z01lbTMyKGludDMyX3QgYSwgaW50MzJfdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFkZHJlc3Mg
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSk7CisgICAgTWVtb3J5VmFsdWUqIGxvYWQgPSByb290LT5hcHBlbmRO
ZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgYWRkcmVzcyk7Cisg
ICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIHJlc3VsdCA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgYXJndW1lbnQsIGxv
YWQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCByZXN1bHQpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBh
LCAmYikgPT0gYSAtIGIpOworfQorCit2b2lkIHRlc3RTdWJJbW1NZW0zMihpbnQzMl90IGEsIGlu
dDMyX3QgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwor
ICAgIE1lbW9yeVZhbHVlKiBsb2FkID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9j
LCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksIGFkZHJlc3MpOworICAgIFZhbHVlKiByZXN1bHQgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKSwKKyAgICAgICAgbG9h
ZCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2lu
KCksIHJlc3VsdCwgYWRkcmVzcyk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHBy
b2MsIFJldHVybiwgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAwKSk7CisKKyAgICBpbnQzMl90IGlucHV0T3V0cHV0ID0gYjsKKyAgICBDSEVD
SyghY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsICZpbnB1dE91dHB1dCkpOworICAgIENIRUNLKGlu
cHV0T3V0cHV0ID09IGEgLSBiKTsKK30KKwordm9pZCB0ZXN0U3ViTWVtSW1tMzIoaW50MzJfdCBh
LCBpbnQzMl90IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKKyAgICBNZW1vcnlWYWx1ZSogbG9hZCA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
cHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBhZGRyZXNzKTsKKyAgICBWYWx1ZSogcmVzdWx0
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLAorICAgICAgICBs
b2FkLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgYikpOworICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmUsIE9y
aWdpbigpLCByZXN1bHQsIGFkZHJlc3MpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgaW50MzJfdCBpbnB1dE91dHB1dCA9IGE7CisgICAg
Q0hFQ0soIWNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCAmaW5wdXRPdXRwdXQpKTsKKyAgICBDSEVD
SyhpbnB1dE91dHB1dCA9PSBhIC0gYik7Cit9CisKK3ZvaWQgdGVzdE5lZ1ZhbHVlU3ViT25lMzIo
aW50IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAg
ICBWYWx1ZSogbmVnQXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1Yiwg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCAwKSwKKyAgICAgICAgYXJndW1lbnQpOworICAgIFZhbHVlKiBuZWdBcmd1bWVudE1p
bnVzT25lID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLAorICAg
ICAgICBuZWdBcmd1bWVudCwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIDEpKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwgbmVnQXJndW1lbnRNaW51c09uZSk7CisgICAgQ0hFQ0soY29t
cGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEpID09IC1hIC0gMSk7Cit9CisKK3ZvaWQgdGVzdE5lZ011
bEFyZ0ltbShpbnQ2NF90IGEsIGludDY0X3QgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVu
dCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogY29uc3RhbnQgPSByb290LT5hcHBlbmRO
ZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7CisgICAgVmFsdWUqIG11bCA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgYXJndW1lbnQsIGNvbnN0
YW50KTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBO
ZWcsIE9yaWdpbigpLCBtdWwpOworICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRf
dD4ocHJvYywgYSkgPT0gLShhICogYikpOworfQorCit2b2lkIHRlc3RTdWJNdWxNdWxBcmdzKGlu
dDY0X3QgYSwgaW50NjRfdCBiLCBpbnQ2NF90IGMpCit7CisgICAgLy8gV2Ugd2FudCB0byBjaGVj
ayBldmVyeSBwb3NzaWJsZSBvcmRlcmluZyBvZiBhcmd1bWVudHMgKHRvIHByb3Blcmx5IGNoZWNr
IGV2ZXJ5IHBhdGggaW4gQjNSZWR1Y2VTdHJlbmd0aCk6CisgICAgLy8gKChhICogYikgLSAoYSAq
IGMpKQorICAgIC8vICgoYSAqIGIpIC0gKGMgKiBhKSkKKyAgICAvLyAoKGIgKiBhKSAtIChhICog
YykpCisgICAgLy8gKChiICogYSkgLSAoYyAqIGEpKQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
NDsgKytpKSB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBWYWx1ZSogYXJnQSA9IHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKTsKKyAgICAgICAgVmFsdWUqIGFyZ0IgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIFZh
bHVlKiBhcmdDID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgICAgICBWYWx1ZSogbXVsQUIgPSBpICYg
MiA/IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgYXJnQSwgYXJn
QikKKyAgICAgICAgICAgIDogcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdp
bigpLCBhcmdCLCBhcmdBKTsKKyAgICAgICAgVmFsdWUqIG11bEFDID0gaSAmIDEgPyByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIGFyZ0EsIGFyZ0MpCisgICAgICAg
ICAgICA6IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgYXJnQywg
YXJnQSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmln
aW4oKSwKKyAgICAgICAgICAgICAgICBtdWxBQiwKKyAgICAgICAgICAgICAgICBtdWxBQykpOwor
CisgICAgICAgIENIRUNLX0VRKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYSwgYiwgYyks
ICgoYSAqIGIpIC0gKGEgKiBjKSkpOworICAgIH0KK30KKwordm9pZCB0ZXN0U3ViQXJnRG91Ymxl
KGRvdWJsZSBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwor
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdp
bigpLCB2YWx1ZSwgdmFsdWUpKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRS
dW48ZG91YmxlPihwcm9jLCBhKSwgYSAtIGEpKTsKK30KKwordm9pZCB0ZXN0U3ViQXJnc0RvdWJs
ZShkb3VibGUgYSwgZG91YmxlIGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogdmFsdWVBID0gcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1
bWVudEZQUjApOworICAgIFZhbHVlKiB2YWx1ZUIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7CisgICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIHZh
bHVlQSwgdmFsdWVCKSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRv
dWJsZT4ocHJvYywgYSwgYiksIGEgLSBiKSk7Cit9CisKK3ZvaWQgdGVzdFN1YkFyZ0ltbURvdWJs
ZShkb3VibGUgYSwgZG91YmxlIGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogdmFsdWVBID0gcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1
bWVudEZQUjApOworICAgIFZhbHVlKiB2YWx1ZUIgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3Vi
bGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCB2YWx1ZUEsIHZhbHVlQikpOworCisg
ICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEpLCBhIC0g
YikpOworfQorCit2b2lkIHRlc3RTdWJJbW1BcmdEb3VibGUoZG91YmxlIGEsIGRvdWJsZSBiKQor
eworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgVmFsdWUqIHZhbHVlQSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7CisgICAgVmFsdWUqIHZhbHVlQiA9IHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRG
UFIwKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3Vi
LCBPcmlnaW4oKSwgdmFsdWVBLCB2YWx1ZUIpKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNv
bXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBiKSwgYSAtIGIpKTsKK30KKwordm9pZCB0ZXN0U3Vi
SW1tc0RvdWJsZShkb3VibGUgYSwgZG91YmxlIGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogdmFsdWVB
ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsK
KyAgICBWYWx1ZSogdmFsdWVCID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBiKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgdmFsdWVBLCB2YWx1ZUIpKTsKKworICAgIENIRUNLKGlz
SWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jKSwgYSAtIGIpKTsKK30KKwordm9p
ZCB0ZXN0U3ViQXJnRmxvYXQoZmxvYXQgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDMy
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7CisgICAg
VmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4o
KSwgZmxvYXRWYWx1ZSwgZmxvYXRWYWx1ZSk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7Cisg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJl
c3VsdDMyKTsKKworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90
Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4o
YSAtIGEpKSk7Cit9CisKK3ZvaWQgdGVzdFN1YkFyZ3NGbG9hdChmbG9hdCBhLCBmbG9hdCBiKQor
eworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAg
VmFsdWUqIGFyZ3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVu
YywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgVmFsdWUqIGZsb2F0
VmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2lu
KCksIGFyZ3VtZW50MWludDMyKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZTIgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQyaW50MzIp
OworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1Yiwg
T3JpZ2luKCksIGZsb2F0VmFsdWUxLCBmbG9hdFZhbHVlMik7CisgICAgVmFsdWUqIHJlc3VsdDMy
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJl
c3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48
aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3aXNlX2Nhc3Q8aW50
MzJfdD4oYikpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAtIGIpKSk7Cit9CisKK3ZvaWQgdGVz
dFN1YkFyZ0ltbUZsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJn
dW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIp
OworICAgIFZhbHVlKiBjb25zdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIGIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIGZsb2F0VmFsdWUsIGNvbnN0VmFsdWUpOwor
ICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lz
ZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lkZW50
aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90Pihh
KSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhIC0gYikpKTsKK30KKwordm9pZCB0ZXN0U3ViSW1t
QXJnRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDMy
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7CisgICAg
VmFsdWUqIGNvbnN0VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgYSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgY29uc3RWYWx1ZSwgZmxvYXRWYWx1ZSk7CisgICAgVmFs
dWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwg
T3JpZ2luKCksIHJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2Ms
IFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNv
bXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpKSwgYml0
d2lzZV9jYXN0PGludDMyX3Q+KGEgLSBiKSkpOworfQorCit2b2lkIHRlc3RTdWJJbW1zRmxvYXQo
ZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBjb25zdFZhbHVlMSA9IHJvb3Qt
PmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKKyAgICBWYWx1
ZSogY29uc3RWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgYik7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgU3ViLCBPcmlnaW4oKSwgY29uc3RWYWx1ZTEsIGNvbnN0VmFsdWUyKTsKKyAgICBWYWx1
ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBP
cmlnaW4oKSwgcmVzdWx0KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29t
cGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgLSBiKSkp
OworfQorCit2b2lkIHRlc3RTdWJBcmdGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbihm
bG9hdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50SW50MzIgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
KTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
Qml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudEludDMyKTsKKyAgICBWYWx1ZSogYXNEb3Vi
bGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigp
LCBmbG9hdFZhbHVlKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBTdWIsIE9yaWdpbigpLCBhc0RvdWJsZSwgYXNEb3VibGUpOworICAgIFZhbHVlKiBm
bG9hdFJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwg
T3JpZ2luKCksIHJlc3VsdCk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGZsb2F0UmVzdWx0KTsKKyAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0
MzIpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9j
LCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAtIGEp
KSk7Cit9CisKK3ZvaWQgdGVzdFN1YkFyZ3NGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lv
bihmbG9hdCBhLCBmbG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIx
KSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MWludDMyKTsKKyAgICBWYWx1ZSogZmxv
YXRWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmln
aW4oKSwgYXJndW1lbnQyaW50MzIpOworICAgIFZhbHVlKiBhc0RvdWJsZTEgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlMSk7
CisgICAgVmFsdWUqIGFzRG91YmxlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxv
YXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUyKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBhc0RvdWJsZTEsIGFz
RG91YmxlMik7CisgICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICBWYWx1ZSogcmVz
dWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4o
KSwgZmxvYXRSZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21w
aWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYml0d2lz
ZV9jYXN0PGludDMyX3Q+KGIpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgLSBiKSkpOworfQor
Cit2b2lkIHRlc3RTdWJBcmdzRmxvYXRXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lvbihmbG9h
dCBhLCBmbG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Cisg
ICAgVmFsdWUqIGZsb2F0VmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3
aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MWludDMyKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1
ZTIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwg
YXJndW1lbnQyaW50MzIpOworICAgIFZhbHVlKiBhc0RvdWJsZTEgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlMSk7CisgICAg
VmFsdWUqIGFzRG91YmxlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0Rv
dWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUyKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBhc0RvdWJsZTEsIGFzRG91Ymxl
Mik7CisgICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICBWYWx1ZSogZG91YmxlU3Vi
cmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KHByb2MsIFN0b3JlLCBPcmlnaW4oKSwgcmVzdWx0LCBkb3VibGVTdWJyZXNzKTsKKyAgICBWYWx1
ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBP
cmlnaW4oKSwgZmxvYXRSZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBkb3VibGUgZWZmZWN0ID0g
MDsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJp
dHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpLCAmZWZmZWN0
KSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgLSBiKSkpOworICAgIENIRUNLKGlzSWRlbnRpY2Fs
KGVmZmVjdCwgc3RhdGljX2Nhc3Q8ZG91YmxlPihhKSAtIHN0YXRpY19jYXN0PGRvdWJsZT4oYikp
KTsKK30KKwordm9pZCB0ZXN0VGVybmFyeVN1Ykluc3RydWN0aW9uU2VsZWN0aW9uKEIzOjpPcGNv
ZGUgdmFsdWVNb2RpZmllciwgVHlwZSB2YWx1ZVR5cGUsIEFpcjo6T3Bjb2RlIGV4cGVjdGVkT3Bj
b2RlKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisKKyAgICBWYWx1ZSogbGVmdCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBW
YWx1ZSogcmlnaHQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisKKyAgICBpZiAodmFsdWVNb2RpZmllciA9
PSBUcnVuYykgeworICAgICAgICBsZWZ0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCB2
YWx1ZU1vZGlmaWVyLCB2YWx1ZVR5cGUsIE9yaWdpbigpLCBsZWZ0KTsKKyAgICAgICAgcmlnaHQg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIHZhbHVlTW9kaWZpZXIsIHZhbHVlVHlwZSwg
T3JpZ2luKCksIHJpZ2h0KTsKKyAgICB9CisKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgbGVmdCwgcmlnaHQpKTsKKworICAgIGxv
d2VyVG9BaXJGb3JUZXN0aW5nKHByb2MpOworCisgICAgYXV0byBibG9jayA9IHByb2MuY29kZSgp
WzBdOworICAgIHVuc2lnbmVkIG51bWJlck9mU3ViSW5zdHJ1Y3Rpb25zID0gMDsKKyAgICBmb3Ig
KGF1dG8gaW5zdHJ1Y3Rpb24gOiAqYmxvY2spIHsKKyAgICAgICAgaWYgKGluc3RydWN0aW9uLmtp
bmQub3Bjb2RlID09IGV4cGVjdGVkT3Bjb2RlKSB7CisgICAgICAgICAgICBDSEVDS19FUShpbnN0
cnVjdGlvbi5hcmdzLnNpemUoKSwgM3VsKTsKKyAgICAgICAgICAgIENIRUNLX0VRKGluc3RydWN0
aW9uLmFyZ3NbMF0ua2luZCgpLCBBaXI6OkFyZzo6VG1wKTsKKyAgICAgICAgICAgIENIRUNLX0VR
KGluc3RydWN0aW9uLmFyZ3NbMV0ua2luZCgpLCBBaXI6OkFyZzo6VG1wKTsKKyAgICAgICAgICAg
IENIRUNLX0VRKGluc3RydWN0aW9uLmFyZ3NbMl0ua2luZCgpLCBBaXI6OkFyZzo6VG1wKTsKKyAg
ICAgICAgICAgIG51bWJlck9mU3ViSW5zdHJ1Y3Rpb25zKys7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgQ0hFQ0tfRVEobnVtYmVyT2ZTdWJJbnN0cnVjdGlvbnMsIDF1bCk7Cit9CisKK3ZvaWQgdGVz
dE5lZ0RvdWJsZShkb3VibGUgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIE5lZywgT3JpZ2luKCksCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQ
UkluZm86OmFyZ3VtZW50RlBSMCkpKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVB
bmRSdW48ZG91YmxlPihwcm9jLCBhKSwgLWEpKTsKK30KKwordm9pZCB0ZXN0TmVnRmxvYXQoZmxv
YXQgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Cisg
ICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdp
c2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIE5lZywgT3JpZ2luKCksIGZsb2F0VmFsdWUpKTsKKworICAg
IENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZmxvYXQ+KHByb2MsIGJpdHdpc2VfY2Fz
dDxpbnQzMl90PihhKSksIC1hKSk7Cit9CisKK3ZvaWQgdGVzdE5lZ0Zsb2F0V2l0aFVzZWxlc3NE
b3VibGVDb252ZXJzaW9uKGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnRJbnQz
MiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50SW50MzIpOwor
ICAgIFZhbHVlKiBhc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRU
b0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE5lZywgT3JpZ2luKCksIGFzRG91YmxlKTsKKyAgICBW
YWx1ZSogZmxvYXRSZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRv
RmxvYXQsIE9yaWdpbigpLCByZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBmbG9hdFJlc3VsdCk7CisKKyAgICBDSEVDSyhpc0lk
ZW50aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4o
YSkpLCAtYSkpOworfQorCit2b2lkIHRlc3RCaXRBbmRBcmdzKGludDY0X3QgYSwgaW50NjRfdCBi
KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpOworCisgICAgQ0hFQ0soY29tcGls
ZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhLCBiKSA9PSAoYSAmIGIpKTsKK30KKwordm9pZCB0ZXN0
Qml0QW5kU2FtZUFyZyhpbnQ2NF90IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIGFyZ3Vt
ZW50LAorICAgICAgICAgICAgYXJndW1lbnQpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48
aW50NjRfdD4ocHJvYywgYSkgPT0gYSk7Cit9CisKK3ZvaWQgdGVzdEJpdEFuZE5vdE5vdChpbnQ2
NF90IGEsIGludDY0X3QgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmdBID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOworICAgIFZhbHVlKiBhcmdCID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgIFZhbHVlKiBub3RB
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLCBhcmdBLCBy
b290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTEpKTsKKyAgICBW
YWx1ZSogbm90QiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0WG9yLCBPcmlnaW4o
KSwgYXJnQiwgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0x
KSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIG5vdEEsCisgICAgICAgICAg
ICBub3RCKSk7CisKKyAgICBDSEVDS19FUShjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEs
IGIpLCAofmEgJiB+YikpOworfQorCit2b2lkIHRlc3RCaXRBbmROb3RJbW0oaW50NjRfdCBhLCBp
bnQ2NF90IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJnQSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAg
ICBWYWx1ZSogbm90QSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0WG9yLCBPcmln
aW4oKSwgYXJnQSwgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IC0xKSk7CisgICAgVmFsdWUqIGNzdEIgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgYik7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAg
ICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIG5v
dEEsCisgICAgICAgICAgICBjc3RCKSk7CisKKyAgICBDSEVDS19FUShjb21waWxlQW5kUnVuPGlu
dDY0X3Q+KHByb2MsIGEsIGIpLCAofmEgJiBiKSk7Cit9CisKK3ZvaWQgdGVzdEJpdEFuZEltbXMo
aW50NjRfdCBhLCBpbnQ2NF90IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEp
LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIGIpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MpID09IChh
ICYgYikpOworfQorCit2b2lkIHRlc3RCaXRBbmRBcmdJbW0oaW50NjRfdCBhLCBpbnQ2NF90IGIp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2Ms
IFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAg
ICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIGIpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEp
ID09IChhICYgYikpOworfQorCit2b2lkIHRlc3RCaXRBbmRJbW1BcmcoaW50NjRfdCBhLCBpbnQ2
NF90IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAg
IHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpLAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHBy
b2MsIGIpID09IChhICYgYikpOworfQorCit2b2lkIHRlc3RCaXRBbmRCaXRBbmRBcmdJbW1JbW0o
aW50NjRfdCBhLCBpbnQ2NF90IGIsIGludDY0X3QgYykKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBpbm5l
ckJpdEFuZCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIEJpdEFuZCwg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpKTsKKyAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdp
bigpLAorICAgICAgICAgICAgaW5uZXJCaXRBbmQsCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYykpKTsKKworICAgIENIRUNLKGNvbXBp
bGVBbmRSdW48aW50NjRfdD4ocHJvYywgYSkgPT0gKChhICYgYikgJiBjKSk7Cit9CisKK3ZvaWQg
dGVzdEJpdEFuZEltbUJpdEFuZEFyZ0ltbShpbnQ2NF90IGEsIGludDY0X3QgYiwgaW50NjRfdCBj
KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgVmFsdWUqIGlubmVyQml0QW5kID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgYykpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAg
ICAgICAgIHByb2MsIEJpdEFuZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSksCisgICAgICAgICAgICBpbm5lckJp
dEFuZCkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBiKSA9PSAo
YSAmIChiICYgYykpKTsKK30KKwordm9pZCB0ZXN0Qml0QW5kQXJnczMyKGludCBhLCBpbnQgYikK
K3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAg
ICAgICAgIHByb2MsIEJpdEFuZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxp
bnQ+KHByb2MsIGEsIGIpID09IChhICYgYikpOworfQorCit2b2lkIHRlc3RCaXRBbmRTYW1lQXJn
MzIoaW50IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsK
KyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBw
cm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAgICAgICAgICAgYXJndW1lbnQsCisgICAgICAgICAg
ICBhcmd1bWVudCkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEpID09
IGEpOworfQorCit2b2lkIHRlc3RCaXRBbmRJbW1zMzIoaW50IGEsIGludCBiKQoreworICAgIFBy
b2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJv
YywgQml0QW5kLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFu
ZFJ1bjxpbnQ+KHByb2MpID09IChhICYgYikpOworfQorCit2b2lkIHRlc3RCaXRBbmRBcmdJbW0z
MihpbnQgYSwgaW50IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
CisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywg
T3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSkpOworCisg
ICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEpID09IChhICYgYikpOworfQorCit2
b2lkIHRlc3RCaXRBbmRJbW1BcmczMihpbnQgYSwgaW50IGIpCit7CisgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRBbmQs
IE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIGEpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGIp
ID09IChhICYgYikpOworfQorCit2b2lkIHRlc3RCaXRBbmRCaXRBbmRBcmdJbW1JbW0zMihpbnQg
YSwgaW50IGIsIGludCBjKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGlubmVyQml0QW5kID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKKyAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmln
aW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSk7CisgICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQml0QW5kLCBPcmln
aW4oKSwKKyAgICAgICAgICAgIGlubmVyQml0QW5kLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGMpKSk7CisKKyAgICBDSEVDSyhjb21w
aWxlQW5kUnVuPGludD4ocHJvYywgYSkgPT0gKChhICYgYikgJiBjKSk7Cit9CisKK3ZvaWQgdGVz
dEJpdEFuZEltbUJpdEFuZEFyZ0ltbTMyKGludCBhLCBpbnQgYiwgaW50IGMpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBWYWx1ZSogaW5uZXJCaXRBbmQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBw
cm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIGMpKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpLAorICAgICAgICAgICAgaW5u
ZXJCaXRBbmQpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBiKSA9PSAo
YSAmIChiICYgYykpKTsKK30KKwordm9pZCB0ZXN0Qml0QW5kV2l0aE1hc2tSZXR1cm5zQm9vbGVh
bnMoaW50NjRfdCBhLCBpbnQ2NF90IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJnMCA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICBWYWx1
ZSogZXF1YWwgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEVxdWFsLCBPcmlnaW4oKSwg
YXJnMCwgYXJnMSk7CisgICAgVmFsdWUqIG1hc2tlZEVxdWFsID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMHg1KSwKKyAgICAgICAgZXF1YWwpOworICAgIFZh
bHVlKiBpbnZlcnRlZCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0WG9yLCBPcmln
aW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIDB4MSksCisgICAgICAgIG1hc2tlZEVxdWFsKTsKKyAgICBWYWx1ZSogc2VsZWN0ID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTZWxlY3QsIE9yaWdpbigpLCBpbnZlcnRlZCwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKSwK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC01
KSk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmln
aW4oKSwgc2VsZWN0KTsKKworICAgIGludDY0X3QgZXhwZWN0ZWQgPSAoYSA9PSBiKSA/IC01IDog
NDI7CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhLCBiKSA9PSBleHBl
Y3RlZCk7Cit9CisKK3N0YXRpYyBkb3VibGUgYml0QW5kRG91YmxlKGRvdWJsZSBhLCBkb3VibGUg
YikKK3sKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PGRvdWJsZT4oYml0d2lzZV9jYXN0PHVpbnQ2
NF90PihhKSAmIGJpdHdpc2VfY2FzdDx1aW50NjRfdD4oYikpOworfQorCit2b2lkIHRlc3RCaXRB
bmRBcmdEb3VibGUoZG91YmxlIGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFy
Z3VtZW50RlBSMCk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgQml0QW5kLCBPcmlnaW4oKSwgYXJndW1lbnQsIGFyZ3VtZW50KTsKKyAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKwor
ICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBhKSwgYml0
QW5kRG91YmxlKGEsIGEpKSk7Cit9CisKK3ZvaWQgdGVzdEJpdEFuZEFyZ3NEb3VibGUoZG91Ymxl
IGEsIGRvdWJsZSBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50QSA9IHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRG
UFIwKTsKKyAgICBWYWx1ZSogYXJndW1lbnRCID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOworICAgIFZhbHVl
KiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCks
IGFyZ3VtZW50QSwgYXJndW1lbnRCKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKworICAgIENIRUNLKGlzSWRlbnRpY2Fs
KGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBhLCBiKSwgYml0QW5kRG91YmxlKGEsIGIpKSk7
Cit9CisKK3ZvaWQgdGVzdEJpdEFuZEFyZ0ltbURvdWJsZShkb3VibGUgYSwgZG91YmxlIGIpCit7
CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnRBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgIFZhbHVl
KiBhcmd1bWVudEIgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIGIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEJpdEFuZCwgT3JpZ2luKCksIGFyZ3VtZW50QSwgYXJndW1lbnRCKTsKKyAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKwor
ICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBhLCBiKSwg
Yml0QW5kRG91YmxlKGEsIGIpKSk7Cit9CisKK3ZvaWQgdGVzdEJpdEFuZEltbXNEb3VibGUoZG91
YmxlIGEsIGRvdWJsZSBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50QSA9IHJvb3QtPmFw
cGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7CisgICAgVmFsdWUq
IGFyZ3VtZW50QiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmln
aW4oKSwgYik7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQml0QW5kLCBPcmlnaW4oKSwgYXJndW1lbnRBLCBhcmd1bWVudEIpOworICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOworCisg
ICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MpLCBiaXRBbmRE
b3VibGUoYSwgYikpKTsKK30KKworc3RhdGljIGZsb2F0IGJpdEFuZEZsb2F0KGZsb2F0IGEsIGZs
b2F0IGIpCit7CisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxmbG9hdD4oYml0d2lzZV9jYXN0PHVp
bnQzMl90PihhKSAmIGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oYikpOworfQorCit2b2lkIHRlc3RC
aXRBbmRBcmdGbG9hdChmbG9hdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApKSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwgYXJndW1lbnQsIGFyZ3VtZW50KTsKKyAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVz
dWx0KTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZmxvYXQ+KHByb2Ms
IGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGJpdEFuZEZsb2F0KGEsIGEpKSk7Cit9CisKK3Zv
aWQgdGVzdEJpdEFuZEFyZ3NGbG9hdChmbG9hdCBhLCBmbG9hdCBiKQoreworICAgIFByb2NlZHVy
ZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFs
dWUqIGFyZ3VtZW50QSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3Qs
IE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOworICAgIFZhbHVlKiBhcmd1
bWVudEIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4o
KSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCks
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBhcmd1bWVudEEsIGFy
Z3VtZW50Qik7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwg
T3JpZ2luKCksIHJlc3VsdCk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVu
PGZsb2F0Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSksIGJpdHdpc2VfY2FzdDxpbnQz
Ml90PihiKSksIGJpdEFuZEZsb2F0KGEsIGIpKSk7Cit9CisKK3ZvaWQgdGVzdEJpdEFuZEFyZ0lt
bUZsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnRBID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50QiA9IHJvb3QtPmFw
cGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKTsKKyAgICBWYWx1ZSog
cmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBh
cmd1bWVudEEsIGFyZ3VtZW50Qik7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHBy
b2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChj
b21waWxlQW5kUnVuPGZsb2F0Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSksIGJpdHdp
c2VfY2FzdDxpbnQzMl90PihiKSksIGJpdEFuZEZsb2F0KGEsIGIpKSk7Cit9CisKK3ZvaWQgdGVz
dEJpdEFuZEltbXNGbG9hdChmbG9hdCBhLCBmbG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9j
OworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFy
Z3VtZW50QSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+KHByb2MsIE9yaWdpbigp
LCBhKTsKKyAgICBWYWx1ZSogYXJndW1lbnRCID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCksIGFyZ3VtZW50QSwgYXJndW1lbnRC
KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwgcmVzdWx0KTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZmxvYXQ+
KHByb2MpLCBiaXRBbmRGbG9hdChhLCBiKSkpOworfQorCit2b2lkIHRlc3RCaXRBbmRBcmdzRmxv
YXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24oZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIFZhbHVlKiBhcmd1bWVudEEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdp
c2VDYXN0LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBU
cnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKTsKKyAgICBWYWx1
ZSogYXJndW1lbnRCID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9y
aWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSk7CisgICAgVmFsdWUqIGFyZ3Vt
ZW50QWFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91Ymxl
LCBPcmlnaW4oKSwgYXJndW1lbnRBKTsKKyAgICBWYWx1ZSogYXJndW1lbnRCYXNEb3VibGUgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBhcmd1
bWVudEIpOworICAgIFZhbHVlKiBkb3VibGVSZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEJpdEFuZCwgT3JpZ2luKCksIGFyZ3VtZW50QWFzRG91YmxlLCBhcmd1bWVudEJhc0Rv
dWJsZSk7CisgICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgZG91YmxlUmVzdWx0KTsKKyAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgZmxvYXRSZXN1bHQp
OworCisgICAgZG91YmxlIGRvdWJsZUEgPSBhOworICAgIGRvdWJsZSBkb3VibGVCID0gYjsKKyAg
ICBmbG9hdCBleHBlY3RlZCA9IHN0YXRpY19jYXN0PGZsb2F0PihiaXRBbmREb3VibGUoZG91Ymxl
QSwgZG91YmxlQikpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZmxvYXQ+
KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIp
KSwgZXhwZWN0ZWQpKTsKK30KKwordm9pZCB0ZXN0Qml0T3JBcmdzKGludDY0X3QgYSwgaW50NjRf
dCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICAgICAgcHJvYywgQml0T3IsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSk7CisKKyAgICBDSEVDSyhjb21w
aWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEsIGIpID09IChhIHwgYikpOworfQorCit2b2lkIHRl
c3RCaXRPclNhbWVBcmcoaW50NjRfdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0g
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgIHByb2MsIEJpdE9yLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIGFyZ3Vt
ZW50LAorICAgICAgICAgICAgYXJndW1lbnQpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48
aW50NjRfdD4ocHJvYywgYSkgPT0gYSk7Cit9CisKK3ZvaWQgdGVzdEJpdE9yQW5kQW5kQXJncyhp
bnQ2NF90IGEsIGludDY0X3QgYiwgaW50NjRfdCBjKQoreworICAgIC8vIFdlIHdhbnQgdG8gY2hl
Y2sgZXZlcnkgcG9zc2libGUgb3JkZXJpbmcgb2YgYXJndW1lbnRzICh0byBwcm9wZXJseSBjaGVj
ayBldmVyeSBwYXRoIGluIEIzUmVkdWNlU3RyZW5ndGgpOgorICAgIC8vICgoYSAmIGIpIHwgKGEg
JiBjKSkKKyAgICAvLyAoKGEgJiBiKSB8IChjICYgYSkpCisgICAgLy8gKChiICYgYSkgfCAoYSAm
IGMpKQorICAgIC8vICgoYiAmIGEpIHwgKGMgJiBhKSkKKyAgICBmb3IgKGludCBpID0gMDsgaSA8
IDQ7ICsraSkgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgVmFsdWUqIGFyZ0EgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7CisgICAgICAgIFZhbHVlKiBhcmdCID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBW
YWx1ZSogYXJnQyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgVmFsdWUqIGFuZEFCID0gaSAm
IDIgPyByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCksIGFyZ0Es
IGFyZ0IpCisgICAgICAgICAgICA6IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5k
LCBPcmlnaW4oKSwgYXJnQiwgYXJnQSk7CisgICAgICAgIFZhbHVlKiBhbmRBQyA9IGkgJiAxID8g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBhcmdBLCBhcmdD
KQorICAgICAgICAgICAgOiByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3Jp
Z2luKCksIGFyZ0MsIGFyZ0EpOworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
CisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBCaXRPciwgT3JpZ2luKCks
CisgICAgICAgICAgICAgICAgYW5kQUIsCisgICAgICAgICAgICAgICAgYW5kQUMpKTsKKworICAg
ICAgICBDSEVDS19FUShjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEsIGIsIGMpLCAoKGEg
JiBiKSB8IChhICYgYykpKTsKKyAgICB9Cit9CisKK3ZvaWQgdGVzdEJpdE9yQW5kU2FtZUFyZ3Mo
aW50NjRfdCBhLCBpbnQ2NF90IGIpCit7CisgICAgLy8gV2Ugd2FudCB0byBjaGVjayBldmVyeSBw
b3NzaWJsZSBvcmRlcmluZyBvZiBhcmd1bWVudHMgKHRvIHByb3Blcmx5IGNoZWNrIGV2ZXJ5IHBh
dGggaW4gQjNSZWR1Y2VTdHJlbmd0aCk6CisgICAgLy8gKChhICYgYikgfCBhKQorICAgIC8vICgo
YiAmIGEpIHwgYSkKKyAgICAvLyAoYSB8IChhICYgYikpCisgICAgLy8gKGEgfCAoYiAmIGEpKQor
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgKytpKSB7CisgICAgICAgIFByb2NlZHVyZSBwcm9j
OworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBW
YWx1ZSogYXJnQSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIGFyZ0IgPSByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMSk7CisgICAgICAgIFZhbHVlKiBhbmRBQiA9IGkgJiAxID8gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBhcmdBLCBhcmdCKQorICAgICAgICAg
ICAgOiByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCksIGFyZ0Is
IGFyZ0EpOworICAgICAgICBWYWx1ZSogcmVzdWx0ID0gaSAmIDIgPyByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEJpdE9yLCBPcmlnaW4oKSwgYW5kQUIsIGFyZ0EpCisgICAgICAgICAgICA6
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0T3IsIE9yaWdpbigpLCBhcmdBLCBhbmRB
Qik7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCByZXN1bHQpOworCisgICAgICAgIENIRUNLX0VRKGNvbXBpbGVBbmRSdW48aW50NjRf
dD4ocHJvYywgYSwgYiksICgoYSAmIGIpIHwgYSkpOworICAgIH0KK30KKwordm9pZCB0ZXN0Qml0
T3JOb3ROb3QoaW50NjRfdCBhLCBpbnQ2NF90IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJnQSA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogYXJnQiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAg
ICBWYWx1ZSogbm90QSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0WG9yLCBPcmln
aW4oKSwgYXJnQSwgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IC0xKSk7CisgICAgVmFsdWUqIG5vdEIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJp
dFhvciwgT3JpZ2luKCksIGFyZ0IsIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAtMSkpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgIHByb2MsIEJpdE9yLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIG5vdEEs
CisgICAgICAgICAgICBub3RCKSk7CisKKyAgICBDSEVDS19FUShjb21waWxlQW5kUnVuPGludDY0
X3Q+KHByb2MsIGEsIGIpLCAofmEgfCB+YikpOworfQorCit2b2lkIHRlc3RCaXRPck5vdEltbShp
bnQ2NF90IGEsIGludDY0X3QgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmdBID0gcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOworICAgIFZhbHVlKiBub3RBID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBC
aXRYb3IsIE9yaWdpbigpLCBhcmdBLCByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgLTEpKTsKKyAgICBWYWx1ZSogY3N0QiA9IHJvb3QtPmFwcGVuZE5ldzxDb25z
dDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRPciwgT3JpZ2luKCksCisgICAg
ICAgICAgICBub3RBLAorICAgICAgICAgICAgY3N0QikpOworCisgICAgQ0hFQ0tfRVEoY29tcGls
ZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhLCBiKSwgKH5hIHwgYikpOworfQorCit2b2lkIHRlc3RC
aXRPckltbXMoaW50NjRfdCBhLCBpbnQ2NF90IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRPciwgT3JpZ2lu
KCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmln
aW4oKSwgYSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgYikpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJv
YykgPT0gKGEgfCBiKSk7Cit9CisKK3ZvaWQgdGVzdEJpdE9yQXJnSW1tKGludDY0X3QgYSwgaW50
NjRfdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICAgICAgcHJvYywgQml0T3IsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIGIpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHBy
b2MsIGEpID09IChhIHwgYikpOworfQorCit2b2lkIHRlc3RCaXRPckltbUFyZyhpbnQ2NF90IGEs
IGludDY0X3QgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAg
ICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKKyAgICAgICAgICAgIHByb2MsIEJpdE9yLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKSwKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90
Pihwcm9jLCBiKSA9PSAoYSB8IGIpKTsKK30KKwordm9pZCB0ZXN0Qml0T3JCaXRPckFyZ0ltbUlt
bShpbnQ2NF90IGEsIGludDY0X3QgYiwgaW50NjRfdCBjKQoreworICAgIFByb2NlZHVyZSBwcm9j
OworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGlu
bmVyQml0T3IgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBCaXRPciwg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpKTsKKyAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRPciwgT3JpZ2lu
KCksCisgICAgICAgICAgICBpbm5lckJpdE9yLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGMpKSk7CisKKyAgICBDSEVDSyhjb21waWxl
QW5kUnVuPGludDY0X3Q+KHByb2MsIGEpID09ICgoYSB8IGIpIHwgYykpOworfQorCit2b2lkIHRl
c3RCaXRPckltbUJpdE9yQXJnSW1tKGludDY0X3QgYSwgaW50NjRfdCBiLCBpbnQ2NF90IGMpCit7
CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICBWYWx1ZSogaW5uZXJCaXRPciA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgIHByb2MsIEJpdE9yLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYykp
OworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
IHByb2MsIEJpdE9yLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25z
dDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKSwKKyAgICAgICAgICAgIGlubmVyQml0T3IpKTsK
KworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYikgPT0gKGEgfCAoYiB8
IGMpKSk7Cit9CisKK3ZvaWQgdGVzdEJpdE9yQXJnczMyKGludCBhLCBpbnQgYikKK3sKKyAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIEJpdE9yLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMSkpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywg
YSwgYikgPT0gKGEgfCBiKSk7Cit9CisKK3ZvaWQgdGVzdEJpdE9yU2FtZUFyZzMyKGludCBhKQor
eworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAg
ICBwcm9jLCBCaXRPciwgT3JpZ2luKCksCisgICAgICAgICAgICBhcmd1bWVudCwKKyAgICAgICAg
ICAgIGFyZ3VtZW50KSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYSkg
PT0gYSk7Cit9CisKK3ZvaWQgdGVzdEJpdE9ySW1tczMyKGludCBhLCBpbnQgYikKK3sKKyAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIEJpdE9yLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFu
ZFJ1bjxpbnQ+KHByb2MpID09IChhIHwgYikpOworfQorCit2b2lkIHRlc3RCaXRPckFyZ0ltbTMy
KGludCBhLCBpbnQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
KyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJpdE9yLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9y
aWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYikpKTsKKworICAg
IENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhKSA9PSAoYSB8IGIpKTsKK30KKwordm9p
ZCB0ZXN0Qml0T3JJbW1BcmczMihpbnQgYSwgaW50IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRPciwgT3Jp
Z2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgYSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAg
ICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCkpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYikgPT0g
KGEgfCBiKSk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy90ZXN0YjNfMy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzllMDI4NmE0MzliMDhlODE2ZTk1ZGY2YTE4
ZDIzOTYzYTZiNDQ1NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My90ZXN0YjNfMy5jcHAKQEAgLTAsMCArMSwzMDAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAidGVzdGIzLmgiCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCit2b2lkIHRlc3RCaXRPckJpdE9y
QXJnSW1tSW1tMzIoaW50IGEsIGludCBiLCBpbnQgYykKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBpbm5l
ckJpdE9yID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgQml0T3IsIE9y
aWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJv
YywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpKTsKKyAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3Jp
Z2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9j
LCBCaXRPciwgT3JpZ2luKCksCisgICAgICAgICAgICBpbm5lckJpdE9yLAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGMpKSk7CisKKyAg
ICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYSkgPT0gKChhIHwgYikgfCBjKSk7Cit9
CisKK3ZvaWQgdGVzdEJpdE9ySW1tQml0T3JBcmdJbW0zMihpbnQgYSwgaW50IGIsIGludCBjKQor
eworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgVmFsdWUqIGlubmVyQml0T3IgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICBwcm9jLCBCaXRPciwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgYykpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAg
ICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKKyAgICAgICAgICAgIHByb2MsIEJpdE9yLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKSwKKyAgICAgICAg
ICAgIGlubmVyQml0T3IpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBi
KSA9PSAoYSB8IChiIHwgYykpKTsKK30KKworZG91YmxlIGJpdE9yRG91YmxlKGRvdWJsZSBhLCBk
b3VibGUgYikKK3sKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PGRvdWJsZT4oYml0d2lzZV9jYXN0
PHVpbnQ2NF90PihhKSB8IGJpdHdpc2VfY2FzdDx1aW50NjRfdD4oYikpOworfQorCit2b2lkIHRl
c3RCaXRPckFyZ0RvdWJsZShkb3VibGUgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudCA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5m
bzo6YXJndW1lbnRGUFIwKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBCaXRPciwgT3JpZ2luKCksIGFyZ3VtZW50LCBhcmd1bWVudCk7CisgICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7
CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgYSks
IGJpdE9yRG91YmxlKGEsIGEpKSk7Cit9CisKK3ZvaWQgdGVzdEJpdE9yQXJnc0RvdWJsZShkb3Vi
bGUgYSwgZG91YmxlIGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnRBID0gcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVu
dEZQUjApOworICAgIFZhbHVlKiBhcmd1bWVudEIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7CisgICAgVmFs
dWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0T3IsIE9yaWdpbigp
LCBhcmd1bWVudEEsIGFyZ3VtZW50Qik7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNh
bChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgYSwgYiksIGJpdE9yRG91YmxlKGEsIGIpKSk7
Cit9CisKK3ZvaWQgdGVzdEJpdE9yQXJnSW1tRG91YmxlKGRvdWJsZSBhLCBkb3VibGUgYikKK3sK
KyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworICAgIFZhbHVlKiBhcmd1bWVudEEgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgVmFsdWUq
IGFyZ3VtZW50QiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmln
aW4oKSwgYik7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQml0T3IsIE9yaWdpbigpLCBhcmd1bWVudEEsIGFyZ3VtZW50Qik7CisgICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisKKyAg
ICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgYSwgYiksIGJp
dE9yRG91YmxlKGEsIGIpKSk7Cit9CisKK3ZvaWQgdGVzdEJpdE9ySW1tc0RvdWJsZShkb3VibGUg
YSwgZG91YmxlIGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnRBID0gcm9vdC0+YXBwZW5k
TmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKKyAgICBWYWx1ZSogYXJn
dW1lbnRCID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBiKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBC
aXRPciwgT3JpZ2luKCksIGFyZ3VtZW50QSwgYXJndW1lbnRCKTsKKyAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKworICAgIENI
RUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jKSwgYml0T3JEb3VibGUo
YSwgYikpKTsKK30KKworZmxvYXQgYml0T3JGbG9hdChmbG9hdCBhLCBmbG9hdCBiKQoreworICAg
IHJldHVybiBiaXR3aXNlX2Nhc3Q8ZmxvYXQ+KGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oYSkgfCBi
aXR3aXNlX2Nhc3Q8dWludDMyX3Q+KGIpKTsKK30KKwordm9pZCB0ZXN0Qml0T3JBcmdGbG9hdChm
bG9hdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApKSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
Qml0T3IsIE9yaWdpbigpLCBhcmd1bWVudCwgYXJndW1lbnQpOworICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOworCisgICAgQ0hF
Q0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxmbG9hdD4ocHJvYywgYml0d2lzZV9jYXN0PGlu
dDMyX3Q+KGEpKSwgYml0T3JGbG9hdChhLCBhKSkpOworfQorCit2b2lkIHRlc3RCaXRPckFyZ3NG
bG9hdChmbG9hdCBhLCBmbG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50QSA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLAorICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSkpOworICAgIFZhbHVlKiBhcmd1bWVudEIgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMSkpKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBCaXRPciwgT3JpZ2luKCksIGFyZ3VtZW50QSwgYXJndW1lbnRCKTsKKyAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsK
KworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZmxvYXQ+KHByb2MsIGJpdHdp
c2VfY2FzdDxpbnQzMl90PihhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpKSwgYml0T3JGbG9h
dChhLCBiKSkpOworfQorCit2b2lkIHRlc3RCaXRPckFyZ0ltbUZsb2F0KGZsb2F0IGEsIGZsb2F0
IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnRBID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
KSk7CisgICAgVmFsdWUqIGFyZ3VtZW50QiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFs
dWU+KHByb2MsIE9yaWdpbigpLCBiKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXRPciwgT3JpZ2luKCksIGFyZ3VtZW50QSwgYXJndW1lbnRCKTsK
KyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwg
cmVzdWx0KTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZmxvYXQ+KHBy
b2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpKSwg
Yml0T3JGbG9hdChhLCBiKSkpOworfQorCit2b2lkIHRlc3RCaXRPckltbXNGbG9hdChmbG9hdCBh
LCBmbG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50QSA9IHJvb3QtPmFwcGVuZE5l
dzxDb25zdEZsb2F0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKKyAgICBWYWx1ZSogYXJndW1l
bnRCID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIp
OworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdE9y
LCBPcmlnaW4oKSwgYXJndW1lbnRBLCBhcmd1bWVudEIpOworICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOworCisgICAgQ0hFQ0so
aXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxmbG9hdD4ocHJvYyksIGJpdE9yRmxvYXQoYSwgYikp
KTsKK30KKwordm9pZCB0ZXN0Qml0T3JBcmdzRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNp
b24oZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudEEgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCkpKTsKKyAgICBWYWx1ZSogYXJndW1lbnRCID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjEpKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50QWFzRG91YmxlID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgYXJndW1lbnRBKTsKKyAg
ICBWYWx1ZSogYXJndW1lbnRCYXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBhcmd1bWVudEIpOworICAgIFZhbHVlKiBkb3VibGVS
ZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdE9yLCBPcmlnaW4oKSwgYXJn
dW1lbnRBYXNEb3VibGUsIGFyZ3VtZW50QmFzRG91YmxlKTsKKyAgICBWYWx1ZSogZmxvYXRSZXN1
bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigp
LCBkb3VibGVSZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCBmbG9hdFJlc3VsdCk7CisKKyAgICBkb3VibGUgZG91YmxlQSA9IGE7
CisgICAgZG91YmxlIGRvdWJsZUIgPSBiOworICAgIGZsb2F0IGV4cGVjdGVkID0gc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGJpdE9yRG91YmxlKGRvdWJsZUEsIGRvdWJsZUIpKTsKKyAgICBDSEVDSyhpc0lk
ZW50aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4o
YSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihiKSksIGV4cGVjdGVkKSk7Cit9CisKK3ZvaWQgdGVz
dEJpdFhvckFyZ3MoaW50NjRfdCBhLCBpbnQ2NF90IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRYb3IsIE9y
aWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjEpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEs
IGIpID09IChhIF4gYikpOworfQorCit2b2lkIHRlc3RCaXRYb3JTYW1lQXJnKGludDY0X3QgYSkK
K3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRY
b3IsIE9yaWdpbigpLAorICAgICAgICAgICAgYXJndW1lbnQsCisgICAgICAgICAgICBhcmd1bWVu
dCkpOworCisgICAgQ0hFQ0soIWNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYSkpOworfQor
Cit2b2lkIHRlc3RCaXRYb3JBbmRBbmRBcmdzKGludDY0X3QgYSwgaW50NjRfdCBiLCBpbnQ2NF90
IGMpCit7CisgICAgLy8gV2Ugd2FudCB0byBjaGVjayBldmVyeSBwb3NzaWJsZSBvcmRlcmluZyBv
ZiBhcmd1bWVudHMgKHRvIHByb3Blcmx5IGNoZWNrIGV2ZXJ5IHBhdGggaW4gQjNSZWR1Y2VTdHJl
bmd0aCk6CisgICAgLy8gKChhICYgYikgXiAoYSAmIGMpKQorICAgIC8vICgoYSAmIGIpIF4gKGMg
JiBhKSkKKyAgICAvLyAoKGIgJiBhKSBeIChhICYgYykpCisgICAgLy8gKChiICYgYSkgXiAoYyAm
IGEpKQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgKytpKSB7CisgICAgICAgIFByb2NlZHVy
ZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
ICAgICBWYWx1ZSogYXJnQSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIGFyZ0Ig
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIFZhbHVlKiBhcmdDID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIp
OworICAgICAgICBWYWx1ZSogYW5kQUIgPSBpICYgMiA/IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgQml0QW5kLCBPcmlnaW4oKSwgYXJnQSwgYXJnQikKKyAgICAgICAgICAgIDogcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBhcmdCLCBhcmdBKTsKKyAg
ICAgICAgVmFsdWUqIGFuZEFDID0gaSAmIDEgPyByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEJpdEFuZCwgT3JpZ2luKCksIGFyZ0EsIGFyZ0MpCisgICAgICAgICAgICA6IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwgYXJnQywgYXJnQSk7CisgICAgICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwg
T3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgICAgIHByb2MsIEJpdFhvciwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgYW5kQUIsCisg
ICAgICAgICAgICAgICAgYW5kQUMpKTsKKworICAgICAgICBDSEVDS19FUShjb21waWxlQW5kUnVu
PGludDY0X3Q+KHByb2MsIGEsIGIsIGMpLCAoKGEgJiBiKSBeIChhICYgYykpKTsKKyAgICB9Cit9
CisKK3ZvaWQgdGVzdEJpdFhvckFuZFNhbWVBcmdzKGludDY0X3QgYSwgaW50NjRfdCBiKQorewor
ICAgIC8vIFdlIHdhbnQgdG8gY2hlY2sgZXZlcnkgcG9zc2libGUgb3JkZXJpbmcgb2YgYXJndW1l
bnRzICh0byBwcm9wZXJseSBjaGVjayBldmVyeSBwYXRoIGluIEIzUmVkdWNlU3RyZW5ndGgpOgor
ICAgIC8vICgoYSAmIGIpIF4gYSkKKyAgICAvLyAoKGIgJiBhKSBeIGEpCisgICAgLy8gKGEgXiAo
YSAmIGIpKQorICAgIC8vIChhIF4gKGIgJiBhKSkKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7
ICsraSkgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgVmFsdWUqIGFyZ0EgPSByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7CisgICAgICAgIFZhbHVlKiBhcmdCID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBWYWx1
ZSogYW5kQUIgPSBpICYgMSA/IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBP
cmlnaW4oKSwgYXJnQSwgYXJnQikKKyAgICAgICAgICAgIDogcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBhcmdCLCBhcmdBKTsKKyAgICAgICAgVmFsdWUqIHJl
c3VsdCA9IGkgJiAyID8gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRYb3IsIE9yaWdp
bigpLCBhbmRBQiwgYXJnQSkKKyAgICAgICAgICAgIDogcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBCaXRYb3IsIE9yaWdpbigpLCBhcmdBLCBhbmRBQik7CisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOworICAgIAor
ICAgICAgICBDSEVDS19FUShjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEsIGIpLCAoKGEg
JiBiKSBeIGEpKTsKKyAgICB9Cit9CisKK3ZvaWQgdGVzdEJpdFhvckltbXMoaW50NjRfdCBhLCBp
bnQ2NF90IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRYb3IsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpLAorICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpKSk7CisK
KyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MpID09IChhIF4gYikpOworfQor
Cit2b2lkIHRlc3RCaXRYb3JBcmdJbW0oaW50NjRfdCBhLCBpbnQ2NF90IGIpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3Jp
Z2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9j
LCBCaXRYb3IsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpKSk7
CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEpID09IChhIF4gYikp
OworfQorCit2b2lkIHRlc3RCaXRYb3JJbW1BcmcoaW50NjRfdCBhLCBpbnQ2NF90IGIpCit7Cisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAg
ICBwcm9jLCBCaXRYb3IsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENv
bnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGIpID09IChh
IF4gYikpOworfQorCit2b2lkIHRlc3RCaXRYb3JCaXRYb3JBcmdJbW1JbW0oaW50NjRfdCBhLCBp
bnQ2NF90IGIsIGludDY0X3QgYykKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBpbm5lckJpdFhvciA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIEJpdFhvciwgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRYb3IsIE9yaWdpbigpLAorICAgICAg
ICAgICAgaW5uZXJCaXRYb3IsCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYykpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50
NjRfdD4ocHJvYywgYSkgPT0gKChhIF4gYikgXiBjKSk7Cit9CisKK3ZvaWQgdGVzdEJpdFhvcklt
bUJpdFhvckFyZ0ltbShpbnQ2NF90IGEsIGludDY0X3QgYiwgaW50NjRfdCBjKQoreworICAgIFBy
b2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgVmFsdWUqIGlubmVyQml0WG9yID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAg
cHJvYywgQml0WG9yLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAorICAgICAg
ICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYykpOworICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2Ms
IEJpdFhvciwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYSksCisgICAgICAgICAgICBpbm5lckJpdFhvcikpOworCisg
ICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBiKSA9PSAoYSBeIChiIF4gYykp
KTsKK30KKwordm9pZCB0ZXN0Qml0WG9yQXJnczMyKGludCBhLCBpbnQgYikKK3sKKyAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2Ms
IEJpdFhvciwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjEpKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEs
IGIpID09IChhIF4gYikpOworfQorCit2b2lkIHRlc3RCaXRYb3JTYW1lQXJnMzIoaW50IGEpCit7
CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkp
OworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
IHByb2MsIEJpdFhvciwgT3JpZ2luKCksCisgICAgICAgICAgICBhcmd1bWVudCwKKyAgICAgICAg
ICAgIGFyZ3VtZW50KSk7CisKKyAgICBDSEVDSyghY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEp
KTsKK30KKwordm9pZCB0ZXN0Qml0WG9ySW1tczMyKGludCBhLCBpbnQgYikKK3sKKyAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2Ms
IEJpdFhvciwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYikpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRS
dW48aW50Pihwcm9jKSA9PSAoYSBeIGIpKTsKK30KKwordm9pZCB0ZXN0Qml0WG9yQXJnSW1tMzIo
aW50IGEsIGludCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAor
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQml0WG9yLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9y
aWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYikpKTsKKworICAg
IENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhKSA9PSAoYSBeIGIpKTsKK30KKwordm9p
ZCB0ZXN0Qml0WG9ySW1tQXJnMzIoaW50IGEsIGludCBiKQoreworICAgIFByb2NlZHVyZSBwcm9j
OworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQml0WG9yLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBhKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAg
ICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSkpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBiKSA9
PSAoYSBeIGIpKTsKK30KKwordm9pZCB0ZXN0Qml0WG9yQml0WG9yQXJnSW1tSW1tMzIoaW50IGEs
IGludCBiLCBpbnQgYykKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBpbm5lckJpdFhvciA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIEJpdFhvciwgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2lu
KCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYikpOworICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJpdFhvciwgT3JpZ2lu
KCksCisgICAgICAgICAgICBpbm5lckJpdFhvciwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBjKSkpOworCisgICAgQ0hFQ0soY29tcGls
ZUFuZFJ1bjxpbnQ+KHByb2MsIGEpID09ICgoYSBeIGIpIF4gYykpOworfQorCit2b2lkIHRlc3RC
aXRYb3JJbW1CaXRYb3JBcmdJbW0zMihpbnQgYSwgaW50IGIsIGludCBjKQoreworICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAg
VmFsdWUqIGlubmVyQml0WG9yID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJv
YywgQml0WG9yLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBjKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgcHJvYywgQml0WG9yLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKSwKKyAgICAgICAgICAgIGlubmVy
Qml0WG9yKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYikgPT0gKGEg
XiAoYiBeIGMpKSk7Cit9CisKK3ZvaWQgdGVzdEJpdE5vdEFyZyhpbnQ2NF90IGEpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBw
cm9jLCBCaXRYb3IsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0
NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSkpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9j
LCBhKSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oKHN0YXRpY19jYXN0PHVpbnQ2NF90PihhKSBeIDB4
ZmZmZmZmZmZmZmZmZmZmZikpKSk7Cit9CisKK3ZvaWQgdGVzdEJpdE5vdEltbShpbnQ2NF90IGEp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2Ms
IFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAg
ICAgICAgICBwcm9jLCBCaXRYb3IsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xKSwKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKSkpOworCisgICAgQ0hF
Q0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhKSwgc3RhdGljX2Nh
c3Q8aW50NjRfdD4oKHN0YXRpY19jYXN0PHVpbnQ2NF90PihhKSBeIDB4ZmZmZmZmZmZmZmZmZmZm
ZikpKSk7Cit9CisKK3ZvaWQgdGVzdEJpdE5vdE1lbShpbnQ2NF90IGEpCit7CisgICAgUHJvY2Vk
dXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBW
YWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBNZW1vcnlWYWx1ZSogbG9hZCA9
IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50NjQsIE9yaWdpbigp
LCBhZGRyZXNzKTsKKyAgICBWYWx1ZSogbm90TG9hZCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgQml0WG9yLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xKSwKKyAgICAgICAgbG9hZCk7CisgICAgcm9vdC0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIG5vdExvYWQsIGFkZHJl
c3MpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwor
CisgICAgaW50NjRfdCBpbnB1dCA9IGE7CisgICAgY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9j
LCAmaW5wdXQpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGlucHV0LCBzdGF0aWNfY2FzdDxpbnQ2
NF90Pigoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGEpIF4gMHhmZmZmZmZmZmZmZmZmZmZmKSkpKTsK
K30KKwordm9pZCB0ZXN0Qml0Tm90QXJnMzIoaW50MzJfdCBhKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUq
IGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCks
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdFhvciwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTEpLAorICAgICAgICAgICAg
YXJndW1lbnQpKTsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+
KHByb2MsIGEpLCBzdGF0aWNfY2FzdDxpbnQzMl90Pigoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGEp
IF4gMHhmZmZmZmZmZikpKSk7Cit9CisKK3ZvaWQgdGVzdEJpdE5vdEltbTMyKGludDMyX3QgYSkK
K3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAg
ICAgICAgIHByb2MsIEJpdFhvciwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTEpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpKSk7CisKKyAgICBDSEVD
Syhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGEpLCBzdGF0aWNfY2Fz
dDxpbnQzMl90Pigoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGEpIF4gMHhmZmZmZmZmZikpKSk7Cit9
CisKK3ZvaWQgdGVzdEJpdE5vdE1lbTMyKGludDMyX3QgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJv
YzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBh
ZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIE1lbW9yeVZhbHVlKiBsb2FkID0gcm9vdC0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksIGFkZHJl
c3MpOworICAgIFZhbHVlKiBub3RMb2FkID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBC
aXRYb3IsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgLTEpLAorICAgICAgICBsb2FkKTsKKyAgICByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlLCBPcmlnaW4oKSwgbm90TG9hZCwgYWRkcmVzcyk7Cisg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJv
b3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICBp
bnQzMl90IGlucHV0ID0gYTsKKyAgICBjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsICZpbnB1
dCk7CisgICAgQ0hFQ0soaXNJZGVudGljYWwoaW5wdXQsIHN0YXRpY19jYXN0PGludDMyX3Q+KChz
dGF0aWNfY2FzdDx1aW50MzJfdD4oYSkgXiAweGZmZmZmZmZmKSkpKTsKK30KKwordm9pZCB0ZXN0
Tm90T25Cb29sZWFuQW5kQnJhbmNoMzIoaW50NjRfdCBhLCBpbnQ2NF90IGIpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2Nr
KiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICBWYWx1ZSog
YXJnc0FyZUVxdWFsID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBFcXVhbCwgT3JpZ2lu
KCksIGFyZzEsIGFyZzIpOworICAgIFZhbHVlKiBhcmdzQXJlTm90RXF1YWwgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdFhvciwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSwKKyAgICAgICAgYXJnc0FyZUVx
dWFsKTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywg
QnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgYXJnc0FyZU5vdEVxdWFsLAorICAgICAgICBGcmVx
dWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKKworICAg
IHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwg
T3JpZ2luKCksCisgICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgNDIpKTsKKworICAgIGVsc2VDYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUo
CisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIGVsc2VDYXNlLT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTQyKSk7CisKKyAgICBpbnQzMl90
IGV4cGVjdGVkVmFsdWUgPSAoYSAhPSBiKSA/IDQyIDogLTQyOworICAgIENIRUNLKGNvbXBpbGVB
bmRSdW48aW50MzJfdD4ocHJvYywgYSwgYikgPT0gZXhwZWN0ZWRWYWx1ZSk7Cit9CisKK3ZvaWQg
dGVzdEJpdE5vdE9uQm9vbGVhbkFuZEJyYW5jaDMyKGludDY0X3QgYSwgaW50NjRfdCBiKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgQmFzaWNCbG9jayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFz
aWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBWYWx1ZSogYXJnMSA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAg
VmFsdWUqIGFyZ3NBcmVFcXVhbCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRXF1YWws
IE9yaWdpbigpLCBhcmcxLCBhcmcyKTsKKyAgICBWYWx1ZSogYml0Tm90QXJnc0FyZUVxdWFsID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLAorICAgICAgICBy
b290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTEpLAorICAgICAg
ICBhcmdzQXJlRXF1YWwpOworCisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2Ms
IEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgIGJpdE5vdEFyZ3NBcmVFcXVhbCwgRnJlcXVlbnRl
ZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNlKSk7CisKKyAgICB0aGVu
Q2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAg
ICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDIp
KTsKKworICAgIGVsc2VDYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKKyAgICAgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAtNDIpKTsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBleHBlY3Rl
ZFZhbHVlID0gNDI7CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBhLCBi
KSA9PSBleHBlY3RlZFZhbHVlKTsKK30KKwordm9pZCB0ZXN0U2hsQXJncyhpbnQ2NF90IGEsIGlu
dDY0X3QgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgIHByb2MsIFNobCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMSkpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEsIGIp
ID09IChhIDw8IGIpKTsKK30KKwordm9pZCB0ZXN0U2hsSW1tcyhpbnQ2NF90IGEsIGludDY0X3Qg
YikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIFNobCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSksCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYikpKTsKKworICAgIGIgPSBi
ICYgMHgzZjsgLy8gdG8gYXZvaWQgdW5kZWZpbmVkIGJlaGF2aW91ciBiZWxvdworICAgIENIRUNL
KGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYykgPT0gKGEgPDwgYikpOworfQorCit2b2lkIHRl
c3RTaGxBcmdJbW0oaW50NjRfdCBhLCBpbnQ2NF90IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdp
bigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpKSk7CisKKyAgICBiID0gYiAm
IDB4M2Y7IC8vIHRvIGF2b2lkIHVuZGVmaW5lZCBiZWhhdmlvdXIgYmVsb3cKKyAgICBDSEVDSyhj
b21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEpID09IChhIDw8IGIpKTsKK30KKwordm9pZCB0
ZXN0U2hsU1NockFyZ0ltbShpbnQ2NF90IGEsIGludDY0X3QgYikKK3sKKyAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVl
KiBhcmdBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVlKiBjb25zdEIgPSByb290LT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7CisgICAgVmFsdWUqIGlubmVy
U2hpZnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNTaHIsIE9yaWdpbigpLCBhcmdB
LCBjb25zdEIpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIFNobCwgT3JpZ2luKCksCisgICAgICAgICAgICBpbm5lclNoaWZ0LAor
ICAgICAgICAgICAgY29uc3RCKSk7CisKKyAgICBiID0gYiAmIDB4M2Y7IC8vIHRvIGF2b2lkIHVu
ZGVmaW5lZCBiZWhhdmlvdXIgYmVsb3cKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+
KHByb2MsIGEpID09ICgoYSA+PiBiKSA8PCBiKSk7Cit9CisKK3ZvaWQgdGVzdFNobEFyZzMyKGlu
dDMyX3QgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hs
LCBPcmlnaW4oKSwgdmFsdWUsIHZhbHVlKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGlu
dDMyX3Q+KHByb2MsIGEpID09IChhIDw8IGEpKTsKK30KKwordm9pZCB0ZXN0U2hsQXJnczMyKGlu
dDMyX3QgYSwgaW50MzJfdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgU2hsLCBPcmlnaW4oKSwKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMs
IE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKSk7CisKKyAgICBDSEVD
Syhjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGEsIGIpID09IChhIDw8IGIpKTsKK30KKwor
dm9pZCB0ZXN0U2hsSW1tczMyKGludDMyX3QgYSwgaW50MzJfdCBiKQoreworICAgIFByb2NlZHVy
ZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgU2hs
LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBhKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBiKSkpOworCisgICAgYiA9IGIgJiAweDFmOyAvLyB0byBhdm9p
ZCB1bmRlZmluZWQgYmVoYXZpb3VyIGJlbG93CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQz
Ml90Pihwcm9jKSA9PSAoYSA8PCBiKSk7Cit9CisKK3ZvaWQgdGVzdFNobEFyZ0ltbTMyKGludDMy
X3QgYSwgaW50MzJfdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgU2hsLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9y
aWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYikpKTsKKworICAg
IGIgPSBiICYgMHgxZjsgLy8gdG8gYXZvaWQgdW5kZWZpbmVkIGJlaGF2aW91ciBiZWxvdworICAg
IENIRUNLKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYSkgPT0gKGEgPDwgYikpOworfQor
Cit2b2lkIHRlc3RTaGxaU2hyQXJnSW1tMzIoaW50MzJfdCBhLCBpbnQzMl90IGIpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBWYWx1ZSogYXJnQSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSog
Y29uc3RCID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIp
OworICAgIFZhbHVlKiBpbm5lclNoaWZ0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBa
U2hyLCBPcmlnaW4oKSwgYXJnQSwgY29uc3RCKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdpbigpLAorICAgICAg
ICAgICAgaW5uZXJTaGlmdCwKKyAgICAgICAgICAgIGNvbnN0QikpOworCisgICAgYiA9IGIgJiAw
eDFmOyAvLyB0byBhdm9pZCB1bmRlZmluZWQgYmVoYXZpb3VyIGJlbG93CisgICAgQ0hFQ0soY29t
cGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBhKSA9PSBzdGF0aWNfY2FzdDxpbnQzMl90Pigoc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KGEpID4+IGIpIDw8IGIpKTsKK30KKwordm9pZCB0ZXN0U1NockFy
Z3MoaW50NjRfdCBhLCBpbnQ2NF90IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTU2hyLCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50
NjRfdD4ocHJvYywgYSwgYikgPT0gKGEgPj4gYikpOworfQorCit2b2lkIHRlc3RTU2hySW1tcyhp
bnQ2NF90IGEsIGludDY0X3QgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFNTaHIsIE9yaWdpbigpLAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpLAor
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IGIpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MpID09IChhID4+
IGIpKTsKK30KKwordm9pZCB0ZXN0U1NockFyZ0ltbShpbnQ2NF90IGEsIGludDY0X3QgYikKK3sK
KyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAg
ICAgIHByb2MsIFNTaHIsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAor
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IGIpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEpID09IChh
ID4+IGIpKTsKK30KKwordm9pZCB0ZXN0U1NockFyZzMyKGludDMyX3QgYSkKK3sKKyAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
IFZhbHVlKiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIFRy
dW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU1NociwgT3JpZ2luKCksIHZhbHVlLCB2
YWx1ZSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBhKSA9PSAo
YSA+PiAoYSAmIDMxKSkpOworfQorCit2b2lkIHRlc3RTU2hyQXJnczMyKGludDMyX3QgYSwgaW50
MzJfdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICAgICAgcHJvYywgU1NociwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwK
KyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisg
ICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFu
ZFJ1bjxpbnQzMl90Pihwcm9jLCBhLCBiKSA9PSAoYSA+PiBiKSk7Cit9CisKK3ZvaWQgdGVzdFNT
aHJJbW1zMzIoaW50MzJfdCBhLCBpbnQzMl90IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTU2hyLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBhKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBiKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9j
KSA9PSAoYSA+PiBiKSk7Cit9CisKK3ZvaWQgdGVzdFNTaHJBcmdJbW0zMihpbnQzMl90IGEsIGlu
dDMyX3QgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgIHByb2MsIFNTaHIsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCks
CisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSkpOworCisgICAgQ0hFQ0so
Y29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBhKSA9PSAoYSA+PiBiKSk7Cit9CisKK3ZvaWQg
dGVzdFpTaHJBcmdzKHVpbnQ2NF90IGEsIHVpbnQ2NF90IGIpCit7CisgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBaU2hyLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigp
LAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpKTsKKworICAgIENIRUNLKGNvbXBp
bGVBbmRSdW48dWludDY0X3Q+KHByb2MsIGEsIGIpID09IChhID4+IGIpKTsKK30KKwordm9pZCB0
ZXN0WlNockltbXModWludDY0X3QgYSwgdWludDY0X3QgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJv
YzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFpTaHIsIE9y
aWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIGEpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIGIpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPHVpbnQ2NF90
Pihwcm9jKSA9PSAoYSA+PiBiKSk7Cit9CisKK3ZvaWQgdGVzdFpTaHJBcmdJbW0odWludDY0X3Qg
YSwgdWludDY0X3QgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
KyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFpTaHIsIE9yaWdpbigpLAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIGIpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPHVpbnQ2
NF90Pihwcm9jLCBhKSA9PSAoYSA+PiBiKSk7Cit9CisKK3ZvaWQgdGVzdFpTaHJBcmczMih1aW50
MzJfdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBaU2hy
LCBPcmlnaW4oKSwgdmFsdWUsIHZhbHVlKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPHVp
bnQzMl90Pihwcm9jLCBhKSA9PSAoYSA+PiAoYSAmIDMxKSkpOworfQorCit2b2lkIHRlc3RaU2hy
QXJnczMyKHVpbnQzMl90IGEsIHVpbnQzMl90IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBaU2hyLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAg
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSks
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKSk7
CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPHVpbnQzMl90Pihwcm9jLCBhLCBiKSA9PSAoYSA+
PiBiKSk7Cit9CisKK3ZvaWQgdGVzdFpTaHJJbW1zMzIodWludDMyX3QgYSwgdWludDMyX3QgYikK
K3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAg
ICAgICAgIHByb2MsIFpTaHIsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpLAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpKSk7CisKKyAgICBDSEVDSyhj
b21waWxlQW5kUnVuPHVpbnQzMl90Pihwcm9jKSA9PSAoYSA+PiBiKSk7Cit9CisKK3ZvaWQgdGVz
dFpTaHJBcmdJbW0zMih1aW50MzJfdCBhLCB1aW50MzJfdCBiKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgWlNociwg
T3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCkpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIGIpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPHVpbnQzMl90Pihwcm9j
LCBhKSA9PSAoYSA+PiBiKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEludGVnZXJUeXBlPgor
c3RhdGljIHVuc2lnbmVkIGNvdW50TGVhZGluZ1plcm8oSW50ZWdlclR5cGUgdmFsdWUpCit7Cisg
ICAgdW5zaWduZWQgYml0Q291bnQgPSBzaXplb2YoSW50ZWdlclR5cGUpICogODsKKyAgICBpZiAo
IXZhbHVlKQorICAgICAgICByZXR1cm4gYml0Q291bnQ7CisKKyAgICB1bnNpZ25lZCBjb3VudGVy
ID0gMDsKKyAgICB3aGlsZSAoIShzdGF0aWNfY2FzdDx1aW50NjRfdD4odmFsdWUpICYgKDFsIDw8
IChiaXRDb3VudCAtIDEpKSkpIHsKKyAgICAgICAgdmFsdWUgPDw9IDE7CisgICAgICAgICsrY291
bnRlcjsKKyAgICB9CisgICAgcmV0dXJuIGNvdW50ZXI7Cit9CisKK3ZvaWQgdGVzdENsekFyZzY0
KGludDY0X3QgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKKyAgICBWYWx1ZSogY2x6VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIENs
eiwgT3JpZ2luKCksIGFyZ3VtZW50KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2x6VmFsdWUpOworICAgIENIRUNLKGNvbXBpbGVBbmRS
dW48dW5zaWduZWQ+KHByb2MsIGEpID09IGNvdW50TGVhZGluZ1plcm8oYSkpOworfQorCit2b2lk
IHRlc3RDbHpNZW02NChpbnQ2NF90IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYWRkcmVzcyA9IHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKKyAgICBNZW1vcnlWYWx1ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwgYWRkcmVzcyk7CisgICAg
VmFsdWUqIGNselZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBDbHosIE9yaWdp
bigpLCB2YWx1ZSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVy
biwgT3JpZ2luKCksIGNselZhbHVlKTsKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPHVuc2lnbmVk
Pihwcm9jLCAmYSkgPT0gY291bnRMZWFkaW5nWmVybyhhKSk7Cit9CisKK3ZvaWQgdGVzdENsekFy
ZzMyKGludDMyX3QgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpOworICAgIFZhbHVlKiBjbHpWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
Q2x6LCBPcmlnaW4oKSwgYXJndW1lbnQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBjbHpWYWx1ZSk7CisgICAgQ0hFQ0soY29tcGlsZUFu
ZFJ1bjx1bnNpZ25lZD4ocHJvYywgYSkgPT0gY291bnRMZWFkaW5nWmVybyhhKSk7Cit9CisKK3Zv
aWQgdGVzdENsek1lbTMyKGludDMyX3QgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhZGRyZXNzID0g
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOworICAgIE1lbW9yeVZhbHVlKiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBhZGRyZXNzKTsKKyAg
ICBWYWx1ZSogY2x6VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIENseiwgT3Jp
Z2luKCksIHZhbHVlKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwgY2x6VmFsdWUpOworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48dW5zaWdu
ZWQ+KHByb2MsICZhKSA9PSBjb3VudExlYWRpbmdaZXJvKGEpKTsKK30KKwordm9pZCB0ZXN0QWJz
QXJnKGRvdWJsZSBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAor
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWJzLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUklu
Zm86OmFyZ3VtZW50RlBSMCkpKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRS
dW48ZG91YmxlPihwcm9jLCBhKSwgZmFicyhhKSkpOworfQorCit2b2lkIHRlc3RBYnNJbW0oZG91
YmxlIGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8Q29u
c3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpOworICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBYnMsIE9yaWdpbigpLCBhcmd1bWVudCkpOworCisg
ICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MpLCBmYWJzKGEp
KSk7Cit9CisKK3ZvaWQgdGVzdEFic01lbShkb3VibGUgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJv
YzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBh
ZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIE1lbW9yeVZhbHVlKiBsb2FkRG91YmxlID0g
cm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBEb3VibGUsIE9yaWdpbigp
LCBhZGRyZXNzKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQWJzLCBPcmlnaW4oKSwgbG9hZERvdWJsZSkpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwo
Y29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsICZhKSwgZmFicyhhKSkpOworfQorCit2b2lkIHRl
c3RBYnNBYnNBcmcoZG91YmxlIGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogZmlyc3RBYnMgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFicywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1l
bnRGUFIwKSk7CisgICAgVmFsdWUqIHNlY29uZEFicyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgQWJzLCBPcmlnaW4oKSwgZmlyc3RBYnMpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBzZWNvbmRBYnMpOworCisgICAgQ0hFQ0so
aXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEpLCBmYWJzKGZhYnMoYSkp
KSk7Cit9CisKK3ZvaWQgdGVzdEFic05lZ0FyZyhkb3VibGUgYSkKK3sKKyAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVl
KiBuZWcgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE5lZywgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBS
SW5mbzo6YXJndW1lbnRGUFIwKSk7CisgICAgVmFsdWUqIGFicyA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgQWJzLCBPcmlnaW4oKSwgbmVnKTsKKyAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgYWJzKTsKKworICAgIENIRUNLKGlzSWRl
bnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBhKSwgZmFicygtIGEpKSk7Cit9CisK
K3ZvaWQgdGVzdEFic0JpdHdpc2VDYXN0QXJnKGRvdWJsZSBhKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUq
IGFyZ3VtZW50QXNJbnQ2NCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogYXJndW1lbnRB
c0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdp
bigpLCBhcmd1bWVudEFzSW50NjQpOworICAgIFZhbHVlKiBhYnNWYWx1ZSA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgQWJzLCBPcmlnaW4oKSwgYXJndW1lbnRBc0RvdWJsZSk7CisgICAg
cm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFic1Zh
bHVlKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9j
LCBiaXR3aXNlX2Nhc3Q8aW50NjRfdD4oYSkpLCBmYWJzKGEpKSk7Cit9CisKK3ZvaWQgdGVzdEJp
dHdpc2VDYXN0QWJzQml0d2lzZUNhc3RBcmcoZG91YmxlIGEpCit7CisgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSog
YXJndW1lbnRBc0ludDY0ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVlKiBhcmd1bWVudEFz
RG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2lu
KCksIGFyZ3VtZW50QXNJbnQ2NCk7CisgICAgVmFsdWUqIGFic1ZhbHVlID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBBYnMsIE9yaWdpbigpLCBhcmd1bWVudEFzRG91YmxlKTsKKyAgICBW
YWx1ZSogcmVzdWx0QXNJbnQ2NCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lz
ZUNhc3QsIE9yaWdpbigpLCBhYnNWYWx1ZSk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0QXNJbnQ2NCk7CisKKyAgICBpbnQ2
NF90IGV4cGVjdGVkUmVzdWx0ID0gYml0d2lzZV9jYXN0PGludDY0X3Q+KGZhYnMoYSkpOworICAg
IENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYml0d2lzZV9j
YXN0PGludDY0X3Q+KGEpKSwgZXhwZWN0ZWRSZXN1bHQpKTsKK30KKwordm9pZCB0ZXN0QWJzQXJn
KGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkp
OworICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0
d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDMyKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBYnMsIE9yaWdpbigpLCBhcmd1bWVudCk7CisgICAg
VmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2Fz
dCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHBy
b2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2Fs
KGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwg
Yml0d2lzZV9jYXN0PGludDMyX3Q+KHN0YXRpY19jYXN0PGZsb2F0PihmYWJzKGEpKSkpKTsKK30K
Kwordm9pZCB0ZXN0QWJzSW1tKGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQg
PSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7Cisg
ICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWJzLCBPcmln
aW4oKSwgYXJndW1lbnQpOworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOworICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisK
KyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdp
c2VfY2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihzdGF0aWNfY2FzdDxm
bG9hdD4oZmFicyhhKSkpKSk7Cit9CisKK3ZvaWQgdGVzdEFic01lbShmbG9hdCBhKQoreworICAg
IFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisgICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgTWVtb3J5VmFsdWUq
IGxvYWRGbG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgRmxv
YXQsIE9yaWdpbigpLCBhZGRyZXNzKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBBYnMsIE9yaWdpbigpLCBsb2FkRmxvYXQpOworICAgIFZhbHVlKiBy
ZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdp
bigpLCByZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxl
QW5kUnVuPGludDMyX3Q+KHByb2MsICZhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KHN0YXRpY19j
YXN0PGZsb2F0PihmYWJzKGEpKSkpKTsKK30KKwordm9pZCB0ZXN0QWJzQWJzQXJnKGZsb2F0IGEp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZh
bHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3Qs
IE9yaWdpbigpLCBhcmd1bWVudDMyKTsKKyAgICBWYWx1ZSogZmlyc3RBYnMgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEFicywgT3JpZ2luKCksIGFyZ3VtZW50KTsKKyAgICBWYWx1ZSog
c2Vjb25kQWJzID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBYnMsIE9yaWdpbigpLCBm
aXJzdEFicyk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwg
T3JpZ2luKCksIHNlY29uZEFicyk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5k
UnVuPGZsb2F0Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBzdGF0aWNfY2FzdDxm
bG9hdD4oZmFicyhmYWJzKGEpKSkpKTsKK30KKwordm9pZCB0ZXN0QWJzTmVnQXJnKGZsb2F0IGEp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZh
bHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3Qs
IE9yaWdpbigpLCBhcmd1bWVudDMyKTsKKyAgICBWYWx1ZSogbmVnID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBOZWcsIE9yaWdpbigpLCBhcmd1bWVudCk7CisgICAgVmFsdWUqIGFicyA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWJzLCBPcmlnaW4oKSwgbmVnKTsKKyAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgYWJzKTsK
KworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZmxvYXQ+KHByb2MsIGJpdHdp
c2VfY2FzdDxpbnQzMl90PihhKSksIHN0YXRpY19jYXN0PGZsb2F0PihmYWJzKC0gYSkpKSk7Cit9
CisKK3ZvaWQgdGVzdEFic0JpdHdpc2VDYXN0QXJnKGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1
ZSogYXJndW1lbnRBc0ludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50
QXNmbG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdp
bigpLCBhcmd1bWVudEFzSW50MzIpOworICAgIFZhbHVlKiBhYnNWYWx1ZSA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgQWJzLCBPcmlnaW4oKSwgYXJndW1lbnRBc2Zsb2F0KTsKKyAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgYWJzVmFs
dWUpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxmbG9hdD4ocHJvYywg
Yml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGZhYnMoYSkpKSk7
Cit9CisKK3ZvaWQgdGVzdEJpdHdpc2VDYXN0QWJzQml0d2lzZUNhc3RBcmcoZmxvYXQgYSkKK3sK
KyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworICAgIFZhbHVlKiBhcmd1bWVudEFzSW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBW
YWx1ZSogYXJndW1lbnRBc2Zsb2F0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3
aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50QXNJbnQzMik7CisgICAgVmFsdWUqIGFic1ZhbHVl
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBYnMsIE9yaWdpbigpLCBhcmd1bWVudEFz
ZmxvYXQpOworICAgIFZhbHVlKiByZXN1bHRBc0ludDY0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFic1ZhbHVlKTsKKworICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHRBc0ludDY0
KTsKKworICAgIGludDMyX3QgZXhwZWN0ZWRSZXN1bHQgPSBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4o
c3RhdGljX2Nhc3Q8ZmxvYXQ+KGZhYnMoYSkpKTsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21w
aWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGV4cGVj
dGVkUmVzdWx0KSk7Cit9CisKK3ZvaWQgdGVzdEFic0FyZ1dpdGhVc2VsZXNzRG91YmxlQ29udmVy
c2lvbihmbG9hdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MzIgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDMyKTsKKyAgICBWYWx1ZSogYXNEb3Vi
bGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigp
LCBmbG9hdFZhbHVlKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBBYnMsIE9yaWdpbigpLCBhc0RvdWJsZSk7CisgICAgVmFsdWUqIGZsb2F0UmVzdWx0
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwg
cmVzdWx0KTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1bHQpOworICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAg
ICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2Vf
Y2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihzdGF0aWNfY2FzdDxmbG9h
dD4oZmFicyhhKSkpKSk7Cit9CisKK3ZvaWQgdGVzdEFic0FyZ1dpdGhFZmZlY3RmdWxEb3VibGVD
b252ZXJzaW9uKGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOworICAgIFZhbHVlKiBh
c0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3Jp
Z2luKCksIGZsb2F0VmFsdWUpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEFicywgT3JpZ2luKCksIGFzRG91YmxlKTsKKyAgICBWYWx1ZSogZmxvYXRS
ZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdp
bigpLCByZXN1bHQpOworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBmbG9hdFJlc3VsdCk7CisgICAgVmFsdWUq
IGRvdWJsZUFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1l
bW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHJlc3VsdCwgZG91YmxlQWRkcmVzcyk7
CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCks
IHJlc3VsdDMyKTsKKworICAgIGRvdWJsZSBlZmZlY3QgPSAwOworICAgIGludDMyX3QgcmVzdWx0
VmFsdWUgPSBjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90
PihhKSwgJmVmZmVjdCk7CisgICAgQ0hFQ0soaXNJZGVudGljYWwocmVzdWx0VmFsdWUsIGJpdHdp
c2VfY2FzdDxpbnQzMl90PihzdGF0aWNfY2FzdDxmbG9hdD4oZmFicyhhKSkpKSk7CisgICAgQ0hF
Q0soaXNJZGVudGljYWwoZWZmZWN0LCBzdGF0aWNfY2FzdDxkb3VibGU+KGZhYnMoYSkpKSk7Cit9
CisKK3ZvaWQgdGVzdENlaWxBcmcoZG91YmxlIGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBDZWlsLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCkpKTsKKworICAgIENIRUNLKGlzSWRl
bnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBhKSwgY2VpbChhKSkpOworfQorCit2
b2lkIHRlc3RDZWlsSW1tKGRvdWJsZSBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0g
cm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKKyAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3Jp
Z2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQ2VpbCwgT3JpZ2lu
KCksIGFyZ3VtZW50KSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRv
dWJsZT4ocHJvYyksIGNlaWwoYSkpKTsKK30KKwordm9pZCB0ZXN0Q2VpbE1lbShkb3VibGUgYSkK
K3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIE1lbW9y
eVZhbHVlKiBsb2FkRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBM
b2FkLCBEb3VibGUsIE9yaWdpbigpLCBhZGRyZXNzKTsKKyAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQ2VpbCwgT3JpZ2luKCksIGxvYWREb3VibGUpKTsKKwor
ICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCAmYSksIGNl
aWwoYSkpKTsKK30KKwordm9pZCB0ZXN0Q2VpbENlaWxBcmcoZG91YmxlIGEpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBWYWx1ZSogZmlyc3RDZWlsID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBDZWlsLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApKTsKKyAgICBWYWx1ZSogc2Vjb25kQ2Vp
bCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQ2VpbCwgT3JpZ2luKCksIGZpcnN0Q2Vp
bCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2lu
KCksIHNlY29uZENlaWwpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxk
b3VibGU+KHByb2MsIGEpLCBjZWlsKGEpKSk7Cit9CisKK3ZvaWQgdGVzdEZsb29yQ2VpbEFyZyhk
b3VibGUgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBmaXJzdENlaWwgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIENlaWwsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCkpOwor
ICAgIFZhbHVlKiB3cmFwcGluZ0Zsb29yID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBG
bG9vciwgT3JpZ2luKCksIGZpcnN0Q2VpbCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHdyYXBwaW5nRmxvb3IpOworCisgICAgQ0hFQ0so
aXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEpLCBjZWlsKGEpKSk7Cit9
CisKK3ZvaWQgdGVzdENlaWxJVG9ENjQoaW50NjRfdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9j
OworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFy
Z3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVlKiBhcmd1bWVudEFzRG91YmxlID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJVG9ELCBPcmlnaW4oKSwgYXJndW1lbnQpOwor
CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIENlaWwsIE9y
aWdpbigpLCBhcmd1bWVudEFzRG91YmxlKSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21w
aWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgYSksIGNlaWwoc3RhdGljX2Nhc3Q8ZG91YmxlPihhKSkp
KTsKK30KKwordm9pZCB0ZXN0Q2VpbElUb0QzMihpbnQ2NF90IGEpCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1
ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4o
KSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogYXJndW1lbnRBc0RvdWJs
ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSVRvRCwgT3JpZ2luKCksIGFyZ3VtZW50
KTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBDZWls
LCBPcmlnaW4oKSwgYXJndW1lbnRBc0RvdWJsZSkpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwo
Y29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEpLCBjZWlsKHN0YXRpY19jYXN0PGRvdWJsZT4o
YSkpKSk7Cit9CisKK3ZvaWQgdGVzdENlaWxBcmcoZmxvYXQgYSkKK3sKKyAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVl
KiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2lu
KCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50
MzIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIENl
aWwsIE9yaWdpbigpLCBhcmd1bWVudCk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAg
cm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3Vs
dDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJv
YywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGNlaWxm
KGEpKSkpOworfQorCit2b2lkIHRlc3RDZWlsSW1tKGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1
ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmln
aW4oKSwgYSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQ2VpbCwgT3JpZ2luKCksIGFyZ3VtZW50KTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgcmVzdWx0KTsK
KyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwg
cmVzdWx0MzIpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90
Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4o
Y2VpbGYoYSkpKSk7Cit9CisKK3ZvaWQgdGVzdENlaWxNZW0oZmxvYXQgYSkKK3sKKyAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
IFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIE1lbW9yeVZhbHVlKiBsb2Fk
RmxvYXQgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEZsb2F0LCBP
cmlnaW4oKSwgYWRkcmVzcyk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgQ2VpbCwgT3JpZ2luKCksIGxvYWRGbG9hdCk7CisgICAgVmFsdWUqIHJlc3Vs
dDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCks
IHJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwg
T3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRS
dW48aW50MzJfdD4ocHJvYywgJmEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oY2VpbGYoYSkpKSk7
Cit9CisKK3ZvaWQgdGVzdENlaWxDZWlsQXJnKGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSog
YXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigp
LAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDMy
KTsKKyAgICBWYWx1ZSogZmlyc3RDZWlsID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBD
ZWlsLCBPcmlnaW4oKSwgYXJndW1lbnQpOworICAgIFZhbHVlKiBzZWNvbmRDZWlsID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBDZWlsLCBPcmlnaW4oKSwgZmlyc3RDZWlsKTsKKyAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgc2Vjb25k
Q2VpbCk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9j
LCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBjZWlsZihhKSkpOworfQorCit2b2lkIHRlc3RG
bG9vckNlaWxBcmcoZmxvYXQgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOworICAgIFZhbHVlKiBm
aXJzdENlaWwgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIENlaWwsIE9yaWdpbigpLCBh
cmd1bWVudCk7CisgICAgVmFsdWUqIHdyYXBwaW5nRmxvb3IgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEZsb29yLCBPcmlnaW4oKSwgZmlyc3RDZWlsKTsKKyAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgd3JhcHBpbmdGbG9vcik7CisK
KyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jLCBiaXR3aXNl
X2Nhc3Q8aW50MzJfdD4oYSkpLCBjZWlsZihhKSkpOworfQorCit2b2lkIHRlc3RDZWlsQXJnV2l0
aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uKGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJn
dW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIp
OworICAgIFZhbHVlKiBhc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxv
YXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUpOworICAgIFZhbHVlKiByZXN1bHQgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIENlaWwsIE9yaWdpbigpLCBhc0RvdWJsZSk7Cisg
ICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3Vi
bGVUb0Zsb2F0LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1
bHQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGlu
dDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2VfY2FzdDxpbnQz
Ml90PihjZWlsZihhKSkpKTsKK30KKwordm9pZCB0ZXN0Q2VpbEFyZ1dpdGhFZmZlY3RmdWxEb3Vi
bGVDb252ZXJzaW9uKGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOworICAgIFZhbHVl
KiBhc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwg
T3JpZ2luKCksIGZsb2F0VmFsdWUpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIENlaWwsIE9yaWdpbigpLCBhc0RvdWJsZSk7CisgICAgVmFsdWUqIGZs
b2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBP
cmlnaW4oKSwgcmVzdWx0KTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1bHQpOworICAgIFZh
bHVlKiBkb3VibGVBZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgIHJvb3QtPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmUsIE9yaWdpbigpLCByZXN1bHQsIGRvdWJsZUFkZHJl
c3MpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCByZXN1bHQzMik7CisKKyAgICBkb3VibGUgZWZmZWN0ID0gMDsKKyAgICBpbnQzMl90IHJl
c3VsdFZhbHVlID0gY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50
MzJfdD4oYSksICZlZmZlY3QpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKHJlc3VsdFZhbHVlLCBi
aXR3aXNlX2Nhc3Q8aW50MzJfdD4oY2VpbGYoYSkpKSk7CisgICAgQ0hFQ0soaXNJZGVudGljYWwo
ZWZmZWN0LCBzdGF0aWNfY2FzdDxkb3VibGU+KGNlaWxmKGEpKSkpOworfQorCit2b2lkIHRlc3RG
bG9vckFyZyhkb3VibGUgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEZsb29yLCBPcmlnaW4oKSwKKyAgICAgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEZQUkluZm86OmFyZ3VtZW50RlBSMCkpKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBp
bGVBbmRSdW48ZG91YmxlPihwcm9jLCBhKSwgZmxvb3IoYSkpKTsKK30KKwordm9pZCB0ZXN0Rmxv
b3JJbW0oZG91YmxlIGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBl
bmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpOworICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9vciwgT3JpZ2luKCksIGFyZ3Vt
ZW50KSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJv
YyksIGZsb29yKGEpKSk7Cit9CisKK3ZvaWQgdGVzdEZsb29yTWVtKGRvdWJsZSBhKQoreworICAg
IFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisgICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgTWVtb3J5VmFsdWUq
IGxvYWREb3VibGUgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIERv
dWJsZSwgT3JpZ2luKCksIGFkZHJlc3MpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBGbG9vciwgT3JpZ2luKCksIGxvYWREb3VibGUpKTsKKworICAgIENI
RUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCAmYSksIGZsb29yKGEp
KSk7Cit9CisKK3ZvaWQgdGVzdEZsb29yRmxvb3JBcmcoZG91YmxlIGEpCit7CisgICAgUHJvY2Vk
dXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBW
YWx1ZSogZmlyc3RGbG9vciA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvb3IsIE9y
aWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCkpOworICAgIFZhbHVlKiBzZWNvbmRGbG9v
ciA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvb3IsIE9yaWdpbigpLCBmaXJzdEZs
b29yKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmln
aW4oKSwgc2Vjb25kRmxvb3IpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1
bjxkb3VibGU+KHByb2MsIGEpLCBmbG9vcihhKSkpOworfQorCit2b2lkIHRlc3RDZWlsRmxvb3JB
cmcoZG91YmxlIGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogZmlyc3RGbG9vciA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgRmxvb3IsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBS
MCkpOworICAgIFZhbHVlKiB3cmFwcGluZ0NlaWwgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIENlaWwsIE9yaWdpbigpLCBmaXJzdEZsb29yKTsKKyAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgd3JhcHBpbmdDZWlsKTsKKworICAgIENI
RUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBhKSwgZmxvb3IoYSkp
KTsKK30KKwordm9pZCB0ZXN0Rmxvb3JJVG9ENjQoaW50NjRfdCBhKQoreworICAgIFByb2NlZHVy
ZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFs
dWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVlKiBhcmd1bWVudEFzRG91
YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJVG9ELCBPcmlnaW4oKSwgYXJndW1l
bnQpOworCisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZs
b29yLCBPcmlnaW4oKSwgYXJndW1lbnRBc0RvdWJsZSkpOworCisgICAgQ0hFQ0soaXNJZGVudGlj
YWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEpLCBmbG9vcihzdGF0aWNfY2FzdDxkb3Vi
bGU+KGEpKSkpOworfQorCit2b2lkIHRlc3RGbG9vcklUb0QzMihpbnQ2NF90IGEpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5j
LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogYXJndW1l
bnRBc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSVRvRCwgT3JpZ2luKCks
IGFyZ3VtZW50KTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBGbG9vciwgT3JpZ2luKCksIGFyZ3VtZW50QXNEb3VibGUpKTsKKworICAgIENIRUNLKGlz
SWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBhKSwgZmxvb3Ioc3RhdGljX2Nh
c3Q8ZG91YmxlPihhKSkpKTsKK30KKwordm9pZCB0ZXN0Rmxvb3JBcmcoZmxvYXQgYSkKK3sKKyAg
ICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBU
cnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFy
Z3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2lu
KCksIGFyZ3VtZW50MzIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEZsb29yLCBPcmlnaW4oKSwgYXJndW1lbnQpOworICAgIFZhbHVlKiByZXN1bHQz
MiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBy
ZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVu
PGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2VfY2FzdDxp
bnQzMl90PihmbG9vcmYoYSkpKSk7Cit9CisKK3ZvaWQgdGVzdEZsb29ySW1tKGZsb2F0IGEpCit7
CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgRmxvb3IsIE9yaWdpbigpLCBhcmd1bWVudCk7CisgICAgVmFsdWUq
IHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3Jp
Z2luKCksIHJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJl
dHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBp
bGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgYml0d2lz
ZV9jYXN0PGludDMyX3Q+KGZsb29yZihhKSkpKTsKK30KKwordm9pZCB0ZXN0Rmxvb3JNZW0oZmxv
YXQgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAg
IE1lbW9yeVZhbHVlKiBsb2FkRmxvYXQgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHBy
b2MsIExvYWQsIEZsb2F0LCBPcmlnaW4oKSwgYWRkcmVzcyk7CisgICAgVmFsdWUqIHJlc3VsdCA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvb3IsIE9yaWdpbigpLCBsb2FkRmxvYXQp
OworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0
d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lk
ZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsICZhKSwgYml0d2lzZV9jYXN0PGlu
dDMyX3Q+KGZsb29yZihhKSkpKTsKK30KKwordm9pZCB0ZXN0Rmxvb3JGbG9vckFyZyhmbG9hdCBh
KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBW
YWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0
LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7CisgICAgVmFsdWUqIGZpcnN0Rmxvb3IgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb29yLCBPcmlnaW4oKSwgYXJndW1lbnQpOworICAgIFZh
bHVlKiBzZWNvbmRGbG9vciA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvb3IsIE9y
aWdpbigpLCBmaXJzdEZsb29yKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwgc2Vjb25kRmxvb3IpOworCisgICAgQ0hFQ0soaXNJZGVudGlj
YWwoY29tcGlsZUFuZFJ1bjxmbG9hdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwg
Zmxvb3JmKGEpKSk7Cit9CisKK3ZvaWQgdGVzdENlaWxGbG9vckFyZyhmbG9hdCBhKQoreworICAg
IFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisgICAgVmFsdWUqIGFyZ3VtZW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRy
dW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogYXJn
dW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4o
KSwgYXJndW1lbnQzMik7CisgICAgVmFsdWUqIGZpcnN0Rmxvb3IgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEZsb29yLCBPcmlnaW4oKSwgYXJndW1lbnQpOworICAgIFZhbHVlKiB3cmFw
cGluZ0NlaWwgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIENlaWwsIE9yaWdpbigpLCBm
aXJzdEZsb29yKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwgd3JhcHBpbmdDZWlsKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBp
bGVBbmRSdW48ZmxvYXQ+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGZsb29yZihh
KSkpOworfQorCit2b2lkIHRlc3RGbG9vckFyZ1dpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbihm
bG9hdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MzIgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsK
KyAgICBWYWx1ZSogZmxvYXRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0
d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDMyKTsKKyAgICBWYWx1ZSogYXNEb3VibGUgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9h
dFZhbHVlKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBGbG9vciwgT3JpZ2luKCksIGFzRG91YmxlKTsKKyAgICBWYWx1ZSogZmxvYXRSZXN1bHQgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCByZXN1
bHQpOworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
Qml0d2lzZUNhc3QsIE9yaWdpbigpLCBmbG9hdFJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIENI
RUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0
PGludDMyX3Q+KGEpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGZsb29yZihhKSkpKTsKK30KKwor
dm9pZCB0ZXN0Rmxvb3JBcmdXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lvbihmbG9hdCBhKQor
eworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1
ZSogZmxvYXRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3Qs
IE9yaWdpbigpLCBhcmd1bWVudDMyKTsKKyAgICBWYWx1ZSogYXNEb3VibGUgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlKTsK
KyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9vciwg
T3JpZ2luKCksIGFzRG91YmxlKTsKKyAgICBWYWx1ZSogZmxvYXRSZXN1bHQgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCByZXN1bHQpOworICAg
IFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNh
c3QsIE9yaWdpbigpLCBmbG9hdFJlc3VsdCk7CisgICAgVmFsdWUqIGRvdWJsZUFkZHJlc3MgPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMSk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBT
dG9yZSwgT3JpZ2luKCksIHJlc3VsdCwgZG91YmxlQWRkcmVzcyk7CisgICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAg
IGRvdWJsZSBlZmZlY3QgPSAwOworICAgIGludDMyX3QgcmVzdWx0VmFsdWUgPSBjb21waWxlQW5k
UnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgJmVmZmVjdCk7Cisg
ICAgQ0hFQ0soaXNJZGVudGljYWwocmVzdWx0VmFsdWUsIGJpdHdpc2VfY2FzdDxpbnQzMl90Pihm
bG9vcmYoYSkpKSk7CisgICAgQ0hFQ0soaXNJZGVudGljYWwoZWZmZWN0LCBzdGF0aWNfY2FzdDxk
b3VibGU+KGZsb29yZihhKSkpKTsKK30KKworZG91YmxlIGNvcnJlY3RTcXJ0KGRvdWJsZSB2YWx1
ZSkKK3sKKyNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQorICAgIGRvdWJsZSByZXN1bHQ7Cisg
ICAgYXNtICgic3FydHNkICUxLCAlMCIgOiAiPXgiKHJlc3VsdCkgOiAieCIodmFsdWUpKTsKKyAg
ICByZXR1cm4gcmVzdWx0OworI2Vsc2UgICAgCisgICAgcmV0dXJuIHNxcnQodmFsdWUpOworI2Vu
ZGlmCit9CisKK3ZvaWQgdGVzdFNxcnRBcmcoZG91YmxlIGEpCit7CisgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTcXJ0LCBP
cmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCkpKTsKKworICAgIENIRUNL
KGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBhKSwgY29ycmVjdFNxcnQo
YSkpKTsKK30KKwordm9pZCB0ZXN0U3FydEltbShkb3VibGUgYSkKK3sKKyAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVl
KiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmln
aW4oKSwgYSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFNxcnQsIE9yaWdpbigpLCBhcmd1bWVudCkpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29t
cGlsZUFuZFJ1bjxkb3VibGU+KHByb2MpLCBjb3JyZWN0U3FydChhKSkpOworfQorCit2b2lkIHRl
c3RTcXJ0TWVtKGRvdWJsZSBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7CisgICAgTWVtb3J5VmFsdWUqIGxvYWREb3VibGUgPSByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIERvdWJsZSwgT3JpZ2luKCksIGFkZHJlc3MpOworICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTcXJ0LCBPcmlnaW4o
KSwgbG9hZERvdWJsZSkpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxk
b3VibGU+KHByb2MsICZhKSwgY29ycmVjdFNxcnQoYSkpKTsKK30KKwordm9pZCB0ZXN0U3FydEFy
ZyhmbG9hdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MzIgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
KTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJp
dHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3FydCwgT3JpZ2luKCksIGFyZ3VtZW50KTsKKyAg
ICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VD
YXN0LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOworCisgICAgQ0hFQ0soaXNJZGVudGlj
YWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkp
LCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvcnJlY3RTcXJ0KGEp
KSkpKTsKK30KKwordm9pZCB0ZXN0U3FydEltbShmbG9hdCBhKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUq
IGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIGEpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFNxcnQsIE9yaWdpbigpLCBhcmd1bWVudCk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7Cisg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJl
c3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4o
cHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KHN0
YXRpY19jYXN0PGZsb2F0Pihjb3JyZWN0U3FydChhKSkpKSk7Cit9CisKK3ZvaWQgdGVzdFNxcnRN
ZW0oZmxvYXQgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OworICAgIE1lbW9yeVZhbHVlKiBsb2FkRmxvYXQgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFs
dWU+KHByb2MsIExvYWQsIEZsb2F0LCBPcmlnaW4oKSwgYWRkcmVzcyk7CisgICAgVmFsdWUqIHJl
c3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3FydCwgT3JpZ2luKCksIGxvYWRG
bG9hdCk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNL
KGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgJmEpLCBiaXR3aXNlX2Nh
c3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvcnJlY3RTcXJ0KGEpKSkpKTsKK30KKwor
dm9pZCB0ZXN0U3FydEFyZ1dpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbihmbG9hdCBhKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSog
ZmxvYXRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9y
aWdpbigpLCBhcmd1bWVudDMyKTsKKyAgICBWYWx1ZSogYXNEb3VibGUgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlKTsKKyAg
ICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTcXJ0LCBPcmln
aW4oKSwgYXNEb3VibGUpOworICAgIFZhbHVlKiBmbG9hdFJlc3VsdCA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgVmFs
dWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwg
T3JpZ2luKCksIGZsb2F0UmVzdWx0KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOworCisgICAgQ0hFQ0soaXNJZGVudGlj
YWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkp
LCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvcnJlY3RTcXJ0KGEp
KSkpKTsKK30KKwordm9pZCB0ZXN0U3FydEFyZ1dpdGhFZmZlY3RmdWxEb3VibGVDb252ZXJzaW9u
KGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkp
OworICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBC
aXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOworICAgIFZhbHVlKiBhc0RvdWJsZSA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZs
b2F0VmFsdWUpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFNxcnQsIE9yaWdpbigpLCBhc0RvdWJsZSk7CisgICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgcmVz
dWx0KTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1bHQpOworICAgIFZhbHVlKiBkb3VibGVB
ZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1
ZT4ocHJvYywgU3RvcmUsIE9yaWdpbigpLCByZXN1bHQsIGRvdWJsZUFkZHJlc3MpOworICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQz
Mik7CisKKyAgICBkb3VibGUgZWZmZWN0ID0gMDsKKyAgICBpbnQzMl90IHJlc3VsdFZhbHVlID0g
Y29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSksICZl
ZmZlY3QpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKHJlc3VsdFZhbHVlLCBiaXR3aXNlX2Nhc3Q8
aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvcnJlY3RTcXJ0KGEpKSkpKTsKKyAgICBkb3Vi
bGUgZXhwZWN0ZWQgPSBzdGF0aWNfY2FzdDxkb3VibGU+KGNvcnJlY3RTcXJ0KGEpKTsKKyAgICBD
SEVDSyhpc0lkZW50aWNhbChlZmZlY3QsIGV4cGVjdGVkKSk7Cit9CisKK3ZvaWQgdGVzdENvbXBh
cmVUd29GbG9hdFRvRG91YmxlKGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVl
KiBhcmcxQXMzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigp
LAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmcxRmxvYXQgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJnMUFzMzIp
OworICAgIFZhbHVlKiBhcmcxQXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBhcmcxRmxvYXQpOworCisgICAgVmFsdWUqIGFyZzJB
czMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgVmFsdWUqIGFyZzJGbG9hdCA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmcyQXMzMik7CisgICAg
VmFsdWUqIGFyZzJBc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRU
b0RvdWJsZSwgT3JpZ2luKCksIGFyZzJGbG9hdCk7CisgICAgVmFsdWUqIGVxdWFsID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBFcXVhbCwgT3JpZ2luKCksIGFyZzFBc0RvdWJsZSwgYXJn
MkFzRG91YmxlKTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCBlcXVhbCk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+
KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIp
KSA9PSAoYSA9PSBiKSk7Cit9CisKK3ZvaWQgdGVzdENvbXBhcmVPbmVGbG9hdFRvRG91YmxlKGZs
b2F0IGEsIGRvdWJsZSBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBWYWx1ZSogYXJnMUFzMzIgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApKTsKKyAgICBWYWx1ZSogYXJnMUZsb2F0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZzFBczMyKTsKKyAgICBWYWx1ZSogYXJnMUFz
RG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmln
aW4oKSwgYXJnMUZsb2F0KTsKKworICAgIFZhbHVlKiBhcmcyQXNEb3VibGUgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50
RlBSMCk7CisgICAgVmFsdWUqIGVxdWFsID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBF
cXVhbCwgT3JpZ2luKCksIGFyZzFBc0RvdWJsZSwgYXJnMkFzRG91YmxlKTsKKworICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBlcXVhbCk7CisK
KyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQz
Ml90PihhKSwgYikgPT0gKGEgPT0gYikpOworfQorCit2b2lkIHRlc3RDb21wYXJlRmxvYXRUb0Rv
dWJsZVRocm91Z2hQaGkoZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sq
IHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0g
cHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIHRhaWwgPSBwcm9jLmFkZEJsb2NrKCk7
CisKKyAgICBWYWx1ZSogY29uZGl0aW9uID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworCisgICAgVmFsdWUq
IGFyZzFBczMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCks
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgVmFsdWUqIGFyZzFGbG9hdCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmcxQXMzMik7
CisgICAgVmFsdWUqIGFyZzFBc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
RmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGFyZzFGbG9hdCk7CisKKyAgICBWYWx1ZSogYXJnMkFz
RG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgIFZhbHVlKiBhcmcyQXNGbG9hdCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIGFyZzJBc0Rv
dWJsZSk7CisgICAgVmFsdWUqIGFyZzJBc0ZSb3VuZGVkRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgYXJnMkFzRmxvYXQpOworCisg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBCcmFuY2gsIE9y
aWdpbigpLAorICAgICAgICBjb25kaXRpb24sCisgICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVu
Q2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOworCisgICAgVXBzaWxvblZhbHVlKiB0
aGVuVmFsdWUgPSB0aGVuQ2FzZS0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIGFyZzFBc0RvdWJsZSk7CisgICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShw
cm9jLCBKdW1wLCBPcmlnaW4oKSwgRnJlcXVlbnRlZEJsb2NrKHRhaWwpKTsKKworICAgIFZhbHVl
KiBlbHNlQ29uc3QgPSBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAwLik7CisgICAgVXBzaWxvblZhbHVlKiBlbHNlVmFsdWUgPSBlbHNlQ2FzZS0+
YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4ocHJvYywgT3JpZ2luKCksIGVsc2VDb25zdCk7CisgICAg
ZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4oKSwgRnJl
cXVlbnRlZEJsb2NrKHRhaWwpKTsKKworICAgIFZhbHVlKiBkb3VibGVJbnB1dCA9IHRhaWwtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgUGhpLCBEb3VibGUsIE9yaWdpbigpKTsKKyAgICB0aGVuVmFs
dWUtPnNldFBoaShkb3VibGVJbnB1dCk7CisgICAgZWxzZVZhbHVlLT5zZXRQaGkoZG91YmxlSW5w
dXQpOworICAgIFZhbHVlKiBlcXVhbCA9IHRhaWwtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRXF1
YWwsIE9yaWdpbigpLCBkb3VibGVJbnB1dCwgYXJnMkFzRlJvdW5kZWREb3VibGUpOworICAgIHRh
aWwtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBlcXVhbCk7
CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICBpbnQzMl90IGludGVn
ZXJBID0gYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpOworICAgIGRvdWJsZSBkb3VibGVCID0gYjsK
KyAgICBDSEVDSyhpbnZva2U8aW50NjRfdD4oKmNvZGUsIDEsIGludGVnZXJBLCBkb3VibGVCKSA9
PSAoYSA9PSBiKSk7CisgICAgQ0hFQ0soaW52b2tlPGludDY0X3Q+KCpjb2RlLCAwLCBpbnRlZ2Vy
QSwgZG91YmxlQikgPT0gKGIgPT0gMCkpOworfQorCit2b2lkIHRlc3REb3VibGVUb0Zsb2F0VGhy
b3VnaFBoaShmbG9hdCB2YWx1ZSkKK3sKKyAgICAvLyBTaW1wbGUgY2FzZSBvZjoKKyAgICAvLyAg
ICAgaWYgKGEpIHsKKyAgICAvLyAgICAgICAgIHggPSBEb3VibGVBZGQoYSwgYikKKyAgICAvLyAg
ICAgZWxzZQorICAgIC8vICAgICAgICAgeCA9IERvdWJsZUFkZChhLCBjKQorICAgIC8vICAgICBE
b3VibGVUb0Zsb2F0KHgpCisgICAgLy8KKyAgICAvLyBCb3RoIEFkZHMgY2FuIGJlIGNvbnZlcnRl
ZCB0byBmbG9hdCBhZGQuCisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBCYXNpY0Jsb2NrKiB0YWlsID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgVmFsdWUqIGNvbmRp
dGlvbiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMSkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOworICAgIFZhbHVlKiBhcmdB
c0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3Jp
Z2luKCksIGZsb2F0VmFsdWUpOworCisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAor
ICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICBjb25kaXRpb24sCisgICAg
ICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkp
OworCisgICAgVmFsdWUqIHBvc3RpdGl2ZUNvbnN0ID0gdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25z
dERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDIuNWYpOworICAgIFZhbHVlKiB0aGVuQWRk
ID0gdGhlbkNhc2UtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgYXJnQXNE
b3VibGUsIHBvc3RpdGl2ZUNvbnN0KTsKKyAgICBVcHNpbG9uVmFsdWUqIHRoZW5WYWx1ZSA9IHRo
ZW5DYXNlLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGhlbkFkZCk7
CisgICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4o
KSwgRnJlcXVlbnRlZEJsb2NrKHRhaWwpKTsKKworICAgIFZhbHVlKiBlbHNlQ29uc3QgPSBlbHNl
Q2FzZS0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBNX1BJKTsK
KyAgICBVcHNpbG9uVmFsdWUqIGVsc2VWYWx1ZSA9IGVsc2VDYXNlLT5hcHBlbmROZXc8VXBzaWxv
blZhbHVlPihwcm9jLCBPcmlnaW4oKSwgZWxzZUNvbnN0KTsKKyAgICBlbHNlQ2FzZS0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKHByb2MsIEp1bXAsIE9yaWdpbigpLCBGcmVxdWVudGVkQmxvY2sodGFp
bCkpOworCisgICAgVmFsdWUqIGRvdWJsZUlucHV0ID0gdGFpbC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBQaGksIERvdWJsZSwgT3JpZ2luKCkpOworICAgIHRoZW5WYWx1ZS0+c2V0UGhpKGRvdWJs
ZUlucHV0KTsKKyAgICBlbHNlVmFsdWUtPnNldFBoaShkb3VibGVJbnB1dCk7CisgICAgVmFsdWUq
IGZsb2F0UmVzdWx0ID0gdGFpbC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0
LCBPcmlnaW4oKSwgZG91YmxlSW5wdXQpOworICAgIHRhaWwtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBmbG9hdFJlc3VsdCk7CisKKyAgICBhdXRvIGNvZGUg
PSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChpbnZva2U8ZmxvYXQ+
KCpjb2RlLCAxLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4odmFsdWUpKSwgdmFsdWUgKyA0Mi41Zikp
OworICAgIENIRUNLKGlzSWRlbnRpY2FsKGludm9rZTxmbG9hdD4oKmNvZGUsIDAsIGJpdHdpc2Vf
Y2FzdDxpbnQzMl90Pih2YWx1ZSkpLCBzdGF0aWNfY2FzdDxmbG9hdD4oTV9QSSkpKTsKK30KKwor
dm9pZCB0ZXN0UmVkdWNlRmxvYXRUb0RvdWJsZVZhbGlkYXRlcygpCit7CisgICAgLy8gU2ltcGxl
IGNhc2Ugb2Y6CisgICAgLy8gICAgIGYgPSBEb3VibGVUb0Zsb2F0KEJpdGNhc3QoYXJnR1BSMCkp
CisgICAgLy8gICAgIGlmIChhKSB7CisgICAgLy8gICAgICAgICB4ID0gRmxvYXRDb25zdCgpCisg
ICAgLy8gICAgIGVsc2UKKyAgICAvLyAgICAgICAgIHggPSBGbG9hdENvbnN0KCkKKyAgICAvLyAg
ICAgcCA9IFBoaSh4KQorICAgIC8vICAgICBhID0gTXVsKHAsIHApCisgICAgLy8gICAgIGIgPSBB
ZGQoYSwgZikKKyAgICAvLyAgICAgYyA9IEFkZChwLCBiKQorICAgIC8vICAgICBSZXR1cm4oYykK
KyAgICAvLworICAgIC8vIFRoaXMgc2hvdWxkIG5vdCBjcmFzaCBpbiB0aGUgdmFsaWRhdG9yIGFm
dGVyIFJlZHVjZUZsb2F0VG9Eb3VibGUuCisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0YWlsID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgVmFs
dWUqIGNvbmRpdGlvbiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogdGhpbmd5ID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGNvbmRpdGlv
bik7CisgICAgdGhpbmd5ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zs
b2F0LCBPcmlnaW4oKSwgdGhpbmd5KTsgLy8gTWFrZSB0aGUgcGhhc2UgdGhpbmsgaXQgaGFzIHdv
cmsgdG8gZG8uCisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9j
LCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICBjb25kaXRpb24sCisgICAgICAgIEZyZXF1ZW50
ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOworCisgICAgVXBz
aWxvblZhbHVlKiB0aGVuVmFsdWUgPSB0aGVuQ2FzZS0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4o
cHJvYywgT3JpZ2luKCksCisgICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3RGbG9hdFZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgMTEuNSkpOworICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250
cm9sVmFsdWUocHJvYywgSnVtcCwgT3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayh0YWlsKSk7CisK
KyAgICBVcHNpbG9uVmFsdWUqIGVsc2VWYWx1ZSA9IGVsc2VDYXNlLT5hcHBlbmROZXc8VXBzaWxv
blZhbHVlPihwcm9jLCBPcmlnaW4oKSwgCisgICAgICAgIGVsc2VDYXNlLT5hcHBlbmROZXc8Q29u
c3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMTAuNSkpOworICAgIGVsc2VDYXNlLT5hcHBl
bmROZXdDb250cm9sVmFsdWUocHJvYywgSnVtcCwgT3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayh0
YWlsKSk7CisKKyAgICBWYWx1ZSogcGhpID0gIHRhaWwtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
UGhpLCBGbG9hdCwgT3JpZ2luKCkpOworICAgIHRoZW5WYWx1ZS0+c2V0UGhpKHBoaSk7CisgICAg
ZWxzZVZhbHVlLT5zZXRQaGkocGhpKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gdGFpbC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHBoaSwgcGhpKTsK
KyAgICByZXN1bHQgPSB0YWlsLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCks
IAorICAgICAgICAgICAgcmVzdWx0LAorICAgICAgICAgICAgdGhpbmd5KTsKKyAgICByZXN1bHQg
PSB0YWlsLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIAorICAgICAgICAg
ICAgcGhpLAorICAgICAgICAgICAgcmVzdWx0KTsKKyAgICB0YWlsLT5hcHBlbmROZXdDb250cm9s
VmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKworICAgIGF1dG8gY29kZSA9
IGNvbXBpbGVQcm9jKHByb2MpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGludm9rZTxmbG9hdD4o
KmNvZGUsIDEpLCAxMS41ZiAqIDExLjVmICsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGJpdHdpc2VfY2Fz
dDxkb3VibGU+KHN0YXRpY19jYXN0PHVpbnQ2NF90PigxKSkpICsgMTEuNWYpKTsKKyAgICBDSEVD
Syhpc0lkZW50aWNhbChpbnZva2U8ZmxvYXQ+KCpjb2RlLCAwKSwgMTAuNWYgKiAxMC41ZiArIHN0
YXRpY19jYXN0PGZsb2F0PihiaXR3aXNlX2Nhc3Q8ZG91YmxlPihzdGF0aWNfY2FzdDx1aW50NjRf
dD4oMCkpKSArIDEwLjVmKSk7Cit9CisKK3ZvaWQgdGVzdERvdWJsZVByb2R1Y2VyUGhpVG9GbG9h
dENvbnZlcnNpb24oZmxvYXQgdmFsdWUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2Fz
ZSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0YWlsID0gcHJvYy5hZGRCbG9jaygpOworCisgICAg
VmFsdWUqIGNvbmRpdGlvbiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogYXJndW1lbnQz
MiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOworCisg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBCcmFuY2gsIE9y
aWdpbigpLAorICAgICAgICBjb25kaXRpb24sCisgICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVu
Q2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOworCisgICAgVmFsdWUqIGFzRG91Ymxl
ID0gdGhlbkNhc2UtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2lu
KCksIGZsb2F0VmFsdWUpOworICAgIFVwc2lsb25WYWx1ZSogdGhlblZhbHVlID0gdGhlbkNhc2Ut
PmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhc0RvdWJsZSk7CisgICAg
dGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4oKSwgRnJl
cXVlbnRlZEJsb2NrKHRhaWwpKTsKKworICAgIFZhbHVlKiBjb25zdERvdWJsZSA9IGVsc2VDYXNl
LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyLjUpOworICAg
IFVwc2lsb25WYWx1ZSogZWxzZVZhbHVlID0gZWxzZUNhc2UtPmFwcGVuZE5ldzxVcHNpbG9uVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBjb25zdERvdWJsZSk7CisgICAgZWxzZUNhc2UtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4oKSwgRnJlcXVlbnRlZEJsb2NrKHRhaWwp
KTsKKworICAgIFZhbHVlKiBkb3VibGVJbnB1dCA9IHRhaWwtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgUGhpLCBEb3VibGUsIE9yaWdpbigpKTsKKyAgICB0aGVuVmFsdWUtPnNldFBoaShkb3VibGVJ
bnB1dCk7CisgICAgZWxzZVZhbHVlLT5zZXRQaGkoZG91YmxlSW5wdXQpOworCisgICAgVmFsdWUq
IGFyZ0FzRG91YmxlQWdhaW4gPSB0YWlsLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9E
b3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlKTsKKyAgICBWYWx1ZSogZmluYWxBZGQgPSB0YWls
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGRvdWJsZUlucHV0LCBhcmdB
c0RvdWJsZUFnYWluKTsKKyAgICBWYWx1ZSogZmxvYXRSZXN1bHQgPSB0YWlsLT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCBmaW5hbEFkZCk7CisgICAgdGFp
bC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGZsb2F0UmVz
dWx0KTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIENIRUNLKGlz
SWRlbnRpY2FsKGludm9rZTxmbG9hdD4oKmNvZGUsIDEsIGJpdHdpc2VfY2FzdDxpbnQzMl90Pih2
YWx1ZSkpLCB2YWx1ZSArIHZhbHVlKSk7CisgICAgQ0hFQ0soaXNJZGVudGljYWwoaW52b2tlPGZs
b2F0PigqY29kZSwgMCwgYml0d2lzZV9jYXN0PGludDMyX3Q+KHZhbHVlKSksIDQyLjVmICsgdmFs
dWUpKTsKK30KKwordm9pZCB0ZXN0RG91YmxlUHJvZHVjZXJQaGlUb0Zsb2F0Q29udmVyc2lvbldp
dGhEb3VibGVDb25zdW1lcihmbG9hdCB2YWx1ZSkKK3sKKyAgICAvLyBJbiB0aGlzIGNhc2UsIHRo
ZSBVcHNpbG9uLVBoaSBlZmZlY3RpdmVseSBjb250YWlucyBhIEZsb2F0IHZhbHVlLCBidXQgaXQg
aXMgdXNlZAorICAgIC8vIGFzIGEgRmxvYXQgYW5kIGFzIGEgRG91YmxlLgorICAgIFByb2NlZHVy
ZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFz
aWNCbG9jayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogZWxz
ZUNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogdGFpbCA9IHByb2MuYWRk
QmxvY2soKTsKKworICAgIFZhbHVlKiBjb25kaXRpb24gPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAg
VmFsdWUqIGFyZ3VtZW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1
ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBh
cmd1bWVudDMyKTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAg
cHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgY29uZGl0aW9uLAorICAgICAgICBGcmVx
dWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKKworICAg
IFZhbHVlKiBhc0RvdWJsZSA9IHRoZW5DYXNlLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0
VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlKTsKKyAgICBVcHNpbG9uVmFsdWUqIHRoZW5W
YWx1ZSA9IHRoZW5DYXNlLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
YXNEb3VibGUpOworICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgSnVt
cCwgT3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayh0YWlsKSk7CisKKyAgICBWYWx1ZSogY29uc3RE
b3VibGUgPSBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdp
bigpLCA0Mi41KTsKKyAgICBVcHNpbG9uVmFsdWUqIGVsc2VWYWx1ZSA9IGVsc2VDYXNlLT5hcHBl
bmROZXc8VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4oKSwgY29uc3REb3VibGUpOworICAgIGVs
c2VDYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgSnVtcCwgT3JpZ2luKCksIEZyZXF1
ZW50ZWRCbG9jayh0YWlsKSk7CisKKyAgICBWYWx1ZSogZG91YmxlSW5wdXQgPSB0YWlsLT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIFBoaSwgRG91YmxlLCBPcmlnaW4oKSk7CisgICAgdGhlblZhbHVl
LT5zZXRQaGkoZG91YmxlSW5wdXQpOworICAgIGVsc2VWYWx1ZS0+c2V0UGhpKGRvdWJsZUlucHV0
KTsKKworICAgIFZhbHVlKiBhcmdBc0RvdWJsZUFnYWluID0gdGFpbC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZSk7CisgICAgVmFsdWUq
IGZsb2F0QWRkID0gdGFpbC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBk
b3VibGVJbnB1dCwgYXJnQXNEb3VibGVBZ2Fpbik7CisKKyAgICAvLyBGUm91bmQuCisgICAgVmFs
dWUqIGZsb2F0UmVzdWx0ID0gdGFpbC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zs
b2F0LCBPcmlnaW4oKSwgZmxvYXRBZGQpOworICAgIFZhbHVlKiBkb3VibGVSZXN1bHQgPSB0YWls
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFJl
c3VsdCk7CisKKyAgICAvLyBUaGlzIG9uZSAqY2Fubm90KiBiZSBlbGltaW5hdGVkCisgICAgVmFs
dWUqIGRvdWJsZUFkZCA9IHRhaWwtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4o
KSwgZG91YmxlSW5wdXQsIGRvdWJsZVJlc3VsdCk7CisKKyAgICB0YWlsLT5hcHBlbmROZXdDb250
cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgZG91YmxlQWRkKTsKKworICAgIGF1dG8g
Y29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGludm9rZTxk
b3VibGU+KCpjb2RlLCAxLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4odmFsdWUpKSwgKHZhbHVlICsg
dmFsdWUpICsgc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSkpKTsKKyAgICBDSEVDSyhpc0lkZW50
aWNhbChpbnZva2U8ZG91YmxlPigqY29kZSwgMCwgYml0d2lzZV9jYXN0PGludDMyX3Q+KHZhbHVl
KSksIHN0YXRpY19jYXN0PGRvdWJsZT4oKDQyLjVmICsgdmFsdWUpICsgNDIuNWYpKSk7Cit9CisK
K3ZvaWQgdGVzdERvdWJsZVByb2R1Y2VyUGhpV2l0aE5vbkZsb2F0Q29uc3QoZmxvYXQgdmFsdWUs
IGRvdWJsZSBjb25zdFZhbHVlKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogdGhlbkNhc2UgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgQmFzaWNCbG9jayogdGFpbCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVl
KiBjb25kaXRpb24gPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MzIgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjEpKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDMyKTsKKworICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4o
KSwKKyAgICAgICAgY29uZGl0aW9uLAorICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2Up
LCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKKworICAgIFZhbHVlKiBhc0RvdWJsZSA9IHRo
ZW5DYXNlLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBm
bG9hdFZhbHVlKTsKKyAgICBVcHNpbG9uVmFsdWUqIHRoZW5WYWx1ZSA9IHRoZW5DYXNlLT5hcHBl
bmROZXc8VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYXNEb3VibGUpOworICAgIHRoZW5D
YXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgSnVtcCwgT3JpZ2luKCksIEZyZXF1ZW50
ZWRCbG9jayh0YWlsKSk7CisKKyAgICBWYWx1ZSogY29uc3REb3VibGUgPSBlbHNlQ2FzZS0+YXBw
ZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBjb25zdFZhbHVlKTsKKyAg
ICBVcHNpbG9uVmFsdWUqIGVsc2VWYWx1ZSA9IGVsc2VDYXNlLT5hcHBlbmROZXc8VXBzaWxvblZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgY29uc3REb3VibGUpOworICAgIGVsc2VDYXNlLT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUocHJvYywgSnVtcCwgT3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayh0YWls
KSk7CisKKyAgICBWYWx1ZSogZG91YmxlSW5wdXQgPSB0YWlsLT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFBoaSwgRG91YmxlLCBPcmlnaW4oKSk7CisgICAgdGhlblZhbHVlLT5zZXRQaGkoZG91Ymxl
SW5wdXQpOworICAgIGVsc2VWYWx1ZS0+c2V0UGhpKGRvdWJsZUlucHV0KTsKKworICAgIFZhbHVl
KiBhcmdBc0RvdWJsZUFnYWluID0gdGFpbC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRv
RG91YmxlLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZSk7CisgICAgVmFsdWUqIGZpbmFsQWRkID0gdGFp
bC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBkb3VibGVJbnB1dCwgYXJn
QXNEb3VibGVBZ2Fpbik7CisgICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gdGFpbC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgZmluYWxBZGQpOworICAgIHRh
aWwtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBmbG9hdFJl
c3VsdCk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICBDSEVDSyhp
c0lkZW50aWNhbChpbnZva2U8ZmxvYXQ+KCpjb2RlLCAxLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4o
dmFsdWUpKSwgdmFsdWUgKyB2YWx1ZSkpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGludm9rZTxm
bG9hdD4oKmNvZGUsIDAsIGJpdHdpc2VfY2FzdDxpbnQzMl90Pih2YWx1ZSkpLCBzdGF0aWNfY2Fz
dDxmbG9hdD4oY29uc3RWYWx1ZSArIHZhbHVlKSkpOworfQorCit2b2lkIHRlc3REb3VibGVBcmdU
b0ludDY0Qml0d2lzZUNhc3QoZG91YmxlIHZhbHVlKQoreworICAgIFByb2NlZHVyZSBwcm9jOwor
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3Vt
ZW50ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBG
UFJJbmZvOjphcmd1bWVudEZQUjApOworCisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1
bWVudCkpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihw
cm9jLCB2YWx1ZSksIGJpdHdpc2VfY2FzdDxpbnQ2NF90Pih2YWx1ZSkpKTsKK30KKwordm9pZCB0
ZXN0RG91YmxlSW1tVG9JbnQ2NEJpdHdpc2VDYXN0KGRvdWJsZSB2YWx1ZSkKK3sKKyAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
IFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgdmFsdWUpOworCisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAor
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVu
dCkpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9j
KSwgYml0d2lzZV9jYXN0PGludDY0X3Q+KHZhbHVlKSkpOworfQorCit2b2lkIHRlc3RUd29CaXR3
aXNlQ2FzdE9uRG91YmxlKGRvdWJsZSB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVu
dCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBS
SW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICBWYWx1ZSogZmlyc3QgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQpOworICAgIFZhbHVl
KiBzZWNvbmQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmln
aW4oKSwgZmlyc3QpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCBzZWNvbmQpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFu
ZFJ1bjxkb3VibGU+KHByb2MsIHZhbHVlKSwgdmFsdWUpKTsKK30KKwordm9pZCB0ZXN0Qml0d2lz
ZUNhc3RPbkRvdWJsZUluTWVtb3J5KGRvdWJsZSB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJv
YzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBh
ZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIE1lbW9yeVZhbHVlKiBsb2FkRG91YmxlID0g
cm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBEb3VibGUsIE9yaWdpbigp
LCBhZGRyZXNzKTsKKyAgICBWYWx1ZSogY2FzdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBsb2FkRG91YmxlKTsKKyAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2FzdCk7CisKKyAgICBDSEVD
Syhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsICZ2YWx1ZSksIGJpdHdp
c2VfY2FzdDxpbnQ2NF90Pih2YWx1ZSkpKTsKK30KKwordm9pZCB0ZXN0Qml0d2lzZUNhc3RPbkRv
dWJsZUluTWVtb3J5SW5kZXhlZChkb3VibGUgdmFsdWUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYmFz
ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogb2Zmc2V0ID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEp
OworICAgIFZhbHVlKiBzY2FsZWRPZmZzZXQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFNobCwgT3JpZ2luKCksCisgICAgICAgIG9mZnNldCwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDMpKTsKKyAgICBWYWx1ZSogYWRkcmVzcyA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgYmFzZSwgc2NhbGVk
T2Zmc2V0KTsKKyAgICBNZW1vcnlWYWx1ZSogbG9hZERvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxN
ZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgRG91YmxlLCBPcmlnaW4oKSwgYWRkcmVzcyk7CisgICAg
VmFsdWUqIGNhc3QgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBP
cmlnaW4oKSwgbG9hZERvdWJsZSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHBy
b2MsIFJldHVybiwgT3JpZ2luKCksIGNhc3QpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29t
cGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCAmdmFsdWUsIDApLCBiaXR3aXNlX2Nhc3Q8aW50NjRf
dD4odmFsdWUpKSk7Cit9CisKK3ZvaWQgdGVzdEludDY0QkFyZ1RvRG91YmxlQml0d2lzZUNhc3Qo
aW50NjRfdCB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAg
ICAgICAgIHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQpKTsKKworICAgIENI
RUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCB2YWx1ZSksIGJpdHdp
c2VfY2FzdDxkb3VibGU+KHZhbHVlKSkpOworfQorCit2b2lkIHRlc3RJbnQ2NEJJbW1Ub0RvdWJs
ZUJpdHdpc2VDYXN0KGludDY0X3QgdmFsdWUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQg
PSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdmFsdWUpOwor
CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAg
cHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudCkpOworCisgICAgQ0hFQ0soaXNJ
ZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MpLCBiaXR3aXNlX2Nhc3Q8ZG91Ymxl
Pih2YWx1ZSkpKTsKK30KKwordm9pZCB0ZXN0VHdvQml0d2lzZUNhc3RPbkludDY0KGludDY0X3Qg
dmFsdWUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Cisg
ICAgVmFsdWUqIGZpcnN0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2Fz
dCwgT3JpZ2luKCksIGFyZ3VtZW50KTsKKyAgICBWYWx1ZSogc2Vjb25kID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGZpcnN0KTsKKyAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgc2Vjb25kKTsK
KworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgdmFs
dWUpLCB2YWx1ZSkpOworfQorCit2b2lkIHRlc3RCaXR3aXNlQ2FzdE9uSW50NjRJbk1lbW9yeShp
bnQ2NF90IHZhbHVlKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7CisgICAgTWVtb3J5VmFsdWUqIGxvYWREb3VibGUgPSByb290LT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwgYWRkcmVzcyk7CisgICAgVmFsdWUq
IGNhc3QgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4o
KSwgbG9hZERvdWJsZSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJl
dHVybiwgT3JpZ2luKCksIGNhc3QpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFu
ZFJ1bjxkb3VibGU+KHByb2MsICZ2YWx1ZSksIGJpdHdpc2VfY2FzdDxkb3VibGU+KHZhbHVlKSkp
OworfQorCit2b2lkIHRlc3RCaXR3aXNlQ2FzdE9uSW50NjRJbk1lbW9yeUluZGV4ZWQoaW50NjRf
dCB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBiYXNlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAg
IFZhbHVlKiBvZmZzZXQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgVmFsdWUqIHNjYWxlZE9mZnNl
dCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hsLCBPcmlnaW4oKSwKKyAgICAgICAg
b2Zmc2V0LAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmln
aW4oKSwgMykpOworICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBBZGQsIE9yaWdpbigpLCBiYXNlLCBzY2FsZWRPZmZzZXQpOworICAgIE1lbW9yeVZhbHVl
KiBsb2FkRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJ
bnQ2NCwgT3JpZ2luKCksIGFkZHJlc3MpOworICAgIFZhbHVlKiBjYXN0ID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGxvYWREb3VibGUpOworICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBjYXN0
KTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCAm
dmFsdWUsIDApLCBiaXR3aXNlX2Nhc3Q8ZG91YmxlPih2YWx1ZSkpKTsKK30KKwordm9pZCB0ZXN0
RmxvYXRJbW1Ub0ludDMyQml0d2lzZUNhc3QoZmxvYXQgdmFsdWUpCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1
ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmln
aW4oKSwgdmFsdWUpOworCisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICAgICAgcHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudCkpOwor
CisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jKSwgYml0
d2lzZV9jYXN0PGludDMyX3Q+KHZhbHVlKSkpOworfQorCit2b2lkIHRlc3RCaXR3aXNlQ2FzdE9u
RmxvYXRJbk1lbW9yeShmbG9hdCB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhZGRyZXNzID0g
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOworICAgIE1lbW9yeVZhbHVlKiBsb2FkRmxvYXQgPSByb290LT5hcHBl
bmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEZsb2F0LCBPcmlnaW4oKSwgYWRkcmVzcyk7
CisgICAgVmFsdWUqIGNhc3QgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VD
YXN0LCBPcmlnaW4oKSwgbG9hZEZsb2F0KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2FzdCk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNh
bChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsICZ2YWx1ZSksIGJpdHdpc2VfY2FzdDxpbnQz
Ml90Pih2YWx1ZSkpKTsKK30KKwordm9pZCB0ZXN0SW50MzJCQXJnVG9GbG9hdEJpdHdpc2VDYXN0
KGludDMyX3QgdmFsdWUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2Ms
IFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAg
ICAgICAgICBwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50KSk7CisKKyAgICBD
SEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jLCB2YWx1ZSksIGJpdHdp
c2VfY2FzdDxmbG9hdD4odmFsdWUpKSk7Cit9CisKK3ZvaWQgdGVzdEludDMyQkltbVRvRmxvYXRC
aXR3aXNlQ2FzdChpbnQzMl90IHZhbHVlKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0g
cm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHZhbHVlKTsKKwor
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQpKTsKKworICAgIENIRUNLKGlzSWRl
bnRpY2FsKGNvbXBpbGVBbmRSdW48ZmxvYXQ+KHByb2MpLCBiaXR3aXNlX2Nhc3Q8ZmxvYXQ+KHZh
bHVlKSkpOworfQorCit2b2lkIHRlc3RUd29CaXR3aXNlQ2FzdE9uSW50MzIoaW50MzJfdCB2YWx1
ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBW
YWx1ZSogZmlyc3QgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBP
cmlnaW4oKSwgYXJndW1lbnQpOworICAgIFZhbHVlKiBzZWNvbmQgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmlyc3QpOworICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBzZWNvbmQpOworCisg
ICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCB2YWx1ZSks
IHZhbHVlKSk7Cit9CisKK3ZvaWQgdGVzdEJpdHdpc2VDYXN0T25JbnQzMkluTWVtb3J5KGludDMy
X3QgdmFsdWUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
KyAgICBNZW1vcnlWYWx1ZSogbG9hZEZsb2F0ID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVl
Pihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksIGFkZHJlc3MpOworICAgIFZhbHVlKiBjYXN0
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGxv
YWRGbG9hdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwg
T3JpZ2luKCksIGNhc3QpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxm
bG9hdD4ocHJvYywgJnZhbHVlKSwgYml0d2lzZV9jYXN0PGZsb2F0Pih2YWx1ZSkpKTsKK30KKwor
dm9pZCB0ZXN0Q29udmVydERvdWJsZVRvRmxvYXRBcmcoZG91YmxlIHZhbHVlKQoreworICAgIFBy
b2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgIFZhbHVlKiBhc0Zsb2F0
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwg
YXJndW1lbnQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCBhc0Zsb2F0KTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRS
dW48ZmxvYXQ+KHByb2MsIHZhbHVlKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSkpOworfQor
Cit2b2lkIHRlc3RDb252ZXJ0RG91YmxlVG9GbG9hdEltbShkb3VibGUgdmFsdWUpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIHZhbHVlKTsKKyAgICBWYWx1ZSogYXNGbG9hdCA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIGFyZ3VtZW50KTsKKyAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgYXNG
bG9hdCk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9j
KSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSkpOworfQorCit2b2lkIHRlc3RDb252ZXJ0RG91
YmxlVG9GbG9hdE1lbShkb3VibGUgdmFsdWUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYWRkcmVzcyA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKKyAgICBNZW1vcnlWYWx1ZSogbG9hZGVkRG91YmxlID0gcm9vdC0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBEb3VibGUsIE9yaWdpbigpLCBhZGRy
ZXNzKTsKKyAgICBWYWx1ZSogYXNGbG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
RG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIGxvYWRlZERvdWJsZSk7CisgICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFzRmxvYXQpOworCisgICAg
Q0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxmbG9hdD4ocHJvYywgJnZhbHVlKSwgc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSkpOworfQorCit2b2lkIHRlc3RDb252ZXJ0RmxvYXRUb0Rv
dWJsZUFyZyhmbG9hdCB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7CisgICAgVmFsdWUq
IGFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBP
cmlnaW4oKSwgZmxvYXRWYWx1ZSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHBy
b2MsIFJldHVybiwgT3JpZ2luKCksIGFzRG91YmxlKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2Fs
KGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4odmFsdWUp
KSwgc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSkpKTsKK30KKwordm9pZCB0ZXN0Q29udmVydEZs
b2F0VG9Eb3VibGVJbW0oZmxvYXQgdmFsdWUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQg
PSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdmFsdWUp
OworICAgIFZhbHVlKiBhc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxv
YXRUb0RvdWJsZSwgT3JpZ2luKCksIGFyZ3VtZW50KTsKKyAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgYXNEb3VibGUpOworCisgICAgQ0hFQ0so
aXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MpLCBzdGF0aWNfY2FzdDxkb3Vi
bGU+KHZhbHVlKSkpOworfQorCit2b2lkIHRlc3RDb252ZXJ0RmxvYXRUb0RvdWJsZU1lbShmbG9h
dCB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwor
ICAgIE1lbW9yeVZhbHVlKiBsb2FkZWRGbG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1
ZT4ocHJvYywgTG9hZCwgRmxvYXQsIE9yaWdpbigpLCBhZGRyZXNzKTsKKyAgICBWYWx1ZSogYXNE
b3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdp
bigpLCBsb2FkZWRGbG9hdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2Ms
IFJldHVybiwgT3JpZ2luKCksIGFzRG91YmxlKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNv
bXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCAmdmFsdWUpLCBzdGF0aWNfY2FzdDxkb3VibGU+KHZh
bHVlKSkpOworfQorCit2b2lkIHRlc3RDb252ZXJ0RG91YmxlVG9GbG9hdFRvRG91YmxlVG9GbG9h
dChkb3VibGUgdmFsdWUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50
RlBSMCk7CisgICAgVmFsdWUqIGFzRmxvYXQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCBhcmd1bWVudCk7CisgICAgVmFsdWUqIGFzRG91Ymxl
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwg
YXNGbG9hdCk7CisgICAgVmFsdWUqIGFzRmxvYXRBZ2FpbiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIGFzRG91YmxlKTsKKyAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgYXNGbG9hdEFnYWlu
KTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZmxvYXQ+KHByb2MsIHZh
bHVlKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSkpOworfQorCit2b2lkIHRlc3RMb2FkRmxv
YXRDb252ZXJ0RG91YmxlQ29udmVydEZsb2F0U3RvcmVGbG9hdChmbG9hdCB2YWx1ZSkKK3sKKyAg
ICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworICAgIFZhbHVlKiBzcmMgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgVmFsdWUqIGRzdCA9IHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIxKTsKKyAgICBNZW1vcnlWYWx1ZSogbG9hZGVkRmxvYXQgPSByb290LT5hcHBl
bmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEZsb2F0LCBPcmlnaW4oKSwgc3JjKTsKKyAg
ICBWYWx1ZSogYXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9E
b3VibGUsIE9yaWdpbigpLCBsb2FkZWRGbG9hdCk7CisgICAgVmFsdWUqIGFzRmxvYXRBZ2FpbiA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIGFz
RG91YmxlKTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlLCBP
cmlnaW4oKSwgYXNGbG9hdEFnYWluLCBkc3QpOworCisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICBmbG9hdCBpbnB1dCA9IHZhbHVlOworICAg
IGZsb2F0IG91dHB1dCA9IDAuOworICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludDY0X3Q+KHBy
b2MsICZpbnB1dCwgJm91dHB1dCkpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGlucHV0LCBvdXRw
dXQpKTsKK30KKwordm9pZCB0ZXN0RnJvdW5kQXJnKGRvdWJsZSB2YWx1ZSkKK3sKKyAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
IFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICBWYWx1ZSogYXNGbG9hdCA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIGFy
Z3VtZW50KTsKKyAgICBWYWx1ZSogYXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBhc0Zsb2F0KTsKKyAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgYXNEb3VibGUpOworCisgICAg
Q0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIHZhbHVlKSwgc3Rh
dGljX2Nhc3Q8ZG91YmxlPihzdGF0aWNfY2FzdDxmbG9hdD4odmFsdWUpKSkpOworfQorCit2b2lk
IHRlc3RGcm91bmRNZW0oZG91YmxlIHZhbHVlKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFkZHJlc3Mg
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7CisgICAgTWVtb3J5VmFsdWUqIGxvYWRlZERvdWJsZSA9IHJvb3Qt
PmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgRG91YmxlLCBPcmlnaW4oKSwgYWRk
cmVzcyk7CisgICAgVmFsdWUqIGFzRmxvYXQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCBsb2FkZWREb3VibGUpOworICAgIFZhbHVlKiBhc0Rv
dWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2lu
KCksIGFzRmxvYXQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCBhc0RvdWJsZSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxl
QW5kUnVuPGRvdWJsZT4ocHJvYywgJnZhbHVlKSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGF0aWNf
Y2FzdDxmbG9hdD4odmFsdWUpKSkpOworfQorCit2b2lkIHRlc3RJVG9ENjRBcmcoKQoreworICAg
IFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisgICAgVmFsdWUqIHNyYyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogc3JjQXNEb3Vi
bGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIElUb0QsIE9yaWdpbigpLCBzcmMpOwor
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBz
cmNBc0RvdWJsZSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICBm
b3IgKGF1dG8gdGVzdFZhbHVlIDogaW50NjRPcGVyYW5kcygpKQorICAgICAgICBDSEVDSyhpc0lk
ZW50aWNhbChpbnZva2U8ZG91YmxlPigqY29kZSwgdGVzdFZhbHVlLnZhbHVlKSwgc3RhdGljX2Nh
c3Q8ZG91YmxlPih0ZXN0VmFsdWUudmFsdWUpKSk7Cit9CisKK3ZvaWQgdGVzdElUb0Y2NEFyZygp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICBWYWx1ZSogc3JjID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVlKiBz
cmNBc0Zsb2F0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJVG9GLCBPcmlnaW4oKSwg
c3JjKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmln
aW4oKSwgc3JjQXNGbG9hdCk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsK
KyAgICBmb3IgKGF1dG8gdGVzdFZhbHVlIDogaW50NjRPcGVyYW5kcygpKQorICAgICAgICBDSEVD
Syhpc0lkZW50aWNhbChpbnZva2U8ZmxvYXQ+KCpjb2RlLCB0ZXN0VmFsdWUudmFsdWUpLCBzdGF0
aWNfY2FzdDxmbG9hdD4odGVzdFZhbHVlLnZhbHVlKSkpOworfQorCit2b2lkIHRlc3RJVG9EMzJB
cmcoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIHNyYyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVl
KiBzcmNBc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSVRvRCwgT3JpZ2lu
KCksIHNyYyk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwg
T3JpZ2luKCksIHNyY0FzRG91YmxlKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHBy
b2MpOworICAgIGZvciAoYXV0byB0ZXN0VmFsdWUgOiBpbnQzMk9wZXJhbmRzKCkpCisgICAgICAg
IENIRUNLKGlzSWRlbnRpY2FsKGludm9rZTxkb3VibGU+KCpjb2RlLCB0ZXN0VmFsdWUudmFsdWUp
LCBzdGF0aWNfY2FzdDxkb3VibGU+KHRlc3RWYWx1ZS52YWx1ZSkpKTsKK30KKwordm9pZCB0ZXN0
SVRvRjMyQXJnKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBzcmMgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAg
ICBWYWx1ZSogc3JjQXNGbG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSVRvRiwg
T3JpZ2luKCksIHNyYyk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJl
dHVybiwgT3JpZ2luKCksIHNyY0FzRmxvYXQpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVBy
b2MocHJvYyk7CisgICAgZm9yIChhdXRvIHRlc3RWYWx1ZSA6IGludDMyT3BlcmFuZHMoKSkKKyAg
ICAgICAgQ0hFQ0soaXNJZGVudGljYWwoaW52b2tlPGZsb2F0PigqY29kZSwgdGVzdFZhbHVlLnZh
bHVlKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHRlc3RWYWx1ZS52YWx1ZSkpKTsKK30KKwordm9pZCB0
ZXN0SVRvRDY0TWVtKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOworICAgIE1lbW9yeVZhbHVlKiBsb2FkZWRTcmMgPSByb290LT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwgYWRkcmVzcyk7CisgICAgVmFsdWUq
IHNyY0FzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJVG9ELCBPcmlnaW4o
KSwgbG9hZGVkU3JjKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwgc3JjQXNEb3VibGUpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVBy
b2MocHJvYyk7CisgICAgaW50NjRfdCBpbk1lbW9yeVZhbHVlOworICAgIGZvciAoYXV0byB0ZXN0
VmFsdWUgOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgaW5NZW1vcnlWYWx1ZSA9IHRlc3RW
YWx1ZS52YWx1ZTsKKyAgICAgICAgQ0hFQ0soaXNJZGVudGljYWwoaW52b2tlPGRvdWJsZT4oKmNv
ZGUsICZpbk1lbW9yeVZhbHVlKSwgc3RhdGljX2Nhc3Q8ZG91YmxlPih0ZXN0VmFsdWUudmFsdWUp
KSk7CisgICAgICAgIENIRUNLKGluTWVtb3J5VmFsdWUgPT0gdGVzdFZhbHVlLnZhbHVlKTsKKyAg
ICB9Cit9CisKK3ZvaWQgdGVzdElUb0Y2NE1lbSgpCit7CisgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYWRkcmVz
cyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBNZW1vcnlWYWx1ZSogbG9hZGVkU3JjID0gcm9vdC0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksIGFkZHJl
c3MpOworICAgIFZhbHVlKiBzcmNBc0Zsb2F0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBJVG9GLCBPcmlnaW4oKSwgbG9hZGVkU3JjKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgc3JjQXNGbG9hdCk7CisKKyAgICBhdXRvIGNv
ZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICBpbnQ2NF90IGluTWVtb3J5VmFsdWU7CisgICAg
Zm9yIChhdXRvIHRlc3RWYWx1ZSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICBpbk1lbW9y
eVZhbHVlID0gdGVzdFZhbHVlLnZhbHVlOworICAgICAgICBDSEVDSyhpc0lkZW50aWNhbChpbnZv
a2U8ZmxvYXQ+KCpjb2RlLCAmaW5NZW1vcnlWYWx1ZSksIHN0YXRpY19jYXN0PGZsb2F0Pih0ZXN0
VmFsdWUudmFsdWUpKSk7CisgICAgICAgIENIRUNLKGluTWVtb3J5VmFsdWUgPT0gdGVzdFZhbHVl
LnZhbHVlKTsKKyAgICB9Cit9CisKK3ZvaWQgdGVzdElUb0QzMk1lbSgpCit7CisgICAgUHJvY2Vk
dXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBW
YWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBNZW1vcnlWYWx1ZSogbG9hZGVk
U3JjID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQzMiwgT3Jp
Z2luKCksIGFkZHJlc3MpOworICAgIFZhbHVlKiBzcmNBc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgSVRvRCwgT3JpZ2luKCksIGxvYWRlZFNyYyk7CisgICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHNyY0FzRG91YmxlKTsK
KworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIGludDMyX3QgaW5NZW1v
cnlWYWx1ZTsKKyAgICBmb3IgKGF1dG8gdGVzdFZhbHVlIDogaW50MzJPcGVyYW5kcygpKSB7Cisg
ICAgICAgIGluTWVtb3J5VmFsdWUgPSB0ZXN0VmFsdWUudmFsdWU7CisgICAgICAgIENIRUNLKGlz
SWRlbnRpY2FsKGludm9rZTxkb3VibGU+KCpjb2RlLCAmaW5NZW1vcnlWYWx1ZSksIHN0YXRpY19j
YXN0PGRvdWJsZT4odGVzdFZhbHVlLnZhbHVlKSkpOworICAgICAgICBDSEVDSyhpbk1lbW9yeVZh
bHVlID09IHRlc3RWYWx1ZS52YWx1ZSk7CisgICAgfQorfQorCit2b2lkIHRlc3RJVG9GMzJNZW0o
KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgTWVt
b3J5VmFsdWUqIGxvYWRlZFNyYyA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywg
TG9hZCwgSW50MzIsIE9yaWdpbigpLCBhZGRyZXNzKTsKKyAgICBWYWx1ZSogc3JjQXNGbG9hdCA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSVRvRiwgT3JpZ2luKCksIGxvYWRlZFNyYyk7
CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCks
IHNyY0FzRmxvYXQpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAg
aW50MzJfdCBpbk1lbW9yeVZhbHVlOworICAgIGZvciAoYXV0byB0ZXN0VmFsdWUgOiBpbnQzMk9w
ZXJhbmRzKCkpIHsKKyAgICAgICAgaW5NZW1vcnlWYWx1ZSA9IHRlc3RWYWx1ZS52YWx1ZTsKKyAg
ICAgICAgQ0hFQ0soaXNJZGVudGljYWwoaW52b2tlPGZsb2F0PigqY29kZSwgJmluTWVtb3J5VmFs
dWUpLCBzdGF0aWNfY2FzdDxmbG9hdD4odGVzdFZhbHVlLnZhbHVlKSkpOworICAgICAgICBDSEVD
Syhpbk1lbW9yeVZhbHVlID09IHRlc3RWYWx1ZS52YWx1ZSk7CisgICAgfQorfQorCit2b2lkIHRl
c3RJVG9ENjRJbW0oaW50NjRfdCB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBzcmMgPSByb290
LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdmFsdWUpOworICAgIFZh
bHVlKiBzcmNBc0Zsb2F0aW5nUG9pbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIElU
b0QsIE9yaWdpbigpLCBzcmMpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLCBzcmNBc0Zsb2F0aW5nUG9pbnQpOworICAgIENIRUNLKGlzSWRl
bnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jKSwgc3RhdGljX2Nhc3Q8ZG91YmxlPih2
YWx1ZSkpKTsKK30KKwordm9pZCB0ZXN0SVRvRjY0SW1tKGludDY0X3QgdmFsdWUpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBWYWx1ZSogc3JjID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIHZhbHVlKTsKKyAgICBWYWx1ZSogc3JjQXNGbG9hdGluZ1BvaW50ID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBJVG9GLCBPcmlnaW4oKSwgc3JjKTsKKyAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgc3JjQXNGbG9hdGluZ1Bv
aW50KTsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jKSwg
c3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSkpOworfQorCit2b2lkIHRlc3RJVG9EMzJJbW0oaW50
MzJfdCB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBzcmMgPSByb290LT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdmFsdWUpOworICAgIFZhbHVlKiBzcmNBc0Zsb2F0
aW5nUG9pbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIElUb0QsIE9yaWdpbigpLCBz
cmMpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCBzcmNBc0Zsb2F0aW5nUG9pbnQpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVB
bmRSdW48ZG91YmxlPihwcm9jKSwgc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSkpKTsKK30KKwor
dm9pZCB0ZXN0SVRvRjMySW1tKGludDMyX3QgdmFsdWUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogc3Jj
ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHZhbHVlKTsK
KyAgICBWYWx1ZSogc3JjQXNGbG9hdGluZ1BvaW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBJVG9GLCBPcmlnaW4oKSwgc3JjKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgc3JjQXNGbG9hdGluZ1BvaW50KTsKKyAgICBDSEVD
Syhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jKSwgc3RhdGljX2Nhc3Q8Zmxv
YXQ+KHZhbHVlKSkpOworfQorCit2b2lkIHRlc3RJVG9EUmVkdWNlZFRvSVRvRjY0QXJnKCkKK3sK
KyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworICAgIFZhbHVlKiBzcmMgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgVmFsdWUqIHNyY0Fz
RG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJVG9ELCBPcmlnaW4oKSwgc3Jj
KTsKKyAgICBWYWx1ZSogZmxvYXRSZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCBzcmNBc0RvdWJsZSk7CisgICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGZsb2F0UmVzdWx0KTsKKwor
ICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIGZvciAoYXV0byB0ZXN0VmFs
dWUgOiBpbnQ2NE9wZXJhbmRzKCkpCisgICAgICAgIENIRUNLKGlzSWRlbnRpY2FsKGludm9rZTxm
bG9hdD4oKmNvZGUsIHRlc3RWYWx1ZS52YWx1ZSksIHN0YXRpY19jYXN0PGZsb2F0Pih0ZXN0VmFs
dWUudmFsdWUpKSk7Cit9CisKK3ZvaWQgdGVzdElUb0RSZWR1Y2VkVG9JVG9GMzJBcmcoKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgVmFsdWUqIHNyYyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMs
IE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBzcmNBc0Rv
dWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSVRvRCwgT3JpZ2luKCksIHNyYyk7
CisgICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBE
b3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgc3JjQXNEb3VibGUpOworICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBmbG9hdFJlc3VsdCk7CisKKyAg
ICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICBmb3IgKGF1dG8gdGVzdFZhbHVl
IDogaW50MzJPcGVyYW5kcygpKQorICAgICAgICBDSEVDSyhpc0lkZW50aWNhbChpbnZva2U8Zmxv
YXQ+KCpjb2RlLCB0ZXN0VmFsdWUudmFsdWUpLCBzdGF0aWNfY2FzdDxmbG9hdD4odGVzdFZhbHVl
LnZhbHVlKSkpOworfQorCit2b2lkIHRlc3RTdG9yZTMyKGludCB2YWx1ZSkKK3sKKyAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
IGludCBzbG90ID0gMHhiYWFkYmVlZjsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KAorICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1
ZT4ocHJvYywgT3JpZ2luKCksICZzbG90KSwgMCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgQ0hFQ0soIWNvbXBpbGVB
bmRSdW48aW50Pihwcm9jLCB2YWx1ZSkpOworICAgIENIRUNLKHNsb3QgPT0gdmFsdWUpOworfQor
Cit2b2lkIHRlc3RTdG9yZUNvbnN0YW50KGludCB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJv
YzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIGludCBzbG90
ID0gMHhiYWFkYmVlZjsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAg
ICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCB2YWx1ZSksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxD
b25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnNsb3QpLCAwKTsKKyAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICBDSEVD
SyghY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpKTsKKyAgICBDSEVDSyhzbG90ID09IHZhbHVlKTsK
K30KKwordm9pZCB0ZXN0U3RvcmVDb25zdGFudFB0cihpbnRwdHJfdCB2YWx1ZSkKK3sKKyAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIGludHB0cl90IHNsb3Q7CisjaWYgQ1BVKEFERFJFU1M2NCkKKyAgICBzbG90ID0gKHN0YXRp
Y19jYXN0PGludHB0cl90PigweGJhYWRiZWVmKSA8PCAzMikgKyBzdGF0aWNfY2FzdDxpbnRwdHJf
dD4oMHhiYWFkYmVlZik7CisjZWxzZQorICAgIHNsb3QgPSAweGJhYWRiZWVmOworI2VuZGlmCisg
ICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywgU3RvcmUsIE9y
aWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIHZhbHVlKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCAmc2xvdCksIDApOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kTmV3PENvbnN0
MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIENIRUNLKCFjb21waWxlQW5kUnVu
PGludD4ocHJvYykpOworICAgIENIRUNLKHNsb3QgPT0gdmFsdWUpOworfQorCit2b2lkIHRlc3RT
dG9yZThBcmcoKQoreworICAgIHsgLy8gRGlyZWN0IGFkZHJlc3NpbmcuCisgICAgICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
CisgICAgICAgIFZhbHVlKiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1
bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAgVmFs
dWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZTgsIE9yaWdpbigpLCB2YWx1ZSwgYWRkcmVzcyk7Cisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LCB2YWx1ZSk7CisKKyAgICAgICAgaW50OF90IHN0b3JhZ2UgPSAwOworICAgICAgICBDSEVDSyhj
b21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIDQyLCAmc3RvcmFnZSkgPT0gNDIpOworICAgICAg
ICBDSEVDSyhzdG9yYWdlID09IDQyKTsKKyAgICB9CisKKyAgICB7IC8vIEluZGV4ZWQgYWRkcmVz
c2luZy4KKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIHZhbHVlID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCkpOworICAgICAgICBWYWx1ZSogYmFzZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAg
VmFsdWUqIG9mZnNldCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgVmFsdWUqIGRpc3BsYWNl
bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMSk7
CisKKyAgICAgICAgVmFsdWUqIGJhc2VEaXNwbGFjZW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGRpc3BsYWNlbWVudCwgYmFzZSk7CisgICAgICAgIFZh
bHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigp
LCBiYXNlRGlzcGxhY2VtZW50LCBvZmZzZXQpOworCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxN
ZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmU4LCBPcmlnaW4oKSwgdmFsdWUsIGFkZHJlc3MpOworICAg
ICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwg
dmFsdWUpOworCisgICAgICAgIGludDhfdCBzdG9yYWdlID0gMDsKKyAgICAgICAgQ0hFQ0soY29t
cGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCA0MiwgJnN0b3JhZ2UsIDEpID09IDQyKTsKKyAgICAg
ICAgQ0hFQ0soc3RvcmFnZSA9PSA0Mik7CisgICAgfQorfQorCit2b2lkIHRlc3RTdG9yZThJbW0o
KQoreworICAgIHsgLy8gRGlyZWN0IGFkZHJlc3NpbmcuCisgICAgICAgIFByb2NlZHVyZSBwcm9j
OworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAg
IFZhbHVlKiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCA0Mik7CisgICAgICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmU4LCBPcmlnaW4o
KSwgdmFsdWUsIGFkZHJlc3MpOworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgdmFsdWUpOworCisgICAgICAgIGludDhfdCBzdG9yYWdl
ID0gMDsKKyAgICAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCAmc3RvcmFn
ZSkgPT0gNDIpOworICAgICAgICBDSEVDSyhzdG9yYWdlID09IDQyKTsKKyAgICB9CisKKyAgICB7
IC8vIEluZGV4ZWQgYWRkcmVzc2luZy4KKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIHZh
bHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKTsK
KyAgICAgICAgVmFsdWUqIGJhc2UgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBv
ZmZzZXQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIFZhbHVlKiBkaXNwbGFjZW1lbnQgPSBy
b290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTEpOworCisgICAg
ICAgIFZhbHVlKiBiYXNlRGlzcGxhY2VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBBZGQsIE9yaWdpbigpLCBkaXNwbGFjZW1lbnQsIGJhc2UpOworICAgICAgICBWYWx1ZSogYWRk
cmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgYmFzZURp
c3BsYWNlbWVudCwgb2Zmc2V0KTsKKworICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFs
dWU+KHByb2MsIFN0b3JlOCwgT3JpZ2luKCksIHZhbHVlLCBhZGRyZXNzKTsKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHZhbHVlKTsK
KworICAgICAgICBpbnQ4X3Qgc3RvcmFnZSA9IDA7CisgICAgICAgIENIRUNLKGNvbXBpbGVBbmRS
dW48aW50NjRfdD4ocHJvYywgJnN0b3JhZ2UsIDEpID09IDQyKTsKKyAgICAgICAgQ0hFQ0soc3Rv
cmFnZSA9PSA0Mik7CisgICAgfQorfQorCit2b2lkIHRlc3RTdG9yZVBhcnRpYWw4Qml0UmVnaXN0
ZXJPblg4NigpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKworICAgIC8vIFdlIHdhbnQgdG8gaGF2ZSB0aGlzIGluIEVDWC4K
KyAgICBWYWx1ZSogcmV0dXJuVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisKKyAgICAvLyBXZSB3
YW50IHRoaXMgc3VjayBpbiBFRFguCisgICAgVmFsdWUqIHdoZXJlVG9TdG9yZSA9IHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIxKTsKKworICAgIC8vIFRoZSBwYXRjaCBwb2ludCBpcyB0aGVyZSB0byBoZWxwIHVzIGZv
cmNlIHRoZSBoYW5kIG9mIHRoZSBjb21waWxlci4KKyAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNo
cG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBJbnQzMiwgT3Jp
Z2luKCkpOworCisgICAgLy8gRm9yIHRoZSB2YWx1ZSBhYm92ZSB0byBiZSBtYXRlcmlhbGl6ZWQg
YW5kIGdpdmUgdGhlIGFsbG9jYXRvcgorICAgIC8vIGEgc3Ryb25nZXIgaW5zZW50aXZlIHRvIG5h
bWUgdGhvc2UgcmVnaXN0ZXIgdGhlIHdheSB3ZSBuZWVkLgorICAgIHBhdGNocG9pbnQtPmFwcGVu
ZChDb25zdHJhaW5lZFZhbHVlKHJldHVyblZhbHVlLCBWYWx1ZVJlcChHUFJJbmZvOjpyZWdUMykp
KTsKKyAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZSh3aGVyZVRvU3RvcmUs
IFZhbHVlUmVwKEdQUkluZm86OnJlZ1QyKSkpOworCisgICAgLy8gV2UnbGwgcHJvZHVjZSBFREku
CisgICAgcGF0Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWludCA9IFZhbHVlUmVwOjpyZWcoR1BSSW5m
bzo6cmVnVDYpOworCisgICAgLy8gR2l2ZSB0aGUgYWxsb2NhdG9yIGEgZ29vZCByZWFzb24gbm90
IHRvIHVzZSBhbnkgb3RoZXIgcmVnaXN0ZXIuCisgICAgUmVnaXN0ZXJTZXQgY2xvYmJlclNldCA9
IFJlZ2lzdGVyU2V0OjphbGxHUFJzKCk7CisgICAgY2xvYmJlclNldC5leGNsdWRlKFJlZ2lzdGVy
U2V0OjpzdGFja1JlZ2lzdGVycygpKTsKKyAgICBjbG9iYmVyU2V0LmV4Y2x1ZGUoUmVnaXN0ZXJT
ZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSk7CisgICAgY2xvYmJlclNldC5jbGVhcihH
UFJJbmZvOjpyZWdUMyk7CisgICAgY2xvYmJlclNldC5jbGVhcihHUFJJbmZvOjpyZWdUMik7Cisg
ICAgY2xvYmJlclNldC5jbGVhcihHUFJJbmZvOjpyZWdUNik7CisgICAgcGF0Y2hwb2ludC0+Y2xv
YmJlckxhdGUoY2xvYmJlclNldCk7CisKKyAgICAvLyBTZXQgRURJLgorICAgIHBhdGNocG9pbnQt
PnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9T
Y3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAgICAgIGppdC54
b3I2NChwYXJhbXNbMF0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgIH0pOworCisg
ICAgLy8gSWYgZXZlcnl0aGluZyB3ZW50IHdlbGwsIHdlIHNob3VsZCBoYXZlIHRoZSBiaWcgbnVt
YmVyIGluIGVheCwKKyAgICAvLyBwYXRjaHBvaW50ID09IEVESSBhbmQgd2hlcmVUb1N0b3JlID0g
RURYLgorICAgIC8vIFNpbmNlIEVESSA9PSA1LCBhbmQgQUggPSA1IG9uIDggYml0IHN0b3JlLCB0
aGlzIHdvdWxkIGdvIHdyb25nCisgICAgLy8gaWYgd2UgdXNlIFg4NiBwYXJ0aWFsIHJlZ2lzdGVy
cy4KKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlOCwgT3JpZ2lu
KCksIHBhdGNocG9pbnQsIHdoZXJlVG9TdG9yZSk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmV0dXJuVmFsdWUpOworCisgICAgaW50
OF90IHN0b3JhZ2UgPSAweGZmOworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJv
YywgMHgxMjM0NTY3OGFiY2RlZjEyLCAmc3RvcmFnZSkgPT0gMHgxMjM0NTY3OGFiY2RlZjEyKTsK
KyAgICBDSEVDSyghc3RvcmFnZSk7Cit9CisKK3ZvaWQgdGVzdFN0b3JlMTZBcmcoKQoreworICAg
IHsgLy8gRGlyZWN0IGFkZHJlc3NpbmcuCisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiB2
YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAgVmFsdWUqIGFkZHJlc3MgPSByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMSk7CisKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9j
LCBTdG9yZTE2LCBPcmlnaW4oKSwgdmFsdWUsIGFkZHJlc3MpOworICAgICAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgdmFsdWUpOworCisgICAg
ICAgIGludDE2X3Qgc3RvcmFnZSA9IC0xOworICAgICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGlu
dDY0X3Q+KHByb2MsIDQyLCAmc3RvcmFnZSkgPT0gNDIpOworICAgICAgICBDSEVDSyhzdG9yYWdl
ID09IDQyKTsKKyAgICB9CisKKyAgICB7IC8vIEluZGV4ZWQgYWRkcmVzc2luZy4KKyAgICAgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisKKyAgICAgICAgVmFsdWUqIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgICAg
ICBWYWx1ZSogYmFzZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgVmFsdWUqIG9mZnNldCA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgVmFsdWUqIGRpc3BsYWNlbWVudCA9IHJvb3QtPmFw
cGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMSk7CisKKyAgICAgICAgVmFs
dWUqIGJhc2VEaXNwbGFjZW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwg
T3JpZ2luKCksIGRpc3BsYWNlbWVudCwgYmFzZSk7CisgICAgICAgIFZhbHVlKiBhZGRyZXNzID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBiYXNlRGlzcGxhY2Vt
ZW50LCBvZmZzZXQpOworCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJv
YywgU3RvcmUxNiwgT3JpZ2luKCksIHZhbHVlLCBhZGRyZXNzKTsKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHZhbHVlKTsKKworICAg
ICAgICBpbnQxNl90IHN0b3JhZ2UgPSAtMTsKKyAgICAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxp
bnQ2NF90Pihwcm9jLCA0MiwgJnN0b3JhZ2UsIDEpID09IDQyKTsKKyAgICAgICAgQ0hFQ0soc3Rv
cmFnZSA9PSA0Mik7CisgICAgfQorfQorCit2b2lkIHRlc3RTdG9yZTE2SW1tKCkKK3sKKyAgICB7
IC8vIERpcmVjdCBhZGRyZXNzaW5nLgorICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogdmFs
dWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDIpOwor
ICAgICAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKworICAgICAgICByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlMTYsIE9yaWdpbigpLCB2YWx1ZSwg
YWRkcmVzcyk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCB2YWx1ZSk7CisKKyAgICAgICAgaW50MTZfdCBzdG9yYWdlID0gLTE7Cisg
ICAgICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgJnN0b3JhZ2UpID09IDQy
KTsKKyAgICAgICAgQ0hFQ0soc3RvcmFnZSA9PSA0Mik7CisgICAgfQorCisgICAgeyAvLyBJbmRl
eGVkIGFkZHJlc3NpbmcuCisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiB2YWx1ZSA9IHJv
b3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0Mik7CisgICAgICAg
IFZhbHVlKiBiYXNlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSogb2Zmc2V0ID0g
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEpOworICAgICAgICBWYWx1ZSogZGlzcGxhY2VtZW50ID0gcm9vdC0+YXBw
ZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xKTsKKworICAgICAgICBWYWx1
ZSogYmFzZURpc3BsYWNlbWVudCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBP
cmlnaW4oKSwgZGlzcGxhY2VtZW50LCBiYXNlKTsKKyAgICAgICAgVmFsdWUqIGFkZHJlc3MgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGJhc2VEaXNwbGFjZW1l
bnQsIG9mZnNldCk7CisKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9j
LCBTdG9yZTE2LCBPcmlnaW4oKSwgdmFsdWUsIGFkZHJlc3MpOworICAgICAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgdmFsdWUpOworCisgICAg
ICAgIGludDE2X3Qgc3RvcmFnZSA9IC0xOworICAgICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGlu
dDY0X3Q+KHByb2MsICZzdG9yYWdlLCAxKSA9PSA0Mik7CisgICAgICAgIENIRUNLKHN0b3JhZ2Ug
PT0gNDIpOworICAgIH0KK30KKwordm9pZCB0ZXN0VHJ1bmMoaW50NjRfdCB2YWx1ZSkKK3sKKyAg
ICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
IHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOwor
CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIHZhbHVlKSA9PSBzdGF0aWNfY2Fz
dDxpbnQ+KHZhbHVlKSk7Cit9CisKK3ZvaWQgdGVzdEFkZDEoaW50IHZhbHVlKQoreworICAgIFBy
b2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJv
YywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgMSkpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihw
cm9jLCB2YWx1ZSkgPT0gdmFsdWUgKyAxKTsKK30KKwordm9pZCB0ZXN0QWRkMVB0cihpbnRwdHJf
dCB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIDEpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludHB0cl90Pihw
cm9jLCB2YWx1ZSkgPT0gdmFsdWUgKyAxKTsKK30KKwordm9pZCB0ZXN0TmVnMzIoaW50MzJfdCB2
YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgIHByb2MsIFN1YiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCksCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSk7CisKKyAgICBDSEVDSyhjb21w
aWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIHZhbHVlKSA9PSAtdmFsdWUpOworfQorCit2b2lkIHRl
c3ROZWdQdHIoaW50cHRyX3QgdmFsdWUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTdWIsIE9yaWdpbigpLAorICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAw
KSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFu
ZFJ1bjxpbnRwdHJfdD4ocHJvYywgdmFsdWUpID09IC12YWx1ZSk7Cit9CisKK3ZvaWQgdGVzdFN0
b3JlQWRkTG9hZDMyKGludCBhbW91bnQpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBpbnQgc2xvdCA9IDM3OworICAg
IENvbnN0UHRyVmFsdWUqIHNsb3RQdHIgPSByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksICZzbG90KTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KAorICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCks
IHNsb3RQdHIpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAg
ICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApKSksCisgICAgICAgIHNsb3RQdHIsIDApOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIENIRUNL
KCFjb21waWxlQW5kUnVuPGludD4ocHJvYywgYW1vdW50KSk7CisgICAgQ0hFQ0soc2xvdCA9PSAz
NyArIGFtb3VudCk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM180LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy90ZXN0YjNfNC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDMxOTg5YzQyOGU1M2IxNjg1NzQ4NzQ5
NmU1Mjg4ZWE3NDJlNzU4OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy90ZXN0YjNfNC5jcHAKQEAgLTAsMCArMSwyOTE1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAidGVzdGIzLmgiCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCit2b2lkIHRlc3RTdG9yZVJl
bEFkZExvYWRBY3EzMihpbnQgYW1vdW50KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgaW50IHNsb3QgPSAzNzsKKyAg
ICBDb25zdFB0clZhbHVlKiBzbG90UHRyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCAmc2xvdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVl
PigKKyAgICAgICAgcHJvYywgU3RvcmUsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgTG9h
ZCwgSW50MzIsIE9yaWdpbigpLCBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2Uo
NDIpKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAg
ICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSkpLAorICAgICAgICBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKTsK
KyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCAwKSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICBp
ZiAoaXNBUk02NCgpKSB7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibGRh
Iik7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAic3RsIik7CisgICAgfQor
ICAgIGlmIChpc1g4NigpKQorICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgInhj
aGciKTsKKyAgICBDSEVDSyghaW52b2tlPGludD4oKmNvZGUsIGFtb3VudCkpOworICAgIENIRUNL
KHNsb3QgPT0gMzcgKyBhbW91bnQpOworfQorCit2b2lkIHRlc3RTdG9yZUFkZExvYWRJbW0zMihp
bnQgYW1vdW50KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7CisgICAgaW50IHNsb3QgPSAzNzsKKyAgICBDb25zdFB0clZhbHVl
KiBzbG90UHRyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCAmc2xvdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJv
YywgU3RvcmUsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBzbG90UHRyKSwKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBh
bW91bnQpKSwKKyAgICAgICAgc2xvdFB0ciwgMCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgQ0hFQ0so
IWNvbXBpbGVBbmRSdW48aW50Pihwcm9jKSk7CisgICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3Vu
dCk7Cit9CisKK3ZvaWQgdGVzdFN0b3JlQWRkTG9hZDgoaW50IGFtb3VudCwgQjM6Ok9wY29kZSBs
b2FkT3Bjb2RlKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7CisgICAgaW50OF90IHNsb3QgPSAzNzsKKyAgICBDb25zdFB0clZh
bHVlKiBzbG90UHRyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCAmc2xvdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAg
cHJvYywgU3RvcmU4LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIGxvYWRPcGNvZGUsIE9yaWdpbigpLCBzbG90UHRyKSwK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJv
YywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpLAor
ICAgICAgICBzbG90UHRyLCAwKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisg
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICBDSEVDSyghY29tcGlsZUFu
ZFJ1bjxpbnQ+KHByb2MsIGFtb3VudCkpOworICAgIENIRUNLKHNsb3QgPT0gMzcgKyBhbW91bnQp
OworfQorCit2b2lkIHRlc3RTdG9yZVJlbEFkZExvYWRBY3E4KGludCBhbW91bnQsIEIzOjpPcGNv
ZGUgbG9hZE9wY29kZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIGludDhfdCBzbG90ID0gMzc7CisgICAgQ29uc3RQ
dHJWYWx1ZSogc2xvdFB0ciA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgJnNsb3QpOworICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAg
ICAgIHByb2MsIFN0b3JlOCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBsb2FkT3Bjb2Rl
LCBPcmlnaW4oKSwgc2xvdFB0ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQyKSksCisg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSwKKyAg
ICAgICAgc2xvdFB0ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQyKSk7CisgICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
MCkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgaWYgKGlzQVJN
NjQoKSkgeworICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxkYSIpOworICAg
ICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgInN0bCIpOworICAgIH0KKyAgICBpZiAo
aXNYODYoKSkKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJ4Y2hnIik7Cisg
ICAgQ0hFQ0soIWludm9rZTxpbnQ+KCpjb2RlLCBhbW91bnQpKTsKKyAgICBDSEVDSyhzbG90ID09
IDM3ICsgYW1vdW50KTsKK30KKwordm9pZCB0ZXN0U3RvcmVSZWxBZGRGZW5jZUxvYWRBY3E4KGlu
dCBhbW91bnQsIEIzOjpPcGNvZGUgbG9hZE9wY29kZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIGludDhfdCBzbG90
ID0gMzc7CisgICAgQ29uc3RQdHJWYWx1ZSogc2xvdFB0ciA9IHJvb3QtPmFwcGVuZE5ldzxDb25z
dFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnNsb3QpOworICAgIFZhbHVlKiBsb2FkZWRWYWx1
ZSA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIGxvYWRPcGNv
ZGUsIE9yaWdpbigpLCBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKTsK
KyAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hw
b2ludFZhbHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7CisgICAgcGF0Y2hwb2ludC0+Y2xvYmJl
cihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgIHBhdGNocG9pbnQt
PnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hS
ZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgaml0LnN0b3JlOChD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigweGJlZWYpLCAmc2xvdCk7CisgICAgICAgIH0pOwor
ICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgcGF0Y2hwb2lu
dC0+ZWZmZWN0cy5mZW5jZSA9IHRydWU7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVl
PigKKyAgICAgICAgcHJvYywgU3RvcmU4LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgICAg
ICBsb2FkZWRWYWx1ZSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAg
ICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSkpLAorICAgICAgICBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFu
Z2UoNDIpKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2Ms
IFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9j
KTsKKyAgICBpZiAoaXNBUk02NCgpKSB7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpj
b2RlLCAibGRhIik7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAic3RsIik7
CisgICAgfQorICAgIGlmIChpc1g4NigpKQorICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigq
Y29kZSwgInhjaGciKTsKKyAgICBDSEVDSyghaW52b2tlPGludD4oKmNvZGUsIGFtb3VudCkpOwor
ICAgIENIRUNLKHNsb3QgPT0gMzcgKyBhbW91bnQpOworfQorCit2b2lkIHRlc3RTdG9yZUFkZExv
YWRJbW04KGludCBhbW91bnQsIEIzOjpPcGNvZGUgbG9hZE9wY29kZSkKK3sKKyAgICBQcm9jZWR1
cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIGlu
dDhfdCBzbG90ID0gMzc7CisgICAgQ29uc3RQdHJWYWx1ZSogc2xvdFB0ciA9IHJvb3QtPmFwcGVu
ZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnNsb3QpOworICAgIHJvb3QtPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIFN0b3JlOCwgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9y
aWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBs
b2FkT3Bjb2RlLCBPcmlnaW4oKSwgc2xvdFB0ciksCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KSksCisgICAgICAgIHNsb3RQ
dHIsIDApOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludD4ocHJv
YykpOworICAgIENIRUNLKHNsb3QgPT0gMzcgKyBhbW91bnQpOworfQorCit2b2lkIHRlc3RTdG9y
ZUFkZExvYWQxNihpbnQgYW1vdW50LCBCMzo6T3Bjb2RlIGxvYWRPcGNvZGUpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBpbnQxNl90IHNsb3QgPSAzNzsKKyAgICBDb25zdFB0clZhbHVlKiBzbG90UHRyID0gcm9vdC0+
YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmc2xvdCk7CisgICAgcm9v
dC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywgU3RvcmUxNiwgT3JpZ2lu
KCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBB
ZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihw
cm9jLCBsb2FkT3Bjb2RlLCBPcmlnaW4oKSwgc2xvdFB0ciksCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwK
KyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSwKKyAgICAgICAgc2xvdFB0ciwgMCk7
CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgMCkpOworCisgICAgQ0hFQ0soIWNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhbW91
bnQpKTsKKyAgICBDSEVDSyhzbG90ID09IDM3ICsgYW1vdW50KTsKK30KKwordm9pZCB0ZXN0U3Rv
cmVSZWxBZGRMb2FkQWNxMTYoaW50IGFtb3VudCwgQjM6Ok9wY29kZSBsb2FkT3Bjb2RlKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgaW50MTZfdCBzbG90ID0gMzc7CisgICAgQ29uc3RQdHJWYWx1ZSogc2xvdFB0ciA9
IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnNsb3QpOwor
ICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIFN0b3JlMTYs
IE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAg
cHJvYywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlW
YWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgbG9hZE9wY29kZSwgT3JpZ2luKCksIHNsb3RQ
dHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSg0MikpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCks
CisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSksCisgICAgICAgIHNsb3RQdHIsIDAs
IEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSg0MikpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIGF1dG8g
Y29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIGlmIChpc0FSTTY0KCkpIHsKKyAgICAgICAg
Y2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJsZGEiKTsKKyAgICAgICAgY2hlY2tVc2VzSW5z
dHJ1Y3Rpb24oKmNvZGUsICJzdGwiKTsKKyAgICB9CisgICAgaWYgKGlzWDg2KCkpCisgICAgICAg
IGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAieGNoZyIpOworICAgIENIRUNLKCFpbnZva2U8
aW50PigqY29kZSwgYW1vdW50KSk7CisgICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7Cit9
CisKK3ZvaWQgdGVzdFN0b3JlQWRkTG9hZEltbTE2KGludCBhbW91bnQsIEIzOjpPcGNvZGUgbG9h
ZE9wY29kZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworICAgIGludDE2X3Qgc2xvdCA9IDM3OworICAgIENvbnN0UHRyVmFs
dWUqIHNsb3RQdHIgPSByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksICZzbG90KTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICBw
cm9jLCBTdG9yZTE2LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIGxvYWRPcGNvZGUsIE9yaWdpbigpLCBzbG90UHRyKSwK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBhbW91bnQpKSwKKyAgICAgICAgc2xvdFB0ciwgMCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgQ0hF
Q0soIWNvbXBpbGVBbmRSdW48aW50Pihwcm9jKSk7CisgICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFt
b3VudCk7Cit9CisKK3ZvaWQgdGVzdFN0b3JlQWRkTG9hZDY0KGludCBhbW91bnQpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBpbnQ2NF90IHNsb3QgPSAzNzAwMDAwMDAwMGxsOworICAgIENvbnN0UHRyVmFsdWUqIHNs
b3RQdHIgPSByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZz
bG90KTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICBwcm9jLCBT
dG9yZSwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
ICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1l
bW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksIHNsb3RQdHIpLAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAgICAgc2xvdFB0ciwgMCk7CisgICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkp
OworCisgICAgQ0hFQ0soIWNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhbW91bnQpKTsKKyAgICBD
SEVDSyhzbG90ID09IDM3MDAwMDAwMDAwbGwgKyBhbW91bnQpOworfQorCit2b2lkIHRlc3RTdG9y
ZVJlbEFkZExvYWRBY3E2NChpbnQgYW1vdW50KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgaW50NjRfdCBzbG90ID0g
MzcwMDAwMDAwMDBsbDsKKyAgICBDb25zdFB0clZhbHVlKiBzbG90UHRyID0gcm9vdC0+YXBwZW5k
TmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmc2xvdCk7CisgICAgcm9vdC0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywgU3RvcmUsIE9yaWdpbigpLAorICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmln
aW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAg
ICAgICAgICAgcHJvYywgTG9hZCwgSW50NjQsIE9yaWdpbigpLCBzbG90UHRyLCAwLCBIZWFwUmFu
Z2UoNDIpLCBIZWFwUmFuZ2UoNDIpKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisg
ICAgICAgIHNsb3RQdHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSg0MikpOworICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IDApKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIGlmIChpc0FS
TTY0KCkpIHsKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJsZGEiKTsKKyAg
ICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJzdGwiKTsKKyAgICB9CisgICAgaWYg
KGlzWDg2KCkpCisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAieGNoZyIpOwor
ICAgIENIRUNLKCFpbnZva2U8aW50PigqY29kZSwgYW1vdW50KSk7CisgICAgQ0hFQ0soc2xvdCA9
PSAzNzAwMDAwMDAwMGxsICsgYW1vdW50KTsKK30KKwordm9pZCB0ZXN0U3RvcmVBZGRMb2FkSW1t
NjQoaW50NjRfdCBhbW91bnQpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBpbnQ2NF90IHNsb3QgPSAzNzAwMDAwMDAw
MDBsbDsKKyAgICBDb25zdFB0clZhbHVlKiBzbG90UHRyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0
UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmc2xvdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1l
bW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywgU3RvcmUsIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50NjQs
IE9yaWdpbigpLCBzbG90UHRyKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpKSwKKyAgICAgICAgc2xvdFB0ciwgMCk7Cisg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmln
aW4oKSwgMCkpOworCisgICAgQ0hFQ0soIWNvbXBpbGVBbmRSdW48aW50Pihwcm9jKSk7CisgICAg
Q0hFQ0soc2xvdCA9PSAzNzAwMDAwMDAwMDBsbCArIGFtb3VudCk7Cit9CisKK3ZvaWQgdGVzdFN0
b3JlQWRkTG9hZDMySW5kZXgoaW50IGFtb3VudCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIGludCBzbG90ID0gMzc7
CisgICAgaW50KiBwdHIgPSAmc2xvdDsKKyAgICBpbnRwdHJfdCB6ZXJvID0gMDsKKyAgICBWYWx1
ZSogc2xvdFB0ciA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIEFkZCwg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAg
ICAgICBwcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnB0cikpLAorICAg
ICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTG9h
ZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZ6ZXJvKSkpOworICAgIHJvb3QtPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIFN0b3JlLCBPcmlnaW4oKSwKKyAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2lu
KCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQs
IEludDMyLCBPcmlnaW4oKSwgc2xvdFB0ciksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSwKKyAgICAgICAgc2xvdFB0ciwgMCk7CisgICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
MCkpOworCisgICAgQ0hFQ0soIWNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhbW91bnQpKTsKKyAg
ICBDSEVDSyhzbG90ID09IDM3ICsgYW1vdW50KTsKK30KKwordm9pZCB0ZXN0U3RvcmVBZGRMb2Fk
SW1tMzJJbmRleChpbnQgYW1vdW50KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgaW50IHNsb3QgPSAzNzsKKyAgICBp
bnQqIHB0ciA9ICZzbG90OworICAgIGludHB0cl90IHplcm8gPSAwOworICAgIFZhbHVlKiBzbG90
UHRyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4o
KSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmcHRyKSksCisgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBMb2FkLCBwb2lu
dGVyVHlwZSgpLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0
clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnplcm8pKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1l
bW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywgU3RvcmUsIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIs
IE9yaWdpbigpLCBzbG90UHRyKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpKSwKKyAgICAgICAgc2xvdFB0ciwgMCk7Cisg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmln
aW4oKSwgMCkpOworCisgICAgQ0hFQ0soIWNvbXBpbGVBbmRSdW48aW50Pihwcm9jKSk7CisgICAg
Q0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7Cit9CisKK3ZvaWQgdGVzdFN0b3JlQWRkTG9hZDhJ
bmRleChpbnQgYW1vdW50LCBCMzo6T3Bjb2RlIGxvYWRPcGNvZGUpCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBpbnQ4
X3Qgc2xvdCA9IDM3OworICAgIGludDhfdCogcHRyID0gJnNsb3Q7CisgICAgaW50cHRyX3QgemVy
byA9IDA7CisgICAgVmFsdWUqIHNsb3RQdHIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCks
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksICZwdHIpKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAg
ICAgICAgIHByb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigpLAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmemVybykpKTsK
KyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICBwcm9jLCBTdG9yZTgs
IE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAg
cHJvYywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlW
YWx1ZT4ocHJvYywgbG9hZE9wY29kZSwgT3JpZ2luKCksIHNsb3RQdHIpLAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3Jp
Z2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSksCisgICAgICAgIHNsb3RQ
dHIpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIDApKTsKKworICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludD4ocHJvYywg
YW1vdW50KSk7CisgICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7Cit9CisKK3ZvaWQgdGVz
dFN0b3JlQWRkTG9hZEltbThJbmRleChpbnQgYW1vdW50LCBCMzo6T3Bjb2RlIGxvYWRPcGNvZGUp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICBpbnQ4X3Qgc2xvdCA9IDM3OworICAgIGludDhfdCogcHRyID0gJnNsb3Q7
CisgICAgaW50cHRyX3QgemVybyA9IDA7CisgICAgVmFsdWUqIHNsb3RQdHIgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTG9hZCwgcG9pbnRl
clR5cGUoKSwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksICZwdHIpKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1l
bW9yeVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIE9yaWdp
bigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCAmemVybykpKTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAg
ICAgICBwcm9jLCBTdG9yZTgsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgbG9hZE9wY29kZSwgT3JpZ2luKCksIHNsb3RQ
dHIpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIGFtb3VudCkpLAorICAgICAgICBzbG90UHRyKTsKKyAgICByb290LT5hcHBlbmROZXdD
b250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICBD
SEVDSyghY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpKTsKKyAgICBDSEVDSyhzbG90ID09IDM3ICsg
YW1vdW50KTsKK30KKwordm9pZCB0ZXN0U3RvcmVBZGRMb2FkMTZJbmRleChpbnQgYW1vdW50LCBC
Mzo6T3Bjb2RlIGxvYWRPcGNvZGUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBpbnQxNl90IHNsb3QgPSAzNzsKKyAg
ICBpbnQxNl90KiBwdHIgPSAmc2xvdDsKKyAgICBpbnRwdHJfdCB6ZXJvID0gMDsKKyAgICBWYWx1
ZSogc2xvdFB0ciA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIEFkZCwg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAg
ICAgICBwcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnB0cikpLAorICAg
ICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTG9h
ZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZ6ZXJvKSkpOworICAgIHJvb3QtPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIFN0b3JlMTYsIE9yaWdpbigpLAorICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmln
aW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgbG9h
ZE9wY29kZSwgT3JpZ2luKCksIHNsb3RQdHIpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSksCisgICAgICAgIHNsb3RQdHIpOworICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDAp
KTsKKworICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludD4ocHJvYywgYW1vdW50KSk7CisgICAg
Q0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7Cit9CisKK3ZvaWQgdGVzdFN0b3JlQWRkTG9hZElt
bTE2SW5kZXgoaW50IGFtb3VudCwgQjM6Ok9wY29kZSBsb2FkT3Bjb2RlKQoreworICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAg
aW50MTZfdCBzbG90ID0gMzc7CisgICAgaW50MTZfdCogcHRyID0gJnNsb3Q7CisgICAgaW50cHRy
X3QgemVybyA9IDA7CisgICAgVmFsdWUqIHNsb3RQdHIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3Jp
Z2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksICZwdHIpKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigK
KyAgICAgICAgICAgIHByb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigpLAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmemVy
bykpKTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICBwcm9jLCBT
dG9yZTE2LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAg
ICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KHByb2MsIGxvYWRPcGNvZGUsIE9yaWdpbigpLCBzbG90UHRyKSwKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91
bnQpKSwKKyAgICAgICAgc2xvdFB0cik7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgQ0hFQ0soIWNvbXBp
bGVBbmRSdW48aW50Pihwcm9jKSk7CisgICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7Cit9
CisKK3ZvaWQgdGVzdFN0b3JlQWRkTG9hZDY0SW5kZXgoaW50IGFtb3VudCkKK3sKKyAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
IGludDY0X3Qgc2xvdCA9IDM3MDAwMDAwMDAwbGw7CisgICAgaW50NjRfdCogcHRyID0gJnNsb3Q7
CisgICAgaW50cHRyX3QgemVybyA9IDA7CisgICAgVmFsdWUqIHNsb3RQdHIgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTG9hZCwgcG9pbnRl
clR5cGUoKSwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksICZwdHIpKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1l
bW9yeVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIE9yaWdp
bigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCAmemVybykpKTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAg
ICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksIHNsb3RQ
dHIpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAgICAgc2xvdFB0ciwgMCk7
CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgMCkpOworCisgICAgQ0hFQ0soIWNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhbW91
bnQpKTsKKyAgICBDSEVDSyhzbG90ID09IDM3MDAwMDAwMDAwbGwgKyBhbW91bnQpOworfQorCit2
b2lkIHRlc3RTdG9yZUFkZExvYWRJbW02NEluZGV4KGludDY0X3QgYW1vdW50KQoreworICAgIFBy
b2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgaW50NjRfdCBzbG90ID0gMzcwMDAwMDAwMDAwbGw7CisgICAgaW50NjRfdCogcHRyID0gJnNs
b3Q7CisgICAgaW50cHRyX3QgemVybyA9IDA7CisgICAgVmFsdWUqIHNsb3RQdHIgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICBy
b290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTG9hZCwgcG9p
bnRlclR5cGUoKSwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQ
dHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZwdHIpKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIE9y
aWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAmemVybykpKTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAor
ICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksIHNs
b3RQdHIpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIGFtb3VudCkpLAorICAgICAgICBzbG90UHRyLCAwKTsKKyAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisK
KyAgICBDSEVDSyghY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpKTsKKyAgICBDSEVDSyhzbG90ID09
IDM3MDAwMDAwMDAwMGxsICsgYW1vdW50KTsKK30KKwordm9pZCB0ZXN0U3RvcmVTdWJMb2FkKGlu
dCBhbW91bnQpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICBpbnQzMl90IHN0YXJ0VmFsdWUgPSBzdGQ6Om51bWVyaWNf
bGltaXRzPGludDMyX3Q+OjptaW4oKTsKKyAgICBpbnQzMl90IHNsb3QgPSBzdGFydFZhbHVlOwor
ICAgIENvbnN0UHRyVmFsdWUqIHNsb3RQdHIgPSByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1
ZT4ocHJvYywgT3JpZ2luKCksICZzbG90KTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFs
dWU+KAorICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTdWIsIE9yaWdpbigpLAorICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2lu
KCksIHNsb3RQdHIpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAg
ICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKSksCisgICAgICAgIHNsb3RQdHIsIDApOworICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIENI
RUNLKCFjb21waWxlQW5kUnVuPGludD4ocHJvYywgYW1vdW50KSk7CisgICAgQ0hFQ0soc2xvdCA9
PSBzdGFydFZhbHVlIC0gYW1vdW50KTsKK30KKwordm9pZCB0ZXN0U3RvcmVBZGRMb2FkSW50ZXJm
ZXJlbmNlKGludCBhbW91bnQpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBpbnQgc2xvdCA9IDM3OworICAgIENvbnN0
UHRyVmFsdWUqIHNsb3RQdHIgPSByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksICZzbG90KTsKKyAgICBBcmd1bWVudFJlZ1ZhbHVlKiBvdGhlclNsb3RQdHIgPQor
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgTWVtb3J5VmFsdWUqIGxvYWQgPSByb290LT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgc2xvdFB0
cik7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywgU3Rv
cmUsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgNjY2KSwKKyAgICAgICAgb3RoZXJTbG90UHRyLCAwKTsKKyAgICByb290LT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9y
aWdpbigpLAorICAgICAgICAgICAgbG9hZCwgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIGFtb3VudCkpLAorICAgICAgICBzbG90UHRyLCAwKTsKKyAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAw
KSk7CisKKyAgICBDSEVDSyghY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsICZzbG90KSk7CisgICAg
Q0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7Cit9CisKK3ZvaWQgdGVzdFN0b3JlQWRkQW5kTG9h
ZChpbnQgYW1vdW50LCBpbnQgbWFzaykKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIGludCBzbG90ID0gMzc7CisgICAg
Q29uc3RQdHJWYWx1ZSogc2xvdFB0ciA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgJnNsb3QpOworICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
CisgICAgICAgIHByb2MsIFN0b3JlLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJpdEFuZCwgT3JpZ2luKCksCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEFkZCwgT3Jp
Z2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9j
LCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksIHNsb3RQdHIpLAorICAgICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpKSwKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBtYXNr
KSksCisgICAgICAgIHNsb3RQdHIsIDApOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIENIRUNLKCFjb21w
aWxlQW5kUnVuPGludD4ocHJvYykpOworICAgIENIRUNLKHNsb3QgPT0gKCgzNyArIGFtb3VudCkg
JiBtYXNrKSk7Cit9CisKK3ZvaWQgdGVzdFN0b3JlTmVnTG9hZDMyKGludDMyX3QgdmFsdWUpCit7
CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKworICAgIGludDMyX3Qgc2xvdCA9IHZhbHVlOworCisgICAgQ29uc3RQdHJWYWx1ZSog
c2xvdFB0ciA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
JnNsb3QpOworCisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJv
YywgU3RvcmUsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgcHJvYywgU3ViLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSwKKyAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBzbG90UHRy
KSksCisgICAgICAgIHNsb3RQdHIsIDApOworCisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgQ0hFQ0soIWNvbXBpbGVBbmRS
dW48aW50MzJfdD4ocHJvYykpOworICAgIENIRUNLKHNsb3QgPT0gLXZhbHVlKTsKK30KKwordm9p
ZCB0ZXN0U3RvcmVOZWdMb2FkUHRyKGludHB0cl90IHZhbHVlKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBpbnRw
dHJfdCBzbG90ID0gdmFsdWU7CisKKyAgICBDb25zdFB0clZhbHVlKiBzbG90UHRyID0gcm9vdC0+
YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmc2xvdCk7CisKKyAgICBy
b290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2lu
KCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBT
dWIsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCAwKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlW
YWx1ZT4ocHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCksIHNsb3RQdHIpKSwKKyAg
ICAgICAgc2xvdFB0ciwgMCk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisg
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICBDSEVDSyghY29tcGlsZUFuZFJ1bjxpbnQz
Ml90Pihwcm9jKSk7CisgICAgQ0hFQ0soc2xvdCA9PSAtdmFsdWUpOworfQorCit2b2lkIHRlc3RB
ZGQxVW5jb21tdXRlZChpbnQgdmFsdWUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEp
LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBw
cm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSkp
OworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIHZhbHVlKSA9PSB2YWx1ZSAr
IDEpOworfQorCit2b2lkIHRlc3RMb2FkT2Zmc2V0KCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIGludCBhcnJheVtd
ID0geyAxLCAyIH07CisgICAgQ29uc3RQdHJWYWx1ZSogYXJyYXlQdHIgPSByb290LT5hcHBlbmRO
ZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFycmF5KTsKKyAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdp
bigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2Fk
LCBJbnQzMiwgT3JpZ2luKCksIGFycmF5UHRyLCAwKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBhcnJheVB0ciwg
c3RhdGljX2Nhc3Q8aW50MzJfdD4oc2l6ZW9mKGludCkpKSkpOworCisgICAgQ0hFQ0soY29tcGls
ZUFuZFJ1bjxpbnQ+KHByb2MpID09IGFycmF5WzBdICsgYXJyYXlbMV0pOworfQorCit2b2lkIHRl
c3RMb2FkT2Zmc2V0Tm90Q29uc3RhbnQoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgaW50IGFycmF5W10gPSB7IDEs
IDIgfTsKKyAgICBWYWx1ZSogYXJyYXlQdHIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywg
TG9hZCwgSW50MzIsIE9yaWdpbigpLCBhcnJheVB0ciwgMCksCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgYXJyYXlQ
dHIsIHN0YXRpY19jYXN0PGludDMyX3Q+KHNpemVvZihpbnQpKSkpKTsKKworICAgIENIRUNLKGNv
bXBpbGVBbmRSdW48aW50Pihwcm9jLCAmYXJyYXlbMF0pID09IGFycmF5WzBdICsgYXJyYXlbMV0p
OworfQorCit2b2lkIHRlc3RMb2FkT2Zmc2V0VXNpbmdBZGQoKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgaW50IGFy
cmF5W10gPSB7IDEsIDIgfTsKKyAgICBDb25zdFB0clZhbHVlKiBhcnJheVB0ciA9IHJvb3QtPmFw
cGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYXJyYXkpOworICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwg
T3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAg
ICAgICAgICAgICAgIHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBBZGQs
IE9yaWdpbigpLCBhcnJheVB0ciwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSkpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBMb2FkLCBJbnQz
MiwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwgYXJyYXlQdHIsCisgICAgICAg
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgc3RhdGljX2Nhc3Q8aW50MzJfdD4oc2l6ZW9mKGludCkpKSkpKSk7CisKKyAgICBDSEVDSyhj
b21waWxlQW5kUnVuPGludD4ocHJvYykgPT0gYXJyYXlbMF0gKyBhcnJheVsxXSk7Cit9CisKK3Zv
aWQgdGVzdExvYWRPZmZzZXRVc2luZ0FkZEludGVyZmVyZW5jZSgpCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBpbnQg
YXJyYXlbXSA9IHsgMSwgMiB9OworICAgIENvbnN0UHRyVmFsdWUqIGFycmF5UHRyID0gcm9vdC0+
YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhcnJheSk7CisgICAgQXJn
dW1lbnRSZWdWYWx1ZSogb3RoZXJBcnJheVB0ciA9CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
KyAgICBDb25zdDMyVmFsdWUqIHRoZU51bWJlck9mVGhlQmVhc3QgPSByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNjY2KTsKKyAgICBNZW1vcnlWYWx1ZSogbGVm
dCA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIExvYWQsIElu
dDMyLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAg
ICAgIHByb2MsIEFkZCwgT3JpZ2luKCksIGFycmF5UHRyLAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSkpOworICAgIE1lbW9yeVZh
bHVlKiByaWdodCA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2Ms
IExvYWQsIEludDMyLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksIGFycmF5UHRyLAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBzdGF0aWNfY2Fz
dDxpbnQzMl90PihzaXplb2YoaW50KSkpKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZh
bHVlPigKKyAgICAgICAgcHJvYywgU3RvcmUsIE9yaWdpbigpLCB0aGVOdW1iZXJPZlRoZUJlYXN0
LCBvdGhlckFycmF5UHRyLCAwKTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAor
ICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHRoZU51bWJlck9mVGhlQmVhc3QsIG90aGVy
QXJyYXlQdHIsIHN0YXRpY19jYXN0PGludDMyX3Q+KHNpemVvZihpbnQpKSk7CisgICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBP
cmlnaW4oKSwgbGVmdCwgcmlnaHQpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihw
cm9jLCAmYXJyYXlbMF0pID09IDEgKyAyKTsKKyAgICBDSEVDSyhhcnJheVswXSA9PSA2NjYpOwor
ICAgIENIRUNLKGFycmF5WzFdID09IDY2Nik7Cit9CisKK3ZvaWQgdGVzdExvYWRPZmZzZXRVc2lu
Z0FkZE5vdENvbnN0YW50KCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIGludCBhcnJheVtdID0geyAxLCAyIH07Cisg
ICAgVmFsdWUqIGFycmF5UHRyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCks
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAg
ICAgIHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigp
LCBhcnJheVB0ciwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSkpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2lu
KCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
ICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwgYXJyYXlQdHIsCisgICAgICAgICAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oc2l6ZW9mKGludCkpKSkpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5k
UnVuPGludD4ocHJvYywgJmFycmF5WzBdKSA9PSBhcnJheVswXSArIGFycmF5WzFdKTsKK30KKwor
dm9pZCB0ZXN0TG9hZEFkZHJTaGlmdCh1bnNpZ25lZCBzaGlmdCkKK3sKKyAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIGludCBz
bG90c1syXTsKKworICAgIC8vIEZpZ3VyZSBvdXQgd2hpY2ggc2xvdCB0byB1c2Ugd2hpbGUgaGF2
aW5nIHByb3BlciBhbGlnbm1lbnQgZm9yIHRoZSBzaGlmdC4KKyAgICBpbnQqIHNsb3Q7CisgICAg
dWludHB0cl90IGFyZzsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBzaXplb2Yoc2xvdHMpL3NpemVv
ZihzbG90c1swXSk7IGktLTspIHsKKyAgICAgICAgc2xvdCA9IHNsb3RzICsgaTsKKyAgICAgICAg
YXJnID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oc2xvdCkgPj4gc2hpZnQ7CisgICAgICAgIGlm
IChiaXR3aXNlX2Nhc3Q8aW50Kj4oYXJnIDw8IHNoaWZ0KSA9PSBzbG90KQorICAgICAgICAgICAg
YnJlYWs7CisgICAgfQorCisgICAgKnNsb3QgPSA4Njc1MzA5OworCisgICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAg
ICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTG9hZCwg
SW50MzIsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgc2hpZnQpKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxp
bnQ+KHByb2MsIGFyZykgPT0gODY3NTMwOSk7Cit9CisKK3ZvaWQgdGVzdEZyYW1lUG9pbnRlcigp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2Ms
IFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
RnJhbWVQb2ludGVyLCBPcmlnaW4oKSkpOworCisgICAgdm9pZCogZnAgPSBjb21waWxlQW5kUnVu
PHZvaWQqPihwcm9jKTsKKyAgICBDSEVDSyhmcCA8ICZwcm9jKTsKKyAgICBDSEVDSyhmcCA+PSBi
aXR3aXNlX2Nhc3Q8Y2hhcio+KCZwcm9jKSAtIDEwMDAwKTsKK30KKwordm9pZCB0ZXN0T3ZlcnJp
ZGVGcmFtZVBvaW50ZXIoKQoreworICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgLy8gQWRk
IGEgc3RhY2sgc2xvdCB0byBtYWtlIHRoZSBmcmFtZSBub24gdHJpdmlhbC4KKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFNsb3RCYXNlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBwcm9jLmFkZFN0YWNr
U2xvdCg4KSk7CisKKyAgICAgICAgLy8gU3ViIG9uIHg4NiBVc2VEZWYgdGhlIHNvdXJjZS4gSWYg
RlAgaXMgbm90IHByb3RlY3RlZCBjb3JyZWN0bHksIGl0IHdpbGwgYmUgb3ZlcnJpZGRlbiBzaW5j
ZSBpdCBpcyB0aGUgbGFzdCB2aXNpYmxlIHVzZS4KKyAgICAgICAgVmFsdWUqIG9mZnNldCA9IHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIGZwID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBGcmFtZVBvaW50ZXIsIE9yaWdpbigpKTsKKyAgICAgICAgVmFsdWUqIHJlc3VsdCA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgZnAsIG9mZnNldCk7
CisKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIHJlc3VsdCk7CisgICAgICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJv
YywgMSkpOworICAgIH0KKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxTbG90QmFzZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgcHJvYy5hZGRTdGFja1Nsb3QoOCkp
OworCisgICAgICAgIFZhbHVlKiBvZmZzZXQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZh
bHVlKiBmcCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRnJhbWVQb2ludGVyLCBPcmln
aW4oKSk7CisgICAgICAgIFZhbHVlKiBvZmZzZXRGUCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgQml0QW5kLCBPcmlnaW4oKSwgb2Zmc2V0LCBmcCk7CisgICAgICAgIFZhbHVlKiBhcmcg
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIFZhbHVlKiBvZmZzZXRBcmcgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIG9mZnNldCwgYXJnKTsKKyAgICAgICAg
VmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4o
KSwgb2Zmc2V0QXJnLCBvZmZzZXRGUCk7CisKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgICAgIENIRUNLKGNv
bXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgMSwgMikpOworICAgIH0KK30KKwordm9pZCB0ZXN0
U3RhY2tTbG90KCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAg
ICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFNs
b3RCYXNlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBwcm9jLmFkZFN0YWNrU2xvdCgxKSkpOworCisg
ICAgdm9pZCogc3RhY2tTbG90ID0gY29tcGlsZUFuZFJ1bjx2b2lkKj4ocHJvYyk7CisgICAgQ0hF
Q0soc3RhY2tTbG90IDwgJnByb2MpOworICAgIENIRUNLKHN0YWNrU2xvdCA+PSBiaXR3aXNlX2Nh
c3Q8Y2hhcio+KCZwcm9jKSAtIDEwMDAwKTsKK30KKwordm9pZCB0ZXN0TG9hZEZyb21GcmFtZVBv
aW50ZXIoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCks
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZyYW1lUG9pbnRlciwg
T3JpZ2luKCkpKSk7CisKKyAgICB2b2lkKiBmcCA9IGNvbXBpbGVBbmRSdW48dm9pZCo+KHByb2Mp
OworICAgIHZvaWQqIG15RlAgPSBfX2J1aWx0aW5fZnJhbWVfYWRkcmVzcygwKTsKKyAgICBDSEVD
SyhmcCA8PSBteUZQKTsKKyAgICBDSEVDSyhmcCA+PSBiaXR3aXNlX2Nhc3Q8Y2hhcio+KG15RlAp
IC0gMTAwMDApOworfQorCit2b2lkIHRlc3RTdG9yZUxvYWRTdGFja1Nsb3QoaW50IHZhbHVlKQor
eworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisKKyAgICBTbG90QmFzZVZhbHVlKiBzdGFjayA9CisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxTbG90QmFzZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgcHJvYy5hZGRTdGFja1Nsb3Qoc2l6
ZW9mKGludCkpKTsKKworICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAg
IHByb2MsIFN0b3JlLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSksCisgICAgICAgIHN0YWNrLCAwKTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksIHN0YWNr
KSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgdmFsdWUpID09IHZhbHVl
KTsKK30KKwordm9pZCB0ZXN0U3RvcmVGbG9hdChkb3VibGUgaW5wdXQpCit7CisgICAgLy8gU2lt
cGxlIHN0b3JlIGZyb20gYW4gYWRkcmVzcyBpbiBhIHJlZ2lzdGVyLgorICAgIHsKKyAgICAgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICAgICAg
VmFsdWUqIGFyZ3VtZW50QXNGbG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91
YmxlVG9GbG9hdCwgT3JpZ2luKCksIGFyZ3VtZW50KTsKKworICAgICAgICBWYWx1ZSogZGVzdGlu
YXRpb25BZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlLCBPcmlnaW4oKSwgYXJndW1lbnRBc0Zsb2F0LCBkZXN0
aW5hdGlvbkFkZHJlc3MpOworCisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgMCkpOworCisgICAgICAgIGZsb2F0IG91dHB1dCA9IDAuOworICAgICAgICBD
SEVDSyghY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBpbnB1dCwgJm91dHB1dCkpOworICAg
ICAgICBDSEVDSyhpc0lkZW50aWNhbChzdGF0aWNfY2FzdDxmbG9hdD4oaW5wdXQpLCBvdXRwdXQp
KTsKKyAgICB9CisKKyAgICAvLyBTaW1wbGUgaW5kZXhlZCBzdG9yZS4KKyAgICB7CisgICAgICAg
IFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworICAgICAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgICAg
IFZhbHVlKiBhcmd1bWVudEFzRmxvYXQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERv
dWJsZVRvRmxvYXQsIE9yaWdpbigpLCBhcmd1bWVudCk7CisKKyAgICAgICAgVmFsdWUqIGRlc3Rp
bmF0aW9uQmFzZUFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBpbmRl
eCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgVmFsdWUqIHNjYWxlZEluZGV4ID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFNobCwgT3JpZ2luKCksCisgICAg
ICAgICAgICBpbmRleCwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCAyKSk7CisgICAgICAgIFZhbHVlKiBkZXN0aW5hdGlvbkFkZHJlc3Mg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIHNjYWxlZEluZGV4
LCBkZXN0aW5hdGlvbkJhc2VBZGRyZXNzKTsKKworICAgICAgICByb290LT5hcHBlbmROZXc8TWVt
b3J5VmFsdWU+KHByb2MsIFN0b3JlLCBPcmlnaW4oKSwgYXJndW1lbnRBc0Zsb2F0LCBkZXN0aW5h
dGlvbkFkZHJlc3MpOworCisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgMCkpOworCisgICAgICAgIGZsb2F0IG91dHB1dCA9IDAuOworICAgICAgICBDSEVD
SyghY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBpbnB1dCwgJm91dHB1dCAtIDEsIDEpKTsK
KyAgICAgICAgQ0hFQ0soaXNJZGVudGljYWwoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGlucHV0KSwgb3V0
cHV0KSk7CisgICAgfQorfQorCit2b2lkIHRlc3RTdG9yZURvdWJsZUNvbnN0YW50QXNGbG9hdChk
b3VibGUgaW5wdXQpCit7CisgICAgLy8gU2ltcGxlIHN0b3JlIGZyb20gYW4gYWRkcmVzcyBpbiBh
IHJlZ2lzdGVyLgorICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0
RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBpbnB1dCk7CisgICAgVmFsdWUqIHZhbHVlQXNG
bG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2lu
KCksIHZhbHVlKTsKKworICAgIFZhbHVlKiBkZXN0aW5hdGlvbkFkZHJlc3MgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7CisKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlLCBP
cmlnaW4oKSwgdmFsdWVBc0Zsb2F0LCBkZXN0aW5hdGlvbkFkZHJlc3MpOworCisgICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJvb3QtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICBmbG9hdCBvdXRw
dXQgPSAwLjsKKyAgICBDSEVDSyghY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBpbnB1dCwg
Jm91dHB1dCkpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKHN0YXRpY19jYXN0PGZsb2F0PihpbnB1
dCksIG91dHB1dCkpOworfQorCit2b2lkIHRlc3RTcGlsbEdQKCkKK3sKKyAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgVmVj
dG9yPFZhbHVlKj4gc291cmNlczsKKyAgICBzb3VyY2VzLmFwcGVuZChyb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkp
OworICAgIHNvdXJjZXMuYXBwZW5kKHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgMzA7ICsraSkgeworICAgICAgICBzb3VyY2VzLmFwcGVuZCgKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgc291cmNl
c1tzb3VyY2VzLnNpemUoKSAtIDFdLCBzb3VyY2VzW3NvdXJjZXMuc2l6ZSgpIC0gMl0pCisgICAg
ICAgICk7CisgICAgfQorCisgICAgVmFsdWUqIHRvdGFsID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0
NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApOworICAgIGZvciAoVmFsdWUqIHZhbHVlIDogc291
cmNlcykKKyAgICAgICAgdG90YWwgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwg
T3JpZ2luKCksIHRvdGFsLCB2YWx1ZSk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgdG90YWwpOworICAgIGNvbXBpbGVBbmRSdW48aW50
Pihwcm9jLCAxLCAyKTsKK30KKwordm9pZCB0ZXN0U3BpbGxGUCgpCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZl
Y3RvcjxWYWx1ZSo+IHNvdXJjZXM7CisgICAgc291cmNlcy5hcHBlbmQocm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjAp
KTsKKyAgICBzb3VyY2VzLmFwcGVuZChyb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMSkpOworCisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IDMwOyArK2kpIHsKKyAgICAgICAgc291cmNlcy5hcHBlbmQoCisgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIHNvdXJj
ZXNbc291cmNlcy5zaXplKCkgLSAxXSwgc291cmNlc1tzb3VyY2VzLnNpemUoKSAtIDJdKQorICAg
ICAgICApOworICAgIH0KKworICAgIFZhbHVlKiB0b3RhbCA9IHJvb3QtPmFwcGVuZE5ldzxDb25z
dERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMC4pOworICAgIGZvciAoVmFsdWUqIHZhbHVl
IDogc291cmNlcykKKyAgICAgICAgdG90YWwgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEFkZCwgT3JpZ2luKCksIHRvdGFsLCB2YWx1ZSk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgdG90YWwpOworICAgIGNvbXBpbGVBbmRS
dW48ZG91YmxlPihwcm9jLCAxLjEsIDIuNSk7Cit9CisKK3ZvaWQgdGVzdEludDMyVG9Eb3VibGVQ
YXJ0aWFsUmVnaXN0ZXJTdGFsbCgpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBsb29wID0gcHJv
Yy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIGRvbmUgPSBwcm9jLmFkZEJsb2NrKCk7CisK
KyAgICAvLyBIZWFkLgorICAgIFZhbHVlKiB0b3RhbCA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERv
dWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMC4pOworICAgIFZhbHVlKiBjb3VudGVyID0gcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOworICAgIFVwc2lsb25WYWx1ZSogb3JpZ2luYWxUb3RhbCA9IHJvb3QtPmFw
cGVuZE5ldzxVcHNpbG9uVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0b3RhbCk7CisgICAgVXBzaWxv
blZhbHVlKiBvcmlnaW5hbENvdW50ZXIgPSByb290LT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgY291bnRlcik7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KHByb2MsIEp1bXAsIE9yaWdpbigpLCBGcmVxdWVudGVkQmxvY2sobG9vcCkpOworCisgICAgLy8g
TG9vcC4KKyAgICBWYWx1ZSogbG9vcENvdW50ZXIgPSBsb29wLT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFBoaSwgSW50NjQsIE9yaWdpbigpKTsKKyAgICBWYWx1ZSogbG9vcFRvdGFsID0gbG9vcC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBQaGksIERvdWJsZSwgT3JpZ2luKCkpOworICAgIG9yaWdp
bmFsQ291bnRlci0+c2V0UGhpKGxvb3BDb3VudGVyKTsKKyAgICBvcmlnaW5hbFRvdGFsLT5zZXRQ
aGkobG9vcFRvdGFsKTsKKworICAgIFZhbHVlKiB0cnVuY2F0ZWRDb3VudGVyID0gbG9vcC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksIGxvb3BDb3VudGVyKTsKKyAgICBW
YWx1ZSogZG91YmxlQ291bnRlciA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSVRvRCwg
T3JpZ2luKCksIHRydW5jYXRlZENvdW50ZXIpOworICAgIFZhbHVlKiB1cGRhdGVkVG90YWwgPSBs
b29wLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGRvdWJsZUNvdW50ZXIs
IGxvb3BUb3RhbCk7CisgICAgVXBzaWxvblZhbHVlKiB1cGRhdGVkVG90YWxVcHNpbG9uID0gbG9v
cC0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4ocHJvYywgT3JpZ2luKCksIHVwZGF0ZWRUb3RhbCk7
CisgICAgdXBkYXRlZFRvdGFsVXBzaWxvbi0+c2V0UGhpKGxvb3BUb3RhbCk7CisKKyAgICBWYWx1
ZSogZGVjQ291bnRlciA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4o
KSwgbG9vcENvdW50ZXIsIGxvb3AtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdp
bigpLCAxKSk7CisgICAgVXBzaWxvblZhbHVlKiBkZWNDb3VudGVyVXBzaWxvbiA9IGxvb3AtPmFw
cGVuZE5ldzxVcHNpbG9uVmFsdWU+KHByb2MsIE9yaWdpbigpLCBkZWNDb3VudGVyKTsKKyAgICBk
ZWNDb3VudGVyVXBzaWxvbi0+c2V0UGhpKGxvb3BDb3VudGVyKTsKKyAgICBsb29wLT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAg
IGRlY0NvdW50ZXIsCisgICAgICAgIEZyZXF1ZW50ZWRCbG9jayhsb29wKSwgRnJlcXVlbnRlZEJs
b2NrKGRvbmUpKTsKKworICAgIC8vIFRhaWwuCisgICAgZG9uZS0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHVwZGF0ZWRUb3RhbCk7CisgICAgQ0hFQ0soaXNJ
ZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIDEwMDAwMCksIDUwMDAwNTAwMDAu
KSk7Cit9CisKK3ZvaWQgdGVzdEludDMyVG9Eb3VibGVQYXJ0aWFsUmVnaXN0ZXJXaXRob3V0U3Rh
bGwoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogbG9vcCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBCYXNpY0Jsb2NrKiBkb25lID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgLy8gSGVhZC4KKyAg
ICBWYWx1ZSogdG90YWwgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIDAuKTsKKyAgICBWYWx1ZSogY291bnRlciA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAg
ICBVcHNpbG9uVmFsdWUqIG9yaWdpbmFsVG90YWwgPSByb290LT5hcHBlbmROZXc8VXBzaWxvblZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgdG90YWwpOworICAgIFVwc2lsb25WYWx1ZSogb3JpZ2luYWxD
b3VudGVyID0gcm9vdC0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4ocHJvYywgT3JpZ2luKCksIGNv
dW50ZXIpOworICAgIHVpbnQ2NF90IGZvclBhZGRpbmdJbnB1dDsKKyAgICBWYWx1ZSogZm9yUGFk
ZGluZ0lucHV0QWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgJmZvclBhZGRpbmdJbnB1dCk7CisgICAgdWludDY0X3QgZm9yUGFkZGluZ091dHB1
dDsKKyAgICBWYWx1ZSogZm9yUGFkZGluZ091dHB1dEFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZmb3JQYWRkaW5nT3V0cHV0KTsKKyAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgSnVtcCwgT3JpZ2luKCksIEZyZXF1ZW50
ZWRCbG9jayhsb29wKSk7CisKKyAgICAvLyBMb29wLgorICAgIFZhbHVlKiBsb29wQ291bnRlciA9
IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUGhpLCBJbnQ2NCwgT3JpZ2luKCkpOworICAg
IFZhbHVlKiBsb29wVG90YWwgPSBsb29wLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFBoaSwgRG91
YmxlLCBPcmlnaW4oKSk7CisgICAgb3JpZ2luYWxDb3VudGVyLT5zZXRQaGkobG9vcENvdW50ZXIp
OworICAgIG9yaWdpbmFsVG90YWwtPnNldFBoaShsb29wVG90YWwpOworCisgICAgVmFsdWUqIHRy
dW5jYXRlZENvdW50ZXIgPSBsb29wLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmln
aW4oKSwgbG9vcENvdW50ZXIpOworICAgIFZhbHVlKiBkb3VibGVDb3VudGVyID0gbG9vcC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBJVG9ELCBPcmlnaW4oKSwgdHJ1bmNhdGVkQ291bnRlcik7Cisg
ICAgVmFsdWUqIHVwZGF0ZWRUb3RhbCA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRk
LCBPcmlnaW4oKSwgZG91YmxlQ291bnRlciwgbG9vcFRvdGFsKTsKKworICAgIC8vIEFkZCBlbm91
Z2ggcGFkZGluZyBpbnN0cnVjdGlvbnMgdG8gYXZvaWQgYSBzdGFsbC4KKyAgICBWYWx1ZSogbG9h
ZFBhZGRpbmcgPSBsb29wLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDY0
LCBPcmlnaW4oKSwgZm9yUGFkZGluZ0lucHV0QWRkcmVzcyk7CisgICAgVmFsdWUqIHBhZGRpbmcg
PSBsb29wLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdFhvciwgT3JpZ2luKCksIGxvYWRQYWRk
aW5nLCBsb29wQ291bnRlcik7CisgICAgcGFkZGluZyA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgQWRkLCBPcmlnaW4oKSwgcGFkZGluZywgbG9vcENvdW50ZXIpOworICAgIHBhZGRpbmcg
PSBsb29wLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdE9yLCBPcmlnaW4oKSwgcGFkZGluZywg
bG9vcENvdW50ZXIpOworICAgIHBhZGRpbmcgPSBsb29wLT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFN1YiwgT3JpZ2luKCksIHBhZGRpbmcsIGxvb3BDb3VudGVyKTsKKyAgICBwYWRkaW5nID0gbG9v
cC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLCBwYWRkaW5nLCBsb29w
Q291bnRlcik7CisgICAgcGFkZGluZyA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRk
LCBPcmlnaW4oKSwgcGFkZGluZywgbG9vcENvdW50ZXIpOworICAgIHBhZGRpbmcgPSBsb29wLT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdE9yLCBPcmlnaW4oKSwgcGFkZGluZywgbG9vcENvdW50
ZXIpOworICAgIHBhZGRpbmcgPSBsb29wLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3Jp
Z2luKCksIHBhZGRpbmcsIGxvb3BDb3VudGVyKTsKKyAgICBwYWRkaW5nID0gbG9vcC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLCBwYWRkaW5nLCBsb29wQ291bnRlcik7
CisgICAgcGFkZGluZyA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4o
KSwgcGFkZGluZywgbG9vcENvdW50ZXIpOworICAgIHBhZGRpbmcgPSBsb29wLT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEJpdE9yLCBPcmlnaW4oKSwgcGFkZGluZywgbG9vcENvdW50ZXIpOworICAg
IHBhZGRpbmcgPSBsb29wLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIHBh
ZGRpbmcsIGxvb3BDb3VudGVyKTsKKyAgICBsb29wLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHBy
b2MsIFN0b3JlLCBPcmlnaW4oKSwgcGFkZGluZywgZm9yUGFkZGluZ091dHB1dEFkZHJlc3MpOwor
CisgICAgVXBzaWxvblZhbHVlKiB1cGRhdGVkVG90YWxVcHNpbG9uID0gbG9vcC0+YXBwZW5kTmV3
PFVwc2lsb25WYWx1ZT4ocHJvYywgT3JpZ2luKCksIHVwZGF0ZWRUb3RhbCk7CisgICAgdXBkYXRl
ZFRvdGFsVXBzaWxvbi0+c2V0UGhpKGxvb3BUb3RhbCk7CisKKyAgICBWYWx1ZSogZGVjQ291bnRl
ciA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgbG9vcENvdW50
ZXIsIGxvb3AtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7Cisg
ICAgVXBzaWxvblZhbHVlKiBkZWNDb3VudGVyVXBzaWxvbiA9IGxvb3AtPmFwcGVuZE5ldzxVcHNp
bG9uVmFsdWU+KHByb2MsIE9yaWdpbigpLCBkZWNDb3VudGVyKTsKKyAgICBkZWNDb3VudGVyVXBz
aWxvbi0+c2V0UGhpKGxvb3BDb3VudGVyKTsKKyAgICBsb29wLT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCisgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgIGRlY0NvdW50ZXIs
CisgICAgICAgIEZyZXF1ZW50ZWRCbG9jayhsb29wKSwgRnJlcXVlbnRlZEJsb2NrKGRvbmUpKTsK
KworICAgIC8vIFRhaWwuCisgICAgZG9uZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJl
dHVybiwgT3JpZ2luKCksIHVwZGF0ZWRUb3RhbCk7CisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29t
cGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIDEwMDAwMCksIDUwMDAwNTAwMDAuKSk7Cit9CisKK3Zv
aWQgdGVzdEJyYW5jaCgpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsK
KworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgQnJhbmNo
LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
IHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisg
ICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2Fz
ZSkpOworCisgICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDMy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7CisKKyAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICBlbHNl
Q2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAg
IGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIENIRUNLKGludm9rZTxpbnQ+KCpj
b2RlLCA0MikgPT0gMSk7CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsIDApID09IDApOwor
fQorCit2b2lkIHRlc3RCcmFuY2hQdHIoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogdGhlbkNh
c2UgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFk
ZEJsb2NrKCk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHBy
b2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAg
RnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNlKSk7CisK
KyAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAorICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIDEpKTsKKworICAgIGVsc2VDYXNlLT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIGVsc2VDYXNlLT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgYXV0byBj
b2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsIHN0
YXRpY19jYXN0PGludHB0cl90Pig0MikpID09IDEpOworICAgIENIRUNLKGludm9rZTxpbnQ+KCpj
b2RlLCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMCkpID09IDApOworfQorCit2b2lkIHRlc3REaWFt
b25kKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygp
OworICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2lj
QmxvY2sqIGRvbmUgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCisgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhl
bkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKKworICAgIFVwc2lsb25WYWx1ZSog
dGhlblJlc3VsdCA9IHRoZW5DYXNlLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPigKKyAgICAgICAg
cHJvYywgT3JpZ2luKCksIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgMSkpOworICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywg
SnVtcCwgT3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayhkb25lKSk7CisKKyAgICBVcHNpbG9uVmFs
dWUqIGVsc2VSZXN1bHQgPSBlbHNlQ2FzZS0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4oCisgICAg
ICAgIHByb2MsIE9yaWdpbigpLCBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIDApKTsKKyAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHBy
b2MsIEp1bXAsIE9yaWdpbigpLCBGcmVxdWVudGVkQmxvY2soZG9uZSkpOworCisgICAgVmFsdWUq
IHBoaSA9IGRvbmUtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUGhpLCBJbnQzMiwgT3JpZ2luKCkp
OworICAgIHRoZW5SZXN1bHQtPnNldFBoaShwaGkpOworICAgIGVsc2VSZXN1bHQtPnNldFBoaShw
aGkpOworICAgIGRvbmUtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCBwaGkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgQ0hF
Q0soaW52b2tlPGludD4oKmNvZGUsIDQyKSA9PSAxKTsKKyAgICBDSEVDSyhpbnZva2U8aW50Pigq
Y29kZSwgMCkgPT0gMCk7Cit9CisKK3ZvaWQgdGVzdEJyYW5jaE5vdEVxdWFsKCkKK3sKKyAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxv
Y2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTm90RXF1YWwsIE9yaWdpbigp
LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBw
cm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCAwKSksCisgICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9j
ayhlbHNlQ2FzZSkpOworCisgICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAg
ICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5l
dzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7CisKKyAgICBlbHNlQ2FzZS0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAg
ICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDAp
KTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIENIRUNLKGludm9r
ZTxpbnQ+KCpjb2RlLCA0MikgPT0gMSk7CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsIDAp
ID09IDApOworfQorCit2b2lkIHRlc3RCcmFuY2hOb3RFcXVhbENvbW11dGUoKQoreworICAgIFBy
b2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgQmFzaWNCbG9jayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9j
ayogZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCisgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBOb3RFcXVhbCwgT3JpZ2luKCks
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgMCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAg
ICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpKSwKKyAgICAgICAgRnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2Nr
KGVsc2VDYXNlKSk7CisKKyAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAg
ICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKTsKKworICAgIGVsc2VDYXNlLT5hcHBl
bmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAg
ICAgIGVsc2VDYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkp
OworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgQ0hFQ0soaW52b2tl
PGludD4oKmNvZGUsIDQyKSA9PSAxKTsKKyAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgMCkg
PT0gMCk7Cit9CisKK3ZvaWQgdGVzdEJyYW5jaE5vdEVxdWFsTm90RXF1YWwoKQoreworICAgIFBy
b2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgQmFzaWNCbG9jayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9j
ayogZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCisgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBOb3RFcXVhbCwgT3JpZ2luKCks
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHBy
b2MsIE5vdEVxdWFsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAg
ICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKSwKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSksCisgICAg
ICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkp
OworCisgICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCAxKSk7CisKKyAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICBlbHNlQ2Fz
ZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIGF1
dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2Rl
LCA0MikgPT0gMSk7CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsIDApID09IDApOworfQor
Cit2b2lkIHRlc3RCcmFuY2hFcXVhbCgpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2Fz
ZSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRk
QmxvY2soKTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJv
YywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAg
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpLAorICAgICAgICBGcmVxdWVudGVk
QmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKKworICAgIHRoZW5D
YXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksCisgICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmln
aW4oKSwgMCkpOworCisgICAgZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21w
aWxlUHJvYyhwcm9jKTsKKyAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgNDIpID09IDEpOwor
ICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAwKSA9PSAwKTsKK30KKwordm9pZCB0ZXN0QnJh
bmNoRXF1YWxFcXVhbCgpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsK
KworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgQnJhbmNo
LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
IHByb2MsIEVxdWFsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAorICAgICAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgIHByb2MsIFRy
dW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgMCkpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIDApKSwKKyAgICAgICAgRnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVl
bnRlZEJsb2NrKGVsc2VDYXNlKSk7CisKKyAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICB0aGVuQ2FzZS0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKTsKKworICAgIGVsc2VD
YXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksCisgICAgICAgIGVsc2VDYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmln
aW4oKSwgMCkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgQ0hF
Q0soaW52b2tlPGludD4oKmNvZGUsIDQyKSA9PSAxKTsKKyAgICBDSEVDSyhpbnZva2U8aW50Pigq
Y29kZSwgMCkgPT0gMCk7Cit9CisKK3ZvaWQgdGVzdEJyYW5jaEVxdWFsQ29tbXV0ZSgpCit7Cisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNp
Y0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCAwKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAg
ICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSkpLAorICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxv
Y2soZWxzZUNhc2UpKTsKKworICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisg
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHRoZW5DYXNlLT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgZWxzZUNhc2UtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAg
ICAgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAx
KSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICBDSEVDSyhpbnZv
a2U8aW50PigqY29kZSwgNDIpID09IDEpOworICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAw
KSA9PSAwKTsKK30KKwordm9pZCB0ZXN0QnJhbmNoRXF1YWxFcXVhbDEoKQoreworICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAg
QmFzaWNCbG9jayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayog
ZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUoCisgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBFcXVhbCwgT3JpZ2luKCksCisgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEVx
dWFsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKSwKKyAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSksCisgICAgICAgIEZyZXF1
ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOworCisgICAg
dGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKKyAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAwKSk7CisKKyAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAor
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICBlbHNlQ2FzZS0+YXBwZW5k
TmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKTsKKworICAgIGF1dG8gY29kZSA9
IGNvbXBpbGVQcm9jKHByb2MpOworICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCA0MikgPT0g
MSk7CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsIDApID09IDApOworfQorCit2b2lkIHRl
c3RCcmFuY2hFcXVhbE9yVW5vcmRlcmVkQXJncyhkb3VibGUgYSwgZG91YmxlIGIpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Js
b2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBhcmd1bWVudEEg
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUklu
Zm86OmFyZ3VtZW50RlBSMCk7CisgICAgVmFsdWUqIGFyZ3VtZW50QiA9IHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIx
KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIEJyYW5j
aCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAg
ICBwcm9jLCBFcXVhbE9yVW5vcmRlcmVkLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIGFyZ3VtZW50
QSwKKyAgICAgICAgICAgIGFyZ3VtZW50QiksCisgICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVu
Q2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOworCisgICAgdGhlbkNhc2UtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAg
ICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0Mikp
OworCisgICAgZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCAtMTMpKTsKKworICAgIGludDY0X3QgZXhwZWN0ZWQgPSAoc3Rk
Ojppc3Vub3JkZXJlZChhLCBiKSB8fCBhID09IGIpID8gNDIgOiAtMTM7CisgICAgQ0hFQ0soY29t
cGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhLCBiKSA9PSBleHBlY3RlZCk7Cit9CisKK3ZvaWQg
dGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVyZWRBcmdzKGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Js
b2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBhcmd1bWVudEEg
PSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEZsb2F0LCBPcmlnaW4o
KSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogYXJndW1lbnRCID0gcm9v
dC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBGbG9hdCwgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCisgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBFcXVhbE9yVW5vcmRlcmVkLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIGFyZ3VtZW50QSwKKyAgICAgICAgICAgIGFyZ3VtZW50QiksCisgICAg
ICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkp
OworCisgICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCA0MikpOworCisgICAgZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgZWxzZUNh
c2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMTMpKTsKKworICAg
IGludDY0X3QgZXhwZWN0ZWQgPSAoc3RkOjppc3Vub3JkZXJlZChhLCBiKSB8fCBhID09IGIpID8g
NDIgOiAtMTM7CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCAmYSwgJmIp
ID09IGV4cGVjdGVkKTsKK30KKwordm9pZCB0ZXN0QnJhbmNoTm90RXF1YWxBbmRPcmRlcmVkQXJn
cyhkb3VibGUgYSwgZG91YmxlIGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxv
Y2soKTsKKworICAgIFZhbHVlKiBhcmd1bWVudEEgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgVmFs
dWUqIGFyZ3VtZW50QiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIxKTsKKyAgICBWYWx1ZSogZXF1YWxPclVub3Jk
ZXJlZCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIEVxdWFsT3JVbm9y
ZGVyZWQsIE9yaWdpbigpLAorICAgICAgICBhcmd1bWVudEEsCisgICAgICAgIGFyZ3VtZW50Qik7
CisgICAgVmFsdWUqIG5vdEVxdWFsQW5kT3JkZXJlZCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApLAorICAgICAgICBlcXVhbE9yVW5vcmRl
cmVkKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIEJy
YW5jaCwgT3JpZ2luKCksCisgICAgICAgIG5vdEVxdWFsQW5kT3JkZXJlZCwKKyAgICAgICAgRnJl
cXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNlKSk7CisKKyAg
ICB0aGVuQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAorICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIDQyKSk7CisKKyAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICBlbHNlQ2FzZS0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xMykpOworCisgICAgaW50NjRf
dCBleHBlY3RlZCA9ICghc3RkOjppc3Vub3JkZXJlZChhLCBiKSAmJiBhICE9IGIpID8gNDIgOiAt
MTM7CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhLCBiKSA9PSBleHBl
Y3RlZCk7Cit9CisKK3ZvaWQgdGVzdEJyYW5jaE5vdEVxdWFsQW5kT3JkZXJlZEFyZ3MoZmxvYXQg
YSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRC
bG9jaygpOworICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOworCisg
ICAgVmFsdWUqIGFyZ3VtZW50QSA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywg
TG9hZCwgRmxvYXQsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZh
bHVlKiBhcmd1bWVudEIgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQs
IEZsb2F0LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICBWYWx1ZSog
ZXF1YWxPclVub3JkZXJlZCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2Ms
IEVxdWFsT3JVbm9yZGVyZWQsIE9yaWdpbigpLAorICAgICAgICBhcmd1bWVudEEsCisgICAgICAg
IGFyZ3VtZW50Qik7CisgICAgVmFsdWUqIG5vdEVxdWFsQW5kT3JkZXJlZCA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4oKSwKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApLAorICAgICAgICBl
cXVhbE9yVW5vcmRlcmVkKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAg
ICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgIG5vdEVxdWFsQW5kT3JkZXJlZCwK
KyAgICAgICAgRnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VD
YXNlKSk7CisKKyAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnN0
MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKSk7CisKKyAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICBl
bHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xMykpOwor
CisgICAgaW50NjRfdCBleHBlY3RlZCA9ICghc3RkOjppc3Vub3JkZXJlZChhLCBiKSAmJiBhICE9
IGIpID8gNDIgOiAtMTM7CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCAm
YSwgJmIpID09IGV4cGVjdGVkKTsKK30KKwordm9pZCB0ZXN0QnJhbmNoRXF1YWxPclVub3JkZXJl
ZERvdWJsZUFyZ0ltbShkb3VibGUgYSwgZG91YmxlIGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2Nr
KiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9
IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBhcmd1bWVudEEgPSByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBS
MCk7CisgICAgVmFsdWUqIGFyZ3VtZW50QiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYik7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAorICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgRXF1YWxPclVub3JkZXJlZCwgT3JpZ2luKCks
CisgICAgICAgICAgICBhcmd1bWVudEEsCisgICAgICAgICAgICBhcmd1bWVudEIpLAorICAgICAg
ICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsK
KworICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCisgICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgNDIpKTsKKworICAgIGVsc2VDYXNlLT5hcHBlbmROZXdDb250cm9s
VmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIGVsc2VDYXNl
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTEzKSk7CisKKyAgICBp
bnQ2NF90IGV4cGVjdGVkID0gKHN0ZDo6aXN1bm9yZGVyZWQoYSwgYikgfHwgYSA9PSBiKSA/IDQy
IDogLTEzOworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYSkgPT0gZXhw
ZWN0ZWQpOworfQorCit2b2lkIHRlc3RCcmFuY2hFcXVhbE9yVW5vcmRlcmVkRmxvYXRBcmdJbW0o
ZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJv
Yy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygp
OworCisgICAgVmFsdWUqIGFyZ3VtZW50QSA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
cHJvYywgTG9hZCwgRmxvYXQsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwor
ICAgIFZhbHVlKiBhcmd1bWVudEIgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgYik7CisKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisg
ICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBFcXVhbE9yVW5vcmRlcmVkLCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgIGFyZ3VtZW50QSwKKyAgICAgICAgICAgIGFyZ3VtZW50QiksCisgICAgICAgIEZy
ZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOworCisg
ICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKKyAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCA0MikpOworCisgICAgZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgZWxzZUNhc2UtPmFw
cGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMTMpKTsKKworICAgIGludDY0
X3QgZXhwZWN0ZWQgPSAoc3RkOjppc3Vub3JkZXJlZChhLCBiKSB8fCBhID09IGIpID8gNDIgOiAt
MTM7CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCAmYSkgPT0gZXhwZWN0
ZWQpOworfQorCit2b2lkIHRlc3RCcmFuY2hFcXVhbE9yVW5vcmRlcmVkRG91YmxlSW1tcyhkb3Vi
bGUgYSwgZG91YmxlIGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsK
KworICAgIFZhbHVlKiBhcmd1bWVudEEgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIGEpOworICAgIFZhbHVlKiBhcmd1bWVudEIgPSByb290LT5hcHBl
bmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpOworICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEVxdWFsT3JV
bm9yZGVyZWQsIE9yaWdpbigpLAorICAgICAgICAgICAgYXJndW1lbnRBLAorICAgICAgICAgICAg
YXJndW1lbnRCKSwKKyAgICAgICAgRnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRl
ZEJsb2NrKGVsc2VDYXNlKSk7CisKKyAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICB0aGVuQ2FzZS0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKSk7CisKKyAgICBlbHNlQ2Fz
ZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LAorICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIC0xMykpOworCisgICAgaW50NjRfdCBleHBlY3RlZCA9IChzdGQ6OmlzdW5vcmRlcmVkKGEs
IGIpIHx8IGEgPT0gYikgPyA0MiA6IC0xMzsKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0
X3Q+KHByb2MpID09IGV4cGVjdGVkKTsKK30KKwordm9pZCB0ZXN0QnJhbmNoRXF1YWxPclVub3Jk
ZXJlZEZsb2F0SW1tcyhmbG9hdCBhLCBmbG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOwor
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayog
dGhlbkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogZWxzZUNhc2UgPSBw
cm9jLmFkZEJsb2NrKCk7CisKKyAgICBWYWx1ZSogYXJndW1lbnRBID0gcm9vdC0+YXBwZW5kTmV3
PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpOworICAgIFZhbHVlKiBhcmd1bWVu
dEIgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7
CisKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIEJyYW5j
aCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAg
ICBwcm9jLCBFcXVhbE9yVW5vcmRlcmVkLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIGFyZ3VtZW50
QSwKKyAgICAgICAgICAgIGFyZ3VtZW50QiksCisgICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVu
Q2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOworCisgICAgdGhlbkNhc2UtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAg
ICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0Mikp
OworCisgICAgZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCAtMTMpKTsKKworICAgIGludDY0X3QgZXhwZWN0ZWQgPSAoc3Rk
Ojppc3Vub3JkZXJlZChhLCBiKSB8fCBhID09IGIpID8gNDIgOiAtMTM7CisgICAgQ0hFQ0soY29t
cGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jKSA9PSBleHBlY3RlZCk7Cit9CisKK3ZvaWQgdGVzdEJy
YW5jaEVxdWFsT3JVbm9yZGVyZWRGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbihmbG9h
dCBhLCBmbG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogdGhlbkNhc2UgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisK
KyAgICBWYWx1ZSogYXJndW1lbnQxID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9j
LCBMb2FkLCBGbG9hdCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAg
VmFsdWUqIGFyZ3VtZW50MiA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9h
ZCwgRmxvYXQsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgIFZhbHVl
KiBhcmd1bWVudDFBc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRU
b0RvdWJsZSwgT3JpZ2luKCksIGFyZ3VtZW50MSk7CisgICAgVmFsdWUqIGFyZ3VtZW50MkFzRG91
YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4o
KSwgYXJndW1lbnQyKTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgIHByb2MsIEVxdWFsT3JVbm9yZGVyZWQsIE9yaWdpbigpLAorICAgICAg
ICAgICAgYXJndW1lbnQxQXNEb3VibGUsCisgICAgICAgICAgICBhcmd1bWVudDJBc0RvdWJsZSks
CisgICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNl
Q2FzZSkpOworCisgICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0MikpOworCisgICAgZWxzZUNhc2UtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAg
ZWxzZUNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMTMpKTsK
KworICAgIGludDY0X3QgZXhwZWN0ZWQgPSAoc3RkOjppc3Vub3JkZXJlZChhLCBiKSB8fCBhID09
IGIpID8gNDIgOiAtMTM7CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCAm
YSwgJmIpID09IGV4cGVjdGVkKTsKK30KKwordm9pZCB0ZXN0QnJhbmNoRm9sZChpbnQgdmFsdWUp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHZhbHVl
KSwKKyAgICAgICAgRnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVs
c2VDYXNlKSk7CisKKyAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENv
bnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKTsKKworICAgIGVsc2VDYXNlLT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAg
IGVsc2VDYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwor
CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpID09ICEhdmFsdWUpOworfQorCit2
b2lkIHRlc3REaWFtb25kRm9sZChpbnQgdmFsdWUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0
aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHBy
b2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBkb25lID0gcHJvYy5hZGRCbG9jaygpOwor
CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBCcmFuY2gs
IE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgdmFsdWUpLAorICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVx
dWVudGVkQmxvY2soZWxzZUNhc2UpKTsKKworICAgIFVwc2lsb25WYWx1ZSogdGhlblJlc3VsdCA9
IHRoZW5DYXNlLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPigKKyAgICAgICAgcHJvYywgT3JpZ2lu
KCksIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkp
OworICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgSnVtcCwgT3JpZ2lu
KCksIEZyZXF1ZW50ZWRCbG9jayhkb25lKSk7CisKKyAgICBVcHNpbG9uVmFsdWUqIGVsc2VSZXN1
bHQgPSBlbHNlQ2FzZS0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4oCisgICAgICAgIHByb2MsIE9y
aWdpbigpLCBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IDApKTsKKyAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIEp1bXAsIE9y
aWdpbigpLCBGcmVxdWVudGVkQmxvY2soZG9uZSkpOworCisgICAgVmFsdWUqIHBoaSA9IGRvbmUt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUGhpLCBJbnQzMiwgT3JpZ2luKCkpOworICAgIHRoZW5S
ZXN1bHQtPnNldFBoaShwaGkpOworICAgIGVsc2VSZXN1bHQtPnNldFBoaShwaGkpOworICAgIGRv
bmUtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBwaGkpOwor
CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpID09ICEhdmFsdWUpOworfQorCit2
b2lkIHRlc3RCcmFuY2hOb3RFcXVhbEZvbGRQdHIoaW50cHRyX3QgdmFsdWUpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2Nr
KiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZSgKKyAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIE5vdEVxdWFsLCBPcmlnaW4oKSwK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgdmFsdWUpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCAwKSksCisgICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZy
ZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOworCisgICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgdGhlbkNh
c2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7CisKKyAgICBl
bHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAorICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIDApKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jKSA9PSAh
IXZhbHVlKTsKK30KKwordm9pZCB0ZXN0QnJhbmNoRXF1YWxGb2xkUHRyKGludHB0cl90IHZhbHVl
KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgQmFzaWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBFcXVhbCwg
T3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIHZhbHVlKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0
clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpLAorICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhl
bkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKKworICAgIHRoZW5DYXNlLT5hcHBl
bmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAg
ICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkp
OworCisgICAgZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4o
cHJvYykgPT0gIXZhbHVlKTsKK30KKwordm9pZCB0ZXN0QnJhbmNoTG9hZFB0cigpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Js
b2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIExvYWQsIHBvaW50
ZXJUeXBlKCksIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAg
ICAgRnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNlKSk7
CisKKyAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLAorICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIDEpKTsKKworICAgIGVsc2VDYXNlLT5hcHBlbmROZXdDb250cm9s
VmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIGVsc2VDYXNl
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgYXV0
byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgaW50cHRyX3QgY29uZDsKKyAgICBjb25k
ID0gNDI7CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsICZjb25kKSA9PSAxKTsKKyAgICBj
b25kID0gMDsKKyAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgJmNvbmQpID09IDApOworfQor
Cit2b2lkIHRlc3RCcmFuY2hMb2FkMzIoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogdGhlbkNh
c2UgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFk
ZEJsb2NrKCk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHBy
b2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1
ZT4oCisgICAgICAgICAgICBwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBG
cmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKKworICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHRoZW5D
YXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpOworCisgICAg
ZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKKyAgICAgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAwKSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAg
ICBpbnQzMl90IGNvbmQ7CisgICAgY29uZCA9IDQyOworICAgIENIRUNLKGludm9rZTxpbnQ+KCpj
b2RlLCAmY29uZCkgPT0gMSk7CisgICAgY29uZCA9IDA7CisgICAgQ0hFQ0soaW52b2tlPGludD4o
KmNvZGUsICZjb25kKSA9PSAwKTsKK30KKwordm9pZCB0ZXN0QnJhbmNoTG9hZDhTKCkKK3sKKyAg
ICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2lj
QmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICBy
b290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTG9hZDhTLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisgICAgICAgIEZyZXF1ZW50
ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOworCisgICAgdGhl
bkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKKyAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCAxKSk7CisKKyAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAg
ICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIGF1dG8gY29kZSA9IGNv
bXBpbGVQcm9jKHByb2MpOworICAgIGludDhfdCBjb25kOworICAgIGNvbmQgPSAtMTsKKyAgICBD
SEVDSyhpbnZva2U8aW50PigqY29kZSwgJmNvbmQpID09IDEpOworICAgIGNvbmQgPSAwOworICAg
IENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAmY29uZCkgPT0gMCk7Cit9CisKK3ZvaWQgdGVzdEJy
YW5jaExvYWQ4WigpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKwor
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgQnJhbmNoLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAg
ICAgIHByb2MsIExvYWQ4WiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkp
LAorICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxz
ZUNhc2UpKTsKKworICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAg
IHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpOworCisgICAgZWxzZUNhc2UtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAg
ZWxzZUNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisK
KyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICB1aW50OF90IGNvbmQ7Cisg
ICAgY29uZCA9IDE7CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsICZjb25kKSA9PSAxKTsK
KyAgICBjb25kID0gMDsKKyAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgJmNvbmQpID09IDAp
OworfQorCit2b2lkIHRlc3RCcmFuY2hMb2FkMTZTKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sq
IHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0g
cHJvYy5hZGRCbG9jaygpOworCisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAg
ICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8TWVt
b3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTG9hZDE2UywgT3JpZ2luKCksCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2Up
LCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKKworICAgIHRoZW5DYXNlLT5hcHBlbmROZXdD
b250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHRo
ZW5DYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpOworCisg
ICAgZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKKyAgICAgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsK
KyAgICBpbnQxNl90IGNvbmQ7CisgICAgY29uZCA9IC0xOworICAgIENIRUNLKGludm9rZTxpbnQ+
KCpjb2RlLCAmY29uZCkgPT0gMSk7CisgICAgY29uZCA9IDA7CisgICAgQ0hFQ0soaW52b2tlPGlu
dD4oKmNvZGUsICZjb25kKSA9PSAwKTsKK30KKwordm9pZCB0ZXN0QnJhbmNoTG9hZDE2WigpCit7
CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBC
YXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIExvYWQx
NlosIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAgICAgRnJl
cXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNlKSk7CisKKyAg
ICB0aGVuQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAorICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIDEpKTsKKworICAgIGVsc2VDYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUo
CisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIGVsc2VDYXNlLT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgYXV0byBjb2Rl
ID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgdWludDE2X3QgY29uZDsKKyAgICBjb25kID0gMTsK
KyAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgJmNvbmQpID09IDEpOworICAgIGNvbmQgPSAw
OworICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAmY29uZCkgPT0gMCk7Cit9CisKK3ZvaWQg
dGVzdEJyYW5jaDhXaXRoTG9hZDhaSW5kZXgoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogdGhl
bkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogZWxzZUNhc2UgPSBwcm9j
LmFkZEJsb2NrKCk7CisKKyAgICBpbnQgbG9nU2NhbGUgPSAxOworICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFib3ZlLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAg
ICAgICAgcHJvYywgTG9hZDhaLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAor
ICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCisgICAgICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9jLCBT
aGwsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIGxvZ1NjYWxlKSkpKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAyNTApKSwKKyAgICAgICAgRnJlcXVlbnRlZEJs
b2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNlKSk7CisKKyAgICB0aGVuQ2Fz
ZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LAorICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIDEpKTsKKworICAgIGVsc2VDYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAg
IHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIGVsc2VDYXNlLT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgYXV0byBjb2RlID0gY29tcGls
ZVByb2MocHJvYyk7CisgICAgdWludDMyX3QgY29uZDsKKyAgICBjb25kID0gMHhmZmZmZmZmZlU7
IC8vIEFsbCBieXRlcyBhcmUgMHhmZi4KKyAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgJmNv
bmQgLSAyLCAoc2l6ZW9mKHVpbnQzMl90KSAqIDIpID4+IGxvZ1NjYWxlKSA9PSAxKTsKKyAgICBj
b25kID0gMHgwMDAwMDAwMFU7IC8vIEFsbCBieXRlcyBhcmUgMC4KKyAgICBDSEVDSyhpbnZva2U8
aW50PigqY29kZSwgJmNvbmQgLSAyLCAoc2l6ZW9mKHVpbnQzMl90KSAqIDIpID4+IGxvZ1NjYWxl
KSA9PSAwKTsKK30KKwordm9pZCB0ZXN0Q29tcGxleCh1bnNpZ25lZCBudW1WYXJzLCB1bnNpZ25l
ZCBudW1Db25zdHJ1Y3RzKQoreworICAgIE1vbm90b25pY1RpbWUgYmVmb3JlID0gTW9ub3Rvbmlj
VGltZTo6bm93KCk7CisKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiBjdXJy
ZW50ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgQ29uc3QzMlZhbHVlKiBvbmUgPSBjdXJyZW50
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSk7CisKKyAgICBWZWN0
b3I8aW50MzJfdD4gdmFyU2xvdHM7CisgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtVmFyczsgaS0t
OykKKyAgICAgICAgdmFyU2xvdHMuYXBwZW5kKGkpOworCisgICAgVmVjdG9yPFZhbHVlKj4gdmFy
czsKKyAgICBmb3IgKGludDMyX3QmIHZhclNsb3QgOiB2YXJTbG90cykgeworICAgICAgICBWYWx1
ZSogdmFyU2xvdFB0ciA9IGN1cnJlbnQtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgJnZhclNsb3QpOworICAgICAgICB2YXJzLmFwcGVuZChjdXJyZW50LT5hcHBlbmRO
ZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgdmFyU2xvdFB0cikp
OworICAgIH0KKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Db25zdHJ1Y3RzOyAr
K2kpIHsKKyAgICAgICAgaWYgKGkgJiAxKSB7CisgICAgICAgICAgICAvLyBDb250cm9sIGZsb3cg
ZGlhbW9uZC4KKyAgICAgICAgICAgIHVuc2lnbmVkIHByZWRpY2F0ZVZhckluZGV4ID0gKChpID4+
IDEpICsgMikgJSBudW1WYXJzOworICAgICAgICAgICAgdW5zaWduZWQgdGhlbkluY1ZhckluZGV4
ID0gKChpID4+IDEpICsgMCkgJSBudW1WYXJzOworICAgICAgICAgICAgdW5zaWduZWQgZWxzZUlu
Y1ZhckluZGV4ID0gKChpID4+IDEpICsgMSkgJSBudW1WYXJzOworCisgICAgICAgICAgICBCYXNp
Y0Jsb2NrKiB0aGVuQmxvY2sgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgICAgICBCYXNpY0Js
b2NrKiBlbHNlQmxvY2sgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgICAgICBCYXNpY0Jsb2Nr
KiBjb250aW51YXRpb24gPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgICAgIGN1cnJlbnQt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgICAgICBwcm9jLCBCcmFuY2gsIE9y
aWdpbigpLCB2YXJzW3ByZWRpY2F0ZVZhckluZGV4XSwKKyAgICAgICAgICAgICAgICBGcmVxdWVu
dGVkQmxvY2sodGhlbkJsb2NrKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VCbG9jaykpOworCisgICAg
ICAgICAgICBVcHNpbG9uVmFsdWUqIHRoZW5UaGVuUmVzdWx0ID0gdGhlbkJsb2NrLT5hcHBlbmRO
ZXc8VXBzaWxvblZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBPcmlnaW4oKSwKKyAgICAg
ICAgICAgICAgICB0aGVuQmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4o
KSwgdmFyc1t0aGVuSW5jVmFySW5kZXhdLCBvbmUpKTsKKyAgICAgICAgICAgIFVwc2lsb25WYWx1
ZSogdGhlbkVsc2VSZXN1bHQgPSB0aGVuQmxvY2stPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KAor
ICAgICAgICAgICAgICAgIHByb2MsIE9yaWdpbigpLCB2YXJzW2Vsc2VJbmNWYXJJbmRleF0pOwor
ICAgICAgICAgICAgdGhlbkJsb2NrLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgSnVtcCwg
T3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayhjb250aW51YXRpb24pKTsKKworICAgICAgICAgICAg
VXBzaWxvblZhbHVlKiBlbHNlRWxzZVJlc3VsdCA9IGVsc2VCbG9jay0+YXBwZW5kTmV3PFVwc2ls
b25WYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgT3JpZ2luKCksCisgICAgICAgICAgICAg
ICAgZWxzZUJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIHZhcnNb
ZWxzZUluY1ZhckluZGV4XSwgb25lKSk7CisgICAgICAgICAgICBVcHNpbG9uVmFsdWUqIGVsc2VU
aGVuUmVzdWx0ID0gZWxzZUJsb2NrLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPigKKyAgICAgICAg
ICAgICAgICBwcm9jLCBPcmlnaW4oKSwgdmFyc1t0aGVuSW5jVmFySW5kZXhdKTsKKyAgICAgICAg
ICAgIGVsc2VCbG9jay0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIEp1bXAsIE9yaWdpbigp
LCBGcmVxdWVudGVkQmxvY2soY29udGludWF0aW9uKSk7CisKKyAgICAgICAgICAgIFZhbHVlKiB0
aGVuUGhpID0gY29udGludWF0aW9uLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFBoaSwgSW50MzIs
IE9yaWdpbigpKTsKKyAgICAgICAgICAgIHRoZW5UaGVuUmVzdWx0LT5zZXRQaGkodGhlblBoaSk7
CisgICAgICAgICAgICBlbHNlVGhlblJlc3VsdC0+c2V0UGhpKHRoZW5QaGkpOworICAgICAgICAg
ICAgdmFyc1t0aGVuSW5jVmFySW5kZXhdID0gdGhlblBoaTsKKyAgICAgICAgCisgICAgICAgICAg
ICBWYWx1ZSogZWxzZVBoaSA9IGNvbnRpbnVhdGlvbi0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBQ
aGksIEludDMyLCBPcmlnaW4oKSk7CisgICAgICAgICAgICB0aGVuRWxzZVJlc3VsdC0+c2V0UGhp
KGVsc2VQaGkpOworICAgICAgICAgICAgZWxzZUVsc2VSZXN1bHQtPnNldFBoaShlbHNlUGhpKTsK
KyAgICAgICAgICAgIHZhcnNbZWxzZUluY1ZhckluZGV4XSA9IHRoZW5QaGk7CisgICAgICAgIAor
ICAgICAgICAgICAgY3VycmVudCA9IGNvbnRpbnVhdGlvbjsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIC8vIExvb3AuCisKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGxvb3BFbnRyeSA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGxvb3BSZWVudHJ5ID0g
cHJvYy5hZGRCbG9jaygpOworICAgICAgICAgICAgQmFzaWNCbG9jayogbG9vcEJvZHkgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBsb29wRXhpdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGxvb3BTa2lwID0gcHJvYy5hZGRCbG9j
aygpOworICAgICAgICAgICAgQmFzaWNCbG9jayogY29udGludWF0aW9uID0gcHJvYy5hZGRCbG9j
aygpOworICAgICAgICAKKyAgICAgICAgICAgIFZhbHVlKiBzdGFydEluZGV4ID0gdmFyc1soKGkg
Pj4gMSkgKyAxKSAlIG51bVZhcnNdOworICAgICAgICAgICAgVmFsdWUqIHN0YXJ0U3VtID0gY3Vy
cmVudC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApOworICAgICAg
ICAgICAgY3VycmVudC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgICAgIHBy
b2MsIEJyYW5jaCwgT3JpZ2luKCksIHN0YXJ0SW5kZXgsCisgICAgICAgICAgICAgICAgRnJlcXVl
bnRlZEJsb2NrKGxvb3BFbnRyeSksIEZyZXF1ZW50ZWRCbG9jayhsb29wU2tpcCkpOworCisgICAg
ICAgICAgICBVcHNpbG9uVmFsdWUqIHN0YXJ0SW5kZXhGb3JCb2R5ID0gbG9vcEVudHJ5LT5hcHBl
bmROZXc8VXBzaWxvblZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBPcmlnaW4oKSwgc3Rh
cnRJbmRleCk7CisgICAgICAgICAgICBVcHNpbG9uVmFsdWUqIHN0YXJ0U3VtRm9yQm9keSA9IGxv
b3BFbnRyeS0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywg
T3JpZ2luKCksIHN0YXJ0U3VtKTsKKyAgICAgICAgICAgIGxvb3BFbnRyeS0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKHByb2MsIEp1bXAsIE9yaWdpbigpLCBGcmVxdWVudGVkQmxvY2sobG9vcEJvZHkp
KTsKKworICAgICAgICAgICAgVmFsdWUqIGJvZHlJbmRleCA9IGxvb3BCb2R5LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFBoaSwgSW50MzIsIE9yaWdpbigpKTsKKyAgICAgICAgICAgIHN0YXJ0SW5k
ZXhGb3JCb2R5LT5zZXRQaGkoYm9keUluZGV4KTsKKyAgICAgICAgICAgIFZhbHVlKiBib2R5U3Vt
ID0gbG9vcEJvZHktPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUGhpLCBJbnQzMiwgT3JpZ2luKCkp
OworICAgICAgICAgICAgc3RhcnRTdW1Gb3JCb2R5LT5zZXRQaGkoYm9keVN1bSk7CisgICAgICAg
ICAgICBWYWx1ZSogbmV3Qm9keUluZGV4ID0gbG9vcEJvZHktPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgU3ViLCBPcmlnaW4oKSwgYm9keUluZGV4LCBvbmUpOworICAgICAgICAgICAgVmFsdWUqIG5l
d0JvZHlTdW0gPSBsb29wQm9keS0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBw
cm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIGJvZHlTdW0sCisgICAgICAgICAg
ICAgICAgbG9vcEJvZHktPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICAgICAg
ICAgIHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICAgICAgbG9v
cEJvZHktPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9jLCBB
ZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgbG9vcEJvZHktPmFwcGVuZE5l
dzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdmFyU2xvdHMuZGF0YSgpKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGxvb3BCb2R5LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHByb2MsIFNobCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbG9vcEJvZHktPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHByb2MsIFpFeHQzMiwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxvb3BCb2R5LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0JvZHlJbmRleCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxvb3BCb2R5LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPigK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jLCBPcmlnaW4oKSwg
bnVtVmFycyAtIDEpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcEJvZHktPmFw
cGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAyKSkpKSk7CisgICAgICAgICAg
ICBsb29wQm9keS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgICAgIHByb2Ms
IEJyYW5jaCwgT3JpZ2luKCksIG5ld0JvZHlJbmRleCwKKyAgICAgICAgICAgICAgICBGcmVxdWVu
dGVkQmxvY2sobG9vcFJlZW50cnkpLCBGcmVxdWVudGVkQmxvY2sobG9vcEV4aXQpKTsKKworICAg
ICAgICAgICAgbG9vcFJlZW50cnktPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBuZXdCb2R5SW5kZXgsIGJvZHlJbmRleCk7CisgICAgICAgICAgICBsb29wUmVlbnRyeS0+
YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4ocHJvYywgT3JpZ2luKCksIG5ld0JvZHlTdW0sIGJvZHlT
dW0pOworICAgICAgICAgICAgbG9vcFJlZW50cnktPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9j
LCBKdW1wLCBPcmlnaW4oKSwgRnJlcXVlbnRlZEJsb2NrKGxvb3BCb2R5KSk7CisKKyAgICAgICAg
ICAgIFVwc2lsb25WYWx1ZSogZXhpdFN1bSA9IGxvb3BFeGl0LT5hcHBlbmROZXc8VXBzaWxvblZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgbmV3Qm9keVN1bSk7CisgICAgICAgICAgICBsb29wRXhpdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIEp1bXAsIE9yaWdpbigpLCBGcmVxdWVudGVkQmxv
Y2soY29udGludWF0aW9uKSk7CisKKyAgICAgICAgICAgIFVwc2lsb25WYWx1ZSogc2tpcFN1bSA9
IGxvb3BTa2lwLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4oKSwgc3RhcnRT
dW0pOworICAgICAgICAgICAgbG9vcFNraXAtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBK
dW1wLCBPcmlnaW4oKSwgRnJlcXVlbnRlZEJsb2NrKGNvbnRpbnVhdGlvbikpOworCisgICAgICAg
ICAgICBWYWx1ZSogZmluYWxTdW0gPSBjb250aW51YXRpb24tPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgUGhpLCBJbnQzMiwgT3JpZ2luKCkpOworICAgICAgICAgICAgZXhpdFN1bS0+c2V0UGhpKGZp
bmFsU3VtKTsKKyAgICAgICAgICAgIHNraXBTdW0tPnNldFBoaShmaW5hbFN1bSk7CisKKyAgICAg
ICAgICAgIGN1cnJlbnQgPSBjb250aW51YXRpb247CisgICAgICAgICAgICB2YXJzWygoaSA+PiAx
KSArIDApICUgbnVtVmFyc10gPSBmaW5hbFN1bTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGN1
cnJlbnQtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCB2YXJz
WzBdKTsKKworICAgIGNvbXBpbGVQcm9jKHByb2MpOworCisgICAgTW9ub3RvbmljVGltZSBhZnRl
ciA9IE1vbm90b25pY1RpbWU6Om5vdygpOworICAgIGRhdGFMb2codG9DU3RyaW5nKCIgICAgVGhh
dCB0b29rICIsIChhZnRlciAtIGJlZm9yZSkubWlsbGlzZWNvbmRzKCksICIgbXMuXG4iKSk7Cit9
CisKK3ZvaWQgdGVzdEJyYW5jaEJpdFRlc3QzMlRtcEltbSh1aW50MzJfdCB2YWx1ZSwgdWludDMy
X3QgaW1tKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgQmFzaWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBW
YWx1ZSogdGVzdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywg
VHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBi
aXRPZmZzZXQgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
aW1tKTsKKworICAgIFZhbHVlKiBvbmUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgMSk7CisgICAgVmFsdWUqIGJpdFRlc3QgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KAorICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIFNTaHIsIE9yaWdpbigpLCB0ZXN0VmFsdWUsIGJpdE9mZnNl
dCksCisgICAgICAgIG9uZSk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisg
ICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgIGJpdFRlc3QsCisgICAgICAg
IEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOwor
CisgICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCAxKSk7CisKKyAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICBlbHNlQ2FzZS0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIGF1dG8g
Y29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIENIRUNLX0VRKGludm9rZTx1aW50MzJfdD4o
KmNvZGUsIHZhbHVlKSwgKHZhbHVlPj4oaW1tJTMyKSkmMSk7Cit9CisKK3ZvaWQgdGVzdEJyYW5j
aEJpdFRlc3QzMkFkZHJJbW0odWludDMyX3QgdmFsdWUsIHVpbnQzMl90IGltbSkKK3sKKyAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxv
Y2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgVmFsdWUqIHRlc3RWYWx1ZSA9
IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIExvYWQsIEludDMy
LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogYml0T2Zm
c2V0ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGltbSk7
CisKKyAgICBWYWx1ZSogb25lID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIDEpOworICAgIFZhbHVlKiBiaXRUZXN0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBTU2hyLCBPcmlnaW4oKSwgdGVzdFZhbHVlLCBiaXRPZmZzZXQpLAor
ICAgICAgICBvbmUpOworCisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAg
ICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICBiaXRUZXN0LAorICAgICAgICBGcmVx
dWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKKworICAg
IHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwg
T3JpZ2luKCksCisgICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgMSkpOworCisgICAgZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
KyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgZWxzZUNhc2UtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICBhdXRvIGNvZGUg
PSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICBDSEVDS19FUShpbnZva2U8dWludDMyX3Q+KCpjb2Rl
LCAmdmFsdWUpLCAodmFsdWU+PihpbW0lMzIpKSYxKTsKK30KKwordm9pZCB0ZXN0QnJhbmNoQml0
VGVzdDMyVG1wVG1wKHVpbnQzMl90IHZhbHVlLCB1aW50MzJfdCB2YWx1ZTIpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2Nr
KiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiB0ZXN0VmFsdWUgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGJpdE9mZnNldCA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEpKTsKKworICAgIFZhbHVlKiBvbmUgPSByb290LT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSk7CisgICAgVmFsdWUqIGJpdFRlc3QgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNTaHIsIE9yaWdpbigpLCB0ZXN0VmFs
dWUsIGJpdE9mZnNldCksCisgICAgICAgIG9uZSk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCisgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgIGJpdFRl
c3QsCisgICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhl
bHNlQ2FzZSkpOworCisgICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7CisKKyAgICBlbHNlQ2FzZS0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAg
ICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsK
KworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIENIRUNLX0VRKGludm9r
ZTx1aW50MzJfdD4oKmNvZGUsIHZhbHVlLCB2YWx1ZTIpLCAodmFsdWU+Pih2YWx1ZTIlMzIpKSYx
KTsKK30KKwordm9pZCB0ZXN0QnJhbmNoQml0VGVzdDY0VG1wVG1wKHVpbnQ2NF90IHZhbHVlLCB1
aW50NjRfdCB2YWx1ZTIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsK
KworICAgIFZhbHVlKiB0ZXN0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJp
dFhvciwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xbCkpOworICAgIFZhbHVl
KiBiaXRPZmZzZXQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBUcnVu
YywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisKKyAgICBWYWx1ZSogb25l
ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpOworICAg
IFZhbHVlKiBiaXRUZXN0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywg
Qml0QW5kLCBPcmlnaW4oKSwKKyAgICAgICAgdGVzdFZhbHVlLAorICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIFNobCwgT3JpZ2luKCksIG9uZSwgYml0T2Zmc2V0KSk7CisKKyAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIEJyYW5jaCwgT3Jp
Z2luKCksCisgICAgICAgIGJpdFRlc3QsCisgICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2Fz
ZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOworCisgICAgdGhlbkNhc2UtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAg
dGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisK
KyAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAorICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIDEpKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2Mp
OworICAgIENIRUNLX0VRKGludm9rZTx1aW50NjRfdD4oKmNvZGUsIHZhbHVlLCB2YWx1ZTIpLCAo
dmFsdWU+Pih2YWx1ZTIlNjQpKSYxKTsKK30KKwordm9pZCB0ZXN0QnJhbmNoQml0VGVzdDY0QWRk
clRtcCh1aW50NjRfdCB2YWx1ZSwgdWludDY0X3QgdmFsdWUyKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNC
bG9jayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogZWxzZUNh
c2UgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBWYWx1ZSogdGVzdFZhbHVlID0gcm9vdC0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywgTG9hZCwgSW50NjQsIE9yaWdpbigp
LAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBiaXRPZmZzZXQgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxKSk7CisKKyAgICBWYWx1ZSogb25lID0gcm9vdC0+YXBwZW5kTmV3
PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpOworICAgIFZhbHVlKiBiaXRUZXN0ID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwK
KyAgICAgICAgdGVzdFZhbHVlLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFNobCwgT3JpZ2luKCksIG9uZSwgYml0T2Zmc2V0KSk7CisKKyAgICByb290LT5hcHBlbmROZXdD
b250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgIGJp
dFRlc3QsCisgICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9j
ayhlbHNlQ2FzZSkpOworCisgICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAg
ICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5l
dzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7CisKKyAgICBlbHNlQ2FzZS0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAg
ICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDAp
KTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIENIRUNLX0VRKGlu
dm9rZTx1aW50NjRfdD4oKmNvZGUsICZ2YWx1ZSwgdmFsdWUyKSwgKHZhbHVlPj4odmFsdWUyJTY0
KSkmMSk7Cit9CisKK3ZvaWQgdGVzdEJyYW5jaEJpdFRlc3ROZWdhdGlvbih1aW50NjRfdCB2YWx1
ZSwgdWludDY0X3QgdmFsdWUyKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogdGhlbkNhc2UgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2Nr
KCk7CisKKyAgICBWYWx1ZSogdGVzdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVl
KiBiaXRPZmZzZXQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBUcnVu
YywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgVmFsdWUqIHNoaWZ0
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTU2hyLCBPcmlnaW4oKSwgdGVzdFZhbHVl
LCBiaXRPZmZzZXQpOworCisgICAgVmFsdWUqIG9uZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0
VmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKTsKKyAgICBWYWx1ZSogYml0VGVzdCA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIEJpdEFuZCwgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0WG9yLCBPcmlnaW4oKSwgc2hpZnQsIHJv
b3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMWwpKSwKKyAgICAg
ICAgb25lKTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJv
YywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgYml0VGVzdCwKKyAgICAgICAgRnJlcXVlbnRl
ZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNlKSk7CisKKyAgICB0aGVu
Q2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAorICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIDApKTsKKworICAgIGVsc2VDYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIGVsc2VDYXNlLT5hcHBlbmROZXc8
Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpOworCisgICAgYXV0byBjb2RlID0gY29t
cGlsZVByb2MocHJvYyk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPHVpbnQ2NF90PigqY29kZSwgdmFs
dWUsIHZhbHVlMiksICh2YWx1ZT4+KHZhbHVlMiU2NCkpJjEpOworfQorCit2b2lkIHRlc3RCcmFu
Y2hCaXRUZXN0TmVnYXRpb24yKHVpbnQ2NF90IHZhbHVlLCB1aW50NjRfdCB2YWx1ZTIpCit7Cisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNp
Y0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiB0ZXN0VmFs
dWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdFhvciwgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIC0xbCkpOworICAgIFZhbHVlKiBiaXRPZmZzZXQgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIxKSk7CisgICAgVmFsdWUqIHNoaWZ0ID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBTU2hyLCBPcmlnaW4oKSwgdGVzdFZhbHVlLCBiaXRPZmZzZXQpOworCisgICAg
VmFsdWUqIG9uZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigp
LCAxKTsKKyAgICBWYWx1ZSogYml0VGVzdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAg
ICAgIHByb2MsIEJpdEFuZCwgT3JpZ2luKCksCisgICAgICAgIHNoaWZ0LAorICAgICAgICBvbmUp
OworCisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBCcmFu
Y2gsIE9yaWdpbigpLAorICAgICAgICBiaXRUZXN0LAorICAgICAgICBGcmVxdWVudGVkQmxvY2so
dGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKKworICAgIHRoZW5DYXNlLT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisg
ICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
MCkpOworCisgICAgZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxDb25zdDY0
VmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJv
Yyhwcm9jKTsKKyAgICBDSEVDS19FUShpbnZva2U8dWludDY0X3Q+KCpjb2RlLCB2YWx1ZSwgdmFs
dWUyKSwgKHZhbHVlPj4odmFsdWUyJTY0KSkmMSk7Cit9CisKK3ZvaWQgdGVzdFNpbXBsZVBhdGNo
cG9pbnQoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAg
VmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRj
aHBvaW50ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgSW50MzIsIE9y
aWdpbigpKTsKKyAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmcxLCBW
YWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7CisgICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFp
bmVkVmFsdWUoYXJnMiwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOworICAgIHBhdGNocG9pbnQt
PnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9T
Y3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAgICAgIENIRUNL
KHBhcmFtcy5zaXplKCkgPT0gMyk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXNbMF0uaXNHUFIo
KSk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0uaXNHUFIoKSk7CisgICAgICAgICAgICBD
SEVDSyhwYXJhbXNbMl0uaXNHUFIoKSk7CisgICAgICAgICAgICBhZGQzMihqaXQsIHBhcmFtc1sx
XS5ncHIoKSwgcGFyYW1zWzJdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICB9KTsK
KyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwg
cGF0Y2hwb2ludCk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgMSwgMikg
PT0gMyk7Cit9CisKK3ZvaWQgdGVzdFNpbXBsZVBhdGNocG9pbnRXaXRob3V0T3VwdXRDbG9iYmVy
c0dQQXJncygpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAg
ICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICBWYWx1ZSogY29uc3QxID0gcm9v
dC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKTsKKyAgICBWYWx1
ZSogY29uc3QyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IDEzKTsKKworICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IHJvb3QtPmFwcGVuZE5l
dzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKKyAgICBwYXRjaHBvaW50
LT5jbG9iYmVyTGF0ZShSZWdpc3RlclNldChHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86
OmFyZ3VtZW50R1BSMSkpOworICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVl
KGNvbnN0MSwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOworICAgIHBhdGNocG9pbnQtPmFwcGVu
ZChDb25zdHJhaW5lZFZhbHVlKGNvbnN0MiwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOworICAg
IHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAg
IEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAg
ICAgICAgIENIRUNLKHBhcmFtcy5zaXplKCkgPT0gMik7CisgICAgICAgICAgICBDSEVDSyhwYXJh
bXNbMF0uaXNHUFIoKSk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0uaXNHUFIoKSk7Cisg
ICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigweDAwZmYwMGZm
KSwgcGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKDB4MDBmZjAwZmYpLCBwYXJhbXNbMV0uZ3ByKCkpOworICAgICAgICAgICAg
aml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMHgwMGZmMDBmZiksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7CisgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMigweDAwZmYwMGZmKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgfSk7
CisKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQs
IE9yaWdpbigpLCBhcmcxLCBhcmcyKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRS
dW48aW50Pihwcm9jLCAxLCAyKSA9PSAzKTsKK30KKwordm9pZCB0ZXN0U2ltcGxlUGF0Y2hwb2lu
dFdpdGhPdXB1dENsb2JiZXJzR1BBcmdzKCkKK3sKKyAgICAvLyBXZSBjYW4ndCBwcmVkaWN0IHdo
ZXJlIHRoZSBvdXRwdXQgd2lsbCBiZSBidXQgd2Ugd2FudCB0byBiZSBzdXJlIGl0IGlzIG5vdAor
ICAgIC8vIG9uZSBvZiB0aGUgY2xvYmJlcmVkIHJlZ2lzdGVycyB3aGljaCBpcyBhIGJpdCBoYXJk
IHRvIHRlc3QuCisgICAgLy8KKyAgICAvLyBXaGF0IHdlIGRvIGlzIGZvcmNlIHRoZSBoYW5kIG9m
IG91ciByZWdpc3RlciBhbGxvY2F0b3IgYnkgY2xvYmJlcmluZyBhYnNvbHV0ZWx5CisgICAgLy8g
ZXZlcnl0aGluZyBidXQgMS4gVGhlIG9ubHkgdmFsaWQgYWxsb2NhdGlvbiBpcyB0byBnaXZlIGl0
IHRvIHRoZSByZXN1bHQgYW5kCisgICAgLy8gc3BpbGwgZXZlcnl0aGluZyBlbHNlLgorCisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEpIHsKKyAgICAgICAg
Ly8gRklYTUU6IEFpciBPMCBhbGxvY2F0b3IgY2FuJ3QgaGFuZGxlIHN1Y2ggcHJvZ3JhbXMuIFdl
IHJlbHkgb24gV2FzbUFpcklSR2VuZXJhdG9yCisgICAgICAgIC8vIHRvIG5vdCB1c2UgYW55IHN1
Y2ggY29uc3RydWN0cyB3aGVyZSB0aGUgcmVnaXN0ZXIgYWxsb2NhdG9yIGlzIGNvcm5lcmVkIGlu
IHN1Y2gKKyAgICAgICAgLy8gYSB3YXkuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ2MzMKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmcxID0gcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOworICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgIFZh
bHVlKiBjb25zdDEgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgNDIpOworICAgIFZhbHVlKiBjb25zdDIgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgMTMpOworCisgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50
ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgSW50NjQsIE9yaWdpbigp
KTsKKworICAgIFJlZ2lzdGVyU2V0IGNsb2JiZXJBbGwgPSBSZWdpc3RlclNldDo6YWxsR1BScygp
OworICAgIGNsb2JiZXJBbGwuZXhjbHVkZShSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSk7
CisgICAgY2xvYmJlckFsbC5leGNsdWRlKFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVn
aXN0ZXJzKCkpOworICAgIGNsb2JiZXJBbGwuY2xlYXIoR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsK
KyAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShjbG9iYmVyQWxsKTsKKworICAgIHBhdGNocG9p
bnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGNvbnN0MSwgVmFsdWVSZXA6OlNvbWVSZWdpc3Rl
cikpOworICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGNvbnN0MiwgVmFs
dWVSZXA6OlNvbWVSZWdpc3RlcikpOworCisgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAor
ICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25Q
YXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVz
YWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9
PSAzKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtc1swXS5pc0dQUigpKTsKKyAgICAgICAgICAg
IENIRUNLKHBhcmFtc1sxXS5pc0dQUigpKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtc1syXS5p
c0dQUigpKTsKKyAgICAgICAgICAgIGppdC5tb3ZlKHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzBd
LmdwcigpKTsKKyAgICAgICAgICAgIGppdC5hZGQ2NChwYXJhbXNbMl0uZ3ByKCksIHBhcmFtc1sw
XS5ncHIoKSk7CisKKyAgICAgICAgICAgIGNsb2JiZXJBbGwuZm9yRWFjaChbJl0gKFJlZyByZWcp
IHsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigw
eDAwZmYwMGZmKSwgcmVnLmdwcigpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKwor
ICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3Jp
Z2luKCksIHBhdGNocG9pbnQsCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
QWRkLCBPcmlnaW4oKSwgYXJnMSwgYXJnMikpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOworCisgICAgQ0hFQ0soY29tcGls
ZUFuZFJ1bjxpbnQ+KHByb2MsIDEsIDIpID09IDU4KTsKK30KKwordm9pZCB0ZXN0U2ltcGxlUGF0
Y2hwb2ludFdpdGhvdXRPdXB1dENsb2JiZXJzRlBBcmdzKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJv
YzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBh
cmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBG
UFJJbmZvOjphcmd1bWVudEZQUjApOworICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjEp
OworICAgIFZhbHVlKiBjb25zdDEgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIDQyLjUpOworICAgIFZhbHVlKiBjb25zdDIgPSByb290LT5hcHBlbmRO
ZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEzLjEpOworCisgICAgUGF0Y2hw
b2ludFZhbHVlKiBwYXRjaHBvaW50ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4o
cHJvYywgVm9pZCwgT3JpZ2luKCkpOworICAgIHBhdGNocG9pbnQtPmNsb2JiZXJMYXRlKFJlZ2lz
dGVyU2V0KEZQUkluZm86OmFyZ3VtZW50RlBSMCwgRlBSSW5mbzo6YXJndW1lbnRGUFIxKSk7Cisg
ICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoY29uc3QxLCBWYWx1ZVJlcDo6
U29tZVJlZ2lzdGVyKSk7CisgICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUo
Y29uc3QyLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7CisgICAgcGF0Y2hwb2ludC0+c2V0R2Vu
ZXJhdG9yKAorICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdl
bmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hS
ZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1z
LnNpemUoKSA9PSAyKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtc1swXS5pc0ZQUigpKTsKKyAg
ICAgICAgICAgIENIRUNLKHBhcmFtc1sxXS5pc0ZQUigpKTsKKyAgICAgICAgICAgIGppdC5tb3Zl
WmVyb1RvRG91YmxlKHBhcmFtc1swXS5mcHIoKSk7CisgICAgICAgICAgICBqaXQubW92ZVplcm9U
b0RvdWJsZShwYXJhbXNbMV0uZnByKCkpOworICAgICAgICAgICAgaml0Lm1vdmVaZXJvVG9Eb3Vi
bGUoRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICAgICAgICAgIGppdC5tb3ZlWmVyb1RvRG91
YmxlKEZQUkluZm86OmFyZ3VtZW50RlBSMSk7CisgICAgICAgIH0pOworCisgICAgVmFsdWUqIHJl
c3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgYXJnMSwg
YXJnMik7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIHJlc3VsdCk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywg
MS41LCAyLjUpID09IDQpOworfQorCit2b2lkIHRlc3RTaW1wbGVQYXRjaHBvaW50V2l0aE91cHV0
Q2xvYmJlcnNGUEFyZ3MoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIGlmIChwcm9jLm9w
dExldmVsKCkgPCAxKSB7CisgICAgICAgIC8vIEZJWE1FOiBBaXIgTzAgYWxsb2NhdG9yIGNhbid0
IGhhbmRsZSBzdWNoIHByb2dyYW1zLiBXZSByZWx5IG9uIFdhc21BaXJJUkdlbmVyYXRvcgorICAg
ICAgICAvLyB0byBub3QgdXNlIGFueSBzdWNoIGNvbnN0cnVjdHMgd2hlcmUgdGhlIHJlZ2lzdGVy
IGFsbG9jYXRvciBpcyBjb3JuZXJlZCBpbiBzdWNoCisgICAgICAgIC8vIGEgd2F5LgorICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NjMzCisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICBWYWx1ZSogYXJnMiA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5m
bzo6YXJndW1lbnRGUFIxKTsKKyAgICBWYWx1ZSogY29uc3QxID0gcm9vdC0+YXBwZW5kTmV3PENv
bnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0Mi41KTsKKyAgICBWYWx1ZSogY29uc3Qy
ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxMy4x
KTsKKworICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IHJvb3QtPmFwcGVuZE5ldzxQ
YXRjaHBvaW50VmFsdWU+KHByb2MsIERvdWJsZSwgT3JpZ2luKCkpOworCisgICAgUmVnaXN0ZXJT
ZXQgY2xvYmJlckFsbCA9IFJlZ2lzdGVyU2V0OjphbGxGUFJzKCk7CisgICAgY2xvYmJlckFsbC5l
eGNsdWRlKFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKTsKKyAgICBjbG9iYmVyQWxsLmV4
Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSk7CisgICAgY2xv
YmJlckFsbC5jbGVhcihGUFJJbmZvOjphcmd1bWVudEZQUjIpOworICAgIHBhdGNocG9pbnQtPmNs
b2JiZXJMYXRlKGNsb2JiZXJBbGwpOworCisgICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFp
bmVkVmFsdWUoY29uc3QxLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7CisgICAgcGF0Y2hwb2lu
dC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoY29uc3QyLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVy
KSk7CisKKyAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0NhbGxI
ZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Cisg
ICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGpp
dCk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09IDMpOworICAgICAgICAgICAg
Q0hFQ0socGFyYW1zWzBdLmlzRlBSKCkpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzFdLmlz
RlBSKCkpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzJdLmlzRlBSKCkpOworICAgICAgICAg
ICAgaml0LmFkZERvdWJsZShwYXJhbXNbMV0uZnByKCksIHBhcmFtc1syXS5mcHIoKSwgcGFyYW1z
WzBdLmZwcigpKTsKKworICAgICAgICAgICAgY2xvYmJlckFsbC5mb3JFYWNoKFsmXSAoUmVnIHJl
ZykgeworICAgICAgICAgICAgICAgIGppdC5tb3ZlWmVyb1RvRG91YmxlKHJlZy5mcHIoKSk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBwYXRjaHBvaW50LAorICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGFyZzEsIGFyZzIp
KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwgcmVzdWx0KTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCAxLjUs
IDIuNSkgPT0gNTkuNik7Cit9CisKK3ZvaWQgdGVzdFBhdGNocG9pbnRXaXRoRWFybHlDbG9iYmVy
KCkKK3sKKyAgICBhdXRvIHRlc3QgPSBbXSAoR1BSUmVnIHJlZ2lzdGVyVG9DbG9iYmVyLCBib29s
IGFyZzFJbkFyZ0dQUiwgYm9vbCBhcmcySW5BcmdHUFIpIHsKKyAgICAgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAg
IFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSogYXJnMiA9IHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIxKTsKKyAgICAKKyAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50
ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgSW50MzIsIE9yaWdpbigp
KTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMSwgVmFs
dWVSZXA6OlNvbWVSZWdpc3RlcikpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3Ry
YWluZWRWYWx1ZShhcmcyLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7CisgICAgICAgIHBhdGNo
cG9pbnQtPmNsb2JiZXJFYXJseShSZWdpc3RlclNldChyZWdpc3RlclRvQ2xvYmJlcikpOworICAg
ICAgICB1bnNpZ25lZCBvcHRMZXZlbCA9IHByb2Mub3B0TGV2ZWwoKTsKKyAgICAgICAgcGF0Y2hw
b2ludC0+c2V0R2VuZXJhdG9yKAorICAgICAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwg
Y29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgICAg
ICBpZiAob3B0TGV2ZWwgPiAxKSB7CisgICAgICAgICAgICAgICAgICAgIENIRUNLKChwYXJhbXNb
MV0uZ3ByKCkgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIwKSA9PSBhcmcxSW5BcmdHUFIpOworICAg
ICAgICAgICAgICAgICAgICBDSEVDSygocGFyYW1zWzJdLmdwcigpID09IEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSkgPT0gYXJnMkluQXJnR1BSKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICBhZGQzMihqaXQsIHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzJd
LmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHBhdGNocG9p
bnQpOworCisgICAgICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCAxLCAyKSA9PSAz
KTsKKyAgICB9OworCisgICAgdGVzdChHUFJJbmZvOjpub25BcmdHUFIwLCB0cnVlLCB0cnVlKTsK
KyAgICB0ZXN0KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgZmFsc2UsIHRydWUpOworICAgIHRlc3Qo
R1BSSW5mbzo6YXJndW1lbnRHUFIxLCB0cnVlLCBmYWxzZSk7Cit9CisKK3ZvaWQgdGVzdFBhdGNo
cG9pbnRDYWxsQXJnKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OworICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgIFBhdGNocG9pbnRWYWx1
ZSogcGF0Y2hwb2ludCA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIElu
dDMyLCBPcmlnaW4oKSk7CisgICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUo
YXJnMSwgVmFsdWVSZXA6OnN0YWNrQXJndW1lbnQoMCkpKTsKKyAgICBwYXRjaHBvaW50LT5hcHBl
bmQoQ29uc3RyYWluZWRWYWx1ZShhcmcyLCBWYWx1ZVJlcDo6c3RhY2tBcmd1bWVudCg4KSkpOwor
ICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMm
IGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAg
ICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAg
ICAgICAgICAgIENIRUNLKHBhcmFtcy5zaXplKCkgPT0gMyk7CisgICAgICAgICAgICBDSEVDSyhw
YXJhbXNbMF0uaXNHUFIoKSk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0uaXNTdGFjaygp
KTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtc1syXS5pc1N0YWNrKCkpOworICAgICAgICAgICAg
aml0LmxvYWQzMigKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHBhcmFtc1sxXS5vZmZzZXRGcm9tRlAoKSksCisgICAgICAg
ICAgICAgICAgcGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgICAgIGppdC5hZGQzMigKKyAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0
ZXIsIHBhcmFtc1syXS5vZmZzZXRGcm9tRlAoKSksCisgICAgICAgICAgICAgICAgcGFyYW1zWzBd
LmdwcigpKTsKKyAgICAgICAgfSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHBy
b2MsIFJldHVybiwgT3JpZ2luKCksIHBhdGNocG9pbnQpOworCisgICAgQ0hFQ0soY29tcGlsZUFu
ZFJ1bjxpbnQ+KHByb2MsIDEsIDIpID09IDMpOworfQorCit2b2lkIHRlc3RQYXRjaHBvaW50Rml4
ZWRSZWdpc3RlcigpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
KyAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICBQYXRjaHBvaW50VmFsdWUq
IHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBJbnQz
MiwgT3JpZ2luKCkpOworICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFy
ZzEsIFZhbHVlUmVwKEdQUkluZm86OnJlZ1QwKSkpOworICAgIHBhdGNocG9pbnQtPmFwcGVuZChD
b25zdHJhaW5lZFZhbHVlKGFyZzIsIFZhbHVlUmVwKEdQUkluZm86OnJlZ1QxKSkpOworICAgIHBh
dGNocG9pbnQtPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwg
Y29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIEFs
bG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAg
ICAgIENIRUNLKHBhcmFtcy5zaXplKCkgPT0gMyk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXNb
MF0uaXNHUFIoKSk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0gPT0gVmFsdWVSZXAoR1BS
SW5mbzo6cmVnVDApKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtc1syXSA9PSBWYWx1ZVJlcChH
UFJJbmZvOjpyZWdUMSkpOworICAgICAgICAgICAgYWRkMzIoaml0LCBHUFJJbmZvOjpyZWdUMCwg
R1BSSW5mbzo6cmVnVDEsIHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgIH0pOworICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBwYXRjaHBvaW50
KTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCAxLCAyKSA9PSAzKTsKK30K
Kwordm9pZCB0ZXN0UGF0Y2hwb2ludEFueShWYWx1ZVJlcCByZXApCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1
ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIxKTsKKyAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8
UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBJbnQzMiwgT3JpZ2luKCkpOworICAgIHBhdGNocG9pbnQt
PmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzEsIHJlcCkpOworICAgIHBhdGNocG9pbnQtPmFw
cGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzIsIHJlcCkpOworICAgIHBhdGNocG9pbnQtPnNldEdl
bmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBH
ZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNo
UmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAgICAgIC8vIFdlIHNob3Vs
ZG4ndCBoYXZlIHNwaWxsZWQgdGhlIGlucHV0cywgc28gd2UgYXNzZXJ0IHRoYXQgdGhleSdyZSBp
biByZWdpc3RlcnMuCisgICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09IDMpOworICAg
ICAgICAgICAgQ0hFQ0socGFyYW1zWzBdLmlzR1BSKCkpOworICAgICAgICAgICAgQ0hFQ0socGFy
YW1zWzFdLmlzR1BSKCkpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzJdLmlzR1BSKCkpOwor
ICAgICAgICAgICAgYWRkMzIoaml0LCBwYXJhbXNbMV0uZ3ByKCksIHBhcmFtc1syXS5ncHIoKSwg
cGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgfSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHBhdGNocG9pbnQpOworCisgICAgQ0hFQ0so
Y29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIDEsIDIpID09IDMpOworfQorCit2b2lkIHRlc3RQYXRj
aHBvaW50R1BTY3JhdGNoKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOworICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgIFBhdGNocG9pbnRW
YWx1ZSogcGF0Y2hwb2ludCA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2Ms
IEludDMyLCBPcmlnaW4oKSk7CisgICAgcGF0Y2hwb2ludC0+YXBwZW5kKGFyZzEsIFZhbHVlUmVw
OjpTb21lUmVnaXN0ZXIpOworICAgIHBhdGNocG9pbnQtPmFwcGVuZChhcmcyLCBWYWx1ZVJlcDo6
U29tZVJlZ2lzdGVyKTsKKyAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAy
OworICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAg
ICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsK
KyAgICAgICAgICAgIC8vIFdlIHNob3VsZG4ndCBoYXZlIHNwaWxsZWQgdGhlIGlucHV0cywgc28g
d2UgYXNzZXJ0IHRoYXQgdGhleSdyZSBpbiByZWdpc3RlcnMuCisgICAgICAgICAgICBDSEVDSyhw
YXJhbXMuc2l6ZSgpID09IDMpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzBdLmlzR1BSKCkp
OworICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzFdLmlzR1BSKCkpOworICAgICAgICAgICAgQ0hF
Q0socGFyYW1zWzJdLmlzR1BSKCkpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zLmdwU2NyYXRj
aCgwKSAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtcy5ncFNjcmF0
Y2goMCkgIT0gcGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtcy5ncFNj
cmF0Y2goMCkgIT0gcGFyYW1zWzFdLmdwcigpKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtcy5n
cFNjcmF0Y2goMCkgIT0gcGFyYW1zWzJdLmdwcigpKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFt
cy5ncFNjcmF0Y2goMSkgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgICAgICBDSEVDSyhwYXJh
bXMuZ3BTY3JhdGNoKDEpICE9IHBhcmFtcy5ncFNjcmF0Y2goMCkpOworICAgICAgICAgICAgQ0hF
Q0socGFyYW1zLmdwU2NyYXRjaCgxKSAhPSBwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICAgICAg
Q0hFQ0socGFyYW1zLmdwU2NyYXRjaCgxKSAhPSBwYXJhbXNbMV0uZ3ByKCkpOworICAgICAgICAg
ICAgQ0hFQ0socGFyYW1zLmdwU2NyYXRjaCgxKSAhPSBwYXJhbXNbMl0uZ3ByKCkpOworICAgICAg
ICAgICAgQ0hFQ0soIXBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLmdldChwYXJhbXMuZ3BT
Y3JhdGNoKDApKSk7CisgICAgICAgICAgICBDSEVDSyghcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCkuZ2V0KHBhcmFtcy5ncFNjcmF0Y2goMSkpKTsKKyAgICAgICAgICAgIGFkZDMyKGppdCwg
cGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMl0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7CisgICAg
ICAgIH0pOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCBwYXRjaHBvaW50KTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9j
LCAxLCAyKSA9PSAzKTsKK30KKwordm9pZCB0ZXN0UGF0Y2hwb2ludEZQU2NyYXRjaCgpCit7Cisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogYXJnMiA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIxKTsKKyAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290
LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBJbnQzMiwgT3JpZ2luKCkpOworICAg
IHBhdGNocG9pbnQtPmFwcGVuZChhcmcxLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKTsKKyAgICBw
YXRjaHBvaW50LT5hcHBlbmQoYXJnMiwgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7CisgICAgcGF0
Y2hwb2ludC0+bnVtRlBTY3JhdGNoUmVnaXN0ZXJzID0gMjsKKyAgICBwYXRjaHBvaW50LT5zZXRH
ZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRj
aFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAgICAgICAgICAvLyBXZSBzaG91
bGRuJ3QgaGF2ZSBzcGlsbGVkIHRoZSBpbnB1dHMsIHNvIHdlIGFzc2VydCB0aGF0IHRoZXkncmUg
aW4gcmVnaXN0ZXJzLgorICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9PSAzKTsKKyAg
ICAgICAgICAgIENIRUNLKHBhcmFtc1swXS5pc0dQUigpKTsKKyAgICAgICAgICAgIENIRUNLKHBh
cmFtc1sxXS5pc0dQUigpKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtc1syXS5pc0dQUigpKTsK
KyAgICAgICAgICAgIENIRUNLKHBhcmFtcy5mcFNjcmF0Y2goMCkgIT0gSW52YWxpZEZQUlJlZyk7
CisgICAgICAgICAgICBDSEVDSyhwYXJhbXMuZnBTY3JhdGNoKDEpICE9IEludmFsaWRGUFJSZWcp
OworICAgICAgICAgICAgQ0hFQ0socGFyYW1zLmZwU2NyYXRjaCgxKSAhPSBwYXJhbXMuZnBTY3Jh
dGNoKDApKTsKKyAgICAgICAgICAgIENIRUNLKCFwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMo
KS5nZXQocGFyYW1zLmZwU2NyYXRjaCgwKSkpOworICAgICAgICAgICAgQ0hFQ0soIXBhcmFtcy51
bmF2YWlsYWJsZVJlZ2lzdGVycygpLmdldChwYXJhbXMuZnBTY3JhdGNoKDEpKSk7CisgICAgICAg
ICAgICBhZGQzMihqaXQsIHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzJdLmdwcigpLCBwYXJhbXNb
MF0uZ3ByKCkpOworICAgICAgICB9KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcGF0Y2hwb2ludCk7CisKKyAgICBDSEVDSyhjb21waWxl
QW5kUnVuPGludD4ocHJvYywgMSwgMikgPT0gMyk7Cit9CisKK3ZvaWQgdGVzdFBhdGNocG9pbnRM
b3RzT2ZMYXRlQW55cygpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWZWN0b3I8aW50PiB0aGluZ3M7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMjAwOyBpLS07KQorICAgICAgICB0aGluZ3MuYXBwZW5kKGkpOworCisg
ICAgVmVjdG9yPFZhbHVlKj4gdmFsdWVzOworICAgIGZvciAoaW50JiB0aGluZyA6IHRoaW5ncykg
eworICAgICAgICBWYWx1ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAor
ICAgICAgICAgICAgcHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmdGhpbmcpKTsKKyAg
ICAgICAgdmFsdWVzLmFwcGVuZCh2YWx1ZSk7CisgICAgfQorCisgICAgUGF0Y2hwb2ludFZhbHVl
KiBwYXRjaHBvaW50ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgSW50
MzIsIE9yaWdpbigpKTsKKyAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNy
b1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgZm9yIChWYWx1ZSogdmFsdWUgOiB2YWx1ZXMpCisg
ICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKHZhbHVlLCBWYWx1ZVJl
cDo6TGF0ZUNvbGRBbnkpKTsKKyAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCisgICAgICAg
IFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYg
cGFyYW1zKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxs
b3dTY3JhdGNoKGppdCk7CisgICAgICAgICAgICAvLyBXZSBzaG91bGRuJ3QgaGF2ZSBzcGlsbGVk
IHRoZSBpbnB1dHMsIHNvIHdlIGFzc2VydCB0aGF0IHRoZXkncmUgaW4gcmVnaXN0ZXJzLgorICAg
ICAgICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9PSB0aGluZ3Muc2l6ZSgpICsgMSk7CisgICAg
ICAgICAgICBDSEVDSyhwYXJhbXNbMF0uaXNHUFIoKSk7CisgICAgICAgICAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSwgcGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBwYXJhbXMuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgICAgICAgICBpZiAocGFyYW1zW2ldLmlzR1BSKCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
Q0hFQ0socGFyYW1zW2ldICE9IHBhcmFtc1swXSk7CisgICAgICAgICAgICAgICAgICAgIGppdC5h
ZGQzMihwYXJhbXNbaV0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgQ0hFQ0socGFyYW1zW2ldLmlzU3RhY2soKSk7
CisgICAgICAgICAgICAgICAgICAgIGppdC5hZGQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHBhcmFtc1tpXS5vZmZzZXRGcm9tRlAoKSksIHBhcmFt
c1swXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9
KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwgcGF0Y2hwb2ludCk7CisKKyAgICBDSEVDSyhzdGF0aWNfY2FzdDxzaXplX3Q+KGNvbXBpbGVB
bmRSdW48aW50Pihwcm9jKSkgPT0gKHRoaW5ncy5zaXplKCkgKiAodGhpbmdzLnNpemUoKSAtIDEp
KSAvIDIpOworfQorCit2b2lkIHRlc3RQYXRjaHBvaW50QW55SW1tKFZhbHVlUmVwIHJlcCkKK3sK
KyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAg
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZh
bHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IDQyKTsKKyAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8
UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBJbnQzMiwgT3JpZ2luKCkpOworICAgIHBhdGNocG9pbnQt
PmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzEsIHJlcCkpOworICAgIHBhdGNocG9pbnQtPmFw
cGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzIsIHJlcCkpOworICAgIHBhdGNocG9pbnQtPnNldEdl
bmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBH
ZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNo
UmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFt
cy5zaXplKCkgPT0gMyk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXNbMF0uaXNHUFIoKSk7Cisg
ICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0uaXNHUFIoKSk7CisgICAgICAgICAgICBDSEVDSyhw
YXJhbXNbMl0uaXNDb25zdGFudCgpKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtc1syXS52YWx1
ZSgpID09IDQyKTsKKyAgICAgICAgICAgIGppdC5hZGQzMigKKyAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90PihwYXJhbXNbMl0udmFs
dWUoKSkpLAorICAgICAgICAgICAgICAgIHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigp
KTsKKyAgICAgICAgfSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJl
dHVybiwgT3JpZ2luKCksIHBhdGNocG9pbnQpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxp
bnQ+KHByb2MsIDEpID09IDQzKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL3Rlc3RiM181LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOTY5MDliZmRmNjM1MWUy
YWI2NmVlNzRkZDZjYzUwNGMwYTA4NGMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL3Rlc3RiM181LmNwcApAQCAtMCwwICsxLDI5NDQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJ0ZXN0YjMuaCIKKworI2lmIEVOQUJMRShCM19KSVQpCisKK3ZvaWQgdGVz
dFBhdGNocG9pbnRNYW55SW1tcygpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFw
cGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0Mik7CisgICAgVmFsdWUqIGFy
ZzIgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDMpOwor
ICAgIFZhbHVlKiBhcmczID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIDQzMDAwMDAwMDAwMDAwbGwpOworICAgIFZhbHVlKiBhcmc0ID0gcm9vdC0+YXBwZW5k
TmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0Mi41KTsKKyAgICBQYXRjaHBv
aW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihw
cm9jLCBWb2lkLCBPcmlnaW4oKSk7CisgICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVk
VmFsdWUoYXJnMSwgVmFsdWVSZXA6Oldhcm1BbnkpKTsKKyAgICBwYXRjaHBvaW50LT5hcHBlbmQo
Q29uc3RyYWluZWRWYWx1ZShhcmcyLCBWYWx1ZVJlcDo6V2FybUFueSkpOworICAgIHBhdGNocG9p
bnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzMsIFZhbHVlUmVwOjpXYXJtQW55KSk7Cisg
ICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnNCwgVmFsdWVSZXA6Oldh
cm1BbnkpKTsKKyAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0Nh
bGxIZWxwZXJzJiwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAg
ICAgICAgICAgIENIRUNLKHBhcmFtcy5zaXplKCkgPT0gNCk7CisgICAgICAgICAgICBDSEVDSyhw
YXJhbXNbMF0gPT0gVmFsdWVSZXA6OmNvbnN0YW50KDQyKSk7CisgICAgICAgICAgICBDSEVDSyhw
YXJhbXNbMV0gPT0gVmFsdWVSZXA6OmNvbnN0YW50KDQzKSk7CisgICAgICAgICAgICBDSEVDSyhw
YXJhbXNbMl0gPT0gVmFsdWVSZXA6OmNvbnN0YW50KDQzMDAwMDAwMDAwMDAwbGwpKTsKKyAgICAg
ICAgICAgIENIRUNLKHBhcmFtc1szXSA9PSBWYWx1ZVJlcDo6Y29uc3RhbnQoYml0d2lzZV9jYXN0
PGludDY0X3Q+KDQyLjUpKSk7CisgICAgICAgIH0pOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIENIRUNL
KCFjb21waWxlQW5kUnVuPGludD4ocHJvYykpOworfQorCit2b2lkIHRlc3RQYXRjaHBvaW50V2l0
aFJlZ2lzdGVyUmVzdWx0KCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOworICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgIFBhdGNocG9pbnRW
YWx1ZSogcGF0Y2hwb2ludCA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2Ms
IEludDMyLCBPcmlnaW4oKSk7CisgICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFs
dWUoYXJnMSwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOworICAgIHBhdGNocG9pbnQtPmFwcGVu
ZChDb25zdHJhaW5lZFZhbHVlKGFyZzIsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICBw
YXRjaHBvaW50LT5yZXN1bHRDb25zdHJhaW50ID0gVmFsdWVSZXA6OnJlZyhHUFJJbmZvOjpub25B
cmdHUFIwKTsKKyAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7
CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNo
KGppdCk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09IDMpOworICAgICAgICAg
ICAgQ0hFQ0socGFyYW1zWzBdID09IFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6bm9uQXJnR1BSMCkp
OworICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzFdLmlzR1BSKCkpOworICAgICAgICAgICAgQ0hF
Q0socGFyYW1zWzJdLmlzR1BSKCkpOworICAgICAgICAgICAgYWRkMzIoaml0LCBwYXJhbXNbMV0u
Z3ByKCksIHBhcmFtc1syXS5ncHIoKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIH0p
OworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LCBwYXRjaHBvaW50KTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCAxLCAy
KSA9PSAzKTsKK30KKwordm9pZCB0ZXN0UGF0Y2hwb2ludFdpdGhTdGFja0FyZ3VtZW50UmVzdWx0
KCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVl
KiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2lu
dCA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIEludDMyLCBPcmlnaW4o
KSk7CisgICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMSwgVmFsdWVS
ZXA6OlNvbWVSZWdpc3RlcikpOworICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZh
bHVlKGFyZzIsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICBwYXRjaHBvaW50LT5yZXN1
bHRDb25zdHJhaW50ID0gVmFsdWVSZXA6OnN0YWNrQXJndW1lbnQoMCk7CisgICAgcGF0Y2hwb2lu
dC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgIHBh
dGNocG9pbnQtPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwg
Y29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIEFs
bG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAg
ICAgIENIRUNLKHBhcmFtcy5zaXplKCkgPT0gMyk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXNb
MF0gPT0gVmFsdWVSZXA6OnN0YWNrKC1zdGF0aWNfY2FzdDxpbnRwdHJfdD4ocHJvYy5mcmFtZVNp
emUoKSkpKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtc1sxXS5pc0dQUigpKTsKKyAgICAgICAg
ICAgIENIRUNLKHBhcmFtc1syXS5pc0dQUigpKTsKKyAgICAgICAgICAgIGppdC5hZGQzMihwYXJh
bXNbMV0uZ3ByKCksIHBhcmFtc1syXS5ncHIoKSwgaml0LnNjcmF0Y2hSZWdpc3RlcigpKTsKKyAg
ICAgICAgICAgIGppdC5zdG9yZTMyKGppdC5zY3JhdGNoUmVnaXN0ZXIoKSwgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIDApKTsKKyAgICAg
ICAgfSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIHBhdGNocG9pbnQpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2Ms
IDEsIDIpID09IDMpOworfQorCit2b2lkIHRlc3RQYXRjaHBvaW50V2l0aEFueVJlc3VsdCgpCit7
CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogYXJn
MiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBy
b290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBEb3VibGUsIE9yaWdpbigpKTsK
KyAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmcxLCBWYWx1ZVJlcDo6
U29tZVJlZ2lzdGVyKSk7CisgICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUo
YXJnMiwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOworICAgIHBhdGNocG9pbnQtPnJlc3VsdENv
bnN0cmFpbnQgPSBWYWx1ZVJlcDo6V2FybUFueTsKKyAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0
ZShSZWdpc3RlclNldDo6YWxsRlBScygpKTsKKyAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lz
dGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgcGF0Y2hwb2ludC0+Y2xvYmJl
cihSZWdpc3RlclNldChHUFJJbmZvOjpyZWdUMCkpOworICAgIHBhdGNocG9pbnQtPnNldEdlbmVy
YXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5l
cmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVn
aXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtcy5z
aXplKCkgPT0gMyk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXNbMF0uaXNTdGFjaygpKTsKKyAg
ICAgICAgICAgIENIRUNLKHBhcmFtc1sxXS5pc0dQUigpKTsKKyAgICAgICAgICAgIENIRUNLKHBh
cmFtc1syXS5pc0dQUigpKTsKKyAgICAgICAgICAgIGFkZDMyKGppdCwgcGFyYW1zWzFdLmdwcigp
LCBwYXJhbXNbMl0uZ3ByKCksIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5jb252
ZXJ0SW50MzJUb0RvdWJsZShHUFJJbmZvOjpyZWdUMCwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAg
ICAgICAgICBqaXQuc3RvcmVEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBwYXJhbXNbMF0ub2Zmc2V0RnJvbUZQ
KCkpKTsKKyAgICAgICAgfSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2Ms
IFJldHVybiwgT3JpZ2luKCksIHBhdGNocG9pbnQpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1
bjxkb3VibGU+KHByb2MsIDEsIDIpID09IDMpOworfQorCit2b2lkIHRlc3RTaW1wbGVDaGVjaygp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEpCisg
ICAgICAgIHJldHVybjsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIFZhbHVlKiBhcmcgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgQ2hlY2tWYWx1ZSogY2hlY2sg
PSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2ssIE9yaWdpbigpLCBhcmcp
OworICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAg
ICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAg
ICAgICAgICBDSEVDSyghcGFyYW1zLnNpemUoKSk7CisKKyAgICAgICAgICAgIC8vIFRoaXMgc2hv
dWxkIGFsd2F5cyB3b3JrIGJlY2F1c2UgYSBmdW5jdGlvbiB0aGlzIHNpbXBsZSBzaG91bGQgbmV2
ZXIgaGF2ZSBjYWxsZWUKKyAgICAgICAgICAgIC8vIHNhdmVzLgorICAgICAgICAgICAgaml0Lm1v
dmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoNDIpLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQ
Uik7CisgICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAgICAgICAg
IGppdC5yZXQoKTsKKyAgICAgICAgfSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8Q29uc3Qz
MlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVBy
b2MocHJvYyk7CisKKyAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgMCkgPT0gMCk7CisgICAg
Q0hFQ0soaW52b2tlPGludD4oKmNvZGUsIDEpID09IDQyKTsKK30KKwordm9pZCB0ZXN0Q2hlY2tG
YWxzZSgpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKyAgICBDaGVja1ZhbHVlKiBjaGVjayA9IHJvb3QtPmFwcGVuZE5ldzxD
aGVja1ZhbHVlPigKKyAgICAgICAgcHJvYywgQ2hlY2ssIE9yaWdpbigpLCByb290LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworICAgIHVuc2lnbmVkIG9wdExl
dmVsID0gcHJvYy5vcHRMZXZlbCgpOworICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoCisgICAgICAg
IFsmXSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewor
ICAgICAgICAgICAgaWYgKG9wdExldmVsID4gMSkKKyAgICAgICAgICAgICAgICBDSEVDSyghIlRo
aXMgc2hvdWxkIG5vdCBoYXZlIGV4ZWN1dGVkIik7CisgICAgICAgIH0pOworICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9v
dC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIGF1
dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworCisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNv
ZGUpID09IDApOworfQorCit2b2lkIHRlc3RDaGVja1RydWUoKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAxKQorICAgICAgICByZXR1cm47CisgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBDaGVja1ZhbHVlKiBjaGVj
ayA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPigKKyAgICAgICAgcHJvYywgQ2hlY2ssIE9y
aWdpbigpLCByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkp
OworICAgIHVuc2lnbmVkIG9wdExldmVsID0gcHJvYy5vcHRMZXZlbCgpOworICAgIGNoZWNrLT5z
ZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2Ny
YXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAgICAgICAgICBpZiAob3B0
TGV2ZWwgPiAxKQorICAgICAgICAgICAgICAgIENIRUNLKHBhcmFtcy52YWx1ZSgpLT5vcGNvZGUo
KSA9PSBQYXRjaHBvaW50KTsKKyAgICAgICAgICAgIENIRUNLKCFwYXJhbXMuc2l6ZSgpKTsKKwor
ICAgICAgICAgICAgLy8gVGhpcyBzaG91bGQgYWx3YXlzIHdvcmsgYmVjYXVzZSBhIGZ1bmN0aW9u
IHRoaXMgc2ltcGxlIHNob3VsZCBuZXZlciBoYXZlIGNhbGxlZQorICAgICAgICAgICAgLy8gc2F2
ZXMuCisgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMig0Miks
IEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25F
cGlsb2d1ZSgpOworICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICB9KTsKKyAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAg
ICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKworICAgIENIRUNLKGludm9rZTxpbnQ+
KCpjb2RlKSA9PSA0Mik7Cit9CisKK3ZvaWQgdGVzdENoZWNrTGVzc1RoYW4oKQoreworICAgIFBy
b2NlZHVyZSBwcm9jOworICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAxKQorICAgICAgICByZXR1
cm47CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSog
YXJnID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIENoZWNrVmFsdWUqIGNoZWNrID0g
cm9vdC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KAorICAgICAgICBwcm9jLCBDaGVjaywgT3JpZ2lu
KCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBM
ZXNzVGhhbiwgT3JpZ2luKCksIGFyZywKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0MikpKTsKKyAgICBjaGVjay0+c2V0R2VuZXJhdG9y
KAorICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRp
b25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3Rl
clVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgQ0hFQ0soIXBhcmFtcy5zaXpl
KCkpOworCisgICAgICAgICAgICAvLyBUaGlzIHNob3VsZCBhbHdheXMgd29yayBiZWNhdXNlIGEg
ZnVuY3Rpb24gdGhpcyBzaW1wbGUgc2hvdWxkIG5ldmVyIGhhdmUgY2FsbGVlCisgICAgICAgICAg
ICAvLyBzYXZlcy4KKyAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKDQyKSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworICAgICAgICAgICAgaml0LmVtaXRG
dW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgIH0pOwor
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDAp
KTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworCisgICAgQ0hFQ0soaW52
b2tlPGludD4oKmNvZGUsIDQyKSA9PSAwKTsKKyAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwg
MTAwMCkgPT0gMCk7CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsIDQxKSA9PSA0Mik7Cisg
ICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsIDApID09IDQyKTsKKyAgICBDSEVDSyhpbnZva2U8
aW50PigqY29kZSwgLTEpID09IDQyKTsKK30KKwordm9pZCB0ZXN0Q2hlY2tNZWdhQ29tYm8oKQor
eworICAgIFByb2NlZHVyZSBwcm9jOworICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAxKQorICAg
ICAgICByZXR1cm47CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBWYWx1ZSogYmFzZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogaW5kZXggPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBaRXh0MzIsIE9yaWdpbigpLAorICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9y
aWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSk7CisKKyAgICBWYWx1ZSogcHRy
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwg
YmFzZSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2Ms
IFNobCwgT3JpZ2luKCksIGluZGV4LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0
MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKSk7CisKKyAgICBDaGVja1ZhbHVlKiBjaGVjayA9
IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPigKKyAgICAgICAgcHJvYywgQ2hlY2ssIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywg
TGVzc1RoYW4sIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZh
bHVlPihwcm9jLCBMb2FkOFMsIE9yaWdpbigpLCBwdHIpLAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKSkpOworICAgIGNoZWNrLT5z
ZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2Ny
YXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAgICAgICAgICBDSEVDSygh
cGFyYW1zLnNpemUoKSk7CisKKyAgICAgICAgICAgIC8vIFRoaXMgc2hvdWxkIGFsd2F5cyB3b3Jr
IGJlY2F1c2UgYSBmdW5jdGlvbiB0aGlzIHNpbXBsZSBzaG91bGQgbmV2ZXIgaGF2ZSBjYWxsZWUK
KyAgICAgICAgICAgIC8vIHNhdmVzLgorICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoNDIpLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisgICAgICAgICAg
ICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAgICAgICAgIGppdC5yZXQoKTsKKyAg
ICAgICAgfSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgMCkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAg
ICBpbnQ4X3QgdmFsdWU7CisgICAgdmFsdWUgPSA0MjsKKyAgICBDSEVDSyhpbnZva2U8aW50Pigq
Y29kZSwgJnZhbHVlIC0gMiwgMSkgPT0gMCk7CisgICAgdmFsdWUgPSAxMjc7CisgICAgQ0hFQ0so
aW52b2tlPGludD4oKmNvZGUsICZ2YWx1ZSAtIDIsIDEpID09IDApOworICAgIHZhbHVlID0gNDE7
CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsICZ2YWx1ZSAtIDIsIDEpID09IDQyKTsKKyAg
ICB2YWx1ZSA9IDA7CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsICZ2YWx1ZSAtIDIsIDEp
ID09IDQyKTsKKyAgICB2YWx1ZSA9IC0xOworICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAm
dmFsdWUgLSAyLCAxKSA9PSA0Mik7Cit9CisKK3ZvaWQgdGVzdENoZWNrVHJpY2t5TWVnYUNvbWJv
KCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBpZiAocHJvYy5vcHRMZXZlbCgpIDwgMSkK
KyAgICAgICAgcmV0dXJuOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisgICAgVmFsdWUqIGJhc2UgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgVmFsdWUqIGluZGV4ID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgWkV4dDMyLCBPcmlnaW4oKSwK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwg
T3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMSkpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIDEpKSk7CisKKyAgICBWYWx1ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwgYmFzZSwKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFNobCwgT3JpZ2luKCksIGluZGV4LAor
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IDEpKSk7CisKKyAgICBDaGVja1ZhbHVlKiBjaGVjayA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1Zh
bHVlPigKKyAgICAgICAgcHJvYywgQ2hlY2ssIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTGVzc1RoYW4sIE9yaWdpbigpLAorICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkOFMsIE9yaWdp
bigpLCBwdHIpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIDQyKSkpOworICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoCisgICAgICAgIFsm
XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFy
YW1zKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dT
Y3JhdGNoKGppdCk7CisgICAgICAgICAgICBDSEVDSyghcGFyYW1zLnNpemUoKSk7CisKKyAgICAg
ICAgICAgIC8vIFRoaXMgc2hvdWxkIGFsd2F5cyB3b3JrIGJlY2F1c2UgYSBmdW5jdGlvbiB0aGlz
IHNpbXBsZSBzaG91bGQgbmV2ZXIgaGF2ZSBjYWxsZWUKKyAgICAgICAgICAgIC8vIHNhdmVzLgor
ICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoNDIpLCBHUFJJ
bmZvOjpyZXR1cm5WYWx1ZUdQUik7CisgICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9n
dWUoKTsKKyAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgfSk7CisgICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByb290
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgYXV0
byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICBpbnQ4X3QgdmFsdWU7CisgICAgdmFs
dWUgPSA0MjsKKyAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgJnZhbHVlIC0gMiwgMCkgPT0g
MCk7CisgICAgdmFsdWUgPSAxMjc7CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsICZ2YWx1
ZSAtIDIsIDApID09IDApOworICAgIHZhbHVlID0gNDE7CisgICAgQ0hFQ0soaW52b2tlPGludD4o
KmNvZGUsICZ2YWx1ZSAtIDIsIDApID09IDQyKTsKKyAgICB2YWx1ZSA9IDA7CisgICAgQ0hFQ0so
aW52b2tlPGludD4oKmNvZGUsICZ2YWx1ZSAtIDIsIDApID09IDQyKTsKKyAgICB2YWx1ZSA9IC0x
OworICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAmdmFsdWUgLSAyLCAwKSA9PSA0Mik7Cit9
CisKK3ZvaWQgdGVzdENoZWNrVHdvTWVnYUNvbWJvcygpCit7CisgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEpCisgICAgICAgIHJldHVybjsKKyAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBiYXNlID0gcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApOworICAgIFZhbHVlKiBpbmRleCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgIHByb2MsIFpFeHQzMiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMSkpKTsKKworICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLCBiYXNlLAorICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgU2hsLCBPcmlnaW4oKSwgaW5kZXgs
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgMSkpKTsKKworICAgIFZhbHVlKiBwcmVkaWNhdGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICBwcm9jLCBMZXNzVGhhbiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZDhTLCBPcmlnaW4oKSwgcHRyKSwKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKSk7CisKKyAg
ICBDaGVja1ZhbHVlKiBjaGVjayA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBD
aGVjaywgT3JpZ2luKCksIHByZWRpY2F0ZSk7CisgICAgY2hlY2stPnNldEdlbmVyYXRvcigKKyAg
ICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2Fn
ZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAgICAgIENIRUNLKCFwYXJhbXMuc2l6ZSgpKTsK
KworICAgICAgICAgICAgLy8gVGhpcyBzaG91bGQgYWx3YXlzIHdvcmsgYmVjYXVzZSBhIGZ1bmN0
aW9uIHRoaXMgc2ltcGxlIHNob3VsZCBuZXZlciBoYXZlIGNhbGxlZQorICAgICAgICAgICAgLy8g
c2F2ZXMuCisgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMig0
MiksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rp
b25FcGlsb2d1ZSgpOworICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICB9KTsKKyAgICBD
aGVja1ZhbHVlKiBjaGVjazIgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hl
Y2ssIE9yaWdpbigpLCBwcmVkaWNhdGUpOworICAgIGNoZWNrMi0+c2V0R2VuZXJhdG9yKAorICAg
ICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJh
bXMmIHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdl
IGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgQ0hFQ0soIXBhcmFtcy5zaXplKCkpOwor
CisgICAgICAgICAgICAvLyBUaGlzIHNob3VsZCBhbHdheXMgd29yayBiZWNhdXNlIGEgZnVuY3Rp
b24gdGhpcyBzaW1wbGUgc2hvdWxkIG5ldmVyIGhhdmUgY2FsbGVlCisgICAgICAgICAgICAvLyBz
YXZlcy4KKyAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDQz
KSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlv
bkVwaWxvZ3VlKCk7CisgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgIH0pOworICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKwor
ICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworCisgICAgaW50OF90IHZhbHVlOwor
ICAgIHZhbHVlID0gNDI7CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsICZ2YWx1ZSAtIDIs
IDEpID09IDApOworICAgIHZhbHVlID0gMTI3OworICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2Rl
LCAmdmFsdWUgLSAyLCAxKSA9PSAwKTsKKyAgICB2YWx1ZSA9IDQxOworICAgIENIRUNLKGludm9r
ZTxpbnQ+KCpjb2RlLCAmdmFsdWUgLSAyLCAxKSA9PSA0Mik7CisgICAgdmFsdWUgPSAwOworICAg
IENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAmdmFsdWUgLSAyLCAxKSA9PSA0Mik7CisgICAgdmFs
dWUgPSAtMTsKKyAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgJnZhbHVlIC0gMiwgMSkgPT0g
NDIpOworfQorCit2b2lkIHRlc3RDaGVja1R3b05vblJlZHVuZGFudE1lZ2FDb21ib3MoKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAxKQorICAgICAg
ICByZXR1cm47CisKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
IEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sq
IGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgVmFsdWUqIGJhc2UgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7CisgICAgVmFsdWUqIGluZGV4ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgcHJvYywgWkV4dDMyLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIxKSkpOworICAgIFZhbHVlKiBicmFuY2hQcmVkaWNhdGUgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigp
LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDB4ZmYpKTsKKworICAgIFZhbHVlKiBwdHIg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLCBi
YXNlLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywg
U2hsLCBPcmlnaW4oKSwgaW5kZXgsCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Qz
MlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpKTsKKworICAgIFZhbHVlKiBjaGVja1ByZWRpY2F0
ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIExlc3NUaGFuLCBPcmln
aW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkOFMs
IE9yaWdpbigpLCBwdHIpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgNDIpKTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
KyAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwgYnJhbmNoUHJlZGljYXRlLAorICAgICAg
ICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsK
KworICAgIENoZWNrVmFsdWUqIGNoZWNrID0gdGhlbkNhc2UtPmFwcGVuZE5ldzxDaGVja1ZhbHVl
Pihwcm9jLCBDaGVjaywgT3JpZ2luKCksIGNoZWNrUHJlZGljYXRlKTsKKyAgICBjaGVjay0+c2V0
R2VuZXJhdG9yKAorICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21h
cEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0
Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgQ0hFQ0soIXBh
cmFtcy5zaXplKCkpOworCisgICAgICAgICAgICAvLyBUaGlzIHNob3VsZCBhbHdheXMgd29yayBi
ZWNhdXNlIGEgZnVuY3Rpb24gdGhpcyBzaW1wbGUgc2hvdWxkIG5ldmVyIGhhdmUgY2FsbGVlCisg
ICAgICAgICAgICAvLyBzYXZlcy4KKyAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKDQyKSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworICAgICAgICAgICAg
aml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAgICAgICBqaXQucmV0KCk7CisgICAg
ICAgIH0pOworICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgNDMpKTsKKworICAgIENoZWNrVmFsdWUqIGNoZWNrMiA9IGVsc2VDYXNl
LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2ssIE9yaWdpbigpLCBjaGVja1ByZWRp
Y2F0ZSk7CisgICAgY2hlY2syLT5zZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0NhbGxIZWxw
ZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAg
ICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7
CisgICAgICAgICAgICBDSEVDSyghcGFyYW1zLnNpemUoKSk7CisKKyAgICAgICAgICAgIC8vIFRo
aXMgc2hvdWxkIGFsd2F5cyB3b3JrIGJlY2F1c2UgYSBmdW5jdGlvbiB0aGlzIHNpbXBsZSBzaG91
bGQgbmV2ZXIgaGF2ZSBjYWxsZWUKKyAgICAgICAgICAgIC8vIHNhdmVzLgorICAgICAgICAgICAg
aml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoNDQpLCBHUFJJbmZvOjpyZXR1cm5W
YWx1ZUdQUik7CisgICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAg
ICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgfSk7CisgICAgZWxzZUNhc2UtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgZWxzZUNhc2UtPmFw
cGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0NSkpOworCisgICAgYXV0byBj
b2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICBpbnQ4X3QgdmFsdWU7CisKKyAgICB2YWx1
ZSA9IDQyOworICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAmdmFsdWUgLSAyLCAxLCB0cnVl
KSA9PSA0Myk7CisgICAgdmFsdWUgPSAxMjc7CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUs
ICZ2YWx1ZSAtIDIsIDEsIHRydWUpID09IDQzKTsKKyAgICB2YWx1ZSA9IDQxOworICAgIENIRUNL
KGludm9rZTxpbnQ+KCpjb2RlLCAmdmFsdWUgLSAyLCAxLCB0cnVlKSA9PSA0Mik7CisgICAgdmFs
dWUgPSAwOworICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAmdmFsdWUgLSAyLCAxLCB0cnVl
KSA9PSA0Mik7CisgICAgdmFsdWUgPSAtMTsKKyAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwg
JnZhbHVlIC0gMiwgMSwgdHJ1ZSkgPT0gNDIpOworCisgICAgdmFsdWUgPSA0MjsKKyAgICBDSEVD
SyhpbnZva2U8aW50PigqY29kZSwgJnZhbHVlIC0gMiwgMSwgZmFsc2UpID09IDQ1KTsKKyAgICB2
YWx1ZSA9IDEyNzsKKyAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgJnZhbHVlIC0gMiwgMSwg
ZmFsc2UpID09IDQ1KTsKKyAgICB2YWx1ZSA9IDQxOworICAgIENIRUNLKGludm9rZTxpbnQ+KCpj
b2RlLCAmdmFsdWUgLSAyLCAxLCBmYWxzZSkgPT0gNDQpOworICAgIHZhbHVlID0gMDsKKyAgICBD
SEVDSyhpbnZva2U8aW50PigqY29kZSwgJnZhbHVlIC0gMiwgMSwgZmFsc2UpID09IDQ0KTsKKyAg
ICB2YWx1ZSA9IC0xOworICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAmdmFsdWUgLSAyLCAx
LCBmYWxzZSkgPT0gNDQpOworfQorCit2b2lkIHRlc3RDaGVja0FkZEltbSgpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEpCisgICAgICAgIHJldHVy
bjsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBh
cmcxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKTsKKyAgICBDaGVja1Zh
bHVlKiBjaGVja0FkZCA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja0Fk
ZCwgT3JpZ2luKCksIGFyZzEsIGFyZzIpOworICAgIGNoZWNrQWRkLT5hcHBlbmQoYXJnMSk7Cisg
ICAgY2hlY2tBZGQtPmFwcGVuZChhcmcyKTsKKyAgICBjaGVja0FkZC0+c2V0R2VuZXJhdG9yKAor
ICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25Q
YXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVz
YWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9
PSAyKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtc1swXS5pc0dQUigpKTsKKyAgICAgICAgICAg
IENIRUNLKHBhcmFtc1sxXS5pc0NvbnN0YW50KCkpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1z
WzFdLnZhbHVlKCkgPT0gNDIpOworICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91Ymxl
KHBhcmFtc1swXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBqaXQuY29u
dmVydEludDMyVG9Eb3VibGUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoNDIpLCBGUFJJbmZv
OjpmcFJlZ1QxKTsKKyAgICAgICAgICAgIGppdC5hZGREb3VibGUoRlBSSW5mbzo6ZnBSZWdUMSwg
RlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUo
KTsKKyAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgfSk7CisgICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIElUb0QsIE9yaWdpbigpLCBjaGVja0FkZCkp
OworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICBDSEVDSyhpbnZv
a2U8ZG91YmxlPigqY29kZSwgMCkgPT0gNDIuMCk7CisgICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4o
KmNvZGUsIDEpID09IDQzLjApOworICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCA0Mikg
PT0gODQuMCk7CisgICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDIxNDc0ODM2NDcpID09
IDIxNDc0ODM2ODkuMCk7Cit9CisKK3ZvaWQgdGVzdENoZWNrQWRkSW1tQ29tbXV0ZSgpCit7Cisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEpCisgICAgICAg
IHJldHVybjsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZh
bHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgVHJ1bmMs
IE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmcyID0g
cm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKTsKKyAgICBD
aGVja1ZhbHVlKiBjaGVja0FkZCA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBD
aGVja0FkZCwgT3JpZ2luKCksIGFyZzIsIGFyZzEpOworICAgIGNoZWNrQWRkLT5hcHBlbmQoYXJn
MSk7CisgICAgY2hlY2tBZGQtPmFwcGVuZChhcmcyKTsKKyAgICBjaGVja0FkZC0+c2V0R2VuZXJh
dG9yKAorICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdp
c3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnNp
emUoKSA9PSAyKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtc1swXS5pc0dQUigpKTsKKyAgICAg
ICAgICAgIENIRUNLKHBhcmFtc1sxXS5pc0NvbnN0YW50KCkpOworICAgICAgICAgICAgQ0hFQ0so
cGFyYW1zWzFdLnZhbHVlKCkgPT0gNDIpOworICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRv
RG91YmxlKHBhcmFtc1swXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBq
aXQuY29udmVydEludDMyVG9Eb3VibGUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoNDIpLCBG
UFJJbmZvOjpmcFJlZ1QxKTsKKyAgICAgICAgICAgIGppdC5hZGREb3VibGUoRlBSSW5mbzo6ZnBS
ZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBp
bG9ndWUoKTsKKyAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgfSk7CisgICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIElUb0QsIE9yaWdpbigpLCBjaGVj
a0FkZCkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICBDSEVD
SyhpbnZva2U8ZG91YmxlPigqY29kZSwgMCkgPT0gNDIuMCk7CisgICAgQ0hFQ0soaW52b2tlPGRv
dWJsZT4oKmNvZGUsIDEpID09IDQzLjApOworICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2Rl
LCA0MikgPT0gODQuMCk7CisgICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDIxNDc0ODM2
NDcpID09IDIxNDc0ODM2ODkuMCk7Cit9CisKK3ZvaWQgdGVzdENoZWNrQWRkSW1tU29tZVJlZ2lz
dGVyKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBpZiAocHJvYy5vcHRMZXZlbCgpIDwg
MSkKKyAgICAgICAgcmV0dXJuOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBw
cm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFs
dWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
NDIpOworICAgIENoZWNrVmFsdWUqIGNoZWNrQWRkID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFs
dWU+KHByb2MsIENoZWNrQWRkLCBPcmlnaW4oKSwgYXJnMSwgYXJnMik7CisgICAgY2hlY2tBZGQt
PmFwcGVuZFNvbWVSZWdpc3RlcihhcmcxKTsKKyAgICBjaGVja0FkZC0+YXBwZW5kU29tZVJlZ2lz
dGVyKGFyZzIpOworICAgIGNoZWNrQWRkLT5zZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7
CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNo
KGppdCk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09IDIpOworICAgICAgICAg
ICAgQ0hFQ0socGFyYW1zWzBdLmlzR1BSKCkpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzFd
LmlzR1BSKCkpOworICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKHBhcmFtc1sw
XS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBqaXQuY29udmVydEludDMy
VG9Eb3VibGUocGFyYW1zWzFdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QxKTsKKyAgICAgICAgICAg
IGppdC5hZGREb3VibGUoRlBSSW5mbzo6ZnBSZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAg
ICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAgICAgICAgIGppdC5yZXQo
KTsKKyAgICAgICAgfSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIElUb0QsIE9yaWdpbigpLCBjaGVja0FkZCkpOworCisgICAgYXV0byBjb2RlID0gY29t
cGlsZVByb2MocHJvYyk7CisKKyAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgMCkgPT0g
NDIuMCk7CisgICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDEpID09IDQzLjApOworICAg
IENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCA0MikgPT0gODQuMCk7CisgICAgQ0hFQ0soaW52
b2tlPGRvdWJsZT4oKmNvZGUsIDIxNDc0ODM2NDcpID09IDIxNDc0ODM2ODkuMCk7Cit9CisKK3Zv
aWQgdGVzdENoZWNrQWRkKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBpZiAocHJvYy5v
cHRMZXZlbCgpIDwgMSkKKyAgICAgICAgcmV0dXJuOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSk7CisgICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBw
cm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgQ2hl
Y2tWYWx1ZSogY2hlY2tBZGQgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hl
Y2tBZGQsIE9yaWdpbigpLCBhcmcxLCBhcmcyKTsKKyAgICBjaGVja0FkZC0+YXBwZW5kU29tZVJl
Z2lzdGVyKGFyZzEpOworICAgIGNoZWNrQWRkLT5hcHBlbmRTb21lUmVnaXN0ZXIoYXJnMik7Cisg
ICAgY2hlY2tBZGQtPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAg
IEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAg
ICAgICAgIENIRUNLKHBhcmFtcy5zaXplKCkgPT0gMik7CisgICAgICAgICAgICBDSEVDSyhwYXJh
bXNbMF0uaXNHUFIoKSk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0uaXNHUFIoKSk7Cisg
ICAgICAgICAgICBqaXQuY29udmVydEludDMyVG9Eb3VibGUocGFyYW1zWzBdLmdwcigpLCBGUFJJ
bmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShwYXJh
bXNbMV0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDEpOworICAgICAgICAgICAgaml0LmFkZERvdWJs
ZShGUFJJbmZvOjpmcFJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5l
bWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICB9
KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSVRvRCwg
T3JpZ2luKCksIGNoZWNrQWRkKSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9j
KTsKKworICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAwLCA0MikgPT0gNDIuMCk7Cisg
ICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDEsIDQyKSA9PSA0My4wKTsKKyAgICBDSEVD
SyhpbnZva2U8ZG91YmxlPigqY29kZSwgNDIsIDQyKSA9PSA4NC4wKTsKKyAgICBDSEVDSyhpbnZv
a2U8ZG91YmxlPigqY29kZSwgMjE0NzQ4MzY0NywgNDIpID09IDIxNDc0ODM2ODkuMCk7Cit9CisK
K3ZvaWQgdGVzdENoZWNrQWRkNjQoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIGlmIChw
cm9jLm9wdExldmVsKCkgPCAxKQorICAgICAgICByZXR1cm47CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
KyAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICBDaGVja1ZhbHVlKiBjaGVj
a0FkZCA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja0FkZCwgT3JpZ2lu
KCksIGFyZzEsIGFyZzIpOworICAgIGNoZWNrQWRkLT5hcHBlbmRTb21lUmVnaXN0ZXIoYXJnMSk7
CisgICAgY2hlY2tBZGQtPmFwcGVuZFNvbWVSZWdpc3RlcihhcmcyKTsKKyAgICBjaGVja0FkZC0+
c2V0R2VuZXJhdG9yKAorICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1Nj
cmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgQ0hFQ0so
cGFyYW1zLnNpemUoKSA9PSAyKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtc1swXS5pc0dQUigp
KTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtc1sxXS5pc0dQUigpKTsKKyAgICAgICAgICAgIGpp
dC5jb252ZXJ0SW50NjRUb0RvdWJsZShwYXJhbXNbMF0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDAp
OworICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQ2NFRvRG91YmxlKHBhcmFtc1sxXS5ncHIoKSwg
RlBSSW5mbzo6ZnBSZWdUMSk7CisgICAgICAgICAgICBqaXQuYWRkRG91YmxlKEZQUkluZm86OmZw
UmVnVDEsIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVw
aWxvZ3VlKCk7CisgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgIH0pOworICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJVG9ELCBPcmlnaW4oKSwgY2hl
Y2tBZGQpKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworCisgICAgQ0hF
Q0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDBsbCwgNDJsbCkgPT0gNDIuMCk7CisgICAgQ0hFQ0so
aW52b2tlPGRvdWJsZT4oKmNvZGUsIDFsbCwgNDJsbCkgPT0gNDMuMCk7CisgICAgQ0hFQ0soaW52
b2tlPGRvdWJsZT4oKmNvZGUsIDQybGwsIDQybGwpID09IDg0LjApOworICAgIENIRUNLKGludm9r
ZTxkb3VibGU+KCpjb2RlLCA5MjIzMzcyMDM2ODU0Nzc1ODA3bGwsIDQybGwpID09IHN0YXRpY19j
YXN0PGRvdWJsZT4oOTIyMzM3MjAzNjg1NDc3NTgwN2xsKSArIDQyLjApOworfQorCit2b2lkIHRl
c3RDaGVja0FkZEZvbGQoaW50IGEsIGludCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZzEgPSBy
b290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7CisgICAgVmFs
dWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
Yik7CisgICAgQ2hlY2tWYWx1ZSogY2hlY2tBZGQgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1
ZT4ocHJvYywgQ2hlY2tBZGQsIE9yaWdpbigpLCBhcmcxLCBhcmcyKTsKKyAgICB1bnNpZ25lZCBv
cHRMZXZlbCA9IHByb2Mub3B0TGV2ZWwoKTsKKyAgICBjaGVja0FkZC0+c2V0R2VuZXJhdG9yKAor
ICAgICAgICBbJl0gKENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFt
cyYpIHsKKyAgICAgICAgICAgIGlmIChvcHRMZXZlbCA+IDEpCisgICAgICAgICAgICAgICAgQ0hF
Q0soISJTaG91bGQgaGF2ZSBiZWVuIGZvbGRlZCIpOworICAgICAgICB9KTsKKyAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2hlY2tBZGQpOwor
CisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICBDSEVDSyhpbnZva2U8
aW50PigqY29kZSkgPT0gYSArIGIpOworfQorCit2b2lkIHRlc3RDaGVja0FkZEZvbGRGYWlsKGlu
dCBhLCBpbnQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBpZiAocHJvYy5vcHRMZXZl
bCgpIDwgMSkKKyAgICAgICAgcmV0dXJuOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgYSk7CisgICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7CisgICAgQ2hlY2tWYWx1ZSogY2hlY2tB
ZGQgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2tBZGQsIE9yaWdpbigp
LCBhcmcxLCBhcmcyKTsKKyAgICBjaGVja0FkZC0+c2V0R2VuZXJhdG9yKAorICAgICAgICBbJl0g
KENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7Cisg
ICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGpp
dCk7CisgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMig0Miks
IEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25F
cGlsb2d1ZSgpOworICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICB9KTsKKyAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2hlY2tBZGQp
OworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICBDSEVDSyhpbnZv
a2U8aW50PigqY29kZSkgPT0gNDIpOworfQorCit2b2lkIHRlc3RDaGVja0FkZEFyZ3VtZW50QWxp
YXNpbmc2NCgpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAg
ICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICBWYWx1ZSogYXJnMyA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIyKTsKKworICAgIC8vIFByZXRlbmQgdG8gdXNlIGFsbCB0aGUgYXJncy4KKyAgICBQ
YXRjaHBvaW50VmFsdWUqIHVzZUFyZ3MgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVl
Pihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7CisgICAgdXNlQXJncy0+YXBwZW5kKENvbnN0cmFpbmVk
VmFsdWUoYXJnMSwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOworICAgIHVzZUFyZ3MtPmFwcGVu
ZChDb25zdHJhaW5lZFZhbHVlKGFyZzIsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICB1
c2VBcmdzLT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmczLCBWYWx1ZVJlcDo6U29tZVJlZ2lz
dGVyKSk7CisgICAgdXNlQXJncy0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxwZXJzJiwgY29u
c3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKKworICAgIC8vIExhc3QgdXNlIG9m
IGZpcnN0IGFyZyAoaGVyZSwgYXJnMSkuCisgICAgQ2hlY2tWYWx1ZSogY2hlY2tBZGQxID0gcm9v
dC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrQWRkLCBPcmlnaW4oKSwgYXJnMSwg
YXJnMik7CisgICAgY2hlY2tBZGQxLT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyBqaXQub29wcygpOyB9KTsKKwor
ICAgIC8vIExhc3QgdXNlIG9mIHNlY29uZCBhcmcgKGhlcmUsIGFyZzIpLgorICAgIENoZWNrVmFs
dWUqIGNoZWNrQWRkMiA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja0Fk
ZCwgT3JpZ2luKCksIGFyZzMsIGFyZzIpOworICAgIGNoZWNrQWRkMi0+c2V0R2VuZXJhdG9yKFsm
XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsg
aml0Lm9vcHMoKTsgfSk7CisKKyAgICAvLyBLZWVwIGFyZzMgbGl2ZS4KKyAgICBQYXRjaHBvaW50
VmFsdWUqIGtlZXBBcmcyTGl2ZSA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHBy
b2MsIFZvaWQsIE9yaWdpbigpKTsKKyAgICBrZWVwQXJnMkxpdmUtPmFwcGVuZChDb25zdHJhaW5l
ZFZhbHVlKGFyZzIsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICBrZWVwQXJnMkxpdmUt
PnNldEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlv
blBhcmFtcyYpIHsgfSk7CisKKyAgICAvLyBPbmx5IHVzZSBvZiBjaGVja0FkZDEgYW5kIGNoZWNr
QWRkMi4KKyAgICBDaGVja1ZhbHVlKiBjaGVja0FkZDMgPSByb290LT5hcHBlbmROZXc8Q2hlY2tW
YWx1ZT4ocHJvYywgQ2hlY2tBZGQsIE9yaWdpbigpLCBjaGVja0FkZDEsIGNoZWNrQWRkMik7Cisg
ICAgY2hlY2tBZGQzLT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3Qg
U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyBqaXQub29wcygpOyB9KTsKKworICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBjaGVja0FkZDMp
OworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCAxLCAyLCAzKSA9PSA4
KTsKK30KKwordm9pZCB0ZXN0Q2hlY2tBZGRBcmd1bWVudEFsaWFzaW5nMzIoKQoreworICAgIFBy
b2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBU
cnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFy
ZzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2lu
KCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgVmFsdWUqIGFyZzMgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIyKSk7CisKKyAgICAvLyBQcmV0ZW5kIHRvIHVzZSBhbGwgdGhlIGFyZ3Mu
CisgICAgUGF0Y2hwb2ludFZhbHVlKiB1c2VBcmdzID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9p
bnRWYWx1ZT4ocHJvYywgVm9pZCwgT3JpZ2luKCkpOworICAgIHVzZUFyZ3MtPmFwcGVuZChDb25z
dHJhaW5lZFZhbHVlKGFyZzEsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICB1c2VBcmdz
LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmcyLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7
CisgICAgdXNlQXJncy0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMywgVmFsdWVSZXA6OlNv
bWVSZWdpc3RlcikpOworICAgIHVzZUFyZ3MtPnNldEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVy
cyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsgfSk7CisKKyAgICAvLyBMYXN0
IHVzZSBvZiBmaXJzdCBhcmcgKGhlcmUsIGFyZzEpLgorICAgIENoZWNrVmFsdWUqIGNoZWNrQWRk
MSA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja0FkZCwgT3JpZ2luKCks
IGFyZzEsIGFyZzIpOworICAgIGNoZWNrQWRkMS0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxw
ZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsgaml0Lm9vcHMoKTsg
fSk7CisKKyAgICAvLyBMYXN0IHVzZSBvZiBzZWNvbmQgYXJnIChoZXJlLCBhcmczKS4KKyAgICBD
aGVja1ZhbHVlKiBjaGVja0FkZDIgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywg
Q2hlY2tBZGQsIE9yaWdpbigpLCBhcmcyLCBhcmczKTsKKyAgICBjaGVja0FkZDItPnNldEdlbmVy
YXRvcihbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJh
bXMmKSB7IGppdC5vb3BzKCk7IH0pOworCisgICAgLy8gS2VlcCBhcmczIGxpdmUuCisgICAgUGF0
Y2hwb2ludFZhbHVlKiBrZWVwQXJnMkxpdmUgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZh
bHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7CisgICAga2VlcEFyZzJMaXZlLT5hcHBlbmQoQ29u
c3RyYWluZWRWYWx1ZShhcmcyLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7CisgICAga2VlcEFy
ZzJMaXZlLT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMmLCBjb25zdCBTdGFja21hcEdl
bmVyYXRpb25QYXJhbXMmKSB7IH0pOworCisgICAgLy8gT25seSB1c2Ugb2YgY2hlY2tBZGQxIGFu
ZCBjaGVja0FkZDIuCisgICAgQ2hlY2tWYWx1ZSogY2hlY2tBZGQzID0gcm9vdC0+YXBwZW5kTmV3
PENoZWNrVmFsdWU+KHByb2MsIENoZWNrQWRkLCBPcmlnaW4oKSwgY2hlY2tBZGQxLCBjaGVja0Fk
ZDIpOworICAgIGNoZWNrQWRkMy0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQs
IGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsgaml0Lm9vcHMoKTsgfSk7CisKKyAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2hl
Y2tBZGQzKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgMSwgMiwg
MykgPT0gOCk7Cit9CisKK3ZvaWQgdGVzdENoZWNrQWRkU2VsZk92ZXJmbG93NjQoKQoreworICAg
IFByb2NlZHVyZSBwcm9jOworICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAxKQorICAgICAgICBy
ZXR1cm47CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1
ZSogYXJnID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIENoZWNrVmFsdWUqIGNoZWNrQWRkID0gcm9v
dC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrQWRkLCBPcmlnaW4oKSwgYXJnLCBh
cmcpOworICAgIGNoZWNrQWRkLT5hcHBlbmQoYXJnKTsKKyAgICBjaGVja0FkZC0+c2V0R2VuZXJh
dG9yKAorICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdp
c3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgaml0Lm1vdmUocGFyYW1z
WzBdLmdwcigpLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisgICAgICAgICAgICBqaXQuZW1p
dEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgfSk7
CisKKyAgICAvLyBNYWtlIHN1cmUgdGhlIGFyZyBpcyBub3QgdGhlIGRlc3RpbmF0aW9uIG9mIHRo
ZSBvcGVyYXRpb24uCisgICAgUGF0Y2hwb2ludFZhbHVlKiBvcGFxdWVVc2UgPSByb290LT5hcHBl
bmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7CisgICAgb3BhcXVl
VXNlLT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmcsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIp
KTsKKyAgICBvcGFxdWVVc2UtPnNldEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVycyYsIGNvbnN0
IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsgfSk7CisKKyAgICByb290LT5hcHBlbmROZXdD
b250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2hlY2tBZGQpOworCisgICAgYXV0
byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICBDSEVDSyhpbnZva2U8aW50NjRfdD4o
KmNvZGUsIDBsbCkgPT0gMCk7CisgICAgQ0hFQ0soaW52b2tlPGludDY0X3Q+KCpjb2RlLCAxbGwp
ID09IDIpOworICAgIENIRUNLKGludm9rZTxpbnQ2NF90PigqY29kZSwgc3RkOjpudW1lcmljX2xp
bWl0czxpbnQ2NF90Pjo6bWF4KCkpID09IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1h
eCgpKTsKK30KKwordm9pZCB0ZXN0Q2hlY2tBZGRTZWxmT3ZlcmZsb3czMigpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEpCisgICAgICAgIHJldHVy
bjsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBh
cmcgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2lu
KCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgQ2hlY2tWYWx1ZSogY2hlY2tBZGQg
PSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2tBZGQsIE9yaWdpbigpLCBh
cmcsIGFyZyk7CisgICAgY2hlY2tBZGQtPmFwcGVuZChhcmcpOworICAgIGNoZWNrQWRkLT5zZXRH
ZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRj
aFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAgICAgICAgICBqaXQubW92ZShw
YXJhbXNbMF0uZ3ByKCksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAgICAgICAgIGpp
dC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAgICAgICAgaml0LnJldCgpOworICAgICAg
ICB9KTsKKworICAgIC8vIE1ha2Ugc3VyZSB0aGUgYXJnIGlzIG5vdCB0aGUgZGVzdGluYXRpb24g
b2YgdGhlIG9wZXJhdGlvbi4KKyAgICBQYXRjaHBvaW50VmFsdWUqIG9wYXF1ZVVzZSA9IHJvb3Qt
PmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKKyAgICBv
cGFxdWVVc2UtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZywgVmFsdWVSZXA6OlNvbWVSZWdp
c3RlcikpOworICAgIG9wYXF1ZVVzZS0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxwZXJzJiwg
Y29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKKworICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBjaGVja0FkZCk7CisKKyAg
ICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKworICAgIENIRUNLKGludm9rZTxpbnQz
Ml90PigqY29kZSwgMGxsKSA9PSAwKTsKKyAgICBDSEVDSyhpbnZva2U8aW50MzJfdD4oKmNvZGUs
IDFsbCkgPT0gMik7CisgICAgQ0hFQ0soaW52b2tlPGludDMyX3Q+KCpjb2RlLCBzdGQ6Om51bWVy
aWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkgPT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90
Pjo6bWF4KCkpOworfQorCit2b2lkIHRlc3RDaGVja1N1YkltbSgpCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEpCisgICAgICAgIHJldHVybjsKKyAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmcxID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5k
TmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKTsKKyAgICBDaGVja1ZhbHVlKiBj
aGVja1N1YiA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja1N1YiwgT3Jp
Z2luKCksIGFyZzEsIGFyZzIpOworICAgIGNoZWNrU3ViLT5hcHBlbmQoYXJnMSk7CisgICAgY2hl
Y2tTdWItPmFwcGVuZChhcmcyKTsKKyAgICBjaGVja1N1Yi0+c2V0R2VuZXJhdG9yKAorICAgICAg
ICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMm
IHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFs
bG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9PSAyKTsK
KyAgICAgICAgICAgIENIRUNLKHBhcmFtc1swXS5pc0dQUigpKTsKKyAgICAgICAgICAgIENIRUNL
KHBhcmFtc1sxXS5pc0NvbnN0YW50KCkpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzFdLnZh
bHVlKCkgPT0gNDIpOworICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKHBhcmFt
c1swXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBqaXQuY29udmVydElu
dDMyVG9Eb3VibGUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoNDIpLCBGUFJJbmZvOjpmcFJl
Z1QxKTsKKyAgICAgICAgICAgIGppdC5zdWJEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMSwgRlBSSW5m
bzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAg
ICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgfSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIElUb0QsIE9yaWdpbigpLCBjaGVja1N1YikpOworCisg
ICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICBDSEVDSyhpbnZva2U8ZG91
YmxlPigqY29kZSwgMCkgPT0gLTQyLjApOworICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2Rl
LCAxKSA9PSAtNDEuMCk7CisgICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDQyKSA9PSAw
LjApOworICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAtMjE0NzQ4MzY0NykgPT0gLTIx
NDc0ODM2ODkuMCk7Cit9CisKK3ZvaWQgdGVzdENoZWNrU3ViQmFkSW1tKCkKK3sKKyAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICBpZiAocHJvYy5vcHRMZXZlbCgpIDwgMSkKKyAgICAgICAgcmV0dXJu
OworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFy
ZzEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2lu
KCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgaW50MzJfdCBiYWRJbW0gPSBzdGQ6
Om51bWVyaWNfbGltaXRzPGludD46Om1pbigpOworICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGJhZEltbSk7CisgICAgQ2hlY2tW
YWx1ZSogY2hlY2tTdWIgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2tT
dWIsIE9yaWdpbigpLCBhcmcxLCBhcmcyKTsKKyAgICBjaGVja1N1Yi0+YXBwZW5kKGFyZzEpOwor
ICAgIGNoZWNrU3ViLT5hcHBlbmQoYXJnMik7CisgICAgY2hlY2tTdWItPnNldEdlbmVyYXRvcigK
KyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9u
UGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJV
c2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtcy5zaXplKCkg
PT0gMik7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXNbMF0uaXNHUFIoKSk7CisgICAgICAgICAg
ICBqaXQuY29udmVydEludDMyVG9Eb3VibGUocGFyYW1zWzBdLmdwcigpLCBGUFJJbmZvOjpmcFJl
Z1QwKTsKKworICAgICAgICAgICAgaWYgKHBhcmFtc1sxXS5pc0NvbnN0YW50KCkpIHsKKyAgICAg
ICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0udmFsdWUoKSA9PSBiYWRJbW0pOworICAgICAgICAg
ICAgICAgIGppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihiYWRJbW0pLCBGUFJJbmZvOjpmcFJlZ1QxKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzFdLmlzR1BSKCkpOworICAgICAgICAgICAgICAgIGpp
dC5jb252ZXJ0SW50MzJUb0RvdWJsZShwYXJhbXNbMV0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDEp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaml0LnN1YkRvdWJsZShGUFJJbmZvOjpmcFJl
Z1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGls
b2d1ZSgpOworICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICB9KTsKKyAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSVRvRCwgT3JpZ2luKCksIGNoZWNr
U3ViKSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKworICAgIENIRUNL
KGludm9rZTxkb3VibGU+KCpjb2RlLCAwKSA9PSAtc3RhdGljX2Nhc3Q8ZG91YmxlPihiYWRJbW0p
KTsKKyAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgLTEpID09IC1zdGF0aWNfY2FzdDxk
b3VibGU+KGJhZEltbSkgLSAxKTsKKyAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgMSkg
PT0gLXN0YXRpY19jYXN0PGRvdWJsZT4oYmFkSW1tKSArIDEpOworICAgIENIRUNLKGludm9rZTxk
b3VibGU+KCpjb2RlLCA0MikgPT0gLXN0YXRpY19jYXN0PGRvdWJsZT4oYmFkSW1tKSArIDQyKTsK
K30KKwordm9pZCB0ZXN0Q2hlY2tTdWIoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIGlm
IChwcm9jLm9wdExldmVsKCkgPCAxKQorICAgICAgICByZXR1cm47CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKTsKKyAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsK
KyAgICBDaGVja1ZhbHVlKiBjaGVja1N1YiA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihw
cm9jLCBDaGVja1N1YiwgT3JpZ2luKCksIGFyZzEsIGFyZzIpOworICAgIGNoZWNrU3ViLT5hcHBl
bmQoYXJnMSk7CisgICAgY2hlY2tTdWItPmFwcGVuZChhcmcyKTsKKyAgICBjaGVja1N1Yi0+c2V0
R2VuZXJhdG9yKAorICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21h
cEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0
Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgQ0hFQ0socGFy
YW1zLnNpemUoKSA9PSAyKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtc1swXS5pc0dQUigpKTsK
KyAgICAgICAgICAgIENIRUNLKHBhcmFtc1sxXS5pc0dQUigpKTsKKyAgICAgICAgICAgIGppdC5j
b252ZXJ0SW50MzJUb0RvdWJsZShwYXJhbXNbMF0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDApOwor
ICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKHBhcmFtc1sxXS5ncHIoKSwgRlBS
SW5mbzo6ZnBSZWdUMSk7CisgICAgICAgICAgICBqaXQuc3ViRG91YmxlKEZQUkluZm86OmZwUmVn
VDEsIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxv
Z3VlKCk7CisgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgIH0pOworICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJVG9ELCBPcmlnaW4oKSwgY2hlY2tT
dWIpKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworCisgICAgQ0hFQ0so
aW52b2tlPGRvdWJsZT4oKmNvZGUsIDAsIDQyKSA9PSAtNDIuMCk7CisgICAgQ0hFQ0soaW52b2tl
PGRvdWJsZT4oKmNvZGUsIDEsIDQyKSA9PSAtNDEuMCk7CisgICAgQ0hFQ0soaW52b2tlPGRvdWJs
ZT4oKmNvZGUsIDQyLCA0MikgPT0gMC4wKTsKKyAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29k
ZSwgLTIxNDc0ODM2NDcsIDQyKSA9PSAtMjE0NzQ4MzY4OS4wKTsKK30KKworTkVWRVJfSU5MSU5F
IGRvdWJsZSBkb3VibGVTdWIoZG91YmxlIGEsIGRvdWJsZSBiKQoreworICAgIHJldHVybiBhIC0g
YjsKK30KKwordm9pZCB0ZXN0Q2hlY2tTdWI2NCgpCit7CisgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEpCisgICAgICAgIHJldHVybjsKKyAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOworICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgIENoZWNrVmFs
dWUqIGNoZWNrU3ViID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrU3Vi
LCBPcmlnaW4oKSwgYXJnMSwgYXJnMik7CisgICAgY2hlY2tTdWItPmFwcGVuZChhcmcxKTsKKyAg
ICBjaGVja1N1Yi0+YXBwZW5kKGFyZzIpOworICAgIGNoZWNrU3ViLT5zZXRHZW5lcmF0b3IoCisg
ICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNh
Z2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09
IDIpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzBdLmlzR1BSKCkpOworICAgICAgICAgICAg
Q0hFQ0socGFyYW1zWzFdLmlzR1BSKCkpOworICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQ2NFRv
RG91YmxlKHBhcmFtc1swXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBq
aXQuY29udmVydEludDY0VG9Eb3VibGUocGFyYW1zWzFdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1Qx
KTsKKyAgICAgICAgICAgIGppdC5zdWJEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMSwgRlBSSW5mbzo6
ZnBSZWdUMCk7CisgICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAg
ICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgfSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIElUb0QsIE9yaWdpbigpLCBjaGVja1N1YikpOworCisgICAg
YXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICBDSEVDSyhpbnZva2U8ZG91Ymxl
PigqY29kZSwgMGxsLCA0MmxsKSA9PSAtNDIuMCk7CisgICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4o
KmNvZGUsIDFsbCwgNDJsbCkgPT0gLTQxLjApOworICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpj
b2RlLCA0MmxsLCA0MmxsKSA9PSAwLjApOworICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2Rl
LCAtOTIyMzM3MjAzNjg1NDc3NTgwN2xsLCA0MmxsKSA9PSBkb3VibGVTdWIoc3RhdGljX2Nhc3Q8
ZG91YmxlPigtOTIyMzM3MjAzNjg1NDc3NTgwN2xsKSwgNDIuMCkpOworfQorCit2b2lkIHRlc3RD
aGVja1N1YkZvbGQoaW50IGEsIGludCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZzEgPSByb290
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7CisgICAgVmFsdWUq
IGFyZzIgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7
CisgICAgQ2hlY2tWYWx1ZSogY2hlY2tTdWIgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4o
cHJvYywgQ2hlY2tTdWIsIE9yaWdpbigpLCBhcmcxLCBhcmcyKTsKKyAgICB1bnNpZ25lZCBvcHRM
ZXZlbCA9IHByb2Mub3B0TGV2ZWwoKTsKKyAgICBjaGVja1N1Yi0+c2V0R2VuZXJhdG9yKAorICAg
ICAgICBbJl0gKENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYp
IHsKKyAgICAgICAgICAgIGlmIChvcHRMZXZlbCA+IDEpCisgICAgICAgICAgICAgICAgQ0hFQ0so
ISJTaG91bGQgaGF2ZSBiZWVuIGZvbGRlZCIpOworICAgICAgICB9KTsKKyAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2hlY2tTdWIpOworCisg
ICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICBDSEVDSyhpbnZva2U8aW50
PigqY29kZSkgPT0gYSAtIGIpOworfQorCit2b2lkIHRlc3RDaGVja1N1YkZvbGRGYWlsKGludCBh
LCBpbnQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBpZiAocHJvYy5vcHRMZXZlbCgp
IDwgMSkKKyAgICAgICAgcmV0dXJuOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgYSk7CisgICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7CisgICAgQ2hlY2tWYWx1ZSogY2hlY2tTdWIg
PSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2tTdWIsIE9yaWdpbigpLCBh
cmcxLCBhcmcyKTsKKyAgICBjaGVja1N1Yi0+c2V0R2VuZXJhdG9yKAorICAgICAgICBbJl0gKEND
YWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAg
ICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7
CisgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMig0MiksIEdQ
UkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGls
b2d1ZSgpOworICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICB9KTsKKyAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2hlY2tTdWIpOwor
CisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICBDSEVDSyhpbnZva2U8
aW50PigqY29kZSkgPT0gNDIpOworfQorCit2b2lkIHRlc3RDaGVja05lZygpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEpCisgICAgICAgIHJldHVy
bjsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBh
cmcxID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApOwor
ICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywg
VHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIENoZWNrVmFs
dWUqIGNoZWNrTmVnID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrU3Vi
LCBPcmlnaW4oKSwgYXJnMSwgYXJnMik7CisgICAgY2hlY2tOZWctPmFwcGVuZChhcmcyKTsKKyAg
ICBjaGVja05lZy0+c2V0R2VuZXJhdG9yKAorICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0
LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAg
QWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAg
ICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9PSAxKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFt
c1swXS5pc0dQUigpKTsKKyAgICAgICAgICAgIGppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShwYXJh
bXNbMF0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDEpOworICAgICAgICAgICAgaml0Lm5lZ2F0ZURv
dWJsZShGUFJJbmZvOjpmcFJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIGpp
dC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAgICAgICAgaml0LnJldCgpOworICAgICAg
ICB9KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSVRv
RCwgT3JpZ2luKCksIGNoZWNrTmVnKSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhw
cm9jKTsKKworICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAwKSA9PSAwLjApOworICAg
IENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAxKSA9PSAtMS4wKTsKKyAgICBDSEVDSyhpbnZv
a2U8ZG91YmxlPigqY29kZSwgNDIpID09IC00Mi4wKTsKKyAgICBDSEVDSyhpbnZva2U8ZG91Ymxl
PigqY29kZSwgLTIxNDc0ODM2NDcgLSAxKSA9PSAyMTQ3NDgzNjQ4LjApOworfQorCit2b2lkIHRl
c3RDaGVja05lZzY0KCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBpZiAocHJvYy5vcHRM
ZXZlbCgpIDwgMSkKKyAgICAgICAgcmV0dXJuOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgMCk7CisgICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7CisgICAgQ2hlY2tWYWx1ZSogY2hlY2tOZWcgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1
ZT4ocHJvYywgQ2hlY2tTdWIsIE9yaWdpbigpLCBhcmcxLCBhcmcyKTsKKyAgICBjaGVja05lZy0+
YXBwZW5kKGFyZzIpOworICAgIGNoZWNrTmVnLT5zZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAo
Q0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1z
KSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3Jh
dGNoKGppdCk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09IDEpOworICAgICAg
ICAgICAgQ0hFQ0socGFyYW1zWzBdLmlzR1BSKCkpOworICAgICAgICAgICAgaml0LmNvbnZlcnRJ
bnQ2NFRvRG91YmxlKHBhcmFtc1swXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMSk7CisgICAgICAg
ICAgICBqaXQubmVnYXRlRG91YmxlKEZQUkluZm86OmZwUmVnVDEsIEZQUkluZm86OmZwUmVnVDAp
OworICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAgICAgICBq
aXQucmV0KCk7CisgICAgICAgIH0pOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
KyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBJVG9ELCBPcmlnaW4oKSwgY2hlY2tOZWcpKTsKKworICAgIGF1dG8gY29k
ZSA9IGNvbXBpbGVQcm9jKHByb2MpOworCisgICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUs
IDBsbCkgPT0gMC4wKTsKKyAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgMWxsKSA9PSAt
MS4wKTsKKyAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgNDJsbCkgPT0gLTQyLjApOwor
ICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAtOTIyMzM3MjAzNjg1NDc3NTgwN2xsIC0g
MSkgPT0gOTIyMzM3MjAzNjg1NDc3NTgwOC4wKTsKK30KKwordm9pZCB0ZXN0Q2hlY2tNdWwoKQor
eworICAgIFByb2NlZHVyZSBwcm9jOworICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAxKQorICAg
ICAgICByZXR1cm47CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIFRy
dW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogYXJn
MiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4o
KSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICBDaGVja1ZhbHVlKiBjaGVja011bCA9
IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja011bCwgT3JpZ2luKCksIGFy
ZzEsIGFyZzIpOworICAgIGNoZWNrTXVsLT5hcHBlbmQoYXJnMSk7CisgICAgY2hlY2tNdWwtPmFw
cGVuZChhcmcyKTsKKyAgICBjaGVja011bC0+c2V0R2VuZXJhdG9yKAorICAgICAgICBbJl0gKEND
YWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykg
eworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRj
aChqaXQpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9PSAyKTsKKyAgICAgICAg
ICAgIENIRUNLKHBhcmFtc1swXS5pc0dQUigpKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtc1sx
XS5pc0dQUigpKTsKKyAgICAgICAgICAgIGppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShwYXJhbXNb
MF0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQz
MlRvRG91YmxlKHBhcmFtc1sxXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMSk7CisgICAgICAgICAg
ICBqaXQubXVsRG91YmxlKEZQUkluZm86OmZwUmVnVDEsIEZQUkluZm86OmZwUmVnVDApOworICAg
ICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAgICAgICBqaXQucmV0
KCk7CisgICAgICAgIH0pOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBJVG9ELCBPcmlnaW4oKSwgY2hlY2tNdWwpKTsKKworICAgIGF1dG8gY29kZSA9IGNv
bXBpbGVQcm9jKHByb2MpOworCisgICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDAsIDQy
KSA9PSAwLjApOworICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAxLCA0MikgPT0gNDIu
MCk7CisgICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDQyLCA0MikgPT0gNDIuMCAqIDQy
LjApOworICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAyMTQ3NDgzNjQ3LCA0MikgPT0g
MjE0NzQ4MzY0Ny4wICogNDIuMCk7Cit9CisKK3ZvaWQgdGVzdENoZWNrTXVsTWVtb3J5KCkKK3sK
KyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBpZiAocHJvYy5vcHRMZXZlbCgpIDwgMSkKKyAgICAg
ICAgcmV0dXJuOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAg
ICBpbnQgbGVmdDsKKyAgICBpbnQgcmlnaHQ7CisKKyAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4o
KSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCAmbGVmdCkpOworICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVl
PigKKyAgICAgICAgcHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLAorICAgICAgICByb290LT5h
cHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZyaWdodCkpOworICAgIENo
ZWNrVmFsdWUqIGNoZWNrTXVsID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENo
ZWNrTXVsLCBPcmlnaW4oKSwgYXJnMSwgYXJnMik7CisgICAgY2hlY2tNdWwtPmFwcGVuZChhcmcx
KTsKKyAgICBjaGVja011bC0+YXBwZW5kKGFyZzIpOworICAgIGNoZWNrTXVsLT5zZXRHZW5lcmF0
b3IoCisgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJh
dGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lz
dGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6
ZSgpID09IDIpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzBdLmlzR1BSKCkpOworICAgICAg
ICAgICAgQ0hFQ0socGFyYW1zWzFdLmlzR1BSKCkpOworICAgICAgICAgICAgaml0LmNvbnZlcnRJ
bnQzMlRvRG91YmxlKHBhcmFtc1swXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAg
ICAgICBqaXQuY29udmVydEludDMyVG9Eb3VibGUocGFyYW1zWzFdLmdwcigpLCBGUFJJbmZvOjpm
cFJlZ1QxKTsKKyAgICAgICAgICAgIGppdC5tdWxEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMSwgRlBS
SW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsK
KyAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgfSk7CisgICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIElUb0QsIE9yaWdpbigpLCBjaGVja011bCkpOwor
CisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICBsZWZ0ID0gMDsKKyAg
ICByaWdodCA9IDQyOworICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlKSA9PSAwLjApOwor
CisgICAgbGVmdCA9IDE7CisgICAgcmlnaHQgPSA0MjsKKyAgICBDSEVDSyhpbnZva2U8ZG91Ymxl
PigqY29kZSkgPT0gNDIuMCk7CisKKyAgICBsZWZ0ID0gNDI7CisgICAgcmlnaHQgPSA0MjsKKyAg
ICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSkgPT0gNDIuMCAqIDQyLjApOworCisgICAgbGVm
dCA9IDIxNDc0ODM2NDc7CisgICAgcmlnaHQgPSA0MjsKKyAgICBDSEVDSyhpbnZva2U8ZG91Ymxl
PigqY29kZSkgPT0gMjE0NzQ4MzY0Ny4wICogNDIuMCk7Cit9CisKK3ZvaWQgdGVzdENoZWNrTXVs
MigpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEp
CisgICAgICAgIHJldHVybjsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJv
YywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVl
KiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDIp
OworICAgIENoZWNrVmFsdWUqIGNoZWNrTXVsID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+
KHByb2MsIENoZWNrTXVsLCBPcmlnaW4oKSwgYXJnMSwgYXJnMik7CisgICAgY2hlY2tNdWwtPmFw
cGVuZChhcmcxKTsKKyAgICBjaGVja011bC0+YXBwZW5kKGFyZzIpOworICAgIGNoZWNrTXVsLT5z
ZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2Ny
YXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAgICAgICAgICBDSEVDSyhw
YXJhbXMuc2l6ZSgpID09IDIpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzBdLmlzR1BSKCkp
OworICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzFdLmlzQ29uc3RhbnQoKSk7CisgICAgICAgICAg
ICBDSEVDSyhwYXJhbXNbMV0udmFsdWUoKSA9PSAyKTsKKyAgICAgICAgICAgIGppdC5jb252ZXJ0
SW50MzJUb0RvdWJsZShwYXJhbXNbMF0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDApOworICAgICAg
ICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KDIpLCBGUFJJbmZvOjpmcFJlZ1QxKTsKKyAgICAgICAgICAgIGppdC5tdWxEb3VibGUoRlBSSW5m
bzo6ZnBSZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBqaXQuZW1pdEZ1bmN0
aW9uRXBpbG9ndWUoKTsKKyAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgfSk7CisgICAg
cm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIElUb0QsIE9yaWdpbigp
LCBjaGVja011bCkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAg
ICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgMCkgPT0gMC4wKTsKKyAgICBDSEVDSyhpbnZv
a2U8ZG91YmxlPigqY29kZSwgMSkgPT0gMi4wKTsKKyAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigq
Y29kZSwgNDIpID09IDQyLjAgKiAyLjApOworICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2Rl
LCAyMTQ3NDgzNjQ3KSA9PSAyMTQ3NDgzNjQ3LjAgKiAyLjApOworfQorCit2b2lkIHRlc3RDaGVj
a011bDY0KCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBpZiAocHJvYy5vcHRMZXZlbCgp
IDwgMSkKKyAgICAgICAgcmV0dXJuOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgVmFsdWUqIGFy
ZzIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgQ2hlY2tWYWx1ZSogY2hlY2tNdWwgPSByb290LT5h
cHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2tNdWwsIE9yaWdpbigpLCBhcmcxLCBhcmcy
KTsKKyAgICBjaGVja011bC0+YXBwZW5kKGFyZzEpOworICAgIGNoZWNrTXVsLT5hcHBlbmQoYXJn
Mik7CisgICAgY2hlY2tNdWwtPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAg
ICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsK
KyAgICAgICAgICAgIENIRUNLKHBhcmFtcy5zaXplKCkgPT0gMik7CisgICAgICAgICAgICBDSEVD
SyhwYXJhbXNbMF0uaXNHUFIoKSk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0uaXNHUFIo
KSk7CisgICAgICAgICAgICBqaXQuY29udmVydEludDY0VG9Eb3VibGUocGFyYW1zWzBdLmdwcigp
LCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5jb252ZXJ0SW50NjRUb0RvdWJs
ZShwYXJhbXNbMV0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDEpOworICAgICAgICAgICAgaml0Lm11
bERvdWJsZShGUFJJbmZvOjpmcFJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAg
IGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAgICAgICAgaml0LnJldCgpOworICAg
ICAgICB9KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2Ms
IFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
SVRvRCwgT3JpZ2luKCksIGNoZWNrTXVsKSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJv
Yyhwcm9jKTsKKworICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAwLCA0MikgPT0gMC4w
KTsKKyAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgMSwgNDIpID09IDQyLjApOworICAg
IENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCA0MiwgNDIpID09IDQyLjAgKiA0Mi4wKTsKKyAg
ICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgOTIyMzM3MjAzNjg1NDc3NTgwN2xsLCA0Mikg
PT0gc3RhdGljX2Nhc3Q8ZG91YmxlPig5MjIzMzcyMDM2ODU0Nzc1ODA3bGwpICogNDIuMCk7Cit9
CisKK3ZvaWQgdGVzdENoZWNrTXVsRm9sZChpbnQgYSwgaW50IGIpCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1
ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBh
KTsKKyAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBiKTsKKyAgICBDaGVja1ZhbHVlKiBjaGVja011bCA9IHJvb3QtPmFwcGVuZE5l
dzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja011bCwgT3JpZ2luKCksIGFyZzEsIGFyZzIpOworICAg
IHVuc2lnbmVkIG9wdExldmVsID0gcHJvYy5vcHRMZXZlbCgpOworICAgIGNoZWNrTXVsLT5zZXRH
ZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3RhY2ttYXBHZW5l
cmF0aW9uUGFyYW1zJikgeworICAgICAgICAgICAgaWYgKG9wdExldmVsID4gMSkKKyAgICAgICAg
ICAgICAgICBDSEVDSyghIlNob3VsZCBoYXZlIGJlZW4gZm9sZGVkIik7CisgICAgICAgIH0pOwor
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBj
aGVja011bCk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKworICAgIENI
RUNLKGludm9rZTxpbnQ+KCpjb2RlKSA9PSBhICogYik7Cit9CisKK3ZvaWQgdGVzdENoZWNrTXVs
Rm9sZEZhaWwoaW50IGEsIGludCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIGlmIChw
cm9jLm9wdExldmVsKCkgPCAxKQorICAgICAgICByZXR1cm47CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKKyAgICBWYWx1ZSogYXJnMiA9IHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKTsKKyAgICBDaGVja1Zh
bHVlKiBjaGVja011bCA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja011
bCwgT3JpZ2luKCksIGFyZzEsIGFyZzIpOworICAgIGNoZWNrTXVsLT5zZXRHZW5lcmF0b3IoCisg
ICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcyYpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxv
d1NjcmF0Y2goaml0KTsKKyAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKDQyKSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworICAgICAgICAgICAgaml0LmVt
aXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgIH0p
OworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LCBjaGVja011bCk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKworICAg
IENIRUNLKGludm9rZTxpbnQ+KCpjb2RlKSA9PSA0Mik7Cit9CisKK3ZvaWQgdGVzdENoZWNrTXVs
QXJndW1lbnRBbGlhc2luZzY0KCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOworICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgIFZhbHVlKiBh
cmczID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjIpOworCisgICAgLy8gUHJldGVuZCB0byB1c2UgYWxsIHRoZSBh
cmdzLgorICAgIFBhdGNocG9pbnRWYWx1ZSogdXNlQXJncyA9IHJvb3QtPmFwcGVuZE5ldzxQYXRj
aHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKKyAgICB1c2VBcmdzLT5hcHBlbmQo
Q29uc3RyYWluZWRWYWx1ZShhcmcxLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7CisgICAgdXNl
QXJncy0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMiwgVmFsdWVSZXA6OlNvbWVSZWdpc3Rl
cikpOworICAgIHVzZUFyZ3MtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzMsIFZhbHVlUmVw
OjpTb21lUmVnaXN0ZXIpKTsKKyAgICB1c2VBcmdzLT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhl
bHBlcnMmLCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7IH0pOworCisgICAgLy8g
TGFzdCB1c2Ugb2YgZmlyc3QgYXJnIChoZXJlLCBhcmcxKS4KKyAgICBDaGVja1ZhbHVlKiBjaGVj
a011bDEgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2tNdWwsIE9yaWdp
bigpLCBhcmcxLCBhcmcyKTsKKyAgICBjaGVja011bDEtPnNldEdlbmVyYXRvcihbJl0gKENDYWxs
SGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7IGppdC5vb3Bz
KCk7IH0pOworCisgICAgLy8gTGFzdCB1c2Ugb2Ygc2Vjb25kIGFyZyAoaGVyZSwgYXJnMikuCisg
ICAgQ2hlY2tWYWx1ZSogY2hlY2tNdWwyID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHBy
b2MsIENoZWNrTXVsLCBPcmlnaW4oKSwgYXJnMywgYXJnMik7CisgICAgY2hlY2tNdWwyLT5zZXRH
ZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9u
UGFyYW1zJikgeyBqaXQub29wcygpOyB9KTsKKworICAgIC8vIEtlZXAgYXJnMyBsaXZlLgorICAg
IFBhdGNocG9pbnRWYWx1ZSoga2VlcEFyZzJMaXZlID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9p
bnRWYWx1ZT4ocHJvYywgVm9pZCwgT3JpZ2luKCkpOworICAgIGtlZXBBcmcyTGl2ZS0+YXBwZW5k
KENvbnN0cmFpbmVkVmFsdWUoYXJnMiwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOworICAgIGtl
ZXBBcmcyTGl2ZS0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3RhY2tt
YXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKKworICAgIC8vIE9ubHkgdXNlIG9mIGNoZWNrTXVs
MSBhbmQgY2hlY2tNdWwyLgorICAgIENoZWNrVmFsdWUqIGNoZWNrTXVsMyA9IHJvb3QtPmFwcGVu
ZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja011bCwgT3JpZ2luKCksIGNoZWNrTXVsMSwgY2hl
Y2tNdWwyKTsKKyAgICBjaGVja011bDMtPnNldEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVycyYg
aml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7IGppdC5vb3BzKCk7IH0pOwor
CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCks
IGNoZWNrTXVsMyk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIDIs
IDMsIDQpID09IDcyKTsKK30KKwordm9pZCB0ZXN0Q2hlY2tNdWxBcmd1bWVudEFsaWFzaW5nMzIo
KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Cisg
ICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBU
cnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgVmFsdWUqIGFy
ZzMgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2lu
KCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKSk7CisKKyAgICAvLyBQcmV0ZW5kIHRvIHVzZSBh
bGwgdGhlIGFyZ3MuCisgICAgUGF0Y2hwb2ludFZhbHVlKiB1c2VBcmdzID0gcm9vdC0+YXBwZW5k
TmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgVm9pZCwgT3JpZ2luKCkpOworICAgIHVzZUFyZ3Mt
PmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzEsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsK
KyAgICB1c2VBcmdzLT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmcyLCBWYWx1ZVJlcDo6U29t
ZVJlZ2lzdGVyKSk7CisgICAgdXNlQXJncy0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMywg
VmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOworICAgIHVzZUFyZ3MtPnNldEdlbmVyYXRvcihbJl0g
KENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsgfSk7CisK
KyAgICAvLyBMYXN0IHVzZSBvZiBmaXJzdCBhcmcgKGhlcmUsIGFyZzEpLgorICAgIENoZWNrVmFs
dWUqIGNoZWNrTXVsMSA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja011
bCwgT3JpZ2luKCksIGFyZzEsIGFyZzIpOworICAgIGNoZWNrTXVsMS0+c2V0R2VuZXJhdG9yKFsm
XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsg
aml0Lm9vcHMoKTsgfSk7CisKKyAgICAvLyBMYXN0IHVzZSBvZiBzZWNvbmQgYXJnIChoZXJlLCBh
cmczKS4KKyAgICBDaGVja1ZhbHVlKiBjaGVja011bDIgPSByb290LT5hcHBlbmROZXc8Q2hlY2tW
YWx1ZT4ocHJvYywgQ2hlY2tNdWwsIE9yaWdpbigpLCBhcmcyLCBhcmczKTsKKyAgICBjaGVja011
bDItPnNldEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdl
bmVyYXRpb25QYXJhbXMmKSB7IGppdC5vb3BzKCk7IH0pOworCisgICAgLy8gS2VlcCBhcmczIGxp
dmUuCisgICAgUGF0Y2hwb2ludFZhbHVlKiBrZWVwQXJnMkxpdmUgPSByb290LT5hcHBlbmROZXc8
UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7CisgICAga2VlcEFyZzJMaXZl
LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmcyLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7
CisgICAga2VlcEFyZzJMaXZlLT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMmLCBjb25z
dCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7IH0pOworCisgICAgLy8gT25seSB1c2Ugb2Yg
Y2hlY2tNdWwxIGFuZCBjaGVja011bDIuCisgICAgQ2hlY2tWYWx1ZSogY2hlY2tNdWwzID0gcm9v
dC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrTXVsLCBPcmlnaW4oKSwgY2hlY2tN
dWwxLCBjaGVja011bDIpOworICAgIGNoZWNrTXVsMy0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxI
ZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsgaml0Lm9vcHMo
KTsgfSk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgY2hlY2tNdWwzKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50MzJfdD4o
cHJvYywgMiwgMywgNCkgPT0gNzIpOworfQorCit2b2lkIHRlc3RDaGVja011bDY0U1NocigpCit7
CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEpCisgICAg
ICAgIHJldHVybjsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
IFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgU1No
ciwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKTsKKyAgICBWYWx1ZSogYXJn
MiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIFNTaHIsIE9yaWdpbigp
LAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7CisgICAgQ2hlY2tWYWx1ZSogY2hlY2tNdWwg
PSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2tNdWwsIE9yaWdpbigpLCBh
cmcxLCBhcmcyKTsKKyAgICBjaGVja011bC0+YXBwZW5kKGFyZzEpOworICAgIGNoZWNrTXVsLT5h
cHBlbmQoYXJnMik7CisgICAgY2hlY2tNdWwtPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMp
IHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0
Y2goaml0KTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtcy5zaXplKCkgPT0gMik7CisgICAgICAg
ICAgICBDSEVDSyhwYXJhbXNbMF0uaXNHUFIoKSk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXNb
MV0uaXNHUFIoKSk7CisgICAgICAgICAgICBqaXQuY29udmVydEludDY0VG9Eb3VibGUocGFyYW1z
WzBdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5jb252ZXJ0SW50
NjRUb0RvdWJsZShwYXJhbXNbMV0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDEpOworICAgICAgICAg
ICAgaml0Lm11bERvdWJsZShGUFJJbmZvOjpmcFJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAg
ICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAgICAgICAgaml0LnJl
dCgpOworICAgICAgICB9KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgSVRvRCwgT3JpZ2luKCksIGNoZWNrTXVsKSk7CisKKyAgICBhdXRvIGNvZGUgPSBj
b21waWxlUHJvYyhwcm9jKTsKKworICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAwbGws
IDQybGwpID09IDAuMCk7CisgICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDFsbCwgNDJs
bCkgPT0gMC4wKTsKKyAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgNDJsbCwgNDJsbCkg
PT0gKDQyLjAgLyAyLjApICogKDQyLjAgLyAyLjApKTsKKyAgICBDSEVDSyhpbnZva2U8ZG91Ymxl
PigqY29kZSwgMTAwMDAwMDAwMDBsbCwgMTAwMDAwMDAwMDBsbCkgPT0gMjUwMDAwMDAwMDAwMDAw
MDAwMDAuMCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIExlZnRGdW5jdG9yLCB0eXBlbmFtZSBS
aWdodEZ1bmN0b3IsIHR5cGVuYW1lIElucHV0VHlwZT4KK3ZvaWQgZ2VuZXJpY1Rlc3RDb21wYXJl
KAorICAgIEIzOjpPcGNvZGUgb3Bjb2RlLCBjb25zdCBMZWZ0RnVuY3RvciYgbGVmdEZ1bmN0b3Is
IGNvbnN0IFJpZ2h0RnVuY3RvciYgcmlnaHRGdW5jdG9yLAorICAgIElucHV0VHlwZSBsZWZ0LCBJ
bnB1dFR5cGUgcmlnaHQsIGludCByZXN1bHQpCit7CisgICAgLy8gVXNpbmcgYSBjb21wYXJlLgor
ICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIGxlZnRWYWx1ZSA9IGxlZnRGdW5j
dG9yKHJvb3QsIHByb2MpOworICAgICAgICBWYWx1ZSogcmlnaHRWYWx1ZSA9IHJpZ2h0RnVuY3Rv
cihyb290LCBwcm9jKTsKKyAgICAgICAgVmFsdWUqIGNvbXBhcmlzb25SZXN1bHQgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIG9wY29kZSwgT3JpZ2luKCksIGxlZnRWYWx1ZSwgcmlnaHRW
YWx1ZSk7CisgICAgCisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIE5vdEVxdWFsLCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgICAgICBjb21wYXJpc29uUmVzdWx0LAorICAgICAgICAgICAgICAgIHJvb3QtPmFw
cGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCBjb21wYXJpc29uUmVzdWx0LT50eXBlKCks
IDApKSk7CisKKyAgICAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGxlZnQsIHJp
Z2h0KSA9PSByZXN1bHQpOworICAgIH0KKworICAgIC8vIFVzaW5nIGEgYnJhbmNoLgorICAgIHsK
KyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRCbG9j
aygpOworICAgICAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKwor
ICAgICAgICBWYWx1ZSogbGVmdFZhbHVlID0gbGVmdEZ1bmN0b3Iocm9vdCwgcHJvYyk7CisgICAg
ICAgIFZhbHVlKiByaWdodFZhbHVlID0gcmlnaHRGdW5jdG9yKHJvb3QsIHByb2MpOworCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIEJyYW5j
aCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIG9w
Y29kZSwgT3JpZ2luKCksIGxlZnRWYWx1ZSwgcmlnaHRWYWx1ZSksCisgICAgICAgICAgICBGcmVx
dWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKKworICAg
ICAgICAvLyBXZSB1c2UgYSBwYXRjaHBvaW50IG9uIHRoZSB0aGVuIGNhc2UgdG8gZW5zdXJlIHRo
YXQgdGhpcyBkb2Vzbid0IGdldCBpZi1jb252ZXJ0ZWQuCisgICAgICAgIFBhdGNocG9pbnRWYWx1
ZSogcGF0Y2hwb2ludCA9IHRoZW5DYXNlLT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9j
LCBJbnQzMiwgT3JpZ2luKCkpOworICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCisg
ICAgICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRp
b25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVn
aXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAgICAgICAgICBDSEVDSyhwYXJh
bXMuc2l6ZSgpID09IDEpOworICAgICAgICAgICAgICAgIENIRUNLKHBhcmFtc1swXS5pc0dQUigp
KTsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigx
KSwgcGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB0aGVuQ2FzZS0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHBhdGNocG9pbnQp
OworCisgICAgICAgIGVsc2VDYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgZWxzZUNhc2UtPmFwcGVuZE5l
dzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICAgICAgQ0hFQ0soY29t
cGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGxlZnQsIHJpZ2h0KSA9PSByZXN1bHQpOworICAgIH0KK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgSW5wdXRUeXBlPgorSW5wdXRUeXBlIG1vZGVsQ29tcGFyZShC
Mzo6T3Bjb2RlIG9wY29kZSwgSW5wdXRUeXBlIGxlZnQsIElucHV0VHlwZSByaWdodCkKK3sKKyAg
ICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2UgRXF1YWw6CisgICAgICAgIHJldHVybiBsZWZ0
ID09IHJpZ2h0OworICAgIGNhc2UgTm90RXF1YWw6CisgICAgICAgIHJldHVybiBsZWZ0ICE9IHJp
Z2h0OworICAgIGNhc2UgTGVzc1RoYW46CisgICAgICAgIHJldHVybiBsZWZ0IDwgcmlnaHQ7Cisg
ICAgY2FzZSBHcmVhdGVyVGhhbjoKKyAgICAgICAgcmV0dXJuIGxlZnQgPiByaWdodDsKKyAgICBj
YXNlIExlc3NFcXVhbDoKKyAgICAgICAgcmV0dXJuIGxlZnQgPD0gcmlnaHQ7CisgICAgY2FzZSBH
cmVhdGVyRXF1YWw6CisgICAgICAgIHJldHVybiBsZWZ0ID49IHJpZ2h0OworICAgIGNhc2UgQWJv
dmU6CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6Om1ha2VfdW5zaWdu
ZWQ8SW5wdXRUeXBlPjo6dHlwZT4obGVmdCkgPgorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dHlw
ZW5hbWUgc3RkOjptYWtlX3Vuc2lnbmVkPElucHV0VHlwZT46OnR5cGU+KHJpZ2h0KTsKKyAgICBj
YXNlIEJlbG93OgorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjptYWtl
X3Vuc2lnbmVkPElucHV0VHlwZT46OnR5cGU+KGxlZnQpIDwKKyAgICAgICAgICAgIHN0YXRpY19j
YXN0PHR5cGVuYW1lIHN0ZDo6bWFrZV91bnNpZ25lZDxJbnB1dFR5cGU+Ojp0eXBlPihyaWdodCk7
CisgICAgY2FzZSBBYm92ZUVxdWFsOgorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5h
bWUgc3RkOjptYWtlX3Vuc2lnbmVkPElucHV0VHlwZT46OnR5cGU+KGxlZnQpID49CisgICAgICAg
ICAgICBzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6Om1ha2VfdW5zaWduZWQ8SW5wdXRUeXBlPjo6
dHlwZT4ocmlnaHQpOworICAgIGNhc2UgQmVsb3dFcXVhbDoKKyAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PHR5cGVuYW1lIHN0ZDo6bWFrZV91bnNpZ25lZDxJbnB1dFR5cGU+Ojp0eXBlPihsZWZ0
KSA8PQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjptYWtlX3Vuc2lnbmVk
PElucHV0VHlwZT46OnR5cGU+KHJpZ2h0KTsKKyAgICBjYXNlIEJpdEFuZDoKKyAgICAgICAgcmV0
dXJuICEhKGxlZnQgJiByaWdodCk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgordm9pZCB0ZXN0Q29tcGFyZUxvYWQoQjM6Ok9wY29kZSBvcGNvZGUsIEIz
OjpPcGNvZGUgbG9hZE9wY29kZSwgaW50IGxlZnQsIGludCByaWdodCkKK3sKKyAgICBpbnQgcmVz
dWx0ID0gbW9kZWxDb21wYXJlKG9wY29kZSwgbW9kZWxMb2FkPFQ+KGxlZnQpLCByaWdodCk7CisK
KyAgICAvLyBUZXN0IGFkZHItdG8tdG1wCisgICAgaW50IHNsb3QgPSBsZWZ0OworICAgIGdlbmVy
aWNUZXN0Q29tcGFyZSgKKyAgICAgICAgb3Bjb2RlLAorICAgICAgICBbJl0gKEJhc2ljQmxvY2sq
IGJsb2NrLCBQcm9jZWR1cmUmIHByb2MpIHsKKyAgICAgICAgICAgIHJldHVybiBibG9jay0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBsb2FkT3Bjb2RlLCBJ
bnQzMiwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgYmxvY2stPmFwcGVuZE5ldzxDb25zdFB0
clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnNsb3QpKTsKKyAgICAgICAgfSwKKyAgICAgICAgWyZd
IChCYXNpY0Jsb2NrKiBibG9jaywgUHJvY2VkdXJlJiBwcm9jKSB7CisgICAgICAgICAgICByZXR1
cm4gYmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMs
IE9yaWdpbigpLAorICAgICAgICAgICAgICAgIGJsb2NrLT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgICAgICB9
LAorICAgICAgICBsZWZ0LCByaWdodCwgcmVzdWx0KTsKKworICAgIC8vIFRlc3QgYWRkci10by1p
bW0KKyAgICBzbG90ID0gbGVmdDsKKyAgICBnZW5lcmljVGVzdENvbXBhcmUoCisgICAgICAgIG9w
Y29kZSwKKyAgICAgICAgWyZdIChCYXNpY0Jsb2NrKiBibG9jaywgUHJvY2VkdXJlJiBwcm9jKSB7
CisgICAgICAgICAgICByZXR1cm4gYmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAg
ICAgICAgICAgICAgcHJvYywgbG9hZE9wY29kZSwgSW50MzIsIE9yaWdpbigpLAorICAgICAgICAg
ICAgICAgIGJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZz
bG90KSk7CisgICAgICAgIH0sCisgICAgICAgIFsmXSAoQmFzaWNCbG9jayogYmxvY2ssIFByb2Nl
ZHVyZSYgcHJvYykgeworICAgICAgICAgICAgcmV0dXJuIGJsb2NrLT5hcHBlbmROZXc8Q29uc3Qz
MlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgcmlnaHQpOworICAgICAgICB9LAorICAgICAgICBsZWZ0
LCByaWdodCwgcmVzdWx0KTsKKworICAgIHJlc3VsdCA9IG1vZGVsQ29tcGFyZShvcGNvZGUsIGxl
ZnQsIG1vZGVsTG9hZDxUPihyaWdodCkpOworCisgICAgLy8gVGVzdCB0bXAtdG8tYWRkcgorICAg
IHNsb3QgPSByaWdodDsKKyAgICBnZW5lcmljVGVzdENvbXBhcmUoCisgICAgICAgIG9wY29kZSwK
KyAgICAgICAgWyZdIChCYXNpY0Jsb2NrKiBibG9jaywgUHJvY2VkdXJlJiBwcm9jKSB7CisgICAg
ICAgICAgICByZXR1cm4gYmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAg
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIGJsb2NrLT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkp
OworICAgICAgICB9LAorICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrLCBQcm9jZWR1cmUm
IHByb2MpIHsKKyAgICAgICAgICAgIHJldHVybiBibG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVl
PigKKyAgICAgICAgICAgICAgICBwcm9jLCBsb2FkT3Bjb2RlLCBJbnQzMiwgT3JpZ2luKCksCisg
ICAgICAgICAgICAgICAgYmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmln
aW4oKSwgJnNsb3QpKTsKKyAgICAgICAgfSwKKyAgICAgICAgbGVmdCwgcmlnaHQsIHJlc3VsdCk7
CisKKyAgICAvLyBUZXN0IGltbS10by1hZGRyCisgICAgc2xvdCA9IHJpZ2h0OworICAgIGdlbmVy
aWNUZXN0Q29tcGFyZSgKKyAgICAgICAgb3Bjb2RlLAorICAgICAgICBbJl0gKEJhc2ljQmxvY2sq
IGJsb2NrLCBQcm9jZWR1cmUmIHByb2MpIHsKKyAgICAgICAgICAgIHJldHVybiBibG9jay0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGxlZnQpOworICAgICAgICB9LAor
ICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrLCBQcm9jZWR1cmUmIHByb2MpIHsKKyAgICAg
ICAgICAgIHJldHVybiBibG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAg
ICAgICBwcm9jLCBsb2FkT3Bjb2RlLCBJbnQzMiwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAg
YmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnNsb3QpKTsK
KyAgICAgICAgfSwKKyAgICAgICAgbGVmdCwgcmlnaHQsIHJlc3VsdCk7CisKKyAgICAvLyBUZXN0
IGFkZHItdG8tYWRkciwgd2l0aCB0aGUgc2FtZSBhZGRyLgorICAgIHNsb3QgPSBsZWZ0OworICAg
IFZhbHVlKiB2YWx1ZTsKKyAgICBnZW5lcmljVGVzdENvbXBhcmUoCisgICAgICAgIG9wY29kZSwK
KyAgICAgICAgWyZdIChCYXNpY0Jsb2NrKiBibG9jaywgUHJvY2VkdXJlJiBwcm9jKSB7CisgICAg
ICAgICAgICB2YWx1ZSA9IGJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAg
ICAgICAgIHByb2MsIGxvYWRPcGNvZGUsIEludDMyLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAg
ICBibG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmc2xvdCkp
OworICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICB9LAorICAgICAgICBbJl0gKEJh
c2ljQmxvY2sqLCBQcm9jZWR1cmUmKSB7CisgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAg
ICAgIH0sCisgICAgICAgIGxlZnQsIGxlZnQsIG1vZGVsQ29tcGFyZShvcGNvZGUsIG1vZGVsTG9h
ZDxUPihsZWZ0KSwgbW9kZWxMb2FkPFQ+KGxlZnQpKSk7Cit9CisKK3ZvaWQgdGVzdENvbXBhcmVJ
bXBsKEIzOjpPcGNvZGUgb3Bjb2RlLCBpbnQ2NF90IGxlZnQsIGludDY0X3QgcmlnaHQpCit7Cisg
ICAgaW50NjRfdCByZXN1bHQgPSBtb2RlbENvbXBhcmUob3Bjb2RlLCBsZWZ0LCByaWdodCk7Cisg
ICAgaW50MzJfdCBpbnQzMlJlc3VsdCA9IG1vZGVsQ29tcGFyZShvcGNvZGUsIHN0YXRpY19jYXN0
PGludDMyX3Q+KGxlZnQpLCBzdGF0aWNfY2FzdDxpbnQzMl90PihyaWdodCkpOworCisgICAgLy8g
VGVzdCB0bXAtdG8tdG1wLgorICAgIGdlbmVyaWNUZXN0Q29tcGFyZSgKKyAgICAgICAgb3Bjb2Rl
LAorICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrLCBQcm9jZWR1cmUmIHByb2MpIHsKKyAg
ICAgICAgICAgIHJldHVybiBibG9jay0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICB9LAorICAgICAgICBb
Jl0gKEJhc2ljQmxvY2sqIGJsb2NrLCBQcm9jZWR1cmUmIHByb2MpIHsKKyAgICAgICAgICAgIHJl
dHVybiBibG9jay0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICB9LAorICAgICAgICBsZWZ0LCByaWdodCwg
cmVzdWx0KTsKKyAgICBnZW5lcmljVGVzdENvbXBhcmUoCisgICAgICAgIG9wY29kZSwKKyAgICAg
ICAgWyZdIChCYXNpY0Jsb2NrKiBibG9jaywgUHJvY2VkdXJlJiBwcm9jKSB7CisgICAgICAgICAg
ICByZXR1cm4gYmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywg
VHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIGJsb2NrLT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAg
ICAgICB9LAorICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrLCBQcm9jZWR1cmUmIHByb2Mp
IHsKKyAgICAgICAgICAgIHJldHVybiBibG9jay0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAg
ICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgYmxvY2stPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIxKSk7CisgICAgICAgIH0sCisgICAgICAgIGxlZnQsIHJpZ2h0LCBpbnQzMlJlc3VsdCk7
CisKKyAgICAvLyBUZXN0IGltbS10by10bXAuCisgICAgZ2VuZXJpY1Rlc3RDb21wYXJlKAorICAg
ICAgICBvcGNvZGUsCisgICAgICAgIFsmXSAoQmFzaWNCbG9jayogYmxvY2ssIFByb2NlZHVyZSYg
cHJvYykgeworICAgICAgICAgICAgcmV0dXJuIGJsb2NrLT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgbGVmdCk7CisgICAgICAgIH0sCisgICAgICAgIFsmXSAoQmFzaWNC
bG9jayogYmxvY2ssIFByb2NlZHVyZSYgcHJvYykgeworICAgICAgICAgICAgcmV0dXJuIGJsb2Nr
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMSk7CisgICAgICAgIH0sCisgICAgICAgIGxlZnQsIHJpZ2h0LCByZXN1bHQpOwor
ICAgIGdlbmVyaWNUZXN0Q29tcGFyZSgKKyAgICAgICAgb3Bjb2RlLAorICAgICAgICBbJl0gKEJh
c2ljQmxvY2sqIGJsb2NrLCBQcm9jZWR1cmUmIHByb2MpIHsKKyAgICAgICAgICAgIHJldHVybiBi
bG9jay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGxlZnQpOworICAg
ICAgICB9LAorICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrLCBQcm9jZWR1cmUmIHByb2Mp
IHsKKyAgICAgICAgICAgIHJldHVybiBibG9jay0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAg
ICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgYmxvY2stPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIxKSk7CisgICAgICAgIH0sCisgICAgICAgIGxlZnQsIHJpZ2h0LCBpbnQzMlJlc3VsdCk7
CisKKyAgICAvLyBUZXN0IHRtcC10by1pbW0uCisgICAgZ2VuZXJpY1Rlc3RDb21wYXJlKAorICAg
ICAgICBvcGNvZGUsCisgICAgICAgIFsmXSAoQmFzaWNCbG9jayogYmxvY2ssIFByb2NlZHVyZSYg
cHJvYykgeworICAgICAgICAgICAgcmV0dXJuIGJsb2NrLT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIH0s
CisgICAgICAgIFsmXSAoQmFzaWNCbG9jayogYmxvY2ssIFByb2NlZHVyZSYgcHJvYykgeworICAg
ICAgICAgICAgcmV0dXJuIGJsb2NrLT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmln
aW4oKSwgcmlnaHQpOworICAgICAgICB9LAorICAgICAgICBsZWZ0LCByaWdodCwgcmVzdWx0KTsK
KyAgICBnZW5lcmljVGVzdENvbXBhcmUoCisgICAgICAgIG9wY29kZSwKKyAgICAgICAgWyZdIChC
YXNpY0Jsb2NrKiBibG9jaywgUHJvY2VkdXJlJiBwcm9jKSB7CisgICAgICAgICAgICByZXR1cm4g
YmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9y
aWdpbigpLAorICAgICAgICAgICAgICAgIGJsb2NrLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICB9LAor
ICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrLCBQcm9jZWR1cmUmIHByb2MpIHsKKyAgICAg
ICAgICAgIHJldHVybiBibG9jay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIHJpZ2h0KTsKKyAgICAgICAgfSwKKyAgICAgICAgbGVmdCwgcmlnaHQsIGludDMyUmVzdWx0
KTsKKworICAgIC8vIFRlc3QgaW1tLXRvLWltbS4KKyAgICBnZW5lcmljVGVzdENvbXBhcmUoCisg
ICAgICAgIG9wY29kZSwKKyAgICAgICAgWyZdIChCYXNpY0Jsb2NrKiBibG9jaywgUHJvY2VkdXJl
JiBwcm9jKSB7CisgICAgICAgICAgICByZXR1cm4gYmxvY2stPmFwcGVuZE5ldzxDb25zdDY0VmFs
dWU+KHByb2MsIE9yaWdpbigpLCBsZWZ0KTsKKyAgICAgICAgfSwKKyAgICAgICAgWyZdIChCYXNp
Y0Jsb2NrKiBibG9jaywgUHJvY2VkdXJlJiBwcm9jKSB7CisgICAgICAgICAgICByZXR1cm4gYmxv
Y2stPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCByaWdodCk7CisgICAg
ICAgIH0sCisgICAgICAgIGxlZnQsIHJpZ2h0LCByZXN1bHQpOworICAgIGdlbmVyaWNUZXN0Q29t
cGFyZSgKKyAgICAgICAgb3Bjb2RlLAorICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrLCBQ
cm9jZWR1cmUmIHByb2MpIHsKKyAgICAgICAgICAgIHJldHVybiBibG9jay0+YXBwZW5kTmV3PENv
bnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGxlZnQpOworICAgICAgICB9LAorICAgICAgICBb
Jl0gKEJhc2ljQmxvY2sqIGJsb2NrLCBQcm9jZWR1cmUmIHByb2MpIHsKKyAgICAgICAgICAgIHJl
dHVybiBibG9jay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHJpZ2h0
KTsKKyAgICAgICAgfSwKKyAgICAgICAgbGVmdCwgcmlnaHQsIGludDMyUmVzdWx0KTsKKworICAg
IHRlc3RDb21wYXJlTG9hZDxpbnQzMl90PihvcGNvZGUsIExvYWQsIGxlZnQsIHJpZ2h0KTsKKyAg
ICB0ZXN0Q29tcGFyZUxvYWQ8aW50OF90PihvcGNvZGUsIExvYWQ4UywgbGVmdCwgcmlnaHQpOwor
ICAgIHRlc3RDb21wYXJlTG9hZDx1aW50OF90PihvcGNvZGUsIExvYWQ4WiwgbGVmdCwgcmlnaHQp
OworICAgIHRlc3RDb21wYXJlTG9hZDxpbnQxNl90PihvcGNvZGUsIExvYWQxNlMsIGxlZnQsIHJp
Z2h0KTsKKyAgICB0ZXN0Q29tcGFyZUxvYWQ8dWludDE2X3Q+KG9wY29kZSwgTG9hZDE2WiwgbGVm
dCwgcmlnaHQpOworfQorCit2b2lkIHRlc3RDb21wYXJlKEIzOjpPcGNvZGUgb3Bjb2RlLCBpbnQ2
NF90IGxlZnQsIGludDY0X3QgcmlnaHQpCit7CisgICAgdGVzdENvbXBhcmVJbXBsKG9wY29kZSwg
bGVmdCwgcmlnaHQpOworICAgIHRlc3RDb21wYXJlSW1wbChvcGNvZGUsIGxlZnQsIHJpZ2h0ICsg
MSk7CisgICAgdGVzdENvbXBhcmVJbXBsKG9wY29kZSwgbGVmdCwgcmlnaHQgLSAxKTsKK30KKwor
dm9pZCB0ZXN0RXF1YWxEb3VibGUoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdodCwgYm9vbCByZXN1
bHQpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgICAgICBwcm9jLCBFcXVhbCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50
RlBSMCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMSkpKTsKKworICAgIENIRUNLKGNvbXBp
bGVBbmRSdW48Ym9vbD4ocHJvYywgbGVmdCwgcmlnaHQpID09IHJlc3VsdCk7Cit9CisKK3N0YXRp
YyBpbnQgc2ltcGxlRnVuY3Rpb24oaW50IGEsIGludCBiKQoreworICAgIHJldHVybiBhICsgYjsK
K30KKwordm9pZCB0ZXN0Q2FsbFNpbXBsZShpbnQgYSwgaW50IGIpCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKKyAgICAgICAgICAgIHByb2Ms
IEludDMyLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihzaW1wbGVGdW5jdGlv
biwgQjNDQ2FsbFB0clRhZykpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4o
cHJvYywgYSwgYikgPT0gYSArIGIpOworfQorCit2b2lkIHRlc3RDYWxsUmFyZShpbnQgYSwgaW50
IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBjb21tb24gPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgQmFzaWNCbG9jayogcmFyZSA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApLAorICAgICAgICBGcmVxdWVudGVkQmxvY2socmFyZSwgRnJlcXVl
bmN5Q2xhc3M6OlJhcmUpLAorICAgICAgICBGcmVxdWVudGVkQmxvY2soY29tbW9uKSk7CisKKyAg
ICBjb21tb24tPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgY29tbW9uLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
MCkpOworCisgICAgcmFyZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByYXJlLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCisg
ICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksCisgICAgICAgICAgICByYXJlLT5hcHBl
bmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lk
Kj4oc2ltcGxlRnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSwKKyAgICAgICAgICAgIHJhcmUtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIxKSwKKyAgICAgICAgICAgIHJhcmUtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKSkpOworCisgICAgQ0hFQ0soY29t
cGlsZUFuZFJ1bjxpbnQ+KHByb2MsIHRydWUsIGEsIGIpID09IGEgKyBiKTsKK30KKwordm9pZCB0
ZXN0Q2FsbFJhcmVMaXZlKGludCBhLCBpbnQgYiwgaW50IGMpCit7CisgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Js
b2NrKiBjb21tb24gPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogcmFyZSA9IHBy
b2MuYWRkQmxvY2soKTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAorICAg
ICAgICBGcmVxdWVudGVkQmxvY2socmFyZSwgRnJlcXVlbmN5Q2xhc3M6OlJhcmUpLAorICAgICAg
ICBGcmVxdWVudGVkQmxvY2soY29tbW9uKSk7CisKKyAgICBjb21tb24tPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY29tbW9uLT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgcmFyZS0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAg
ICByYXJlLT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIHJhcmUtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKKyAgICAgICAgICAg
ICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcmFyZS0+YXBwZW5k
TmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+
KHNpbXBsZUZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSksCisgICAgICAgICAgICAgICAgcmFyZS0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjEpLAorICAgICAgICAgICAgICAgIHJhcmUtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKSksCisgICAgICAgICAg
ICByYXJlLT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgICAgICByYXJlLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMykpKSk7CisKKyAgICBDSEVD
Syhjb21waWxlQW5kUnVuPGludD4ocHJvYywgdHJ1ZSwgYSwgYiwgYykgPT0gYSArIGIgKyBjKTsK
K30KKwordm9pZCB0ZXN0Q2FsbFNpbXBsZVB1cmUoaW50IGEsIGludCBiKQoreworICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAg
cm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCisgICAgICAgICAgICBw
cm9jLCBJbnQzMiwgT3JpZ2luKCksIEVmZmVjdHM6Om5vbmUoKSwKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRy
PHZvaWQqPihzaW1wbGVGdW5jdGlvbiwgQjNDQ2FsbFB0clRhZykpLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSk7CisKKyAgICBDSEVD
Syhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYSwgYikgPT0gYSArIGIpOworfQorCitzdGF0aWMg
aW50IGZ1bmN0aW9uV2l0aEhlbGxhQXJndW1lbnRzKGludCBhLCBpbnQgYiwgaW50IGMsIGludCBk
LCBpbnQgZSwgaW50IGYsIGludCBnLCBpbnQgaCwgaW50IGksIGludCBqLCBpbnQgaywgaW50IGws
IGludCBtLCBpbnQgbiwgaW50IG8sIGludCBwLCBpbnQgcSwgaW50IHIsIGludCBzLCBpbnQgdCwg
aW50IHUsIGludCB2LCBpbnQgdywgaW50IHgsIGludCB5LCBpbnQgeikKK3sKKyAgICByZXR1cm4g
KGEgPDwgMCkgKyAoYiA8PCAxKSArIChjIDw8IDIpICsgKGQgPDwgMykgKyAoZSA8PCA0KSArIChm
IDw8IDUpICsgKGcgPDwgNikgKyAoaCA8PCA3KSArIChpIDw8IDgpICsgKGogPDwgOSkgKyAoayA8
PCAxMCkgKyAobCA8PCAxMSkgKyAobSA8PCAxMikgKyAobiA8PCAxMykgKyAobyA8PCAxNCkgKyAo
cCA8PCAxNSkgKyAocSA8PCAxNikgKyAociA8PCAxNykgKyAocyA8PCAxOCkgKyAodCA8PCAxOSkg
KyAodSA8PCAyMCkgKyAodiA8PCAyMSkgKyAodyA8PCAyMikgKyAoeCA8PCAyMykgKyAoeSA8PCAy
NCkgKyAoeiA8PCAyNSk7Cit9CisKK3ZvaWQgdGVzdENhbGxGdW5jdGlvbldpdGhIZWxsYUFyZ3Vt
ZW50cygpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKworICAgIFZlY3RvcjxWYWx1ZSo+IGFyZ3M7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IDI2OyArK2kpCisgICAgICAgIGFyZ3MuYXBwZW5kKHJvb3QtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBpICsgMSkpOworCisgICAgQ0NhbGxW
YWx1ZSogY2FsbCA9IHJvb3QtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKKyAgICAgICAgcHJvYywg
SW50MzIsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4oZnVuY3Rpb25XaXRoSGVsbGFB
cmd1bWVudHMsIEIzQ0NhbGxQdHJUYWcpKSk7CisgICAgY2FsbC0+YXBwZW5kQXJncyhhcmdzKTsK
KworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LCBjYWxsKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jKSA9PSBmdW5jdGlv
bldpdGhIZWxsYUFyZ3VtZW50cygxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEy
LCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjYp
KTsKK30KKworc3RhdGljIHVpbnQ2NF90IGZ1bmN0aW9uV2l0aEhlbGxhQXJndW1lbnRzMih1aW50
NjRfdCBhLCB1aW50NjRfdCBiLCB1aW50NjRfdCBjLCB1aW50NjRfdCBkLCB1aW50NjRfdCBlLCB1
aW50NjRfdCBmLCB1aW50NjRfdCBnLCB1aW50NjRfdCBoLCB1aW50NjRfdCBpLCB1aW50NjRfdCBq
LCB1aW50NjRfdCBrLCB1aW50NjRfdCBsLCB1aW50NjRfdCBtLCB1aW50NjRfdCBuLCB1aW50NjRf
dCBvLCB1aW50NjRfdCBwLCB1aW50NjRfdCBxLCB1aW50NjRfdCByLCB1aW50NjRfdCBzLCB1aW50
NjRfdCB0LCB1aW50NjRfdCB1LCB1aW50NjRfdCB2LCB1aW50NjRfdCB3LCB1aW50NjRfdCB4LCB1
aW50NjRfdCB5LCB1aW50NjRfdCB6KQoreworICAgIHJldHVybiAoYSA8PCAwKSArIChiIDw8IDEp
ICsgKGMgPDwgMikgKyAoZCA8PCAzKSArIChlIDw8IDQpICsgKGYgPDwgNSkgKyAoZyA8PCA2KSAr
IChoIDw8IDcpICsgKGkgPDwgOCkgKyAoaiA8PCA5KSArIChrIDw8IDEwKSArIChsIDw8IDExKSAr
IChtIDw8IDEyKSArIChuIDw8IDEzKSArIChvIDw8IDE0KSArIChwIDw8IDE1KSArIChxIDw8IDE2
KSArIChyIDw8IDE3KSArIChzIDw8IDE4KSArICh0IDw8IDE5KSArICh1IDw8IDIwKSArICh2IDw8
IDIxKSArICh3IDw8IDIyKSArICh4IDw8IDIzKSArICh5IDw8IDI0KSArICh6IDw8IDI1KTsKK30K
Kwordm9pZCB0ZXN0Q2FsbEZ1bmN0aW9uV2l0aEhlbGxhQXJndW1lbnRzMigpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKwor
ICAgIHVpbnQ2NF90IGxpbWl0ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KCgxIDw8IDEyKSAtIDEp
OyAvLyBVSU5UMTJfTUFYLCBmb3IgYXJtNjQgdGVzdGluZy4KKworICAgIFZlY3RvcjxWYWx1ZSo+
IGFyZ3M7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI2OyArK2kpCisgICAgICAgIGFy
Z3MuYXBwZW5kKHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBs
aW1pdCAtIGkpKTsKKworICAgIENDYWxsVmFsdWUqIGNhbGwgPSByb290LT5hcHBlbmROZXc8Q0Nh
bGxWYWx1ZT4oCisgICAgICAgIHByb2MsIEludDY0LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8
dm9pZCo+KGZ1bmN0aW9uV2l0aEhlbGxhQXJndW1lbnRzMiwgQjNDQ2FsbFB0clRhZykpKTsKKyAg
ICBjYWxsLT5hcHBlbmRBcmdzKGFyZ3MpOworCisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGNhbGwpOworCisgICAgYXV0byBhID0gY29tcGls
ZUFuZFJ1bjx1aW50NjRfdD4ocHJvYyk7CisgICAgYXV0byBiID0gZnVuY3Rpb25XaXRoSGVsbGFB
cmd1bWVudHMyKGxpbWl0LCBsaW1pdC0xLCBsaW1pdC0yLCBsaW1pdC0zLCBsaW1pdC00LCBsaW1p
dC01LCBsaW1pdC02LCBsaW1pdC03LCBsaW1pdC04LCBsaW1pdC05LCBsaW1pdC0xMCwgbGltaXQt
MTEsIGxpbWl0LTEyLCBsaW1pdC0xMywgbGltaXQtMTQsIGxpbWl0LTE1LCBsaW1pdC0xNiwgbGlt
aXQtMTcsIGxpbWl0LTE4LCBsaW1pdC0xOSwgbGltaXQtMjAsIGxpbWl0LTIxLCBsaW1pdC0yMiwg
bGltaXQtMjMsIGxpbWl0LTI0LCBsaW1pdC0yNSk7CisgICAgQ0hFQ0soYSA9PSBiKTsKK30KKwor
c3RhdGljIGludCBmdW5jdGlvbldpdGhIZWxsYUFyZ3VtZW50czMoaW50IGFyZzAsaW50IGFyZzEs
aW50IGFyZzIsaW50IGFyZzMsaW50IGFyZzQsaW50IGFyZzUsaW50IGFyZzYsaW50IGFyZzcsaW50
IGFyZzgsaW50IGFyZzksaW50IGFyZzEwLGludCBhcmcxMSxpbnQgYXJnMTIsaW50IGFyZzEzLGlu
dCBhcmcxNCxpbnQgYXJnMTUsaW50IGFyZzE2LGludCBhcmcxNyxpbnQgYXJnMTgsaW50IGFyZzE5
LGludCBhcmcyMCxpbnQgYXJnMjEsaW50IGFyZzIyLGludCBhcmcyMyxpbnQgYXJnMjQsaW50IGFy
ZzI1LGludCBhcmcyNixpbnQgYXJnMjcsaW50IGFyZzI4LGludCBhcmcyOSxpbnQgYXJnMzAsaW50
IGFyZzMxLGludCBhcmczMixpbnQgYXJnMzMsaW50IGFyZzM0LGludCBhcmczNSxpbnQgYXJnMzYs
aW50IGFyZzM3LGludCBhcmczOCxpbnQgYXJnMzksaW50IGFyZzQwLGludCBhcmc0MSxpbnQgYXJn
NDIsaW50IGFyZzQzLGludCBhcmc0NCxpbnQgYXJnNDUsaW50IGFyZzQ2LGludCBhcmc0NyxpbnQg
YXJnNDgsaW50IGFyZzQ5LGludCBhcmc1MCxpbnQgYXJnNTEsaW50IGFyZzUyLGludCBhcmc1Myxp
bnQgYXJnNTQsaW50IGFyZzU1LGludCBhcmc1NixpbnQgYXJnNTcsaW50IGFyZzU4LGludCBhcmc1
OSxpbnQgYXJnNjAsaW50IGFyZzYxLGludCBhcmc2MixpbnQgYXJnNjMsaW50IGFyZzY0LGludCBh
cmc2NSxpbnQgYXJnNjYsaW50IGFyZzY3LGludCBhcmc2OCxpbnQgYXJnNjksaW50IGFyZzcwLGlu
dCBhcmc3MSxpbnQgYXJnNzIsaW50IGFyZzczLGludCBhcmc3NCxpbnQgYXJnNzUsaW50IGFyZzc2
LGludCBhcmc3NyxpbnQgYXJnNzgsaW50IGFyZzc5LGludCBhcmc4MCxpbnQgYXJnODEsaW50IGFy
ZzgyLGludCBhcmc4MyxpbnQgYXJnODQsaW50IGFyZzg1LGludCBhcmc4NixpbnQgYXJnODcsaW50
IGFyZzg4LGludCBhcmc4OSxpbnQgYXJnOTAsaW50IGFyZzkxLGludCBhcmc5MixpbnQgYXJnOTMs
aW50IGFyZzk0LGludCBhcmc5NSxpbnQgYXJnOTYsaW50IGFyZzk3LGludCBhcmc5OCxpbnQgYXJn
OTksaW50IGFyZzEwMCxpbnQgYXJnMTAxLGludCBhcmcxMDIsaW50IGFyZzEwMyxpbnQgYXJnMTA0
LGludCBhcmcxMDUsaW50IGFyZzEwNixpbnQgYXJnMTA3LGludCBhcmcxMDgsaW50IGFyZzEwOSxp
bnQgYXJnMTEwLGludCBhcmcxMTEsaW50IGFyZzExMixpbnQgYXJnMTEzLGludCBhcmcxMTQsaW50
IGFyZzExNSxpbnQgYXJnMTE2LGludCBhcmcxMTcsaW50IGFyZzExOCxpbnQgYXJnMTE5LGludCBh
cmcxMjAsaW50IGFyZzEyMSxpbnQgYXJnMTIyLGludCBhcmcxMjMsaW50IGFyZzEyNCxpbnQgYXJn
MTI1LGludCBhcmcxMjYsaW50IGFyZzEyNyxpbnQgYXJnMTI4LGludCBhcmcxMjksaW50IGFyZzEz
MCxpbnQgYXJnMTMxLGludCBhcmcxMzIsaW50IGFyZzEzMyxpbnQgYXJnMTM0LGludCBhcmcxMzUs
aW50IGFyZzEzNixpbnQgYXJnMTM3LGludCBhcmcxMzgsaW50IGFyZzEzOSxpbnQgYXJnMTQwLGlu
dCBhcmcxNDEsaW50IGFyZzE0MixpbnQgYXJnMTQzLGludCBhcmcxNDQsaW50IGFyZzE0NSxpbnQg
YXJnMTQ2LGludCBhcmcxNDcsaW50IGFyZzE0OCxpbnQgYXJnMTQ5LGludCBhcmcxNTAsaW50IGFy
ZzE1MSxpbnQgYXJnMTUyLGludCBhcmcxNTMsaW50IGFyZzE1NCxpbnQgYXJnMTU1LGludCBhcmcx
NTYsaW50IGFyZzE1NyxpbnQgYXJnMTU4LGludCBhcmcxNTksaW50IGFyZzE2MCxpbnQgYXJnMTYx
LGludCBhcmcxNjIsaW50IGFyZzE2MyxpbnQgYXJnMTY0LGludCBhcmcxNjUsaW50IGFyZzE2Nixp
bnQgYXJnMTY3LGludCBhcmcxNjgsaW50IGFyZzE2OSxpbnQgYXJnMTcwLGludCBhcmcxNzEsaW50
IGFyZzE3MixpbnQgYXJnMTczLGludCBhcmcxNzQsaW50IGFyZzE3NSxpbnQgYXJnMTc2LGludCBh
cmcxNzcsaW50IGFyZzE3OCxpbnQgYXJnMTc5LGludCBhcmcxODAsaW50IGFyZzE4MSxpbnQgYXJn
MTgyLGludCBhcmcxODMsaW50IGFyZzE4NCxpbnQgYXJnMTg1LGludCBhcmcxODYsaW50IGFyZzE4
NyxpbnQgYXJnMTg4LGludCBhcmcxODksaW50IGFyZzE5MCxpbnQgYXJnMTkxLGludCBhcmcxOTIs
aW50IGFyZzE5MyxpbnQgYXJnMTk0LGludCBhcmcxOTUsaW50IGFyZzE5NixpbnQgYXJnMTk3LGlu
dCBhcmcxOTgsaW50IGFyZzE5OSxpbnQgYXJnMjAwLGludCBhcmcyMDEsaW50IGFyZzIwMixpbnQg
YXJnMjAzLGludCBhcmcyMDQsaW50IGFyZzIwNSxpbnQgYXJnMjA2LGludCBhcmcyMDcsaW50IGFy
ZzIwOCxpbnQgYXJnMjA5LGludCBhcmcyMTAsaW50IGFyZzIxMSxpbnQgYXJnMjEyLGludCBhcmcy
MTMsaW50IGFyZzIxNCxpbnQgYXJnMjE1LGludCBhcmcyMTYsaW50IGFyZzIxNyxpbnQgYXJnMjE4
LGludCBhcmcyMTksaW50IGFyZzIyMCxpbnQgYXJnMjIxLGludCBhcmcyMjIsaW50IGFyZzIyMyxp
bnQgYXJnMjI0LGludCBhcmcyMjUsaW50IGFyZzIyNixpbnQgYXJnMjI3LGludCBhcmcyMjgsaW50
IGFyZzIyOSxpbnQgYXJnMjMwLGludCBhcmcyMzEsaW50IGFyZzIzMixpbnQgYXJnMjMzLGludCBh
cmcyMzQsaW50IGFyZzIzNSxpbnQgYXJnMjM2LGludCBhcmcyMzcsaW50IGFyZzIzOCxpbnQgYXJn
MjM5LGludCBhcmcyNDAsaW50IGFyZzI0MSxpbnQgYXJnMjQyLGludCBhcmcyNDMsaW50IGFyZzI0
NCxpbnQgYXJnMjQ1LGludCBhcmcyNDYsaW50IGFyZzI0NyxpbnQgYXJnMjQ4LGludCBhcmcyNDks
aW50IGFyZzI1MCxpbnQgYXJnMjUxLGludCBhcmcyNTIsaW50IGFyZzI1MyxpbnQgYXJnMjU0LGlu
dCBhcmcyNTUsaW50IGFyZzI1NixpbnQgYXJnMjU3LGludCBhcmcyNTgsaW50IGFyZzI1OSxpbnQg
YXJnMjYwLGludCBhcmcyNjEsaW50IGFyZzI2MixpbnQgYXJnMjYzLGludCBhcmcyNjQsaW50IGFy
ZzI2NSxpbnQgYXJnMjY2LGludCBhcmcyNjcsaW50IGFyZzI2OCxpbnQgYXJnMjY5LGludCBhcmcy
NzAsaW50IGFyZzI3MSxpbnQgYXJnMjcyLGludCBhcmcyNzMsaW50IGFyZzI3NCxpbnQgYXJnMjc1
LGludCBhcmcyNzYsaW50IGFyZzI3NyxpbnQgYXJnMjc4LGludCBhcmcyNzksaW50IGFyZzI4MCxp
bnQgYXJnMjgxLGludCBhcmcyODIsaW50IGFyZzI4MyxpbnQgYXJnMjg0LGludCBhcmcyODUsaW50
IGFyZzI4NixpbnQgYXJnMjg3LGludCBhcmcyODgsaW50IGFyZzI4OSxpbnQgYXJnMjkwLGludCBh
cmcyOTEsaW50IGFyZzI5MixpbnQgYXJnMjkzLGludCBhcmcyOTQsaW50IGFyZzI5NSxpbnQgYXJn
Mjk2LGludCBhcmcyOTcsaW50IGFyZzI5OCxpbnQgYXJnMjk5LGludCBhcmczMDAsaW50IGFyZzMw
MSxpbnQgYXJnMzAyLGludCBhcmczMDMsaW50IGFyZzMwNCxpbnQgYXJnMzA1LGludCBhcmczMDYs
aW50IGFyZzMwNyxpbnQgYXJnMzA4LGludCBhcmczMDksaW50IGFyZzMxMCxpbnQgYXJnMzExLGlu
dCBhcmczMTIsaW50IGFyZzMxMyxpbnQgYXJnMzE0LGludCBhcmczMTUsaW50IGFyZzMxNixpbnQg
YXJnMzE3LGludCBhcmczMTgsaW50IGFyZzMxOSxpbnQgYXJnMzIwLGludCBhcmczMjEsaW50IGFy
ZzMyMixpbnQgYXJnMzIzLGludCBhcmczMjQsaW50IGFyZzMyNSxpbnQgYXJnMzI2LGludCBhcmcz
MjcsaW50IGFyZzMyOCxpbnQgYXJnMzI5LGludCBhcmczMzAsaW50IGFyZzMzMSxpbnQgYXJnMzMy
LGludCBhcmczMzMsaW50IGFyZzMzNCxpbnQgYXJnMzM1LGludCBhcmczMzYsaW50IGFyZzMzNyxp
bnQgYXJnMzM4LGludCBhcmczMzksaW50IGFyZzM0MCxpbnQgYXJnMzQxLGludCBhcmczNDIsaW50
IGFyZzM0MyxpbnQgYXJnMzQ0LGludCBhcmczNDUsaW50IGFyZzM0NixpbnQgYXJnMzQ3LGludCBh
cmczNDgsaW50IGFyZzM0OSxpbnQgYXJnMzUwLGludCBhcmczNTEsaW50IGFyZzM1MixpbnQgYXJn
MzUzLGludCBhcmczNTQsaW50IGFyZzM1NSxpbnQgYXJnMzU2LGludCBhcmczNTcsaW50IGFyZzM1
OCxpbnQgYXJnMzU5LGludCBhcmczNjAsaW50IGFyZzM2MSxpbnQgYXJnMzYyLGludCBhcmczNjMs
aW50IGFyZzM2NCxpbnQgYXJnMzY1LGludCBhcmczNjYsaW50IGFyZzM2NyxpbnQgYXJnMzY4LGlu
dCBhcmczNjksaW50IGFyZzM3MCxpbnQgYXJnMzcxLGludCBhcmczNzIsaW50IGFyZzM3MyxpbnQg
YXJnMzc0LGludCBhcmczNzUsaW50IGFyZzM3NixpbnQgYXJnMzc3LGludCBhcmczNzgsaW50IGFy
ZzM3OSxpbnQgYXJnMzgwLGludCBhcmczODEsaW50IGFyZzM4MixpbnQgYXJnMzgzLGludCBhcmcz
ODQsaW50IGFyZzM4NSxpbnQgYXJnMzg2LGludCBhcmczODcsaW50IGFyZzM4OCxpbnQgYXJnMzg5
LGludCBhcmczOTAsaW50IGFyZzM5MSxpbnQgYXJnMzkyLGludCBhcmczOTMsaW50IGFyZzM5NCxp
bnQgYXJnMzk1LGludCBhcmczOTYsaW50IGFyZzM5NyxpbnQgYXJnMzk4LGludCBhcmczOTksaW50
IGFyZzQwMCxpbnQgYXJnNDAxLGludCBhcmc0MDIsaW50IGFyZzQwMyxpbnQgYXJnNDA0LGludCBh
cmc0MDUsaW50IGFyZzQwNixpbnQgYXJnNDA3LGludCBhcmc0MDgsaW50IGFyZzQwOSxpbnQgYXJn
NDEwLGludCBhcmc0MTEsaW50IGFyZzQxMixpbnQgYXJnNDEzLGludCBhcmc0MTQsaW50IGFyZzQx
NSxpbnQgYXJnNDE2LGludCBhcmc0MTcsaW50IGFyZzQxOCxpbnQgYXJnNDE5LGludCBhcmc0MjAs
aW50IGFyZzQyMSxpbnQgYXJnNDIyLGludCBhcmc0MjMsaW50IGFyZzQyNCxpbnQgYXJnNDI1LGlu
dCBhcmc0MjYsaW50IGFyZzQyNyxpbnQgYXJnNDI4LGludCBhcmc0MjksaW50IGFyZzQzMCxpbnQg
YXJnNDMxLGludCBhcmc0MzIsaW50IGFyZzQzMyxpbnQgYXJnNDM0LGludCBhcmc0MzUsaW50IGFy
ZzQzNixpbnQgYXJnNDM3LGludCBhcmc0MzgsaW50IGFyZzQzOSxpbnQgYXJnNDQwLGludCBhcmc0
NDEsaW50IGFyZzQ0MixpbnQgYXJnNDQzLGludCBhcmc0NDQsaW50IGFyZzQ0NSxpbnQgYXJnNDQ2
LGludCBhcmc0NDcsaW50IGFyZzQ0OCxpbnQgYXJnNDQ5LGludCBhcmc0NTAsaW50IGFyZzQ1MSxp
bnQgYXJnNDUyLGludCBhcmc0NTMsaW50IGFyZzQ1NCxpbnQgYXJnNDU1LGludCBhcmc0NTYsaW50
IGFyZzQ1NyxpbnQgYXJnNDU4LGludCBhcmc0NTksaW50IGFyZzQ2MCxpbnQgYXJnNDYxLGludCBh
cmc0NjIsaW50IGFyZzQ2MyxpbnQgYXJnNDY0LGludCBhcmc0NjUsaW50IGFyZzQ2NixpbnQgYXJn
NDY3LGludCBhcmc0NjgsaW50IGFyZzQ2OSxpbnQgYXJnNDcwLGludCBhcmc0NzEsaW50IGFyZzQ3
MixpbnQgYXJnNDczLGludCBhcmc0NzQsaW50IGFyZzQ3NSxpbnQgYXJnNDc2LGludCBhcmc0Nzcs
aW50IGFyZzQ3OCxpbnQgYXJnNDc5LGludCBhcmc0ODAsaW50IGFyZzQ4MSxpbnQgYXJnNDgyLGlu
dCBhcmc0ODMsaW50IGFyZzQ4NCxpbnQgYXJnNDg1LGludCBhcmc0ODYsaW50IGFyZzQ4NyxpbnQg
YXJnNDg4LGludCBhcmc0ODksaW50IGFyZzQ5MCxpbnQgYXJnNDkxLGludCBhcmc0OTIsaW50IGFy
ZzQ5MyxpbnQgYXJnNDk0LGludCBhcmc0OTUsaW50IGFyZzQ5NixpbnQgYXJnNDk3LGludCBhcmc0
OTgsaW50IGFyZzQ5OSxpbnQgYXJnNTAwLGludCBhcmc1MDEsaW50IGFyZzUwMixpbnQgYXJnNTAz
LGludCBhcmc1MDQsaW50IGFyZzUwNSxpbnQgYXJnNTA2LGludCBhcmc1MDcsaW50IGFyZzUwOCxp
bnQgYXJnNTA5LGludCBhcmc1MTAsaW50IGFyZzUxMSxpbnQgYXJnNTEyLGludCBhcmc1MTMsaW50
IGFyZzUxNCxpbnQgYXJnNTE1LGludCBhcmc1MTYsaW50IGFyZzUxNyxpbnQgYXJnNTE4LGludCBh
cmc1MTksaW50IGFyZzUyMCxpbnQgYXJnNTIxLGludCBhcmc1MjIsaW50IGFyZzUyMyxpbnQgYXJn
NTI0LGludCBhcmc1MjUsaW50IGFyZzUyNixpbnQgYXJnNTI3LGludCBhcmc1MjgsaW50IGFyZzUy
OSxpbnQgYXJnNTMwLGludCBhcmc1MzEsaW50IGFyZzUzMixpbnQgYXJnNTMzLGludCBhcmc1MzQs
aW50IGFyZzUzNSxpbnQgYXJnNTM2LGludCBhcmc1MzcsaW50IGFyZzUzOCxpbnQgYXJnNTM5LGlu
dCBhcmc1NDAsaW50IGFyZzU0MSxpbnQgYXJnNTQyLGludCBhcmc1NDMsaW50IGFyZzU0NCxpbnQg
YXJnNTQ1LGludCBhcmc1NDYsaW50IGFyZzU0NyxpbnQgYXJnNTQ4LGludCBhcmc1NDksaW50IGFy
ZzU1MCxpbnQgYXJnNTUxLGludCBhcmc1NTIsaW50IGFyZzU1MyxpbnQgYXJnNTU0LGludCBhcmc1
NTUsaW50IGFyZzU1NixpbnQgYXJnNTU3LGludCBhcmc1NTgsaW50IGFyZzU1OSxpbnQgYXJnNTYw
LGludCBhcmc1NjEsaW50IGFyZzU2MixpbnQgYXJnNTYzLGludCBhcmc1NjQsaW50IGFyZzU2NSxp
bnQgYXJnNTY2LGludCBhcmc1NjcsaW50IGFyZzU2OCxpbnQgYXJnNTY5LGludCBhcmc1NzAsaW50
IGFyZzU3MSxpbnQgYXJnNTcyLGludCBhcmc1NzMsaW50IGFyZzU3NCxpbnQgYXJnNTc1LGludCBh
cmc1NzYsaW50IGFyZzU3NyxpbnQgYXJnNTc4LGludCBhcmc1NzksaW50IGFyZzU4MCxpbnQgYXJn
NTgxLGludCBhcmc1ODIsaW50IGFyZzU4MyxpbnQgYXJnNTg0LGludCBhcmc1ODUsaW50IGFyZzU4
NixpbnQgYXJnNTg3LGludCBhcmc1ODgsaW50IGFyZzU4OSxpbnQgYXJnNTkwLGludCBhcmc1OTEs
aW50IGFyZzU5MixpbnQgYXJnNTkzLGludCBhcmc1OTQsaW50IGFyZzU5NSxpbnQgYXJnNTk2LGlu
dCBhcmc1OTcsaW50IGFyZzU5OCxpbnQgYXJnNTk5LGludCBhcmc2MDAsaW50IGFyZzYwMSxpbnQg
YXJnNjAyLGludCBhcmc2MDMsaW50IGFyZzYwNCxpbnQgYXJnNjA1LGludCBhcmc2MDYsaW50IGFy
ZzYwNyxpbnQgYXJnNjA4LGludCBhcmc2MDksaW50IGFyZzYxMCxpbnQgYXJnNjExLGludCBhcmc2
MTIsaW50IGFyZzYxMyxpbnQgYXJnNjE0LGludCBhcmc2MTUsaW50IGFyZzYxNixpbnQgYXJnNjE3
LGludCBhcmc2MTgsaW50IGFyZzYxOSxpbnQgYXJnNjIwLGludCBhcmc2MjEsaW50IGFyZzYyMixp
bnQgYXJnNjIzLGludCBhcmc2MjQsaW50IGFyZzYyNSxpbnQgYXJnNjI2LGludCBhcmc2MjcsaW50
IGFyZzYyOCxpbnQgYXJnNjI5LGludCBhcmc2MzAsaW50IGFyZzYzMSxpbnQgYXJnNjMyLGludCBh
cmc2MzMsaW50IGFyZzYzNCxpbnQgYXJnNjM1LGludCBhcmc2MzYsaW50IGFyZzYzNyxpbnQgYXJn
NjM4LGludCBhcmc2MzksaW50IGFyZzY0MCxpbnQgYXJnNjQxLGludCBhcmc2NDIsaW50IGFyZzY0
MyxpbnQgYXJnNjQ0LGludCBhcmc2NDUsaW50IGFyZzY0NixpbnQgYXJnNjQ3LGludCBhcmc2NDgs
aW50IGFyZzY0OSxpbnQgYXJnNjUwLGludCBhcmc2NTEsaW50IGFyZzY1MixpbnQgYXJnNjUzLGlu
dCBhcmc2NTQsaW50IGFyZzY1NSxpbnQgYXJnNjU2LGludCBhcmc2NTcsaW50IGFyZzY1OCxpbnQg
YXJnNjU5LGludCBhcmc2NjAsaW50IGFyZzY2MSxpbnQgYXJnNjYyLGludCBhcmc2NjMsaW50IGFy
ZzY2NCxpbnQgYXJnNjY1LGludCBhcmc2NjYsaW50IGFyZzY2NyxpbnQgYXJnNjY4LGludCBhcmc2
NjksaW50IGFyZzY3MCxpbnQgYXJnNjcxLGludCBhcmc2NzIsaW50IGFyZzY3MyxpbnQgYXJnNjc0
LGludCBhcmc2NzUsaW50IGFyZzY3NixpbnQgYXJnNjc3LGludCBhcmc2NzgsaW50IGFyZzY3OSxp
bnQgYXJnNjgwLGludCBhcmc2ODEsaW50IGFyZzY4MixpbnQgYXJnNjgzLGludCBhcmc2ODQsaW50
IGFyZzY4NSxpbnQgYXJnNjg2LGludCBhcmc2ODcsaW50IGFyZzY4OCxpbnQgYXJnNjg5LGludCBh
cmc2OTAsaW50IGFyZzY5MSxpbnQgYXJnNjkyLGludCBhcmc2OTMsaW50IGFyZzY5NCxpbnQgYXJn
Njk1LGludCBhcmc2OTYsaW50IGFyZzY5NyxpbnQgYXJnNjk4LGludCBhcmc2OTksaW50IGFyZzcw
MCxpbnQgYXJnNzAxLGludCBhcmc3MDIsaW50IGFyZzcwMyxpbnQgYXJnNzA0LGludCBhcmc3MDUs
aW50IGFyZzcwNixpbnQgYXJnNzA3LGludCBhcmc3MDgsaW50IGFyZzcwOSxpbnQgYXJnNzEwLGlu
dCBhcmc3MTEsaW50IGFyZzcxMixpbnQgYXJnNzEzLGludCBhcmc3MTQsaW50IGFyZzcxNSxpbnQg
YXJnNzE2LGludCBhcmc3MTcsaW50IGFyZzcxOCxpbnQgYXJnNzE5LGludCBhcmc3MjAsaW50IGFy
ZzcyMSxpbnQgYXJnNzIyLGludCBhcmc3MjMsaW50IGFyZzcyNCxpbnQgYXJnNzI1LGludCBhcmc3
MjYsaW50IGFyZzcyNyxpbnQgYXJnNzI4LGludCBhcmc3MjksaW50IGFyZzczMCxpbnQgYXJnNzMx
LGludCBhcmc3MzIsaW50IGFyZzczMyxpbnQgYXJnNzM0LGludCBhcmc3MzUsaW50IGFyZzczNixp
bnQgYXJnNzM3LGludCBhcmc3MzgsaW50IGFyZzczOSxpbnQgYXJnNzQwLGludCBhcmc3NDEsaW50
IGFyZzc0MixpbnQgYXJnNzQzLGludCBhcmc3NDQsaW50IGFyZzc0NSxpbnQgYXJnNzQ2LGludCBh
cmc3NDcsaW50IGFyZzc0OCxpbnQgYXJnNzQ5LGludCBhcmc3NTAsaW50IGFyZzc1MSxpbnQgYXJn
NzUyLGludCBhcmc3NTMsaW50IGFyZzc1NCxpbnQgYXJnNzU1LGludCBhcmc3NTYsaW50IGFyZzc1
NyxpbnQgYXJnNzU4LGludCBhcmc3NTksaW50IGFyZzc2MCxpbnQgYXJnNzYxLGludCBhcmc3NjIs
aW50IGFyZzc2MyxpbnQgYXJnNzY0LGludCBhcmc3NjUsaW50IGFyZzc2NixpbnQgYXJnNzY3LGlu
dCBhcmc3NjgsaW50IGFyZzc2OSxpbnQgYXJnNzcwLGludCBhcmc3NzEsaW50IGFyZzc3MixpbnQg
YXJnNzczLGludCBhcmc3NzQsaW50IGFyZzc3NSxpbnQgYXJnNzc2LGludCBhcmc3NzcsaW50IGFy
Zzc3OCxpbnQgYXJnNzc5LGludCBhcmc3ODAsaW50IGFyZzc4MSxpbnQgYXJnNzgyLGludCBhcmc3
ODMsaW50IGFyZzc4NCxpbnQgYXJnNzg1LGludCBhcmc3ODYsaW50IGFyZzc4NyxpbnQgYXJnNzg4
LGludCBhcmc3ODksaW50IGFyZzc5MCxpbnQgYXJnNzkxLGludCBhcmc3OTIsaW50IGFyZzc5Myxp
bnQgYXJnNzk0LGludCBhcmc3OTUsaW50IGFyZzc5NixpbnQgYXJnNzk3LGludCBhcmc3OTgsaW50
IGFyZzc5OSxpbnQgYXJnODAwLGludCBhcmc4MDEsaW50IGFyZzgwMixpbnQgYXJnODAzLGludCBh
cmc4MDQsaW50IGFyZzgwNSxpbnQgYXJnODA2LGludCBhcmc4MDcsaW50IGFyZzgwOCxpbnQgYXJn
ODA5LGludCBhcmc4MTAsaW50IGFyZzgxMSxpbnQgYXJnODEyLGludCBhcmc4MTMsaW50IGFyZzgx
NCxpbnQgYXJnODE1LGludCBhcmc4MTYsaW50IGFyZzgxNyxpbnQgYXJnODE4LGludCBhcmc4MTks
aW50IGFyZzgyMCxpbnQgYXJnODIxLGludCBhcmc4MjIsaW50IGFyZzgyMyxpbnQgYXJnODI0LGlu
dCBhcmc4MjUsaW50IGFyZzgyNixpbnQgYXJnODI3LGludCBhcmc4MjgsaW50IGFyZzgyOSxpbnQg
YXJnODMwLGludCBhcmc4MzEsaW50IGFyZzgzMixpbnQgYXJnODMzLGludCBhcmc4MzQsaW50IGFy
ZzgzNSxpbnQgYXJnODM2LGludCBhcmc4MzcsaW50IGFyZzgzOCxpbnQgYXJnODM5LGludCBhcmc4
NDAsaW50IGFyZzg0MSxpbnQgYXJnODQyLGludCBhcmc4NDMsaW50IGFyZzg0NCxpbnQgYXJnODQ1
LGludCBhcmc4NDYsaW50IGFyZzg0NyxpbnQgYXJnODQ4LGludCBhcmc4NDksaW50IGFyZzg1MCxp
bnQgYXJnODUxLGludCBhcmc4NTIsaW50IGFyZzg1MyxpbnQgYXJnODU0LGludCBhcmc4NTUsaW50
IGFyZzg1NixpbnQgYXJnODU3LGludCBhcmc4NTgsaW50IGFyZzg1OSxpbnQgYXJnODYwLGludCBh
cmc4NjEsaW50IGFyZzg2MixpbnQgYXJnODYzLGludCBhcmc4NjQsaW50IGFyZzg2NSxpbnQgYXJn
ODY2LGludCBhcmc4NjcsaW50IGFyZzg2OCxpbnQgYXJnODY5LGludCBhcmc4NzAsaW50IGFyZzg3
MSxpbnQgYXJnODcyLGludCBhcmc4NzMsaW50IGFyZzg3NCxpbnQgYXJnODc1LGludCBhcmc4NzYs
aW50IGFyZzg3NyxpbnQgYXJnODc4LGludCBhcmc4NzksaW50IGFyZzg4MCxpbnQgYXJnODgxLGlu
dCBhcmc4ODIsaW50IGFyZzg4MyxpbnQgYXJnODg0LGludCBhcmc4ODUsaW50IGFyZzg4NixpbnQg
YXJnODg3LGludCBhcmc4ODgsaW50IGFyZzg4OSxpbnQgYXJnODkwLGludCBhcmc4OTEsaW50IGFy
Zzg5MixpbnQgYXJnODkzLGludCBhcmc4OTQsaW50IGFyZzg5NSxpbnQgYXJnODk2LGludCBhcmc4
OTcsaW50IGFyZzg5OCxpbnQgYXJnODk5LGludCBhcmc5MDAsaW50IGFyZzkwMSxpbnQgYXJnOTAy
LGludCBhcmc5MDMsaW50IGFyZzkwNCxpbnQgYXJnOTA1LGludCBhcmc5MDYsaW50IGFyZzkwNyxp
bnQgYXJnOTA4LGludCBhcmc5MDksaW50IGFyZzkxMCxpbnQgYXJnOTExLGludCBhcmc5MTIsaW50
IGFyZzkxMyxpbnQgYXJnOTE0LGludCBhcmc5MTUsaW50IGFyZzkxNixpbnQgYXJnOTE3LGludCBh
cmc5MTgsaW50IGFyZzkxOSxpbnQgYXJnOTIwLGludCBhcmc5MjEsaW50IGFyZzkyMixpbnQgYXJn
OTIzLGludCBhcmc5MjQsaW50IGFyZzkyNSxpbnQgYXJnOTI2LGludCBhcmc5MjcsaW50IGFyZzky
OCxpbnQgYXJnOTI5LGludCBhcmc5MzAsaW50IGFyZzkzMSxpbnQgYXJnOTMyLGludCBhcmc5MzMs
aW50IGFyZzkzNCxpbnQgYXJnOTM1LGludCBhcmc5MzYsaW50IGFyZzkzNyxpbnQgYXJnOTM4LGlu
dCBhcmc5MzksaW50IGFyZzk0MCxpbnQgYXJnOTQxLGludCBhcmc5NDIsaW50IGFyZzk0MyxpbnQg
YXJnOTQ0LGludCBhcmc5NDUsaW50IGFyZzk0NixpbnQgYXJnOTQ3LGludCBhcmc5NDgsaW50IGFy
Zzk0OSxpbnQgYXJnOTUwLGludCBhcmc5NTEsaW50IGFyZzk1MixpbnQgYXJnOTUzLGludCBhcmc5
NTQsaW50IGFyZzk1NSxpbnQgYXJnOTU2LGludCBhcmc5NTcsaW50IGFyZzk1OCxpbnQgYXJnOTU5
LGludCBhcmc5NjAsaW50IGFyZzk2MSxpbnQgYXJnOTYyLGludCBhcmc5NjMsaW50IGFyZzk2NCxp
bnQgYXJnOTY1LGludCBhcmc5NjYsaW50IGFyZzk2NyxpbnQgYXJnOTY4LGludCBhcmc5NjksaW50
IGFyZzk3MCxpbnQgYXJnOTcxLGludCBhcmc5NzIsaW50IGFyZzk3MyxpbnQgYXJnOTc0LGludCBh
cmc5NzUsaW50IGFyZzk3NixpbnQgYXJnOTc3LGludCBhcmc5NzgsaW50IGFyZzk3OSxpbnQgYXJn
OTgwLGludCBhcmc5ODEsaW50IGFyZzk4MixpbnQgYXJnOTgzLGludCBhcmc5ODQsaW50IGFyZzk4
NSxpbnQgYXJnOTg2LGludCBhcmc5ODcsaW50IGFyZzk4OCxpbnQgYXJnOTg5LGludCBhcmc5OTAs
aW50IGFyZzk5MSxpbnQgYXJnOTkyLGludCBhcmc5OTMsaW50IGFyZzk5NCxpbnQgYXJnOTk1LGlu
dCBhcmc5OTYsaW50IGFyZzk5NyxpbnQgYXJnOTk4LGludCBhcmc5OTksaW50IGFyZzEwMDAsaW50
IGFyZzEwMDEsaW50IGFyZzEwMDIsaW50IGFyZzEwMDMsaW50IGFyZzEwMDQsaW50IGFyZzEwMDUs
aW50IGFyZzEwMDYsaW50IGFyZzEwMDcsaW50IGFyZzEwMDgsaW50IGFyZzEwMDksaW50IGFyZzEw
MTAsaW50IGFyZzEwMTEsaW50IGFyZzEwMTIsaW50IGFyZzEwMTMsaW50IGFyZzEwMTQsaW50IGFy
ZzEwMTUsaW50IGFyZzEwMTYsaW50IGFyZzEwMTcsaW50IGFyZzEwMTgsaW50IGFyZzEwMTksaW50
IGFyZzEwMjAsaW50IGFyZzEwMjEsaW50IGFyZzEwMjIsaW50IGFyZzEwMjMsaW50IGFyZzEwMjQs
aW50IGFyZzEwMjUsaW50IGFyZzEwMjYsaW50IGFyZzEwMjcsaW50IGFyZzEwMjgsaW50IGFyZzEw
MjksaW50IGFyZzEwMzAsaW50IGFyZzEwMzEsaW50IGFyZzEwMzIsaW50IGFyZzEwMzMsaW50IGFy
ZzEwMzQsaW50IGFyZzEwMzUsaW50IGFyZzEwMzYsaW50IGFyZzEwMzcsaW50IGFyZzEwMzgsaW50
IGFyZzEwMzksaW50IGFyZzEwNDAsaW50IGFyZzEwNDEsaW50IGFyZzEwNDIsaW50IGFyZzEwNDMs
aW50IGFyZzEwNDQsaW50IGFyZzEwNDUsaW50IGFyZzEwNDYsaW50IGFyZzEwNDcsaW50IGFyZzEw
NDgsaW50IGFyZzEwNDksaW50IGFyZzEwNTAsaW50IGFyZzEwNTEsaW50IGFyZzEwNTIsaW50IGFy
ZzEwNTMsaW50IGFyZzEwNTQsaW50IGFyZzEwNTUsaW50IGFyZzEwNTYsaW50IGFyZzEwNTcsaW50
IGFyZzEwNTgsaW50IGFyZzEwNTksaW50IGFyZzEwNjAsaW50IGFyZzEwNjEsaW50IGFyZzEwNjIs
aW50IGFyZzEwNjMsaW50IGFyZzEwNjQsaW50IGFyZzEwNjUsaW50IGFyZzEwNjYsaW50IGFyZzEw
NjcsaW50IGFyZzEwNjgsaW50IGFyZzEwNjksaW50IGFyZzEwNzAsaW50IGFyZzEwNzEsaW50IGFy
ZzEwNzIsaW50IGFyZzEwNzMsaW50IGFyZzEwNzQsaW50IGFyZzEwNzUsaW50IGFyZzEwNzYsaW50
IGFyZzEwNzcsaW50IGFyZzEwNzgsaW50IGFyZzEwNzksaW50IGFyZzEwODAsaW50IGFyZzEwODEs
aW50IGFyZzEwODIsaW50IGFyZzEwODMsaW50IGFyZzEwODQsaW50IGFyZzEwODUsaW50IGFyZzEw
ODYsaW50IGFyZzEwODcsaW50IGFyZzEwODgsaW50IGFyZzEwODksaW50IGFyZzEwOTAsaW50IGFy
ZzEwOTEsaW50IGFyZzEwOTIsaW50IGFyZzEwOTMsaW50IGFyZzEwOTQsaW50IGFyZzEwOTUsaW50
IGFyZzEwOTYsaW50IGFyZzEwOTcsaW50IGFyZzEwOTgsaW50IGFyZzEwOTksaW50IGFyZzExMDAs
aW50IGFyZzExMDEsaW50IGFyZzExMDIsaW50IGFyZzExMDMsaW50IGFyZzExMDQsaW50IGFyZzEx
MDUsaW50IGFyZzExMDYsaW50IGFyZzExMDcsaW50IGFyZzExMDgsaW50IGFyZzExMDksaW50IGFy
ZzExMTAsaW50IGFyZzExMTEsaW50IGFyZzExMTIsaW50IGFyZzExMTMsaW50IGFyZzExMTQsaW50
IGFyZzExMTUsaW50IGFyZzExMTYsaW50IGFyZzExMTcsaW50IGFyZzExMTgsaW50IGFyZzExMTks
aW50IGFyZzExMjAsaW50IGFyZzExMjEsaW50IGFyZzExMjIsaW50IGFyZzExMjMsaW50IGFyZzEx
MjQsaW50IGFyZzExMjUsaW50IGFyZzExMjYsaW50IGFyZzExMjcsaW50IGFyZzExMjgsaW50IGFy
ZzExMjksaW50IGFyZzExMzAsaW50IGFyZzExMzEsaW50IGFyZzExMzIsaW50IGFyZzExMzMsaW50
IGFyZzExMzQsaW50IGFyZzExMzUsaW50IGFyZzExMzYsaW50IGFyZzExMzcsaW50IGFyZzExMzgs
aW50IGFyZzExMzksaW50IGFyZzExNDAsaW50IGFyZzExNDEsaW50IGFyZzExNDIsaW50IGFyZzEx
NDMsaW50IGFyZzExNDQsaW50IGFyZzExNDUsaW50IGFyZzExNDYsaW50IGFyZzExNDcsaW50IGFy
ZzExNDgsaW50IGFyZzExNDksaW50IGFyZzExNTAsaW50IGFyZzExNTEsaW50IGFyZzExNTIsaW50
IGFyZzExNTMsaW50IGFyZzExNTQsaW50IGFyZzExNTUsaW50IGFyZzExNTYsaW50IGFyZzExNTcs
aW50IGFyZzExNTgsaW50IGFyZzExNTksaW50IGFyZzExNjAsaW50IGFyZzExNjEsaW50IGFyZzEx
NjIsaW50IGFyZzExNjMsaW50IGFyZzExNjQsaW50IGFyZzExNjUsaW50IGFyZzExNjYsaW50IGFy
ZzExNjcsaW50IGFyZzExNjgsaW50IGFyZzExNjksaW50IGFyZzExNzAsaW50IGFyZzExNzEsaW50
IGFyZzExNzIsaW50IGFyZzExNzMsaW50IGFyZzExNzQsaW50IGFyZzExNzUsaW50IGFyZzExNzYs
aW50IGFyZzExNzcsaW50IGFyZzExNzgsaW50IGFyZzExNzksaW50IGFyZzExODAsaW50IGFyZzEx
ODEsaW50IGFyZzExODIsaW50IGFyZzExODMsaW50IGFyZzExODQsaW50IGFyZzExODUsaW50IGFy
ZzExODYsaW50IGFyZzExODcsaW50IGFyZzExODgsaW50IGFyZzExODksaW50IGFyZzExOTAsaW50
IGFyZzExOTEsaW50IGFyZzExOTIsaW50IGFyZzExOTMsaW50IGFyZzExOTQsaW50IGFyZzExOTUs
aW50IGFyZzExOTYsaW50IGFyZzExOTcsaW50IGFyZzExOTgsaW50IGFyZzExOTksaW50IGFyZzEy
MDAsaW50IGFyZzEyMDEsaW50IGFyZzEyMDIsaW50IGFyZzEyMDMsaW50IGFyZzEyMDQsaW50IGFy
ZzEyMDUsaW50IGFyZzEyMDYsaW50IGFyZzEyMDcsaW50IGFyZzEyMDgsaW50IGFyZzEyMDksaW50
IGFyZzEyMTAsaW50IGFyZzEyMTEsaW50IGFyZzEyMTIsaW50IGFyZzEyMTMsaW50IGFyZzEyMTQs
aW50IGFyZzEyMTUsaW50IGFyZzEyMTYsaW50IGFyZzEyMTcsaW50IGFyZzEyMTgsaW50IGFyZzEy
MTksaW50IGFyZzEyMjAsaW50IGFyZzEyMjEsaW50IGFyZzEyMjIsaW50IGFyZzEyMjMsaW50IGFy
ZzEyMjQsaW50IGFyZzEyMjUsaW50IGFyZzEyMjYsaW50IGFyZzEyMjcsaW50IGFyZzEyMjgsaW50
IGFyZzEyMjksaW50IGFyZzEyMzAsaW50IGFyZzEyMzEsaW50IGFyZzEyMzIsaW50IGFyZzEyMzMs
aW50IGFyZzEyMzQsaW50IGFyZzEyMzUsaW50IGFyZzEyMzYsaW50IGFyZzEyMzcsaW50IGFyZzEy
MzgsaW50IGFyZzEyMzksaW50IGFyZzEyNDAsaW50IGFyZzEyNDEsaW50IGFyZzEyNDIsaW50IGFy
ZzEyNDMsaW50IGFyZzEyNDQsaW50IGFyZzEyNDUsaW50IGFyZzEyNDYsaW50IGFyZzEyNDcsaW50
IGFyZzEyNDgsaW50IGFyZzEyNDksaW50IGFyZzEyNTAsaW50IGFyZzEyNTEsaW50IGFyZzEyNTIs
aW50IGFyZzEyNTMsaW50IGFyZzEyNTQsaW50IGFyZzEyNTUsaW50IGFyZzEyNTYsaW50IGFyZzEy
NTcsaW50IGFyZzEyNTgsaW50IGFyZzEyNTksaW50IGFyZzEyNjAsaW50IGFyZzEyNjEsaW50IGFy
ZzEyNjIsaW50IGFyZzEyNjMsaW50IGFyZzEyNjQsaW50IGFyZzEyNjUsaW50IGFyZzEyNjYsaW50
IGFyZzEyNjcsaW50IGFyZzEyNjgsaW50IGFyZzEyNjksaW50IGFyZzEyNzAsaW50IGFyZzEyNzEs
aW50IGFyZzEyNzIsaW50IGFyZzEyNzMsaW50IGFyZzEyNzQsaW50IGFyZzEyNzUsaW50IGFyZzEy
NzYsaW50IGFyZzEyNzcsaW50IGFyZzEyNzgsaW50IGFyZzEyNzksaW50IGFyZzEyODAsaW50IGFy
ZzEyODEsaW50IGFyZzEyODIsaW50IGFyZzEyODMsaW50IGFyZzEyODQsaW50IGFyZzEyODUsaW50
IGFyZzEyODYsaW50IGFyZzEyODcsaW50IGFyZzEyODgsaW50IGFyZzEyODksaW50IGFyZzEyOTAs
aW50IGFyZzEyOTEsaW50IGFyZzEyOTIsaW50IGFyZzEyOTMsaW50IGFyZzEyOTQsaW50IGFyZzEy
OTUsaW50IGFyZzEyOTYsaW50IGFyZzEyOTcsaW50IGFyZzEyOTgsaW50IGFyZzEyOTksaW50IGFy
ZzEzMDAsaW50IGFyZzEzMDEsaW50IGFyZzEzMDIsaW50IGFyZzEzMDMsaW50IGFyZzEzMDQsaW50
IGFyZzEzMDUsaW50IGFyZzEzMDYsaW50IGFyZzEzMDcsaW50IGFyZzEzMDgsaW50IGFyZzEzMDks
aW50IGFyZzEzMTAsaW50IGFyZzEzMTEsaW50IGFyZzEzMTIsaW50IGFyZzEzMTMsaW50IGFyZzEz
MTQsaW50IGFyZzEzMTUsaW50IGFyZzEzMTYsaW50IGFyZzEzMTcsaW50IGFyZzEzMTgsaW50IGFy
ZzEzMTksaW50IGFyZzEzMjAsaW50IGFyZzEzMjEsaW50IGFyZzEzMjIsaW50IGFyZzEzMjMsaW50
IGFyZzEzMjQsaW50IGFyZzEzMjUsaW50IGFyZzEzMjYsaW50IGFyZzEzMjcsaW50IGFyZzEzMjgs
aW50IGFyZzEzMjksaW50IGFyZzEzMzAsaW50IGFyZzEzMzEsaW50IGFyZzEzMzIsaW50IGFyZzEz
MzMsaW50IGFyZzEzMzQsaW50IGFyZzEzMzUsaW50IGFyZzEzMzYsaW50IGFyZzEzMzcsaW50IGFy
ZzEzMzgsaW50IGFyZzEzMzksaW50IGFyZzEzNDAsaW50IGFyZzEzNDEsaW50IGFyZzEzNDIsaW50
IGFyZzEzNDMsaW50IGFyZzEzNDQsaW50IGFyZzEzNDUsaW50IGFyZzEzNDYsaW50IGFyZzEzNDcs
aW50IGFyZzEzNDgsaW50IGFyZzEzNDksaW50IGFyZzEzNTAsaW50IGFyZzEzNTEsaW50IGFyZzEz
NTIsaW50IGFyZzEzNTMsaW50IGFyZzEzNTQsaW50IGFyZzEzNTUsaW50IGFyZzEzNTYsaW50IGFy
ZzEzNTcsaW50IGFyZzEzNTgsaW50IGFyZzEzNTksaW50IGFyZzEzNjAsaW50IGFyZzEzNjEsaW50
IGFyZzEzNjIsaW50IGFyZzEzNjMsaW50IGFyZzEzNjQsaW50IGFyZzEzNjUsaW50IGFyZzEzNjYs
aW50IGFyZzEzNjcsaW50IGFyZzEzNjgsaW50IGFyZzEzNjksaW50IGFyZzEzNzAsaW50IGFyZzEz
NzEsaW50IGFyZzEzNzIsaW50IGFyZzEzNzMsaW50IGFyZzEzNzQsaW50IGFyZzEzNzUsaW50IGFy
ZzEzNzYsaW50IGFyZzEzNzcsaW50IGFyZzEzNzgsaW50IGFyZzEzNzksaW50IGFyZzEzODAsaW50
IGFyZzEzODEsaW50IGFyZzEzODIsaW50IGFyZzEzODMsaW50IGFyZzEzODQsaW50IGFyZzEzODUs
aW50IGFyZzEzODYsaW50IGFyZzEzODcsaW50IGFyZzEzODgsaW50IGFyZzEzODksaW50IGFyZzEz
OTAsaW50IGFyZzEzOTEsaW50IGFyZzEzOTIsaW50IGFyZzEzOTMsaW50IGFyZzEzOTQsaW50IGFy
ZzEzOTUsaW50IGFyZzEzOTYsaW50IGFyZzEzOTcsaW50IGFyZzEzOTgsaW50IGFyZzEzOTksaW50
IGFyZzE0MDAsaW50IGFyZzE0MDEsaW50IGFyZzE0MDIsaW50IGFyZzE0MDMsaW50IGFyZzE0MDQs
aW50IGFyZzE0MDUsaW50IGFyZzE0MDYsaW50IGFyZzE0MDcsaW50IGFyZzE0MDgsaW50IGFyZzE0
MDksaW50IGFyZzE0MTAsaW50IGFyZzE0MTEsaW50IGFyZzE0MTIsaW50IGFyZzE0MTMsaW50IGFy
ZzE0MTQsaW50IGFyZzE0MTUsaW50IGFyZzE0MTYsaW50IGFyZzE0MTcsaW50IGFyZzE0MTgsaW50
IGFyZzE0MTksaW50IGFyZzE0MjAsaW50IGFyZzE0MjEsaW50IGFyZzE0MjIsaW50IGFyZzE0MjMs
aW50IGFyZzE0MjQsaW50IGFyZzE0MjUsaW50IGFyZzE0MjYsaW50IGFyZzE0MjcsaW50IGFyZzE0
MjgsaW50IGFyZzE0MjksaW50IGFyZzE0MzAsaW50IGFyZzE0MzEsaW50IGFyZzE0MzIsaW50IGFy
ZzE0MzMsaW50IGFyZzE0MzQsaW50IGFyZzE0MzUsaW50IGFyZzE0MzYsaW50IGFyZzE0MzcsaW50
IGFyZzE0MzgsaW50IGFyZzE0MzksaW50IGFyZzE0NDAsaW50IGFyZzE0NDEsaW50IGFyZzE0NDIs
aW50IGFyZzE0NDMsaW50IGFyZzE0NDQsaW50IGFyZzE0NDUsaW50IGFyZzE0NDYsaW50IGFyZzE0
NDcsaW50IGFyZzE0NDgsaW50IGFyZzE0NDksaW50IGFyZzE0NTAsaW50IGFyZzE0NTEsaW50IGFy
ZzE0NTIsaW50IGFyZzE0NTMsaW50IGFyZzE0NTQsaW50IGFyZzE0NTUsaW50IGFyZzE0NTYsaW50
IGFyZzE0NTcsaW50IGFyZzE0NTgsaW50IGFyZzE0NTksaW50IGFyZzE0NjAsaW50IGFyZzE0NjEs
aW50IGFyZzE0NjIsaW50IGFyZzE0NjMsaW50IGFyZzE0NjQsaW50IGFyZzE0NjUsaW50IGFyZzE0
NjYsaW50IGFyZzE0NjcsaW50IGFyZzE0NjgsaW50IGFyZzE0NjksaW50IGFyZzE0NzAsaW50IGFy
ZzE0NzEsaW50IGFyZzE0NzIsaW50IGFyZzE0NzMsaW50IGFyZzE0NzQsaW50IGFyZzE0NzUsaW50
IGFyZzE0NzYsaW50IGFyZzE0NzcsaW50IGFyZzE0NzgsaW50IGFyZzE0NzksaW50IGFyZzE0ODAs
aW50IGFyZzE0ODEsaW50IGFyZzE0ODIsaW50IGFyZzE0ODMsaW50IGFyZzE0ODQsaW50IGFyZzE0
ODUsaW50IGFyZzE0ODYsaW50IGFyZzE0ODcsaW50IGFyZzE0ODgsaW50IGFyZzE0ODksaW50IGFy
ZzE0OTAsaW50IGFyZzE0OTEsaW50IGFyZzE0OTIsaW50IGFyZzE0OTMsaW50IGFyZzE0OTQsaW50
IGFyZzE0OTUsaW50IGFyZzE0OTYsaW50IGFyZzE0OTcsaW50IGFyZzE0OTgsaW50IGFyZzE0OTks
aW50IGFyZzE1MDAsaW50IGFyZzE1MDEsaW50IGFyZzE1MDIsaW50IGFyZzE1MDMsaW50IGFyZzE1
MDQsaW50IGFyZzE1MDUsaW50IGFyZzE1MDYsaW50IGFyZzE1MDcsaW50IGFyZzE1MDgsaW50IGFy
ZzE1MDksaW50IGFyZzE1MTAsaW50IGFyZzE1MTEsaW50IGFyZzE1MTIsaW50IGFyZzE1MTMsaW50
IGFyZzE1MTQsaW50IGFyZzE1MTUsaW50IGFyZzE1MTYsaW50IGFyZzE1MTcsaW50IGFyZzE1MTgs
aW50IGFyZzE1MTksaW50IGFyZzE1MjAsaW50IGFyZzE1MjEsaW50IGFyZzE1MjIsaW50IGFyZzE1
MjMsaW50IGFyZzE1MjQsaW50IGFyZzE1MjUsaW50IGFyZzE1MjYsaW50IGFyZzE1MjcsaW50IGFy
ZzE1MjgsaW50IGFyZzE1MjksaW50IGFyZzE1MzAsaW50IGFyZzE1MzEsaW50IGFyZzE1MzIsaW50
IGFyZzE1MzMsaW50IGFyZzE1MzQsaW50IGFyZzE1MzUsaW50IGFyZzE1MzYsaW50IGFyZzE1Mzcs
aW50IGFyZzE1MzgsaW50IGFyZzE1MzksaW50IGFyZzE1NDAsaW50IGFyZzE1NDEsaW50IGFyZzE1
NDIsaW50IGFyZzE1NDMsaW50IGFyZzE1NDQsaW50IGFyZzE1NDUsaW50IGFyZzE1NDYsaW50IGFy
ZzE1NDcsaW50IGFyZzE1NDgsaW50IGFyZzE1NDksaW50IGFyZzE1NTAsaW50IGFyZzE1NTEsaW50
IGFyZzE1NTIsaW50IGFyZzE1NTMsaW50IGFyZzE1NTQsaW50IGFyZzE1NTUsaW50IGFyZzE1NTYs
aW50IGFyZzE1NTcsaW50IGFyZzE1NTgsaW50IGFyZzE1NTksaW50IGFyZzE1NjAsaW50IGFyZzE1
NjEsaW50IGFyZzE1NjIsaW50IGFyZzE1NjMsaW50IGFyZzE1NjQsaW50IGFyZzE1NjUsaW50IGFy
ZzE1NjYsaW50IGFyZzE1NjcsaW50IGFyZzE1NjgsaW50IGFyZzE1NjksaW50IGFyZzE1NzAsaW50
IGFyZzE1NzEsaW50IGFyZzE1NzIsaW50IGFyZzE1NzMsaW50IGFyZzE1NzQsaW50IGFyZzE1NzUs
aW50IGFyZzE1NzYsaW50IGFyZzE1NzcsaW50IGFyZzE1NzgsaW50IGFyZzE1NzksaW50IGFyZzE1
ODAsaW50IGFyZzE1ODEsaW50IGFyZzE1ODIsaW50IGFyZzE1ODMsaW50IGFyZzE1ODQsaW50IGFy
ZzE1ODUsaW50IGFyZzE1ODYsaW50IGFyZzE1ODcsaW50IGFyZzE1ODgsaW50IGFyZzE1ODksaW50
IGFyZzE1OTAsaW50IGFyZzE1OTEsaW50IGFyZzE1OTIsaW50IGFyZzE1OTMsaW50IGFyZzE1OTQs
aW50IGFyZzE1OTUsaW50IGFyZzE1OTYsaW50IGFyZzE1OTcsaW50IGFyZzE1OTgsaW50IGFyZzE1
OTksaW50IGFyZzE2MDAsaW50IGFyZzE2MDEsaW50IGFyZzE2MDIsaW50IGFyZzE2MDMsaW50IGFy
ZzE2MDQsaW50IGFyZzE2MDUsaW50IGFyZzE2MDYsaW50IGFyZzE2MDcsaW50IGFyZzE2MDgsaW50
IGFyZzE2MDksaW50IGFyZzE2MTAsaW50IGFyZzE2MTEsaW50IGFyZzE2MTIsaW50IGFyZzE2MTMs
aW50IGFyZzE2MTQsaW50IGFyZzE2MTUsaW50IGFyZzE2MTYsaW50IGFyZzE2MTcsaW50IGFyZzE2
MTgsaW50IGFyZzE2MTksaW50IGFyZzE2MjAsaW50IGFyZzE2MjEsaW50IGFyZzE2MjIsaW50IGFy
ZzE2MjMsaW50IGFyZzE2MjQsaW50IGFyZzE2MjUsaW50IGFyZzE2MjYsaW50IGFyZzE2MjcsaW50
IGFyZzE2MjgsaW50IGFyZzE2MjksaW50IGFyZzE2MzAsaW50IGFyZzE2MzEsaW50IGFyZzE2MzIs
aW50IGFyZzE2MzMsaW50IGFyZzE2MzQsaW50IGFyZzE2MzUsaW50IGFyZzE2MzYsaW50IGFyZzE2
MzcsaW50IGFyZzE2MzgsaW50IGFyZzE2MzksaW50IGFyZzE2NDAsaW50IGFyZzE2NDEsaW50IGFy
ZzE2NDIsaW50IGFyZzE2NDMsaW50IGFyZzE2NDQsaW50IGFyZzE2NDUsaW50IGFyZzE2NDYsaW50
IGFyZzE2NDcsaW50IGFyZzE2NDgsaW50IGFyZzE2NDksaW50IGFyZzE2NTAsaW50IGFyZzE2NTEs
aW50IGFyZzE2NTIsaW50IGFyZzE2NTMsaW50IGFyZzE2NTQsaW50IGFyZzE2NTUsaW50IGFyZzE2
NTYsaW50IGFyZzE2NTcsaW50IGFyZzE2NTgsaW50IGFyZzE2NTksaW50IGFyZzE2NjAsaW50IGFy
ZzE2NjEsaW50IGFyZzE2NjIsaW50IGFyZzE2NjMsaW50IGFyZzE2NjQsaW50IGFyZzE2NjUsaW50
IGFyZzE2NjYsaW50IGFyZzE2NjcsaW50IGFyZzE2NjgsaW50IGFyZzE2NjksaW50IGFyZzE2NzAs
aW50IGFyZzE2NzEsaW50IGFyZzE2NzIsaW50IGFyZzE2NzMsaW50IGFyZzE2NzQsaW50IGFyZzE2
NzUsaW50IGFyZzE2NzYsaW50IGFyZzE2NzcsaW50IGFyZzE2NzgsaW50IGFyZzE2NzksaW50IGFy
ZzE2ODAsaW50IGFyZzE2ODEsaW50IGFyZzE2ODIsaW50IGFyZzE2ODMsaW50IGFyZzE2ODQsaW50
IGFyZzE2ODUsaW50IGFyZzE2ODYsaW50IGFyZzE2ODcsaW50IGFyZzE2ODgsaW50IGFyZzE2ODks
aW50IGFyZzE2OTAsaW50IGFyZzE2OTEsaW50IGFyZzE2OTIsaW50IGFyZzE2OTMsaW50IGFyZzE2
OTQsaW50IGFyZzE2OTUsaW50IGFyZzE2OTYsaW50IGFyZzE2OTcsaW50IGFyZzE2OTgsaW50IGFy
ZzE2OTksaW50IGFyZzE3MDAsaW50IGFyZzE3MDEsaW50IGFyZzE3MDIsaW50IGFyZzE3MDMsaW50
IGFyZzE3MDQsaW50IGFyZzE3MDUsaW50IGFyZzE3MDYsaW50IGFyZzE3MDcsaW50IGFyZzE3MDgs
aW50IGFyZzE3MDksaW50IGFyZzE3MTAsaW50IGFyZzE3MTEsaW50IGFyZzE3MTIsaW50IGFyZzE3
MTMsaW50IGFyZzE3MTQsaW50IGFyZzE3MTUsaW50IGFyZzE3MTYsaW50IGFyZzE3MTcsaW50IGFy
ZzE3MTgsaW50IGFyZzE3MTksaW50IGFyZzE3MjAsaW50IGFyZzE3MjEsaW50IGFyZzE3MjIsaW50
IGFyZzE3MjMsaW50IGFyZzE3MjQsaW50IGFyZzE3MjUsaW50IGFyZzE3MjYsaW50IGFyZzE3Mjcs
aW50IGFyZzE3MjgsaW50IGFyZzE3MjksaW50IGFyZzE3MzAsaW50IGFyZzE3MzEsaW50IGFyZzE3
MzIsaW50IGFyZzE3MzMsaW50IGFyZzE3MzQsaW50IGFyZzE3MzUsaW50IGFyZzE3MzYsaW50IGFy
ZzE3MzcsaW50IGFyZzE3MzgsaW50IGFyZzE3MzksaW50IGFyZzE3NDAsaW50IGFyZzE3NDEsaW50
IGFyZzE3NDIsaW50IGFyZzE3NDMsaW50IGFyZzE3NDQsaW50IGFyZzE3NDUsaW50IGFyZzE3NDYs
aW50IGFyZzE3NDcsaW50IGFyZzE3NDgsaW50IGFyZzE3NDksaW50IGFyZzE3NTAsaW50IGFyZzE3
NTEsaW50IGFyZzE3NTIsaW50IGFyZzE3NTMsaW50IGFyZzE3NTQsaW50IGFyZzE3NTUsaW50IGFy
ZzE3NTYsaW50IGFyZzE3NTcsaW50IGFyZzE3NTgsaW50IGFyZzE3NTksaW50IGFyZzE3NjAsaW50
IGFyZzE3NjEsaW50IGFyZzE3NjIsaW50IGFyZzE3NjMsaW50IGFyZzE3NjQsaW50IGFyZzE3NjUs
aW50IGFyZzE3NjYsaW50IGFyZzE3NjcsaW50IGFyZzE3NjgsaW50IGFyZzE3NjksaW50IGFyZzE3
NzAsaW50IGFyZzE3NzEsaW50IGFyZzE3NzIsaW50IGFyZzE3NzMsaW50IGFyZzE3NzQsaW50IGFy
ZzE3NzUsaW50IGFyZzE3NzYsaW50IGFyZzE3NzcsaW50IGFyZzE3NzgsaW50IGFyZzE3NzksaW50
IGFyZzE3ODAsaW50IGFyZzE3ODEsaW50IGFyZzE3ODIsaW50IGFyZzE3ODMsaW50IGFyZzE3ODQs
aW50IGFyZzE3ODUsaW50IGFyZzE3ODYsaW50IGFyZzE3ODcsaW50IGFyZzE3ODgsaW50IGFyZzE3
ODksaW50IGFyZzE3OTAsaW50IGFyZzE3OTEsaW50IGFyZzE3OTIsaW50IGFyZzE3OTMsaW50IGFy
ZzE3OTQsaW50IGFyZzE3OTUsaW50IGFyZzE3OTYsaW50IGFyZzE3OTcsaW50IGFyZzE3OTgsaW50
IGFyZzE3OTksaW50IGFyZzE4MDAsaW50IGFyZzE4MDEsaW50IGFyZzE4MDIsaW50IGFyZzE4MDMs
aW50IGFyZzE4MDQsaW50IGFyZzE4MDUsaW50IGFyZzE4MDYsaW50IGFyZzE4MDcsaW50IGFyZzE4
MDgsaW50IGFyZzE4MDksaW50IGFyZzE4MTAsaW50IGFyZzE4MTEsaW50IGFyZzE4MTIsaW50IGFy
ZzE4MTMsaW50IGFyZzE4MTQsaW50IGFyZzE4MTUsaW50IGFyZzE4MTYsaW50IGFyZzE4MTcsaW50
IGFyZzE4MTgsaW50IGFyZzE4MTksaW50IGFyZzE4MjAsaW50IGFyZzE4MjEsaW50IGFyZzE4MjIs
aW50IGFyZzE4MjMsaW50IGFyZzE4MjQsaW50IGFyZzE4MjUsaW50IGFyZzE4MjYsaW50IGFyZzE4
MjcsaW50IGFyZzE4MjgsaW50IGFyZzE4MjksaW50IGFyZzE4MzAsaW50IGFyZzE4MzEsaW50IGFy
ZzE4MzIsaW50IGFyZzE4MzMsaW50IGFyZzE4MzQsaW50IGFyZzE4MzUsaW50IGFyZzE4MzYsaW50
IGFyZzE4MzcsaW50IGFyZzE4MzgsaW50IGFyZzE4MzksaW50IGFyZzE4NDAsaW50IGFyZzE4NDEs
aW50IGFyZzE4NDIsaW50IGFyZzE4NDMsaW50IGFyZzE4NDQsaW50IGFyZzE4NDUsaW50IGFyZzE4
NDYsaW50IGFyZzE4NDcsaW50IGFyZzE4NDgsaW50IGFyZzE4NDksaW50IGFyZzE4NTAsaW50IGFy
ZzE4NTEsaW50IGFyZzE4NTIsaW50IGFyZzE4NTMsaW50IGFyZzE4NTQsaW50IGFyZzE4NTUsaW50
IGFyZzE4NTYsaW50IGFyZzE4NTcsaW50IGFyZzE4NTgsaW50IGFyZzE4NTksaW50IGFyZzE4NjAs
aW50IGFyZzE4NjEsaW50IGFyZzE4NjIsaW50IGFyZzE4NjMsaW50IGFyZzE4NjQsaW50IGFyZzE4
NjUsaW50IGFyZzE4NjYsaW50IGFyZzE4NjcsaW50IGFyZzE4NjgsaW50IGFyZzE4NjksaW50IGFy
ZzE4NzAsaW50IGFyZzE4NzEsaW50IGFyZzE4NzIsaW50IGFyZzE4NzMsaW50IGFyZzE4NzQsaW50
IGFyZzE4NzUsaW50IGFyZzE4NzYsaW50IGFyZzE4NzcsaW50IGFyZzE4NzgsaW50IGFyZzE4Nzks
aW50IGFyZzE4ODAsaW50IGFyZzE4ODEsaW50IGFyZzE4ODIsaW50IGFyZzE4ODMsaW50IGFyZzE4
ODQsaW50IGFyZzE4ODUsaW50IGFyZzE4ODYsaW50IGFyZzE4ODcsaW50IGFyZzE4ODgsaW50IGFy
ZzE4ODksaW50IGFyZzE4OTAsaW50IGFyZzE4OTEsaW50IGFyZzE4OTIsaW50IGFyZzE4OTMsaW50
IGFyZzE4OTQsaW50IGFyZzE4OTUsaW50IGFyZzE4OTYsaW50IGFyZzE4OTcsaW50IGFyZzE4OTgs
aW50IGFyZzE4OTksaW50IGFyZzE5MDAsaW50IGFyZzE5MDEsaW50IGFyZzE5MDIsaW50IGFyZzE5
MDMsaW50IGFyZzE5MDQsaW50IGFyZzE5MDUsaW50IGFyZzE5MDYsaW50IGFyZzE5MDcsaW50IGFy
ZzE5MDgsaW50IGFyZzE5MDksaW50IGFyZzE5MTAsaW50IGFyZzE5MTEsaW50IGFyZzE5MTIsaW50
IGFyZzE5MTMsaW50IGFyZzE5MTQsaW50IGFyZzE5MTUsaW50IGFyZzE5MTYsaW50IGFyZzE5MTcs
aW50IGFyZzE5MTgsaW50IGFyZzE5MTksaW50IGFyZzE5MjAsaW50IGFyZzE5MjEsaW50IGFyZzE5
MjIsaW50IGFyZzE5MjMsaW50IGFyZzE5MjQsaW50IGFyZzE5MjUsaW50IGFyZzE5MjYsaW50IGFy
ZzE5MjcsaW50IGFyZzE5MjgsaW50IGFyZzE5MjksaW50IGFyZzE5MzAsaW50IGFyZzE5MzEsaW50
IGFyZzE5MzIsaW50IGFyZzE5MzMsaW50IGFyZzE5MzQsaW50IGFyZzE5MzUsaW50IGFyZzE5MzYs
aW50IGFyZzE5MzcsaW50IGFyZzE5MzgsaW50IGFyZzE5MzksaW50IGFyZzE5NDAsaW50IGFyZzE5
NDEsaW50IGFyZzE5NDIsaW50IGFyZzE5NDMsaW50IGFyZzE5NDQsaW50IGFyZzE5NDUsaW50IGFy
ZzE5NDYsaW50IGFyZzE5NDcsaW50IGFyZzE5NDgsaW50IGFyZzE5NDksaW50IGFyZzE5NTAsaW50
IGFyZzE5NTEsaW50IGFyZzE5NTIsaW50IGFyZzE5NTMsaW50IGFyZzE5NTQsaW50IGFyZzE5NTUs
aW50IGFyZzE5NTYsaW50IGFyZzE5NTcsaW50IGFyZzE5NTgsaW50IGFyZzE5NTksaW50IGFyZzE5
NjAsaW50IGFyZzE5NjEsaW50IGFyZzE5NjIsaW50IGFyZzE5NjMsaW50IGFyZzE5NjQsaW50IGFy
ZzE5NjUsaW50IGFyZzE5NjYsaW50IGFyZzE5NjcsaW50IGFyZzE5NjgsaW50IGFyZzE5NjksaW50
IGFyZzE5NzAsaW50IGFyZzE5NzEsaW50IGFyZzE5NzIsaW50IGFyZzE5NzMsaW50IGFyZzE5NzQs
aW50IGFyZzE5NzUsaW50IGFyZzE5NzYsaW50IGFyZzE5NzcsaW50IGFyZzE5NzgsaW50IGFyZzE5
NzksaW50IGFyZzE5ODAsaW50IGFyZzE5ODEsaW50IGFyZzE5ODIsaW50IGFyZzE5ODMsaW50IGFy
ZzE5ODQsaW50IGFyZzE5ODUsaW50IGFyZzE5ODYsaW50IGFyZzE5ODcsaW50IGFyZzE5ODgsaW50
IGFyZzE5ODksaW50IGFyZzE5OTAsaW50IGFyZzE5OTEsaW50IGFyZzE5OTIsaW50IGFyZzE5OTMs
aW50IGFyZzE5OTQsaW50IGFyZzE5OTUsaW50IGFyZzE5OTYsaW50IGFyZzE5OTcsaW50IGFyZzE5
OTgsaW50IGFyZzE5OTksaW50IGFyZzIwMDAsaW50IGFyZzIwMDEsaW50IGFyZzIwMDIsaW50IGFy
ZzIwMDMsaW50IGFyZzIwMDQsaW50IGFyZzIwMDUsaW50IGFyZzIwMDYsaW50IGFyZzIwMDcsaW50
IGFyZzIwMDgsaW50IGFyZzIwMDksaW50IGFyZzIwMTAsaW50IGFyZzIwMTEsaW50IGFyZzIwMTIs
aW50IGFyZzIwMTMsaW50IGFyZzIwMTQsaW50IGFyZzIwMTUsaW50IGFyZzIwMTYsaW50IGFyZzIw
MTcsaW50IGFyZzIwMTgsaW50IGFyZzIwMTksaW50IGFyZzIwMjAsaW50IGFyZzIwMjEsaW50IGFy
ZzIwMjIsaW50IGFyZzIwMjMsaW50IGFyZzIwMjQsaW50IGFyZzIwMjUsaW50IGFyZzIwMjYsaW50
IGFyZzIwMjcsaW50IGFyZzIwMjgsaW50IGFyZzIwMjksaW50IGFyZzIwMzAsaW50IGFyZzIwMzEs
aW50IGFyZzIwMzIsaW50IGFyZzIwMzMsaW50IGFyZzIwMzQsaW50IGFyZzIwMzUsaW50IGFyZzIw
MzYsaW50IGFyZzIwMzcsaW50IGFyZzIwMzgsaW50IGFyZzIwMzksaW50IGFyZzIwNDAsaW50IGFy
ZzIwNDEsaW50IGFyZzIwNDIsaW50IGFyZzIwNDMsaW50IGFyZzIwNDQsaW50IGFyZzIwNDUsaW50
IGFyZzIwNDYsaW50IGFyZzIwNDcsaW50IGFyZzIwNDgsaW50IGFyZzIwNDksaW50IGFyZzIwNTAs
aW50IGFyZzIwNTEsaW50IGFyZzIwNTIsaW50IGFyZzIwNTMsaW50IGFyZzIwNTQsaW50IGFyZzIw
NTUsaW50IGFyZzIwNTYsaW50IGFyZzIwNTcsaW50IGFyZzIwNTgsaW50IGFyZzIwNTksaW50IGFy
ZzIwNjAsaW50IGFyZzIwNjEsaW50IGFyZzIwNjIsaW50IGFyZzIwNjMsaW50IGFyZzIwNjQsaW50
IGFyZzIwNjUsaW50IGFyZzIwNjYsaW50IGFyZzIwNjcsaW50IGFyZzIwNjgsaW50IGFyZzIwNjks
aW50IGFyZzIwNzAsaW50IGFyZzIwNzEsaW50IGFyZzIwNzIsaW50IGFyZzIwNzMsaW50IGFyZzIw
NzQsaW50IGFyZzIwNzUsaW50IGFyZzIwNzYsaW50IGFyZzIwNzcsaW50IGFyZzIwNzgsaW50IGFy
ZzIwNzksaW50IGFyZzIwODAsaW50IGFyZzIwODEsaW50IGFyZzIwODIsaW50IGFyZzIwODMsaW50
IGFyZzIwODQsaW50IGFyZzIwODUsaW50IGFyZzIwODYsaW50IGFyZzIwODcsaW50IGFyZzIwODgs
aW50IGFyZzIwODksaW50IGFyZzIwOTAsaW50IGFyZzIwOTEsaW50IGFyZzIwOTIsaW50IGFyZzIw
OTMsaW50IGFyZzIwOTQsaW50IGFyZzIwOTUsaW50IGFyZzIwOTYsaW50IGFyZzIwOTcsaW50IGFy
ZzIwOTgsaW50IGFyZzIwOTksaW50IGFyZzIxMDAsaW50IGFyZzIxMDEsaW50IGFyZzIxMDIsaW50
IGFyZzIxMDMsaW50IGFyZzIxMDQsaW50IGFyZzIxMDUsaW50IGFyZzIxMDYsaW50IGFyZzIxMDcs
aW50IGFyZzIxMDgsaW50IGFyZzIxMDksaW50IGFyZzIxMTAsaW50IGFyZzIxMTEsaW50IGFyZzIx
MTIsaW50IGFyZzIxMTMsaW50IGFyZzIxMTQsaW50IGFyZzIxMTUsaW50IGFyZzIxMTYsaW50IGFy
ZzIxMTcsaW50IGFyZzIxMTgsaW50IGFyZzIxMTksaW50IGFyZzIxMjAsaW50IGFyZzIxMjEsaW50
IGFyZzIxMjIsaW50IGFyZzIxMjMsaW50IGFyZzIxMjQsaW50IGFyZzIxMjUsaW50IGFyZzIxMjYs
aW50IGFyZzIxMjcsaW50IGFyZzIxMjgsaW50IGFyZzIxMjksaW50IGFyZzIxMzAsaW50IGFyZzIx
MzEsaW50IGFyZzIxMzIsaW50IGFyZzIxMzMsaW50IGFyZzIxMzQsaW50IGFyZzIxMzUsaW50IGFy
ZzIxMzYsaW50IGFyZzIxMzcsaW50IGFyZzIxMzgsaW50IGFyZzIxMzksaW50IGFyZzIxNDAsaW50
IGFyZzIxNDEsaW50IGFyZzIxNDIsaW50IGFyZzIxNDMsaW50IGFyZzIxNDQsaW50IGFyZzIxNDUs
aW50IGFyZzIxNDYsaW50IGFyZzIxNDcsaW50IGFyZzIxNDgsaW50IGFyZzIxNDksaW50IGFyZzIx
NTAsaW50IGFyZzIxNTEsaW50IGFyZzIxNTIsaW50IGFyZzIxNTMsaW50IGFyZzIxNTQsaW50IGFy
ZzIxNTUsaW50IGFyZzIxNTYsaW50IGFyZzIxNTcsaW50IGFyZzIxNTgsaW50IGFyZzIxNTksaW50
IGFyZzIxNjAsaW50IGFyZzIxNjEsaW50IGFyZzIxNjIsaW50IGFyZzIxNjMsaW50IGFyZzIxNjQs
aW50IGFyZzIxNjUsaW50IGFyZzIxNjYsaW50IGFyZzIxNjcsaW50IGFyZzIxNjgsaW50IGFyZzIx
NjksaW50IGFyZzIxNzAsaW50IGFyZzIxNzEsaW50IGFyZzIxNzIsaW50IGFyZzIxNzMsaW50IGFy
ZzIxNzQsaW50IGFyZzIxNzUsaW50IGFyZzIxNzYsaW50IGFyZzIxNzcsaW50IGFyZzIxNzgsaW50
IGFyZzIxNzksaW50IGFyZzIxODAsaW50IGFyZzIxODEsaW50IGFyZzIxODIsaW50IGFyZzIxODMs
aW50IGFyZzIxODQsaW50IGFyZzIxODUsaW50IGFyZzIxODYsaW50IGFyZzIxODcsaW50IGFyZzIx
ODgsaW50IGFyZzIxODksaW50IGFyZzIxOTAsaW50IGFyZzIxOTEsaW50IGFyZzIxOTIsaW50IGFy
ZzIxOTMsaW50IGFyZzIxOTQsaW50IGFyZzIxOTUsaW50IGFyZzIxOTYsaW50IGFyZzIxOTcsaW50
IGFyZzIxOTgsaW50IGFyZzIxOTksaW50IGFyZzIyMDAsaW50IGFyZzIyMDEsaW50IGFyZzIyMDIs
aW50IGFyZzIyMDMsaW50IGFyZzIyMDQsaW50IGFyZzIyMDUsaW50IGFyZzIyMDYsaW50IGFyZzIy
MDcsaW50IGFyZzIyMDgsaW50IGFyZzIyMDksaW50IGFyZzIyMTAsaW50IGFyZzIyMTEsaW50IGFy
ZzIyMTIsaW50IGFyZzIyMTMsaW50IGFyZzIyMTQsaW50IGFyZzIyMTUsaW50IGFyZzIyMTYsaW50
IGFyZzIyMTcsaW50IGFyZzIyMTgsaW50IGFyZzIyMTksaW50IGFyZzIyMjAsaW50IGFyZzIyMjEs
aW50IGFyZzIyMjIsaW50IGFyZzIyMjMsaW50IGFyZzIyMjQsaW50IGFyZzIyMjUsaW50IGFyZzIy
MjYsaW50IGFyZzIyMjcsaW50IGFyZzIyMjgsaW50IGFyZzIyMjksaW50IGFyZzIyMzAsaW50IGFy
ZzIyMzEsaW50IGFyZzIyMzIsaW50IGFyZzIyMzMsaW50IGFyZzIyMzQsaW50IGFyZzIyMzUsaW50
IGFyZzIyMzYsaW50IGFyZzIyMzcsaW50IGFyZzIyMzgsaW50IGFyZzIyMzksaW50IGFyZzIyNDAs
aW50IGFyZzIyNDEsaW50IGFyZzIyNDIsaW50IGFyZzIyNDMsaW50IGFyZzIyNDQsaW50IGFyZzIy
NDUsaW50IGFyZzIyNDYsaW50IGFyZzIyNDcsaW50IGFyZzIyNDgsaW50IGFyZzIyNDksaW50IGFy
ZzIyNTAsaW50IGFyZzIyNTEsaW50IGFyZzIyNTIsaW50IGFyZzIyNTMsaW50IGFyZzIyNTQsaW50
IGFyZzIyNTUsaW50IGFyZzIyNTYsaW50IGFyZzIyNTcsaW50IGFyZzIyNTgsaW50IGFyZzIyNTks
aW50IGFyZzIyNjAsaW50IGFyZzIyNjEsaW50IGFyZzIyNjIsaW50IGFyZzIyNjMsaW50IGFyZzIy
NjQsaW50IGFyZzIyNjUsaW50IGFyZzIyNjYsaW50IGFyZzIyNjcsaW50IGFyZzIyNjgsaW50IGFy
ZzIyNjksaW50IGFyZzIyNzAsaW50IGFyZzIyNzEsaW50IGFyZzIyNzIsaW50IGFyZzIyNzMsaW50
IGFyZzIyNzQsaW50IGFyZzIyNzUsaW50IGFyZzIyNzYsaW50IGFyZzIyNzcsaW50IGFyZzIyNzgs
aW50IGFyZzIyNzksaW50IGFyZzIyODAsaW50IGFyZzIyODEsaW50IGFyZzIyODIsaW50IGFyZzIy
ODMsaW50IGFyZzIyODQsaW50IGFyZzIyODUsaW50IGFyZzIyODYsaW50IGFyZzIyODcsaW50IGFy
ZzIyODgsaW50IGFyZzIyODksaW50IGFyZzIyOTAsaW50IGFyZzIyOTEsaW50IGFyZzIyOTIsaW50
IGFyZzIyOTMsaW50IGFyZzIyOTQsaW50IGFyZzIyOTUsaW50IGFyZzIyOTYsaW50IGFyZzIyOTcs
aW50IGFyZzIyOTgsaW50IGFyZzIyOTksaW50IGFyZzIzMDAsaW50IGFyZzIzMDEsaW50IGFyZzIz
MDIsaW50IGFyZzIzMDMsaW50IGFyZzIzMDQsaW50IGFyZzIzMDUsaW50IGFyZzIzMDYsaW50IGFy
ZzIzMDcsaW50IGFyZzIzMDgsaW50IGFyZzIzMDksaW50IGFyZzIzMTAsaW50IGFyZzIzMTEsaW50
IGFyZzIzMTIsaW50IGFyZzIzMTMsaW50IGFyZzIzMTQsaW50IGFyZzIzMTUsaW50IGFyZzIzMTYs
aW50IGFyZzIzMTcsaW50IGFyZzIzMTgsaW50IGFyZzIzMTksaW50IGFyZzIzMjAsaW50IGFyZzIz
MjEsaW50IGFyZzIzMjIsaW50IGFyZzIzMjMsaW50IGFyZzIzMjQsaW50IGFyZzIzMjUsaW50IGFy
ZzIzMjYsaW50IGFyZzIzMjcsaW50IGFyZzIzMjgsaW50IGFyZzIzMjksaW50IGFyZzIzMzAsaW50
IGFyZzIzMzEsaW50IGFyZzIzMzIsaW50IGFyZzIzMzMsaW50IGFyZzIzMzQsaW50IGFyZzIzMzUs
aW50IGFyZzIzMzYsaW50IGFyZzIzMzcsaW50IGFyZzIzMzgsaW50IGFyZzIzMzksaW50IGFyZzIz
NDAsaW50IGFyZzIzNDEsaW50IGFyZzIzNDIsaW50IGFyZzIzNDMsaW50IGFyZzIzNDQsaW50IGFy
ZzIzNDUsaW50IGFyZzIzNDYsaW50IGFyZzIzNDcsaW50IGFyZzIzNDgsaW50IGFyZzIzNDksaW50
IGFyZzIzNTAsaW50IGFyZzIzNTEsaW50IGFyZzIzNTIsaW50IGFyZzIzNTMsaW50IGFyZzIzNTQs
aW50IGFyZzIzNTUsaW50IGFyZzIzNTYsaW50IGFyZzIzNTcsaW50IGFyZzIzNTgsaW50IGFyZzIz
NTksaW50IGFyZzIzNjAsaW50IGFyZzIzNjEsaW50IGFyZzIzNjIsaW50IGFyZzIzNjMsaW50IGFy
ZzIzNjQsaW50IGFyZzIzNjUsaW50IGFyZzIzNjYsaW50IGFyZzIzNjcsaW50IGFyZzIzNjgsaW50
IGFyZzIzNjksaW50IGFyZzIzNzAsaW50IGFyZzIzNzEsaW50IGFyZzIzNzIsaW50IGFyZzIzNzMs
aW50IGFyZzIzNzQsaW50IGFyZzIzNzUsaW50IGFyZzIzNzYsaW50IGFyZzIzNzcsaW50IGFyZzIz
NzgsaW50IGFyZzIzNzksaW50IGFyZzIzODAsaW50IGFyZzIzODEsaW50IGFyZzIzODIsaW50IGFy
ZzIzODMsaW50IGFyZzIzODQsaW50IGFyZzIzODUsaW50IGFyZzIzODYsaW50IGFyZzIzODcsaW50
IGFyZzIzODgsaW50IGFyZzIzODksaW50IGFyZzIzOTAsaW50IGFyZzIzOTEsaW50IGFyZzIzOTIs
aW50IGFyZzIzOTMsaW50IGFyZzIzOTQsaW50IGFyZzIzOTUsaW50IGFyZzIzOTYsaW50IGFyZzIz
OTcsaW50IGFyZzIzOTgsaW50IGFyZzIzOTksaW50IGFyZzI0MDAsaW50IGFyZzI0MDEsaW50IGFy
ZzI0MDIsaW50IGFyZzI0MDMsaW50IGFyZzI0MDQsaW50IGFyZzI0MDUsaW50IGFyZzI0MDYsaW50
IGFyZzI0MDcsaW50IGFyZzI0MDgsaW50IGFyZzI0MDksaW50IGFyZzI0MTAsaW50IGFyZzI0MTEs
aW50IGFyZzI0MTIsaW50IGFyZzI0MTMsaW50IGFyZzI0MTQsaW50IGFyZzI0MTUsaW50IGFyZzI0
MTYsaW50IGFyZzI0MTcsaW50IGFyZzI0MTgsaW50IGFyZzI0MTksaW50IGFyZzI0MjAsaW50IGFy
ZzI0MjEsaW50IGFyZzI0MjIsaW50IGFyZzI0MjMsaW50IGFyZzI0MjQsaW50IGFyZzI0MjUsaW50
IGFyZzI0MjYsaW50IGFyZzI0MjcsaW50IGFyZzI0MjgsaW50IGFyZzI0MjksaW50IGFyZzI0MzAs
aW50IGFyZzI0MzEsaW50IGFyZzI0MzIsaW50IGFyZzI0MzMsaW50IGFyZzI0MzQsaW50IGFyZzI0
MzUsaW50IGFyZzI0MzYsaW50IGFyZzI0MzcsaW50IGFyZzI0MzgsaW50IGFyZzI0MzksaW50IGFy
ZzI0NDAsaW50IGFyZzI0NDEsaW50IGFyZzI0NDIsaW50IGFyZzI0NDMsaW50IGFyZzI0NDQsaW50
IGFyZzI0NDUsaW50IGFyZzI0NDYsaW50IGFyZzI0NDcsaW50IGFyZzI0NDgsaW50IGFyZzI0NDks
aW50IGFyZzI0NTAsaW50IGFyZzI0NTEsaW50IGFyZzI0NTIsaW50IGFyZzI0NTMsaW50IGFyZzI0
NTQsaW50IGFyZzI0NTUsaW50IGFyZzI0NTYsaW50IGFyZzI0NTcsaW50IGFyZzI0NTgsaW50IGFy
ZzI0NTksaW50IGFyZzI0NjAsaW50IGFyZzI0NjEsaW50IGFyZzI0NjIsaW50IGFyZzI0NjMsaW50
IGFyZzI0NjQsaW50IGFyZzI0NjUsaW50IGFyZzI0NjYsaW50IGFyZzI0NjcsaW50IGFyZzI0Njgs
aW50IGFyZzI0NjksaW50IGFyZzI0NzAsaW50IGFyZzI0NzEsaW50IGFyZzI0NzIsaW50IGFyZzI0
NzMsaW50IGFyZzI0NzQsaW50IGFyZzI0NzUsaW50IGFyZzI0NzYsaW50IGFyZzI0NzcsaW50IGFy
ZzI0NzgsaW50IGFyZzI0NzksaW50IGFyZzI0ODAsaW50IGFyZzI0ODEsaW50IGFyZzI0ODIsaW50
IGFyZzI0ODMsaW50IGFyZzI0ODQsaW50IGFyZzI0ODUsaW50IGFyZzI0ODYsaW50IGFyZzI0ODcs
aW50IGFyZzI0ODgsaW50IGFyZzI0ODksaW50IGFyZzI0OTAsaW50IGFyZzI0OTEsaW50IGFyZzI0
OTIsaW50IGFyZzI0OTMsaW50IGFyZzI0OTQsaW50IGFyZzI0OTUsaW50IGFyZzI0OTYsaW50IGFy
ZzI0OTcsaW50IGFyZzI0OTgsaW50IGFyZzI0OTksaW50IGFyZzI1MDAsaW50IGFyZzI1MDEsaW50
IGFyZzI1MDIsaW50IGFyZzI1MDMsaW50IGFyZzI1MDQsaW50IGFyZzI1MDUsaW50IGFyZzI1MDYs
aW50IGFyZzI1MDcsaW50IGFyZzI1MDgsaW50IGFyZzI1MDksaW50IGFyZzI1MTAsaW50IGFyZzI1
MTEsaW50IGFyZzI1MTIsaW50IGFyZzI1MTMsaW50IGFyZzI1MTQsaW50IGFyZzI1MTUsaW50IGFy
ZzI1MTYsaW50IGFyZzI1MTcsaW50IGFyZzI1MTgsaW50IGFyZzI1MTksaW50IGFyZzI1MjAsaW50
IGFyZzI1MjEsaW50IGFyZzI1MjIsaW50IGFyZzI1MjMsaW50IGFyZzI1MjQsaW50IGFyZzI1MjUs
aW50IGFyZzI1MjYsaW50IGFyZzI1MjcsaW50IGFyZzI1MjgsaW50IGFyZzI1MjksaW50IGFyZzI1
MzAsaW50IGFyZzI1MzEsaW50IGFyZzI1MzIsaW50IGFyZzI1MzMsaW50IGFyZzI1MzQsaW50IGFy
ZzI1MzUsaW50IGFyZzI1MzYsaW50IGFyZzI1MzcsaW50IGFyZzI1MzgsaW50IGFyZzI1MzksaW50
IGFyZzI1NDAsaW50IGFyZzI1NDEsaW50IGFyZzI1NDIsaW50IGFyZzI1NDMsaW50IGFyZzI1NDQs
aW50IGFyZzI1NDUsaW50IGFyZzI1NDYsaW50IGFyZzI1NDcsaW50IGFyZzI1NDgsaW50IGFyZzI1
NDksaW50IGFyZzI1NTAsaW50IGFyZzI1NTEsaW50IGFyZzI1NTIsaW50IGFyZzI1NTMsaW50IGFy
ZzI1NTQsaW50IGFyZzI1NTUsaW50IGFyZzI1NTYsaW50IGFyZzI1NTcsaW50IGFyZzI1NTgsaW50
IGFyZzI1NTksaW50IGFyZzI1NjAsaW50IGFyZzI1NjEsaW50IGFyZzI1NjIsaW50IGFyZzI1NjMs
aW50IGFyZzI1NjQsaW50IGFyZzI1NjUsaW50IGFyZzI1NjYsaW50IGFyZzI1NjcsaW50IGFyZzI1
NjgsaW50IGFyZzI1NjksaW50IGFyZzI1NzAsaW50IGFyZzI1NzEsaW50IGFyZzI1NzIsaW50IGFy
ZzI1NzMsaW50IGFyZzI1NzQsaW50IGFyZzI1NzUsaW50IGFyZzI1NzYsaW50IGFyZzI1NzcsaW50
IGFyZzI1NzgsaW50IGFyZzI1NzksaW50IGFyZzI1ODAsaW50IGFyZzI1ODEsaW50IGFyZzI1ODIs
aW50IGFyZzI1ODMsaW50IGFyZzI1ODQsaW50IGFyZzI1ODUsaW50IGFyZzI1ODYsaW50IGFyZzI1
ODcsaW50IGFyZzI1ODgsaW50IGFyZzI1ODksaW50IGFyZzI1OTAsaW50IGFyZzI1OTEsaW50IGFy
ZzI1OTIsaW50IGFyZzI1OTMsaW50IGFyZzI1OTQsaW50IGFyZzI1OTUsaW50IGFyZzI1OTYsaW50
IGFyZzI1OTcsaW50IGFyZzI1OTgsaW50IGFyZzI1OTksaW50IGFyZzI2MDAsaW50IGFyZzI2MDEs
aW50IGFyZzI2MDIsaW50IGFyZzI2MDMsaW50IGFyZzI2MDQsaW50IGFyZzI2MDUsaW50IGFyZzI2
MDYsaW50IGFyZzI2MDcsaW50IGFyZzI2MDgsaW50IGFyZzI2MDksaW50IGFyZzI2MTAsaW50IGFy
ZzI2MTEsaW50IGFyZzI2MTIsaW50IGFyZzI2MTMsaW50IGFyZzI2MTQsaW50IGFyZzI2MTUsaW50
IGFyZzI2MTYsaW50IGFyZzI2MTcsaW50IGFyZzI2MTgsaW50IGFyZzI2MTksaW50IGFyZzI2MjAs
aW50IGFyZzI2MjEsaW50IGFyZzI2MjIsaW50IGFyZzI2MjMsaW50IGFyZzI2MjQsaW50IGFyZzI2
MjUsaW50IGFyZzI2MjYsaW50IGFyZzI2MjcsaW50IGFyZzI2MjgsaW50IGFyZzI2MjksaW50IGFy
ZzI2MzAsaW50IGFyZzI2MzEsaW50IGFyZzI2MzIsaW50IGFyZzI2MzMsaW50IGFyZzI2MzQsaW50
IGFyZzI2MzUsaW50IGFyZzI2MzYsaW50IGFyZzI2MzcsaW50IGFyZzI2MzgsaW50IGFyZzI2Mzks
aW50IGFyZzI2NDAsaW50IGFyZzI2NDEsaW50IGFyZzI2NDIsaW50IGFyZzI2NDMsaW50IGFyZzI2
NDQsaW50IGFyZzI2NDUsaW50IGFyZzI2NDYsaW50IGFyZzI2NDcsaW50IGFyZzI2NDgsaW50IGFy
ZzI2NDksaW50IGFyZzI2NTAsaW50IGFyZzI2NTEsaW50IGFyZzI2NTIsaW50IGFyZzI2NTMsaW50
IGFyZzI2NTQsaW50IGFyZzI2NTUsaW50IGFyZzI2NTYsaW50IGFyZzI2NTcsaW50IGFyZzI2NTgs
aW50IGFyZzI2NTksaW50IGFyZzI2NjAsaW50IGFyZzI2NjEsaW50IGFyZzI2NjIsaW50IGFyZzI2
NjMsaW50IGFyZzI2NjQsaW50IGFyZzI2NjUsaW50IGFyZzI2NjYsaW50IGFyZzI2NjcsaW50IGFy
ZzI2NjgsaW50IGFyZzI2NjksaW50IGFyZzI2NzAsaW50IGFyZzI2NzEsaW50IGFyZzI2NzIsaW50
IGFyZzI2NzMsaW50IGFyZzI2NzQsaW50IGFyZzI2NzUsaW50IGFyZzI2NzYsaW50IGFyZzI2Nzcs
aW50IGFyZzI2NzgsaW50IGFyZzI2NzksaW50IGFyZzI2ODAsaW50IGFyZzI2ODEsaW50IGFyZzI2
ODIsaW50IGFyZzI2ODMsaW50IGFyZzI2ODQsaW50IGFyZzI2ODUsaW50IGFyZzI2ODYsaW50IGFy
ZzI2ODcsaW50IGFyZzI2ODgsaW50IGFyZzI2ODksaW50IGFyZzI2OTAsaW50IGFyZzI2OTEsaW50
IGFyZzI2OTIsaW50IGFyZzI2OTMsaW50IGFyZzI2OTQsaW50IGFyZzI2OTUsaW50IGFyZzI2OTYs
aW50IGFyZzI2OTcsaW50IGFyZzI2OTgsaW50IGFyZzI2OTksaW50IGFyZzI3MDAsaW50IGFyZzI3
MDEsaW50IGFyZzI3MDIsaW50IGFyZzI3MDMsaW50IGFyZzI3MDQsaW50IGFyZzI3MDUsaW50IGFy
ZzI3MDYsaW50IGFyZzI3MDcsaW50IGFyZzI3MDgsaW50IGFyZzI3MDksaW50IGFyZzI3MTAsaW50
IGFyZzI3MTEsaW50IGFyZzI3MTIsaW50IGFyZzI3MTMsaW50IGFyZzI3MTQsaW50IGFyZzI3MTUs
aW50IGFyZzI3MTYsaW50IGFyZzI3MTcsaW50IGFyZzI3MTgsaW50IGFyZzI3MTksaW50IGFyZzI3
MjAsaW50IGFyZzI3MjEsaW50IGFyZzI3MjIsaW50IGFyZzI3MjMsaW50IGFyZzI3MjQsaW50IGFy
ZzI3MjUsaW50IGFyZzI3MjYsaW50IGFyZzI3MjcsaW50IGFyZzI3MjgsaW50IGFyZzI3MjksaW50
IGFyZzI3MzAsaW50IGFyZzI3MzEsaW50IGFyZzI3MzIsaW50IGFyZzI3MzMsaW50IGFyZzI3MzQs
aW50IGFyZzI3MzUsaW50IGFyZzI3MzYsaW50IGFyZzI3MzcsaW50IGFyZzI3MzgsaW50IGFyZzI3
MzksaW50IGFyZzI3NDAsaW50IGFyZzI3NDEsaW50IGFyZzI3NDIsaW50IGFyZzI3NDMsaW50IGFy
ZzI3NDQsaW50IGFyZzI3NDUsaW50IGFyZzI3NDYsaW50IGFyZzI3NDcsaW50IGFyZzI3NDgsaW50
IGFyZzI3NDksaW50IGFyZzI3NTAsaW50IGFyZzI3NTEsaW50IGFyZzI3NTIsaW50IGFyZzI3NTMs
aW50IGFyZzI3NTQsaW50IGFyZzI3NTUsaW50IGFyZzI3NTYsaW50IGFyZzI3NTcsaW50IGFyZzI3
NTgsaW50IGFyZzI3NTksaW50IGFyZzI3NjAsaW50IGFyZzI3NjEsaW50IGFyZzI3NjIsaW50IGFy
ZzI3NjMsaW50IGFyZzI3NjQsaW50IGFyZzI3NjUsaW50IGFyZzI3NjYsaW50IGFyZzI3NjcsaW50
IGFyZzI3NjgsaW50IGFyZzI3NjksaW50IGFyZzI3NzAsaW50IGFyZzI3NzEsaW50IGFyZzI3NzIs
aW50IGFyZzI3NzMsaW50IGFyZzI3NzQsaW50IGFyZzI3NzUsaW50IGFyZzI3NzYsaW50IGFyZzI3
NzcsaW50IGFyZzI3NzgsaW50IGFyZzI3NzksaW50IGFyZzI3ODAsaW50IGFyZzI3ODEsaW50IGFy
ZzI3ODIsaW50IGFyZzI3ODMsaW50IGFyZzI3ODQsaW50IGFyZzI3ODUsaW50IGFyZzI3ODYsaW50
IGFyZzI3ODcsaW50IGFyZzI3ODgsaW50IGFyZzI3ODksaW50IGFyZzI3OTAsaW50IGFyZzI3OTEs
aW50IGFyZzI3OTIsaW50IGFyZzI3OTMsaW50IGFyZzI3OTQsaW50IGFyZzI3OTUsaW50IGFyZzI3
OTYsaW50IGFyZzI3OTcsaW50IGFyZzI3OTgsaW50IGFyZzI3OTksaW50IGFyZzI4MDAsaW50IGFy
ZzI4MDEsaW50IGFyZzI4MDIsaW50IGFyZzI4MDMsaW50IGFyZzI4MDQsaW50IGFyZzI4MDUsaW50
IGFyZzI4MDYsaW50IGFyZzI4MDcsaW50IGFyZzI4MDgsaW50IGFyZzI4MDksaW50IGFyZzI4MTAs
aW50IGFyZzI4MTEsaW50IGFyZzI4MTIsaW50IGFyZzI4MTMsaW50IGFyZzI4MTQsaW50IGFyZzI4
MTUsaW50IGFyZzI4MTYsaW50IGFyZzI4MTcsaW50IGFyZzI4MTgsaW50IGFyZzI4MTksaW50IGFy
ZzI4MjAsaW50IGFyZzI4MjEsaW50IGFyZzI4MjIsaW50IGFyZzI4MjMsaW50IGFyZzI4MjQsaW50
IGFyZzI4MjUsaW50IGFyZzI4MjYsaW50IGFyZzI4MjcsaW50IGFyZzI4MjgsaW50IGFyZzI4Mjks
aW50IGFyZzI4MzAsaW50IGFyZzI4MzEsaW50IGFyZzI4MzIsaW50IGFyZzI4MzMsaW50IGFyZzI4
MzQsaW50IGFyZzI4MzUsaW50IGFyZzI4MzYsaW50IGFyZzI4MzcsaW50IGFyZzI4MzgsaW50IGFy
ZzI4MzksaW50IGFyZzI4NDAsaW50IGFyZzI4NDEsaW50IGFyZzI4NDIsaW50IGFyZzI4NDMsaW50
IGFyZzI4NDQsaW50IGFyZzI4NDUsaW50IGFyZzI4NDYsaW50IGFyZzI4NDcsaW50IGFyZzI4NDgs
aW50IGFyZzI4NDksaW50IGFyZzI4NTAsaW50IGFyZzI4NTEsaW50IGFyZzI4NTIsaW50IGFyZzI4
NTMsaW50IGFyZzI4NTQsaW50IGFyZzI4NTUsaW50IGFyZzI4NTYsaW50IGFyZzI4NTcsaW50IGFy
ZzI4NTgsaW50IGFyZzI4NTksaW50IGFyZzI4NjAsaW50IGFyZzI4NjEsaW50IGFyZzI4NjIsaW50
IGFyZzI4NjMsaW50IGFyZzI4NjQsaW50IGFyZzI4NjUsaW50IGFyZzI4NjYsaW50IGFyZzI4Njcs
aW50IGFyZzI4NjgsaW50IGFyZzI4NjksaW50IGFyZzI4NzAsaW50IGFyZzI4NzEsaW50IGFyZzI4
NzIsaW50IGFyZzI4NzMsaW50IGFyZzI4NzQsaW50IGFyZzI4NzUsaW50IGFyZzI4NzYsaW50IGFy
ZzI4NzcsaW50IGFyZzI4NzgsaW50IGFyZzI4NzksaW50IGFyZzI4ODAsaW50IGFyZzI4ODEsaW50
IGFyZzI4ODIsaW50IGFyZzI4ODMsaW50IGFyZzI4ODQsaW50IGFyZzI4ODUsaW50IGFyZzI4ODYs
aW50IGFyZzI4ODcsaW50IGFyZzI4ODgsaW50IGFyZzI4ODksaW50IGFyZzI4OTAsaW50IGFyZzI4
OTEsaW50IGFyZzI4OTIsaW50IGFyZzI4OTMsaW50IGFyZzI4OTQsaW50IGFyZzI4OTUsaW50IGFy
ZzI4OTYsaW50IGFyZzI4OTcsaW50IGFyZzI4OTgsaW50IGFyZzI4OTksaW50IGFyZzI5MDAsaW50
IGFyZzI5MDEsaW50IGFyZzI5MDIsaW50IGFyZzI5MDMsaW50IGFyZzI5MDQsaW50IGFyZzI5MDUs
aW50IGFyZzI5MDYsaW50IGFyZzI5MDcsaW50IGFyZzI5MDgsaW50IGFyZzI5MDksaW50IGFyZzI5
MTAsaW50IGFyZzI5MTEsaW50IGFyZzI5MTIsaW50IGFyZzI5MTMsaW50IGFyZzI5MTQsaW50IGFy
ZzI5MTUsaW50IGFyZzI5MTYsaW50IGFyZzI5MTcsaW50IGFyZzI5MTgsaW50IGFyZzI5MTksaW50
IGFyZzI5MjAsaW50IGFyZzI5MjEsaW50IGFyZzI5MjIsaW50IGFyZzI5MjMsaW50IGFyZzI5MjQs
aW50IGFyZzI5MjUsaW50IGFyZzI5MjYsaW50IGFyZzI5MjcsaW50IGFyZzI5MjgsaW50IGFyZzI5
MjksaW50IGFyZzI5MzAsaW50IGFyZzI5MzEsaW50IGFyZzI5MzIsaW50IGFyZzI5MzMsaW50IGFy
ZzI5MzQsaW50IGFyZzI5MzUsaW50IGFyZzI5MzYsaW50IGFyZzI5MzcsaW50IGFyZzI5MzgsaW50
IGFyZzI5MzksaW50IGFyZzI5NDAsaW50IGFyZzI5NDEsaW50IGFyZzI5NDIsaW50IGFyZzI5NDMs
aW50IGFyZzI5NDQsaW50IGFyZzI5NDUsaW50IGFyZzI5NDYsaW50IGFyZzI5NDcsaW50IGFyZzI5
NDgsaW50IGFyZzI5NDksaW50IGFyZzI5NTAsaW50IGFyZzI5NTEsaW50IGFyZzI5NTIsaW50IGFy
ZzI5NTMsaW50IGFyZzI5NTQsaW50IGFyZzI5NTUsaW50IGFyZzI5NTYsaW50IGFyZzI5NTcsaW50
IGFyZzI5NTgsaW50IGFyZzI5NTksaW50IGFyZzI5NjAsaW50IGFyZzI5NjEsaW50IGFyZzI5NjIs
aW50IGFyZzI5NjMsaW50IGFyZzI5NjQsaW50IGFyZzI5NjUsaW50IGFyZzI5NjYsaW50IGFyZzI5
NjcsaW50IGFyZzI5NjgsaW50IGFyZzI5NjksaW50IGFyZzI5NzAsaW50IGFyZzI5NzEsaW50IGFy
ZzI5NzIsaW50IGFyZzI5NzMsaW50IGFyZzI5NzQsaW50IGFyZzI5NzUsaW50IGFyZzI5NzYsaW50
IGFyZzI5NzcsaW50IGFyZzI5NzgsaW50IGFyZzI5NzksaW50IGFyZzI5ODAsaW50IGFyZzI5ODEs
aW50IGFyZzI5ODIsaW50IGFyZzI5ODMsaW50IGFyZzI5ODQsaW50IGFyZzI5ODUsaW50IGFyZzI5
ODYsaW50IGFyZzI5ODcsaW50IGFyZzI5ODgsaW50IGFyZzI5ODksaW50IGFyZzI5OTAsaW50IGFy
ZzI5OTEsaW50IGFyZzI5OTIsaW50IGFyZzI5OTMsaW50IGFyZzI5OTQsaW50IGFyZzI5OTUsaW50
IGFyZzI5OTYsaW50IGFyZzI5OTcsaW50IGFyZzI5OTgsaW50IGFyZzI5OTksaW50IGFyZzMwMDAs
aW50IGFyZzMwMDEsaW50IGFyZzMwMDIsaW50IGFyZzMwMDMsaW50IGFyZzMwMDQsaW50IGFyZzMw
MDUsaW50IGFyZzMwMDYsaW50IGFyZzMwMDcsaW50IGFyZzMwMDgsaW50IGFyZzMwMDksaW50IGFy
ZzMwMTAsaW50IGFyZzMwMTEsaW50IGFyZzMwMTIsaW50IGFyZzMwMTMsaW50IGFyZzMwMTQsaW50
IGFyZzMwMTUsaW50IGFyZzMwMTYsaW50IGFyZzMwMTcsaW50IGFyZzMwMTgsaW50IGFyZzMwMTks
aW50IGFyZzMwMjAsaW50IGFyZzMwMjEsaW50IGFyZzMwMjIsaW50IGFyZzMwMjMsaW50IGFyZzMw
MjQsaW50IGFyZzMwMjUsaW50IGFyZzMwMjYsaW50IGFyZzMwMjcsaW50IGFyZzMwMjgsaW50IGFy
ZzMwMjksaW50IGFyZzMwMzAsaW50IGFyZzMwMzEsaW50IGFyZzMwMzIsaW50IGFyZzMwMzMsaW50
IGFyZzMwMzQsaW50IGFyZzMwMzUsaW50IGFyZzMwMzYsaW50IGFyZzMwMzcsaW50IGFyZzMwMzgs
aW50IGFyZzMwMzksaW50IGFyZzMwNDAsaW50IGFyZzMwNDEsaW50IGFyZzMwNDIsaW50IGFyZzMw
NDMsaW50IGFyZzMwNDQsaW50IGFyZzMwNDUsaW50IGFyZzMwNDYsaW50IGFyZzMwNDcsaW50IGFy
ZzMwNDgsaW50IGFyZzMwNDksaW50IGFyZzMwNTAsaW50IGFyZzMwNTEsaW50IGFyZzMwNTIsaW50
IGFyZzMwNTMsaW50IGFyZzMwNTQsaW50IGFyZzMwNTUsaW50IGFyZzMwNTYsaW50IGFyZzMwNTcs
aW50IGFyZzMwNTgsaW50IGFyZzMwNTksaW50IGFyZzMwNjAsaW50IGFyZzMwNjEsaW50IGFyZzMw
NjIsaW50IGFyZzMwNjMsaW50IGFyZzMwNjQsaW50IGFyZzMwNjUsaW50IGFyZzMwNjYsaW50IGFy
ZzMwNjcsaW50IGFyZzMwNjgsaW50IGFyZzMwNjksaW50IGFyZzMwNzAsaW50IGFyZzMwNzEsaW50
IGFyZzMwNzIsaW50IGFyZzMwNzMsaW50IGFyZzMwNzQsaW50IGFyZzMwNzUsaW50IGFyZzMwNzYs
aW50IGFyZzMwNzcsaW50IGFyZzMwNzgsaW50IGFyZzMwNzksaW50IGFyZzMwODAsaW50IGFyZzMw
ODEsaW50IGFyZzMwODIsaW50IGFyZzMwODMsaW50IGFyZzMwODQsaW50IGFyZzMwODUsaW50IGFy
ZzMwODYsaW50IGFyZzMwODcsaW50IGFyZzMwODgsaW50IGFyZzMwODksaW50IGFyZzMwOTAsaW50
IGFyZzMwOTEsaW50IGFyZzMwOTIsaW50IGFyZzMwOTMsaW50IGFyZzMwOTQsaW50IGFyZzMwOTUs
aW50IGFyZzMwOTYsaW50IGFyZzMwOTcsaW50IGFyZzMwOTgsaW50IGFyZzMwOTksaW50IGFyZzMx
MDAsaW50IGFyZzMxMDEsaW50IGFyZzMxMDIsaW50IGFyZzMxMDMsaW50IGFyZzMxMDQsaW50IGFy
ZzMxMDUsaW50IGFyZzMxMDYsaW50IGFyZzMxMDcsaW50IGFyZzMxMDgsaW50IGFyZzMxMDksaW50
IGFyZzMxMTAsaW50IGFyZzMxMTEsaW50IGFyZzMxMTIsaW50IGFyZzMxMTMsaW50IGFyZzMxMTQs
aW50IGFyZzMxMTUsaW50IGFyZzMxMTYsaW50IGFyZzMxMTcsaW50IGFyZzMxMTgsaW50IGFyZzMx
MTksaW50IGFyZzMxMjAsaW50IGFyZzMxMjEsaW50IGFyZzMxMjIsaW50IGFyZzMxMjMsaW50IGFy
ZzMxMjQsaW50IGFyZzMxMjUsaW50IGFyZzMxMjYsaW50IGFyZzMxMjcsaW50IGFyZzMxMjgsaW50
IGFyZzMxMjksaW50IGFyZzMxMzAsaW50IGFyZzMxMzEsaW50IGFyZzMxMzIsaW50IGFyZzMxMzMs
aW50IGFyZzMxMzQsaW50IGFyZzMxMzUsaW50IGFyZzMxMzYsaW50IGFyZzMxMzcsaW50IGFyZzMx
MzgsaW50IGFyZzMxMzksaW50IGFyZzMxNDAsaW50IGFyZzMxNDEsaW50IGFyZzMxNDIsaW50IGFy
ZzMxNDMsaW50IGFyZzMxNDQsaW50IGFyZzMxNDUsaW50IGFyZzMxNDYsaW50IGFyZzMxNDcsaW50
IGFyZzMxNDgsaW50IGFyZzMxNDksaW50IGFyZzMxNTAsaW50IGFyZzMxNTEsaW50IGFyZzMxNTIs
aW50IGFyZzMxNTMsaW50IGFyZzMxNTQsaW50IGFyZzMxNTUsaW50IGFyZzMxNTYsaW50IGFyZzMx
NTcsaW50IGFyZzMxNTgsaW50IGFyZzMxNTksaW50IGFyZzMxNjAsaW50IGFyZzMxNjEsaW50IGFy
ZzMxNjIsaW50IGFyZzMxNjMsaW50IGFyZzMxNjQsaW50IGFyZzMxNjUsaW50IGFyZzMxNjYsaW50
IGFyZzMxNjcsaW50IGFyZzMxNjgsaW50IGFyZzMxNjksaW50IGFyZzMxNzAsaW50IGFyZzMxNzEs
aW50IGFyZzMxNzIsaW50IGFyZzMxNzMsaW50IGFyZzMxNzQsaW50IGFyZzMxNzUsaW50IGFyZzMx
NzYsaW50IGFyZzMxNzcsaW50IGFyZzMxNzgsaW50IGFyZzMxNzksaW50IGFyZzMxODAsaW50IGFy
ZzMxODEsaW50IGFyZzMxODIsaW50IGFyZzMxODMsaW50IGFyZzMxODQsaW50IGFyZzMxODUsaW50
IGFyZzMxODYsaW50IGFyZzMxODcsaW50IGFyZzMxODgsaW50IGFyZzMxODksaW50IGFyZzMxOTAs
aW50IGFyZzMxOTEsaW50IGFyZzMxOTIsaW50IGFyZzMxOTMsaW50IGFyZzMxOTQsaW50IGFyZzMx
OTUsaW50IGFyZzMxOTYsaW50IGFyZzMxOTcsaW50IGFyZzMxOTgsaW50IGFyZzMxOTksaW50IGFy
ZzMyMDAsaW50IGFyZzMyMDEsaW50IGFyZzMyMDIsaW50IGFyZzMyMDMsaW50IGFyZzMyMDQsaW50
IGFyZzMyMDUsaW50IGFyZzMyMDYsaW50IGFyZzMyMDcsaW50IGFyZzMyMDgsaW50IGFyZzMyMDks
aW50IGFyZzMyMTAsaW50IGFyZzMyMTEsaW50IGFyZzMyMTIsaW50IGFyZzMyMTMsaW50IGFyZzMy
MTQsaW50IGFyZzMyMTUsaW50IGFyZzMyMTYsaW50IGFyZzMyMTcsaW50IGFyZzMyMTgsaW50IGFy
ZzMyMTksaW50IGFyZzMyMjAsaW50IGFyZzMyMjEsaW50IGFyZzMyMjIsaW50IGFyZzMyMjMsaW50
IGFyZzMyMjQsaW50IGFyZzMyMjUsaW50IGFyZzMyMjYsaW50IGFyZzMyMjcsaW50IGFyZzMyMjgs
aW50IGFyZzMyMjksaW50IGFyZzMyMzAsaW50IGFyZzMyMzEsaW50IGFyZzMyMzIsaW50IGFyZzMy
MzMsaW50IGFyZzMyMzQsaW50IGFyZzMyMzUsaW50IGFyZzMyMzYsaW50IGFyZzMyMzcsaW50IGFy
ZzMyMzgsaW50IGFyZzMyMzksaW50IGFyZzMyNDAsaW50IGFyZzMyNDEsaW50IGFyZzMyNDIsaW50
IGFyZzMyNDMsaW50IGFyZzMyNDQsaW50IGFyZzMyNDUsaW50IGFyZzMyNDYsaW50IGFyZzMyNDcs
aW50IGFyZzMyNDgsaW50IGFyZzMyNDksaW50IGFyZzMyNTAsaW50IGFyZzMyNTEsaW50IGFyZzMy
NTIsaW50IGFyZzMyNTMsaW50IGFyZzMyNTQsaW50IGFyZzMyNTUsaW50IGFyZzMyNTYsaW50IGFy
ZzMyNTcsaW50IGFyZzMyNTgsaW50IGFyZzMyNTksaW50IGFyZzMyNjAsaW50IGFyZzMyNjEsaW50
IGFyZzMyNjIsaW50IGFyZzMyNjMsaW50IGFyZzMyNjQsaW50IGFyZzMyNjUsaW50IGFyZzMyNjYs
aW50IGFyZzMyNjcsaW50IGFyZzMyNjgsaW50IGFyZzMyNjksaW50IGFyZzMyNzAsaW50IGFyZzMy
NzEsaW50IGFyZzMyNzIsaW50IGFyZzMyNzMsaW50IGFyZzMyNzQsaW50IGFyZzMyNzUsaW50IGFy
ZzMyNzYsaW50IGFyZzMyNzcsaW50IGFyZzMyNzgsaW50IGFyZzMyNzksaW50IGFyZzMyODAsaW50
IGFyZzMyODEsaW50IGFyZzMyODIsaW50IGFyZzMyODMsaW50IGFyZzMyODQsaW50IGFyZzMyODUs
aW50IGFyZzMyODYsaW50IGFyZzMyODcsaW50IGFyZzMyODgsaW50IGFyZzMyODksaW50IGFyZzMy
OTAsaW50IGFyZzMyOTEsaW50IGFyZzMyOTIsaW50IGFyZzMyOTMsaW50IGFyZzMyOTQsaW50IGFy
ZzMyOTUsaW50IGFyZzMyOTYsaW50IGFyZzMyOTcsaW50IGFyZzMyOTgsaW50IGFyZzMyOTksaW50
IGFyZzMzMDAsaW50IGFyZzMzMDEsaW50IGFyZzMzMDIsaW50IGFyZzMzMDMsaW50IGFyZzMzMDQs
aW50IGFyZzMzMDUsaW50IGFyZzMzMDYsaW50IGFyZzMzMDcsaW50IGFyZzMzMDgsaW50IGFyZzMz
MDksaW50IGFyZzMzMTAsaW50IGFyZzMzMTEsaW50IGFyZzMzMTIsaW50IGFyZzMzMTMsaW50IGFy
ZzMzMTQsaW50IGFyZzMzMTUsaW50IGFyZzMzMTYsaW50IGFyZzMzMTcsaW50IGFyZzMzMTgsaW50
IGFyZzMzMTksaW50IGFyZzMzMjAsaW50IGFyZzMzMjEsaW50IGFyZzMzMjIsaW50IGFyZzMzMjMs
aW50IGFyZzMzMjQsaW50IGFyZzMzMjUsaW50IGFyZzMzMjYsaW50IGFyZzMzMjcsaW50IGFyZzMz
MjgsaW50IGFyZzMzMjksaW50IGFyZzMzMzAsaW50IGFyZzMzMzEsaW50IGFyZzMzMzIsaW50IGFy
ZzMzMzMsaW50IGFyZzMzMzQsaW50IGFyZzMzMzUsaW50IGFyZzMzMzYsaW50IGFyZzMzMzcsaW50
IGFyZzMzMzgsaW50IGFyZzMzMzksaW50IGFyZzMzNDAsaW50IGFyZzMzNDEsaW50IGFyZzMzNDIs
aW50IGFyZzMzNDMsaW50IGFyZzMzNDQsaW50IGFyZzMzNDUsaW50IGFyZzMzNDYsaW50IGFyZzMz
NDcsaW50IGFyZzMzNDgsaW50IGFyZzMzNDksaW50IGFyZzMzNTAsaW50IGFyZzMzNTEsaW50IGFy
ZzMzNTIsaW50IGFyZzMzNTMsaW50IGFyZzMzNTQsaW50IGFyZzMzNTUsaW50IGFyZzMzNTYsaW50
IGFyZzMzNTcsaW50IGFyZzMzNTgsaW50IGFyZzMzNTksaW50IGFyZzMzNjAsaW50IGFyZzMzNjEs
aW50IGFyZzMzNjIsaW50IGFyZzMzNjMsaW50IGFyZzMzNjQsaW50IGFyZzMzNjUsaW50IGFyZzMz
NjYsaW50IGFyZzMzNjcsaW50IGFyZzMzNjgsaW50IGFyZzMzNjksaW50IGFyZzMzNzAsaW50IGFy
ZzMzNzEsaW50IGFyZzMzNzIsaW50IGFyZzMzNzMsaW50IGFyZzMzNzQsaW50IGFyZzMzNzUsaW50
IGFyZzMzNzYsaW50IGFyZzMzNzcsaW50IGFyZzMzNzgsaW50IGFyZzMzNzksaW50IGFyZzMzODAs
aW50IGFyZzMzODEsaW50IGFyZzMzODIsaW50IGFyZzMzODMsaW50IGFyZzMzODQsaW50IGFyZzMz
ODUsaW50IGFyZzMzODYsaW50IGFyZzMzODcsaW50IGFyZzMzODgsaW50IGFyZzMzODksaW50IGFy
ZzMzOTAsaW50IGFyZzMzOTEsaW50IGFyZzMzOTIsaW50IGFyZzMzOTMsaW50IGFyZzMzOTQsaW50
IGFyZzMzOTUsaW50IGFyZzMzOTYsaW50IGFyZzMzOTcsaW50IGFyZzMzOTgsaW50IGFyZzMzOTks
aW50IGFyZzM0MDAsaW50IGFyZzM0MDEsaW50IGFyZzM0MDIsaW50IGFyZzM0MDMsaW50IGFyZzM0
MDQsaW50IGFyZzM0MDUsaW50IGFyZzM0MDYsaW50IGFyZzM0MDcsaW50IGFyZzM0MDgsaW50IGFy
ZzM0MDksaW50IGFyZzM0MTAsaW50IGFyZzM0MTEsaW50IGFyZzM0MTIsaW50IGFyZzM0MTMsaW50
IGFyZzM0MTQsaW50IGFyZzM0MTUsaW50IGFyZzM0MTYsaW50IGFyZzM0MTcsaW50IGFyZzM0MTgs
aW50IGFyZzM0MTksaW50IGFyZzM0MjAsaW50IGFyZzM0MjEsaW50IGFyZzM0MjIsaW50IGFyZzM0
MjMsaW50IGFyZzM0MjQsaW50IGFyZzM0MjUsaW50IGFyZzM0MjYsaW50IGFyZzM0MjcsaW50IGFy
ZzM0MjgsaW50IGFyZzM0MjksaW50IGFyZzM0MzAsaW50IGFyZzM0MzEsaW50IGFyZzM0MzIsaW50
IGFyZzM0MzMsaW50IGFyZzM0MzQsaW50IGFyZzM0MzUsaW50IGFyZzM0MzYsaW50IGFyZzM0Mzcs
aW50IGFyZzM0MzgsaW50IGFyZzM0MzksaW50IGFyZzM0NDAsaW50IGFyZzM0NDEsaW50IGFyZzM0
NDIsaW50IGFyZzM0NDMsaW50IGFyZzM0NDQsaW50IGFyZzM0NDUsaW50IGFyZzM0NDYsaW50IGFy
ZzM0NDcsaW50IGFyZzM0NDgsaW50IGFyZzM0NDksaW50IGFyZzM0NTAsaW50IGFyZzM0NTEsaW50
IGFyZzM0NTIsaW50IGFyZzM0NTMsaW50IGFyZzM0NTQsaW50IGFyZzM0NTUsaW50IGFyZzM0NTYs
aW50IGFyZzM0NTcsaW50IGFyZzM0NTgsaW50IGFyZzM0NTksaW50IGFyZzM0NjAsaW50IGFyZzM0
NjEsaW50IGFyZzM0NjIsaW50IGFyZzM0NjMsaW50IGFyZzM0NjQsaW50IGFyZzM0NjUsaW50IGFy
ZzM0NjYsaW50IGFyZzM0NjcsaW50IGFyZzM0NjgsaW50IGFyZzM0NjksaW50IGFyZzM0NzAsaW50
IGFyZzM0NzEsaW50IGFyZzM0NzIsaW50IGFyZzM0NzMsaW50IGFyZzM0NzQsaW50IGFyZzM0NzUs
aW50IGFyZzM0NzYsaW50IGFyZzM0NzcsaW50IGFyZzM0NzgsaW50IGFyZzM0NzksaW50IGFyZzM0
ODAsaW50IGFyZzM0ODEsaW50IGFyZzM0ODIsaW50IGFyZzM0ODMsaW50IGFyZzM0ODQsaW50IGFy
ZzM0ODUsaW50IGFyZzM0ODYsaW50IGFyZzM0ODcsaW50IGFyZzM0ODgsaW50IGFyZzM0ODksaW50
IGFyZzM0OTAsaW50IGFyZzM0OTEsaW50IGFyZzM0OTIsaW50IGFyZzM0OTMsaW50IGFyZzM0OTQs
aW50IGFyZzM0OTUsaW50IGFyZzM0OTYsaW50IGFyZzM0OTcsaW50IGFyZzM0OTgsaW50IGFyZzM0
OTksaW50IGFyZzM1MDAsaW50IGFyZzM1MDEsaW50IGFyZzM1MDIsaW50IGFyZzM1MDMsaW50IGFy
ZzM1MDQsaW50IGFyZzM1MDUsaW50IGFyZzM1MDYsaW50IGFyZzM1MDcsaW50IGFyZzM1MDgsaW50
IGFyZzM1MDksaW50IGFyZzM1MTAsaW50IGFyZzM1MTEsaW50IGFyZzM1MTIsaW50IGFyZzM1MTMs
aW50IGFyZzM1MTQsaW50IGFyZzM1MTUsaW50IGFyZzM1MTYsaW50IGFyZzM1MTcsaW50IGFyZzM1
MTgsaW50IGFyZzM1MTksaW50IGFyZzM1MjAsaW50IGFyZzM1MjEsaW50IGFyZzM1MjIsaW50IGFy
ZzM1MjMsaW50IGFyZzM1MjQsaW50IGFyZzM1MjUsaW50IGFyZzM1MjYsaW50IGFyZzM1MjcsaW50
IGFyZzM1MjgsaW50IGFyZzM1MjksaW50IGFyZzM1MzAsaW50IGFyZzM1MzEsaW50IGFyZzM1MzIs
aW50IGFyZzM1MzMsaW50IGFyZzM1MzQsaW50IGFyZzM1MzUsaW50IGFyZzM1MzYsaW50IGFyZzM1
MzcsaW50IGFyZzM1MzgsaW50IGFyZzM1MzksaW50IGFyZzM1NDAsaW50IGFyZzM1NDEsaW50IGFy
ZzM1NDIsaW50IGFyZzM1NDMsaW50IGFyZzM1NDQsaW50IGFyZzM1NDUsaW50IGFyZzM1NDYsaW50
IGFyZzM1NDcsaW50IGFyZzM1NDgsaW50IGFyZzM1NDksaW50IGFyZzM1NTAsaW50IGFyZzM1NTEs
aW50IGFyZzM1NTIsaW50IGFyZzM1NTMsaW50IGFyZzM1NTQsaW50IGFyZzM1NTUsaW50IGFyZzM1
NTYsaW50IGFyZzM1NTcsaW50IGFyZzM1NTgsaW50IGFyZzM1NTksaW50IGFyZzM1NjAsaW50IGFy
ZzM1NjEsaW50IGFyZzM1NjIsaW50IGFyZzM1NjMsaW50IGFyZzM1NjQsaW50IGFyZzM1NjUsaW50
IGFyZzM1NjYsaW50IGFyZzM1NjcsaW50IGFyZzM1NjgsaW50IGFyZzM1NjksaW50IGFyZzM1NzAs
aW50IGFyZzM1NzEsaW50IGFyZzM1NzIsaW50IGFyZzM1NzMsaW50IGFyZzM1NzQsaW50IGFyZzM1
NzUsaW50IGFyZzM1NzYsaW50IGFyZzM1NzcsaW50IGFyZzM1NzgsaW50IGFyZzM1NzksaW50IGFy
ZzM1ODAsaW50IGFyZzM1ODEsaW50IGFyZzM1ODIsaW50IGFyZzM1ODMsaW50IGFyZzM1ODQsaW50
IGFyZzM1ODUsaW50IGFyZzM1ODYsaW50IGFyZzM1ODcsaW50IGFyZzM1ODgsaW50IGFyZzM1ODks
aW50IGFyZzM1OTAsaW50IGFyZzM1OTEsaW50IGFyZzM1OTIsaW50IGFyZzM1OTMsaW50IGFyZzM1
OTQsaW50IGFyZzM1OTUsaW50IGFyZzM1OTYsaW50IGFyZzM1OTcsaW50IGFyZzM1OTgsaW50IGFy
ZzM1OTksaW50IGFyZzM2MDAsaW50IGFyZzM2MDEsaW50IGFyZzM2MDIsaW50IGFyZzM2MDMsaW50
IGFyZzM2MDQsaW50IGFyZzM2MDUsaW50IGFyZzM2MDYsaW50IGFyZzM2MDcsaW50IGFyZzM2MDgs
aW50IGFyZzM2MDksaW50IGFyZzM2MTAsaW50IGFyZzM2MTEsaW50IGFyZzM2MTIsaW50IGFyZzM2
MTMsaW50IGFyZzM2MTQsaW50IGFyZzM2MTUsaW50IGFyZzM2MTYsaW50IGFyZzM2MTcsaW50IGFy
ZzM2MTgsaW50IGFyZzM2MTksaW50IGFyZzM2MjAsaW50IGFyZzM2MjEsaW50IGFyZzM2MjIsaW50
IGFyZzM2MjMsaW50IGFyZzM2MjQsaW50IGFyZzM2MjUsaW50IGFyZzM2MjYsaW50IGFyZzM2Mjcs
aW50IGFyZzM2MjgsaW50IGFyZzM2MjksaW50IGFyZzM2MzAsaW50IGFyZzM2MzEsaW50IGFyZzM2
MzIsaW50IGFyZzM2MzMsaW50IGFyZzM2MzQsaW50IGFyZzM2MzUsaW50IGFyZzM2MzYsaW50IGFy
ZzM2MzcsaW50IGFyZzM2MzgsaW50IGFyZzM2MzksaW50IGFyZzM2NDAsaW50IGFyZzM2NDEsaW50
IGFyZzM2NDIsaW50IGFyZzM2NDMsaW50IGFyZzM2NDQsaW50IGFyZzM2NDUsaW50IGFyZzM2NDYs
aW50IGFyZzM2NDcsaW50IGFyZzM2NDgsaW50IGFyZzM2NDksaW50IGFyZzM2NTAsaW50IGFyZzM2
NTEsaW50IGFyZzM2NTIsaW50IGFyZzM2NTMsaW50IGFyZzM2NTQsaW50IGFyZzM2NTUsaW50IGFy
ZzM2NTYsaW50IGFyZzM2NTcsaW50IGFyZzM2NTgsaW50IGFyZzM2NTksaW50IGFyZzM2NjAsaW50
IGFyZzM2NjEsaW50IGFyZzM2NjIsaW50IGFyZzM2NjMsaW50IGFyZzM2NjQsaW50IGFyZzM2NjUs
aW50IGFyZzM2NjYsaW50IGFyZzM2NjcsaW50IGFyZzM2NjgsaW50IGFyZzM2NjksaW50IGFyZzM2
NzAsaW50IGFyZzM2NzEsaW50IGFyZzM2NzIsaW50IGFyZzM2NzMsaW50IGFyZzM2NzQsaW50IGFy
ZzM2NzUsaW50IGFyZzM2NzYsaW50IGFyZzM2NzcsaW50IGFyZzM2NzgsaW50IGFyZzM2NzksaW50
IGFyZzM2ODAsaW50IGFyZzM2ODEsaW50IGFyZzM2ODIsaW50IGFyZzM2ODMsaW50IGFyZzM2ODQs
aW50IGFyZzM2ODUsaW50IGFyZzM2ODYsaW50IGFyZzM2ODcsaW50IGFyZzM2ODgsaW50IGFyZzM2
ODksaW50IGFyZzM2OTAsaW50IGFyZzM2OTEsaW50IGFyZzM2OTIsaW50IGFyZzM2OTMsaW50IGFy
ZzM2OTQsaW50IGFyZzM2OTUsaW50IGFyZzM2OTYsaW50IGFyZzM2OTcsaW50IGFyZzM2OTgsaW50
IGFyZzM2OTksaW50IGFyZzM3MDAsaW50IGFyZzM3MDEsaW50IGFyZzM3MDIsaW50IGFyZzM3MDMs
aW50IGFyZzM3MDQsaW50IGFyZzM3MDUsaW50IGFyZzM3MDYsaW50IGFyZzM3MDcsaW50IGFyZzM3
MDgsaW50IGFyZzM3MDksaW50IGFyZzM3MTAsaW50IGFyZzM3MTEsaW50IGFyZzM3MTIsaW50IGFy
ZzM3MTMsaW50IGFyZzM3MTQsaW50IGFyZzM3MTUsaW50IGFyZzM3MTYsaW50IGFyZzM3MTcsaW50
IGFyZzM3MTgsaW50IGFyZzM3MTksaW50IGFyZzM3MjAsaW50IGFyZzM3MjEsaW50IGFyZzM3MjIs
aW50IGFyZzM3MjMsaW50IGFyZzM3MjQsaW50IGFyZzM3MjUsaW50IGFyZzM3MjYsaW50IGFyZzM3
MjcsaW50IGFyZzM3MjgsaW50IGFyZzM3MjksaW50IGFyZzM3MzAsaW50IGFyZzM3MzEsaW50IGFy
ZzM3MzIsaW50IGFyZzM3MzMsaW50IGFyZzM3MzQsaW50IGFyZzM3MzUsaW50IGFyZzM3MzYsaW50
IGFyZzM3MzcsaW50IGFyZzM3MzgsaW50IGFyZzM3MzksaW50IGFyZzM3NDAsaW50IGFyZzM3NDEs
aW50IGFyZzM3NDIsaW50IGFyZzM3NDMsaW50IGFyZzM3NDQsaW50IGFyZzM3NDUsaW50IGFyZzM3
NDYsaW50IGFyZzM3NDcsaW50IGFyZzM3NDgsaW50IGFyZzM3NDksaW50IGFyZzM3NTAsaW50IGFy
ZzM3NTEsaW50IGFyZzM3NTIsaW50IGFyZzM3NTMsaW50IGFyZzM3NTQsaW50IGFyZzM3NTUsaW50
IGFyZzM3NTYsaW50IGFyZzM3NTcsaW50IGFyZzM3NTgsaW50IGFyZzM3NTksaW50IGFyZzM3NjAs
aW50IGFyZzM3NjEsaW50IGFyZzM3NjIsaW50IGFyZzM3NjMsaW50IGFyZzM3NjQsaW50IGFyZzM3
NjUsaW50IGFyZzM3NjYsaW50IGFyZzM3NjcsaW50IGFyZzM3NjgsaW50IGFyZzM3NjksaW50IGFy
ZzM3NzAsaW50IGFyZzM3NzEsaW50IGFyZzM3NzIsaW50IGFyZzM3NzMsaW50IGFyZzM3NzQsaW50
IGFyZzM3NzUsaW50IGFyZzM3NzYsaW50IGFyZzM3NzcsaW50IGFyZzM3NzgsaW50IGFyZzM3Nzks
aW50IGFyZzM3ODAsaW50IGFyZzM3ODEsaW50IGFyZzM3ODIsaW50IGFyZzM3ODMsaW50IGFyZzM3
ODQsaW50IGFyZzM3ODUsaW50IGFyZzM3ODYsaW50IGFyZzM3ODcsaW50IGFyZzM3ODgsaW50IGFy
ZzM3ODksaW50IGFyZzM3OTAsaW50IGFyZzM3OTEsaW50IGFyZzM3OTIsaW50IGFyZzM3OTMsaW50
IGFyZzM3OTQsaW50IGFyZzM3OTUsaW50IGFyZzM3OTYsaW50IGFyZzM3OTcsaW50IGFyZzM3OTgs
aW50IGFyZzM3OTksaW50IGFyZzM4MDAsaW50IGFyZzM4MDEsaW50IGFyZzM4MDIsaW50IGFyZzM4
MDMsaW50IGFyZzM4MDQsaW50IGFyZzM4MDUsaW50IGFyZzM4MDYsaW50IGFyZzM4MDcsaW50IGFy
ZzM4MDgsaW50IGFyZzM4MDksaW50IGFyZzM4MTAsaW50IGFyZzM4MTEsaW50IGFyZzM4MTIsaW50
IGFyZzM4MTMsaW50IGFyZzM4MTQsaW50IGFyZzM4MTUsaW50IGFyZzM4MTYsaW50IGFyZzM4MTcs
aW50IGFyZzM4MTgsaW50IGFyZzM4MTksaW50IGFyZzM4MjAsaW50IGFyZzM4MjEsaW50IGFyZzM4
MjIsaW50IGFyZzM4MjMsaW50IGFyZzM4MjQsaW50IGFyZzM4MjUsaW50IGFyZzM4MjYsaW50IGFy
ZzM4MjcsaW50IGFyZzM4MjgsaW50IGFyZzM4MjksaW50IGFyZzM4MzAsaW50IGFyZzM4MzEsaW50
IGFyZzM4MzIsaW50IGFyZzM4MzMsaW50IGFyZzM4MzQsaW50IGFyZzM4MzUsaW50IGFyZzM4MzYs
aW50IGFyZzM4MzcsaW50IGFyZzM4MzgsaW50IGFyZzM4MzksaW50IGFyZzM4NDAsaW50IGFyZzM4
NDEsaW50IGFyZzM4NDIsaW50IGFyZzM4NDMsaW50IGFyZzM4NDQsaW50IGFyZzM4NDUsaW50IGFy
ZzM4NDYsaW50IGFyZzM4NDcsaW50IGFyZzM4NDgsaW50IGFyZzM4NDksaW50IGFyZzM4NTAsaW50
IGFyZzM4NTEsaW50IGFyZzM4NTIsaW50IGFyZzM4NTMsaW50IGFyZzM4NTQsaW50IGFyZzM4NTUs
aW50IGFyZzM4NTYsaW50IGFyZzM4NTcsaW50IGFyZzM4NTgsaW50IGFyZzM4NTksaW50IGFyZzM4
NjAsaW50IGFyZzM4NjEsaW50IGFyZzM4NjIsaW50IGFyZzM4NjMsaW50IGFyZzM4NjQsaW50IGFy
ZzM4NjUsaW50IGFyZzM4NjYsaW50IGFyZzM4NjcsaW50IGFyZzM4NjgsaW50IGFyZzM4NjksaW50
IGFyZzM4NzAsaW50IGFyZzM4NzEsaW50IGFyZzM4NzIsaW50IGFyZzM4NzMsaW50IGFyZzM4NzQs
aW50IGFyZzM4NzUsaW50IGFyZzM4NzYsaW50IGFyZzM4NzcsaW50IGFyZzM4NzgsaW50IGFyZzM4
NzksaW50IGFyZzM4ODAsaW50IGFyZzM4ODEsaW50IGFyZzM4ODIsaW50IGFyZzM4ODMsaW50IGFy
ZzM4ODQsaW50IGFyZzM4ODUsaW50IGFyZzM4ODYsaW50IGFyZzM4ODcsaW50IGFyZzM4ODgsaW50
IGFyZzM4ODksaW50IGFyZzM4OTAsaW50IGFyZzM4OTEsaW50IGFyZzM4OTIsaW50IGFyZzM4OTMs
aW50IGFyZzM4OTQsaW50IGFyZzM4OTUsaW50IGFyZzM4OTYsaW50IGFyZzM4OTcsaW50IGFyZzM4
OTgsaW50IGFyZzM4OTksaW50IGFyZzM5MDAsaW50IGFyZzM5MDEsaW50IGFyZzM5MDIsaW50IGFy
ZzM5MDMsaW50IGFyZzM5MDQsaW50IGFyZzM5MDUsaW50IGFyZzM5MDYsaW50IGFyZzM5MDcsaW50
IGFyZzM5MDgsaW50IGFyZzM5MDksaW50IGFyZzM5MTAsaW50IGFyZzM5MTEsaW50IGFyZzM5MTIs
aW50IGFyZzM5MTMsaW50IGFyZzM5MTQsaW50IGFyZzM5MTUsaW50IGFyZzM5MTYsaW50IGFyZzM5
MTcsaW50IGFyZzM5MTgsaW50IGFyZzM5MTksaW50IGFyZzM5MjAsaW50IGFyZzM5MjEsaW50IGFy
ZzM5MjIsaW50IGFyZzM5MjMsaW50IGFyZzM5MjQsaW50IGFyZzM5MjUsaW50IGFyZzM5MjYsaW50
IGFyZzM5MjcsaW50IGFyZzM5MjgsaW50IGFyZzM5MjksaW50IGFyZzM5MzAsaW50IGFyZzM5MzEs
aW50IGFyZzM5MzIsaW50IGFyZzM5MzMsaW50IGFyZzM5MzQsaW50IGFyZzM5MzUsaW50IGFyZzM5
MzYsaW50IGFyZzM5MzcsaW50IGFyZzM5MzgsaW50IGFyZzM5MzksaW50IGFyZzM5NDAsaW50IGFy
ZzM5NDEsaW50IGFyZzM5NDIsaW50IGFyZzM5NDMsaW50IGFyZzM5NDQsaW50IGFyZzM5NDUsaW50
IGFyZzM5NDYsaW50IGFyZzM5NDcsaW50IGFyZzM5NDgsaW50IGFyZzM5NDksaW50IGFyZzM5NTAs
aW50IGFyZzM5NTEsaW50IGFyZzM5NTIsaW50IGFyZzM5NTMsaW50IGFyZzM5NTQsaW50IGFyZzM5
NTUsaW50IGFyZzM5NTYsaW50IGFyZzM5NTcsaW50IGFyZzM5NTgsaW50IGFyZzM5NTksaW50IGFy
ZzM5NjAsaW50IGFyZzM5NjEsaW50IGFyZzM5NjIsaW50IGFyZzM5NjMsaW50IGFyZzM5NjQsaW50
IGFyZzM5NjUsaW50IGFyZzM5NjYsaW50IGFyZzM5NjcsaW50IGFyZzM5NjgsaW50IGFyZzM5Njks
aW50IGFyZzM5NzAsaW50IGFyZzM5NzEsaW50IGFyZzM5NzIsaW50IGFyZzM5NzMsaW50IGFyZzM5
NzQsaW50IGFyZzM5NzUsaW50IGFyZzM5NzYsaW50IGFyZzM5NzcsaW50IGFyZzM5NzgsaW50IGFy
ZzM5NzksaW50IGFyZzM5ODAsaW50IGFyZzM5ODEsaW50IGFyZzM5ODIsaW50IGFyZzM5ODMsaW50
IGFyZzM5ODQsaW50IGFyZzM5ODUsaW50IGFyZzM5ODYsaW50IGFyZzM5ODcsaW50IGFyZzM5ODgs
aW50IGFyZzM5ODksaW50IGFyZzM5OTAsaW50IGFyZzM5OTEsaW50IGFyZzM5OTIsaW50IGFyZzM5
OTMsaW50IGFyZzM5OTQsaW50IGFyZzM5OTUsaW50IGFyZzM5OTYsaW50IGFyZzM5OTcsaW50IGFy
ZzM5OTgsaW50IGFyZzM5OTksaW50IGFyZzQwMDAsaW50IGFyZzQwMDEsaW50IGFyZzQwMDIsaW50
IGFyZzQwMDMsaW50IGFyZzQwMDQsaW50IGFyZzQwMDUsaW50IGFyZzQwMDYsaW50IGFyZzQwMDcs
aW50IGFyZzQwMDgsaW50IGFyZzQwMDksaW50IGFyZzQwMTAsaW50IGFyZzQwMTEsaW50IGFyZzQw
MTIsaW50IGFyZzQwMTMsaW50IGFyZzQwMTQsaW50IGFyZzQwMTUsaW50IGFyZzQwMTYsaW50IGFy
ZzQwMTcsaW50IGFyZzQwMTgsaW50IGFyZzQwMTksaW50IGFyZzQwMjAsaW50IGFyZzQwMjEsaW50
IGFyZzQwMjIsaW50IGFyZzQwMjMsaW50IGFyZzQwMjQsaW50IGFyZzQwMjUsaW50IGFyZzQwMjYs
aW50IGFyZzQwMjcsaW50IGFyZzQwMjgsaW50IGFyZzQwMjksaW50IGFyZzQwMzAsaW50IGFyZzQw
MzEsaW50IGFyZzQwMzIsaW50IGFyZzQwMzMsaW50IGFyZzQwMzQsaW50IGFyZzQwMzUsaW50IGFy
ZzQwMzYsaW50IGFyZzQwMzcsaW50IGFyZzQwMzgsaW50IGFyZzQwMzksaW50IGFyZzQwNDAsaW50
IGFyZzQwNDEsaW50IGFyZzQwNDIsaW50IGFyZzQwNDMsaW50IGFyZzQwNDQsaW50IGFyZzQwNDUs
aW50IGFyZzQwNDYsaW50IGFyZzQwNDcsaW50IGFyZzQwNDgsaW50IGFyZzQwNDksaW50IGFyZzQw
NTAsaW50IGFyZzQwNTEsaW50IGFyZzQwNTIsaW50IGFyZzQwNTMsaW50IGFyZzQwNTQsaW50IGFy
ZzQwNTUsaW50IGFyZzQwNTYsaW50IGFyZzQwNTcsaW50IGFyZzQwNTgsaW50IGFyZzQwNTksaW50
IGFyZzQwNjAsaW50IGFyZzQwNjEsaW50IGFyZzQwNjIsaW50IGFyZzQwNjMsaW50IGFyZzQwNjQs
aW50IGFyZzQwNjUsaW50IGFyZzQwNjYsaW50IGFyZzQwNjcsaW50IGFyZzQwNjgsaW50IGFyZzQw
NjksaW50IGFyZzQwNzAsaW50IGFyZzQwNzEsaW50IGFyZzQwNzIsaW50IGFyZzQwNzMsaW50IGFy
ZzQwNzQsaW50IGFyZzQwNzUsaW50IGFyZzQwNzYsaW50IGFyZzQwNzcsaW50IGFyZzQwNzgsaW50
IGFyZzQwNzksaW50IGFyZzQwODAsaW50IGFyZzQwODEsaW50IGFyZzQwODIsaW50IGFyZzQwODMs
aW50IGFyZzQwODQsaW50IGFyZzQwODUsaW50IGFyZzQwODYsaW50IGFyZzQwODcsaW50IGFyZzQw
ODgsaW50IGFyZzQwODksaW50IGFyZzQwOTAsaW50IGFyZzQwOTEsaW50IGFyZzQwOTIsaW50IGFy
ZzQwOTMsaW50IGFyZzQwOTQsaW50IGFyZzQwOTUsaW50IGFyZzQwOTYsaW50IGFyZzQwOTcsaW50
IGFyZzQwOTgsaW50IGFyZzQwOTksaW50IGFyZzQxMDAsaW50IGFyZzQxMDEsaW50IGFyZzQxMDIs
aW50IGFyZzQxMDMsaW50IGFyZzQxMDQsaW50IGFyZzQxMDUsaW50IGFyZzQxMDYsaW50IGFyZzQx
MDcsaW50IGFyZzQxMDgsaW50IGFyZzQxMDksaW50IGFyZzQxMTAsaW50IGFyZzQxMTEsaW50IGFy
ZzQxMTIsaW50IGFyZzQxMTMsaW50IGFyZzQxMTQsaW50IGFyZzQxMTUsaW50IGFyZzQxMTYsaW50
IGFyZzQxMTcsaW50IGFyZzQxMTgsaW50IGFyZzQxMTksaW50IGFyZzQxMjAsaW50IGFyZzQxMjEs
aW50IGFyZzQxMjIsaW50IGFyZzQxMjMsaW50IGFyZzQxMjQsaW50IGFyZzQxMjUsaW50IGFyZzQx
MjYsaW50IGFyZzQxMjcsaW50IGFyZzQxMjgsaW50IGFyZzQxMjksaW50IGFyZzQxMzAsaW50IGFy
ZzQxMzEsaW50IGFyZzQxMzIsaW50IGFyZzQxMzMsaW50IGFyZzQxMzQsaW50IGFyZzQxMzUsaW50
IGFyZzQxMzYsaW50IGFyZzQxMzcsaW50IGFyZzQxMzgsaW50IGFyZzQxMzksaW50IGFyZzQxNDAs
aW50IGFyZzQxNDEsaW50IGFyZzQxNDIsaW50IGFyZzQxNDMsaW50IGFyZzQxNDQsaW50IGFyZzQx
NDUsaW50IGFyZzQxNDYsaW50IGFyZzQxNDcsaW50IGFyZzQxNDgsaW50IGFyZzQxNDksaW50IGFy
ZzQxNTAsaW50IGFyZzQxNTEsaW50IGFyZzQxNTIsaW50IGFyZzQxNTMsaW50IGFyZzQxNTQsaW50
IGFyZzQxNTUsaW50IGFyZzQxNTYsaW50IGFyZzQxNTcsaW50IGFyZzQxNTgsaW50IGFyZzQxNTks
aW50IGFyZzQxNjAsaW50IGFyZzQxNjEsaW50IGFyZzQxNjIsaW50IGFyZzQxNjMsaW50IGFyZzQx
NjQsaW50IGFyZzQxNjUsaW50IGFyZzQxNjYsaW50IGFyZzQxNjcsaW50IGFyZzQxNjgsaW50IGFy
ZzQxNjksaW50IGFyZzQxNzAsaW50IGFyZzQxNzEsaW50IGFyZzQxNzIsaW50IGFyZzQxNzMsaW50
IGFyZzQxNzQsaW50IGFyZzQxNzUsaW50IGFyZzQxNzYsaW50IGFyZzQxNzcsaW50IGFyZzQxNzgs
aW50IGFyZzQxNzksaW50IGFyZzQxODAsaW50IGFyZzQxODEsaW50IGFyZzQxODIsaW50IGFyZzQx
ODMsaW50IGFyZzQxODQsaW50IGFyZzQxODUsaW50IGFyZzQxODYsaW50IGFyZzQxODcsaW50IGFy
ZzQxODgsaW50IGFyZzQxODksaW50IGFyZzQxOTAsaW50IGFyZzQxOTEsaW50IGFyZzQxOTIsaW50
IGFyZzQxOTMsaW50IGFyZzQxOTQsaW50IGFyZzQxOTUsaW50IGFyZzQxOTYsaW50IGFyZzQxOTcs
aW50IGFyZzQxOTgsaW50IGFyZzQxOTksaW50IGFyZzQyMDAsaW50IGFyZzQyMDEsaW50IGFyZzQy
MDIsaW50IGFyZzQyMDMsaW50IGFyZzQyMDQsaW50IGFyZzQyMDUsaW50IGFyZzQyMDYsaW50IGFy
ZzQyMDcsaW50IGFyZzQyMDgsaW50IGFyZzQyMDksaW50IGFyZzQyMTAsaW50IGFyZzQyMTEsaW50
IGFyZzQyMTIsaW50IGFyZzQyMTMsaW50IGFyZzQyMTQsaW50IGFyZzQyMTUsaW50IGFyZzQyMTYs
aW50IGFyZzQyMTcsaW50IGFyZzQyMTgsaW50IGFyZzQyMTksaW50IGFyZzQyMjAsaW50IGFyZzQy
MjEsaW50IGFyZzQyMjIsaW50IGFyZzQyMjMsaW50IGFyZzQyMjQsaW50IGFyZzQyMjUsaW50IGFy
ZzQyMjYsaW50IGFyZzQyMjcsaW50IGFyZzQyMjgsaW50IGFyZzQyMjksaW50IGFyZzQyMzAsaW50
IGFyZzQyMzEsaW50IGFyZzQyMzIsaW50IGFyZzQyMzMsaW50IGFyZzQyMzQsaW50IGFyZzQyMzUs
aW50IGFyZzQyMzYsaW50IGFyZzQyMzcsaW50IGFyZzQyMzgsaW50IGFyZzQyMzksaW50IGFyZzQy
NDAsaW50IGFyZzQyNDEsaW50IGFyZzQyNDIsaW50IGFyZzQyNDMsaW50IGFyZzQyNDQsaW50IGFy
ZzQyNDUsaW50IGFyZzQyNDYsaW50IGFyZzQyNDcsaW50IGFyZzQyNDgsaW50IGFyZzQyNDksaW50
IGFyZzQyNTAsaW50IGFyZzQyNTEsaW50IGFyZzQyNTIsaW50IGFyZzQyNTMsaW50IGFyZzQyNTQs
aW50IGFyZzQyNTUsaW50IGFyZzQyNTYsaW50IGFyZzQyNTcsaW50IGFyZzQyNTgsaW50IGFyZzQy
NTksaW50IGFyZzQyNjAsaW50IGFyZzQyNjEsaW50IGFyZzQyNjIsaW50IGFyZzQyNjMsaW50IGFy
ZzQyNjQsaW50IGFyZzQyNjUsaW50IGFyZzQyNjYsaW50IGFyZzQyNjcsaW50IGFyZzQyNjgsaW50
IGFyZzQyNjksaW50IGFyZzQyNzAsaW50IGFyZzQyNzEsaW50IGFyZzQyNzIsaW50IGFyZzQyNzMs
aW50IGFyZzQyNzQsaW50IGFyZzQyNzUsaW50IGFyZzQyNzYsaW50IGFyZzQyNzcsaW50IGFyZzQy
NzgsaW50IGFyZzQyNzksaW50IGFyZzQyODAsaW50IGFyZzQyODEsaW50IGFyZzQyODIsaW50IGFy
ZzQyODMsaW50IGFyZzQyODQsaW50IGFyZzQyODUsaW50IGFyZzQyODYsaW50IGFyZzQyODcsaW50
IGFyZzQyODgsaW50IGFyZzQyODksaW50IGFyZzQyOTAsaW50IGFyZzQyOTEsaW50IGFyZzQyOTIs
aW50IGFyZzQyOTMsaW50IGFyZzQyOTQsaW50IGFyZzQyOTUsaW50IGFyZzQyOTYsaW50IGFyZzQy
OTcsaW50IGFyZzQyOTgsaW50IGFyZzQyOTksaW50IGFyZzQzMDAsaW50IGFyZzQzMDEsaW50IGFy
ZzQzMDIsaW50IGFyZzQzMDMsaW50IGFyZzQzMDQsaW50IGFyZzQzMDUsaW50IGFyZzQzMDYsaW50
IGFyZzQzMDcsaW50IGFyZzQzMDgsaW50IGFyZzQzMDksaW50IGFyZzQzMTAsaW50IGFyZzQzMTEs
aW50IGFyZzQzMTIsaW50IGFyZzQzMTMsaW50IGFyZzQzMTQsaW50IGFyZzQzMTUsaW50IGFyZzQz
MTYsaW50IGFyZzQzMTcsaW50IGFyZzQzMTgsaW50IGFyZzQzMTksaW50IGFyZzQzMjAsaW50IGFy
ZzQzMjEsaW50IGFyZzQzMjIsaW50IGFyZzQzMjMsaW50IGFyZzQzMjQsaW50IGFyZzQzMjUsaW50
IGFyZzQzMjYsaW50IGFyZzQzMjcsaW50IGFyZzQzMjgsaW50IGFyZzQzMjksaW50IGFyZzQzMzAs
aW50IGFyZzQzMzEsaW50IGFyZzQzMzIsaW50IGFyZzQzMzMsaW50IGFyZzQzMzQsaW50IGFyZzQz
MzUsaW50IGFyZzQzMzYsaW50IGFyZzQzMzcsaW50IGFyZzQzMzgsaW50IGFyZzQzMzksaW50IGFy
ZzQzNDAsaW50IGFyZzQzNDEsaW50IGFyZzQzNDIsaW50IGFyZzQzNDMsaW50IGFyZzQzNDQsaW50
IGFyZzQzNDUsaW50IGFyZzQzNDYsaW50IGFyZzQzNDcsaW50IGFyZzQzNDgsaW50IGFyZzQzNDks
aW50IGFyZzQzNTAsaW50IGFyZzQzNTEsaW50IGFyZzQzNTIsaW50IGFyZzQzNTMsaW50IGFyZzQz
NTQsaW50IGFyZzQzNTUsaW50IGFyZzQzNTYsaW50IGFyZzQzNTcsaW50IGFyZzQzNTgsaW50IGFy
ZzQzNTksaW50IGFyZzQzNjAsaW50IGFyZzQzNjEsaW50IGFyZzQzNjIsaW50IGFyZzQzNjMsaW50
IGFyZzQzNjQsaW50IGFyZzQzNjUsaW50IGFyZzQzNjYsaW50IGFyZzQzNjcsaW50IGFyZzQzNjgs
aW50IGFyZzQzNjksaW50IGFyZzQzNzAsaW50IGFyZzQzNzEsaW50IGFyZzQzNzIsaW50IGFyZzQz
NzMsaW50IGFyZzQzNzQsaW50IGFyZzQzNzUsaW50IGFyZzQzNzYsaW50IGFyZzQzNzcsaW50IGFy
ZzQzNzgsaW50IGFyZzQzNzksaW50IGFyZzQzODAsaW50IGFyZzQzODEsaW50IGFyZzQzODIsaW50
IGFyZzQzODMsaW50IGFyZzQzODQsaW50IGFyZzQzODUsaW50IGFyZzQzODYsaW50IGFyZzQzODcs
aW50IGFyZzQzODgsaW50IGFyZzQzODksaW50IGFyZzQzOTAsaW50IGFyZzQzOTEsaW50IGFyZzQz
OTIsaW50IGFyZzQzOTMsaW50IGFyZzQzOTQsaW50IGFyZzQzOTUsaW50IGFyZzQzOTYsaW50IGFy
ZzQzOTcsaW50IGFyZzQzOTgsaW50IGFyZzQzOTksaW50IGFyZzQ0MDAsaW50IGFyZzQ0MDEsaW50
IGFyZzQ0MDIsaW50IGFyZzQ0MDMsaW50IGFyZzQ0MDQsaW50IGFyZzQ0MDUsaW50IGFyZzQ0MDYs
aW50IGFyZzQ0MDcsaW50IGFyZzQ0MDgsaW50IGFyZzQ0MDksaW50IGFyZzQ0MTAsaW50IGFyZzQ0
MTEsaW50IGFyZzQ0MTIsaW50IGFyZzQ0MTMsaW50IGFyZzQ0MTQsaW50IGFyZzQ0MTUsaW50IGFy
ZzQ0MTYsaW50IGFyZzQ0MTcsaW50IGFyZzQ0MTgsaW50IGFyZzQ0MTksaW50IGFyZzQ0MjAsaW50
IGFyZzQ0MjEsaW50IGFyZzQ0MjIsaW50IGFyZzQ0MjMsaW50IGFyZzQ0MjQsaW50IGFyZzQ0MjUs
aW50IGFyZzQ0MjYsaW50IGFyZzQ0MjcsaW50IGFyZzQ0MjgsaW50IGFyZzQ0MjksaW50IGFyZzQ0
MzAsaW50IGFyZzQ0MzEsaW50IGFyZzQ0MzIsaW50IGFyZzQ0MzMsaW50IGFyZzQ0MzQsaW50IGFy
ZzQ0MzUsaW50IGFyZzQ0MzYsaW50IGFyZzQ0MzcsaW50IGFyZzQ0MzgsaW50IGFyZzQ0MzksaW50
IGFyZzQ0NDAsaW50IGFyZzQ0NDEsaW50IGFyZzQ0NDIsaW50IGFyZzQ0NDMsaW50IGFyZzQ0NDQs
aW50IGFyZzQ0NDUsaW50IGFyZzQ0NDYsaW50IGFyZzQ0NDcsaW50IGFyZzQ0NDgsaW50IGFyZzQ0
NDksaW50IGFyZzQ0NTAsaW50IGFyZzQ0NTEsaW50IGFyZzQ0NTIsaW50IGFyZzQ0NTMsaW50IGFy
ZzQ0NTQsaW50IGFyZzQ0NTUsaW50IGFyZzQ0NTYsaW50IGFyZzQ0NTcsaW50IGFyZzQ0NTgsaW50
IGFyZzQ0NTksaW50IGFyZzQ0NjAsaW50IGFyZzQ0NjEsaW50IGFyZzQ0NjIsaW50IGFyZzQ0NjMs
aW50IGFyZzQ0NjQsaW50IGFyZzQ0NjUsaW50IGFyZzQ0NjYsaW50IGFyZzQ0NjcsaW50IGFyZzQ0
NjgsaW50IGFyZzQ0NjksaW50IGFyZzQ0NzAsaW50IGFyZzQ0NzEsaW50IGFyZzQ0NzIsaW50IGFy
ZzQ0NzMsaW50IGFyZzQ0NzQsaW50IGFyZzQ0NzUsaW50IGFyZzQ0NzYsaW50IGFyZzQ0NzcsaW50
IGFyZzQ0NzgsaW50IGFyZzQ0NzksaW50IGFyZzQ0ODAsaW50IGFyZzQ0ODEsaW50IGFyZzQ0ODIs
aW50IGFyZzQ0ODMsaW50IGFyZzQ0ODQsaW50IGFyZzQ0ODUsaW50IGFyZzQ0ODYsaW50IGFyZzQ0
ODcsaW50IGFyZzQ0ODgsaW50IGFyZzQ0ODksaW50IGFyZzQ0OTAsaW50IGFyZzQ0OTEsaW50IGFy
ZzQ0OTIsaW50IGFyZzQ0OTMsaW50IGFyZzQ0OTQsaW50IGFyZzQ0OTUsaW50IGFyZzQ0OTYsaW50
IGFyZzQ0OTcsaW50IGFyZzQ0OTgsaW50IGFyZzQ0OTksaW50IGFyZzQ1MDAsaW50IGFyZzQ1MDEs
aW50IGFyZzQ1MDIsaW50IGFyZzQ1MDMsaW50IGFyZzQ1MDQsaW50IGFyZzQ1MDUsaW50IGFyZzQ1
MDYsaW50IGFyZzQ1MDcsaW50IGFyZzQ1MDgsaW50IGFyZzQ1MDksaW50IGFyZzQ1MTAsaW50IGFy
ZzQ1MTEsaW50IGFyZzQ1MTIsaW50IGFyZzQ1MTMsaW50IGFyZzQ1MTQsaW50IGFyZzQ1MTUsaW50
IGFyZzQ1MTYsaW50IGFyZzQ1MTcsaW50IGFyZzQ1MTgsaW50IGFyZzQ1MTksaW50IGFyZzQ1MjAs
aW50IGFyZzQ1MjEsaW50IGFyZzQ1MjIsaW50IGFyZzQ1MjMsaW50IGFyZzQ1MjQsaW50IGFyZzQ1
MjUsaW50IGFyZzQ1MjYsaW50IGFyZzQ1MjcsaW50IGFyZzQ1MjgsaW50IGFyZzQ1MjksaW50IGFy
ZzQ1MzAsaW50IGFyZzQ1MzEsaW50IGFyZzQ1MzIsaW50IGFyZzQ1MzMsaW50IGFyZzQ1MzQsaW50
IGFyZzQ1MzUsaW50IGFyZzQ1MzYsaW50IGFyZzQ1MzcsaW50IGFyZzQ1MzgsaW50IGFyZzQ1Mzks
aW50IGFyZzQ1NDAsaW50IGFyZzQ1NDEsaW50IGFyZzQ1NDIsaW50IGFyZzQ1NDMsaW50IGFyZzQ1
NDQsaW50IGFyZzQ1NDUsaW50IGFyZzQ1NDYsaW50IGFyZzQ1NDcsaW50IGFyZzQ1NDgsaW50IGFy
ZzQ1NDksaW50IGFyZzQ1NTAsaW50IGFyZzQ1NTEsaW50IGFyZzQ1NTIsaW50IGFyZzQ1NTMsaW50
IGFyZzQ1NTQsaW50IGFyZzQ1NTUsaW50IGFyZzQ1NTYsaW50IGFyZzQ1NTcsaW50IGFyZzQ1NTgs
aW50IGFyZzQ1NTksaW50IGFyZzQ1NjAsaW50IGFyZzQ1NjEsaW50IGFyZzQ1NjIsaW50IGFyZzQ1
NjMsaW50IGFyZzQ1NjQsaW50IGFyZzQ1NjUsaW50IGFyZzQ1NjYsaW50IGFyZzQ1NjcsaW50IGFy
ZzQ1NjgsaW50IGFyZzQ1NjksaW50IGFyZzQ1NzAsaW50IGFyZzQ1NzEsaW50IGFyZzQ1NzIsaW50
IGFyZzQ1NzMsaW50IGFyZzQ1NzQsaW50IGFyZzQ1NzUsaW50IGFyZzQ1NzYsaW50IGFyZzQ1Nzcs
aW50IGFyZzQ1NzgsaW50IGFyZzQ1NzksaW50IGFyZzQ1ODAsaW50IGFyZzQ1ODEsaW50IGFyZzQ1
ODIsaW50IGFyZzQ1ODMsaW50IGFyZzQ1ODQsaW50IGFyZzQ1ODUsaW50IGFyZzQ1ODYsaW50IGFy
ZzQ1ODcsaW50IGFyZzQ1ODgsaW50IGFyZzQ1ODksaW50IGFyZzQ1OTAsaW50IGFyZzQ1OTEsaW50
IGFyZzQ1OTIsaW50IGFyZzQ1OTMsaW50IGFyZzQ1OTQsaW50IGFyZzQ1OTUsaW50IGFyZzQ1OTYs
aW50IGFyZzQ1OTcsaW50IGFyZzQ1OTgsaW50IGFyZzQ1OTksaW50IGFyZzQ2MDAsaW50IGFyZzQ2
MDEsaW50IGFyZzQ2MDIsaW50IGFyZzQ2MDMsaW50IGFyZzQ2MDQsaW50IGFyZzQ2MDUsaW50IGFy
ZzQ2MDYsaW50IGFyZzQ2MDcsaW50IGFyZzQ2MDgsaW50IGFyZzQ2MDksaW50IGFyZzQ2MTAsaW50
IGFyZzQ2MTEsaW50IGFyZzQ2MTIsaW50IGFyZzQ2MTMsaW50IGFyZzQ2MTQsaW50IGFyZzQ2MTUs
aW50IGFyZzQ2MTYsaW50IGFyZzQ2MTcsaW50IGFyZzQ2MTgsaW50IGFyZzQ2MTksaW50IGFyZzQ2
MjAsaW50IGFyZzQ2MjEsaW50IGFyZzQ2MjIsaW50IGFyZzQ2MjMsaW50IGFyZzQ2MjQsaW50IGFy
ZzQ2MjUsaW50IGFyZzQ2MjYsaW50IGFyZzQ2MjcsaW50IGFyZzQ2MjgsaW50IGFyZzQ2MjksaW50
IGFyZzQ2MzAsaW50IGFyZzQ2MzEsaW50IGFyZzQ2MzIsaW50IGFyZzQ2MzMsaW50IGFyZzQ2MzQs
aW50IGFyZzQ2MzUsaW50IGFyZzQ2MzYsaW50IGFyZzQ2MzcsaW50IGFyZzQ2MzgsaW50IGFyZzQ2
MzksaW50IGFyZzQ2NDAsaW50IGFyZzQ2NDEsaW50IGFyZzQ2NDIsaW50IGFyZzQ2NDMsaW50IGFy
ZzQ2NDQsaW50IGFyZzQ2NDUsaW50IGFyZzQ2NDYsaW50IGFyZzQ2NDcsaW50IGFyZzQ2NDgsaW50
IGFyZzQ2NDksaW50IGFyZzQ2NTAsaW50IGFyZzQ2NTEsaW50IGFyZzQ2NTIsaW50IGFyZzQ2NTMs
aW50IGFyZzQ2NTQsaW50IGFyZzQ2NTUsaW50IGFyZzQ2NTYsaW50IGFyZzQ2NTcsaW50IGFyZzQ2
NTgsaW50IGFyZzQ2NTksaW50IGFyZzQ2NjAsaW50IGFyZzQ2NjEsaW50IGFyZzQ2NjIsaW50IGFy
ZzQ2NjMsaW50IGFyZzQ2NjQsaW50IGFyZzQ2NjUsaW50IGFyZzQ2NjYsaW50IGFyZzQ2NjcsaW50
IGFyZzQ2NjgsaW50IGFyZzQ2NjksaW50IGFyZzQ2NzAsaW50IGFyZzQ2NzEsaW50IGFyZzQ2NzIs
aW50IGFyZzQ2NzMsaW50IGFyZzQ2NzQsaW50IGFyZzQ2NzUsaW50IGFyZzQ2NzYsaW50IGFyZzQ2
NzcsaW50IGFyZzQ2NzgsaW50IGFyZzQ2NzksaW50IGFyZzQ2ODAsaW50IGFyZzQ2ODEsaW50IGFy
ZzQ2ODIsaW50IGFyZzQ2ODMsaW50IGFyZzQ2ODQsaW50IGFyZzQ2ODUsaW50IGFyZzQ2ODYsaW50
IGFyZzQ2ODcsaW50IGFyZzQ2ODgsaW50IGFyZzQ2ODksaW50IGFyZzQ2OTAsaW50IGFyZzQ2OTEs
aW50IGFyZzQ2OTIsaW50IGFyZzQ2OTMsaW50IGFyZzQ2OTQsaW50IGFyZzQ2OTUsaW50IGFyZzQ2
OTYsaW50IGFyZzQ2OTcsaW50IGFyZzQ2OTgsaW50IGFyZzQ2OTksaW50IGFyZzQ3MDAsaW50IGFy
ZzQ3MDEsaW50IGFyZzQ3MDIsaW50IGFyZzQ3MDMsaW50IGFyZzQ3MDQsaW50IGFyZzQ3MDUsaW50
IGFyZzQ3MDYsaW50IGFyZzQ3MDcsaW50IGFyZzQ3MDgsaW50IGFyZzQ3MDksaW50IGFyZzQ3MTAs
aW50IGFyZzQ3MTEsaW50IGFyZzQ3MTIsaW50IGFyZzQ3MTMsaW50IGFyZzQ3MTQsaW50IGFyZzQ3
MTUsaW50IGFyZzQ3MTYsaW50IGFyZzQ3MTcsaW50IGFyZzQ3MTgsaW50IGFyZzQ3MTksaW50IGFy
ZzQ3MjAsaW50IGFyZzQ3MjEsaW50IGFyZzQ3MjIsaW50IGFyZzQ3MjMsaW50IGFyZzQ3MjQsaW50
IGFyZzQ3MjUsaW50IGFyZzQ3MjYsaW50IGFyZzQ3MjcsaW50IGFyZzQ3MjgsaW50IGFyZzQ3Mjks
aW50IGFyZzQ3MzAsaW50IGFyZzQ3MzEsaW50IGFyZzQ3MzIsaW50IGFyZzQ3MzMsaW50IGFyZzQ3
MzQsaW50IGFyZzQ3MzUsaW50IGFyZzQ3MzYsaW50IGFyZzQ3MzcsaW50IGFyZzQ3MzgsaW50IGFy
ZzQ3MzksaW50IGFyZzQ3NDAsaW50IGFyZzQ3NDEsaW50IGFyZzQ3NDIsaW50IGFyZzQ3NDMsaW50
IGFyZzQ3NDQsaW50IGFyZzQ3NDUsaW50IGFyZzQ3NDYsaW50IGFyZzQ3NDcsaW50IGFyZzQ3NDgs
aW50IGFyZzQ3NDksaW50IGFyZzQ3NTAsaW50IGFyZzQ3NTEsaW50IGFyZzQ3NTIsaW50IGFyZzQ3
NTMsaW50IGFyZzQ3NTQsaW50IGFyZzQ3NTUsaW50IGFyZzQ3NTYsaW50IGFyZzQ3NTcsaW50IGFy
ZzQ3NTgsaW50IGFyZzQ3NTksaW50IGFyZzQ3NjAsaW50IGFyZzQ3NjEsaW50IGFyZzQ3NjIsaW50
IGFyZzQ3NjMsaW50IGFyZzQ3NjQsaW50IGFyZzQ3NjUsaW50IGFyZzQ3NjYsaW50IGFyZzQ3Njcs
aW50IGFyZzQ3NjgsaW50IGFyZzQ3NjksaW50IGFyZzQ3NzAsaW50IGFyZzQ3NzEsaW50IGFyZzQ3
NzIsaW50IGFyZzQ3NzMsaW50IGFyZzQ3NzQsaW50IGFyZzQ3NzUsaW50IGFyZzQ3NzYsaW50IGFy
ZzQ3NzcsaW50IGFyZzQ3NzgsaW50IGFyZzQ3NzksaW50IGFyZzQ3ODAsaW50IGFyZzQ3ODEsaW50
IGFyZzQ3ODIsaW50IGFyZzQ3ODMsaW50IGFyZzQ3ODQsaW50IGFyZzQ3ODUsaW50IGFyZzQ3ODYs
aW50IGFyZzQ3ODcsaW50IGFyZzQ3ODgsaW50IGFyZzQ3ODksaW50IGFyZzQ3OTAsaW50IGFyZzQ3
OTEsaW50IGFyZzQ3OTIsaW50IGFyZzQ3OTMsaW50IGFyZzQ3OTQsaW50IGFyZzQ3OTUsaW50IGFy
ZzQ3OTYsaW50IGFyZzQ3OTcsaW50IGFyZzQ3OTgsaW50IGFyZzQ3OTksaW50IGFyZzQ4MDAsaW50
IGFyZzQ4MDEsaW50IGFyZzQ4MDIsaW50IGFyZzQ4MDMsaW50IGFyZzQ4MDQsaW50IGFyZzQ4MDUs
aW50IGFyZzQ4MDYsaW50IGFyZzQ4MDcsaW50IGFyZzQ4MDgsaW50IGFyZzQ4MDksaW50IGFyZzQ4
MTAsaW50IGFyZzQ4MTEsaW50IGFyZzQ4MTIsaW50IGFyZzQ4MTMsaW50IGFyZzQ4MTQsaW50IGFy
ZzQ4MTUsaW50IGFyZzQ4MTYsaW50IGFyZzQ4MTcsaW50IGFyZzQ4MTgsaW50IGFyZzQ4MTksaW50
IGFyZzQ4MjAsaW50IGFyZzQ4MjEsaW50IGFyZzQ4MjIsaW50IGFyZzQ4MjMsaW50IGFyZzQ4MjQs
aW50IGFyZzQ4MjUsaW50IGFyZzQ4MjYsaW50IGFyZzQ4MjcsaW50IGFyZzQ4MjgsaW50IGFyZzQ4
MjksaW50IGFyZzQ4MzAsaW50IGFyZzQ4MzEsaW50IGFyZzQ4MzIsaW50IGFyZzQ4MzMsaW50IGFy
ZzQ4MzQsaW50IGFyZzQ4MzUsaW50IGFyZzQ4MzYsaW50IGFyZzQ4MzcsaW50IGFyZzQ4MzgsaW50
IGFyZzQ4MzksaW50IGFyZzQ4NDAsaW50IGFyZzQ4NDEsaW50IGFyZzQ4NDIsaW50IGFyZzQ4NDMs
aW50IGFyZzQ4NDQsaW50IGFyZzQ4NDUsaW50IGFyZzQ4NDYsaW50IGFyZzQ4NDcsaW50IGFyZzQ4
NDgsaW50IGFyZzQ4NDksaW50IGFyZzQ4NTAsaW50IGFyZzQ4NTEsaW50IGFyZzQ4NTIsaW50IGFy
ZzQ4NTMsaW50IGFyZzQ4NTQsaW50IGFyZzQ4NTUsaW50IGFyZzQ4NTYsaW50IGFyZzQ4NTcsaW50
IGFyZzQ4NTgsaW50IGFyZzQ4NTksaW50IGFyZzQ4NjAsaW50IGFyZzQ4NjEsaW50IGFyZzQ4NjIs
aW50IGFyZzQ4NjMsaW50IGFyZzQ4NjQsaW50IGFyZzQ4NjUsaW50IGFyZzQ4NjYsaW50IGFyZzQ4
NjcsaW50IGFyZzQ4NjgsaW50IGFyZzQ4NjksaW50IGFyZzQ4NzAsaW50IGFyZzQ4NzEsaW50IGFy
ZzQ4NzIsaW50IGFyZzQ4NzMsaW50IGFyZzQ4NzQsaW50IGFyZzQ4NzUsaW50IGFyZzQ4NzYsaW50
IGFyZzQ4NzcsaW50IGFyZzQ4NzgsaW50IGFyZzQ4NzksaW50IGFyZzQ4ODAsaW50IGFyZzQ4ODEs
aW50IGFyZzQ4ODIsaW50IGFyZzQ4ODMsaW50IGFyZzQ4ODQsaW50IGFyZzQ4ODUsaW50IGFyZzQ4
ODYsaW50IGFyZzQ4ODcsaW50IGFyZzQ4ODgsaW50IGFyZzQ4ODksaW50IGFyZzQ4OTAsaW50IGFy
ZzQ4OTEsaW50IGFyZzQ4OTIsaW50IGFyZzQ4OTMsaW50IGFyZzQ4OTQsaW50IGFyZzQ4OTUsaW50
IGFyZzQ4OTYsaW50IGFyZzQ4OTcsaW50IGFyZzQ4OTgsaW50IGFyZzQ4OTksaW50IGFyZzQ5MDAs
aW50IGFyZzQ5MDEsaW50IGFyZzQ5MDIsaW50IGFyZzQ5MDMsaW50IGFyZzQ5MDQsaW50IGFyZzQ5
MDUsaW50IGFyZzQ5MDYsaW50IGFyZzQ5MDcsaW50IGFyZzQ5MDgsaW50IGFyZzQ5MDksaW50IGFy
ZzQ5MTAsaW50IGFyZzQ5MTEsaW50IGFyZzQ5MTIsaW50IGFyZzQ5MTMsaW50IGFyZzQ5MTQsaW50
IGFyZzQ5MTUsaW50IGFyZzQ5MTYsaW50IGFyZzQ5MTcsaW50IGFyZzQ5MTgsaW50IGFyZzQ5MTks
aW50IGFyZzQ5MjAsaW50IGFyZzQ5MjEsaW50IGFyZzQ5MjIsaW50IGFyZzQ5MjMsaW50IGFyZzQ5
MjQsaW50IGFyZzQ5MjUsaW50IGFyZzQ5MjYsaW50IGFyZzQ5MjcsaW50IGFyZzQ5MjgsaW50IGFy
ZzQ5MjksaW50IGFyZzQ5MzAsaW50IGFyZzQ5MzEsaW50IGFyZzQ5MzIsaW50IGFyZzQ5MzMsaW50
IGFyZzQ5MzQsaW50IGFyZzQ5MzUsaW50IGFyZzQ5MzYsaW50IGFyZzQ5MzcsaW50IGFyZzQ5Mzgs
aW50IGFyZzQ5MzksaW50IGFyZzQ5NDAsaW50IGFyZzQ5NDEsaW50IGFyZzQ5NDIsaW50IGFyZzQ5
NDMsaW50IGFyZzQ5NDQsaW50IGFyZzQ5NDUsaW50IGFyZzQ5NDYsaW50IGFyZzQ5NDcsaW50IGFy
ZzQ5NDgsaW50IGFyZzQ5NDksaW50IGFyZzQ5NTAsaW50IGFyZzQ5NTEsaW50IGFyZzQ5NTIsaW50
IGFyZzQ5NTMsaW50IGFyZzQ5NTQsaW50IGFyZzQ5NTUsaW50IGFyZzQ5NTYsaW50IGFyZzQ5NTcs
aW50IGFyZzQ5NTgsaW50IGFyZzQ5NTksaW50IGFyZzQ5NjAsaW50IGFyZzQ5NjEsaW50IGFyZzQ5
NjIsaW50IGFyZzQ5NjMsaW50IGFyZzQ5NjQsaW50IGFyZzQ5NjUsaW50IGFyZzQ5NjYsaW50IGFy
ZzQ5NjcsaW50IGFyZzQ5NjgsaW50IGFyZzQ5NjksaW50IGFyZzQ5NzAsaW50IGFyZzQ5NzEsaW50
IGFyZzQ5NzIsaW50IGFyZzQ5NzMsaW50IGFyZzQ5NzQsaW50IGFyZzQ5NzUsaW50IGFyZzQ5NzYs
aW50IGFyZzQ5NzcsaW50IGFyZzQ5NzgsaW50IGFyZzQ5NzksaW50IGFyZzQ5ODAsaW50IGFyZzQ5
ODEsaW50IGFyZzQ5ODIsaW50IGFyZzQ5ODMsaW50IGFyZzQ5ODQsaW50IGFyZzQ5ODUsaW50IGFy
ZzQ5ODYsaW50IGFyZzQ5ODcsaW50IGFyZzQ5ODgsaW50IGFyZzQ5ODksaW50IGFyZzQ5OTAsaW50
IGFyZzQ5OTEsaW50IGFyZzQ5OTIsaW50IGFyZzQ5OTMsaW50IGFyZzQ5OTQsaW50IGFyZzQ5OTUs
aW50IGFyZzQ5OTYsaW50IGFyZzQ5OTcsaW50IGFyZzQ5OTgsaW50IGFyZzQ5OTkpIHsgcmV0dXJu
IGFyZzArYXJnMSthcmcyK2FyZzMrYXJnNCthcmc1K2FyZzYrYXJnNythcmc4K2FyZzkrYXJnMTAr
YXJnMTErYXJnMTIrYXJnMTMrYXJnMTQrYXJnMTUrYXJnMTYrYXJnMTcrYXJnMTgrYXJnMTkrYXJn
MjArYXJnMjErYXJnMjIrYXJnMjMrYXJnMjQrYXJnMjUrYXJnMjYrYXJnMjcrYXJnMjgrYXJnMjkr
YXJnMzArYXJnMzErYXJnMzIrYXJnMzMrYXJnMzQrYXJnMzUrYXJnMzYrYXJnMzcrYXJnMzgrYXJn
MzkrYXJnNDArYXJnNDErYXJnNDIrYXJnNDMrYXJnNDQrYXJnNDUrYXJnNDYrYXJnNDcrYXJnNDgr
YXJnNDkrYXJnNTArYXJnNTErYXJnNTIrYXJnNTMrYXJnNTQrYXJnNTUrYXJnNTYrYXJnNTcrYXJn
NTgrYXJnNTkrYXJnNjArYXJnNjErYXJnNjIrYXJnNjMrYXJnNjQrYXJnNjUrYXJnNjYrYXJnNjcr
YXJnNjgrYXJnNjkrYXJnNzArYXJnNzErYXJnNzIrYXJnNzMrYXJnNzQrYXJnNzUrYXJnNzYrYXJn
NzcrYXJnNzgrYXJnNzkrYXJnODArYXJnODErYXJnODIrYXJnODMrYXJnODQrYXJnODUrYXJnODYr
YXJnODcrYXJnODgrYXJnODkrYXJnOTArYXJnOTErYXJnOTIrYXJnOTMrYXJnOTQrYXJnOTUrYXJn
OTYrYXJnOTcrYXJnOTgrYXJnOTkrYXJnMTAwK2FyZzEwMSthcmcxMDIrYXJnMTAzK2FyZzEwNCth
cmcxMDUrYXJnMTA2K2FyZzEwNythcmcxMDgrYXJnMTA5K2FyZzExMCthcmcxMTErYXJnMTEyK2Fy
ZzExMythcmcxMTQrYXJnMTE1K2FyZzExNithcmcxMTcrYXJnMTE4K2FyZzExOSthcmcxMjArYXJn
MTIxK2FyZzEyMithcmcxMjMrYXJnMTI0K2FyZzEyNSthcmcxMjYrYXJnMTI3K2FyZzEyOCthcmcx
MjkrYXJnMTMwK2FyZzEzMSthcmcxMzIrYXJnMTMzK2FyZzEzNCthcmcxMzUrYXJnMTM2K2FyZzEz
NythcmcxMzgrYXJnMTM5K2FyZzE0MCthcmcxNDErYXJnMTQyK2FyZzE0MythcmcxNDQrYXJnMTQ1
K2FyZzE0NithcmcxNDcrYXJnMTQ4K2FyZzE0OSthcmcxNTArYXJnMTUxK2FyZzE1MithcmcxNTMr
YXJnMTU0K2FyZzE1NSthcmcxNTYrYXJnMTU3K2FyZzE1OCthcmcxNTkrYXJnMTYwK2FyZzE2MSth
cmcxNjIrYXJnMTYzK2FyZzE2NCthcmcxNjUrYXJnMTY2K2FyZzE2NythcmcxNjgrYXJnMTY5K2Fy
ZzE3MCthcmcxNzErYXJnMTcyK2FyZzE3MythcmcxNzQrYXJnMTc1K2FyZzE3NithcmcxNzcrYXJn
MTc4K2FyZzE3OSthcmcxODArYXJnMTgxK2FyZzE4MithcmcxODMrYXJnMTg0K2FyZzE4NSthcmcx
ODYrYXJnMTg3K2FyZzE4OCthcmcxODkrYXJnMTkwK2FyZzE5MSthcmcxOTIrYXJnMTkzK2FyZzE5
NCthcmcxOTUrYXJnMTk2K2FyZzE5NythcmcxOTgrYXJnMTk5K2FyZzIwMCthcmcyMDErYXJnMjAy
K2FyZzIwMythcmcyMDQrYXJnMjA1K2FyZzIwNithcmcyMDcrYXJnMjA4K2FyZzIwOSthcmcyMTAr
YXJnMjExK2FyZzIxMithcmcyMTMrYXJnMjE0K2FyZzIxNSthcmcyMTYrYXJnMjE3K2FyZzIxOCth
cmcyMTkrYXJnMjIwK2FyZzIyMSthcmcyMjIrYXJnMjIzK2FyZzIyNCthcmcyMjUrYXJnMjI2K2Fy
ZzIyNythcmcyMjgrYXJnMjI5K2FyZzIzMCthcmcyMzErYXJnMjMyK2FyZzIzMythcmcyMzQrYXJn
MjM1K2FyZzIzNithcmcyMzcrYXJnMjM4K2FyZzIzOSthcmcyNDArYXJnMjQxK2FyZzI0Mithcmcy
NDMrYXJnMjQ0K2FyZzI0NSthcmcyNDYrYXJnMjQ3K2FyZzI0OCthcmcyNDkrYXJnMjUwK2FyZzI1
MSthcmcyNTIrYXJnMjUzK2FyZzI1NCthcmcyNTUrYXJnMjU2K2FyZzI1NythcmcyNTgrYXJnMjU5
K2FyZzI2MCthcmcyNjErYXJnMjYyK2FyZzI2MythcmcyNjQrYXJnMjY1K2FyZzI2NithcmcyNjcr
YXJnMjY4K2FyZzI2OSthcmcyNzArYXJnMjcxK2FyZzI3MithcmcyNzMrYXJnMjc0K2FyZzI3NSth
cmcyNzYrYXJnMjc3K2FyZzI3OCthcmcyNzkrYXJnMjgwK2FyZzI4MSthcmcyODIrYXJnMjgzK2Fy
ZzI4NCthcmcyODUrYXJnMjg2K2FyZzI4NythcmcyODgrYXJnMjg5K2FyZzI5MCthcmcyOTErYXJn
MjkyK2FyZzI5MythcmcyOTQrYXJnMjk1K2FyZzI5NithcmcyOTcrYXJnMjk4K2FyZzI5OSthcmcz
MDArYXJnMzAxK2FyZzMwMithcmczMDMrYXJnMzA0K2FyZzMwNSthcmczMDYrYXJnMzA3K2FyZzMw
OCthcmczMDkrYXJnMzEwK2FyZzMxMSthcmczMTIrYXJnMzEzK2FyZzMxNCthcmczMTUrYXJnMzE2
K2FyZzMxNythcmczMTgrYXJnMzE5K2FyZzMyMCthcmczMjErYXJnMzIyK2FyZzMyMythcmczMjQr
YXJnMzI1K2FyZzMyNithcmczMjcrYXJnMzI4K2FyZzMyOSthcmczMzArYXJnMzMxK2FyZzMzMith
cmczMzMrYXJnMzM0K2FyZzMzNSthcmczMzYrYXJnMzM3K2FyZzMzOCthcmczMzkrYXJnMzQwK2Fy
ZzM0MSthcmczNDIrYXJnMzQzK2FyZzM0NCthcmczNDUrYXJnMzQ2K2FyZzM0NythcmczNDgrYXJn
MzQ5K2FyZzM1MCthcmczNTErYXJnMzUyK2FyZzM1MythcmczNTQrYXJnMzU1K2FyZzM1Nithcmcz
NTcrYXJnMzU4K2FyZzM1OSthcmczNjArYXJnMzYxK2FyZzM2MithcmczNjMrYXJnMzY0K2FyZzM2
NSthcmczNjYrYXJnMzY3K2FyZzM2OCthcmczNjkrYXJnMzcwK2FyZzM3MSthcmczNzIrYXJnMzcz
K2FyZzM3NCthcmczNzUrYXJnMzc2K2FyZzM3NythcmczNzgrYXJnMzc5K2FyZzM4MCthcmczODEr
YXJnMzgyK2FyZzM4MythcmczODQrYXJnMzg1K2FyZzM4NithcmczODcrYXJnMzg4K2FyZzM4OSth
cmczOTArYXJnMzkxK2FyZzM5MithcmczOTMrYXJnMzk0K2FyZzM5NSthcmczOTYrYXJnMzk3K2Fy
ZzM5OCthcmczOTkrYXJnNDAwK2FyZzQwMSthcmc0MDIrYXJnNDAzK2FyZzQwNCthcmc0MDUrYXJn
NDA2K2FyZzQwNythcmc0MDgrYXJnNDA5K2FyZzQxMCthcmc0MTErYXJnNDEyK2FyZzQxMythcmc0
MTQrYXJnNDE1K2FyZzQxNithcmc0MTcrYXJnNDE4K2FyZzQxOSthcmc0MjArYXJnNDIxK2FyZzQy
Mithcmc0MjMrYXJnNDI0K2FyZzQyNSthcmc0MjYrYXJnNDI3K2FyZzQyOCthcmc0MjkrYXJnNDMw
K2FyZzQzMSthcmc0MzIrYXJnNDMzK2FyZzQzNCthcmc0MzUrYXJnNDM2K2FyZzQzNythcmc0Mzgr
YXJnNDM5K2FyZzQ0MCthcmc0NDErYXJnNDQyK2FyZzQ0Mythcmc0NDQrYXJnNDQ1K2FyZzQ0Nith
cmc0NDcrYXJnNDQ4K2FyZzQ0OSthcmc0NTArYXJnNDUxK2FyZzQ1Mithcmc0NTMrYXJnNDU0K2Fy
ZzQ1NSthcmc0NTYrYXJnNDU3K2FyZzQ1OCthcmc0NTkrYXJnNDYwK2FyZzQ2MSthcmc0NjIrYXJn
NDYzK2FyZzQ2NCthcmc0NjUrYXJnNDY2K2FyZzQ2Nythcmc0NjgrYXJnNDY5K2FyZzQ3MCthcmc0
NzErYXJnNDcyK2FyZzQ3Mythcmc0NzQrYXJnNDc1K2FyZzQ3Nithcmc0NzcrYXJnNDc4K2FyZzQ3
OSthcmc0ODArYXJnNDgxK2FyZzQ4Mithcmc0ODMrYXJnNDg0K2FyZzQ4NSthcmc0ODYrYXJnNDg3
K2FyZzQ4OCthcmc0ODkrYXJnNDkwK2FyZzQ5MSthcmc0OTIrYXJnNDkzK2FyZzQ5NCthcmc0OTUr
YXJnNDk2K2FyZzQ5Nythcmc0OTgrYXJnNDk5K2FyZzUwMCthcmc1MDErYXJnNTAyK2FyZzUwMyth
cmc1MDQrYXJnNTA1K2FyZzUwNithcmc1MDcrYXJnNTA4K2FyZzUwOSthcmc1MTArYXJnNTExK2Fy
ZzUxMithcmc1MTMrYXJnNTE0K2FyZzUxNSthcmc1MTYrYXJnNTE3K2FyZzUxOCthcmc1MTkrYXJn
NTIwK2FyZzUyMSthcmc1MjIrYXJnNTIzK2FyZzUyNCthcmc1MjUrYXJnNTI2K2FyZzUyNythcmc1
MjgrYXJnNTI5K2FyZzUzMCthcmc1MzErYXJnNTMyK2FyZzUzMythcmc1MzQrYXJnNTM1K2FyZzUz
Nithcmc1MzcrYXJnNTM4K2FyZzUzOSthcmc1NDArYXJnNTQxK2FyZzU0Mithcmc1NDMrYXJnNTQ0
K2FyZzU0NSthcmc1NDYrYXJnNTQ3K2FyZzU0OCthcmc1NDkrYXJnNTUwK2FyZzU1MSthcmc1NTIr
YXJnNTUzK2FyZzU1NCthcmc1NTUrYXJnNTU2K2FyZzU1Nythcmc1NTgrYXJnNTU5K2FyZzU2MCth
cmc1NjErYXJnNTYyK2FyZzU2Mythcmc1NjQrYXJnNTY1K2FyZzU2Nithcmc1NjcrYXJnNTY4K2Fy
ZzU2OSthcmc1NzArYXJnNTcxK2FyZzU3Mithcmc1NzMrYXJnNTc0K2FyZzU3NSthcmc1NzYrYXJn
NTc3K2FyZzU3OCthcmc1NzkrYXJnNTgwK2FyZzU4MSthcmc1ODIrYXJnNTgzK2FyZzU4NCthcmc1
ODUrYXJnNTg2K2FyZzU4Nythcmc1ODgrYXJnNTg5K2FyZzU5MCthcmc1OTErYXJnNTkyK2FyZzU5
Mythcmc1OTQrYXJnNTk1K2FyZzU5Nithcmc1OTcrYXJnNTk4K2FyZzU5OSthcmc2MDArYXJnNjAx
K2FyZzYwMithcmc2MDMrYXJnNjA0K2FyZzYwNSthcmc2MDYrYXJnNjA3K2FyZzYwOCthcmc2MDkr
YXJnNjEwK2FyZzYxMSthcmc2MTIrYXJnNjEzK2FyZzYxNCthcmc2MTUrYXJnNjE2K2FyZzYxNyth
cmc2MTgrYXJnNjE5K2FyZzYyMCthcmc2MjErYXJnNjIyK2FyZzYyMythcmc2MjQrYXJnNjI1K2Fy
ZzYyNithcmc2MjcrYXJnNjI4K2FyZzYyOSthcmc2MzArYXJnNjMxK2FyZzYzMithcmc2MzMrYXJn
NjM0K2FyZzYzNSthcmc2MzYrYXJnNjM3K2FyZzYzOCthcmc2MzkrYXJnNjQwK2FyZzY0MSthcmc2
NDIrYXJnNjQzK2FyZzY0NCthcmc2NDUrYXJnNjQ2K2FyZzY0Nythcmc2NDgrYXJnNjQ5K2FyZzY1
MCthcmc2NTErYXJnNjUyK2FyZzY1Mythcmc2NTQrYXJnNjU1K2FyZzY1Nithcmc2NTcrYXJnNjU4
K2FyZzY1OSthcmc2NjArYXJnNjYxK2FyZzY2Mithcmc2NjMrYXJnNjY0K2FyZzY2NSthcmc2NjYr
YXJnNjY3K2FyZzY2OCthcmc2NjkrYXJnNjcwK2FyZzY3MSthcmc2NzIrYXJnNjczK2FyZzY3NCth
cmc2NzUrYXJnNjc2K2FyZzY3Nythcmc2NzgrYXJnNjc5K2FyZzY4MCthcmc2ODErYXJnNjgyK2Fy
ZzY4Mythcmc2ODQrYXJnNjg1K2FyZzY4Nithcmc2ODcrYXJnNjg4K2FyZzY4OSthcmc2OTArYXJn
NjkxK2FyZzY5Mithcmc2OTMrYXJnNjk0K2FyZzY5NSthcmc2OTYrYXJnNjk3K2FyZzY5OCthcmc2
OTkrYXJnNzAwK2FyZzcwMSthcmc3MDIrYXJnNzAzK2FyZzcwNCthcmc3MDUrYXJnNzA2K2FyZzcw
Nythcmc3MDgrYXJnNzA5K2FyZzcxMCthcmc3MTErYXJnNzEyK2FyZzcxMythcmc3MTQrYXJnNzE1
K2FyZzcxNithcmc3MTcrYXJnNzE4K2FyZzcxOSthcmc3MjArYXJnNzIxK2FyZzcyMithcmc3MjMr
YXJnNzI0K2FyZzcyNSthcmc3MjYrYXJnNzI3K2FyZzcyOCthcmc3MjkrYXJnNzMwK2FyZzczMSth
cmc3MzIrYXJnNzMzK2FyZzczNCthcmc3MzUrYXJnNzM2K2FyZzczNythcmc3MzgrYXJnNzM5K2Fy
Zzc0MCthcmc3NDErYXJnNzQyK2FyZzc0Mythcmc3NDQrYXJnNzQ1K2FyZzc0Nithcmc3NDcrYXJn
NzQ4K2FyZzc0OSthcmc3NTArYXJnNzUxK2FyZzc1Mithcmc3NTMrYXJnNzU0K2FyZzc1NSthcmc3
NTYrYXJnNzU3K2FyZzc1OCthcmc3NTkrYXJnNzYwK2FyZzc2MSthcmc3NjIrYXJnNzYzK2FyZzc2
NCthcmc3NjUrYXJnNzY2K2FyZzc2Nythcmc3NjgrYXJnNzY5K2FyZzc3MCthcmc3NzErYXJnNzcy
K2FyZzc3Mythcmc3NzQrYXJnNzc1K2FyZzc3Nithcmc3NzcrYXJnNzc4K2FyZzc3OSthcmc3ODAr
YXJnNzgxK2FyZzc4Mithcmc3ODMrYXJnNzg0K2FyZzc4NSthcmc3ODYrYXJnNzg3K2FyZzc4OCth
cmc3ODkrYXJnNzkwK2FyZzc5MSthcmc3OTIrYXJnNzkzK2FyZzc5NCthcmc3OTUrYXJnNzk2K2Fy
Zzc5Nythcmc3OTgrYXJnNzk5K2FyZzgwMCthcmc4MDErYXJnODAyK2FyZzgwMythcmc4MDQrYXJn
ODA1K2FyZzgwNithcmc4MDcrYXJnODA4K2FyZzgwOSthcmc4MTArYXJnODExK2FyZzgxMithcmc4
MTMrYXJnODE0K2FyZzgxNSthcmc4MTYrYXJnODE3K2FyZzgxOCthcmc4MTkrYXJnODIwK2FyZzgy
MSthcmc4MjIrYXJnODIzK2FyZzgyNCthcmc4MjUrYXJnODI2K2FyZzgyNythcmc4MjgrYXJnODI5
K2FyZzgzMCthcmc4MzErYXJnODMyK2FyZzgzMythcmc4MzQrYXJnODM1K2FyZzgzNithcmc4Mzcr
YXJnODM4K2FyZzgzOSthcmc4NDArYXJnODQxK2FyZzg0Mithcmc4NDMrYXJnODQ0K2FyZzg0NSth
cmc4NDYrYXJnODQ3K2FyZzg0OCthcmc4NDkrYXJnODUwK2FyZzg1MSthcmc4NTIrYXJnODUzK2Fy
Zzg1NCthcmc4NTUrYXJnODU2K2FyZzg1Nythcmc4NTgrYXJnODU5K2FyZzg2MCthcmc4NjErYXJn
ODYyK2FyZzg2Mythcmc4NjQrYXJnODY1K2FyZzg2Nithcmc4NjcrYXJnODY4K2FyZzg2OSthcmc4
NzArYXJnODcxK2FyZzg3Mithcmc4NzMrYXJnODc0K2FyZzg3NSthcmc4NzYrYXJnODc3K2FyZzg3
OCthcmc4NzkrYXJnODgwK2FyZzg4MSthcmc4ODIrYXJnODgzK2FyZzg4NCthcmc4ODUrYXJnODg2
K2FyZzg4Nythcmc4ODgrYXJnODg5K2FyZzg5MCthcmc4OTErYXJnODkyK2FyZzg5Mythcmc4OTQr
YXJnODk1K2FyZzg5Nithcmc4OTcrYXJnODk4K2FyZzg5OSthcmc5MDArYXJnOTAxK2FyZzkwMith
cmc5MDMrYXJnOTA0K2FyZzkwNSthcmc5MDYrYXJnOTA3K2FyZzkwOCthcmc5MDkrYXJnOTEwK2Fy
ZzkxMSthcmc5MTIrYXJnOTEzK2FyZzkxNCthcmc5MTUrYXJnOTE2K2FyZzkxNythcmc5MTgrYXJn
OTE5K2FyZzkyMCthcmc5MjErYXJnOTIyK2FyZzkyMythcmc5MjQrYXJnOTI1K2FyZzkyNithcmc5
MjcrYXJnOTI4K2FyZzkyOSthcmc5MzArYXJnOTMxK2FyZzkzMithcmc5MzMrYXJnOTM0K2FyZzkz
NSthcmc5MzYrYXJnOTM3K2FyZzkzOCthcmc5MzkrYXJnOTQwK2FyZzk0MSthcmc5NDIrYXJnOTQz
K2FyZzk0NCthcmc5NDUrYXJnOTQ2K2FyZzk0Nythcmc5NDgrYXJnOTQ5K2FyZzk1MCthcmc5NTEr
YXJnOTUyK2FyZzk1Mythcmc5NTQrYXJnOTU1K2FyZzk1Nithcmc5NTcrYXJnOTU4K2FyZzk1OSth
cmc5NjArYXJnOTYxK2FyZzk2Mithcmc5NjMrYXJnOTY0K2FyZzk2NSthcmc5NjYrYXJnOTY3K2Fy
Zzk2OCthcmc5NjkrYXJnOTcwK2FyZzk3MSthcmc5NzIrYXJnOTczK2FyZzk3NCthcmc5NzUrYXJn
OTc2K2FyZzk3Nythcmc5NzgrYXJnOTc5K2FyZzk4MCthcmc5ODErYXJnOTgyK2FyZzk4Mythcmc5
ODQrYXJnOTg1K2FyZzk4Nithcmc5ODcrYXJnOTg4K2FyZzk4OSthcmc5OTArYXJnOTkxK2FyZzk5
Mithcmc5OTMrYXJnOTk0K2FyZzk5NSthcmc5OTYrYXJnOTk3K2FyZzk5OCthcmc5OTkrYXJnMTAw
MCthcmcxMDAxK2FyZzEwMDIrYXJnMTAwMythcmcxMDA0K2FyZzEwMDUrYXJnMTAwNithcmcxMDA3
K2FyZzEwMDgrYXJnMTAwOSthcmcxMDEwK2FyZzEwMTErYXJnMTAxMithcmcxMDEzK2FyZzEwMTQr
YXJnMTAxNSthcmcxMDE2K2FyZzEwMTcrYXJnMTAxOCthcmcxMDE5K2FyZzEwMjArYXJnMTAyMSth
cmcxMDIyK2FyZzEwMjMrYXJnMTAyNCthcmcxMDI1K2FyZzEwMjYrYXJnMTAyNythcmcxMDI4K2Fy
ZzEwMjkrYXJnMTAzMCthcmcxMDMxK2FyZzEwMzIrYXJnMTAzMythcmcxMDM0K2FyZzEwMzUrYXJn
MTAzNithcmcxMDM3K2FyZzEwMzgrYXJnMTAzOSthcmcxMDQwK2FyZzEwNDErYXJnMTA0Mithcmcx
MDQzK2FyZzEwNDQrYXJnMTA0NSthcmcxMDQ2K2FyZzEwNDcrYXJnMTA0OCthcmcxMDQ5K2FyZzEw
NTArYXJnMTA1MSthcmcxMDUyK2FyZzEwNTMrYXJnMTA1NCthcmcxMDU1K2FyZzEwNTYrYXJnMTA1
NythcmcxMDU4K2FyZzEwNTkrYXJnMTA2MCthcmcxMDYxK2FyZzEwNjIrYXJnMTA2MythcmcxMDY0
K2FyZzEwNjUrYXJnMTA2NithcmcxMDY3K2FyZzEwNjgrYXJnMTA2OSthcmcxMDcwK2FyZzEwNzEr
YXJnMTA3MithcmcxMDczK2FyZzEwNzQrYXJnMTA3NSthcmcxMDc2K2FyZzEwNzcrYXJnMTA3OCth
cmcxMDc5K2FyZzEwODArYXJnMTA4MSthcmcxMDgyK2FyZzEwODMrYXJnMTA4NCthcmcxMDg1K2Fy
ZzEwODYrYXJnMTA4NythcmcxMDg4K2FyZzEwODkrYXJnMTA5MCthcmcxMDkxK2FyZzEwOTIrYXJn
MTA5MythcmcxMDk0K2FyZzEwOTUrYXJnMTA5NithcmcxMDk3K2FyZzEwOTgrYXJnMTA5OSthcmcx
MTAwK2FyZzExMDErYXJnMTEwMithcmcxMTAzK2FyZzExMDQrYXJnMTEwNSthcmcxMTA2K2FyZzEx
MDcrYXJnMTEwOCthcmcxMTA5K2FyZzExMTArYXJnMTExMSthcmcxMTEyK2FyZzExMTMrYXJnMTEx
NCthcmcxMTE1K2FyZzExMTYrYXJnMTExNythcmcxMTE4K2FyZzExMTkrYXJnMTEyMCthcmcxMTIx
K2FyZzExMjIrYXJnMTEyMythcmcxMTI0K2FyZzExMjUrYXJnMTEyNithcmcxMTI3K2FyZzExMjgr
YXJnMTEyOSthcmcxMTMwK2FyZzExMzErYXJnMTEzMithcmcxMTMzK2FyZzExMzQrYXJnMTEzNSth
cmcxMTM2K2FyZzExMzcrYXJnMTEzOCthcmcxMTM5K2FyZzExNDArYXJnMTE0MSthcmcxMTQyK2Fy
ZzExNDMrYXJnMTE0NCthcmcxMTQ1K2FyZzExNDYrYXJnMTE0NythcmcxMTQ4K2FyZzExNDkrYXJn
MTE1MCthcmcxMTUxK2FyZzExNTIrYXJnMTE1MythcmcxMTU0K2FyZzExNTUrYXJnMTE1Nithcmcx
MTU3K2FyZzExNTgrYXJnMTE1OSthcmcxMTYwK2FyZzExNjErYXJnMTE2MithcmcxMTYzK2FyZzEx
NjQrYXJnMTE2NSthcmcxMTY2K2FyZzExNjcrYXJnMTE2OCthcmcxMTY5K2FyZzExNzArYXJnMTE3
MSthcmcxMTcyK2FyZzExNzMrYXJnMTE3NCthcmcxMTc1K2FyZzExNzYrYXJnMTE3NythcmcxMTc4
K2FyZzExNzkrYXJnMTE4MCthcmcxMTgxK2FyZzExODIrYXJnMTE4MythcmcxMTg0K2FyZzExODUr
YXJnMTE4NithcmcxMTg3K2FyZzExODgrYXJnMTE4OSthcmcxMTkwK2FyZzExOTErYXJnMTE5Mith
cmcxMTkzK2FyZzExOTQrYXJnMTE5NSthcmcxMTk2K2FyZzExOTcrYXJnMTE5OCthcmcxMTk5K2Fy
ZzEyMDArYXJnMTIwMSthcmcxMjAyK2FyZzEyMDMrYXJnMTIwNCthcmcxMjA1K2FyZzEyMDYrYXJn
MTIwNythcmcxMjA4K2FyZzEyMDkrYXJnMTIxMCthcmcxMjExK2FyZzEyMTIrYXJnMTIxMythcmcx
MjE0K2FyZzEyMTUrYXJnMTIxNithcmcxMjE3K2FyZzEyMTgrYXJnMTIxOSthcmcxMjIwK2FyZzEy
MjErYXJnMTIyMithcmcxMjIzK2FyZzEyMjQrYXJnMTIyNSthcmcxMjI2K2FyZzEyMjcrYXJnMTIy
OCthcmcxMjI5K2FyZzEyMzArYXJnMTIzMSthcmcxMjMyK2FyZzEyMzMrYXJnMTIzNCthcmcxMjM1
K2FyZzEyMzYrYXJnMTIzNythcmcxMjM4K2FyZzEyMzkrYXJnMTI0MCthcmcxMjQxK2FyZzEyNDIr
YXJnMTI0MythcmcxMjQ0K2FyZzEyNDUrYXJnMTI0NithcmcxMjQ3K2FyZzEyNDgrYXJnMTI0OSth
cmcxMjUwK2FyZzEyNTErYXJnMTI1MithcmcxMjUzK2FyZzEyNTQrYXJnMTI1NSthcmcxMjU2K2Fy
ZzEyNTcrYXJnMTI1OCthcmcxMjU5K2FyZzEyNjArYXJnMTI2MSthcmcxMjYyK2FyZzEyNjMrYXJn
MTI2NCthcmcxMjY1K2FyZzEyNjYrYXJnMTI2NythcmcxMjY4K2FyZzEyNjkrYXJnMTI3MCthcmcx
MjcxK2FyZzEyNzIrYXJnMTI3MythcmcxMjc0K2FyZzEyNzUrYXJnMTI3NithcmcxMjc3K2FyZzEy
NzgrYXJnMTI3OSthcmcxMjgwK2FyZzEyODErYXJnMTI4MithcmcxMjgzK2FyZzEyODQrYXJnMTI4
NSthcmcxMjg2K2FyZzEyODcrYXJnMTI4OCthcmcxMjg5K2FyZzEyOTArYXJnMTI5MSthcmcxMjky
K2FyZzEyOTMrYXJnMTI5NCthcmcxMjk1K2FyZzEyOTYrYXJnMTI5NythcmcxMjk4K2FyZzEyOTkr
YXJnMTMwMCthcmcxMzAxK2FyZzEzMDIrYXJnMTMwMythcmcxMzA0K2FyZzEzMDUrYXJnMTMwNith
cmcxMzA3K2FyZzEzMDgrYXJnMTMwOSthcmcxMzEwK2FyZzEzMTErYXJnMTMxMithcmcxMzEzK2Fy
ZzEzMTQrYXJnMTMxNSthcmcxMzE2K2FyZzEzMTcrYXJnMTMxOCthcmcxMzE5K2FyZzEzMjArYXJn
MTMyMSthcmcxMzIyK2FyZzEzMjMrYXJnMTMyNCthcmcxMzI1K2FyZzEzMjYrYXJnMTMyNythcmcx
MzI4K2FyZzEzMjkrYXJnMTMzMCthcmcxMzMxK2FyZzEzMzIrYXJnMTMzMythcmcxMzM0K2FyZzEz
MzUrYXJnMTMzNithcmcxMzM3K2FyZzEzMzgrYXJnMTMzOSthcmcxMzQwK2FyZzEzNDErYXJnMTM0
MithcmcxMzQzK2FyZzEzNDQrYXJnMTM0NSthcmcxMzQ2K2FyZzEzNDcrYXJnMTM0OCthcmcxMzQ5
K2FyZzEzNTArYXJnMTM1MSthcmcxMzUyK2FyZzEzNTMrYXJnMTM1NCthcmcxMzU1K2FyZzEzNTYr
YXJnMTM1NythcmcxMzU4K2FyZzEzNTkrYXJnMTM2MCthcmcxMzYxK2FyZzEzNjIrYXJnMTM2Myth
cmcxMzY0K2FyZzEzNjUrYXJnMTM2NithcmcxMzY3K2FyZzEzNjgrYXJnMTM2OSthcmcxMzcwK2Fy
ZzEzNzErYXJnMTM3MithcmcxMzczK2FyZzEzNzQrYXJnMTM3NSthcmcxMzc2K2FyZzEzNzcrYXJn
MTM3OCthcmcxMzc5K2FyZzEzODArYXJnMTM4MSthcmcxMzgyK2FyZzEzODMrYXJnMTM4NCthcmcx
Mzg1K2FyZzEzODYrYXJnMTM4NythcmcxMzg4K2FyZzEzODkrYXJnMTM5MCthcmcxMzkxK2FyZzEz
OTIrYXJnMTM5MythcmcxMzk0K2FyZzEzOTUrYXJnMTM5NithcmcxMzk3K2FyZzEzOTgrYXJnMTM5
OSthcmcxNDAwK2FyZzE0MDErYXJnMTQwMithcmcxNDAzK2FyZzE0MDQrYXJnMTQwNSthcmcxNDA2
K2FyZzE0MDcrYXJnMTQwOCthcmcxNDA5K2FyZzE0MTArYXJnMTQxMSthcmcxNDEyK2FyZzE0MTMr
YXJnMTQxNCthcmcxNDE1K2FyZzE0MTYrYXJnMTQxNythcmcxNDE4K2FyZzE0MTkrYXJnMTQyMCth
cmcxNDIxK2FyZzE0MjIrYXJnMTQyMythcmcxNDI0K2FyZzE0MjUrYXJnMTQyNithcmcxNDI3K2Fy
ZzE0MjgrYXJnMTQyOSthcmcxNDMwK2FyZzE0MzErYXJnMTQzMithcmcxNDMzK2FyZzE0MzQrYXJn
MTQzNSthcmcxNDM2K2FyZzE0MzcrYXJnMTQzOCthcmcxNDM5K2FyZzE0NDArYXJnMTQ0MSthcmcx
NDQyK2FyZzE0NDMrYXJnMTQ0NCthcmcxNDQ1K2FyZzE0NDYrYXJnMTQ0NythcmcxNDQ4K2FyZzE0
NDkrYXJnMTQ1MCthcmcxNDUxK2FyZzE0NTIrYXJnMTQ1MythcmcxNDU0K2FyZzE0NTUrYXJnMTQ1
NithcmcxNDU3K2FyZzE0NTgrYXJnMTQ1OSthcmcxNDYwK2FyZzE0NjErYXJnMTQ2MithcmcxNDYz
K2FyZzE0NjQrYXJnMTQ2NSthcmcxNDY2K2FyZzE0NjcrYXJnMTQ2OCthcmcxNDY5K2FyZzE0NzAr
YXJnMTQ3MSthcmcxNDcyK2FyZzE0NzMrYXJnMTQ3NCthcmcxNDc1K2FyZzE0NzYrYXJnMTQ3Nyth
cmcxNDc4K2FyZzE0NzkrYXJnMTQ4MCthcmcxNDgxK2FyZzE0ODIrYXJnMTQ4MythcmcxNDg0K2Fy
ZzE0ODUrYXJnMTQ4NithcmcxNDg3K2FyZzE0ODgrYXJnMTQ4OSthcmcxNDkwK2FyZzE0OTErYXJn
MTQ5MithcmcxNDkzK2FyZzE0OTQrYXJnMTQ5NSthcmcxNDk2K2FyZzE0OTcrYXJnMTQ5OCthcmcx
NDk5K2FyZzE1MDArYXJnMTUwMSthcmcxNTAyK2FyZzE1MDMrYXJnMTUwNCthcmcxNTA1K2FyZzE1
MDYrYXJnMTUwNythcmcxNTA4K2FyZzE1MDkrYXJnMTUxMCthcmcxNTExK2FyZzE1MTIrYXJnMTUx
MythcmcxNTE0K2FyZzE1MTUrYXJnMTUxNithcmcxNTE3K2FyZzE1MTgrYXJnMTUxOSthcmcxNTIw
K2FyZzE1MjErYXJnMTUyMithcmcxNTIzK2FyZzE1MjQrYXJnMTUyNSthcmcxNTI2K2FyZzE1Mjcr
YXJnMTUyOCthcmcxNTI5K2FyZzE1MzArYXJnMTUzMSthcmcxNTMyK2FyZzE1MzMrYXJnMTUzNCth
cmcxNTM1K2FyZzE1MzYrYXJnMTUzNythcmcxNTM4K2FyZzE1MzkrYXJnMTU0MCthcmcxNTQxK2Fy
ZzE1NDIrYXJnMTU0MythcmcxNTQ0K2FyZzE1NDUrYXJnMTU0NithcmcxNTQ3K2FyZzE1NDgrYXJn
MTU0OSthcmcxNTUwK2FyZzE1NTErYXJnMTU1MithcmcxNTUzK2FyZzE1NTQrYXJnMTU1NSthcmcx
NTU2K2FyZzE1NTcrYXJnMTU1OCthcmcxNTU5K2FyZzE1NjArYXJnMTU2MSthcmcxNTYyK2FyZzE1
NjMrYXJnMTU2NCthcmcxNTY1K2FyZzE1NjYrYXJnMTU2NythcmcxNTY4K2FyZzE1NjkrYXJnMTU3
MCthcmcxNTcxK2FyZzE1NzIrYXJnMTU3MythcmcxNTc0K2FyZzE1NzUrYXJnMTU3NithcmcxNTc3
K2FyZzE1NzgrYXJnMTU3OSthcmcxNTgwK2FyZzE1ODErYXJnMTU4MithcmcxNTgzK2FyZzE1ODQr
YXJnMTU4NSthcmcxNTg2K2FyZzE1ODcrYXJnMTU4OCthcmcxNTg5K2FyZzE1OTArYXJnMTU5MSth
cmcxNTkyK2FyZzE1OTMrYXJnMTU5NCthcmcxNTk1K2FyZzE1OTYrYXJnMTU5NythcmcxNTk4K2Fy
ZzE1OTkrYXJnMTYwMCthcmcxNjAxK2FyZzE2MDIrYXJnMTYwMythcmcxNjA0K2FyZzE2MDUrYXJn
MTYwNithcmcxNjA3K2FyZzE2MDgrYXJnMTYwOSthcmcxNjEwK2FyZzE2MTErYXJnMTYxMithcmcx
NjEzK2FyZzE2MTQrYXJnMTYxNSthcmcxNjE2K2FyZzE2MTcrYXJnMTYxOCthcmcxNjE5K2FyZzE2
MjArYXJnMTYyMSthcmcxNjIyK2FyZzE2MjMrYXJnMTYyNCthcmcxNjI1K2FyZzE2MjYrYXJnMTYy
NythcmcxNjI4K2FyZzE2MjkrYXJnMTYzMCthcmcxNjMxK2FyZzE2MzIrYXJnMTYzMythcmcxNjM0
K2FyZzE2MzUrYXJnMTYzNithcmcxNjM3K2FyZzE2MzgrYXJnMTYzOSthcmcxNjQwK2FyZzE2NDEr
YXJnMTY0MithcmcxNjQzK2FyZzE2NDQrYXJnMTY0NSthcmcxNjQ2K2FyZzE2NDcrYXJnMTY0OCth
cmcxNjQ5K2FyZzE2NTArYXJnMTY1MSthcmcxNjUyK2FyZzE2NTMrYXJnMTY1NCthcmcxNjU1K2Fy
ZzE2NTYrYXJnMTY1NythcmcxNjU4K2FyZzE2NTkrYXJnMTY2MCthcmcxNjYxK2FyZzE2NjIrYXJn
MTY2MythcmcxNjY0K2FyZzE2NjUrYXJnMTY2NithcmcxNjY3K2FyZzE2NjgrYXJnMTY2OSthcmcx
NjcwK2FyZzE2NzErYXJnMTY3MithcmcxNjczK2FyZzE2NzQrYXJnMTY3NSthcmcxNjc2K2FyZzE2
NzcrYXJnMTY3OCthcmcxNjc5K2FyZzE2ODArYXJnMTY4MSthcmcxNjgyK2FyZzE2ODMrYXJnMTY4
NCthcmcxNjg1K2FyZzE2ODYrYXJnMTY4NythcmcxNjg4K2FyZzE2ODkrYXJnMTY5MCthcmcxNjkx
K2FyZzE2OTIrYXJnMTY5MythcmcxNjk0K2FyZzE2OTUrYXJnMTY5NithcmcxNjk3K2FyZzE2OTgr
YXJnMTY5OSthcmcxNzAwK2FyZzE3MDErYXJnMTcwMithcmcxNzAzK2FyZzE3MDQrYXJnMTcwNSth
cmcxNzA2K2FyZzE3MDcrYXJnMTcwOCthcmcxNzA5K2FyZzE3MTArYXJnMTcxMSthcmcxNzEyK2Fy
ZzE3MTMrYXJnMTcxNCthcmcxNzE1K2FyZzE3MTYrYXJnMTcxNythcmcxNzE4K2FyZzE3MTkrYXJn
MTcyMCthcmcxNzIxK2FyZzE3MjIrYXJnMTcyMythcmcxNzI0K2FyZzE3MjUrYXJnMTcyNithcmcx
NzI3K2FyZzE3MjgrYXJnMTcyOSthcmcxNzMwK2FyZzE3MzErYXJnMTczMithcmcxNzMzK2FyZzE3
MzQrYXJnMTczNSthcmcxNzM2K2FyZzE3MzcrYXJnMTczOCthcmcxNzM5K2FyZzE3NDArYXJnMTc0
MSthcmcxNzQyK2FyZzE3NDMrYXJnMTc0NCthcmcxNzQ1K2FyZzE3NDYrYXJnMTc0NythcmcxNzQ4
K2FyZzE3NDkrYXJnMTc1MCthcmcxNzUxK2FyZzE3NTIrYXJnMTc1MythcmcxNzU0K2FyZzE3NTUr
YXJnMTc1NithcmcxNzU3K2FyZzE3NTgrYXJnMTc1OSthcmcxNzYwK2FyZzE3NjErYXJnMTc2Mith
cmcxNzYzK2FyZzE3NjQrYXJnMTc2NSthcmcxNzY2K2FyZzE3NjcrYXJnMTc2OCthcmcxNzY5K2Fy
ZzE3NzArYXJnMTc3MSthcmcxNzcyK2FyZzE3NzMrYXJnMTc3NCthcmcxNzc1K2FyZzE3NzYrYXJn
MTc3NythcmcxNzc4K2FyZzE3NzkrYXJnMTc4MCthcmcxNzgxK2FyZzE3ODIrYXJnMTc4Mythcmcx
Nzg0K2FyZzE3ODUrYXJnMTc4NithcmcxNzg3K2FyZzE3ODgrYXJnMTc4OSthcmcxNzkwK2FyZzE3
OTErYXJnMTc5MithcmcxNzkzK2FyZzE3OTQrYXJnMTc5NSthcmcxNzk2K2FyZzE3OTcrYXJnMTc5
OCthcmcxNzk5K2FyZzE4MDArYXJnMTgwMSthcmcxODAyK2FyZzE4MDMrYXJnMTgwNCthcmcxODA1
K2FyZzE4MDYrYXJnMTgwNythcmcxODA4K2FyZzE4MDkrYXJnMTgxMCthcmcxODExK2FyZzE4MTIr
YXJnMTgxMythcmcxODE0K2FyZzE4MTUrYXJnMTgxNithcmcxODE3K2FyZzE4MTgrYXJnMTgxOSth
cmcxODIwK2FyZzE4MjErYXJnMTgyMithcmcxODIzK2FyZzE4MjQrYXJnMTgyNSthcmcxODI2K2Fy
ZzE4MjcrYXJnMTgyOCthcmcxODI5K2FyZzE4MzArYXJnMTgzMSthcmcxODMyK2FyZzE4MzMrYXJn
MTgzNCthcmcxODM1K2FyZzE4MzYrYXJnMTgzNythcmcxODM4K2FyZzE4MzkrYXJnMTg0MCthcmcx
ODQxK2FyZzE4NDIrYXJnMTg0MythcmcxODQ0K2FyZzE4NDUrYXJnMTg0NithcmcxODQ3K2FyZzE4
NDgrYXJnMTg0OSthcmcxODUwK2FyZzE4NTErYXJnMTg1MithcmcxODUzK2FyZzE4NTQrYXJnMTg1
NSthcmcxODU2K2FyZzE4NTcrYXJnMTg1OCthcmcxODU5K2FyZzE4NjArYXJnMTg2MSthcmcxODYy
K2FyZzE4NjMrYXJnMTg2NCthcmcxODY1K2FyZzE4NjYrYXJnMTg2NythcmcxODY4K2FyZzE4Njkr
YXJnMTg3MCthcmcxODcxK2FyZzE4NzIrYXJnMTg3MythcmcxODc0K2FyZzE4NzUrYXJnMTg3Nith
cmcxODc3K2FyZzE4NzgrYXJnMTg3OSthcmcxODgwK2FyZzE4ODErYXJnMTg4MithcmcxODgzK2Fy
ZzE4ODQrYXJnMTg4NSthcmcxODg2K2FyZzE4ODcrYXJnMTg4OCthcmcxODg5K2FyZzE4OTArYXJn
MTg5MSthcmcxODkyK2FyZzE4OTMrYXJnMTg5NCthcmcxODk1K2FyZzE4OTYrYXJnMTg5Nythcmcx
ODk4K2FyZzE4OTkrYXJnMTkwMCthcmcxOTAxK2FyZzE5MDIrYXJnMTkwMythcmcxOTA0K2FyZzE5
MDUrYXJnMTkwNithcmcxOTA3K2FyZzE5MDgrYXJnMTkwOSthcmcxOTEwK2FyZzE5MTErYXJnMTkx
MithcmcxOTEzK2FyZzE5MTQrYXJnMTkxNSthcmcxOTE2K2FyZzE5MTcrYXJnMTkxOCthcmcxOTE5
K2FyZzE5MjArYXJnMTkyMSthcmcxOTIyK2FyZzE5MjMrYXJnMTkyNCthcmcxOTI1K2FyZzE5MjYr
YXJnMTkyNythcmcxOTI4K2FyZzE5MjkrYXJnMTkzMCthcmcxOTMxK2FyZzE5MzIrYXJnMTkzMyth
cmcxOTM0K2FyZzE5MzUrYXJnMTkzNithcmcxOTM3K2FyZzE5MzgrYXJnMTkzOSthcmcxOTQwK2Fy
ZzE5NDErYXJnMTk0MithcmcxOTQzK2FyZzE5NDQrYXJnMTk0NSthcmcxOTQ2K2FyZzE5NDcrYXJn
MTk0OCthcmcxOTQ5K2FyZzE5NTArYXJnMTk1MSthcmcxOTUyK2FyZzE5NTMrYXJnMTk1NCthcmcx
OTU1K2FyZzE5NTYrYXJnMTk1NythcmcxOTU4K2FyZzE5NTkrYXJnMTk2MCthcmcxOTYxK2FyZzE5
NjIrYXJnMTk2MythcmcxOTY0K2FyZzE5NjUrYXJnMTk2NithcmcxOTY3K2FyZzE5NjgrYXJnMTk2
OSthcmcxOTcwK2FyZzE5NzErYXJnMTk3MithcmcxOTczK2FyZzE5NzQrYXJnMTk3NSthcmcxOTc2
K2FyZzE5NzcrYXJnMTk3OCthcmcxOTc5K2FyZzE5ODArYXJnMTk4MSthcmcxOTgyK2FyZzE5ODMr
YXJnMTk4NCthcmcxOTg1K2FyZzE5ODYrYXJnMTk4NythcmcxOTg4K2FyZzE5ODkrYXJnMTk5MCth
cmcxOTkxK2FyZzE5OTIrYXJnMTk5MythcmcxOTk0K2FyZzE5OTUrYXJnMTk5NithcmcxOTk3K2Fy
ZzE5OTgrYXJnMTk5OSthcmcyMDAwK2FyZzIwMDErYXJnMjAwMithcmcyMDAzK2FyZzIwMDQrYXJn
MjAwNSthcmcyMDA2K2FyZzIwMDcrYXJnMjAwOCthcmcyMDA5K2FyZzIwMTArYXJnMjAxMSthcmcy
MDEyK2FyZzIwMTMrYXJnMjAxNCthcmcyMDE1K2FyZzIwMTYrYXJnMjAxNythcmcyMDE4K2FyZzIw
MTkrYXJnMjAyMCthcmcyMDIxK2FyZzIwMjIrYXJnMjAyMythcmcyMDI0K2FyZzIwMjUrYXJnMjAy
NithcmcyMDI3K2FyZzIwMjgrYXJnMjAyOSthcmcyMDMwK2FyZzIwMzErYXJnMjAzMithcmcyMDMz
K2FyZzIwMzQrYXJnMjAzNSthcmcyMDM2K2FyZzIwMzcrYXJnMjAzOCthcmcyMDM5K2FyZzIwNDAr
YXJnMjA0MSthcmcyMDQyK2FyZzIwNDMrYXJnMjA0NCthcmcyMDQ1K2FyZzIwNDYrYXJnMjA0Nyth
cmcyMDQ4K2FyZzIwNDkrYXJnMjA1MCthcmcyMDUxK2FyZzIwNTIrYXJnMjA1MythcmcyMDU0K2Fy
ZzIwNTUrYXJnMjA1NithcmcyMDU3K2FyZzIwNTgrYXJnMjA1OSthcmcyMDYwK2FyZzIwNjErYXJn
MjA2MithcmcyMDYzK2FyZzIwNjQrYXJnMjA2NSthcmcyMDY2K2FyZzIwNjcrYXJnMjA2OCthcmcy
MDY5K2FyZzIwNzArYXJnMjA3MSthcmcyMDcyK2FyZzIwNzMrYXJnMjA3NCthcmcyMDc1K2FyZzIw
NzYrYXJnMjA3NythcmcyMDc4K2FyZzIwNzkrYXJnMjA4MCthcmcyMDgxK2FyZzIwODIrYXJnMjA4
MythcmcyMDg0K2FyZzIwODUrYXJnMjA4NithcmcyMDg3K2FyZzIwODgrYXJnMjA4OSthcmcyMDkw
K2FyZzIwOTErYXJnMjA5MithcmcyMDkzK2FyZzIwOTQrYXJnMjA5NSthcmcyMDk2K2FyZzIwOTcr
YXJnMjA5OCthcmcyMDk5K2FyZzIxMDArYXJnMjEwMSthcmcyMTAyK2FyZzIxMDMrYXJnMjEwNCth
cmcyMTA1K2FyZzIxMDYrYXJnMjEwNythcmcyMTA4K2FyZzIxMDkrYXJnMjExMCthcmcyMTExK2Fy
ZzIxMTIrYXJnMjExMythcmcyMTE0K2FyZzIxMTUrYXJnMjExNithcmcyMTE3K2FyZzIxMTgrYXJn
MjExOSthcmcyMTIwK2FyZzIxMjErYXJnMjEyMithcmcyMTIzK2FyZzIxMjQrYXJnMjEyNSthcmcy
MTI2K2FyZzIxMjcrYXJnMjEyOCthcmcyMTI5K2FyZzIxMzArYXJnMjEzMSthcmcyMTMyK2FyZzIx
MzMrYXJnMjEzNCthcmcyMTM1K2FyZzIxMzYrYXJnMjEzNythcmcyMTM4K2FyZzIxMzkrYXJnMjE0
MCthcmcyMTQxK2FyZzIxNDIrYXJnMjE0MythcmcyMTQ0K2FyZzIxNDUrYXJnMjE0NithcmcyMTQ3
K2FyZzIxNDgrYXJnMjE0OSthcmcyMTUwK2FyZzIxNTErYXJnMjE1MithcmcyMTUzK2FyZzIxNTQr
YXJnMjE1NSthcmcyMTU2K2FyZzIxNTcrYXJnMjE1OCthcmcyMTU5K2FyZzIxNjArYXJnMjE2MSth
cmcyMTYyK2FyZzIxNjMrYXJnMjE2NCthcmcyMTY1K2FyZzIxNjYrYXJnMjE2NythcmcyMTY4K2Fy
ZzIxNjkrYXJnMjE3MCthcmcyMTcxK2FyZzIxNzIrYXJnMjE3MythcmcyMTc0K2FyZzIxNzUrYXJn
MjE3NithcmcyMTc3K2FyZzIxNzgrYXJnMjE3OSthcmcyMTgwK2FyZzIxODErYXJnMjE4Mithcmcy
MTgzK2FyZzIxODQrYXJnMjE4NSthcmcyMTg2K2FyZzIxODcrYXJnMjE4OCthcmcyMTg5K2FyZzIx
OTArYXJnMjE5MSthcmcyMTkyK2FyZzIxOTMrYXJnMjE5NCthcmcyMTk1K2FyZzIxOTYrYXJnMjE5
NythcmcyMTk4K2FyZzIxOTkrYXJnMjIwMCthcmcyMjAxK2FyZzIyMDIrYXJnMjIwMythcmcyMjA0
K2FyZzIyMDUrYXJnMjIwNithcmcyMjA3K2FyZzIyMDgrYXJnMjIwOSthcmcyMjEwK2FyZzIyMTEr
YXJnMjIxMithcmcyMjEzK2FyZzIyMTQrYXJnMjIxNSthcmcyMjE2K2FyZzIyMTcrYXJnMjIxOCth
cmcyMjE5K2FyZzIyMjArYXJnMjIyMSthcmcyMjIyK2FyZzIyMjMrYXJnMjIyNCthcmcyMjI1K2Fy
ZzIyMjYrYXJnMjIyNythcmcyMjI4K2FyZzIyMjkrYXJnMjIzMCthcmcyMjMxK2FyZzIyMzIrYXJn
MjIzMythcmcyMjM0K2FyZzIyMzUrYXJnMjIzNithcmcyMjM3K2FyZzIyMzgrYXJnMjIzOSthcmcy
MjQwK2FyZzIyNDErYXJnMjI0MithcmcyMjQzK2FyZzIyNDQrYXJnMjI0NSthcmcyMjQ2K2FyZzIy
NDcrYXJnMjI0OCthcmcyMjQ5K2FyZzIyNTArYXJnMjI1MSthcmcyMjUyK2FyZzIyNTMrYXJnMjI1
NCthcmcyMjU1K2FyZzIyNTYrYXJnMjI1NythcmcyMjU4K2FyZzIyNTkrYXJnMjI2MCthcmcyMjYx
K2FyZzIyNjIrYXJnMjI2MythcmcyMjY0K2FyZzIyNjUrYXJnMjI2NithcmcyMjY3K2FyZzIyNjgr
YXJnMjI2OSthcmcyMjcwK2FyZzIyNzErYXJnMjI3MithcmcyMjczK2FyZzIyNzQrYXJnMjI3NSth
cmcyMjc2K2FyZzIyNzcrYXJnMjI3OCthcmcyMjc5K2FyZzIyODArYXJnMjI4MSthcmcyMjgyK2Fy
ZzIyODMrYXJnMjI4NCthcmcyMjg1K2FyZzIyODYrYXJnMjI4NythcmcyMjg4K2FyZzIyODkrYXJn
MjI5MCthcmcyMjkxK2FyZzIyOTIrYXJnMjI5MythcmcyMjk0K2FyZzIyOTUrYXJnMjI5Nithcmcy
Mjk3K2FyZzIyOTgrYXJnMjI5OSthcmcyMzAwK2FyZzIzMDErYXJnMjMwMithcmcyMzAzK2FyZzIz
MDQrYXJnMjMwNSthcmcyMzA2K2FyZzIzMDcrYXJnMjMwOCthcmcyMzA5K2FyZzIzMTArYXJnMjMx
MSthcmcyMzEyK2FyZzIzMTMrYXJnMjMxNCthcmcyMzE1K2FyZzIzMTYrYXJnMjMxNythcmcyMzE4
K2FyZzIzMTkrYXJnMjMyMCthcmcyMzIxK2FyZzIzMjIrYXJnMjMyMythcmcyMzI0K2FyZzIzMjUr
YXJnMjMyNithcmcyMzI3K2FyZzIzMjgrYXJnMjMyOSthcmcyMzMwK2FyZzIzMzErYXJnMjMzMith
cmcyMzMzK2FyZzIzMzQrYXJnMjMzNSthcmcyMzM2K2FyZzIzMzcrYXJnMjMzOCthcmcyMzM5K2Fy
ZzIzNDArYXJnMjM0MSthcmcyMzQyK2FyZzIzNDMrYXJnMjM0NCthcmcyMzQ1K2FyZzIzNDYrYXJn
MjM0NythcmcyMzQ4K2FyZzIzNDkrYXJnMjM1MCthcmcyMzUxK2FyZzIzNTIrYXJnMjM1Mythcmcy
MzU0K2FyZzIzNTUrYXJnMjM1NithcmcyMzU3K2FyZzIzNTgrYXJnMjM1OSthcmcyMzYwK2FyZzIz
NjErYXJnMjM2MithcmcyMzYzK2FyZzIzNjQrYXJnMjM2NSthcmcyMzY2K2FyZzIzNjcrYXJnMjM2
OCthcmcyMzY5K2FyZzIzNzArYXJnMjM3MSthcmcyMzcyK2FyZzIzNzMrYXJnMjM3NCthcmcyMzc1
K2FyZzIzNzYrYXJnMjM3NythcmcyMzc4K2FyZzIzNzkrYXJnMjM4MCthcmcyMzgxK2FyZzIzODIr
YXJnMjM4MythcmcyMzg0K2FyZzIzODUrYXJnMjM4NithcmcyMzg3K2FyZzIzODgrYXJnMjM4OSth
cmcyMzkwK2FyZzIzOTErYXJnMjM5MithcmcyMzkzK2FyZzIzOTQrYXJnMjM5NSthcmcyMzk2K2Fy
ZzIzOTcrYXJnMjM5OCthcmcyMzk5K2FyZzI0MDArYXJnMjQwMSthcmcyNDAyK2FyZzI0MDMrYXJn
MjQwNCthcmcyNDA1K2FyZzI0MDYrYXJnMjQwNythcmcyNDA4K2FyZzI0MDkrYXJnMjQxMCthcmcy
NDExK2FyZzI0MTIrYXJnMjQxMythcmcyNDE0K2FyZzI0MTUrYXJnMjQxNithcmcyNDE3K2FyZzI0
MTgrYXJnMjQxOSthcmcyNDIwK2FyZzI0MjErYXJnMjQyMithcmcyNDIzK2FyZzI0MjQrYXJnMjQy
NSthcmcyNDI2K2FyZzI0MjcrYXJnMjQyOCthcmcyNDI5K2FyZzI0MzArYXJnMjQzMSthcmcyNDMy
K2FyZzI0MzMrYXJnMjQzNCthcmcyNDM1K2FyZzI0MzYrYXJnMjQzNythcmcyNDM4K2FyZzI0Mzkr
YXJnMjQ0MCthcmcyNDQxK2FyZzI0NDIrYXJnMjQ0MythcmcyNDQ0K2FyZzI0NDUrYXJnMjQ0Nith
cmcyNDQ3K2FyZzI0NDgrYXJnMjQ0OSthcmcyNDUwK2FyZzI0NTErYXJnMjQ1MithcmcyNDUzK2Fy
ZzI0NTQrYXJnMjQ1NSthcmcyNDU2K2FyZzI0NTcrYXJnMjQ1OCthcmcyNDU5K2FyZzI0NjArYXJn
MjQ2MSthcmcyNDYyK2FyZzI0NjMrYXJnMjQ2NCthcmcyNDY1K2FyZzI0NjYrYXJnMjQ2Nythcmcy
NDY4K2FyZzI0NjkrYXJnMjQ3MCthcmcyNDcxK2FyZzI0NzIrYXJnMjQ3MythcmcyNDc0K2FyZzI0
NzUrYXJnMjQ3NithcmcyNDc3K2FyZzI0NzgrYXJnMjQ3OSthcmcyNDgwK2FyZzI0ODErYXJnMjQ4
MithcmcyNDgzK2FyZzI0ODQrYXJnMjQ4NSthcmcyNDg2K2FyZzI0ODcrYXJnMjQ4OCthcmcyNDg5
K2FyZzI0OTArYXJnMjQ5MSthcmcyNDkyK2FyZzI0OTMrYXJnMjQ5NCthcmcyNDk1K2FyZzI0OTYr
YXJnMjQ5NythcmcyNDk4K2FyZzI0OTkrYXJnMjUwMCthcmcyNTAxK2FyZzI1MDIrYXJnMjUwMyth
cmcyNTA0K2FyZzI1MDUrYXJnMjUwNithcmcyNTA3K2FyZzI1MDgrYXJnMjUwOSthcmcyNTEwK2Fy
ZzI1MTErYXJnMjUxMithcmcyNTEzK2FyZzI1MTQrYXJnMjUxNSthcmcyNTE2K2FyZzI1MTcrYXJn
MjUxOCthcmcyNTE5K2FyZzI1MjArYXJnMjUyMSthcmcyNTIyK2FyZzI1MjMrYXJnMjUyNCthcmcy
NTI1K2FyZzI1MjYrYXJnMjUyNythcmcyNTI4K2FyZzI1MjkrYXJnMjUzMCthcmcyNTMxK2FyZzI1
MzIrYXJnMjUzMythcmcyNTM0K2FyZzI1MzUrYXJnMjUzNithcmcyNTM3K2FyZzI1MzgrYXJnMjUz
OSthcmcyNTQwK2FyZzI1NDErYXJnMjU0MithcmcyNTQzK2FyZzI1NDQrYXJnMjU0NSthcmcyNTQ2
K2FyZzI1NDcrYXJnMjU0OCthcmcyNTQ5K2FyZzI1NTArYXJnMjU1MSthcmcyNTUyK2FyZzI1NTMr
YXJnMjU1NCthcmcyNTU1K2FyZzI1NTYrYXJnMjU1NythcmcyNTU4K2FyZzI1NTkrYXJnMjU2MCth
cmcyNTYxK2FyZzI1NjIrYXJnMjU2MythcmcyNTY0K2FyZzI1NjUrYXJnMjU2NithcmcyNTY3K2Fy
ZzI1NjgrYXJnMjU2OSthcmcyNTcwK2FyZzI1NzErYXJnMjU3MithcmcyNTczK2FyZzI1NzQrYXJn
MjU3NSthcmcyNTc2K2FyZzI1NzcrYXJnMjU3OCthcmcyNTc5K2FyZzI1ODArYXJnMjU4MSthcmcy
NTgyK2FyZzI1ODMrYXJnMjU4NCthcmcyNTg1K2FyZzI1ODYrYXJnMjU4NythcmcyNTg4K2FyZzI1
ODkrYXJnMjU5MCthcmcyNTkxK2FyZzI1OTIrYXJnMjU5MythcmcyNTk0K2FyZzI1OTUrYXJnMjU5
NithcmcyNTk3K2FyZzI1OTgrYXJnMjU5OSthcmcyNjAwK2FyZzI2MDErYXJnMjYwMithcmcyNjAz
K2FyZzI2MDQrYXJnMjYwNSthcmcyNjA2K2FyZzI2MDcrYXJnMjYwOCthcmcyNjA5K2FyZzI2MTAr
YXJnMjYxMSthcmcyNjEyK2FyZzI2MTMrYXJnMjYxNCthcmcyNjE1K2FyZzI2MTYrYXJnMjYxNyth
cmcyNjE4K2FyZzI2MTkrYXJnMjYyMCthcmcyNjIxK2FyZzI2MjIrYXJnMjYyMythcmcyNjI0K2Fy
ZzI2MjUrYXJnMjYyNithcmcyNjI3K2FyZzI2MjgrYXJnMjYyOSthcmcyNjMwK2FyZzI2MzErYXJn
MjYzMithcmcyNjMzK2FyZzI2MzQrYXJnMjYzNSthcmcyNjM2K2FyZzI2MzcrYXJnMjYzOCthcmcy
NjM5K2FyZzI2NDArYXJnMjY0MSthcmcyNjQyK2FyZzI2NDMrYXJnMjY0NCthcmcyNjQ1K2FyZzI2
NDYrYXJnMjY0NythcmcyNjQ4K2FyZzI2NDkrYXJnMjY1MCthcmcyNjUxK2FyZzI2NTIrYXJnMjY1
MythcmcyNjU0K2FyZzI2NTUrYXJnMjY1NithcmcyNjU3K2FyZzI2NTgrYXJnMjY1OSthcmcyNjYw
K2FyZzI2NjErYXJnMjY2MithcmcyNjYzK2FyZzI2NjQrYXJnMjY2NSthcmcyNjY2K2FyZzI2Njcr
YXJnMjY2OCthcmcyNjY5K2FyZzI2NzArYXJnMjY3MSthcmcyNjcyK2FyZzI2NzMrYXJnMjY3NCth
cmcyNjc1K2FyZzI2NzYrYXJnMjY3NythcmcyNjc4K2FyZzI2NzkrYXJnMjY4MCthcmcyNjgxK2Fy
ZzI2ODIrYXJnMjY4MythcmcyNjg0K2FyZzI2ODUrYXJnMjY4NithcmcyNjg3K2FyZzI2ODgrYXJn
MjY4OSthcmcyNjkwK2FyZzI2OTErYXJnMjY5MithcmcyNjkzK2FyZzI2OTQrYXJnMjY5NSthcmcy
Njk2K2FyZzI2OTcrYXJnMjY5OCthcmcyNjk5K2FyZzI3MDArYXJnMjcwMSthcmcyNzAyK2FyZzI3
MDMrYXJnMjcwNCthcmcyNzA1K2FyZzI3MDYrYXJnMjcwNythcmcyNzA4K2FyZzI3MDkrYXJnMjcx
MCthcmcyNzExK2FyZzI3MTIrYXJnMjcxMythcmcyNzE0K2FyZzI3MTUrYXJnMjcxNithcmcyNzE3
K2FyZzI3MTgrYXJnMjcxOSthcmcyNzIwK2FyZzI3MjErYXJnMjcyMithcmcyNzIzK2FyZzI3MjQr
YXJnMjcyNSthcmcyNzI2K2FyZzI3MjcrYXJnMjcyOCthcmcyNzI5K2FyZzI3MzArYXJnMjczMSth
cmcyNzMyK2FyZzI3MzMrYXJnMjczNCthcmcyNzM1K2FyZzI3MzYrYXJnMjczNythcmcyNzM4K2Fy
ZzI3MzkrYXJnMjc0MCthcmcyNzQxK2FyZzI3NDIrYXJnMjc0MythcmcyNzQ0K2FyZzI3NDUrYXJn
Mjc0NithcmcyNzQ3K2FyZzI3NDgrYXJnMjc0OSthcmcyNzUwK2FyZzI3NTErYXJnMjc1Mithcmcy
NzUzK2FyZzI3NTQrYXJnMjc1NSthcmcyNzU2K2FyZzI3NTcrYXJnMjc1OCthcmcyNzU5K2FyZzI3
NjArYXJnMjc2MSthcmcyNzYyK2FyZzI3NjMrYXJnMjc2NCthcmcyNzY1K2FyZzI3NjYrYXJnMjc2
NythcmcyNzY4K2FyZzI3NjkrYXJnMjc3MCthcmcyNzcxK2FyZzI3NzIrYXJnMjc3MythcmcyNzc0
K2FyZzI3NzUrYXJnMjc3NithcmcyNzc3K2FyZzI3NzgrYXJnMjc3OSthcmcyNzgwK2FyZzI3ODEr
YXJnMjc4MithcmcyNzgzK2FyZzI3ODQrYXJnMjc4NSthcmcyNzg2K2FyZzI3ODcrYXJnMjc4OCth
cmcyNzg5K2FyZzI3OTArYXJnMjc5MSthcmcyNzkyK2FyZzI3OTMrYXJnMjc5NCthcmcyNzk1K2Fy
ZzI3OTYrYXJnMjc5NythcmcyNzk4K2FyZzI3OTkrYXJnMjgwMCthcmcyODAxK2FyZzI4MDIrYXJn
MjgwMythcmcyODA0K2FyZzI4MDUrYXJnMjgwNithcmcyODA3K2FyZzI4MDgrYXJnMjgwOSthcmcy
ODEwK2FyZzI4MTErYXJnMjgxMithcmcyODEzK2FyZzI4MTQrYXJnMjgxNSthcmcyODE2K2FyZzI4
MTcrYXJnMjgxOCthcmcyODE5K2FyZzI4MjArYXJnMjgyMSthcmcyODIyK2FyZzI4MjMrYXJnMjgy
NCthcmcyODI1K2FyZzI4MjYrYXJnMjgyNythcmcyODI4K2FyZzI4MjkrYXJnMjgzMCthcmcyODMx
K2FyZzI4MzIrYXJnMjgzMythcmcyODM0K2FyZzI4MzUrYXJnMjgzNithcmcyODM3K2FyZzI4Mzgr
YXJnMjgzOSthcmcyODQwK2FyZzI4NDErYXJnMjg0MithcmcyODQzK2FyZzI4NDQrYXJnMjg0NSth
cmcyODQ2K2FyZzI4NDcrYXJnMjg0OCthcmcyODQ5K2FyZzI4NTArYXJnMjg1MSthcmcyODUyK2Fy
ZzI4NTMrYXJnMjg1NCthcmcyODU1K2FyZzI4NTYrYXJnMjg1NythcmcyODU4K2FyZzI4NTkrYXJn
Mjg2MCthcmcyODYxK2FyZzI4NjIrYXJnMjg2MythcmcyODY0K2FyZzI4NjUrYXJnMjg2Nithcmcy
ODY3K2FyZzI4NjgrYXJnMjg2OSthcmcyODcwK2FyZzI4NzErYXJnMjg3MithcmcyODczK2FyZzI4
NzQrYXJnMjg3NSthcmcyODc2K2FyZzI4NzcrYXJnMjg3OCthcmcyODc5K2FyZzI4ODArYXJnMjg4
MSthcmcyODgyK2FyZzI4ODMrYXJnMjg4NCthcmcyODg1K2FyZzI4ODYrYXJnMjg4NythcmcyODg4
K2FyZzI4ODkrYXJnMjg5MCthcmcyODkxK2FyZzI4OTIrYXJnMjg5MythcmcyODk0K2FyZzI4OTUr
YXJnMjg5NithcmcyODk3K2FyZzI4OTgrYXJnMjg5OSthcmcyOTAwK2FyZzI5MDErYXJnMjkwMith
cmcyOTAzK2FyZzI5MDQrYXJnMjkwNSthcmcyOTA2K2FyZzI5MDcrYXJnMjkwOCthcmcyOTA5K2Fy
ZzI5MTArYXJnMjkxMSthcmcyOTEyK2FyZzI5MTMrYXJnMjkxNCthcmcyOTE1K2FyZzI5MTYrYXJn
MjkxNythcmcyOTE4K2FyZzI5MTkrYXJnMjkyMCthcmcyOTIxK2FyZzI5MjIrYXJnMjkyMythcmcy
OTI0K2FyZzI5MjUrYXJnMjkyNithcmcyOTI3K2FyZzI5MjgrYXJnMjkyOSthcmcyOTMwK2FyZzI5
MzErYXJnMjkzMithcmcyOTMzK2FyZzI5MzQrYXJnMjkzNSthcmcyOTM2K2FyZzI5MzcrYXJnMjkz
OCthcmcyOTM5K2FyZzI5NDArYXJnMjk0MSthcmcyOTQyK2FyZzI5NDMrYXJnMjk0NCthcmcyOTQ1
K2FyZzI5NDYrYXJnMjk0NythcmcyOTQ4K2FyZzI5NDkrYXJnMjk1MCthcmcyOTUxK2FyZzI5NTIr
YXJnMjk1MythcmcyOTU0K2FyZzI5NTUrYXJnMjk1NithcmcyOTU3K2FyZzI5NTgrYXJnMjk1OSth
cmcyOTYwK2FyZzI5NjErYXJnMjk2MithcmcyOTYzK2FyZzI5NjQrYXJnMjk2NSthcmcyOTY2K2Fy
ZzI5NjcrYXJnMjk2OCthcmcyOTY5K2FyZzI5NzArYXJnMjk3MSthcmcyOTcyK2FyZzI5NzMrYXJn
Mjk3NCthcmcyOTc1K2FyZzI5NzYrYXJnMjk3NythcmcyOTc4K2FyZzI5NzkrYXJnMjk4MCthcmcy
OTgxK2FyZzI5ODIrYXJnMjk4MythcmcyOTg0K2FyZzI5ODUrYXJnMjk4NithcmcyOTg3K2FyZzI5
ODgrYXJnMjk4OSthcmcyOTkwK2FyZzI5OTErYXJnMjk5MithcmcyOTkzK2FyZzI5OTQrYXJnMjk5
NSthcmcyOTk2K2FyZzI5OTcrYXJnMjk5OCthcmcyOTk5K2FyZzMwMDArYXJnMzAwMSthcmczMDAy
K2FyZzMwMDMrYXJnMzAwNCthcmczMDA1K2FyZzMwMDYrYXJnMzAwNythcmczMDA4K2FyZzMwMDkr
YXJnMzAxMCthcmczMDExK2FyZzMwMTIrYXJnMzAxMythcmczMDE0K2FyZzMwMTUrYXJnMzAxNith
cmczMDE3K2FyZzMwMTgrYXJnMzAxOSthcmczMDIwK2FyZzMwMjErYXJnMzAyMithcmczMDIzK2Fy
ZzMwMjQrYXJnMzAyNSthcmczMDI2K2FyZzMwMjcrYXJnMzAyOCthcmczMDI5K2FyZzMwMzArYXJn
MzAzMSthcmczMDMyK2FyZzMwMzMrYXJnMzAzNCthcmczMDM1K2FyZzMwMzYrYXJnMzAzNythcmcz
MDM4K2FyZzMwMzkrYXJnMzA0MCthcmczMDQxK2FyZzMwNDIrYXJnMzA0MythcmczMDQ0K2FyZzMw
NDUrYXJnMzA0NithcmczMDQ3K2FyZzMwNDgrYXJnMzA0OSthcmczMDUwK2FyZzMwNTErYXJnMzA1
MithcmczMDUzK2FyZzMwNTQrYXJnMzA1NSthcmczMDU2K2FyZzMwNTcrYXJnMzA1OCthcmczMDU5
K2FyZzMwNjArYXJnMzA2MSthcmczMDYyK2FyZzMwNjMrYXJnMzA2NCthcmczMDY1K2FyZzMwNjYr
YXJnMzA2NythcmczMDY4K2FyZzMwNjkrYXJnMzA3MCthcmczMDcxK2FyZzMwNzIrYXJnMzA3Myth
cmczMDc0K2FyZzMwNzUrYXJnMzA3NithcmczMDc3K2FyZzMwNzgrYXJnMzA3OSthcmczMDgwK2Fy
ZzMwODErYXJnMzA4MithcmczMDgzK2FyZzMwODQrYXJnMzA4NSthcmczMDg2K2FyZzMwODcrYXJn
MzA4OCthcmczMDg5K2FyZzMwOTArYXJnMzA5MSthcmczMDkyK2FyZzMwOTMrYXJnMzA5NCthcmcz
MDk1K2FyZzMwOTYrYXJnMzA5NythcmczMDk4K2FyZzMwOTkrYXJnMzEwMCthcmczMTAxK2FyZzMx
MDIrYXJnMzEwMythcmczMTA0K2FyZzMxMDUrYXJnMzEwNithcmczMTA3K2FyZzMxMDgrYXJnMzEw
OSthcmczMTEwK2FyZzMxMTErYXJnMzExMithcmczMTEzK2FyZzMxMTQrYXJnMzExNSthcmczMTE2
K2FyZzMxMTcrYXJnMzExOCthcmczMTE5K2FyZzMxMjArYXJnMzEyMSthcmczMTIyK2FyZzMxMjMr
YXJnMzEyNCthcmczMTI1K2FyZzMxMjYrYXJnMzEyNythcmczMTI4K2FyZzMxMjkrYXJnMzEzMCth
cmczMTMxK2FyZzMxMzIrYXJnMzEzMythcmczMTM0K2FyZzMxMzUrYXJnMzEzNithcmczMTM3K2Fy
ZzMxMzgrYXJnMzEzOSthcmczMTQwK2FyZzMxNDErYXJnMzE0MithcmczMTQzK2FyZzMxNDQrYXJn
MzE0NSthcmczMTQ2K2FyZzMxNDcrYXJnMzE0OCthcmczMTQ5K2FyZzMxNTArYXJnMzE1MSthcmcz
MTUyK2FyZzMxNTMrYXJnMzE1NCthcmczMTU1K2FyZzMxNTYrYXJnMzE1NythcmczMTU4K2FyZzMx
NTkrYXJnMzE2MCthcmczMTYxK2FyZzMxNjIrYXJnMzE2MythcmczMTY0K2FyZzMxNjUrYXJnMzE2
NithcmczMTY3K2FyZzMxNjgrYXJnMzE2OSthcmczMTcwK2FyZzMxNzErYXJnMzE3MithcmczMTcz
K2FyZzMxNzQrYXJnMzE3NSthcmczMTc2K2FyZzMxNzcrYXJnMzE3OCthcmczMTc5K2FyZzMxODAr
YXJnMzE4MSthcmczMTgyK2FyZzMxODMrYXJnMzE4NCthcmczMTg1K2FyZzMxODYrYXJnMzE4Nyth
cmczMTg4K2FyZzMxODkrYXJnMzE5MCthcmczMTkxK2FyZzMxOTIrYXJnMzE5MythcmczMTk0K2Fy
ZzMxOTUrYXJnMzE5NithcmczMTk3K2FyZzMxOTgrYXJnMzE5OSthcmczMjAwK2FyZzMyMDErYXJn
MzIwMithcmczMjAzK2FyZzMyMDQrYXJnMzIwNSthcmczMjA2K2FyZzMyMDcrYXJnMzIwOCthcmcz
MjA5K2FyZzMyMTArYXJnMzIxMSthcmczMjEyK2FyZzMyMTMrYXJnMzIxNCthcmczMjE1K2FyZzMy
MTYrYXJnMzIxNythcmczMjE4K2FyZzMyMTkrYXJnMzIyMCthcmczMjIxK2FyZzMyMjIrYXJnMzIy
MythcmczMjI0K2FyZzMyMjUrYXJnMzIyNithcmczMjI3K2FyZzMyMjgrYXJnMzIyOSthcmczMjMw
K2FyZzMyMzErYXJnMzIzMithcmczMjMzK2FyZzMyMzQrYXJnMzIzNSthcmczMjM2K2FyZzMyMzcr
YXJnMzIzOCthcmczMjM5K2FyZzMyNDArYXJnMzI0MSthcmczMjQyK2FyZzMyNDMrYXJnMzI0NCth
cmczMjQ1K2FyZzMyNDYrYXJnMzI0NythcmczMjQ4K2FyZzMyNDkrYXJnMzI1MCthcmczMjUxK2Fy
ZzMyNTIrYXJnMzI1MythcmczMjU0K2FyZzMyNTUrYXJnMzI1NithcmczMjU3K2FyZzMyNTgrYXJn
MzI1OSthcmczMjYwK2FyZzMyNjErYXJnMzI2MithcmczMjYzK2FyZzMyNjQrYXJnMzI2NSthcmcz
MjY2K2FyZzMyNjcrYXJnMzI2OCthcmczMjY5K2FyZzMyNzArYXJnMzI3MSthcmczMjcyK2FyZzMy
NzMrYXJnMzI3NCthcmczMjc1K2FyZzMyNzYrYXJnMzI3NythcmczMjc4K2FyZzMyNzkrYXJnMzI4
MCthcmczMjgxK2FyZzMyODIrYXJnMzI4MythcmczMjg0K2FyZzMyODUrYXJnMzI4NithcmczMjg3
K2FyZzMyODgrYXJnMzI4OSthcmczMjkwK2FyZzMyOTErYXJnMzI5MithcmczMjkzK2FyZzMyOTQr
YXJnMzI5NSthcmczMjk2K2FyZzMyOTcrYXJnMzI5OCthcmczMjk5K2FyZzMzMDArYXJnMzMwMSth
cmczMzAyK2FyZzMzMDMrYXJnMzMwNCthcmczMzA1K2FyZzMzMDYrYXJnMzMwNythcmczMzA4K2Fy
ZzMzMDkrYXJnMzMxMCthcmczMzExK2FyZzMzMTIrYXJnMzMxMythcmczMzE0K2FyZzMzMTUrYXJn
MzMxNithcmczMzE3K2FyZzMzMTgrYXJnMzMxOSthcmczMzIwK2FyZzMzMjErYXJnMzMyMithcmcz
MzIzK2FyZzMzMjQrYXJnMzMyNSthcmczMzI2K2FyZzMzMjcrYXJnMzMyOCthcmczMzI5K2FyZzMz
MzArYXJnMzMzMSthcmczMzMyK2FyZzMzMzMrYXJnMzMzNCthcmczMzM1K2FyZzMzMzYrYXJnMzMz
NythcmczMzM4K2FyZzMzMzkrYXJnMzM0MCthcmczMzQxK2FyZzMzNDIrYXJnMzM0MythcmczMzQ0
K2FyZzMzNDUrYXJnMzM0NithcmczMzQ3K2FyZzMzNDgrYXJnMzM0OSthcmczMzUwK2FyZzMzNTEr
YXJnMzM1MithcmczMzUzK2FyZzMzNTQrYXJnMzM1NSthcmczMzU2K2FyZzMzNTcrYXJnMzM1OCth
cmczMzU5K2FyZzMzNjArYXJnMzM2MSthcmczMzYyK2FyZzMzNjMrYXJnMzM2NCthcmczMzY1K2Fy
ZzMzNjYrYXJnMzM2NythcmczMzY4K2FyZzMzNjkrYXJnMzM3MCthcmczMzcxK2FyZzMzNzIrYXJn
MzM3MythcmczMzc0K2FyZzMzNzUrYXJnMzM3NithcmczMzc3K2FyZzMzNzgrYXJnMzM3OSthcmcz
MzgwK2FyZzMzODErYXJnMzM4MithcmczMzgzK2FyZzMzODQrYXJnMzM4NSthcmczMzg2K2FyZzMz
ODcrYXJnMzM4OCthcmczMzg5K2FyZzMzOTArYXJnMzM5MSthcmczMzkyK2FyZzMzOTMrYXJnMzM5
NCthcmczMzk1K2FyZzMzOTYrYXJnMzM5NythcmczMzk4K2FyZzMzOTkrYXJnMzQwMCthcmczNDAx
K2FyZzM0MDIrYXJnMzQwMythcmczNDA0K2FyZzM0MDUrYXJnMzQwNithcmczNDA3K2FyZzM0MDgr
YXJnMzQwOSthcmczNDEwK2FyZzM0MTErYXJnMzQxMithcmczNDEzK2FyZzM0MTQrYXJnMzQxNSth
cmczNDE2K2FyZzM0MTcrYXJnMzQxOCthcmczNDE5K2FyZzM0MjArYXJnMzQyMSthcmczNDIyK2Fy
ZzM0MjMrYXJnMzQyNCthcmczNDI1K2FyZzM0MjYrYXJnMzQyNythcmczNDI4K2FyZzM0MjkrYXJn
MzQzMCthcmczNDMxK2FyZzM0MzIrYXJnMzQzMythcmczNDM0K2FyZzM0MzUrYXJnMzQzNithcmcz
NDM3K2FyZzM0MzgrYXJnMzQzOSthcmczNDQwK2FyZzM0NDErYXJnMzQ0MithcmczNDQzK2FyZzM0
NDQrYXJnMzQ0NSthcmczNDQ2K2FyZzM0NDcrYXJnMzQ0OCthcmczNDQ5K2FyZzM0NTArYXJnMzQ1
MSthcmczNDUyK2FyZzM0NTMrYXJnMzQ1NCthcmczNDU1K2FyZzM0NTYrYXJnMzQ1NythcmczNDU4
K2FyZzM0NTkrYXJnMzQ2MCthcmczNDYxK2FyZzM0NjIrYXJnMzQ2MythcmczNDY0K2FyZzM0NjUr
YXJnMzQ2NithcmczNDY3K2FyZzM0NjgrYXJnMzQ2OSthcmczNDcwK2FyZzM0NzErYXJnMzQ3Mith
cmczNDczK2FyZzM0NzQrYXJnMzQ3NSthcmczNDc2K2FyZzM0NzcrYXJnMzQ3OCthcmczNDc5K2Fy
ZzM0ODArYXJnMzQ4MSthcmczNDgyK2FyZzM0ODMrYXJnMzQ4NCthcmczNDg1K2FyZzM0ODYrYXJn
MzQ4NythcmczNDg4K2FyZzM0ODkrYXJnMzQ5MCthcmczNDkxK2FyZzM0OTIrYXJnMzQ5Mythcmcz
NDk0K2FyZzM0OTUrYXJnMzQ5NithcmczNDk3K2FyZzM0OTgrYXJnMzQ5OSthcmczNTAwK2FyZzM1
MDErYXJnMzUwMithcmczNTAzK2FyZzM1MDQrYXJnMzUwNSthcmczNTA2K2FyZzM1MDcrYXJnMzUw
OCthcmczNTA5K2FyZzM1MTArYXJnMzUxMSthcmczNTEyK2FyZzM1MTMrYXJnMzUxNCthcmczNTE1
K2FyZzM1MTYrYXJnMzUxNythcmczNTE4K2FyZzM1MTkrYXJnMzUyMCthcmczNTIxK2FyZzM1MjIr
YXJnMzUyMythcmczNTI0K2FyZzM1MjUrYXJnMzUyNithcmczNTI3K2FyZzM1MjgrYXJnMzUyOSth
cmczNTMwK2FyZzM1MzErYXJnMzUzMithcmczNTMzK2FyZzM1MzQrYXJnMzUzNSthcmczNTM2K2Fy
ZzM1MzcrYXJnMzUzOCthcmczNTM5K2FyZzM1NDArYXJnMzU0MSthcmczNTQyK2FyZzM1NDMrYXJn
MzU0NCthcmczNTQ1K2FyZzM1NDYrYXJnMzU0NythcmczNTQ4K2FyZzM1NDkrYXJnMzU1MCthcmcz
NTUxK2FyZzM1NTIrYXJnMzU1MythcmczNTU0K2FyZzM1NTUrYXJnMzU1NithcmczNTU3K2FyZzM1
NTgrYXJnMzU1OSthcmczNTYwK2FyZzM1NjErYXJnMzU2MithcmczNTYzK2FyZzM1NjQrYXJnMzU2
NSthcmczNTY2K2FyZzM1NjcrYXJnMzU2OCthcmczNTY5K2FyZzM1NzArYXJnMzU3MSthcmczNTcy
K2FyZzM1NzMrYXJnMzU3NCthcmczNTc1K2FyZzM1NzYrYXJnMzU3NythcmczNTc4K2FyZzM1Nzkr
YXJnMzU4MCthcmczNTgxK2FyZzM1ODIrYXJnMzU4MythcmczNTg0K2FyZzM1ODUrYXJnMzU4Nith
cmczNTg3K2FyZzM1ODgrYXJnMzU4OSthcmczNTkwK2FyZzM1OTErYXJnMzU5MithcmczNTkzK2Fy
ZzM1OTQrYXJnMzU5NSthcmczNTk2K2FyZzM1OTcrYXJnMzU5OCthcmczNTk5K2FyZzM2MDArYXJn
MzYwMSthcmczNjAyK2FyZzM2MDMrYXJnMzYwNCthcmczNjA1K2FyZzM2MDYrYXJnMzYwNythcmcz
NjA4K2FyZzM2MDkrYXJnMzYxMCthcmczNjExK2FyZzM2MTIrYXJnMzYxMythcmczNjE0K2FyZzM2
MTUrYXJnMzYxNithcmczNjE3K2FyZzM2MTgrYXJnMzYxOSthcmczNjIwK2FyZzM2MjErYXJnMzYy
MithcmczNjIzK2FyZzM2MjQrYXJnMzYyNSthcmczNjI2K2FyZzM2MjcrYXJnMzYyOCthcmczNjI5
K2FyZzM2MzArYXJnMzYzMSthcmczNjMyK2FyZzM2MzMrYXJnMzYzNCthcmczNjM1K2FyZzM2MzYr
YXJnMzYzNythcmczNjM4K2FyZzM2MzkrYXJnMzY0MCthcmczNjQxK2FyZzM2NDIrYXJnMzY0Myth
cmczNjQ0K2FyZzM2NDUrYXJnMzY0NithcmczNjQ3K2FyZzM2NDgrYXJnMzY0OSthcmczNjUwK2Fy
ZzM2NTErYXJnMzY1MithcmczNjUzK2FyZzM2NTQrYXJnMzY1NSthcmczNjU2K2FyZzM2NTcrYXJn
MzY1OCthcmczNjU5K2FyZzM2NjArYXJnMzY2MSthcmczNjYyK2FyZzM2NjMrYXJnMzY2NCthcmcz
NjY1K2FyZzM2NjYrYXJnMzY2NythcmczNjY4K2FyZzM2NjkrYXJnMzY3MCthcmczNjcxK2FyZzM2
NzIrYXJnMzY3MythcmczNjc0K2FyZzM2NzUrYXJnMzY3NithcmczNjc3K2FyZzM2NzgrYXJnMzY3
OSthcmczNjgwK2FyZzM2ODErYXJnMzY4MithcmczNjgzK2FyZzM2ODQrYXJnMzY4NSthcmczNjg2
K2FyZzM2ODcrYXJnMzY4OCthcmczNjg5K2FyZzM2OTArYXJnMzY5MSthcmczNjkyK2FyZzM2OTMr
YXJnMzY5NCthcmczNjk1K2FyZzM2OTYrYXJnMzY5NythcmczNjk4K2FyZzM2OTkrYXJnMzcwMCth
cmczNzAxK2FyZzM3MDIrYXJnMzcwMythcmczNzA0K2FyZzM3MDUrYXJnMzcwNithcmczNzA3K2Fy
ZzM3MDgrYXJnMzcwOSthcmczNzEwK2FyZzM3MTErYXJnMzcxMithcmczNzEzK2FyZzM3MTQrYXJn
MzcxNSthcmczNzE2K2FyZzM3MTcrYXJnMzcxOCthcmczNzE5K2FyZzM3MjArYXJnMzcyMSthcmcz
NzIyK2FyZzM3MjMrYXJnMzcyNCthcmczNzI1K2FyZzM3MjYrYXJnMzcyNythcmczNzI4K2FyZzM3
MjkrYXJnMzczMCthcmczNzMxK2FyZzM3MzIrYXJnMzczMythcmczNzM0K2FyZzM3MzUrYXJnMzcz
NithcmczNzM3K2FyZzM3MzgrYXJnMzczOSthcmczNzQwK2FyZzM3NDErYXJnMzc0MithcmczNzQz
K2FyZzM3NDQrYXJnMzc0NSthcmczNzQ2K2FyZzM3NDcrYXJnMzc0OCthcmczNzQ5K2FyZzM3NTAr
YXJnMzc1MSthcmczNzUyK2FyZzM3NTMrYXJnMzc1NCthcmczNzU1K2FyZzM3NTYrYXJnMzc1Nyth
cmczNzU4K2FyZzM3NTkrYXJnMzc2MCthcmczNzYxK2FyZzM3NjIrYXJnMzc2MythcmczNzY0K2Fy
ZzM3NjUrYXJnMzc2NithcmczNzY3K2FyZzM3NjgrYXJnMzc2OSthcmczNzcwK2FyZzM3NzErYXJn
Mzc3MithcmczNzczK2FyZzM3NzQrYXJnMzc3NSthcmczNzc2K2FyZzM3NzcrYXJnMzc3OCthcmcz
Nzc5K2FyZzM3ODArYXJnMzc4MSthcmczNzgyK2FyZzM3ODMrYXJnMzc4NCthcmczNzg1K2FyZzM3
ODYrYXJnMzc4NythcmczNzg4K2FyZzM3ODkrYXJnMzc5MCthcmczNzkxK2FyZzM3OTIrYXJnMzc5
MythcmczNzk0K2FyZzM3OTUrYXJnMzc5NithcmczNzk3K2FyZzM3OTgrYXJnMzc5OSthcmczODAw
K2FyZzM4MDErYXJnMzgwMithcmczODAzK2FyZzM4MDQrYXJnMzgwNSthcmczODA2K2FyZzM4MDcr
YXJnMzgwOCthcmczODA5K2FyZzM4MTArYXJnMzgxMSthcmczODEyK2FyZzM4MTMrYXJnMzgxNCth
cmczODE1K2FyZzM4MTYrYXJnMzgxNythcmczODE4K2FyZzM4MTkrYXJnMzgyMCthcmczODIxK2Fy
ZzM4MjIrYXJnMzgyMythcmczODI0K2FyZzM4MjUrYXJnMzgyNithcmczODI3K2FyZzM4MjgrYXJn
MzgyOSthcmczODMwK2FyZzM4MzErYXJnMzgzMithcmczODMzK2FyZzM4MzQrYXJnMzgzNSthcmcz
ODM2K2FyZzM4MzcrYXJnMzgzOCthcmczODM5K2FyZzM4NDArYXJnMzg0MSthcmczODQyK2FyZzM4
NDMrYXJnMzg0NCthcmczODQ1K2FyZzM4NDYrYXJnMzg0NythcmczODQ4K2FyZzM4NDkrYXJnMzg1
MCthcmczODUxK2FyZzM4NTIrYXJnMzg1MythcmczODU0K2FyZzM4NTUrYXJnMzg1NithcmczODU3
K2FyZzM4NTgrYXJnMzg1OSthcmczODYwK2FyZzM4NjErYXJnMzg2MithcmczODYzK2FyZzM4NjQr
YXJnMzg2NSthcmczODY2K2FyZzM4NjcrYXJnMzg2OCthcmczODY5K2FyZzM4NzArYXJnMzg3MSth
cmczODcyK2FyZzM4NzMrYXJnMzg3NCthcmczODc1K2FyZzM4NzYrYXJnMzg3NythcmczODc4K2Fy
ZzM4NzkrYXJnMzg4MCthcmczODgxK2FyZzM4ODIrYXJnMzg4MythcmczODg0K2FyZzM4ODUrYXJn
Mzg4NithcmczODg3K2FyZzM4ODgrYXJnMzg4OSthcmczODkwK2FyZzM4OTErYXJnMzg5Mithcmcz
ODkzK2FyZzM4OTQrYXJnMzg5NSthcmczODk2K2FyZzM4OTcrYXJnMzg5OCthcmczODk5K2FyZzM5
MDArYXJnMzkwMSthcmczOTAyK2FyZzM5MDMrYXJnMzkwNCthcmczOTA1K2FyZzM5MDYrYXJnMzkw
NythcmczOTA4K2FyZzM5MDkrYXJnMzkxMCthcmczOTExK2FyZzM5MTIrYXJnMzkxMythcmczOTE0
K2FyZzM5MTUrYXJnMzkxNithcmczOTE3K2FyZzM5MTgrYXJnMzkxOSthcmczOTIwK2FyZzM5MjEr
YXJnMzkyMithcmczOTIzK2FyZzM5MjQrYXJnMzkyNSthcmczOTI2K2FyZzM5MjcrYXJnMzkyOCth
cmczOTI5K2FyZzM5MzArYXJnMzkzMSthcmczOTMyK2FyZzM5MzMrYXJnMzkzNCthcmczOTM1K2Fy
ZzM5MzYrYXJnMzkzNythcmczOTM4K2FyZzM5MzkrYXJnMzk0MCthcmczOTQxK2FyZzM5NDIrYXJn
Mzk0MythcmczOTQ0K2FyZzM5NDUrYXJnMzk0NithcmczOTQ3K2FyZzM5NDgrYXJnMzk0OSthcmcz
OTUwK2FyZzM5NTErYXJnMzk1MithcmczOTUzK2FyZzM5NTQrYXJnMzk1NSthcmczOTU2K2FyZzM5
NTcrYXJnMzk1OCthcmczOTU5K2FyZzM5NjArYXJnMzk2MSthcmczOTYyK2FyZzM5NjMrYXJnMzk2
NCthcmczOTY1K2FyZzM5NjYrYXJnMzk2NythcmczOTY4K2FyZzM5NjkrYXJnMzk3MCthcmczOTcx
K2FyZzM5NzIrYXJnMzk3MythcmczOTc0K2FyZzM5NzUrYXJnMzk3NithcmczOTc3K2FyZzM5Nzgr
YXJnMzk3OSthcmczOTgwK2FyZzM5ODErYXJnMzk4MithcmczOTgzK2FyZzM5ODQrYXJnMzk4NSth
cmczOTg2K2FyZzM5ODcrYXJnMzk4OCthcmczOTg5K2FyZzM5OTArYXJnMzk5MSthcmczOTkyK2Fy
ZzM5OTMrYXJnMzk5NCthcmczOTk1K2FyZzM5OTYrYXJnMzk5NythcmczOTk4K2FyZzM5OTkrYXJn
NDAwMCthcmc0MDAxK2FyZzQwMDIrYXJnNDAwMythcmc0MDA0K2FyZzQwMDUrYXJnNDAwNithcmc0
MDA3K2FyZzQwMDgrYXJnNDAwOSthcmc0MDEwK2FyZzQwMTErYXJnNDAxMithcmc0MDEzK2FyZzQw
MTQrYXJnNDAxNSthcmc0MDE2K2FyZzQwMTcrYXJnNDAxOCthcmc0MDE5K2FyZzQwMjArYXJnNDAy
MSthcmc0MDIyK2FyZzQwMjMrYXJnNDAyNCthcmc0MDI1K2FyZzQwMjYrYXJnNDAyNythcmc0MDI4
K2FyZzQwMjkrYXJnNDAzMCthcmc0MDMxK2FyZzQwMzIrYXJnNDAzMythcmc0MDM0K2FyZzQwMzUr
YXJnNDAzNithcmc0MDM3K2FyZzQwMzgrYXJnNDAzOSthcmc0MDQwK2FyZzQwNDErYXJnNDA0Mith
cmc0MDQzK2FyZzQwNDQrYXJnNDA0NSthcmc0MDQ2K2FyZzQwNDcrYXJnNDA0OCthcmc0MDQ5K2Fy
ZzQwNTArYXJnNDA1MSthcmc0MDUyK2FyZzQwNTMrYXJnNDA1NCthcmc0MDU1K2FyZzQwNTYrYXJn
NDA1Nythcmc0MDU4K2FyZzQwNTkrYXJnNDA2MCthcmc0MDYxK2FyZzQwNjIrYXJnNDA2Mythcmc0
MDY0K2FyZzQwNjUrYXJnNDA2Nithcmc0MDY3K2FyZzQwNjgrYXJnNDA2OSthcmc0MDcwK2FyZzQw
NzErYXJnNDA3Mithcmc0MDczK2FyZzQwNzQrYXJnNDA3NSthcmc0MDc2K2FyZzQwNzcrYXJnNDA3
OCthcmc0MDc5K2FyZzQwODArYXJnNDA4MSthcmc0MDgyK2FyZzQwODMrYXJnNDA4NCthcmc0MDg1
K2FyZzQwODYrYXJnNDA4Nythcmc0MDg4K2FyZzQwODkrYXJnNDA5MCthcmc0MDkxK2FyZzQwOTIr
YXJnNDA5Mythcmc0MDk0K2FyZzQwOTUrYXJnNDA5Nithcmc0MDk3K2FyZzQwOTgrYXJnNDA5OSth
cmc0MTAwK2FyZzQxMDErYXJnNDEwMithcmc0MTAzK2FyZzQxMDQrYXJnNDEwNSthcmc0MTA2K2Fy
ZzQxMDcrYXJnNDEwOCthcmc0MTA5K2FyZzQxMTArYXJnNDExMSthcmc0MTEyK2FyZzQxMTMrYXJn
NDExNCthcmc0MTE1K2FyZzQxMTYrYXJnNDExNythcmc0MTE4K2FyZzQxMTkrYXJnNDEyMCthcmc0
MTIxK2FyZzQxMjIrYXJnNDEyMythcmc0MTI0K2FyZzQxMjUrYXJnNDEyNithcmc0MTI3K2FyZzQx
MjgrYXJnNDEyOSthcmc0MTMwK2FyZzQxMzErYXJnNDEzMithcmc0MTMzK2FyZzQxMzQrYXJnNDEz
NSthcmc0MTM2K2FyZzQxMzcrYXJnNDEzOCthcmc0MTM5K2FyZzQxNDArYXJnNDE0MSthcmc0MTQy
K2FyZzQxNDMrYXJnNDE0NCthcmc0MTQ1K2FyZzQxNDYrYXJnNDE0Nythcmc0MTQ4K2FyZzQxNDkr
YXJnNDE1MCthcmc0MTUxK2FyZzQxNTIrYXJnNDE1Mythcmc0MTU0K2FyZzQxNTUrYXJnNDE1Nith
cmc0MTU3K2FyZzQxNTgrYXJnNDE1OSthcmc0MTYwK2FyZzQxNjErYXJnNDE2Mithcmc0MTYzK2Fy
ZzQxNjQrYXJnNDE2NSthcmc0MTY2K2FyZzQxNjcrYXJnNDE2OCthcmc0MTY5K2FyZzQxNzArYXJn
NDE3MSthcmc0MTcyK2FyZzQxNzMrYXJnNDE3NCthcmc0MTc1K2FyZzQxNzYrYXJnNDE3Nythcmc0
MTc4K2FyZzQxNzkrYXJnNDE4MCthcmc0MTgxK2FyZzQxODIrYXJnNDE4Mythcmc0MTg0K2FyZzQx
ODUrYXJnNDE4Nithcmc0MTg3K2FyZzQxODgrYXJnNDE4OSthcmc0MTkwK2FyZzQxOTErYXJnNDE5
Mithcmc0MTkzK2FyZzQxOTQrYXJnNDE5NSthcmc0MTk2K2FyZzQxOTcrYXJnNDE5OCthcmc0MTk5
K2FyZzQyMDArYXJnNDIwMSthcmc0MjAyK2FyZzQyMDMrYXJnNDIwNCthcmc0MjA1K2FyZzQyMDYr
YXJnNDIwNythcmc0MjA4K2FyZzQyMDkrYXJnNDIxMCthcmc0MjExK2FyZzQyMTIrYXJnNDIxMyth
cmc0MjE0K2FyZzQyMTUrYXJnNDIxNithcmc0MjE3K2FyZzQyMTgrYXJnNDIxOSthcmc0MjIwK2Fy
ZzQyMjErYXJnNDIyMithcmc0MjIzK2FyZzQyMjQrYXJnNDIyNSthcmc0MjI2K2FyZzQyMjcrYXJn
NDIyOCthcmc0MjI5K2FyZzQyMzArYXJnNDIzMSthcmc0MjMyK2FyZzQyMzMrYXJnNDIzNCthcmc0
MjM1K2FyZzQyMzYrYXJnNDIzNythcmc0MjM4K2FyZzQyMzkrYXJnNDI0MCthcmc0MjQxK2FyZzQy
NDIrYXJnNDI0Mythcmc0MjQ0K2FyZzQyNDUrYXJnNDI0Nithcmc0MjQ3K2FyZzQyNDgrYXJnNDI0
OSthcmc0MjUwK2FyZzQyNTErYXJnNDI1Mithcmc0MjUzK2FyZzQyNTQrYXJnNDI1NSthcmc0MjU2
K2FyZzQyNTcrYXJnNDI1OCthcmc0MjU5K2FyZzQyNjArYXJnNDI2MSthcmc0MjYyK2FyZzQyNjMr
YXJnNDI2NCthcmc0MjY1K2FyZzQyNjYrYXJnNDI2Nythcmc0MjY4K2FyZzQyNjkrYXJnNDI3MCth
cmc0MjcxK2FyZzQyNzIrYXJnNDI3Mythcmc0Mjc0K2FyZzQyNzUrYXJnNDI3Nithcmc0Mjc3K2Fy
ZzQyNzgrYXJnNDI3OSthcmc0MjgwK2FyZzQyODErYXJnNDI4Mithcmc0MjgzK2FyZzQyODQrYXJn
NDI4NSthcmc0Mjg2K2FyZzQyODcrYXJnNDI4OCthcmc0Mjg5K2FyZzQyOTArYXJnNDI5MSthcmc0
MjkyK2FyZzQyOTMrYXJnNDI5NCthcmc0Mjk1K2FyZzQyOTYrYXJnNDI5Nythcmc0Mjk4K2FyZzQy
OTkrYXJnNDMwMCthcmc0MzAxK2FyZzQzMDIrYXJnNDMwMythcmc0MzA0K2FyZzQzMDUrYXJnNDMw
Nithcmc0MzA3K2FyZzQzMDgrYXJnNDMwOSthcmc0MzEwK2FyZzQzMTErYXJnNDMxMithcmc0MzEz
K2FyZzQzMTQrYXJnNDMxNSthcmc0MzE2K2FyZzQzMTcrYXJnNDMxOCthcmc0MzE5K2FyZzQzMjAr
YXJnNDMyMSthcmc0MzIyK2FyZzQzMjMrYXJnNDMyNCthcmc0MzI1K2FyZzQzMjYrYXJnNDMyNyth
cmc0MzI4K2FyZzQzMjkrYXJnNDMzMCthcmc0MzMxK2FyZzQzMzIrYXJnNDMzMythcmc0MzM0K2Fy
ZzQzMzUrYXJnNDMzNithcmc0MzM3K2FyZzQzMzgrYXJnNDMzOSthcmc0MzQwK2FyZzQzNDErYXJn
NDM0Mithcmc0MzQzK2FyZzQzNDQrYXJnNDM0NSthcmc0MzQ2K2FyZzQzNDcrYXJnNDM0OCthcmc0
MzQ5K2FyZzQzNTArYXJnNDM1MSthcmc0MzUyK2FyZzQzNTMrYXJnNDM1NCthcmc0MzU1K2FyZzQz
NTYrYXJnNDM1Nythcmc0MzU4K2FyZzQzNTkrYXJnNDM2MCthcmc0MzYxK2FyZzQzNjIrYXJnNDM2
Mythcmc0MzY0K2FyZzQzNjUrYXJnNDM2Nithcmc0MzY3K2FyZzQzNjgrYXJnNDM2OSthcmc0Mzcw
K2FyZzQzNzErYXJnNDM3Mithcmc0MzczK2FyZzQzNzQrYXJnNDM3NSthcmc0Mzc2K2FyZzQzNzcr
YXJnNDM3OCthcmc0Mzc5K2FyZzQzODArYXJnNDM4MSthcmc0MzgyK2FyZzQzODMrYXJnNDM4NCth
cmc0Mzg1K2FyZzQzODYrYXJnNDM4Nythcmc0Mzg4K2FyZzQzODkrYXJnNDM5MCthcmc0MzkxK2Fy
ZzQzOTIrYXJnNDM5Mythcmc0Mzk0K2FyZzQzOTUrYXJnNDM5Nithcmc0Mzk3K2FyZzQzOTgrYXJn
NDM5OSthcmc0NDAwK2FyZzQ0MDErYXJnNDQwMithcmc0NDAzK2FyZzQ0MDQrYXJnNDQwNSthcmc0
NDA2K2FyZzQ0MDcrYXJnNDQwOCthcmc0NDA5K2FyZzQ0MTArYXJnNDQxMSthcmc0NDEyK2FyZzQ0
MTMrYXJnNDQxNCthcmc0NDE1K2FyZzQ0MTYrYXJnNDQxNythcmc0NDE4K2FyZzQ0MTkrYXJnNDQy
MCthcmc0NDIxK2FyZzQ0MjIrYXJnNDQyMythcmc0NDI0K2FyZzQ0MjUrYXJnNDQyNithcmc0NDI3
K2FyZzQ0MjgrYXJnNDQyOSthcmc0NDMwK2FyZzQ0MzErYXJnNDQzMithcmc0NDMzK2FyZzQ0MzQr
YXJnNDQzNSthcmc0NDM2K2FyZzQ0MzcrYXJnNDQzOCthcmc0NDM5K2FyZzQ0NDArYXJnNDQ0MSth
cmc0NDQyK2FyZzQ0NDMrYXJnNDQ0NCthcmc0NDQ1K2FyZzQ0NDYrYXJnNDQ0Nythcmc0NDQ4K2Fy
ZzQ0NDkrYXJnNDQ1MCthcmc0NDUxK2FyZzQ0NTIrYXJnNDQ1Mythcmc0NDU0K2FyZzQ0NTUrYXJn
NDQ1Nithcmc0NDU3K2FyZzQ0NTgrYXJnNDQ1OSthcmc0NDYwK2FyZzQ0NjErYXJnNDQ2Mithcmc0
NDYzK2FyZzQ0NjQrYXJnNDQ2NSthcmc0NDY2K2FyZzQ0NjcrYXJnNDQ2OCthcmc0NDY5K2FyZzQ0
NzArYXJnNDQ3MSthcmc0NDcyK2FyZzQ0NzMrYXJnNDQ3NCthcmc0NDc1K2FyZzQ0NzYrYXJnNDQ3
Nythcmc0NDc4K2FyZzQ0NzkrYXJnNDQ4MCthcmc0NDgxK2FyZzQ0ODIrYXJnNDQ4Mythcmc0NDg0
K2FyZzQ0ODUrYXJnNDQ4Nithcmc0NDg3K2FyZzQ0ODgrYXJnNDQ4OSthcmc0NDkwK2FyZzQ0OTEr
YXJnNDQ5Mithcmc0NDkzK2FyZzQ0OTQrYXJnNDQ5NSthcmc0NDk2K2FyZzQ0OTcrYXJnNDQ5OCth
cmc0NDk5K2FyZzQ1MDArYXJnNDUwMSthcmc0NTAyK2FyZzQ1MDMrYXJnNDUwNCthcmc0NTA1K2Fy
ZzQ1MDYrYXJnNDUwNythcmc0NTA4K2FyZzQ1MDkrYXJnNDUxMCthcmc0NTExK2FyZzQ1MTIrYXJn
NDUxMythcmc0NTE0K2FyZzQ1MTUrYXJnNDUxNithcmc0NTE3K2FyZzQ1MTgrYXJnNDUxOSthcmc0
NTIwK2FyZzQ1MjErYXJnNDUyMithcmc0NTIzK2FyZzQ1MjQrYXJnNDUyNSthcmc0NTI2K2FyZzQ1
MjcrYXJnNDUyOCthcmc0NTI5K2FyZzQ1MzArYXJnNDUzMSthcmc0NTMyK2FyZzQ1MzMrYXJnNDUz
NCthcmc0NTM1K2FyZzQ1MzYrYXJnNDUzNythcmc0NTM4K2FyZzQ1MzkrYXJnNDU0MCthcmc0NTQx
K2FyZzQ1NDIrYXJnNDU0Mythcmc0NTQ0K2FyZzQ1NDUrYXJnNDU0Nithcmc0NTQ3K2FyZzQ1NDgr
YXJnNDU0OSthcmc0NTUwK2FyZzQ1NTErYXJnNDU1Mithcmc0NTUzK2FyZzQ1NTQrYXJnNDU1NSth
cmc0NTU2K2FyZzQ1NTcrYXJnNDU1OCthcmc0NTU5K2FyZzQ1NjArYXJnNDU2MSthcmc0NTYyK2Fy
ZzQ1NjMrYXJnNDU2NCthcmc0NTY1K2FyZzQ1NjYrYXJnNDU2Nythcmc0NTY4K2FyZzQ1NjkrYXJn
NDU3MCthcmc0NTcxK2FyZzQ1NzIrYXJnNDU3Mythcmc0NTc0K2FyZzQ1NzUrYXJnNDU3Nithcmc0
NTc3K2FyZzQ1NzgrYXJnNDU3OSthcmc0NTgwK2FyZzQ1ODErYXJnNDU4Mithcmc0NTgzK2FyZzQ1
ODQrYXJnNDU4NSthcmc0NTg2K2FyZzQ1ODcrYXJnNDU4OCthcmc0NTg5K2FyZzQ1OTArYXJnNDU5
MSthcmc0NTkyK2FyZzQ1OTMrYXJnNDU5NCthcmc0NTk1K2FyZzQ1OTYrYXJnNDU5Nythcmc0NTk4
K2FyZzQ1OTkrYXJnNDYwMCthcmc0NjAxK2FyZzQ2MDIrYXJnNDYwMythcmc0NjA0K2FyZzQ2MDUr
YXJnNDYwNithcmc0NjA3K2FyZzQ2MDgrYXJnNDYwOSthcmc0NjEwK2FyZzQ2MTErYXJnNDYxMith
cmc0NjEzK2FyZzQ2MTQrYXJnNDYxNSthcmc0NjE2K2FyZzQ2MTcrYXJnNDYxOCthcmc0NjE5K2Fy
ZzQ2MjArYXJnNDYyMSthcmc0NjIyK2FyZzQ2MjMrYXJnNDYyNCthcmc0NjI1K2FyZzQ2MjYrYXJn
NDYyNythcmc0NjI4K2FyZzQ2MjkrYXJnNDYzMCthcmc0NjMxK2FyZzQ2MzIrYXJnNDYzMythcmc0
NjM0K2FyZzQ2MzUrYXJnNDYzNithcmc0NjM3K2FyZzQ2MzgrYXJnNDYzOSthcmc0NjQwK2FyZzQ2
NDErYXJnNDY0Mithcmc0NjQzK2FyZzQ2NDQrYXJnNDY0NSthcmc0NjQ2K2FyZzQ2NDcrYXJnNDY0
OCthcmc0NjQ5K2FyZzQ2NTArYXJnNDY1MSthcmc0NjUyK2FyZzQ2NTMrYXJnNDY1NCthcmc0NjU1
K2FyZzQ2NTYrYXJnNDY1Nythcmc0NjU4K2FyZzQ2NTkrYXJnNDY2MCthcmc0NjYxK2FyZzQ2NjIr
YXJnNDY2Mythcmc0NjY0K2FyZzQ2NjUrYXJnNDY2Nithcmc0NjY3K2FyZzQ2NjgrYXJnNDY2OSth
cmc0NjcwK2FyZzQ2NzErYXJnNDY3Mithcmc0NjczK2FyZzQ2NzQrYXJnNDY3NSthcmc0Njc2K2Fy
ZzQ2NzcrYXJnNDY3OCthcmc0Njc5K2FyZzQ2ODArYXJnNDY4MSthcmc0NjgyK2FyZzQ2ODMrYXJn
NDY4NCthcmc0Njg1K2FyZzQ2ODYrYXJnNDY4Nythcmc0Njg4K2FyZzQ2ODkrYXJnNDY5MCthcmc0
NjkxK2FyZzQ2OTIrYXJnNDY5Mythcmc0Njk0K2FyZzQ2OTUrYXJnNDY5Nithcmc0Njk3K2FyZzQ2
OTgrYXJnNDY5OSthcmc0NzAwK2FyZzQ3MDErYXJnNDcwMithcmc0NzAzK2FyZzQ3MDQrYXJnNDcw
NSthcmc0NzA2K2FyZzQ3MDcrYXJnNDcwOCthcmc0NzA5K2FyZzQ3MTArYXJnNDcxMSthcmc0NzEy
K2FyZzQ3MTMrYXJnNDcxNCthcmc0NzE1K2FyZzQ3MTYrYXJnNDcxNythcmc0NzE4K2FyZzQ3MTkr
YXJnNDcyMCthcmc0NzIxK2FyZzQ3MjIrYXJnNDcyMythcmc0NzI0K2FyZzQ3MjUrYXJnNDcyNith
cmc0NzI3K2FyZzQ3MjgrYXJnNDcyOSthcmc0NzMwK2FyZzQ3MzErYXJnNDczMithcmc0NzMzK2Fy
ZzQ3MzQrYXJnNDczNSthcmc0NzM2K2FyZzQ3MzcrYXJnNDczOCthcmc0NzM5K2FyZzQ3NDArYXJn
NDc0MSthcmc0NzQyK2FyZzQ3NDMrYXJnNDc0NCthcmc0NzQ1K2FyZzQ3NDYrYXJnNDc0Nythcmc0
NzQ4K2FyZzQ3NDkrYXJnNDc1MCthcmc0NzUxK2FyZzQ3NTIrYXJnNDc1Mythcmc0NzU0K2FyZzQ3
NTUrYXJnNDc1Nithcmc0NzU3K2FyZzQ3NTgrYXJnNDc1OSthcmc0NzYwK2FyZzQ3NjErYXJnNDc2
Mithcmc0NzYzK2FyZzQ3NjQrYXJnNDc2NSthcmc0NzY2K2FyZzQ3NjcrYXJnNDc2OCthcmc0NzY5
K2FyZzQ3NzArYXJnNDc3MSthcmc0NzcyK2FyZzQ3NzMrYXJnNDc3NCthcmc0Nzc1K2FyZzQ3NzYr
YXJnNDc3Nythcmc0Nzc4K2FyZzQ3NzkrYXJnNDc4MCthcmc0NzgxK2FyZzQ3ODIrYXJnNDc4Myth
cmc0Nzg0K2FyZzQ3ODUrYXJnNDc4Nithcmc0Nzg3K2FyZzQ3ODgrYXJnNDc4OSthcmc0NzkwK2Fy
ZzQ3OTErYXJnNDc5Mithcmc0NzkzK2FyZzQ3OTQrYXJnNDc5NSthcmc0Nzk2K2FyZzQ3OTcrYXJn
NDc5OCthcmc0Nzk5K2FyZzQ4MDArYXJnNDgwMSthcmc0ODAyK2FyZzQ4MDMrYXJnNDgwNCthcmc0
ODA1K2FyZzQ4MDYrYXJnNDgwNythcmc0ODA4K2FyZzQ4MDkrYXJnNDgxMCthcmc0ODExK2FyZzQ4
MTIrYXJnNDgxMythcmc0ODE0K2FyZzQ4MTUrYXJnNDgxNithcmc0ODE3K2FyZzQ4MTgrYXJnNDgx
OSthcmc0ODIwK2FyZzQ4MjErYXJnNDgyMithcmc0ODIzK2FyZzQ4MjQrYXJnNDgyNSthcmc0ODI2
K2FyZzQ4MjcrYXJnNDgyOCthcmc0ODI5K2FyZzQ4MzArYXJnNDgzMSthcmc0ODMyK2FyZzQ4MzMr
YXJnNDgzNCthcmc0ODM1K2FyZzQ4MzYrYXJnNDgzNythcmc0ODM4K2FyZzQ4MzkrYXJnNDg0MCth
cmc0ODQxK2FyZzQ4NDIrYXJnNDg0Mythcmc0ODQ0K2FyZzQ4NDUrYXJnNDg0Nithcmc0ODQ3K2Fy
ZzQ4NDgrYXJnNDg0OSthcmc0ODUwK2FyZzQ4NTErYXJnNDg1Mithcmc0ODUzK2FyZzQ4NTQrYXJn
NDg1NSthcmc0ODU2K2FyZzQ4NTcrYXJnNDg1OCthcmc0ODU5K2FyZzQ4NjArYXJnNDg2MSthcmc0
ODYyK2FyZzQ4NjMrYXJnNDg2NCthcmc0ODY1K2FyZzQ4NjYrYXJnNDg2Nythcmc0ODY4K2FyZzQ4
NjkrYXJnNDg3MCthcmc0ODcxK2FyZzQ4NzIrYXJnNDg3Mythcmc0ODc0K2FyZzQ4NzUrYXJnNDg3
Nithcmc0ODc3K2FyZzQ4NzgrYXJnNDg3OSthcmc0ODgwK2FyZzQ4ODErYXJnNDg4Mithcmc0ODgz
K2FyZzQ4ODQrYXJnNDg4NSthcmc0ODg2K2FyZzQ4ODcrYXJnNDg4OCthcmc0ODg5K2FyZzQ4OTAr
YXJnNDg5MSthcmc0ODkyK2FyZzQ4OTMrYXJnNDg5NCthcmc0ODk1K2FyZzQ4OTYrYXJnNDg5Nyth
cmc0ODk4K2FyZzQ4OTkrYXJnNDkwMCthcmc0OTAxK2FyZzQ5MDIrYXJnNDkwMythcmc0OTA0K2Fy
ZzQ5MDUrYXJnNDkwNithcmc0OTA3K2FyZzQ5MDgrYXJnNDkwOSthcmc0OTEwK2FyZzQ5MTErYXJn
NDkxMithcmc0OTEzK2FyZzQ5MTQrYXJnNDkxNSthcmc0OTE2K2FyZzQ5MTcrYXJnNDkxOCthcmc0
OTE5K2FyZzQ5MjArYXJnNDkyMSthcmc0OTIyK2FyZzQ5MjMrYXJnNDkyNCthcmc0OTI1K2FyZzQ5
MjYrYXJnNDkyNythcmc0OTI4K2FyZzQ5MjkrYXJnNDkzMCthcmc0OTMxK2FyZzQ5MzIrYXJnNDkz
Mythcmc0OTM0K2FyZzQ5MzUrYXJnNDkzNithcmc0OTM3K2FyZzQ5MzgrYXJnNDkzOSthcmc0OTQw
K2FyZzQ5NDErYXJnNDk0Mithcmc0OTQzK2FyZzQ5NDQrYXJnNDk0NSthcmc0OTQ2K2FyZzQ5NDcr
YXJnNDk0OCthcmc0OTQ5K2FyZzQ5NTArYXJnNDk1MSthcmc0OTUyK2FyZzQ5NTMrYXJnNDk1NCth
cmc0OTU1K2FyZzQ5NTYrYXJnNDk1Nythcmc0OTU4K2FyZzQ5NTkrYXJnNDk2MCthcmc0OTYxK2Fy
ZzQ5NjIrYXJnNDk2Mythcmc0OTY0K2FyZzQ5NjUrYXJnNDk2Nithcmc0OTY3K2FyZzQ5NjgrYXJn
NDk2OSthcmc0OTcwK2FyZzQ5NzErYXJnNDk3Mithcmc0OTczK2FyZzQ5NzQrYXJnNDk3NSthcmc0
OTc2K2FyZzQ5NzcrYXJnNDk3OCthcmc0OTc5K2FyZzQ5ODArYXJnNDk4MSthcmc0OTgyK2FyZzQ5
ODMrYXJnNDk4NCthcmc0OTg1K2FyZzQ5ODYrYXJnNDk4Nythcmc0OTg4K2FyZzQ5ODkrYXJnNDk5
MCthcmc0OTkxK2FyZzQ5OTIrYXJnNDk5Mythcmc0OTk0K2FyZzQ5OTUrYXJnNDk5Nithcmc0OTk3
K2FyZzQ5OTgrYXJnNDk5OTt9Cit2b2lkIHRlc3RDYWxsRnVuY3Rpb25XaXRoSGVsbGFBcmd1bWVu
dHMzKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOworCisgICAgVmVjdG9yPFZhbHVlKj4gYXJnczsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgNTAwMDsgKytpKQorICAgICAgICBhcmdzLmFwcGVuZChyb290LT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDA5NSAtIDUwMDAgKyBpIC0gMSkp
OworCisgICAgQ0NhbGxWYWx1ZSogY2FsbCA9IHJvb3QtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigK
KyAgICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4oZnVu
Y3Rpb25XaXRoSGVsbGFBcmd1bWVudHMzLCBCM0NDYWxsUHRyVGFnKSkpOworICAgIGNhbGwtPmFw
cGVuZEFyZ3MoYXJncyk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgY2FsbCk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29tcGlsYXRp
b24+IGNvbXBpbGF0aW9uID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgQ0hFQ0soaW52b2tlPGlu
dD4oKmNvbXBpbGF0aW9uKSA9PSBpbnZva2U8aW50PigqY29tcGlsYXRpb24pKTsKKyAgICBDSEVD
SyhpbnZva2U8aW50PigqY29tcGlsYXRpb24pID09IDc5Njc1MDApOworICAgIENIRUNLKGludm9r
ZTxpbnQ+KCpjb21waWxhdGlvbikgPT0gaW52b2tlPGludD4oKmNvbXBpbGF0aW9uKSk7CisgICAg
Q0hFQ0soaW52b2tlPGludD4oKmNvbXBpbGF0aW9uKSA9PSA3OTY3NTAwKTsKKyAgICBDSEVDSyhp
bnZva2U8aW50PigqY29tcGlsYXRpb24pID09IGludm9rZTxpbnQ+KCpjb21waWxhdGlvbikpOwor
ICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb21waWxhdGlvbikgPT0gNzk2NzUwMCk7CisgICAgQ0hF
Q0soaW52b2tlPGludD4oKmNvbXBpbGF0aW9uKSA9PSBpbnZva2U8aW50PigqY29tcGlsYXRpb24p
KTsKKyAgICBDSEVDSyhpbnZva2U8aW50PigqY29tcGlsYXRpb24pID09IDc5Njc1MDApOworfQor
Cit2b2lkIHRlc3RSZXR1cm5Eb3VibGUoZG91YmxlIHZhbHVlKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IHZhbHVlKSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4o
cHJvYyksIHZhbHVlKSk7Cit9CisKK3ZvaWQgdGVzdFJldHVybkZsb2F0KGZsb2F0IHZhbHVlKQor
eworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgdmFsdWUpKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBp
bGVBbmRSdW48ZmxvYXQ+KHByb2MpLCB2YWx1ZSkpOworfQorCitzdGF0aWMgZG91YmxlIHNpbXBs
ZUZ1bmN0aW9uRG91YmxlKGRvdWJsZSBhLCBkb3VibGUgYikKK3sKKyAgICByZXR1cm4gYSArIGI7
Cit9CisKK3ZvaWQgdGVzdENhbGxTaW1wbGVEb3VibGUoZG91YmxlIGEsIGRvdWJsZSBiKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCisgICAg
ICAgICAgICBwcm9jLCBEb3VibGUsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+
KHNpbXBsZUZ1bmN0aW9uRG91YmxlLCBCM0NDYWxsUHRyVGFnKSksCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFy
Z3VtZW50RlBSMCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMSkpKTsKKworICAgIENIRUNL
KGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBhLCBiKSA9PSBhICsgYik7Cit9CisKK3N0YXRp
YyBmbG9hdCBzaW1wbGVGdW5jdGlvbkZsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAgcmV0
dXJuIGEgKyBiOworfQorCit2b2lkIHRlc3RDYWxsU2ltcGxlRmxvYXQoZmxvYXQgYSwgZmxvYXQg
YikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDFpbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwor
ICAgIFZhbHVlKiBhcmd1bWVudDJpbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
VHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgIFZhbHVlKiBm
bG9hdFZhbHVlMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9y
aWdpbigpLCBhcmd1bWVudDFpbnQzMik7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUyID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50Mmlu
dDMyKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIEZsb2F0LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQq
PihzaW1wbGVGdW5jdGlvbkZsb2F0LCBCM0NDYWxsUHRyVGFnKSksCisgICAgICAgICAgICBmbG9h
dFZhbHVlMSwKKyAgICAgICAgICAgIGZsb2F0VmFsdWUyKSk7CisKKyAgICBDSEVDSyhpc0lkZW50
aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSks
IGJpdHdpc2VfY2FzdDxpbnQzMl90PihiKSksIGEgKyBiKSk7Cit9CisKK3N0YXRpYyBkb3VibGUg
ZnVuY3Rpb25XaXRoSGVsbGFEb3VibGVBcmd1bWVudHMoZG91YmxlIGEsIGRvdWJsZSBiLCBkb3Vi
bGUgYywgZG91YmxlIGQsIGRvdWJsZSBlLCBkb3VibGUgZiwgZG91YmxlIGcsIGRvdWJsZSBoLCBk
b3VibGUgaSwgZG91YmxlIGosIGRvdWJsZSBrLCBkb3VibGUgbCwgZG91YmxlIG0sIGRvdWJsZSBu
LCBkb3VibGUgbywgZG91YmxlIHAsIGRvdWJsZSBxLCBkb3VibGUgciwgZG91YmxlIHMsIGRvdWJs
ZSB0LCBkb3VibGUgdSwgZG91YmxlIHYsIGRvdWJsZSB3LCBkb3VibGUgeCwgZG91YmxlIHksIGRv
dWJsZSB6KQoreworICAgIHJldHVybiBhICogcG93KDIsIDApICsgYiAqIHBvdygyLCAxKSArIGMg
KiBwb3coMiwgMikgKyBkICogcG93KDIsIDMpICsgZSAqIHBvdygyLCA0KSArIGYgKiBwb3coMiwg
NSkgKyBnICogcG93KDIsIDYpICsgaCAqIHBvdygyLCA3KSArIGkgKiBwb3coMiwgOCkgKyBqICog
cG93KDIsIDkpICsgayAqIHBvdygyLCAxMCkgKyBsICogcG93KDIsIDExKSArIG0gKiBwb3coMiwg
MTIpICsgbiAqIHBvdygyLCAxMykgKyBvICogcG93KDIsIDE0KSArIHAgKiBwb3coMiwgMTUpICsg
cSAqIHBvdygyLCAxNikgKyByICogcG93KDIsIDE3KSArIHMgKiBwb3coMiwgMTgpICsgdCAqIHBv
dygyLCAxOSkgKyB1ICogcG93KDIsIDIwKSArIHYgKiBwb3coMiwgMjEpICsgdyAqIHBvdygyLCAy
MikgKyB4ICogcG93KDIsIDIzKSArIHkgKiBwb3coMiwgMjQpICsgeiAqIHBvdygyLCAyNSk7Cit9
CisKK3ZvaWQgdGVzdENhbGxGdW5jdGlvbldpdGhIZWxsYURvdWJsZUFyZ3VtZW50cygpCit7Cisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKworICAgIFZlY3RvcjxWYWx1ZSo+IGFyZ3M7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IDI2OyArK2kpCisgICAgICAgIGFyZ3MuYXBwZW5kKHJvb3QtPmFwcGVuZE5ldzxDb25zdERv
dWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgaSArIDEpKTsKKworICAgIENDYWxsVmFsdWUqIGNh
bGwgPSByb290LT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCisgICAgICAgIHByb2MsIERvdWJsZSwg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihmdW5jdGlvbldpdGhIZWxsYURvdWJsZUFy
Z3VtZW50cywgQjNDQ2FsbFB0clRhZykpKTsKKyAgICBjYWxsLT5hcHBlbmRBcmdzKGFyZ3MpOwor
CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCks
IGNhbGwpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MpID09IGZ1bmN0
aW9uV2l0aEhlbGxhRG91YmxlQXJndW1lbnRzKDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEw
LCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQs
IDI1LCAyNikpOworfQorCitzdGF0aWMgZmxvYXQgZnVuY3Rpb25XaXRoSGVsbGFGbG9hdEFyZ3Vt
ZW50cyhmbG9hdCBhLCBmbG9hdCBiLCBmbG9hdCBjLCBmbG9hdCBkLCBmbG9hdCBlLCBmbG9hdCBm
LCBmbG9hdCBnLCBmbG9hdCBoLCBmbG9hdCBpLCBmbG9hdCBqLCBmbG9hdCBrLCBmbG9hdCBsLCBm
bG9hdCBtLCBmbG9hdCBuLCBmbG9hdCBvLCBmbG9hdCBwLCBmbG9hdCBxLCBmbG9hdCByLCBmbG9h
dCBzLCBmbG9hdCB0LCBmbG9hdCB1LCBmbG9hdCB2LCBmbG9hdCB3LCBmbG9hdCB4LCBmbG9hdCB5
LCBmbG9hdCB6KQoreworICAgIHJldHVybiBhICogcG93KDIsIDApICsgYiAqIHBvdygyLCAxKSAr
IGMgKiBwb3coMiwgMikgKyBkICogcG93KDIsIDMpICsgZSAqIHBvdygyLCA0KSArIGYgKiBwb3co
MiwgNSkgKyBnICogcG93KDIsIDYpICsgaCAqIHBvdygyLCA3KSArIGkgKiBwb3coMiwgOCkgKyBq
ICogcG93KDIsIDkpICsgayAqIHBvdygyLCAxMCkgKyBsICogcG93KDIsIDExKSArIG0gKiBwb3co
MiwgMTIpICsgbiAqIHBvdygyLCAxMykgKyBvICogcG93KDIsIDE0KSArIHAgKiBwb3coMiwgMTUp
ICsgcSAqIHBvdygyLCAxNikgKyByICogcG93KDIsIDE3KSArIHMgKiBwb3coMiwgMTgpICsgdCAq
IHBvdygyLCAxOSkgKyB1ICogcG93KDIsIDIwKSArIHYgKiBwb3coMiwgMjEpICsgdyAqIHBvdygy
LCAyMikgKyB4ICogcG93KDIsIDIzKSArIHkgKiBwb3coMiwgMjQpICsgeiAqIHBvdygyLCAyNSk7
Cit9CisKK3ZvaWQgdGVzdENhbGxGdW5jdGlvbldpdGhIZWxsYUZsb2F0QXJndW1lbnRzKCkKK3sK
KyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworCisgICAgVmVjdG9yPFZhbHVlKj4gYXJnczsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgMjY7ICsraSkKKyAgICAgICAgYXJncy5hcHBlbmQocm9vdC0+YXBwZW5kTmV3PENvbnN0
RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGkgKyAxKSk7CisKKyAgICBDQ2FsbFZhbHVlKiBj
YWxsID0gcm9vdC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAorICAgICAgICBwcm9jLCBGbG9hdCwg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihmdW5jdGlvbldpdGhIZWxsYUZsb2F0QXJn
dW1lbnRzLCBCM0NDYWxsUHRyVGFnKSkpOworICAgIGNhbGwtPmFwcGVuZEFyZ3MoYXJncyk7CisK
KyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwg
Y2FsbCk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jKSA9PSBmdW5jdGlv
bldpdGhIZWxsYUZsb2F0QXJndW1lbnRzKDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAx
MSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1
LCAyNikpOworfQorCit2b2lkIHRlc3RMaW5lYXJTY2FuV2l0aENhbGxlZU9uU3RhY2soKQorewor
ICAgIC8vIFRoaXMgdGVzdHMgcHJvcGVyIENDYWxsIGdlbmVyYXRpb24gd2hlbiBjb21waWxpbmcg
d2l0aCBhIGxvd2VyIG9wdGltaXphdGlvbgorICAgIC8vIGxldmVsIGFuZCBvcGVyYXRpbmcgd2l0
aCBhIGNhbGxlZSBhcmd1bWVudCB0aGF0J3Mgc3BpbHQgb24gdGhlIHN0YWNrLgorICAgIC8vIE9u
IEFSTTY0LCB0aGlzIGNhdXNlZCBhbiBhc3NlcnQgaW4gTWFjcm9Bc3NlbWJsZXJBUk02NCBiZWNh
dXNlIG9mIGRpc2FsbG93ZWQKKyAgICAvLyB1c2Ugb2YgdGhlIHNjcmF0Y2ggcmVnaXN0ZXIuCisg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDY3MgorCisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAorICAg
ICAgICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+
KHNpbXBsZUZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSksCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKTsKKworICAgIC8vIEZvcmNlIHRo
ZSBsaW5lYXIgc2NhbiBhbGdvcml0aG0gdG8gc3BpbGwgZXZlcnl0aGluZy4KKyAgICBhdXRvIG9y
aWdpbmFsID0gT3B0aW9uczo6YWlyTGluZWFyU2NhblNwaWxsc0V2ZXJ5dGhpbmcoKTsKKyAgICBP
cHRpb25zOjphaXJMaW5lYXJTY2FuU3BpbGxzRXZlcnl0aGluZygpID0gdHJ1ZTsKKworICAgIC8v
IENvbXBpbGluZyB3aXRoIDEgYXMgdGhlIG9wdGltaXphdGlvbiBsZXZlbCBlbmZvcmNlcyB0aGUg
dXNlIG9mIGxpbmVhciBzY2FuCisgICAgLy8gZm9yIHJlZ2lzdGVyIGFsbG9jYXRpb24uCisgICAg
YXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4o
KmNvZGUsIDQxLCAxKSwgNDIpOworCisgICAgT3B0aW9uczo6YWlyTGluZWFyU2NhblNwaWxsc0V2
ZXJ5dGhpbmcoKSA9IG9yaWdpbmFsOworfQorCit2b2lkIHRlc3RDaGlsbERpdihpbnQgbnVtLCBp
bnQgZGVuLCBpbnQgcmVzKQoreworICAgIC8vIFRlc3Qgbm9uLWNvbnN0YW50LgorICAgIHsKKyAg
ICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgCisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAg
ICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIGNoaWxsKERpdiksIE9yaWdpbigp
LAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAg
ICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxKSkpKTsKKworICAgICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGlu
dD4ocHJvYywgbnVtLCBkZW4pID09IHJlcyk7CisgICAgfQorCisgICAgLy8gVGVzdCBjb25zdGFu
dC4KKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIAorICAgICAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBjaGlsbChE
aXYpLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgbnVtKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgZGVuKSkpOworICAgIAorICAgICAgICBD
SEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYykgPT0gcmVzKTsKKyAgICB9Cit9CisKK3ZvaWQg
dGVzdENoaWxsRGl2VHdpY2UoaW50IG51bTEsIGludCBkZW4xLCBpbnQgbnVtMiwgaW50IGRlbjIs
IGludCByZXMpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAg
ICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIGNoaWxsKERpdiksIE9y
aWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
ICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBjaGlsbChEaXYpLCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgICAg
ICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIyKSksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAg
ICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMykpKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2Ms
IG51bTEsIGRlbjEsIG51bTIsIGRlbjIpID09IHJlcyk7Cit9CisKK3ZvaWQgdGVzdENoaWxsRGl2
NjQoaW50NjRfdCBudW0sIGludDY0X3QgZGVuLCBpbnQ2NF90IHJlcykKK3sKKyAgICBpZiAoIWlz
NjRCaXQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGVzdCBub24tY29uc3RhbnQuCisg
ICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICAKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgY2hpbGwoRGl2KSwg
T3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAorICAgICAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxKSkpOworICAgIAorICAgICAgICBDSEVDSyhjb21waWxlQW5kUnVu
PGludDY0X3Q+KHByb2MsIG51bSwgZGVuKSA9PSByZXMpOworICAgIH0KKworICAgIC8vIFRlc3Qg
Y29uc3RhbnQuCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywg
Y2hpbGwoRGl2KSwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENv
bnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIG51bSksCisgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGRlbikpKTsKKyAgICAKKyAg
ICAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jKSA9PSByZXMpOworICAgIH0K
K30KKwordm9pZCB0ZXN0TW9kQXJnKGludDY0X3QgdmFsdWUpCit7CisgICAgaWYgKCF2YWx1ZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBNb2QsIE9yaWdpbigpLCBhcmd1bWVudCwgYXJndW1lbnQpOworICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOworCisgICAgQ0hF
Q0soIWNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgdmFsdWUpKTsKK30KKwordm9pZCB0ZXN0
TW9kQXJncyhpbnQ2NF90IG51bWVyYXRvciwgaW50NjRfdCBkZW5vbWluYXRvcikKK3sKKyAgICBp
ZiAoIWRlbm9taW5hdG9yKQorICAgICAgICByZXR1cm47CisgICAgaWYgKG51bWVyYXRvciA9PSBz
dGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSAmJiBkZW5vbWluYXRvciA9PSAtMSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBhcmd1bWVudDEgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICBW
YWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNb2QsIE9yaWdpbigp
LCBhcmd1bWVudDEsIGFyZ3VtZW50Mik7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisKKyAgICBDSEVDSyhjb21waWxlQW5k
UnVuPGludDY0X3Q+KHByb2MsIG51bWVyYXRvciwgZGVub21pbmF0b3IpID09IG51bWVyYXRvciAl
IGRlbm9taW5hdG9yKTsKK30KKwordm9pZCB0ZXN0TW9kSW1tcyhpbnQ2NF90IG51bWVyYXRvciwg
aW50NjRfdCBkZW5vbWluYXRvcikKK3sKKyAgICBpZiAoIWRlbm9taW5hdG9yKQorICAgICAgICBy
ZXR1cm47CisgICAgaWYgKG51bWVyYXRvciA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+
OjptaW4oKSAmJiBkZW5vbWluYXRvciA9PSAtMSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKwor
ICAgIFZhbHVlKiBhcmd1bWVudDEgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgbnVtZXJhdG9yKTsKKyAgICBWYWx1ZSogYXJndW1lbnQyID0gcm9vdC0+YXBw
ZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGRlbm9taW5hdG9yKTsKKyAgICBW
YWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNb2QsIE9yaWdpbigp
LCBhcmd1bWVudDEsIGFyZ3VtZW50Mik7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisKKyAgICBDSEVDSyhjb21waWxlQW5k
UnVuPGludDY0X3Q+KHByb2MsIG51bWVyYXRvciwgZGVub21pbmF0b3IpID09IG51bWVyYXRvciAl
IGRlbm9taW5hdG9yKTsKK30KKwordm9pZCB0ZXN0TW9kQXJnMzIoaW50MzJfdCB2YWx1ZSkKK3sK
KyAgICBpZiAoIXZhbHVlKQorICAgICAgICByZXR1cm47CisKKyAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgVmFsdWUqIGFy
Z3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgTW9kLCBPcmlnaW4oKSwgYXJndW1lbnQsIGFyZ3VtZW50KTsKKyAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVz
dWx0KTsKKworICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIHZhbHVlKSk7
Cit9CisKK3ZvaWQgdGVzdE1vZEFyZ3MzMihpbnQzMl90IG51bWVyYXRvciwgaW50MzJfdCBkZW5v
bWluYXRvcikKK3sKKyAgICBpZiAoIWRlbm9taW5hdG9yKQorICAgICAgICByZXR1cm47CisgICAg
aWYgKG51bWVyYXRvciA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSAmJiBk
ZW5vbWluYXRvciA9PSAtMSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBh
cmd1bWVudDEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogYXJndW1lbnQyID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIxKSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgTW9kLCBPcmlnaW4oKSwgYXJndW1lbnQxLCBhcmd1bWVudDIpOworICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOworCisgICAg
Q0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBudW1lcmF0b3IsIGRlbm9taW5hdG9y
KSA9PSBudW1lcmF0b3IgJSBkZW5vbWluYXRvcik7Cit9CisKK3ZvaWQgdGVzdE1vZEltbXMzMihp
bnQzMl90IG51bWVyYXRvciwgaW50MzJfdCBkZW5vbWluYXRvcikKK3sKKyAgICBpZiAoIWRlbm9t
aW5hdG9yKQorICAgICAgICByZXR1cm47CisgICAgaWYgKG51bWVyYXRvciA9PSBzdGQ6Om51bWVy
aWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSAmJiBkZW5vbWluYXRvciA9PSAtMSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBhcmd1bWVudDEgPSByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbnVtZXJhdG9yKTsKKyAgICBWYWx1ZSogYXJn
dW1lbnQyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGRl
bm9taW5hdG9yKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBNb2QsIE9yaWdpbigpLCBhcmd1bWVudDEsIGFyZ3VtZW50Mik7CisgICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisKKyAg
ICBDSEVDSyhjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIG51bWVyYXRvciwgZGVub21pbmF0
b3IpID09IG51bWVyYXRvciAlIGRlbm9taW5hdG9yKTsKK30KKwordm9pZCB0ZXN0Q2hpbGxNb2RB
cmcoaW50NjRfdCB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIGNoaWxsKE1vZCksIE9yaWdpbigpLCBhcmd1bWVudCwgYXJndW1lbnQpOworICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOwor
CisgICAgQ0hFQ0soIWNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgdmFsdWUpKTsKK30KKwor
dm9pZCB0ZXN0Q2hpbGxNb2RBcmdzKGludDY0X3QgbnVtZXJhdG9yLCBpbnQ2NF90IGRlbm9taW5h
dG9yKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisKKyAgICBWYWx1ZSogYXJndW1lbnQxID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwor
ICAgIFZhbHVlKiBhcmd1bWVudDIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgVmFsdWUqIHJlc3Vs
dCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgY2hpbGwoTW9kKSwgT3JpZ2luKCksIGFy
Z3VtZW50MSwgYXJndW1lbnQyKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48
aW50NjRfdD4ocHJvYywgbnVtZXJhdG9yLCBkZW5vbWluYXRvcikgPT0gY2hpbGxNb2QobnVtZXJh
dG9yLCBkZW5vbWluYXRvcikpOworfQorCit2b2lkIHRlc3RDaGlsbE1vZEltbXMoaW50NjRfdCBu
dW1lcmF0b3IsIGludDY0X3QgZGVub21pbmF0b3IpCit7CisgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBhcmd1
bWVudDEgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbnVt
ZXJhdG9yKTsKKyAgICBWYWx1ZSogYXJndW1lbnQyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIGRlbm9taW5hdG9yKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBjaGlsbChNb2QpLCBPcmlnaW4oKSwgYXJndW1l
bnQxLCBhcmd1bWVudDIpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2
NF90Pihwcm9jLCBudW1lcmF0b3IsIGRlbm9taW5hdG9yKSA9PSBjaGlsbE1vZChudW1lcmF0b3Is
IGRlbm9taW5hdG9yKSk7Cit9CisKK3ZvaWQgdGVzdENoaWxsTW9kQXJnMzIoaW50MzJfdCB2YWx1
ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOworCisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAg
VmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgY2hpbGwoTW9kKSwg
T3JpZ2luKCksIGFyZ3VtZW50LCBhcmd1bWVudCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisKKyAgICBDSEVDSyghY29t
cGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCB2YWx1ZSkpOworfQorCit2b2lkIHRlc3RDaGlsbE1v
ZEFyZ3MzMihpbnQzMl90IG51bWVyYXRvciwgaW50MzJfdCBkZW5vbWluYXRvcikKK3sKKyAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
CisgICAgVmFsdWUqIGFyZ3VtZW50MSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1
bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmd1
bWVudDIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBjaGlsbChNb2QpLCBPcmlnaW4oKSwgYXJndW1lbnQxLCBhcmd1bWVu
dDIpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCByZXN1bHQpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBu
dW1lcmF0b3IsIGRlbm9taW5hdG9yKSA9PSBjaGlsbE1vZChudW1lcmF0b3IsIGRlbm9taW5hdG9y
KSk7Cit9CisKK3ZvaWQgdGVzdENoaWxsTW9kSW1tczMyKGludDMyX3QgbnVtZXJhdG9yLCBpbnQz
Ml90IGRlbm9taW5hdG9yKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBWYWx1ZSogYXJndW1lbnQxID0gcm9vdC0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIG51bWVyYXRvcik7CisgICAg
VmFsdWUqIGFyZ3VtZW50MiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBkZW5vbWluYXRvcik7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgY2hpbGwoTW9kKSwgT3JpZ2luKCksIGFyZ3VtZW50MSwgYXJndW1lbnQy
KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwgcmVzdWx0KTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgbnVt
ZXJhdG9yLCBkZW5vbWluYXRvcikgPT0gY2hpbGxNb2QobnVtZXJhdG9yLCBkZW5vbWluYXRvcikp
OworfQorCit2b2lkIHRlc3RMb29wV2l0aE11bHRpcGxlSGVhZGVyRWRnZXMoKQoreworICAgIFBy
b2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgQmFzaWNCbG9jayogaW5uZXJIZWFkZXIgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNC
bG9jayogaW5uZXJFbmQgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogb3V0ZXJI
ZWFkZXIgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogb3V0ZXJFbmQgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogZW5kID0gcHJvYy5hZGRCbG9jaygpOworCisg
ICAgYXV0byogbmU0MiA9IG91dGVySGVhZGVyLT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBw
cm9jLCBOb3RFcXVhbCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0MikpOwor
ICAgIG91dGVySGVhZGVyLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIEJy
YW5jaCwgT3JpZ2luKCksCisgICAgICAgIG5lNDIsCisgICAgICAgIEZyZXF1ZW50ZWRCbG9jayhp
bm5lckhlYWRlciksIEZyZXF1ZW50ZWRCbG9jayhvdXRlckVuZCkpOworICAgIG91dGVyRW5kLT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywg
T3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICBGcmVxdWVu
dGVkQmxvY2sob3V0ZXJIZWFkZXIpLCBGcmVxdWVudGVkQmxvY2soZW5kKSk7CisKKyAgICBTd2l0
Y2hWYWx1ZSogc3dpdGNoVmFsdWUgPSBpbm5lckhlYWRlci0+YXBwZW5kTmV3PFN3aXRjaFZhbHVl
PigKKyAgICAgICAgcHJvYywgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgc3dpdGNo
VmFsdWUtPnNldEZhbGxUaHJvdWdoKEZyZXF1ZW50ZWRCbG9jayhpbm5lckVuZCkpOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCAyMDsgKytpKSB7CisgICAgICAgIHN3aXRjaFZhbHVlLT5h
cHBlbmRDYXNlKFN3aXRjaENhc2UoaSwgRnJlcXVlbnRlZEJsb2NrKGlubmVySGVhZGVyKSkpOwor
ICAgIH0KKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmln
aW4oKSwgRnJlcXVlbnRlZEJsb2NrKG91dGVySGVhZGVyKSk7CisKKyAgICBpbm5lckVuZC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIEp1bXAsIE9yaWdpbigpLCBGcmVxdWVudGVkQmxvY2so
b3V0ZXJFbmQpKTsKKyAgICBlbmQtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgZW5kLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgNTY3OCkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2Mo
cHJvYyk7IC8vIFRoaXMgc2hvdWxkbid0IGNyYXNoIGluIGNvbXB1dGluZyBOYXR1cmFsTG9vcHMu
CisgICAgQ0hFQ0soaW52b2tlPGludDMyX3Q+KCpjb2RlLCAwLCAxMjM0NSkgPT0gNTY3OCk7Cit9
CisKK3ZvaWQgdGVzdFN3aXRjaCh1bnNpZ25lZCBkZWdyZWUsIHVuc2lnbmVkIGdhcCkKK3sKKyAg
ICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworCisgICAgQmFzaWNCbG9jayogdGVybWluYXRlID0gcHJvYy5hZGRCbG9jaygpOworICAgIHRl
cm1pbmF0ZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAorICAgICAgICB0ZXJtaW5hdGUtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAwKSk7CisKKyAgICBTd2l0Y2hWYWx1ZSogc3dpdGNoVmFsdWUgPSByb290LT5h
cHBlbmROZXc8U3dpdGNoVmFsdWU+KAorICAgICAgICBwcm9jLCBPcmlnaW4oKSwgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApKTsKKyAgICBzd2l0Y2hWYWx1ZS0+c2V0RmFsbFRocm91Z2goRnJlcXVlbnRlZEJsb2Nr
KHRlcm1pbmF0ZSkpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRlZ3JlZTsgKytp
KSB7CisgICAgICAgIEJhc2ljQmxvY2sqIG5ld0Jsb2NrID0gcHJvYy5hZGRCbG9jaygpOworICAg
ICAgICBuZXdCbG9jay0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIG5ld0Jsb2NrLT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgT3JpZ2luKCksIChpICYgMSkgPyBH
UFJJbmZvOjphcmd1bWVudEdQUjIgOiBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICAgICAg
c3dpdGNoVmFsdWUtPmFwcGVuZENhc2UoU3dpdGNoQ2FzZShnYXAgKiBpLCBGcmVxdWVudGVkQmxv
Y2sobmV3QmxvY2spKSk7CisgICAgfQorCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJv
Yyk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGVncmVlOyArK2kpIHsKKyAgICAg
ICAgQ0hFQ0soaW52b2tlPGludDMyX3Q+KCpjb2RlLCBpICogZ2FwLCA0MiwgMTEpID09ICgoaSAm
IDEpID8gMTEgOiA0MikpOworICAgICAgICBpZiAoZ2FwID4gMSkgeworICAgICAgICAgICAgQ0hF
Q0soIWludm9rZTxpbnQzMl90PigqY29kZSwgaSAqIGdhcCArIDEsIDQyLCAxMSkpOworICAgICAg
ICAgICAgQ0hFQ0soIWludm9rZTxpbnQzMl90PigqY29kZSwgaSAqIGdhcCAtIDEsIDQyLCAxMSkp
OworICAgICAgICB9CisgICAgfQorCisgICAgQ0hFQ0soIWludm9rZTxpbnQzMl90PigqY29kZSwg
LTEsIDQyLCAxMSkpOworICAgIENIRUNLKCFpbnZva2U8aW50MzJfdD4oKmNvZGUsIGRlZ3JlZSAq
IGdhcCwgNDIsIDExKSk7CisgICAgQ0hFQ0soIWludm9rZTxpbnQzMl90PigqY29kZSwgZGVncmVl
ICogZ2FwICsgMSwgNDIsIDExKSk7Cit9CisKK3ZvaWQgdGVzdFN3aXRjaFNhbWVDYXNlQXNEZWZh
dWx0KCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOworCisgICAgQmFzaWNCbG9jayogcmV0dXJuMTAgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgcmV0dXJuMTAtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcmV0dXJuMTAtPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCAxMCkpOworCisgICAgVmFsdWUqIHN3aXRjaE9wZXJhbmQgPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7CisKKyAgICBCYXNpY0Jsb2NrKiBjYXNlQW5kRGVmYXVsdCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICBjYXNlQW5kRGVmYXVsdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAor
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAgIGNhc2VBbmREZWZh
dWx0LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEVxdWFsLCBPcmln
aW4oKSwKKyAgICAgICAgICAgICAgICBzd2l0Y2hPcGVyYW5kLCBjYXNlQW5kRGVmYXVsdC0+YXBw
ZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSkpOworCisgICAgU3dpdGNo
VmFsdWUqIHN3aXRjaFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFN3aXRjaFZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgc3dpdGNoT3BlcmFuZCk7CisKKyAgICBzd2l0Y2hWYWx1ZS0+YXBwZW5kQ2FzZShT
d2l0Y2hDYXNlKDEwMCwgRnJlcXVlbnRlZEJsb2NrKHJldHVybjEwKSkpOworCisgICAgLy8gQmVj
YXVzZSBjYXNlQW5kRGVmYXVsdCBpcyByZWFjaGVkIGJvdGggYXMgZGVmYXVsdCBjYXNlLCBhbmQg
d2hlbiBpdCdzIDAsCisgICAgLy8gd2Ugc2hvdWxkIG5vdCBpbmNvcnJlY3RseSBvcHRpbWl6ZSBh
bmQgYXNzdW1lIHRoYXQgc3dpdGNoT3BlcmFuZD09MC4KKyAgICBzd2l0Y2hWYWx1ZS0+YXBwZW5k
Q2FzZShTd2l0Y2hDYXNlKDAsIEZyZXF1ZW50ZWRCbG9jayhjYXNlQW5kRGVmYXVsdCkpKTsKKyAg
ICBzd2l0Y2hWYWx1ZS0+c2V0RmFsbFRocm91Z2goRnJlcXVlbnRlZEJsb2NrKGNhc2VBbmREZWZh
dWx0KSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKworICAgIENIRUNL
KGludm9rZTxpbnQzMl90PigqY29kZSwgMTAwKSA9PSAxMCk7CisgICAgQ0hFQ0soaW52b2tlPGlu
dDMyX3Q+KCpjb2RlLCAwKSA9PSAxKTsKKyAgICBDSEVDSyhpbnZva2U8aW50MzJfdD4oKmNvZGUs
IDEpID09IDApOworICAgIENIRUNLKGludm9rZTxpbnQzMl90PigqY29kZSwgMikgPT0gMCk7Cisg
ICAgQ0hFQ0soaW52b2tlPGludDMyX3Q+KCpjb2RlLCA5OSkgPT0gMCk7CisgICAgQ0hFQ0soaW52
b2tlPGludDMyX3Q+KCpjb2RlLCAweGJhYWRiZWVmKSA9PSAwKTsKK30KKwordm9pZCB0ZXN0U3dp
dGNoQ2hpbGxEaXYodW5zaWduZWQgZGVncmVlLCB1bnNpZ25lZCBnYXApCit7CisgICAgUHJvY2Vk
dXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAg
IFZhbHVlKiBsZWZ0ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgIFZhbHVlKiByaWdodCA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIyKTsKKworICAgIEJhc2ljQmxvY2sqIHRlcm1pbmF0ZSA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICB0ZXJtaW5hdGUtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgdGVybWluYXRlLT5hcHBlbmROZXc8Q29uc3QzMlZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgU3dpdGNoVmFsdWUqIHN3aXRjaFZhbHVl
ID0gcm9vdC0+YXBwZW5kTmV3PFN3aXRjaFZhbHVlPigKKyAgICAgICAgcHJvYywgT3JpZ2luKCks
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKSk7CisgICAgc3dpdGNoVmFsdWUtPnNldEZhbGxUaHJvdWdoKEZyZXF1
ZW50ZWRCbG9jayh0ZXJtaW5hdGUpKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBk
ZWdyZWU7ICsraSkgeworICAgICAgICBCYXNpY0Jsb2NrKiBuZXdCbG9jayA9IHByb2MuYWRkQmxv
Y2soKTsKKworICAgICAgICBuZXdCbG9jay0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAg
ICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIG5ld0Jsb2NrLT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIGNoaWxsKERpdiksIE9yaWdpbigp
LCAoaSAmIDEpID8gcmlnaHQgOiBsZWZ0LCAoaSAmIDEpID8gbGVmdCA6IHJpZ2h0KSk7CisgICAg
CisgICAgICAgIHN3aXRjaFZhbHVlLT5hcHBlbmRDYXNlKFN3aXRjaENhc2UoZ2FwICogaSwgRnJl
cXVlbnRlZEJsb2NrKG5ld0Jsb2NrKSkpOworICAgIH0KKworICAgIGF1dG8gY29kZSA9IGNvbXBp
bGVQcm9jKHByb2MpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRlZ3JlZTsgKytp
KSB7CisgICAgICAgIGRhdGFMb2coImkgPSAiLCBpLCAiXG4iKTsKKyAgICAgICAgaW50MzJfdCBy
ZXN1bHQgPSBpbnZva2U8aW50MzJfdD4oKmNvZGUsIGkgKiBnYXAsIDQyLCAxMSk7CisgICAgICAg
IGRhdGFMb2coInJlc3VsdCA9ICIsIHJlc3VsdCwgIlxuIik7CisgICAgICAgIENIRUNLKHJlc3Vs
dCA9PSAoKGkgJiAxKSA/IDExLzQyIDogNDIvMTEpKTsKKyAgICAgICAgaWYgKGdhcCA+IDEpIHsK
KyAgICAgICAgICAgIENIRUNLKCFpbnZva2U8aW50MzJfdD4oKmNvZGUsIGkgKiBnYXAgKyAxLCA0
MiwgMTEpKTsKKyAgICAgICAgICAgIENIRUNLKCFpbnZva2U8aW50MzJfdD4oKmNvZGUsIGkgKiBn
YXAgLSAxLCA0MiwgMTEpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIENIRUNLKCFpbnZva2U8
aW50MzJfdD4oKmNvZGUsIC0xLCA0MiwgMTEpKTsKKyAgICBDSEVDSyghaW52b2tlPGludDMyX3Q+
KCpjb2RlLCBkZWdyZWUgKiBnYXAsIDQyLCAxMSkpOworICAgIENIRUNLKCFpbnZva2U8aW50MzJf
dD4oKmNvZGUsIGRlZ3JlZSAqIGdhcCArIDEsIDQyLCAxMSkpOworfQorCit2b2lkIHRlc3RTd2l0
Y2hUYXJnZXR0aW5nU2FtZUJsb2NrKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgQmFzaWNCbG9jayogdGVybWlu
YXRlID0gcHJvYy5hZGRCbG9jaygpOworICAgIHRlcm1pbmF0ZS0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICB0ZXJtaW5hdGUt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA1KSk7CisKKyAgICBTd2l0
Y2hWYWx1ZSogc3dpdGNoVmFsdWUgPSByb290LT5hcHBlbmROZXc8U3dpdGNoVmFsdWU+KAorICAg
ICAgICBwcm9jLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBzd2l0Y2hWYWx1ZS0+
c2V0RmFsbFRocm91Z2goRnJlcXVlbnRlZEJsb2NrKHRlcm1pbmF0ZSkpOworCisgICAgQmFzaWNC
bG9jayogb3RoZXJUYXJnZXQgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgb3RoZXJUYXJnZXQtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAg
ICAgICAgb3RoZXJUYXJnZXQtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCA0MikpOworICAgIHN3aXRjaFZhbHVlLT5hcHBlbmRDYXNlKFN3aXRjaENhc2UoMywgRnJlcXVl
bnRlZEJsb2NrKG90aGVyVGFyZ2V0KSkpOworICAgIHN3aXRjaFZhbHVlLT5hcHBlbmRDYXNlKFN3
aXRjaENhc2UoMTMsIEZyZXF1ZW50ZWRCbG9jayhvdGhlclRhcmdldCkpKTsKKworICAgIGF1dG8g
Y29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IDIwOyArK2kpIHsKKyAgICAgICAgaW50MzJfdCBleHBlY3RlZCA9IChpID09IDMgfHwgaSA9PSAx
MykgPyA0MiA6IDU7CisgICAgICAgIENIRUNLKGludm9rZTxpbnQzMl90PigqY29kZSwgaSkgPT0g
ZXhwZWN0ZWQpOworICAgIH0KK30KKwordm9pZCB0ZXN0U3dpdGNoVGFyZ2V0dGluZ1NhbWVCbG9j
a0ZvbGRQYXRoQ29uc3RhbnQoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBCYXNpY0Jsb2NrKiB0ZXJtaW5hdGUg
PSBwcm9jLmFkZEJsb2NrKCk7CisgICAgdGVybWluYXRlLT5hcHBlbmROZXdDb250cm9sVmFsdWUo
CisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHRlcm1pbmF0ZS0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKSk7CisKKyAgICBWYWx1ZSog
YXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgU3dpdGNoVmFsdWUqIHN3aXRjaFZhbHVl
ID0gcm9vdC0+YXBwZW5kTmV3PFN3aXRjaFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYXJndW1lbnQp
OworICAgIHN3aXRjaFZhbHVlLT5zZXRGYWxsVGhyb3VnaChGcmVxdWVudGVkQmxvY2sodGVybWlu
YXRlKSk7CisKKyAgICBCYXNpY0Jsb2NrKiBvdGhlclRhcmdldCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBvdGhlclRhcmdldC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCBhcmd1bWVudCk7CisgICAgc3dpdGNoVmFsdWUtPmFwcGVuZENhc2Uo
U3dpdGNoQ2FzZSgzLCBGcmVxdWVudGVkQmxvY2sob3RoZXJUYXJnZXQpKSk7CisgICAgc3dpdGNo
VmFsdWUtPmFwcGVuZENhc2UoU3dpdGNoQ2FzZSgxMywgRnJlcXVlbnRlZEJsb2NrKG90aGVyVGFy
Z2V0KSkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgMjA7ICsraSkgeworICAgICAgICBpbnQzMl90IGV4cGVjdGVk
ID0gKGkgPT0gMyB8fCBpID09IDEzKSA/IGkgOiA0MjsKKyAgICAgICAgQ0hFQ0soaW52b2tlPGlu
dDMyX3Q+KCpjb2RlLCBpKSA9PSBleHBlY3RlZCk7CisgICAgfQorfQorCit2b2lkIHRlc3RUcnVu
Y0ZvbGQoaW50NjRfdCB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCB2YWx1
ZSkpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jKSA9PSBzdGF0aWNfY2Fz
dDxpbnQ+KHZhbHVlKSk7Cit9CisKK3ZvaWQgdGVzdFpFeHQzMihpbnQzMl90IHZhbHVlKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgcHJvYywgWkV4dDMyLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48dWlu
dDY0X3Q+KHByb2MsIHZhbHVlKSA9PSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KHZhbHVlKSkpOworfQorCit2b2lkIHRlc3RaRXh0MzJGb2xkKGludDMyX3QgdmFs
dWUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgICAgICBwcm9jLCBaRXh0MzIsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHZhbHVlKSkpOworCisgICAgQ0hF
Q0soY29tcGlsZUFuZFJ1bjx1aW50NjRfdD4ocHJvYywgdmFsdWUpID09IHN0YXRpY19jYXN0PHVp
bnQ2NF90PihzdGF0aWNfY2FzdDx1aW50MzJfdD4odmFsdWUpKSk7Cit9CisKK3ZvaWQgdGVzdFNF
eHQzMihpbnQzMl90IHZhbHVlKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgU0V4dDMyLCBPcmlnaW4oKSwKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1
bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpKTsKKworICAg
IENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgdmFsdWUpID09IHN0YXRpY19jYXN0
PGludDY0X3Q+KHZhbHVlKSk7Cit9CisKK3ZvaWQgdGVzdFNFeHQzMkZvbGQoaW50MzJfdCB2YWx1
ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIFNFeHQzMiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdmFsdWUpKSk7CisKKyAgICBDSEVD
Syhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIHZhbHVlKSA9PSBzdGF0aWNfY2FzdDxpbnQ2
NF90Pih2YWx1ZSkpOworfQorCit2b2lkIHRlc3RUcnVuY1pFeHQzMihpbnQzMl90IHZhbHVlKQor
eworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAg
ICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBaRXh0MzIsIE9yaWdpbigpLAorICAgICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgIHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
KSkpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgdmFsdWUpID09
IHZhbHVlKTsKK30KKwordm9pZCB0ZXN0VHJ1bmNTRXh0MzIoaW50MzJfdCB2YWx1ZSkKK3sKKyAg
ICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
IHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgU0V4dDMyLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBU
cnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpKSk7
CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIHZhbHVlKSA9PSB2YWx1
ZSk7Cit9CisKK3ZvaWQgdGVzdFNFeHQ4KGludDMyX3QgdmFsdWUpCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTRXh0
OCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAg
ICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCkpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIHZh
bHVlKSA9PSBzdGF0aWNfY2FzdDxpbnQzMl90PihzdGF0aWNfY2FzdDxpbnQ4X3Q+KHZhbHVlKSkp
OworfQorCit2b2lkIHRlc3RTRXh0OEZvbGQoaW50MzJfdCB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1
cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFNF
eHQ4LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCB2YWx1ZSkpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50
MzJfdD4ocHJvYykgPT0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8aW50OF90Pih2
YWx1ZSkpKTsKK30KKwordm9pZCB0ZXN0U0V4dDhTRXh0OChpbnQzMl90IHZhbHVlKQoreworICAg
IFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAg
cHJvYywgU0V4dDgsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgICAgICBwcm9jLCBTRXh0OCwgT3JpZ2luKCksCisgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywgVHJ1
bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSkpOwor
CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCB2YWx1ZSkgPT0gc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8aW50OF90Pih2YWx1ZSkpKTsKK30KKwordm9pZCB0
ZXN0U0V4dDhTRXh0MTYoaW50MzJfdCB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFNFeHQ4LCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAg
cHJvYywgU0V4dDE2LCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAg
ICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpKSk7CisKKyAgICBDSEVDSyhjb21waWxl
QW5kUnVuPGludDMyX3Q+KHByb2MsIHZhbHVlKSA9PSBzdGF0aWNfY2FzdDxpbnQzMl90PihzdGF0
aWNfY2FzdDxpbnQ4X3Q+KHZhbHVlKSkpOworfQorCit2b2lkIHRlc3RTRXh0OEJpdEFuZChpbnQz
Ml90IHZhbHVlLCBpbnQzMl90IG1hc2spCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTRXh0OCwgT3JpZ2luKCksCisg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2Ms
IEJpdEFuZCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBtYXNrKSkpKTsKKworICAgIENIRUNL
KGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgdmFsdWUpID09IHN0YXRpY19jYXN0PGludDMy
X3Q+KHN0YXRpY19jYXN0PGludDhfdD4odmFsdWUgJiBtYXNrKSkpOworfQorCit2b2lkIHRlc3RC
aXRBbmRTRXh0OChpbnQzMl90IHZhbHVlLCBpbnQzMl90IG1hc2spCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRB
bmQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAg
ICAgICAgICAgICBwcm9jLCBTRXh0OCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdp
bigpLAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSwKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBtYXNrKSkpOwor
CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCB2YWx1ZSkgPT0gKHN0YXRp
Y19jYXN0PGludDMyX3Q+KHN0YXRpY19jYXN0PGludDhfdD4odmFsdWUpKSAmIG1hc2spKTsKK30K
Kwordm9pZCB0ZXN0U0V4dDE2KGludDMyX3QgdmFsdWUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTRXh0MTYsIE9y
aWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
ICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCB2YWx1ZSkg
PT0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8aW50MTZfdD4odmFsdWUpKSk7Cit9
CisKK3ZvaWQgdGVzdFNFeHQxNkZvbGQoaW50MzJfdCB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFNFeHQx
NiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgdmFsdWUpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDMy
X3Q+KHByb2MpID09IHN0YXRpY19jYXN0PGludDMyX3Q+KHN0YXRpY19jYXN0PGludDE2X3Q+KHZh
bHVlKSkpOworfQorCit2b2lkIHRlc3RTRXh0MTZTRXh0MTYoaW50MzJfdCB2YWx1ZSkKK3sKKyAg
ICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
IHByb2MsIFNFeHQxNiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFNFeHQxNiwgT3JpZ2luKCksCisgICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywg
VHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSkp
OworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCB2YWx1ZSkgPT0gc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8aW50MTZfdD4odmFsdWUpKSk7Cit9CisKK3Zv
aWQgdGVzdFNFeHQxNlNFeHQ4KGludDMyX3QgdmFsdWUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTRXh0MTYsIE9y
aWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
ICAgICBwcm9jLCBTRXh0OCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAor
ICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSkpOworCisgICAgQ0hFQ0soY29t
cGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCB2YWx1ZSkgPT0gc3RhdGljX2Nhc3Q8aW50MzJfdD4o
c3RhdGljX2Nhc3Q8aW50OF90Pih2YWx1ZSkpKTsKK30KKwordm9pZCB0ZXN0U0V4dDE2Qml0QW5k
KGludDMyX3QgdmFsdWUsIGludDMyX3QgbWFzaykKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFNFeHQxNiwgT3JpZ2lu
KCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAg
IHByb2MsIEJpdEFuZCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAg
ICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBtYXNrKSkpKTsKKworICAg
IENIRUNLKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgdmFsdWUpID09IHN0YXRpY19jYXN0
PGludDMyX3Q+KHN0YXRpY19jYXN0PGludDE2X3Q+KHZhbHVlICYgbWFzaykpKTsKK30KKwordm9p
ZCB0ZXN0Qml0QW5kU0V4dDE2KGludDMyX3QgdmFsdWUsIGludDMyX3QgbWFzaykKK3sKKyAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIEJpdEFuZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICAgICAgICAgIHByb2MsIFNFeHQxNiwgT3JpZ2luKCksCisgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywgVHJ1
bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSwKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBt
YXNrKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCB2YWx1ZSkg
PT0gKHN0YXRpY19jYXN0PGludDMyX3Q+KHN0YXRpY19jYXN0PGludDE2X3Q+KHZhbHVlKSkgJiBt
YXNrKSk7Cit9CisKK3ZvaWQgdGVzdFNFeHQzMkJpdEFuZChpbnQzMl90IHZhbHVlLCBpbnQzMl90
IG1hc2spCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAg
IHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgICAgICBwcm9jLCBTRXh0MzIsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigp
LAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAg
ICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgbWFzaykpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGlu
dDY0X3Q+KHByb2MsIHZhbHVlKSA9PSBzdGF0aWNfY2FzdDxpbnQ2NF90Pih2YWx1ZSAmIG1hc2sp
KTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvdGVzdGIzXzYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rl
c3RiM182LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YTNkNDZlZTU3OTlhMWIwZjFmYmI3ZjIyMWUzMWE5MzA0
YmQzN2FkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3Ri
M182LmNwcApAQCAtMCwwICsxLDI4NjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJ0ZXN0
YjMuaCIKKworI2lmIEVOQUJMRShCM19KSVQpCisKK3ZvaWQgdGVzdEJpdEFuZFNFeHQzMihpbnQz
Ml90IHZhbHVlLCBpbnQ2NF90IG1hc2spCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAor
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9j
LCBTRXh0MzIsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAg
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSksCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbWFzaykpKTsKKworICAgIENIRUNLKGNv
bXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgdmFsdWUpID09IChzdGF0aWNfY2FzdDxpbnQ2NF90
Pih2YWx1ZSkgJiBtYXNrKSk7Cit9CisKK3ZvaWQgdGVzdEJhc2ljU2VsZWN0KCkKK3sKKyAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIFNlbGVjdCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICAgICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0
UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0MikpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjEpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpKSk7CisKKyAgICBhdXRvIGNvZGUgPSBj
b21waWxlUHJvYyhwcm9jKTsKKyAgICBDSEVDSyhpbnZva2U8aW50cHRyX3Q+KCpjb2RlLCA0Miwg
MSwgMikgPT0gMSk7CisgICAgQ0hFQ0soaW52b2tlPGludHB0cl90PigqY29kZSwgNDIsIDY0MjQ2
MiwgMzI1MzMpID09IDY0MjQ2Mik7CisgICAgQ0hFQ0soaW52b2tlPGludHB0cl90PigqY29kZSwg
NDMsIDEsIDIpID09IDIpOworICAgIENIRUNLKGludm9rZTxpbnRwdHJfdD4oKmNvZGUsIDQzLCA2
NDI0NjIsIDMyNTMzKSA9PSAzMjUzMyk7Cit9CisKK3ZvaWQgdGVzdFNlbGVjdFRlc3QoKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgcHJvYywgU2VsZWN0LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIy
KSkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgQ0hFQ0soaW52
b2tlPGludHB0cl90PigqY29kZSwgNDIsIDEsIDIpID09IDEpOworICAgIENIRUNLKGludm9rZTxp
bnRwdHJfdD4oKmNvZGUsIDQyLCA2NDI0NjIsIDMyNTMzKSA9PSA2NDI0NjIpOworICAgIENIRUNL
KGludm9rZTxpbnRwdHJfdD4oKmNvZGUsIDAsIDEsIDIpID09IDIpOworICAgIENIRUNLKGludm9r
ZTxpbnRwdHJfdD4oKmNvZGUsIDAsIDY0MjQ2MiwgMzI1MzMpID09IDMyNTMzKTsKK30KKwordm9p
ZCB0ZXN0U2VsZWN0Q29tcGFyZURvdWJsZSgpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdD
b250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTZWxlY3QsIE9yaWdpbigp
LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBw
cm9jLCBMZXNzVGhhbiwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjAp
LAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIxKSksCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKTsKKworICAgIGF1dG8gY29k
ZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIENIRUNLKGludm9rZTxpbnRwdHJfdD4oKmNvZGUs
IC0xLjAsIDEuMCwgMSwgMikgPT0gMSk7CisgICAgQ0hFQ0soaW52b2tlPGludHB0cl90PigqY29k
ZSwgNDIuNSwgNDIuNTEsIDY0MjQ2MiwgMzI1MzMpID09IDY0MjQ2Mik7CisgICAgQ0hFQ0soaW52
b2tlPGludHB0cl90PigqY29kZSwgUE5hTiwgMC4wLCAxLCAyKSA9PSAyKTsKKyAgICBDSEVDSyhp
bnZva2U8aW50cHRyX3Q+KCpjb2RlLCA0Mi41MSwgNDIuNSwgNjQyNDYyLCAzMjUzMykgPT0gMzI1
MzMpOworICAgIENIRUNLKGludm9rZTxpbnRwdHJfdD4oKmNvZGUsIDQyLjUyLCA0Mi41MiwgNTI0
OTc4MjQ1LCAzNTIpID09IDM1Mik7Cit9CisKK3RlbXBsYXRlPEIzOjpPcGNvZGUgb3Bjb2RlPgor
dm9pZCB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0KGZsb2F0IGEsIGZsb2F0IGIsIGJvb2wgKCpvcGVy
YXRpb24pKGZsb2F0LCBmbG9hdCkpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQxaW50MzIg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogYXJndW1lbnQyaW50MzIgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjEpKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZTEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQxaW50MzIpOworICAgIFZhbHVlKiBm
bG9hdFZhbHVlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9y
aWdpbigpLCBhcmd1bWVudDJpbnQzMik7CisKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTZWxlY3QsIE9yaWdpbigpLAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBvcGNv
ZGUsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIGZsb2F0VmFsdWUxLAorICAgICAgICAgICAg
ICAgIGZsb2F0VmFsdWUyKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKSwKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIzKSkpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRS
dW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3aXNlX2Nhc3Q8
aW50MzJfdD4oYiksIDQyLCAtNSksIG9wZXJhdGlvbihhLCBiKSA/IDQyIDogLTUpKTsKK30KKwor
dm9pZCB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAgdGVz
dFNlbGVjdENvbXBhcmVGbG9hdDxFcXVhbD4oYSwgYiwgW10oZmxvYXQgYSwgZmxvYXQgYikgLT4g
Ym9vbCB7IHJldHVybiBhID09IGI7IH0pOworICAgIHRlc3RTZWxlY3RDb21wYXJlRmxvYXQ8Tm90
RXF1YWw+KGEsIGIsIFtdKGZsb2F0IGEsIGZsb2F0IGIpIC0+IGJvb2wgeyByZXR1cm4gYSAhPSBi
OyB9KTsKKyAgICB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0PExlc3NUaGFuPihhLCBiLCBbXShmbG9h
dCBhLCBmbG9hdCBiKSAtPiBib29sIHsgcmV0dXJuIGEgPCBiOyB9KTsKKyAgICB0ZXN0U2VsZWN0
Q29tcGFyZUZsb2F0PEdyZWF0ZXJUaGFuPihhLCBiLCBbXShmbG9hdCBhLCBmbG9hdCBiKSAtPiBi
b29sIHsgcmV0dXJuIGEgPiBiOyB9KTsKKyAgICB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0PExlc3NF
cXVhbD4oYSwgYiwgW10oZmxvYXQgYSwgZmxvYXQgYikgLT4gYm9vbCB7IHJldHVybiBhIDw9IGI7
IH0pOworICAgIHRlc3RTZWxlY3RDb21wYXJlRmxvYXQ8R3JlYXRlckVxdWFsPihhLCBiLCBbXShm
bG9hdCBhLCBmbG9hdCBiKSAtPiBib29sIHsgcmV0dXJuIGEgPj0gYjsgfSk7CisgICAgdGVzdFNl
bGVjdENvbXBhcmVGbG9hdDxFcXVhbE9yVW5vcmRlcmVkPihhLCBiLCBbXShmbG9hdCBhLCBmbG9h
dCBiKSAtPiBib29sIHsgcmV0dXJuIGEgIT0gYSB8fCBiICE9IGIgfHwgYSA9PSBiOyB9KTsKK30K
KwordGVtcGxhdGU8QjM6Ok9wY29kZSBvcGNvZGU+Cit2b2lkIHRlc3RTZWxlY3RDb21wYXJlRmxv
YXRUb0RvdWJsZShmbG9hdCBhLCBmbG9hdCBiLCBib29sICgqb3BlcmF0aW9uKShmbG9hdCwgZmxv
YXQpKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7
CisgICAgVmFsdWUqIGFyZ3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgVmFsdWUq
IGZsb2F0VmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwg
T3JpZ2luKCksIGFyZ3VtZW50MWludDMyKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZTIgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQy
aW50MzIpOworICAgIFZhbHVlKiBkb3VibGVWYWx1ZTEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlMSk7CisgICAgVmFsdWUq
IGRvdWJsZVZhbHVlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJs
ZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUyKTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFNlbGVjdCwgT3JpZ2luKCksCisgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIG9w
Y29kZSwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgZG91YmxlVmFsdWUxLAorICAgICAgICAg
ICAgICAgIGRvdWJsZVZhbHVlMiksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMiksCisgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMykpKTsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxl
QW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYml0d2lzZV9j
YXN0PGludDMyX3Q+KGIpLCA0MiwgLTUpLCBvcGVyYXRpb24oYSwgYikgPyA0MiA6IC01KSk7Cit9
CisKK3ZvaWQgdGVzdFNlbGVjdENvbXBhcmVGbG9hdFRvRG91YmxlKGZsb2F0IGEsIGZsb2F0IGIp
Cit7CisgICAgdGVzdFNlbGVjdENvbXBhcmVGbG9hdFRvRG91YmxlPEVxdWFsPihhLCBiLCBbXShm
bG9hdCBhLCBmbG9hdCBiKSAtPiBib29sIHsgcmV0dXJuIGEgPT0gYjsgfSk7CisgICAgdGVzdFNl
bGVjdENvbXBhcmVGbG9hdFRvRG91YmxlPE5vdEVxdWFsPihhLCBiLCBbXShmbG9hdCBhLCBmbG9h
dCBiKSAtPiBib29sIHsgcmV0dXJuIGEgIT0gYjsgfSk7CisgICAgdGVzdFNlbGVjdENvbXBhcmVG
bG9hdFRvRG91YmxlPExlc3NUaGFuPihhLCBiLCBbXShmbG9hdCBhLCBmbG9hdCBiKSAtPiBib29s
IHsgcmV0dXJuIGEgPCBiOyB9KTsKKyAgICB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0VG9Eb3VibGU8
R3JlYXRlclRoYW4+KGEsIGIsIFtdKGZsb2F0IGEsIGZsb2F0IGIpIC0+IGJvb2wgeyByZXR1cm4g
YSA+IGI7IH0pOworICAgIHRlc3RTZWxlY3RDb21wYXJlRmxvYXRUb0RvdWJsZTxMZXNzRXF1YWw+
KGEsIGIsIFtdKGZsb2F0IGEsIGZsb2F0IGIpIC0+IGJvb2wgeyByZXR1cm4gYSA8PSBiOyB9KTsK
KyAgICB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0VG9Eb3VibGU8R3JlYXRlckVxdWFsPihhLCBiLCBb
XShmbG9hdCBhLCBmbG9hdCBiKSAtPiBib29sIHsgcmV0dXJuIGEgPj0gYjsgfSk7CisgICAgdGVz
dFNlbGVjdENvbXBhcmVGbG9hdFRvRG91YmxlPEVxdWFsT3JVbm9yZGVyZWQ+KGEsIGIsIFtdKGZs
b2F0IGEsIGZsb2F0IGIpIC0+IGJvb2wgeyByZXR1cm4gYSAhPSBhIHx8IGIgIT0gYiB8fCBhID09
IGI7IH0pOworfQorCit2b2lkIHRlc3RTZWxlY3REb3VibGUoKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgU2VsZWN0
LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
ICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIDQyKSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCksCisgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEZQUkluZm86OmFyZ3VtZW50RlBSMSkpKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9j
KHByb2MpOworICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCA0MiwgMS41LCAyLjYpID09
IDEuNSk7CisgICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDQyLCA2NDI0NjIuNywgMzI1
MzMuOCkgPT0gNjQyNDYyLjcpOworICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCA0Mywg
MS45LCAyLjApID09IDIuMCk7CisgICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDQzLCA2
NDI0NjIuMSwgMzI1MzMuMikgPT0gMzI1MzMuMik7Cit9CisKK3ZvaWQgdGVzdFNlbGVjdERvdWJs
ZVRlc3QoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICAgICAgcHJvYywgU2VsZWN0LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6
YXJndW1lbnRGUFIxKSkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Cisg
ICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDQyLCAxLjUsIDIuNikgPT0gMS41KTsKKyAg
ICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgNDIsIDY0MjQ2Mi43LCAzMjUzMy44KSA9PSA2
NDI0NjIuNyk7CisgICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDAsIDEuOSwgMi4wKSA9
PSAyLjApOworICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAwLCA2NDI0NjIuMSwgMzI1
MzMuMikgPT0gMzI1MzMuMik7Cit9CisKK3ZvaWQgdGVzdFNlbGVjdERvdWJsZUNvbXBhcmVEb3Vi
bGUoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICAgICAgcHJvYywgU2VsZWN0LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgTGVzc1RoYW4sIE9yaWdpbigp
LAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKSwKKyAgICAgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFy
Z3VtZW50RlBSMSkpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjIpLAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZv
Ojphcmd1bWVudEZQUjMpKSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsK
KyAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgLTEuMCwgMS4wLCAxLjEsIDIuMikgPT0g
MS4xKTsKKyAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgNDIuNSwgNDIuNTEsIDY0MjQ2
Mi4zLCAzMjUzMy40KSA9PSA2NDI0NjIuMyk7CisgICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNv
ZGUsIFBOYU4sIDAuMCwgMS41LCAyLjYpID09IDIuNik7CisgICAgQ0hFQ0soaW52b2tlPGRvdWJs
ZT4oKmNvZGUsIDQyLjUxLCA0Mi41LCA2NDI0NjIuNywgMzI1MzMuOCkgPT0gMzI1MzMuOCk7Cisg
ICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDQyLjUyLCA0Mi41MiwgNTI0OTc4MjQ1Ljks
IDM1Mi4wKSA9PSAzNTIuMCk7Cit9CisKK3ZvaWQgdGVzdFNlbGVjdERvdWJsZUNvbXBhcmVGbG9h
dChmbG9hdCBhLCBmbG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIx
KSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MWludDMyKTsKKyAgICBWYWx1ZSogZmxv
YXRWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmln
aW4oKSwgYXJndW1lbnQyaW50MzIpOworCisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgU2VsZWN0LCBPcmlnaW4oKSwKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgTGVzc1Ro
YW4sIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIGZsb2F0VmFsdWUxLAorICAgICAgICAgICAg
ICAgIGZsb2F0VmFsdWUyKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKSwKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBS
SW5mbzo6YXJndW1lbnRGUFIxKSkpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFu
ZFJ1bjxkb3VibGU+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYml0d2lzZV9jYXN0
PGludDMyX3Q+KGIpLCA0Mi4xLCAtTV9QSSksIGEgPCBiID8gNDIuMSA6IC1NX1BJKSk7Cit9CisK
K3ZvaWQgdGVzdFNlbGVjdEZsb2F0Q29tcGFyZUZsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCit7Cisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICBWYWx1ZSogYXJndW1lbnQxaW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1
ZSogYXJndW1lbnQyaW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICBWYWx1ZSogYXJndW1lbnQz
aW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjIpKTsKKyAgICBWYWx1ZSogYXJndW1lbnQ0aW50MzIgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjMpKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZTEgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQxaW50MzIpOworICAgIFZh
bHVlKiBmbG9hdFZhbHVlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNh
c3QsIE9yaWdpbigpLCBhcmd1bWVudDJpbnQzMik7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUzID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3Vt
ZW50M2ludDMyKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZTQgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQ0aW50MzIpOworCisgICAg
cm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywg
U2VsZWN0LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgICAgICAgICAgcHJvYywgTGVzc1RoYW4sIE9yaWdpbigpLAorICAgICAgICAgICAgICAg
IGZsb2F0VmFsdWUxLAorICAgICAgICAgICAgICAgIGZsb2F0VmFsdWUyKSwKKyAgICAgICAgICAg
IGZsb2F0VmFsdWUzLAorICAgICAgICAgICAgZmxvYXRWYWx1ZTQpKTsKKworICAgIENIRUNLKGlz
SWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZmxvYXQ+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90
PihhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oMS4x
ZiksIGJpdHdpc2VfY2FzdDxpbnQzMl90PigtNDIuZikpLCBhIDwgYiA/IDEuMWYgOiAtNDIuZikp
OworfQorCisKK3RlbXBsYXRlPEIzOjpPcGNvZGUgb3Bjb2RlPgordm9pZCB0ZXN0U2VsZWN0RG91
YmxlQ29tcGFyZURvdWJsZShib29sICgqb3BlcmF0aW9uKShkb3VibGUsIGRvdWJsZSkpCit7Cisg
ICAgeyAvLyBDb21wYXJlIGFyZ3VtZW50cyBhbmQgc2VsZWN0ZWQgYXJndW1lbnRzIGFyZSBhbGwg
ZGlmZmVyZW50LgorICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgVmFsdWUqIGFyZzAgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50
RlBSMCk7CisgICAgICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOworICAgICAgICBW
YWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIyKTsKKyAgICAgICAgVmFsdWUqIGFyZzMgPSByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFy
Z3VtZW50RlBSMyk7CisKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAg
ICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgU2VsZWN0LCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgICAg
ICBwcm9jLCBvcGNvZGUsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgICAgICBhcmcwLAorICAg
ICAgICAgICAgICAgICAgICBhcmcxKSwKKyAgICAgICAgICAgICAgICBhcmcyLAorICAgICAgICAg
ICAgICAgIGFyZzMpKTsKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisK
KyAgICAgICAgZm9yIChhdXRvJiBsZWZ0IDogZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4o
KSkgeworICAgICAgICAgICAgZm9yIChhdXRvJiByaWdodCA6IGZsb2F0aW5nUG9pbnRPcGVyYW5k
czxkb3VibGU+KCkpIHsKKyAgICAgICAgICAgICAgICBkb3VibGUgZXhwZWN0ZWQgPSBvcGVyYXRp
b24obGVmdC52YWx1ZSwgcmlnaHQudmFsdWUpID8gNDIuNSA6IC02Ni41OworICAgICAgICAgICAg
ICAgIENIRUNLKGlzSWRlbnRpY2FsKGludm9rZTxkb3VibGU+KCpjb2RlLCBsZWZ0LnZhbHVlLCBy
aWdodC52YWx1ZSwgNDIuNSwgLTY2LjUpLCBleHBlY3RlZCkpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorICAgIHsgLy8gQ29tcGFyZSBhcmd1bWVudHMgYW5kIHNlbGVjdGVkIGFy
Z3VtZW50cyBhcmUgYWxsIGRpZmZlcmVudC4gInRoZW5DYXNlIiBpcyBsaXZlIGFmdGVyIG9wZXJh
dGlvbi4KKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIFZhbHVlKiBhcmcwID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjAp
OworICAgICAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIxKTsKKyAgICAgICAgVmFsdWUq
IGFyZzIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEZQUkluZm86OmFyZ3VtZW50RlBSMik7CisgICAgICAgIFZhbHVlKiBhcmczID0gcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVu
dEZQUjMpOworCisgICAgICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFNlbGVjdCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIG9wY29kZSwgT3JpZ2luKCksIGFyZzAsIGFyZzEpLAorICAgICAgICAgICAgYXJn
MiwKKyAgICAgICAgICAgIGFyZzMpOworCisgICAgICAgIFBhdGNocG9pbnRWYWx1ZSoga2VlcFZh
bHVlc0xpdmUgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBWb2lkLCBP
cmlnaW4oKSk7CisgICAgICAgIGtlZXBWYWx1ZXNMaXZlLT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1
ZShhcmcyLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7CisgICAgICAgIGtlZXBWYWx1ZXNMaXZl
LT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMmLCBjb25zdCBTdGFja21hcEdlbmVyYXRp
b25QYXJhbXMmKSB7IH0pOworCisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOworICAgICAgICBhdXRvIGNvZGUgPSBjb21w
aWxlUHJvYyhwcm9jKTsKKworICAgICAgICBmb3IgKGF1dG8mIGxlZnQgOiBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZG91YmxlPigpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHJpZ2h0IDogZmxv
YXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSkgeworICAgICAgICAgICAgICAgIGRvdWJsZSBl
eHBlY3RlZCA9IG9wZXJhdGlvbihsZWZ0LnZhbHVlLCByaWdodC52YWx1ZSkgPyA0Mi41IDogLTY2
LjU7CisgICAgICAgICAgICAgICAgQ0hFQ0soaXNJZGVudGljYWwoaW52b2tlPGRvdWJsZT4oKmNv
ZGUsIGxlZnQudmFsdWUsIHJpZ2h0LnZhbHVlLCA0Mi41LCAtNjYuNSksIGV4cGVjdGVkKSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgeyAvLyBDb21wYXJlIGFyZ3VtZW50
cyBhbmQgc2VsZWN0ZWQgYXJndW1lbnRzIGFyZSBhbGwgZGlmZmVyZW50LiAiZWxzZUNhc2UiIGlz
IGxpdmUgYWZ0ZXIgb3BlcmF0aW9uLgorICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgVmFsdWUqIGFyZzAg
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUklu
Zm86OmFyZ3VtZW50RlBSMCk7CisgICAgICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjEp
OworICAgICAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIyKTsKKyAgICAgICAgVmFsdWUq
IGFyZzMgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEZQUkluZm86OmFyZ3VtZW50RlBSMyk7CisKKyAgICAgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2VsZWN0LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgb3Bjb2RlLCBPcmlnaW4oKSwgYXJnMCwgYXJnMSks
CisgICAgICAgICAgICBhcmcyLAorICAgICAgICAgICAgYXJnMyk7CisKKyAgICAgICAgUGF0Y2hw
b2ludFZhbHVlKiBrZWVwVmFsdWVzTGl2ZSA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFs
dWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKKyAgICAgICAga2VlcFZhbHVlc0xpdmUtPmFwcGVu
ZChDb25zdHJhaW5lZFZhbHVlKGFyZzMsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICAg
ICAga2VlcFZhbHVlc0xpdmUtPnNldEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVycyYsIGNvbnN0
IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsgfSk7CisKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgICAg
IGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworCisgICAgICAgIGZvciAoYXV0byYgbGVm
dCA6IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpIHsKKyAgICAgICAgICAgIGZvciAo
YXV0byYgcmlnaHQgOiBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKSB7CisgICAgICAg
ICAgICAgICAgZG91YmxlIGV4cGVjdGVkID0gb3BlcmF0aW9uKGxlZnQudmFsdWUsIHJpZ2h0LnZh
bHVlKSA/IDQyLjUgOiAtNjYuNTsKKyAgICAgICAgICAgICAgICBDSEVDSyhpc0lkZW50aWNhbChp
bnZva2U8ZG91YmxlPigqY29kZSwgbGVmdC52YWx1ZSwgcmlnaHQudmFsdWUsIDQyLjUsIC02Ni41
KSwgZXhwZWN0ZWQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICB7IC8v
IENvbXBhcmUgYXJndW1lbnRzIGFuZCBzZWxlY3RlZCBhcmd1bWVudHMgYXJlIGFsbCBkaWZmZXJl
bnQuIEJvdGggY2FzZXMgYXJlIGxpdmUgYWZ0ZXIgb3BlcmF0aW9uLgorICAgICAgICBQcm9jZWR1
cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICAgICAgVmFsdWUqIGFyZzAgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgICAgIFZhbHVlKiBhcmcx
ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJ
bmZvOjphcmd1bWVudEZQUjEpOworICAgICAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIy
KTsKKyAgICAgICAgVmFsdWUqIGFyZzMgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMyk7CisKKyAgICAgICAgVmFs
dWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2VsZWN0LCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgb3Bjb2RlLCBPcmln
aW4oKSwgYXJnMCwgYXJnMSksCisgICAgICAgICAgICBhcmcyLAorICAgICAgICAgICAgYXJnMyk7
CisKKyAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBrZWVwVmFsdWVzTGl2ZSA9IHJvb3QtPmFwcGVu
ZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKKyAgICAgICAga2Vl
cFZhbHVlc0xpdmUtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzIsIFZhbHVlUmVwOjpTb21l
UmVnaXN0ZXIpKTsKKyAgICAgICAga2VlcFZhbHVlc0xpdmUtPmFwcGVuZChDb25zdHJhaW5lZFZh
bHVlKGFyZzMsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICAgICAga2VlcFZhbHVlc0xp
dmUtPnNldEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJh
dGlvblBhcmFtcyYpIHsgfSk7CisKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgICAgIGF1dG8gY29kZSA9IGNv
bXBpbGVQcm9jKHByb2MpOworCisgICAgICAgIGZvciAoYXV0byYgbGVmdCA6IGZsb2F0aW5nUG9p
bnRPcGVyYW5kczxkb3VibGU+KCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcmlnaHQgOiBm
bG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKSB7CisgICAgICAgICAgICAgICAgZG91Ymxl
IGV4cGVjdGVkID0gb3BlcmF0aW9uKGxlZnQudmFsdWUsIHJpZ2h0LnZhbHVlKSA/IDQyLjUgOiAt
NjYuNTsKKyAgICAgICAgICAgICAgICBDSEVDSyhpc0lkZW50aWNhbChpbnZva2U8ZG91YmxlPigq
Y29kZSwgbGVmdC52YWx1ZSwgcmlnaHQudmFsdWUsIDQyLjUsIC02Ni41KSwgZXhwZWN0ZWQpKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICB7IC8vIFRoZSBsZWZ0IGFyZ3Vt
ZW50IGlzIHRoZSBzYW1lIGFzIHRoZSAiZWxzZUNhc2UiIGFyZ3VtZW50LgorICAgICAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICAgICAgVmFsdWUqIGFyZzAgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgICAgIFZhbHVlKiBh
cmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBG
UFJJbmZvOjphcmd1bWVudEZQUjEpOworICAgICAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRG
UFIyKTsKKworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBTZWxlY3QsIE9yaWdpbigpLAorICAgICAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgIHByb2Ms
IG9wY29kZSwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgICAgIGFyZzAsCisgICAgICAgICAg
ICAgICAgICAgIGFyZzEpLAorICAgICAgICAgICAgICAgIGFyZzIsCisgICAgICAgICAgICAgICAg
YXJnMCkpOworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKworICAgICAg
ICBmb3IgKGF1dG8mIGxlZnQgOiBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKSB7Cisg
ICAgICAgICAgICBmb3IgKGF1dG8mIHJpZ2h0IDogZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJs
ZT4oKSkgeworICAgICAgICAgICAgICAgIGRvdWJsZSBleHBlY3RlZCA9IG9wZXJhdGlvbihsZWZ0
LnZhbHVlLCByaWdodC52YWx1ZSkgPyA0Mi41IDogbGVmdC52YWx1ZTsKKyAgICAgICAgICAgICAg
ICBDSEVDSyhpc0lkZW50aWNhbChpbnZva2U8ZG91YmxlPigqY29kZSwgbGVmdC52YWx1ZSwgcmln
aHQudmFsdWUsIDQyLjUsIGxlZnQudmFsdWUpLCBleHBlY3RlZCkpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorICAgIHsgLy8gVGhlIGxlZnQgYXJndW1lbnQgaXMgdGhlIHNhbWUg
YXMgdGhlICJlbHNlQ2FzZSIgYXJndW1lbnQuICJ0aGVuQ2FzZSIgaXMgbGl2ZSBhZnRlciBvcGVy
YXRpb24uCisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBWYWx1ZSogYXJnMCA9IHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIw
KTsKKyAgICAgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7CisgICAgICAgIFZhbHVl
KiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBGUFJJbmZvOjphcmd1bWVudEZQUjIpOworCisgICAgICAgIFZhbHVlKiByZXN1bHQgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNlbGVjdCwgT3JpZ2luKCksCisgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIG9wY29kZSwgT3JpZ2luKCksIGFyZzAsIGFyZzEp
LAorICAgICAgICAgICAgYXJnMiwKKyAgICAgICAgICAgIGFyZzApOworCisgICAgICAgIFBhdGNo
cG9pbnRWYWx1ZSoga2VlcFZhbHVlc0xpdmUgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZh
bHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7CisgICAgICAgIGtlZXBWYWx1ZXNMaXZlLT5hcHBl
bmQoQ29uc3RyYWluZWRWYWx1ZShhcmcyLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7CisgICAg
ICAgIGtlZXBWYWx1ZXNMaXZlLT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMmLCBjb25z
dCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7IH0pOworCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOworICAgICAg
ICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKworICAgICAgICBmb3IgKGF1dG8mIGxl
ZnQgOiBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKSB7CisgICAgICAgICAgICBmb3Ig
KGF1dG8mIHJpZ2h0IDogZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSkgeworICAgICAg
ICAgICAgICAgIGRvdWJsZSBleHBlY3RlZCA9IG9wZXJhdGlvbihsZWZ0LnZhbHVlLCByaWdodC52
YWx1ZSkgPyA0Mi41IDogbGVmdC52YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVDSyhpc0lkZW50
aWNhbChpbnZva2U8ZG91YmxlPigqY29kZSwgbGVmdC52YWx1ZSwgcmlnaHQudmFsdWUsIDQyLjUs
IGxlZnQudmFsdWUpLCBleHBlY3RlZCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorfQorCit2b2lkIHRlc3RTZWxlY3REb3VibGVDb21wYXJlRG91YmxlV2l0aEFsaWFzaW5nKCkK
K3sKKyAgICB0ZXN0U2VsZWN0RG91YmxlQ29tcGFyZURvdWJsZTxFcXVhbD4oW10oZG91YmxlIGEs
IGRvdWJsZSBiKSAtPiBib29sIHsgcmV0dXJuIGEgPT0gYjsgfSk7CisgICAgdGVzdFNlbGVjdERv
dWJsZUNvbXBhcmVEb3VibGU8Tm90RXF1YWw+KFtdKGRvdWJsZSBhLCBkb3VibGUgYikgLT4gYm9v
bCB7IHJldHVybiBhICE9IGI7IH0pOworICAgIHRlc3RTZWxlY3REb3VibGVDb21wYXJlRG91Ymxl
PExlc3NUaGFuPihbXShkb3VibGUgYSwgZG91YmxlIGIpIC0+IGJvb2wgeyByZXR1cm4gYSA8IGI7
IH0pOworICAgIHRlc3RTZWxlY3REb3VibGVDb21wYXJlRG91YmxlPEdyZWF0ZXJUaGFuPihbXShk
b3VibGUgYSwgZG91YmxlIGIpIC0+IGJvb2wgeyByZXR1cm4gYSA+IGI7IH0pOworICAgIHRlc3RT
ZWxlY3REb3VibGVDb21wYXJlRG91YmxlPExlc3NFcXVhbD4oW10oZG91YmxlIGEsIGRvdWJsZSBi
KSAtPiBib29sIHsgcmV0dXJuIGEgPD0gYjsgfSk7CisgICAgdGVzdFNlbGVjdERvdWJsZUNvbXBh
cmVEb3VibGU8R3JlYXRlckVxdWFsPihbXShkb3VibGUgYSwgZG91YmxlIGIpIC0+IGJvb2wgeyBy
ZXR1cm4gYSA+PSBiOyB9KTsKKyAgICB0ZXN0U2VsZWN0RG91YmxlQ29tcGFyZURvdWJsZTxFcXVh
bE9yVW5vcmRlcmVkPihbXShkb3VibGUgYSwgZG91YmxlIGIpIC0+IGJvb2wgeyByZXR1cm4gYSAh
PSBhIHx8IGIgIT0gYiB8fCBhID09IGI7IH0pOworfQorCit0ZW1wbGF0ZTxCMzo6T3Bjb2RlIG9w
Y29kZT4KK3ZvaWQgdGVzdFNlbGVjdEZsb2F0Q29tcGFyZUZsb2F0KGJvb2wgKCpvcGVyYXRpb24p
KGZsb2F0LCBmbG9hdCkpCit7CisgICAgeyAvLyBDb21wYXJlIGFyZ3VtZW50cyBhbmQgc2VsZWN0
ZWQgYXJndW1lbnRzIGFyZSBhbGwgZGlmZmVyZW50LgorICAgICAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBW
YWx1ZSogYXJnMCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9y
aWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywg
T3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSk7CisgICAgICAgIFZh
bHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3Jp
Z2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKTsKKyAgICAgICAgVmFs
dWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmln
aW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9y
aWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKSkpOworICAgICAgICBWYWx1
ZSogYXJnMyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdp
bigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3Jp
Z2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpKSk7CisKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAg
ICAgcHJvYywgU2VsZWN0LCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBvcGNvZGUsIE9yaWdpbigpLAor
ICAgICAgICAgICAgICAgICAgICBhcmcwLAorICAgICAgICAgICAgICAgICAgICBhcmcxKSwKKyAg
ICAgICAgICAgICAgICBhcmcyLAorICAgICAgICAgICAgICAgIGFyZzMpKTsKKyAgICAgICAgYXV0
byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICAgICAgZm9yIChhdXRvJiBsZWZ0IDog
ZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8m
IHJpZ2h0IDogZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKSB7CisgICAgICAgICAgICAg
ICAgZmxvYXQgZXhwZWN0ZWQgPSBvcGVyYXRpb24obGVmdC52YWx1ZSwgcmlnaHQudmFsdWUpID8g
NDIuNSA6IC02Ni41OworICAgICAgICAgICAgICAgIENIRUNLKGlzSWRlbnRpY2FsKGludm9rZTxm
bG9hdD4oKmNvZGUsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihsZWZ0LnZhbHVlKSwgYml0d2lzZV9j
YXN0PGludDMyX3Q+KHJpZ2h0LnZhbHVlKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KDQyLjVmKSwg
Yml0d2lzZV9jYXN0PGludDMyX3Q+KC02Ni41ZikpLCBleHBlY3RlZCkpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorICAgIHsgLy8gQ29tcGFyZSBhcmd1bWVudHMgYW5kIHNlbGVj
dGVkIGFyZ3VtZW50cyBhcmUgYWxsIGRpZmZlcmVudC4gInRoZW5DYXNlIiBpcyBsaXZlIGFmdGVy
IG9wZXJhdGlvbi4KKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIFZhbHVlKiBhcmcwID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCisgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCkpKTsKKyAgICAgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxKSkpOworICAgICAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjIpKSk7CisgICAgICAgIFZhbHVlKiBhcmczID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMykpKTsKKworICAgICAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBTZWxlY3QsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBvcGNvZGUsIE9yaWdpbigpLCBhcmcwLCBhcmcxKSwKKyAg
ICAgICAgICAgIGFyZzIsCisgICAgICAgICAgICBhcmczKTsKKworICAgICAgICBQYXRjaHBvaW50
VmFsdWUqIGtlZXBWYWx1ZXNMaXZlID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4o
cHJvYywgVm9pZCwgT3JpZ2luKCkpOworICAgICAgICBrZWVwVmFsdWVzTGl2ZS0+YXBwZW5kKENv
bnN0cmFpbmVkVmFsdWUoYXJnMiwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOworICAgICAgICBr
ZWVwVmFsdWVzTGl2ZS0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKKworICAgICAgICByb290LT5hcHBlbmROZXdD
b250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICAgICAgYXV0
byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICAgICAgZm9yIChhdXRvJiBsZWZ0IDog
ZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8m
IHJpZ2h0IDogZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKSB7CisgICAgICAgICAgICAg
ICAgZmxvYXQgZXhwZWN0ZWQgPSBvcGVyYXRpb24obGVmdC52YWx1ZSwgcmlnaHQudmFsdWUpID8g
NDIuNSA6IC02Ni41OworICAgICAgICAgICAgICAgIENIRUNLKGlzSWRlbnRpY2FsKGludm9rZTxm
bG9hdD4oKmNvZGUsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihsZWZ0LnZhbHVlKSwgYml0d2lzZV9j
YXN0PGludDMyX3Q+KHJpZ2h0LnZhbHVlKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KDQyLjVmKSwg
Yml0d2lzZV9jYXN0PGludDMyX3Q+KC02Ni41ZikpLCBleHBlY3RlZCkpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorICAgIHsgLy8gQ29tcGFyZSBhcmd1bWVudHMgYW5kIHNlbGVj
dGVkIGFyZ3VtZW50cyBhcmUgYWxsIGRpZmZlcmVudC4gImVsc2VDYXNlIiBpcyBsaXZlIGFmdGVy
IG9wZXJhdGlvbi4KKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIFZhbHVlKiBhcmcwID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCisgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCkpKTsKKyAgICAgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxKSkpOworICAgICAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjIpKSk7CisgICAgICAgIFZhbHVlKiBhcmczID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMykpKTsKKworICAgICAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBTZWxlY3QsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBvcGNvZGUsIE9yaWdpbigpLCBhcmcwLCBhcmcxKSwKKyAg
ICAgICAgICAgIGFyZzIsCisgICAgICAgICAgICBhcmczKTsKKworICAgICAgICBQYXRjaHBvaW50
VmFsdWUqIGtlZXBWYWx1ZXNMaXZlID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4o
cHJvYywgVm9pZCwgT3JpZ2luKCkpOworICAgICAgICBrZWVwVmFsdWVzTGl2ZS0+YXBwZW5kKENv
bnN0cmFpbmVkVmFsdWUoYXJnMywgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOworICAgICAgICBr
ZWVwVmFsdWVzTGl2ZS0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKKworICAgICAgICByb290LT5hcHBlbmROZXdD
b250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICAgICAgYXV0
byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICAgICAgZm9yIChhdXRvJiBsZWZ0IDog
ZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8m
IHJpZ2h0IDogZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKSB7CisgICAgICAgICAgICAg
ICAgZmxvYXQgZXhwZWN0ZWQgPSBvcGVyYXRpb24obGVmdC52YWx1ZSwgcmlnaHQudmFsdWUpID8g
NDIuNSA6IC02Ni41OworICAgICAgICAgICAgICAgIENIRUNLKGlzSWRlbnRpY2FsKGludm9rZTxm
bG9hdD4oKmNvZGUsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihsZWZ0LnZhbHVlKSwgYml0d2lzZV9j
YXN0PGludDMyX3Q+KHJpZ2h0LnZhbHVlKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KDQyLjVmKSwg
Yml0d2lzZV9jYXN0PGludDMyX3Q+KC02Ni41ZikpLCBleHBlY3RlZCkpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorICAgIHsgLy8gQ29tcGFyZSBhcmd1bWVudHMgYW5kIHNlbGVj
dGVkIGFyZ3VtZW50cyBhcmUgYWxsIGRpZmZlcmVudC4gQm90aCBjYXNlcyBhcmUgbGl2ZSBhZnRl
ciBvcGVyYXRpb24uCisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBWYWx1ZSogYXJnMCA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApKSk7CisgICAgICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCisgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSkpKTsKKyAgICAgICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIyKSkpOworICAgICAgICBWYWx1ZSogYXJnMyA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjMpKSk7CisKKyAgICAgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgU2VsZWN0LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgb3Bjb2RlLCBPcmlnaW4oKSwgYXJnMCwgYXJnMSksCisg
ICAgICAgICAgICBhcmcyLAorICAgICAgICAgICAgYXJnMyk7CisKKyAgICAgICAgUGF0Y2hwb2lu
dFZhbHVlKiBrZWVwVmFsdWVzTGl2ZSA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+
KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKKyAgICAgICAga2VlcFZhbHVlc0xpdmUtPmFwcGVuZChD
b25zdHJhaW5lZFZhbHVlKGFyZzIsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICAgICAg
a2VlcFZhbHVlc0xpdmUtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzMsIFZhbHVlUmVwOjpT
b21lUmVnaXN0ZXIpKTsKKyAgICAgICAga2VlcFZhbHVlc0xpdmUtPnNldEdlbmVyYXRvcihbJl0g
KENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsgfSk7CisK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2lu
KCksIHJlc3VsdCk7CisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworCisg
ICAgICAgIGZvciAoYXV0byYgbGVmdCA6IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSkg
eworICAgICAgICAgICAgZm9yIChhdXRvJiByaWdodCA6IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxm
bG9hdD4oKSkgeworICAgICAgICAgICAgICAgIGZsb2F0IGV4cGVjdGVkID0gb3BlcmF0aW9uKGxl
ZnQudmFsdWUsIHJpZ2h0LnZhbHVlKSA/IDQyLjUgOiAtNjYuNTsKKyAgICAgICAgICAgICAgICBD
SEVDSyhpc0lkZW50aWNhbChpbnZva2U8ZmxvYXQ+KCpjb2RlLCBiaXR3aXNlX2Nhc3Q8aW50MzJf
dD4obGVmdC52YWx1ZSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihyaWdodC52YWx1ZSksIGJpdHdp
c2VfY2FzdDxpbnQzMl90Pig0Mi41ZiksIGJpdHdpc2VfY2FzdDxpbnQzMl90PigtNjYuNWYpKSwg
ZXhwZWN0ZWQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICB7IC8vIFRo
ZSBsZWZ0IGFyZ3VtZW50IGlzIHRoZSBzYW1lIGFzIHRoZSAiZWxzZUNhc2UiIGFyZ3VtZW50Lgor
ICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICAgICAgVmFsdWUqIGFyZzAgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSkpOworICAgICAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjEpKSk7CisgICAgICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMikpKTsKKworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAg
ICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBTZWxlY3QsIE9yaWdpbigpLAorICAgICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgIHBy
b2MsIG9wY29kZSwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgICAgIGFyZzAsCisgICAgICAg
ICAgICAgICAgICAgIGFyZzEpLAorICAgICAgICAgICAgICAgIGFyZzIsCisgICAgICAgICAgICAg
ICAgYXJnMCkpOworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKworICAg
ICAgICBmb3IgKGF1dG8mIGxlZnQgOiBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpIHsK
KyAgICAgICAgICAgIGZvciAoYXV0byYgcmlnaHQgOiBmbG9hdGluZ1BvaW50T3BlcmFuZHM8Zmxv
YXQ+KCkpIHsKKyAgICAgICAgICAgICAgICBmbG9hdCBleHBlY3RlZCA9IG9wZXJhdGlvbihsZWZ0
LnZhbHVlLCByaWdodC52YWx1ZSkgPyA0Mi41IDogbGVmdC52YWx1ZTsKKyAgICAgICAgICAgICAg
ICBDSEVDSyhpc0lkZW50aWNhbChpbnZva2U8ZmxvYXQ+KCpjb2RlLCBiaXR3aXNlX2Nhc3Q8aW50
MzJfdD4obGVmdC52YWx1ZSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihyaWdodC52YWx1ZSksIGJp
dHdpc2VfY2FzdDxpbnQzMl90Pig0Mi41ZiksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihsZWZ0LnZh
bHVlKSksIGV4cGVjdGVkKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAg
eyAvLyBUaGUgbGVmdCBhcmd1bWVudCBpcyB0aGUgc2FtZSBhcyB0aGUgImVsc2VDYXNlIiBhcmd1
bWVudC4gInRoZW5DYXNlIiBpcyBsaXZlIGFmdGVyIG9wZXJhdGlvbi4KKyAgICAgICAgUHJvY2Vk
dXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgICAgIFZhbHVlKiBhcmcwID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNl
Q2FzdCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKTsKKyAg
ICAgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VD
YXN0LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
VHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpOworICAg
ICAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNh
c3QsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBU
cnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpKSk7CisKKyAg
ICAgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2VsZWN0
LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgb3Bj
b2RlLCBPcmlnaW4oKSwgYXJnMCwgYXJnMSksCisgICAgICAgICAgICBhcmcyLAorICAgICAgICAg
ICAgYXJnMCk7CisKKyAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBrZWVwVmFsdWVzTGl2ZSA9IHJv
b3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKKyAg
ICAgICAga2VlcFZhbHVlc0xpdmUtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzIsIFZhbHVl
UmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICAgICAga2VlcFZhbHVlc0xpdmUtPnNldEdlbmVyYXRv
cihbJl0gKENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsg
fSk7CisKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwg
T3JpZ2luKCksIHJlc3VsdCk7CisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2Mp
OworCisgICAgICAgIGZvciAoYXV0byYgbGVmdCA6IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9h
dD4oKSkgeworICAgICAgICAgICAgZm9yIChhdXRvJiByaWdodCA6IGZsb2F0aW5nUG9pbnRPcGVy
YW5kczxmbG9hdD4oKSkgeworICAgICAgICAgICAgICAgIGZsb2F0IGV4cGVjdGVkID0gb3BlcmF0
aW9uKGxlZnQudmFsdWUsIHJpZ2h0LnZhbHVlKSA/IDQyLjUgOiBsZWZ0LnZhbHVlOworICAgICAg
ICAgICAgICAgIENIRUNLKGlzSWRlbnRpY2FsKGludm9rZTxmbG9hdD4oKmNvZGUsIGJpdHdpc2Vf
Y2FzdDxpbnQzMl90PihsZWZ0LnZhbHVlKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KHJpZ2h0LnZh
bHVlKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KDQyLjVmKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+
KGxlZnQudmFsdWUpKSwgZXhwZWN0ZWQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KK30KKwordm9pZCB0ZXN0U2VsZWN0RmxvYXRDb21wYXJlRmxvYXRXaXRoQWxpYXNpbmcoKQor
eworICAgIHRlc3RTZWxlY3RGbG9hdENvbXBhcmVGbG9hdDxFcXVhbD4oW10oZmxvYXQgYSwgZmxv
YXQgYikgLT4gYm9vbCB7IHJldHVybiBhID09IGI7IH0pOworICAgIHRlc3RTZWxlY3RGbG9hdENv
bXBhcmVGbG9hdDxOb3RFcXVhbD4oW10oZmxvYXQgYSwgZmxvYXQgYikgLT4gYm9vbCB7IHJldHVy
biBhICE9IGI7IH0pOworICAgIHRlc3RTZWxlY3RGbG9hdENvbXBhcmVGbG9hdDxMZXNzVGhhbj4o
W10oZmxvYXQgYSwgZmxvYXQgYikgLT4gYm9vbCB7IHJldHVybiBhIDwgYjsgfSk7CisgICAgdGVz
dFNlbGVjdEZsb2F0Q29tcGFyZUZsb2F0PEdyZWF0ZXJUaGFuPihbXShmbG9hdCBhLCBmbG9hdCBi
KSAtPiBib29sIHsgcmV0dXJuIGEgPiBiOyB9KTsKKyAgICB0ZXN0U2VsZWN0RmxvYXRDb21wYXJl
RmxvYXQ8TGVzc0VxdWFsPihbXShmbG9hdCBhLCBmbG9hdCBiKSAtPiBib29sIHsgcmV0dXJuIGEg
PD0gYjsgfSk7CisgICAgdGVzdFNlbGVjdEZsb2F0Q29tcGFyZUZsb2F0PEdyZWF0ZXJFcXVhbD4o
W10oZmxvYXQgYSwgZmxvYXQgYikgLT4gYm9vbCB7IHJldHVybiBhID49IGI7IH0pOworICAgIHRl
c3RTZWxlY3RGbG9hdENvbXBhcmVGbG9hdDxFcXVhbE9yVW5vcmRlcmVkPihbXShmbG9hdCBhLCBm
bG9hdCBiKSAtPiBib29sIHsgcmV0dXJuIGEgIT0gYSB8fCBiICE9IGIgfHwgYSA9PSBiOyB9KTsK
K30KKwordm9pZCB0ZXN0U2VsZWN0Rm9sZChpbnRwdHJfdCB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1
cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFNl
bGVjdCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHZhbHVlKSwKKyAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IDQyKSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSkpKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIENI
RUNLKGludm9rZTxpbnRwdHJfdD4oKmNvZGUsIDEsIDIpID09ICh2YWx1ZSA9PSA0MiA/IDEgOiAy
KSk7CisgICAgQ0hFQ0soaW52b2tlPGludHB0cl90PigqY29kZSwgNjQyNDYyLCAzMjUzMykgPT0g
KHZhbHVlID09IDQyID8gNjQyNDYyIDogMzI1MzMpKTsKK30KKwordm9pZCB0ZXN0U2VsZWN0SW52
ZXJ0KCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgIHByb2MsIFNlbGVjdCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4oKSwK
KyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAg
ICAgICBwcm9jLCBOb3RFcXVhbCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCA0MikpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSksCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMikpKTsKKworICAgIGF1dG8g
Y29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIENIRUNLKGludm9rZTxpbnRwdHJfdD4oKmNv
ZGUsIDQyLCAxLCAyKSA9PSAxKTsKKyAgICBDSEVDSyhpbnZva2U8aW50cHRyX3Q+KCpjb2RlLCA0
MiwgNjQyNDYyLCAzMjUzMykgPT0gNjQyNDYyKTsKKyAgICBDSEVDSyhpbnZva2U8aW50cHRyX3Q+
KCpjb2RlLCA0MywgMSwgMikgPT0gMik7CisgICAgQ0hFQ0soaW52b2tlPGludHB0cl90PigqY29k
ZSwgNDMsIDY0MjQ2MiwgMzI1MzMpID09IDMyNTMzKTsKK30KKwordm9pZCB0ZXN0Q2hlY2tTZWxl
Y3QoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAx
KQorICAgICAgICByZXR1cm47CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKworICAgIENoZWNrVmFsdWUqIGNoZWNrID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+
KAorICAgICAgICBwcm9jLCBDaGVjaywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBTZWxlY3QsIE9y
aWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
ICAgICAgICAgICAgIHByb2MsIEJpdEFuZCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9jLCBU
cnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICAgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMHhmZikpLAorICAgICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
LTQyKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIDM1KSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKSkpOworICAgIHVuc2lnbmVkIGdlbmVyYXRpb25Db3Vu
dCA9IDA7CisgICAgY2hlY2stPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICAgICAg
QWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworCisgICAg
ICAgICAgICBnZW5lcmF0aW9uQ291bnQrKzsKKyAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKDY2NiksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAg
ICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAgICAgICAgaml0LnJldCgp
OworICAgICAgICB9KTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0
MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQ
cm9jKHByb2MpOworICAgIENIRUNLKGdlbmVyYXRpb25Db3VudCA9PSAxKTsKKyAgICBDSEVDSyhp
bnZva2U8aW50PigqY29kZSwgdHJ1ZSkgPT0gMCk7CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNv
ZGUsIGZhbHNlKSA9PSA2NjYpOworfQorCit2b2lkIHRlc3RDaGVja1NlbGVjdENoZWNrU2VsZWN0
KCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBpZiAocHJvYy5vcHRMZXZlbCgpIDwgMSkK
KyAgICAgICAgcmV0dXJuOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisKKyAgICBDaGVja1ZhbHVlKiBjaGVjayA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPigK
KyAgICAgICAgcHJvYywgQ2hlY2ssIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgU2VsZWN0LCBPcmln
aW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICAgICAgcHJvYywgVHJ1
bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDB4ZmYpKSwKKyAgICAgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC00
MiksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAzNSkpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCA0MikpKTsKKworICAgIHVuc2lnbmVkIGdlbmVyYXRpb25Db3Vu
dCA9IDA7CisgICAgY2hlY2stPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICAgICAg
QWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworCisgICAg
ICAgICAgICBnZW5lcmF0aW9uQ291bnQrKzsKKyAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKDY2NiksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAg
ICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAgICAgICAgaml0LnJldCgp
OworICAgICAgICB9KTsKKworICAgIENoZWNrVmFsdWUqIGNoZWNrMiA9IHJvb3QtPmFwcGVuZE5l
dzxDaGVja1ZhbHVlPigKKyAgICAgICAgcHJvYywgQ2hlY2ssIE9yaWdpbigpLAorICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJv
YywgU2VsZWN0LCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAgICAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgICAg
ICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSwKKyAgICAgICAgICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDB4
ZmYpKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIC00MyksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0
UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAzNikpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0MykpKTsKKworICAgIHVuc2lnbmVk
IGdlbmVyYXRpb25Db3VudDIgPSAwOworICAgIGNoZWNrMi0+c2V0R2VuZXJhdG9yKAorICAgICAg
ICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMm
KSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3Jh
dGNoKGppdCk7CisKKyAgICAgICAgICAgIGdlbmVyYXRpb25Db3VudDIrKzsKKyAgICAgICAgICAg
IGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDY2NyksIEdQUkluZm86OnJldHVy
blZhbHVlR1BSKTsKKyAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAg
ICAgICAgICAgaml0LnJldCgpOworICAgICAgICB9KTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIGF1
dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIENIRUNLKGdlbmVyYXRpb25Db3VudCA9
PSAxKTsKKyAgICBDSEVDSyhnZW5lcmF0aW9uQ291bnQyID09IDEpOworICAgIENIRUNLKGludm9r
ZTxpbnQ+KCpjb2RlLCB0cnVlLCB0cnVlKSA9PSAwKTsKKyAgICBDSEVDSyhpbnZva2U8aW50Pigq
Y29kZSwgZmFsc2UsIHRydWUpID09IDY2Nik7CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUs
IHRydWUsIGZhbHNlKSA9PSA2NjcpOworfQorCit2b2lkIHRlc3RDaGVja1NlbGVjdEFuZENTRSgp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEpCisg
ICAgICAgIHJldHVybjsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
CisgICAgYXV0byogc2VsZWN0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAg
ICBwcm9jLCBTZWxlY3QsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigp
LAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPigKKyAg
ICAgICAgICAgICAgICAgICAgcHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkp
LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIDB4ZmYpKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAtNDIpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIDM1KSk7CisKKyAgICBhdXRvKiBjb25zdGFudCA9IHJvb3QtPmFwcGVu
ZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDIpOworICAgIGF1dG8qIGFkZFZh
bHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBzZWxlY3RW
YWx1ZSwgY29uc3RhbnQpOworCisgICAgQ2hlY2tWYWx1ZSogY2hlY2sgPSByb290LT5hcHBlbmRO
ZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2ssIE9yaWdpbigpLCBhZGRWYWx1ZSk7CisgICAgdW5z
aWduZWQgZ2VuZXJhdGlvbkNvdW50ID0gMDsKKyAgICBjaGVjay0+c2V0R2VuZXJhdG9yKAorICAg
ICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJh
bXMmKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dT
Y3JhdGNoKGppdCk7CisKKyAgICAgICAgICAgIGdlbmVyYXRpb25Db3VudCsrOworICAgICAgICAg
ICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoNjY2KSwgR1BSSW5mbzo6cmV0
dXJuVmFsdWVHUFIpOworICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7Cisg
ICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgIH0pOworCisgICAgYXV0byogYWRkVmFsdWUy
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBzZWxlY3RWYWx1
ZSwgY29uc3RhbnQpOworCisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEFkZCwgT3JpZ2luKCksIGFkZFZhbHVlLCBhZGRWYWx1ZTIpKTsKKworICAgIGF1dG8g
Y29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIENIRUNLKGdlbmVyYXRpb25Db3VudCA9PSAx
KTsKKyAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgdHJ1ZSkgPT0gMCk7CisgICAgQ0hFQ0so
aW52b2tlPGludD4oKmNvZGUsIGZhbHNlKSA9PSA2NjYpOworfQorCitkb3VibGUgYjNQb3coZG91
YmxlIHgsIGludCB5KQoreworICAgIGlmICh5IDwgMCB8fCB5ID4gMTAwMCkKKyAgICAgICAgcmV0
dXJuIHBvdyh4LCB5KTsKKyAgICBkb3VibGUgcmVzdWx0ID0gMTsKKyAgICB3aGlsZSAoeSkgewor
ICAgICAgICBpZiAoeSAmIDEpCisgICAgICAgICAgICByZXN1bHQgKj0geDsKKyAgICAgICAgeCAq
PSB4OworICAgICAgICB5ID4+PSAxOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2
b2lkIHRlc3RQb3dEb3VibGVCeUludGVnZXJMb29wKGRvdWJsZSB4T3BlcmFuZCwgaW50MzJfdCB5
T3BlcmFuZCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworCisgICAgVmFsdWUqIHggPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAg
VmFsdWUqIHkgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBhdXRvIHJlc3VsdCA9IHBvd0RvdWJsZUlu
dDMyKHByb2MsIHJvb3QsIE9yaWdpbigpLCB4LCB5KTsKKyAgICBCYXNpY0Jsb2NrKiBjb250aW51
YXRpb24gPSByZXN1bHQuZmlyc3Q7CisgICAgY29udGludWF0aW9uLT5hcHBlbmROZXdDb250cm9s
VmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0LnNlY29uZCk7CisKKyAgICBDSEVD
Syhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgeE9wZXJhbmQsIHlPcGVy
YW5kKSwgYjNQb3coeE9wZXJhbmQsIHlPcGVyYW5kKSkpOworfQorCit2b2lkIHRlc3RUcnVuY09y
SGlnaCgpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgQml0T3IsIE9yaWdpbigp
LAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMHgxMDAwMDAwMDApKSkp
OworCisgICAgaW50NjRfdCB2YWx1ZSA9IDB4MTIzNDU2NzgxMjM0OworICAgIENIRUNLKGNvbXBp
bGVBbmRSdW48aW50Pihwcm9jLCB2YWx1ZSkgPT0gMHg1Njc4MTIzNCk7Cit9CisKK3ZvaWQgdGVz
dFRydW5jT3JMb3coKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
CisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEJpdE9yLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCisgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDB4MTAwMDAw
MCkpKSk7CisKKyAgICBpbnQ2NF90IHZhbHVlID0gMHgxMjM0NTY3ODEyMzQ7CisgICAgQ0hFQ0so
Y29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIHZhbHVlKSA9PSAweDU3NzgxMjM0KTsKK30KKwordm9p
ZCB0ZXN0Qml0QW5kT3JIaWdoKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywg
Qml0T3IsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
MHg4KSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgMHg3Nzc3Nzc3Nzc3NzcpKSk7CisKKyAgICBpbnQ2NF90IHZhbHVlID0gMHgxMjM0
NTY3ODEyMzQ7CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCB2YWx1ZSkg
PT0gMHgxMjM0NTY3MDEyMzRsbCk7Cit9CisKK3ZvaWQgdGVzdEJpdEFuZE9yTG93KCkKK3sKKyAg
ICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworCisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgQml0T3IsIE9yaWdpbigpLAorICAgICAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMHgxKSksCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMHg3Nzc3Nzc3Nzc3NzcpKSk7
CisKKyAgICBpbnQ2NF90IHZhbHVlID0gMHgxMjM0NTY3ODEyMzQ7CisgICAgQ0hFQ0soY29tcGls
ZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCB2YWx1ZSkgPT0gMHgxMjM0NTY3MDEyMzVsbCk7Cit9CisK
K3ZvaWQgdGVzdEJyYW5jaDY0RXF1YWwoaW50NjRfdCBsZWZ0LCBpbnQ2NF90IHJpZ2h0KQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgQmFzaWNCbG9jayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFz
aWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBWYWx1ZSogYXJnMSA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIEJyYW5jaCwgT3Jp
Z2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRXF1YWwsIE9yaWdp
bigpLCBhcmcxLCBhcmcyKSwKKyAgICAgICAgRnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJl
cXVlbnRlZEJsb2NrKGVsc2VDYXNlKSk7CisKKyAgICBib29sIHRydWVSZXN1bHQgPSB0cnVlOwor
ICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCisgICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAor
ICAgICAgICAgICAgcHJvYywgTG9hZDhaLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHRoZW5DYXNl
LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZ0cnVlUmVzdWx0KSkp
OworCisgICAgYm9vbCBlbHNlUmVzdWx0ID0gZmFsc2U7CisgICAgZWxzZUNhc2UtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAg
ZWxzZUNhc2UtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBMb2Fk
OFosIE9yaWdpbigpLAorICAgICAgICAgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxDb25zdFB0clZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgJmVsc2VSZXN1bHQpKSk7CisKKyAgICBDSEVDSyhjb21waWxl
QW5kUnVuPGJvb2w+KHByb2MsIGxlZnQsIHJpZ2h0KSA9PSAobGVmdCA9PSByaWdodCkpOworfQor
Cit2b2lkIHRlc3RCcmFuY2g2NEVxdWFsSW1tKGludDY0X3QgbGVmdCwgaW50NjRfdCByaWdodCkK
K3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOworICAg
IEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgVmFsdWUqIGFy
ZzEgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHJpZ2h0KTsKKyAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRXF1YWwsIE9yaWdpbigpLCBhcmcxLCBhcmcy
KSwKKyAgICAgICAgRnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVs
c2VDYXNlKSk7CisKKyAgICBib29sIHRydWVSZXN1bHQgPSB0cnVlOworICAgIHRoZW5DYXNlLT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisg
ICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJv
YywgTG9hZDhaLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29u
c3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZ0cnVlUmVzdWx0KSkpOworCisgICAgYm9vbCBl
bHNlUmVzdWx0ID0gZmFsc2U7CisgICAgZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
KyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgZWxzZUNhc2UtPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBMb2FkOFosIE9yaWdpbigpLAor
ICAgICAgICAgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmln
aW4oKSwgJmVsc2VSZXN1bHQpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGJvb2w+KHBy
b2MsIGxlZnQpID09IChsZWZ0ID09IHJpZ2h0KSk7Cit9CisKK3ZvaWQgdGVzdEJyYW5jaDY0RXF1
YWxNZW0oaW50NjRfdCBsZWZ0LCBpbnQ2NF90IHJpZ2h0KQoreworICAgIFByb2NlZHVyZSBwcm9j
OworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9j
ayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogZWxzZUNhc2Ug
PSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxN
ZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigp
LAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjEpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywg
QnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBF
cXVhbCwgT3JpZ2luKCksIGFyZzEsIGFyZzIpLAorICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhl
bkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKKworICAgIGJvb2wgdHJ1ZVJlc3Vs
dCA9IHRydWU7CisgICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxNZW1v
cnlWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBMb2FkOFosIE9yaWdpbigpLAorICAgICAgICAg
ICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnRy
dWVSZXN1bHQpKSk7CisKKyAgICBib29sIGVsc2VSZXN1bHQgPSBmYWxzZTsKKyAgICBlbHNlQ2Fz
ZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LAorICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAg
IHByb2MsIExvYWQ4WiwgT3JpZ2luKCksCisgICAgICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3
PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmZWxzZVJlc3VsdCkpKTsKKworICAgIENI
RUNLKGNvbXBpbGVBbmRSdW48Ym9vbD4ocHJvYywgJmxlZnQsIHJpZ2h0KSA9PSAobGVmdCA9PSBy
aWdodCkpOworfQorCit2b2lkIHRlc3RCcmFuY2g2NEVxdWFsTWVtSW1tKGludDY0X3QgbGVmdCwg
aW50NjRfdCByaWdodCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5h
ZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOwor
CisgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAg
ICBwcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApKTsKKyAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgcmlnaHQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZSgKKyAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBFcXVhbCwgT3JpZ2luKCksIGFyZzEsIGFyZzIpLAorICAgICAgICBG
cmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKKwor
ICAgIGJvb2wgdHJ1ZVJlc3VsdCA9IHRydWU7CisgICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgdGhlbkNh
c2UtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBMb2FkOFosIE9y
aWdpbigpLAorICAgICAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgJnRydWVSZXN1bHQpKSk7CisKKyAgICBib29sIGVsc2VSZXN1bHQgPSBm
YWxzZTsKKyAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PE1lbW9yeVZh
bHVlPigKKyAgICAgICAgICAgIHByb2MsIExvYWQ4WiwgT3JpZ2luKCksCisgICAgICAgICAgICBl
bHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmZWxzZVJl
c3VsdCkpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48Ym9vbD4ocHJvYywgJmxlZnQpID09
IChsZWZ0ID09IHJpZ2h0KSk7Cit9CisKK3ZvaWQgdGVzdFN0b3JlOExvYWQ4WihpbnQzMl90IHZh
bHVlKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisKKyAgICBpbnQ4X3QgYnl0ZTsKKyAgICBWYWx1ZSogcHRyID0gcm9vdC0+
YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmYnl0ZSk7CisKKyAgICBy
b290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICBwcm9jLCBTdG9yZTgsIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywg
VHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAgICAg
cHRyKTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihw
cm9jLCBMb2FkOFosIE9yaWdpbigpLCBwdHIpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48
aW50MzJfdD4ocHJvYywgdmFsdWUpID09IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHZhbHVlKSk7Cit9
CisKK3ZvaWQgdGVzdFN0b3JlMTZMb2FkMTZaKGludDMyX3QgdmFsdWUpCit7CisgICAgUHJvY2Vk
dXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAg
IGludDE2X3QgYnl0ZTsKKyAgICBWYWx1ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCAmYnl0ZSk7CisKKyAgICByb290LT5hcHBlbmROZXc8TWVt
b3J5VmFsdWU+KAorICAgICAgICBwcm9jLCBTdG9yZTE2LCBPcmlnaW4oKSwKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisgICAgICAgIHB0cik7CisKKyAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZDE2WiwgT3Jp
Z2luKCksIHB0cikpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCB2
YWx1ZSkgPT0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHZhbHVlKSk7Cit9CisKK3ZvaWQgdGVzdFNT
aHJTaGwzMihpbnQzMl90IHZhbHVlLCBpbnQzMl90IHNzaHJBbW91bnQsIGludDMyX3Qgc2hsQW1v
dW50KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAg
IHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgICAgICBwcm9jLCBTU2hyLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgU2hsLCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgICAg
ICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIHNobEFtb3VudCkpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENv
bnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHNzaHJBbW91bnQpKSk7CisKKyAgICBDSEVDSygK
KyAgICAgICAgY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCB2YWx1ZSkKKyAgICAgICAgPT0g
KCh2YWx1ZSA8PCAoc2hsQW1vdW50ICYgMzEpKSA+PiAoc3NockFtb3VudCAmIDMxKSkpOworfQor
Cit2b2lkIHRlc3RTU2hyU2hsNjQoaW50NjRfdCB2YWx1ZSwgaW50MzJfdCBzc2hyQW1vdW50LCBp
bnQzMl90IHNobEFtb3VudCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgU1NociwgT3JpZ2luKCksCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFNobCwg
T3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAorICAgICAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBzaGxBbW91
bnQpKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBzc2hyQW1vdW50KSkpOworCisgICAgQ0hFQ0soCisgICAgICAgIGNvbXBpbGVBbmRS
dW48aW50NjRfdD4ocHJvYywgdmFsdWUpCisgICAgICAgID09ICgodmFsdWUgPDwgKHNobEFtb3Vu
dCAmIDYzKSkgPj4gKHNzaHJBbW91bnQgJiA2MykpKTsKK30KKwordm9pZCB0ZXN0VHJpdmlhbElu
ZmluaXRlTG9vcCgpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBsb29wID0gcHJvYy5hZGRCbG9j
aygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4o
KSwgRnJlcXVlbnRlZEJsb2NrKGxvb3ApKTsKKyAgICBsb29wLT5hcHBlbmROZXdDb250cm9sVmFs
dWUocHJvYywgSnVtcCwgT3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayhsb29wKSk7CisKKyAgICBj
b21waWxlUHJvYyhwcm9jKTsKK30KKwordm9pZCB0ZXN0Rm9sZFBhdGhFcXVhbCgpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBCYXNpY0Jsb2NrKiB0aGVuQmxvY2sgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNC
bG9jayogZWxzZUJsb2NrID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgVmFsdWUqIGFyZyA9IHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwgYXJnLCBGcmVxdWVudGVkQmxvY2sodGhlbkJsb2Nr
KSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VCbG9jaykpOworCisgICAgdGhlbkJsb2NrLT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAg
IHRoZW5CbG9jay0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEVxdWFsLCBP
cmlnaW4oKSwgYXJnLCB0aGVuQmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgMCkpKTsKKworICAgIGVsc2VCbG9jay0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAor
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICBlbHNlQmxvY2stPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBFcXVhbCwgT3JpZ2luKCksIGFyZywgZWxz
ZUJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKSk7CisK
KyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICBDSEVDSyhpbnZva2U8aW50
cHRyX3Q+KCpjb2RlLCAwKSA9PSAxKTsKKyAgICBDSEVDSyhpbnZva2U8aW50cHRyX3Q+KCpjb2Rl
LCAxKSA9PSAwKTsKKyAgICBDSEVDSyhpbnZva2U8aW50cHRyX3Q+KCpjb2RlLCA0MikgPT0gMCk7
Cit9CisKK3ZvaWQgdGVzdExTaGlmdFNlbGYzMigpCit7CisgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJnID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBTaGwsIE9yaWdpbigpLCBhcmcsIGFyZykpOworCisgICAgYXV0byBj
b2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICBhdXRvIGNoZWNrID0gWyZdIChpbnQzMl90
IHZhbHVlKSB7CisgICAgICAgIENIRUNLKGludm9rZTxpbnQzMl90PigqY29kZSwgdmFsdWUpID09
IHZhbHVlIDw8ICh2YWx1ZSAmIDMxKSk7CisgICAgfTsKKworICAgIGNoZWNrKDApOworICAgIGNo
ZWNrKDEpOworICAgIGNoZWNrKDMxKTsKKyAgICBjaGVjaygzMik7Cit9CisKK3ZvaWQgdGVzdFJT
aGlmdFNlbGYzMigpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJnID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKKyAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCkpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBT
U2hyLCBPcmlnaW4oKSwgYXJnLCBhcmcpKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9j
KHByb2MpOworCisgICAgYXV0byBjaGVjayA9IFsmXSAoaW50MzJfdCB2YWx1ZSkgeworICAgICAg
ICBDSEVDSyhpbnZva2U8aW50MzJfdD4oKmNvZGUsIHZhbHVlKSA9PSB2YWx1ZSA+PiAodmFsdWUg
JiAzMSkpOworICAgIH07CisKKyAgICBjaGVjaygwKTsKKyAgICBjaGVjaygxKTsKKyAgICBjaGVj
aygzMSk7CisgICAgY2hlY2soMzIpOworfQorCit2b2lkIHRlc3RVUlNoaWZ0U2VsZjMyKCkKK3sK
KyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworICAgIFZhbHVlKiBhcmcgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBw
cm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFpTaHIsIE9yaWdpbigpLCBh
cmcsIGFyZykpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICBh
dXRvIGNoZWNrID0gWyZdICh1aW50MzJfdCB2YWx1ZSkgeworICAgICAgICBDSEVDSyhpbnZva2U8
dWludDMyX3Q+KCpjb2RlLCB2YWx1ZSkgPT0gdmFsdWUgPj4gKHZhbHVlICYgMzEpKTsKKyAgICB9
OworCisgICAgY2hlY2soMCk7CisgICAgY2hlY2soMSk7CisgICAgY2hlY2soMzEpOworICAgIGNo
ZWNrKDMyKTsKK30KKwordm9pZCB0ZXN0TFNoaWZ0U2VsZjY0KCkKK3sKKyAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVl
KiBhcmcgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgU2hsLCBPcmlnaW4oKSwgYXJnLCByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwgYXJnKSkpOworCisgICAgYXV0
byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICBhdXRvIGNoZWNrID0gWyZdIChpbnQ2
NF90IHZhbHVlKSB7CisgICAgICAgIENIRUNLKGludm9rZTxpbnQ2NF90PigqY29kZSwgdmFsdWUp
ID09IHZhbHVlIDw8ICh2YWx1ZSAmIDYzKSk7CisgICAgfTsKKworICAgIGNoZWNrKDApOworICAg
IGNoZWNrKDEpOworICAgIGNoZWNrKDMxKTsKKyAgICBjaGVjaygzMik7CisgICAgY2hlY2soNjMp
OworICAgIGNoZWNrKDY0KTsKK30KKwordm9pZCB0ZXN0UlNoaWZ0U2VsZjY0KCkKK3sKKyAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIFZhbHVlKiBhcmcgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgU1NociwgT3JpZ2luKCksIGFy
Zywgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksIGFyZykpKTsK
KworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworCisgICAgYXV0byBjaGVjayA9
IFsmXSAoaW50NjRfdCB2YWx1ZSkgeworICAgICAgICBDSEVDSyhpbnZva2U8aW50NjRfdD4oKmNv
ZGUsIHZhbHVlKSA9PSB2YWx1ZSA+PiAodmFsdWUgJiA2MykpOworICAgIH07CisKKyAgICBjaGVj
aygwKTsKKyAgICBjaGVjaygxKTsKKyAgICBjaGVjaygzMSk7CisgICAgY2hlY2soMzIpOworICAg
IGNoZWNrKDYzKTsKKyAgICBjaGVjayg2NCk7Cit9CisKK3ZvaWQgdGVzdFVSU2hpZnRTZWxmNjQo
KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBaU2hyLCBP
cmlnaW4oKSwgYXJnLCByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4o
KSwgYXJnKSkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICBh
dXRvIGNoZWNrID0gWyZdICh1aW50NjRfdCB2YWx1ZSkgeworICAgICAgICBDSEVDSyhpbnZva2U8
dWludDY0X3Q+KCpjb2RlLCB2YWx1ZSkgPT0gdmFsdWUgPj4gKHZhbHVlICYgNjMpKTsKKyAgICB9
OworCisgICAgY2hlY2soMCk7CisgICAgY2hlY2soMSk7CisgICAgY2hlY2soMzEpOworICAgIGNo
ZWNrKDMyKTsKKyAgICBjaGVjayg2Myk7CisgICAgY2hlY2soNjQpOworfQorCit2b2lkIHRlc3RQ
YXRjaHBvaW50RG91YmxlUmVncygpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBhcmcgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3Vt
ZW50RlBSMCk7CisKKyAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBl
bmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBEb3VibGUsIE9yaWdpbigpKTsKKyAgICBwYXRj
aHBvaW50LT5hcHBlbmQoYXJnLCBWYWx1ZVJlcChGUFJJbmZvOjpmcFJlZ1QwKSk7CisgICAgcGF0
Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWludCA9IFZhbHVlUmVwKEZQUkluZm86OmZwUmVnVDApOwor
CisgICAgdW5zaWduZWQgbnVtQ2FsbHMgPSAwOworICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRv
cigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmLCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25Q
YXJhbXMmKSB7CisgICAgICAgICAgICBudW1DYWxscysrOworICAgICAgICB9KTsKKworICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBwYXRjaHBv
aW50KTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIENIRUNLKG51
bUNhbGxzID09IDEpOworICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCA0Mi41KSA9PSA0
Mi41KTsKK30KKwordm9pZCB0ZXN0U3BpbGxEZWZTbWFsbGVyVGhhblVzZSgpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKwor
ICAgIC8vIE1vdmUzMi4KKyAgICBWYWx1ZSogYXJnMzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSk7CisgICAgVmFsdWUqIGFyZzY0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBaRXh0
MzIsIE9yaWdpbigpLCBhcmczMik7CisKKyAgICAvLyBNYWtlIHN1cmUgYXJnNjQgaXMgb24gdGhl
IHN0YWNrLgorICAgIFBhdGNocG9pbnRWYWx1ZSogZm9yY2VTcGlsbCA9IHJvb3QtPmFwcGVuZE5l
dzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIEludDY0LCBPcmlnaW4oKSk7CisgICAgUmVnaXN0ZXJT
ZXQgY2xvYmJlclNldCA9IFJlZ2lzdGVyU2V0OjphbGxHUFJzKCk7CisgICAgY2xvYmJlclNldC5l
eGNsdWRlKFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKTsKKyAgICBjbG9iYmVyU2V0LmV4
Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSk7CisgICAgY2xv
YmJlclNldC5jbGVhcihHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7IC8vIEZvcmNlIHRoZSByZXR1
cm4gdmFsdWUgZm9yIGFsaWFzaW5nIGJlbG93LgorICAgIGZvcmNlU3BpbGwtPmNsb2JiZXJMYXRl
KGNsb2JiZXJTZXQpOworICAgIGZvcmNlU3BpbGwtPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZd
IChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJh
bXMpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1Nj
cmF0Y2goaml0KTsKKyAgICAgICAgICAgIGppdC54b3I2NChwYXJhbXNbMF0uZ3ByKCksIHBhcmFt
c1swXS5ncHIoKSk7CisgICAgICAgIH0pOworCisgICAgLy8gT24geDg2LCBTdWIgYWRtaXQgYW4g
YWRkcmVzcyBmb3IgYW55IG9wZXJhbmQuIElmIGl0IHVzZXMgdGhlIHN0YWNrLCB0aGUgdG9wIGJp
dHMgbXVzdCBiZSB6ZXJvLgorICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIGZvcmNlU3BpbGwsIGFyZzY0KTsKKyAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKwor
ICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIENIRUNLKGludm9rZTxpbnQ2
NF90PigqY29kZSwgMHhmZmZmZmZmZjAwMDAwMDAwKSA9PSAwKTsKK30KKwordm9pZCB0ZXN0U3Bp
bGxVc2VMYXJnZXJUaGFuRGVmKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0g
cHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9j
aygpOworICAgIEJhc2ljQmxvY2sqIHRhaWwgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBSZWdp
c3RlclNldCBjbG9iYmVyU2V0ID0gUmVnaXN0ZXJTZXQ6OmFsbEdQUnMoKTsKKyAgICBjbG9iYmVy
U2V0LmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkpOworICAgIGNsb2JiZXJT
ZXQuZXhjbHVkZShSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycygpKTsKKwor
ICAgIFZhbHVlKiBjb25kaXRpb24gPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgVmFsdWUqIGFyZ3Vt
ZW50ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
KyAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
IGNvbmRpdGlvbiksCisgICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50
ZWRCbG9jayhlbHNlQ2FzZSkpOworCisgICAgVmFsdWUqIHRydW5jYXRlZCA9IHRoZW5DYXNlLT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIFpFeHQzMiwgT3JpZ2luKCksCisgICAgICAgIHRoZW5DYXNl
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwgYXJndW1lbnQpKTsKKyAg
ICBVcHNpbG9uVmFsdWUqIHRoZW5SZXN1bHQgPSB0aGVuQ2FzZS0+YXBwZW5kTmV3PFVwc2lsb25W
YWx1ZT4ocHJvYywgT3JpZ2luKCksIHRydW5jYXRlZCk7CisgICAgdGhlbkNhc2UtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4oKSwgRnJlcXVlbnRlZEJsb2NrKHRhaWwp
KTsKKworICAgIFVwc2lsb25WYWx1ZSogZWxzZVJlc3VsdCA9IGVsc2VDYXNlLT5hcHBlbmROZXc8
VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYXJndW1lbnQpOworICAgIGVsc2VDYXNlLT5h
cHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgSnVtcCwgT3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9j
ayh0YWlsKSk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAg
ICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwcmV2ZW50VGFpbER1cGxpY2F0aW9uID0gdGFpbC0+YXBw
ZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgVm9pZCwgT3JpZ2luKCkpOworICAgICAgICBw
cmV2ZW50VGFpbER1cGxpY2F0aW9uLT5jbG9iYmVyTGF0ZShjbG9iYmVyU2V0KTsKKyAgICAgICAg
cHJldmVudFRhaWxEdXBsaWNhdGlvbi0+c2V0R2VuZXJhdG9yKFtdIChDQ2FsbEhlbHBlcnMmLCBj
b25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7IH0pOworICAgIH0KKworICAgIFBhdGNo
cG9pbnRWYWx1ZSogZm9yY2VTcGlsbCA9IHRhaWwtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+
KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKKyAgICBmb3JjZVNwaWxsLT5jbG9iYmVyTGF0ZShjbG9i
YmVyU2V0KTsKKyAgICBmb3JjZVNwaWxsLT5zZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAg
ICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsK
KyAgICAgICAgICAgIGNsb2JiZXJTZXQuZm9yRWFjaChbJl0gKFJlZyByZWcpIHsKKyAgICAgICAg
ICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NCgweGZmZmZmZmZmZmZm
ZmZmZmYpLCByZWcuZ3ByKCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAg
VmFsdWUqIHBoaSA9IHRhaWwtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUGhpLCBJbnQ2NCwgT3Jp
Z2luKCkpOworICAgIHRoZW5SZXN1bHQtPnNldFBoaShwaGkpOworICAgIGVsc2VSZXN1bHQtPnNl
dFBoaShwaGkpOworICAgIHRhaWwtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCBwaGkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Cisg
ICAgQ0hFQ0soaW52b2tlPHVpbnQ2NF90PigqY29kZSwgMSwgMHhmZmZmZmZmZjAwMDAwMDAwKSA9
PSAwKTsKKyAgICBDSEVDSyhpbnZva2U8dWludDY0X3Q+KCpjb2RlLCAwLCAweGZmZmZmZmZmMDAw
MDAwMDApID09IDB4ZmZmZmZmZmYwMDAwMDAwMCk7CisKKyAgICAvLyBBIHNlY29uZCB0aW1lIHNp
bmNlIHRoZSBwcmV2aW91cyBydW4gaXMgc3RpbGwgb24gdGhlIHN0YWNrLgorICAgIENIRUNLKGlu
dm9rZTx1aW50NjRfdD4oKmNvZGUsIDEsIDB4ZmZmZmZmZmYwMDAwMDAwMCkgPT0gMCk7CisKK30K
Kwordm9pZCB0ZXN0TGF0ZVJlZ2lzdGVyKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKworICAg
IGlmICghcHJvYy5vcHRMZXZlbCgpKSB7CisgICAgICAgIC8vIEZJWE1FOiBNYWtlIE8wIGhhbmRs
ZSBzdWNoIHNpdHVhdGlvbnM6CisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTQ2MzMKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAvLyBUaGlzIHdvcmtzIGJ5IG1h
a2luZyBhbGwgYnV0IDEgcmVnaXN0ZXIgYmUgaW5wdXQgdG8gdGhlIGZpcnN0IHBhdGNocG9pbnQg
YXMgTGF0ZVJlZ2lzdGVyLgorICAgIC8vIFRoZSBvdGhlciAxIHJlZ2lzdGVyIGlzIGp1c3QgYSBy
ZWd1bGFyIFJlZ2lzdGVyIGlucHV0LiBXZSBhc3NlcnQgb3VyIHJlc3VsdCBpcyB0aGUgcmVndWxh
cgorICAgIC8vIHJlZ2lzdGVyIGlucHV0LiBUaGVyZSB3b3VsZCBiZSBubyBvdGhlciB3YXkgZm9y
IHRoZSByZWdpc3RlciBhbGxvY2F0b3IgdG8gYXJyYW5nZSB0aGluZ3MKKyAgICAvLyBiZWNhdXNl
IExhdGVSZWdpc3RlciBpbnRlcmZlcmVzIHdpdGggdGhlIHJlc3VsdC4KKyAgICAvLyBUaGVuLCB0
aGUgc2Vjb25kIHBhdGNocG9pbnQgdGFrZXMgdGhlIHJlc3VsdCBvZiB0aGUgZmlyc3QgYXMgYW4g
YXJndW1lbnQgYW5kIGFza3MgZm9yCisgICAgLy8gaXQgaW4gYSByZWdpc3RlciB0aGF0IHdhcyBh
IExhdGVSZWdpc3Rlci4gVGhpcyBpcyB0byBpbmNlbnRpdml6ZSB0aGUgcmVnaXN0ZXIgYWxsb2Nh
dG9yCisgICAgLy8gdG8gdXNlIHRoYXQgTGF0ZVJlZ2lzdGVyIGFzIHRoZSByZXN1bHQgZm9yIHRo
ZSBmaXJzdCBwYXRjaHBvaW50LiBCdXQgb2YgY291cnNlIGl0IGNhbiBub3QgZG8gdGhhdC4KKyAg
ICAvLyBTbyBpdCBtdXN0IGlzc3VlIGEgbW92IGFmdGVyIHRoZSBmaXJzdCBwYXRjaHBvaW50IGZy
b20gdGhlIGZpcnN0J3MgcmVzdWx0IGludG8gdGhlIHNlY29uZCdzIGlucHV0LgorCisgICAgUmVn
aXN0ZXJTZXQgcmVncyA9IFJlZ2lzdGVyU2V0OjphbGxHUFJzKCk7CisgICAgcmVncy5leGNsdWRl
KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKTsKKyAgICByZWdzLmV4Y2x1ZGUoUmVnaXN0
ZXJTZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSk7CisgICAgVmVjdG9yPFZhbHVlKj4g
bGF0ZVVzZUFyZ3M7CisgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKKyAgICBmb3IgKEdQUlJlZyBy
ZWcgPSBDQ2FsbEhlbHBlcnM6OmZpcnN0UmVnaXN0ZXIoKTsgcmVnIDw9IENDYWxsSGVscGVyczo6
bGFzdFJlZ2lzdGVyKCk7IHJlZyA9IENDYWxsSGVscGVyczo6bmV4dFJlZ2lzdGVyKHJlZykpIHsK
KyAgICAgICAgaWYgKCFyZWdzLmdldChyZWcpKQorICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIHJlc3VsdCsrOworICAgICAgICBpZiAocmVnID09IEdQUkluZm86OnJlZ1QwKQorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIFZhbHVlKiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxD
b25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKTsKKyAgICAgICAgbGF0ZVVzZUFyZ3MuYXBw
ZW5kKHZhbHVlKTsKKyAgICB9CisgICAgVmFsdWUqIHJlZ3VsYXJVc2UgPSByb290LT5hcHBlbmRO
ZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSk7CisgICAgUGF0Y2hwb2ludFZhbHVl
KiBmaXJzdFBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9j
LCBJbnQ2NCwgT3JpZ2luKCkpOworICAgIHsKKyAgICAgICAgdW5zaWduZWQgaSA9IDA7CisgICAg
ICAgIGZvciAoR1BSUmVnIHJlZyA9IENDYWxsSGVscGVyczo6Zmlyc3RSZWdpc3RlcigpOyByZWcg
PD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIoKTsgcmVnID0gQ0NhbGxIZWxwZXJzOjpuZXh0
UmVnaXN0ZXIocmVnKSkgeworICAgICAgICAgICAgaWYgKCFyZWdzLmdldChyZWcpKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKHJlZyA9PSBHUFJJbmZvOjpyZWdU
MCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIFZhbHVlKiB2YWx1ZSA9
IGxhdGVVc2VBcmdzW2krK107CisgICAgICAgICAgICBmaXJzdFBhdGNocG9pbnQtPmFwcGVuZCh2
YWx1ZSwgVmFsdWVSZXA6OmxhdGVSZWcocmVnKSk7CisgICAgICAgIH0KKyAgICAgICAgZmlyc3RQ
YXRjaHBvaW50LT5hcHBlbmQocmVndWxhclVzZSwgVmFsdWVSZXA6OnJlZyhHUFJJbmZvOjpyZWdU
MCkpOworICAgIH0KKworICAgIGZpcnN0UGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAorICAgICAg
ICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMm
IHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFs
bG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzBdLmdwcigpID09IEdQ
UkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIC8vIE5vdGUgdGhhdCByZWdUMCBzaG91bGQgYWxz
byBzdGFydCBvZmYgYXMgMSwgc28gd2UncmUgaW1wbGljaXRseSBzdGFydGluZyBvdXIgYWRkIHdp
dGggMSwgd2hpY2ggaXMgYWxzbyBhbiBhcmd1bWVudC4KKyAgICAgICAgICAgIHVuc2lnbmVkIHNr
aXBwZWQgPSAwOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IHBhcmFtcy5z
aXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgIGlmIChwYXJhbXNbaV0uZ3ByKCkgPT0gcGFy
YW1zWzBdLmdwcigpKSB7CisgICAgICAgICAgICAgICAgICAgIHNraXBwZWQgPSBpOworICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgaml0LmFkZDY0KHBhcmFtc1tpXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIENIRUNLKCEhc2tpcHBlZCk7CisgICAgICAgIH0pOworCisgICAg
UGF0Y2hwb2ludFZhbHVlKiBzZWNvbmRQYXRjaHBvaW50ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNo
cG9pbnRWYWx1ZT4ocHJvYywgSW50NjQsIE9yaWdpbigpKTsKKyAgICBzZWNvbmRQYXRjaHBvaW50
LT5hcHBlbmQoZmlyc3RQYXRjaHBvaW50LCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86OnJlZ1QxKSk7
CisgICAgc2Vjb25kUGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAorICAgICAgICBbJl0gKENDYWxs
SGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewor
ICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChq
aXQpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzFdLmdwcigpID09IEdQUkluZm86OnJlZ1Qx
KTsKKyAgICAgICAgICAgIGppdC5ub3AoKTsKKyAgICAgICAgICAgIGppdC5ub3AoKTsKKyAgICAg
ICAgICAgIGppdC5tb3ZlKHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKKyAgICAg
ICAgICAgIGppdC5ub3AoKTsKKyAgICAgICAgICAgIGppdC5ub3AoKTsKKyAgICAgICAgfSk7Cisg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHNl
Y29uZFBhdGNocG9pbnQpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Cisg
ICAgQ0hFQ0soaW52b2tlPHVpbnQ2NF90PigqY29kZSkgPT0gcmVzdWx0KTsKK30KKwordm9pZCBp
bnRlcnByZXRlclByaW50KFZlY3RvcjxpbnRwdHJfdD4qIHN0cmVhbSwgaW50cHRyX3QgdmFsdWUp
Cit7CisgICAgc3RyZWFtLT5hcHBlbmQodmFsdWUpOworfQorCit2b2lkIHRlc3RJbnRlcnByZXRl
cigpCit7CisgICAgLy8gVGhpcyBpbXBsZW1lbnRzIGEgc2lsbHkgaW50ZXJwcmV0ZXIgdG8gdGVz
dCBidWlsZGluZyBjdXN0b20gc3dpdGNoIHN0YXRlbWVudHMgdXNpbmcKKyAgICAvLyBQYXRjaHBv
aW50LgorCisgICAgUHJvY2VkdXJlIHByb2M7CisKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIGRpc3BhdGNoID0gcHJvYy5hZGRCbG9jaygp
OworICAgIEJhc2ljQmxvY2sqIGFkZFRvRGF0YVBvaW50ZXIgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgQmFzaWNCbG9jayogYWRkVG9Db2RlUG9pbnRlciA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBC
YXNpY0Jsb2NrKiBhZGRUb0NvZGVQb2ludGVyVGFrZW4gPSBwcm9jLmFkZEJsb2NrKCk7CisgICAg
QmFzaWNCbG9jayogYWRkVG9Db2RlUG9pbnRlck5vdFRha2VuID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIEJhc2ljQmxvY2sqIGFkZFRvRGF0YSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Js
b2NrKiBwcmludCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBzdG9wID0gcHJv
Yy5hZGRCbG9jaygpOworCisgICAgVmFyaWFibGUqIGRhdGFQb2ludGVyID0gcHJvYy5hZGRWYXJp
YWJsZShwb2ludGVyVHlwZSgpKTsKKyAgICBWYXJpYWJsZSogY29kZVBvaW50ZXIgPSBwcm9jLmFk
ZFZhcmlhYmxlKHBvaW50ZXJUeXBlKCkpOworCisgICAgcm9vdC0+YXBwZW5kTmV3PFZhcmlhYmxl
VmFsdWU+KAorICAgICAgICBwcm9jLCBTZXQsIE9yaWdpbigpLCBkYXRhUG9pbnRlciwKKyAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApKTsKKyAgICByb290LT5hcHBlbmROZXc8VmFyaWFibGVWYWx1ZT4o
CisgICAgICAgIHByb2MsIFNldCwgT3JpZ2luKCksIGNvZGVQb2ludGVyLAorICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMSkpOworICAgIFZhbHVlKiBjb250ZXh0ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4oKSwgRnJlcXVl
bnRlZEJsb2NrKGRpc3BhdGNoKSk7CisKKyAgICAvLyBOT1RFOiBJdCdzIHRvdGFsbHkgdmFsaWQg
Zm9yIHRoaXMgcGF0Y2hwb2ludCB0byBiZSB0YWlsLWR1cGxpY2F0ZWQuCisgICAgVmFsdWUqIGNv
ZGVQb2ludGVyVmFsdWUgPQorICAgICAgICBkaXNwYXRjaC0+YXBwZW5kTmV3PFZhcmlhYmxlVmFs
dWU+KHByb2MsIEIzOjpHZXQsIE9yaWdpbigpLCBjb2RlUG9pbnRlcik7CisgICAgVmFsdWUqIG9w
Y29kZSA9IGRpc3BhdGNoLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICBwcm9jLCBM
b2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSwgY29kZVBvaW50ZXJWYWx1ZSk7CisgICAgUGF0
Y2hwb2ludFZhbHVlKiBwb2x5SnVtcCA9IGRpc3BhdGNoLT5hcHBlbmROZXc8UGF0Y2hwb2ludFZh
bHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7CisgICAgcG9seUp1bXAtPmVmZmVjdHMgPSBFZmZl
Y3RzKCk7CisgICAgcG9seUp1bXAtPmVmZmVjdHMudGVybWluYWwgPSB0cnVlOworICAgIHBvbHlK
dW1wLT5hcHBlbmRTb21lUmVnaXN0ZXIob3Bjb2RlKTsKKyAgICBwb2x5SnVtcC0+Y2xvYmJlcihS
ZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgIHBvbHlKdW1wLT5udW1H
UFNjcmF0Y2hSZWdpc3RlcnMgPSAyOworICAgIGRpc3BhdGNoLT5hcHBlbmRTdWNjZXNzb3IoRnJl
cXVlbnRlZEJsb2NrKGFkZFRvRGF0YVBvaW50ZXIpKTsKKyAgICBkaXNwYXRjaC0+YXBwZW5kU3Vj
Y2Vzc29yKEZyZXF1ZW50ZWRCbG9jayhhZGRUb0NvZGVQb2ludGVyKSk7CisgICAgZGlzcGF0Y2gt
PmFwcGVuZFN1Y2Nlc3NvcihGcmVxdWVudGVkQmxvY2soYWRkVG9EYXRhKSk7CisgICAgZGlzcGF0
Y2gtPmFwcGVuZFN1Y2Nlc3NvcihGcmVxdWVudGVkQmxvY2socHJpbnQpKTsKKyAgICBkaXNwYXRj
aC0+YXBwZW5kU3VjY2Vzc29yKEZyZXF1ZW50ZWRCbG9jayhzdG9wKSk7CisKKyAgICAvLyBPdXIg
Im9wY29kZXMiLgorICAgIHN0YXRpYyBjb25zdCBpbnRwdHJfdCBBZGREUCA9IDA7CisgICAgc3Rh
dGljIGNvbnN0IGludHB0cl90IEFkZENQID0gMTsKKyAgICBzdGF0aWMgY29uc3QgaW50cHRyX3Qg
QWRkID0gMjsKKyAgICBzdGF0aWMgY29uc3QgaW50cHRyX3QgUHJpbnQgPSAzOworICAgIHN0YXRp
YyBjb25zdCBpbnRwdHJfdCBTdG9wID0gNDsKKworICAgIHBvbHlKdW1wLT5zZXRHZW5lcmF0b3Io
CisgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlv
blBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVy
VXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAgICAgICAgICBWZWN0b3I8Qm94PENDYWxsSGVs
cGVyczo6TGFiZWw+PiBsYWJlbHMgPSBwYXJhbXMuc3VjY2Vzc29yTGFiZWxzKCk7CisKKyAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxCM0NvbXBpbGF0aW9uUHRyVGFnPioganVtcFRh
YmxlID0gYml0d2lzZV9jYXN0PE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxCM0NvbXBpbGF0aW9uUHRy
VGFnPio+KAorICAgICAgICAgICAgICAgIHBhcmFtcy5wcm9jKCkuYWRkRGF0YVNlY3Rpb24oc2l6
ZW9mKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxCM0NvbXBpbGF0aW9uUHRyVGFnPikgKiBsYWJlbHMu
c2l6ZSgpKSk7CisKKyAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoID0gcGFyYW1zLmdwU2NyYXRj
aCgwKTsKKworICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KGp1bXBUYWJsZSksIHNjcmF0Y2gpOworICAgICAgICAgICAgaml0LmxvYWQ2NChDQ2FsbEhlbHBl
cnM6OkJhc2VJbmRleChzY3JhdGNoLCBwYXJhbXNbMF0uZ3ByKCksIENDYWxsSGVscGVyczo6dGlt
ZXNQdHIoKSksIHNjcmF0Y2gpOworICAgICAgICAgICAgaml0Lmp1bXAoc2NyYXRjaCwgQjNDb21w
aWxhdGlvblB0clRhZyk7CisKKyAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzaygKKyAgICAgICAg
ICAgICAgICBbJiwganVtcFRhYmxlLCBsYWJlbHNdIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7
CisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGxhYmVscy5zaXplKCk7IGkt
LTspCisgICAgICAgICAgICAgICAgICAgICAgICBqdW1wVGFibGVbaV0gPSBsaW5rQnVmZmVyLmxv
Y2F0aW9uT2Y8QjNDb21waWxhdGlvblB0clRhZz4oKmxhYmVsc1tpXSk7CisgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0pOworCisgICAgLy8gQWRkRFAgPG9wZXJhbmQ+OiBhZGRzIDxvcGVy
YW5kPiB0byBEUC4KKyAgICBjb2RlUG9pbnRlclZhbHVlID0KKyAgICAgICAgYWRkVG9EYXRhUG9p
bnRlci0+YXBwZW5kTmV3PFZhcmlhYmxlVmFsdWU+KHByb2MsIEIzOjpHZXQsIE9yaWdpbigpLCBj
b2RlUG9pbnRlcik7CisgICAgYWRkVG9EYXRhUG9pbnRlci0+YXBwZW5kTmV3PFZhcmlhYmxlVmFs
dWU+KAorICAgICAgICBwcm9jLCBTZXQsIE9yaWdpbigpLCBkYXRhUG9pbnRlciwKKyAgICAgICAg
YWRkVG9EYXRhUG9pbnRlci0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEIz
OjpBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgYWRkVG9EYXRhUG9pbnRlci0+YXBwZW5kTmV3
PFZhcmlhYmxlVmFsdWU+KHByb2MsIEIzOjpHZXQsIE9yaWdpbigpLCBkYXRhUG9pbnRlciksCisg
ICAgICAgICAgICBhZGRUb0RhdGFQb2ludGVyLT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgICAgIHByb2MsIE11bCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgYWRkVG9EYXRhUG9p
bnRlci0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywg
TG9hZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCksIGNvZGVQb2ludGVyVmFsdWUsIHN0YXRpY19j
YXN0PGludDMyX3Q+KHNpemVvZihpbnRwdHJfdCkpKSwKKyAgICAgICAgICAgICAgICBhZGRUb0Rh
dGFQb2ludGVyLT5hcHBlbmRJbnRDb25zdGFudCgKKyAgICAgICAgICAgICAgICAgICAgcHJvYywg
T3JpZ2luKCksIHBvaW50ZXJUeXBlKCksIHNpemVvZihpbnRwdHJfdCkpKSkpOworICAgIGFkZFRv
RGF0YVBvaW50ZXItPmFwcGVuZE5ldzxWYXJpYWJsZVZhbHVlPigKKyAgICAgICAgcHJvYywgU2V0
LCBPcmlnaW4oKSwgY29kZVBvaW50ZXIsCisgICAgICAgIGFkZFRvRGF0YVBvaW50ZXItPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCMzo6QWRkLCBPcmlnaW4oKSwgY29kZVBv
aW50ZXJWYWx1ZSwKKyAgICAgICAgICAgIGFkZFRvRGF0YVBvaW50ZXItPmFwcGVuZEludENvbnN0
YW50KAorICAgICAgICAgICAgICAgIHByb2MsIE9yaWdpbigpLCBwb2ludGVyVHlwZSgpLCBzaXpl
b2YoaW50cHRyX3QpICogMikpKTsKKyAgICBhZGRUb0RhdGFQb2ludGVyLT5hcHBlbmROZXdDb250
cm9sVmFsdWUocHJvYywgSnVtcCwgT3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayhkaXNwYXRjaCkp
OworCisgICAgLy8gQWRkQ1AgPG9wZXJhbmQ+OiBhZGRzIDxvcGVyYW5kPiB0byBDUCBpZiB0aGUg
Y3VycmVudCB2YWx1ZSBhdCBEUCBpcyBub24temVybywgb3RoZXJ3aXNlCisgICAgLy8gZmFsbHMg
dGhyb3VnaCBub3JtYWxseS4KKyAgICBjb2RlUG9pbnRlclZhbHVlID0KKyAgICAgICAgYWRkVG9D
b2RlUG9pbnRlci0+YXBwZW5kTmV3PFZhcmlhYmxlVmFsdWU+KHByb2MsIEIzOjpHZXQsIE9yaWdp
bigpLCBjb2RlUG9pbnRlcik7CisgICAgVmFsdWUqIGRhdGFQb2ludGVyVmFsdWUgPQorICAgICAg
ICBhZGRUb0NvZGVQb2ludGVyLT5hcHBlbmROZXc8VmFyaWFibGVWYWx1ZT4ocHJvYywgQjM6Okdl
dCwgT3JpZ2luKCksIGRhdGFQb2ludGVyKTsKKyAgICBhZGRUb0NvZGVQb2ludGVyLT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAg
IGFkZFRvQ29kZVBvaW50ZXItPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICBw
cm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSwgZGF0YVBvaW50ZXJWYWx1ZSksCisg
ICAgICAgIEZyZXF1ZW50ZWRCbG9jayhhZGRUb0NvZGVQb2ludGVyVGFrZW4pLCBGcmVxdWVudGVk
QmxvY2soYWRkVG9Db2RlUG9pbnRlck5vdFRha2VuKSk7CisgICAgYWRkVG9Db2RlUG9pbnRlclRh
a2VuLT5hcHBlbmROZXc8VmFyaWFibGVWYWx1ZT4oCisgICAgICAgIHByb2MsIFNldCwgT3JpZ2lu
KCksIGNvZGVQb2ludGVyLAorICAgICAgICBhZGRUb0NvZGVQb2ludGVyVGFrZW4tPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCMzo6QWRkLCBPcmlnaW4oKSwgY29kZVBvaW50
ZXJWYWx1ZSwKKyAgICAgICAgICAgIGFkZFRvQ29kZVBvaW50ZXJUYWtlbi0+YXBwZW5kTmV3PFZh
bHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBNdWwsIE9yaWdpbigpLAorICAgICAgICAgICAg
ICAgIGFkZFRvQ29kZVBvaW50ZXJUYWtlbi0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAg
ICAgICAgICAgICAgICAgcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCksIGNvZGVQ
b2ludGVyVmFsdWUsIHN0YXRpY19jYXN0PGludDMyX3Q+KHNpemVvZihpbnRwdHJfdCkpKSwKKyAg
ICAgICAgICAgICAgICBhZGRUb0NvZGVQb2ludGVyVGFrZW4tPmFwcGVuZEludENvbnN0YW50KAor
ICAgICAgICAgICAgICAgICAgICBwcm9jLCBPcmlnaW4oKSwgcG9pbnRlclR5cGUoKSwgc2l6ZW9m
KGludHB0cl90KSkpKSk7CisgICAgYWRkVG9Db2RlUG9pbnRlclRha2VuLT5hcHBlbmROZXdDb250
cm9sVmFsdWUocHJvYywgSnVtcCwgT3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayhkaXNwYXRjaCkp
OworICAgIGFkZFRvQ29kZVBvaW50ZXJOb3RUYWtlbi0+YXBwZW5kTmV3PFZhcmlhYmxlVmFsdWU+
KAorICAgICAgICBwcm9jLCBTZXQsIE9yaWdpbigpLCBjb2RlUG9pbnRlciwKKyAgICAgICAgYWRk
VG9Db2RlUG9pbnRlck5vdFRha2VuLT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJv
YywgQjM6OkFkZCwgT3JpZ2luKCksIGNvZGVQb2ludGVyVmFsdWUsCisgICAgICAgICAgICBhZGRU
b0NvZGVQb2ludGVyTm90VGFrZW4tPmFwcGVuZEludENvbnN0YW50KAorICAgICAgICAgICAgICAg
IHByb2MsIE9yaWdpbigpLCBwb2ludGVyVHlwZSgpLCBzaXplb2YoaW50cHRyX3QpICogMikpKTsK
KyAgICBhZGRUb0NvZGVQb2ludGVyTm90VGFrZW4tPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAg
ICAgICAgcHJvYywgSnVtcCwgT3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayhkaXNwYXRjaCkpOwor
CisgICAgLy8gQWRkIDxvcGVyYW5kPjogYWRkcyA8b3BlcmFuZD4gdG8gdGhlIHNsb3QgcG9pbnRl
ZCB0byBieSBEUC4KKyAgICBjb2RlUG9pbnRlclZhbHVlID0gYWRkVG9EYXRhLT5hcHBlbmROZXc8
VmFyaWFibGVWYWx1ZT4ocHJvYywgQjM6OkdldCwgT3JpZ2luKCksIGNvZGVQb2ludGVyKTsKKyAg
ICBkYXRhUG9pbnRlclZhbHVlID0gYWRkVG9EYXRhLT5hcHBlbmROZXc8VmFyaWFibGVWYWx1ZT4o
cHJvYywgQjM6OkdldCwgT3JpZ2luKCksIGRhdGFQb2ludGVyKTsKKyAgICBhZGRUb0RhdGEtPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIFN0b3JlLCBPcmlnaW4oKSwKKyAg
ICAgICAgYWRkVG9EYXRhLT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQjM6
OkFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICBhZGRUb0RhdGEtPmFwcGVuZE5ldzxNZW1vcnlW
YWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2lu
KCksIGRhdGFQb2ludGVyVmFsdWUpLAorICAgICAgICAgICAgYWRkVG9EYXRhLT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIExvYWQsIHBvaW50ZXJUeXBlKCks
IE9yaWdpbigpLCBjb2RlUG9pbnRlclZhbHVlLCBzdGF0aWNfY2FzdDxpbnQzMl90PihzaXplb2Yo
aW50cHRyX3QpKSkpLAorICAgICAgICBkYXRhUG9pbnRlclZhbHVlKTsKKyAgICBhZGRUb0RhdGEt
PmFwcGVuZE5ldzxWYXJpYWJsZVZhbHVlPigKKyAgICAgICAgcHJvYywgU2V0LCBPcmlnaW4oKSwg
Y29kZVBvaW50ZXIsCisgICAgICAgIGFkZFRvRGF0YS0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAg
ICAgICAgIHByb2MsIEIzOjpBZGQsIE9yaWdpbigpLCBjb2RlUG9pbnRlclZhbHVlLAorICAgICAg
ICAgICAgYWRkVG9EYXRhLT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgcG9pbnRl
clR5cGUoKSwgc2l6ZW9mKGludHB0cl90KSAqIDIpKSk7CisgICAgYWRkVG9EYXRhLT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUocHJvYywgSnVtcCwgT3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayhkaXNw
YXRjaCkpOworCisgICAgLy8gUHJpbnQ6ICJwcmludHMiIHRoZSB2YWx1ZSBwb2ludGVkIHRvIGJ5
IERQLiBXaGF0IHRoaXMgYWN0dWFsbHkgbWVhbnMgaXMgdGhhdCB0aGUgdmFsdWUgaXMKKyAgICAv
LyBhcHBlbmRlZCB0byB0aGUgc3RyZWFtIHZlY3RvciBieSB0aGUgaW50ZXJwcmV0ZXJQcmludCBm
dW5jdGlvbi4KKyAgICBjb2RlUG9pbnRlclZhbHVlID0gcHJpbnQtPmFwcGVuZE5ldzxWYXJpYWJs
ZVZhbHVlPihwcm9jLCBCMzo6R2V0LCBPcmlnaW4oKSwgY29kZVBvaW50ZXIpOworICAgIGRhdGFQ
b2ludGVyVmFsdWUgPSBwcmludC0+YXBwZW5kTmV3PFZhcmlhYmxlVmFsdWU+KHByb2MsIEIzOjpH
ZXQsIE9yaWdpbigpLCBkYXRhUG9pbnRlcik7CisgICAgcHJpbnQtPmFwcGVuZE5ldzxDQ2FsbFZh
bHVlPigKKyAgICAgICAgcHJvYywgVm9pZCwgT3JpZ2luKCksCisgICAgICAgIHByaW50LT5hcHBl
bmROZXc8Q29uc3RQdHJWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1
bmN0aW9uUHRyPHZvaWQqPihpbnRlcnByZXRlclByaW50LCBCM0NDYWxsUHRyVGFnKSksCisgICAg
ICAgIGNvbnRleHQsCisgICAgICAgIHByaW50LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2Ms
IExvYWQsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigpLCBkYXRhUG9pbnRlclZhbHVlKSk7CisgICAg
cHJpbnQtPmFwcGVuZE5ldzxWYXJpYWJsZVZhbHVlPigKKyAgICAgICAgcHJvYywgU2V0LCBPcmln
aW4oKSwgY29kZVBvaW50ZXIsCisgICAgICAgIHByaW50LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgcHJvYywgQjM6OkFkZCwgT3JpZ2luKCksIGNvZGVQb2ludGVyVmFsdWUsCisgICAg
ICAgICAgICBwcmludC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHBvaW50ZXJU
eXBlKCksIHNpemVvZihpbnRwdHJfdCkpKSk7CisgICAgcHJpbnQtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4oKSwgRnJlcXVlbnRlZEJsb2NrKGRpc3BhdGNoKSk7CisK
KyAgICAvLyBTdG9wOiByZXR1cm5zLgorICAgIHN0b3AtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
KyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgc3RvcC0+YXBwZW5kSW50
Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHBvaW50ZXJUeXBlKCksIDApKTsKKworICAgIGF1dG8g
aW50ZXJwcmV0ZXIgPSBjb21waWxlUHJvYyhwcm9jKTsKKworICAgIFZlY3Rvcjx1aW50cHRyX3Q+
IGRhdGE7CisgICAgVmVjdG9yPHVpbnRwdHJfdD4gY29kZTsKKyAgICBWZWN0b3I8dWludHB0cl90
PiBzdHJlYW07CisKKyAgICBkYXRhLmFwcGVuZCgxKTsKKyAgICBkYXRhLmFwcGVuZCgwKTsKKwor
ICAgIGlmIChzaG91bGRCZVZlcmJvc2UoKSkKKyAgICAgICAgZGF0YUxvZygiZGF0YSA9ICIsIGxp
c3REdW1wKGRhdGEpLCAiXG4iKTsKKworICAgIC8vIFdlJ2xsIHdyaXRlIGEgcHJvZ3JhbSB0aGF0
IHByaW50cyB0aGUgbnVtYmVycyAxLi4xMDAuCisgICAgLy8gV2UgZXhwZWN0IERQIHRvIHBvaW50
IGF0ICMwLgorICAgIGNvZGUuYXBwZW5kKEFkZENQKTsKKyAgICBjb2RlLmFwcGVuZCg2KTsgLy8g
Z28gdG8gbG9vcCBib2R5CisKKyAgICAvLyBMb29wIHJlLWVudHJ5OgorICAgIC8vIFdlIGV4cGVj
dCBEUCB0byBwb2ludCBhdCAjMSBhbmQgZm9yICMxIHRvIGJlIG9mZnNldCBieSAtMTAwLgorICAg
IGNvZGUuYXBwZW5kKEFkZCk7CisgICAgY29kZS5hcHBlbmQoMTAwKTsKKworICAgIGNvZGUuYXBw
ZW5kKEFkZERQKTsKKyAgICBjb2RlLmFwcGVuZCgtMSk7CisKKyAgICAvLyBMb29wIGhlYWRlcjoK
KyAgICAvLyBXZSBleHBlY3QgRFAgdG8gcG9pbnQgYXQgIzAuCisgICAgY29kZS5hcHBlbmQoQWRk
RFApOworICAgIGNvZGUuYXBwZW5kKDEpOworCisgICAgY29kZS5hcHBlbmQoQWRkKTsKKyAgICBj
b2RlLmFwcGVuZCgxKTsKKworICAgIGNvZGUuYXBwZW5kKFByaW50KTsKKworICAgIGNvZGUuYXBw
ZW5kKEFkZCk7CisgICAgY29kZS5hcHBlbmQoLTEwMCk7CisKKyAgICAvLyBXZSB3YW50IHRvIHN0
b3AgaWYgaXQncyB6ZXJvIGFuZCBjb250aW51ZSBpZiBpdCdzIG5vbi16ZXJvLiBBZGRDUCB0YWtl
cyB0aGUgYnJhbmNoIGlmIGl0J3MKKyAgICAvLyBub24temVyby4KKyAgICBjb2RlLmFwcGVuZChB
ZGRDUCk7CisgICAgY29kZS5hcHBlbmQoLTExKTsgLy8gZ28gdG8gbG9vcCByZS1lbnRyeS4KKwor
ICAgIGNvZGUuYXBwZW5kKFN0b3ApOworCisgICAgaWYgKHNob3VsZEJlVmVyYm9zZSgpKQorICAg
ICAgICBkYXRhTG9nKCJjb2RlID0gIiwgbGlzdER1bXAoY29kZSksICJcbiIpOworCisgICAgQ0hF
Q0soIWludm9rZTxpbnRwdHJfdD4oKmludGVycHJldGVyLCBkYXRhLmRhdGEoKSwgY29kZS5kYXRh
KCksICZzdHJlYW0pKTsKKworICAgIENIRUNLKHN0cmVhbS5zaXplKCkgPT0gMTAwKTsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMTAwOyArK2kpCisgICAgICAgIENIRUNLKHN0cmVhbVtp
XSA9PSBpICsgMSk7CisKKyAgICBpZiAoc2hvdWxkQmVWZXJib3NlKCkpCisgICAgICAgIGRhdGFM
b2coInN0cmVhbSA9ICIsIGxpc3REdW1wKHN0cmVhbSksICJcbiIpOworfQorCit2b2lkIHRlc3RS
ZWR1Y2VTdHJlbmd0aENoZWNrQm90dG9tVXNlSW5Bbm90aGVyQmxvY2soKQoreworICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAxKQorICAgICAgICByZXR1cm47
CisKKyAgICBCYXNpY0Jsb2NrKiBvbmUgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9j
ayogdHdvID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgQ2hlY2tWYWx1ZSogY2hlY2sgPSBvbmUt
PmFwcGVuZE5ldzxDaGVja1ZhbHVlPigKKyAgICAgICAgcHJvYywgQ2hlY2ssIE9yaWdpbigpLCBv
bmUtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7CisgICAgY2hl
Y2stPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3Qg
U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0
Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworCisgICAgICAgICAgICBqaXQubW92
ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMig2NjYpLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQ
Uik7CisgICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAgICAgICAg
IGppdC5yZXQoKTsKKyAgICAgICAgfSk7CisgICAgVmFsdWUqIGFyZyA9IG9uZS0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OworICAgIG9uZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIEp1bXAsIE9yaWdpbigpLCBG
cmVxdWVudGVkQmxvY2sodHdvKSk7CisKKyAgICBjaGVjayA9IHR3by0+YXBwZW5kTmV3PENoZWNr
VmFsdWU+KAorICAgICAgICBwcm9jLCBDaGVja0FkZCwgT3JpZ2luKCksIGFyZywKKyAgICAgICAg
dHdvLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKTsKKyAgICBj
aGVjay0+c2V0R2VuZXJhdG9yKAorICAgICAgICBbJl0gKENDYWxsSGVscGVycyYsIGNvbnN0IFN0
YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAgICAgICAgIENIRUNLKCEiU2hvdWxkIG5v
dCBleGVjdXRlIik7CisgICAgICAgIH0pOworICAgIHR3by0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KHByb2MsIFJldHVybiwgT3JpZ2luKCksIGNoZWNrKTsKKworICAgIHByb2MucmVzZXRSZWFjaGFi
aWxpdHkoKTsKKyAgICByZWR1Y2VTdHJlbmd0aChwcm9jKTsKK30KKwordm9pZCB0ZXN0UmVzZXRS
ZWFjaGFiaWxpdHlEYW5nbGluZ1JlZmVyZW5jZSgpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisK
KyAgICBCYXNpY0Jsb2NrKiBvbmUgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayog
dHdvID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgVXBzaWxvblZhbHVlKiB1cHNpbG9uID0gb25l
LT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPigKKyAgICAgICAgcHJvYywgT3JpZ2luKCksIG9uZS0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKSk7CisgICAgb25lLT5h
cHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgT29wcywgT3JpZ2luKCkpOworCisgICAgVmFsdWUq
IHBoaSA9IHR3by0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBQaGksIEludDMyLCBPcmlnaW4oKSk7
CisgICAgdXBzaWxvbi0+c2V0UGhpKHBoaSk7CisgICAgdHdvLT5hcHBlbmROZXdDb250cm9sVmFs
dWUocHJvYywgT29wcywgT3JpZ2luKCkpOworCisgICAgcHJvYy5yZXNldFJlYWNoYWJpbGl0eSgp
OworICAgIHZhbGlkYXRlKHByb2MpOworfQorCit2b2lkIHRlc3RFbnRyeVN3aXRjaFNpbXBsZSgp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgcHJvYy5zZXROdW1FbnRyeXBvaW50cygzKTsK
KworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9j
ayogb25lID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIHR3byA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0aHJlZSA9IHByb2MuYWRkQmxvY2soKTsKKworICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRW50cnlTd2l0Y2gsIE9yaWdpbigpKTsKKyAg
ICByb290LT5hcHBlbmRTdWNjZXNzb3IoRnJlcXVlbnRlZEJsb2NrKG9uZSkpOworICAgIHJvb3Qt
PmFwcGVuZFN1Y2Nlc3NvcihGcmVxdWVudGVkQmxvY2sodHdvKSk7CisgICAgcm9vdC0+YXBwZW5k
U3VjY2Vzc29yKEZyZXF1ZW50ZWRCbG9jayh0aHJlZSkpOworCisgICAgb25lLT5hcHBlbmROZXc8
VmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICBvbmUtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAg
ICAgICAgb25lLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCksCisgICAgICAgICAgICBvbmUtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpOworCisg
ICAgdHdvLT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LAorICAgICAgICB0d28tPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTdWIs
IE9yaWdpbigpLAorICAgICAgICAgICAgdHdvLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCisgICAgICAgICAgICB0d28t
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKSkpOworCisgICAgdGhyZWUtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHRocmVlLT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICAgICAgcHJvYywgTXVsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHRocmVlLT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCksCisgICAgICAgICAgICB0aHJlZS0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSk7CisKKyAgICBwcmVwYXJlRm9y
R2VuZXJhdGlvbihwcm9jKTsKKworICAgIENDYWxsSGVscGVycyBqaXQ7CisgICAgZ2VuZXJhdGUo
cHJvYywgaml0KTsKKyAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBudWxscHRyKTsKKyAg
ICBDb2RlTG9jYXRpb25MYWJlbDxCM0NvbXBpbGF0aW9uUHRyVGFnPiBsYWJlbE9uZSA9IGxpbmtC
dWZmZXIubG9jYXRpb25PZjxCM0NvbXBpbGF0aW9uUHRyVGFnPihwcm9jLmVudHJ5cG9pbnRMYWJl
bCgwKSk7CisgICAgQ29kZUxvY2F0aW9uTGFiZWw8QjNDb21waWxhdGlvblB0clRhZz4gbGFiZWxU
d28gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8QjNDb21waWxhdGlvblB0clRhZz4ocHJvYy5lbnRy
eXBvaW50TGFiZWwoMSkpOworICAgIENvZGVMb2NhdGlvbkxhYmVsPEIzQ29tcGlsYXRpb25QdHJU
YWc+IGxhYmVsVGhyZWUgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8QjNDb21waWxhdGlvblB0clRh
Zz4ocHJvYy5lbnRyeXBvaW50TGFiZWwoMikpOworCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEIzQ29tcGlsYXRpb25QdHJUYWc+IGNvZGVSZWYgPSBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIs
IEIzQ29tcGlsYXRpb25QdHJUYWcsICJ0ZXN0YjMgY29tcGlsYXRpb24iKTsKKworICAgIENIRUNL
KGludm9rZTxpbnQ+KGxhYmVsT25lLCAxLCAyKSA9PSAzKTsKKyAgICBDSEVDSyhpbnZva2U8aW50
PihsYWJlbFR3bywgMSwgMikgPT0gLTEpOworICAgIENIRUNLKGludm9rZTxpbnQ+KGxhYmVsVGhy
ZWUsIDEsIDIpID09IDIpOworICAgIENIRUNLKGludm9rZTxpbnQ+KGxhYmVsT25lLCAtMSwgMikg
PT0gMSk7CisgICAgQ0hFQ0soaW52b2tlPGludD4obGFiZWxUd28sIC0xLCAyKSA9PSAtMyk7Cisg
ICAgQ0hFQ0soaW52b2tlPGludD4obGFiZWxUaHJlZSwgLTEsIDIpID09IC0yKTsKK30KKwordm9p
ZCB0ZXN0RW50cnlTd2l0Y2hOb0VudHJ5U3dpdGNoKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICBwcm9jLnNldE51bUVudHJ5cG9pbnRzKDMpOworCisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKworICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
IHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSk7CisKKyAgICBwcmVwYXJlRm9y
R2VuZXJhdGlvbihwcm9jKTsKKworICAgIENDYWxsSGVscGVycyBqaXQ7CisgICAgZ2VuZXJhdGUo
cHJvYywgaml0KTsKKyAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBudWxscHRyKTsKKyAg
ICBDb2RlTG9jYXRpb25MYWJlbDxCM0NvbXBpbGF0aW9uUHRyVGFnPiBsYWJlbE9uZSA9IGxpbmtC
dWZmZXIubG9jYXRpb25PZjxCM0NvbXBpbGF0aW9uUHRyVGFnPihwcm9jLmVudHJ5cG9pbnRMYWJl
bCgwKSk7CisgICAgQ29kZUxvY2F0aW9uTGFiZWw8QjNDb21waWxhdGlvblB0clRhZz4gbGFiZWxU
d28gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8QjNDb21waWxhdGlvblB0clRhZz4ocHJvYy5lbnRy
eXBvaW50TGFiZWwoMSkpOworICAgIENvZGVMb2NhdGlvbkxhYmVsPEIzQ29tcGlsYXRpb25QdHJU
YWc+IGxhYmVsVGhyZWUgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8QjNDb21waWxhdGlvblB0clRh
Zz4ocHJvYy5lbnRyeXBvaW50TGFiZWwoMikpOworCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEIzQ29tcGlsYXRpb25QdHJUYWc+IGNvZGVSZWYgPSBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIs
IEIzQ29tcGlsYXRpb25QdHJUYWcsICJ0ZXN0YjMgY29tcGlsYXRpb24iKTsKKworICAgIENIRUNL
X0VRKGludm9rZTxpbnQ+KGxhYmVsT25lLCAxLCAyKSwgMyk7CisgICAgQ0hFQ0tfRVEoaW52b2tl
PGludD4obGFiZWxUd28sIDEsIDIpLCAzKTsKKyAgICBDSEVDS19FUShpbnZva2U8aW50PihsYWJl
bFRocmVlLCAxLCAyKSwgMyk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxPbmUsIC0x
LCAyKSwgMSk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUd28sIC0xLCAyKSwgMSk7
CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUaHJlZSwgLTEsIDIpLCAxKTsKK30KKwor
dm9pZCB0ZXN0RW50cnlTd2l0Y2hXaXRoQ29tbW9uUGF0aHMoKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIHByb2Muc2V0TnVtRW50cnlwb2ludHMoMyk7CisKKyAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIG9uZSA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0d28gPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNC
bG9jayogdGhyZWUgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogZW5kID0gcHJv
Yy5hZGRCbG9jaygpOworCisgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBFbnRyeVN3
aXRjaCwgT3JpZ2luKCkpOworICAgIHJvb3QtPmFwcGVuZFN1Y2Nlc3NvcihGcmVxdWVudGVkQmxv
Y2sob25lKSk7CisgICAgcm9vdC0+YXBwZW5kU3VjY2Vzc29yKEZyZXF1ZW50ZWRCbG9jayh0d28p
KTsKKyAgICByb290LT5hcHBlbmRTdWNjZXNzb3IoRnJlcXVlbnRlZEJsb2NrKHRocmVlKSk7CisK
KyAgICBVcHNpbG9uVmFsdWUqIHVwc2lsb25PbmUgPSBvbmUtPmFwcGVuZE5ldzxVcHNpbG9uVmFs
dWU+KAorICAgICAgICBwcm9jLCBPcmlnaW4oKSwKKyAgICAgICAgb25lLT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIG9uZS0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCks
CisgICAgICAgICAgICAgICAgb25lLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICAgICAgb25lLT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgICAgICBvbmUtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpKTsKKyAgICBvbmUtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgSnVtcCwgT3JpZ2luKCkpOworICAgIG9uZS0+c2V0U3VjY2Vzc29ycyhGcmVxdWVu
dGVkQmxvY2soZW5kKSk7CisKKyAgICBVcHNpbG9uVmFsdWUqIHVwc2lsb25Ud28gPSB0d28tPmFw
cGVuZE5ldzxVcHNpbG9uVmFsdWU+KAorICAgICAgICBwcm9jLCBPcmlnaW4oKSwKKyAgICAgICAg
dHdvLT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgU3ViLCBPcmlnaW4oKSwK
KyAgICAgICAgICAgIHR3by0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9j
LCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgdHdvLT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAg
ICAgICAgICAgdHdvLT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRy
dW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICB0d28tPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpKTsKKyAgICB0
d28tPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSnVtcCwgT3JpZ2luKCkpOworICAgIHR3by0+c2V0
U3VjY2Vzc29ycyhGcmVxdWVudGVkQmxvY2soZW5kKSk7CisKKyAgICBVcHNpbG9uVmFsdWUqIHVw
c2lsb25UaHJlZSA9IHRocmVlLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPigKKyAgICAgICAgcHJv
YywgT3JpZ2luKCksCisgICAgICAgIHRocmVlLT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgcHJvYywgTXVsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHRocmVlLT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
ICAgICB0aHJlZS0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAgICAgICAgIHRocmVlLT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
ICAgICB0aHJlZS0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpKSkpOworICAgIHRocmVlLT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEp1bXAsIE9yaWdpbigpKTsKKyAgICB0aHJlZS0+c2V0U3VjY2Vzc29ycyhGcmVxdWVudGVk
QmxvY2soZW5kKSk7CisKKyAgICBWYWx1ZSogcGhpID0gZW5kLT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFBoaSwgSW50MzIsIE9yaWdpbigpKTsKKyAgICB1cHNpbG9uT25lLT5zZXRQaGkocGhpKTsK
KyAgICB1cHNpbG9uVHdvLT5zZXRQaGkocGhpKTsKKyAgICB1cHNpbG9uVGhyZWUtPnNldFBoaShw
aGkpOworCisgICAgZW5kLT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAorICAgICAgICBlbmQtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBw
cm9jLCBjaGlsbChNb2QpLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHBoaSwgZW5kLT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAg
ICAgICAgICAgICBlbmQtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKSkpKTsKKworICAgIHByZXBhcmVGb3JHZW5lcmF0aW9u
KHByb2MpOworCisgICAgQ0NhbGxIZWxwZXJzIGppdDsKKyAgICBnZW5lcmF0ZShwcm9jLCBqaXQp
OworICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcihqaXQsIG51bGxwdHIpOworICAgIENvZGVMb2Nh
dGlvbkxhYmVsPEIzQ29tcGlsYXRpb25QdHJUYWc+IGxhYmVsT25lID0gbGlua0J1ZmZlci5sb2Nh
dGlvbk9mPEIzQ29tcGlsYXRpb25QdHJUYWc+KHByb2MuZW50cnlwb2ludExhYmVsKDApKTsKKyAg
ICBDb2RlTG9jYXRpb25MYWJlbDxCM0NvbXBpbGF0aW9uUHRyVGFnPiBsYWJlbFR3byA9IGxpbmtC
dWZmZXIubG9jYXRpb25PZjxCM0NvbXBpbGF0aW9uUHRyVGFnPihwcm9jLmVudHJ5cG9pbnRMYWJl
bCgxKSk7CisgICAgQ29kZUxvY2F0aW9uTGFiZWw8QjNDb21waWxhdGlvblB0clRhZz4gbGFiZWxU
aHJlZSA9IGxpbmtCdWZmZXIubG9jYXRpb25PZjxCM0NvbXBpbGF0aW9uUHRyVGFnPihwcm9jLmVu
dHJ5cG9pbnRMYWJlbCgyKSk7CisKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8QjNDb21waWxh
dGlvblB0clRhZz4gY29kZVJlZiA9IEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgQjNDb21waWxh
dGlvblB0clRhZywgInRlc3RiMyBjb21waWxhdGlvbiIpOworCisgICAgQ0hFQ0tfRVEoaW52b2tl
PGludD4obGFiZWxPbmUsIDEsIDIsIDEwKSwgMyk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4o
bGFiZWxUd28sIDEsIDIsIDEwKSwgLTEpOworICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KGxhYmVs
VGhyZWUsIDEsIDIsIDEwKSwgMik7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxPbmUs
IC0xLCAyLCAxMCksIDEpOworICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KGxhYmVsVHdvLCAtMSwg
MiwgMTApLCAtMyk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUaHJlZSwgLTEsIDIs
IDEwKSwgLTIpOworICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KGxhYmVsT25lLCAxLCAyLCAyKSwg
MSk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUd28sIDEsIDIsIDIpLCAtMSk7Cisg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUaHJlZSwgMSwgMiwgMiksIDApOworICAgIENI
RUNLX0VRKGludm9rZTxpbnQ+KGxhYmVsT25lLCAtMSwgMiwgMiksIDEpOworICAgIENIRUNLX0VR
KGludm9rZTxpbnQ+KGxhYmVsVHdvLCAtMSwgMiwgMiksIC0xKTsKKyAgICBDSEVDS19FUShpbnZv
a2U8aW50PihsYWJlbFRocmVlLCAtMSwgMiwgMiksIDApOworICAgIENIRUNLX0VRKGludm9rZTxp
bnQ+KGxhYmVsT25lLCAxLCAyLCAwKSwgMCk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFi
ZWxUd28sIDEsIDIsIDApLCAwKTsKKyAgICBDSEVDS19FUShpbnZva2U8aW50PihsYWJlbFRocmVl
LCAxLCAyLCAwKSwgMCk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxPbmUsIC0xLCAy
LCAwKSwgMCk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUd28sIC0xLCAyLCAwKSwg
MCk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUaHJlZSwgLTEsIDIsIDApLCAwKTsK
K30KKwordm9pZCB0ZXN0RW50cnlTd2l0Y2hXaXRoQ29tbW9uUGF0aHNBbmROb25Ucml2aWFsRW50
cnlwb2ludCgpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgcHJvYy5zZXROdW1FbnRyeXBv
aW50cygzKTsKKworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAg
QmFzaWNCbG9jayogbmVnYXRlID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIGRp
c3BhdGNoID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIG9uZSA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0d28gPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFz
aWNCbG9jayogdGhyZWUgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogZW5kID0g
cHJvYy5hZGRCbG9jaygpOworCisgICAgVXBzaWxvblZhbHVlKiB1cHNpbG9uQmFzZSA9IHJvb3Qt
PmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KAorICAgICAgICBwcm9jLCBPcmlnaW4oKSwgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOworICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjMpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCAweGZmKSkpOworICAgIHJvb3QtPnNldFN1Y2Nlc3NvcnMo
RnJlcXVlbnRlZEJsb2NrKG5lZ2F0ZSksIEZyZXF1ZW50ZWRCbG9jayhkaXNwYXRjaCkpOworCisg
ICAgVXBzaWxvblZhbHVlKiB1cHNpbG9uTmVnYXRlID0gbmVnYXRlLT5hcHBlbmROZXc8VXBzaWxv
blZhbHVlPigKKyAgICAgICAgcHJvYywgT3JpZ2luKCksCisgICAgICAgIG5lZ2F0ZS0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIE5lZywgT3JpZ2luKCksCisgICAgICAgICAg
ICBuZWdhdGUtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMs
IE9yaWdpbigpLAorICAgICAgICAgICAgICAgIG5lZ2F0ZS0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSkpOworICAgIG5l
Z2F0ZS0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBKdW1wLCBPcmlnaW4oKSk7CisgICAgbmVnYXRl
LT5zZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9jayhkaXNwYXRjaCkpOworCisgICAgVmFsdWUq
IGFyZzAgPSBkaXNwYXRjaC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBQaGksIEludDMyLCBPcmln
aW4oKSk7CisgICAgdXBzaWxvbkJhc2UtPnNldFBoaShhcmcwKTsKKyAgICB1cHNpbG9uTmVnYXRl
LT5zZXRQaGkoYXJnMCk7CisgICAgZGlzcGF0Y2gtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRW50
cnlTd2l0Y2gsIE9yaWdpbigpKTsKKyAgICBkaXNwYXRjaC0+YXBwZW5kU3VjY2Vzc29yKEZyZXF1
ZW50ZWRCbG9jayhvbmUpKTsKKyAgICBkaXNwYXRjaC0+YXBwZW5kU3VjY2Vzc29yKEZyZXF1ZW50
ZWRCbG9jayh0d28pKTsKKyAgICBkaXNwYXRjaC0+YXBwZW5kU3VjY2Vzc29yKEZyZXF1ZW50ZWRC
bG9jayh0aHJlZSkpOworCisgICAgVXBzaWxvblZhbHVlKiB1cHNpbG9uT25lID0gb25lLT5hcHBl
bmROZXc8VXBzaWxvblZhbHVlPigKKyAgICAgICAgcHJvYywgT3JpZ2luKCksCisgICAgICAgIG9u
ZS0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCisg
ICAgICAgICAgICBhcmcwLCBvbmUtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAg
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIG9uZS0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSkp
OworICAgIG9uZS0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBKdW1wLCBPcmlnaW4oKSk7CisgICAg
b25lLT5zZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9jayhlbmQpKTsKKworICAgIFVwc2lsb25W
YWx1ZSogdXBzaWxvblR3byA9IHR3by0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4oCisgICAgICAg
IHByb2MsIE9yaWdpbigpLAorICAgICAgICB0d28tPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
ICAgICBwcm9jLCBTdWIsIE9yaWdpbigpLAorICAgICAgICAgICAgYXJnMCwgdHdvLT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAg
ICAgICAgICAgICB0d28tPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpKTsKKyAgICB0d28tPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgSnVtcCwgT3JpZ2luKCkpOworICAgIHR3by0+c2V0U3VjY2Vzc29ycyhGcmVxdWVudGVk
QmxvY2soZW5kKSk7CisKKyAgICBVcHNpbG9uVmFsdWUqIHVwc2lsb25UaHJlZSA9IHRocmVlLT5h
cHBlbmROZXc8VXBzaWxvblZhbHVlPigKKyAgICAgICAgcHJvYywgT3JpZ2luKCksCisgICAgICAg
IHRocmVlLT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTXVsLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIGFyZzAsIHRocmVlLT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICB0aHJlZS0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjEpKSkpOworICAgIHRocmVlLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEp1bXAsIE9yaWdp
bigpKTsKKyAgICB0aHJlZS0+c2V0U3VjY2Vzc29ycyhGcmVxdWVudGVkQmxvY2soZW5kKSk7CisK
KyAgICBWYWx1ZSogcGhpID0gZW5kLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFBoaSwgSW50MzIs
IE9yaWdpbigpKTsKKyAgICB1cHNpbG9uT25lLT5zZXRQaGkocGhpKTsKKyAgICB1cHNpbG9uVHdv
LT5zZXRQaGkocGhpKTsKKyAgICB1cHNpbG9uVGhyZWUtPnNldFBoaShwaGkpOworCisgICAgZW5k
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAg
ICAgICBlbmQtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBjaGlsbChNb2Qp
LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHBoaSwgZW5kLT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICBlbmQt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIyKSkpKTsKKworICAgIHByZXBhcmVGb3JHZW5lcmF0aW9uKHByb2MpOworCisgICAg
Q0NhbGxIZWxwZXJzIGppdDsKKyAgICBnZW5lcmF0ZShwcm9jLCBqaXQpOworICAgIExpbmtCdWZm
ZXIgbGlua0J1ZmZlcihqaXQsIG51bGxwdHIpOworICAgIENvZGVMb2NhdGlvbkxhYmVsPEIzQ29t
cGlsYXRpb25QdHJUYWc+IGxhYmVsT25lID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEIzQ29tcGls
YXRpb25QdHJUYWc+KHByb2MuZW50cnlwb2ludExhYmVsKDApKTsKKyAgICBDb2RlTG9jYXRpb25M
YWJlbDxCM0NvbXBpbGF0aW9uUHRyVGFnPiBsYWJlbFR3byA9IGxpbmtCdWZmZXIubG9jYXRpb25P
ZjxCM0NvbXBpbGF0aW9uUHRyVGFnPihwcm9jLmVudHJ5cG9pbnRMYWJlbCgxKSk7CisgICAgQ29k
ZUxvY2F0aW9uTGFiZWw8QjNDb21waWxhdGlvblB0clRhZz4gbGFiZWxUaHJlZSA9IGxpbmtCdWZm
ZXIubG9jYXRpb25PZjxCM0NvbXBpbGF0aW9uUHRyVGFnPihwcm9jLmVudHJ5cG9pbnRMYWJlbCgy
KSk7CisKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8QjNDb21waWxhdGlvblB0clRhZz4gY29k
ZVJlZiA9IEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgQjNDb21waWxhdGlvblB0clRhZywgInRl
c3RiMyBjb21waWxhdGlvbiIpOworCisgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxPbmUs
IDEsIDIsIDEwLCBmYWxzZSksIDMpOworICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KGxhYmVsVHdv
LCAxLCAyLCAxMCwgZmFsc2UpLCAtMSk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxU
aHJlZSwgMSwgMiwgMTAsIGZhbHNlKSwgMik7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFi
ZWxPbmUsIC0xLCAyLCAxMCwgZmFsc2UpLCAxKTsKKyAgICBDSEVDS19FUShpbnZva2U8aW50Pihs
YWJlbFR3bywgLTEsIDIsIDEwLCBmYWxzZSksIC0zKTsKKyAgICBDSEVDS19FUShpbnZva2U8aW50
PihsYWJlbFRocmVlLCAtMSwgMiwgMTAsIGZhbHNlKSwgLTIpOworICAgIENIRUNLX0VRKGludm9r
ZTxpbnQ+KGxhYmVsT25lLCAxLCAyLCAxMCwgdHJ1ZSksIDEpOworICAgIENIRUNLX0VRKGludm9r
ZTxpbnQ+KGxhYmVsVHdvLCAxLCAyLCAxMCwgdHJ1ZSksIC0zKTsKKyAgICBDSEVDS19FUShpbnZv
a2U8aW50PihsYWJlbFRocmVlLCAxLCAyLCAxMCwgdHJ1ZSksIC0yKTsKKyAgICBDSEVDS19FUShp
bnZva2U8aW50PihsYWJlbE9uZSwgLTEsIDIsIDEwLCB0cnVlKSwgMyk7CisgICAgQ0hFQ0tfRVEo
aW52b2tlPGludD4obGFiZWxUd28sIC0xLCAyLCAxMCwgdHJ1ZSksIC0xKTsKKyAgICBDSEVDS19F
UShpbnZva2U8aW50PihsYWJlbFRocmVlLCAtMSwgMiwgMTAsIHRydWUpLCAyKTsKKyAgICBDSEVD
S19FUShpbnZva2U8aW50PihsYWJlbE9uZSwgMSwgMiwgMiwgZmFsc2UpLCAxKTsKKyAgICBDSEVD
S19FUShpbnZva2U8aW50PihsYWJlbFR3bywgMSwgMiwgMiwgZmFsc2UpLCAtMSk7CisgICAgQ0hF
Q0tfRVEoaW52b2tlPGludD4obGFiZWxUaHJlZSwgMSwgMiwgMiwgZmFsc2UpLCAwKTsKKyAgICBD
SEVDS19FUShpbnZva2U8aW50PihsYWJlbE9uZSwgLTEsIDIsIDIsIGZhbHNlKSwgMSk7CisgICAg
Q0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUd28sIC0xLCAyLCAyLCBmYWxzZSksIC0xKTsKKyAg
ICBDSEVDS19FUShpbnZva2U8aW50PihsYWJlbFRocmVlLCAtMSwgMiwgMiwgZmFsc2UpLCAwKTsK
KyAgICBDSEVDS19FUShpbnZva2U8aW50PihsYWJlbE9uZSwgMSwgMiwgMCwgZmFsc2UpLCAwKTsK
KyAgICBDSEVDS19FUShpbnZva2U8aW50PihsYWJlbFR3bywgMSwgMiwgMCwgZmFsc2UpLCAwKTsK
KyAgICBDSEVDS19FUShpbnZva2U8aW50PihsYWJlbFRocmVlLCAxLCAyLCAwLCBmYWxzZSksIDAp
OworICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KGxhYmVsT25lLCAtMSwgMiwgMCwgZmFsc2UpLCAw
KTsKKyAgICBDSEVDS19FUShpbnZva2U8aW50PihsYWJlbFR3bywgLTEsIDIsIDAsIGZhbHNlKSwg
MCk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUaHJlZSwgLTEsIDIsIDAsIGZhbHNl
KSwgMCk7Cit9CisKK3ZvaWQgdGVzdEVudHJ5U3dpdGNoTG9vcCgpCit7CisgICAgLy8gVGhpcyBp
cyBhIGNvbXBsZXRlbHkgYWJzdXJkIHVzZSBvZiBFbnRyeVN3aXRjaCwgd2hlcmUgaXQgaW1wYWN0
cyB0aGUgbG9vcCBjb25kaXRpb24uIFRoaXMKKyAgICAvLyBzaG91bGQgY2F1c2UgZHVwbGljYXRp
b24gb2YgZWl0aGVyIG5lYXJseSB0aGUgZW50aXJlIFByb2NlZHVyZS4gQXQgdGltZSBvZiB3cml0
aW5nLCB3ZSBlbmRlZAorICAgIC8vIHVwIGR1cGxpY2F0aW5nIGFsbCBvZiBpdCwgd2hpY2ggaXMg
ZmluZS4gSXQncyBpbXBvcnRhbnQgdG8gdGVzdCB0aGlzIGNhc2UsIHRvIG1ha2Ugc3VyZSB0aGF0
CisgICAgLy8gdGhlIGR1cGxpY2F0aW9uIGFsZ29yaXRobSBjYW4gaGFuZGxlIGludGVyZXN0aW5n
IGNvbnRyb2wgZmxvdy4KKworICAgIFByb2NlZHVyZSBwcm9jOworICAgIHByb2Muc2V0TnVtRW50
cnlwb2ludHMoMik7CisKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIEJhc2ljQmxvY2sqIGxvb3BIZWFkZXIgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNC
bG9jayogbG9vcEZvb3RlciA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBlbmQg
PSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBVcHNpbG9uVmFsdWUqIGluaXRpYWxWYWx1ZSA9IHJv
b3QtPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KAorICAgICAgICBwcm9jLCBPcmlnaW4oKSwgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOworICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgSnVtcCwgT3JpZ2luKCkpOworICAgIHJvb3QtPnNldFN1Y2Nlc3NvcnMobG9vcEhl
YWRlcik7CisKKyAgICBWYWx1ZSogdmFsdWVJbkxvb3AgPSBsb29wSGVhZGVyLT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFBoaSwgSW50MzIsIE9yaWdpbigpKTsKKyAgICBpbml0aWFsVmFsdWUtPnNl
dFBoaSh2YWx1ZUluTG9vcCk7CisgICAgVmFsdWUqIG5ld1ZhbHVlID0gbG9vcEhlYWRlci0+YXBw
ZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwgdmFsdWVJbkxvb3As
CisgICAgICAgIGxvb3BIZWFkZXItPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCAxKSk7CisgICAgbG9vcEhlYWRlci0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBFbnRyeVN3
aXRjaCwgT3JpZ2luKCkpOworICAgIGxvb3BIZWFkZXItPmFwcGVuZFN1Y2Nlc3NvcihlbmQpOwor
ICAgIGxvb3BIZWFkZXItPmFwcGVuZFN1Y2Nlc3Nvcihsb29wRm9vdGVyKTsKKworICAgIGxvb3BG
b290ZXItPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KHByb2MsIE9yaWdpbigpLCBuZXdWYWx1ZSwg
dmFsdWVJbkxvb3ApOworICAgIGxvb3BGb290ZXItPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
IHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgIGxvb3BGb290ZXItPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBMZXNzVGhhbiwgT3JpZ2luKCksIG5ld1ZhbHVlLAor
ICAgICAgICAgICAgbG9vcEZvb3Rlci0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIDEwMCkpKTsKKyAgICBsb29wRm9vdGVyLT5zZXRTdWNjZXNzb3JzKGxvb3BIZWFkZXIs
IGVuZCk7CisKKyAgICBlbmQtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwgbmV3VmFsdWUpOworCisgICAgcHJlcGFyZUZvckdlbmVyYXRpb24ocHJvYyk7CisKKyAgICBD
Q2FsbEhlbHBlcnMgaml0OworICAgIGdlbmVyYXRlKHByb2MsIGppdCk7CisgICAgTGlua0J1ZmZl
ciBsaW5rQnVmZmVyKGppdCwgbnVsbHB0cik7CisgICAgQ29kZUxvY2F0aW9uTGFiZWw8QjNDb21w
aWxhdGlvblB0clRhZz4gbGFiZWxPbmUgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8QjNDb21waWxh
dGlvblB0clRhZz4ocHJvYy5lbnRyeXBvaW50TGFiZWwoMCkpOworICAgIENvZGVMb2NhdGlvbkxh
YmVsPEIzQ29tcGlsYXRpb25QdHJUYWc+IGxhYmVsVHdvID0gbGlua0J1ZmZlci5sb2NhdGlvbk9m
PEIzQ29tcGlsYXRpb25QdHJUYWc+KHByb2MuZW50cnlwb2ludExhYmVsKDEpKTsKKworICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxCM0NvbXBpbGF0aW9uUHRyVGFnPiBjb2RlUmVmID0gRklOQUxJ
WkVfQ09ERShsaW5rQnVmZmVyLCBCM0NvbXBpbGF0aW9uUHRyVGFnLCAidGVzdGIzIGNvbXBpbGF0
aW9uIik7CisKKyAgICBDSEVDSyhpbnZva2U8aW50PihsYWJlbE9uZSwgMCkgPT0gMSk7CisgICAg
Q0hFQ0soaW52b2tlPGludD4obGFiZWxPbmUsIDQyKSA9PSA0Myk7CisgICAgQ0hFQ0soaW52b2tl
PGludD4obGFiZWxPbmUsIDEwMDApID09IDEwMDEpOworCisgICAgQ0hFQ0soaW52b2tlPGludD4o
bGFiZWxUd28sIDApID09IDEwMCk7CisgICAgQ0hFQ0soaW52b2tlPGludD4obGFiZWxUd28sIDQy
KSA9PSAxMDApOworICAgIENIRUNLKGludm9rZTxpbnQ+KGxhYmVsVHdvLCAxMDAwKSA9PSAxMDAx
KTsKK30KKwordm9pZCB0ZXN0U29tZUVhcmx5UmVnaXN0ZXIoKQoreworICAgIGF1dG8gcnVuID0g
WyZdIChib29sIHN1Y2NlZWQpIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgCisgICAg
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgCisgICAgICAgIFBh
dGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFs
dWU+KHByb2MsIEludDMyLCBPcmlnaW4oKSk7CisgICAgICAgIHBhdGNocG9pbnQtPnJlc3VsdENv
bnN0cmFpbnQgPSBWYWx1ZVJlcDo6cmVnKEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAg
ICAgYm9vbCByYW5GaXJzdFBhdGNocG9pbnQgPSBmYWxzZTsKKyAgICAgICAgcGF0Y2hwb2ludC0+
c2V0R2VuZXJhdG9yKAorICAgICAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmLCBjb25zdCBTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIENIRUNLKHBh
cmFtc1swXS5ncHIoKSA9PSBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisgICAgICAgICAgICAg
ICAgcmFuRmlyc3RQYXRjaHBvaW50ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0pOworICAgIAorICAg
ICAgICBWYWx1ZSogYXJnID0gcGF0Y2hwb2ludDsKKyAgICAKKyAgICAgICAgcGF0Y2hwb2ludCA9
IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIEludDMyLCBPcmlnaW4oKSk7
CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihhcmcpOworICAgICAgICBp
ZiAoc3VjY2VlZCkKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPnJlc3VsdENvbnN0cmFpbnQgPSBW
YWx1ZVJlcDo6U29tZUVhcmx5UmVnaXN0ZXI7CisgICAgICAgIGJvb2wgcmFuU2Vjb25kUGF0Y2hw
b2ludCA9IGZhbHNlOworICAgICAgICB1bnNpZ25lZCBvcHRMZXZlbCA9IHByb2Mub3B0TGV2ZWwo
KTsKKyAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAorICAgICAgICAgICAgWyZdIChD
Q2FsbEhlbHBlcnMmLCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewor
ICAgICAgICAgICAgICAgIGlmIChzdWNjZWVkKQorICAgICAgICAgICAgICAgICAgICBDSEVDSyhw
YXJhbXNbMF0uZ3ByKCkgIT0gcGFyYW1zWzFdLmdwcigpKTsKKyAgICAgICAgICAgICAgICBlbHNl
IGlmIChvcHRMZXZlbCA+IDEpCisgICAgICAgICAgICAgICAgICAgIENIRUNLKHBhcmFtc1swXS5n
cHIoKSA9PSBwYXJhbXNbMV0uZ3ByKCkpOworICAgICAgICAgICAgICAgIHJhblNlY29uZFBhdGNo
cG9pbnQgPSB0cnVlOworICAgICAgICAgICAgfSk7CisgICAgCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcGF0Y2hwb2ludCk7CisgICAgCisg
ICAgICAgIGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBDSEVDSyhyYW5GaXJzdFBhdGNocG9p
bnQpOworICAgICAgICBDSEVDSyhyYW5TZWNvbmRQYXRjaHBvaW50KTsKKyAgICB9OworCisgICAg
cnVuKHRydWUpOworICAgIHJ1bihmYWxzZSk7Cit9CisKK3ZvaWQgdGVzdEJyYW5jaEJpdEFuZElt
bUZ1c2lvbigKKyAgICBCMzo6T3Bjb2RlIHZhbHVlTW9kaWZpZXIsIFR5cGUgdmFsdWVUeXBlLCBp
bnQ2NF90IGNvbnN0YW50LAorICAgIEFpcjo6T3Bjb2RlIGV4cGVjdGVkT3Bjb2RlLCBBaXI6OkFy
Zzo6S2luZCBmaXJzdEtpbmQpCit7CisgICAgLy8gQ3VycmVudGx5IHRoaXMgdGVzdCBzaG91bGQg
cGFzcyBvbiBhbGwgQ1BVcy4gQnV0IHNvbWUgQ1BVcyBtYXkgbm90IHN1cHBvcnQgdGhpcyBmdXNl
ZAorICAgIC8vIGluc3RydWN0aW9uLiBJdCdzIE9LIHRvIHNraXAgdGhpcyB0ZXN0IG9uIHRob3Nl
IENQVXMuCisKKyAgICBQcm9jZWR1cmUgcHJvYzsKKworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogb25lID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIEJhc2ljQmxvY2sqIHR3byA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBsZWZ0
ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOworCisgICAgaWYgKHZhbHVlTW9kaWZpZXIgIT0gSWRlbnRpdHkp
IHsKKyAgICAgICAgaWYgKE1lbW9yeVZhbHVlOjphY2NlcHRzKHZhbHVlTW9kaWZpZXIpKQorICAg
ICAgICAgICAgbGVmdCA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgdmFsdWVN
b2RpZmllciwgdmFsdWVUeXBlLCBPcmlnaW4oKSwgbGVmdCk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGxlZnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIHZhbHVlTW9kaWZpZXIs
IHZhbHVlVHlwZSwgT3JpZ2luKCksIGxlZnQpOworICAgIH0KKworICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBs
ZWZ0LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCks
IHZhbHVlVHlwZSwgY29uc3RhbnQpKSk7CisgICAgcm9vdC0+c2V0U3VjY2Vzc29ycyhGcmVxdWVu
dGVkQmxvY2sob25lKSwgRnJlcXVlbnRlZEJsb2NrKHR3bykpOworCisgICAgb25lLT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIE9vcHMsIE9yaWdpbigpKTsKKyAgICB0d28tPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgT29wcywgT3JpZ2luKCkpOworCisgICAgbG93ZXJUb0FpckZvclRlc3RpbmcocHJv
Yyk7CisKKyAgICAvLyBUaGUgZmlyc3QgYmFzaWMgYmxvY2sgbXVzdCBlbmQgaW4gYSBCcmFuY2hU
ZXN0NjQocmVzQ29uZCwgdG1wLCBiaXRJbW0pLgorICAgIEFpcjo6SW5zdCB0ZXJtaW5hbCA9IHBy
b2MuY29kZSgpWzBdLT5sYXN0KCk7CisgICAgQ0hFQ0tfRVEodGVybWluYWwua2luZC5vcGNvZGUs
IGV4cGVjdGVkT3Bjb2RlKTsKKyAgICBDSEVDS19FUSh0ZXJtaW5hbC5hcmdzWzBdLmtpbmQoKSwg
QWlyOjpBcmc6OlJlc0NvbmQpOworICAgIENIRUNLX0VRKHRlcm1pbmFsLmFyZ3NbMV0ua2luZCgp
LCBmaXJzdEtpbmQpOworICAgIENIRUNLKHRlcm1pbmFsLmFyZ3NbMl0ua2luZCgpID09IEFpcjo6
QXJnOjpCaXRJbW0gfHwgdGVybWluYWwuYXJnc1syXS5raW5kKCkgPT0gQWlyOjpBcmc6OkJpdElt
bTY0KTsKK30KKwordm9pZCB0ZXN0VGVybWluYWxQYXRjaHBvaW50VGhhdE5lZWRzVG9CZVNwaWxs
ZWQoKQoreworICAgIC8vIFRoaXMgaXMgYSB1bml0IHRlc3QgZm9yIGhvdyBGVEwncyBoZWFwIGFs
bG9jYXRpb24gZmFzdCBwYXRocyBiZWhhdmUuCisgICAgUHJvY2VkdXJlIHByb2M7CisKKyAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIHN1Y2Nl
c3MgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogc2xvd1BhdGggPSBwcm9jLmFk
ZEJsb2NrKCk7CisKKyAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBl
bmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBJbnQzMiwgT3JpZ2luKCkpOworICAgIHBhdGNo
cG9pbnQtPmVmZmVjdHMudGVybWluYWwgPSB0cnVlOworICAgIHBhdGNocG9pbnQtPmNsb2JiZXIo
UmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKworICAgIHJvb3QtPmFwcGVu
ZFN1Y2Nlc3NvcihzdWNjZXNzKTsKKyAgICByb290LT5hcHBlbmRTdWNjZXNzb3IoRnJlcXVlbnRl
ZEJsb2NrKHNsb3dQYXRoLCBGcmVxdWVuY3lDbGFzczo6UmFyZSkpOworCisgICAgcGF0Y2hwb2lu
dC0+c2V0R2VuZXJhdG9yKAorICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBT
dGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNy
b1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgaml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoNDIpLCBwYXJhbXNbMF0uZ3ByKCkpOwor
ICAgICAgICAKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBqdW1wVG9TdWNjZXNzOwor
ICAgICAgICAgICAgaWYgKCFwYXJhbXMuZmFsbHNUaHJvdWdoVG9TdWNjZXNzb3IoMCkpCisgICAg
ICAgICAgICAgICAganVtcFRvU3VjY2VzcyA9IGppdC5qdW1wKCk7CisgICAgICAgIAorICAgICAg
ICAgICAgVmVjdG9yPEJveDxDQ2FsbEhlbHBlcnM6OkxhYmVsPj4gbGFiZWxzID0gcGFyYW1zLnN1
Y2Nlc3NvckxhYmVscygpOworICAgICAgICAKKyAgICAgICAgICAgIHBhcmFtcy5hZGRMYXRlUGF0
aCgKKyAgICAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChqdW1wVG9TdWNjZXNzLmlzU2V0KCkpCisgICAgICAgICAgICAgICAgICAg
ICAgICBqdW1wVG9TdWNjZXNzLmxpbmtUbygqbGFiZWxzWzBdLCAmaml0KTsKKyAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICBWZWN0b3I8VmFsdWUqPiBhcmdzOworICAgIHsK
KyAgICAgICAgUmVnaXN0ZXJTZXQgZmlsbEFsbEdQUnNTZXQgPSBwcm9jLm11dGFibGVHUFJzKCk7
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmaWxsQWxsR1BSc1NldC5udW1iZXJP
ZlNldFJlZ2lzdGVycygpOyBpKyspCisgICAgICAgICAgICBhcmdzLmFwcGVuZChzdWNjZXNzLT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgaSkpOworICAgIH0KKworICAg
IHsKKyAgICAgICAgLy8gTm93IGZvcmNlIGFsbCB2YWx1ZXMgaW50byBldmVyeSBhdmFpbGFibGUg
cmVnaXN0ZXIuCisgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcCA9IHN1Y2Nlc3MtPmFwcGVuZE5l
dzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKKyAgICAgICAgZm9yIChW
YWx1ZSogdiA6IGFyZ3MpCisgICAgICAgICAgICBwLT5hcHBlbmQodiwgVmFsdWVSZXA6OlNvbWVS
ZWdpc3Rlcik7CisgICAgICAgIHAtPnNldEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVycyYsIGNv
bnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsgfSk7CisgICAgfQorCisgICAgeworICAg
ICAgICAvLyBOb3cgcmVxdWlyZSB0aGUgb3JpZ2luYWwgcGF0Y2hwb2ludCB0byBiZSBtYXRlcmlh
bGl6ZWQgaW50byBhIHJlZ2lzdGVyLgorICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHAgPSBzdWNj
ZXNzLT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7Cisg
ICAgICAgIHAtPmFwcGVuZChwYXRjaHBvaW50LCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKTsKKyAg
ICAgICAgcC0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3RhY2ttYXBH
ZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKKyAgICB9CisKKyAgICBzdWNjZXNzLT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHN1Y2Nlc3MtPmFwcGVuZE5ldzxDb25zdDMy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCAxMCkpOworCisgICAgc2xvd1BhdGgtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgc2xvd1BhdGgtPmFwcGVuZE5ldzxDb25zdDMy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCAyMCkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVBy
b2MocHJvYyk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKmNvZGUpLCAxMCk7Cit9CisKK3Zv
aWQgdGVzdFRlcm1pbmFsUGF0Y2hwb2ludFRoYXROZWVkc1RvQmVTcGlsbGVkMigpCit7CisgICAg
Ly8gVGhpcyBpcyBhIHVuaXQgdGVzdCBmb3IgaG93IEZUTCdzIGhlYXAgYWxsb2NhdGlvbiBmYXN0
IHBhdGhzIGJlaGF2ZS4KKyAgICBQcm9jZWR1cmUgcHJvYzsKKworICAgIC8vIEZJWE1FOiBBaXIg
TzAvTzEgYWxsb2NhdG9yIGNhbid0IGhhbmRsZSBzdWNoIHByb2dyYW1zLiBXZSByZWx5IG9uIFdh
c21BaXJJUkdlbmVyYXRvcgorICAgIC8vIHRvIG5vdCB1c2UgYW55IHN1Y2ggY29uc3RydWN0cyB3
aGVyZSB0aGUgcmVnaXN0ZXIgYWxsb2NhdG9yIGlzIGNvcm5lcmVkIGluIHN1Y2gKKyAgICAvLyBh
IHdheS4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0
NjMzCisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDIpCisgICAgICAgIHJldHVybjsKKworICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogb25l
ID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIHN1Y2Nlc3MgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgQmFzaWNCbG9jayogc2xvd1BhdGggPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAg
ICBWYWx1ZSogYXJnID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgVHJ1
bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworCisgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwgYXJnKTsKKyAg
ICByb290LT5hcHBlbmRTdWNjZXNzb3Iob25lKTsKKyAgICByb290LT5hcHBlbmRTdWNjZXNzb3Io
RnJlcXVlbnRlZEJsb2NrKHNsb3dQYXRoLCBGcmVxdWVuY3lDbGFzczo6UmFyZSkpOworCisgICAg
UGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gb25lLT5hcHBlbmROZXc8UGF0Y2hwb2ludFZh
bHVlPihwcm9jLCBJbnQzMiwgT3JpZ2luKCkpOworICAgIHBhdGNocG9pbnQtPmVmZmVjdHMudGVy
bWluYWwgPSB0cnVlOworICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3Jv
U2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICBwYXRjaHBvaW50LT5hcHBlbmQoYXJnLCBWYWx1ZVJl
cDo6U29tZVJlZ2lzdGVyKTsKKworICAgIG9uZS0+YXBwZW5kU3VjY2Vzc29yKHN1Y2Nlc3MpOwor
ICAgIG9uZS0+YXBwZW5kU3VjY2Vzc29yKEZyZXF1ZW50ZWRCbG9jayhzbG93UGF0aCwgRnJlcXVl
bmN5Q2xhc3M6OlJhcmUpKTsKKworICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKKyAgICAg
ICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1z
JiBwYXJhbXMpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBh
bGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKDY2NiksIHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgICAgICBhdXRvIGdvVG9G
YXN0UGF0aCA9IGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkVxdWFsLCBwYXJhbXNbMV0uZ3By
KCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDQyKSk7CisgICAgICAgICAgICBhdXRvIGp1
bXBUb1Nsb3cgPSBqaXQuanVtcCgpOworICAgICAgICAKKyAgICAgICAgICAgIC8vIE1ha2Ugc3Vy
ZSB0aGUgYXNzZXJ0cyBoZXJlIHBhc3MuCisgICAgICAgICAgICBwYXJhbXMuZmFsbHNUaHJvdWdo
VG9TdWNjZXNzb3IoMCk7CisgICAgICAgICAgICBwYXJhbXMuZmFsbHNUaHJvdWdoVG9TdWNjZXNz
b3IoMSk7CisKKyAgICAgICAgICAgIFZlY3RvcjxCb3g8Q0NhbGxIZWxwZXJzOjpMYWJlbD4+IGxh
YmVscyA9IHBhcmFtcy5zdWNjZXNzb3JMYWJlbHMoKTsKKyAgICAgICAgCisgICAgICAgICAgICBw
YXJhbXMuYWRkTGF0ZVBhdGgoCisgICAgICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGpp
dCkgeworICAgICAgICAgICAgICAgICAgICBnb1RvRmFzdFBhdGgubGlua1RvKCpsYWJlbHNbMF0s
ICZqaXQpOworICAgICAgICAgICAgICAgICAgICBqdW1wVG9TbG93LmxpbmtUbygqbGFiZWxzWzFd
LCAmaml0KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICBWZWN0b3I8
VmFsdWUqPiBhcmdzOworICAgIHsKKyAgICAgICAgUmVnaXN0ZXJTZXQgZmlsbEFsbEdQUnNTZXQg
PSBwcm9jLm11dGFibGVHUFJzKCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBm
aWxsQWxsR1BSc1NldC5udW1iZXJPZlNldFJlZ2lzdGVycygpOyBpKyspCisgICAgICAgICAgICBh
cmdzLmFwcGVuZChzdWNjZXNzLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgaSkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgLy8gTm93IGZvcmNlIGFsbCB2YWx1ZXMg
aW50byBldmVyeSBhdmFpbGFibGUgcmVnaXN0ZXIuCisgICAgICAgIFBhdGNocG9pbnRWYWx1ZSog
cCA9IHN1Y2Nlc3MtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdp
bigpKTsKKyAgICAgICAgZm9yIChWYWx1ZSogdiA6IGFyZ3MpCisgICAgICAgICAgICBwLT5hcHBl
bmQodiwgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7CisgICAgICAgIHAtPnNldEdlbmVyYXRvcihb
Jl0gKENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsgfSk7
CisgICAgfQorCisgICAgeworICAgICAgICAvLyBOb3cgcmVxdWlyZSB0aGUgb3JpZ2luYWwgcGF0
Y2hwb2ludCB0byBiZSBtYXRlcmlhbGl6ZWQgaW50byBhIHJlZ2lzdGVyLgorICAgICAgICBQYXRj
aHBvaW50VmFsdWUqIHAgPSBzdWNjZXNzLT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9j
LCBWb2lkLCBPcmlnaW4oKSk7CisgICAgICAgIHAtPmFwcGVuZChwYXRjaHBvaW50LCBWYWx1ZVJl
cDo6U29tZVJlZ2lzdGVyKTsKKyAgICAgICAgcC0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxw
ZXJzJiwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKKyAgICB9CisKKyAg
ICBzdWNjZXNzLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHBhdGNo
cG9pbnQpOworCisgICAgc2xvd1BhdGgtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgYXJnKTsKKworICAgIGF1dG8gb3JpZ2luYWwxID0gT3B0aW9uczo6bWF4QjNUYWls
RHVwQmxvY2tTaXplKCk7CisgICAgYXV0byBvcmlnaW5hbDIgPSBPcHRpb25zOjptYXhCM1RhaWxE
dXBCbG9ja1N1Y2Nlc3NvcnMoKTsKKworICAgIC8vIFRhaWwgZHVwbGljYXRpb24gd2lsbCBicmVh
ayB0aGUgY3JpdGljYWwgZWRnZSB3ZSdyZSB0cnlpbmcgdG8gdGVzdCBiZWNhdXNlIGl0CisgICAg
Ly8gd2lsbCBjbG9uZSB0aGUgc2xvd1BhdGggYmxvY2sgZm9yIGJvdGggZWRnZXMgdG8gaXQhCisg
ICAgT3B0aW9uczo6bWF4QjNUYWlsRHVwQmxvY2tTaXplKCkgPSAwOworICAgIE9wdGlvbnM6Om1h
eEIzVGFpbER1cEJsb2NrU3VjY2Vzc29ycygpID0gMDsKKworICAgIGF1dG8gY29kZSA9IGNvbXBp
bGVQcm9jKHByb2MpOworICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpjb2RlLCAxKSwgMSk7Cisg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKmNvZGUsIDApLCAwKTsKKyAgICBDSEVDS19FUShpbnZv
a2U8aW50PigqY29kZSwgNDIpLCA2NjYpOworCisgICAgT3B0aW9uczo6bWF4QjNUYWlsRHVwQmxv
Y2tTaXplKCkgPSBvcmlnaW5hbDE7CisgICAgT3B0aW9uczo6bWF4QjNUYWlsRHVwQmxvY2tTdWNj
ZXNzb3JzKCkgPSBvcmlnaW5hbDI7Cit9CisKK3ZvaWQgdGVzdFBhdGNocG9pbnRUZXJtaW5hbFJl
dHVyblZhbHVlKGJvb2wgc3VjY2Vzc0lzUmFyZSkKK3sKKyAgICAvLyBUaGlzIGlzIGEgdW5pdCB0
ZXN0IGZvciBob3cgRlRMJ3MgaGVhcCBhbGxvY2F0aW9uIGZhc3QgcGF0aHMgYmVoYXZlLgorICAg
IFByb2NlZHVyZSBwcm9jOworCisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICBCYXNpY0Jsb2NrKiBzdWNjZXNzID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2lj
QmxvY2sqIHNsb3dQYXRoID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIGNvbnRp
bnVhdGlvbiA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBhcmcgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKSk7CisKKyAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290
LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBJbnQzMiwgT3JpZ2luKCkpOworICAg
IHBhdGNocG9pbnQtPmVmZmVjdHMudGVybWluYWwgPSB0cnVlOworICAgIHBhdGNocG9pbnQtPmNs
b2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKworICAgIGlmIChz
dWNjZXNzSXNSYXJlKSB7CisgICAgICAgIHJvb3QtPmFwcGVuZFN1Y2Nlc3NvcihGcmVxdWVudGVk
QmxvY2soc3VjY2VzcywgRnJlcXVlbmN5Q2xhc3M6OlJhcmUpKTsKKyAgICAgICAgcm9vdC0+YXBw
ZW5kU3VjY2Vzc29yKHNsb3dQYXRoKTsKKyAgICB9IGVsc2UgeworICAgICAgICByb290LT5hcHBl
bmRTdWNjZXNzb3Ioc3VjY2Vzcyk7CisgICAgICAgIHJvb3QtPmFwcGVuZFN1Y2Nlc3NvcihGcmVx
dWVudGVkQmxvY2soc2xvd1BhdGgsIEZyZXF1ZW5jeUNsYXNzOjpSYXJlKSk7CisgICAgfQorCisg
ICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGFyZyk7CisKKyAgICBwYXRjaHBvaW50
LT5zZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0
YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBBbGxvd01hY3Jv
U2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAgICAgIAorICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGp1bXBUb1Nsb3cgPQorICAgICAgICAgICAgICAgIGpp
dC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkFib3ZlLCBwYXJhbXNbMV0uZ3ByKCksIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKDQyKSk7CisgICAgICAgIAorICAgICAgICAgICAgaml0LmFkZDMy
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDMxKSwgcGFyYW1zWzFdLmdwcigpLCBwYXJhbXNb
MF0uZ3ByKCkpOworICAgICAgICAKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBqdW1w
VG9TdWNjZXNzOworICAgICAgICAgICAgaWYgKCFwYXJhbXMuZmFsbHNUaHJvdWdoVG9TdWNjZXNz
b3IoMCkpCisgICAgICAgICAgICAgICAganVtcFRvU3VjY2VzcyA9IGppdC5qdW1wKCk7CisgICAg
ICAgIAorICAgICAgICAgICAgVmVjdG9yPEJveDxDQ2FsbEhlbHBlcnM6OkxhYmVsPj4gbGFiZWxz
ID0gcGFyYW1zLnN1Y2Nlc3NvckxhYmVscygpOworICAgICAgICAKKyAgICAgICAgICAgIHBhcmFt
cy5hZGRMYXRlUGF0aCgKKyAgICAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0KSB7
CisgICAgICAgICAgICAgICAgICAgIGp1bXBUb1Nsb3cubGlua1RvKCpsYWJlbHNbMV0sICZqaXQp
OworICAgICAgICAgICAgICAgICAgICBpZiAoanVtcFRvU3VjY2Vzcy5pc1NldCgpKQorICAgICAg
ICAgICAgICAgICAgICAgICAganVtcFRvU3VjY2Vzcy5saW5rVG8oKmxhYmVsc1swXSwgJmppdCk7
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgVXBzaWxvblZhbHVlKiBz
dWNjZXNzVXBzaWxvbiA9IHN1Y2Nlc3MtPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBwYXRjaHBvaW50KTsKKyAgICBzdWNjZXNzLT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEp1bXAsIE9yaWdpbigpKTsKKyAgICBzdWNjZXNzLT5zZXRTdWNjZXNzb3JzKGNvbnRpbnVhdGlv
bik7CisKKyAgICBVcHNpbG9uVmFsdWUqIHNsb3dQYXRoVXBzaWxvbiA9IHNsb3dQYXRoLT5hcHBl
bmROZXc8VXBzaWxvblZhbHVlPigKKyAgICAgICAgcHJvYywgT3JpZ2luKCksIHNsb3dQYXRoLT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNjY2KSk7CisgICAgc2xvd1Bh
dGgtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSnVtcCwgT3JpZ2luKCkpOworICAgIHNsb3dQYXRo
LT5zZXRTdWNjZXNzb3JzKGNvbnRpbnVhdGlvbik7CisKKyAgICBWYWx1ZSogcGhpID0gY29udGlu
dWF0aW9uLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFBoaSwgSW50MzIsIE9yaWdpbigpKTsKKyAg
ICBzdWNjZXNzVXBzaWxvbi0+c2V0UGhpKHBoaSk7CisgICAgc2xvd1BhdGhVcHNpbG9uLT5zZXRQ
aGkocGhpKTsKKyAgICBjb250aW51YXRpb24tPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwgcGhpKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwor
ICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpjb2RlLCAwKSwgMzEpOworICAgIENIRUNLX0VRKGlu
dm9rZTxpbnQ+KCpjb2RlLCAxKSwgMzIpOworICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpjb2Rl
LCA0MSksIDcyKTsKKyAgICBDSEVDS19FUShpbnZva2U8aW50PigqY29kZSwgNDIpLCA3Myk7Cisg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKmNvZGUsIDQzKSwgNjY2KTsKKyAgICBDSEVDS19FUShp
bnZva2U8aW50PigqY29kZSwgLTEpLCA2NjYpOworfQorCit2b2lkIHRlc3RNZW1vcnlGZW5jZSgp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOworCisgICAgcm9vdC0+YXBwZW5kTmV3PEZlbmNlVmFsdWU+KHByb2MsIE9yaWdp
bigpKTsKKyAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCks
IHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCBJbnQzMiwgNDIpKTsKKwor
ICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIENIRUNLX0VRKGludm9rZTxp
bnQ+KCpjb2RlKSwgNDIpOworICAgIGlmIChpc1g4NigpKQorICAgICAgICBjaGVja1VzZXNJbnN0
cnVjdGlvbigqY29kZSwgImxvY2sgb3IgJDB4MCwgKCVyc3ApIik7CisgICAgaWYgKGlzQVJNNjQo
KSkKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJkbWIgICAgIGlzaCIpOwor
ICAgIGNoZWNrRG9lc05vdFVzZUluc3RydWN0aW9uKCpjb2RlLCAibWZlbmNlIik7CisgICAgY2hl
Y2tEb2VzTm90VXNlSW5zdHJ1Y3Rpb24oKmNvZGUsICJkbWIgICAgIGlzaHN0Iik7Cit9CisKK3Zv
aWQgdGVzdFN0b3JlRmVuY2UoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworCisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIHJvb3QtPmFwcGVuZE5ldzxGZW5j
ZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgSGVhcFJhbmdlOjp0b3AoKSwgSGVhcFJhbmdlKCkpOwor
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+
YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIEludDMyLCA0MikpOworCisgICAgYXV0
byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKmNv
ZGUpLCA0Mik7CisgICAgY2hlY2tEb2VzTm90VXNlSW5zdHJ1Y3Rpb24oKmNvZGUsICJsb2NrIik7
CisgICAgY2hlY2tEb2VzTm90VXNlSW5zdHJ1Y3Rpb24oKmNvZGUsICJtZmVuY2UiKTsKKyAgICBp
ZiAoaXNBUk02NCgpKQorICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImRtYiAg
ICAgaXNoc3QiKTsKK30KKwordm9pZCB0ZXN0TG9hZEZlbmNlKCkKK3sKKyAgICBQcm9jZWR1cmUg
cHJvYzsKKworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBy
b290LT5hcHBlbmROZXc8RmVuY2VWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEhlYXBSYW5nZSgpLCBI
ZWFwUmFuZ2U6OnRvcCgpKTsKKyAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVy
biwgT3JpZ2luKCksIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCBJbnQz
MiwgNDIpKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIENIRUNL
X0VRKGludm9rZTxpbnQ+KCpjb2RlKSwgNDIpOworICAgIGNoZWNrRG9lc05vdFVzZUluc3RydWN0
aW9uKCpjb2RlLCAibG9jayIpOworICAgIGNoZWNrRG9lc05vdFVzZUluc3RydWN0aW9uKCpjb2Rl
LCAibWZlbmNlIik7CisgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1
Y3Rpb24oKmNvZGUsICJkbWIgICAgIGlzaCIpOworICAgIGNoZWNrRG9lc05vdFVzZUluc3RydWN0
aW9uKCpjb2RlLCAiZG1iICAgICBpc2hzdCIpOworfQorCit2b2lkIHRlc3RUcmFwcGluZ0xvYWQo
KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgaW50IHggPSA0MjsKKyAgICBNZW1vcnlWYWx1ZSogdmFsdWUgPSByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICBwcm9jLCB0cmFwcGluZyhMb2FkKSwg
SW50MzIsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksICZ4KSk7CisgICAgRWZmZWN0cyBleHBlY3RlZEVmZmVjdHM7CisgICAg
ZXhwZWN0ZWRFZmZlY3RzLmV4aXRzU2lkZXdheXMgPSB0cnVlOworICAgIGV4cGVjdGVkRWZmZWN0
cy5jb250cm9sRGVwZW5kZW50PSB0cnVlOworICAgIGV4cGVjdGVkRWZmZWN0cy5yZWFkcyA9IEhl
YXBSYW5nZTo6dG9wKCk7CisgICAgQ0hFQ0tfRVEodmFsdWUtPnJhbmdlKCksIEhlYXBSYW5nZTo6
dG9wKCkpOworICAgIENIRUNLX0VRKHZhbHVlLT5lZmZlY3RzKCksIGV4cGVjdGVkRWZmZWN0cyk7
CisgICAgdmFsdWUtPnNldFJhbmdlKEhlYXBSYW5nZSgwKSk7CisgICAgQ0hFQ0tfRVEodmFsdWUt
PnJhbmdlKCksIEhlYXBSYW5nZSgwKSk7CisgICAgQ0hFQ0tfRVEodmFsdWUtPmVmZmVjdHMoKSwg
ZXhwZWN0ZWRFZmZlY3RzKTsgLy8gV2Ugc3RpbGwgcmVhZHMgdG9wIQorICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgdmFsdWUpOworICAgIENIRUNLX0VR
KGNvbXBpbGVBbmRSdW48aW50Pihwcm9jKSwgNDIpOworICAgIHVuc2lnbmVkIHRyYXBzQ291bnQg
PSAwOworICAgIGZvciAoQWlyOjpCYXNpY0Jsb2NrKiBibG9jayA6IHByb2MuY29kZSgpKSB7Cisg
ICAgICAgIGZvciAoQWlyOjpJbnN0JiBpbnN0IDogKmJsb2NrKSB7CisgICAgICAgICAgICBpZiAo
aW5zdC5raW5kLmVmZmVjdHMpCisgICAgICAgICAgICAgICAgdHJhcHNDb3VudCsrOworICAgICAg
ICB9CisgICAgfQorICAgIENIRUNLX0VRKHRyYXBzQ291bnQsIDF1KTsKK30KKwordm9pZCB0ZXN0
VHJhcHBpbmdTdG9yZSgpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBpbnQgeCA9IDQyOworICAgIE1lbW9yeVZhbHVl
KiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIHRy
YXBwaW5nKFN0b3JlKSwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCAxMTEpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29u
c3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZ4KSwgMCk7CisgICAgRWZmZWN0cyBleHBlY3Rl
ZEVmZmVjdHM7CisgICAgZXhwZWN0ZWRFZmZlY3RzLmV4aXRzU2lkZXdheXMgPSB0cnVlOworICAg
IGV4cGVjdGVkRWZmZWN0cy5jb250cm9sRGVwZW5kZW50PSB0cnVlOworICAgIGV4cGVjdGVkRWZm
ZWN0cy5yZWFkcyA9IEhlYXBSYW5nZTo6dG9wKCk7CisgICAgZXhwZWN0ZWRFZmZlY3RzLndyaXRl
cyA9IEhlYXBSYW5nZTo6dG9wKCk7CisgICAgQ0hFQ0tfRVEodmFsdWUtPnJhbmdlKCksIEhlYXBS
YW5nZTo6dG9wKCkpOworICAgIENIRUNLX0VRKHZhbHVlLT5lZmZlY3RzKCksIGV4cGVjdGVkRWZm
ZWN0cyk7CisgICAgdmFsdWUtPnNldFJhbmdlKEhlYXBSYW5nZSgwKSk7CisgICAgQ0hFQ0tfRVEo
dmFsdWUtPnJhbmdlKCksIEhlYXBSYW5nZSgwKSk7CisgICAgZXhwZWN0ZWRFZmZlY3RzLndyaXRl
cyA9IEhlYXBSYW5nZSgwKTsKKyAgICBDSEVDS19FUSh2YWx1ZS0+ZWZmZWN0cygpLCBleHBlY3Rl
ZEVmZmVjdHMpOyAvLyBXZSBzdGlsbCByZWFkcyB0b3AhCisgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICBjb21waWxlQW5kUnVuPGludD4ocHJv
Yyk7CisgICAgQ0hFQ0tfRVEoeCwgMTExKTsKKyAgICB1bnNpZ25lZCB0cmFwc0NvdW50ID0gMDsK
KyAgICBmb3IgKEFpcjo6QmFzaWNCbG9jayogYmxvY2sgOiBwcm9jLmNvZGUoKSkgeworICAgICAg
ICBmb3IgKEFpcjo6SW5zdCYgaW5zdCA6ICpibG9jaykgeworICAgICAgICAgICAgaWYgKGluc3Qu
a2luZC5lZmZlY3RzKQorICAgICAgICAgICAgICAgIHRyYXBzQ291bnQrKzsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBDSEVDS19FUSh0cmFwc0NvdW50LCAxdSk7Cit9CisKK3ZvaWQgdGVzdFRyYXBw
aW5nTG9hZEFkZFN0b3JlKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIGludCB4ID0gNDI7CisgICAgQ29uc3RQdHJW
YWx1ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCAmeCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywg
dHJhcHBpbmcoU3RvcmUpLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIHRyYXBwaW5nKExvYWQpLCBJbnQzMiwgT3JpZ2lu
KCksIHB0ciksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgMykpLAorICAgICAgICBwdHIsIDApOworICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAgY29tcGlsZUFuZFJ1bjxpbnQ+KHBy
b2MpOworICAgIENIRUNLX0VRKHgsIDQ1KTsKKyAgICBib29sIHRyYXBzID0gZmFsc2U7CisgICAg
Zm9yIChBaXI6OkJhc2ljQmxvY2sqIGJsb2NrIDogcHJvYy5jb2RlKCkpIHsKKyAgICAgICAgZm9y
IChBaXI6Okluc3QmIGluc3QgOiAqYmxvY2spIHsKKyAgICAgICAgICAgIGlmIChpbnN0LmtpbmQu
ZWZmZWN0cykKKyAgICAgICAgICAgICAgICB0cmFwcyA9IHRydWU7CisgICAgICAgIH0KKyAgICB9
CisgICAgQ0hFQ0sodHJhcHMpOworfQorCit2b2lkIHRlc3RUcmFwcGluZ0xvYWREQ0UoKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgaW50IHggPSA0MjsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAor
ICAgICAgICBwcm9jLCB0cmFwcGluZyhMb2FkKSwgSW50MzIsIE9yaWdpbigpLAorICAgICAgICBy
b290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZ4KSk7CisgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICBjb21w
aWxlQW5kUnVuPGludD4ocHJvYyk7CisgICAgdW5zaWduZWQgdHJhcHNDb3VudCA9IDA7CisgICAg
Zm9yIChBaXI6OkJhc2ljQmxvY2sqIGJsb2NrIDogcHJvYy5jb2RlKCkpIHsKKyAgICAgICAgZm9y
IChBaXI6Okluc3QmIGluc3QgOiAqYmxvY2spIHsKKyAgICAgICAgICAgIGlmIChpbnN0LmtpbmQu
ZWZmZWN0cykKKyAgICAgICAgICAgICAgICB0cmFwc0NvdW50Kys7CisgICAgICAgIH0KKyAgICB9
CisgICAgQ0hFQ0tfRVEodHJhcHNDb3VudCwgMXUpOworfQorCit2b2lkIHRlc3RUcmFwcGluZ1N0
b3JlRWxpbWluYXRpb24oKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgaW50IHggPSA0MjsKKyAgICBWYWx1ZSogcHRy
ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmeCk7Cisg
ICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywgdHJhcHBpbmco
U3RvcmUpLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIDQzKSwKKyAgICAgICAgcHRyKTsKKyAgICByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KAorICAgICAgICBwcm9jLCB0cmFwcGluZyhTdG9yZSksIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDQp
LAorICAgICAgICBwdHIpOworICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJu
LCBPcmlnaW4oKSk7CisgICAgY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpOworICAgIHVuc2lnbmVk
IHN0b3JlQ291bnQgPSAwOworICAgIGZvciAoVmFsdWUqIHZhbHVlIDogcHJvYy52YWx1ZXMoKSkg
eworICAgICAgICBpZiAoaXNTdG9yZSh2YWx1ZS0+b3Bjb2RlKCkpKQorICAgICAgICAgICAgc3Rv
cmVDb3VudCsrOworICAgIH0KKyAgICBDSEVDS19FUShzdG9yZUNvdW50LCAydSk7Cit9CisKK3Zv
aWQgdGVzdE1vdmVDb25zdGFudHMoKQoreworICAgIGF1dG8gY2hlY2sgPSBbXSAoUHJvY2VkdXJl
JiBwcm9jKSB7CisgICAgICAgIHByb2MucmVzZXRSZWFjaGFiaWxpdHkoKTsKKyAgICAKKyAgICAg
ICAgaWYgKHNob3VsZEJlVmVyYm9zZSgpKSB7CisgICAgICAgICAgICBkYXRhTG9nKCJJUiBiZWZv
cmU6XG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2cocHJvYyk7CisgICAgICAgIH0KKyAgICAKKyAg
ICAgICAgbW92ZUNvbnN0YW50cyhwcm9jKTsKKyAgICAKKyAgICAgICAgaWYgKHNob3VsZEJlVmVy
Ym9zZSgpKSB7CisgICAgICAgICAgICBkYXRhTG9nKCJJUiBhZnRlcjpcbiIpOworICAgICAgICAg
ICAgZGF0YUxvZyhwcm9jKTsKKyAgICAgICAgfQorICAgIAorICAgICAgICBVc2VDb3VudHMgdXNl
Q291bnRzKHByb2MpOworICAgICAgICB1bnNpZ25lZCBjb3VudCA9IDA7CisgICAgICAgIGZvciAo
VmFsdWUqIHZhbHVlIDogcHJvYy52YWx1ZXMoKSkgeworICAgICAgICAgICAgaWYgKHVzZUNvdW50
cy5udW1Vc2VzKHZhbHVlKSAmJiB2YWx1ZS0+aGFzSW50NjQoKSkKKyAgICAgICAgICAgICAgICBj
b3VudCsrOworICAgICAgICB9CisgICAgCisgICAgICAgIGlmIChjb3VudCA9PSAxKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgIAorICAgICAgICBjcmFzaExvY2subG9jaygpOworICAgICAgICBk
YXRhTG9nKCJGYWlsIGluIHRlc3RNb3ZlQ29uc3RhbnRzOiBnb3QgbW9yZSB0aGFuIG9uZSBDb25z
dDY0OlxuIik7CisgICAgICAgIGRhdGFMb2cocHJvYyk7CisgICAgICAgIENSQVNIKCk7CisgICAg
fTsKKworICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIFZhbHVlKiBhID0gcm9vdC0+YXBwZW5k
TmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIExvYWQsIHBvaW50ZXJUeXBlKCks
IE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgMHgxMjM0MTIzNDEyMzQpKTsKKyAgICAgICAgVmFsdWUqIGIgPSByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTG9hZCwgcG9pbnRl
clR5cGUoKSwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIDB4MTIzNDEyMzQxMzM0KSk7CisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxDQ2FsbFZhbHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSwgYSwgYik7CisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAgICAg
IGNoZWNrKHByb2MpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIFZhbHVl
KiB4ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSogYSA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLCB4LCByb290LT5hcHBl
bmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDB4MTIzNDEyMzQxMjM0KSk7Cisg
ICAgICAgIFZhbHVlKiBiID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIEFkZCwgT3JpZ2luKCksIHgsIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgLTB4MTIzNDEyMzQxMjM0KSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxD
Q2FsbFZhbHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSwgYSwgYik7CisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAgICAgIGNoZWNrKHBy
b2MpOworICAgIH0KK30KKwordm9pZCB0ZXN0UENPcmlnaW5NYXBEb2VzbnRJbnNlcnROb3BzKCkK
K3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworCisgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCB3YXRjaHBvaW50TGFiZWw7CisKKyAg
ICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2lu
dFZhbHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7CisgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJh
dG9yKAorICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMmKSB7CisgICAgICAgICAgICB3YXRjaHBvaW50TGFiZWwgPSBqaXQud2F0Y2hw
b2ludExhYmVsKCk7CisgICAgICAgIH0pOworCisgICAgcGF0Y2hwb2ludCA9IHJvb3QtPmFwcGVu
ZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKKyAgICBwYXRjaHBv
aW50LT5zZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0
IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6
TGFiZWwgbGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzID0gaml0LmxhYmVsSWdub3JpbmdXYXRjaHBv
aW50cygpOworCisgICAgICAgICAgICBDSEVDSyh3YXRjaHBvaW50TGFiZWwgPT0gbGFiZWxJZ25v
cmluZ1dhdGNocG9pbnRzKTsKKyAgICAgICAgfSk7CisKKyAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworCisgICAgY29tcGlsZVByb2MocHJvYyk7Cit9
CisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL3Rlc3RiM183LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNf
Ny5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uN2RlY2UwZDY5NTNlYTgzZGZlOWY3MWVlNWI3YzY0NDJmN2FmYWY3
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfNy5j
cHAKQEAgLTAsMCArMSwxNTUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAidGVzdGIzLmgi
CisKKyNpZiBFTkFCTEUoQjNfSklUKQorCit2b2lkIHRlc3RQaW5SZWdpc3RlcnMoKQoreworICAg
IGF1dG8gZ28gPSBbJl0gKGJvb2wgcGluKSB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAg
ICAgICBSZWdpc3RlclNldCBjc3JzOworICAgICAgICBjc3JzLm1lcmdlKFJlZ2lzdGVyU2V0Ojpj
YWxsZWVTYXZlUmVnaXN0ZXJzKCkpOworICAgICAgICBjc3JzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6
OnN0YWNrUmVnaXN0ZXJzKCkpOworICAgICAgICBpZiAocGluKSB7CisgICAgICAgICAgICBjc3Jz
LmZvckVhY2goCisgICAgICAgICAgICAgICAgWyZdIChSZWcgcmVnKSB7CisgICAgICAgICAgICAg
ICAgICAgIHByb2MucGluUmVnaXN0ZXIocmVnKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfQorICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAg
ICBWYWx1ZSogYSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIGIgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSk7CisgICAgICAgIFZhbHVlKiBjID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgICAgICBW
YWx1ZSogZCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6cmVnQ1MwKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+
KAorICAgICAgICAgICAgcHJvYywgVm9pZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHN0YXRpY19jYXN0PGludHB0
cl90PigweDEyMzQpKSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIFZvaWQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4o
MHgxMjM1KSksCisgICAgICAgICAgICBhLCBiLCBjKTsKKyAgICAgICAgUGF0Y2hwb2ludFZhbHVl
KiBwYXRjaHBvaW50ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgVm9p
ZCwgT3JpZ2luKCkpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoZCk7
CisgICAgICAgIHVuc2lnbmVkIG9wdExldmVsID0gcHJvYy5vcHRMZXZlbCgpOworICAgICAgICBw
YXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCisgICAgICAgICAgICBbJl0gKENDYWxsSGVscGVycyYs
IGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAg
ICAgaWYgKG9wdExldmVsID4gMSkKKyAgICAgICAgICAgICAgICAgICAgQ0hFQ0tfRVEocGFyYW1z
WzBdLmdwcigpLCBHUFJJbmZvOjpyZWdDUzApOworICAgICAgICAgICAgfSk7CisgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAgICAgIGF1
dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBib29sIHVzZXNDU1JzID0gZmFs
c2U7CisgICAgICAgIGZvciAoQWlyOjpCYXNpY0Jsb2NrKiBibG9jayA6IHByb2MuY29kZSgpKSB7
CisgICAgICAgICAgICBmb3IgKEFpcjo6SW5zdCYgaW5zdCA6ICpibG9jaykgeworICAgICAgICAg
ICAgICAgIGlmIChpbnN0LmtpbmQub3Bjb2RlID09IEFpcjo6UGF0Y2ggJiYgaW5zdC5vcmlnaW4g
PT0gcGF0Y2hwb2ludCkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICAgICAgaW5zdC5mb3JFYWNoVG1wRmFzdCgKKyAgICAgICAgICAgICAgICAgICAgWyZdIChBaXI6
OlRtcCB0bXApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAuaXNSZWcoKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VzQ1NScyB8PSBjc3JzLmdldCh0bXAucmVnKCkp
OworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBpZiAocHJvYy5vcHRMZXZlbCgpIDwgMikgeworICAgICAgICAgICAgLy8gT3VyIGxlc3Mg
Z29vZCByZWdpc3RlciBhbGxvY2F0b3JzIG1heSB1c2UgdGhlCisgICAgICAgICAgICAvLyBwaW5u
ZWQgQ1NScyBpbiBhIG1vdmUuCisgICAgICAgICAgICB1c2VzQ1NScyA9IGZhbHNlOworICAgICAg
ICB9CisgICAgICAgIGZvciAoY29uc3QgUmVnaXN0ZXJBdE9mZnNldCYgcmVnQXRPZmZzZXQgOiBw
cm9jLmNhbGxlZVNhdmVSZWdpc3RlckF0T2Zmc2V0TGlzdCgpKQorICAgICAgICAgICAgdXNlc0NT
UnMgfD0gY3Nycy5nZXQocmVnQXRPZmZzZXQucmVnKCkpOworICAgICAgICBDSEVDS19FUSh1c2Vz
Q1NScywgIXBpbik7CisgICAgfTsKKworICAgIGdvKHRydWUpOworICAgIGdvKGZhbHNlKTsKK30K
Kwordm9pZCB0ZXN0WDg2TGVhQWRkQWRkU2hsTGVmdCgpCit7CisgICAgLy8gQWRkKEFkZChTaGwo
QHgsICRjKSwgQHkpLCAkZCkKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgU2hs
LCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSksCisgICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDIpKSwK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxD
b25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMTAwKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOworCisgICAgYXV0byBjb2Rl
ID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA+IDEpCisgICAg
ICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibGVhIDB4NjQoJXJkaSwlcnNpLDQpLCAl
cmF4Iik7CisgICAgZWxzZQorICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxl
YSIpOworICAgIENIRUNLX0VRKGludm9rZTxpbnRwdHJfdD4oKmNvZGUsIDEsIDIpLCAoMSArICgy
IDw8IDIpKSArIDEwMCk7Cit9CisKK3ZvaWQgdGVzdFg4NkxlYUFkZEFkZFNobFJpZ2h0KCkKK3sK
KyAgICAvLyBBZGQoQWRkKEB4LCBTaGwoQHksICRjKSksICRkKQorICAgIFByb2NlZHVyZSBwcm9j
OworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIHJl
c3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIEFkZCwgT3JpZ2lu
KCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBB
ZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdp
bigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSwKKyAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMikpKSwKKyAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxMDApKTsK
KyAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3Vs
dCk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICBpZiAocHJvYy5v
cHRMZXZlbCgpID4gMSkKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJsZWEg
MHg2NCglcmRpLCVyc2ksNCksICVyYXgiKTsKKyAgICBlbHNlCisgICAgICAgIGNoZWNrVXNlc0lu
c3RydWN0aW9uKCpjb2RlLCAibGVhIik7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludHB0cl90Pigq
Y29kZSwgMSwgMiksICgxICsgKDIgPDwgMikpICsgMTAwKTsKK30KKwordm9pZCB0ZXN0WDg2TGVh
QWRkQWRkKCkKK3sKKyAgICAvLyBBZGQoQWRkKEB4LCBAeSksICRjKQorICAgIFByb2NlZHVyZSBw
cm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUq
IHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIEFkZCwgT3Jp
Z2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9j
LCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpLAorICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCAxMDApKTsKKyAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxl
UHJvYyhwcm9jKTsKKyAgICBDSEVDS19FUShpbnZva2U8aW50cHRyX3Q+KCpjb2RlLCAxLCAyKSwg
KDEgKyAyKSArIDEwMCk7CisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA+IDEpIHsKKyAgICAgICAg
Y2hlY2tEaXNhc3NlbWJseSgKKyAgICAgICAgICAgICpjb2RlLAorICAgICAgICAgICAgWyZdIChj
b25zdCBjaGFyKiBkaXNhc3NlbWJseSkgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHN0cnN0cihkaXNhc3NlbWJseSwgImxlYSAweDY0KCVyZGksJXJzaSksICVyYXgiKQorICAgICAg
ICAgICAgICAgICAgICB8fCBzdHJzdHIoZGlzYXNzZW1ibHksICJsZWEgMHg2NCglcnNpLCVyZGkp
LCAlcmF4Iik7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgIkV4cGVjdGVkIHRvIGZpbmQg
c29tZXRoaW5nIGxpa2UgbGVhIDB4NjQoJXJkaSwlcnNpKSwgJXJheCBidXQgZGlkbid0ISIpOwor
ICAgIH0KK30KKwordm9pZCB0ZXN0WDg2TGVhQWRkU2hsUmlnaHQoKQoreworICAgIC8vIEFkZChT
aGwoQHgsICRjKSwgQHkpCisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJv
YywgU2hsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSwKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAyKSkpOwor
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0
KTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIGlmIChwcm9jLm9w
dExldmVsKCkgPiAxKQorICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxlYSAo
JXJkaSwlcnNpLDQpLCAlcmF4Iik7CisgICAgZWxzZQorICAgICAgICBjaGVja1VzZXNJbnN0cnVj
dGlvbigqY29kZSwgImxlYSIpOworICAgIENIRUNLX0VRKGludm9rZTxpbnRwdHJfdD4oKmNvZGUs
IDEsIDIpLCAxICsgKDIgPDwgMikpOworfQorCit2b2lkIHRlc3RYODZMZWFBZGRTaGxMZWZ0U2Nh
bGUxKCkKK3sKKyAgICAvLyBBZGQoU2hsKEB4LCAkYyksIEB5KQorICAgIFByb2NlZHVyZSBwcm9j
OworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIHJl
c3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIEFkZCwgT3JpZ2lu
KCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKKyAgICAgICAgICAgIHByb2MsIFNobCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgMCkpKTsKKyAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJl
dHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhw
cm9jKTsKKyAgICBDSEVDS19FUShpbnZva2U8aW50cHRyX3Q+KCpjb2RlLCAxLCAyKSwgMSArIDIp
OworICAgIGlmIChwcm9jLm9wdExldmVsKCkgPiAxKSB7CisgICAgICAgIGNoZWNrRGlzYXNzZW1i
bHkoCisgICAgICAgICAgICAqY29kZSwKKyAgICAgICAgICAgIFsmXSAoY29uc3QgY2hhciogZGlz
YXNzZW1ibHkpIC0+IGJvb2wgeworICAgICAgICAgICAgICAgIHJldHVybiBzdHJzdHIoZGlzYXNz
ZW1ibHksICJsZWEgKCVyZGksJXJzaSksICVyYXgiKQorICAgICAgICAgICAgICAgICAgICB8fCBz
dHJzdHIoZGlzYXNzZW1ibHksICJsZWEgKCVyc2ksJXJkaSksICVyYXgiKTsKKyAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAiRXhwZWN0ZWQgdG8gZmluZCBzb21ldGhpbmcgbGlrZSBsZWEgKCVy
ZGksJXJzaSksICVyYXggYnV0IGRpZG4ndCEiKTsKKyAgICB9Cit9CisKK3ZvaWQgdGVzdFg4Nkxl
YUFkZFNobExlZnRTY2FsZTIoKQoreworICAgIC8vIEFkZChTaGwoQHgsICRjKSwgQHkpCisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJv
YywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAorICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgU2hsLCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSkpOworICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKworICAgIGF1dG8gY29kZSA9
IGNvbXBpbGVQcm9jKHByb2MpOworICAgIGlmIChwcm9jLm9wdExldmVsKCkgPiAxKQorICAgICAg
ICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxlYSAoJXJkaSwlcnNpLDIpLCAlcmF4Iik7
CisgICAgZWxzZQorICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxlYSIpOwor
ICAgIENIRUNLX0VRKGludm9rZTxpbnRwdHJfdD4oKmNvZGUsIDEsIDIpLCAxICsgKDIgPDwgMSkp
OworfQorCit2b2lkIHRlc3RYODZMZWFBZGRTaGxMZWZ0U2NhbGU0KCkKK3sKKyAgICAvLyBBZGQo
U2hsKEB4LCAkYyksIEB5KQorICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdpbigpLAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0
MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDIpKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsK
KyAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3Vs
dCk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICBpZiAocHJvYy5v
cHRMZXZlbCgpID4gMSkKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJsZWEg
KCVyZGksJXJzaSw0KSwgJXJheCIpOworICAgIGVsc2UKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1
Y3Rpb24oKmNvZGUsICJsZWEiKTsKKyAgICBDSEVDS19FUShpbnZva2U8aW50cHRyX3Q+KCpjb2Rl
LCAxLCAyKSwgMSArICgyIDw8IDIpKTsKK30KKwordm9pZCB0ZXN0WDg2TGVhQWRkU2hsTGVmdFNj
YWxlOCgpCit7CisgICAgLy8gQWRkKFNobChAeCwgJGMpLCBAeSkKKyAgICBQcm9jZWR1cmUgcHJv
YzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBy
ZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBBZGQsIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjEpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIDMpKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2Mo
cHJvYyk7CisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA+IDEpCisgICAgICAgIGNoZWNrVXNlc0lu
c3RydWN0aW9uKCpjb2RlLCAibGVhICglcmRpLCVyc2ksOCksICVyYXgiKTsKKyAgICBlbHNlCisg
ICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibGVhIik7CisgICAgQ0hFQ0tfRVEo
aW52b2tlPGludHB0cl90PigqY29kZSwgMSwgMiksIDEgKyAoMiA8PCAzKSk7Cit9CisKK3ZvaWQg
dGVzdEFkZFNobDMyKCkKK3sKKyAgICAvLyBBZGQoU2hsKEB4LCAkYyksIEB5KQorICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAg
VmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIEFk
ZCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFNobCwgT3JpZ2luKCksCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Qz
MlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMzIpKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOworCisgICAgYXV0byBjb2RlID0gY29t
cGlsZVByb2MocHJvYyk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludDY0X3Q+KCpjb2RlLCAxLCAy
KSwgMSArIChzdGF0aWNfY2FzdDxpbnQ2NF90PigyKSA8PCBzdGF0aWNfY2FzdDxpbnQ2NF90Pigz
MikpKTsKK30KKwordm9pZCB0ZXN0QWRkU2hsNjQoKQoreworICAgIC8vIEFkZChTaGwoQHgsICRj
KSwgQHkpCisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgU2hsLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSwKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA2NCkpKTsKKyAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisKKyAg
ICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICBDSEVDS19FUShpbnZva2U8aW50
cHRyX3Q+KCpjb2RlLCAxLCAyKSwgMSArIDIpOworfQorCit2b2lkIHRlc3RBZGRTaGw2NSgpCit7
CisgICAgLy8gQWRkKFNobChAeCwgJGMpLCBAeSkKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiByZXN1bHQgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjEpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIDY1KSkpOworICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgcmVzdWx0KTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwor
ICAgIENIRUNLX0VRKGludm9rZTxpbnRwdHJfdD4oKmNvZGUsIDEsIDIpLCAxICsgKDIgPDwgMSkp
OworfQorCit2b2lkIHRlc3RSZWR1Y2VTdHJlbmd0aFJlYXNzb2NpYXRpb24oYm9vbCBmbGlwKQor
eworICAgIC8vIEFkZChBZGQoQHgsICRjKSwgQHkpIC0+IEFkZChBZGQoQHgsIEB5KSwgJGMpCisg
ICAgLy8gYW5kCisgICAgLy8gQWRkKEB5LCBBZGQoQHgsICRjKSkgLT4gQWRkKEFkZChAeCwgQHkp
LCAkYykKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVl
KiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworCisgICAgVmFsdWUqIGlubmVyQWRkID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwgYXJnMSwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0Mikp
OworCisgICAgVmFsdWUqIG91dGVyQWRkOworICAgIGlmIChmbGlwKQorICAgICAgICBvdXRlckFk
ZCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgYXJnMiwgaW5u
ZXJBZGQpOworICAgIGVsc2UKKyAgICAgICAgb3V0ZXJBZGQgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGlubmVyQWRkLCBhcmcyKTsKKworICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgb3V0ZXJBZGQpOworCisgICAg
cHJvYy5yZXNldFJlYWNoYWJpbGl0eSgpOworCisgICAgaWYgKHNob3VsZEJlVmVyYm9zZSgpKSB7
CisgICAgICAgIGRhdGFMb2coIklSIGJlZm9yZSByZWR1Y2VTdHJlbmd0aDpcbiIpOworICAgICAg
ICBkYXRhTG9nKHByb2MpOworICAgIH0KKworICAgIHJlZHVjZVN0cmVuZ3RoKHByb2MpOworCisg
ICAgaWYgKHNob3VsZEJlVmVyYm9zZSgpKSB7CisgICAgICAgIGRhdGFMb2coIklSIGFmdGVyIHJl
ZHVjZVN0cmVuZ3RoOlxuIik7CisgICAgICAgIGRhdGFMb2cocHJvYyk7CisgICAgfQorCisgICAg
Q0hFQ0tfRVEocm9vdC0+bGFzdCgpLT5vcGNvZGUoKSwgUmV0dXJuKTsKKyAgICBDSEVDS19FUShy
b290LT5sYXN0KCktPmNoaWxkKDApLT5vcGNvZGUoKSwgQWRkKTsKKyAgICBDSEVDSyhyb290LT5s
YXN0KCktPmNoaWxkKDApLT5jaGlsZCgxKS0+aXNJbnRQdHIoNDIpKTsKKyAgICBDSEVDS19FUShy
b290LT5sYXN0KCktPmNoaWxkKDApLT5jaGlsZCgwKS0+b3Bjb2RlKCksIEFkZCk7CisgICAgQ0hF
Q0soCisgICAgICAgIChyb290LT5sYXN0KCktPmNoaWxkKDApLT5jaGlsZCgwKS0+Y2hpbGQoMCkg
PT0gYXJnMSAmJiByb290LT5sYXN0KCktPmNoaWxkKDApLT5jaGlsZCgwKS0+Y2hpbGQoMSkgPT0g
YXJnMikgfHwKKyAgICAgICAgKHJvb3QtPmxhc3QoKS0+Y2hpbGQoMCktPmNoaWxkKDApLT5jaGls
ZCgwKSA9PSBhcmcyICYmIHJvb3QtPmxhc3QoKS0+Y2hpbGQoMCktPmNoaWxkKDApLT5jaGlsZCgx
KSA9PSBhcmcxKSk7Cit9CisKK3ZvaWQgdGVzdExvYWRCYXNlSW5kZXhTaGlmdDIoKQoreworICAg
IFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAg
IHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywgU2hsLCBPcmlnaW4oKSwKKyAgICAg
ICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpLAorICAgICAgICAgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMikpKSkpOworICAgIGF1
dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIGlmIChpc1g4NigpICYmIHByb2Mub3B0
TGV2ZWwoKSA+IDEpCisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAiKCVyZGks
JXJzaSw0KSIpOworICAgIGludDMyX3QgdmFsdWUgPSAxMjM0MTIzNDsKKyAgICBjaGFyKiBwdHIg
PSBiaXR3aXNlX2Nhc3Q8Y2hhcio+KCZ2YWx1ZSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IDEwOyArK2kpCisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQzMl90PigqY29kZSwgcHRy
IC0gKHN0YXRpY19jYXN0PGludHB0cl90PigxKSA8PCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMikp
ICogaSwgaSksIDEyMzQxMjM0KTsKK30KKwordm9pZCB0ZXN0TG9hZEJhc2VJbmRleFNoaWZ0MzIo
KQoreworI2lmIENQVShBRERSRVNTNjQpCisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigp
LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBw
cm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgICAg
ICBwcm9jLCBTaGwsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MSksCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCAzMikpKSkpOworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2Mp
OworICAgIGludDMyX3QgdmFsdWUgPSAxMjM0MTIzNDsKKyAgICBjaGFyKiBwdHIgPSBiaXR3aXNl
X2Nhc3Q8Y2hhcio+KCZ2YWx1ZSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDEwOyAr
K2kpCisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQzMl90PigqY29kZSwgcHRyIC0gKHN0YXRp
Y19jYXN0PGludHB0cl90PigxKSA8PCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMzIpKSAqIGksIGkp
LCAxMjM0MTIzNCk7CisjZW5kaWYKK30KKwordm9pZCB0ZXN0T3B0aW1pemVNYXRlcmlhbGl6YXRp
b24oKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAy
KQorICAgICAgICByZXR1cm47CisKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKKyAgICAgICAgcHJvYywgVm9p
ZCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgMHgxMjM0MjM0NTM0NTZsbHUpLAorICAgICAgICByb290LT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDB4MTIzNDIzNDUzNDU2bGx1ICsgMzUpKTsK
KyAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworCisg
ICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgYm9vbCBmb3VuZCA9IGZhbHNl
OworICAgIGZvciAoQWlyOjpCYXNpY0Jsb2NrKiBibG9jayA6IHByb2MuY29kZSgpKSB7CisgICAg
ICAgIGZvciAoQWlyOjpJbnN0JiBpbnN0IDogKmJsb2NrKSB7CisgICAgICAgICAgICBpZiAoaW5z
dC5raW5kLm9wY29kZSAhPSBBaXI6OkFkZDY0KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgaWYgKGluc3QuYXJnc1swXSAhPSBBaXI6OkFyZzo6aW1tKDM1KSkKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgICAg
fQorICAgIH0KKyAgICBDSEVDSyhmb3VuZCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+
Cit2b2lkIGdlbmVyYXRlTG9vcChQcm9jZWR1cmUmIHByb2MsIGNvbnN0IEZ1bmMmIGZ1bmMpCit7
CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2Nr
KiBsb29wID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIGVuZCA9IHByb2MuYWRk
QmxvY2soKTsKKworICAgIFVwc2lsb25WYWx1ZSogaW5pdGlhbEluZGV4ID0gcm9vdC0+YXBwZW5k
TmV3PFVwc2lsb25WYWx1ZT4oCisgICAgICAgIHByb2MsIE9yaWdpbigpLCByb290LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgSnVtcCwgT3JpZ2luKCkpOworICAgIHJvb3QtPnNldFN1Y2Nlc3NvcnMo
bG9vcCk7CisKKyAgICBWYWx1ZSogaW5kZXggPSBsb29wLT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFBoaSwgSW50MzIsIE9yaWdpbigpKTsKKyAgICBpbml0aWFsSW5kZXgtPnNldFBoaShpbmRleCk7
CisKKyAgICBWYWx1ZSogb25lID0gZnVuYyhsb29wLCBpbmRleCk7CisKKyAgICBWYWx1ZSogbmV4
dEluZGV4ID0gbG9vcC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBpbmRl
eCwgb25lKTsKKyAgICBVcHNpbG9uVmFsdWUqIGxvb3BJbmRleCA9IGxvb3AtPmFwcGVuZE5ldzxV
cHNpbG9uVmFsdWU+KHByb2MsIE9yaWdpbigpLCBuZXh0SW5kZXgpOworICAgIGxvb3BJbmRleC0+
c2V0UGhpKGluZGV4KTsKKyAgICBsb29wLT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9j
LCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICBsb29wLT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgcHJvYywgTGVzc1RoYW4sIE9yaWdpbigpLCBuZXh0SW5kZXgsCisgICAgICAgICAg
ICBsb29wLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMTAwKSkpOwor
ICAgIGxvb3AtPnNldFN1Y2Nlc3NvcnMobG9vcCwgZW5kKTsKKworICAgIGVuZC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKK30KKworc3RhdGljIHN0ZDo6YXJyYXk8
aW50LCAxMDA+IG1ha2VBcnJheUZvckxvb3BzKCkKK3sKKyAgICBzdGQ6OmFycmF5PGludCwgMTAw
PiByZXN1bHQ7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlc3VsdC5zaXplKCk7ICsr
aSkKKyAgICAgICAgcmVzdWx0W2ldID0gaSAmIDE7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KK3ZvaWQgZ2VuZXJhdGVMb29wTm90QmFja3dhcmRzRG9t
aW5hbnQoUHJvY2VkdXJlJiBwcm9jLCBzdGQ6OmFycmF5PGludCwgMTAwPiYgYXJyYXksIGNvbnN0
IEZ1bmMmIGZ1bmMpCit7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBCYXNpY0Jsb2NrKiBsb29wSGVhZGVyID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2lj
QmxvY2sqIGxvb3BDYWxsID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIGxvb3BG
b290ZXIgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogZW5kID0gcHJvYy5hZGRC
bG9jaygpOworCisgICAgVXBzaWxvblZhbHVlKiBpbml0aWFsSW5kZXggPSByb290LT5hcHBlbmRO
ZXc8VXBzaWxvblZhbHVlPigKKyAgICAgICAgcHJvYywgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5l
dzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisgICAgLy8gSWYgeW91IGxvb2sg
Y2FyZWZ1bGx5LCB5b3UnbGwgbm90aWNlIHRoYXQgdGhpcyBpcyBhbiBleHRyZW1lbHkgc25lYWt5
IHVzZSBvZiBVcHNpbG9uIHRoYXQgZGVtb25zdHJhdGVzCisgICAgLy8gdGhlIGV4dGVudCB0byB3
aGljaCBvdXIgU1NBIGlzIGRpZmZlcmVudCBmcm9tIG5vcm1hbC1wZXJzb24gU1NBLgorICAgIFVw
c2lsb25WYWx1ZSogZGVmYXVsdE9uZSA9IHJvb3QtPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KAor
ICAgICAgICBwcm9jLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIDEpKTsKKyAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEp1bXAs
IE9yaWdpbigpKTsKKyAgICByb290LT5zZXRTdWNjZXNzb3JzKGxvb3BIZWFkZXIpOworCisgICAg
VmFsdWUqIGluZGV4ID0gbG9vcEhlYWRlci0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBQaGksIElu
dDMyLCBPcmlnaW4oKSk7CisgICAgaW5pdGlhbEluZGV4LT5zZXRQaGkoaW5kZXgpOworCisgICAg
Ly8gaWYgKGFycmF5W2luZGV4XSkKKyAgICBsb29wSGVhZGVyLT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICBsb29wSGVhZGVyLT5hcHBl
bmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTG9hZCwgSW50MzIsIE9yaWdp
bigpLAorICAgICAgICAgICAgbG9vcEhlYWRlci0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAg
ICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIGxvb3BIZWFkZXIt
PmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJmFycmF5KSwKKyAgICAg
ICAgICAgICAgICBsb29wSGVhZGVyLT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAg
ICAgICBwcm9jLCBNdWwsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgICAgICBsb29wSGVhZGVy
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFpFeHQzMiwgT3JpZ2luKCksIGluZGV4KSwKKyAgICAg
ICAgICAgICAgICAgICAgbG9vcEhlYWRlci0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBzaXplb2YoaW50KSkpKSkpOworICAgIGxvb3BIZWFkZXItPnNldFN1Y2Nlc3Nv
cnMobG9vcENhbGwsIGxvb3BGb290ZXIpOworCisgICAgVmFsdWUqIGZ1bmN0aW9uQ2FsbCA9IGZ1
bmMobG9vcENhbGwsIGluZGV4KTsKKyAgICBVcHNpbG9uVmFsdWUqIG9uZUZyb21GdW5jdGlvbiA9
IGxvb3BDYWxsLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4oKSwgZnVuY3Rp
b25DYWxsKTsKKyAgICBsb29wQ2FsbC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBKdW1wLCBPcmln
aW4oKSk7CisgICAgbG9vcENhbGwtPnNldFN1Y2Nlc3NvcnMobG9vcEZvb3Rlcik7CisKKyAgICBW
YWx1ZSogb25lID0gbG9vcEZvb3Rlci0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBQaGksIEludDMy
LCBPcmlnaW4oKSk7CisgICAgZGVmYXVsdE9uZS0+c2V0UGhpKG9uZSk7CisgICAgb25lRnJvbUZ1
bmN0aW9uLT5zZXRQaGkob25lKTsKKyAgICBWYWx1ZSogbmV4dEluZGV4ID0gbG9vcEZvb3Rlci0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBpbmRleCwgb25lKTsKKyAgICBV
cHNpbG9uVmFsdWUqIGxvb3BJbmRleCA9IGxvb3BGb290ZXItPmFwcGVuZE5ldzxVcHNpbG9uVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBuZXh0SW5kZXgpOworICAgIGxvb3BJbmRleC0+c2V0UGhpKGlu
ZGV4KTsKKyAgICBsb29wRm9vdGVyLT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBC
cmFuY2gsIE9yaWdpbigpLAorICAgICAgICBsb29wRm9vdGVyLT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICAgICAgcHJvYywgTGVzc1RoYW4sIE9yaWdpbigpLCBuZXh0SW5kZXgsCisgICAgICAg
ICAgICBsb29wRm9vdGVyLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
MTAwKSkpOworICAgIGxvb3BGb290ZXItPnNldFN1Y2Nlc3NvcnMobG9vcEhlYWRlciwgZW5kKTsK
KworICAgIGVuZC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKK30K
Kworc3RhdGljIGludCBvbmVGdW5jdGlvbihpbnQqIGNhbGxDb3VudCkKK3sKKyAgICAoKmNhbGxD
b3VudCkrKzsKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIHZvaWQgbm9PcEZ1bmN0aW9uKCkK
K3sKK30KKwordm9pZCB0ZXN0TElDTVB1cmUoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworCisg
ICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDIpCisgICAgICAgIHJldHVybjsKKworICAgIGdlbmVy
YXRlTG9vcCgKKyAgICAgICAgcHJvYywKKyAgICAgICAgWyZdIChCYXNpY0Jsb2NrKiBsb29wLCBW
YWx1ZSopIC0+IFZhbHVlKiB7CisgICAgICAgICAgICByZXR1cm4gbG9vcC0+YXBwZW5kTmV3PEND
YWxsVmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEludDMyLCBPcmlnaW4oKSwgRWZmZWN0
czo6bm9uZSgpLAorICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihvbmVGdW5jdGlvbiwgQjND
Q2FsbFB0clRhZykpLAorICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgICAg
IH0pOworCisgICAgdW5zaWduZWQgY2FsbENvdW50ID0gMDsKKyAgICBjb21waWxlQW5kUnVuPHZv
aWQ+KHByb2MsICZjYWxsQ291bnQpOworICAgIENIRUNLX0VRKGNhbGxDb3VudCwgMXUpOworfQor
Cit2b2lkIHRlc3RMSUNNUHVyZVNpZGVFeGl0cygpCit7CisgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDIpCisgICAgICAgIHJldHVybjsKKyAgICBnZW5lcmF0
ZUxvb3AoCisgICAgICAgIHByb2MsCisgICAgICAgIFsmXSAoQmFzaWNCbG9jayogbG9vcCwgVmFs
dWUqKSAtPiBWYWx1ZSogeworICAgICAgICAgICAgRWZmZWN0cyBlZmZlY3RzID0gRWZmZWN0czo6
bm9uZSgpOworICAgICAgICAgICAgZWZmZWN0cy5leGl0c1NpZGV3YXlzID0gdHJ1ZTsKKyAgICAg
ICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9j
LCBWb2lkLCBPcmlnaW4oKSwgZWZmZWN0cywKKyAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmRO
ZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4o
bm9PcEZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSkpOworCisgICAgICAgICAgICByZXR1cm4gbG9v
cC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEludDMyLCBP
cmlnaW4oKSwgRWZmZWN0czo6bm9uZSgpLAorICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5l
dzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihv
bmVGdW5jdGlvbiwgQjNDQ2FsbFB0clRhZykpLAorICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSk7CisgICAgICAgIH0pOworCisgICAgdW5zaWduZWQgY2FsbENvdW50ID0gMDsKKyAgICBj
b21waWxlQW5kUnVuPHZvaWQ+KHByb2MsICZjYWxsQ291bnQpOworICAgIENIRUNLX0VRKGNhbGxD
b3VudCwgMXUpOworfQorCit2b2lkIHRlc3RMSUNNUHVyZVdyaXRlc1Bpbm5lZCgpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDIpCisgICAgICAgIHJl
dHVybjsKKyAgICBnZW5lcmF0ZUxvb3AoCisgICAgICAgIHByb2MsCisgICAgICAgIFsmXSAoQmFz
aWNCbG9jayogbG9vcCwgVmFsdWUqKSAtPiBWYWx1ZSogeworICAgICAgICAgICAgRWZmZWN0cyBl
ZmZlY3RzID0gRWZmZWN0czo6bm9uZSgpOworICAgICAgICAgICAgZWZmZWN0cy53cml0ZXNQaW5u
ZWQgPSB0cnVlOworICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAorICAg
ICAgICAgICAgICAgIHByb2MsIFZvaWQsIE9yaWdpbigpLCBlZmZlY3RzLAorICAgICAgICAgICAg
ICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1
bmN0aW9uUHRyPHZvaWQqPihub09wRnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSk7CisKKyAgICAg
ICAgICAgIHJldHVybiBsb29wLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCisgICAgICAgICAgICAg
ICAgcHJvYywgSW50MzIsIE9yaWdpbigpLCBFZmZlY3RzOjpub25lKCksCisgICAgICAgICAgICAg
ICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVu
Y3Rpb25QdHI8dm9pZCo+KG9uZUZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSksCisgICAgICAgICAg
ICAgICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAgfSk7CisKKyAgICB1bnNpZ25lZCBjYWxs
Q291bnQgPSAwOworICAgIGNvbXBpbGVBbmRSdW48dm9pZD4ocHJvYywgJmNhbGxDb3VudCk7Cisg
ICAgQ0hFQ0tfRVEoY2FsbENvdW50LCAxdSk7Cit9CisKK3ZvaWQgdGVzdExJQ01QdXJlV3JpdGVz
KCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBpZiAocHJvYy5vcHRMZXZlbCgpIDwgMikK
KyAgICAgICAgcmV0dXJuOworICAgIGdlbmVyYXRlTG9vcCgKKyAgICAgICAgcHJvYywKKyAgICAg
ICAgWyZdIChCYXNpY0Jsb2NrKiBsb29wLCBWYWx1ZSopIC0+IFZhbHVlKiB7CisgICAgICAgICAg
ICBFZmZlY3RzIGVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgICAgICAgICBlZmZlY3Rz
LndyaXRlcyA9IEhlYXBSYW5nZSg2MzQ3OSk7CisgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8
Q0NhbGxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVm9pZCwgT3JpZ2luKCksIGVmZmVj
dHMsCisgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG5vT3BGdW5jdGlvbiwgQjNDQ2FsbFB0
clRhZykpKTsKKworICAgICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVl
PigKKyAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksIEVmZmVjdHM6Om5vbmUo
KSwKKyAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4ob25lRnVuY3Rpb24sIEIzQ0NhbGxQdHJU
YWcpKSwKKyAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICB9KTsKKwor
ICAgIHVuc2lnbmVkIGNhbGxDb3VudCA9IDA7CisgICAgY29tcGlsZUFuZFJ1bjx2b2lkPihwcm9j
LCAmY2FsbENvdW50KTsKKyAgICBDSEVDS19FUShjYWxsQ291bnQsIDF1KTsKK30KKwordm9pZCB0
ZXN0TElDTVJlYWRzTG9jYWxTdGF0ZSgpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgZ2Vu
ZXJhdGVMb29wKAorICAgICAgICBwcm9jLAorICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGxvb3As
IFZhbHVlKikgLT4gVmFsdWUqIHsKKyAgICAgICAgICAgIEVmZmVjdHMgZWZmZWN0cyA9IEVmZmVj
dHM6Om5vbmUoKTsKKyAgICAgICAgICAgIGVmZmVjdHMucmVhZHNMb2NhbFN0YXRlID0gdHJ1ZTsK
KyAgICAgICAgICAgIHJldHVybiBsb29wLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCisgICAgICAg
ICAgICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigpLCBlZmZlY3RzLAorICAgICAgICAgICAgICAg
IGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0
aW9uUHRyPHZvaWQqPihvbmVGdW5jdGlvbiwgQjNDQ2FsbFB0clRhZykpLAorICAgICAgICAgICAg
ICAgIGxvb3AtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgICAgIH0pOworCisgICAgdW5zaWduZWQgY2FsbENv
dW50ID0gMDsKKyAgICBjb21waWxlQW5kUnVuPHZvaWQ+KHByb2MsICZjYWxsQ291bnQpOworICAg
IENIRUNLX0VRKGNhbGxDb3VudCwgMTAwdSk7IC8vIFdlJ2xsIGZhaWwgdG8gaG9pc3QgYmVjYXVz
ZSB0aGUgbG9vcCBoYXMgVXBzaWxvbnMuCit9CisKK3ZvaWQgdGVzdExJQ01SZWFkc1Bpbm5lZCgp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDIpCisg
ICAgICAgIHJldHVybjsKKyAgICBnZW5lcmF0ZUxvb3AoCisgICAgICAgIHByb2MsCisgICAgICAg
IFsmXSAoQmFzaWNCbG9jayogbG9vcCwgVmFsdWUqKSAtPiBWYWx1ZSogeworICAgICAgICAgICAg
RWZmZWN0cyBlZmZlY3RzID0gRWZmZWN0czo6bm9uZSgpOworICAgICAgICAgICAgZWZmZWN0cy5y
ZWFkc1Bpbm5lZCA9IHRydWU7CisgICAgICAgICAgICByZXR1cm4gbG9vcC0+YXBwZW5kTmV3PEND
YWxsVmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEludDMyLCBPcmlnaW4oKSwgZWZmZWN0
cywKKyAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4ob25lRnVuY3Rpb24sIEIzQ0NhbGxQdHJU
YWcpKSwKKyAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICB9KTsKKwor
ICAgIHVuc2lnbmVkIGNhbGxDb3VudCA9IDA7CisgICAgY29tcGlsZUFuZFJ1bjx2b2lkPihwcm9j
LCAmY2FsbENvdW50KTsKKyAgICBDSEVDS19FUShjYWxsQ291bnQsIDF1KTsKK30KKwordm9pZCB0
ZXN0TElDTVJlYWRzKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBpZiAocHJvYy5vcHRM
ZXZlbCgpIDwgMikKKyAgICAgICAgcmV0dXJuOworICAgIGdlbmVyYXRlTG9vcCgKKyAgICAgICAg
cHJvYywKKyAgICAgICAgWyZdIChCYXNpY0Jsb2NrKiBsb29wLCBWYWx1ZSopIC0+IFZhbHVlKiB7
CisgICAgICAgICAgICBFZmZlY3RzIGVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgICAg
ICAgICBlZmZlY3RzLnJlYWRzID0gSGVhcFJhbmdlOjp0b3AoKTsKKyAgICAgICAgICAgIHJldHVy
biBsb29wLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgSW50
MzIsIE9yaWdpbigpLCBlZmZlY3RzLAorICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxD
b25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihvbmVG
dW5jdGlvbiwgQjNDQ2FsbFB0clRhZykpLAorICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSk7CisgICAgICAgIH0pOworCisgICAgdW5zaWduZWQgY2FsbENvdW50ID0gMDsKKyAgICBjb21w
aWxlQW5kUnVuPHZvaWQ+KHByb2MsICZjYWxsQ291bnQpOworICAgIENIRUNLX0VRKGNhbGxDb3Vu
dCwgMXUpOworfQorCit2b2lkIHRlc3RMSUNNUHVyZU5vdEJhY2t3YXJkc0RvbWluYW50KCkKK3sK
KyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBpZiAocHJvYy5vcHRMZXZlbCgpIDwgMikKKyAgICAg
ICAgcmV0dXJuOworICAgIGF1dG8gYXJyYXkgPSBtYWtlQXJyYXlGb3JMb29wcygpOworICAgIGdl
bmVyYXRlTG9vcE5vdEJhY2t3YXJkc0RvbWluYW50KAorICAgICAgICBwcm9jLCBhcnJheSwKKyAg
ICAgICAgWyZdIChCYXNpY0Jsb2NrKiBsb29wLCBWYWx1ZSopIC0+IFZhbHVlKiB7CisgICAgICAg
ICAgICByZXR1cm4gbG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAorICAgICAgICAgICAgICAg
IHByb2MsIEludDMyLCBPcmlnaW4oKSwgRWZmZWN0czo6bm9uZSgpLAorICAgICAgICAgICAgICAg
IGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0
aW9uUHRyPHZvaWQqPihvbmVGdW5jdGlvbiwgQjNDQ2FsbFB0clRhZykpLAorICAgICAgICAgICAg
ICAgIGxvb3AtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgICAgIH0pOworCisgICAgdW5zaWduZWQgY2FsbENv
dW50ID0gMDsKKyAgICBjb21waWxlQW5kUnVuPHZvaWQ+KHByb2MsICZjYWxsQ291bnQpOworICAg
IENIRUNLX0VRKGNhbGxDb3VudCwgMXUpOworfQorCit2b2lkIHRlc3RMSUNNUHVyZUZvaWxlZEJ5
Q2hpbGQoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIGdlbmVyYXRlTG9vcCgKKyAgICAg
ICAgcHJvYywKKyAgICAgICAgWyZdIChCYXNpY0Jsb2NrKiBsb29wLCBWYWx1ZSogaW5kZXgpIC0+
IFZhbHVlKiB7CisgICAgICAgICAgICByZXR1cm4gbG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+
KAorICAgICAgICAgICAgICAgIHByb2MsIEludDMyLCBPcmlnaW4oKSwgRWZmZWN0czo6bm9uZSgp
LAorICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihvbmVGdW5jdGlvbiwgQjNDQ2FsbFB0clRh
ZykpLAorICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgICAgICAgICBp
bmRleCk7CisgICAgICAgIH0pOworCisgICAgdW5zaWduZWQgY2FsbENvdW50ID0gMDsKKyAgICBj
b21waWxlQW5kUnVuPHZvaWQ+KHByb2MsICZjYWxsQ291bnQpOworICAgIENIRUNLX0VRKGNhbGxD
b3VudCwgMTAwdSk7Cit9CisKK3ZvaWQgdGVzdExJQ01QdXJlTm90QmFja3dhcmRzRG9taW5hbnRG
b2lsZWRCeUNoaWxkKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBpZiAocHJvYy5vcHRM
ZXZlbCgpIDwgMikKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gYXJyYXkgPSBtYWtlQXJyYXlG
b3JMb29wcygpOworICAgIGdlbmVyYXRlTG9vcE5vdEJhY2t3YXJkc0RvbWluYW50KAorICAgICAg
ICBwcm9jLCBhcnJheSwKKyAgICAgICAgWyZdIChCYXNpY0Jsb2NrKiBsb29wLCBWYWx1ZSogaW5k
ZXgpIC0+IFZhbHVlKiB7CisgICAgICAgICAgICByZXR1cm4gbG9vcC0+YXBwZW5kTmV3PENDYWxs
VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEludDMyLCBPcmlnaW4oKSwgRWZmZWN0czo6
bm9uZSgpLAorICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihvbmVGdW5jdGlvbiwgQjNDQ2Fs
bFB0clRhZykpLAorICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgICAg
ICAgICBpbmRleCk7CisgICAgICAgIH0pOworCisgICAgdW5zaWduZWQgY2FsbENvdW50ID0gMDsK
KyAgICBjb21waWxlQW5kUnVuPHZvaWQ+KHByb2MsICZjYWxsQ291bnQpOworICAgIENIRUNLX0VR
KGNhbGxDb3VudCwgNTB1KTsKK30KKwordm9pZCB0ZXN0TElDTUV4aXRzU2lkZXdheXMoKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIGdlbmVyYXRlTG9vcCgKKyAgICAgICAgcHJvYywKKyAg
ICAgICAgWyZdIChCYXNpY0Jsb2NrKiBsb29wLCBWYWx1ZSopIC0+IFZhbHVlKiB7CisgICAgICAg
ICAgICBFZmZlY3RzIGVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgICAgICAgICBlZmZl
Y3RzLmV4aXRzU2lkZXdheXMgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVu
ZE5ldzxDQ2FsbFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCks
IGVmZmVjdHMsCisgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG9uZUZ1bmN0aW9uLCBCM0ND
YWxsUHRyVGFnKSksCisgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAg
fSk7CisKKyAgICB1bnNpZ25lZCBjYWxsQ291bnQgPSAwOworICAgIGNvbXBpbGVBbmRSdW48dm9p
ZD4ocHJvYywgJmNhbGxDb3VudCk7CisgICAgQ0hFQ0tfRVEoY2FsbENvdW50LCAxMDB1KTsKK30K
Kwordm9pZCB0ZXN0TElDTVdyaXRlc0xvY2FsU3RhdGUoKQoreworICAgIFByb2NlZHVyZSBwcm9j
OworICAgIGdlbmVyYXRlTG9vcCgKKyAgICAgICAgcHJvYywKKyAgICAgICAgWyZdIChCYXNpY0Js
b2NrKiBsb29wLCBWYWx1ZSopIC0+IFZhbHVlKiB7CisgICAgICAgICAgICBFZmZlY3RzIGVmZmVj
dHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgICAgICAgICBlZmZlY3RzLndyaXRlc0xvY2FsU3Rh
dGUgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVl
PigKKyAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksIGVmZmVjdHMsCisgICAg
ICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG9uZUZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSksCisg
ICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAgfSk7CisKKyAgICB1bnNp
Z25lZCBjYWxsQ291bnQgPSAwOworICAgIGNvbXBpbGVBbmRSdW48dm9pZD4ocHJvYywgJmNhbGxD
b3VudCk7CisgICAgQ0hFQ0tfRVEoY2FsbENvdW50LCAxMDB1KTsKK30KKwordm9pZCB0ZXN0TElD
TVdyaXRlcygpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgZ2VuZXJhdGVMb29wKAorICAg
ICAgICBwcm9jLAorICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGxvb3AsIFZhbHVlKikgLT4gVmFs
dWUqIHsKKyAgICAgICAgICAgIEVmZmVjdHMgZWZmZWN0cyA9IEVmZmVjdHM6Om5vbmUoKTsKKyAg
ICAgICAgICAgIGVmZmVjdHMud3JpdGVzID0gSGVhcFJhbmdlKDY2Nik7CisgICAgICAgICAgICBy
ZXR1cm4gbG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2Ms
IEludDMyLCBPcmlnaW4oKSwgZWZmZWN0cywKKyAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmRO
ZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4o
b25lRnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSwKKyAgICAgICAgICAgICAgICBsb29wLT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCkpOworICAgICAgICB9KTsKKworICAgIHVuc2lnbmVkIGNhbGxDb3VudCA9IDA7CisgICAg
Y29tcGlsZUFuZFJ1bjx2b2lkPihwcm9jLCAmY2FsbENvdW50KTsKKyAgICBDSEVDS19FUShjYWxs
Q291bnQsIDEwMHUpOworfQorCit2b2lkIHRlc3RMSUNNRmVuY2UoKQoreworICAgIFByb2NlZHVy
ZSBwcm9jOworICAgIGdlbmVyYXRlTG9vcCgKKyAgICAgICAgcHJvYywKKyAgICAgICAgWyZdIChC
YXNpY0Jsb2NrKiBsb29wLCBWYWx1ZSopIC0+IFZhbHVlKiB7CisgICAgICAgICAgICBFZmZlY3Rz
IGVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgICAgICAgICBlZmZlY3RzLmZlbmNlID0g
dHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBsb29wLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCisg
ICAgICAgICAgICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigpLCBlZmZlY3RzLAorICAgICAgICAg
ICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFn
Q0Z1bmN0aW9uUHRyPHZvaWQqPihvbmVGdW5jdGlvbiwgQjNDQ2FsbFB0clRhZykpLAorICAgICAg
ICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgICAgIH0pOworCisgICAgdW5zaWduZWQg
Y2FsbENvdW50ID0gMDsKKyAgICBjb21waWxlQW5kUnVuPHZvaWQ+KHByb2MsICZjYWxsQ291bnQp
OworICAgIENIRUNLX0VRKGNhbGxDb3VudCwgMTAwdSk7Cit9CisKK3ZvaWQgdGVzdExJQ01Xcml0
ZXNQaW5uZWQoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIGdlbmVyYXRlTG9vcCgKKyAg
ICAgICAgcHJvYywKKyAgICAgICAgWyZdIChCYXNpY0Jsb2NrKiBsb29wLCBWYWx1ZSopIC0+IFZh
bHVlKiB7CisgICAgICAgICAgICBFZmZlY3RzIGVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7Cisg
ICAgICAgICAgICBlZmZlY3RzLndyaXRlc1Bpbm5lZCA9IHRydWU7CisgICAgICAgICAgICByZXR1
cm4gbG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIElu
dDMyLCBPcmlnaW4oKSwgZWZmZWN0cywKKyAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4ob25l
RnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSwKKyAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpOworICAgICAgICB9KTsKKworICAgIHVuc2lnbmVkIGNhbGxDb3VudCA9IDA7CisgICAgY29t
cGlsZUFuZFJ1bjx2b2lkPihwcm9jLCAmY2FsbENvdW50KTsKKyAgICBDSEVDS19FUShjYWxsQ291
bnQsIDEwMHUpOworfQorCit2b2lkIHRlc3RMSUNNQ29udHJvbERlcGVuZGVudCgpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDIpCisgICAgICAgIHJl
dHVybjsKKyAgICBnZW5lcmF0ZUxvb3AoCisgICAgICAgIHByb2MsCisgICAgICAgIFsmXSAoQmFz
aWNCbG9jayogbG9vcCwgVmFsdWUqKSAtPiBWYWx1ZSogeworICAgICAgICAgICAgRWZmZWN0cyBl
ZmZlY3RzID0gRWZmZWN0czo6bm9uZSgpOworICAgICAgICAgICAgZWZmZWN0cy5jb250cm9sRGVw
ZW5kZW50ID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBsb29wLT5hcHBlbmROZXc8Q0NhbGxW
YWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigpLCBlZmZlY3RzLAor
ICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmln
aW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihvbmVGdW5jdGlvbiwgQjNDQ2FsbFB0clRhZykp
LAorICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgICAgIH0pOworCisgICAg
dW5zaWduZWQgY2FsbENvdW50ID0gMDsKKyAgICBjb21waWxlQW5kUnVuPHZvaWQ+KHByb2MsICZj
YWxsQ291bnQpOworICAgIENIRUNLX0VRKGNhbGxDb3VudCwgMXUpOworfQorCit2b2lkIHRlc3RM
SUNNQ29udHJvbERlcGVuZGVudE5vdEJhY2t3YXJkc0RvbWluYW50KCkKK3sKKyAgICBQcm9jZWR1
cmUgcHJvYzsKKyAgICBpZiAocHJvYy5vcHRMZXZlbCgpIDwgMikKKyAgICAgICAgcmV0dXJuOwor
ICAgIGF1dG8gYXJyYXkgPSBtYWtlQXJyYXlGb3JMb29wcygpOworICAgIGdlbmVyYXRlTG9vcE5v
dEJhY2t3YXJkc0RvbWluYW50KAorICAgICAgICBwcm9jLCBhcnJheSwKKyAgICAgICAgWyZdIChC
YXNpY0Jsb2NrKiBsb29wLCBWYWx1ZSopIC0+IFZhbHVlKiB7CisgICAgICAgICAgICBFZmZlY3Rz
IGVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgICAgICAgICBlZmZlY3RzLmNvbnRyb2xE
ZXBlbmRlbnQgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5ldzxDQ2Fs
bFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksIGVmZmVjdHMs
CisgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG9uZUZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFn
KSksCisgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAgfSk7CisKKyAg
ICB1bnNpZ25lZCBjYWxsQ291bnQgPSAwOworICAgIGNvbXBpbGVBbmRSdW48dm9pZD4ocHJvYywg
JmNhbGxDb3VudCk7CisgICAgQ0hFQ0tfRVEoY2FsbENvdW50LCA1MHUpOworfQorCit2b2lkIHRl
c3RMSUNNQ29udHJvbERlcGVuZGVudFNpZGVFeGl0cygpCit7CisgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgZ2VuZXJhdGVMb29wKAorICAgICAgICBwcm9jLAorICAgICAgICBbJl0gKEJhc2ljQmxv
Y2sqIGxvb3AsIFZhbHVlKikgLT4gVmFsdWUqIHsKKyAgICAgICAgICAgIEVmZmVjdHMgZWZmZWN0
cyA9IEVmZmVjdHM6Om5vbmUoKTsKKyAgICAgICAgICAgIGVmZmVjdHMuZXhpdHNTaWRld2F5cyA9
IHRydWU7CisgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCisgICAgICAg
ICAgICAgICAgcHJvYywgVm9pZCwgT3JpZ2luKCksIGVmZmVjdHMsCisgICAgICAgICAgICAgICAg
bG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rp
b25QdHI8dm9pZCo+KG5vT3BGdW5jdGlvbiwgQjNDQ2FsbFB0clRhZykpKTsKKyAgICAgICAgCisg
ICAgICAgICAgICBlZmZlY3RzID0gRWZmZWN0czo6bm9uZSgpOworICAgICAgICAgICAgZWZmZWN0
cy5jb250cm9sRGVwZW5kZW50ID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBsb29wLT5hcHBl
bmROZXc8Q0NhbGxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigp
LCBlZmZlY3RzLAorICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihvbmVGdW5jdGlvbiwgQjND
Q2FsbFB0clRhZykpLAorICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgICAg
IH0pOworCisgICAgdW5zaWduZWQgY2FsbENvdW50ID0gMDsKKyAgICBjb21waWxlQW5kUnVuPHZv
aWQ+KHByb2MsICZjYWxsQ291bnQpOworICAgIENIRUNLX0VRKGNhbGxDb3VudCwgMTAwdSk7Cit9
CisKK3ZvaWQgdGVzdExJQ01SZWFkc1Bpbm5lZFdyaXRlc1Bpbm5lZCgpCit7CisgICAgUHJvY2Vk
dXJlIHByb2M7CisgICAgZ2VuZXJhdGVMb29wKAorICAgICAgICBwcm9jLAorICAgICAgICBbJl0g
KEJhc2ljQmxvY2sqIGxvb3AsIFZhbHVlKikgLT4gVmFsdWUqIHsKKyAgICAgICAgICAgIEVmZmVj
dHMgZWZmZWN0cyA9IEVmZmVjdHM6Om5vbmUoKTsKKyAgICAgICAgICAgIGVmZmVjdHMud3JpdGVz
UGlubmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigK
KyAgICAgICAgICAgICAgICBwcm9jLCBWb2lkLCBPcmlnaW4oKSwgZWZmZWN0cywKKyAgICAgICAg
ICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRh
Z0NGdW5jdGlvblB0cjx2b2lkKj4obm9PcEZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSkpOworICAg
ICAgICAKKyAgICAgICAgICAgIGVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgICAgICAg
ICBlZmZlY3RzLnJlYWRzUGlubmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBsb29wLT5h
cHBlbmROZXc8Q0NhbGxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgSW50MzIsIE9yaWdp
bigpLCBlZmZlY3RzLAorICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihvbmVGdW5jdGlvbiwg
QjNDQ2FsbFB0clRhZykpLAorICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAg
ICAgIH0pOworCisgICAgdW5zaWduZWQgY2FsbENvdW50ID0gMDsKKyAgICBjb21waWxlQW5kUnVu
PHZvaWQ+KHByb2MsICZjYWxsQ291bnQpOworICAgIENIRUNLX0VRKGNhbGxDb3VudCwgMTAwdSk7
Cit9CisKK3ZvaWQgdGVzdExJQ01SZWFkc1dyaXRlc0RpZmZlcmVudEhlYXBzKCkKK3sKKyAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICBpZiAocHJvYy5vcHRMZXZlbCgpIDwgMikKKyAgICAgICAgcmV0
dXJuOworICAgIGdlbmVyYXRlTG9vcCgKKyAgICAgICAgcHJvYywKKyAgICAgICAgWyZdIChCYXNp
Y0Jsb2NrKiBsb29wLCBWYWx1ZSopIC0+IFZhbHVlKiB7CisgICAgICAgICAgICBFZmZlY3RzIGVm
ZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgICAgICAgICBlZmZlY3RzLndyaXRlcyA9IEhl
YXBSYW5nZSg2NDM2KTsKKyAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigK
KyAgICAgICAgICAgICAgICBwcm9jLCBWb2lkLCBPcmlnaW4oKSwgZWZmZWN0cywKKyAgICAgICAg
ICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRh
Z0NGdW5jdGlvblB0cjx2b2lkKj4obm9PcEZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSkpOworICAg
ICAgICAKKyAgICAgICAgICAgIGVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgICAgICAg
ICBlZmZlY3RzLnJlYWRzID0gSGVhcFJhbmdlKDQ4ODYpOworICAgICAgICAgICAgcmV0dXJuIGxv
b3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwg
T3JpZ2luKCksIGVmZmVjdHMsCisgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0
UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG9uZUZ1bmN0
aW9uLCBCM0NDYWxsUHRyVGFnKSksCisgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsK
KyAgICAgICAgfSk7CisKKyAgICB1bnNpZ25lZCBjYWxsQ291bnQgPSAwOworICAgIGNvbXBpbGVB
bmRSdW48dm9pZD4ocHJvYywgJmNhbGxDb3VudCk7CisgICAgQ0hFQ0tfRVEoY2FsbENvdW50LCAx
dSk7Cit9CisKK3ZvaWQgdGVzdExJQ01SZWFkc1dyaXRlc092ZXJsYXBwaW5nSGVhcHMoKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIGdlbmVyYXRlTG9vcCgKKyAgICAgICAgcHJvYywKKyAg
ICAgICAgWyZdIChCYXNpY0Jsb2NrKiBsb29wLCBWYWx1ZSopIC0+IFZhbHVlKiB7CisgICAgICAg
ICAgICBFZmZlY3RzIGVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgICAgICAgICBlZmZl
Y3RzLndyaXRlcyA9IEhlYXBSYW5nZSg2NDM2LCA3NDQ1OCk7CisgICAgICAgICAgICBsb29wLT5h
cHBlbmROZXc8Q0NhbGxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVm9pZCwgT3JpZ2lu
KCksIGVmZmVjdHMsCisgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG5vT3BGdW5jdGlvbiwg
QjNDQ2FsbFB0clRhZykpKTsKKyAgICAgICAgCisgICAgICAgICAgICBlZmZlY3RzID0gRWZmZWN0
czo6bm9uZSgpOworICAgICAgICAgICAgZWZmZWN0cy5yZWFkcyA9IEhlYXBSYW5nZSg0ODg2NCwg
NzgyMzkpOworICAgICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigK
KyAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksIGVmZmVjdHMsCisgICAgICAg
ICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0
YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG9uZUZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSksCisgICAg
ICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAgfSk7CisKKyAgICB1bnNpZ25l
ZCBjYWxsQ291bnQgPSAwOworICAgIGNvbXBpbGVBbmRSdW48dm9pZD4ocHJvYywgJmNhbGxDb3Vu
dCk7CisgICAgQ0hFQ0tfRVEoY2FsbENvdW50LCAxMDB1KTsKK30KKwordm9pZCB0ZXN0TElDTURl
ZmF1bHRDYWxsKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBnZW5lcmF0ZUxvb3AoCisg
ICAgICAgIHByb2MsCisgICAgICAgIFsmXSAoQmFzaWNCbG9jayogbG9vcCwgVmFsdWUqKSAtPiBW
YWx1ZSogeworICAgICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigK
KyAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAg
bG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rp
b25QdHI8dm9pZCo+KG9uZUZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSksCisgICAgICAgICAgICAg
ICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAgfSk7CisKKyAgICB1bnNpZ25lZCBjYWxsQ291
bnQgPSAwOworICAgIGNvbXBpbGVBbmRSdW48dm9pZD4ocHJvYywgJmNhbGxDb3VudCk7CisgICAg
Q0hFQ0tfRVEoY2FsbENvdW50LCAxMDB1KTsKK30KKwordm9pZCB0ZXN0RGVwZW5kMzIoKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgVmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogZmlyc3Qg
PSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4o
KSwgcHRyLCAwKTsKKyAgICBWYWx1ZSogc2Vjb25kID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZh
bHVlPigKKyAgICAgICAgcHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwgcHRy
LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBw
cm9jLCBaRXh0MzIsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgRGVwZW5kLCBPcmlnaW4oKSwgZmlyc3QpKSksCisgICAgICAgIDQpOworICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgZmly
c3QsIHNlY29uZCkpOworCisgICAgaW50MzJfdCB2YWx1ZXNbMl07CisgICAgdmFsdWVzWzBdID0g
NDI7CisgICAgdmFsdWVzWzFdID0gMHhiZWVmOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVBy
b2MocHJvYyk7CisgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rp
b24oKmNvZGUsICJlb3IiKTsKKyAgICBlbHNlIGlmIChpc1g4NigpKSB7CisgICAgICAgIGNoZWNr
RG9lc05vdFVzZUluc3RydWN0aW9uKCpjb2RlLCAibWZlbmNlIik7CisgICAgICAgIGNoZWNrRG9l
c05vdFVzZUluc3RydWN0aW9uKCpjb2RlLCAibG9jayIpOworICAgIH0KKyAgICBDSEVDS19FUShp
bnZva2U8aW50MzJfdD4oKmNvZGUsIHZhbHVlcyksIDQyICsgMHhiZWVmKTsKK30KKwordm9pZCB0
ZXN0RGVwZW5kNjQoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
KyAgICBWYWx1ZSogZmlyc3QgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExv
YWQsIEludDY0LCBPcmlnaW4oKSwgcHRyLCAwKTsKKyAgICBWYWx1ZSogc2Vjb25kID0gcm9vdC0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywgTG9hZCwgSW50NjQsIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywg
QWRkLCBPcmlnaW4oKSwgcHRyLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBEZXBlbmQsIE9yaWdpbigpLCBmaXJzdCkpLAorICAgICAgICA4KTsKKyAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGZpcnN0LCBzZWNv
bmQpKTsKKworICAgIGludDY0X3QgdmFsdWVzWzJdOworICAgIHZhbHVlc1swXSA9IDQyOworICAg
IHZhbHVlc1sxXSA9IDB4YmVlZjsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2Mp
OworICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2Rl
LCAiZW9yIik7CisgICAgZWxzZSBpZiAoaXNYODYoKSkgeworICAgICAgICBjaGVja0RvZXNOb3RV
c2VJbnN0cnVjdGlvbigqY29kZSwgIm1mZW5jZSIpOworICAgICAgICBjaGVja0RvZXNOb3RVc2VJ
bnN0cnVjdGlvbigqY29kZSwgImxvY2siKTsKKyAgICB9CisgICAgQ0hFQ0tfRVEoaW52b2tlPGlu
dDY0X3Q+KCpjb2RlLCB2YWx1ZXMpLCA0MiArIDB4YmVlZik7Cit9CisKK3ZvaWQgdGVzdFdhc21C
b3VuZHNDaGVjayh1bnNpZ25lZCBvZmZzZXQpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
aWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEpCisgICAgICAgIHJldHVybjsKKyAgICBHUFJSZWcgcGlu
bmVkID0gR1BSSW5mbzo6YXJndW1lbnRHUFIxOworICAgIHByb2MucGluUmVnaXN0ZXIocGlubmVk
KTsKKworICAgIHByb2Muc2V0V2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxw
ZXJzJiBqaXQsIEdQUlJlZyBwaW5uZWRHUFIpIHsKKyAgICAgICAgQ0hFQ0tfRVEocGlubmVkR1BS
LCBwaW5uZWQpOworCisgICAgICAgIC8vIFRoaXMgc2hvdWxkIGFsd2F5cyB3b3JrIGJlY2F1c2Ug
YSBmdW5jdGlvbiB0aGlzIHNpbXBsZSBzaG91bGQgbmV2ZXIgaGF2ZSBjYWxsZWUKKyAgICAgICAg
Ly8gc2F2ZXMuCisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDQy
KSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBp
bG9ndWUoKTsKKyAgICAgICAgaml0LnJldCgpOworICAgIH0pOworCisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogbGVmdCA9IHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKKyAgICBpZiAocG9pbnRlclR5cGUoKSAhPSBJbnQzMikKKyAgICAgICAgbGVmdCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLCBsZWZ0KTsKKyAgICByb290
LT5hcHBlbmROZXc8V2FzbUJvdW5kc0NoZWNrVmFsdWU+KHByb2MsIE9yaWdpbigpLCBwaW5uZWQs
IGxlZnQsIG9mZnNldCk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAweDQyKTsKKyAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKworICAgIGF1dG8gY29k
ZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIHVpbnQzMl90IGJvdW5kID0gMiArIG9mZnNldDsK
KyAgICBhdXRvIGNvbXB1dGVSZXN1bHQgPSBbJl0gKHVpbnQzMl90IGlucHV0KSB7CisgICAgICAg
IHJldHVybiBpbnB1dCArIG9mZnNldCA8IGJvdW5kID8gMHg0MiA6IDQyOworICAgIH07CisKKyAg
ICBDSEVDS19FUShpbnZva2U8aW50MzJfdD4oKmNvZGUsIDEsIGJvdW5kKSwgY29tcHV0ZVJlc3Vs
dCgxKSk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludDMyX3Q+KCpjb2RlLCAzLCBib3VuZCksIGNv
bXB1dGVSZXN1bHQoMykpOworICAgIENIRUNLX0VRKGludm9rZTxpbnQzMl90PigqY29kZSwgMiwg
Ym91bmQpLCBjb21wdXRlUmVzdWx0KDIpKTsKK30KKwordm9pZCB0ZXN0V2FzbUFkZHJlc3MoKQor
eworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEdQUlJlZyBwaW5uZWRHUFIgPSBHUFJJbmZvOjph
cmd1bWVudEdQUjI7CisgICAgcHJvYy5waW5SZWdpc3RlcihwaW5uZWRHUFIpOworCisgICAgdW5z
aWduZWQgbG9vcENvdW50ID0gMTAwOworICAgIFZlY3Rvcjx1bnNpZ25lZD4gdmFsdWVzKGxvb3BD
b3VudCk7CisgICAgdW5zaWduZWQgbnVtVG9TdG9yZSA9IDQyOworCisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBoZWFkZXIgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogYm9keSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBC
YXNpY0Jsb2NrKiBjb250aW51YXRpb24gPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAvLyBSb290
CisgICAgVmFsdWUqIGxvb3BDb3VudFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBUcnVuYywgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIHZhbHVlVG9T
dG9yZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLCByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMSkpOworICAgIFVwc2lsb25WYWx1ZSogYmVnaW5VcHNpbG9uID0gcm9vdC0+YXBw
ZW5kTmV3PFVwc2lsb25WYWx1ZT4ocHJvYywgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKHByb2MsIEp1bXAsIE9yaWdpbigpLCBoZWFkZXIpOworCisgICAgLy8gSGVhZGVyCisg
ICAgVmFsdWUqIGluZGV4UGhpID0gaGVhZGVyLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFBoaSwg
SW50MzIsIE9yaWdpbigpKTsKKyAgICBoZWFkZXItPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9j
LCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICBoZWFkZXItPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQmVsb3csIE9yaWdpbigpLCBpbmRleFBoaSwgbG9vcENvdW50VmFsdWUpLAorICAgICAgICBi
b2R5LCBjb250aW51YXRpb24pOworCisgICAgLy8gQm9keQorICAgIFZhbHVlKiBwb2ludGVyID0g
Ym9keS0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBpbmRleFBoaSwKKyAg
ICAgICAgYm9keS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHNpemVv
Zih1bnNpZ25lZCkpKTsKKyAgICBwb2ludGVyID0gYm9keS0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBaRXh0MzIsIE9yaWdpbigpLCBwb2ludGVyKTsKKyAgICBib2R5LT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KHByb2MsIFN0b3JlLCBPcmlnaW4oKSwgdmFsdWVUb1N0b3JlLAorICAgICAgICBib2R5
LT5hcHBlbmROZXc8V2FzbUFkZHJlc3NWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHBvaW50ZXIsIHBp
bm5lZEdQUiksIDApOworICAgIFVwc2lsb25WYWx1ZSogaW5jVXBzaWxvbiA9IGJvZHktPmFwcGVu
ZE5ldzxVcHNpbG9uVmFsdWU+KHByb2MsIE9yaWdpbigpLAorICAgICAgICBib2R5LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGluZGV4UGhpLAorICAgICAgICAgICAgYm9k
eS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKSk7CisgICAgYm9k
eS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIEp1bXAsIE9yaWdpbigpLCBoZWFkZXIpOwor
CisgICAgLy8gQ29udGludWF0aW9uCisgICAgY29udGludWF0aW9uLT5hcHBlbmROZXdDb250cm9s
VmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisKKyAgICBiZWdpblVwc2lsb24tPnNldFBo
aShpbmRleFBoaSk7CisgICAgaW5jVXBzaWxvbi0+c2V0UGhpKGluZGV4UGhpKTsKKworCisgICAg
YXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCBs
b29wQ291bnQsIG51bVRvU3RvcmUsIHZhbHVlcy5kYXRhKCkpOworICAgIGZvciAodW5zaWduZWQg
dmFsdWUgOiB2YWx1ZXMpCisgICAgICAgIENIRUNLX0VRKG51bVRvU3RvcmUsIHZhbHVlKTsKK30K
Kwordm9pZCB0ZXN0RmFzdFRMU0xvYWQoKQoreworI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCisg
ICAgX3B0aHJlYWRfc2V0c3BlY2lmaWNfZGlyZWN0KFdURl9URVNUSU5HX0tFWSwgYml0d2lzZV9j
YXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDB4YmVlZikpKTsKKworICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAg
ICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2lu
dFZhbHVlPihwcm9jLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSk7CisgICAgcGF0Y2hwb2ludC0+
Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgIHBhdGNo
cG9pbnQtPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29u
c3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIEFsbG93
TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAgICAg
IGppdC5sb2FkRnJvbVRMU1B0cihmYXN0VExTT2Zmc2V0Rm9yS2V5KFdURl9URVNUSU5HX0tFWSks
IHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgIH0pOworCisgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBwYXRjaHBvaW50KTsKKworICAgIENIRUNLX0VR
KGNvbXBpbGVBbmRSdW48dWludHB0cl90Pihwcm9jKSwgc3RhdGljX2Nhc3Q8dWludHB0cl90Pigw
eGJlZWYpKTsKKyNlbmRpZgorfQorCit2b2lkIHRlc3RGYXN0VExTU3RvcmUoKQoreworI2lmIEVO
QUJMRShGQVNUX1RMU19KSVQpCisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2lu
dCA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigp
KTsKKyAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdp
c3RlcnMoKSk7CisgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMTsKKyAg
ICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAg
ICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAg
ICAgICAgICBHUFJSZWcgc2NyYXRjaCA9IHBhcmFtcy5ncFNjcmF0Y2goMCk7CisgICAgICAgICAg
ICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigweGRlYWQpLCBzY3JhdGNoKTsK
KyAgICAgICAgICAgIGppdC5zdG9yZVRvVExTUHRyKHNjcmF0Y2gsIGZhc3RUTFNPZmZzZXRGb3JL
ZXkoV1RGX1RFU1RJTkdfS0VZKSk7CisgICAgICAgIH0pOworCisgICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworCisgICAgY29tcGlsZUFuZFJ1
bjx2b2lkPihwcm9jKTsKKyAgICBDSEVDS19FUShiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihfcHRo
cmVhZF9nZXRzcGVjaWZpY19kaXJlY3QoV1RGX1RFU1RJTkdfS0VZKSksIHN0YXRpY19jYXN0PHVp
bnRwdHJfdD4oMHhkZWFkKSk7CisjZW5kaWYKK30KKworc3RhdGljIE5FVkVSX0lOTElORSBib29s
IGRvdWJsZUVxKGRvdWJsZSBhLCBkb3VibGUgYikgeyByZXR1cm4gYSA9PSBiOyB9CitzdGF0aWMg
TkVWRVJfSU5MSU5FIGJvb2wgZG91YmxlTmVxKGRvdWJsZSBhLCBkb3VibGUgYikgeyByZXR1cm4g
YSAhPSBiOyB9CitzdGF0aWMgTkVWRVJfSU5MSU5FIGJvb2wgZG91YmxlR3QoZG91YmxlIGEsIGRv
dWJsZSBiKSB7IHJldHVybiBhID4gYjsgfQorc3RhdGljIE5FVkVSX0lOTElORSBib29sIGRvdWJs
ZUd0ZShkb3VibGUgYSwgZG91YmxlIGIpIHsgcmV0dXJuIGEgPj0gYjsgfQorc3RhdGljIE5FVkVS
X0lOTElORSBib29sIGRvdWJsZUx0KGRvdWJsZSBhLCBkb3VibGUgYikgeyByZXR1cm4gYSA8IGI7
IH0KK3N0YXRpYyBORVZFUl9JTkxJTkUgYm9vbCBkb3VibGVMdGUoZG91YmxlIGEsIGRvdWJsZSBi
KSB7IHJldHVybiBhIDw9IGI7IH0KKwordm9pZCB0ZXN0RG91YmxlTGl0ZXJhbENvbXBhcmlzb24o
ZG91YmxlIGEsIGRvdWJsZSBiKQoreworICAgIHVzaW5nIFRlc3QgPSBzdGQ6OnR1cGxlPEIzOjpP
cGNvZGUsIGJvb2wgKCopKGRvdWJsZSwgZG91YmxlKT47CisgICAgU3RkTGlzdDxUZXN0PiB0ZXN0
cyA9IHsKKyAgICAgICAgVGVzdCB7IE5vdEVxdWFsLCBkb3VibGVOZXEgfSwKKyAgICAgICAgVGVz
dCB7IEVxdWFsLCBkb3VibGVFcSB9LAorICAgICAgICBUZXN0IHsgRXF1YWxPclVub3JkZXJlZCwg
ZG91YmxlRXEgfSwKKyAgICAgICAgVGVzdCB7IEdyZWF0ZXJUaGFuLCBkb3VibGVHdCB9LAorICAg
ICAgICBUZXN0IHsgR3JlYXRlckVxdWFsLCBkb3VibGVHdGUgfSwKKyAgICAgICAgVGVzdCB7IExl
c3NUaGFuLCBkb3VibGVMdCB9LAorICAgICAgICBUZXN0IHsgTGVzc0VxdWFsLCBkb3VibGVMdGUg
fSwKKyAgICB9OworCisgICAgZm9yIChjb25zdCBUZXN0JiB0ZXN0IDogdGVzdHMpIHsKKyAgICAg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgICAgIFZhbHVlKiB2YWx1ZUEgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3Vi
bGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpOworICAgICAgICBWYWx1ZSogdmFsdWVCID0gcm9v
dC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKTsKKworICAg
ICAgICAvLyBUaGlzIGlzIGhlcmUganVzdCB0byBtYWtlIHJlZHVjZURvdWJsZVRvRmxvYXQgZG8g
dGhpbmdzLgorICAgICAgICBWYWx1ZSogdmFsdWVDID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91
YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwLjApOworICAgICAgICBWYWx1ZSogdmFsdWVBc0Zs
b2F0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4o
KSwgdmFsdWVDKTsKKworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAg
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBzdGQ6OmdldDwwPih0ZXN0KSwgT3JpZ2lu
KCksIHZhbHVlQSwgdmFsdWVCKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBFcXVhbCwgT3JpZ2luKCksIHZhbHVlQXNGbG9hdCwgdmFsdWVBc0Zsb2F0
KSkpOworCisgICAgICAgIENIRUNLKCEhY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jKSA9PSBz
dGQ6OmdldDwxPih0ZXN0KShhLCBiKSk7CisgICAgfQorfQorCit2b2lkIHRlc3RGbG9hdEVxdWFs
T3JVbm9yZGVyZWRGb2xkaW5nKCkKK3sKKyAgICBmb3IgKGF1dG8mIGZpcnN0IDogZmxvYXRpbmdQ
b2ludE9wZXJhbmRzPGZsb2F0PigpKSB7CisgICAgICAgIGZvciAoYXV0byYgc2Vjb25kIDogZmxv
YXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKSB7CisgICAgICAgICAgICBmbG9hdCBhID0gZmly
c3QudmFsdWU7CisgICAgICAgICAgICBmbG9hdCBiID0gc2Vjb25kLnZhbHVlOworICAgICAgICAg
ICAgYm9vbCBleHBlY3RlZFJlc3VsdCA9IChhID09IGIpIHx8IHN0ZDo6aXN1bm9yZGVyZWQoYSwg
Yik7CisgICAgICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgICAgICBWYWx1ZSogY29uc3RBID0gcm9v
dC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpOworICAgICAg
ICAgICAgVmFsdWUqIGNvbnN0QiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBiKTsKKworICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywgRXF1YWxPclVub3JkZXJlZCwg
T3JpZ2luKCksCisgICAgICAgICAgICAgICAgICAgIGNvbnN0QSwKKyAgICAgICAgICAgICAgICAg
ICAgY29uc3RCKSk7CisgICAgICAgICAgICBDSEVDSyghIWNvbXBpbGVBbmRSdW48aW50MzJfdD4o
cHJvYykgPT0gZXhwZWN0ZWRSZXN1bHQpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRl
c3RGbG9hdEVxdWFsT3JVbm9yZGVyZWRGb2xkaW5nTmFOKCkKK3sKKyAgICBTdGRMaXN0PGZsb2F0
PiBuYW5zID0geworICAgICAgICBiaXR3aXNlX2Nhc3Q8ZmxvYXQ+KDB4ZmZmZmZmZmQpLAorICAg
ICAgICBiaXR3aXNlX2Nhc3Q8ZmxvYXQ+KDB4ZmZmZmZmZmUpLAorICAgICAgICBiaXR3aXNlX2Nh
c3Q8ZmxvYXQ+KDB4ZmZmZmZmZjApLAorICAgICAgICBzdGF0aWNfY2FzdDxmbG9hdD4oUE5hTiks
CisgICAgfTsKKworICAgIHVuc2lnbmVkIGkgPSAwOworICAgIGZvciAoZmxvYXQgbmFuIDogbmFu
cykgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChzdGQ6OmlzbmFuKG5hbikpOworICAgICAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICAgICAgVmFsdWUqIGEgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgbmFuKTsKKyAgICAgICAgVmFsdWUqIGIgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1
bWVudEZQUjApKTsKKworICAgICAgICBpZiAoaSAlIDIpCisgICAgICAgICAgICBzdGQ6OnN3YXAo
YSwgYik7CisgICAgICAgICsraTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEVxdWFsT3JVbm9yZGVyZWQsIE9yaWdpbigpLCBhLCBiKSk7CisgICAgICAgIENI
RUNLKCEhY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBzdGF0aWNfY2FzdDxkb3VibGU+KDEu
MCkpKTsKKyAgICB9Cit9CisKK3ZvaWQgdGVzdEZsb2F0RXF1YWxPclVub3JkZXJlZERvbnRGb2xk
KCkKK3sKKyAgICBmb3IgKGF1dG8mIGZpcnN0IDogZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0
PigpKSB7CisgICAgICAgIGZsb2F0IGEgPSBmaXJzdC52YWx1ZTsKKyAgICAgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAg
ICAgIFZhbHVlKiBjb25zdEEgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgYSk7CisgICAgICAgIFZhbHVlKiBiID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRG
UFIwKSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAg
ICAgICAgICBwcm9jLCBFcXVhbE9yVW5vcmRlcmVkLCBPcmlnaW4oKSwgY29uc3RBLCBiKSk7CisK
KyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICAgICAgZm9yIChh
dXRvJiBzZWNvbmQgOiBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpIHsKKyAgICAgICAg
ICAgIGZsb2F0IGIgPSBzZWNvbmQudmFsdWU7CisgICAgICAgICAgICBib29sIGV4cGVjdGVkUmVz
dWx0ID0gKGEgPT0gYikgfHwgc3RkOjppc3Vub3JkZXJlZChhLCBiKTsKKyAgICAgICAgICAgIENI
RUNLKCEhaW52b2tlPGludDMyX3Q+KCpjb2RlLCBzdGF0aWNfY2FzdDxkb3VibGU+KGIpKSA9PSBl
eHBlY3RlZFJlc3VsdCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGZ1bmN0
aW9uTmluZUFyZ3MoaW50MzJfdCwgdm9pZCosIHZvaWQqLCB2b2lkKiwgdm9pZCosIHZvaWQqLCB2
b2lkKiwgdm9pZCosIHZvaWQqKSB7IH0KKwordm9pZCB0ZXN0U2h1ZmZsZURvZXNudFRyYXNoQ2Fs
bGVlU2F2ZXMoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworCisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBsaWtlbHkgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgQmFzaWNCbG9jayogdW5saWtlbHkgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAg
ICBSZWdpc3RlclNldCByZWdzID0gUmVnaXN0ZXJTZXQ6OmFsbEdQUnMoKTsKKyAgICByZWdzLmV4
Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkpOworICAgIHJlZ3MuZXhjbHVkZShS
ZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycygpKTsKKyAgICByZWdzLmV4Y2x1
ZGUoUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CisgICAgcmVncy5leGNsdWRl
KFJlZ2lzdGVyU2V0Ojphcmd1bWVudEdQUlMoKSk7CisKKyAgICB1bnNpZ25lZCBpID0gMDsKKyAg
ICBWZWN0b3I8VmFsdWUqPiBwYXRjaGVzOworICAgIGZvciAoUmVnIHJlZyA6IHJlZ3MpIHsKKyAg
ICAgICAgKytpOworICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5h
cHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBJbnQzMiwgT3JpZ2luKCkpOworICAgICAg
ICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMo
KSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlZy5pc0dQUigpKTsKKyAgICAgICAgcGF0Y2hw
b2ludC0+cmVzdWx0Q29uc3RyYWludCA9IFZhbHVlUmVwOjpyZWcocmVnLmdwcigpKTsKKyAgICAg
ICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAorICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAg
ICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGpp
dCk7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
aSksIHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgcGF0Y2hlcy5h
cHBlbmQocGF0Y2hwb2ludCk7CisgICAgfQorCisgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OnRvQXJndW1l
bnRSZWdpc3RlcigwICUgR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycykpOworICAg
IFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIoMSAlIEdQUkluZm86Om51bWJlck9m
QXJndW1lbnRSZWdpc3RlcnMpKTsKKyAgICBWYWx1ZSogYXJnMyA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6dG9Bcmd1bWVudFJlZ2lz
dGVyKDIgJSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzKSk7CisgICAgVmFsdWUq
IGFyZzQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3RlcigzICUgR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVu
dFJlZ2lzdGVycykpOworICAgIFZhbHVlKiBhcmc1ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIoNCAl
IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMpKTsKKyAgICBWYWx1ZSogYXJnNiA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6dG9Bcmd1bWVudFJlZ2lzdGVyKDUgJSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0
ZXJzKSk7CisgICAgVmFsdWUqIGFyZzcgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3Rlcig2ICUgR1BSSW5m
bzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycykpOworICAgIFZhbHVlKiBhcmc4ID0gcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjp0b0Fy
Z3VtZW50UmVnaXN0ZXIoNyAlIEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMpKTsK
KworICAgIFBhdGNocG9pbnRWYWx1ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRW
YWx1ZT4ocHJvYywgSW50NjQsIE9yaWdpbigpKTsKKyAgICBwdHItPmNsb2JiZXIoUmVnaXN0ZXJT
ZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICBwdHItPnJlc3VsdENvbnN0cmFpbnQg
PSBWYWx1ZVJlcDo6cmVnKEdQUkluZm86OnJlZ0NTMCk7CisgICAgcHRyLT5hcHBlbmRTb21lUmVn
aXN0ZXIoYXJnMSk7CisgICAgcHRyLT5zZXRHZW5lcmF0b3IoCisgICAgICAgIFs9XSAoQ0NhbGxI
ZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Cisg
ICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGpp
dCk7CisgICAgICAgICAgICBqaXQubW92ZShwYXJhbXNbMV0uZ3ByKCksIHBhcmFtc1swXS5ncHIo
KSk7CisgICAgICAgIH0pOworCisgICAgVmFsdWUqIGNvbmRpdGlvbiA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4oKSwgCisgICAgICAgIHB0ciwK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDAp
KTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgQnJh
bmNoLCBPcmlnaW4oKSwKKyAgICAgICAgY29uZGl0aW9uLAorICAgICAgICBGcmVxdWVudGVkQmxv
Y2sobGlrZWx5LCBGcmVxdWVuY3lDbGFzczo6Tm9ybWFsKSwgRnJlcXVlbnRlZEJsb2NrKHVubGlr
ZWx5LCBGcmVxdWVuY3lDbGFzczo6UmFyZSkpOworCisgICAgLy8gTmV2ZXIgZXhlY3V0ZXMuCisg
ICAgVmFsdWUqIGNvbnN0NDIgPSBsaWtlbHktPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCA0Mik7CisgICAgbGlrZWx5LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgY29uc3Q0Mik7CisKKyAgICAvLyBBbHdheXMgZXhlY3V0ZXMuCisg
ICAgVmFsdWUqIGNvbnN0TnVtYmVyID0gdW5saWtlbHktPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCAweDEpOworCisgICAgdW5saWtlbHktPmFwcGVuZE5ldzxDQ2FsbFZh
bHVlPigKKyAgICAgICAgcHJvYywgVm9pZCwgT3JpZ2luKCksCisgICAgICAgIHVubGlrZWx5LT5h
cHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2
b2lkKj4oZnVuY3Rpb25OaW5lQXJncywgQjNDQ2FsbFB0clRhZykpLAorICAgICAgICBjb25zdE51
bWJlciwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSwgYXJnNiwgYXJnNywgYXJnOCk7CisK
KyAgICBQYXRjaHBvaW50VmFsdWUqIHZvaWRQYXRjaCA9IHVubGlrZWx5LT5hcHBlbmROZXc8UGF0
Y2hwb2ludFZhbHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7CisgICAgdm9pZFBhdGNoLT5jbG9i
YmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgZm9yIChWYWx1
ZSogdiA6IHBhdGNoZXMpCisgICAgICAgIHZvaWRQYXRjaC0+YXBwZW5kU29tZVJlZ2lzdGVyKHYp
OworICAgIHZvaWRQYXRjaC0+YXBwZW5kU29tZVJlZ2lzdGVyKGFyZzEpOworICAgIHZvaWRQYXRj
aC0+YXBwZW5kU29tZVJlZ2lzdGVyKGFyZzIpOworICAgIHZvaWRQYXRjaC0+YXBwZW5kU29tZVJl
Z2lzdGVyKGFyZzMpOworICAgIHZvaWRQYXRjaC0+YXBwZW5kU29tZVJlZ2lzdGVyKGFyZzQpOwor
ICAgIHZvaWRQYXRjaC0+YXBwZW5kU29tZVJlZ2lzdGVyKGFyZzUpOworICAgIHZvaWRQYXRjaC0+
YXBwZW5kU29tZVJlZ2lzdGVyKGFyZzYpOworICAgIHZvaWRQYXRjaC0+c2V0R2VuZXJhdG9yKFs9
XSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsK
KworICAgIHVubGlrZWx5LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKKyAgICAgICAgdW5saWtlbHktPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9h
ZCwgSW50MzIsIE9yaWdpbigpLCBwdHIpKTsKKworICAgIGludDMyX3QqIGlucHV0UHRyID0gc3Rh
dGljX2Nhc3Q8aW50MzJfdCo+KGZhc3RNYWxsb2Moc2l6ZW9mKGludDMyX3QpKSk7CisgICAgKmlu
cHV0UHRyID0gNDg7CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBpbnB1
dFB0cikgPT0gNDgpOworICAgIGZhc3RGcmVlKGlucHV0UHRyKTsKK30KKwordm9pZCB0ZXN0RGVt
b3RlUGF0Y2hwb2ludFRlcm1pbmFsKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKworICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogZG9uZSA9
IHByb2MuYWRkQmxvY2soKTsKKworICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IHJv
b3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIEludDMyLCBPcmlnaW4oKSk7Cisg
ICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy50ZXJtaW5hbCA9IHRydWU7CisgICAgcm9vdC0+c2V0U3Vj
Y2Vzc29ycyhkb25lKTsKKworICAgIGRvbmUtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwgcGF0Y2hwb2ludCk7CisKKyAgICBwcm9jLnJlc2V0UmVhY2hhYmlsaXR5KCk7
CisgICAgYnJlYWtDcml0aWNhbEVkZ2VzKHByb2MpOworICAgIEluZGV4U2V0PFZhbHVlKj4gdmFs
dWVzVG9EZW1vdGU7CisgICAgdmFsdWVzVG9EZW1vdGUuYWRkKHBhdGNocG9pbnQpOworICAgIGRl
bW90ZVZhbHVlcyhwcm9jLCB2YWx1ZXNUb0RlbW90ZSk7CisgICAgdmFsaWRhdGUocHJvYyk7Cit9
CisKK3ZvaWQgdGVzdFJlcG9ydFVzZWRSZWdpc3RlcnNMYXRlVXNlRm9sbG93ZWRCeUVhcmx5RGVm
RG9lc05vdE1hcmtVc2VBc0RlYWQoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIGlmIChw
cm9jLm9wdExldmVsKCkgPCAyKQorICAgICAgICByZXR1cm47CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFJlZ2lzdGVyU2V0IGFsbFJlZ3MgPSBSZWdpc3Rl
clNldDo6YWxsR1BScygpOworICAgIGFsbFJlZ3MuZXhjbHVkZShSZWdpc3RlclNldDo6c3RhY2tS
ZWdpc3RlcnMoKSk7CisgICAgYWxsUmVncy5leGNsdWRlKFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhh
cmR3YXJlUmVnaXN0ZXJzKCkpOworCisgICAgeworICAgICAgICAvLyBNYWtlIGV2ZXJ5IHJlZyA0
MiAoanVzdCBuZWVkcyB0byBiZSBhIHZhbHVlIG90aGVyIHRoYW4gMTApLgorICAgICAgICBQYXRj
aHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVl
Pihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7CisgICAgICAgIFZhbHVlKiBjb25zdDQyID0gcm9vdC0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKTsKKyAgICAgICAgZm9y
IChSZWcgcmVnIDogYWxsUmVncykKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChjb25z
dDQyLCBWYWx1ZVJlcDo6cmVnKHJlZykpOworICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0
b3IoWyZdIChDQ2FsbEhlbHBlcnMmLCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7
IH0pOworICAgIH0KKworICAgIHsKKyAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50
ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgVm9pZCwgT3JpZ2luKCkp
OworICAgICAgICBWYWx1ZSogY29uc3QxMCA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCAxMCk7CisgICAgICAgIGZvciAoUmVnIHJlZyA6IGFsbFJlZ3MpCisg
ICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoY29uc3QxMCwgVmFsdWVSZXA6OmxhdGVSZWco
cmVnKSk7CisgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVy
cyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgICAgICAgICBm
b3IgKFJlZyByZWcgOiBhbGxSZWdzKSB7CisgICAgICAgICAgICAgICAgYXV0byBkb25lID0gaml0
LmJyYW5jaDMyKENDYWxsSGVscGVyczo6RXF1YWwsIHJlZy5ncHIoKSwgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoMTApKTsKKyAgICAgICAgICAgICAgICBqaXQuYnJlYWtwb2ludCgpOworICAg
ICAgICAgICAgICAgIGRvbmUubGluaygmaml0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7
CisgICAgfQorCisgICAgeworICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBy
b290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBJbnQzMiwgT3JpZ2luKCkpOwor
ICAgICAgICBwYXRjaHBvaW50LT5yZXN1bHRDb25zdHJhaW50ID0gVmFsdWVSZXA6OlNvbWVFYXJs
eVJlZ2lzdGVyOworICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhl
bHBlcnMmLCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoYWxsUmVncy5jb250YWlucyhwYXJhbXNbMF0uZ3ByKCkpKTsK
KyAgICAgICAgfSk7CisgICAgfQorCisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHBy
b2MsIFJldHVybiwgT3JpZ2luKCkpOworCisgICAgY29tcGlsZUFuZFJ1bjx2b2lkPihwcm9jKTsK
K30KKwordm9pZCB0ZXN0SW5maW5pdGVMb29wRG9lc250Q2F1c2VCYWRIb2lzdGluZygpCit7Cisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDIpCisgICAgICAg
IHJldHVybjsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJh
c2ljQmxvY2sqIGhlYWRlciA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBsb2Fk
QmxvY2sgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogcG9zdExvYWRCbG9jayA9
IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBhcmcgPSByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Cisg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIEp1bXAsIE9yaWdpbigpLCBoZWFk
ZXIpOworCisgICAgaGVhZGVyLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2Ms
IEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgIGhlYWRlci0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBFcXVhbCwgT3JpZ2luKCksCisgICAgICAgICAgICBhcmcsCisgICAgICAgICAgICBoZWFkZXIt
PmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAxMCkpLCBoZWFkZXIsIGxv
YWRCbG9jayk7CisKKyAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBsb2FkQmxvY2st
PmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKKyAgICBw
YXRjaHBvaW50LT5lZmZlY3RzID0gRWZmZWN0czo6bm9uZSgpOworICAgIHBhdGNocG9pbnQtPmVm
ZmVjdHMud3JpdGVzTG9jYWxTdGF0ZSA9IHRydWU7IC8vIERvbid0IERDRSB0aGlzLgorICAgIHBh
dGNocG9pbnQtPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwg
Y29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICAgICAgLy8gVGhpcyB3
b3JrcyBiZWNhdXNlIHdlIGRvbid0IGhhdmUgY2FsbGVlIHNhdmVzLgorICAgICAgICAgICAgaml0
LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAg
IH0pOworCisgICAgVmFsdWUqIGJhZExvYWQgPSBsb2FkQmxvY2stPmFwcGVuZE5ldzxNZW1vcnlW
YWx1ZT4ocHJvYywgTG9hZCwgSW50NjQsIE9yaWdpbigpLCBhcmcsIDApOworCisgICAgbG9hZEJs
b2NrLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2lu
KCksCisgICAgICAgIGxvYWRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBFcXVhbCwgT3Jp
Z2luKCksCisgICAgICAgICAgICBiYWRMb2FkLAorICAgICAgICAgICAgbG9hZEJsb2NrLT5hcHBl
bmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDUpKSwgaGVhZGVyLCBwb3N0TG9h
ZEJsb2NrKTsKKworICAgIHBvc3RMb2FkQmxvY2stPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLCBiYWRMb2FkKTsKKworICAgIC8vIFRoZSBwYXRjaHBvaW50IGVh
cmx5IHJldCgpIHdvcmtzIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBjYWxsZWUgc2F2ZXMuCisgICAg
YXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgUkVMRUFTRV9BU1NFUlQoIXByb2Mu
Y2FsbGVlU2F2ZVJlZ2lzdGVyQXRPZmZzZXRMaXN0KCkuc2l6ZSgpKTsgCisgICAgaW52b2tlPHZv
aWQ+KCpjb2RlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oNTUpKTsgLy8gU2hvdWxkbid0IGNyYXNo
IGRlcmVmZXJuY2luZyA1NS4KK30KKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzguY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL3Rlc3RiM184LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZjY3MjdjZTVhMGYwOWU4ZDVk
MzkxNjkwZTkxZDkwMjdiM2Q3NjBkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL3Rlc3RiM184LmNwcApAQCAtMCwwICsxLDg2OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgInRlc3RiMy5oIgorCisjaWYgRU5BQkxFKEIzX0pJVCkKKwordGVtcGxhdGU8dHlw
ZW5hbWUgVD4KK3ZvaWQgdGVzdEF0b21pY1dlYWtDQVMoKQoreworICAgIFR5cGUgdHlwZSA9IE5h
dGl2ZVRyYWl0czxUPjo6dHlwZTsKKyAgICBXaWR0aCB3aWR0aCA9IE5hdGl2ZVRyYWl0czxUPjo6
d2lkdGg7CisKKyAgICBhdXRvIGNoZWNrTXlEaXNhc3NlbWJseSA9IFsmXSAoQ29tcGlsYXRpb24m
IGNvbXBpbGF0aW9uLCBib29sIGZlbmNlZCkgeworICAgICAgICBpZiAoaXNYODYoKSkgeworICAg
ICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJsb2NrIik7CisgICAg
ICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImNtcHhjaGciKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChmZW5jZWQpIHsKKyAgICAgICAgICAgICAg
ICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImxkYXgiKTsKKyAgICAgICAgICAg
ICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgInN0bHgiKTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGls
YXRpb24sICJsZHgiKTsKKyAgICAgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21w
aWxhdGlvbiwgInN0eCIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKKworICAg
IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIHJlbG9vcCA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogZG9uZSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAK
KyAgICAgICAgVmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBKdW1wLCBPcmlnaW4oKSk7CisgICAgICAgIHJvb3QtPnNldFN1
Y2Nlc3NvcnMocmVsb29wKTsKKyAgICAKKyAgICAgICAgcmVsb29wLT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJlbG9v
cC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNX
ZWFrQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAgICAgICAgcmVsb29wLT5hcHBlbmRJ
bnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgIHJl
bG9vcC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisg
ICAgICAgICAgICAgICAgcHRyKSk7CisgICAgICAgIHJlbG9vcC0+c2V0U3VjY2Vzc29ycyhkb25l
LCByZWxvb3ApOworICAgIAorICAgICAgICBkb25lLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJl
dHVybiwgT3JpZ2luKCkpOworICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhw
cm9jKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA0MjsKKyAgICAg
ICAgdmFsdWVbMV0gPSAxMzsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7Cisg
ICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigweGJlZWYpKTsKKyAgICAg
ICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpj
b2RlLCB0cnVlKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAg
ICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Js
b2NrKiByZWxvb3AgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIGRvbmUg
PSBwcm9jLmFkZEJsb2NrKCk7CisgICAgCisgICAgICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSnVtcCwgT3JpZ2lu
KCkpOworICAgICAgICByb290LT5zZXRTdWNjZXNzb3JzKHJlbG9vcCk7CisgICAgCisgICAgICAg
IHJlbG9vcC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJyYW5jaCwgT3Jp
Z2luKCksCisgICAgICAgICAgICByZWxvb3AtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAg
ICAgICAgICAgICAgcHJvYywgQXRvbWljV2Vha0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAgICAg
ICAgICAgICAgIHJlbG9vcC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUs
IDQyKSwKKyAgICAgICAgICAgICAgICByZWxvb3AtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9y
aWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAgIHB0ciwgMCwgSGVhcFJhbmdl
KDQyKSwgSGVhcFJhbmdlKCkpKTsKKyAgICAgICAgcmVsb29wLT5zZXRTdWNjZXNzb3JzKGRvbmUs
IHJlbG9vcCk7CisgICAgCisgICAgICAgIGRvbmUtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0
dXJuLCBPcmlnaW4oKSk7CisgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHBy
b2MpOworICAgICAgICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAg
ICB2YWx1ZVsxXSA9IDEzOworICAgICAgICBpbnZva2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsKKyAg
ICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDB4YmVlZikpOworICAgICAg
ICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNv
ZGUsIGZhbHNlKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAg
ICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Js
b2NrKiBzdWNjID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBmYWlsID0g
cHJvYy5hZGRCbG9jaygpOworICAgIAorICAgICAgICBWYWx1ZSogcHRyID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywg
QnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1
ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgQXRvbWljV2Vha0NBUywgT3JpZ2luKCksIHdpZHRo
LAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigp
LCB0eXBlLCA0MiksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJv
YywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgcHRyKSk7CisgICAg
ICAgIHJvb3QtPnNldFN1Y2Nlc3NvcnMoc3VjYywgZmFpbCk7CisgICAgCisgICAgICAgIHN1Y2Mt
PmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBzdG9yZU9wY29kZShH
UCwgd2lkdGgpLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHN1Y2MtPmFwcGVuZEludENvbnN0YW50
KHByb2MsIE9yaWdpbigpLCB0eXBlLCAxMDApLAorICAgICAgICAgICAgcHRyKTsKKyAgICAgICAg
c3VjYy0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAKKyAg
ICAgICAgZmFpbC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAg
ICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIFQgdmFs
dWVbMl07CisgICAgICAgIHZhbHVlWzBdID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7Cisg
ICAgICAgIHdoaWxlICh2YWx1ZVswXSA9PSA0MikKKyAgICAgICAgICAgIGludm9rZTx2b2lkPigq
Y29kZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4o
MTAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIHZhbHVlWzBd
ID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1
ZSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigzMDApKTsKKyAg
ICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5
KCpjb2RlLCB0cnVlKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOwor
ICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNp
Y0Jsb2NrKiBzdWNjID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBmYWls
ID0gcHJvYy5hZGRCbG9jaygpOworICAgIAorICAgICAgICBWYWx1ZSogcHRyID0gcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJv
YywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAorICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgIHByb2Ms
IEF0b21pY1dlYWtDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgcm9v
dC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAg
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUs
IDB4YmVlZiksCisgICAgICAgICAgICAgICAgICAgIHB0ciksCisgICAgICAgICAgICAgICAgcm9v
dC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIEludDMyLCAwKSkpOworICAgICAg
ICByb290LT5zZXRTdWNjZXNzb3JzKGZhaWwsIHN1Y2MpOworICAgIAorICAgICAgICBzdWNjLT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgc3RvcmVPcGNvZGUoR1As
IHdpZHRoKSwgT3JpZ2luKCksCisgICAgICAgICAgICBzdWNjLT5hcHBlbmRJbnRDb25zdGFudChw
cm9jLCBPcmlnaW4oKSwgdHlwZSwgMTAwKSwKKyAgICAgICAgICAgIHB0cik7CisgICAgICAgIHN1
Y2MtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAgCisgICAg
ICAgIGZhaWwtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAg
CisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBUIHZhbHVl
WzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9IDEzOworICAg
ICAgICB3aGlsZSAodmFsdWVbMF0gPT0gNDIpCisgICAgICAgICAgICBpbnZva2U8dm9pZD4oKmNv
ZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDEw
MCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICB2YWx1ZVswXSA9
IHN0YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAgIGludm9rZTx2b2lkPigqY29kZSwgdmFsdWUp
OworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7CisgICAg
ICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgq
Y29kZSwgdHJ1ZSk7CisgICAgfQorCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAg
ICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAgICAg
IHByb2MsIEF0b21pY1dlYWtDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAw
eGJlZWYpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOworICAgIAorICAgICAg
ICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAg
ICAgICAgdmFsdWVbMF0gPSA0MjsKKyAgICAgICAgdmFsdWVbMV0gPSAxMzsKKyAgICAgICAgd2hp
bGUgKCFpbnZva2U8Ym9vbD4oKmNvZGUsIHZhbHVlKSkgeyB9CisgICAgICAgIENIRUNLX0VRKHZh
bHVlWzBdLCBzdGF0aWNfY2FzdDxUPigweGJlZWYpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVb
MV0sIDEzKTsKKyAgICAKKyAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxUPigzMDApOwor
ICAgICAgICBDSEVDSyghaW52b2tlPGJvb2w+KCpjb2RlLCB2YWx1ZSkpOworICAgICAgICBDSEVD
S19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENIRUNLX0VRKHZh
bHVlWzFdLCAxMyk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwgdHJ1ZSk7Cisg
ICAgfQorCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAg
ICAgICAgICAgICAgICBwcm9jLCBBdG9taWNXZWFrQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCisgICAg
ICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0
eXBlLCA0MiksCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHBy
b2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCkpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCAwKSkpOworICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxl
UHJvYyhwcm9jKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA0MjsK
KyAgICAgICAgdmFsdWVbMV0gPSAxMzsKKyAgICAgICAgd2hpbGUgKGludm9rZTxib29sPigqY29k
ZSwgdmFsdWUpKSB7IH0KKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+
KDB4YmVlZikpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgIAorICAgICAg
ICB2YWx1ZVswXSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAgIENIRUNLKGludm9rZTxi
b29sPigqY29kZSwgdmFsdWUpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19j
YXN0PFQ+KDMwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICBj
aGVja015RGlzYXNzZW1ibHkoKmNvZGUsIHRydWUpOworICAgIH0KKworICAgIHsKKyAgICAgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVl
PigKKyAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNXZWFrQ0FTLCBPcmlnaW4oKSwgd2lkdGgs
CisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCks
IHR5cGUsIDQyKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9j
LCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCksCisgICAgICAgICAgICAgICAgNDIpKTsKKyAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29t
cGlsZVByb2MocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBdID0g
NDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIHdoaWxlICghaW52b2tlPGJvb2w+
KCpjb2RlLCBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KHZhbHVlKSAtIDQyKSkgeyB9CisgICAgICAg
IENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigweGJlZWYpKTsKKyAgICAgICAgQ0hF
Q0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAKKyAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2Fz
dDxUPigzMDApOworICAgICAgICBDSEVDSyghaW52b2tlPGJvb2w+KCpjb2RlLCBiaXR3aXNlX2Nh
c3Q8aW50cHRyX3Q+KHZhbHVlKSAtIDQyKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBz
dGF0aWNfY2FzdDxUPigzMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAg
ICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlLCB0cnVlKTsKKyAgICB9Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+Cit2b2lkIHRlc3RBdG9taWNTdHJvbmdDQVMoKQoreworICAgIFR5cGUg
dHlwZSA9IE5hdGl2ZVRyYWl0czxUPjo6dHlwZTsKKyAgICBXaWR0aCB3aWR0aCA9IE5hdGl2ZVRy
YWl0czxUPjo6d2lkdGg7CisKKyAgICBhdXRvIGNoZWNrTXlEaXNhc3NlbWJseSA9IFsmXSAoQ29t
cGlsYXRpb24mIGNvbXBpbGF0aW9uLCBib29sIGZlbmNlZCkgeworICAgICAgICBpZiAoaXNYODYo
KSkgeworICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJsb2Nr
Iik7CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImNtcHhj
aGciKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChmZW5jZWQpIHsKKyAgICAg
ICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImxkYXgiKTsKKyAg
ICAgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgInN0bHgiKTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rp
b24oY29tcGlsYXRpb24sICJsZHgiKTsKKyAgICAgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVj
dGlvbihjb21waWxhdGlvbiwgInN0eCIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fTsKKworICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIHN1Y2MgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIGZhaWwgPSBwcm9jLmFkZEJsb2NrKCk7
CisgICAgCisgICAgICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigp
LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBw
cm9jLCBFcXVhbCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0
b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywgQXRvbWljU3Ryb25nQ0FTLCBP
cmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0
YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCisgICAgICAgICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAgICAg
ICAgICAgICAgICAgICBwdHIpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0
YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MikpKTsKKyAgICAgICAgcm9vdC0+c2V0U3VjY2Vz
c29ycyhzdWNjLCBmYWlsKTsKKyAgICAKKyAgICAgICAgc3VjYy0+YXBwZW5kTmV3PE1lbW9yeVZh
bHVlPigKKyAgICAgICAgICAgIHByb2MsIHN0b3JlT3Bjb2RlKEdQLCB3aWR0aCksIE9yaWdpbigp
LAorICAgICAgICAgICAgc3VjYy0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5
cGUsIDEwMCksCisgICAgICAgICAgICBwdHIpOworICAgICAgICBzdWNjLT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworICAgIAorICAgICAgICBmYWlsLT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworICAgIAorICAgICAgICBhdXRvIGNv
ZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFs
dWVbMF0gPSA0MjsKKyAgICAgICAgdmFsdWVbMV0gPSAxMzsKKyAgICAgICAgaW52b2tlPHZvaWQ+
KCpjb2RlLCB2YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxU
PigxMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgdmFsdWVb
MF0gPSBzdGF0aWNfY2FzdDxUPigzMDApOworICAgICAgICBpbnZva2U8dm9pZD4oKmNvZGUsIHZh
bHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDMwMCkpOwor
ICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICBjaGVja015RGlzYXNzZW1i
bHkoKmNvZGUsIHRydWUpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJh
c2ljQmxvY2sqIHN1Y2MgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIGZh
aWwgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgCisgICAgICAgIFZhbHVlKiBwdHIgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBw
cm9jLCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgICAgICBwcm9jLCBFcXVhbCwgT3JpZ2luKCksCisgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJv
YywgQXRvbWljU3Ryb25nQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCisgICAg
ICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0
eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAgICAgICBwdHIsIDAsIEhlYXBSYW5nZSg0Miks
IEhlYXBSYW5nZSgpKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChw
cm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpKSk7CisgICAgICAgIHJvb3QtPnNldFN1Y2Nlc3NvcnMo
c3VjYywgZmFpbCk7CisgICAgCisgICAgICAgIHN1Y2MtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
CisgICAgICAgICAgICBwcm9jLCBzdG9yZU9wY29kZShHUCwgd2lkdGgpLCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgIHN1Y2MtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAx
MDApLAorICAgICAgICAgICAgcHRyKTsKKyAgICAgICAgc3VjYy0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAKKyAgICAgICAgZmFpbC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAKKyAgICAgICAgYXV0byBjb2RlID0g
Y29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBd
ID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIGludm9rZTx2b2lkPigqY29k
ZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMTAw
KSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIHZhbHVlWzBdID0g
c3RhdGljX2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7
CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigzMDApKTsKKyAgICAg
ICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpj
b2RlLCBmYWxzZSk7CisgICAgfQorCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAg
ICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNC
bG9jayogc3VjYyA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogZmFpbCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICAKKyAgICAgICAgVmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2Ms
IEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICAgICAgICAgIHByb2MsIE5vdEVxdWFsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBwcm9j
LCBBdG9taWNTdHJvbmdDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAg
cm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAg
ICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5
cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgICAgIHB0ciksCisgICAgICAgICAgICAgICAg
cm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSkpOworICAg
ICAgICByb290LT5zZXRTdWNjZXNzb3JzKGZhaWwsIHN1Y2MpOworICAgIAorICAgICAgICBzdWNj
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgc3RvcmVPcGNvZGUo
R1AsIHdpZHRoKSwgT3JpZ2luKCksCisgICAgICAgICAgICBzdWNjLT5hcHBlbmRJbnRDb25zdGFu
dChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMTAwKSwKKyAgICAgICAgICAgIHB0cik7CisgICAgICAg
IHN1Y2MtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAgCisg
ICAgICAgIGZhaWwtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7Cisg
ICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBUIHZh
bHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9IDEzOwor
ICAgICAgICBpbnZva2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFs
dWVbMF0sIHN0YXRpY19jYXN0PFQ+KDEwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwg
MTMpOworICAgICAgICB2YWx1ZVswXSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAgIGlu
dm9rZTx2b2lkPigqY29kZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3Rh
dGljX2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAg
ICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwgdHJ1ZSk7CisgICAgfQorCisgICAgeworICAg
ICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWlj
VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEF0b21pY1N0cm9uZ0NBUywgT3JpZ2luKCks
IHdpZHRoLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9y
aWdpbigpLCB0eXBlLCA0MiksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3Rh
bnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKSk7CisgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2Mp
OworICAgICAgICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2
YWx1ZVsxXSA9IDEzOworICAgICAgICBDSEVDS19FUShpbnZva2U8dHlwZW5hbWUgTmF0aXZlVHJh
aXRzPFQ+OjpDYW5vbmljYWxUeXBlPigqY29kZSwgdmFsdWUpLCA0Mik7CisgICAgICAgIENIRUNL
X0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigweGJlZWYpKTsKKyAgICAgICAgQ0hFQ0tfRVEo
dmFsdWVbMV0sIDEzKTsKKyAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxUPigzMDApOwor
ICAgICAgICBDSEVDS19FUShpbnZva2U8dHlwZW5hbWUgTmF0aXZlVHJhaXRzPFQ+OjpDYW5vbmlj
YWxUeXBlPigqY29kZSwgdmFsdWUpLCBzdGF0aWNfY2FzdDx0eXBlbmFtZSBOYXRpdmVUcmFpdHM8
VD46OkNhbm9uaWNhbFR5cGU+KHN0YXRpY19jYXN0PFQ+KDMwMCkpKTsKKyAgICAgICAgQ0hFQ0tf
RVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDMwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1
ZVsxXSwgMTMpOworICAgICAgICB2YWx1ZVswXSA9IHN0YXRpY19jYXN0PFQ+KC0xKTsKKyAgICAg
ICAgQ0hFQ0tfRVEoaW52b2tlPHR5cGVuYW1lIE5hdGl2ZVRyYWl0czxUPjo6Q2Fub25pY2FsVHlw
ZT4oKmNvZGUsIHZhbHVlKSwgc3RhdGljX2Nhc3Q8dHlwZW5hbWUgTmF0aXZlVHJhaXRzPFQ+OjpD
YW5vbmljYWxUeXBlPihzdGF0aWNfY2FzdDxUPigtMSkpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFs
dWVbMF0sIHN0YXRpY19jYXN0PFQ+KC0xKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAx
Myk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwgdHJ1ZSk7CisgICAgfQorCisg
ICAgeworICAgICAgICAvLyBUZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY5ODY3LgorICAgIAorICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEJpdFhv
ciwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVl
PigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywgQXRvbWljU3Ryb25nQ0FTLCBPcmlnaW4oKSwg
d2lkdGgsCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2Ms
IE9yaWdpbigpLCB0eXBlLCA0MiksCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZElu
dENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENv
bnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAxKSkpOworICAgIAorICAgICAgICB0eXBlbmFt
ZSBOYXRpdmVUcmFpdHM8VD46OkNhbm9uaWNhbFR5cGUgb25lID0gMTsKKyAgICAKKyAgICAgICAg
YXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAg
ICAgIHZhbHVlWzBdID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIENIRUNL
X0VRKGludm9rZTx0eXBlbmFtZSBOYXRpdmVUcmFpdHM8VD46OkNhbm9uaWNhbFR5cGU+KCpjb2Rl
LCB2YWx1ZSksIDQyIF4gb25lKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19j
YXN0PFQ+KDB4YmVlZikpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAg
ICB2YWx1ZVswXSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAgIENIRUNLX0VRKGludm9r
ZTx0eXBlbmFtZSBOYXRpdmVUcmFpdHM8VD46OkNhbm9uaWNhbFR5cGU+KCpjb2RlLCB2YWx1ZSks
IHN0YXRpY19jYXN0PHR5cGVuYW1lIE5hdGl2ZVRyYWl0czxUPjo6Q2Fub25pY2FsVHlwZT4oc3Rh
dGljX2Nhc3Q8VD4oMzAwKSkgXiBvbmUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3Rh
dGljX2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAg
ICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oLTEpOworICAgICAgICBDSEVDS19FUShpbnZv
a2U8dHlwZW5hbWUgTmF0aXZlVHJhaXRzPFQ+OjpDYW5vbmljYWxUeXBlPigqY29kZSwgdmFsdWUp
LCBzdGF0aWNfY2FzdDx0eXBlbmFtZSBOYXRpdmVUcmFpdHM8VD46OkNhbm9uaWNhbFR5cGU+KHN0
YXRpY19jYXN0PFQ+KC0xKSkgXiBvbmUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3Rh
dGljX2Nhc3Q8VD4oLTEpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAg
ICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlLCB0cnVlKTsKKyAgICB9CisKKyAgICB7CisgICAg
ICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAorICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgIHByb2Ms
IEF0b21pY1N0cm9uZ0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlw
ZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwg
NDIpKSk7CisgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAg
ICAgICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsx
XSA9IDEzOworICAgICAgICBDSEVDSyhpbnZva2U8Ym9vbD4oKmNvZGUsIHZhbHVlKSk7CisgICAg
ICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigweGJlZWYpKTsKKyAgICAgICAg
Q0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxU
PigzMDApOworICAgICAgICBDSEVDSyghaW52b2tlPGJvb2w+KCpjb2RlLCB2YWx1ZSkpOworICAg
ICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENI
RUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwg
dHJ1ZSk7CisgICAgfQorCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEVxdWFs
LCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgICAgICAgICBwcm9jLCBOb3RFcXVhbCwgT3JpZ2luKCksCisgICAgICAgICAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAg
ICAgICBwcm9jLCBBdG9taWNTdHJvbmdDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBl
LCA0MiksCisgICAgICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChw
cm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKSksCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0
YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MikpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSkpOworICAgICAgICAKKyAg
ICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07
CisgICAgICAgIHZhbHVlWzBdID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAg
IENIRUNLKGludm9rZTxib29sPigqY29kZSwgdmFsdWUpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFs
dWVbMF0sIHN0YXRpY19jYXN0PFQ+KDB4YmVlZikpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsx
XSwgMTMpOworICAgICAgICB2YWx1ZVswXSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAg
IENIRUNLKCFpbnZva2U8Ym9vbD4oKmNvZGUsICZ2YWx1ZSkpOworICAgICAgICBDSEVDS19FUSh2
YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFd
LCAxMyk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwgdHJ1ZSk7CisgICAgfQor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordm9pZCB0ZXN0QXRvbWljWGNoZyhCMzo6T3Bjb2Rl
IG9wY29kZSkKK3sKKyAgICBUeXBlIHR5cGUgPSBOYXRpdmVUcmFpdHM8VD46OnR5cGU7CisgICAg
V2lkdGggd2lkdGggPSBOYXRpdmVUcmFpdHM8VD46OndpZHRoOworCisgICAgYXV0byBkb1RoZU1h
dGggPSBbJl0gKFQmIG1lbW9yeSwgVCBvcGVyYW5kKSAtPiBUIHsKKyAgICAgICAgVCBvbGRWYWx1
ZSA9IG1lbW9yeTsKKyAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICAgICAgY2FzZSBBdG9t
aWNYY2hnQWRkOgorICAgICAgICAgICAgbWVtb3J5ICs9IG9wZXJhbmQ7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgICAgICAgICAgbWVtb3J5ICY9
IG9wZXJhbmQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnT3I6
CisgICAgICAgICAgICBtZW1vcnkgfD0gb3BlcmFuZDsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgICAgICAgICBtZW1vcnkgLT0gb3BlcmFuZDsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgICAg
ICAgICBtZW1vcnkgXj0gb3BlcmFuZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEF0b21pY1hjaGc6CisgICAgICAgICAgICBtZW1vcnkgPSBvcGVyYW5kOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBvbGRWYWx1ZTsKKyAgICB9Owor
CisgICAgYXV0byBvbGRWYWx1ZSA9IFsmXSAoVCBtZW1vcnksIFQgb3BlcmFuZCkgLT4gVCB7Cisg
ICAgICAgIHJldHVybiBkb1RoZU1hdGgobWVtb3J5LCBvcGVyYW5kKTsKKyAgICB9OworCisgICAg
YXV0byBuZXdWYWx1ZSA9IFsmXSAoVCBtZW1vcnksIFQgb3BlcmFuZCkgLT4gVCB7CisgICAgICAg
IGRvVGhlTWF0aChtZW1vcnksIG9wZXJhbmQpOworICAgICAgICByZXR1cm4gbWVtb3J5OworICAg
IH07CisKKyAgICBhdXRvIGNoZWNrTXlEaXNhc3NlbWJseSA9IFsmXSAoQ29tcGlsYXRpb24mIGNv
bXBpbGF0aW9uLCBib29sIGZlbmNlZCkgeworICAgICAgICBpZiAoaXNYODYoKSkKKyAgICAgICAg
ICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAibG9jayIpOworICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIGlmIChmZW5jZWQpIHsKKyAgICAgICAgICAgICAgICBjaGVja1Vz
ZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImxkYXgiKTsKKyAgICAgICAgICAgICAgICBjaGVj
a1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgInN0bHgiKTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJs
ZHgiKTsKKyAgICAgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwg
InN0eCIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKKworICAgIHsKKyAgICAg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1Zh
bHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBvcGNvZGUsIE9yaWdpbigpLCB3aWR0aCwKKyAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlw
ZSwgMSksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSk7CisKKyAgICAgICAgYXV0
byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAg
IHZhbHVlWzBdID0gNTsKKyAgICAgICAgdmFsdWVbMV0gPSAxMDA7CisgICAgICAgIENIRUNLX0VR
KGludm9rZTxUPigqY29kZSwgdmFsdWUpLCBvbGRWYWx1ZSg1LCAxKSk7CisgICAgICAgIENIRUNL
X0VRKHZhbHVlWzBdLCBuZXdWYWx1ZSg1LCAxKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFd
LCAxMDApOworICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUsIHRydWUpOworICAgIH0K
KworICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBvcGNvZGUsIE9yaWdp
bigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9j
LCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkp
OworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBUIHZh
bHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDU7CisgICAgICAgIHZhbHVlWzFdID0gMTAwOwor
ICAgICAgICBDSEVDS19FUShpbnZva2U8VD4oKmNvZGUsIHZhbHVlKSwgb2xkVmFsdWUoNSwgNDIp
KTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIG5ld1ZhbHVlKDUsIDQyKSk7CisgICAgICAg
IENIRUNLX0VRKHZhbHVlWzFdLCAxMDApOworICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNv
ZGUsIHRydWUpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBvcGNvZGUsIE9yaWdpbigp
LCB3aWR0aCwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdp
bigpLCB0eXBlLCA0MiksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworCisgICAgICAg
IGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBUIHZhbHVlWzJdOworICAg
ICAgICB2YWx1ZVswXSA9IDU7CisgICAgICAgIHZhbHVlWzFdID0gMTAwOworICAgICAgICBpbnZv
a2U8VD4oKmNvZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIG5ld1ZhbHVl
KDUsIDQyKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMDApOworICAgICAgICBjaGVj
a015RGlzYXNzZW1ibHkoKmNvZGUsIHRydWUpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICBwcm9j
LCBvcGNvZGUsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENv
bnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCksCisgICAgICAgICAgICAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoKSk7CisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisKKyAg
ICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07
CisgICAgICAgIHZhbHVlWzBdID0gNTsKKyAgICAgICAgdmFsdWVbMV0gPSAxMDA7CisgICAgICAg
IGludm9rZTxUPigqY29kZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgbmV3
VmFsdWUoNSwgNDIpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEwMCk7CisgICAgICAg
IGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwgZmFsc2UpOworICAgIH0KK30KKwordm9pZCBhZGRB
dG9taWNUZXN0cyhjb25zdCBjaGFyKiBmaWx0ZXIsIERlcXVlPFJlZlB0cjxTaGFyZWRUYXNrPHZv
aWQoKT4+PiYgdGFza3MpCit7CisgICAgUlVOKHRlc3RBdG9taWNXZWFrQ0FTPGludDhfdD4oKSk7
CisgICAgUlVOKHRlc3RBdG9taWNXZWFrQ0FTPGludDE2X3Q+KCkpOworICAgIFJVTih0ZXN0QXRv
bWljV2Vha0NBUzxpbnQzMl90PigpKTsKKyAgICBSVU4odGVzdEF0b21pY1dlYWtDQVM8aW50NjRf
dD4oKSk7CisgICAgUlVOKHRlc3RBdG9taWNTdHJvbmdDQVM8aW50OF90PigpKTsKKyAgICBSVU4o
dGVzdEF0b21pY1N0cm9uZ0NBUzxpbnQxNl90PigpKTsKKyAgICBSVU4odGVzdEF0b21pY1N0cm9u
Z0NBUzxpbnQzMl90PigpKTsKKyAgICBSVU4odGVzdEF0b21pY1N0cm9uZ0NBUzxpbnQ2NF90Pigp
KTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50OF90PihBdG9taWNYY2hnQWRkKSk7CisgICAg
UlVOKHRlc3RBdG9taWNYY2hnPGludDE2X3Q+KEF0b21pY1hjaGdBZGQpKTsKKyAgICBSVU4odGVz
dEF0b21pY1hjaGc8aW50MzJfdD4oQXRvbWljWGNoZ0FkZCkpOworICAgIFJVTih0ZXN0QXRvbWlj
WGNoZzxpbnQ2NF90PihBdG9taWNYY2hnQWRkKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGlu
dDhfdD4oQXRvbWljWGNoZ0FuZCkpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQxNl90PihB
dG9taWNYY2hnQW5kKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDMyX3Q+KEF0b21pY1hj
aGdBbmQpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50NjRfdD4oQXRvbWljWGNoZ0FuZCkp
OworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ4X3Q+KEF0b21pY1hjaGdPcikpOworICAgIFJV
Tih0ZXN0QXRvbWljWGNoZzxpbnQxNl90PihBdG9taWNYY2hnT3IpKTsKKyAgICBSVU4odGVzdEF0
b21pY1hjaGc8aW50MzJfdD4oQXRvbWljWGNoZ09yKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hn
PGludDY0X3Q+KEF0b21pY1hjaGdPcikpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ4X3Q+
KEF0b21pY1hjaGdTdWIpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50MTZfdD4oQXRvbWlj
WGNoZ1N1YikpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQzMl90PihBdG9taWNYY2hnU3Vi
KSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDY0X3Q+KEF0b21pY1hjaGdTdWIpKTsKKyAg
ICBSVU4odGVzdEF0b21pY1hjaGc8aW50OF90PihBdG9taWNYY2hnWG9yKSk7CisgICAgUlVOKHRl
c3RBdG9taWNYY2hnPGludDE2X3Q+KEF0b21pY1hjaGdYb3IpKTsKKyAgICBSVU4odGVzdEF0b21p
Y1hjaGc8aW50MzJfdD4oQXRvbWljWGNoZ1hvcikpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxp
bnQ2NF90PihBdG9taWNYY2hnWG9yKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDhfdD4o
QXRvbWljWGNoZykpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQxNl90PihBdG9taWNYY2hn
KSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDMyX3Q+KEF0b21pY1hjaGcpKTsKKyAgICBS
VU4odGVzdEF0b21pY1hjaGc8aW50NjRfdD4oQXRvbWljWGNoZykpOworfQorCit0ZW1wbGF0ZTxC
Mzo6VHlwZSB0eXBlLCB0eXBlbmFtZSBDVHlwZSwgdHlwZW5hbWUgSW5wdXRUeXBlPgordm9pZCB0
ZXN0TG9hZChCMzo6T3Bjb2RlIG9wY29kZSwgSW5wdXRUeXBlIHZhbHVlKQoreworICAgIC8vIFNp
bXBsZSBsb2FkIGZyb20gYW4gYWJzb2x1dGUgYWRkcmVzcy4KKyAgICB7CisgICAgICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2Ms
IFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFs
dWU+KAorICAgICAgICAgICAgICAgIHByb2MsIG9wY29kZSwgdHlwZSwgT3JpZ2luKCksCisgICAg
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCAmdmFsdWUpKSk7CisKKyAgICAgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxD
VHlwZT4ocHJvYyksIG1vZGVsTG9hZDxDVHlwZT4odmFsdWUpKSk7CisgICAgfQorCisgICAgLy8g
U2ltcGxlIGxvYWQgZnJvbSBhbiBhZGRyZXNzIGluIGEgcmVnaXN0ZXIuCisgICAgeworICAgICAg
ICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1l
bW9yeVZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBvcGNvZGUsIHR5cGUsIE9yaWdpbigp
LAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOworCisgICAgICAgIENIRUNLKGlz
SWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48Q1R5cGU+KHByb2MsICZ2YWx1ZSksIG1vZGVsTG9hZDxD
VHlwZT4odmFsdWUpKSk7CisgICAgfQorCisgICAgLy8gU2ltcGxlIGxvYWQgZnJvbSBhbiBhZGRy
ZXNzIGluIGEgcmVnaXN0ZXIsIGF0IGFuIG9mZnNldC4KKyAgICB7CisgICAgICAgIFByb2NlZHVy
ZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KAorICAgICAgICAgICAgICAgIHByb2MsIG9wY29kZSwgdHlwZSwgT3JpZ2luKCksCisgICAgICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAorICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGlu
dDMyX3Q+KHNpemVvZihJbnB1dFR5cGUpKSkpOworCisgICAgICAgIENIRUNLKGlzSWRlbnRpY2Fs
KGNvbXBpbGVBbmRSdW48Q1R5cGU+KHByb2MsICZ2YWx1ZSAtIDEpLCBtb2RlbExvYWQ8Q1R5cGU+
KHZhbHVlKSkpOworICAgIH0KKworICAgIC8vIExvYWQgZnJvbSBhIHNpbXBsZSBiYXNlLWluZGV4
IHdpdGggdmFyaW91cyBzY2FsZXMuCisgICAgZm9yICh1bnNpZ25lZCBsb2dTY2FsZSA9IDA7IGxv
Z1NjYWxlIDw9IDM7ICsrbG9nU2NhbGUpIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAg
ICAgICAgcHJvYywgb3Bjb2RlLCB0eXBlLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdp
bigpLAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCisgICAgICAgICAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgICAgICBw
cm9jLCBTaGwsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjEpLAorICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIGxvZ1NjYWxlKSkpKSk7CisKKyAgICAgICAgQ0hFQ0soaXNJZGVu
dGljYWwoY29tcGlsZUFuZFJ1bjxDVHlwZT4ocHJvYywgJnZhbHVlIC0gMiwgKHNpemVvZihJbnB1
dFR5cGUpICogMikgPj4gbG9nU2NhbGUpLCBtb2RlbExvYWQ8Q1R5cGU+KHZhbHVlKSkpOworICAg
IH0KKworICAgIC8vIExvYWQgZnJvbSBhIHNpbXBsZSBiYXNlLWluZGV4IHdpdGggdmFyaW91cyBz
Y2FsZXMsIGJ1dCBjb21tdXRlZC4KKyAgICBmb3IgKHVuc2lnbmVkIGxvZ1NjYWxlID0gMDsgbG9n
U2NhbGUgPD0gMzsgKytsb2dTY2FsZSkgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAg
ICAgICBwcm9jLCBvcGNvZGUsIHR5cGUsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2lu
KCksCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
ICAgICAgICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpLAorICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGxvZ1NjYWxlKSksCisgICAgICAg
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpKTsKKworICAgICAgICBDSEVDSyhpc0lkZW50
aWNhbChjb21waWxlQW5kUnVuPENUeXBlPihwcm9jLCAmdmFsdWUgLSAyLCAoc2l6ZW9mKElucHV0
VHlwZSkgKiAyKSA+PiBsb2dTY2FsZSksIG1vZGVsTG9hZDxDVHlwZT4odmFsdWUpKSk7CisgICAg
fQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordm9pZCB0ZXN0TG9hZChCMzo6T3Bjb2RlIG9w
Y29kZSwgaW50MzJfdCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdGVzdExvYWQ8SW50MzIsIFQ+KG9w
Y29kZSwgdmFsdWUpOworfQorCit0ZW1wbGF0ZTxCMzo6VHlwZSB0eXBlLCB0eXBlbmFtZSBUPgor
dm9pZCB0ZXN0TG9hZChUIHZhbHVlKQoreworICAgIHJldHVybiB0ZXN0TG9hZDx0eXBlLCBUPihM
b2FkLCB2YWx1ZSk7Cit9CisKK3ZvaWQgYWRkTG9hZFRlc3RzKGNvbnN0IGNoYXIqIGZpbHRlciwg
RGVxdWU8UmVmUHRyPFNoYXJlZFRhc2s8dm9pZCgpPj4+JiB0YXNrcykKK3sKKyAgICBSVU4odGVz
dExvYWQ8SW50MzI+KDYwKSk7CisgICAgUlVOKHRlc3RMb2FkPEludDMyPigtNjApKTsKKyAgICBS
VU4odGVzdExvYWQ8SW50MzI+KDEwMDApKTsKKyAgICBSVU4odGVzdExvYWQ8SW50MzI+KC0xMDAw
KSk7CisgICAgUlVOKHRlc3RMb2FkPEludDMyPigxMDAwMDAwKSk7CisgICAgUlVOKHRlc3RMb2Fk
PEludDMyPigtMTAwMDAwMCkpOworICAgIFJVTih0ZXN0TG9hZDxJbnQzMj4oMTAwMDAwMDAwMCkp
OworICAgIFJVTih0ZXN0TG9hZDxJbnQzMj4oLTEwMDAwMDAwMDApKTsKKyAgICBSVU5fVU5BUlko
dGVzdExvYWQ8SW50NjQ+LCBpbnQ2NE9wZXJhbmRzKCkpOworICAgIFJVTl9VTkFSWSh0ZXN0TG9h
ZDxGbG9hdD4sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX1VOQVJZ
KHRlc3RMb2FkPERvdWJsZT4sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAg
IAorICAgIFJVTih0ZXN0TG9hZDxpbnQ4X3Q+KExvYWQ4UywgNjApKTsKKyAgICBSVU4odGVzdExv
YWQ8aW50OF90PihMb2FkOFMsIC02MCkpOworICAgIFJVTih0ZXN0TG9hZDxpbnQ4X3Q+KExvYWQ4
UywgMTAwMCkpOworICAgIFJVTih0ZXN0TG9hZDxpbnQ4X3Q+KExvYWQ4UywgLTEwMDApKTsKKyAg
ICBSVU4odGVzdExvYWQ8aW50OF90PihMb2FkOFMsIDEwMDAwMDApKTsKKyAgICBSVU4odGVzdExv
YWQ8aW50OF90PihMb2FkOFMsIC0xMDAwMDAwKSk7CisgICAgUlVOKHRlc3RMb2FkPGludDhfdD4o
TG9hZDhTLCAxMDAwMDAwMDAwKSk7CisgICAgUlVOKHRlc3RMb2FkPGludDhfdD4oTG9hZDhTLCAt
MTAwMDAwMDAwMCkpOworICAgIAorICAgIFJVTih0ZXN0TG9hZDx1aW50OF90PihMb2FkOFosIDYw
KSk7CisgICAgUlVOKHRlc3RMb2FkPHVpbnQ4X3Q+KExvYWQ4WiwgLTYwKSk7CisgICAgUlVOKHRl
c3RMb2FkPHVpbnQ4X3Q+KExvYWQ4WiwgMTAwMCkpOworICAgIFJVTih0ZXN0TG9hZDx1aW50OF90
PihMb2FkOFosIC0xMDAwKSk7CisgICAgUlVOKHRlc3RMb2FkPHVpbnQ4X3Q+KExvYWQ4WiwgMTAw
MDAwMCkpOworICAgIFJVTih0ZXN0TG9hZDx1aW50OF90PihMb2FkOFosIC0xMDAwMDAwKSk7Cisg
ICAgUlVOKHRlc3RMb2FkPHVpbnQ4X3Q+KExvYWQ4WiwgMTAwMDAwMDAwMCkpOworICAgIFJVTih0
ZXN0TG9hZDx1aW50OF90PihMb2FkOFosIC0xMDAwMDAwMDAwKSk7CisgICAgCisgICAgUlVOKHRl
c3RMb2FkPGludDE2X3Q+KExvYWQxNlMsIDYwKSk7CisgICAgUlVOKHRlc3RMb2FkPGludDE2X3Q+
KExvYWQxNlMsIC02MCkpOworICAgIFJVTih0ZXN0TG9hZDxpbnQxNl90PihMb2FkMTZTLCAxMDAw
KSk7CisgICAgUlVOKHRlc3RMb2FkPGludDE2X3Q+KExvYWQxNlMsIC0xMDAwKSk7CisgICAgUlVO
KHRlc3RMb2FkPGludDE2X3Q+KExvYWQxNlMsIDEwMDAwMDApKTsKKyAgICBSVU4odGVzdExvYWQ8
aW50MTZfdD4oTG9hZDE2UywgLTEwMDAwMDApKTsKKyAgICBSVU4odGVzdExvYWQ8aW50MTZfdD4o
TG9hZDE2UywgMTAwMDAwMDAwMCkpOworICAgIFJVTih0ZXN0TG9hZDxpbnQxNl90PihMb2FkMTZT
LCAtMTAwMDAwMDAwMCkpOworICAgIAorICAgIFJVTih0ZXN0TG9hZDx1aW50MTZfdD4oTG9hZDE2
WiwgNjApKTsKKyAgICBSVU4odGVzdExvYWQ8dWludDE2X3Q+KExvYWQxNlosIC02MCkpOworICAg
IFJVTih0ZXN0TG9hZDx1aW50MTZfdD4oTG9hZDE2WiwgMTAwMCkpOworICAgIFJVTih0ZXN0TG9h
ZDx1aW50MTZfdD4oTG9hZDE2WiwgLTEwMDApKTsKKyAgICBSVU4odGVzdExvYWQ8dWludDE2X3Q+
KExvYWQxNlosIDEwMDAwMDApKTsKKyAgICBSVU4odGVzdExvYWQ8dWludDE2X3Q+KExvYWQxNlos
IC0xMDAwMDAwKSk7CisgICAgUlVOKHRlc3RMb2FkPHVpbnQxNl90PihMb2FkMTZaLCAxMDAwMDAw
MDAwKSk7CisgICAgUlVOKHRlc3RMb2FkPHVpbnQxNl90PihMb2FkMTZaLCAtMTAwMDAwMDAwMCkp
OworfQorCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375270</attachid>
            <date>2019-07-31 17:16:07 -0700</date>
            <delta_ts>2019-07-31 17:53:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200326-20190731171606.patch</filename>
            <type>text/plain</type>
            <size>1839012</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4MDc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ODRiNTYzMDNkNjJkZjQ0ZWY3YzQyOTNmMzM1ZGNhMjk3ZDNmZTEyLi43ZTk0YjQxZTZmMzMyNTYw
NDljOGI4ZGZjZjgyMjcxOGI2NWFhYTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NTEgQEAKKzIwMTktMDctMzEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KKworICAgICAgICBTcGxpdCB0ZXN0YjMgaW50byBtdWx0aXBsZSBmaWxlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwMzI2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGIzL3Rlc3RiMy5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogYjMvdGVzdGIzLmg6IEFkZGVkLgorICAgICAgICAoaGlk
ZGVuVHJ1dGhCZWNhdXNlTm9SZXR1cm5Jc1N0dXBpZCk6CisgICAgICAgICh1c2FnZSk6CisgICAg
ICAgIChzaG91bGRCZVZlcmJvc2UpOgorICAgICAgICAoY29tcGlsZVByb2MpOgorICAgICAgICAo
aW52b2tlKToKKyAgICAgICAgKGNvbXBpbGVBbmRSdW4pOgorICAgICAgICAobG93ZXJUb0FpckZv
clRlc3RpbmcpOgorICAgICAgICAoY2hlY2tEaXNhc3NlbWJseSk6CisgICAgICAgIChjaGVja1Vz
ZXNJbnN0cnVjdGlvbik6CisgICAgICAgIChjaGVja0RvZXNOb3RVc2VJbnN0cnVjdGlvbik6Cisg
ICAgICAgIChwb3B1bGF0ZVdpdGhJbnRlcmVzdGluZ1ZhbHVlcyk6CisgICAgICAgIChmbG9hdGlu
Z1BvaW50T3BlcmFuZHMpOgorICAgICAgICAoaW50NjRPcGVyYW5kcyk6CisgICAgICAgIChpbnQz
Mk9wZXJhbmRzKToKKyAgICAgICAgKGFkZDMyKToKKyAgICAgICAgKG1vZGVsTG9hZCk6CisgICAg
ICAgIChmbG9hdD4pOgorICAgICAgICAoZG91YmxlPik6CisgICAgICAgICogYjMvdGVzdGIzXzEu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKHplcm8pOgorICAgICAgICAobmVnYXRpdmVaZXJvKToKKyAg
ICAgICAgKHNob3VsZFJ1bik6CisgICAgICAgICh0ZXN0Um90Uik6CisgICAgICAgICh0ZXN0Um90
TCk6CisgICAgICAgICh0ZXN0Um90UldpdGhJbW1TaGlmdCk6CisgICAgICAgICh0ZXN0Um90TFdp
dGhJbW1TaGlmdCk6CisgICAgICAgICh0ZXN0Q29tcHV0ZURpdmlzaW9uTWFnaWMpOgorICAgICAg
ICAocnVuKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAoZGxsTGF1bmNoZXJFbnRyeVBvaW50
KToKKyAgICAgICAgKiBiMy90ZXN0YjNfMi5jcHA6IEFkZGVkLgorICAgICAgICAodGVzdDQyKToK
KyAgICAgICAgKHRlc3RMb2FkNDIpOgorICAgICAgICAodGVzdExvYWRBY3E0Mik6CisgICAgICAg
ICh0ZXN0TG9hZFdpdGhPZmZzZXRJbXBsKToKKyAgICAgICAgKHRlc3RMb2FkT2Zmc2V0SW1tOU1h
eCk6CisgICAgICAgICh0ZXN0TG9hZE9mZnNldEltbTlNYXhQbHVzT25lKToKKyAgICAgICAgKHRl
c3RMb2FkT2Zmc2V0SW1tOU1heFBsdXNUd28pOgorICAgICAgICAodGVzdExvYWRPZmZzZXRJbW05
TWluKToKKyAgICAgICAgKHRlc3RMb2FkT2Zmc2V0SW1tOU1pbk1pbnVzT25lKToKKyAgICAgICAg
KHRlc3RMb2FkT2Zmc2V0U2NhbGVkVW5zaWduZWRJbW0xMk1heCk6CisgICAgICAgICh0ZXN0TG9h
ZE9mZnNldFNjYWxlZFVuc2lnbmVkT3ZlckltbTEyTWF4KToKKyAgICAgICAgKHRlc3RCaXRYb3JU
cmVlQXJncyk6CisgICAgICAgICh0ZXN0Qml0WG9yVHJlZUFyZ3NFdmVuKToKKyAgICAgICAgKHRl
c3RCaXRYb3JUcmVlQXJnSW1tKToKKyAgICAgICAgKHRlc3RBZGRUcmVlQXJnMzIpOgorICAgICAg
ICAodGVzdE11bFRyZWVBcmczMik6CisgICAgICAgICh0ZXN0Qml0QW5kVHJlZUFyZzMyKToKKyAg
ICAgICAgKHRlc3RCaXRPclRyZWVBcmczMik6CisgICAgICAgICh0ZXN0QXJnKToKKyAgICAgICAg
KHRlc3RSZXR1cm5Db25zdDY0KToKKyAgICAgICAgKHRlc3RSZXR1cm5Wb2lkKToKKyAgICAgICAg
KHRlc3RBZGRBcmcpOgorICAgICAgICAodGVzdEFkZEFyZ3MpOgorICAgICAgICAodGVzdEFkZEFy
Z0ltbSk6CisgICAgICAgICh0ZXN0QWRkSW1tQXJnKToKKyAgICAgICAgKHRlc3RBZGRBcmdNZW0p
OgorICAgICAgICAodGVzdEFkZE1lbUFyZyk6CisgICAgICAgICh0ZXN0QWRkSW1tTWVtKToKKyAg
ICAgICAgKHRlc3RBZGRBcmczMik6CisgICAgICAgICh0ZXN0QWRkQXJnczMyKToKKyAgICAgICAg
KHRlc3RBZGRBcmdNZW0zMik6CisgICAgICAgICh0ZXN0QWRkTWVtQXJnMzIpOgorICAgICAgICAo
dGVzdEFkZEltbU1lbTMyKToKKyAgICAgICAgKHRlc3RBZGROZWcxKToKKyAgICAgICAgKHRlc3RB
ZGROZWcyKToKKyAgICAgICAgKHRlc3RBZGRBcmdaZXJvSW1tWkRlZik6CisgICAgICAgICh0ZXN0
QWRkTG9hZFR3aWNlKToKKyAgICAgICAgKHRlc3RBZGRBcmdEb3VibGUpOgorICAgICAgICAodGVz
dEFkZEFyZ3NEb3VibGUpOgorICAgICAgICAodGVzdEFkZEFyZ0ltbURvdWJsZSk6CisgICAgICAg
ICh0ZXN0QWRkSW1tQXJnRG91YmxlKToKKyAgICAgICAgKHRlc3RBZGRJbW1zRG91YmxlKToKKyAg
ICAgICAgKHRlc3RBZGRBcmdGbG9hdCk6CisgICAgICAgICh0ZXN0QWRkQXJnc0Zsb2F0KToKKyAg
ICAgICAgKHRlc3RBZGRGUFJBcmdzRmxvYXQpOgorICAgICAgICAodGVzdEFkZEFyZ0ltbUZsb2F0
KToKKyAgICAgICAgKHRlc3RBZGRJbW1BcmdGbG9hdCk6CisgICAgICAgICh0ZXN0QWRkSW1tc0Zs
b2F0KToKKyAgICAgICAgKHRlc3RBZGRBcmdGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lv
bik6CisgICAgICAgICh0ZXN0QWRkQXJnc0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9u
KToKKyAgICAgICAgKHRlc3RBZGRBcmdzRmxvYXRXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lv
bik6CisgICAgICAgICh0ZXN0QWRkTXVsTXVsQXJncyk6CisgICAgICAgICh0ZXN0TXVsQXJnKToK
KyAgICAgICAgKHRlc3RNdWxBcmdTdG9yZSk6CisgICAgICAgICh0ZXN0TXVsQWRkQXJnKToKKyAg
ICAgICAgKHRlc3RNdWxBcmdzKToKKyAgICAgICAgKHRlc3RNdWxBcmdOZWdBcmcpOgorICAgICAg
ICAodGVzdE11bE5lZ0FyZ0FyZyk6CisgICAgICAgICh0ZXN0TXVsQXJnSW1tKToKKyAgICAgICAg
KHRlc3RNdWxJbW1BcmcpOgorICAgICAgICAodGVzdE11bEFyZ3MzMik6CisgICAgICAgICh0ZXN0
TXVsQXJnczMyU2lnbkV4dGVuZCk6CisgICAgICAgICh0ZXN0TXVsSW1tMzJTaWduRXh0ZW5kKToK
KyAgICAgICAgKHRlc3RNdWxMb2FkVHdpY2UpOgorICAgICAgICAodGVzdE11bEFkZEFyZ3NMZWZ0
KToKKyAgICAgICAgKHRlc3RNdWxBZGRBcmdzUmlnaHQpOgorICAgICAgICAodGVzdE11bEFkZEFy
Z3NMZWZ0MzIpOgorICAgICAgICAodGVzdE11bEFkZEFyZ3NSaWdodDMyKToKKyAgICAgICAgKHRl
c3RNdWxTdWJBcmdzTGVmdCk6CisgICAgICAgICh0ZXN0TXVsU3ViQXJnc1JpZ2h0KToKKyAgICAg
ICAgKHRlc3RNdWxTdWJBcmdzTGVmdDMyKToKKyAgICAgICAgKHRlc3RNdWxTdWJBcmdzUmlnaHQz
Mik6CisgICAgICAgICh0ZXN0TXVsTmVnQXJncyk6CisgICAgICAgICh0ZXN0TXVsTmVnQXJnczMy
KToKKyAgICAgICAgKHRlc3RNdWxBcmdEb3VibGUpOgorICAgICAgICAodGVzdE11bEFyZ3NEb3Vi
bGUpOgorICAgICAgICAodGVzdE11bEFyZ0ltbURvdWJsZSk6CisgICAgICAgICh0ZXN0TXVsSW1t
QXJnRG91YmxlKToKKyAgICAgICAgKHRlc3RNdWxJbW1zRG91YmxlKToKKyAgICAgICAgKHRlc3RN
dWxBcmdGbG9hdCk6CisgICAgICAgICh0ZXN0TXVsQXJnc0Zsb2F0KToKKyAgICAgICAgKHRlc3RN
dWxBcmdJbW1GbG9hdCk6CisgICAgICAgICh0ZXN0TXVsSW1tQXJnRmxvYXQpOgorICAgICAgICAo
dGVzdE11bEltbXNGbG9hdCk6CisgICAgICAgICh0ZXN0TXVsQXJnRmxvYXRXaXRoVXNlbGVzc0Rv
dWJsZUNvbnZlcnNpb24pOgorICAgICAgICAodGVzdE11bEFyZ3NGbG9hdFdpdGhVc2VsZXNzRG91
YmxlQ29udmVyc2lvbik6CisgICAgICAgICh0ZXN0TXVsQXJnc0Zsb2F0V2l0aEVmZmVjdGZ1bERv
dWJsZUNvbnZlcnNpb24pOgorICAgICAgICAodGVzdERpdkFyZ0RvdWJsZSk6CisgICAgICAgICh0
ZXN0RGl2QXJnc0RvdWJsZSk6CisgICAgICAgICh0ZXN0RGl2QXJnSW1tRG91YmxlKToKKyAgICAg
ICAgKHRlc3REaXZJbW1BcmdEb3VibGUpOgorICAgICAgICAodGVzdERpdkltbXNEb3VibGUpOgor
ICAgICAgICAodGVzdERpdkFyZ0Zsb2F0KToKKyAgICAgICAgKHRlc3REaXZBcmdzRmxvYXQpOgor
ICAgICAgICAodGVzdERpdkFyZ0ltbUZsb2F0KToKKyAgICAgICAgKHRlc3REaXZJbW1BcmdGbG9h
dCk6CisgICAgICAgICh0ZXN0RGl2SW1tc0Zsb2F0KToKKyAgICAgICAgKHRlc3RNb2RBcmdEb3Vi
bGUpOgorICAgICAgICAodGVzdE1vZEFyZ3NEb3VibGUpOgorICAgICAgICAodGVzdE1vZEFyZ0lt
bURvdWJsZSk6CisgICAgICAgICh0ZXN0TW9kSW1tQXJnRG91YmxlKToKKyAgICAgICAgKHRlc3RN
b2RJbW1zRG91YmxlKToKKyAgICAgICAgKHRlc3RNb2RBcmdGbG9hdCk6CisgICAgICAgICh0ZXN0
TW9kQXJnc0Zsb2F0KToKKyAgICAgICAgKHRlc3RNb2RBcmdJbW1GbG9hdCk6CisgICAgICAgICh0
ZXN0TW9kSW1tQXJnRmxvYXQpOgorICAgICAgICAodGVzdE1vZEltbXNGbG9hdCk6CisgICAgICAg
ICh0ZXN0RGl2QXJnRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24pOgorICAgICAgICAo
dGVzdERpdkFyZ3NGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbik6CisgICAgICAgICh0
ZXN0RGl2QXJnc0Zsb2F0V2l0aEVmZmVjdGZ1bERvdWJsZUNvbnZlcnNpb24pOgorICAgICAgICAo
dGVzdFVEaXZBcmdzSW50MzIpOgorICAgICAgICAodGVzdFVEaXZBcmdzSW50NjQpOgorICAgICAg
ICAodGVzdFVNb2RBcmdzSW50MzIpOgorICAgICAgICAodGVzdFVNb2RBcmdzSW50NjQpOgorICAg
ICAgICAodGVzdFN1YkFyZyk6CisgICAgICAgICh0ZXN0U3ViQXJncyk6CisgICAgICAgICh0ZXN0
U3ViQXJnSW1tKToKKyAgICAgICAgKHRlc3RTdWJOZWcpOgorICAgICAgICAodGVzdE5lZ1N1Yik6
CisgICAgICAgICh0ZXN0TmVnVmFsdWVTdWJPbmUpOgorICAgICAgICAodGVzdFN1YlN1Yik6Cisg
ICAgICAgICh0ZXN0U3ViU3ViMik6CisgICAgICAgICh0ZXN0U3ViQWRkKToKKyAgICAgICAgKHRl
c3RTdWJGaXJzdE5lZyk6CisgICAgICAgICh0ZXN0U3ViSW1tQXJnKToKKyAgICAgICAgKHRlc3RT
dWJBcmdNZW0pOgorICAgICAgICAodGVzdFN1Yk1lbUFyZyk6CisgICAgICAgICh0ZXN0U3ViSW1t
TWVtKToKKyAgICAgICAgKHRlc3RTdWJNZW1JbW0pOgorICAgICAgICAodGVzdFN1YkFyZ3MzMik6
CisgICAgICAgICh0ZXN0U3ViQXJnSW1tMzIpOgorICAgICAgICAodGVzdFN1YkltbUFyZzMyKToK
KyAgICAgICAgKHRlc3RTdWJNZW1BcmczMik6CisgICAgICAgICh0ZXN0U3ViQXJnTWVtMzIpOgor
ICAgICAgICAodGVzdFN1YkltbU1lbTMyKToKKyAgICAgICAgKHRlc3RTdWJNZW1JbW0zMik6Cisg
ICAgICAgICh0ZXN0TmVnVmFsdWVTdWJPbmUzMik6CisgICAgICAgICh0ZXN0TmVnTXVsQXJnSW1t
KToKKyAgICAgICAgKHRlc3RTdWJNdWxNdWxBcmdzKToKKyAgICAgICAgKHRlc3RTdWJBcmdEb3Vi
bGUpOgorICAgICAgICAodGVzdFN1YkFyZ3NEb3VibGUpOgorICAgICAgICAodGVzdFN1YkFyZ0lt
bURvdWJsZSk6CisgICAgICAgICh0ZXN0U3ViSW1tQXJnRG91YmxlKToKKyAgICAgICAgKHRlc3RT
dWJJbW1zRG91YmxlKToKKyAgICAgICAgKHRlc3RTdWJBcmdGbG9hdCk6CisgICAgICAgICh0ZXN0
U3ViQXJnc0Zsb2F0KToKKyAgICAgICAgKHRlc3RTdWJBcmdJbW1GbG9hdCk6CisgICAgICAgICh0
ZXN0U3ViSW1tQXJnRmxvYXQpOgorICAgICAgICAodGVzdFN1YkltbXNGbG9hdCk6CisgICAgICAg
ICh0ZXN0U3ViQXJnRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24pOgorICAgICAgICAo
dGVzdFN1YkFyZ3NGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbik6CisgICAgICAgICh0
ZXN0U3ViQXJnc0Zsb2F0V2l0aEVmZmVjdGZ1bERvdWJsZUNvbnZlcnNpb24pOgorICAgICAgICAo
dGVzdFRlcm5hcnlTdWJJbnN0cnVjdGlvblNlbGVjdGlvbik6CisgICAgICAgICh0ZXN0TmVnRG91
YmxlKToKKyAgICAgICAgKHRlc3ROZWdGbG9hdCk6CisgICAgICAgICh0ZXN0TmVnRmxvYXRXaXRo
VXNlbGVzc0RvdWJsZUNvbnZlcnNpb24pOgorICAgICAgICAodGVzdEJpdEFuZEFyZ3MpOgorICAg
ICAgICAodGVzdEJpdEFuZFNhbWVBcmcpOgorICAgICAgICAodGVzdEJpdEFuZE5vdE5vdCk6Cisg
ICAgICAgICh0ZXN0Qml0QW5kTm90SW1tKToKKyAgICAgICAgKHRlc3RCaXRBbmRJbW1zKToKKyAg
ICAgICAgKHRlc3RCaXRBbmRBcmdJbW0pOgorICAgICAgICAodGVzdEJpdEFuZEltbUFyZyk6Cisg
ICAgICAgICh0ZXN0Qml0QW5kQml0QW5kQXJnSW1tSW1tKToKKyAgICAgICAgKHRlc3RCaXRBbmRJ
bW1CaXRBbmRBcmdJbW0pOgorICAgICAgICAodGVzdEJpdEFuZEFyZ3MzMik6CisgICAgICAgICh0
ZXN0Qml0QW5kU2FtZUFyZzMyKToKKyAgICAgICAgKHRlc3RCaXRBbmRJbW1zMzIpOgorICAgICAg
ICAodGVzdEJpdEFuZEFyZ0ltbTMyKToKKyAgICAgICAgKHRlc3RCaXRBbmRJbW1BcmczMik6Cisg
ICAgICAgICh0ZXN0Qml0QW5kQml0QW5kQXJnSW1tSW1tMzIpOgorICAgICAgICAodGVzdEJpdEFu
ZEltbUJpdEFuZEFyZ0ltbTMyKToKKyAgICAgICAgKHRlc3RCaXRBbmRXaXRoTWFza1JldHVybnNC
b29sZWFucyk6CisgICAgICAgIChiaXRBbmREb3VibGUpOgorICAgICAgICAodGVzdEJpdEFuZEFy
Z0RvdWJsZSk6CisgICAgICAgICh0ZXN0Qml0QW5kQXJnc0RvdWJsZSk6CisgICAgICAgICh0ZXN0
Qml0QW5kQXJnSW1tRG91YmxlKToKKyAgICAgICAgKHRlc3RCaXRBbmRJbW1zRG91YmxlKToKKyAg
ICAgICAgKGJpdEFuZEZsb2F0KToKKyAgICAgICAgKHRlc3RCaXRBbmRBcmdGbG9hdCk6CisgICAg
ICAgICh0ZXN0Qml0QW5kQXJnc0Zsb2F0KToKKyAgICAgICAgKHRlc3RCaXRBbmRBcmdJbW1GbG9h
dCk6CisgICAgICAgICh0ZXN0Qml0QW5kSW1tc0Zsb2F0KToKKyAgICAgICAgKHRlc3RCaXRBbmRB
cmdzRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24pOgorICAgICAgICAodGVzdEJpdE9y
QXJncyk6CisgICAgICAgICh0ZXN0Qml0T3JTYW1lQXJnKToKKyAgICAgICAgKHRlc3RCaXRPckFu
ZEFuZEFyZ3MpOgorICAgICAgICAodGVzdEJpdE9yQW5kU2FtZUFyZ3MpOgorICAgICAgICAodGVz
dEJpdE9yTm90Tm90KToKKyAgICAgICAgKHRlc3RCaXRPck5vdEltbSk6CisgICAgICAgICh0ZXN0
Qml0T3JJbW1zKToKKyAgICAgICAgKHRlc3RCaXRPckFyZ0ltbSk6CisgICAgICAgICh0ZXN0Qml0
T3JJbW1BcmcpOgorICAgICAgICAodGVzdEJpdE9yQml0T3JBcmdJbW1JbW0pOgorICAgICAgICAo
dGVzdEJpdE9ySW1tQml0T3JBcmdJbW0pOgorICAgICAgICAodGVzdEJpdE9yQXJnczMyKToKKyAg
ICAgICAgKHRlc3RCaXRPclNhbWVBcmczMik6CisgICAgICAgICh0ZXN0Qml0T3JJbW1zMzIpOgor
ICAgICAgICAodGVzdEJpdE9yQXJnSW1tMzIpOgorICAgICAgICAodGVzdEJpdE9ySW1tQXJnMzIp
OgorICAgICAgICAqIGIzL3Rlc3RiM18zLmNwcDogQWRkZWQuCisgICAgICAgICh0ZXN0Qml0T3JC
aXRPckFyZ0ltbUltbTMyKToKKyAgICAgICAgKHRlc3RCaXRPckltbUJpdE9yQXJnSW1tMzIpOgor
ICAgICAgICAoYml0T3JEb3VibGUpOgorICAgICAgICAodGVzdEJpdE9yQXJnRG91YmxlKToKKyAg
ICAgICAgKHRlc3RCaXRPckFyZ3NEb3VibGUpOgorICAgICAgICAodGVzdEJpdE9yQXJnSW1tRG91
YmxlKToKKyAgICAgICAgKHRlc3RCaXRPckltbXNEb3VibGUpOgorICAgICAgICAoYml0T3JGbG9h
dCk6CisgICAgICAgICh0ZXN0Qml0T3JBcmdGbG9hdCk6CisgICAgICAgICh0ZXN0Qml0T3JBcmdz
RmxvYXQpOgorICAgICAgICAodGVzdEJpdE9yQXJnSW1tRmxvYXQpOgorICAgICAgICAodGVzdEJp
dE9ySW1tc0Zsb2F0KToKKyAgICAgICAgKHRlc3RCaXRPckFyZ3NGbG9hdFdpdGhVc2VsZXNzRG91
YmxlQ29udmVyc2lvbik6CisgICAgICAgICh0ZXN0Qml0WG9yQXJncyk6CisgICAgICAgICh0ZXN0
Qml0WG9yU2FtZUFyZyk6CisgICAgICAgICh0ZXN0Qml0WG9yQW5kQW5kQXJncyk6CisgICAgICAg
ICh0ZXN0Qml0WG9yQW5kU2FtZUFyZ3MpOgorICAgICAgICAodGVzdEJpdFhvckltbXMpOgorICAg
ICAgICAodGVzdEJpdFhvckFyZ0ltbSk6CisgICAgICAgICh0ZXN0Qml0WG9ySW1tQXJnKToKKyAg
ICAgICAgKHRlc3RCaXRYb3JCaXRYb3JBcmdJbW1JbW0pOgorICAgICAgICAodGVzdEJpdFhvcklt
bUJpdFhvckFyZ0ltbSk6CisgICAgICAgICh0ZXN0Qml0WG9yQXJnczMyKToKKyAgICAgICAgKHRl
c3RCaXRYb3JTYW1lQXJnMzIpOgorICAgICAgICAodGVzdEJpdFhvckltbXMzMik6CisgICAgICAg
ICh0ZXN0Qml0WG9yQXJnSW1tMzIpOgorICAgICAgICAodGVzdEJpdFhvckltbUFyZzMyKToKKyAg
ICAgICAgKHRlc3RCaXRYb3JCaXRYb3JBcmdJbW1JbW0zMik6CisgICAgICAgICh0ZXN0Qml0WG9y
SW1tQml0WG9yQXJnSW1tMzIpOgorICAgICAgICAodGVzdEJpdE5vdEFyZyk6CisgICAgICAgICh0
ZXN0Qml0Tm90SW1tKToKKyAgICAgICAgKHRlc3RCaXROb3RNZW0pOgorICAgICAgICAodGVzdEJp
dE5vdEFyZzMyKToKKyAgICAgICAgKHRlc3RCaXROb3RJbW0zMik6CisgICAgICAgICh0ZXN0Qml0
Tm90TWVtMzIpOgorICAgICAgICAodGVzdE5vdE9uQm9vbGVhbkFuZEJyYW5jaDMyKToKKyAgICAg
ICAgKHRlc3RCaXROb3RPbkJvb2xlYW5BbmRCcmFuY2gzMik6CisgICAgICAgICh0ZXN0U2hsQXJn
cyk6CisgICAgICAgICh0ZXN0U2hsSW1tcyk6CisgICAgICAgICh0ZXN0U2hsQXJnSW1tKToKKyAg
ICAgICAgKHRlc3RTaGxTU2hyQXJnSW1tKToKKyAgICAgICAgKHRlc3RTaGxBcmczMik6CisgICAg
ICAgICh0ZXN0U2hsQXJnczMyKToKKyAgICAgICAgKHRlc3RTaGxJbW1zMzIpOgorICAgICAgICAo
dGVzdFNobEFyZ0ltbTMyKToKKyAgICAgICAgKHRlc3RTaGxaU2hyQXJnSW1tMzIpOgorICAgICAg
ICAodGVzdFNTaHJBcmdzKToKKyAgICAgICAgKHRlc3RTU2hySW1tcyk6CisgICAgICAgICh0ZXN0
U1NockFyZ0ltbSk6CisgICAgICAgICh0ZXN0U1NockFyZzMyKToKKyAgICAgICAgKHRlc3RTU2hy
QXJnczMyKToKKyAgICAgICAgKHRlc3RTU2hySW1tczMyKToKKyAgICAgICAgKHRlc3RTU2hyQXJn
SW1tMzIpOgorICAgICAgICAodGVzdFpTaHJBcmdzKToKKyAgICAgICAgKHRlc3RaU2hySW1tcyk6
CisgICAgICAgICh0ZXN0WlNockFyZ0ltbSk6CisgICAgICAgICh0ZXN0WlNockFyZzMyKToKKyAg
ICAgICAgKHRlc3RaU2hyQXJnczMyKToKKyAgICAgICAgKHRlc3RaU2hySW1tczMyKToKKyAgICAg
ICAgKHRlc3RaU2hyQXJnSW1tMzIpOgorICAgICAgICAoY291bnRMZWFkaW5nWmVybyk6CisgICAg
ICAgICh0ZXN0Q2x6QXJnNjQpOgorICAgICAgICAodGVzdENsek1lbTY0KToKKyAgICAgICAgKHRl
c3RDbHpBcmczMik6CisgICAgICAgICh0ZXN0Q2x6TWVtMzIpOgorICAgICAgICAodGVzdEFic0Fy
Zyk6CisgICAgICAgICh0ZXN0QWJzSW1tKToKKyAgICAgICAgKHRlc3RBYnNNZW0pOgorICAgICAg
ICAodGVzdEFic0Fic0FyZyk6CisgICAgICAgICh0ZXN0QWJzTmVnQXJnKToKKyAgICAgICAgKHRl
c3RBYnNCaXR3aXNlQ2FzdEFyZyk6CisgICAgICAgICh0ZXN0Qml0d2lzZUNhc3RBYnNCaXR3aXNl
Q2FzdEFyZyk6CisgICAgICAgICh0ZXN0QWJzQXJnV2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9u
KToKKyAgICAgICAgKHRlc3RBYnNBcmdXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lvbik6Cisg
ICAgICAgICh0ZXN0Q2VpbEFyZyk6CisgICAgICAgICh0ZXN0Q2VpbEltbSk6CisgICAgICAgICh0
ZXN0Q2VpbE1lbSk6CisgICAgICAgICh0ZXN0Q2VpbENlaWxBcmcpOgorICAgICAgICAodGVzdEZs
b29yQ2VpbEFyZyk6CisgICAgICAgICh0ZXN0Q2VpbElUb0Q2NCk6CisgICAgICAgICh0ZXN0Q2Vp
bElUb0QzMik6CisgICAgICAgICh0ZXN0Q2VpbEFyZ1dpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lv
bik6CisgICAgICAgICh0ZXN0Q2VpbEFyZ1dpdGhFZmZlY3RmdWxEb3VibGVDb252ZXJzaW9uKToK
KyAgICAgICAgKHRlc3RGbG9vckFyZyk6CisgICAgICAgICh0ZXN0Rmxvb3JJbW0pOgorICAgICAg
ICAodGVzdEZsb29yTWVtKToKKyAgICAgICAgKHRlc3RGbG9vckZsb29yQXJnKToKKyAgICAgICAg
KHRlc3RDZWlsRmxvb3JBcmcpOgorICAgICAgICAodGVzdEZsb29ySVRvRDY0KToKKyAgICAgICAg
KHRlc3RGbG9vcklUb0QzMik6CisgICAgICAgICh0ZXN0Rmxvb3JBcmdXaXRoVXNlbGVzc0RvdWJs
ZUNvbnZlcnNpb24pOgorICAgICAgICAodGVzdEZsb29yQXJnV2l0aEVmZmVjdGZ1bERvdWJsZUNv
bnZlcnNpb24pOgorICAgICAgICAoY29ycmVjdFNxcnQpOgorICAgICAgICAodGVzdFNxcnRBcmcp
OgorICAgICAgICAodGVzdFNxcnRJbW0pOgorICAgICAgICAodGVzdFNxcnRNZW0pOgorICAgICAg
ICAodGVzdFNxcnRBcmdXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24pOgorICAgICAgICAodGVz
dFNxcnRBcmdXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lvbik6CisgICAgICAgICh0ZXN0Q29t
cGFyZVR3b0Zsb2F0VG9Eb3VibGUpOgorICAgICAgICAodGVzdENvbXBhcmVPbmVGbG9hdFRvRG91
YmxlKToKKyAgICAgICAgKHRlc3RDb21wYXJlRmxvYXRUb0RvdWJsZVRocm91Z2hQaGkpOgorICAg
ICAgICAodGVzdERvdWJsZVRvRmxvYXRUaHJvdWdoUGhpKToKKyAgICAgICAgKHRlc3RSZWR1Y2VG
bG9hdFRvRG91YmxlVmFsaWRhdGVzKToKKyAgICAgICAgKHRlc3REb3VibGVQcm9kdWNlclBoaVRv
RmxvYXRDb252ZXJzaW9uKToKKyAgICAgICAgKHRlc3REb3VibGVQcm9kdWNlclBoaVRvRmxvYXRD
b252ZXJzaW9uV2l0aERvdWJsZUNvbnN1bWVyKToKKyAgICAgICAgKHRlc3REb3VibGVQcm9kdWNl
clBoaVdpdGhOb25GbG9hdENvbnN0KToKKyAgICAgICAgKHRlc3REb3VibGVBcmdUb0ludDY0Qml0
d2lzZUNhc3QpOgorICAgICAgICAodGVzdERvdWJsZUltbVRvSW50NjRCaXR3aXNlQ2FzdCk6Cisg
ICAgICAgICh0ZXN0VHdvQml0d2lzZUNhc3RPbkRvdWJsZSk6CisgICAgICAgICh0ZXN0Qml0d2lz
ZUNhc3RPbkRvdWJsZUluTWVtb3J5KToKKyAgICAgICAgKHRlc3RCaXR3aXNlQ2FzdE9uRG91Ymxl
SW5NZW1vcnlJbmRleGVkKToKKyAgICAgICAgKHRlc3RJbnQ2NEJBcmdUb0RvdWJsZUJpdHdpc2VD
YXN0KToKKyAgICAgICAgKHRlc3RJbnQ2NEJJbW1Ub0RvdWJsZUJpdHdpc2VDYXN0KToKKyAgICAg
ICAgKHRlc3RUd29CaXR3aXNlQ2FzdE9uSW50NjQpOgorICAgICAgICAodGVzdEJpdHdpc2VDYXN0
T25JbnQ2NEluTWVtb3J5KToKKyAgICAgICAgKHRlc3RCaXR3aXNlQ2FzdE9uSW50NjRJbk1lbW9y
eUluZGV4ZWQpOgorICAgICAgICAodGVzdEZsb2F0SW1tVG9JbnQzMkJpdHdpc2VDYXN0KToKKyAg
ICAgICAgKHRlc3RCaXR3aXNlQ2FzdE9uRmxvYXRJbk1lbW9yeSk6CisgICAgICAgICh0ZXN0SW50
MzJCQXJnVG9GbG9hdEJpdHdpc2VDYXN0KToKKyAgICAgICAgKHRlc3RJbnQzMkJJbW1Ub0Zsb2F0
Qml0d2lzZUNhc3QpOgorICAgICAgICAodGVzdFR3b0JpdHdpc2VDYXN0T25JbnQzMik6CisgICAg
ICAgICh0ZXN0Qml0d2lzZUNhc3RPbkludDMySW5NZW1vcnkpOgorICAgICAgICAodGVzdENvbnZl
cnREb3VibGVUb0Zsb2F0QXJnKToKKyAgICAgICAgKHRlc3RDb252ZXJ0RG91YmxlVG9GbG9hdElt
bSk6CisgICAgICAgICh0ZXN0Q29udmVydERvdWJsZVRvRmxvYXRNZW0pOgorICAgICAgICAodGVz
dENvbnZlcnRGbG9hdFRvRG91YmxlQXJnKToKKyAgICAgICAgKHRlc3RDb252ZXJ0RmxvYXRUb0Rv
dWJsZUltbSk6CisgICAgICAgICh0ZXN0Q29udmVydEZsb2F0VG9Eb3VibGVNZW0pOgorICAgICAg
ICAodGVzdENvbnZlcnREb3VibGVUb0Zsb2F0VG9Eb3VibGVUb0Zsb2F0KToKKyAgICAgICAgKHRl
c3RMb2FkRmxvYXRDb252ZXJ0RG91YmxlQ29udmVydEZsb2F0U3RvcmVGbG9hdCk6CisgICAgICAg
ICh0ZXN0RnJvdW5kQXJnKToKKyAgICAgICAgKHRlc3RGcm91bmRNZW0pOgorICAgICAgICAodGVz
dElUb0Q2NEFyZyk6CisgICAgICAgICh0ZXN0SVRvRjY0QXJnKToKKyAgICAgICAgKHRlc3RJVG9E
MzJBcmcpOgorICAgICAgICAodGVzdElUb0YzMkFyZyk6CisgICAgICAgICh0ZXN0SVRvRDY0TWVt
KToKKyAgICAgICAgKHRlc3RJVG9GNjRNZW0pOgorICAgICAgICAodGVzdElUb0QzMk1lbSk6Cisg
ICAgICAgICh0ZXN0SVRvRjMyTWVtKToKKyAgICAgICAgKHRlc3RJVG9ENjRJbW0pOgorICAgICAg
ICAodGVzdElUb0Y2NEltbSk6CisgICAgICAgICh0ZXN0SVRvRDMySW1tKToKKyAgICAgICAgKHRl
c3RJVG9GMzJJbW0pOgorICAgICAgICAodGVzdElUb0RSZWR1Y2VkVG9JVG9GNjRBcmcpOgorICAg
ICAgICAodGVzdElUb0RSZWR1Y2VkVG9JVG9GMzJBcmcpOgorICAgICAgICAodGVzdFN0b3JlMzIp
OgorICAgICAgICAodGVzdFN0b3JlQ29uc3RhbnQpOgorICAgICAgICAodGVzdFN0b3JlQ29uc3Rh
bnRQdHIpOgorICAgICAgICAodGVzdFN0b3JlOEFyZyk6CisgICAgICAgICh0ZXN0U3RvcmU4SW1t
KToKKyAgICAgICAgKHRlc3RTdG9yZVBhcnRpYWw4Qml0UmVnaXN0ZXJPblg4Nik6CisgICAgICAg
ICh0ZXN0U3RvcmUxNkFyZyk6CisgICAgICAgICh0ZXN0U3RvcmUxNkltbSk6CisgICAgICAgICh0
ZXN0VHJ1bmMpOgorICAgICAgICAodGVzdEFkZDEpOgorICAgICAgICAodGVzdEFkZDFQdHIpOgor
ICAgICAgICAodGVzdE5lZzMyKToKKyAgICAgICAgKHRlc3ROZWdQdHIpOgorICAgICAgICAodGVz
dFN0b3JlQWRkTG9hZDMyKToKKyAgICAgICAgKiBiMy90ZXN0YjNfNC5jcHA6IEFkZGVkLgorICAg
ICAgICAodGVzdFN0b3JlUmVsQWRkTG9hZEFjcTMyKToKKyAgICAgICAgKHRlc3RTdG9yZUFkZExv
YWRJbW0zMik6CisgICAgICAgICh0ZXN0U3RvcmVBZGRMb2FkOCk6CisgICAgICAgICh0ZXN0U3Rv
cmVSZWxBZGRMb2FkQWNxOCk6CisgICAgICAgICh0ZXN0U3RvcmVSZWxBZGRGZW5jZUxvYWRBY3E4
KToKKyAgICAgICAgKHRlc3RTdG9yZUFkZExvYWRJbW04KToKKyAgICAgICAgKHRlc3RTdG9yZUFk
ZExvYWQxNik6CisgICAgICAgICh0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxMTYpOgorICAgICAgICAo
dGVzdFN0b3JlQWRkTG9hZEltbTE2KToKKyAgICAgICAgKHRlc3RTdG9yZUFkZExvYWQ2NCk6Cisg
ICAgICAgICh0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxNjQpOgorICAgICAgICAodGVzdFN0b3JlQWRk
TG9hZEltbTY0KToKKyAgICAgICAgKHRlc3RTdG9yZUFkZExvYWQzMkluZGV4KToKKyAgICAgICAg
KHRlc3RTdG9yZUFkZExvYWRJbW0zMkluZGV4KToKKyAgICAgICAgKHRlc3RTdG9yZUFkZExvYWQ4
SW5kZXgpOgorICAgICAgICAodGVzdFN0b3JlQWRkTG9hZEltbThJbmRleCk6CisgICAgICAgICh0
ZXN0U3RvcmVBZGRMb2FkMTZJbmRleCk6CisgICAgICAgICh0ZXN0U3RvcmVBZGRMb2FkSW1tMTZJ
bmRleCk6CisgICAgICAgICh0ZXN0U3RvcmVBZGRMb2FkNjRJbmRleCk6CisgICAgICAgICh0ZXN0
U3RvcmVBZGRMb2FkSW1tNjRJbmRleCk6CisgICAgICAgICh0ZXN0U3RvcmVTdWJMb2FkKToKKyAg
ICAgICAgKHRlc3RTdG9yZUFkZExvYWRJbnRlcmZlcmVuY2UpOgorICAgICAgICAodGVzdFN0b3Jl
QWRkQW5kTG9hZCk6CisgICAgICAgICh0ZXN0U3RvcmVOZWdMb2FkMzIpOgorICAgICAgICAodGVz
dFN0b3JlTmVnTG9hZFB0cik6CisgICAgICAgICh0ZXN0QWRkMVVuY29tbXV0ZWQpOgorICAgICAg
ICAodGVzdExvYWRPZmZzZXQpOgorICAgICAgICAodGVzdExvYWRPZmZzZXROb3RDb25zdGFudCk6
CisgICAgICAgICh0ZXN0TG9hZE9mZnNldFVzaW5nQWRkKToKKyAgICAgICAgKHRlc3RMb2FkT2Zm
c2V0VXNpbmdBZGRJbnRlcmZlcmVuY2UpOgorICAgICAgICAodGVzdExvYWRPZmZzZXRVc2luZ0Fk
ZE5vdENvbnN0YW50KToKKyAgICAgICAgKHRlc3RMb2FkQWRkclNoaWZ0KToKKyAgICAgICAgKHRl
c3RGcmFtZVBvaW50ZXIpOgorICAgICAgICAodGVzdE92ZXJyaWRlRnJhbWVQb2ludGVyKToKKyAg
ICAgICAgKHRlc3RTdGFja1Nsb3QpOgorICAgICAgICAodGVzdExvYWRGcm9tRnJhbWVQb2ludGVy
KToKKyAgICAgICAgKHRlc3RTdG9yZUxvYWRTdGFja1Nsb3QpOgorICAgICAgICAodGVzdFN0b3Jl
RmxvYXQpOgorICAgICAgICAodGVzdFN0b3JlRG91YmxlQ29uc3RhbnRBc0Zsb2F0KToKKyAgICAg
ICAgKHRlc3RTcGlsbEdQKToKKyAgICAgICAgKHRlc3RTcGlsbEZQKToKKyAgICAgICAgKHRlc3RJ
bnQzMlRvRG91YmxlUGFydGlhbFJlZ2lzdGVyU3RhbGwpOgorICAgICAgICAodGVzdEludDMyVG9E
b3VibGVQYXJ0aWFsUmVnaXN0ZXJXaXRob3V0U3RhbGwpOgorICAgICAgICAodGVzdEJyYW5jaCk6
CisgICAgICAgICh0ZXN0QnJhbmNoUHRyKToKKyAgICAgICAgKHRlc3REaWFtb25kKToKKyAgICAg
ICAgKHRlc3RCcmFuY2hOb3RFcXVhbCk6CisgICAgICAgICh0ZXN0QnJhbmNoTm90RXF1YWxDb21t
dXRlKToKKyAgICAgICAgKHRlc3RCcmFuY2hOb3RFcXVhbE5vdEVxdWFsKToKKyAgICAgICAgKHRl
c3RCcmFuY2hFcXVhbCk6CisgICAgICAgICh0ZXN0QnJhbmNoRXF1YWxFcXVhbCk6CisgICAgICAg
ICh0ZXN0QnJhbmNoRXF1YWxDb21tdXRlKToKKyAgICAgICAgKHRlc3RCcmFuY2hFcXVhbEVxdWFs
MSk6CisgICAgICAgICh0ZXN0QnJhbmNoRXF1YWxPclVub3JkZXJlZEFyZ3MpOgorICAgICAgICAo
dGVzdEJyYW5jaE5vdEVxdWFsQW5kT3JkZXJlZEFyZ3MpOgorICAgICAgICAodGVzdEJyYW5jaEVx
dWFsT3JVbm9yZGVyZWREb3VibGVBcmdJbW0pOgorICAgICAgICAodGVzdEJyYW5jaEVxdWFsT3JV
bm9yZGVyZWRGbG9hdEFyZ0ltbSk6CisgICAgICAgICh0ZXN0QnJhbmNoRXF1YWxPclVub3JkZXJl
ZERvdWJsZUltbXMpOgorICAgICAgICAodGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVyZWRGbG9hdElt
bXMpOgorICAgICAgICAodGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVyZWRGbG9hdFdpdGhVc2VsZXNz
RG91YmxlQ29udmVyc2lvbik6CisgICAgICAgICh0ZXN0QnJhbmNoRm9sZCk6CisgICAgICAgICh0
ZXN0RGlhbW9uZEZvbGQpOgorICAgICAgICAodGVzdEJyYW5jaE5vdEVxdWFsRm9sZFB0cik6Cisg
ICAgICAgICh0ZXN0QnJhbmNoRXF1YWxGb2xkUHRyKToKKyAgICAgICAgKHRlc3RCcmFuY2hMb2Fk
UHRyKToKKyAgICAgICAgKHRlc3RCcmFuY2hMb2FkMzIpOgorICAgICAgICAodGVzdEJyYW5jaExv
YWQ4Uyk6CisgICAgICAgICh0ZXN0QnJhbmNoTG9hZDhaKToKKyAgICAgICAgKHRlc3RCcmFuY2hM
b2FkMTZTKToKKyAgICAgICAgKHRlc3RCcmFuY2hMb2FkMTZaKToKKyAgICAgICAgKHRlc3RCcmFu
Y2g4V2l0aExvYWQ4WkluZGV4KToKKyAgICAgICAgKHRlc3RDb21wbGV4KToKKyAgICAgICAgKHRl
c3RCcmFuY2hCaXRUZXN0MzJUbXBJbW0pOgorICAgICAgICAodGVzdEJyYW5jaEJpdFRlc3QzMkFk
ZHJJbW0pOgorICAgICAgICAodGVzdEJyYW5jaEJpdFRlc3QzMlRtcFRtcCk6CisgICAgICAgICh0
ZXN0QnJhbmNoQml0VGVzdDY0VG1wVG1wKToKKyAgICAgICAgKHRlc3RCcmFuY2hCaXRUZXN0NjRB
ZGRyVG1wKToKKyAgICAgICAgKHRlc3RCcmFuY2hCaXRUZXN0TmVnYXRpb24pOgorICAgICAgICAo
dGVzdEJyYW5jaEJpdFRlc3ROZWdhdGlvbjIpOgorICAgICAgICAodGVzdFNpbXBsZVBhdGNocG9p
bnQpOgorICAgICAgICAodGVzdFNpbXBsZVBhdGNocG9pbnRXaXRob3V0T3VwdXRDbG9iYmVyc0dQ
QXJncyk6CisgICAgICAgICh0ZXN0U2ltcGxlUGF0Y2hwb2ludFdpdGhPdXB1dENsb2JiZXJzR1BB
cmdzKToKKyAgICAgICAgKHRlc3RTaW1wbGVQYXRjaHBvaW50V2l0aG91dE91cHV0Q2xvYmJlcnNG
UEFyZ3MpOgorICAgICAgICAodGVzdFNpbXBsZVBhdGNocG9pbnRXaXRoT3VwdXRDbG9iYmVyc0ZQ
QXJncyk6CisgICAgICAgICh0ZXN0UGF0Y2hwb2ludFdpdGhFYXJseUNsb2JiZXIpOgorICAgICAg
ICAodGVzdFBhdGNocG9pbnRDYWxsQXJnKToKKyAgICAgICAgKHRlc3RQYXRjaHBvaW50Rml4ZWRS
ZWdpc3Rlcik6CisgICAgICAgICh0ZXN0UGF0Y2hwb2ludEFueSk6CisgICAgICAgICh0ZXN0UGF0
Y2hwb2ludEdQU2NyYXRjaCk6CisgICAgICAgICh0ZXN0UGF0Y2hwb2ludEZQU2NyYXRjaCk6Cisg
ICAgICAgICh0ZXN0UGF0Y2hwb2ludExvdHNPZkxhdGVBbnlzKToKKyAgICAgICAgKHRlc3RQYXRj
aHBvaW50QW55SW1tKToKKyAgICAgICAgKiBiMy90ZXN0YjNfNS5jcHA6IEFkZGVkLgorICAgICAg
ICAodGVzdFBhdGNocG9pbnRNYW55SW1tcyk6CisgICAgICAgICh0ZXN0UGF0Y2hwb2ludFdpdGhS
ZWdpc3RlclJlc3VsdCk6CisgICAgICAgICh0ZXN0UGF0Y2hwb2ludFdpdGhTdGFja0FyZ3VtZW50
UmVzdWx0KToKKyAgICAgICAgKHRlc3RQYXRjaHBvaW50V2l0aEFueVJlc3VsdCk6CisgICAgICAg
ICh0ZXN0U2ltcGxlQ2hlY2spOgorICAgICAgICAodGVzdENoZWNrRmFsc2UpOgorICAgICAgICAo
dGVzdENoZWNrVHJ1ZSk6CisgICAgICAgICh0ZXN0Q2hlY2tMZXNzVGhhbik6CisgICAgICAgICh0
ZXN0Q2hlY2tNZWdhQ29tYm8pOgorICAgICAgICAodGVzdENoZWNrVHJpY2t5TWVnYUNvbWJvKToK
KyAgICAgICAgKHRlc3RDaGVja1R3b01lZ2FDb21ib3MpOgorICAgICAgICAodGVzdENoZWNrVHdv
Tm9uUmVkdW5kYW50TWVnYUNvbWJvcyk6CisgICAgICAgICh0ZXN0Q2hlY2tBZGRJbW0pOgorICAg
ICAgICAodGVzdENoZWNrQWRkSW1tQ29tbXV0ZSk6CisgICAgICAgICh0ZXN0Q2hlY2tBZGRJbW1T
b21lUmVnaXN0ZXIpOgorICAgICAgICAodGVzdENoZWNrQWRkKToKKyAgICAgICAgKHRlc3RDaGVj
a0FkZDY0KToKKyAgICAgICAgKHRlc3RDaGVja0FkZEZvbGQpOgorICAgICAgICAodGVzdENoZWNr
QWRkRm9sZEZhaWwpOgorICAgICAgICAodGVzdENoZWNrQWRkQXJndW1lbnRBbGlhc2luZzY0KToK
KyAgICAgICAgKHRlc3RDaGVja0FkZEFyZ3VtZW50QWxpYXNpbmczMik6CisgICAgICAgICh0ZXN0
Q2hlY2tBZGRTZWxmT3ZlcmZsb3c2NCk6CisgICAgICAgICh0ZXN0Q2hlY2tBZGRTZWxmT3ZlcmZs
b3czMik6CisgICAgICAgICh0ZXN0Q2hlY2tTdWJJbW0pOgorICAgICAgICAodGVzdENoZWNrU3Vi
QmFkSW1tKToKKyAgICAgICAgKHRlc3RDaGVja1N1Yik6CisgICAgICAgIChkb3VibGVTdWIpOgor
ICAgICAgICAodGVzdENoZWNrU3ViNjQpOgorICAgICAgICAodGVzdENoZWNrU3ViRm9sZCk6Cisg
ICAgICAgICh0ZXN0Q2hlY2tTdWJGb2xkRmFpbCk6CisgICAgICAgICh0ZXN0Q2hlY2tOZWcpOgor
ICAgICAgICAodGVzdENoZWNrTmVnNjQpOgorICAgICAgICAodGVzdENoZWNrTXVsKToKKyAgICAg
ICAgKHRlc3RDaGVja011bE1lbW9yeSk6CisgICAgICAgICh0ZXN0Q2hlY2tNdWwyKToKKyAgICAg
ICAgKHRlc3RDaGVja011bDY0KToKKyAgICAgICAgKHRlc3RDaGVja011bEZvbGQpOgorICAgICAg
ICAodGVzdENoZWNrTXVsRm9sZEZhaWwpOgorICAgICAgICAodGVzdENoZWNrTXVsQXJndW1lbnRB
bGlhc2luZzY0KToKKyAgICAgICAgKHRlc3RDaGVja011bEFyZ3VtZW50QWxpYXNpbmczMik6Cisg
ICAgICAgICh0ZXN0Q2hlY2tNdWw2NFNTaHIpOgorICAgICAgICAoZ2VuZXJpY1Rlc3RDb21wYXJl
KToKKyAgICAgICAgKG1vZGVsQ29tcGFyZSk6CisgICAgICAgICh0ZXN0Q29tcGFyZUxvYWQpOgor
ICAgICAgICAodGVzdENvbXBhcmVJbXBsKToKKyAgICAgICAgKHRlc3RDb21wYXJlKToKKyAgICAg
ICAgKHRlc3RFcXVhbERvdWJsZSk6CisgICAgICAgIChzaW1wbGVGdW5jdGlvbik6CisgICAgICAg
ICh0ZXN0Q2FsbFNpbXBsZSk6CisgICAgICAgICh0ZXN0Q2FsbFJhcmUpOgorICAgICAgICAodGVz
dENhbGxSYXJlTGl2ZSk6CisgICAgICAgICh0ZXN0Q2FsbFNpbXBsZVB1cmUpOgorICAgICAgICAo
ZnVuY3Rpb25XaXRoSGVsbGFBcmd1bWVudHMpOgorICAgICAgICAodGVzdENhbGxGdW5jdGlvbldp
dGhIZWxsYUFyZ3VtZW50cyk6CisgICAgICAgIChmdW5jdGlvbldpdGhIZWxsYUFyZ3VtZW50czIp
OgorICAgICAgICAodGVzdENhbGxGdW5jdGlvbldpdGhIZWxsYUFyZ3VtZW50czIpOgorICAgICAg
ICAoZnVuY3Rpb25XaXRoSGVsbGFBcmd1bWVudHMzKToKKyAgICAgICAgKHRlc3RDYWxsRnVuY3Rp
b25XaXRoSGVsbGFBcmd1bWVudHMzKToKKyAgICAgICAgKHRlc3RSZXR1cm5Eb3VibGUpOgorICAg
ICAgICAodGVzdFJldHVybkZsb2F0KToKKyAgICAgICAgKHNpbXBsZUZ1bmN0aW9uRG91YmxlKToK
KyAgICAgICAgKHRlc3RDYWxsU2ltcGxlRG91YmxlKToKKyAgICAgICAgKHNpbXBsZUZ1bmN0aW9u
RmxvYXQpOgorICAgICAgICAodGVzdENhbGxTaW1wbGVGbG9hdCk6CisgICAgICAgIChmdW5jdGlv
bldpdGhIZWxsYURvdWJsZUFyZ3VtZW50cyk6CisgICAgICAgICh0ZXN0Q2FsbEZ1bmN0aW9uV2l0
aEhlbGxhRG91YmxlQXJndW1lbnRzKToKKyAgICAgICAgKGZ1bmN0aW9uV2l0aEhlbGxhRmxvYXRB
cmd1bWVudHMpOgorICAgICAgICAodGVzdENhbGxGdW5jdGlvbldpdGhIZWxsYUZsb2F0QXJndW1l
bnRzKToKKyAgICAgICAgKHRlc3RMaW5lYXJTY2FuV2l0aENhbGxlZU9uU3RhY2spOgorICAgICAg
ICAodGVzdENoaWxsRGl2KToKKyAgICAgICAgKHRlc3RDaGlsbERpdlR3aWNlKToKKyAgICAgICAg
KHRlc3RDaGlsbERpdjY0KToKKyAgICAgICAgKHRlc3RNb2RBcmcpOgorICAgICAgICAodGVzdE1v
ZEFyZ3MpOgorICAgICAgICAodGVzdE1vZEltbXMpOgorICAgICAgICAodGVzdE1vZEFyZzMyKToK
KyAgICAgICAgKHRlc3RNb2RBcmdzMzIpOgorICAgICAgICAodGVzdE1vZEltbXMzMik6CisgICAg
ICAgICh0ZXN0Q2hpbGxNb2RBcmcpOgorICAgICAgICAodGVzdENoaWxsTW9kQXJncyk6CisgICAg
ICAgICh0ZXN0Q2hpbGxNb2RJbW1zKToKKyAgICAgICAgKHRlc3RDaGlsbE1vZEFyZzMyKToKKyAg
ICAgICAgKHRlc3RDaGlsbE1vZEFyZ3MzMik6CisgICAgICAgICh0ZXN0Q2hpbGxNb2RJbW1zMzIp
OgorICAgICAgICAodGVzdExvb3BXaXRoTXVsdGlwbGVIZWFkZXJFZGdlcyk6CisgICAgICAgICh0
ZXN0U3dpdGNoKToKKyAgICAgICAgKHRlc3RTd2l0Y2hTYW1lQ2FzZUFzRGVmYXVsdCk6CisgICAg
ICAgICh0ZXN0U3dpdGNoQ2hpbGxEaXYpOgorICAgICAgICAodGVzdFN3aXRjaFRhcmdldHRpbmdT
YW1lQmxvY2spOgorICAgICAgICAodGVzdFN3aXRjaFRhcmdldHRpbmdTYW1lQmxvY2tGb2xkUGF0
aENvbnN0YW50KToKKyAgICAgICAgKHRlc3RUcnVuY0ZvbGQpOgorICAgICAgICAodGVzdFpFeHQz
Mik6CisgICAgICAgICh0ZXN0WkV4dDMyRm9sZCk6CisgICAgICAgICh0ZXN0U0V4dDMyKToKKyAg
ICAgICAgKHRlc3RTRXh0MzJGb2xkKToKKyAgICAgICAgKHRlc3RUcnVuY1pFeHQzMik6CisgICAg
ICAgICh0ZXN0VHJ1bmNTRXh0MzIpOgorICAgICAgICAodGVzdFNFeHQ4KToKKyAgICAgICAgKHRl
c3RTRXh0OEZvbGQpOgorICAgICAgICAodGVzdFNFeHQ4U0V4dDgpOgorICAgICAgICAodGVzdFNF
eHQ4U0V4dDE2KToKKyAgICAgICAgKHRlc3RTRXh0OEJpdEFuZCk6CisgICAgICAgICh0ZXN0Qml0
QW5kU0V4dDgpOgorICAgICAgICAodGVzdFNFeHQxNik6CisgICAgICAgICh0ZXN0U0V4dDE2Rm9s
ZCk6CisgICAgICAgICh0ZXN0U0V4dDE2U0V4dDE2KToKKyAgICAgICAgKHRlc3RTRXh0MTZTRXh0
OCk6CisgICAgICAgICh0ZXN0U0V4dDE2Qml0QW5kKToKKyAgICAgICAgKHRlc3RCaXRBbmRTRXh0
MTYpOgorICAgICAgICAodGVzdFNFeHQzMkJpdEFuZCk6CisgICAgICAgICogYjMvdGVzdGIzXzYu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKHRlc3RCaXRBbmRTRXh0MzIpOgorICAgICAgICAodGVzdEJh
c2ljU2VsZWN0KToKKyAgICAgICAgKHRlc3RTZWxlY3RUZXN0KToKKyAgICAgICAgKHRlc3RTZWxl
Y3RDb21wYXJlRG91YmxlKToKKyAgICAgICAgKHRlc3RTZWxlY3RDb21wYXJlRmxvYXQpOgorICAg
ICAgICAodGVzdFNlbGVjdENvbXBhcmVGbG9hdFRvRG91YmxlKToKKyAgICAgICAgKHRlc3RTZWxl
Y3REb3VibGUpOgorICAgICAgICAodGVzdFNlbGVjdERvdWJsZVRlc3QpOgorICAgICAgICAodGVz
dFNlbGVjdERvdWJsZUNvbXBhcmVEb3VibGUpOgorICAgICAgICAodGVzdFNlbGVjdERvdWJsZUNv
bXBhcmVGbG9hdCk6CisgICAgICAgICh0ZXN0U2VsZWN0RmxvYXRDb21wYXJlRmxvYXQpOgorICAg
ICAgICAodGVzdFNlbGVjdERvdWJsZUNvbXBhcmVEb3VibGVXaXRoQWxpYXNpbmcpOgorICAgICAg
ICAodGVzdFNlbGVjdEZsb2F0Q29tcGFyZUZsb2F0V2l0aEFsaWFzaW5nKToKKyAgICAgICAgKHRl
c3RTZWxlY3RGb2xkKToKKyAgICAgICAgKHRlc3RTZWxlY3RJbnZlcnQpOgorICAgICAgICAodGVz
dENoZWNrU2VsZWN0KToKKyAgICAgICAgKHRlc3RDaGVja1NlbGVjdENoZWNrU2VsZWN0KToKKyAg
ICAgICAgKHRlc3RDaGVja1NlbGVjdEFuZENTRSk6CisgICAgICAgIChiM1Bvdyk6CisgICAgICAg
ICh0ZXN0UG93RG91YmxlQnlJbnRlZ2VyTG9vcCk6CisgICAgICAgICh0ZXN0VHJ1bmNPckhpZ2gp
OgorICAgICAgICAodGVzdFRydW5jT3JMb3cpOgorICAgICAgICAodGVzdEJpdEFuZE9ySGlnaCk6
CisgICAgICAgICh0ZXN0Qml0QW5kT3JMb3cpOgorICAgICAgICAodGVzdEJyYW5jaDY0RXF1YWwp
OgorICAgICAgICAodGVzdEJyYW5jaDY0RXF1YWxJbW0pOgorICAgICAgICAodGVzdEJyYW5jaDY0
RXF1YWxNZW0pOgorICAgICAgICAodGVzdEJyYW5jaDY0RXF1YWxNZW1JbW0pOgorICAgICAgICAo
dGVzdFN0b3JlOExvYWQ4Wik6CisgICAgICAgICh0ZXN0U3RvcmUxNkxvYWQxNlopOgorICAgICAg
ICAodGVzdFNTaHJTaGwzMik6CisgICAgICAgICh0ZXN0U1NoclNobDY0KToKKyAgICAgICAgKHRl
c3RUcml2aWFsSW5maW5pdGVMb29wKToKKyAgICAgICAgKHRlc3RGb2xkUGF0aEVxdWFsKToKKyAg
ICAgICAgKHRlc3RMU2hpZnRTZWxmMzIpOgorICAgICAgICAodGVzdFJTaGlmdFNlbGYzMik6Cisg
ICAgICAgICh0ZXN0VVJTaGlmdFNlbGYzMik6CisgICAgICAgICh0ZXN0TFNoaWZ0U2VsZjY0KToK
KyAgICAgICAgKHRlc3RSU2hpZnRTZWxmNjQpOgorICAgICAgICAodGVzdFVSU2hpZnRTZWxmNjQp
OgorICAgICAgICAodGVzdFBhdGNocG9pbnREb3VibGVSZWdzKToKKyAgICAgICAgKHRlc3RTcGls
bERlZlNtYWxsZXJUaGFuVXNlKToKKyAgICAgICAgKHRlc3RTcGlsbFVzZUxhcmdlclRoYW5EZWYp
OgorICAgICAgICAodGVzdExhdGVSZWdpc3Rlcik6CisgICAgICAgIChpbnRlcnByZXRlclByaW50
KToKKyAgICAgICAgKHRlc3RJbnRlcnByZXRlcik6CisgICAgICAgICh0ZXN0UmVkdWNlU3RyZW5n
dGhDaGVja0JvdHRvbVVzZUluQW5vdGhlckJsb2NrKToKKyAgICAgICAgKHRlc3RSZXNldFJlYWNo
YWJpbGl0eURhbmdsaW5nUmVmZXJlbmNlKToKKyAgICAgICAgKHRlc3RFbnRyeVN3aXRjaFNpbXBs
ZSk6CisgICAgICAgICh0ZXN0RW50cnlTd2l0Y2hOb0VudHJ5U3dpdGNoKToKKyAgICAgICAgKHRl
c3RFbnRyeVN3aXRjaFdpdGhDb21tb25QYXRocyk6CisgICAgICAgICh0ZXN0RW50cnlTd2l0Y2hX
aXRoQ29tbW9uUGF0aHNBbmROb25Ucml2aWFsRW50cnlwb2ludCk6CisgICAgICAgICh0ZXN0RW50
cnlTd2l0Y2hMb29wKToKKyAgICAgICAgKHRlc3RTb21lRWFybHlSZWdpc3Rlcik6CisgICAgICAg
ICh0ZXN0QnJhbmNoQml0QW5kSW1tRnVzaW9uKToKKyAgICAgICAgKHRlc3RUZXJtaW5hbFBhdGNo
cG9pbnRUaGF0TmVlZHNUb0JlU3BpbGxlZCk6CisgICAgICAgICh0ZXN0VGVybWluYWxQYXRjaHBv
aW50VGhhdE5lZWRzVG9CZVNwaWxsZWQyKToKKyAgICAgICAgKHRlc3RQYXRjaHBvaW50VGVybWlu
YWxSZXR1cm5WYWx1ZSk6CisgICAgICAgICh0ZXN0TWVtb3J5RmVuY2UpOgorICAgICAgICAodGVz
dFN0b3JlRmVuY2UpOgorICAgICAgICAodGVzdExvYWRGZW5jZSk6CisgICAgICAgICh0ZXN0VHJh
cHBpbmdMb2FkKToKKyAgICAgICAgKHRlc3RUcmFwcGluZ1N0b3JlKToKKyAgICAgICAgKHRlc3RU
cmFwcGluZ0xvYWRBZGRTdG9yZSk6CisgICAgICAgICh0ZXN0VHJhcHBpbmdMb2FkRENFKToKKyAg
ICAgICAgKHRlc3RUcmFwcGluZ1N0b3JlRWxpbWluYXRpb24pOgorICAgICAgICAodGVzdE1vdmVD
b25zdGFudHMpOgorICAgICAgICAodGVzdFBDT3JpZ2luTWFwRG9lc250SW5zZXJ0Tm9wcyk6Cisg
ICAgICAgICogYjMvdGVzdGIzXzcuY3BwOiBBZGRlZC4KKyAgICAgICAgKHRlc3RQaW5SZWdpc3Rl
cnMpOgorICAgICAgICAodGVzdFg4NkxlYUFkZEFkZFNobExlZnQpOgorICAgICAgICAodGVzdFg4
NkxlYUFkZEFkZFNobFJpZ2h0KToKKyAgICAgICAgKHRlc3RYODZMZWFBZGRBZGQpOgorICAgICAg
ICAodGVzdFg4NkxlYUFkZFNobFJpZ2h0KToKKyAgICAgICAgKHRlc3RYODZMZWFBZGRTaGxMZWZ0
U2NhbGUxKToKKyAgICAgICAgKHRlc3RYODZMZWFBZGRTaGxMZWZ0U2NhbGUyKToKKyAgICAgICAg
KHRlc3RYODZMZWFBZGRTaGxMZWZ0U2NhbGU0KToKKyAgICAgICAgKHRlc3RYODZMZWFBZGRTaGxM
ZWZ0U2NhbGU4KToKKyAgICAgICAgKHRlc3RBZGRTaGwzMik6CisgICAgICAgICh0ZXN0QWRkU2hs
NjQpOgorICAgICAgICAodGVzdEFkZFNobDY1KToKKyAgICAgICAgKHRlc3RSZWR1Y2VTdHJlbmd0
aFJlYXNzb2NpYXRpb24pOgorICAgICAgICAodGVzdExvYWRCYXNlSW5kZXhTaGlmdDIpOgorICAg
ICAgICAodGVzdExvYWRCYXNlSW5kZXhTaGlmdDMyKToKKyAgICAgICAgKHRlc3RPcHRpbWl6ZU1h
dGVyaWFsaXphdGlvbik6CisgICAgICAgIChnZW5lcmF0ZUxvb3ApOgorICAgICAgICAobWFrZUFy
cmF5Rm9yTG9vcHMpOgorICAgICAgICAoZ2VuZXJhdGVMb29wTm90QmFja3dhcmRzRG9taW5hbnQp
OgorICAgICAgICAob25lRnVuY3Rpb24pOgorICAgICAgICAobm9PcEZ1bmN0aW9uKToKKyAgICAg
ICAgKHRlc3RMSUNNUHVyZSk6CisgICAgICAgICh0ZXN0TElDTVB1cmVTaWRlRXhpdHMpOgorICAg
ICAgICAodGVzdExJQ01QdXJlV3JpdGVzUGlubmVkKToKKyAgICAgICAgKHRlc3RMSUNNUHVyZVdy
aXRlcyk6CisgICAgICAgICh0ZXN0TElDTVJlYWRzTG9jYWxTdGF0ZSk6CisgICAgICAgICh0ZXN0
TElDTVJlYWRzUGlubmVkKToKKyAgICAgICAgKHRlc3RMSUNNUmVhZHMpOgorICAgICAgICAodGVz
dExJQ01QdXJlTm90QmFja3dhcmRzRG9taW5hbnQpOgorICAgICAgICAodGVzdExJQ01QdXJlRm9p
bGVkQnlDaGlsZCk6CisgICAgICAgICh0ZXN0TElDTVB1cmVOb3RCYWNrd2FyZHNEb21pbmFudEZv
aWxlZEJ5Q2hpbGQpOgorICAgICAgICAodGVzdExJQ01FeGl0c1NpZGV3YXlzKToKKyAgICAgICAg
KHRlc3RMSUNNV3JpdGVzTG9jYWxTdGF0ZSk6CisgICAgICAgICh0ZXN0TElDTVdyaXRlcyk6Cisg
ICAgICAgICh0ZXN0TElDTUZlbmNlKToKKyAgICAgICAgKHRlc3RMSUNNV3JpdGVzUGlubmVkKToK
KyAgICAgICAgKHRlc3RMSUNNQ29udHJvbERlcGVuZGVudCk6CisgICAgICAgICh0ZXN0TElDTUNv
bnRyb2xEZXBlbmRlbnROb3RCYWNrd2FyZHNEb21pbmFudCk6CisgICAgICAgICh0ZXN0TElDTUNv
bnRyb2xEZXBlbmRlbnRTaWRlRXhpdHMpOgorICAgICAgICAodGVzdExJQ01SZWFkc1Bpbm5lZFdy
aXRlc1Bpbm5lZCk6CisgICAgICAgICh0ZXN0TElDTVJlYWRzV3JpdGVzRGlmZmVyZW50SGVhcHMp
OgorICAgICAgICAodGVzdExJQ01SZWFkc1dyaXRlc092ZXJsYXBwaW5nSGVhcHMpOgorICAgICAg
ICAodGVzdExJQ01EZWZhdWx0Q2FsbCk6CisgICAgICAgICh0ZXN0RGVwZW5kMzIpOgorICAgICAg
ICAodGVzdERlcGVuZDY0KToKKyAgICAgICAgKHRlc3RXYXNtQm91bmRzQ2hlY2spOgorICAgICAg
ICAodGVzdFdhc21BZGRyZXNzKToKKyAgICAgICAgKHRlc3RGYXN0VExTTG9hZCk6CisgICAgICAg
ICh0ZXN0RmFzdFRMU1N0b3JlKToKKyAgICAgICAgKGRvdWJsZUVxKToKKyAgICAgICAgKGRvdWJs
ZU5lcSk6CisgICAgICAgIChkb3VibGVHdCk6CisgICAgICAgIChkb3VibGVHdGUpOgorICAgICAg
ICAoZG91YmxlTHQpOgorICAgICAgICAoZG91YmxlTHRlKToKKyAgICAgICAgKHRlc3REb3VibGVM
aXRlcmFsQ29tcGFyaXNvbik6CisgICAgICAgICh0ZXN0RmxvYXRFcXVhbE9yVW5vcmRlcmVkRm9s
ZGluZyk6CisgICAgICAgICh0ZXN0RmxvYXRFcXVhbE9yVW5vcmRlcmVkRm9sZGluZ05hTik6Cisg
ICAgICAgICh0ZXN0RmxvYXRFcXVhbE9yVW5vcmRlcmVkRG9udEZvbGQpOgorICAgICAgICAoZnVu
Y3Rpb25OaW5lQXJncyk6CisgICAgICAgICh0ZXN0U2h1ZmZsZURvZXNudFRyYXNoQ2FsbGVlU2F2
ZXMpOgorICAgICAgICAodGVzdERlbW90ZVBhdGNocG9pbnRUZXJtaW5hbCk6CisgICAgICAgICh0
ZXN0UmVwb3J0VXNlZFJlZ2lzdGVyc0xhdGVVc2VGb2xsb3dlZEJ5RWFybHlEZWZEb2VzTm90TWFy
a1VzZUFzRGVhZCk6CisgICAgICAgICh0ZXN0SW5maW5pdGVMb29wRG9lc250Q2F1c2VCYWRIb2lz
dGluZyk6CisgICAgICAgICogYjMvdGVzdGIzXzguY3BwOiBBZGRlZC4KKyAgICAgICAgKHRlc3RB
dG9taWNXZWFrQ0FTKToKKyAgICAgICAgKHRlc3RBdG9taWNTdHJvbmdDQVMpOgorICAgICAgICAo
dGVzdEF0b21pY1hjaGcpOgorICAgICAgICAoYWRkQXRvbWljVGVzdHMpOgorICAgICAgICAodGVz
dExvYWQpOgorICAgICAgICAoYWRkTG9hZFRlc3RzKToKKwogMjAxOS0wNy0zMCAgWXVzdWtlIFN1
enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEVtaXQgd3JpdGUgYmFy
cmllciBhZnRlciBzdG9yaW5nIGluc3RlYWQgb2YgYmVmb3JlIHN0b3JpbmcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggNzNmNmVkZWNkNzYzYjg3ZGM3NDcwZTBkYmNjOGY4OTBjMzRl
MzYzZi4uZmFmMjU5ZWJlOGNlZDI1MWVlZTYzYzJiNzc2MDQ0MjcwZjA4MzJlNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY5MCw3ICs2OTAsNyBAQAogCQkwRkVDODU5MTFCREFD
REM3MDA4MEZGNzQgLyogQWlyVmFsaWRhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NTZDMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJWYWxpZGF0
ZS5oICovOyB9OwogCQkwRkVDODVBMzFCREI1Q0YxMDA4MEZGNzQgLyogRm91bmRhdGlvbi5mcmFt
ZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUYwRUI2MTA1Qzg2QzZCMDBFNkRGMUIgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi87IH07CiAJ
CTBGRUM4NUE0MUJEQjVDRjEwMDgwRkY3NCAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4g
RnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzJGNUJEOTA4
MjJBMUM3MDA3MzY5NzUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwotCQkwRkVD
ODVBRjFCREI1RDVFMDA4MEZGNzQgLyogdGVzdGIzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NUFFMUJEQjVENUUwMDgwRkY3NCAvKiB0ZXN0
YjMuY3BwICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICItTzAgLURSRUxFQVNFX1dJ
VEhPVVRfT1BUSU1JWkFUSU9OUyI7IH07IH07CisJCTBGRUM4NUFGMUJEQjVENUUwMDgwRkY3NCAv
KiB0ZXN0YjNfMS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkVDODVBRTFCREI1RDVFMDA4MEZGNzQgLyogdGVzdGIzXzEuY3BwICovOyBzZXR0aW5n
cyA9IHtDT01QSUxFUl9GTEFHUyA9ICItTzAgLURSRUxFQVNFX1dJVEhPVVRfT1BUSU1JWkFUSU9O
UyI7IH07IH07CiAJCTBGRUM4NUIzMUJERUQ5NTcwMDgwRkY3NCAvKiBCM0NvbnN0UHRyVmFsdWUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NUIy
MUJERUQ5NTcwMDgwRkY3NCAvKiBCM0NvbnN0UHRyVmFsdWUuaCAqLzsgfTsKIAkJMEZFQzg1QkEx
QkUxNDYyRjAwODBGRjc0IC8qIEIzSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODVCNTFCRTE0NjJGMDA4MEZGNzQgLyogQjNJ
bnNlcnRpb25TZXQuaCAqLzsgfTsKIAkJMEZFQzg1QkIxQkUxNDYyRjAwODBGRjc0IC8qIEIzSW5z
ZXJ0aW9uU2V0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZFQzg1QjYxQkUxNDYyRjAwODBGRjc0IC8qIEIzSW5zZXJ0aW9uU2V0SW5saW5l
cy5oICovOyB9OwpAQCAtMTEwNiw2ICsxMTA2LDEzIEBACiAJCTVCNzBDRkRFMURCNjlFNjYwMEVD
MjNGOSAvKiBKU0FzeW5jRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVCNzBDRkQ4MURCNjlFNUMwMEVDMjNGOSAvKiBKU0FzeW5jRnVuY3Rp
b24uaCAqLzsgfTsKIAkJNUI3MENGRTAxREI2OUU2NjAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Q
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVCNzBDRkRBMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmggKi87
IH07CiAJCTVCNzBDRkUyMURCNjlFNjYwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVCNzBD
RkRDMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuaCAqLzsgfTsK
KwkJNUMzQTc3QjQyMkYyNDdGQzAwMzgyN0ZGIC8qIHRlc3RiM184LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDM0E3N0IzMjJGMjQ3Q0IwMDM4MjdG
RiAvKiB0ZXN0YjNfOC5jcHAgKi87IH07CisJCTVDM0E3N0I1MjJGMjQ4MDAwMDM4MjdGRiAvKiB0
ZXN0YjNfNy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1QzNBNzdBRDIyRjI0N0M5MDAzODI3RkYgLyogdGVzdGIzXzcuY3BwICovOyB9OworCQk1QzNB
NzdCNjIyRjI0ODAzMDAzODI3RkYgLyogdGVzdGIzXzYuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMzQTc3QUYyMkYyNDdDQTAwMzgyN0ZGIC8qIHRl
c3RiM182LmNwcCAqLzsgfTsKKwkJNUMzQTc3QjcyMkYyNDgwNjAwMzgyN0ZGIC8qIHRlc3RiM181
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDM0E3
N0IwMjJGMjQ3Q0IwMDM4MjdGRiAvKiB0ZXN0YjNfNS5jcHAgKi87IH07CisJCTVDM0E3N0I4MjJG
MjQ4MDkwMDM4MjdGRiAvKiB0ZXN0YjNfNC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1QzNBNzdBRTIyRjI0N0NBMDAzODI3RkYgLyogdGVzdGIzXzQu
Y3BwICovOyB9OworCQk1QzNBNzdCOTIyRjI0ODBCMDAzODI3RkYgLyogdGVzdGIzXzMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMzQTc3QjEyMkYy
NDdDQjAwMzgyN0ZGIC8qIHRlc3RiM18zLmNwcCAqLzsgfTsKKwkJNUMzQTc3QkEyMkYyNDgwRjAw
MzgyN0ZGIC8qIHRlc3RiM18yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDM0E3N0IyMjJGMjQ3Q0IwMDM4MjdGRiAvKiB0ZXN0YjNfMi5jcHAgKi87
IH07CiAJCTVDNDE5NjYyMjI3MEUwMDAwMDQ3QjdDRCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlckNvbXBhdGliaWxpdHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNUM0MTk2NjEyMjcwREZGMzAwNDdCN0NEIC8qIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyQ29tcGF0aWJpbGl0eS5jcHAgKi87IH07CiAJCTVDNEU4RTk2MURCRUJFNjIwMDM2
RjFGQyAvKiBKU09OUGFyc2VUZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDNEU4RTk0MURCRUJEQTIwMDM2RjFGQyAvKiBKU09OUGFyc2VUZXN0
LmNwcCAqLzsgfTsKIAkJNUQ1RDhBRDEwRTBEMEVCRTAwRjlDNjkyIC8qIGxpYmVkaXQuZHlsaWIg
aW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RDVEOEFE
MDBFMEQwRUJFMDBGOUM2OTIgLyogbGliZWRpdC5keWxpYiAqLzsgfTsKQEAgLTMwNjIsNyArMzA2
OSw3IEBACiAJCTBGRUM4NTZDMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJWYWxpZGF0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBaXJWYWxpZGF0ZS5oOyBwYXRoID0gYjMvYWly
L0FpclZhbGlkYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRUM4NTkyMUJE
QjFFMTAwMDgwRkY3NCAvKiBBaXJHZW5lcmF0ZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gQWlyR2VuZXJhdGVkLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJHZW5lcmF0
ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkVDODVBRDFCREI1Q0YxMDA4
MEZGNzQgLyogdGVzdGIzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0Rmls
ZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7
IHBhdGggPSB0ZXN0YjM7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0JCTBG
RUM4NUFFMUJEQjVENUUwMDgwRkY3NCAvKiB0ZXN0YjMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gdGVzdGIzLmNwcDsgcGF0aCA9IGIzL3Rlc3RiMy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUM4NUFFMUJEQjVENUUwMDgwRkY3NCAvKiB0ZXN0
YjNfMS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSB0ZXN0YjNfMS5j
cHA7IHBhdGggPSBiMy90ZXN0YjNfMS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGRUM4NUIyMUJERUQ5NTcwMDgwRkY3NCAvKiBCM0NvbnN0UHRyVmFsdWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNDb25zdFB0clZhbHVlLmg7IHBhdGggPSBiMy9CM0Nv
bnN0UHRyVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFQzg1QjQxQkUx
NDYyRjAwODBGRjc0IC8qIEIzSW5zZXJ0aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEIzSW5zZXJ0aW9uU2V0LmNwcDsgcGF0aCA9IGIzL0IzSW5zZXJ0aW9u
U2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFQzg1QjUxQkUxNDYyRjAw
ODBGRjc0IC8qIEIzSW5zZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEIzSW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBiMy9CM0luc2VydGlvblNldC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzY5MCw2ICszNjk3LDE0IEBACiAJCTVCNzBDRkRDMURC
NjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVCNzBDRkREMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1
bmN0aW9uQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUI4MjQzMDQxREI3QUE0OTAwRUE2Mzg0IC8qIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUu
anMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBBc3luY0Z1bmN0aW9u
UHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzNBNzdBRDIyRjI0
N0M5MDAzODI3RkYgLyogdGVzdGIzXzcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gdGVzdGIzXzcuY3BwOyBwYXRoID0gYjMvdGVzdGIzXzcuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1QzNBNzdBRTIyRjI0N0NBMDAzODI3RkYgLyogdGVzdGIzXzQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gdGVzdGIzXzQuY3BwOyBw
YXRoID0gYjMvdGVzdGIzXzQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzNB
NzdBRjIyRjI0N0NBMDAzODI3RkYgLyogdGVzdGIzXzYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gdGVzdGIzXzYuY3BwOyBwYXRoID0gYjMvdGVzdGIzXzYuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzNBNzdCMDIyRjI0N0NCMDAzODI3RkYgLyog
dGVzdGIzXzUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gdGVzdGIz
XzUuY3BwOyBwYXRoID0gYjMvdGVzdGIzXzUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1QzNBNzdCMTIyRjI0N0NCMDAzODI3RkYgLyogdGVzdGIzXzMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gdGVzdGIzXzMuY3BwOyBwYXRoID0gYjMvdGVzdGIz
XzMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzNBNzdCMjIyRjI0N0NCMDAz
ODI3RkYgLyogdGVzdGIzXzIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gdGVzdGIzXzIuY3BwOyBwYXRoID0gYjMvdGVzdGIzXzIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1QzNBNzdCMzIyRjI0N0NCMDAzODI3RkYgLyogdGVzdGIzXzguY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gdGVzdGIzXzguY3BwOyBwYXRoID0g
YjMvdGVzdGIzXzguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzNBNzdCQjIy
RjI0ODkwMDAzODI3RkYgLyogdGVzdGIzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IHRlc3RiMy5oOyBwYXRoID0gYjMvdGVzdGIzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVDNDE5NjYxMjI3MERGRjMwMDQ3QjdDRCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlckNvbXBhdGliaWxpdHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJDb21wYXRpYmlsaXR5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM0RThFOTQxREJFQkRBMjAwMzZGMUZDIC8qIEpTT05QYXJz
ZVRlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNPTlBhcnNl
VGVzdC5jcHA7IHBhdGggPSBBUEkvdGVzdHMvSlNPTlBhcnNlVGVzdC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTVDNEU4RTk1MURCRUJEQTIwMDM2RjFGQyAvKiBKU09OUGFyc2VU
ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTT05QYXJzZVRlc3QuaDsg
cGF0aCA9IEFQSS90ZXN0cy9KU09OUGFyc2VUZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC01NTQ1LDcgKzU1NjAsMTUgQEAKIAkJCQk1MzQxRkM3MTFEQUMzNDNDMDBFN0U0RDcg
LyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oICovLAogCQkJCTBGMkM2M0FEMUU2MEFFM0MwMEMx
MzgzOSAvKiBCM1dpZHRoLmNwcCAqLywKIAkJCQkwRjJDNjNBRTFFNjBBRTNEMDBDMTM4MzkgLyog
QjNXaWR0aC5oICovLAotCQkJCTBGRUM4NUFFMUJEQjVENUUwMDgwRkY3NCAvKiB0ZXN0YjMuY3Bw
ICovLAorCQkJCTVDM0E3N0JCMjJGMjQ4OTAwMDM4MjdGRiAvKiB0ZXN0YjMuaCAqLywKKwkJCQkw
RkVDODVBRTFCREI1RDVFMDA4MEZGNzQgLyogdGVzdGIzXzEuY3BwICovLAorCQkJCTVDM0E3N0Iy
MjJGMjQ3Q0IwMDM4MjdGRiAvKiB0ZXN0YjNfMi5jcHAgKi8sCisJCQkJNUMzQTc3QjEyMkYyNDdD
QjAwMzgyN0ZGIC8qIHRlc3RiM18zLmNwcCAqLywKKwkJCQk1QzNBNzdBRTIyRjI0N0NBMDAzODI3
RkYgLyogdGVzdGIzXzQuY3BwICovLAorCQkJCTVDM0E3N0IwMjJGMjQ3Q0IwMDM4MjdGRiAvKiB0
ZXN0YjNfNS5jcHAgKi8sCisJCQkJNUMzQTc3QUYyMkYyNDdDQTAwMzgyN0ZGIC8qIHRlc3RiM182
LmNwcCAqLywKKwkJCQk1QzNBNzdBRDIyRjI0N0M5MDAzODI3RkYgLyogdGVzdGIzXzcuY3BwICov
LAorCQkJCTVDM0E3N0IzMjJGMjQ3Q0IwMDM4MjdGRiAvKiB0ZXN0YjNfOC5jcHAgKi8sCiAJCQkp
OwogCQkJbmFtZSA9IGIzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTEwNzA4LDcg
KzEwNzMxLDE0IEBACiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0
aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKLQkJCQkwRkVDODVBRjFCREI1RDVF
MDA4MEZGNzQgLyogdGVzdGIzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGRUM4NUFGMUJEQjVE
NUUwMDgwRkY3NCAvKiB0ZXN0YjNfMS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1QzNBNzdCQTIy
RjI0ODBGMDAzODI3RkYgLyogdGVzdGIzXzIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUMzQTc3
QjkyMkYyNDgwQjAwMzgyN0ZGIC8qIHRlc3RiM18zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVD
M0E3N0I4MjJGMjQ4MDkwMDM4MjdGRiAvKiB0ZXN0YjNfNC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk1QzNBNzdCNzIyRjI0ODA2MDAzODI3RkYgLyogdGVzdGIzXzUuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNUMzQTc3QjYyMkYyNDgwMzAwMzgyN0ZGIC8qIHRlc3RiM182LmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTVDM0E3N0I1MjJGMjQ4MDAwMDM4MjdGRiAvKiB0ZXN0YjNfNy5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk1QzNBNzdCNDIyRjI0N0ZDMDAzODI3RkYgLyogdGVzdGIzXzguY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA0NDExZTAzYjkwZTEwMGI1YzJlYzdkNzY4MTEzYTliMDY1ZTM5ZTc1
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTkyMTYgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLQotI2luY2x1ZGUgIkFpckNvZGUuaCIKLSNpbmNsdWRlICJB
aXJJbnN0SW5saW5lcy5oIgotI2luY2x1ZGUgIkFpclZhbGlkYXRlLmgiCi0jaW5jbHVkZSAiQWxs
b3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmgiCi0jaW5jbHVkZSAiQjNBcmd1bWVudFJlZ1Zh
bHVlLmgiCi0jaW5jbHVkZSAiQjNBdG9taWNWYWx1ZS5oIgotI2luY2x1ZGUgIkIzQmFzaWNCbG9j
a0lubGluZXMuaCIKLSNpbmNsdWRlICJCM0JyZWFrQ3JpdGljYWxFZGdlcy5oIgotI2luY2x1ZGUg
IkIzQ0NhbGxWYWx1ZS5oIgotI2luY2x1ZGUgIkIzQ29tcGlsYXRpb24uaCIKLSNpbmNsdWRlICJC
M0NvbXBpbGUuaCIKLSNpbmNsdWRlICJCM0NvbXB1dGVEaXZpc2lvbk1hZ2ljLmgiCi0jaW5jbHVk
ZSAiQjNDb25zdDMyVmFsdWUuaCIKLSNpbmNsdWRlICJCM0NvbnN0NjRWYWx1ZS5oIgotI2luY2x1
ZGUgIkIzQ29uc3RQdHJWYWx1ZS5oIgotI2luY2x1ZGUgIkIzRWZmZWN0cy5oIgotI2luY2x1ZGUg
IkIzRmVuY2VWYWx1ZS5oIgotI2luY2x1ZGUgIkIzRml4U1NBLmgiCi0jaW5jbHVkZSAiQjNHZW5l
cmF0ZS5oIgotI2luY2x1ZGUgIkIzTG93ZXJUb0Fpci5oIgotI2luY2x1ZGUgIkIzTWF0aEV4dHJh
cy5oIgotI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIKLSNpbmNsdWRlICJCM01vdmVDb25zdGFu
dHMuaCIKLSNpbmNsdWRlICJCM05hdGl2ZVRyYWl0cy5oIgotI2luY2x1ZGUgIkIzUHJvY2VkdXJl
LmgiCi0jaW5jbHVkZSAiQjNSZWR1Y2VTdHJlbmd0aC5oIgotI2luY2x1ZGUgIkIzU2xvdEJhc2VW
YWx1ZS5oIgotI2luY2x1ZGUgIkIzU3RhY2tTbG90LmgiCi0jaW5jbHVkZSAiQjNTdGFja21hcEdl
bmVyYXRpb25QYXJhbXMuaCIKLSNpbmNsdWRlICJCM1N3aXRjaFZhbHVlLmgiCi0jaW5jbHVkZSAi
QjNVcHNpbG9uVmFsdWUuaCIKLSNpbmNsdWRlICJCM1VzZUNvdW50cy5oIgotI2luY2x1ZGUgIkIz
VmFsaWRhdGUuaCIKLSNpbmNsdWRlICJCM1ZhbHVlSW5saW5lcy5oIgotI2luY2x1ZGUgIkIzVmFy
aWFibGVWYWx1ZS5oIgotI2luY2x1ZGUgIkIzV2FzbUFkZHJlc3NWYWx1ZS5oIgotI2luY2x1ZGUg
IkIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCIKLSNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKLSNp
bmNsdWRlICJGUFJJbmZvLmgiCi0jaW5jbHVkZSAiR1BSSW5mby5oIgotI2luY2x1ZGUgIkluaXRp
YWxpemVUaHJlYWRpbmcuaCIKLSNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCi0jaW5jbHVkZSAiTGlu
a0J1ZmZlci5oIgotI2luY2x1ZGUgIlB1cmVOYU4uaCIKLSNpbmNsdWRlIDxjbWF0aD4KLSNpbmNs
dWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8d3RmL0Zhc3RUTFMuaD4KLSNpbmNsdWRlIDx3dGYvSW5k
ZXhTZXQuaD4KLSNpbmNsdWRlIDx3dGYvTGlzdER1bXAuaD4KLSNpbmNsdWRlIDx3dGYvTG9jay5o
PgotI2luY2x1ZGUgPHd0Zi9OdW1iZXJPZkNvcmVzLmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExpc3Qu
aD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
Q29tbW9uLmg+Ci0KLS8vIFdlIGRvbid0IGhhdmUgYSBOT19SRVRVUk5fRFVFX1RPX0VYSVQsIG5v
ciBzaG91bGQgd2UuIFRoYXQncyByaWRpY3Vsb3VzLgotc3RhdGljIGJvb2wgaGlkZGVuVHJ1dGhC
ZWNhdXNlTm9SZXR1cm5Jc1N0dXBpZCgpIHsgcmV0dXJuIHRydWU7IH0KLQotc3RhdGljIHZvaWQg
dXNhZ2UoKQotewotICAgIGRhdGFMb2coIlVzYWdlOiB0ZXN0YjMgWzxmaWx0ZXI+XVxuIik7Ci0g
ICAgaWYgKGhpZGRlblRydXRoQmVjYXVzZU5vUmV0dXJuSXNTdHVwaWQoKSkKLSAgICAgICAgZXhp
dCgxKTsKLX0KLQotI2lmIEVOQUJMRShCM19KSVQpCi0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci11
c2luZyBuYW1lc3BhY2UgSlNDOjpCMzsKLQotbmFtZXNwYWNlIHsKLQotYm9vbCBzaG91bGRCZVZl
cmJvc2UoKQotewotICAgIHJldHVybiBzaG91bGREdW1wSVIoQjNNb2RlKTsKLX0KLQotTG9jayBj
cmFzaExvY2s7Ci0KLS8vIE5vdGhpbmcgZmFuY3kgZm9yIG5vdzsgd2UganVzdCB1c2UgdGhlIGV4
aXN0aW5nIFdURiBhc3NlcnRpb24gbWFjaGluZXJ5LgotI2RlZmluZSBDSEVDSyh4KSBkbyB7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAg
ICBpZiAoISEoeCkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBjcmFzaExvY2subG9jaygpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBX
VEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKF9fRklMRV9fLCBfX0xJTkVfXywgV1RGX1BSRVRUWV9G
VU5DVElPTiwgI3gpOyBcCi0gICAgICAgIENSQVNIKCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSB3aGlsZSAoZmFsc2UpCi0K
LSNkZWZpbmUgQ0hFQ0tfRVEoeCwgeSkgZG8geyBcCi0gICAgICAgIGF1dG8gX194ID0gKHgpOyBc
Ci0gICAgICAgIGF1dG8gX195ID0gKHkpOyBcCi0gICAgICAgIGlmIChfX3ggPT0gX195KSBcCi0g
ICAgICAgICAgICBicmVhazsgXAotICAgICAgICBjcmFzaExvY2subG9jaygpOyBcCi0gICAgICAg
IFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoX19GSUxFX18sIF9fTElORV9fLCBXVEZfUFJFVFRZ
X0ZVTkNUSU9OLCB0b0NTdHJpbmcoI3ggIiA9PSAiICN5LCAiICgiICN4ICIgPT0gIiwgX194LCAi
LCAiICN5ICIgPT0gIiwgX195LCAiKSIpLmRhdGEoKSk7IFwKLSAgICAgICAgQ1JBU0goKTsgXAot
ICAgIH0gd2hpbGUgKGZhbHNlKQotCi1zdGQ6OnVuaXF1ZV9wdHI8Q29tcGlsYXRpb24+IGNvbXBp
bGVQcm9jKFByb2NlZHVyZSYgcHJvY2VkdXJlLCB1bnNpZ25lZCBvcHRMZXZlbCA9IE9wdGlvbnM6
OmRlZmF1bHRCM09wdExldmVsKCkpCi17Ci0gICAgcHJvY2VkdXJlLnNldE9wdExldmVsKG9wdExl
dmVsKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb21waWxhdGlvbj4oQjM6OmNvbXBp
bGUocHJvY2VkdXJlKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFy
Z3VtZW50cz4KLVQgaW52b2tlKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxCM0NvbXBpbGF0aW9uUHRy
VGFnPiBwdHIsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCi17Ci0gICAgdm9pZCogZXhlY3V0YWJs
ZUFkZHJlc3MgPSB1bnRhZ0NGdW5jdGlvblB0cjxCM0NvbXBpbGF0aW9uUHRyVGFnPihwdHIuZXhl
Y3V0YWJsZUFkZHJlc3MoKSk7Ci0gICAgVCAoKmZ1bmN0aW9uKShBcmd1bWVudHMuLi4pID0gYml0
d2lzZV9jYXN0PFQoKikoQXJndW1lbnRzLi4uKT4oZXhlY3V0YWJsZUFkZHJlc3MpOwotICAgIHJl
dHVybiBmdW5jdGlvbihhcmd1bWVudHMuLi4pOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZS4uLiBBcmd1bWVudHM+Ci1UIGludm9rZShjb25zdCBDb21waWxhdGlvbiYgY29kZSwg
QXJndW1lbnRzLi4uIGFyZ3VtZW50cykKLXsKLSAgICByZXR1cm4gaW52b2tlPFQ+KGNvZGUuY29k
ZSgpLCBhcmd1bWVudHMuLi4pOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4u
LiBBcmd1bWVudHM+Ci1UIGNvbXBpbGVBbmRSdW4oUHJvY2VkdXJlJiBwcm9jZWR1cmUsIEFyZ3Vt
ZW50cy4uLiBhcmd1bWVudHMpCi17Ci0gICAgcmV0dXJuIGludm9rZTxUPigqY29tcGlsZVByb2Mo
cHJvY2VkdXJlKSwgYXJndW1lbnRzLi4uKTsKLX0KLQotdm9pZCBsb3dlclRvQWlyRm9yVGVzdGlu
ZyhQcm9jZWR1cmUmIHByb2MpCi17Ci0gICAgcHJvYy5yZXNldFJlYWNoYWJpbGl0eSgpOwotICAg
IAotICAgIGlmIChzaG91bGRCZVZlcmJvc2UoKSkKLSAgICAgICAgZGF0YUxvZygiQjMgYmVmb3Jl
IGxvd2VyaW5nOlxuIiwgcHJvYyk7Ci0gICAgCi0gICAgdmFsaWRhdGUocHJvYyk7Ci0gICAgbG93
ZXJUb0Fpcihwcm9jKTsKLSAgICAKLSAgICBpZiAoc2hvdWxkQmVWZXJib3NlKCkpCi0gICAgICAg
IGRhdGFMb2coIkFpciBhZnRlciBsb3dlcmluZzpcbiIsIHByb2MuY29kZSgpKTsKLSAgICAKLSAg
ICBBaXI6OnZhbGlkYXRlKHByb2MuY29kZSgpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Yz4KLXZvaWQgY2hlY2tEaXNhc3NlbWJseShDb21waWxhdGlvbiYgY29tcGlsYXRpb24sIGNvbnN0
IEZ1bmMmIGZ1bmMsIGNvbnN0IENTdHJpbmcmIGZhaWxUZXh0KQotewotICAgIENTdHJpbmcgZGlz
YXNzZW1ibHkgPSBjb21waWxhdGlvbi5kaXNhc3NlbWJseSgpOwotICAgIGlmIChmdW5jKGRpc2Fz
c2VtYmx5LmRhdGEoKSkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBjcmFzaExvY2subG9j
aygpOwotICAgIGRhdGFMb2coIkJhZCBsb3dlcmluZyEgICIsIGZhaWxUZXh0LCAiXG4iKTsKLSAg
ICBkYXRhTG9nKGRpc2Fzc2VtYmx5KTsKLSAgICBDUkFTSCgpOwotfQotCi12b2lkIGNoZWNrVXNl
c0luc3RydWN0aW9uKENvbXBpbGF0aW9uJiBjb21waWxhdGlvbiwgY29uc3QgY2hhciogdGV4dCkK
LXsKLSAgICBjaGVja0Rpc2Fzc2VtYmx5KAotICAgICAgICBjb21waWxhdGlvbiwKLSAgICAgICAg
WyZdIChjb25zdCBjaGFyKiBkaXNhc3NlbWJseSkgLT4gYm9vbCB7Ci0gICAgICAgICAgICByZXR1
cm4gc3Ryc3RyKGRpc2Fzc2VtYmx5LCB0ZXh0KTsKLSAgICAgICAgfSwKLSAgICAgICAgdG9DU3Ry
aW5nKCJFeHBlY3RlZCB0byBmaW5kICIsIHRleHQsICIgYnV0IGRpZG50ISIpKTsKLX0KLQotdm9p
ZCBjaGVja0RvZXNOb3RVc2VJbnN0cnVjdGlvbihDb21waWxhdGlvbiYgY29tcGlsYXRpb24sIGNv
bnN0IGNoYXIqIHRleHQpCi17Ci0gICAgY2hlY2tEaXNhc3NlbWJseSgKLSAgICAgICAgY29tcGls
YXRpb24sCi0gICAgICAgIFsmXSAoY29uc3QgY2hhciogZGlzYXNzZW1ibHkpIC0+IGJvb2wgewot
ICAgICAgICAgICAgcmV0dXJuICFzdHJzdHIoZGlzYXNzZW1ibHksIHRleHQpOwotICAgICAgICB9
LAotICAgICAgICB0b0NTdHJpbmcoIkRpZCBub3QgZXhwZWN0ZWQgdG8gZmluZCAiLCB0ZXh0LCAi
IGJ1dCBpdCdzIHRoZXJlISIpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KLXN0cnVj
dCBPcGVyYW5kIHsKLSAgICBjb25zdCBjaGFyKiBuYW1lOwotICAgIFR5cGUgdmFsdWU7Ci19Owot
Ci10eXBlZGVmIE9wZXJhbmQ8aW50NjRfdD4gSW50NjRPcGVyYW5kOwotdHlwZWRlZiBPcGVyYW5k
PGludDMyX3Q+IEludDMyT3BlcmFuZDsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRmxvYXRUeXBlPgot
dm9pZCBwb3B1bGF0ZVdpdGhJbnRlcmVzdGluZ1ZhbHVlcyhWZWN0b3I8T3BlcmFuZDxGbG9hdFR5
cGU+PiYgb3BlcmFuZHMpCi17Ci0gICAgb3BlcmFuZHMuYXBwZW5kKHsgIjAuIiwgc3RhdGljX2Nh
c3Q8RmxvYXRUeXBlPigwLikgfSk7Ci0gICAgb3BlcmFuZHMuYXBwZW5kKHsgIi0wLiIsIHN0YXRp
Y19jYXN0PEZsb2F0VHlwZT4oLTAuKSB9KTsKLSAgICBvcGVyYW5kcy5hcHBlbmQoeyAiMC40Iiwg
c3RhdGljX2Nhc3Q8RmxvYXRUeXBlPigwLjUpIH0pOwotICAgIG9wZXJhbmRzLmFwcGVuZCh7ICIt
MC40Iiwgc3RhdGljX2Nhc3Q8RmxvYXRUeXBlPigtMC41KSB9KTsKLSAgICBvcGVyYW5kcy5hcHBl
bmQoeyAiMC41Iiwgc3RhdGljX2Nhc3Q8RmxvYXRUeXBlPigwLjUpIH0pOwotICAgIG9wZXJhbmRz
LmFwcGVuZCh7ICItMC41Iiwgc3RhdGljX2Nhc3Q8RmxvYXRUeXBlPigtMC41KSB9KTsKLSAgICBv
cGVyYW5kcy5hcHBlbmQoeyAiMC42Iiwgc3RhdGljX2Nhc3Q8RmxvYXRUeXBlPigwLjUpIH0pOwot
ICAgIG9wZXJhbmRzLmFwcGVuZCh7ICItMC42Iiwgc3RhdGljX2Nhc3Q8RmxvYXRUeXBlPigtMC41
KSB9KTsKLSAgICBvcGVyYW5kcy5hcHBlbmQoeyAiMS4iLCBzdGF0aWNfY2FzdDxGbG9hdFR5cGU+
KDEuKSB9KTsKLSAgICBvcGVyYW5kcy5hcHBlbmQoeyAiLTEuIiwgc3RhdGljX2Nhc3Q8RmxvYXRU
eXBlPigtMS4pIH0pOwotICAgIG9wZXJhbmRzLmFwcGVuZCh7ICIyLiIsIHN0YXRpY19jYXN0PEZs
b2F0VHlwZT4oMi4pIH0pOwotICAgIG9wZXJhbmRzLmFwcGVuZCh7ICItMi4iLCBzdGF0aWNfY2Fz
dDxGbG9hdFR5cGU+KC0yLikgfSk7Ci0gICAgb3BlcmFuZHMuYXBwZW5kKHsgIk1fUEkiLCBzdGF0
aWNfY2FzdDxGbG9hdFR5cGU+KE1fUEkpIH0pOwotICAgIG9wZXJhbmRzLmFwcGVuZCh7ICItTV9Q
SSIsIHN0YXRpY19jYXN0PEZsb2F0VHlwZT4oLU1fUEkpIH0pOwotICAgIG9wZXJhbmRzLmFwcGVu
ZCh7ICJtaW4iLCBzdGQ6Om51bWVyaWNfbGltaXRzPEZsb2F0VHlwZT46Om1pbigpIH0pOwotICAg
IG9wZXJhbmRzLmFwcGVuZCh7ICJtYXgiLCBzdGQ6Om51bWVyaWNfbGltaXRzPEZsb2F0VHlwZT46
Om1heCgpIH0pOwotICAgIG9wZXJhbmRzLmFwcGVuZCh7ICJsb3dlc3QiLCBzdGQ6Om51bWVyaWNf
bGltaXRzPEZsb2F0VHlwZT46Omxvd2VzdCgpIH0pOwotICAgIG9wZXJhbmRzLmFwcGVuZCh7ICJl
cHNpbG9uIiwgc3RkOjpudW1lcmljX2xpbWl0czxGbG9hdFR5cGU+OjplcHNpbG9uKCkgfSk7Ci0g
ICAgb3BlcmFuZHMuYXBwZW5kKHsgImluZmluaXRpIiwgc3RkOjpudW1lcmljX2xpbWl0czxGbG9h
dFR5cGU+OjppbmZpbml0eSgpIH0pOwotICAgIG9wZXJhbmRzLmFwcGVuZCh7ICItaW5maW5pdGki
LCAtIHN0ZDo6bnVtZXJpY19saW1pdHM8RmxvYXRUeXBlPjo6aW5maW5pdHkoKSB9KTsKLSAgICBv
cGVyYW5kcy5hcHBlbmQoeyAiUE5hTiIsIHN0YXRpY19jYXN0PEZsb2F0VHlwZT4oUE5hTikgfSk7
Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZsb2F0VHlwZT4KLVZlY3RvcjxPcGVyYW5kPEZsb2F0
VHlwZT4+IGZsb2F0aW5nUG9pbnRPcGVyYW5kcygpCi17Ci0gICAgVmVjdG9yPE9wZXJhbmQ8Rmxv
YXRUeXBlPj4gb3BlcmFuZHM7Ci0gICAgcG9wdWxhdGVXaXRoSW50ZXJlc3RpbmdWYWx1ZXMob3Bl
cmFuZHMpOwotICAgIHJldHVybiBvcGVyYW5kczsKLX07Ci0KLXN0YXRpYyBWZWN0b3I8SW50NjRP
cGVyYW5kPiBpbnQ2NE9wZXJhbmRzKCkKLXsKLSAgICBWZWN0b3I8SW50NjRPcGVyYW5kPiBvcGVy
YW5kczsKLSAgICBvcGVyYW5kcy5hcHBlbmQoeyAiMCIsIDAgfSk7Ci0gICAgb3BlcmFuZHMuYXBw
ZW5kKHsgIjEiLCAxIH0pOwotICAgIG9wZXJhbmRzLmFwcGVuZCh7ICItMSIsIC0xIH0pOwotICAg
IG9wZXJhbmRzLmFwcGVuZCh7ICI0MiIsIDQyIH0pOwotICAgIG9wZXJhbmRzLmFwcGVuZCh7ICIt
NDIiLCAtNDIgfSk7Ci0gICAgb3BlcmFuZHMuYXBwZW5kKHsgImludDY0LW1heCIsIHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpIH0pOwotICAgIG9wZXJhbmRzLmFwcGVuZCh7ICJp
bnQ2NC1taW4iLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSB9KTsKLSAgICBv
cGVyYW5kcy5hcHBlbmQoeyAiaW50MzItbWF4Iiwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90
Pjo6bWF4KCkgfSk7Ci0gICAgb3BlcmFuZHMuYXBwZW5kKHsgImludDMyLW1pbiIsIHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpIH0pOwotICAgIG9wZXJhbmRzLmFwcGVuZCh7ICJ1
aW50NjQtbWF4Iiwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50
NjRfdD46Om1heCgpKSB9KTsKLSAgICBvcGVyYW5kcy5hcHBlbmQoeyAidWludDY0LW1pbiIsIHN0
YXRpY19jYXN0PGludDY0X3Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptaW4oKSkg
fSk7Ci0gICAgb3BlcmFuZHMuYXBwZW5kKHsgInVpbnQzMi1tYXgiLCBzdGF0aWNfY2FzdDxpbnQ2
NF90PihzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpIH0pOwotICAgIG9wZXJh
bmRzLmFwcGVuZCh7ICJ1aW50MzItbWluIiwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oc3RkOjpudW1l
cmljX2xpbWl0czx1aW50MzJfdD46Om1pbigpKSB9KTsKLQotICAgIHJldHVybiBvcGVyYW5kczsK
LX0KLQotc3RhdGljIFZlY3RvcjxJbnQzMk9wZXJhbmQ+IGludDMyT3BlcmFuZHMoKQotewotICAg
IFZlY3RvcjxJbnQzMk9wZXJhbmQ+IG9wZXJhbmRzKHsKLSAgICAgICAgeyAiMCIsIDAgfSwKLSAg
ICAgICAgeyAiMSIsIDEgfSwKLSAgICAgICAgeyAiLTEiLCAtMSB9LAotICAgICAgICB7ICI0MiIs
IDQyIH0sCi0gICAgICAgIHsgIi00MiIsIC00MiB9LAotICAgICAgICB7ICJpbnQzMi1tYXgiLCBz
dGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSB9LAotICAgICAgICB7ICJpbnQzMi1t
aW4iLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSB9LAotICAgICAgICB7ICJ1
aW50MzItbWF4Iiwgc3RhdGljX2Nhc3Q8aW50MzJfdD4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50
MzJfdD46Om1heCgpKSB9LAotICAgICAgICB7ICJ1aW50MzItbWluIiwgc3RhdGljX2Nhc3Q8aW50
MzJfdD4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1pbigpKSB9Ci0gICAgfSk7Ci0g
ICAgcmV0dXJuIG9wZXJhbmRzOwotfQotCi12b2lkIGFkZDMyKENDYWxsSGVscGVycyYgaml0LCBH
UFJSZWcgc3JjMSwgR1BSUmVnIHNyYzIsIEdQUlJlZyBkZXN0KQotewotICAgIGlmIChzcmMyID09
IGRlc3QpCi0gICAgICAgIGppdC5hZGQzMihzcmMxLCBkZXN0KTsKLSAgICBlbHNlIHsKLSAgICAg
ICAgaml0Lm1vdmUoc3JjMSwgZGVzdCk7Ci0gICAgICAgIGppdC5hZGQzMihzcmMyLCBkZXN0KTsK
LSAgICB9Ci19Ci0KLXZvaWQgdGVzdDQyKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBjb25zdDQyID0g
cm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKTsKLSAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY29uc3Q0
Mik7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYykgPT0gNDIpOwotfQotCi12
b2lkIHRlc3RMb2FkNDIoKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgaW50IHggPSA0MjsKLSAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBMb2Fk
LCBJbnQzMiwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksICZ4KSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxp
bnQ+KHByb2MpID09IDQyKTsKLX0KLQotdm9pZCB0ZXN0TG9hZEFjcTQyKCkKLXsKLSAgICBQcm9j
ZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAg
IGludCB4ID0gNDI7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFs
dWU+KAotICAgICAgICAgICAgcHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLAotICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmeCksCi0g
ICAgICAgICAgICAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKSk7Ci0KLSAgICBhdXRv
IGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBpZiAoaXNBUk02NCgpKQotICAgICAgICBj
aGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxkYSIpOwotICAgIENIRUNLKGludm9rZTxpbnQ+
KCpjb2RlKSA9PSA0Mik7Ci19Ci0KLXZvaWQgdGVzdExvYWRXaXRoT2Zmc2V0SW1wbChpbnQzMl90
IG9mZnNldDY0LCBpbnQzMl90IG9mZnNldDMyKQotewotICAgIHsKLSAgICAgICAgUHJvY2VkdXJl
IHByb2M7Ci0gICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAg
ICAgIGludDY0X3QgeCA9IC00MjsKLSAgICAgICAgVmFsdWUqIGJhc2UgPSByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwKLSAg
ICAgICAgICAgICAgICBiYXNlLAotICAgICAgICAgICAgICAgIG9mZnNldDY0KSk7Ci0KLSAgICAg
ICAgY2hhciogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KCZ4KSAtIG9mZnNldDY0
OwotICAgICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGFkZHJlc3MpID09
IC00Mik7Ci0gICAgfQotICAgIHsKLSAgICAgICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgIGludDMyX3QgeCA9IC00
MjsKLSAgICAgICAgVmFsdWUqIGJhc2UgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICAg
ICAgICAgIHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICBiYXNl
LAotICAgICAgICAgICAgICAgIG9mZnNldDMyKSk7Ci0KLSAgICAgICAgY2hhciogYWRkcmVzcyA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KCZ4KSAtIG9mZnNldDMyOwotICAgICAgICBDSEVDSyhj
b21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGFkZHJlc3MpID09IC00Mik7Ci0gICAgfQotfQot
Ci12b2lkIHRlc3RMb2FkT2Zmc2V0SW1tOU1heCgpCi17Ci0gICAgdGVzdExvYWRXaXRoT2Zmc2V0
SW1wbCgyNTUsIDI1NSk7Ci19Ci0KLXZvaWQgdGVzdExvYWRPZmZzZXRJbW05TWF4UGx1c09uZSgp
Ci17Ci0gICAgdGVzdExvYWRXaXRoT2Zmc2V0SW1wbCgyNTYsIDI1Nik7Ci19Ci0KLXZvaWQgdGVz
dExvYWRPZmZzZXRJbW05TWF4UGx1c1R3bygpCi17Ci0gICAgdGVzdExvYWRXaXRoT2Zmc2V0SW1w
bCgyNTcsIDI1Nyk7Ci19Ci0KLXZvaWQgdGVzdExvYWRPZmZzZXRJbW05TWluKCkKLXsKLSAgICB0
ZXN0TG9hZFdpdGhPZmZzZXRJbXBsKC0yNTYsIC0yNTYpOwotfQotCi12b2lkIHRlc3RMb2FkT2Zm
c2V0SW1tOU1pbk1pbnVzT25lKCkKLXsKLSAgICB0ZXN0TG9hZFdpdGhPZmZzZXRJbXBsKC0yNTcs
IC0yNTcpOwotfQotCi12b2lkIHRlc3RMb2FkT2Zmc2V0U2NhbGVkVW5zaWduZWRJbW0xMk1heCgp
Ci17Ci0gICAgdGVzdExvYWRXaXRoT2Zmc2V0SW1wbCgzMjc2MCwgMTYzODApOwotfQotCi12b2lk
IHRlc3RMb2FkT2Zmc2V0U2NhbGVkVW5zaWduZWRPdmVySW1tMTJNYXgoKQotewotICAgIHRlc3RM
b2FkV2l0aE9mZnNldEltcGwoMzI3NjAsIDMyNzYwKTsKLSAgICB0ZXN0TG9hZFdpdGhPZmZzZXRJ
bXBsKDMyNzYxLCAxNjM4MSk7Ci0gICAgdGVzdExvYWRXaXRoT2Zmc2V0SW1wbCgzMjc2OCwgMTYz
ODQpOwotfQotCi12b2lkIHRlc3RCaXRYb3JUcmVlQXJncyhpbnQ2NF90IGEsIGludDY0X3QgYikK
LXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOwotICAgIFZhbHVlKiBhcmdBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIFZhbHVlKiBh
cmdCID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgIFZhbHVlKiBub2RlID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLCBhcmdBLCBhcmdCKTsKLSAgICBub2RlID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLCBub2RlLCBhcmdC
KTsKLSAgICBub2RlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRYb3IsIE9yaWdp
bigpLCBub2RlLCBhcmdBKTsKLSAgICBub2RlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXRYb3IsIE9yaWdpbigpLCBub2RlLCBhcmdCKTsKLSAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIG5vZGUpOwotCi0gICAgQ0hFQ0tfRVEoY29tcGls
ZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhLCBiKSwgKCgoYSBeIGIpIF4gYikgXiBhKSBeIGIpOwot
fQotCi12b2lkIHRlc3RCaXRYb3JUcmVlQXJnc0V2ZW4oaW50NjRfdCBhLCBpbnQ2NF90IGIpCi17
Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKLSAgICBWYWx1ZSogYXJnQSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBWYWx1ZSogYXJn
QiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICBWYWx1ZSogbm9kZSA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgQml0WG9yLCBPcmlnaW4oKSwgYXJnQSwgYXJnQik7Ci0gICAgbm9kZSA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0WG9yLCBPcmlnaW4oKSwgbm9kZSwgYXJnQik7
Ci0gICAgbm9kZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0WG9yLCBPcmlnaW4o
KSwgbm9kZSwgYXJnQSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCBub2RlKTsKLQotICAgIENIRUNLX0VRKGNvbXBpbGVBbmRSdW48aW50NjRfdD4o
cHJvYywgYSwgYiksICgoYSBeIGIpIF4gYikgXiBhKTsKLX0KLQotdm9pZCB0ZXN0Qml0WG9yVHJl
ZUFyZ0ltbShpbnQ2NF90IGEsIGludDY0X3QgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmdBID0g
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOwotICAgIFZhbHVlKiBpbW1CID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0
NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpOwotICAgIFZhbHVlKiBub2RlID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLCBhcmdBLCBpbW1CKTsKLSAgICBu
b2RlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLCBhcmdB
LCBub2RlKTsKLSAgICBub2RlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRYb3Is
IE9yaWdpbigpLCBhcmdBLCBub2RlKTsKLSAgICBub2RlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLCBpbW1CLCBub2RlKTsKLSAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIG5vZGUpOwotCi0gICAgQ0hFQ0tfRVEo
Y29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhKSwgYiBeIChhIF4gKGEgXiAoYSBeIGIpKSkp
OwotfQotCi12b2lkIHRlc3RBZGRUcmVlQXJnMzIoaW50MzJfdCBhKQotewotICAgIFByb2NlZHVy
ZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFs
dWUqIGFyZ0EgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgYXJnQSA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLCBhcmdBKTsKLSAgICBWYWx1ZSogbm9kZSA9IGFy
Z0E7Ci0gICAgaW50MzJfdCBleHBlY3RlZFJlc3VsdCA9IGE7Ci0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IDIwOyArK2kpIHsKLSAgICAgICAgVmFsdWUqIG90aGVyTm9kZTsKLSAgICAgICAg
aWYgKCEoaSAlIDMpKSB7Ci0gICAgICAgICAgICBvdGhlck5vZGUgPSByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgaSk7Ci0gICAgICAgICAgICBleHBlY3RlZFJl
c3VsdCArPSBpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgb3RoZXJOb2RlID0gYXJn
QTsKLSAgICAgICAgICAgIGV4cGVjdGVkUmVzdWx0ICs9IGE7Ci0gICAgICAgIH0KLSAgICAgICAg
bm9kZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgbm9kZSwg
b3RoZXJOb2RlKTsKLSAgICB9Ci0gICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCBub2RlKTsKLQotICAgIENIRUNLX0VRKGNvbXBpbGVBbmRSdW48aW50MzJf
dD4ocHJvYywgYSksIGV4cGVjdGVkUmVzdWx0KTsKLX0KLQotdm9pZCB0ZXN0TXVsVHJlZUFyZzMy
KGludDMyX3QgYSkKLXsKLSAgICAvLyBGaWJvbmFjY2ktbGlrZSBleHByZXNzaW9uIHRyZWUgd2l0
aCBtdWx0aXBsaWNhdGlvbiBpbnN0ZWFkIG9mIGFkZGl0aW9uLgotICAgIC8vIFZlcmlmaWVzIHRo
YXQgd2UgZG9uJ3QgZXhwbG9kZSBvbiBoZWF2aWx5IGZhY3RvcmVkIGdyYXBocy4KLSAgICBQcm9j
ZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAg
IFZhbHVlKiBhcmdBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIGFyZ0EgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwgYXJnQSk7Ci0gICAgVmFsdWUqIG5vZGVB
ID0gYXJnQTsKLSAgICBWYWx1ZSogbm9kZUIgPSBhcmdBOwotICAgIGludDMyX3QgZXhwZWN0ZWRB
ID0gYSwgZXhwZWN0ZWRSZXN1bHQgPSBhOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAy
MDsgKytpKSB7Ci0gICAgICAgIFZhbHVlKiBuZXdOb2RlQiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgbm9kZUEsIG5vZGVCKTsKLSAgICAgICAgbm9kZUEgPSBu
b2RlQjsKLSAgICAgICAgbm9kZUIgPSBuZXdOb2RlQjsKLSAgICAgICAgaW50MzJfdCBuZXdFeHBl
Y3RlZFJlc3VsdCA9IGV4cGVjdGVkQSAqIGV4cGVjdGVkUmVzdWx0OwotICAgICAgICBleHBlY3Rl
ZEEgPSBleHBlY3RlZFJlc3VsdDsKLSAgICAgICAgZXhwZWN0ZWRSZXN1bHQgPSBuZXdFeHBlY3Rl
ZFJlc3VsdDsKLSAgICB9Ci0gICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCBub2RlQik7Ci0KLSAgICBDSEVDS19FUShjb21waWxlQW5kUnVuPGludDMyX3Q+
KHByb2MsIGEpLCBleHBlY3RlZFJlc3VsdCk7Ci19Ci0KLXZvaWQgdGVzdEJpdEFuZFRyZWVBcmcz
MihpbnQzMl90IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJnQSA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
LSAgICBhcmdBID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCks
IGFyZ0EpOwotICAgIFZhbHVlKiBub2RlID0gYXJnQTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgODsgKytpKSB7Ci0gICAgICAgIFZhbHVlKiBjb25zdEkgPSByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgaSB8IDQyKTsKLSAgICAgICAgVmFsdWUqIG5l
d0JpdEFuZCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwg
YXJnQSwgY29uc3RJKTsKLSAgICAgICAgbm9kZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQml0QW5kLCBPcmlnaW4oKSwgbm9kZSwgbmV3Qml0QW5kKTsKLSAgICB9Ci0gICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBub2RlKTsKLQotICAgIENI
RUNLX0VRKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYSksIGEgJiA0Mik7Ci19Ci0KLXZv
aWQgdGVzdEJpdE9yVHJlZUFyZzMyKGludDMyX3QgYSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsK
LSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmdB
ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOwotICAgIGFyZ0EgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwgYXJnQSk7Ci0gICAgVmFsdWUqIG5vZGUgPSBhcmdBOwotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCA4OyArK2kpIHsKLSAgICAgICAgVmFsdWUqIGNvbnN0
SSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBpKTsKLSAg
ICAgICAgVmFsdWUqIG5ld0JpdEFuZCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0
T3IsIE9yaWdpbigpLCBhcmdBLCBjb25zdEkpOwotICAgICAgICBub2RlID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXRPciwgT3JpZ2luKCksIG5vZGUsIG5ld0JpdEFuZCk7Ci0gICAg
fQotICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgbm9k
ZSk7Ci0KLSAgICBDSEVDS19FUShjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGEpLCBhIHwg
Nyk7Ci19Ci0KLXZvaWQgdGVzdEFyZyhpbnQgYXJndW1lbnQpCi17Ci0gICAgUHJvY2VkdXJlIHBy
b2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0g
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4o
cHJvYywgYXJndW1lbnQpID09IGFyZ3VtZW50KTsKLX0KLQotdm9pZCB0ZXN0UmV0dXJuQ29uc3Q2
NChpbnQ2NF90IHZhbHVlKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmRO
ZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdmFsdWUpKTsKLQotICAgIENIRUNLKGNv
bXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYykgPT0gdmFsdWUpOwotfQotCi12b2lkIHRlc3RSZXR1
cm5Wb2lkKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpKTsKLSAgICBjb21waWxlQW5kUnVuPHZvaWQ+KHByb2MpOwotfQotCi12
b2lkIHRlc3RBZGRBcmcoaW50IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogdmFsdWUgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEFkZCwgT3JpZ2luKCksIHZhbHVlLCB2YWx1ZSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1
bjxpbnQ+KHByb2MsIGEpID09IGEgKyBhKTsKLX0KLQotdm9pZCB0ZXN0QWRkQXJncyhpbnQgYSwg
aW50IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAg
IHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
Ci0gICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSk7Ci0KLSAgICBDSEVDSyhjb21w
aWxlQW5kUnVuPGludD4ocHJvYywgYSwgYikgPT0gYSArIGIpOwotfQotCi12b2lkIHRlc3RBZGRB
cmdJbW0oaW50IGEsIGludCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKLSAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxp
bnQ+KHByb2MsIGEpID09IGEgKyBiKTsKLX0KLQotdm9pZCB0ZXN0QWRkSW1tQXJnKGludCBhLCBp
bnQgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
LSAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBl
bmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSksCi0gICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCkpKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBiKSA9
PSBhICsgYik7Ci19Ci0KLXZvaWQgdGVzdEFkZEFyZ01lbShpbnQ2NF90IGEsIGludDY0X3QgYikK
LXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOwotICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgIE1lbW9y
eVZhbHVlKiBsb2FkID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJ
bnQ2NCwgT3JpZ2luKCksIGFkZHJlc3MpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSwKLSAgICAgICAgbG9hZCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9j
LCBTdG9yZSwgT3JpZ2luKCksIHJlc3VsdCwgYWRkcmVzcyk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7Ci0KLSAgICBpbnQ2NF90IGlucHV0T3V0cHV0
ID0gYjsKLSAgICBDSEVDSyghY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhLCAmaW5wdXRP
dXRwdXQpKTsKLSAgICBDSEVDSyhpbnB1dE91dHB1dCA9PSBhICsgYik7Ci19Ci0KLXZvaWQgdGVz
dEFkZE1lbUFyZyhpbnQ2NF90IGEsIGludDY0X3QgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsK
LSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhZGRy
ZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIE1lbW9yeVZhbHVlKiBsb2FkID0gcm9vdC0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksIGFkZHJlc3Mp
OwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwg
T3JpZ2luKCksCi0gICAgICAgIGxvYWQsCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Ci0gICAg
cm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3Vs
dCk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsICZhLCBiKSA9PSBh
ICsgYik7Ci19Ci0KLXZvaWQgdGVzdEFkZEltbU1lbShpbnQ2NF90IGEsIGludDY0X3QgYikKLXsK
LSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOwotICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIE1lbW9yeVZh
bHVlKiBsb2FkID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQ2
NCwgT3JpZ2luKCksIGFkZHJlc3MpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxD
b25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKSwKLSAgICAgICAgbG9hZCk7Ci0gICAgcm9v
dC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHJlc3VsdCwg
YWRkcmVzcyk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwg
T3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAw
KSk7Ci0KLSAgICBpbnQ2NF90IGlucHV0T3V0cHV0ID0gYjsKLSAgICBDSEVDSyghY29tcGlsZUFu
ZFJ1bjxpbnQ+KHByb2MsICZpbnB1dE91dHB1dCkpOwotICAgIENIRUNLKGlucHV0T3V0cHV0ID09
IGEgKyBiKTsKLX0KLQotdm9pZCB0ZXN0QWRkQXJnMzIoaW50IGEpCi17Ci0gICAgUHJvY2VkdXJl
IHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1
ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwK
LSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgdmFsdWUsIHZhbHVlKSk7Ci0KLSAgICBD
SEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYSkgPT0gYSArIGEpOwotfQotCi12b2lkIHRl
c3RBZGRBcmdzMzIoaW50IGEsIGludCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKLSAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywg
VHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCi0gICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIFRy
dW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKSk7Ci0KLSAg
ICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYSwgYikgPT0gYSArIGIpOwotfQotCi12
b2lkIHRlc3RBZGRBcmdNZW0zMihpbnQzMl90IGEsIGludDMyX3QgYikKLXsKLSAgICBQcm9jZWR1
cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZh
bHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgIE1lbW9yeVZhbHVlKiBsb2FkID0g
cm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCks
IGFkZHJlc3MpOwotICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZh
bHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCks
IGFyZ3VtZW50LCBsb2FkKTsKLSAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2Ms
IFN0b3JlLCBPcmlnaW4oKSwgcmVzdWx0LCBhZGRyZXNzKTsKLSAgICByb290LT5hcHBlbmROZXdD
b250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kTmV3PENvbnN0
MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKLQotICAgIGludDMyX3QgaW5wdXRPdXRwdXQg
PSBiOwotICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGEsICZpbnB1dE91
dHB1dCkpOwotICAgIENIRUNLKGlucHV0T3V0cHV0ID09IGEgKyBiKTsKLX0KLQotdm9pZCB0ZXN0
QWRkTWVtQXJnMzIoaW50MzJfdCBhLCBpbnQzMl90IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7
Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYWRk
cmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBNZW1vcnlWYWx1ZSogbG9hZCA9IHJvb3QtPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBhZGRyZXNz
KTsKLSAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRy
dW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKLSAgICBWYWx1ZSogcmVz
dWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBsb2FkLCBh
cmd1bWVudCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwg
T3JpZ2luKCksIHJlc3VsdCk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDMyX3Q+KHBy
b2MsICZhLCBiKSA9PSBhICsgYik7Ci19Ci0KLXZvaWQgdGVzdEFkZEltbU1lbTMyKGludDMyX3Qg
YSwgaW50MzJfdCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7Ci0gICAgTWVtb3J5VmFsdWUqIGxvYWQgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgYWRkcmVzcyk7Ci0gICAgVmFsdWUqIHJlc3Vs
dCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpLAotICAgICAg
ICBsb2FkKTsKLSAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlLCBP
cmlnaW4oKSwgcmVzdWx0LCBhZGRyZXNzKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIDApKTsKLQotICAgIGludDMyX3QgaW5wdXRPdXRwdXQgPSBiOwotICAg
IENIRUNLKCFjb21waWxlQW5kUnVuPGludD4ocHJvYywgJmlucHV0T3V0cHV0KSk7Ci0gICAgQ0hF
Q0soaW5wdXRPdXRwdXQgPT0gYSArIGIpOwotfQotCi12b2lkIHRlc3RBZGROZWcxKGludCBhLCBp
bnQgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
LSAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIE5lZywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpOwotICAgIAotICAgIENI
RUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhLCBiKSA9PSAoLSBhKSArIGIpOwotfQotCi12
b2lkIHRlc3RBZGROZWcyKGludCBhLCBpbnQgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCks
Ci0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIE5lZywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjEpKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEsIGIpID09
IGEgKyAoLSBiKSk7Ci19Ci0KLXZvaWQgdGVzdEFkZEFyZ1plcm9JbW1aRGVmKCkKLXsKLSAgICBQ
cm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwot
ICAgIFZhbHVlKiBhcmcgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBU
cnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGNv
bnN0WmVybyA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAw
KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAg
ICBwcm9jLCBBZGQsIE9yaWdpbigpLAotICAgICAgICAgICAgYXJnLAotICAgICAgICAgICAgY29u
c3RaZXJvKSk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jLCAwKTsKLSAgICBD
SEVDSyhpbnZva2U8aW50NjRfdD4oKmNvZGUsIDB4MDEyMzQ1Njc4OWFiY2RlZikgPT0gMHg4OWFi
Y2RlZik7Ci19Ci0KLXZvaWQgdGVzdEFkZExvYWRUd2ljZSgpCi17Ci0gICAgYXV0byB0ZXN0ID0g
WyZdICgpIHsKLSAgICAgICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgIGludDMyX3QgdmFsdWUgPSA0MjsKLSAgICAg
ICAgVmFsdWUqIGxvYWQgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICAg
ICAgcHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmdmFsdWUpKTsKLSAgICAgICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmln
aW4oKSwgbG9hZCwgbG9hZCkpOwotCi0gICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHBy
b2MpOwotICAgICAgICBDSEVDSyhpbnZva2U8aW50MzJfdD4oKmNvZGUpID09IDQyICogMik7Ci0g
ICAgfTsKLQotICAgIHRlc3QoKTsKLX0KLQotdm9pZCB0ZXN0QWRkQXJnRG91YmxlKGRvdWJsZSBh
KQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7Ci0gICAgVmFsdWUqIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwotICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwK
LSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCB2YWx1
ZSwgdmFsdWUpKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91Ymxl
Pihwcm9jLCBhKSwgYSArIGEpKTsKLX0KLQotdm9pZCB0ZXN0QWRkQXJnc0RvdWJsZShkb3VibGUg
YSwgZG91YmxlIGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogdmFsdWVBID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjAp
OwotICAgIFZhbHVlKiB2YWx1ZUIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7Ci0gICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIHZhbHVlQSwgdmFs
dWVCKSk7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJv
YywgYSwgYiksIGEgKyBiKSk7Ci19Ci0KLXZvaWQgdGVzdEFkZEFyZ0ltbURvdWJsZShkb3VibGUg
YSwgZG91YmxlIGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogdmFsdWVBID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjAp
OwotICAgIFZhbHVlKiB2YWx1ZUIgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIGIpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAg
ICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCB2YWx1ZUEsIHZhbHVlQikpOwotCi0gICAgQ0hFQ0so
aXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEpLCBhICsgYikpOwotfQot
Ci12b2lkIHRlc3RBZGRJbW1BcmdEb3VibGUoZG91YmxlIGEsIGRvdWJsZSBiKQotewotICAgIFBy
b2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0g
ICAgVmFsdWUqIHZhbHVlQSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgYSk7Ci0gICAgVmFsdWUqIHZhbHVlQiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKLSAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3Jp
Z2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4o
KSwgdmFsdWVBLCB2YWx1ZUIpKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRS
dW48ZG91YmxlPihwcm9jLCBiKSwgYSArIGIpKTsKLX0KLQotdm9pZCB0ZXN0QWRkSW1tc0RvdWJs
ZShkb3VibGUgYSwgZG91YmxlIGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogdmFsdWVBID0gcm9vdC0+
YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKLSAgICBWYWx1
ZSogdmFsdWVCID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBiKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2Ms
IFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
QWRkLCBPcmlnaW4oKSwgdmFsdWVBLCB2YWx1ZUIpKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2Fs
KGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jKSwgYSArIGIpKTsKLX0KLQotdm9pZCB0ZXN0QWRk
QXJnRmxvYXQoZmxvYXQgYSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSk7Ci0gICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7Ci0gICAgVmFsdWUqIHJl
c3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgZmxvYXRW
YWx1ZSwgZmxvYXRWYWx1ZSk7Ci0gICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsK
LQotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBi
aXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSArIGEpKSk7
Ci19Ci0KLXZvaWQgdGVzdEFkZEFyZ3NGbG9hdChmbG9hdCBhLCBmbG9hdCBiKQotewotICAgIFBy
b2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0g
ICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBU
cnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGFy
Z3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2lu
KCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Ci0gICAgVmFsdWUqIGZsb2F0VmFsdWUxID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3Vt
ZW50MWludDMyKTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQyaW50MzIpOwotICAgIFZh
bHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCks
IGZsb2F0VmFsdWUxLCBmbG9hdFZhbHVlMik7Ci0gICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7Ci0g
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJl
c3VsdDMyKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4o
cHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYikp
LCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSArIGIpKSk7Ci19Ci0KLXZvaWQgdGVzdEFkZEZQUkFy
Z3NGbG9hdChmbG9hdCBhLCBmbG9hdCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50MSA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86
OmFyZ3VtZW50RlBSMCkpOwotICAgIFZhbHVlKiBhcmd1bWVudDIgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpKTsK
LSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9y
aWdpbigpLCBhcmd1bWVudDEsIGFyZ3VtZW50Mik7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7Ci0KLSAgICBDSEVDSyhpc0lk
ZW50aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jLCBhLCBiKSwgYSArIGIpKTsKLX0KLQot
dm9pZCB0ZXN0QWRkQXJnSW1tRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKLXsKLSAgICBQcm9jZWR1
cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZh
bHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3Jp
Z2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGZsb2F0VmFsdWUg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJn
dW1lbnQzMik7Ci0gICAgVmFsdWUqIGNvbnN0VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3RG
bG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZSwgY29uc3RW
YWx1ZSk7Ci0gICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKLQotICAgIENIRUNL
KGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGlu
dDMyX3Q+KGEpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgKyBiKSkpOwotfQotCi12b2lkIHRl
c3RBZGRJbW1BcmdGbG9hdChmbG9hdCBhLCBmbG9hdCBiKQotewotICAgIFByb2NlZHVyZSBwcm9j
OwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFy
Z3VtZW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwK
LSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZSA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDMy
KTsKLSAgICBWYWx1ZSogY29uc3RWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFs
dWU+KHByb2MsIE9yaWdpbigpLCBhKTsKLSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBjb25zdFZhbHVlLCBmbG9hdFZhbHVlKTsK
LSAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdp
c2VDYXN0LCBPcmlnaW4oKSwgcmVzdWx0KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOwotCi0gICAgQ0hFQ0soaXNJZGVu
dGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4o
YikpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSArIGIpKSk7Ci19Ci0KLXZvaWQgdGVzdEFkZElt
bXNGbG9hdChmbG9hdCBhLCBmbG9hdCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGNvbnN0VmFsdWUx
ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpOwot
ICAgIFZhbHVlKiBjb25zdFZhbHVlMiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+
KHByb2MsIE9yaWdpbigpLCBiKTsKLSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBjb25zdFZhbHVlMSwgY29uc3RWYWx1ZTIpOwot
ICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lz
ZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7Ci0KLSAgICBDSEVDSyhpc0lkZW50
aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4o
YSArIGIpKSk7Ci19Ci0KLXZvaWQgdGVzdEFkZEFyZ0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252
ZXJzaW9uKGZsb2F0IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnRJbnQzMiA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCkpOwotICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50SW50MzIpOwotICAgIFZhbHVl
KiBhc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwg
T3JpZ2luKCksIGZsb2F0VmFsdWUpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGFzRG91YmxlLCBhc0RvdWJsZSk7Ci0gICAg
VmFsdWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVU
b0Zsb2F0LCBPcmlnaW4oKSwgcmVzdWx0KTsKLSAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1bHQp
OwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LCByZXN1bHQzMik7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMy
X3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90
PihhICsgYSkpKTsKLX0KLQotdm9pZCB0ZXN0QWRkQXJnc0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVD
b252ZXJzaW9uKGZsb2F0IGEsIGZsb2F0IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnQx
aW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogYXJndW1lbnQyaW50MzIgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjEpKTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZTEgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQxaW50MzIpOwotICAgIFZh
bHVlKiBmbG9hdFZhbHVlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNh
c3QsIE9yaWdpbigpLCBhcmd1bWVudDJpbnQzMik7Ci0gICAgVmFsdWUqIGFzRG91YmxlMSA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0
VmFsdWUxKTsKLSAgICBWYWx1ZSogYXNEb3VibGUyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZTIpOwotICAgIFZhbHVlKiBy
ZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGFzRG91
YmxlMSwgYXNEb3VibGUyKTsKLSAgICBWYWx1ZSogZmxvYXRSZXN1bHQgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCByZXN1bHQpOwotICAgIFZh
bHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3Qs
IE9yaWdpbigpLCBmbG9hdFJlc3VsdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKLQotICAgIENIRUNLKGlzSWRlbnRp
Y2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEp
LCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYikpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSArIGIp
KSk7Ci19Ci0KLXZvaWQgdGVzdEFkZEFyZ3NGbG9hdFdpdGhFZmZlY3RmdWxEb3VibGVDb252ZXJz
aW9uKGZsb2F0IGEsIGZsb2F0IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnQxaW50MzIg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogYXJndW1lbnQyaW50MzIgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjEpKTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZTEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQxaW50MzIpOwotICAgIFZhbHVlKiBm
bG9hdFZhbHVlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9y
aWdpbigpLCBhcmd1bWVudDJpbnQzMik7Ci0gICAgVmFsdWUqIGFzRG91YmxlMSA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUx
KTsKLSAgICBWYWx1ZSogYXNEb3VibGUyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBG
bG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZTIpOwotICAgIFZhbHVlKiByZXN1bHQg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGFzRG91YmxlMSwg
YXNEb3VibGUyKTsKLSAgICBWYWx1ZSogZmxvYXRSZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCByZXN1bHQpOwotICAgIFZhbHVlKiBk
b3VibGVBZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwotICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1v
cnlWYWx1ZT4ocHJvYywgU3RvcmUsIE9yaWdpbigpLCByZXN1bHQsIGRvdWJsZUFkZHJlc3MpOwot
ICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lz
ZUNhc3QsIE9yaWdpbigpLCBmbG9hdFJlc3VsdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKLQotICAgIGRvdWJsZSBl
ZmZlY3QgPSAwOwotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4o
cHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYiks
ICZlZmZlY3QpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSArIGIpKSk7Ci0gICAgQ0hFQ0soaXNJ
ZGVudGljYWwoZWZmZWN0LCBzdGF0aWNfY2FzdDxkb3VibGU+KGEpICsgc3RhdGljX2Nhc3Q8ZG91
YmxlPihiKSkpOwotfQotCi12b2lkIHRlc3RBZGRNdWxNdWxBcmdzKGludDY0X3QgYSwgaW50NjRf
dCBiLCBpbnQ2NF90IGMpCi17Ci0gICAgLy8gV2Ugd2FudCB0byBjaGVjayBldmVyeSBwb3NzaWJs
ZSBvcmRlcmluZyBvZiBhcmd1bWVudHMgKHRvIHByb3Blcmx5IGNoZWNrIGV2ZXJ5IHBhdGggaW4g
QjNSZWR1Y2VTdHJlbmd0aCk6Ci0gICAgLy8gKChhICogYikgKyAoYSAqIGMpKQotICAgIC8vICgo
YSAqIGIpICsgKGMgKiBhKSkKLSAgICAvLyAoKGIgKiBhKSArIChhICogYykpCi0gICAgLy8gKChi
ICogYSkgKyAoYyAqIGEpKQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgKytpKSB7Ci0gICAg
ICAgIFByb2NlZHVyZSBwcm9jOwotICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOwotICAgICAgICBWYWx1ZSogYXJnQSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAg
VmFsdWUqIGFyZ0IgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIFZhbHVlKiBhcmdDID0gcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjIpOwotICAgICAgICBWYWx1ZSogbXVsQUIgPSBpICYgMiA/IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgYXJnQSwgYXJnQikKLSAgICAgICAgICAg
IDogcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBhcmdCLCBhcmdB
KTsKLSAgICAgICAgVmFsdWUqIG11bEFDID0gaSAmIDEgPyByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIE11bCwgT3JpZ2luKCksIGFyZ0EsIGFyZ0MpCi0gICAgICAgICAgICA6IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgYXJnQywgYXJnQSk7Ci0gICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwKLSAgICAgICAg
ICAgICAgICBtdWxBQiwKLSAgICAgICAgICAgICAgICBtdWxBQykpOwotCi0gICAgICAgIENIRUNL
X0VRKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYSwgYiwgYyksICgoYSAqIGIpICsgKGEg
KiBjKSkpOwotICAgIH0KLX0KLQotdm9pZCB0ZXN0TXVsQXJnKGludCBhKQotewotICAgIFByb2Nl
ZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAg
VmFsdWUqIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgVHJ1
bmMsIE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCB2YWx1ZSwgdmFsdWUpKTsKLQot
ICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhKSA9PSBhICogYSk7Ci19Ci0KLXZv
aWQgdGVzdE11bEFyZ1N0b3JlKGludCBhKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBpbnQgbXVsU2xvdDsKLSAg
ICBpbnQgdmFsdWVTbG90OwotICAgIAotICAgIFZhbHVlKiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKTsKLSAgICBWYWx1ZSogbXVsID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBNdWwsIE9yaWdpbigpLCB2YWx1ZSwgdmFsdWUpOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3PE1l
bW9yeVZhbHVlPigKLSAgICAgICAgcHJvYywgU3RvcmUsIE9yaWdpbigpLCB2YWx1ZSwKLSAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmdmFsdWVT
bG90KSwgMCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAgcHJv
YywgU3RvcmUsIE9yaWdpbigpLCBtdWwsCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0
clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJm11bFNsb3QpLCAwKTsKLQotICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKLQotICAgIENIRUNL
KCFjb21waWxlQW5kUnVuPGludD4ocHJvYywgYSkpOwotICAgIENIRUNLKG11bFNsb3QgPT0gYSAq
IGEpOwotICAgIENIRUNLKHZhbHVlU2xvdCA9PSBhKTsKLX0KLQotdm9pZCB0ZXN0TXVsQWRkQXJn
KGludCBhKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKLSAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAg
ICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIE11bCwgT3JpZ2luKCksIHZhbHVlLCB2YWx1ZSksCi0gICAgICAgICAgICB2YWx1
ZSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEpID09IGEgKiBhICsg
YSk7Ci19Ci0KLXZvaWQgdGVzdE11bEFyZ3MoaW50IGEsIGludCBiKQotewotICAgIFByb2NlZHVy
ZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgTXVs
LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKLSAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIxKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEs
IGIpID09IGEgKiBiKTsKLX0KLQotdm9pZCB0ZXN0TXVsQXJnTmVnQXJnKGludCBhLCBpbnQgYikK
LXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOwotICAgIFZhbHVlKiBhcmdBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIFZhbHVlKiBh
cmdCID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgIFZhbHVlKiBuZWdCID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBOZWcsIE9yaWdpbigpLCBhcmdCKTsKLSAgICBWYWx1ZSogcmVzdWx0ID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBhcmdBLCBuZWdCKTsK
LSAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3Vs
dCk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYSwgYikgPT0gYSAqICgt
YikpOwotfQotCi12b2lkIHRlc3RNdWxOZWdBcmdBcmcoaW50IGEsIGludCBiKQotewotICAgIFBy
b2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0g
ICAgVmFsdWUqIGFyZ0EgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgVmFsdWUqIGFyZ0IgPSByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMSk7Ci0gICAgVmFsdWUqIG5lZ0EgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIE5lZywgT3JpZ2luKCksIGFyZ0EpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIG5lZ0EsIGFyZ0IpOwotICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKLQotICAg
IENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhLCBiKSA9PSAoLWEpICogYik7Ci19Ci0K
LXZvaWQgdGVzdE11bEFyZ0ltbShpbnQ2NF90IGEsIGludDY0X3QgYikKLXsKLSAgICBQcm9jZWR1
cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIE11
bCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYikpKTsKLQotICAg
IENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYSkgPT0gYSAqIGIpOwotfQotCi12
b2lkIHRlc3RNdWxJbW1BcmcoaW50IGEsIGludCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwot
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgTXVsLCBPcmlnaW4o
KSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdp
bigpLCBhKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOwotCi0gICAgQ0hFQ0soY29t
cGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGIpID09IGEgKiBiKTsKLX0KLQotdm9pZCB0ZXN0TXVsQXJn
czMyKGludCBhLCBpbnQgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIE11bCwgT3JpZ2luKCksCi0gICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBP
cmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAotICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3Jp
Z2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSkpOwotCi0gICAgQ0hFQ0so
Y29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEsIGIpID09IGEgKiBiKTsKLX0KLQotdm9pZCB0ZXN0
TXVsQXJnczMyU2lnbkV4dGVuZChpbnQgYSwgaW50IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7
Ci0gICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEpCi0gICAgICAgIHJldHVybjsKLSAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKLSAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMSkpOwotICAgIFZhbHVlKiBhcmcxNjQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFNFeHQzMiwgT3JpZ2luKCksIGFyZzEpOwotICAgIFZhbHVlKiBhcmcyNjQgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIFNFeHQzMiwgT3JpZ2luKCksIGFyZzIpOwotICAgIFZhbHVlKiBt
dWwgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIGFyZzE2NCwg
YXJnMjY0KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgbXVsKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotCi0g
ICAgQ0hFQ0soaW52b2tlPGxvbmcgaW50PigqY29kZSwgYSwgYikgPT0gKChsb25nIGludCkgYSkg
KiAoKGxvbmcgaW50KSBiKSk7Ci19Ci0KLXZvaWQgdGVzdE11bEltbTMyU2lnbkV4dGVuZChjb25z
dCBpbnQgYSwgaW50IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgaWYgKHByb2Mub3B0
TGV2ZWwoKSA8IDEpCi0gICAgICAgIHJldHVybjsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpOwotICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMSkpOwotICAgIFZhbHVlKiBhcmcyNjQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFNFeHQzMiwgT3JpZ2luKCksIGFyZzIpOwotICAgIFZhbHVlKiBtdWwgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIGFyZzEsIGFyZzI2NCk7Ci0gICAg
cm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIG11bCk7
Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLQotICAgIENIRUNLKGludm9r
ZTxsb25nIGludD4oKmNvZGUsIGIpID09ICgobG9uZyBpbnQpIGEpICogKChsb25nIGludCkgYikp
OwotfQotCi12b2lkIHRlc3RNdWxMb2FkVHdpY2UoKQotewotICAgIGF1dG8gdGVzdCA9IFsmXSAo
KSB7Ci0gICAgICAgIFByb2NlZHVyZSBwcm9jOwotICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOwotICAgICAgICBpbnQzMl90IHZhbHVlID0gNDI7Ci0gICAgICAgIFZh
bHVlKiBsb2FkID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAgICAgIHBy
b2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxD
b25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnZhbHVlKSk7Ci0gICAgICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
Ci0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCks
IGxvYWQsIGxvYWQpKTsKLQotICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsK
LSAgICAgICAgQ0hFQ0soaW52b2tlPGludDMyX3Q+KCpjb2RlKSA9PSA0MiAqIDQyKTsKLSAgICB9
OwotCi0gICAgdGVzdCgpOwotfQotCi12b2lkIHRlc3RNdWxBZGRBcmdzTGVmdCgpCi17Ci0gICAg
UHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
LQotICAgIFZhbHVlKiBhcmcwID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIFZhbHVlKiBhcmcxID0g
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEpOwotICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwotICAg
IFZhbHVlKiBtdWx0aXBsaWVkID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9y
aWdpbigpLCBhcmcwLCBhcmcxKTsKLSAgICBWYWx1ZSogYWRkZWQgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIG11bHRpcGxpZWQsIGFyZzIpOwotICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBhZGRlZCk7Ci0K
LSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLQotICAgIGF1dG8gdGVzdFZhbHVl
cyA9IGludDY0T3BlcmFuZHMoKTsKLSAgICBmb3IgKGF1dG8gYSA6IHRlc3RWYWx1ZXMpIHsKLSAg
ICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8g
YyA6IHRlc3RWYWx1ZXMpIHsKLSAgICAgICAgICAgICAgICBDSEVDSyhpbnZva2U8aW50NjRfdD4o
KmNvZGUsIGEudmFsdWUsIGIudmFsdWUsIGMudmFsdWUpID09IGEudmFsdWUgKiBiLnZhbHVlICsg
Yy52YWx1ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgdGVz
dE11bEFkZEFyZ3NSaWdodCgpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIFZhbHVlKiBhcmcwID0gcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOwotICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgIFZhbHVlKiBh
cmcyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjIpOwotICAgIFZhbHVlKiBtdWx0aXBsaWVkID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBhcmcxLCBhcmcyKTsKLSAgICBWYWx1
ZSogYWRkZWQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGFy
ZzAsIG11bHRpcGxpZWQpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCBhZGRlZCk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhw
cm9jKTsKLQotICAgIGF1dG8gdGVzdFZhbHVlcyA9IGludDY0T3BlcmFuZHMoKTsKLSAgICBmb3Ig
KGF1dG8gYSA6IHRlc3RWYWx1ZXMpIHsKLSAgICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVz
KSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8gYyA6IHRlc3RWYWx1ZXMpIHsKLSAgICAgICAgICAg
ICAgICBDSEVDSyhpbnZva2U8aW50NjRfdD4oKmNvZGUsIGEudmFsdWUsIGIudmFsdWUsIGMudmFs
dWUpID09IGEudmFsdWUgKyBiLnZhbHVlICogYy52YWx1ZSk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgdGVzdE11bEFkZEFyZ3NMZWZ0MzIoKQotewotICAgIFBy
b2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0K
LSAgICBWYWx1ZSogYXJnMCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9y
aWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZhbHVlKiBhcmcxID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKSk7Ci0gICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpKTsKLSAgICBWYWx1
ZSogbXVsdGlwbGllZCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4o
KSwgYXJnMCwgYXJnMSk7Ci0gICAgVmFsdWUqIGFkZGVkID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBBZGQsIE9yaWdpbigpLCBtdWx0aXBsaWVkLCBhcmcyKTsKLSAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgYWRkZWQpOwotCi0gICAg
YXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0KLSAgICBhdXRvIHRlc3RWYWx1ZXMgPSBp
bnQzMk9wZXJhbmRzKCk7Ci0gICAgZm9yIChhdXRvIGEgOiB0ZXN0VmFsdWVzKSB7Ci0gICAgICAg
IGZvciAoYXV0byBiIDogdGVzdFZhbHVlcykgewotICAgICAgICAgICAgZm9yIChhdXRvIGMgOiB0
ZXN0VmFsdWVzKSB7Ci0gICAgICAgICAgICAgICAgQ0hFQ0soaW52b2tlPGludDMyX3Q+KCpjb2Rl
LCBhLnZhbHVlLCBiLnZhbHVlLCBjLnZhbHVlKSA9PSBhLnZhbHVlICogYi52YWx1ZSArIGMudmFs
dWUpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIHRlc3RNdWxB
ZGRBcmdzUmlnaHQzMigpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIFZhbHVlKiBhcmcwID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSk7Ci0gICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5j
LCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKLSAgICBWYWx1ZSogYXJnMiA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMikpOwotICAgIFZhbHVlKiBtdWx0aXBsaWVkID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBhcmcxLCBhcmcyKTsKLSAgICBWYWx1ZSogYWRk
ZWQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGFyZzAsIG11
bHRpcGxpZWQpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCBhZGRlZCk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsK
LQotICAgIGF1dG8gdGVzdFZhbHVlcyA9IGludDMyT3BlcmFuZHMoKTsKLSAgICBmb3IgKGF1dG8g
YSA6IHRlc3RWYWx1ZXMpIHsKLSAgICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKSB7Ci0g
ICAgICAgICAgICBmb3IgKGF1dG8gYyA6IHRlc3RWYWx1ZXMpIHsKLSAgICAgICAgICAgICAgICBD
SEVDSyhpbnZva2U8aW50MzJfdD4oKmNvZGUsIGEudmFsdWUsIGIudmFsdWUsIGMudmFsdWUpID09
IGEudmFsdWUgKyBiLnZhbHVlICogYy52YWx1ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICB9Ci19Ci0KLXZvaWQgdGVzdE11bFN1YkFyZ3NMZWZ0KCkKLXsKLSAgICBQcm9jZWR1cmUg
cHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgVmFs
dWUqIGFyZzAgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMSk7Ci0gICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7Ci0gICAgVmFsdWUqIG11
bHRpcGxpZWQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIGFy
ZzAsIGFyZzEpOwotICAgIFZhbHVlKiBhZGRlZCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgU3ViLCBPcmlnaW4oKSwgbXVsdGlwbGllZCwgYXJnMik7Ci0gICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFkZGVkKTsKLQotICAgIGF1dG8g
Y29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotCi0gICAgYXV0byB0ZXN0VmFsdWVzID0gaW50NjRP
cGVyYW5kcygpOwotICAgIGZvciAoYXV0byBhIDogdGVzdFZhbHVlcykgewotICAgICAgICBmb3Ig
KGF1dG8gYiA6IHRlc3RWYWx1ZXMpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byBjIDogdGVzdFZh
bHVlcykgewotICAgICAgICAgICAgICAgIENIRUNLKGludm9rZTxpbnQ2NF90PigqY29kZSwgYS52
YWx1ZSwgYi52YWx1ZSwgYy52YWx1ZSkgPT0gYS52YWx1ZSAqIGIudmFsdWUgLSBjLnZhbHVlKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCB0ZXN0TXVsU3ViQXJn
c1JpZ2h0KCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOwotCi0gICAgVmFsdWUqIGFyZzAgPSByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0g
ICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgVmFsdWUqIGFyZzIgPSByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMik7Ci0gICAgVmFsdWUqIG11bHRpcGxpZWQgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIE11bCwgT3JpZ2luKCksIGFyZzEsIGFyZzIpOwotICAgIFZhbHVlKiBhZGRlZCA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgYXJnMCwgbXVsdGlw
bGllZCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIGFkZGVkKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotCi0g
ICAgYXV0byB0ZXN0VmFsdWVzID0gaW50NjRPcGVyYW5kcygpOwotICAgIGZvciAoYXV0byBhIDog
dGVzdFZhbHVlcykgewotICAgICAgICBmb3IgKGF1dG8gYiA6IHRlc3RWYWx1ZXMpIHsKLSAgICAg
ICAgICAgIGZvciAoYXV0byBjIDogdGVzdFZhbHVlcykgewotICAgICAgICAgICAgICAgIENIRUNL
KGludm9rZTxpbnQ2NF90PigqY29kZSwgYS52YWx1ZSwgYi52YWx1ZSwgYy52YWx1ZSkgPT0gYS52
YWx1ZSAtIGIudmFsdWUgKiBjLnZhbHVlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
IH0KLX0KLQotdm9pZCB0ZXN0TXVsU3ViQXJnc0xlZnQzMigpCi17Ci0gICAgUHJvY2VkdXJlIHBy
b2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIFZhbHVl
KiBhcmcwID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0g
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEp
KTsKLSAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMs
IE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMikpOwotICAgIFZhbHVlKiBtdWx0aXBs
aWVkID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBhcmcwLCBh
cmcxKTsKLSAgICBWYWx1ZSogYWRkZWQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1
YiwgT3JpZ2luKCksIG11bHRpcGxpZWQsIGFyZzIpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBhZGRlZCk7Ci0KLSAgICBhdXRvIGNvZGUg
PSBjb21waWxlUHJvYyhwcm9jKTsKLQotICAgIGF1dG8gdGVzdFZhbHVlcyA9IGludDMyT3BlcmFu
ZHMoKTsKLSAgICBmb3IgKGF1dG8gYSA6IHRlc3RWYWx1ZXMpIHsKLSAgICAgICAgZm9yIChhdXRv
IGIgOiB0ZXN0VmFsdWVzKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8gYyA6IHRlc3RWYWx1ZXMp
IHsKLSAgICAgICAgICAgICAgICBDSEVDSyhpbnZva2U8aW50MzJfdD4oKmNvZGUsIGEudmFsdWUs
IGIudmFsdWUsIGMudmFsdWUpID09IGEudmFsdWUgKiBiLnZhbHVlIC0gYy52YWx1ZSk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgdGVzdE11bFN1YkFyZ3NSaWdo
dDMyKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOwotCi0gICAgVmFsdWUqIGFyZzAgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBW
YWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigp
LAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOwotICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIyKSk7Ci0gICAgVmFsdWUqIG11bHRpcGxpZWQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIE11bCwgT3JpZ2luKCksIGFyZzEsIGFyZzIpOwotICAgIFZhbHVlKiBhZGRlZCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgYXJnMCwgbXVsdGlwbGllZCk7
Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCks
IGFkZGVkKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotCi0gICAgYXV0
byB0ZXN0VmFsdWVzID0gaW50MzJPcGVyYW5kcygpOwotICAgIGZvciAoYXV0byBhIDogdGVzdFZh
bHVlcykgewotICAgICAgICBmb3IgKGF1dG8gYiA6IHRlc3RWYWx1ZXMpIHsKLSAgICAgICAgICAg
IGZvciAoYXV0byBjIDogdGVzdFZhbHVlcykgewotICAgICAgICAgICAgICAgIENIRUNLKGludm9r
ZTxpbnQzMl90PigqY29kZSwgYS52YWx1ZSwgYi52YWx1ZSwgYy52YWx1ZSkgPT0gYS52YWx1ZSAt
IGIudmFsdWUgKiBjLnZhbHVlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0K
LQotdm9pZCB0ZXN0TXVsTmVnQXJncygpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIFZhbHVlKiBhcmcwID0gcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOwotICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgIFZh
bHVlKiBtdWx0aXBsaWVkID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdp
bigpLCBhcmcwLCBhcmcxKTsKLSAgICBWYWx1ZSogemVybyA9IHJvb3QtPmFwcGVuZE5ldzxDb25z
dDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKTsKLSAgICBWYWx1ZSogYWRkZWQgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIHplcm8sIG11bHRpcGxpZWQpOwot
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBh
ZGRlZCk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLQotICAgIGF1dG8g
dGVzdFZhbHVlcyA9IGludDY0T3BlcmFuZHMoKTsKLSAgICBmb3IgKGF1dG8gYSA6IHRlc3RWYWx1
ZXMpIHsKLSAgICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKSB7Ci0gICAgICAgICAgICBD
SEVDSyhpbnZva2U8aW50NjRfdD4oKmNvZGUsIGEudmFsdWUsIGIudmFsdWUpID09IC0oYS52YWx1
ZSAqIGIudmFsdWUpKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCB0ZXN0TXVsTmVnQXJn
czMyKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOwotCi0gICAgVmFsdWUqIGFyZzAgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBW
YWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigp
LAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOwotICAgIFZhbHVlKiBtdWx0aXBsaWVkID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBhcmcwLCBhcmcxKTsKLSAg
ICBWYWx1ZSogemVybyA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCAwKTsKLSAgICBWYWx1ZSogYWRkZWQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFN1YiwgT3JpZ2luKCksIHplcm8sIG11bHRpcGxpZWQpOwotICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBhZGRlZCk7Ci0KLSAgICBhdXRvIGNv
ZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLQotICAgIGF1dG8gdGVzdFZhbHVlcyA9IGludDMyT3Bl
cmFuZHMoKTsKLSAgICBmb3IgKGF1dG8gYSA6IHRlc3RWYWx1ZXMpIHsKLSAgICAgICAgZm9yIChh
dXRvIGIgOiB0ZXN0VmFsdWVzKSB7Ci0gICAgICAgICAgICBDSEVDSyhpbnZva2U8aW50MzJfdD4o
KmNvZGUsIGEudmFsdWUsIGIudmFsdWUpID09IC0oYS52YWx1ZSAqIGIudmFsdWUpKTsKLSAgICAg
ICAgfQotICAgIH0KLX0KLQotdm9pZCB0ZXN0TXVsQXJnRG91YmxlKGRvdWJsZSBhKQotewotICAg
IFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
Ci0gICAgVmFsdWUqIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwotICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCB2YWx1ZSwgdmFsdWUp
KTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBh
KSwgYSAqIGEpKTsKLX0KLQotdm9pZCB0ZXN0TXVsQXJnc0RvdWJsZShkb3VibGUgYSwgZG91Ymxl
IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICBWYWx1ZSogdmFsdWVBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwotICAgIFZh
bHVlKiB2YWx1ZUIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIHZhbHVlQSwgdmFsdWVCKSk7Ci0K
LSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgYSwgYiks
IGEgKiBiKSk7Ci19Ci0KLXZvaWQgdGVzdE11bEFyZ0ltbURvdWJsZShkb3VibGUgYSwgZG91Ymxl
IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICBWYWx1ZSogdmFsdWVBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwotICAgIFZh
bHVlKiB2YWx1ZUIgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIGIpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBNdWwsIE9yaWdpbigpLCB2YWx1ZUEsIHZhbHVlQikpOwotCi0gICAgQ0hFQ0soaXNJZGVudGlj
YWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEpLCBhICogYikpOwotfQotCi12b2lkIHRl
c3RNdWxJbW1BcmdEb3VibGUoZG91YmxlIGEsIGRvdWJsZSBiKQotewotICAgIFByb2NlZHVyZSBw
cm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUq
IHZhbHVlQSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgYSk7Ci0gICAgVmFsdWUqIHZhbHVlQiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKLSAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0g
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgdmFsdWVB
LCB2YWx1ZUIpKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91Ymxl
Pihwcm9jLCBiKSwgYSAqIGIpKTsKLX0KLQotdm9pZCB0ZXN0TXVsSW1tc0RvdWJsZShkb3VibGUg
YSwgZG91YmxlIGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogdmFsdWVBID0gcm9vdC0+YXBwZW5kTmV3
PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKLSAgICBWYWx1ZSogdmFsdWVC
ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKTsK
LSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwg
T3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmln
aW4oKSwgdmFsdWVBLCB2YWx1ZUIpKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVB
bmRSdW48ZG91YmxlPihwcm9jKSwgYSAqIGIpKTsKLX0KLQotdm9pZCB0ZXN0TXVsQXJnRmxvYXQo
ZmxvYXQgYSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7
Ci0gICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJp
dHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZSwgZmxv
YXRWYWx1ZSk7Ci0gICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKLQotCi0gICAg
Q0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nh
c3Q8aW50MzJfdD4oYSkpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAqIGEpKSk7Ci19Ci0KLXZv
aWQgdGVzdE11bEFyZ3NGbG9hdChmbG9hdCBhLCBmbG9hdCBiKQotewotICAgIFByb2NlZHVyZSBw
cm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUq
IGFyZ3VtZW50MWludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3Jp
Z2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50Mmlu
dDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxKSk7Ci0gICAgVmFsdWUqIGZsb2F0VmFsdWUxID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MWludDMy
KTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQyaW50MzIpOwotICAgIFZhbHVlKiByZXN1
bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIGZsb2F0VmFs
dWUxLCBmbG9hdFZhbHVlMik7Ci0gICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsK
LQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0
d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYikpLCBiaXR3aXNl
X2Nhc3Q8aW50MzJfdD4oYSAqIGIpKSk7Ci19Ci0KLXZvaWQgdGVzdE11bEFyZ0ltbUZsb2F0KGZs
b2F0IGEsIGZsb2F0IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCkpOwotICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOwotICAgIFZhbHVlKiBjb25z
dFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IGIpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11
bCwgT3JpZ2luKCksIGZsb2F0VmFsdWUsIGNvbnN0VmFsdWUpOwotICAgIFZhbHVlKiByZXN1bHQz
MiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBy
ZXN1bHQpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCByZXN1bHQzMik7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVu
PGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2VfY2FzdDxp
bnQzMl90PihhICogYikpKTsKLX0KLQotdm9pZCB0ZXN0TXVsSW1tQXJnRmxvYXQoZmxvYXQgYSwg
ZmxvYXQgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7
Ci0gICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJp
dHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7Ci0gICAgVmFsdWUqIGNvbnN0VmFsdWUg
PSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7Ci0g
ICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmln
aW4oKSwgY29uc3RWYWx1ZSwgZmxvYXRWYWx1ZSk7Ci0gICAgVmFsdWUqIHJlc3VsdDMyID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7
Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCks
IHJlc3VsdDMyKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJf
dD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+
KGEgKiBiKSkpOwotfQotCi12b2lkIHRlc3RNdWxJbW1zRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikK
LXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOwotICAgIFZhbHVlKiBjb25zdFZhbHVlMSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdEZs
b2F0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKLSAgICBWYWx1ZSogY29uc3RWYWx1ZTIgPSBy
b290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7Ci0gICAg
VmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4o
KSwgY29uc3RWYWx1ZTEsIGNvbnN0VmFsdWUyKTsKLSAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgcmVzdWx0KTsK
LSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwg
cmVzdWx0MzIpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90
Pihwcm9jKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgKiBiKSkpOwotfQotCi12b2lkIHRlc3RN
dWxBcmdGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbihmbG9hdCBhKQotewotICAgIFBy
b2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0g
ICAgVmFsdWUqIGFyZ3VtZW50SW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRy
dW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogZmxv
YXRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdp
bigpLCBhcmd1bWVudEludDMyKTsKLSAgICBWYWx1ZSogYXNEb3VibGUgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlKTsKLSAg
ICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdp
bigpLCBhc0RvdWJsZSwgYXNEb3VibGUpOwotICAgIFZhbHVlKiBmbG9hdFJlc3VsdCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIHJlc3VsdCk7
Ci0gICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3
aXNlQ2FzdCwgT3JpZ2luKCksIGZsb2F0UmVzdWx0KTsKLSAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOwotCi0gICAgQ0hFQ0so
aXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50
MzJfdD4oYSkpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAqIGEpKSk7Ci19Ci0KLXZvaWQgdGVz
dE11bEFyZ3NGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbihmbG9hdCBhLCBmbG9hdCBi
KQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0g
ICAgVmFsdWUqIGFyZ3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBU
cnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Ci0gICAgVmFsdWUqIGZs
b2F0VmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3Jp
Z2luKCksIGFyZ3VtZW50MWludDMyKTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZTIgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQyaW50
MzIpOwotICAgIFZhbHVlKiBhc0RvdWJsZTEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlMSk7Ci0gICAgVmFsdWUqIGFzRG91
YmxlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2lu
KCksIGZsb2F0VmFsdWUyKTsKLSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBhc0RvdWJsZTEsIGFzRG91YmxlMik7Ci0gICAgVmFs
dWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zs
b2F0LCBPcmlnaW4oKSwgcmVzdWx0KTsKLSAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1bHQpOwot
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBy
ZXN1bHQzMik7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+
KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIp
KSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgKiBiKSkpOwotfQotCi12b2lkIHRlc3RNdWxBcmdz
RmxvYXRXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lvbihmbG9hdCBhLCBmbG9hdCBiKQotewot
ICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFs
dWUqIGFyZ3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywg
T3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Ci0gICAgVmFsdWUqIGZsb2F0VmFs
dWUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCks
IGFyZ3VtZW50MWludDMyKTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZTIgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQyaW50MzIpOwot
ICAgIFZhbHVlKiBhc0RvdWJsZTEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0
VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlMSk7Ci0gICAgVmFsdWUqIGFzRG91YmxlMiA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZs
b2F0VmFsdWUyKTsKLSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBNdWwsIE9yaWdpbigpLCBhc0RvdWJsZTEsIGFzRG91YmxlMik7Ci0gICAgVmFsdWUqIGZs
b2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBP
cmlnaW4oKSwgcmVzdWx0KTsKLSAgICBWYWx1ZSogZG91YmxlTXVscmVzcyA9IHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIyKTsKLSAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlLCBPcmln
aW4oKSwgcmVzdWx0LCBkb3VibGVNdWxyZXNzKTsKLSAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1
bHQpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCByZXN1bHQzMik7Ci0KLSAgICBkb3VibGUgZWZmZWN0ID0gMDsKLSAgICBDSEVDSyhpc0lk
ZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90
PihhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpLCAmZWZmZWN0KSwgYml0d2lzZV9jYXN0PGlu
dDMyX3Q+KGEgKiBiKSkpOwotICAgIENIRUNLKGlzSWRlbnRpY2FsKGVmZmVjdCwgc3RhdGljX2Nh
c3Q8ZG91YmxlPihhKSAqIHN0YXRpY19jYXN0PGRvdWJsZT4oYikpKTsKLX0KLQotdm9pZCB0ZXN0
RGl2QXJnRG91YmxlKGRvdWJsZSBhKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIHZhbHVlID0gcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1
bWVudEZQUjApOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBEaXYsIE9yaWdpbigpLCB2YWx1ZSwgdmFsdWUpKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2Fs
KGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBhKSwgYSAvIGEpKTsKLX0KLQotdm9pZCB0ZXN0
RGl2QXJnc0RvdWJsZShkb3VibGUgYSwgZG91YmxlIGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7
Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogdmFs
dWVBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBG
UFJJbmZvOjphcmd1bWVudEZQUjApOwotICAgIFZhbHVlKiB2YWx1ZUIgPSByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBS
MSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERpdiwg
T3JpZ2luKCksIHZhbHVlQSwgdmFsdWVCKSk7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21w
aWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgYSwgYiksIGEgLyBiKSk7Ci19Ci0KLXZvaWQgdGVzdERp
dkFyZ0ltbURvdWJsZShkb3VibGUgYSwgZG91YmxlIGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7
Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogdmFs
dWVBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBG
UFJJbmZvOjphcmd1bWVudEZQUjApOwotICAgIFZhbHVlKiB2YWx1ZUIgPSByb290LT5hcHBlbmRO
ZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpOwotICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEaXYsIE9yaWdpbigpLCB2YWx1ZUEsIHZh
bHVlQikpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHBy
b2MsIGEpLCBhIC8gYikpOwotfQotCi12b2lkIHRlc3REaXZJbW1BcmdEb3VibGUoZG91YmxlIGEs
IGRvdWJsZSBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIHZhbHVlQSA9IHJvb3QtPmFwcGVuZE5ldzxD
b25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7Ci0gICAgVmFsdWUqIHZhbHVlQiA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5m
bzo6YXJndW1lbnRGUFIwKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgRGl2LCBPcmlnaW4oKSwgdmFsdWVBLCB2YWx1ZUIpKTsKLQotICAgIENIRUNLKGlz
SWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBiKSwgYSAvIGIpKTsKLX0KLQot
dm9pZCB0ZXN0RGl2SW1tc0RvdWJsZShkb3VibGUgYSwgZG91YmxlIGIpCi17Ci0gICAgUHJvY2Vk
dXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBW
YWx1ZSogdmFsdWVBID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBhKTsKLSAgICBWYWx1ZSogdmFsdWVCID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91
YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgRGl2LCBPcmlnaW4oKSwgdmFsdWVBLCB2YWx1ZUIpKTsKLQot
ICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jKSwgYSAvIGIp
KTsKLX0KLQotdm9pZCB0ZXN0RGl2QXJnRmxvYXQoZmxvYXQgYSkKLXsKLSAgICBQcm9jZWR1cmUg
cHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVl
KiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2lu
KCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGZsb2F0VmFsdWUgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1l
bnQzMik7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
RGl2LCBPcmlnaW4oKSwgZmxvYXRWYWx1ZSwgZmxvYXRWYWx1ZSk7Ci0gICAgVmFsdWUqIHJlc3Vs
dDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCks
IHJlc3VsdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwg
T3JpZ2luKCksIHJlc3VsdDMyKTsKLQotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFu
ZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXR3aXNlX2Nh
c3Q8aW50MzJfdD4oYSAvIGEpKSk7Ci19Ci0KLXZvaWQgdGVzdERpdkFyZ3NGbG9hdChmbG9hdCBh
LCBmbG9hdCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Ci0gICAg
VmFsdWUqIGZsb2F0VmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNl
Q2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MWludDMyKTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZTIg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJn
dW1lbnQyaW50MzIpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIERpdiwgT3JpZ2luKCksIGZsb2F0VmFsdWUxLCBmbG9hdFZhbHVlMik7Ci0gICAgVmFs
dWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwg
T3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2Ms
IFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNv
bXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3
aXNlX2Nhc3Q8aW50MzJfdD4oYikpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAvIGIpKSk7Ci19
Ci0KLXZvaWQgdGVzdERpdkFyZ0ltbUZsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCi17Ci0gICAgUHJv
Y2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAg
ICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMs
IE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZhbHVlKiBmbG9hdFZh
bHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCks
IGFyZ3VtZW50MzIpOwotICAgIFZhbHVlKiBjb25zdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENv
bnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpOwotICAgIFZhbHVlKiByZXN1bHQgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERpdiwgT3JpZ2luKCksIGZsb2F0VmFsdWUsIGNv
bnN0VmFsdWUpOwotICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOwotICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7Ci0KLSAgICBD
SEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2Fz
dDxpbnQzMl90PihhKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhIC8gYikpKTsKLX0KLQotdm9p
ZCB0ZXN0RGl2SW1tQXJnRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKLXsKLSAgICBQcm9jZWR1cmUg
cHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVl
KiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2lu
KCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGZsb2F0VmFsdWUgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1l
bnQzMik7Ci0gICAgVmFsdWUqIGNvbnN0VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9h
dFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgRGl2LCBPcmlnaW4oKSwgY29uc3RWYWx1ZSwgZmxvYXRWYWx1
ZSk7Ci0gICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBC
aXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKLQotICAgIENIRUNLKGlz
SWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMy
X3Q+KGIpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgLyBiKSkpOwotfQotCi12b2lkIHRlc3RE
aXZJbW1zRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBjb25zdFZh
bHVlMSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBh
KTsKLSAgICBWYWx1ZSogY29uc3RWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYik7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgRGl2LCBPcmlnaW4oKSwgY29uc3RWYWx1ZTEsIGNvbnN0VmFsdWUy
KTsKLSAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJp
dHdpc2VDYXN0LCBPcmlnaW4oKSwgcmVzdWx0KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOwotCi0gICAgQ0hFQ0soaXNJ
ZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jKSwgYml0d2lzZV9jYXN0PGludDMy
X3Q+KGEgLyBiKSkpOwotfQotCi12b2lkIHRlc3RNb2RBcmdEb3VibGUoZG91YmxlIGEpCi17Ci0g
ICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKLSAgICBWYWx1ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Ci0gICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE1vZCwgT3JpZ2luKCksIHZhbHVlLCB2YWx1
ZSkpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2Ms
IGEpLCBmbW9kKGEsIGEpKSk7Ci19Ci0KLXZvaWQgdGVzdE1vZEFyZ3NEb3VibGUoZG91YmxlIGEs
IGRvdWJsZSBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIHZhbHVlQSA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsK
LSAgICBWYWx1ZSogdmFsdWVCID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOwotICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNb2QsIE9yaWdpbigpLCB2YWx1ZUEsIHZhbHVl
QikpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2Ms
IGEsIGIpLCBmbW9kKGEsIGIpKSk7Ci19Ci0KLXZvaWQgdGVzdE1vZEFyZ0ltbURvdWJsZShkb3Vi
bGUgYSwgZG91YmxlIGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogdmFsdWVBID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQ
UjApOwotICAgIFZhbHVlKiB2YWx1ZUIgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIGIpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
LSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBNb2QsIE9yaWdpbigpLCB2YWx1ZUEsIHZhbHVlQikpOwotCi0gICAgQ0hF
Q0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEpLCBmbW9kKGEsIGIp
KSk7Ci19Ci0KLXZvaWQgdGVzdE1vZEltbUFyZ0RvdWJsZShkb3VibGUgYSwgZG91YmxlIGIpCi17
Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKLSAgICBWYWx1ZSogdmFsdWVBID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBhKTsKLSAgICBWYWx1ZSogdmFsdWVCID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQ
UjApOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNb2Qs
IE9yaWdpbigpLCB2YWx1ZUEsIHZhbHVlQikpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29t
cGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGIpLCBmbW9kKGEsIGIpKSk7Ci19Ci0KLXZvaWQgdGVz
dE1vZEltbXNEb3VibGUoZG91YmxlIGEsIGRvdWJsZSBiKQotewotICAgIFByb2NlZHVyZSBwcm9j
OwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIHZh
bHVlQSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
YSk7Ci0gICAgVmFsdWUqIHZhbHVlQiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgYik7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAot
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIE1vZCwgT3JpZ2luKCksIHZhbHVlQSwgdmFsdWVCKSk7Ci0KLSAgICBDSEVD
Syhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYyksIGZtb2QoYSwgYikpKTsK
LX0KLQotdm9pZCB0ZXN0TW9kQXJnRmxvYXQoZmxvYXQgYSkKLXsKLSAgICBQcm9jZWR1cmUgcHJv
YzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBh
cmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCks
Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQz
Mik7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTW9k
LCBPcmlnaW4oKSwgZmxvYXRWYWx1ZSwgZmxvYXRWYWx1ZSk7Ci0gICAgVmFsdWUqIHJlc3VsdDMy
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJl
c3VsdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIHJlc3VsdDMyKTsKLQotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1
bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXR3aXNlX2Nhc3Q8
aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KGZtb2QoYSwgYSkpKSkpOwotfQotCi12b2lkIHRl
c3RNb2RBcmdzRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsK
LSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1
bWVudDFpbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigp
LAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZhbHVlKiBhcmd1bWVudDJpbnQzMiA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMSkpOwotICAgIFZhbHVlKiBmbG9hdFZhbHVlMSA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDFpbnQzMik7Ci0g
ICAgVmFsdWUqIGZsb2F0VmFsdWUyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3
aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MmludDMyKTsKLSAgICBWYWx1ZSogcmVzdWx0ID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNb2QsIE9yaWdpbigpLCBmbG9hdFZhbHVlMSwg
ZmxvYXRWYWx1ZTIpOwotICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOwotICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7Ci0KLSAg
ICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2Vf
Y2FzdDxpbnQzMl90PihhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpKSwgYml0d2lzZV9jYXN0
PGludDMyX3Q+KHN0YXRpY19jYXN0PGZsb2F0PihmbW9kKGEsIGIpKSkpKTsKLX0KLQotdm9pZCB0
ZXN0TW9kQXJnSW1tRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJv
YzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBh
cmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCks
Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQz
Mik7Ci0gICAgVmFsdWUqIGNvbnN0VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYik7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgTW9kLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZSwgY29uc3RWYWx1ZSk7
Ci0gICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3
aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKLQotICAgIENIRUNLKGlzSWRl
bnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+
KGEpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KHN0YXRpY19jYXN0PGZsb2F0PihmbW9kKGEsIGIp
KSkpKTsKLX0KLQotdm9pZCB0ZXN0TW9kSW1tQXJnRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKLXsK
LSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOwotICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUq
IGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBP
cmlnaW4oKSwgYXJndW1lbnQzMik7Ci0gICAgVmFsdWUqIGNvbnN0VmFsdWUgPSByb290LT5hcHBl
bmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7Ci0gICAgVmFsdWUqIHJl
c3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTW9kLCBPcmlnaW4oKSwgY29uc3RW
YWx1ZSwgZmxvYXRWYWx1ZSk7Ci0gICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsK
LQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0
d2lzZV9jYXN0PGludDMyX3Q+KGIpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KHN0YXRpY19jYXN0
PGZsb2F0PihmbW9kKGEsIGIpKSkpKTsKLX0KLQotdm9pZCB0ZXN0TW9kSW1tc0Zsb2F0KGZsb2F0
IGEsIGZsb2F0IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogY29uc3RWYWx1ZTEgPSByb290LT5hcHBl
bmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7Ci0gICAgVmFsdWUqIGNv
bnN0VmFsdWUyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIGIpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IE1vZCwgT3JpZ2luKCksIGNvbnN0VmFsdWUxLCBjb25zdFZhbHVlMik7Ci0gICAgVmFsdWUqIHJl
c3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2lu
KCksIHJlc3VsdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVy
biwgT3JpZ2luKCksIHJlc3VsdDMyKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVB
bmRSdW48aW50MzJfdD4ocHJvYyksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihzdGF0aWNfY2FzdDxm
bG9hdD4oZm1vZChhLCBiKSkpKSk7Ci19Ci0KLXZvaWQgdGVzdERpdkFyZ0Zsb2F0V2l0aFVzZWxl
c3NEb3VibGVDb252ZXJzaW9uKGZsb2F0IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnRJ
bnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50SW50MzIp
OwotICAgIFZhbHVlKiBhc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxv
YXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUpOwotICAgIFZhbHVlKiByZXN1bHQgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERpdiwgT3JpZ2luKCksIGFzRG91YmxlLCBhc0Rv
dWJsZSk7Ci0gICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgcmVzdWx0KTsKLSAgICBWYWx1ZSogcmVzdWx0
MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwg
ZmxvYXRSZXN1bHQpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCByZXN1bHQzMik7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxl
QW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2Vf
Y2FzdDxpbnQzMl90PihhIC8gYSkpKTsKLX0KLQotdm9pZCB0ZXN0RGl2QXJnc0Zsb2F0V2l0aFVz
ZWxlc3NEb3VibGVDb252ZXJzaW9uKGZsb2F0IGEsIGZsb2F0IGIpCi17Ci0gICAgUHJvY2VkdXJl
IHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1
ZSogYXJndW1lbnQxaW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBP
cmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogYXJndW1lbnQy
aW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpKTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZTEgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQxaW50
MzIpOwotICAgIFZhbHVlKiBmbG9hdFZhbHVlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDJpbnQzMik7Ci0gICAgVmFsdWUqIGFz
RG91YmxlMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3Jp
Z2luKCksIGZsb2F0VmFsdWUxKTsKLSAgICBWYWx1ZSogYXNEb3VibGUyID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZTIpOwot
ICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERpdiwgT3Jp
Z2luKCksIGFzRG91YmxlMSwgYXNEb3VibGUyKTsKLSAgICBWYWx1ZSogZmxvYXRSZXN1bHQgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCByZXN1
bHQpOwotICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
Qml0d2lzZUNhc3QsIE9yaWdpbigpLCBmbG9hdFJlc3VsdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKLQotICAgIENI
RUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0
PGludDMyX3Q+KGEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYikpLCBiaXR3aXNlX2Nhc3Q8aW50
MzJfdD4oYSAvIGIpKSk7Ci19Ci0KLXZvaWQgdGVzdERpdkFyZ3NGbG9hdFdpdGhFZmZlY3RmdWxE
b3VibGVDb252ZXJzaW9uKGZsb2F0IGEsIGZsb2F0IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7
Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJn
dW1lbnQxaW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4o
KSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogYXJndW1lbnQyaW50MzIg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEpKTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZTEgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQxaW50MzIpOwot
ICAgIFZhbHVlKiBmbG9hdFZhbHVlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0
d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDJpbnQzMik7Ci0gICAgVmFsdWUqIGFzRG91Ymxl
MSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCks
IGZsb2F0VmFsdWUxKTsKLSAgICBWYWx1ZSogYXNEb3VibGUyID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZTIpOwotICAgIFZh
bHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERpdiwgT3JpZ2luKCks
IGFzRG91YmxlMSwgYXNEb3VibGUyKTsKLSAgICBWYWx1ZSogZmxvYXRSZXN1bHQgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCByZXN1bHQpOwot
ICAgIFZhbHVlKiBkb3VibGVEaXZyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwotICAgIHJvb3QtPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmUsIE9yaWdpbigpLCByZXN1bHQsIGRvdWJs
ZURpdnJlc3MpOwotICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBmbG9hdFJlc3VsdCk7Ci0gICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKLQot
ICAgIGRvdWJsZSBlZmZlY3QgPSAwOwotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRS
dW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3aXNlX2Nhc3Q8
aW50MzJfdD4oYiksICZlZmZlY3QpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAvIGIpKSk7Ci0g
ICAgQ0hFQ0soaXNJZGVudGljYWwoZWZmZWN0LCBzdGF0aWNfY2FzdDxkb3VibGU+KGEpIC8gc3Rh
dGljX2Nhc3Q8ZG91YmxlPihiKSkpOwotfQotCi12b2lkIHRlc3RVRGl2QXJnc0ludDMyKHVpbnQz
Ml90IGEsIHVpbnQzMl90IGIpCi17Ci0gICAgLy8gVURpdiB3aXRoIGRlbm9taW5hdG9yID09IDAg
aXMgaW52YWxpZC4KLSAgICBpZiAoIWIpCi0gICAgICAgIHJldHVybjsKLQotICAgIFByb2NlZHVy
ZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFs
dWUqIGFyZ3VtZW50MSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdp
bigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZhbHVlKiBhcmd1bWVudDIgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjEpKTsKLSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBVRGl2LCBPcmlnaW4oKSwgYXJndW1lbnQxLCBhcmd1bWVudDIpOwotICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKLQotICAg
IENIRUNLX0VRKGNvbXBpbGVBbmRSdW48dWludDMyX3Q+KHByb2MsIGEsIGIpLCBhIC8gYik7Ci19
Ci0KLXZvaWQgdGVzdFVEaXZBcmdzSW50NjQodWludDY0X3QgYSwgdWludDY0X3QgYikKLXsKLSAg
ICAvLyBVRGl2IHdpdGggZGVub21pbmF0b3IgPT0gMCBpcyBpbnZhbGlkLgotICAgIGlmICghYikK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnQxID0gcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOwotICAgIFZhbHVlKiBhcmd1bWVudDIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgVmFs
dWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVURpdiwgT3JpZ2luKCks
IGFyZ3VtZW50MSwgYXJndW1lbnQyKTsKLSAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7Ci0KLSAgICBDSEVDS19FUShjb21waWxlQW5kUnVu
PHVpbnQ2NF90Pihwcm9jLCBhLCBiKSwgYSAvIGIpOwotfQotCi12b2lkIHRlc3RVTW9kQXJnc0lu
dDMyKHVpbnQzMl90IGEsIHVpbnQzMl90IGIpCi17Ci0gICAgLy8gVU1vZCB3aXRoIGRlbm9taW5h
dG9yID09IDAgaXMgaW52YWxpZC4KLSAgICBpZiAoIWIpCi0gICAgICAgIHJldHVybjsKLQotICAg
IFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
Ci0gICAgVmFsdWUqIGFyZ3VtZW50MSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1
bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZhbHVlKiBhcmd1
bWVudDIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpKTsKLSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBVTW9kLCBPcmlnaW4oKSwgYXJndW1lbnQxLCBhcmd1bWVudDIpOwot
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0
KTsKLQotICAgIENIRUNLX0VRKGNvbXBpbGVBbmRSdW48dWludDMyX3Q+KHByb2MsIGEsIGIpLCBh
ICUgYik7Ci19Ci0KLXZvaWQgdGVzdFVNb2RBcmdzSW50NjQodWludDY0X3QgYSwgdWludDY0X3Qg
YikKLXsKLSAgICAvLyBVTW9kIHdpdGggZGVub21pbmF0b3IgPT0gMCBpcyBpbnZhbGlkLgotICAg
IGlmICghYikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnQxID0g
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOwotICAgIFZhbHVlKiBhcmd1bWVudDIgPSByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7
Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVU1vZCwg
T3JpZ2luKCksIGFyZ3VtZW50MSwgYXJndW1lbnQyKTsKLSAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgCi0gICAgQ0hFQ0tfRVEo
Y29tcGlsZUFuZFJ1bjx1aW50NjRfdD4ocHJvYywgYSwgYiksIGEgJSBiKTsKLX0KLQotdm9pZCB0
ZXN0U3ViQXJnKGludCBhKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIHZhbHVlID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIs
IE9yaWdpbigpLCB2YWx1ZSwgdmFsdWUpKTsKLQotICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGlu
dD4ocHJvYywgYSkpOwotfQotCi12b2lkIHRlc3RTdWJBcmdzKGludCBhLCBpbnQgYikKLXsKLSAg
ICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAg
IHByb2MsIFN1YiwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50
Pihwcm9jLCBhLCBiKSA9PSBhIC0gYik7Ci19Ci0KLXZvaWQgdGVzdFN1YkFyZ0ltbShpbnQ2NF90
IGEsIGludDY0X3QgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
LSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIFN1YiwgT3JpZ2luKCksCi0gICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgYikpKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRf
dD4ocHJvYywgYSkgPT0gYSAtIGIpOwotfQotCi12b2lkIHRlc3RTdWJOZWcoaW50IGEsIGludCBi
KQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAg
ICAgICAgICAgcHJvYywgU3ViLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTmVnLCBPcmlnaW4o
KSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKSk7Ci0gICAgCi0gICAgQ0hFQ0so
Y29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEsIGIpID09IGEgLSAoLSBiKSk7Ci19Ci0KLXZvaWQg
dGVzdE5lZ1N1YihpbnQgYSwgaW50IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBOZWcsIE9yaWdpbigpLAotICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLAotICAg
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMSkpKSk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYSwgYikgPT0g
LShhIC0gYikpOwotfQotCi12b2lkIHRlc3ROZWdWYWx1ZVN1Yk9uZShpbnQgYSkKLXsKLSAgICBQ
cm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwot
ICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBWYWx1ZSogbmVnQXJn
dW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksCi0gICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSwKLSAg
ICAgICAgYXJndW1lbnQpOwotICAgIFZhbHVlKiBuZWdBcmd1bWVudE1pbnVzT25lID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLAotICAgICAgICBuZWdBcmd1bWVu
dCwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IDEpKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmln
aW4oKSwgbmVnQXJndW1lbnRNaW51c09uZSk7Ci0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+
KHByb2MsIGEpID09IC1hIC0gMSk7Ci19Ci0KLXZvaWQgdGVzdFN1YlN1YihpbnQgYSwgaW50IGIs
IGludCBjKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAotICAgICAgICAgICAgcHJvYywgU3ViLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSwKLSAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIyKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHBy
b2MsIGEsIGIsIGMpID09IChhLWIpLWMpOwotfQotCi12b2lkIHRlc3RTdWJTdWIyKGludCBhLCBp
bnQgYiwgaW50IGMpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0g
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBTdWIsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBT
dWIsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSwKLSAgICAgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMikpKSk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGlu
dD4ocHJvYywgYSwgYiwgYykgPT0gYS0oYi1jKSk7Ci19Ci0KLXZvaWQgdGVzdFN1YkFkZChpbnQg
YSwgaW50IGIsIGludCBjKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgU3ViLCBPcmlnaW4oKSwKLSAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwKLSAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSwK
LSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1
bjxpbnQ+KHByb2MsIGEsIGIsIGMpID09IChhK2IpLWMpOwotfQotCi12b2lkIHRlc3RTdWJGaXJz
dE5lZyhpbnQgYSwgaW50IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBTdWIsIE9yaWdpbigpLAotICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBOZWcsIE9yaWdpbigpLAotICAgICAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKTsK
LQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhLCBiKSA9PSAoLWEpLWIpOwot
fQotCi12b2lkIHRlc3RTdWJJbW1BcmcoaW50IGEsIGludCBiKQotewotICAgIFByb2NlZHVyZSBw
cm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAot
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgU3ViLCBP
cmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBhKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOwotCi0gICAgQ0hF
Q0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGIpID09IGEgLSBiKTsKLX0KLQotdm9pZCB0ZXN0
U3ViQXJnTWVtKGludDY0X3QgYSwgaW50NjRfdCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwot
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFkZHJl
c3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgTWVtb3J5VmFsdWUqIGxvYWQgPSByb290LT5hcHBl
bmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwgYWRkcmVzcyk7
Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBP
cmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAotICAgICAgICBsb2FkKTsKLSAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0
KTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYSwgJmIpID09IGEg
LSBiKTsKLX0KLQotdm9pZCB0ZXN0U3ViTWVtQXJnKGludDY0X3QgYSwgaW50NjRfdCBiKQotewot
ICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7Ci0gICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgTWVtb3J5VmFs
dWUqIGxvYWQgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDY0
LCBPcmlnaW4oKSwgYWRkcmVzcyk7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwKLSAgICAgICAgbG9hZCwKLSAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjEpKTsKLSAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0
b3JlLCBPcmlnaW4oKSwgcmVzdWx0LCBhZGRyZXNzKTsKLSAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKLQotICAgIGludDY0X3QgaW5wdXRPdXRwdXQgPSBh
OwotICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsICZpbnB1dE91dHB1dCwg
YikpOwotICAgIENIRUNLKGlucHV0T3V0cHV0ID09IGEgLSBiKTsKLX0KLQotdm9pZCB0ZXN0U3Vi
SW1tTWVtKGludDY0X3QgYSwgaW50NjRfdCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFkZHJlc3Mg
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgTWVtb3J5VmFsdWUqIGxvYWQgPSByb290LT5hcHBlbmRO
ZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwgYWRkcmVzcyk7Ci0g
ICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmln
aW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIGEpLAotICAgICAgICBsb2FkKTsKLSAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KHByb2MsIFN0b3JlLCBPcmlnaW4oKSwgcmVzdWx0LCBhZGRyZXNzKTsKLSAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKLQotICAgIGludDY0X3QgaW5wdXRP
dXRwdXQgPSBiOwotICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludD4ocHJvYywgJmlucHV0T3V0
cHV0KSk7Ci0gICAgQ0hFQ0soaW5wdXRPdXRwdXQgPT0gYSAtIGIpOwotfQotCi12b2lkIHRlc3RT
dWJNZW1JbW0oaW50NjRfdCBhLCBpbnQ2NF90IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0g
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYWRkcmVz
cyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBNZW1vcnlWYWx1ZSogbG9hZCA9IHJvb3QtPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50NjQsIE9yaWdpbigpLCBhZGRyZXNzKTsK
LSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9y
aWdpbigpLAotICAgICAgICBsb2FkLAotICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYikpOwotICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1
ZT4ocHJvYywgU3RvcmUsIE9yaWdpbigpLCByZXN1bHQsIGFkZHJlc3MpOwotICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByb290LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwotCi0gICAgaW50NjRfdCBpbnB1
dE91dHB1dCA9IGE7Ci0gICAgQ0hFQ0soIWNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCAmaW5wdXRP
dXRwdXQpKTsKLSAgICBDSEVDSyhpbnB1dE91dHB1dCA9PSBhIC0gYik7Ci19Ci0KLQotdm9pZCB0
ZXN0U3ViQXJnczMyKGludCBhLCBpbnQgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIFN1YiwgT3JpZ2luKCksCi0g
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAotICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBU
cnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSkpOwotCi0g
ICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEsIGIpID09IGEgLSBiKTsKLX0KLQot
dm9pZCB0ZXN0U3ViQXJnSW1tMzIoaW50IGEsIGludCBiKQotewotICAgIFByb2NlZHVyZSBwcm9j
OwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgU3ViLCBPcmln
aW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAg
ICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmln
aW4oKSwgYikpKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhKSA9PSBh
IC0gYik7Ci19Ci0KLXZvaWQgdGVzdFN1YkltbUFyZzMyKGludCBhLCBpbnQgYikKLXsKLSAgICBQ
cm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwot
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHBy
b2MsIFN1YiwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYSksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAotICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCkpKSk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4o
cHJvYywgYikgPT0gYSAtIGIpOwotfQotCi12b2lkIHRlc3RTdWJNZW1BcmczMihpbnQzMl90IGEs
IGludDMyX3QgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OwotICAgIE1lbW9yeVZhbHVlKiBsb2FkID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihw
cm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksIGFkZHJlc3MpOwotICAgIFZhbHVlKiBhcmd1bWVu
dCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSkpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIGxvYWQsIGFyZ3VtZW50KTsKLSAgICByb290LT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlLCBPcmlnaW4oKSwgcmVzdWx0LCBhZGRy
ZXNzKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmln
aW4oKSwgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsK
LQotICAgIGludDMyX3QgaW5wdXRPdXRwdXQgPSBhOwotICAgIENIRUNLKCFjb21waWxlQW5kUnVu
PGludDMyX3Q+KHByb2MsICZpbnB1dE91dHB1dCwgYikpOwotICAgIENIRUNLKGlucHV0T3V0cHV0
ID09IGEgLSBiKTsKLX0KLQotdm9pZCB0ZXN0U3ViQXJnTWVtMzIoaW50MzJfdCBhLCBpbnQzMl90
IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICBN
ZW1vcnlWYWx1ZSogbG9hZCA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9h
ZCwgSW50MzIsIE9yaWdpbigpLCBhZGRyZXNzKTsKLSAgICBWYWx1ZSogYXJndW1lbnQgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKTsKLSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBTdWIsIE9yaWdpbigpLCBhcmd1bWVudCwgbG9hZCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7Ci0KLSAgICBDSEVD
Syhjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGEsICZiKSA9PSBhIC0gYik7Ci19Ci0KLXZv
aWQgdGVzdFN1YkltbU1lbTMyKGludDMyX3QgYSwgaW50MzJfdCBiKQotewotICAgIFByb2NlZHVy
ZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFs
dWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgTWVtb3J5VmFsdWUqIGxvYWQgPSBy
b290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwg
YWRkcmVzcyk7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgU3ViLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIGEpLAotICAgICAgICBsb2FkKTsKLSAgICByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlLCBPcmlnaW4oKSwgcmVzdWx0LCBhZGRyZXNzKTsKLSAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9v
dC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKLQotICAgIGlu
dDMyX3QgaW5wdXRPdXRwdXQgPSBiOwotICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludD4ocHJv
YywgJmlucHV0T3V0cHV0KSk7Ci0gICAgQ0hFQ0soaW5wdXRPdXRwdXQgPT0gYSAtIGIpOwotfQot
Ci12b2lkIHRlc3RTdWJNZW1JbW0zMihpbnQzMl90IGEsIGludDMyX3QgYikKLXsKLSAgICBQcm9j
ZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAg
IFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIE1lbW9yeVZhbHVlKiBsb2Fk
ID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2lu
KCksIGFkZHJlc3MpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFN1YiwgT3JpZ2luKCksCi0gICAgICAgIGxvYWQsCi0gICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSk7Ci0gICAgcm9vdC0+YXBwZW5k
TmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHJlc3VsdCwgYWRkcmVzcyk7
Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCks
IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7Ci0KLSAg
ICBpbnQzMl90IGlucHV0T3V0cHV0ID0gYTsKLSAgICBDSEVDSyghY29tcGlsZUFuZFJ1bjxpbnQ+
KHByb2MsICZpbnB1dE91dHB1dCkpOwotICAgIENIRUNLKGlucHV0T3V0cHV0ID09IGEgLSBiKTsK
LX0KLQotdm9pZCB0ZXN0TmVnVmFsdWVTdWJPbmUzMihpbnQgYSkKLXsKLSAgICBQcm9jZWR1cmUg
cHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVl
KiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigp
LAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZhbHVlKiBuZWdBcmd1bWVudCA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApLAotICAgICAgICBhcmd1
bWVudCk7Ci0gICAgVmFsdWUqIG5lZ0FyZ3VtZW50TWludXNPbmUgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksCi0gICAgICAgIG5lZ0FyZ3VtZW50LAotICAgICAg
ICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpOwotICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBuZWdB
cmd1bWVudE1pbnVzT25lKTsKLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYSkg
PT0gLWEgLSAxKTsKLX0KLQotdm9pZCB0ZXN0TmVnTXVsQXJnSW1tKGludDY0X3QgYSwgaW50NjRf
dCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAg
IFZhbHVlKiBjb25zdGFudCA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9y
aWdpbigpLCBiKTsKLSAgICBWYWx1ZSogbXVsID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBNdWwsIE9yaWdpbigpLCBhcmd1bWVudCwgY29uc3RhbnQpOwotICAgIFZhbHVlKiByZXN1bHQg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE5lZywgT3JpZ2luKCksIG11bCk7Ci0gICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOwot
Ci0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhKSA9PSAtKGEgKiBiKSk7
Ci19Ci0KLXZvaWQgdGVzdFN1Yk11bE11bEFyZ3MoaW50NjRfdCBhLCBpbnQ2NF90IGIsIGludDY0
X3QgYykKLXsKLSAgICAvLyBXZSB3YW50IHRvIGNoZWNrIGV2ZXJ5IHBvc3NpYmxlIG9yZGVyaW5n
IG9mIGFyZ3VtZW50cyAodG8gcHJvcGVybHkgY2hlY2sgZXZlcnkgcGF0aCBpbiBCM1JlZHVjZVN0
cmVuZ3RoKToKLSAgICAvLyAoKGEgKiBiKSAtIChhICogYykpCi0gICAgLy8gKChhICogYikgLSAo
YyAqIGEpKQotICAgIC8vICgoYiAqIGEpIC0gKGEgKiBjKSkKLSAgICAvLyAoKGIgKiBhKSAtIChj
ICogYSkpCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyArK2kpIHsKLSAgICAgICAgUHJvY2Vk
dXJlIHByb2M7Ci0gICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0g
ICAgICAgIFZhbHVlKiBhcmdBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgICAgICBWYWx1ZSogYXJn
QiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAgVmFsdWUqIGFyZ0MgPSByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
Mik7Ci0gICAgICAgIFZhbHVlKiBtdWxBQiA9IGkgJiAyID8gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBNdWwsIE9yaWdpbigpLCBhcmdBLCBhcmdCKQotICAgICAgICAgICAgOiByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIGFyZ0IsIGFyZ0EpOwotICAgICAg
ICBWYWx1ZSogbXVsQUMgPSBpICYgMSA/IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVs
LCBPcmlnaW4oKSwgYXJnQSwgYXJnQykKLSAgICAgICAgICAgIDogcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBhcmdDLCBhcmdBKTsKLSAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIG11
bEFCLAotICAgICAgICAgICAgICAgIG11bEFDKSk7Ci0KLSAgICAgICAgQ0hFQ0tfRVEoY29tcGls
ZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhLCBiLCBjKSwgKChhICogYikgLSAoYSAqIGMpKSk7Ci0g
ICAgfQotfQotCi12b2lkIHRlc3RTdWJBcmdEb3VibGUoZG91YmxlIGEpCi17Ci0gICAgUHJvY2Vk
dXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBW
YWx1ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIHZhbHVlLCB2YWx1ZSkpOwotCi0g
ICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEpLCBhIC0g
YSkpOwotfQotCi12b2lkIHRlc3RTdWJBcmdzRG91YmxlKGRvdWJsZSBhLCBkb3VibGUgYikKLXsK
LSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOwotICAgIFZhbHVlKiB2YWx1ZUEgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Ci0gICAgVmFsdWUqIHZh
bHVlQiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
RlBSSW5mbzo6YXJndW1lbnRGUFIxKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
Ci0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgdmFsdWVBLCB2YWx1ZUIpKTsKLQotICAgIENI
RUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBhLCBiKSwgYSAtIGIp
KTsKLX0KLQotdm9pZCB0ZXN0U3ViQXJnSW1tRG91YmxlKGRvdWJsZSBhLCBkb3VibGUgYikKLXsK
LSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOwotICAgIFZhbHVlKiB2YWx1ZUEgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Ci0gICAgVmFsdWUqIHZh
bHVlQiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
Yik7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1Yiwg
T3JpZ2luKCksIHZhbHVlQSwgdmFsdWVCKSk7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21w
aWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgYSksIGEgLSBiKSk7Ci19Ci0KLXZvaWQgdGVzdFN1Yklt
bUFyZ0RvdWJsZShkb3VibGUgYSwgZG91YmxlIGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0g
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogdmFsdWVB
ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsK
LSAgICBWYWx1ZSogdmFsdWVCID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwotICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCB2YWx1ZUEsIHZhbHVl
QikpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2Ms
IGIpLCBhIC0gYikpOwotfQotCi12b2lkIHRlc3RTdWJJbW1zRG91YmxlKGRvdWJsZSBhLCBkb3Vi
bGUgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiB2YWx1ZUEgPSByb290LT5hcHBlbmROZXc8Q29uc3RE
b3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpOwotICAgIFZhbHVlKiB2YWx1ZUIgPSByb290
LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpOwotICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCB2
YWx1ZUEsIHZhbHVlQikpOwotICAgIAotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRS
dW48ZG91YmxlPihwcm9jKSwgYSAtIGIpKTsKLX0KLQotdm9pZCB0ZXN0U3ViQXJnRmxvYXQoZmxv
YXQgYSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0g
ICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdp
c2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZSwgZmxvYXRW
YWx1ZSk7Ci0gICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKLQotCi0gICAgQ0hF
Q0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8
aW50MzJfdD4oYSkpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAtIGEpKSk7Ci19Ci0KLXZvaWQg
dGVzdFN1YkFyZ3NGbG9hdChmbG9hdCBhLCBmbG9hdCBiKQotewotICAgIFByb2NlZHVyZSBwcm9j
OwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFy
Z3VtZW50MWludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2lu
KCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50MmludDMy
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIxKSk7Ci0gICAgVmFsdWUqIGZsb2F0VmFsdWUxID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MWludDMyKTsK
LSAgICBWYWx1ZSogZmxvYXRWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJp
dHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQyaW50MzIpOwotICAgIFZhbHVlKiByZXN1bHQg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIGZsb2F0VmFsdWUx
LCBmbG9hdFZhbHVlMik7Ci0gICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKLQot
ICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lz
ZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYikpLCBiaXR3aXNlX2Nh
c3Q8aW50MzJfdD4oYSAtIGIpKSk7Ci19Ci0KLXZvaWQgdGVzdFN1YkFyZ0ltbUZsb2F0KGZsb2F0
IGEsIGZsb2F0IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpOwotICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOwotICAgIFZhbHVlKiBjb25zdFZh
bHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIp
OwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1Yiwg
T3JpZ2luKCksIGZsb2F0VmFsdWUsIGNvbnN0VmFsdWUpOwotICAgIFZhbHVlKiByZXN1bHQzMiA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1
bHQpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCByZXN1bHQzMik7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGlu
dDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2VfY2FzdDxpbnQz
Ml90PihhIC0gYikpKTsKLX0KLQotdm9pZCB0ZXN0U3ViSW1tQXJnRmxvYXQoZmxvYXQgYSwgZmxv
YXQgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0g
ICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdp
c2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7Ci0gICAgVmFsdWUqIGNvbnN0VmFsdWUgPSBy
b290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7Ci0gICAg
VmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4o
KSwgY29uc3RWYWx1ZSwgZmxvYXRWYWx1ZSk7Ci0gICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7Ci0g
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJl
c3VsdDMyKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4o
cHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEg
LSBiKSkpOwotfQotCi12b2lkIHRlc3RTdWJJbW1zRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKLXsK
LSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOwotICAgIFZhbHVlKiBjb25zdFZhbHVlMSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdEZsb2F0
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKLSAgICBWYWx1ZSogY29uc3RWYWx1ZTIgPSByb290
LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7Ci0gICAgVmFs
dWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwg
Y29uc3RWYWx1ZTEsIGNvbnN0VmFsdWUyKTsKLSAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgcmVzdWx0KTsKLSAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVz
dWx0MzIpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihw
cm9jKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgLSBiKSkpOwotfQotCi12b2lkIHRlc3RTdWJB
cmdGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbihmbG9hdCBhKQotewotICAgIFByb2Nl
ZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAg
VmFsdWUqIGFyZ3VtZW50SW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5j
LCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogZmxvYXRW
YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigp
LCBhcmd1bWVudEludDMyKTsKLSAgICBWYWx1ZSogYXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlKTsKLSAgICBW
YWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigp
LCBhc0RvdWJsZSwgYXNEb3VibGUpOwotICAgIFZhbHVlKiBmbG9hdFJlc3VsdCA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIHJlc3VsdCk7Ci0g
ICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNl
Q2FzdCwgT3JpZ2luKCksIGZsb2F0UmVzdWx0KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOwotCi0gICAgQ0hFQ0soaXNJ
ZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJf
dD4oYSkpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAtIGEpKSk7Ci19Ci0KLXZvaWQgdGVzdFN1
YkFyZ3NGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbihmbG9hdCBhLCBmbG9hdCBiKQot
ewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAg
VmFsdWUqIGFyZ3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVu
YywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Ci0gICAgVmFsdWUqIGZsb2F0
VmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2lu
KCksIGFyZ3VtZW50MWludDMyKTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZTIgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQyaW50MzIp
OwotICAgIFZhbHVlKiBhc0RvdWJsZTEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZs
b2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlMSk7Ci0gICAgVmFsdWUqIGFzRG91Ymxl
MiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCks
IGZsb2F0VmFsdWUyKTsKLSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBTdWIsIE9yaWdpbigpLCBhc0RvdWJsZTEsIGFzRG91YmxlMik7Ci0gICAgVmFsdWUq
IGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0
LCBPcmlnaW4oKSwgcmVzdWx0KTsKLSAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1bHQpOwotICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1
bHQzMik7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHBy
b2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpKSwg
Yml0d2lzZV9jYXN0PGludDMyX3Q+KGEgLSBiKSkpOwotfQotCi12b2lkIHRlc3RTdWJBcmdzRmxv
YXRXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lvbihmbG9hdCBhLCBmbG9hdCBiKQotewotICAg
IFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
Ci0gICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUq
IGFyZ3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3Jp
Z2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Ci0gICAgVmFsdWUqIGZsb2F0VmFsdWUx
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFy
Z3VtZW50MWludDMyKTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQyaW50MzIpOwotICAg
IFZhbHVlKiBhc0RvdWJsZTEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9E
b3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlMSk7Ci0gICAgVmFsdWUqIGFzRG91YmxlMiA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0
VmFsdWUyKTsKLSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBTdWIsIE9yaWdpbigpLCBhc0RvdWJsZTEsIGFzRG91YmxlMik7Ci0gICAgVmFsdWUqIGZsb2F0
UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmln
aW4oKSwgcmVzdWx0KTsKLSAgICBWYWx1ZSogZG91YmxlU3VicmVzcyA9IHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIy
KTsKLSAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlLCBPcmlnaW4o
KSwgcmVzdWx0LCBkb3VibGVTdWJyZXNzKTsKLSAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1bHQp
OwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LCByZXN1bHQzMik7Ci0KLSAgICBkb3VibGUgZWZmZWN0ID0gMDsKLSAgICBDSEVDSyhpc0lkZW50
aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90Pihh
KSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpLCAmZWZmZWN0KSwgYml0d2lzZV9jYXN0PGludDMy
X3Q+KGEgLSBiKSkpOwotICAgIENIRUNLKGlzSWRlbnRpY2FsKGVmZmVjdCwgc3RhdGljX2Nhc3Q8
ZG91YmxlPihhKSAtIHN0YXRpY19jYXN0PGRvdWJsZT4oYikpKTsKLX0KLQotdm9pZCB0ZXN0VGVy
bmFyeVN1Ykluc3RydWN0aW9uU2VsZWN0aW9uKEIzOjpPcGNvZGUgdmFsdWVNb2RpZmllciwgVHlw
ZSB2YWx1ZVR5cGUsIEFpcjo6T3Bjb2RlIGV4cGVjdGVkT3Bjb2RlKQotewotICAgIFByb2NlZHVy
ZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBW
YWx1ZSogbGVmdCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBWYWx1ZSogcmlnaHQgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSk7Ci0KLSAgICBpZiAodmFsdWVNb2RpZmllciA9PSBUcnVuYykgewotICAgICAgICBs
ZWZ0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCB2YWx1ZU1vZGlmaWVyLCB2YWx1ZVR5
cGUsIE9yaWdpbigpLCBsZWZ0KTsKLSAgICAgICAgcmlnaHQgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIHZhbHVlTW9kaWZpZXIsIHZhbHVlVHlwZSwgT3JpZ2luKCksIHJpZ2h0KTsKLSAg
ICB9Ci0KLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3Vi
LCBPcmlnaW4oKSwgbGVmdCwgcmlnaHQpKTsKLQotICAgIGxvd2VyVG9BaXJGb3JUZXN0aW5nKHBy
b2MpOwotCi0gICAgYXV0byBibG9jayA9IHByb2MuY29kZSgpWzBdOwotICAgIHVuc2lnbmVkIG51
bWJlck9mU3ViSW5zdHJ1Y3Rpb25zID0gMDsKLSAgICBmb3IgKGF1dG8gaW5zdHJ1Y3Rpb24gOiAq
YmxvY2spIHsKLSAgICAgICAgaWYgKGluc3RydWN0aW9uLmtpbmQub3Bjb2RlID09IGV4cGVjdGVk
T3Bjb2RlKSB7Ci0gICAgICAgICAgICBDSEVDS19FUShpbnN0cnVjdGlvbi5hcmdzLnNpemUoKSwg
M3VsKTsKLSAgICAgICAgICAgIENIRUNLX0VRKGluc3RydWN0aW9uLmFyZ3NbMF0ua2luZCgpLCBB
aXI6OkFyZzo6VG1wKTsKLSAgICAgICAgICAgIENIRUNLX0VRKGluc3RydWN0aW9uLmFyZ3NbMV0u
a2luZCgpLCBBaXI6OkFyZzo6VG1wKTsKLSAgICAgICAgICAgIENIRUNLX0VRKGluc3RydWN0aW9u
LmFyZ3NbMl0ua2luZCgpLCBBaXI6OkFyZzo6VG1wKTsKLSAgICAgICAgICAgIG51bWJlck9mU3Vi
SW5zdHJ1Y3Rpb25zKys7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgQ0hFQ0tfRVEobnVtYmVyT2ZT
dWJJbnN0cnVjdGlvbnMsIDF1bCk7Ci19Ci0KLXZvaWQgdGVzdE5lZ0RvdWJsZShkb3VibGUgYSkK
LXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAg
ICAgICAgIHByb2MsIE5lZywgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCkp
KTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBh
KSwgLWEpKTsKLX0KLQotdm9pZCB0ZXN0TmVnRmxvYXQoZmxvYXQgYSkKLXsKLSAgICBQcm9jZWR1
cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZh
bHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3Jp
Z2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGZsb2F0VmFsdWUg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJn
dW1lbnQzMik7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IE5lZywgT3JpZ2luKCksIGZsb2F0VmFsdWUpKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNv
bXBpbGVBbmRSdW48ZmxvYXQ+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIC1hKSk7
Ci19Ci0KLXZvaWQgdGVzdE5lZ0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uKGZsb2F0
IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnRJbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwot
ICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3
aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50SW50MzIpOwotICAgIFZhbHVlKiBhc0RvdWJsZSA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZs
b2F0VmFsdWUpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIE5lZywgT3JpZ2luKCksIGFzRG91YmxlKTsKLSAgICBWYWx1ZSogZmxvYXRSZXN1bHQgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCByZXN1
bHQpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCBmbG9hdFJlc3VsdCk7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVu
PGZsb2F0Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCAtYSkpOwotfQotCi12b2lk
IHRlc3RCaXRBbmRBcmdzKGludDY0X3QgYSwgaW50NjRfdCBiKQotewotICAgIFByb2NlZHVyZSBw
cm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAot
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0QW5k
LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKLSAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIxKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9j
LCBhLCBiKSA9PSAoYSAmIGIpKTsKLX0KLQotdm9pZCB0ZXN0Qml0QW5kU2FtZUFyZyhpbnQ2NF90
IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAg
cm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywg
Qml0QW5kLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIGFyZ3VtZW50LAotICAgICAgICAgICAgYXJn
dW1lbnQpKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYSkgPT0g
YSk7Ci19Ci0KLXZvaWQgdGVzdEJpdEFuZE5vdE5vdChpbnQ2NF90IGEsIGludDY0X3QgYikKLXsK
LSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOwotICAgIFZhbHVlKiBhcmdBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIFZhbHVlKiBhcmdC
ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjEpOwotICAgIFZhbHVlKiBub3RBID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLCBhcmdBLCByb290LT5hcHBlbmROZXc8Q29uc3Q2
NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTEpKTsKLSAgICBWYWx1ZSogbm90QiA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0WG9yLCBPcmlnaW4oKSwgYXJnQiwgcm9vdC0+YXBwZW5k
TmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xKSk7Ci0gICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0QW5kLCBPcmln
aW4oKSwKLSAgICAgICAgICAgIG5vdEEsCi0gICAgICAgICAgICBub3RCKSk7Ci0KLSAgICBDSEVD
S19FUShjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEsIGIpLCAofmEgJiB+YikpOwotfQot
Ci12b2lkIHRlc3RCaXRBbmROb3RJbW0oaW50NjRfdCBhLCBpbnQ2NF90IGIpCi17Ci0gICAgUHJv
Y2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAg
ICBWYWx1ZSogYXJnQSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBWYWx1ZSogbm90QSA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0WG9yLCBPcmlnaW4oKSwgYXJnQSwgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xKSk7Ci0gICAgVmFsdWUqIGNz
dEIgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7Ci0g
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJv
YywgQml0QW5kLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIG5vdEEsCi0gICAgICAgICAgICBjc3RC
KSk7Ci0KLSAgICBDSEVDS19FUShjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEsIGIpLCAo
fmEgJiBiKSk7Ci19Ci0KLXZvaWQgdGVzdEJpdEFuZEltbXMoaW50NjRfdCBhLCBpbnQ2NF90IGIp
Ci17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2Ms
IFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAg
ICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpLAotICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpKSk7Ci0KLSAgICBDSEVD
Syhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MpID09IChhICYgYikpOwotfQotCi12b2lkIHRl
c3RCaXRBbmRBcmdJbW0oaW50NjRfdCBhLCBpbnQ2NF90IGIpCi17Ci0gICAgUHJvY2VkdXJlIHBy
b2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0g
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBCaXRBbmQs
IE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAotICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpKSk7Ci0KLSAgICBD
SEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEpID09IChhICYgYikpOwotfQotCi12
b2lkIHRlc3RCaXRBbmRJbW1BcmcoaW50NjRfdCBhLCBpbnQ2NF90IGIpCi17Ci0gICAgUHJvY2Vk
dXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBC
aXRBbmQsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIGEpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSk7Ci0K
LSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGIpID09IChhICYgYikpOwot
fQotCi12b2lkIHRlc3RCaXRBbmRCaXRBbmRBcmdJbW1JbW0oaW50NjRfdCBhLCBpbnQ2NF90IGIs
IGludDY0X3QgYykKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBpbm5lckJpdEFuZCA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIEJpdEFuZCwgT3JpZ2luKCksCi0gICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIGIpKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCi0gICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAotICAgICAgICAgICAgaW5u
ZXJCaXRBbmQsCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgYykpKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJv
YywgYSkgPT0gKChhICYgYikgJiBjKSk7Ci19Ci0KLXZvaWQgdGVzdEJpdEFuZEltbUJpdEFuZEFy
Z0ltbShpbnQ2NF90IGEsIGludDY0X3QgYiwgaW50NjRfdCBjKQotewotICAgIFByb2NlZHVyZSBw
cm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUq
IGlubmVyQml0QW5kID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgQml0
QW5kLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAotICAgICAgICByb290LT5h
cHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYykpOwotICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEJpdEFuZCwg
T3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgYSksCi0gICAgICAgICAgICBpbm5lckJpdEFuZCkpOwotCi0gICAgQ0hFQ0so
Y29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBiKSA9PSAoYSAmIChiICYgYykpKTsKLX0KLQot
dm9pZCB0ZXN0Qml0QW5kQXJnczMyKGludCBhLCBpbnQgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJv
YzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEJpdEFuZCwg
T3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAg
ICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCkpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAg
ICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjEpKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEsIGIpID09IChh
ICYgYikpOwotfQotCi12b2lkIHRlc3RCaXRBbmRTYW1lQXJnMzIoaW50IGEpCi17Ci0gICAgUHJv
Y2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAg
ICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBP
cmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICByb290LT5hcHBlbmROZXdD
b250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigp
LAotICAgICAgICAgICAgYXJndW1lbnQsCi0gICAgICAgICAgICBhcmd1bWVudCkpOwotCi0gICAg
Q0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEpID09IGEpOwotfQotCi12b2lkIHRlc3RC
aXRBbmRJbW1zMzIoaW50IGEsIGludCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwK
LSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBhKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBiKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpID09IChh
ICYgYikpOwotfQotCi12b2lkIHRlc3RCaXRBbmRBcmdJbW0zMihpbnQgYSwgaW50IGIpCi17Ci0g
ICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAg
ICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1
bjxpbnQ+KHByb2MsIGEpID09IChhICYgYikpOwotfQotCi12b2lkIHRlc3RCaXRBbmRJbW1Bcmcz
MihpbnQgYSwgaW50IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
Ci0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAotICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpLAotICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBU
cnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSkpOwotCi0g
ICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGIpID09IChhICYgYikpOwotfQotCi12
b2lkIHRlc3RCaXRBbmRCaXRBbmRBcmdJbW1JbW0zMihpbnQgYSwgaW50IGIsIGludCBjKQotewot
ICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7Ci0gICAgVmFsdWUqIGlubmVyQml0QW5kID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAg
ICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKLSAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKSksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBiKSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAg
ICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAotICAgICAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIGlu
bmVyQml0QW5kLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIGMpKSk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywg
YSkgPT0gKChhICYgYikgJiBjKSk7Ci19Ci0KLXZvaWQgdGVzdEJpdEFuZEltbUJpdEFuZEFyZ0lt
bTMyKGludCBhLCBpbnQgYiwgaW50IGMpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogaW5uZXJCaXRBbmQg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigp
LAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgVHJ1
bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKLSAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGMpKTsKLSAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBCaXRB
bmQsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIGEpLAotICAgICAgICAgICAgaW5uZXJCaXRBbmQpKTsKLQotICAgIENI
RUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBiKSA9PSAoYSAmIChiICYgYykpKTsKLX0KLQot
dm9pZCB0ZXN0Qml0QW5kV2l0aE1hc2tSZXR1cm5zQm9vbGVhbnMoaW50NjRfdCBhLCBpbnQ2NF90
IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJnMCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBWYWx1
ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICBWYWx1ZSogZXF1YWwgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEVxdWFsLCBPcmlnaW4oKSwgYXJnMCwgYXJnMSk7Ci0gICAgVmFs
dWUqIG1hc2tlZEVxdWFsID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9y
aWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmln
aW4oKSwgMHg1KSwKLSAgICAgICAgZXF1YWwpOwotICAgIFZhbHVlKiBpbnZlcnRlZCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0WG9yLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDB4MSksCi0gICAgICAgIG1h
c2tlZEVxdWFsKTsKLSAgICBWYWx1ZSogc2VsZWN0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBTZWxlY3QsIE9yaWdpbigpLCBpbnZlcnRlZCwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKSwKLSAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC01KSk7Ci0KLSAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgc2VsZWN0KTsKLQotICAg
IGludDY0X3QgZXhwZWN0ZWQgPSAoYSA9PSBiKSA/IC01IDogNDI7Ci0gICAgQ0hFQ0soY29tcGls
ZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhLCBiKSA9PSBleHBlY3RlZCk7Ci19Ci0KLWRvdWJsZSBi
aXRBbmREb3VibGUoZG91YmxlIGEsIGRvdWJsZSBiKQotewotICAgIHJldHVybiBiaXR3aXNlX2Nh
c3Q8ZG91YmxlPihiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+KGEpICYgYml0d2lzZV9jYXN0PHVpbnQ2
NF90PihiKSk7Ci19Ci0KLXZvaWQgdGVzdEJpdEFuZEFyZ0RvdWJsZShkb3VibGUgYSkKLXsKLSAg
ICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OwotICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKLSAgICBWYWx1ZSogcmVz
dWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBhcmd1
bWVudCwgYXJndW1lbnQpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGls
ZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEpLCBiaXRBbmREb3VibGUoYSwgYSkpKTsKLX0KLQotdm9p
ZCB0ZXN0Qml0QW5kQXJnc0RvdWJsZShkb3VibGUgYSwgZG91YmxlIGIpCi17Ci0gICAgUHJvY2Vk
dXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBW
YWx1ZSogYXJndW1lbnRBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwotICAgIFZhbHVlKiBhcmd1bWVudEIg
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUklu
Zm86OmFyZ3VtZW50RlBSMSk7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwgYXJndW1lbnRBLCBhcmd1bWVudEIpOwotICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1
bHQpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2Ms
IGEsIGIpLCBiaXRBbmREb3VibGUoYSwgYikpKTsKLX0KLQotdm9pZCB0ZXN0Qml0QW5kQXJnSW1t
RG91YmxlKGRvdWJsZSBhLCBkb3VibGUgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudEEg
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUklu
Zm86OmFyZ3VtZW50RlBSMCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50QiA9IHJvb3QtPmFwcGVuZE5l
dzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7Ci0gICAgVmFsdWUqIHJlc3Vs
dCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwgYXJndW1l
bnRBLCBhcmd1bWVudEIpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGls
ZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEsIGIpLCBiaXRBbmREb3VibGUoYSwgYikpKTsKLX0KLQot
dm9pZCB0ZXN0Qml0QW5kSW1tc0RvdWJsZShkb3VibGUgYSwgZG91YmxlIGIpCi17Ci0gICAgUHJv
Y2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAg
ICBWYWx1ZSogYXJndW1lbnRBID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBhKTsKLSAgICBWYWx1ZSogYXJndW1lbnRCID0gcm9vdC0+YXBwZW5kTmV3
PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKTsKLSAgICBWYWx1ZSogcmVzdWx0
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBhcmd1bWVu
dEEsIGFyZ3VtZW50Qik7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJl
dHVybiwgT3JpZ2luKCksIHJlc3VsdCk7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxl
QW5kUnVuPGRvdWJsZT4ocHJvYyksIGJpdEFuZERvdWJsZShhLCBiKSkpOwotfQotCi1mbG9hdCBi
aXRBbmRGbG9hdChmbG9hdCBhLCBmbG9hdCBiKQotewotICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8
ZmxvYXQ+KGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oYSkgJiBiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+
KGIpKTsKLX0KLQotdm9pZCB0ZXN0Qml0QW5kQXJnRmxvYXQoZmxvYXQgYSkKLXsKLSAgICBQcm9j
ZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAg
IFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNh
c3QsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5j
LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOwotICAgIFZhbHVlKiBy
ZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCksIGFy
Z3VtZW50LCBhcmd1bWVudCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2Ms
IFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21w
aWxlQW5kUnVuPGZsb2F0Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXRBbmRG
bG9hdChhLCBhKSkpOwotfQotCi12b2lkIHRlc3RCaXRBbmRBcmdzRmxvYXQoZmxvYXQgYSwgZmxv
YXQgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudEEgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpKTsKLSAgICBWYWx1ZSogYXJndW1lbnRCID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSk7Ci0g
ICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBP
cmlnaW4oKSwgYXJndW1lbnRBLCBhcmd1bWVudEIpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOwotCi0gICAgQ0hFQ0soaXNJ
ZGVudGljYWwoY29tcGlsZUFuZFJ1bjxmbG9hdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+
KGEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYikpLCBiaXRBbmRGbG9hdChhLCBiKSkpOwotfQot
Ci12b2lkIHRlc3RCaXRBbmRBcmdJbW1GbG9hdChmbG9hdCBhLCBmbG9hdCBiKQotewotICAgIFBy
b2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0g
ICAgVmFsdWUqIGFyZ3VtZW50QSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lz
ZUNhc3QsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRy
dW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOwotICAgIFZhbHVl
KiBhcmd1bWVudEIgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmln
aW4oKSwgYik7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQml0QW5kLCBPcmlnaW4oKSwgYXJndW1lbnRBLCBhcmd1bWVudEIpOwotICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOwotCi0g
ICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxmbG9hdD4ocHJvYywgYml0d2lzZV9j
YXN0PGludDMyX3Q+KGEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYikpLCBiaXRBbmRGbG9hdChh
LCBiKSkpOwotfQotCi12b2lkIHRlc3RCaXRBbmRJbW1zRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikK
LXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudEEgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9h
dFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50QiA9IHJvb3Qt
PmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKTsKLSAgICBWYWx1
ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigp
LCBhcmd1bWVudEEsIGFyZ3VtZW50Qik7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNh
bChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jKSwgYml0QW5kRmxvYXQoYSwgYikpKTsKLX0KLQot
dm9pZCB0ZXN0Qml0QW5kQXJnc0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uKGZsb2F0
IGEsIGZsb2F0IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnRBID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKSk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50QiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIx
KSkpOwotICAgIFZhbHVlKiBhcmd1bWVudEFhc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGFyZ3VtZW50QSk7Ci0gICAgVmFsdWUq
IGFyZ3VtZW50QmFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRv
RG91YmxlLCBPcmlnaW4oKSwgYXJndW1lbnRCKTsKLSAgICBWYWx1ZSogZG91YmxlUmVzdWx0ID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBhcmd1bWVudEFh
c0RvdWJsZSwgYXJndW1lbnRCYXNEb3VibGUpOwotICAgIFZhbHVlKiBmbG9hdFJlc3VsdCA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIGRvdWJs
ZVJlc3VsdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwg
T3JpZ2luKCksIGZsb2F0UmVzdWx0KTsKLQotICAgIGRvdWJsZSBkb3VibGVBID0gYTsKLSAgICBk
b3VibGUgZG91YmxlQiA9IGI7Ci0gICAgZmxvYXQgZXhwZWN0ZWQgPSBzdGF0aWNfY2FzdDxmbG9h
dD4oYml0QW5kRG91YmxlKGRvdWJsZUEsIGRvdWJsZUIpKTsKLSAgICBDSEVDSyhpc0lkZW50aWNh
bChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSksIGJp
dHdpc2VfY2FzdDxpbnQzMl90PihiKSksIGV4cGVjdGVkKSk7Ci19Ci0KLXZvaWQgdGVzdEJpdE9y
QXJncyhpbnQ2NF90IGEsIGludDY0X3QgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEJpdE9yLCBPcmlnaW4oKSwK
LSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIx
KSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhLCBiKSA9PSAo
YSB8IGIpKTsKLX0KLQotdm9pZCB0ZXN0Qml0T3JTYW1lQXJnKGludDY0X3QgYSkKLXsKLSAgICBQ
cm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwot
ICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBCaXRPciwgT3JpZ2lu
KCksCi0gICAgICAgICAgICBhcmd1bWVudCwKLSAgICAgICAgICAgIGFyZ3VtZW50KSk7Ci0KLSAg
ICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEpID09IGEpOwotfQotCi12b2lk
IHRlc3RCaXRPckFuZEFuZEFyZ3MoaW50NjRfdCBhLCBpbnQ2NF90IGIsIGludDY0X3QgYykKLXsK
LSAgICAvLyBXZSB3YW50IHRvIGNoZWNrIGV2ZXJ5IHBvc3NpYmxlIG9yZGVyaW5nIG9mIGFyZ3Vt
ZW50cyAodG8gcHJvcGVybHkgY2hlY2sgZXZlcnkgcGF0aCBpbiBCM1JlZHVjZVN0cmVuZ3RoKToK
LSAgICAvLyAoKGEgJiBiKSB8IChhICYgYykpCi0gICAgLy8gKChhICYgYikgfCAoYyAmIGEpKQot
ICAgIC8vICgoYiAmIGEpIHwgKGEgJiBjKSkKLSAgICAvLyAoKGIgJiBhKSB8IChjICYgYSkpCi0g
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyArK2kpIHsKLSAgICAgICAgUHJvY2VkdXJlIHByb2M7
Ci0gICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgIFZh
bHVlKiBhcmdBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgICAgICBWYWx1ZSogYXJnQiA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKTsKLSAgICAgICAgVmFsdWUqIGFyZ0MgPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7Ci0gICAg
ICAgIFZhbHVlKiBhbmRBQiA9IGkgJiAyID8gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBC
aXRBbmQsIE9yaWdpbigpLCBhcmdBLCBhcmdCKQotICAgICAgICAgICAgOiByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCksIGFyZ0IsIGFyZ0EpOwotICAgICAgICBW
YWx1ZSogYW5kQUMgPSBpICYgMSA/IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5k
LCBPcmlnaW4oKSwgYXJnQSwgYXJnQykKLSAgICAgICAgICAgIDogcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBhcmdDLCBhcmdBKTsKLSAgICAgICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAg
cHJvYywgQml0T3IsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIGFuZEFCLAotICAgICAgICAg
ICAgICAgIGFuZEFDKSk7Ci0KLSAgICAgICAgQ0hFQ0tfRVEoY29tcGlsZUFuZFJ1bjxpbnQ2NF90
Pihwcm9jLCBhLCBiLCBjKSwgKChhICYgYikgfCAoYSAmIGMpKSk7Ci0gICAgfQotfQotCi12b2lk
IHRlc3RCaXRPckFuZFNhbWVBcmdzKGludDY0X3QgYSwgaW50NjRfdCBiKQotewotICAgIC8vIFdl
IHdhbnQgdG8gY2hlY2sgZXZlcnkgcG9zc2libGUgb3JkZXJpbmcgb2YgYXJndW1lbnRzICh0byBw
cm9wZXJseSBjaGVjayBldmVyeSBwYXRoIGluIEIzUmVkdWNlU3RyZW5ndGgpOgotICAgIC8vICgo
YSAmIGIpIHwgYSkKLSAgICAvLyAoKGIgJiBhKSB8IGEpCi0gICAgLy8gKGEgfCAoYSAmIGIpKQot
ICAgIC8vIChhIHwgKGIgJiBhKSkKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7ICsraSkgewot
ICAgICAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICAgICAgVmFsdWUqIGFyZ0EgPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAg
ICAgIFZhbHVlKiBhcmdCID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAgICBWYWx1ZSogYW5kQUIg
PSBpICYgMSA/IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwg
YXJnQSwgYXJnQikKLSAgICAgICAgICAgIDogcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBC
aXRBbmQsIE9yaWdpbigpLCBhcmdCLCBhcmdBKTsKLSAgICAgICAgVmFsdWUqIHJlc3VsdCA9IGkg
JiAyID8gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRPciwgT3JpZ2luKCksIGFuZEFC
LCBhcmdBKQotICAgICAgICAgICAgOiByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdE9y
LCBPcmlnaW4oKSwgYXJnQSwgYW5kQUIpOwotICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKLQotICAgICAgICBDSEVDS19F
UShjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEsIGIpLCAoKGEgJiBiKSB8IGEpKTsKLSAg
ICB9Ci19Ci0KLXZvaWQgdGVzdEJpdE9yTm90Tm90KGludDY0X3QgYSwgaW50NjRfdCBiKQotewot
ICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7Ci0gICAgVmFsdWUqIGFyZ0EgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgVmFsdWUqIGFyZ0Ig
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgVmFsdWUqIG5vdEEgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEJpdFhvciwgT3JpZ2luKCksIGFyZ0EsIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0
VmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMSkpOwotICAgIFZhbHVlKiBub3RCID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLCBhcmdCLCByb290LT5hcHBlbmRO
ZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTEpKTsKLSAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBCaXRPciwgT3JpZ2lu
KCksCi0gICAgICAgICAgICBub3RBLAotICAgICAgICAgICAgbm90QikpOwotCi0gICAgQ0hFQ0tf
RVEoY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhLCBiKSwgKH5hIHwgfmIpKTsKLX0KLQot
dm9pZCB0ZXN0Qml0T3JOb3RJbW0oaW50NjRfdCBhLCBpbnQ2NF90IGIpCi17Ci0gICAgUHJvY2Vk
dXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBW
YWx1ZSogYXJnQSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBWYWx1ZSogbm90QSA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0WG9yLCBPcmlnaW4oKSwgYXJnQSwgcm9vdC0+YXBwZW5k
TmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xKSk7Ci0gICAgVmFsdWUqIGNzdEIg
PSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7Ci0gICAg
cm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywg
Qml0T3IsIE9yaWdpbigpLAotICAgICAgICAgICAgbm90QSwKLSAgICAgICAgICAgIGNzdEIpKTsK
LSAgICAKLSAgICBDSEVDS19FUShjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEsIGIpLCAo
fmEgfCBiKSk7Ci19Ci0KLXZvaWQgdGVzdEJpdE9ySW1tcyhpbnQ2NF90IGEsIGludDY0X3QgYikK
LXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAg
ICAgICAgIHByb2MsIEJpdE9yLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKSwKLSAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSkpOwotCi0gICAgQ0hFQ0so
Y29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jKSA9PSAoYSB8IGIpKTsKLX0KLQotdm9pZCB0ZXN0
Qml0T3JBcmdJbW0oaW50NjRfdCBhLCBpbnQ2NF90IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7
Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBCaXRPciwgT3Jp
Z2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgICAgICByb290LT5h
cHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYikpKTsKLQotICAgIENIRUNL
KGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYSkgPT0gKGEgfCBiKSk7Ci19Ci0KLXZvaWQg
dGVzdEJpdE9ySW1tQXJnKGludDY0X3QgYSwgaW50NjRfdCBiKQotewotICAgIFByb2NlZHVyZSBw
cm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAot
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0T3Is
IE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIGEpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSk7Ci0KLSAgICBD
SEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGIpID09IChhIHwgYikpOwotfQotCi12
b2lkIHRlc3RCaXRPckJpdE9yQXJnSW1tSW1tKGludDY0X3QgYSwgaW50NjRfdCBiLCBpbnQ2NF90
IGMpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICBWYWx1ZSogaW5uZXJCaXRPciA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCi0gICAgICAgIHByb2MsIEJpdE9yLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApLAotICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgYikpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAg
ICAgICAgIHByb2MsIEJpdE9yLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIGlubmVyQml0T3IsCi0g
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
YykpKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYSkgPT0gKChh
IHwgYikgfCBjKSk7Ci19Ci0KLXZvaWQgdGVzdEJpdE9ySW1tQml0T3JBcmdJbW0oaW50NjRfdCBh
LCBpbnQ2NF90IGIsIGludDY0X3QgYykKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBpbm5lckJpdE9yID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgQml0T3IsIE9yaWdpbigpLAot
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBjKSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0T3IsIE9yaWdpbigpLAotICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpLAot
ICAgICAgICAgICAgaW5uZXJCaXRPcikpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2
NF90Pihwcm9jLCBiKSA9PSAoYSB8IChiIHwgYykpKTsKLX0KLQotdm9pZCB0ZXN0Qml0T3JBcmdz
MzIoaW50IGEsIGludCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0T3IsIE9yaWdpbigpLAotICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywg
T3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKLSAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9y
aWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpKTsKLQotICAgIENIRUNL
KGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhLCBiKSA9PSAoYSB8IGIpKTsKLX0KLQotdm9pZCB0
ZXN0Qml0T3JTYW1lQXJnMzIoaW50IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnQgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0g
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEJpdE9yLCBPcmlnaW4oKSwKLSAgICAg
ICAgICAgIGFyZ3VtZW50LAotICAgICAgICAgICAgYXJndW1lbnQpKTsKLQotICAgIENIRUNLKGNv
bXBpbGVBbmRSdW48aW50Pihwcm9jLCBhKSA9PSBhKTsKLX0KLQotdm9pZCB0ZXN0Qml0T3JJbW1z
MzIoaW50IGEsIGludCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0T3IsIE9yaWdpbigpLAotICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpLAotICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIp
KSk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYykgPT0gKGEgfCBiKSk7Ci19
Ci0KLXZvaWQgdGVzdEJpdE9yQXJnSW1tMzIoaW50IGEsIGludCBiKQotewotICAgIFByb2NlZHVy
ZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0
T3IsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAg
ICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBiKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2Ms
IGEpID09IChhIHwgYikpOwotfQotCi12b2lkIHRlc3RCaXRPckltbUFyZzMyKGludCBhLCBpbnQg
YikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAg
ICAgICAgICAgIHByb2MsIEJpdE9yLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKSwKLSAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigp
LAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpKTsKLQotICAgIENIRUNLKGNvbXBp
bGVBbmRSdW48aW50Pihwcm9jLCBiKSA9PSAoYSB8IGIpKTsKLX0KLQotdm9pZCB0ZXN0Qml0T3JC
aXRPckFyZ0ltbUltbTMyKGludCBhLCBpbnQgYiwgaW50IGMpCi17Ci0gICAgUHJvY2VkdXJlIHBy
b2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSog
aW5uZXJCaXRPciA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIEJpdE9y
LCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAg
IHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCi0g
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSk7
Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAg
cHJvYywgQml0T3IsIE9yaWdpbigpLAotICAgICAgICAgICAgaW5uZXJCaXRPciwKLSAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBjKSkpOwot
Ci0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEpID09ICgoYSB8IGIpIHwgYykp
OwotfQotCi12b2lkIHRlc3RCaXRPckltbUJpdE9yQXJnSW1tMzIoaW50IGEsIGludCBiLCBpbnQg
YykKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOwotICAgIFZhbHVlKiBpbm5lckJpdE9yID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKLSAgICAgICAgcHJvYywgQml0T3IsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIGMpKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
Ci0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBCaXRPciwgT3JpZ2luKCksCi0gICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSksCi0gICAg
ICAgICAgICBpbm5lckJpdE9yKSk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJv
YywgYikgPT0gKGEgfCAoYiB8IGMpKSk7Ci19Ci0KLWRvdWJsZSBiaXRPckRvdWJsZShkb3VibGUg
YSwgZG91YmxlIGIpCi17Ci0gICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxkb3VibGU+KGJpdHdpc2Vf
Y2FzdDx1aW50NjRfdD4oYSkgfCBiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+KGIpKTsKLX0KLQotdm9p
ZCB0ZXN0Qml0T3JBcmdEb3VibGUoZG91YmxlIGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0g
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1l
bnQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQ
UkluZm86OmFyZ3VtZW50RlBSMCk7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgQml0T3IsIE9yaWdpbigpLCBhcmd1bWVudCwgYXJndW1lbnQpOwotICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1
bHQpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2Ms
IGEpLCBiaXRPckRvdWJsZShhLCBhKSkpOwotfQotCi12b2lkIHRlc3RCaXRPckFyZ3NEb3VibGUo
ZG91YmxlIGEsIGRvdWJsZSBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50QSA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJn
dW1lbnRGUFIwKTsKLSAgICBWYWx1ZSogYXJndW1lbnRCID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOwotICAg
IFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdE9yLCBPcmln
aW4oKSwgYXJndW1lbnRBLCBhcmd1bWVudEIpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOwotCi0gICAgQ0hFQ0soaXNJZGVu
dGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEsIGIpLCBiaXRPckRvdWJsZShhLCBi
KSkpOwotfQotCi12b2lkIHRlc3RCaXRPckFyZ0ltbURvdWJsZShkb3VibGUgYSwgZG91YmxlIGIp
Ci17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnRBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwotICAgIFZh
bHVlKiBhcmd1bWVudEIgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIGIpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEJpdE9yLCBPcmlnaW4oKSwgYXJndW1lbnRBLCBhcmd1bWVudEIpOwotICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOwot
Ci0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEsIGIp
LCBiaXRPckRvdWJsZShhLCBiKSkpOwotfQotCi12b2lkIHRlc3RCaXRPckltbXNEb3VibGUoZG91
YmxlIGEsIGRvdWJsZSBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50QSA9IHJvb3QtPmFw
cGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7Ci0gICAgVmFsdWUq
IGFyZ3VtZW50QiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmln
aW4oKSwgYik7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQml0T3IsIE9yaWdpbigpLCBhcmd1bWVudEEsIGFyZ3VtZW50Qik7Ci0gICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7Ci0gICAg
Ci0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MpLCBiaXRP
ckRvdWJsZShhLCBiKSkpOwotfQotCi1mbG9hdCBiaXRPckZsb2F0KGZsb2F0IGEsIGZsb2F0IGIp
Ci17Ci0gICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxmbG9hdD4oYml0d2lzZV9jYXN0PHVpbnQzMl90
PihhKSB8IGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oYikpOwotfQotCi12b2lkIHRlc3RCaXRPckFy
Z0Zsb2F0KGZsb2F0IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCkpKTsKLSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBCaXRPciwgT3JpZ2luKCksIGFyZ3VtZW50LCBhcmd1bWVudCk7Ci0gICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7Ci0K
LSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jLCBiaXR3aXNl
X2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXRPckZsb2F0KGEsIGEpKSk7Ci19Ci0KLXZvaWQgdGVzdEJp
dE9yQXJnc0Zsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0g
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1l
bnRBID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCks
Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAot
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50QiA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLAotICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxKSkpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEJpdE9yLCBPcmlnaW4oKSwgYXJndW1lbnRBLCBhcmd1bWVudEIpOwot
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBy
ZXN1bHQpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxmbG9hdD4ocHJv
YywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYikpLCBi
aXRPckZsb2F0KGEsIGIpKSk7Ci19Ci0KLXZvaWQgdGVzdEJpdE9yQXJnSW1tRmxvYXQoZmxvYXQg
YSwgZmxvYXQgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudEEgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCkpKTsKLSAgICBWYWx1ZSogYXJndW1lbnRCID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0
RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdE9yLCBPcmlnaW4oKSwgYXJndW1lbnRBLCBhcmd1
bWVudEIpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCByZXN1bHQpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxm
bG9hdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJf
dD4oYikpLCBiaXRPckZsb2F0KGEsIGIpKSk7Ci19Ci0KLXZvaWQgdGVzdEJpdE9ySW1tc0Zsb2F0
KGZsb2F0IGEsIGZsb2F0IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnRBID0gcm9vdC0+
YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpOwotICAgIFZhbHVl
KiBhcmd1bWVudEIgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmln
aW4oKSwgYik7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQml0T3IsIE9yaWdpbigpLCBhcmd1bWVudEEsIGFyZ3VtZW50Qik7Ci0gICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7Ci0KLSAg
ICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jKSwgYml0T3JGbG9h
dChhLCBiKSkpOwotfQotCi12b2lkIHRlc3RCaXRPckFyZ3NGbG9hdFdpdGhVc2VsZXNzRG91Ymxl
Q29udmVyc2lvbihmbG9hdCBhLCBmbG9hdCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50
QSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLAot
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOwotICAgIFZhbHVlKiBhcmd1bWVudEIgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSkpKTsKLSAgICBWYWx1ZSogYXJndW1lbnRBYXNEb3VibGUgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBhcmd1bWVu
dEEpOwotICAgIFZhbHVlKiBhcmd1bWVudEJhc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGFyZ3VtZW50Qik7Ci0gICAgVmFsdWUq
IGRvdWJsZVJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0T3IsIE9yaWdp
bigpLCBhcmd1bWVudEFhc0RvdWJsZSwgYXJndW1lbnRCYXNEb3VibGUpOwotICAgIFZhbHVlKiBm
bG9hdFJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwg
T3JpZ2luKCksIGRvdWJsZVJlc3VsdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KHByb2MsIFJldHVybiwgT3JpZ2luKCksIGZsb2F0UmVzdWx0KTsKLSAgICAKLSAgICBkb3VibGUg
ZG91YmxlQSA9IGE7Ci0gICAgZG91YmxlIGRvdWJsZUIgPSBiOwotICAgIGZsb2F0IGV4cGVjdGVk
ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGJpdE9yRG91YmxlKGRvdWJsZUEsIGRvdWJsZUIpKTsKLSAg
ICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jLCBiaXR3aXNlX2Nh
c3Q8aW50MzJfdD4oYSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihiKSksIGV4cGVjdGVkKSk7Ci19
Ci0KLXZvaWQgdGVzdEJpdFhvckFyZ3MoaW50NjRfdCBhLCBpbnQ2NF90IGIpCi17Ci0gICAgUHJv
Y2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3Jp
Z2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9j
LCBCaXRYb3IsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAotICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpKSk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0
X3Q+KHByb2MsIGEsIGIpID09IChhIF4gYikpOwotfQotCi12b2lkIHRlc3RCaXRYb3JTYW1lQXJn
KGludDY0X3QgYSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAg
ICBwcm9jLCBCaXRYb3IsIE9yaWdpbigpLAotICAgICAgICAgICAgYXJndW1lbnQsCi0gICAgICAg
ICAgICBhcmd1bWVudCkpOwotCi0gICAgQ0hFQ0soIWNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJv
YywgYSkpOwotfQotCi12b2lkIHRlc3RCaXRYb3JBbmRBbmRBcmdzKGludDY0X3QgYSwgaW50NjRf
dCBiLCBpbnQ2NF90IGMpCi17Ci0gICAgLy8gV2Ugd2FudCB0byBjaGVjayBldmVyeSBwb3NzaWJs
ZSBvcmRlcmluZyBvZiBhcmd1bWVudHMgKHRvIHByb3Blcmx5IGNoZWNrIGV2ZXJ5IHBhdGggaW4g
QjNSZWR1Y2VTdHJlbmd0aCk6Ci0gICAgLy8gKChhICYgYikgXiAoYSAmIGMpKQotICAgIC8vICgo
YSAmIGIpIF4gKGMgJiBhKSkKLSAgICAvLyAoKGIgJiBhKSBeIChhICYgYykpCi0gICAgLy8gKChi
ICYgYSkgXiAoYyAmIGEpKQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgKytpKSB7Ci0gICAg
ICAgIFByb2NlZHVyZSBwcm9jOwotICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOwotICAgICAgICBWYWx1ZSogYXJnQSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAg
VmFsdWUqIGFyZ0IgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIFZhbHVlKiBhcmdDID0gcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjIpOwotICAgICAgICBWYWx1ZSogYW5kQUIgPSBpICYgMiA/IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwgYXJnQSwgYXJnQikKLSAgICAgICAg
ICAgIDogcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBhcmdC
LCBhcmdBKTsKLSAgICAgICAgVmFsdWUqIGFuZEFDID0gaSAmIDEgPyByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCksIGFyZ0EsIGFyZ0MpCi0gICAgICAgICAgICA6
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwgYXJnQywgYXJn
QSk7Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAotICAgICAgICAgICAgICAgIHByb2MsIEJpdFhvciwgT3JpZ2luKCksCi0gICAgICAgICAgICAg
ICAgYW5kQUIsCi0gICAgICAgICAgICAgICAgYW5kQUMpKTsKLQotICAgICAgICBDSEVDS19FUShj
b21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEsIGIsIGMpLCAoKGEgJiBiKSBeIChhICYgYykp
KTsKLSAgICB9Ci19Ci0KLXZvaWQgdGVzdEJpdFhvckFuZFNhbWVBcmdzKGludDY0X3QgYSwgaW50
NjRfdCBiKQotewotICAgIC8vIFdlIHdhbnQgdG8gY2hlY2sgZXZlcnkgcG9zc2libGUgb3JkZXJp
bmcgb2YgYXJndW1lbnRzICh0byBwcm9wZXJseSBjaGVjayBldmVyeSBwYXRoIGluIEIzUmVkdWNl
U3RyZW5ndGgpOgotICAgIC8vICgoYSAmIGIpIF4gYSkKLSAgICAvLyAoKGIgJiBhKSBeIGEpCi0g
ICAgLy8gKGEgXiAoYSAmIGIpKQotICAgIC8vIChhIF4gKGIgJiBhKSkKLSAgICBmb3IgKGludCBp
ID0gMDsgaSA8IDQ7ICsraSkgewotICAgICAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICAgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICAgICAgVmFsdWUqIGFyZ0EgPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIFZhbHVlKiBhcmdCID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwot
ICAgICAgICBWYWx1ZSogYW5kQUIgPSBpICYgMSA/IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQml0QW5kLCBPcmlnaW4oKSwgYXJnQSwgYXJnQikKLSAgICAgICAgICAgIDogcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBhcmdCLCBhcmdBKTsKLSAgICAg
ICAgVmFsdWUqIHJlc3VsdCA9IGkgJiAyID8gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBC
aXRYb3IsIE9yaWdpbigpLCBhbmRBQiwgYXJnQSkKLSAgICAgICAgICAgIDogcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLCBhcmdBLCBhbmRBQik7Ci0gICAgICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1
bHQpOwotICAgICAgICAKLSAgICAgICAgQ0hFQ0tfRVEoY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihw
cm9jLCBhLCBiKSwgKChhICYgYikgXiBhKSk7Ci0gICAgfQotfQotCi12b2lkIHRlc3RCaXRYb3JJ
bW1zKGludDY0X3QgYSwgaW50NjRfdCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0WG9yLCBPcmlnaW4oKSwK
LSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigp
LCBhKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9y
aWdpbigpLCBiKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jKSA9
PSAoYSBeIGIpKTsKLX0KLQotdm9pZCB0ZXN0Qml0WG9yQXJnSW1tKGludDY0X3QgYSwgaW50NjRf
dCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAot
ICAgICAgICAgICAgcHJvYywgQml0WG9yLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBiKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9j
LCBhKSA9PSAoYSBeIGIpKTsKLX0KLQotdm9pZCB0ZXN0Qml0WG9ySW1tQXJnKGludDY0X3QgYSwg
aW50NjRfdCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAg
ICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAotICAgICAgICAgICAgcHJvYywgQml0WG9yLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKSwKLSAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90
Pihwcm9jLCBiKSA9PSAoYSBeIGIpKTsKLX0KLQotdm9pZCB0ZXN0Qml0WG9yQml0WG9yQXJnSW1t
SW1tKGludDY0X3QgYSwgaW50NjRfdCBiLCBpbnQ2NF90IGMpCi17Ci0gICAgUHJvY2VkdXJlIHBy
b2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSog
aW5uZXJCaXRYb3IgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBCaXRY
b3IsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSk7Ci0gICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0WG9yLCBP
cmlnaW4oKSwKLSAgICAgICAgICAgIGlubmVyQml0WG9yLAotICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGMpKSk7Ci0KLSAgICBDSEVDSyhj
b21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEpID09ICgoYSBeIGIpIF4gYykpOwotfQotCi12
b2lkIHRlc3RCaXRYb3JJbW1CaXRYb3JBcmdJbW0oaW50NjRfdCBhLCBpbnQ2NF90IGIsIGludDY0
X3QgYykKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBpbm5lckJpdFhvciA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCi0gICAgICAgIHByb2MsIEJpdFhvciwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIGMpKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0g
ICAgICAgICAgICBwcm9jLCBCaXRYb3IsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpLAotICAgICAgICAgICAgaW5u
ZXJCaXRYb3IpKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYikg
PT0gKGEgXiAoYiBeIGMpKSk7Ci19Ci0KLXZvaWQgdGVzdEJpdFhvckFyZ3MzMihpbnQgYSwgaW50
IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0g
ICAgICAgICAgICBwcm9jLCBCaXRYb3IsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0g
ICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAg
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRS
dW48aW50Pihwcm9jLCBhLCBiKSA9PSAoYSBeIGIpKTsKLX0KLQotdm9pZCB0ZXN0Qml0WG9yU2Ft
ZUFyZzMyKGludCBhKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCi0gICAgICAgICAgICBwcm9jLCBCaXRYb3IsIE9yaWdpbigpLAotICAgICAgICAgICAgYXJn
dW1lbnQsCi0gICAgICAgICAgICBhcmd1bWVudCkpOwotCi0gICAgQ0hFQ0soIWNvbXBpbGVBbmRS
dW48aW50Pihwcm9jLCBhKSk7Ci19Ci0KLXZvaWQgdGVzdEJpdFhvckltbXMzMihpbnQgYSwgaW50
IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0g
ICAgICAgICAgICBwcm9jLCBCaXRYb3IsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpLAotICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpKSk7Ci0KLSAgICBD
SEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYykgPT0gKGEgXiBiKSk7Ci19Ci0KLXZvaWQgdGVz
dEJpdFhvckFyZ0ltbTMyKGludCBhLCBpbnQgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEJpdFhvciwgT3JpZ2lu
KCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAg
IHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkp
LAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIGIpKSk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYSkgPT0gKGEg
XiBiKSk7Ci19Ci0KLXZvaWQgdGVzdEJpdFhvckltbUFyZzMyKGludCBhLCBpbnQgYikKLXsKLSAg
ICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAg
IHByb2MsIEJpdFhvciwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSksCi0gICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVu
PGludD4ocHJvYywgYikgPT0gKGEgXiBiKSk7Ci19Ci0KLXZvaWQgdGVzdEJpdFhvckJpdFhvckFy
Z0ltbUltbTMyKGludCBhLCBpbnQgYiwgaW50IGMpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0g
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogaW5uZXJC
aXRYb3IgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBCaXRYb3IsIE9y
aWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJv
YywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKLSAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpKTsKLSAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3Jp
Z2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9j
LCBCaXRYb3IsIE9yaWdpbigpLAotICAgICAgICAgICAgaW5uZXJCaXRYb3IsCi0gICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYykpKTsKLQot
ICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhKSA9PSAoKGEgXiBiKSBeIGMpKTsK
LX0KLQotdm9pZCB0ZXN0Qml0WG9ySW1tQml0WG9yQXJnSW1tMzIoaW50IGEsIGludCBiLCBpbnQg
YykKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOwotICAgIFZhbHVlKiBpbm5lckJpdFhvciA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCi0gICAgICAgIHByb2MsIEJpdFhvciwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCkpLAotICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYykpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEJpdFhvciwgT3JpZ2luKCksCi0gICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSksCi0g
ICAgICAgICAgICBpbm5lckJpdFhvcikpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+
KHByb2MsIGIpID09IChhIF4gKGIgXiBjKSkpOwotfQotCi12b2lkIHRlc3RCaXROb3RBcmcoaW50
NjRfdCBhKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAotICAgICAgICAgICAgcHJvYywgQml0WG9yLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMSksCi0gICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCkpKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRS
dW48aW50NjRfdD4ocHJvYywgYSksIHN0YXRpY19jYXN0PGludDY0X3Q+KChzdGF0aWNfY2FzdDx1
aW50NjRfdD4oYSkgXiAweGZmZmZmZmZmZmZmZmZmZmYpKSkpOwotfQotCi12b2lkIHRlc3RCaXRO
b3RJbW0oaW50NjRfdCBhKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0WG9yLCBPcmlnaW4oKSwKLSAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMSksCi0g
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
YSkpKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJv
YywgYSksIHN0YXRpY19jYXN0PGludDY0X3Q+KChzdGF0aWNfY2FzdDx1aW50NjRfdD4oYSkgXiAw
eGZmZmZmZmZmZmZmZmZmZmYpKSkpOwotfQotCi12b2lkIHRlc3RCaXROb3RNZW0oaW50NjRfdCBh
KQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgTWVt
b3J5VmFsdWUqIGxvYWQgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQs
IEludDY0LCBPcmlnaW4oKSwgYWRkcmVzcyk7Ci0gICAgVmFsdWUqIG5vdExvYWQgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdFhvciwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMSksCi0gICAgICAgIGxvYWQp
OwotICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmUsIE9yaWdpbigp
LCBub3RMb2FkLCBhZGRyZXNzKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIDApKTsKLQotICAgIGludDY0X3QgaW5wdXQgPSBhOwotICAgIGNvbXBpbGVBbmRS
dW48aW50MzJfdD4ocHJvYywgJmlucHV0KTsKLSAgICBDSEVDSyhpc0lkZW50aWNhbChpbnB1dCwg
c3RhdGljX2Nhc3Q8aW50NjRfdD4oKHN0YXRpY19jYXN0PHVpbnQ2NF90PihhKSBeIDB4ZmZmZmZm
ZmZmZmZmZmZmZikpKSk7Ci19Ci0KLXZvaWQgdGVzdEJpdE5vdEFyZzMyKGludDMyX3QgYSkKLXsK
LSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOwotICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
VHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLAotICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0x
KSwKLSAgICAgICAgICAgIGFyZ3VtZW50KSk7Ci0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGls
ZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBhKSwgc3RhdGljX2Nhc3Q8aW50MzJfdD4oKHN0YXRpY19j
YXN0PHVpbnQzMl90PihhKSBeIDB4ZmZmZmZmZmYpKSkpOwotfQotCi12b2lkIHRlc3RCaXROb3RJ
bW0zMihpbnQzMl90IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
Ci0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBCaXRYb3IsIE9yaWdpbigpLAotICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xKSwKLSAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBh
KSkpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9j
LCBhKSwgc3RhdGljX2Nhc3Q8aW50MzJfdD4oKHN0YXRpY19jYXN0PHVpbnQzMl90PihhKSBeIDB4
ZmZmZmZmZmYpKSkpOwotfQotCi12b2lkIHRlc3RCaXROb3RNZW0zMihpbnQzMl90IGEpCi17Ci0g
ICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKLSAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBNZW1vcnlWYWx1
ZSogbG9hZCA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIs
IE9yaWdpbigpLCBhZGRyZXNzKTsKLSAgICBWYWx1ZSogbm90TG9hZCA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgQml0WG9yLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xKSwKLSAgICAgICAgbG9hZCk7Ci0gICAg
cm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIG5vdExv
YWQsIGFkZHJlc3MpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgMCkpOwotCi0gICAgaW50MzJfdCBpbnB1dCA9IGE7Ci0gICAgY29tcGlsZUFuZFJ1bjxpbnQz
Ml90Pihwcm9jLCAmaW5wdXQpOwotICAgIENIRUNLKGlzSWRlbnRpY2FsKGlucHV0LCBzdGF0aWNf
Y2FzdDxpbnQzMl90Pigoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGEpIF4gMHhmZmZmZmZmZikpKSk7
Ci19Ci0KLXZvaWQgdGVzdE5vdE9uQm9vbGVhbkFuZEJyYW5jaDMyKGludDY0X3QgYSwgaW50NjRf
dCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7
Ci0gICAgQmFzaWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBWYWx1
ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAot
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIx
KSk7Ci0gICAgVmFsdWUqIGFyZ3NBcmVFcXVhbCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgRXF1YWwsIE9yaWdpbigpLCBhcmcxLCBhcmcyKTsKLSAgICBWYWx1ZSogYXJnc0FyZU5vdEVx
dWFsID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLAotICAg
ICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSksCi0g
ICAgICAgIGFyZ3NBcmVFcXVhbCk7Ci0KLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
Ci0gICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCi0gICAgICAgIGFyZ3NBcmVOb3RFcXVh
bCwKLSAgICAgICAgRnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVs
c2VDYXNlKSk7Ci0KLSAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENv
bnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKSk7Ci0KLSAgICBlbHNlQ2FzZS0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAg
ICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC00Mikp
OwotCi0gICAgaW50MzJfdCBleHBlY3RlZFZhbHVlID0gKGEgIT0gYikgPyA0MiA6IC00MjsKLSAg
ICBDSEVDSyhjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGEsIGIpID09IGV4cGVjdGVkVmFs
dWUpOwotfQotCi12b2lkIHRlc3RCaXROb3RPbkJvb2xlYW5BbmRCcmFuY2gzMihpbnQ2NF90IGEs
IGludDY0X3QgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRC
bG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOwotCi0g
ICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmln
aW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogYXJnMiA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSkpOwotICAgIFZhbHVlKiBhcmdzQXJlRXF1YWwgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEVxdWFsLCBPcmlnaW4oKSwgYXJnMSwgYXJnMik7Ci0gICAgVmFsdWUqIGJpdE5v
dEFyZ3NBcmVFcXVhbCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0WG9yLCBPcmln
aW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIC0xKSwKLSAgICAgICAgYXJnc0FyZUVxdWFsKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZShwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAotICAgICAgICBiaXROb3RBcmdzQXJl
RXF1YWwsIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2Fz
ZSkpOwotCi0gICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAotICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIDQyKSk7Ci0KLSAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIGVsc2VDYXNlLT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTQyKSk7Ci0KLSAgICBzdGF0aWMgY29uc3RleHBy
IGludDMyX3QgZXhwZWN0ZWRWYWx1ZSA9IDQyOwotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50
MzJfdD4ocHJvYywgYSwgYikgPT0gZXhwZWN0ZWRWYWx1ZSk7Ci19Ci0KLXZvaWQgdGVzdFNobEFy
Z3MoaW50NjRfdCBhLCBpbnQ2NF90IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdpbigpLAotICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2
NF90Pihwcm9jLCBhLCBiKSA9PSAoYSA8PCBiKSk7Ci19Ci0KLXZvaWQgdGVzdFNobEltbXMoaW50
NjRfdCBhLCBpbnQ2NF90IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdpbigpLAotICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpLAotICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIp
KSk7Ci0KLSAgICBiID0gYiAmIDB4M2Y7IC8vIHRvIGF2b2lkIHVuZGVmaW5lZCBiZWhhdmlvdXIg
YmVsb3cKLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MpID09IChhIDw8IGIp
KTsKLX0KLQotdm9pZCB0ZXN0U2hsQXJnSW1tKGludDY0X3QgYSwgaW50NjRfdCBiKQotewotICAg
IFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAg
cHJvYywgU2hsLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKLSAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSkp
OwotCi0gICAgYiA9IGIgJiAweDNmOyAvLyB0byBhdm9pZCB1bmRlZmluZWQgYmVoYXZpb3VyIGJl
bG93Ci0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhKSA9PSAoYSA8PCBi
KSk7Ci19Ci0KLXZvaWQgdGVzdFNobFNTaHJBcmdJbW0oaW50NjRfdCBhLCBpbnQ2NF90IGIpCi17
Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKLSAgICBWYWx1ZSogYXJnQSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBWYWx1ZSogY29u
c3RCID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpOwot
ICAgIFZhbHVlKiBpbm5lclNoaWZ0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTU2hy
LCBPcmlnaW4oKSwgYXJnQSwgY29uc3RCKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdpbigpLAotICAgICAgICAg
ICAgaW5uZXJTaGlmdCwKLSAgICAgICAgICAgIGNvbnN0QikpOwotCi0gICAgYiA9IGIgJiAweDNm
OyAvLyB0byBhdm9pZCB1bmRlZmluZWQgYmVoYXZpb3VyIGJlbG93Ci0gICAgQ0hFQ0soY29tcGls
ZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhKSA9PSAoKGEgPj4gYikgPDwgYikpOwotfQotCi12b2lk
IHRlc3RTaGxBcmczMihpbnQzMl90IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogdmFsdWUgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAot
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFNobCwgT3JpZ2luKCksIHZhbHVlLCB2YWx1ZSkpOwotCi0gICAgQ0hFQ0so
Y29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBhKSA9PSAoYSA8PCBhKSk7Ci19Ci0KLXZvaWQg
dGVzdFNobEFyZ3MzMihpbnQzMl90IGEsIGludDMyX3QgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJv
YzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIFNobCwgT3Jp
Z2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAg
ICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAg
ICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEp
KSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBhLCBiKSA9PSAo
YSA8PCBiKSk7Ci19Ci0KLXZvaWQgdGVzdFNobEltbXMzMihpbnQzMl90IGEsIGludDMyX3QgYikK
LXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAg
ICAgICAgIHByb2MsIFNobCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSksCi0gICAgICAgICAgICByb290LT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYikpKTsKLQotICAgIGIgPSBiICYg
MHgxZjsgLy8gdG8gYXZvaWQgdW5kZWZpbmVkIGJlaGF2aW91ciBiZWxvdwotICAgIENIRUNLKGNv
bXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYykgPT0gKGEgPDwgYikpOwotfQotCi12b2lkIHRlc3RT
aGxBcmdJbW0zMihpbnQzMl90IGEsIGludDMyX3QgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsK
LSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIFNobCwgT3JpZ2lu
KCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAg
IHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkp
LAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIGIpKSk7Ci0KLSAgICBiID0gYiAmIDB4MWY7IC8vIHRvIGF2b2lkIHVuZGVmaW5lZCBiZWhh
dmlvdXIgYmVsb3cKLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGEpID09
IChhIDw8IGIpKTsKLX0KLQotdm9pZCB0ZXN0U2hsWlNockFyZ0ltbTMyKGludDMyX3QgYSwgaW50
MzJfdCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ0EgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KAotICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSk7Ci0gICAgVmFsdWUqIGNvbnN0QiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBiKTsKLSAgICBWYWx1ZSogaW5uZXJTaGlmdCA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgWlNociwgT3JpZ2luKCksIGFyZ0EsIGNvbnN0Qik7Ci0gICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAot
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgU2hsLCBP
cmlnaW4oKSwKLSAgICAgICAgICAgIGlubmVyU2hpZnQsCi0gICAgICAgICAgICBjb25zdEIpKTsK
LQotICAgIGIgPSBiICYgMHgxZjsgLy8gdG8gYXZvaWQgdW5kZWZpbmVkIGJlaGF2aW91ciBiZWxv
dwotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYSkgPT0gc3RhdGljX2Nh
c3Q8aW50MzJfdD4oKHN0YXRpY19jYXN0PHVpbnQzMl90PihhKSA+PiBiKSA8PCBiKSk7Ci19Ci0K
LXZvaWQgdGVzdFNTaHJBcmdzKGludDY0X3QgYSwgaW50NjRfdCBiKQotewotICAgIFByb2NlZHVy
ZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgU1No
ciwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmln
aW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKSk7Ci0KLSAgICBDSEVDSyhj
b21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEsIGIpID09IChhID4+IGIpKTsKLX0KLQotdm9p
ZCB0ZXN0U1NockltbXMoaW50NjRfdCBhLCBpbnQ2NF90IGIpCi17Ci0gICAgUHJvY2VkdXJlIHBy
b2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0g
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBTU2hyLCBP
cmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBhKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBiKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90
Pihwcm9jKSA9PSAoYSA+PiBiKSk7Ci19Ci0KLXZvaWQgdGVzdFNTaHJBcmdJbW0oaW50NjRfdCBh
LCBpbnQ2NF90IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0g
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBTU2hyLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBiKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90
Pihwcm9jLCBhKSA9PSAoYSA+PiBiKSk7Ci19Ci0KLXZvaWQgdGVzdFNTaHJBcmczMihpbnQzMl90
IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICBWYWx1ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAot
ICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7
Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNTaHIsIE9y
aWdpbigpLCB2YWx1ZSwgdmFsdWUpKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50MzJf
dD4ocHJvYywgYSkgPT0gKGEgPj4gKGEgJiAzMSkpKTsKLX0KLQotdm9pZCB0ZXN0U1NockFyZ3Mz
MihpbnQzMl90IGEsIGludDMyX3QgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIFNTaHIsIE9yaWdpbigpLAotICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBU
cnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKLSAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgVHJ1
bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpKTsKLQotICAg
IENIRUNLKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYSwgYikgPT0gKGEgPj4gYikpOwot
fQotCi12b2lkIHRlc3RTU2hySW1tczMyKGludDMyX3QgYSwgaW50MzJfdCBiKQotewotICAgIFBy
b2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0g
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJv
YywgU1NociwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYSksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYikpKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRS
dW48aW50MzJfdD4ocHJvYykgPT0gKGEgPj4gYikpOwotfQotCi12b2lkIHRlc3RTU2hyQXJnSW1t
MzIoaW50MzJfdCBhLCBpbnQzMl90IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBTU2hyLCBPcmlnaW4oKSwKLSAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywg
VHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCi0gICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYikp
KTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYSkgPT0gKGEgPj4g
YikpOwotfQotCi12b2lkIHRlc3RaU2hyQXJncyh1aW50NjRfdCBhLCB1aW50NjRfdCBiKQotewot
ICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAg
ICAgcHJvYywgWlNociwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0g
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKSk7Ci0K
LSAgICBDSEVDSyhjb21waWxlQW5kUnVuPHVpbnQ2NF90Pihwcm9jLCBhLCBiKSA9PSAoYSA+PiBi
KSk7Ci19Ci0KLXZvaWQgdGVzdFpTaHJJbW1zKHVpbnQ2NF90IGEsIHVpbnQ2NF90IGIpCi17Ci0g
ICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAg
ICBwcm9jLCBaU2hyLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25z
dDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSkpOwotCi0gICAgQ0hFQ0soY29tcGls
ZUFuZFJ1bjx1aW50NjRfdD4ocHJvYykgPT0gKGEgPj4gYikpOwotfQotCi12b2lkIHRlc3RaU2hy
QXJnSW1tKHVpbnQ2NF90IGEsIHVpbnQ2NF90IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0g
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBaU2hyLCBPcmlnaW4o
KSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSkpOwotCi0gICAgQ0hFQ0soY29t
cGlsZUFuZFJ1bjx1aW50NjRfdD4ocHJvYywgYSkgPT0gKGEgPj4gYikpOwotfQotCi12b2lkIHRl
c3RaU2hyQXJnMzIodWludDMyX3QgYSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiB2YWx1ZSA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0g
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgWlNociwgT3JpZ2luKCksIHZhbHVlLCB2YWx1ZSkpOwotCi0gICAgQ0hFQ0so
Y29tcGlsZUFuZFJ1bjx1aW50MzJfdD4ocHJvYywgYSkgPT0gKGEgPj4gKGEgJiAzMSkpKTsKLX0K
LQotdm9pZCB0ZXN0WlNockFyZ3MzMih1aW50MzJfdCBhLCB1aW50MzJfdCBiKQotewotICAgIFBy
b2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0g
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJv
YywgWlNociwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAot
ICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCkpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAg
ICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjEpKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjx1aW50MzJfdD4ocHJv
YywgYSwgYikgPT0gKGEgPj4gYikpOwotfQotCi12b2lkIHRlc3RaU2hySW1tczMyKHVpbnQzMl90
IGEsIHVpbnQzMl90IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
Ci0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBaU2hyLCBPcmlnaW4oKSwKLSAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKSwKLSAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSkp
OwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjx1aW50MzJfdD4ocHJvYykgPT0gKGEgPj4gYikp
OwotfQotCi12b2lkIHRlc3RaU2hyQXJnSW1tMzIodWludDMyX3QgYSwgdWludDMyX3QgYikKLXsK
LSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAg
ICAgIHByb2MsIFpTaHIsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1
bjx1aW50MzJfdD4ocHJvYywgYSkgPT0gKGEgPj4gYikpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBJbnRlZ2VyVHlwZT4KLXN0YXRpYyB1bnNpZ25lZCBjb3VudExlYWRpbmdaZXJvKEludGVnZXJU
eXBlIHZhbHVlKQotewotICAgIHVuc2lnbmVkIGJpdENvdW50ID0gc2l6ZW9mKEludGVnZXJUeXBl
KSAqIDg7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIGJpdENvdW50OwotCi0gICAg
dW5zaWduZWQgY291bnRlciA9IDA7Ci0gICAgd2hpbGUgKCEoc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KHZhbHVlKSAmICgxbCA8PCAoYml0Q291bnQgLSAxKSkpKSB7Ci0gICAgICAgIHZhbHVlIDw8PSAx
OwotICAgICAgICArK2NvdW50ZXI7Ci0gICAgfQotICAgIHJldHVybiBjb3VudGVyOwotfQotCi12
b2lkIHRlc3RDbHpBcmc2NChpbnQ2NF90IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnQg
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgVmFsdWUqIGNselZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBDbHosIE9yaWdpbigpLCBhcmd1bWVudCk7Ci0gICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGNselZhbHVlKTsKLSAgICBD
SEVDSyhjb21waWxlQW5kUnVuPHVuc2lnbmVkPihwcm9jLCBhKSA9PSBjb3VudExlYWRpbmdaZXJv
KGEpKTsKLX0KLQotdm9pZCB0ZXN0Q2x6TWVtNjQoaW50NjRfdCBhKQotewotICAgIFByb2NlZHVy
ZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFs
dWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgTWVtb3J5VmFsdWUqIHZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCks
IGFkZHJlc3MpOwotICAgIFZhbHVlKiBjbHpWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgQ2x6LCBPcmlnaW4oKSwgdmFsdWUpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBjbHpWYWx1ZSk7Ci0gICAgQ0hFQ0soY29tcGls
ZUFuZFJ1bjx1bnNpZ25lZD4ocHJvYywgJmEpID09IGNvdW50TGVhZGluZ1plcm8oYSkpOwotfQot
Ci12b2lkIHRlc3RDbHpBcmczMihpbnQzMl90IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0g
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1l
bnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogY2x6VmFsdWUgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIENseiwgT3JpZ2luKCksIGFyZ3VtZW50KTsKLSAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2x6VmFsdWUpOwotICAg
IENIRUNLKGNvbXBpbGVBbmRSdW48dW5zaWduZWQ+KHByb2MsIGEpID09IGNvdW50TGVhZGluZ1pl
cm8oYSkpOwotfQotCi12b2lkIHRlc3RDbHpNZW0zMihpbnQzMl90IGEpCi17Ci0gICAgUHJvY2Vk
dXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBW
YWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBNZW1vcnlWYWx1ZSogdmFsdWUg
PSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4o
KSwgYWRkcmVzcyk7Ci0gICAgVmFsdWUqIGNselZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBDbHosIE9yaWdpbigpLCB2YWx1ZSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGNselZhbHVlKTsKLSAgICBDSEVDSyhjb21w
aWxlQW5kUnVuPHVuc2lnbmVkPihwcm9jLCAmYSkgPT0gY291bnRMZWFkaW5nWmVybyhhKSk7Ci19
Ci0KLXZvaWQgdGVzdEFic0FyZyhkb3VibGUgYSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEFicywgT3JpZ2luKCks
Ci0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApKSk7Ci0KLSAgICBDSEVDSyhpc0lkZW50
aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgYSksIGZhYnMoYSkpKTsKLX0KLQotdm9p
ZCB0ZXN0QWJzSW1tKGRvdWJsZSBhKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9v
dC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKLSAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWJzLCBPcmlnaW4oKSwg
YXJndW1lbnQpKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91Ymxl
Pihwcm9jKSwgZmFicyhhKSkpOwotfQotCi12b2lkIHRlc3RBYnNNZW0oZG91YmxlIGEpCi17Ci0g
ICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKLSAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBNZW1vcnlWYWx1
ZSogbG9hZERvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwg
RG91YmxlLCBPcmlnaW4oKSwgYWRkcmVzcyk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEFicywgT3JpZ2luKCksIGxvYWREb3VibGUpKTsKLQotICAgIENI
RUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCAmYSksIGZhYnMoYSkp
KTsKLX0KLQotdm9pZCB0ZXN0QWJzQWJzQXJnKGRvdWJsZSBhKQotewotICAgIFByb2NlZHVyZSBw
cm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUq
IGZpcnN0QWJzID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBYnMsIE9yaWdpbigpLAot
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEZQUkluZm86OmFyZ3VtZW50RlBSMCkpOwotICAgIFZhbHVlKiBzZWNvbmRBYnMgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEFicywgT3JpZ2luKCksIGZpcnN0QWJzKTsKLSAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgc2Vjb25kQWJz
KTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBh
KSwgZmFicyhmYWJzKGEpKSkpOwotfQotCi12b2lkIHRlc3RBYnNOZWdBcmcoZG91YmxlIGEpCi17
Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKLSAgICBWYWx1ZSogbmVnID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBOZWcs
IE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCkpOwotICAgIFZhbHVlKiBhYnMgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFicywgT3JpZ2luKCksIG5lZyk7Ci0gICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFicyk7Ci0g
ICAgCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEp
LCBmYWJzKC0gYSkpKTsKLX0KLQotdm9pZCB0ZXN0QWJzQml0d2lzZUNhc3RBcmcoZG91YmxlIGEp
Ci17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnRBc0ludDY0ID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwot
ICAgIFZhbHVlKiBhcmd1bWVudEFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50QXNJbnQ2NCk7Ci0gICAgVmFsdWUqIGFi
c1ZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBYnMsIE9yaWdpbigpLCBhcmd1
bWVudEFzRG91YmxlKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwgYWJzVmFsdWUpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGls
ZUFuZFJ1bjxkb3VibGU+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQ2NF90PihhKSksIGZhYnMoYSkp
KTsKLX0KLQotdm9pZCB0ZXN0Qml0d2lzZUNhc3RBYnNCaXR3aXNlQ2FzdEFyZyhkb3VibGUgYSkK
LXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudEFzSW50NjQgPSByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0g
ICAgVmFsdWUqIGFyZ3VtZW50QXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnRBc0ludDY0KTsKLSAgICBWYWx1ZSogYWJz
VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFicywgT3JpZ2luKCksIGFyZ3Vt
ZW50QXNEb3VibGUpOwotICAgIFZhbHVlKiByZXN1bHRBc0ludDY0ID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFic1ZhbHVlKTsKLQotICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHRB
c0ludDY0KTsKLQotICAgIGludDY0X3QgZXhwZWN0ZWRSZXN1bHQgPSBiaXR3aXNlX2Nhc3Q8aW50
NjRfdD4oZmFicyhhKSk7Ci0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQ2
NF90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50NjRfdD4oYSkpLCBleHBlY3RlZFJlc3VsdCkpOwot
fQotCi12b2lkIHRlc3RBYnNBcmcoZmxvYXQgYSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVu
dDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOwotICAg
IFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFicywgT3JpZ2lu
KCksIGFyZ3VtZW50KTsKLSAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgcmVzdWx0KTsKLSAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOwotCi0g
ICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNl
X2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8Zmxv
YXQ+KGZhYnMoYSkpKSkpOwotfQotCi12b2lkIHRlc3RBYnNJbW0oZmxvYXQgYSkKLXsKLSAgICBQ
cm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwot
ICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBhKTsKLSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBBYnMsIE9yaWdpbigpLCBhcmd1bWVudCk7Ci0gICAgVmFsdWUqIHJlc3VsdDMy
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJl
c3VsdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIHJlc3VsdDMyKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48
aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgYml0d2lzZV9jYXN0PGlu
dDMyX3Q+KHN0YXRpY19jYXN0PGZsb2F0PihmYWJzKGEpKSkpKTsKLX0KLQotdm9pZCB0ZXN0QWJz
TWVtKGZsb2F0IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKLSAgICBNZW1vcnlWYWx1ZSogbG9hZEZsb2F0ID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZh
bHVlPihwcm9jLCBMb2FkLCBGbG9hdCwgT3JpZ2luKCksIGFkZHJlc3MpOwotICAgIFZhbHVlKiBy
ZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFicywgT3JpZ2luKCksIGxvYWRG
bG9hdCk7Ci0gICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKLQotICAgIENIRUNL
KGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgJmEpLCBiaXR3aXNlX2Nh
c3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KGZhYnMoYSkpKSkpOwotfQotCi12b2lkIHRl
c3RBYnNBYnNBcmcoZmxvYXQgYSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOwotICAgIFZhbHVlKiBm
aXJzdEFicyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWJzLCBPcmlnaW4oKSwgYXJn
dW1lbnQpOwotICAgIFZhbHVlKiBzZWNvbmRBYnMgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEFicywgT3JpZ2luKCksIGZpcnN0QWJzKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgc2Vjb25kQWJzKTsKLQotICAgIENIRUNLKGlz
SWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZmxvYXQ+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90
PihhKSksIHN0YXRpY19jYXN0PGZsb2F0PihmYWJzKGZhYnMoYSkpKSkpOwotfQotCi12b2lkIHRl
c3RBYnNOZWdBcmcoZmxvYXQgYSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOwotICAgIFZhbHVlKiBu
ZWcgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE5lZywgT3JpZ2luKCksIGFyZ3VtZW50
KTsKLSAgICBWYWx1ZSogYWJzID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBYnMsIE9y
aWdpbigpLCBuZWcpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCBhYnMpOwotICAgIAotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVB
bmRSdW48ZmxvYXQ+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIHN0YXRpY19jYXN0
PGZsb2F0PihmYWJzKC0gYSkpKSk7Ci19Ci0KLXZvaWQgdGVzdEFic0JpdHdpc2VDYXN0QXJnKGZs
b2F0IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnRBc0ludDMyID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50QXNmbG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudEFzSW50MzIpOwotICAgIFZhbHVl
KiBhYnNWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWJzLCBPcmlnaW4oKSwg
YXJndW1lbnRBc2Zsb2F0KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgYWJzVmFsdWUpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29t
cGlsZUFuZFJ1bjxmbG9hdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KGZhYnMoYSkpKSk7Ci19Ci0KLXZvaWQgdGVzdEJpdHdpc2VDYXN0QWJzQml0
d2lzZUNhc3RBcmcoZmxvYXQgYSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudEFzSW50MzIg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogYXJndW1lbnRBc2Zsb2F0ID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50QXNJbnQz
Mik7Ci0gICAgVmFsdWUqIGFic1ZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBB
YnMsIE9yaWdpbigpLCBhcmd1bWVudEFzZmxvYXQpOwotICAgIFZhbHVlKiByZXN1bHRBc0ludDY0
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFi
c1ZhbHVlKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCByZXN1bHRBc0ludDY0KTsKLQotICAgIGludDMyX3QgZXhwZWN0ZWRSZXN1bHQg
PSBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KGZhYnMoYSkpKTsKLSAg
ICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2Vf
Y2FzdDxpbnQzMl90PihhKSksIGV4cGVjdGVkUmVzdWx0KSk7Ci19Ci0KLXZvaWQgdGVzdEFic0Fy
Z1dpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbihmbG9hdCBhKQotewotICAgIFByb2NlZHVyZSBw
cm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUq
IGFyZ3VtZW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4o
KSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZSA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVu
dDMyKTsKLSAgICBWYWx1ZSogYXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlKTsKLSAgICBWYWx1ZSogcmVzdWx0
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBYnMsIE9yaWdpbigpLCBhc0RvdWJsZSk7
Ci0gICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBE
b3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgcmVzdWx0KTsKLSAgICBWYWx1ZSogcmVzdWx0MzIgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRS
ZXN1bHQpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCByZXN1bHQzMik7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVu
PGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2VfY2FzdDxp
bnQzMl90PihzdGF0aWNfY2FzdDxmbG9hdD4oZmFicyhhKSkpKSk7Ci19Ci0KLXZvaWQgdGVzdEFi
c0FyZ1dpdGhFZmZlY3RmdWxEb3VibGVDb252ZXJzaW9uKGZsb2F0IGEpCi17Ci0gICAgUHJvY2Vk
dXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBW
YWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9y
aWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZhbHVlKiBmbG9hdFZhbHVl
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFy
Z3VtZW50MzIpOwotICAgIFZhbHVlKiBhc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUpOwotICAgIFZhbHVlKiBy
ZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFicywgT3JpZ2luKCksIGFzRG91
YmxlKTsKLSAgICBWYWx1ZSogZmxvYXRSZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCByZXN1bHQpOwotICAgIFZhbHVlKiByZXN1bHQz
MiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBm
bG9hdFJlc3VsdCk7Ci0gICAgVmFsdWUqIGRvdWJsZUFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7
Ci0gICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCks
IHJlc3VsdCwgZG91YmxlQWRkcmVzcyk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKLQotICAgIGRvdWJsZSBlZmZlY3Qg
PSAwOwotICAgIGludDMyX3QgcmVzdWx0VmFsdWUgPSBjb21waWxlQW5kUnVuPGludDMyX3Q+KHBy
b2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgJmVmZmVjdCk7Ci0gICAgQ0hFQ0soaXNJZGVu
dGljYWwocmVzdWx0VmFsdWUsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihzdGF0aWNfY2FzdDxmbG9h
dD4oZmFicyhhKSkpKSk7Ci0gICAgQ0hFQ0soaXNJZGVudGljYWwoZWZmZWN0LCBzdGF0aWNfY2Fz
dDxkb3VibGU+KGZhYnMoYSkpKSk7Ci19Ci0KLXZvaWQgdGVzdENlaWxBcmcoZG91YmxlIGEpCi17
Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAg
ICAgICBwcm9jLCBDZWlsLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBS
MCkpKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9j
LCBhKSwgY2VpbChhKSkpOwotfQotCi12b2lkIHRlc3RDZWlsSW1tKGRvdWJsZSBhKQotewotICAg
IFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
Ci0gICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBhKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0g
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgQ2VpbCwgT3JpZ2luKCksIGFyZ3VtZW50KSk7Ci0KLSAgICBDSEVDSyhpc0lk
ZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYyksIGNlaWwoYSkpKTsKLX0KLQotdm9p
ZCB0ZXN0Q2VpbE1lbShkb3VibGUgYSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhZGRyZXNzID0gcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOwotICAgIE1lbW9yeVZhbHVlKiBsb2FkRG91YmxlID0gcm9vdC0+YXBwZW5k
TmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBEb3VibGUsIE9yaWdpbigpLCBhZGRyZXNzKTsK
LSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwg
T3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQ2VpbCwgT3Jp
Z2luKCksIGxvYWREb3VibGUpKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRS
dW48ZG91YmxlPihwcm9jLCAmYSksIGNlaWwoYSkpKTsKLX0KLQotdm9pZCB0ZXN0Q2VpbENlaWxB
cmcoZG91YmxlIGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogZmlyc3RDZWlsID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBDZWlsLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjAp
KTsKLSAgICBWYWx1ZSogc2Vjb25kQ2VpbCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
Q2VpbCwgT3JpZ2luKCksIGZpcnN0Q2VpbCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHNlY29uZENlaWwpOwotCi0gICAgQ0hFQ0soaXNJ
ZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEpLCBjZWlsKGEpKSk7Ci19Ci0K
LXZvaWQgdGVzdEZsb29yQ2VpbEFyZyhkb3VibGUgYSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsK
LSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBmaXJz
dENlaWwgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIENlaWwsIE9yaWdpbigpLAotICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQ
UkluZm86OmFyZ3VtZW50RlBSMCkpOwotICAgIFZhbHVlKiB3cmFwcGluZ0Zsb29yID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9vciwgT3JpZ2luKCksIGZpcnN0Q2VpbCk7Ci0gICAg
cm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHdyYXBw
aW5nRmxvb3IpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+
KHByb2MsIGEpLCBjZWlsKGEpKSk7Ci19Ci0KLXZvaWQgdGVzdENlaWxJVG9ENjQoaW50NjRfdCBh
KQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIFZh
bHVlKiBhcmd1bWVudEFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJVG9E
LCBPcmlnaW4oKSwgYXJndW1lbnQpOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIENlaWwsIE9yaWdpbigpLCBhcmd1bWVudEFzRG91YmxlKSk7Ci0KLSAg
ICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgYSksIGNlaWwo
c3RhdGljX2Nhc3Q8ZG91YmxlPihhKSkpKTsKLX0KLQotdm9pZCB0ZXN0Q2VpbElUb0QzMihpbnQ2
NF90IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAg
ICBWYWx1ZSogYXJndW1lbnRBc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
SVRvRCwgT3JpZ2luKCksIGFyZ3VtZW50KTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBDZWlsLCBPcmlnaW4oKSwgYXJndW1lbnRBc0RvdWJsZSkpOwot
Ci0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEpLCBj
ZWlsKHN0YXRpY19jYXN0PGRvdWJsZT4oYSkpKSk7Ci19Ci0KLXZvaWQgdGVzdENlaWxBcmcoZmxv
YXQgYSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0g
ICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNl
Q2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIENlaWwsIE9yaWdpbigpLCBhcmd1bWVudCk7Ci0gICAgVmFs
dWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwg
T3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2Ms
IFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNv
bXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgYml0
d2lzZV9jYXN0PGludDMyX3Q+KGNlaWxmKGEpKSkpOwotfQotCi12b2lkIHRlc3RDZWlsSW1tKGZs
b2F0IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8Q29u
c3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQ2VpbCwgT3JpZ2luKCksIGFyZ3VtZW50KTsKLSAg
ICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VD
YXN0LCBPcmlnaW4oKSwgcmVzdWx0KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOwotCi0gICAgQ0hFQ0soaXNJZGVudGlj
YWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkp
LCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oY2VpbGYoYSkpKSk7Ci19Ci0KLXZvaWQgdGVzdENlaWxN
ZW0oZmxvYXQgYSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OwotICAgIE1lbW9yeVZhbHVlKiBsb2FkRmxvYXQgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFs
dWU+KHByb2MsIExvYWQsIEZsb2F0LCBPcmlnaW4oKSwgYWRkcmVzcyk7Ci0gICAgVmFsdWUqIHJl
c3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQ2VpbCwgT3JpZ2luKCksIGxvYWRG
bG9hdCk7Ci0gICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKLQotICAgIENIRUNL
KGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgJmEpLCBiaXR3aXNlX2Nh
c3Q8aW50MzJfdD4oY2VpbGYoYSkpKSk7Ci19Ci0KLXZvaWQgdGVzdENlaWxDZWlsQXJnKGZsb2F0
IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAg
IFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNh
c3QsIE9yaWdpbigpLCBhcmd1bWVudDMyKTsKLSAgICBWYWx1ZSogZmlyc3RDZWlsID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBDZWlsLCBPcmlnaW4oKSwgYXJndW1lbnQpOwotICAgIFZh
bHVlKiBzZWNvbmRDZWlsID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBDZWlsLCBPcmln
aW4oKSwgZmlyc3RDZWlsKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgc2Vjb25kQ2VpbCk7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChj
b21waWxlQW5kUnVuPGZsb2F0Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBjZWls
ZihhKSkpOwotfQotCi12b2lkIHRlc3RGbG9vckNlaWxBcmcoZmxvYXQgYSkKLXsKLSAgICBQcm9j
ZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAg
IFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywg
T3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFy
Z3VtZW50MzIpOwotICAgIFZhbHVlKiBmaXJzdENlaWwgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIENlaWwsIE9yaWdpbigpLCBhcmd1bWVudCk7Ci0gICAgVmFsdWUqIHdyYXBwaW5nRmxv
b3IgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb29yLCBPcmlnaW4oKSwgZmlyc3RD
ZWlsKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmln
aW4oKSwgd3JhcHBpbmdGbG9vcik7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5k
UnVuPGZsb2F0Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBjZWlsZihhKSkpOwot
fQotCi12b2lkIHRlc3RDZWlsQXJnV2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uKGZsb2F0IGEp
Ci17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZh
bHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2Fz
dCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOwotICAgIFZhbHVlKiBhc0RvdWJsZSA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUp
OwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIENlaWws
IE9yaWdpbigpLCBhc0RvdWJsZSk7Ci0gICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgcmVzdWx0KTsKLSAg
ICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VD
YXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1bHQpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7Ci0KLSAgICBDSEVDSyhpc0lk
ZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90
PihhKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihjZWlsZihhKSkpKTsKLX0KLQotdm9pZCB0ZXN0
Q2VpbEFyZ1dpdGhFZmZlY3RmdWxEb3VibGVDb252ZXJzaW9uKGZsb2F0IGEpCi17Ci0gICAgUHJv
Y2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAg
ICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMs
IE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZhbHVlKiBmbG9hdFZh
bHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCks
IGFyZ3VtZW50MzIpOwotICAgIFZhbHVlKiBhc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUpOwotICAgIFZhbHVl
KiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIENlaWwsIE9yaWdpbigpLCBh
c0RvdWJsZSk7Ci0gICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgcmVzdWx0KTsKLSAgICBWYWx1ZSogcmVz
dWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4o
KSwgZmxvYXRSZXN1bHQpOwotICAgIFZhbHVlKiBkb3VibGVBZGRyZXNzID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjEpOwotICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmUsIE9yaWdp
bigpLCByZXN1bHQsIGRvdWJsZUFkZHJlc3MpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7Ci0KLSAgICBkb3VibGUgZWZm
ZWN0ID0gMDsKLSAgICBpbnQzMl90IHJlc3VsdFZhbHVlID0gY29tcGlsZUFuZFJ1bjxpbnQzMl90
Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSksICZlZmZlY3QpOwotICAgIENIRUNLKGlz
SWRlbnRpY2FsKHJlc3VsdFZhbHVlLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oY2VpbGYoYSkpKSk7
Ci0gICAgQ0hFQ0soaXNJZGVudGljYWwoZWZmZWN0LCBzdGF0aWNfY2FzdDxkb3VibGU+KGNlaWxm
KGEpKSkpOwotfQotCi12b2lkIHRlc3RGbG9vckFyZyhkb3VibGUgYSkKLXsKLSAgICBQcm9jZWR1
cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEZs
b29yLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCkpKTsKLQotICAg
IENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBhKSwgZmxvb3Io
YSkpKTsKLX0KLQotdm9pZCB0ZXN0Rmxvb3JJbW0oZG91YmxlIGEpCi17Ci0gICAgUHJvY2VkdXJl
IHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1
ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIGEpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBGbG9vciwgT3JpZ2luKCksIGFyZ3VtZW50KSk7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChj
b21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYyksIGZsb29yKGEpKSk7Ci19Ci0KLXZvaWQgdGVzdEZs
b29yTWVtKGRvdWJsZSBhKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7Ci0gICAgTWVtb3J5VmFsdWUqIGxvYWREb3VibGUgPSByb290LT5hcHBlbmROZXc8TWVt
b3J5VmFsdWU+KHByb2MsIExvYWQsIERvdWJsZSwgT3JpZ2luKCksIGFkZHJlc3MpOwotICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9vciwgT3JpZ2luKCks
IGxvYWREb3VibGUpKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91
YmxlPihwcm9jLCAmYSksIGZsb29yKGEpKSk7Ci19Ci0KLXZvaWQgdGVzdEZsb29yRmxvb3JBcmco
ZG91YmxlIGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogZmlyc3RGbG9vciA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgRmxvb3IsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCkp
OwotICAgIFZhbHVlKiBzZWNvbmRGbG9vciA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
Rmxvb3IsIE9yaWdpbigpLCBmaXJzdEZsb29yKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgc2Vjb25kRmxvb3IpOwotCi0gICAgQ0hFQ0so
aXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEpLCBmbG9vcihhKSkpOwot
fQotCi12b2lkIHRlc3RDZWlsRmxvb3JBcmcoZG91YmxlIGEpCi17Ci0gICAgUHJvY2VkdXJlIHBy
b2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSog
Zmlyc3RGbG9vciA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvb3IsIE9yaWdpbigp
LAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCkpOwotICAgIFZhbHVlKiB3cmFwcGluZ0NlaWwgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIENlaWwsIE9yaWdpbigpLCBmaXJzdEZsb29yKTsK
LSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwg
d3JhcHBpbmdDZWlsKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91
YmxlPihwcm9jLCBhKSwgZmxvb3IoYSkpKTsKLX0KLQotdm9pZCB0ZXN0Rmxvb3JJVG9ENjQoaW50
NjRfdCBhKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwot
ICAgIFZhbHVlKiBhcmd1bWVudEFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBJVG9ELCBPcmlnaW4oKSwgYXJndW1lbnQpOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb29yLCBPcmlnaW4oKSwgYXJndW1lbnRBc0RvdWJsZSkp
OwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEp
LCBmbG9vcihzdGF0aWNfY2FzdDxkb3VibGU+KGEpKSkpOwotfQotCi12b2lkIHRlc3RGbG9vcklU
b0QzMihpbnQ2NF90IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApKTsKLSAgICBWYWx1ZSogYXJndW1lbnRBc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgSVRvRCwgT3JpZ2luKCksIGFyZ3VtZW50KTsKLQotICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9vciwgT3JpZ2luKCksIGFyZ3VtZW50QXNE
b3VibGUpKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihw
cm9jLCBhKSwgZmxvb3Ioc3RhdGljX2Nhc3Q8ZG91YmxlPihhKSkpKTsKLX0KLQotdm9pZCB0ZXN0
Rmxvb3JBcmcoZmxvYXQgYSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOwotICAgIFZhbHVlKiByZXN1
bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb29yLCBPcmlnaW4oKSwgYXJndW1l
bnQpOwotICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
Qml0d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7Ci0KLSAgICBDSEVDSyhp
c0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQz
Ml90PihhKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihmbG9vcmYoYSkpKSk7Ci19Ci0KLXZvaWQg
dGVzdEZsb29ySW1tKGZsb2F0IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnQgPSByb290
LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7Ci0gICAgVmFs
dWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvb3IsIE9yaWdpbigp
LCBhcmd1bWVudCk7Ci0gICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKLQotICAg
IENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9j
YXN0PGludDMyX3Q+KGEpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGZsb29yZihhKSkpKTsKLX0K
LQotdm9pZCB0ZXN0Rmxvb3JNZW0oZmxvYXQgYSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhZGRyZXNz
ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOwotICAgIE1lbW9yeVZhbHVlKiBsb2FkRmxvYXQgPSByb290LT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEZsb2F0LCBPcmlnaW4oKSwgYWRkcmVz
cyk7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxv
b3IsIE9yaWdpbigpLCBsb2FkRmxvYXQpOwotICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOwotICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1
bHQzMik7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHBy
b2MsICZhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGZsb29yZihhKSkpKTsKLX0KLQotdm9pZCB0
ZXN0Rmxvb3JGbG9vckFyZyhmbG9hdCBhKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50MzIg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7Ci0gICAgVmFs
dWUqIGZpcnN0Rmxvb3IgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb29yLCBPcmln
aW4oKSwgYXJndW1lbnQpOwotICAgIFZhbHVlKiBzZWNvbmRGbG9vciA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgRmxvb3IsIE9yaWdpbigpLCBmaXJzdEZsb29yKTsKLSAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgc2Vjb25kRmxvb3Ip
OwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxmbG9hdD4ocHJvYywgYml0
d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgZmxvb3JmKGEpKSk7Ci19Ci0KLXZvaWQgdGVzdENlaWxG
bG9vckFyZyhmbG9hdCBhKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50MzIgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApKTsKLSAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7Ci0gICAgVmFsdWUqIGZpcnN0
Rmxvb3IgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb29yLCBPcmlnaW4oKSwgYXJn
dW1lbnQpOwotICAgIFZhbHVlKiB3cmFwcGluZ0NlaWwgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIENlaWwsIE9yaWdpbigpLCBmaXJzdEZsb29yKTsKLSAgICByb290LT5hcHBlbmROZXdD
b250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgd3JhcHBpbmdDZWlsKTsKLQotICAg
IENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZmxvYXQ+KHByb2MsIGJpdHdpc2VfY2Fz
dDxpbnQzMl90PihhKSksIGZsb29yZihhKSkpOwotfQotCi12b2lkIHRlc3RGbG9vckFyZ1dpdGhV
c2VsZXNzRG91YmxlQ29udmVyc2lvbihmbG9hdCBhKQotewotICAgIFByb2NlZHVyZSBwcm9jOwot
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3Vt
ZW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZSA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDMyKTsK
LSAgICBWYWx1ZSogYXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0
VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlKTsKLSAgICBWYWx1ZSogcmVzdWx0ID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9vciwgT3JpZ2luKCksIGFzRG91YmxlKTsKLSAg
ICBWYWx1ZSogZmxvYXRSZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJs
ZVRvRmxvYXQsIE9yaWdpbigpLCByZXN1bHQpOwotICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBmbG9hdFJlc3Vs
dCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2lu
KCksIHJlc3VsdDMyKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50
MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgYml0d2lzZV9jYXN0PGludDMy
X3Q+KGZsb29yZihhKSkpKTsKLX0KLQotdm9pZCB0ZXN0Rmxvb3JBcmdXaXRoRWZmZWN0ZnVsRG91
YmxlQ29udmVyc2lvbihmbG9hdCBhKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50MzIgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDMyKTsKLSAgICBWYWx1
ZSogYXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUs
IE9yaWdpbigpLCBmbG9hdFZhbHVlKTsKLSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBGbG9vciwgT3JpZ2luKCksIGFzRG91YmxlKTsKLSAgICBWYWx1ZSog
ZmxvYXRSZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQs
IE9yaWdpbigpLCByZXN1bHQpOwotICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBmbG9hdFJlc3VsdCk7Ci0gICAg
VmFsdWUqIGRvdWJsZUFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgcm9vdC0+YXBwZW5k
TmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHJlc3VsdCwgZG91YmxlQWRk
cmVzcyk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIHJlc3VsdDMyKTsKLQotICAgIGRvdWJsZSBlZmZlY3QgPSAwOwotICAgIGludDMyX3Qg
cmVzdWx0VmFsdWUgPSBjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxp
bnQzMl90PihhKSwgJmVmZmVjdCk7Ci0gICAgQ0hFQ0soaXNJZGVudGljYWwocmVzdWx0VmFsdWUs
IGJpdHdpc2VfY2FzdDxpbnQzMl90PihmbG9vcmYoYSkpKSk7Ci0gICAgQ0hFQ0soaXNJZGVudGlj
YWwoZWZmZWN0LCBzdGF0aWNfY2FzdDxkb3VibGU+KGZsb29yZihhKSkpKTsKLX0KLQotZG91Ymxl
IGNvcnJlY3RTcXJ0KGRvdWJsZSB2YWx1ZSkKLXsKLSNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0
KQotICAgIGRvdWJsZSByZXN1bHQ7Ci0gICAgYXNtICgic3FydHNkICUxLCAlMCIgOiAiPXgiKHJl
c3VsdCkgOiAieCIodmFsdWUpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotI2Vsc2UgICAgCi0gICAg
cmV0dXJuIHNxcnQodmFsdWUpOwotI2VuZGlmCi19Ci0KLXZvaWQgdGVzdFNxcnRBcmcoZG91Ymxl
IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0g
ICAgICAgICAgICBwcm9jLCBTcXJ0LCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3Vt
ZW50RlBSMCkpKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91Ymxl
Pihwcm9jLCBhKSwgY29ycmVjdFNxcnQoYSkpKTsKLX0KLQotdm9pZCB0ZXN0U3FydEltbShkb3Vi
bGUgYSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxDb25z
dERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNxcnQsIE9yaWdpbigpLCBhcmd1bWVudCkpOwotCi0g
ICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MpLCBjb3JyZWN0
U3FydChhKSkpOwotfQotCi12b2lkIHRlc3RTcXJ0TWVtKGRvdWJsZSBhKQotewotICAgIFByb2Nl
ZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAg
VmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgTWVtb3J5VmFsdWUqIGxvYWRE
b3VibGUgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIERvdWJsZSwg
T3JpZ2luKCksIGFkZHJlc3MpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAg
ICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBTcXJ0LCBPcmlnaW4oKSwgbG9hZERvdWJsZSkpOwotCi0gICAgQ0hFQ0soaXNJ
ZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsICZhKSwgY29ycmVjdFNxcnQoYSkp
KTsKLX0KLQotdm9pZCB0ZXN0U3FydEFyZyhmbG9hdCBhKQotewotICAgIFByb2NlZHVyZSBwcm9j
OwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFy
Z3VtZW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwK
LSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7
Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3FydCwg
T3JpZ2luKCksIGFyZ3VtZW50KTsKLSAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgcmVzdWx0KTsKLSAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIp
OwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBi
aXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGNvcnJlY3RTcXJ0KGEpKSkpKTsKLX0KLQotdm9pZCB0ZXN0U3FydEltbShmbG9h
dCBhKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0
RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNxcnQsIE9yaWdpbigpLCBhcmd1bWVudCk7Ci0gICAg
VmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2Fz
dCwgT3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHBy
b2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2Fs
KGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwg
Yml0d2lzZV9jYXN0PGludDMyX3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihjb3JyZWN0U3FydChhKSkp
KSk7Ci19Ci0KLXZvaWQgdGVzdFNxcnRNZW0oZmxvYXQgYSkKLXsKLSAgICBQcm9jZWR1cmUgcHJv
YzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBh
ZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIE1lbW9yeVZhbHVlKiBsb2FkRmxvYXQgPSBy
b290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEZsb2F0LCBPcmlnaW4oKSwg
YWRkcmVzcyk7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgU3FydCwgT3JpZ2luKCksIGxvYWRGbG9hdCk7Ci0gICAgVmFsdWUqIHJlc3VsdDMyID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7
Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCks
IHJlc3VsdDMyKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJf
dD4ocHJvYywgJmEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNv
cnJlY3RTcXJ0KGEpKSkpKTsKLX0KLQotdm9pZCB0ZXN0U3FydEFyZ1dpdGhVc2VsZXNzRG91Ymxl
Q29udmVyc2lvbihmbG9hdCBhKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50MzIgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDMyKTsKLSAgICBWYWx1ZSog
YXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9y
aWdpbigpLCBmbG9hdFZhbHVlKTsKLSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBTcXJ0LCBPcmlnaW4oKSwgYXNEb3VibGUpOwotICAgIFZhbHVlKiBmbG9h
dFJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3Jp
Z2luKCksIHJlc3VsdCk7Ci0gICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGZsb2F0UmVzdWx0KTsKLSAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIp
OwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBi
aXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGNvcnJlY3RTcXJ0KGEpKSkpKTsKLX0KLQotdm9pZCB0ZXN0U3FydEFyZ1dpdGhF
ZmZlY3RmdWxEb3VibGVDb252ZXJzaW9uKGZsb2F0IGEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7
Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJn
dW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAot
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIp
OwotICAgIFZhbHVlKiBhc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxv
YXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUpOwotICAgIFZhbHVlKiByZXN1bHQgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNxcnQsIE9yaWdpbigpLCBhc0RvdWJsZSk7Ci0g
ICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3Vi
bGVUb0Zsb2F0LCBPcmlnaW4oKSwgcmVzdWx0KTsKLSAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1
bHQpOwotICAgIFZhbHVlKiBkb3VibGVBZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgIHJv
b3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmUsIE9yaWdpbigpLCByZXN1bHQs
IGRvdWJsZUFkZHJlc3MpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7Ci0KLSAgICBkb3VibGUgZWZmZWN0ID0gMDsKLSAg
ICBpbnQzMl90IHJlc3VsdFZhbHVlID0gY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3
aXNlX2Nhc3Q8aW50MzJfdD4oYSksICZlZmZlY3QpOwotICAgIENIRUNLKGlzSWRlbnRpY2FsKHJl
c3VsdFZhbHVlLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvcnJl
Y3RTcXJ0KGEpKSkpKTsKLSAgICBkb3VibGUgZXhwZWN0ZWQgPSBzdGF0aWNfY2FzdDxkb3VibGU+
KGNvcnJlY3RTcXJ0KGEpKTsKLSAgICBDSEVDSyhpc0lkZW50aWNhbChlZmZlY3QsIGV4cGVjdGVk
KSk7Ci19Ci0KLXZvaWQgdGVzdENvbXBhcmVUd29GbG9hdFRvRG91YmxlKGZsb2F0IGEsIGZsb2F0
IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLQotICAgIFZhbHVlKiBhcmcxQXMzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAg
IFZhbHVlKiBhcmcxRmxvYXQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VD
YXN0LCBPcmlnaW4oKSwgYXJnMUFzMzIpOwotICAgIFZhbHVlKiBhcmcxQXNEb3VibGUgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBhcmcxRmxv
YXQpOwotCi0gICAgVmFsdWUqIGFyZzJBczMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Ci0gICAgVmFsdWUq
IGFyZzJGbG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9y
aWdpbigpLCBhcmcyQXMzMik7Ci0gICAgVmFsdWUqIGFyZzJBc0RvdWJsZSA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGFyZzJGbG9hdCk7Ci0g
ICAgVmFsdWUqIGVxdWFsID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBFcXVhbCwgT3Jp
Z2luKCksIGFyZzFBc0RvdWJsZSwgYXJnMkFzRG91YmxlKTsKLQotICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBlcXVhbCk7Ci0KLSAgICBDSEVD
Syhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwg
Yml0d2lzZV9jYXN0PGludDMyX3Q+KGIpKSA9PSAoYSA9PSBiKSk7Ci19Ci0KLXZvaWQgdGVzdENv
bXBhcmVPbmVGbG9hdFRvRG91YmxlKGZsb2F0IGEsIGRvdWJsZSBiKQotewotICAgIFByb2NlZHVy
ZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBW
YWx1ZSogYXJnMUFzMzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmln
aW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogYXJnMUZsb2F0ID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZzFB
czMyKTsKLSAgICBWYWx1ZSogYXJnMUFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgYXJnMUZsb2F0KTsKLQotICAgIFZhbHVlKiBh
cmcyQXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Ci0gICAgVmFsdWUqIGVxdWFsID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBFcXVhbCwgT3JpZ2luKCksIGFyZzFBc0RvdWJsZSwgYXJn
MkFzRG91YmxlKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCBlcXVhbCk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+
KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYikgPT0gKGEgPT0gYikpOwotfQotCi12
b2lkIHRlc3RDb21wYXJlRmxvYXRUb0RvdWJsZVRocm91Z2hQaGkoZmxvYXQgYSwgZmxvYXQgYikK
LXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOwotICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOwotICAg
IEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sq
IHRhaWwgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBWYWx1ZSogY29uZGl0aW9uID0gcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApOwotCi0gICAgVmFsdWUqIGFyZzFBczMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Ci0gICAg
VmFsdWUqIGFyZzFGbG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNh
c3QsIE9yaWdpbigpLCBhcmcxQXMzMik7Ci0gICAgVmFsdWUqIGFyZzFBc0RvdWJsZSA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGFyZzFGbG9h
dCk7Ci0KLSAgICBWYWx1ZSogYXJnMkFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwotICAgIFZh
bHVlKiBhcmcyQXNGbG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9G
bG9hdCwgT3JpZ2luKCksIGFyZzJBc0RvdWJsZSk7Ci0gICAgVmFsdWUqIGFyZzJBc0ZSb3VuZGVk
RG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmln
aW4oKSwgYXJnMkFzRmxvYXQpOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAot
ICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAotICAgICAgICBjb25kaXRpb24sCi0gICAg
ICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkp
OwotCi0gICAgVXBzaWxvblZhbHVlKiB0aGVuVmFsdWUgPSB0aGVuQ2FzZS0+YXBwZW5kTmV3PFVw
c2lsb25WYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFyZzFBc0RvdWJsZSk7Ci0gICAgdGhlbkNhc2Ut
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4oKSwgRnJlcXVlbnRlZEJs
b2NrKHRhaWwpKTsKLQotICAgIFZhbHVlKiBlbHNlQ29uc3QgPSBlbHNlQ2FzZS0+YXBwZW5kTmV3
PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwLik7Ci0gICAgVXBzaWxvblZhbHVl
KiBlbHNlVmFsdWUgPSBlbHNlQ2FzZS0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIGVsc2VDb25zdCk7Ci0gICAgZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShw
cm9jLCBKdW1wLCBPcmlnaW4oKSwgRnJlcXVlbnRlZEJsb2NrKHRhaWwpKTsKLQotICAgIFZhbHVl
KiBkb3VibGVJbnB1dCA9IHRhaWwtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUGhpLCBEb3VibGUs
IE9yaWdpbigpKTsKLSAgICB0aGVuVmFsdWUtPnNldFBoaShkb3VibGVJbnB1dCk7Ci0gICAgZWxz
ZVZhbHVlLT5zZXRQaGkoZG91YmxlSW5wdXQpOwotICAgIFZhbHVlKiBlcXVhbCA9IHRhaWwtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgRXF1YWwsIE9yaWdpbigpLCBkb3VibGVJbnB1dCwgYXJnMkFz
RlJvdW5kZWREb3VibGUpOwotICAgIHRhaWwtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCBlcXVhbCk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhw
cm9jKTsKLSAgICBpbnQzMl90IGludGVnZXJBID0gYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpOwot
ICAgIGRvdWJsZSBkb3VibGVCID0gYjsKLSAgICBDSEVDSyhpbnZva2U8aW50NjRfdD4oKmNvZGUs
IDEsIGludGVnZXJBLCBkb3VibGVCKSA9PSAoYSA9PSBiKSk7Ci0gICAgQ0hFQ0soaW52b2tlPGlu
dDY0X3Q+KCpjb2RlLCAwLCBpbnRlZ2VyQSwgZG91YmxlQikgPT0gKGIgPT0gMCkpOwotfQotCi12
b2lkIHRlc3REb3VibGVUb0Zsb2F0VGhyb3VnaFBoaShmbG9hdCB2YWx1ZSkKLXsKLSAgICAvLyBT
aW1wbGUgY2FzZSBvZjoKLSAgICAvLyAgICAgaWYgKGEpIHsKLSAgICAvLyAgICAgICAgIHggPSBE
b3VibGVBZGQoYSwgYikKLSAgICAvLyAgICAgZWxzZQotICAgIC8vICAgICAgICAgeCA9IERvdWJs
ZUFkZChhLCBjKQotICAgIC8vICAgICBEb3VibGVUb0Zsb2F0KHgpCi0gICAgLy8KLSAgICAvLyBC
b3RoIEFkZHMgY2FuIGJlIGNvbnZlcnRlZCB0byBmbG9hdCBhZGQuCi0gICAgUHJvY2VkdXJlIHBy
b2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Js
b2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBlbHNlQ2Fz
ZSA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiB0YWlsID0gcHJvYy5hZGRCbG9j
aygpOwotCi0gICAgVmFsdWUqIGNvbmRpdGlvbiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBWYWx1
ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdp
bigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOwotICAgIFZhbHVlKiBmbG9hdFZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3Vt
ZW50MzIpOwotICAgIFZhbHVlKiBhcmdBc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUpOwotCi0gICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAot
ICAgICAgICBjb25kaXRpb24sCi0gICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZy
ZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOwotCi0gICAgVmFsdWUqIHBvc3RpdGl2ZUNvbnN0ID0g
dGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDIu
NWYpOwotICAgIFZhbHVlKiB0aGVuQWRkID0gdGhlbkNhc2UtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQWRkLCBPcmlnaW4oKSwgYXJnQXNEb3VibGUsIHBvc3RpdGl2ZUNvbnN0KTsKLSAgICBVcHNp
bG9uVmFsdWUqIHRoZW5WYWx1ZSA9IHRoZW5DYXNlLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgdGhlbkFkZCk7Ci0gICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4oKSwgRnJlcXVlbnRlZEJsb2NrKHRhaWwpKTsKLQotICAg
IFZhbHVlKiBlbHNlQ29uc3QgPSBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBNX1BJKTsKLSAgICBVcHNpbG9uVmFsdWUqIGVsc2VWYWx1ZSA9IGVs
c2VDYXNlLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4oKSwgZWxzZUNvbnN0
KTsKLSAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIEp1bXAsIE9yaWdp
bigpLCBGcmVxdWVudGVkQmxvY2sodGFpbCkpOwotCi0gICAgVmFsdWUqIGRvdWJsZUlucHV0ID0g
dGFpbC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBQaGksIERvdWJsZSwgT3JpZ2luKCkpOwotICAg
IHRoZW5WYWx1ZS0+c2V0UGhpKGRvdWJsZUlucHV0KTsKLSAgICBlbHNlVmFsdWUtPnNldFBoaShk
b3VibGVJbnB1dCk7Ci0gICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gdGFpbC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgZG91YmxlSW5wdXQpOwotICAgIHRh
aWwtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBmbG9hdFJl
c3VsdCk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBDSEVDSyhp
c0lkZW50aWNhbChpbnZva2U8ZmxvYXQ+KCpjb2RlLCAxLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4o
dmFsdWUpKSwgdmFsdWUgKyA0Mi41ZikpOwotICAgIENIRUNLKGlzSWRlbnRpY2FsKGludm9rZTxm
bG9hdD4oKmNvZGUsIDAsIGJpdHdpc2VfY2FzdDxpbnQzMl90Pih2YWx1ZSkpLCBzdGF0aWNfY2Fz
dDxmbG9hdD4oTV9QSSkpKTsKLX0KLQotdm9pZCB0ZXN0UmVkdWNlRmxvYXRUb0RvdWJsZVZhbGlk
YXRlcygpCi17Ci0gICAgLy8gU2ltcGxlIGNhc2Ugb2Y6Ci0gICAgLy8gICAgIGYgPSBEb3VibGVU
b0Zsb2F0KEJpdGNhc3QoYXJnR1BSMCkpCi0gICAgLy8gICAgIGlmIChhKSB7Ci0gICAgLy8gICAg
ICAgICB4ID0gRmxvYXRDb25zdCgpCi0gICAgLy8gICAgIGVsc2UKLSAgICAvLyAgICAgICAgIHgg
PSBGbG9hdENvbnN0KCkKLSAgICAvLyAgICAgcCA9IFBoaSh4KQotICAgIC8vICAgICBhID0gTXVs
KHAsIHApCi0gICAgLy8gICAgIGIgPSBBZGQoYSwgZikKLSAgICAvLyAgICAgYyA9IEFkZChwLCBi
KQotICAgIC8vICAgICBSZXR1cm4oYykKLSAgICAvLwotICAgIC8vIFRoaXMgc2hvdWxkIG5vdCBj
cmFzaCBpbiB0aGUgdmFsaWRhdG9yIGFmdGVyIFJlZHVjZUZsb2F0VG9Eb3VibGUuCi0gICAgUHJv
Y2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAg
ICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2Nr
KiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiB0YWlsID0gcHJv
Yy5hZGRCbG9jaygpOwotCi0gICAgVmFsdWUqIGNvbmRpdGlvbiA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
LSAgICBWYWx1ZSogdGhpbmd5ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNl
Q2FzdCwgT3JpZ2luKCksIGNvbmRpdGlvbik7Ci0gICAgdGhpbmd5ID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgdGhpbmd5KTsgLy8gTWFrZSB0
aGUgcGhhc2UgdGhpbmsgaXQgaGFzIHdvcmsgdG8gZG8uCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAotICAgICAgICBjb25k
aXRpb24sCi0gICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9j
ayhlbHNlQ2FzZSkpOwotCi0gICAgVXBzaWxvblZhbHVlKiB0aGVuVmFsdWUgPSB0aGVuQ2FzZS0+
YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4ocHJvYywgT3JpZ2luKCksCi0gICAgICAgIHRoZW5DYXNl
LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMTEuNSkpOwotICAg
IHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgSnVtcCwgT3JpZ2luKCksIEZy
ZXF1ZW50ZWRCbG9jayh0YWlsKSk7Ci0KLSAgICBVcHNpbG9uVmFsdWUqIGVsc2VWYWx1ZSA9IGVs
c2VDYXNlLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4oKSwgCi0gICAgICAg
IGVsc2VDYXNlLT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMTAu
NSkpOwotICAgIGVsc2VDYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgSnVtcCwgT3Jp
Z2luKCksIEZyZXF1ZW50ZWRCbG9jayh0YWlsKSk7Ci0KLSAgICBWYWx1ZSogcGhpID0gIHRhaWwt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUGhpLCBGbG9hdCwgT3JpZ2luKCkpOwotICAgIHRoZW5W
YWx1ZS0+c2V0UGhpKHBoaSk7Ci0gICAgZWxzZVZhbHVlLT5zZXRQaGkocGhpKTsKLSAgICBWYWx1
ZSogcmVzdWx0ID0gdGFpbC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCAK
LSAgICAgICAgICAgIHBoaSwgcGhpKTsKLSAgICByZXN1bHQgPSB0YWlsLT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIAotICAgICAgICAgICAgcmVzdWx0LAotICAgICAgICAg
ICAgdGhpbmd5KTsKLSAgICByZXN1bHQgPSB0YWlsLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFk
ZCwgT3JpZ2luKCksIAotICAgICAgICAgICAgcGhpLAotICAgICAgICAgICAgcmVzdWx0KTsKLSAg
ICB0YWlsLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVz
dWx0KTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotICAgIENIRUNLKGlz
SWRlbnRpY2FsKGludm9rZTxmbG9hdD4oKmNvZGUsIDEpLCAxMS41ZiAqIDExLjVmICsgc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KGJpdHdpc2VfY2FzdDxkb3VibGU+KHN0YXRpY19jYXN0PHVpbnQ2NF90Pigx
KSkpICsgMTEuNWYpKTsKLSAgICBDSEVDSyhpc0lkZW50aWNhbChpbnZva2U8ZmxvYXQ+KCpjb2Rl
LCAwKSwgMTAuNWYgKiAxMC41ZiArIHN0YXRpY19jYXN0PGZsb2F0PihiaXR3aXNlX2Nhc3Q8ZG91
YmxlPihzdGF0aWNfY2FzdDx1aW50NjRfdD4oMCkpKSArIDEwLjVmKSk7Ci19Ci0KLXZvaWQgdGVz
dERvdWJsZVByb2R1Y2VyUGhpVG9GbG9hdENvbnZlcnNpb24oZmxvYXQgdmFsdWUpCi17Ci0gICAg
UHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
LSAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Js
b2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiB0YWlsID0g
cHJvYy5hZGRCbG9jaygpOwotCi0gICAgVmFsdWUqIGNvbmRpdGlvbiA9IHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKLSAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
VHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOwotICAgIFZhbHVlKiBm
bG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3Jp
Z2luKCksIGFyZ3VtZW50MzIpOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAot
ICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAotICAgICAgICBjb25kaXRpb24sCi0gICAg
ICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkp
OwotCi0gICAgVmFsdWUqIGFzRG91YmxlID0gdGhlbkNhc2UtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUpOwotICAgIFVwc2lsb25WYWx1
ZSogdGhlblZhbHVlID0gdGhlbkNhc2UtPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBhc0RvdWJsZSk7Ci0gICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShw
cm9jLCBKdW1wLCBPcmlnaW4oKSwgRnJlcXVlbnRlZEJsb2NrKHRhaWwpKTsKLQotICAgIFZhbHVl
KiBjb25zdERvdWJsZSA9IGVsc2VDYXNlLT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIDQyLjUpOwotICAgIFVwc2lsb25WYWx1ZSogZWxzZVZhbHVlID0gZWxzZUNh
c2UtPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KHByb2MsIE9yaWdpbigpLCBjb25zdERvdWJsZSk7
Ci0gICAgZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4o
KSwgRnJlcXVlbnRlZEJsb2NrKHRhaWwpKTsKLQotICAgIFZhbHVlKiBkb3VibGVJbnB1dCA9IHRh
aWwtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUGhpLCBEb3VibGUsIE9yaWdpbigpKTsKLSAgICB0
aGVuVmFsdWUtPnNldFBoaShkb3VibGVJbnB1dCk7Ci0gICAgZWxzZVZhbHVlLT5zZXRQaGkoZG91
YmxlSW5wdXQpOwotCi0gICAgVmFsdWUqIGFyZ0FzRG91YmxlQWdhaW4gPSB0YWlsLT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlKTsKLSAg
ICBWYWx1ZSogZmluYWxBZGQgPSB0YWlsLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3Jp
Z2luKCksIGRvdWJsZUlucHV0LCBhcmdBc0RvdWJsZUFnYWluKTsKLSAgICBWYWx1ZSogZmxvYXRS
ZXN1bHQgPSB0YWlsLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdp
bigpLCBmaW5hbEFkZCk7Ci0gICAgdGFpbC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJl
dHVybiwgT3JpZ2luKCksIGZsb2F0UmVzdWx0KTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQ
cm9jKHByb2MpOwotICAgIENIRUNLKGlzSWRlbnRpY2FsKGludm9rZTxmbG9hdD4oKmNvZGUsIDEs
IGJpdHdpc2VfY2FzdDxpbnQzMl90Pih2YWx1ZSkpLCB2YWx1ZSArIHZhbHVlKSk7Ci0gICAgQ0hF
Q0soaXNJZGVudGljYWwoaW52b2tlPGZsb2F0PigqY29kZSwgMCwgYml0d2lzZV9jYXN0PGludDMy
X3Q+KHZhbHVlKSksIDQyLjVmICsgdmFsdWUpKTsKLX0KLQotdm9pZCB0ZXN0RG91YmxlUHJvZHVj
ZXJQaGlUb0Zsb2F0Q29udmVyc2lvbldpdGhEb3VibGVDb25zdW1lcihmbG9hdCB2YWx1ZSkKLXsK
LSAgICAvLyBJbiB0aGlzIGNhc2UsIHRoZSBVcHNpbG9uLVBoaSBlZmZlY3RpdmVseSBjb250YWlu
cyBhIEZsb2F0IHZhbHVlLCBidXQgaXQgaXMgdXNlZAotICAgIC8vIGFzIGEgRmxvYXQgYW5kIGFz
IGEgRG91YmxlLgotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2Nr
KCk7Ci0gICAgQmFzaWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFz
aWNCbG9jayogdGFpbCA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIFZhbHVlKiBjb25kaXRpb24g
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50MzIgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEp
KTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
Qml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDMyKTsKLQotICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKLSAgICAgICAg
Y29uZGl0aW9uLAotICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVk
QmxvY2soZWxzZUNhc2UpKTsKLQotICAgIFZhbHVlKiBhc0RvdWJsZSA9IHRoZW5DYXNlLT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlKTsK
LSAgICBVcHNpbG9uVmFsdWUqIHRoZW5WYWx1ZSA9IHRoZW5DYXNlLT5hcHBlbmROZXc8VXBzaWxv
blZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYXNEb3VibGUpOwotICAgIHRoZW5DYXNlLT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUocHJvYywgSnVtcCwgT3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayh0YWls
KSk7Ci0KLSAgICBWYWx1ZSogY29uc3REb3VibGUgPSBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0
RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0Mi41KTsKLSAgICBVcHNpbG9uVmFsdWUqIGVs
c2VWYWx1ZSA9IGVsc2VDYXNlLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgY29uc3REb3VibGUpOwotICAgIGVsc2VDYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJv
YywgSnVtcCwgT3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayh0YWlsKSk7Ci0KLSAgICBWYWx1ZSog
ZG91YmxlSW5wdXQgPSB0YWlsLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFBoaSwgRG91YmxlLCBP
cmlnaW4oKSk7Ci0gICAgdGhlblZhbHVlLT5zZXRQaGkoZG91YmxlSW5wdXQpOwotICAgIGVsc2VW
YWx1ZS0+c2V0UGhpKGRvdWJsZUlucHV0KTsKLQotICAgIFZhbHVlKiBhcmdBc0RvdWJsZUFnYWlu
ID0gdGFpbC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwg
ZmxvYXRWYWx1ZSk7Ci0gICAgVmFsdWUqIGZsb2F0QWRkID0gdGFpbC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBBZGQsIE9yaWdpbigpLCBkb3VibGVJbnB1dCwgYXJnQXNEb3VibGVBZ2Fpbik7Ci0K
LSAgICAvLyBGUm91bmQuCi0gICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gdGFpbC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgZmxvYXRBZGQpOwotICAgIFZh
bHVlKiBkb3VibGVSZXN1bHQgPSB0YWlsLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9E
b3VibGUsIE9yaWdpbigpLCBmbG9hdFJlc3VsdCk7Ci0KLSAgICAvLyBUaGlzIG9uZSAqY2Fubm90
KiBiZSBlbGltaW5hdGVkCi0gICAgVmFsdWUqIGRvdWJsZUFkZCA9IHRhaWwtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgZG91YmxlSW5wdXQsIGRvdWJsZVJlc3VsdCk7Ci0K
LSAgICB0YWlsLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwg
ZG91YmxlQWRkKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotICAgIENI
RUNLKGlzSWRlbnRpY2FsKGludm9rZTxkb3VibGU+KCpjb2RlLCAxLCBiaXR3aXNlX2Nhc3Q8aW50
MzJfdD4odmFsdWUpKSwgKHZhbHVlICsgdmFsdWUpICsgc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1
ZSkpKTsKLSAgICBDSEVDSyhpc0lkZW50aWNhbChpbnZva2U8ZG91YmxlPigqY29kZSwgMCwgYml0
d2lzZV9jYXN0PGludDMyX3Q+KHZhbHVlKSksIHN0YXRpY19jYXN0PGRvdWJsZT4oKDQyLjVmICsg
dmFsdWUpICsgNDIuNWYpKSk7Ci19Ci0KLXZvaWQgdGVzdERvdWJsZVByb2R1Y2VyUGhpV2l0aE5v
bkZsb2F0Q29uc3QoZmxvYXQgdmFsdWUsIGRvdWJsZSBjb25zdFZhbHVlKQotewotICAgIFByb2Nl
ZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAg
QmFzaWNCbG9jayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayog
ZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogdGFpbCA9IHByb2Mu
YWRkQmxvY2soKTsKLQotICAgIFZhbHVlKiBjb25kaXRpb24gPSByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0g
ICAgVmFsdWUqIGFyZ3VtZW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5j
LCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKLSAgICBWYWx1ZSogZmxvYXRW
YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigp
LCBhcmd1bWVudDMyKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAg
ICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKLSAgICAgICAgY29uZGl0aW9uLAotICAgICAgICBG
cmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKLQot
ICAgIFZhbHVlKiBhc0RvdWJsZSA9IHRoZW5DYXNlLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZs
b2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlKTsKLSAgICBVcHNpbG9uVmFsdWUqIHRo
ZW5WYWx1ZSA9IHRoZW5DYXNlLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgYXNEb3VibGUpOwotICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywg
SnVtcCwgT3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayh0YWlsKSk7Ci0KLSAgICBWYWx1ZSogY29u
c3REb3VibGUgPSBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBjb25zdFZhbHVlKTsKLSAgICBVcHNpbG9uVmFsdWUqIGVsc2VWYWx1ZSA9IGVsc2VD
YXNlLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4oKSwgY29uc3REb3VibGUp
OwotICAgIGVsc2VDYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgSnVtcCwgT3JpZ2lu
KCksIEZyZXF1ZW50ZWRCbG9jayh0YWlsKSk7Ci0KLSAgICBWYWx1ZSogZG91YmxlSW5wdXQgPSB0
YWlsLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFBoaSwgRG91YmxlLCBPcmlnaW4oKSk7Ci0gICAg
dGhlblZhbHVlLT5zZXRQaGkoZG91YmxlSW5wdXQpOwotICAgIGVsc2VWYWx1ZS0+c2V0UGhpKGRv
dWJsZUlucHV0KTsKLQotICAgIFZhbHVlKiBhcmdBc0RvdWJsZUFnYWluID0gdGFpbC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZSk7Ci0g
ICAgVmFsdWUqIGZpbmFsQWRkID0gdGFpbC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9y
aWdpbigpLCBkb3VibGVJbnB1dCwgYXJnQXNEb3VibGVBZ2Fpbik7Ci0gICAgVmFsdWUqIGZsb2F0
UmVzdWx0ID0gdGFpbC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmln
aW4oKSwgZmluYWxBZGQpOwotICAgIHRhaWwtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCBmbG9hdFJlc3VsdCk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxl
UHJvYyhwcm9jKTsKLSAgICBDSEVDSyhpc0lkZW50aWNhbChpbnZva2U8ZmxvYXQ+KCpjb2RlLCAx
LCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4odmFsdWUpKSwgdmFsdWUgKyB2YWx1ZSkpOwotICAgIENI
RUNLKGlzSWRlbnRpY2FsKGludm9rZTxmbG9hdD4oKmNvZGUsIDAsIGJpdHdpc2VfY2FzdDxpbnQz
Ml90Pih2YWx1ZSkpLCBzdGF0aWNfY2FzdDxmbG9hdD4oY29uc3RWYWx1ZSArIHZhbHVlKSkpOwot
fQotCi12b2lkIHRlc3REb3VibGVBcmdUb0ludDY0Qml0d2lzZUNhc3QoZG91YmxlIHZhbHVlKQot
ewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwotCi0gICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0
d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudCkpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwo
Y29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCB2YWx1ZSksIGJpdHdpc2VfY2FzdDxpbnQ2NF90
Pih2YWx1ZSkpKTsKLX0KLQotdm9pZCB0ZXN0RG91YmxlSW1tVG9JbnQ2NEJpdHdpc2VDYXN0KGRv
dWJsZSB2YWx1ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5l
dzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdmFsdWUpOwotCi0gICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAot
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0d2lz
ZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudCkpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29t
cGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jKSwgYml0d2lzZV9jYXN0PGludDY0X3Q+KHZhbHVlKSkp
OwotfQotCi12b2lkIHRlc3RUd29CaXR3aXNlQ2FzdE9uRG91YmxlKGRvdWJsZSB2YWx1ZSkKLXsK
LSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOwotICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKLSAgICBWYWx1ZSog
Zmlyc3QgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4o
KSwgYXJndW1lbnQpOwotICAgIFZhbHVlKiBzZWNvbmQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmlyc3QpOwotICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBzZWNvbmQpOwotCi0gICAgQ0hF
Q0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIHZhbHVlKSwgdmFsdWUp
KTsKLX0KLQotdm9pZCB0ZXN0Qml0d2lzZUNhc3RPbkRvdWJsZUluTWVtb3J5KGRvdWJsZSB2YWx1
ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOwotICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIE1l
bW9yeVZhbHVlKiBsb2FkRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9j
LCBMb2FkLCBEb3VibGUsIE9yaWdpbigpLCBhZGRyZXNzKTsKLSAgICBWYWx1ZSogY2FzdCA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBsb2FkRG91
YmxlKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmln
aW4oKSwgY2FzdCk7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDY0
X3Q+KHByb2MsICZ2YWx1ZSksIGJpdHdpc2VfY2FzdDxpbnQ2NF90Pih2YWx1ZSkpKTsKLX0KLQot
dm9pZCB0ZXN0Qml0d2lzZUNhc3RPbkRvdWJsZUluTWVtb3J5SW5kZXhlZChkb3VibGUgdmFsdWUp
Ci17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKLSAgICBWYWx1ZSogYmFzZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBWYWx1ZSog
b2Zmc2V0ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgIFZhbHVlKiBzY2FsZWRPZmZzZXQgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNobCwgT3JpZ2luKCksCi0gICAgICAgIG9mZnNldCwK
LSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDMp
KTsKLSAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRk
LCBPcmlnaW4oKSwgYmFzZSwgc2NhbGVkT2Zmc2V0KTsKLSAgICBNZW1vcnlWYWx1ZSogbG9hZERv
dWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgRG91YmxlLCBP
cmlnaW4oKSwgYWRkcmVzcyk7Ci0gICAgVmFsdWUqIGNhc3QgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgbG9hZERvdWJsZSk7Ci0gICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGNhc3QpOwotCi0g
ICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCAmdmFsdWUs
IDApLCBiaXR3aXNlX2Nhc3Q8aW50NjRfdD4odmFsdWUpKSk7Ci19Ci0KLXZvaWQgdGVzdEludDY0
QkFyZ1RvRG91YmxlQml0d2lzZUNhc3QoaW50NjRfdCB2YWx1ZSkKLXsKLSAgICBQcm9jZWR1cmUg
cHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVl
KiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4o
KSwgYXJndW1lbnQpKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91
YmxlPihwcm9jLCB2YWx1ZSksIGJpdHdpc2VfY2FzdDxkb3VibGU+KHZhbHVlKSkpOwotfQotCi12
b2lkIHRlc3RJbnQ2NEJJbW1Ub0RvdWJsZUJpdHdpc2VDYXN0KGludDY0X3QgdmFsdWUpCi17Ci0g
ICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKLSAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgdmFsdWUpOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1
bWVudCkpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHBy
b2MpLCBiaXR3aXNlX2Nhc3Q8ZG91YmxlPih2YWx1ZSkpKTsKLX0KLQotdm9pZCB0ZXN0VHdvQml0
d2lzZUNhc3RPbkludDY0KGludDY0X3QgdmFsdWUpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0g
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1l
bnQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgVmFsdWUqIGZpcnN0ID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50KTsKLSAgICBWYWx1
ZSogc2Vjb25kID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3Jp
Z2luKCksIGZpcnN0KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwgc2Vjb25kKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVB
bmRSdW48aW50NjRfdD4ocHJvYywgdmFsdWUpLCB2YWx1ZSkpOwotfQotCi12b2lkIHRlc3RCaXR3
aXNlQ2FzdE9uSW50NjRJbk1lbW9yeShpbnQ2NF90IHZhbHVlKQotewotICAgIFByb2NlZHVyZSBw
cm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUq
IGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgTWVtb3J5VmFsdWUqIGxvYWREb3VibGUg
PSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4o
KSwgYWRkcmVzcyk7Ci0gICAgVmFsdWUqIGNhc3QgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgbG9hZERvdWJsZSk7Ci0gICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGNhc3QpOwotCi0gICAgQ0hF
Q0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsICZ2YWx1ZSksIGJpdHdp
c2VfY2FzdDxkb3VibGU+KHZhbHVlKSkpOwotfQotCi12b2lkIHRlc3RCaXR3aXNlQ2FzdE9uSW50
NjRJbk1lbW9yeUluZGV4ZWQoaW50NjRfdCB2YWx1ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsK
LSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBiYXNl
ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOwotICAgIFZhbHVlKiBvZmZzZXQgPSByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7
Ci0gICAgVmFsdWUqIHNjYWxlZE9mZnNldCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
U2hsLCBPcmlnaW4oKSwKLSAgICAgICAgb2Zmc2V0LAotICAgICAgICByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMykpOwotICAgIFZhbHVlKiBhZGRyZXNzID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBiYXNlLCBzY2FsZWRP
ZmZzZXQpOwotICAgIE1lbW9yeVZhbHVlKiBsb2FkRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PE1l
bW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksIGFkZHJlc3MpOwotICAgIFZh
bHVlKiBjYXN0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3Jp
Z2luKCksIGxvYWREb3VibGUpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLCBjYXN0KTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBp
bGVBbmRSdW48ZG91YmxlPihwcm9jLCAmdmFsdWUsIDApLCBiaXR3aXNlX2Nhc3Q8ZG91YmxlPih2
YWx1ZSkpKTsKLX0KLQotdm9pZCB0ZXN0RmxvYXRJbW1Ub0ludDMyQml0d2lzZUNhc3QoZmxvYXQg
dmFsdWUpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8Q29u
c3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdmFsdWUpOwotCi0gICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0d2lzZUNhc3Qs
IE9yaWdpbigpLCBhcmd1bWVudCkpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFu
ZFJ1bjxpbnQzMl90Pihwcm9jKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KHZhbHVlKSkpOwotfQot
Ci12b2lkIHRlc3RCaXR3aXNlQ2FzdE9uRmxvYXRJbk1lbW9yeShmbG9hdCB2YWx1ZSkKLXsKLSAg
ICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OwotICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIE1lbW9yeVZhbHVl
KiBsb2FkRmxvYXQgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEZs
b2F0LCBPcmlnaW4oKSwgYWRkcmVzcyk7Ci0gICAgVmFsdWUqIGNhc3QgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgbG9hZEZsb2F0KTsKLSAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2FzdCk7
Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsICZ2
YWx1ZSksIGJpdHdpc2VfY2FzdDxpbnQzMl90Pih2YWx1ZSkpKTsKLX0KLQotdm9pZCB0ZXN0SW50
MzJCQXJnVG9GbG9hdEJpdHdpc2VDYXN0KGludDMyX3QgdmFsdWUpCi17Ci0gICAgUHJvY2VkdXJl
IHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1
ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0KLSAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2lu
KCksIGFyZ3VtZW50KSk7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGZs
b2F0Pihwcm9jLCB2YWx1ZSksIGJpdHdpc2VfY2FzdDxmbG9hdD4odmFsdWUpKSk7Ci19Ci0KLXZv
aWQgdGVzdEludDMyQkltbVRvRmxvYXRCaXR3aXNlQ2FzdChpbnQzMl90IHZhbHVlKQotewotICAg
IFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
Ci0gICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIHZhbHVlKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
LSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1l
bnQpKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZmxvYXQ+KHByb2Mp
LCBiaXR3aXNlX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSkpOwotfQotCi12b2lkIHRlc3RUd29CaXR3aXNl
Q2FzdE9uSW50MzIoaW50MzJfdCB2YWx1ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudCA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKLSAgICBWYWx1ZSogZmlyc3QgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQpOwotICAgIFZhbHVlKiBz
ZWNvbmQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4o
KSwgZmlyc3QpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCBzZWNvbmQpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1
bjxpbnQzMl90Pihwcm9jLCB2YWx1ZSksIHZhbHVlKSk7Ci19Ci0KLXZvaWQgdGVzdEJpdHdpc2VD
YXN0T25JbnQzMkluTWVtb3J5KGludDMyX3QgdmFsdWUpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7
Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYWRk
cmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBNZW1vcnlWYWx1ZSogbG9hZEZsb2F0ID0gcm9v
dC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksIGFk
ZHJlc3MpOwotICAgIFZhbHVlKiBjYXN0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBC
aXR3aXNlQ2FzdCwgT3JpZ2luKCksIGxvYWRGbG9hdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGNhc3QpOwotCi0gICAgQ0hFQ0soaXNJ
ZGVudGljYWwoY29tcGlsZUFuZFJ1bjxmbG9hdD4ocHJvYywgJnZhbHVlKSwgYml0d2lzZV9jYXN0
PGZsb2F0Pih2YWx1ZSkpKTsKLX0KLQotdm9pZCB0ZXN0Q29udmVydERvdWJsZVRvRmxvYXRBcmco
ZG91YmxlIHZhbHVlKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQ
UjApOwotICAgIFZhbHVlKiBhc0Zsb2F0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBE
b3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgYXJndW1lbnQpOwotICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBhc0Zsb2F0KTsKLQotICAgIENIRUNL
KGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZmxvYXQ+KHByb2MsIHZhbHVlKSwgc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHZhbHVlKSkpOwotfQotCi12b2lkIHRlc3RDb252ZXJ0RG91YmxlVG9GbG9hdElt
bShkb3VibGUgdmFsdWUpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBl
bmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHZhbHVlKTsKLSAgICBWYWx1
ZSogYXNGbG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwg
T3JpZ2luKCksIGFyZ3VtZW50KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwgYXNGbG9hdCk7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChj
b21waWxlQW5kUnVuPGZsb2F0Pihwcm9jKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSkpOwot
fQotCi12b2lkIHRlc3RDb252ZXJ0RG91YmxlVG9GbG9hdE1lbShkb3VibGUgdmFsdWUpCi17Ci0g
ICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKLSAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBNZW1vcnlWYWx1
ZSogbG9hZGVkRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2Fk
LCBEb3VibGUsIE9yaWdpbigpLCBhZGRyZXNzKTsKLSAgICBWYWx1ZSogYXNGbG9hdCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIGxvYWRlZERv
dWJsZSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIGFzRmxvYXQpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxm
bG9hdD4ocHJvYywgJnZhbHVlKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSkpOwotfQotCi12
b2lkIHRlc3RDb252ZXJ0RmxvYXRUb0RvdWJsZUFyZyhmbG9hdCB2YWx1ZSkKLXsKLSAgICBQcm9j
ZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAg
IFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywg
T3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGZsb2F0VmFs
dWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwg
YXJndW1lbnQzMik7Ci0gICAgVmFsdWUqIGFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZSk7Ci0gICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFzRG91YmxlKTsK
LQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBiaXR3
aXNlX2Nhc3Q8aW50MzJfdD4odmFsdWUpKSwgc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSkpKTsK
LX0KLQotdm9pZCB0ZXN0Q29udmVydEZsb2F0VG9Eb3VibGVJbW0oZmxvYXQgdmFsdWUpCi17Ci0g
ICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKLSAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgdmFsdWUpOwotICAgIFZhbHVlKiBhc0RvdWJsZSA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGFyZ3VtZW50KTsK
LSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwg
YXNEb3VibGUpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+
KHByb2MpLCBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKSkpOwotfQotCi12b2lkIHRlc3RDb252
ZXJ0RmxvYXRUb0RvdWJsZU1lbShmbG9hdCB2YWx1ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsK
LSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhZGRy
ZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIE1lbW9yeVZhbHVlKiBsb2FkZWRGbG9hdCA9IHJv
b3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgRmxvYXQsIE9yaWdpbigpLCBh
ZGRyZXNzKTsKLSAgICBWYWx1ZSogYXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBsb2FkZWRGbG9hdCk7Ci0gICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFzRG91YmxlKTsKLQot
ICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCAmdmFsdWUp
LCBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKSkpOwotfQotCi12b2lkIHRlc3RDb252ZXJ0RG91
YmxlVG9GbG9hdFRvRG91YmxlVG9GbG9hdChkb3VibGUgdmFsdWUpCi17Ci0gICAgUHJvY2VkdXJl
IHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1
ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Ci0gICAgVmFsdWUqIGFzRmxvYXQgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCBhcmd1bWVu
dCk7Ci0gICAgVmFsdWUqIGFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBG
bG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgYXNGbG9hdCk7Ci0gICAgVmFsdWUqIGFzRmxvYXRBZ2Fp
biA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCks
IGFzRG91YmxlKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwgYXNGbG9hdEFnYWluKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBp
bGVBbmRSdW48ZmxvYXQ+KHByb2MsIHZhbHVlKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSkp
OwotfQotCi12b2lkIHRlc3RMb2FkRmxvYXRDb252ZXJ0RG91YmxlQ29udmVydEZsb2F0U3RvcmVG
bG9hdChmbG9hdCB2YWx1ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBzcmMgPSByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7Ci0gICAgVmFsdWUqIGRzdCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICBNZW1vcnlWYWx1ZSog
bG9hZGVkRmxvYXQgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEZs
b2F0LCBPcmlnaW4oKSwgc3JjKTsKLSAgICBWYWx1ZSogYXNEb3VibGUgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBsb2FkZWRGbG9hdCk7Ci0g
ICAgVmFsdWUqIGFzRmxvYXRBZ2FpbiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91
YmxlVG9GbG9hdCwgT3JpZ2luKCksIGFzRG91YmxlKTsKLSAgICByb290LT5hcHBlbmROZXc8TWVt
b3J5VmFsdWU+KHByb2MsIFN0b3JlLCBPcmlnaW4oKSwgYXNGbG9hdEFnYWluLCBkc3QpOwotCi0g
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJv
b3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7Ci0KLSAgICBm
bG9hdCBpbnB1dCA9IHZhbHVlOwotICAgIGZsb2F0IG91dHB1dCA9IDAuOwotICAgIENIRUNLKCFj
b21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsICZpbnB1dCwgJm91dHB1dCkpOwotICAgIENIRUNL
KGlzSWRlbnRpY2FsKGlucHV0LCBvdXRwdXQpKTsKLX0KLQotdm9pZCB0ZXN0RnJvdW5kQXJnKGRv
dWJsZSB2YWx1ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIw
KTsKLSAgICBWYWx1ZSogYXNGbG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91
YmxlVG9GbG9hdCwgT3JpZ2luKCksIGFyZ3VtZW50KTsKLSAgICBWYWx1ZSogYXNEb3VibGUgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBhc0Zs
b2F0KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmln
aW4oKSwgYXNEb3VibGUpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxk
b3VibGU+KHByb2MsIHZhbHVlKSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGF0aWNfY2FzdDxmbG9h
dD4odmFsdWUpKSkpOwotfQotCi12b2lkIHRlc3RGcm91bmRNZW0oZG91YmxlIHZhbHVlKQotewot
ICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7Ci0gICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgTWVtb3J5VmFs
dWUqIGxvYWRlZERvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9h
ZCwgRG91YmxlLCBPcmlnaW4oKSwgYWRkcmVzcyk7Ci0gICAgVmFsdWUqIGFzRmxvYXQgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCBsb2FkZWRE
b3VibGUpOwotICAgIFZhbHVlKiBhc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGFzRmxvYXQpOwotICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBhc0RvdWJsZSk7Ci0KLSAgICBD
SEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgJnZhbHVlKSwgc3Rh
dGljX2Nhc3Q8ZG91YmxlPihzdGF0aWNfY2FzdDxmbG9hdD4odmFsdWUpKSkpOwotfQotCi12b2lk
IHRlc3RJVG9ENjRBcmcoKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIHNyYyA9IHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKLSAgICBWYWx1ZSogc3JjQXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IElUb0QsIE9yaWdpbigpLCBzcmMpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLCBzcmNBc0RvdWJsZSk7Ci0KLSAgICBhdXRvIGNvZGUgPSBj
b21waWxlUHJvYyhwcm9jKTsKLSAgICBmb3IgKGF1dG8gdGVzdFZhbHVlIDogaW50NjRPcGVyYW5k
cygpKQotICAgICAgICBDSEVDSyhpc0lkZW50aWNhbChpbnZva2U8ZG91YmxlPigqY29kZSwgdGVz
dFZhbHVlLnZhbHVlKSwgc3RhdGljX2Nhc3Q8ZG91YmxlPih0ZXN0VmFsdWUudmFsdWUpKSk7Ci19
Ci0KLXZvaWQgdGVzdElUb0Y2NEFyZygpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogc3JjID0gcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApOwotICAgIFZhbHVlKiBzcmNBc0Zsb2F0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBJVG9GLCBPcmlnaW4oKSwgc3JjKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgc3JjQXNGbG9hdCk7Ci0KLSAgICBhdXRvIGNv
ZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBmb3IgKGF1dG8gdGVzdFZhbHVlIDogaW50NjRP
cGVyYW5kcygpKQotICAgICAgICBDSEVDSyhpc0lkZW50aWNhbChpbnZva2U8ZmxvYXQ+KCpjb2Rl
LCB0ZXN0VmFsdWUudmFsdWUpLCBzdGF0aWNfY2FzdDxmbG9hdD4odGVzdFZhbHVlLnZhbHVlKSkp
OwotfQotCi12b2lkIHRlc3RJVG9EMzJBcmcoKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIHNyYyA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCkpOwotICAgIFZhbHVlKiBzcmNBc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgSVRvRCwgT3JpZ2luKCksIHNyYyk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHNyY0FzRG91YmxlKTsKLQotICAgIGF1
dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotICAgIGZvciAoYXV0byB0ZXN0VmFsdWUgOiBp
bnQzMk9wZXJhbmRzKCkpCi0gICAgICAgIENIRUNLKGlzSWRlbnRpY2FsKGludm9rZTxkb3VibGU+
KCpjb2RlLCB0ZXN0VmFsdWUudmFsdWUpLCBzdGF0aWNfY2FzdDxkb3VibGU+KHRlc3RWYWx1ZS52
YWx1ZSkpKTsKLX0KLQotdm9pZCB0ZXN0SVRvRjMyQXJnKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJv
YzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBz
cmMgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogc3JjQXNGbG9hdCA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgSVRvRiwgT3JpZ2luKCksIHNyYyk7Ci0gICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHNyY0FzRmxvYXQpOwotCi0g
ICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAgZm9yIChhdXRvIHRlc3RWYWx1
ZSA6IGludDMyT3BlcmFuZHMoKSkKLSAgICAgICAgQ0hFQ0soaXNJZGVudGljYWwoaW52b2tlPGZs
b2F0PigqY29kZSwgdGVzdFZhbHVlLnZhbHVlKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHRlc3RWYWx1
ZS52YWx1ZSkpKTsKLX0KLQotdm9pZCB0ZXN0SVRvRDY0TWVtKCkKLXsKLSAgICBQcm9jZWR1cmUg
cHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVl
KiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIE1lbW9yeVZhbHVlKiBsb2FkZWRTcmMg
PSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4o
KSwgYWRkcmVzcyk7Ci0gICAgVmFsdWUqIHNyY0FzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBJVG9ELCBPcmlnaW4oKSwgbG9hZGVkU3JjKTsKLSAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgc3JjQXNEb3VibGUpOwotCi0g
ICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAgaW50NjRfdCBpbk1lbW9yeVZh
bHVlOwotICAgIGZvciAoYXV0byB0ZXN0VmFsdWUgOiBpbnQ2NE9wZXJhbmRzKCkpIHsKLSAgICAg
ICAgaW5NZW1vcnlWYWx1ZSA9IHRlc3RWYWx1ZS52YWx1ZTsKLSAgICAgICAgQ0hFQ0soaXNJZGVu
dGljYWwoaW52b2tlPGRvdWJsZT4oKmNvZGUsICZpbk1lbW9yeVZhbHVlKSwgc3RhdGljX2Nhc3Q8
ZG91YmxlPih0ZXN0VmFsdWUudmFsdWUpKSk7Ci0gICAgICAgIENIRUNLKGluTWVtb3J5VmFsdWUg
PT0gdGVzdFZhbHVlLnZhbHVlKTsKLSAgICB9Ci19Ci0KLXZvaWQgdGVzdElUb0Y2NE1lbSgpCi17
Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKLSAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBNZW1vcnlW
YWx1ZSogbG9hZGVkU3JjID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2Fk
LCBJbnQ2NCwgT3JpZ2luKCksIGFkZHJlc3MpOwotICAgIFZhbHVlKiBzcmNBc0Zsb2F0ID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJVG9GLCBPcmlnaW4oKSwgbG9hZGVkU3JjKTsKLSAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgc3Jj
QXNGbG9hdCk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBpbnQ2
NF90IGluTWVtb3J5VmFsdWU7Ci0gICAgZm9yIChhdXRvIHRlc3RWYWx1ZSA6IGludDY0T3BlcmFu
ZHMoKSkgewotICAgICAgICBpbk1lbW9yeVZhbHVlID0gdGVzdFZhbHVlLnZhbHVlOwotICAgICAg
ICBDSEVDSyhpc0lkZW50aWNhbChpbnZva2U8ZmxvYXQ+KCpjb2RlLCAmaW5NZW1vcnlWYWx1ZSks
IHN0YXRpY19jYXN0PGZsb2F0Pih0ZXN0VmFsdWUudmFsdWUpKSk7Ci0gICAgICAgIENIRUNLKGlu
TWVtb3J5VmFsdWUgPT0gdGVzdFZhbHVlLnZhbHVlKTsKLSAgICB9Ci19Ci0KLXZvaWQgdGVzdElU
b0QzMk1lbSgpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
LSAgICBNZW1vcnlWYWx1ZSogbG9hZGVkU3JjID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVl
Pihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksIGFkZHJlc3MpOwotICAgIFZhbHVlKiBzcmNB
c0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSVRvRCwgT3JpZ2luKCksIGxv
YWRlZFNyYyk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwg
T3JpZ2luKCksIHNyY0FzRG91YmxlKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHBy
b2MpOwotICAgIGludDMyX3QgaW5NZW1vcnlWYWx1ZTsKLSAgICBmb3IgKGF1dG8gdGVzdFZhbHVl
IDogaW50MzJPcGVyYW5kcygpKSB7Ci0gICAgICAgIGluTWVtb3J5VmFsdWUgPSB0ZXN0VmFsdWUu
dmFsdWU7Ci0gICAgICAgIENIRUNLKGlzSWRlbnRpY2FsKGludm9rZTxkb3VibGU+KCpjb2RlLCAm
aW5NZW1vcnlWYWx1ZSksIHN0YXRpY19jYXN0PGRvdWJsZT4odGVzdFZhbHVlLnZhbHVlKSkpOwot
ICAgICAgICBDSEVDSyhpbk1lbW9yeVZhbHVlID09IHRlc3RWYWx1ZS52YWx1ZSk7Ci0gICAgfQot
fQotCi12b2lkIHRlc3RJVG9GMzJNZW0oKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFkZHJlc3MgPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7Ci0gICAgTWVtb3J5VmFsdWUqIGxvYWRlZFNyYyA9IHJvb3QtPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBhZGRyZXNzKTsK
LSAgICBWYWx1ZSogc3JjQXNGbG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSVRv
RiwgT3JpZ2luKCksIGxvYWRlZFNyYyk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHNyY0FzRmxvYXQpOwotCi0gICAgYXV0byBjb2RlID0g
Y29tcGlsZVByb2MocHJvYyk7Ci0gICAgaW50MzJfdCBpbk1lbW9yeVZhbHVlOwotICAgIGZvciAo
YXV0byB0ZXN0VmFsdWUgOiBpbnQzMk9wZXJhbmRzKCkpIHsKLSAgICAgICAgaW5NZW1vcnlWYWx1
ZSA9IHRlc3RWYWx1ZS52YWx1ZTsKLSAgICAgICAgQ0hFQ0soaXNJZGVudGljYWwoaW52b2tlPGZs
b2F0PigqY29kZSwgJmluTWVtb3J5VmFsdWUpLCBzdGF0aWNfY2FzdDxmbG9hdD4odGVzdFZhbHVl
LnZhbHVlKSkpOwotICAgICAgICBDSEVDSyhpbk1lbW9yeVZhbHVlID09IHRlc3RWYWx1ZS52YWx1
ZSk7Ci0gICAgfQotfQotCi12b2lkIHRlc3RJVG9ENjRJbW0oaW50NjRfdCB2YWx1ZSkKLXsKLSAg
ICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OwotICAgIFZhbHVlKiBzcmMgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgdmFsdWUpOwotICAgIFZhbHVlKiBzcmNBc0Zsb2F0aW5nUG9pbnQgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIElUb0QsIE9yaWdpbigpLCBzcmMpOwotICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBzcmNBc0Zsb2F0aW5n
UG9pbnQpOwotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9j
KSwgc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSkpKTsKLX0KLQotdm9pZCB0ZXN0SVRvRjY0SW1t
KGludDY0X3QgdmFsdWUpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogc3JjID0gcm9vdC0+YXBwZW5kTmV3
PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHZhbHVlKTsKLSAgICBWYWx1ZSogc3JjQXNG
bG9hdGluZ1BvaW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJVG9GLCBPcmlnaW4o
KSwgc3JjKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgc3JjQXNGbG9hdGluZ1BvaW50KTsKLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21w
aWxlQW5kUnVuPGZsb2F0Pihwcm9jKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSkpOwotfQot
Ci12b2lkIHRlc3RJVG9EMzJJbW0oaW50MzJfdCB2YWx1ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJv
YzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBz
cmMgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdmFsdWUp
OwotICAgIFZhbHVlKiBzcmNBc0Zsb2F0aW5nUG9pbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIElUb0QsIE9yaWdpbigpLCBzcmMpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBzcmNBc0Zsb2F0aW5nUG9pbnQpOwotICAgIENI
RUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jKSwgc3RhdGljX2Nhc3Q8
ZG91YmxlPih2YWx1ZSkpKTsKLX0KLQotdm9pZCB0ZXN0SVRvRjMySW1tKGludDMyX3QgdmFsdWUp
Ci17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKLSAgICBWYWx1ZSogc3JjID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIHZhbHVlKTsKLSAgICBWYWx1ZSogc3JjQXNGbG9hdGluZ1BvaW50ID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJVG9GLCBPcmlnaW4oKSwgc3JjKTsKLSAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgc3JjQXNG
bG9hdGluZ1BvaW50KTsKLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGZsb2F0
Pihwcm9jKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSkpOwotfQotCi12b2lkIHRlc3RJVG9E
UmVkdWNlZFRvSVRvRjY0QXJnKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBzcmMgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7Ci0gICAgVmFsdWUqIHNyY0FzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBJVG9ELCBPcmlnaW4oKSwgc3JjKTsKLSAgICBWYWx1ZSogZmxvYXRSZXN1bHQgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCBzcmNBc0Rv
dWJsZSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIGZsb2F0UmVzdWx0KTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2Mp
OwotICAgIGZvciAoYXV0byB0ZXN0VmFsdWUgOiBpbnQ2NE9wZXJhbmRzKCkpCi0gICAgICAgIENI
RUNLKGlzSWRlbnRpY2FsKGludm9rZTxmbG9hdD4oKmNvZGUsIHRlc3RWYWx1ZS52YWx1ZSksIHN0
YXRpY19jYXN0PGZsb2F0Pih0ZXN0VmFsdWUudmFsdWUpKSk7Ci19Ci0KLXZvaWQgdGVzdElUb0RS
ZWR1Y2VkVG9JVG9GMzJBcmcoKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIHNyYyA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpOwotICAgIFZhbHVlKiBzcmNBc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgSVRvRCwgT3JpZ2luKCksIHNyYyk7Ci0gICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgc3JjQXNEb3Vi
bGUpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCBmbG9hdFJlc3VsdCk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsK
LSAgICBmb3IgKGF1dG8gdGVzdFZhbHVlIDogaW50MzJPcGVyYW5kcygpKQotICAgICAgICBDSEVD
Syhpc0lkZW50aWNhbChpbnZva2U8ZmxvYXQ+KCpjb2RlLCB0ZXN0VmFsdWUudmFsdWUpLCBzdGF0
aWNfY2FzdDxmbG9hdD4odGVzdFZhbHVlLnZhbHVlKSkpOwotfQotCi12b2lkIHRlc3RTdG9yZTMy
KGludCB2YWx1ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIGludCBzbG90ID0gMHhiYWFkYmVlZjsKLSAgICByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCks
Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBUcnVu
YywgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAotICAgICAgICByb290
LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZzbG90KSwgMCk7Ci0g
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkp
OwotCi0gICAgQ0hFQ0soIWNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCB2YWx1ZSkpOwotICAgIENI
RUNLKHNsb3QgPT0gdmFsdWUpOwotfQotCi12b2lkIHRlc3RTdG9yZUNvbnN0YW50KGludCB2YWx1
ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOwotICAgIGludCBzbG90ID0gMHhiYWFkYmVlZjsKLSAgICByb290LT5hcHBlbmRO
ZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksCi0gICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB2YWx1ZSksCi0g
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnNs
b3QpLCAwKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2Ms
IFJldHVybiwgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCAwKSk7Ci0KLSAgICBDSEVDSyghY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpKTsKLSAg
ICBDSEVDSyhzbG90ID09IHZhbHVlKTsKLX0KLQotdm9pZCB0ZXN0U3RvcmVDb25zdGFudFB0cihp
bnRwdHJfdCB2YWx1ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIGludHB0cl90IHNsb3Q7Ci0jaWYgQ1BVKEFERFJF
U1M2NCkKLSAgICBzbG90ID0gKHN0YXRpY19jYXN0PGludHB0cl90PigweGJhYWRiZWVmKSA8PCAz
MikgKyBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMHhiYWFkYmVlZik7Ci0jZWxzZQotICAgIHNsb3Qg
PSAweGJhYWRiZWVmOwotI2VuZGlmCi0gICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigK
LSAgICAgICAgcHJvYywgU3RvcmUsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHZhbHVlKSwKLSAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmc2xvdCksIDApOwotICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKLQot
ICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludD4ocHJvYykpOwotICAgIENIRUNLKHNsb3QgPT0g
dmFsdWUpOwotfQotCi12b2lkIHRlc3RTdG9yZThBcmcoKQotewotICAgIHsgLy8gRGlyZWN0IGFk
ZHJlc3NpbmcuCi0gICAgICAgIFByb2NlZHVyZSBwcm9jOwotICAgICAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgICAgIFZhbHVlKiB2YWx1ZSA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKTsKLSAgICAgICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0K
LSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZTgsIE9yaWdp
bigpLCB2YWx1ZSwgYWRkcmVzcyk7Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCB2YWx1ZSk7Ci0KLSAgICAgICAgaW50OF90IHN0b3Jh
Z2UgPSAwOwotICAgICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIDQyLCAm
c3RvcmFnZSkgPT0gNDIpOwotICAgICAgICBDSEVDSyhzdG9yYWdlID09IDQyKTsKLSAgICB9Ci0K
LSAgICB7IC8vIEluZGV4ZWQgYWRkcmVzc2luZy4KLSAgICAgICAgUHJvY2VkdXJlIHByb2M7Ci0g
ICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICAgICAgVmFs
dWUqIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCks
Ci0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgICAgICBWYWx1ZSogYmFzZSA9IHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIxKTsKLSAgICAgICAgVmFsdWUqIG9mZnNldCA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsK
LSAgICAgICAgVmFsdWUqIGRpc3BsYWNlbWVudCA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFs
dWU+KHByb2MsIE9yaWdpbigpLCAtMSk7Ci0KLSAgICAgICAgVmFsdWUqIGJhc2VEaXNwbGFjZW1l
bnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGRpc3BsYWNl
bWVudCwgYmFzZSk7Ci0gICAgICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBiYXNlRGlzcGxhY2VtZW50LCBvZmZzZXQpOwotCi0g
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmU4LCBPcmlnaW4o
KSwgdmFsdWUsIGFkZHJlc3MpOwotICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgdmFsdWUpOwotCi0gICAgICAgIGludDhfdCBzdG9yYWdl
ID0gMDsKLSAgICAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCA0MiwgJnN0
b3JhZ2UsIDEpID09IDQyKTsKLSAgICAgICAgQ0hFQ0soc3RvcmFnZSA9PSA0Mik7Ci0gICAgfQot
fQotCi12b2lkIHRlc3RTdG9yZThJbW0oKQotewotICAgIHsgLy8gRGlyZWN0IGFkZHJlc3Npbmcu
Ci0gICAgICAgIFByb2NlZHVyZSBwcm9jOwotICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOwotCi0gICAgICAgIFZhbHVlKiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0Mik7Ci0gICAgICAgIFZhbHVlKiBhZGRyZXNz
ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOwotCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1
ZT4ocHJvYywgU3RvcmU4LCBPcmlnaW4oKSwgdmFsdWUsIGFkZHJlc3MpOwotICAgICAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgdmFsdWUpOwot
Ci0gICAgICAgIGludDhfdCBzdG9yYWdlID0gMDsKLSAgICAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1
bjxpbnQ2NF90Pihwcm9jLCAmc3RvcmFnZSkgPT0gNDIpOwotICAgICAgICBDSEVDSyhzdG9yYWdl
ID09IDQyKTsKLSAgICB9Ci0KLSAgICB7IC8vIEluZGV4ZWQgYWRkcmVzc2luZy4KLSAgICAgICAg
UHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7Ci0KLSAgICAgICAgVmFsdWUqIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIDQyKTsKLSAgICAgICAgVmFsdWUqIGJhc2UgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7Ci0gICAgICAgIFZhbHVlKiBvZmZzZXQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAg
IFZhbHVlKiBkaXNwbGFjZW1lbnQgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgLTEpOwotCi0gICAgICAgIFZhbHVlKiBiYXNlRGlzcGxhY2VtZW50ID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBkaXNwbGFjZW1lbnQsIGJh
c2UpOwotICAgICAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQWRkLCBPcmlnaW4oKSwgYmFzZURpc3BsYWNlbWVudCwgb2Zmc2V0KTsKLQotICAgICAgICBy
b290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlOCwgT3JpZ2luKCksIHZhbHVl
LCBhZGRyZXNzKTsKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJl
dHVybiwgT3JpZ2luKCksIHZhbHVlKTsKLQotICAgICAgICBpbnQ4X3Qgc3RvcmFnZSA9IDA7Ci0g
ICAgICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgJnN0b3JhZ2UsIDEpID09
IDQyKTsKLSAgICAgICAgQ0hFQ0soc3RvcmFnZSA9PSA0Mik7Ci0gICAgfQotfQotCi12b2lkIHRl
c3RTdG9yZVBhcnRpYWw4Qml0UmVnaXN0ZXJPblg4NigpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7
Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIC8vIFdlIHdh
bnQgdG8gaGF2ZSB0aGlzIGluIEVDWC4KLSAgICBWYWx1ZSogcmV0dXJuVmFsdWUgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7Ci0KLSAgICAvLyBXZSB3YW50IHRoaXMgc3VjayBpbiBFRFguCi0gICAgVmFsdWUq
IHdoZXJlVG9TdG9yZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLQotICAgIC8vIFRoZSBwYXRjaCBwb2lu
dCBpcyB0aGVyZSB0byBoZWxwIHVzIGZvcmNlIHRoZSBoYW5kIG9mIHRoZSBjb21waWxlci4KLSAg
ICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2lu
dFZhbHVlPihwcm9jLCBJbnQzMiwgT3JpZ2luKCkpOwotCi0gICAgLy8gRm9yIHRoZSB2YWx1ZSBh
Ym92ZSB0byBiZSBtYXRlcmlhbGl6ZWQgYW5kIGdpdmUgdGhlIGFsbG9jYXRvcgotICAgIC8vIGEg
c3Ryb25nZXIgaW5zZW50aXZlIHRvIG5hbWUgdGhvc2UgcmVnaXN0ZXIgdGhlIHdheSB3ZSBuZWVk
LgotICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKHJldHVyblZhbHVlLCBW
YWx1ZVJlcChHUFJJbmZvOjpyZWdUMykpKTsKLSAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3Ry
YWluZWRWYWx1ZSh3aGVyZVRvU3RvcmUsIFZhbHVlUmVwKEdQUkluZm86OnJlZ1QyKSkpOwotCi0g
ICAgLy8gV2UnbGwgcHJvZHVjZSBFREkuCi0gICAgcGF0Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWlu
dCA9IFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6cmVnVDYpOwotCi0gICAgLy8gR2l2ZSB0aGUgYWxs
b2NhdG9yIGEgZ29vZCByZWFzb24gbm90IHRvIHVzZSBhbnkgb3RoZXIgcmVnaXN0ZXIuCi0gICAg
UmVnaXN0ZXJTZXQgY2xvYmJlclNldCA9IFJlZ2lzdGVyU2V0OjphbGxHUFJzKCk7Ci0gICAgY2xv
YmJlclNldC5leGNsdWRlKFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKTsKLSAgICBjbG9i
YmVyU2V0LmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSk7
Ci0gICAgY2xvYmJlclNldC5jbGVhcihHUFJJbmZvOjpyZWdUMyk7Ci0gICAgY2xvYmJlclNldC5j
bGVhcihHUFJJbmZvOjpyZWdUMik7Ci0gICAgY2xvYmJlclNldC5jbGVhcihHUFJJbmZvOjpyZWdU
Nik7Ci0gICAgcGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUoY2xvYmJlclNldCk7Ci0KLSAgICAvLyBT
ZXQgRURJLgotICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKLSAgICAgICAgWyZdIChDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsK
LSAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2go
aml0KTsKLSAgICAgICAgICAgIGppdC54b3I2NChwYXJhbXNbMF0uZ3ByKCksIHBhcmFtc1swXS5n
cHIoKSk7Ci0gICAgICAgIH0pOwotCi0gICAgLy8gSWYgZXZlcnl0aGluZyB3ZW50IHdlbGwsIHdl
IHNob3VsZCBoYXZlIHRoZSBiaWcgbnVtYmVyIGluIGVheCwKLSAgICAvLyBwYXRjaHBvaW50ID09
IEVESSBhbmQgd2hlcmVUb1N0b3JlID0gRURYLgotICAgIC8vIFNpbmNlIEVESSA9PSA1LCBhbmQg
QUggPSA1IG9uIDggYml0IHN0b3JlLCB0aGlzIHdvdWxkIGdvIHdyb25nCi0gICAgLy8gaWYgd2Ug
dXNlIFg4NiBwYXJ0aWFsIHJlZ2lzdGVycy4KLSAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFs
dWU+KHByb2MsIFN0b3JlOCwgT3JpZ2luKCksIHBhdGNocG9pbnQsIHdoZXJlVG9TdG9yZSk7Ci0K
LSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwg
cmV0dXJuVmFsdWUpOwotCi0gICAgaW50OF90IHN0b3JhZ2UgPSAweGZmOwotICAgIENIRUNLKGNv
bXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgMHgxMjM0NTY3OGFiY2RlZjEyLCAmc3RvcmFnZSkg
PT0gMHgxMjM0NTY3OGFiY2RlZjEyKTsKLSAgICBDSEVDSyghc3RvcmFnZSk7Ci19Ci0KLXZvaWQg
dGVzdFN0b3JlMTZBcmcoKQotewotICAgIHsgLy8gRGlyZWN0IGFkZHJlc3NpbmcuCi0gICAgICAg
IFByb2NlZHVyZSBwcm9jOwotICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOwotCi0gICAgICAgIFZhbHVlKiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICAg
ICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0KLSAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZTE2LCBPcmlnaW4oKSwgdmFsdWUsIGFkZHJl
c3MpOwotICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgdmFsdWUpOwotCi0gICAgICAgIGludDE2X3Qgc3RvcmFnZSA9IC0xOwotICAgICAg
ICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIDQyLCAmc3RvcmFnZSkgPT0gNDIp
OwotICAgICAgICBDSEVDSyhzdG9yYWdlID09IDQyKTsKLSAgICB9Ci0KLSAgICB7IC8vIEluZGV4
ZWQgYWRkcmVzc2luZy4KLSAgICAgICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICAgICAgVmFsdWUqIHZhbHVlID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCkpOwotICAgICAgICBWYWx1ZSogYmFzZSA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsK
LSAgICAgICAgVmFsdWUqIG9mZnNldCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLSAgICAgICAgVmFsdWUq
IGRpc3BsYWNlbWVudCA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdp
bigpLCAtMSk7Ci0KLSAgICAgICAgVmFsdWUqIGJhc2VEaXNwbGFjZW1lbnQgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGRpc3BsYWNlbWVudCwgYmFzZSk7Ci0g
ICAgICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQs
IE9yaWdpbigpLCBiYXNlRGlzcGxhY2VtZW50LCBvZmZzZXQpOwotCi0gICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmUxNiwgT3JpZ2luKCksIHZhbHVlLCBhZGRy
ZXNzKTsKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwg
T3JpZ2luKCksIHZhbHVlKTsKLQotICAgICAgICBpbnQxNl90IHN0b3JhZ2UgPSAtMTsKLSAgICAg
ICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCA0MiwgJnN0b3JhZ2UsIDEpID09
IDQyKTsKLSAgICAgICAgQ0hFQ0soc3RvcmFnZSA9PSA0Mik7Ci0gICAgfQotfQotCi12b2lkIHRl
c3RTdG9yZTE2SW1tKCkKLXsKLSAgICB7IC8vIERpcmVjdCBhZGRyZXNzaW5nLgotICAgICAgICBQ
cm9jZWR1cmUgcHJvYzsKLSAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKLQotICAgICAgICBWYWx1ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgNDIpOwotICAgICAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKLQotICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0
b3JlMTYsIE9yaWdpbigpLCB2YWx1ZSwgYWRkcmVzcyk7Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCB2YWx1ZSk7Ci0KLSAgICAgICAg
aW50MTZfdCBzdG9yYWdlID0gLTE7Ci0gICAgICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRf
dD4ocHJvYywgJnN0b3JhZ2UpID09IDQyKTsKLSAgICAgICAgQ0hFQ0soc3RvcmFnZSA9PSA0Mik7
Ci0gICAgfQotCi0gICAgeyAvLyBJbmRleGVkIGFkZHJlc3NpbmcuCi0gICAgICAgIFByb2NlZHVy
ZSBwcm9jOwotICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotCi0g
ICAgICAgIFZhbHVlKiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCA0Mik7Ci0gICAgICAgIFZhbHVlKiBiYXNlID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwot
ICAgICAgICBWYWx1ZSogb2Zmc2V0ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAgICBWYWx1ZSog
ZGlzcGxhY2VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIC0xKTsKLQotICAgICAgICBWYWx1ZSogYmFzZURpc3BsYWNlbWVudCA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgZGlzcGxhY2VtZW50LCBiYXNlKTsKLSAg
ICAgICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwg
T3JpZ2luKCksIGJhc2VEaXNwbGFjZW1lbnQsIG9mZnNldCk7Ci0KLSAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZTE2LCBPcmlnaW4oKSwgdmFsdWUsIGFkZHJl
c3MpOwotICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgdmFsdWUpOwotCi0gICAgICAgIGludDE2X3Qgc3RvcmFnZSA9IC0xOwotICAgICAg
ICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsICZzdG9yYWdlLCAxKSA9PSA0Mik7
Ci0gICAgICAgIENIRUNLKHN0b3JhZ2UgPT0gNDIpOwotICAgIH0KLX0KLQotdm9pZCB0ZXN0VHJ1
bmMoaW50NjRfdCB2YWx1ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHBy
b2MsIHZhbHVlKSA9PSBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlKSk7Ci19Ci0KLXZvaWQgdGVzdEFk
ZDEoaW50IHZhbHVlKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAot
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdp
bigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCi0gICAgICAgICAgICByb290
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpKTsKLQotICAgIENI
RUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCB2YWx1ZSkgPT0gdmFsdWUgKyAxKTsKLX0KLQot
dm9pZCB0ZXN0QWRkMVB0cihpbnRwdHJfdCB2YWx1ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsK
LSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2lu
KCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgICAgICByb290LT5hcHBl
bmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKSk7Ci0KLSAgICBDSEVDSyhj
b21waWxlQW5kUnVuPGludHB0cl90Pihwcm9jLCB2YWx1ZSkgPT0gdmFsdWUgKyAxKTsKLX0KLQot
dm9pZCB0ZXN0TmVnMzIoaW50MzJfdCB2YWx1ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIFN1YiwgT3JpZ2luKCks
Ci0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgMCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAg
ICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpKSk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIHZhbHVlKSA9
PSAtdmFsdWUpOwotfQotCi12b2lkIHRlc3ROZWdQdHIoaW50cHRyX3QgdmFsdWUpCi17Ci0gICAg
UHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
LSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwg
T3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBw
cm9jLCBTdWIsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkp
OwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnRwdHJfdD4ocHJvYywgdmFsdWUpID09IC12
YWx1ZSk7Ci19Ci0KLXZvaWQgdGVzdFN0b3JlQWRkTG9hZDMyKGludCBhbW91bnQpCi17Ci0gICAg
UHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
LSAgICBpbnQgc2xvdCA9IDM3OwotICAgIENvbnN0UHRyVmFsdWUqIHNsb3RQdHIgPSByb290LT5h
cHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZzbG90KTsKLSAgICByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCks
Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBBZGQs
IE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9j
LCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksIHNsb3RQdHIpLAotICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0g
ICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSksCi0gICAgICAgIHNsb3RQdHIsIDApOwot
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIDApKTsKLQotICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludD4ocHJvYywgYW1vdW50
KSk7Ci0gICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7Ci19Ci0KLXZvaWQgdGVzdFN0b3Jl
UmVsQWRkTG9hZEFjcTMyKGludCBhbW91bnQpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBpbnQgc2xvdCA9IDM3Owot
ICAgIENvbnN0UHRyVmFsdWUqIHNsb3RQdHIgPSByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1
ZT4ocHJvYywgT3JpZ2luKCksICZzbG90KTsKLSAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFs
dWU+KAotICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAotICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBM
b2FkLCBJbnQzMiwgT3JpZ2luKCksIHNsb3RQdHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5n
ZSg0MikpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAg
ICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApKSksCi0gICAgICAgIHNsb3RQdHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSg0Mikp
OwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIDApKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotICAg
IGlmIChpc0FSTTY0KCkpIHsKLSAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJs
ZGEiKTsKLSAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJzdGwiKTsKLSAgICB9
Ci0gICAgaWYgKGlzWDg2KCkpCi0gICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAi
eGNoZyIpOwotICAgIENIRUNLKCFpbnZva2U8aW50PigqY29kZSwgYW1vdW50KSk7Ci0gICAgQ0hF
Q0soc2xvdCA9PSAzNyArIGFtb3VudCk7Ci19Ci0KLXZvaWQgdGVzdFN0b3JlQWRkTG9hZEltbTMy
KGludCBhbW91bnQpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBpbnQgc2xvdCA9IDM3OwotICAgIENvbnN0UHRyVmFs
dWUqIHNsb3RQdHIgPSByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksICZzbG90KTsKLSAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICBw
cm9jLCBTdG9yZSwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0g
ICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksIHNsb3RQdHIpLAot
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IGFtb3VudCkpLAotICAgICAgICBzbG90UHRyLCAwKTsKLSAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7Ci0KLSAgICBDSEVD
SyghY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpKTsKLSAgICBDSEVDSyhzbG90ID09IDM3ICsgYW1v
dW50KTsKLX0KLQotdm9pZCB0ZXN0U3RvcmVBZGRMb2FkOChpbnQgYW1vdW50LCBCMzo6T3Bjb2Rl
IGxvYWRPcGNvZGUpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBpbnQ4X3Qgc2xvdCA9IDM3OwotICAgIENvbnN0UHRy
VmFsdWUqIHNsb3RQdHIgPSByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksICZzbG90KTsKLSAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAg
ICBwcm9jLCBTdG9yZTgsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAotICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgbG9hZE9wY29kZSwgT3JpZ2luKCksIHNsb3RQdHIp
LAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBw
cm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSks
Ci0gICAgICAgIHNsb3RQdHIsIDApOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
LSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKLQotICAgIENIRUNLKCFjb21waWxl
QW5kUnVuPGludD4ocHJvYywgYW1vdW50KSk7Ci0gICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3Vu
dCk7Ci19Ci0KLXZvaWQgdGVzdFN0b3JlUmVsQWRkTG9hZEFjcTgoaW50IGFtb3VudCwgQjM6Ok9w
Y29kZSBsb2FkT3Bjb2RlKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgaW50OF90IHNsb3QgPSAzNzsKLSAgICBDb25z
dFB0clZhbHVlKiBzbG90UHRyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAmc2xvdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAg
ICAgICAgcHJvYywgU3RvcmU4LCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKLSAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIGxvYWRPcGNv
ZGUsIE9yaWdpbigpLCBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKSwK
LSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJv
YywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpLAot
ICAgICAgICBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKTsKLSAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCAwKSk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBpZiAoaXNB
Uk02NCgpKSB7Ci0gICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibGRhIik7Ci0g
ICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAic3RsIik7Ci0gICAgfQotICAgIGlm
IChpc1g4NigpKQotICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgInhjaGciKTsK
LSAgICBDSEVDSyghaW52b2tlPGludD4oKmNvZGUsIGFtb3VudCkpOwotICAgIENIRUNLKHNsb3Qg
PT0gMzcgKyBhbW91bnQpOwotfQotCi12b2lkIHRlc3RTdG9yZVJlbEFkZEZlbmNlTG9hZEFjcTgo
aW50IGFtb3VudCwgQjM6Ok9wY29kZSBsb2FkT3Bjb2RlKQotewotICAgIFByb2NlZHVyZSBwcm9j
OwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgaW50OF90IHNs
b3QgPSAzNzsKLSAgICBDb25zdFB0clZhbHVlKiBzbG90UHRyID0gcm9vdC0+YXBwZW5kTmV3PENv
bnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmc2xvdCk7Ci0gICAgVmFsdWUqIGxvYWRlZFZh
bHVlID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAgcHJvYywgbG9hZE9w
Y29kZSwgT3JpZ2luKCksIHNsb3RQdHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSg0Mikp
OwotICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IHJvb3QtPmFwcGVuZE5ldzxQYXRj
aHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKLSAgICBwYXRjaHBvaW50LT5jbG9i
YmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7Ci0gICAgcGF0Y2hwb2lu
dC0+c2V0R2VuZXJhdG9yKAotICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBT
dGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7Ci0gICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRj
aFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAgICAgICAgICBqaXQuc3RvcmU4
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDB4YmVlZiksICZzbG90KTsKLSAgICAgICAgfSk7
Ci0gICAgcGF0Y2hwb2ludC0+ZWZmZWN0cyA9IEVmZmVjdHM6Om5vbmUoKTsKLSAgICBwYXRjaHBv
aW50LT5lZmZlY3RzLmZlbmNlID0gdHJ1ZTsKLSAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFs
dWU+KAotICAgICAgICBwcm9jLCBTdG9yZTgsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKLSAgICAgICAg
ICAgIGxvYWRlZFZhbHVlLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAg
ICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApKSksCi0gICAgICAgIHNsb3RQdHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBS
YW5nZSg0MikpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHBy
b2MpOwotICAgIGlmIChpc0FSTTY0KCkpIHsKLSAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24o
KmNvZGUsICJsZGEiKTsKLSAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJzdGwi
KTsKLSAgICB9Ci0gICAgaWYgKGlzWDg2KCkpCi0gICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9u
KCpjb2RlLCAieGNoZyIpOwotICAgIENIRUNLKCFpbnZva2U8aW50PigqY29kZSwgYW1vdW50KSk7
Ci0gICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7Ci19Ci0KLXZvaWQgdGVzdFN0b3JlQWRk
TG9hZEltbTgoaW50IGFtb3VudCwgQjM6Ok9wY29kZSBsb2FkT3Bjb2RlKQotewotICAgIFByb2Nl
ZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAg
aW50OF90IHNsb3QgPSAzNzsKLSAgICBDb25zdFB0clZhbHVlKiBzbG90UHRyID0gcm9vdC0+YXBw
ZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmc2xvdCk7Ci0gICAgcm9vdC0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAgcHJvYywgU3RvcmU4LCBPcmlnaW4oKSwK
LSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEFkZCwg
T3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2Ms
IGxvYWRPcGNvZGUsIE9yaWdpbigpLCBzbG90UHRyKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpKSwKLSAgICAgICAgc2xv
dFB0ciwgMCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgMCkpOwotCi0gICAgQ0hFQ0soIWNvbXBpbGVBbmRSdW48aW50Pihw
cm9jKSk7Ci0gICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7Ci19Ci0KLXZvaWQgdGVzdFN0
b3JlQWRkTG9hZDE2KGludCBhbW91bnQsIEIzOjpPcGNvZGUgbG9hZE9wY29kZSkKLXsKLSAgICBQ
cm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwot
ICAgIGludDE2X3Qgc2xvdCA9IDM3OwotICAgIENvbnN0UHRyVmFsdWUqIHNsb3RQdHIgPSByb290
LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZzbG90KTsKLSAgICBy
b290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICBwcm9jLCBTdG9yZTE2LCBPcmln
aW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2Ms
IEFkZCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KHByb2MsIGxvYWRPcGNvZGUsIE9yaWdpbigpLCBzbG90UHRyKSwKLSAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigp
LAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpLAotICAgICAgICBzbG90UHRyLCAw
KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAwKSk7Ci0KLSAgICBDSEVDSyghY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGFt
b3VudCkpOwotICAgIENIRUNLKHNsb3QgPT0gMzcgKyBhbW91bnQpOwotfQotCi12b2lkIHRlc3RT
dG9yZVJlbEFkZExvYWRBY3ExNihpbnQgYW1vdW50LCBCMzo6T3Bjb2RlIGxvYWRPcGNvZGUpCi17
Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKLSAgICBpbnQxNl90IHNsb3QgPSAzNzsKLSAgICBDb25zdFB0clZhbHVlKiBzbG90UHRy
ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmc2xvdCk7
Ci0gICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAgcHJvYywgU3RvcmUx
NiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAg
ICBwcm9jLCBBZGQsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBsb2FkT3Bjb2RlLCBPcmlnaW4oKSwgc2xv
dFB0ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQyKSksCi0gICAgICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4o
KSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSwKLSAgICAgICAgc2xvdFB0ciwg
MCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQyKSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwotCi0gICAgYXV0
byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAgaWYgKGlzQVJNNjQoKSkgewotICAgICAg
ICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxkYSIpOwotICAgICAgICBjaGVja1VzZXNJ
bnN0cnVjdGlvbigqY29kZSwgInN0bCIpOwotICAgIH0KLSAgICBpZiAoaXNYODYoKSkKLSAgICAg
ICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJ4Y2hnIik7Ci0gICAgQ0hFQ0soIWludm9r
ZTxpbnQ+KCpjb2RlLCBhbW91bnQpKTsKLSAgICBDSEVDSyhzbG90ID09IDM3ICsgYW1vdW50KTsK
LX0KLQotdm9pZCB0ZXN0U3RvcmVBZGRMb2FkSW1tMTYoaW50IGFtb3VudCwgQjM6Ok9wY29kZSBs
b2FkT3Bjb2RlKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgaW50MTZfdCBzbG90ID0gMzc7Ci0gICAgQ29uc3RQdHJW
YWx1ZSogc2xvdFB0ciA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmln
aW4oKSwgJnNsb3QpOwotICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAg
IHByb2MsIFN0b3JlMTYsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAotICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgbG9hZE9wY29kZSwgT3JpZ2luKCksIHNsb3RQdHIp
LAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIGFtb3VudCkpLAotICAgICAgICBzbG90UHRyLCAwKTsKLSAgICByb290LT5hcHBlbmROZXdD
b250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7Ci0KLSAgICBD
SEVDSyghY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpKTsKLSAgICBDSEVDSyhzbG90ID09IDM3ICsg
YW1vdW50KTsKLX0KLQotdm9pZCB0ZXN0U3RvcmVBZGRMb2FkNjQoaW50IGFtb3VudCkKLXsKLSAg
ICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OwotICAgIGludDY0X3Qgc2xvdCA9IDM3MDAwMDAwMDAwbGw7Ci0gICAgQ29uc3RQdHJWYWx1ZSog
c2xvdFB0ciA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
JnNsb3QpOwotICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgIHByb2Ms
IFN0b3JlLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAg
ICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwgc2xvdFB0ciksCi0gICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAotICAgICAgICBzbG90UHRyLCAwKTsKLSAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAw
KSk7Ci0KLSAgICBDSEVDSyghY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGFtb3VudCkpOwotICAg
IENIRUNLKHNsb3QgPT0gMzcwMDAwMDAwMDBsbCArIGFtb3VudCk7Ci19Ci0KLXZvaWQgdGVzdFN0
b3JlUmVsQWRkTG9hZEFjcTY0KGludCBhbW91bnQpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0g
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBpbnQ2NF90IHNsb3Qg
PSAzNzAwMDAwMDAwMGxsOwotICAgIENvbnN0UHRyVmFsdWUqIHNsb3RQdHIgPSByb290LT5hcHBl
bmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZzbG90KTsKLSAgICByb290LT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksCi0g
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBBZGQsIE9y
aWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAg
ICAgICAgICAgICBwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksIHNsb3RQdHIsIDAsIEhlYXBS
YW5nZSg0MiksIEhlYXBSYW5nZSg0MikpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwK
LSAgICAgICAgc2xvdFB0ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQyKSk7Ci0gICAg
cm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgMCkpOwotCi0gICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAgaWYgKGlz
QVJNNjQoKSkgewotICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxkYSIpOwot
ICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgInN0bCIpOwotICAgIH0KLSAgICBp
ZiAoaXNYODYoKSkKLSAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJ4Y2hnIik7
Ci0gICAgQ0hFQ0soIWludm9rZTxpbnQ+KCpjb2RlLCBhbW91bnQpKTsKLSAgICBDSEVDSyhzbG90
ID09IDM3MDAwMDAwMDAwbGwgKyBhbW91bnQpOwotfQotCi12b2lkIHRlc3RTdG9yZUFkZExvYWRJ
bW02NChpbnQ2NF90IGFtb3VudCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIGludDY0X3Qgc2xvdCA9IDM3MDAwMDAw
MDAwMGxsOwotICAgIENvbnN0UHRyVmFsdWUqIHNsb3RQdHIgPSByb290LT5hcHBlbmROZXc8Q29u
c3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZzbG90KTsKLSAgICByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KAotICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksCi0gICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAot
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQ2
NCwgT3JpZ2luKCksIHNsb3RQdHIpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0
NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCkpLAotICAgICAgICBzbG90UHRyLCAwKTsK
LSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwg
T3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCAwKSk7Ci0KLSAgICBDSEVDSyghY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpKTsKLSAg
ICBDSEVDSyhzbG90ID09IDM3MDAwMDAwMDAwMGxsICsgYW1vdW50KTsKLX0KLQotdm9pZCB0ZXN0
U3RvcmVBZGRMb2FkMzJJbmRleChpbnQgYW1vdW50KQotewotICAgIFByb2NlZHVyZSBwcm9jOwot
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgaW50IHNsb3QgPSAz
NzsKLSAgICBpbnQqIHB0ciA9ICZzbG90OwotICAgIGludHB0cl90IHplcm8gPSAwOwotICAgIFZh
bHVlKiBzbG90UHRyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgQWRk
LCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAg
ICAgICAgIHByb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigpLAotICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmcHRyKSksCi0g
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBM
b2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnplcm8pKSk7Ci0gICAgcm9vdC0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAgcHJvYywgU3RvcmUsIE9yaWdpbigpLAotICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQWRkLCBPcmln
aW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9h
ZCwgSW50MzIsIE9yaWdpbigpLCBzbG90UHRyKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpLAotICAgICAgICBzbG90UHRyLCAwKTsKLSAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCAwKSk7Ci0KLSAgICBDSEVDSyghY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGFtb3VudCkpOwot
ICAgIENIRUNLKHNsb3QgPT0gMzcgKyBhbW91bnQpOwotfQotCi12b2lkIHRlc3RTdG9yZUFkZExv
YWRJbW0zMkluZGV4KGludCBhbW91bnQpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBpbnQgc2xvdCA9IDM3OwotICAg
IGludCogcHRyID0gJnNsb3Q7Ci0gICAgaW50cHRyX3QgemVybyA9IDA7Ci0gICAgVmFsdWUqIHNs
b3RQdHIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBBZGQsIE9yaWdp
bigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAg
cHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5h
cHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZwdHIpKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIExvYWQsIHBv
aW50ZXJUeXBlKCksIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0
UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmemVybykpKTsKLSAgICByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KAotICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksCi0gICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAot
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQz
MiwgT3JpZ2luKCksIHNsb3RQdHIpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0
MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCkpLAotICAgICAgICBzbG90UHRyLCAwKTsK
LSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwg
T3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCAwKSk7Ci0KLSAgICBDSEVDSyghY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpKTsKLSAg
ICBDSEVDSyhzbG90ID09IDM3ICsgYW1vdW50KTsKLX0KLQotdm9pZCB0ZXN0U3RvcmVBZGRMb2Fk
OEluZGV4KGludCBhbW91bnQsIEIzOjpPcGNvZGUgbG9hZE9wY29kZSkKLXsKLSAgICBQcm9jZWR1
cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIGlu
dDhfdCBzbG90ID0gMzc7Ci0gICAgaW50OF90KiBwdHIgPSAmc2xvdDsKLSAgICBpbnRwdHJfdCB6
ZXJvID0gMDsKLSAgICBWYWx1ZSogc2xvdFB0ciA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0g
ICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1v
cnlWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4o
KSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmln
aW4oKSwgJnB0cikpLAotICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAg
ICAgICAgICAgcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCksCi0gICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZ6ZXJvKSkp
OwotICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgIHByb2MsIFN0b3Jl
OCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAg
ICBwcm9jLCBBZGQsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPihwcm9jLCBsb2FkT3Bjb2RlLCBPcmlnaW4oKSwgc2xvdFB0ciksCi0gICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBP
cmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSwKLSAgICAgICAgc2xv
dFB0cik7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgMCkpOwotCi0gICAgQ0hFQ0soIWNvbXBpbGVBbmRSdW48aW50Pihwcm9j
LCBhbW91bnQpKTsKLSAgICBDSEVDSyhzbG90ID09IDM3ICsgYW1vdW50KTsKLX0KLQotdm9pZCB0
ZXN0U3RvcmVBZGRMb2FkSW1tOEluZGV4KGludCBhbW91bnQsIEIzOjpPcGNvZGUgbG9hZE9wY29k
ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOwotICAgIGludDhfdCBzbG90ID0gMzc7Ci0gICAgaW50OF90KiBwdHIgPSAmc2xv
dDsKLSAgICBpbnRwdHJfdCB6ZXJvID0gMDsKLSAgICBWYWx1ZSogc2xvdFB0ciA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCi0gICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBMb2FkLCBwb2lu
dGVyVHlwZSgpLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0
clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnB0cikpLAotICAgICAgICByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3Jp
Z2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksICZ6ZXJvKSkpOwotICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0g
ICAgICAgIHByb2MsIFN0b3JlOCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBsb2FkT3Bjb2RlLCBPcmlnaW4oKSwgc2xv
dFB0ciksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgYW1vdW50KSksCi0gICAgICAgIHNsb3RQdHIpOwotICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKLQotICAg
IENIRUNLKCFjb21waWxlQW5kUnVuPGludD4ocHJvYykpOwotICAgIENIRUNLKHNsb3QgPT0gMzcg
KyBhbW91bnQpOwotfQotCi12b2lkIHRlc3RTdG9yZUFkZExvYWQxNkluZGV4KGludCBhbW91bnQs
IEIzOjpPcGNvZGUgbG9hZE9wY29kZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIGludDE2X3Qgc2xvdCA9IDM3Owot
ICAgIGludDE2X3QqIHB0ciA9ICZzbG90OwotICAgIGludHB0cl90IHplcm8gPSAwOwotICAgIFZh
bHVlKiBzbG90UHRyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgQWRk
LCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAg
ICAgICAgIHByb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigpLAotICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmcHRyKSksCi0g
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBM
b2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnplcm8pKSk7Ci0gICAgcm9vdC0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAgcHJvYywgU3RvcmUxNiwgT3JpZ2luKCksCi0g
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBBZGQsIE9y
aWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBs
b2FkT3Bjb2RlLCBPcmlnaW4oKSwgc2xvdFB0ciksCi0gICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSwKLSAgICAgICAgc2xvdFB0cik7Ci0gICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LAotICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
MCkpOwotCi0gICAgQ0hFQ0soIWNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhbW91bnQpKTsKLSAg
ICBDSEVDSyhzbG90ID09IDM3ICsgYW1vdW50KTsKLX0KLQotdm9pZCB0ZXN0U3RvcmVBZGRMb2Fk
SW1tMTZJbmRleChpbnQgYW1vdW50LCBCMzo6T3Bjb2RlIGxvYWRPcGNvZGUpCi17Ci0gICAgUHJv
Y2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAg
ICBpbnQxNl90IHNsb3QgPSAzNzsKLSAgICBpbnQxNl90KiBwdHIgPSAmc2xvdDsKLSAgICBpbnRw
dHJfdCB6ZXJvID0gMDsKLSAgICBWYWx1ZSogc2xvdFB0ciA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCi0gICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBP
cmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgJnB0cikpLAotICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KAotICAgICAgICAgICAgcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCksCi0gICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZ6
ZXJvKSkpOwotICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgIHByb2Ms
IFN0b3JlMTYsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAg
ICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4ocHJvYywgbG9hZE9wY29kZSwgT3JpZ2luKCksIHNsb3RQdHIpLAotICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFt
b3VudCkpLAotICAgICAgICBzbG90UHRyKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7Ci0KLSAgICBDSEVDSyghY29t
cGlsZUFuZFJ1bjxpbnQ+KHByb2MpKTsKLSAgICBDSEVDSyhzbG90ID09IDM3ICsgYW1vdW50KTsK
LX0KLQotdm9pZCB0ZXN0U3RvcmVBZGRMb2FkNjRJbmRleChpbnQgYW1vdW50KQotewotICAgIFBy
b2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0g
ICAgaW50NjRfdCBzbG90ID0gMzcwMDAwMDAwMDBsbDsKLSAgICBpbnQ2NF90KiBwdHIgPSAmc2xv
dDsKLSAgICBpbnRwdHJfdCB6ZXJvID0gMDsKLSAgICBWYWx1ZSogc2xvdFB0ciA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCi0gICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBMb2FkLCBwb2lu
dGVyVHlwZSgpLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0
clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnB0cikpLAotICAgICAgICByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3Jp
Z2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksICZ6ZXJvKSkpOwotICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0g
ICAgICAgIHByb2MsIFN0b3JlLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKLSAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwgc2xv
dFB0ciksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAotICAgICAgICBzbG90UHRyLCAw
KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAwKSk7Ci0KLSAgICBDSEVDSyghY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGFt
b3VudCkpOwotICAgIENIRUNLKHNsb3QgPT0gMzcwMDAwMDAwMDBsbCArIGFtb3VudCk7Ci19Ci0K
LXZvaWQgdGVzdFN0b3JlQWRkTG9hZEltbTY0SW5kZXgoaW50NjRfdCBhbW91bnQpCi17Ci0gICAg
UHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
LSAgICBpbnQ2NF90IHNsb3QgPSAzNzAwMDAwMDAwMDBsbDsKLSAgICBpbnQ2NF90KiBwdHIgPSAm
c2xvdDsKLSAgICBpbnRwdHJfdCB6ZXJvID0gMDsKLSAgICBWYWx1ZSogc2xvdFB0ciA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCi0gICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBMb2FkLCBw
b2ludGVyVHlwZSgpLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25z
dFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnB0cikpLAotICAgICAgICByb290LT5hcHBlbmRO
ZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwg
T3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksICZ6ZXJvKSkpOwotICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
Ci0gICAgICAgIHByb2MsIFN0b3JlLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCi0gICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwg
c2xvdFB0ciksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgYW1vdW50KSksCi0gICAgICAgIHNsb3RQdHIsIDApOwotICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsK
LQotICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludD4ocHJvYykpOwotICAgIENIRUNLKHNsb3Qg
PT0gMzcwMDAwMDAwMDAwbGwgKyBhbW91bnQpOwotfQotCi12b2lkIHRlc3RTdG9yZVN1YkxvYWQo
aW50IGFtb3VudCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIGludDMyX3Qgc3RhcnRWYWx1ZSA9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50MzJfdD46Om1pbigpOwotICAgIGludDMyX3Qgc2xvdCA9IHN0YXJ0VmFsdWU7
Ci0gICAgQ29uc3RQdHJWYWx1ZSogc2xvdFB0ciA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgJnNsb3QpOwotICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlW
YWx1ZT4oCi0gICAgICAgIHByb2MsIFN0b3JlLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIFN1YiwgT3JpZ2luKCksCi0gICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmln
aW4oKSwgc2xvdFB0ciksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAg
ICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCkpKSwKLSAgICAgICAgc2xvdFB0ciwgMCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICBy
b290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwotCi0gICAg
Q0hFQ0soIWNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhbW91bnQpKTsKLSAgICBDSEVDSyhzbG90
ID09IHN0YXJ0VmFsdWUgLSBhbW91bnQpOwotfQotCi12b2lkIHRlc3RTdG9yZUFkZExvYWRJbnRl
cmZlcmVuY2UoaW50IGFtb3VudCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIGludCBzbG90ID0gMzc7Ci0gICAgQ29u
c3RQdHJWYWx1ZSogc2xvdFB0ciA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgJnNsb3QpOwotICAgIEFyZ3VtZW50UmVnVmFsdWUqIG90aGVyU2xvdFB0ciA9
Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBNZW1vcnlWYWx1ZSogbG9hZCA9IHJvb3Qt
PmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBzbG90
UHRyKTsKLSAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICBwcm9jLCBT
dG9yZSwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCA2NjYpLAotICAgICAgICBvdGhlclNsb3RQdHIsIDApOwotICAgIHJvb3Qt
PmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgIHByb2MsIFN0b3JlLCBPcmlnaW4oKSwK
LSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEFkZCwg
T3JpZ2luKCksCi0gICAgICAgICAgICBsb2FkLCByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KSksCi0gICAgICAgIHNsb3RQdHIsIDApOwotICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IDApKTsKLQotICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludD4ocHJvYywgJnNsb3QpKTsKLSAg
ICBDSEVDSyhzbG90ID09IDM3ICsgYW1vdW50KTsKLX0KLQotdm9pZCB0ZXN0U3RvcmVBZGRBbmRM
b2FkKGludCBhbW91bnQsIGludCBtYXNrKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgaW50IHNsb3QgPSAzNzsKLSAg
ICBDb25zdFB0clZhbHVlKiBzbG90UHRyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCAmc2xvdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVl
PigKLSAgICAgICAgcHJvYywgU3RvcmUsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKLSAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgQWRkLCBP
cmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHBy
b2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgc2xvdFB0ciksCi0gICAgICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCkpLAotICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIG1h
c2spKSwKLSAgICAgICAgc2xvdFB0ciwgMCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwotCi0gICAgQ0hFQ0soIWNv
bXBpbGVBbmRSdW48aW50Pihwcm9jKSk7Ci0gICAgQ0hFQ0soc2xvdCA9PSAoKDM3ICsgYW1vdW50
KSAmIG1hc2spKTsKLX0KLQotdm9pZCB0ZXN0U3RvcmVOZWdMb2FkMzIoaW50MzJfdCB2YWx1ZSkK
LXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOwotCi0gICAgaW50MzJfdCBzbG90ID0gdmFsdWU7Ci0KLSAgICBDb25zdFB0clZhbHVl
KiBzbG90UHRyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCAmc2xvdCk7Ci0gICAgCi0gICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAg
ICAgcHJvYywgU3RvcmUsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAotICAgICAgICAgICAgcHJvYywgU3ViLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSwKLSAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBz
bG90UHRyKSksCi0gICAgICAgIHNsb3RQdHIsIDApOwotICAgIAotICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKLQotICAgIENIRUNLKCFj
b21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MpKTsKLSAgICBDSEVDSyhzbG90ID09IC12YWx1ZSk7
Ci19Ci0KLXZvaWQgdGVzdFN0b3JlTmVnTG9hZFB0cihpbnRwdHJfdCB2YWx1ZSkKLXsKLSAgICBQ
cm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwot
Ci0gICAgaW50cHRyX3Qgc2xvdCA9IHZhbHVlOwotCi0gICAgQ29uc3RQdHJWYWx1ZSogc2xvdFB0
ciA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnNsb3Qp
OwotICAgIAotICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgIHByb2Ms
IFN0b3JlLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAg
ICAgICAgIHByb2MsIFN1YiwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApLAotICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSwg
c2xvdFB0cikpLAotICAgICAgICBzbG90UHRyLCAwKTsKLSAgICAKLSAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJvb3QtPmFw
cGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7Ci0KLSAgICBDSEVDSygh
Y29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jKSk7Ci0gICAgQ0hFQ0soc2xvdCA9PSAtdmFsdWUp
OwotfQotCi12b2lkIHRlc3RBZGQxVW5jb21tdXRlZChpbnQgdmFsdWUpCi17Ci0gICAgUHJvY2Vk
dXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBB
ZGQsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIDEpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
LSAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2Ms
IHZhbHVlKSA9PSB2YWx1ZSArIDEpOwotfQotCi12b2lkIHRlc3RMb2FkT2Zmc2V0KCkKLXsKLSAg
ICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OwotICAgIGludCBhcnJheVtdID0geyAxLCAyIH07Ci0gICAgQ29uc3RQdHJWYWx1ZSogYXJyYXlQ
dHIgPSByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFycmF5
KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAg
ICBwcm9jLCBBZGQsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksIGFycmF5UHRyLCAwKSwKLSAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9y
aWdpbigpLCBhcnJheVB0ciwgc3RhdGljX2Nhc3Q8aW50MzJfdD4oc2l6ZW9mKGludCkpKSkpOwot
Ci0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpID09IGFycmF5WzBdICsgYXJyYXlb
MV0pOwotfQotCi12b2lkIHRlc3RMb2FkT2Zmc2V0Tm90Q29uc3RhbnQoKQotewotICAgIFByb2Nl
ZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAg
aW50IGFycmF5W10gPSB7IDEsIDIgfTsKLSAgICBWYWx1ZSogYXJyYXlQdHIgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAg
ICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxN
ZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBhcnJheVB0ciwgMCksCi0g
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMy
LCBPcmlnaW4oKSwgYXJyYXlQdHIsIHN0YXRpY19jYXN0PGludDMyX3Q+KHNpemVvZihpbnQpKSkp
KTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCAmYXJyYXlbMF0pID09IGFy
cmF5WzBdICsgYXJyYXlbMV0pOwotfQotCi12b2lkIHRlc3RMb2FkT2Zmc2V0VXNpbmdBZGQoKQot
ewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7Ci0gICAgaW50IGFycmF5W10gPSB7IDEsIDIgfTsKLSAgICBDb25zdFB0clZhbHVlKiBh
cnJheVB0ciA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
YXJyYXkpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAg
ICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4o
KSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAg
ICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLCBhcnJheVB0ciwKLSAgICAgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSkpLAot
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAgICAgICAg
ICBwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwg
YXJyYXlQdHIsCi0gICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgc3RhdGljX2Nhc3Q8aW50MzJfdD4oc2l6ZW9mKGludCkpKSkp
KSk7Ci0gICAgCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpID09IGFycmF5WzBd
ICsgYXJyYXlbMV0pOwotfQotCi12b2lkIHRlc3RMb2FkT2Zmc2V0VXNpbmdBZGRJbnRlcmZlcmVu
Y2UoKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7Ci0gICAgaW50IGFycmF5W10gPSB7IDEsIDIgfTsKLSAgICBDb25zdFB0clZh
bHVlKiBhcnJheVB0ciA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmln
aW4oKSwgYXJyYXkpOwotICAgIEFyZ3VtZW50UmVnVmFsdWUqIG90aGVyQXJyYXlQdHIgPQotICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgQ29uc3QzMlZhbHVlKiB0aGVOdW1iZXJPZlRoZUJl
YXN0ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDY2Nik7
Ci0gICAgTWVtb3J5VmFsdWUqIGxlZnQgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAot
ICAgICAgICBwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLCBhcnJheVB0ciwK
LSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgMCkpKTsKLSAgICBNZW1vcnlWYWx1ZSogcmlnaHQgPSByb290LT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KAotICAgICAgICBwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksCi0gICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLCBh
cnJheVB0ciwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgc3RhdGljX2Nhc3Q8aW50MzJfdD4oc2l6ZW9mKGludCkpKSkpOwotICAgIHJv
b3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgIHByb2MsIFN0b3JlLCBPcmlnaW4o
KSwgdGhlTnVtYmVyT2ZUaGVCZWFzdCwgb3RoZXJBcnJheVB0ciwgMCk7Ci0gICAgcm9vdC0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAgcHJvYywgU3RvcmUsIE9yaWdpbigpLCB0aGVO
dW1iZXJPZlRoZUJlYXN0LCBvdGhlckFycmF5UHRyLCBzdGF0aWNfY2FzdDxpbnQzMl90PihzaXpl
b2YoaW50KSkpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAg
ICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksIGxlZnQsIHJpZ2h0KSk7Ci0gICAgCi0gICAg
Q0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsICZhcnJheVswXSkgPT0gMSArIDIpOwotICAg
IENIRUNLKGFycmF5WzBdID09IDY2Nik7Ci0gICAgQ0hFQ0soYXJyYXlbMV0gPT0gNjY2KTsKLX0K
LQotdm9pZCB0ZXN0TG9hZE9mZnNldFVzaW5nQWRkTm90Q29uc3RhbnQoKQotewotICAgIFByb2Nl
ZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAg
aW50IGFycmF5W10gPSB7IDEsIDIgfTsKLSAgICBWYWx1ZSogYXJyYXlQdHIgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAg
ICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxN
ZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigp
LAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAg
ICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksIGFycmF5UHRyLAotICAgICAgICAgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKSksCi0g
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAgICAg
IHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLCBh
cnJheVB0ciwKLSAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBzdGF0aWNfY2FzdDxpbnQzMl90PihzaXplb2YoaW50KSkpKSkp
KTsKLSAgICAKLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgJmFycmF5WzBdKSA9
PSBhcnJheVswXSArIGFycmF5WzFdKTsKLX0KLQotdm9pZCB0ZXN0TG9hZEFkZHJTaGlmdCh1bnNp
Z25lZCBzaGlmdCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIGludCBzbG90c1syXTsKLQotICAgIC8vIEZpZ3VyZSBv
dXQgd2hpY2ggc2xvdCB0byB1c2Ugd2hpbGUgaGF2aW5nIHByb3BlciBhbGlnbm1lbnQgZm9yIHRo
ZSBzaGlmdC4KLSAgICBpbnQqIHNsb3Q7Ci0gICAgdWludHB0cl90IGFyZzsKLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSBzaXplb2Yoc2xvdHMpL3NpemVvZihzbG90c1swXSk7IGktLTspIHsKLSAgICAg
ICAgc2xvdCA9IHNsb3RzICsgaTsKLSAgICAgICAgYXJnID0gYml0d2lzZV9jYXN0PHVpbnRwdHJf
dD4oc2xvdCkgPj4gc2hpZnQ7Ci0gICAgICAgIGlmIChiaXR3aXNlX2Nhc3Q8aW50Kj4oYXJnIDw8
IHNoaWZ0KSA9PSBzbG90KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgKnNsb3Qg
PSA4Njc1MzA5OwotICAgIAotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwKLSAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgU2hs
LCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHNoaWZ0
KSkpKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhcmcpID09IDg2NzUz
MDkpOwotfQotCi12b2lkIHRlc3RGcmFtZVBvaW50ZXIoKQotewotICAgIFByb2NlZHVyZSBwcm9j
OwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZyYW1lUG9pbnRlciwgT3JpZ2luKCkp
KTsKLQotICAgIHZvaWQqIGZwID0gY29tcGlsZUFuZFJ1bjx2b2lkKj4ocHJvYyk7Ci0gICAgQ0hF
Q0soZnAgPCAmcHJvYyk7Ci0gICAgQ0hFQ0soZnAgPj0gYml0d2lzZV9jYXN0PGNoYXIqPigmcHJv
YykgLSAxMDAwMCk7Ci19Ci0KLXZvaWQgdGVzdE92ZXJyaWRlRnJhbWVQb2ludGVyKCkKLXsKLSAg
ICB7Ci0gICAgICAgIFByb2NlZHVyZSBwcm9jOwotICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOwotCi0gICAgICAgIC8vIEFkZCBhIHN0YWNrIHNsb3QgdG8gbWFrZSB0
aGUgZnJhbWUgbm9uIHRyaXZpYWwuCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxTbG90QmFzZVZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgcHJvYy5hZGRTdGFja1Nsb3QoOCkpOwotCi0gICAgICAgIC8v
IFN1YiBvbiB4ODYgVXNlRGVmIHRoZSBzb3VyY2UuIElmIEZQIGlzIG5vdCBwcm90ZWN0ZWQgY29y
cmVjdGx5LCBpdCB3aWxsIGJlIG92ZXJyaWRkZW4gc2luY2UgaXQgaXMgdGhlIGxhc3QgdmlzaWJs
ZSB1c2UuCi0gICAgICAgIFZhbHVlKiBvZmZzZXQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAg
IFZhbHVlKiBmcCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRnJhbWVQb2ludGVyLCBP
cmlnaW4oKSk7Ci0gICAgICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFN1YiwgT3JpZ2luKCksIGZwLCBvZmZzZXQpOwotCi0gICAgICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOwotICAgICAg
ICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIDEpKTsKLSAgICB9Ci0gICAgewot
ICAgICAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLQotICAgICAgICByb290LT5hcHBlbmROZXc8U2xvdEJhc2VWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIHByb2MuYWRkU3RhY2tTbG90KDgpKTsKLQotICAgICAgICBWYWx1ZSogb2Zm
c2V0ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgICAgICBWYWx1ZSogZnAgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEZyYW1lUG9pbnRlciwgT3JpZ2luKCkpOwotICAgICAgICBWYWx1ZSog
b2Zmc2V0RlAgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCks
IG9mZnNldCwgZnApOwotICAgICAgICBWYWx1ZSogYXJnID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAg
ICAgICBWYWx1ZSogb2Zmc2V0QXJnID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQs
IE9yaWdpbigpLCBvZmZzZXQsIGFyZyk7Ci0gICAgICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIG9mZnNldEFyZywgb2Zmc2V0RlAp
OwotCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCByZXN1bHQpOwotICAgICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHBy
b2MsIDEsIDIpKTsKLSAgICB9Ci19Ci0KLXZvaWQgdGVzdFN0YWNrU2xvdCgpCi17Ci0gICAgUHJv
Y2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3Jp
Z2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxTbG90QmFzZVZhbHVlPihwcm9jLCBPcmln
aW4oKSwgcHJvYy5hZGRTdGFja1Nsb3QoMSkpKTsKLQotICAgIHZvaWQqIHN0YWNrU2xvdCA9IGNv
bXBpbGVBbmRSdW48dm9pZCo+KHByb2MpOwotICAgIENIRUNLKHN0YWNrU2xvdCA8ICZwcm9jKTsK
LSAgICBDSEVDSyhzdGFja1Nsb3QgPj0gYml0d2lzZV9jYXN0PGNoYXIqPigmcHJvYykgLSAxMDAw
MCk7Ci19Ci0KLXZvaWQgdGVzdExvYWRGcm9tRnJhbWVQb2ludGVyKCkKLXsKLSAgICBQcm9jZWR1
cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAgICAgIHBy
b2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBGcmFtZVBvaW50ZXIsIE9yaWdpbigpKSkpOwotCi0gICAgdm9p
ZCogZnAgPSBjb21waWxlQW5kUnVuPHZvaWQqPihwcm9jKTsKLSAgICB2b2lkKiBteUZQID0gX19i
dWlsdGluX2ZyYW1lX2FkZHJlc3MoMCk7Ci0gICAgQ0hFQ0soZnAgPD0gbXlGUCk7Ci0gICAgQ0hF
Q0soZnAgPj0gYml0d2lzZV9jYXN0PGNoYXIqPihteUZQKSAtIDEwMDAwKTsKLX0KLQotdm9pZCB0
ZXN0U3RvcmVMb2FkU3RhY2tTbG90KGludCB2YWx1ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsK
LSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgU2xvdEJhc2VW
YWx1ZSogc3RhY2sgPQotICAgICAgICByb290LT5hcHBlbmROZXc8U2xvdEJhc2VWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIHByb2MuYWRkU3RhY2tTbG90KHNpemVvZihpbnQpKSk7Ci0KLSAgICByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCks
Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBUcnVu
YywgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAotICAgICAgICBzdGFj
aywgMCk7Ci0gICAgCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFs
dWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgc3RhY2spKTsKLQotICAgIENIRUNLKGNv
bXBpbGVBbmRSdW48aW50Pihwcm9jLCB2YWx1ZSkgPT0gdmFsdWUpOwotfQotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBMb2FkZWRUeXBlLCB0eXBlbmFtZSBFZmZlY3RpdmVUeXBlPgotRWZmZWN0aXZlVHlw
ZSBtb2RlbExvYWQoRWZmZWN0aXZlVHlwZSB2YWx1ZSkKLXsKLSAgICB1bmlvbiB7Ci0gICAgICAg
IEVmZmVjdGl2ZVR5cGUgb3JpZ2luYWw7Ci0gICAgICAgIExvYWRlZFR5cGUgbG9hZGVkOwotICAg
IH0gdTsKLQotICAgIHUub3JpZ2luYWwgPSB2YWx1ZTsKLSAgICBpZiAoc3RkOjppc19zaWduZWQ8
TG9hZGVkVHlwZT46OnZhbHVlKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWZmZWN0aXZl
VHlwZT4odS5sb2FkZWQpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFZmZlY3RpdmVUeXBlPihz
dGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6Om1ha2VfdW5zaWduZWQ8RWZmZWN0aXZlVHlwZT46OnR5
cGU+KHUubG9hZGVkKSk7Ci19Ci0KLXRlbXBsYXRlPD4KLWZsb2F0IG1vZGVsTG9hZDxmbG9hdCwg
ZmxvYXQ+KGZsb2F0IHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfQotCi10ZW1wbGF0ZTw+Ci1kb3Vi
bGUgbW9kZWxMb2FkPGRvdWJsZSwgZG91YmxlPihkb3VibGUgdmFsdWUpIHsgcmV0dXJuIHZhbHVl
OyB9Ci0KLXRlbXBsYXRlPEIzOjpUeXBlIHR5cGUsIHR5cGVuYW1lIENUeXBlLCB0eXBlbmFtZSBJ
bnB1dFR5cGU+Ci12b2lkIHRlc3RMb2FkKEIzOjpPcGNvZGUgb3Bjb2RlLCBJbnB1dFR5cGUgdmFs
dWUpCi17Ci0gICAgLy8gU2ltcGxlIGxvYWQgZnJvbSBhbiBhYnNvbHV0ZSBhZGRyZXNzLgotICAg
IHsKLSAgICAgICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgIAotICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUoCi0gICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBvcGNv
ZGUsIHR5cGUsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25z
dFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnZhbHVlKSkpOwotCi0gICAgICAgIENIRUNLKGlz
SWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48Q1R5cGU+KHByb2MpLCBtb2RlbExvYWQ8Q1R5cGU+KHZh
bHVlKSkpOwotICAgIH0KLSAgICAKLSAgICAvLyBTaW1wbGUgbG9hZCBmcm9tIGFuIGFkZHJlc3Mg
aW4gYSByZWdpc3Rlci4KLSAgICB7Ci0gICAgICAgIFByb2NlZHVyZSBwcm9jOwotICAgICAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgICAgICAKLSAgICAgICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAg
ICAgICAgICAgcHJvYywgb3Bjb2RlLCB0eXBlLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCkpKTsKLQotICAgICAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5k
UnVuPENUeXBlPihwcm9jLCAmdmFsdWUpLCBtb2RlbExvYWQ8Q1R5cGU+KHZhbHVlKSkpOwotICAg
IH0KLSAgICAKLSAgICAvLyBTaW1wbGUgbG9hZCBmcm9tIGFuIGFkZHJlc3MgaW4gYSByZWdpc3Rl
ciwgYXQgYW4gb2Zmc2V0LgotICAgIHsKLSAgICAgICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgIAotICAgICAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAg
ICAgICAgICAgICBwcm9jLCBvcGNvZGUsIHR5cGUsIE9yaWdpbigpLAotICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKSwKLSAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQzMl90Pihz
aXplb2YoSW5wdXRUeXBlKSkpKTsKLQotICAgICAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxl
QW5kUnVuPENUeXBlPihwcm9jLCAmdmFsdWUgLSAxKSwgbW9kZWxMb2FkPENUeXBlPih2YWx1ZSkp
KTsKLSAgICB9Ci0KLSAgICAvLyBMb2FkIGZyb20gYSBzaW1wbGUgYmFzZS1pbmRleCB3aXRoIHZh
cmlvdXMgc2NhbGVzLgotICAgIGZvciAodW5zaWduZWQgbG9nU2NhbGUgPSAwOyBsb2dTY2FsZSA8
PSAzOyArK2xvZ1NjYWxlKSB7Ci0gICAgICAgIFByb2NlZHVyZSBwcm9jOwotICAgICAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAgICAgIHBy
b2MsIG9wY29kZSwgdHlwZSwgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKLSAg
ICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAotICAgICAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgICAgICAgICAgcHJvYywgU2hs
LCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBsb2dTY2FsZSkpKSkpOwotCi0gICAgICAgIENIRUNLKGlzSWRlbnRpY2FsKGNv
bXBpbGVBbmRSdW48Q1R5cGU+KHByb2MsICZ2YWx1ZSAtIDIsIChzaXplb2YoSW5wdXRUeXBlKSAq
IDIpID4+IGxvZ1NjYWxlKSwgbW9kZWxMb2FkPENUeXBlPih2YWx1ZSkpKTsKLSAgICB9Ci0KLSAg
ICAvLyBMb2FkIGZyb20gYSBzaW1wbGUgYmFzZS1pbmRleCB3aXRoIHZhcmlvdXMgc2NhbGVzLCBi
dXQgY29tbXV0ZWQuCi0gICAgZm9yICh1bnNpZ25lZCBsb2dTY2FsZSA9IDA7IGxvZ1NjYWxlIDw9
IDM7ICsrbG9nU2NhbGUpIHsKLSAgICAgICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKAotICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJv
Yywgb3Bjb2RlLCB0eXBlLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAotICAg
ICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAg
ICAgICAgICAgcHJvYywgU2hsLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBsb2dTY2FsZSkpLAotICAgICAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCkpKSk7Ci0KLSAgICAgICAgQ0hFQ0soaXNJZGVudGljYWwoY29t
cGlsZUFuZFJ1bjxDVHlwZT4ocHJvYywgJnZhbHVlIC0gMiwgKHNpemVvZihJbnB1dFR5cGUpICog
MikgPj4gbG9nU2NhbGUpLCBtb2RlbExvYWQ8Q1R5cGU+KHZhbHVlKSkpOwotICAgIH0KLX0KLQot
dGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZvaWQgdGVzdExvYWQoQjM6Ok9wY29kZSBvcGNvZGUsIGlu
dDMyX3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIHRlc3RMb2FkPEludDMyLCBUPihvcGNvZGUsIHZh
bHVlKTsKLX0KLQotdGVtcGxhdGU8QjM6OlR5cGUgdHlwZSwgdHlwZW5hbWUgVD4KLXZvaWQgdGVz
dExvYWQoVCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gdGVzdExvYWQ8dHlwZSwgVD4oTG9hZCwgdmFs
dWUpOwotfQotCi12b2lkIHRlc3RTdG9yZUZsb2F0KGRvdWJsZSBpbnB1dCkKLXsKLSAgICAvLyBT
aW1wbGUgc3RvcmUgZnJvbSBhbiBhZGRyZXNzIGluIGEgcmVnaXN0ZXIuCi0gICAgewotICAgICAg
ICBQcm9jZWR1cmUgcHJvYzsKLSAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKLSAgICAgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwotICAgICAg
ICBWYWx1ZSogYXJndW1lbnRBc0Zsb2F0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBE
b3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgYXJndW1lbnQpOwotCi0gICAgICAgIFZhbHVlKiBkZXN0
aW5hdGlvbkFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmUsIE9yaWdpbigpLCBhcmd1bWVudEFzRmxvYXQsIGRl
c3RpbmF0aW9uQWRkcmVzcyk7Ci0KLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCAwKSk7Ci0KLSAgICAgICAgZmxvYXQgb3V0cHV0ID0gMC47Ci0gICAgICAg
IENIRUNLKCFjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGlucHV0LCAmb3V0cHV0KSk7Ci0g
ICAgICAgIENIRUNLKGlzSWRlbnRpY2FsKHN0YXRpY19jYXN0PGZsb2F0PihpbnB1dCksIG91dHB1
dCkpOwotICAgIH0KLQotICAgIC8vIFNpbXBsZSBpbmRleGVkIHN0b3JlLgotICAgIHsKLSAgICAg
ICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7Ci0gICAgICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKLSAgICAg
ICAgVmFsdWUqIGFyZ3VtZW50QXNGbG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
RG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIGFyZ3VtZW50KTsKLQotICAgICAgICBWYWx1ZSogZGVz
dGluYXRpb25CYXNlQWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAgVmFsdWUqIGlu
ZGV4ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAgICBWYWx1ZSogc2NhbGVkSW5kZXggPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgU2hsLCBPcmlnaW4oKSwKLSAg
ICAgICAgICAgIGluZGV4LAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIDIpKTsKLSAgICAgICAgVmFsdWUqIGRlc3RpbmF0aW9uQWRkcmVz
cyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgc2NhbGVkSW5k
ZXgsIGRlc3RpbmF0aW9uQmFzZUFkZHJlc3MpOwotCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxN
ZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmUsIE9yaWdpbigpLCBhcmd1bWVudEFzRmxvYXQsIGRlc3Rp
bmF0aW9uQWRkcmVzcyk7Ci0KLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHBy
b2MsIFJldHVybiwgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAwKSk7Ci0KLSAgICAgICAgZmxvYXQgb3V0cHV0ID0gMC47Ci0gICAgICAgIENI
RUNLKCFjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGlucHV0LCAmb3V0cHV0IC0gMSwgMSkp
OwotICAgICAgICBDSEVDSyhpc0lkZW50aWNhbChzdGF0aWNfY2FzdDxmbG9hdD4oaW5wdXQpLCBv
dXRwdXQpKTsKLSAgICB9Ci19Ci0KLXZvaWQgdGVzdFN0b3JlRG91YmxlQ29uc3RhbnRBc0Zsb2F0
KGRvdWJsZSBpbnB1dCkKLXsKLSAgICAvLyBTaW1wbGUgc3RvcmUgZnJvbSBhbiBhZGRyZXNzIGlu
IGEgcmVnaXN0ZXIuCi0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29u
c3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGlucHV0KTsKLSAgICBWYWx1ZSogdmFsdWVB
c0Zsb2F0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmln
aW4oKSwgdmFsdWUpOwotCi0gICAgVmFsdWUqIGRlc3RpbmF0aW9uQWRkcmVzcyA9IHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmUs
IE9yaWdpbigpLCB2YWx1ZUFzRmxvYXQsIGRlc3RpbmF0aW9uQWRkcmVzcyk7Ci0KLSAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKLQotICAgIGZsb2F0IG91
dHB1dCA9IDAuOwotICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGlucHV0
LCAmb3V0cHV0KSk7Ci0gICAgQ0hFQ0soaXNJZGVudGljYWwoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGlu
cHV0KSwgb3V0cHV0KSk7Ci19Ci0KLXZvaWQgdGVzdFNwaWxsR1AoKQotewotICAgIFByb2NlZHVy
ZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBW
ZWN0b3I8VmFsdWUqPiBzb3VyY2VzOwotICAgIHNvdXJjZXMuYXBwZW5kKHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSk7Ci0gICAgc291cmNlcy5hcHBlbmQocm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKLQotICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCAzMDsgKytpKSB7Ci0gICAgICAgIHNvdXJjZXMuYXBwZW5kKAotICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBzb3Vy
Y2VzW3NvdXJjZXMuc2l6ZSgpIC0gMV0sIHNvdXJjZXNbc291cmNlcy5zaXplKCkgLSAyXSkKLSAg
ICAgICAgKTsKLSAgICB9Ci0KLSAgICBWYWx1ZSogdG90YWwgPSByb290LT5hcHBlbmROZXc8Q29u
c3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCk7Ci0gICAgZm9yIChWYWx1ZSogdmFsdWUgOiBz
b3VyY2VzKQotICAgICAgICB0b3RhbCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRk
LCBPcmlnaW4oKSwgdG90YWwsIHZhbHVlKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCB0b3RhbCk7Ci0gICAgY29tcGlsZUFuZFJ1bjxp
bnQ+KHByb2MsIDEsIDIpOwotfQotCi12b2lkIHRlc3RTcGlsbEZQKCkKLXsKLSAgICBQcm9jZWR1
cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAg
VmVjdG9yPFZhbHVlKj4gc291cmNlczsKLSAgICBzb3VyY2VzLmFwcGVuZChyb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBS
MCkpOwotICAgIHNvdXJjZXMuYXBwZW5kKHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIxKSk7Ci0KLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgMzA7ICsraSkgewotICAgICAgICBzb3VyY2VzLmFwcGVuZCgKLSAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgc291
cmNlc1tzb3VyY2VzLnNpemUoKSAtIDFdLCBzb3VyY2VzW3NvdXJjZXMuc2l6ZSgpIC0gMl0pCi0g
ICAgICAgICk7Ci0gICAgfQotCi0gICAgVmFsdWUqIHRvdGFsID0gcm9vdC0+YXBwZW5kTmV3PENv
bnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwLik7Ci0gICAgZm9yIChWYWx1ZSogdmFs
dWUgOiBzb3VyY2VzKQotICAgICAgICB0b3RhbCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQWRkLCBPcmlnaW4oKSwgdG90YWwsIHZhbHVlKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCB0b3RhbCk7Ci0gICAgY29tcGlsZUFu
ZFJ1bjxkb3VibGU+KHByb2MsIDEuMSwgMi41KTsKLX0KLQotdm9pZCB0ZXN0SW50MzJUb0RvdWJs
ZVBhcnRpYWxSZWdpc3RlclN0YWxsKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGxvb3AgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogZG9uZSA9IHByb2MuYWRkQmxvY2soKTsK
LQotICAgIC8vIEhlYWQuCi0gICAgVmFsdWUqIHRvdGFsID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0
RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwLik7Ci0gICAgVmFsdWUqIGNvdW50ZXIgPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7Ci0gICAgVXBzaWxvblZhbHVlKiBvcmlnaW5hbFRvdGFsID0gcm9vdC0+
YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRvdGFsKTsKLSAgICBVcHNp
bG9uVmFsdWUqIG9yaWdpbmFsQ291bnRlciA9IHJvb3QtPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBjb3VudGVyKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUocHJvYywgSnVtcCwgT3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayhsb29wKSk7Ci0KLSAgICAv
LyBMb29wLgotICAgIFZhbHVlKiBsb29wQ291bnRlciA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgUGhpLCBJbnQ2NCwgT3JpZ2luKCkpOwotICAgIFZhbHVlKiBsb29wVG90YWwgPSBsb29w
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFBoaSwgRG91YmxlLCBPcmlnaW4oKSk7Ci0gICAgb3Jp
Z2luYWxDb3VudGVyLT5zZXRQaGkobG9vcENvdW50ZXIpOwotICAgIG9yaWdpbmFsVG90YWwtPnNl
dFBoaShsb29wVG90YWwpOwotCi0gICAgVmFsdWUqIHRydW5jYXRlZENvdW50ZXIgPSBsb29wLT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwgbG9vcENvdW50ZXIpOwotICAg
IFZhbHVlKiBkb3VibGVDb3VudGVyID0gbG9vcC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJVG9E
LCBPcmlnaW4oKSwgdHJ1bmNhdGVkQ291bnRlcik7Ci0gICAgVmFsdWUqIHVwZGF0ZWRUb3RhbCA9
IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgZG91YmxlQ291bnRl
ciwgbG9vcFRvdGFsKTsKLSAgICBVcHNpbG9uVmFsdWUqIHVwZGF0ZWRUb3RhbFVwc2lsb24gPSBs
b29wLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdXBkYXRlZFRvdGFs
KTsKLSAgICB1cGRhdGVkVG90YWxVcHNpbG9uLT5zZXRQaGkobG9vcFRvdGFsKTsKLQotICAgIFZh
bHVlKiBkZWNDb3VudGVyID0gbG9vcC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdp
bigpLCBsb29wQ291bnRlciwgbG9vcC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIDEpKTsKLSAgICBVcHNpbG9uVmFsdWUqIGRlY0NvdW50ZXJVcHNpbG9uID0gbG9vcC0+
YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4ocHJvYywgT3JpZ2luKCksIGRlY0NvdW50ZXIpOwotICAg
IGRlY0NvdW50ZXJVcHNpbG9uLT5zZXRQaGkobG9vcENvdW50ZXIpOwotICAgIGxvb3AtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKLSAgICAg
ICAgZGVjQ291bnRlciwKLSAgICAgICAgRnJlcXVlbnRlZEJsb2NrKGxvb3ApLCBGcmVxdWVudGVk
QmxvY2soZG9uZSkpOwotCi0gICAgLy8gVGFpbC4KLSAgICBkb25lLT5hcHBlbmROZXdDb250cm9s
VmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgdXBkYXRlZFRvdGFsKTsKLSAgICBDSEVDSyhp
c0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgMTAwMDAwKSwgNTAwMDA1MDAw
MC4pKTsKLX0KLQotdm9pZCB0ZXN0SW50MzJUb0RvdWJsZVBhcnRpYWxSZWdpc3RlcldpdGhvdXRT
dGFsbCgpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBsb29wID0gcHJvYy5hZGRCbG9jaygpOwot
ICAgIEJhc2ljQmxvY2sqIGRvbmUgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICAvLyBIZWFkLgot
ICAgIFZhbHVlKiB0b3RhbCA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgMC4pOwotICAgIFZhbHVlKiBjb3VudGVyID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwot
ICAgIFVwc2lsb25WYWx1ZSogb3JpZ2luYWxUb3RhbCA9IHJvb3QtPmFwcGVuZE5ldzxVcHNpbG9u
VmFsdWU+KHByb2MsIE9yaWdpbigpLCB0b3RhbCk7Ci0gICAgVXBzaWxvblZhbHVlKiBvcmlnaW5h
bENvdW50ZXIgPSByb290LT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
Y291bnRlcik7Ci0gICAgdWludDY0X3QgZm9yUGFkZGluZ0lucHV0OwotICAgIFZhbHVlKiBmb3JQ
YWRkaW5nSW5wdXRBZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAmZm9yUGFkZGluZ0lucHV0KTsKLSAgICB1aW50NjRfdCBmb3JQYWRkaW5nT3V0
cHV0OwotICAgIFZhbHVlKiBmb3JQYWRkaW5nT3V0cHV0QWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5l
dzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJmZvclBhZGRpbmdPdXRwdXQpOwotICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4oKSwgRnJlcXVl
bnRlZEJsb2NrKGxvb3ApKTsKLQotICAgIC8vIExvb3AuCi0gICAgVmFsdWUqIGxvb3BDb3VudGVy
ID0gbG9vcC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBQaGksIEludDY0LCBPcmlnaW4oKSk7Ci0g
ICAgVmFsdWUqIGxvb3BUb3RhbCA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUGhpLCBE
b3VibGUsIE9yaWdpbigpKTsKLSAgICBvcmlnaW5hbENvdW50ZXItPnNldFBoaShsb29wQ291bnRl
cik7Ci0gICAgb3JpZ2luYWxUb3RhbC0+c2V0UGhpKGxvb3BUb3RhbCk7Ci0KLSAgICBWYWx1ZSog
dHJ1bmNhdGVkQ291bnRlciA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9y
aWdpbigpLCBsb29wQ291bnRlcik7Ci0gICAgVmFsdWUqIGRvdWJsZUNvdW50ZXIgPSBsb29wLT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIElUb0QsIE9yaWdpbigpLCB0cnVuY2F0ZWRDb3VudGVyKTsK
LSAgICBWYWx1ZSogdXBkYXRlZFRvdGFsID0gbG9vcC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBB
ZGQsIE9yaWdpbigpLCBkb3VibGVDb3VudGVyLCBsb29wVG90YWwpOwotCi0gICAgLy8gQWRkIGVu
b3VnaCBwYWRkaW5nIGluc3RydWN0aW9ucyB0byBhdm9pZCBhIHN0YWxsLgotICAgIFZhbHVlKiBs
b2FkUGFkZGluZyA9IGxvb3AtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50
NjQsIE9yaWdpbigpLCBmb3JQYWRkaW5nSW5wdXRBZGRyZXNzKTsKLSAgICBWYWx1ZSogcGFkZGlu
ZyA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0WG9yLCBPcmlnaW4oKSwgbG9hZFBh
ZGRpbmcsIGxvb3BDb3VudGVyKTsKLSAgICBwYWRkaW5nID0gbG9vcC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBBZGQsIE9yaWdpbigpLCBwYWRkaW5nLCBsb29wQ291bnRlcik7Ci0gICAgcGFkZGlu
ZyA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0T3IsIE9yaWdpbigpLCBwYWRkaW5n
LCBsb29wQ291bnRlcik7Ci0gICAgcGFkZGluZyA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgU3ViLCBPcmlnaW4oKSwgcGFkZGluZywgbG9vcENvdW50ZXIpOwotICAgIHBhZGRpbmcgPSBs
b29wLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdFhvciwgT3JpZ2luKCksIHBhZGRpbmcsIGxv
b3BDb3VudGVyKTsKLSAgICBwYWRkaW5nID0gbG9vcC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBB
ZGQsIE9yaWdpbigpLCBwYWRkaW5nLCBsb29wQ291bnRlcik7Ci0gICAgcGFkZGluZyA9IGxvb3At
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0T3IsIE9yaWdpbigpLCBwYWRkaW5nLCBsb29wQ291
bnRlcik7Ci0gICAgcGFkZGluZyA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBP
cmlnaW4oKSwgcGFkZGluZywgbG9vcENvdW50ZXIpOwotICAgIHBhZGRpbmcgPSBsb29wLT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdFhvciwgT3JpZ2luKCksIHBhZGRpbmcsIGxvb3BDb3VudGVy
KTsKLSAgICBwYWRkaW5nID0gbG9vcC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdp
bigpLCBwYWRkaW5nLCBsb29wQ291bnRlcik7Ci0gICAgcGFkZGluZyA9IGxvb3AtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgQml0T3IsIE9yaWdpbigpLCBwYWRkaW5nLCBsb29wQ291bnRlcik7Ci0g
ICAgcGFkZGluZyA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwg
cGFkZGluZywgbG9vcENvdW50ZXIpOwotICAgIGxvb3AtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
cHJvYywgU3RvcmUsIE9yaWdpbigpLCBwYWRkaW5nLCBmb3JQYWRkaW5nT3V0cHV0QWRkcmVzcyk7
Ci0KLSAgICBVcHNpbG9uVmFsdWUqIHVwZGF0ZWRUb3RhbFVwc2lsb24gPSBsb29wLT5hcHBlbmRO
ZXc8VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdXBkYXRlZFRvdGFsKTsKLSAgICB1cGRh
dGVkVG90YWxVcHNpbG9uLT5zZXRQaGkobG9vcFRvdGFsKTsKLQotICAgIFZhbHVlKiBkZWNDb3Vu
dGVyID0gbG9vcC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBsb29wQ291
bnRlciwgbG9vcC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKTsK
LSAgICBVcHNpbG9uVmFsdWUqIGRlY0NvdW50ZXJVcHNpbG9uID0gbG9vcC0+YXBwZW5kTmV3PFVw
c2lsb25WYWx1ZT4ocHJvYywgT3JpZ2luKCksIGRlY0NvdW50ZXIpOwotICAgIGRlY0NvdW50ZXJV
cHNpbG9uLT5zZXRQaGkobG9vcENvdW50ZXIpOwotICAgIGxvb3AtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKLSAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKLSAgICAgICAgZGVjQ291bnRl
ciwKLSAgICAgICAgRnJlcXVlbnRlZEJsb2NrKGxvb3ApLCBGcmVxdWVudGVkQmxvY2soZG9uZSkp
OwotCi0gICAgLy8gVGFpbC4KLSAgICBkb25lLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgdXBkYXRlZFRvdGFsKTsKLSAgICBDSEVDSyhpc0lkZW50aWNhbChj
b21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgMTAwMDAwKSwgNTAwMDA1MDAwMC4pKTsKLX0KLQot
dm9pZCB0ZXN0QnJhbmNoKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJv
Yy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygp
OwotCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBCcmFu
Y2gsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAg
ICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwK
LSAgICAgICAgRnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VD
YXNlKSk7Ci0KLSAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnN0
MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKTsKLQotICAgIGVsc2VDYXNlLT5hcHBlbmROZXdD
b250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIGVs
c2VDYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwotCi0g
ICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAgQ0hFQ0soaW52b2tlPGludD4o
KmNvZGUsIDQyKSA9PSAxKTsKLSAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgMCkgPT0gMCk7
Ci19Ci0KLXZvaWQgdGVzdEJyYW5jaFB0cigpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiB0aGVu
Q2FzZSA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2Mu
YWRkQmxvY2soKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAg
cHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAotICAgICAg
ICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsK
LQotICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCi0gICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgMSkpOwotCi0gICAgZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgZWxzZUNhc2Ut
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7Ci0KLSAgICBhdXRv
IGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwg
c3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDQyKSkgPT0gMSk7Ci0gICAgQ0hFQ0soaW52b2tlPGludD4o
KmNvZGUsIHN0YXRpY19jYXN0PGludHB0cl90PigwKSkgPT0gMCk7Ci19Ci0KLXZvaWQgdGVzdERp
YW1vbmQoKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2Nr
KCk7Ci0gICAgQmFzaWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFz
aWNCbG9jayogZG9uZSA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKLSAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwK
LSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCi0gICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0
aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOwotCi0gICAgVXBzaWxvblZhbHVl
KiB0aGVuUmVzdWx0ID0gdGhlbkNhc2UtPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KAotICAgICAg
ICBwcm9jLCBPcmlnaW4oKSwgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAxKSk7Ci0gICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9j
LCBKdW1wLCBPcmlnaW4oKSwgRnJlcXVlbnRlZEJsb2NrKGRvbmUpKTsKLQotICAgIFVwc2lsb25W
YWx1ZSogZWxzZVJlc3VsdCA9IGVsc2VDYXNlLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPigKLSAg
ICAgICAgcHJvYywgT3JpZ2luKCksIGVsc2VDYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgMCkpOwotICAgIGVsc2VDYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUo
cHJvYywgSnVtcCwgT3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayhkb25lKSk7Ci0KLSAgICBWYWx1
ZSogcGhpID0gZG9uZS0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBQaGksIEludDMyLCBPcmlnaW4o
KSk7Ci0gICAgdGhlblJlc3VsdC0+c2V0UGhpKHBoaSk7Ci0gICAgZWxzZVJlc3VsdC0+c2V0UGhp
KHBoaSk7Ci0gICAgZG9uZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIHBoaSk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBD
SEVDSyhpbnZva2U8aW50PigqY29kZSwgNDIpID09IDEpOwotICAgIENIRUNLKGludm9rZTxpbnQ+
KCpjb2RlLCAwKSA9PSAwKTsKLX0KLQotdm9pZCB0ZXN0QnJhbmNoTm90RXF1YWwoKQotewotICAg
IFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
Ci0gICAgQmFzaWNCbG9jayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNC
bG9jayogZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICByb290LT5hcHBlbmROZXdD
b250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCi0gICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBOb3RFcXVhbCwgT3JpZ2lu
KCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAg
IHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkp
LAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIDApKSwKLSAgICAgICAgRnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJs
b2NrKGVsc2VDYXNlKSk7Ci0KLSAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAot
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICB0aGVuQ2FzZS0+YXBwZW5k
TmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKTsKLQotICAgIGVsc2VDYXNlLT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0g
ICAgICAgIGVsc2VDYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
MCkpOwotCi0gICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAgQ0hFQ0soaW52
b2tlPGludD4oKmNvZGUsIDQyKSA9PSAxKTsKLSAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwg
MCkgPT0gMCk7Ci19Ci0KLXZvaWQgdGVzdEJyYW5jaE5vdEVxdWFsQ29tbXV0ZSgpCi17Ci0gICAg
UHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
LSAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Js
b2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKLSAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIE5vdEVxdWFsLCBPcmlnaW4o
KSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCAwKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAg
ICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSkpLAotICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxv
Y2soZWxzZUNhc2UpKTsKLQotICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0g
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHRoZW5DYXNlLT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpOwotCi0gICAgZWxzZUNhc2UtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAg
ICAgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAw
KSk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBDSEVDSyhpbnZv
a2U8aW50PigqY29kZSwgNDIpID09IDEpOwotICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAw
KSA9PSAwKTsKLX0KLQotdm9pZCB0ZXN0QnJhbmNoTm90RXF1YWxOb3RFcXVhbCgpCi17Ci0gICAg
UHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
LSAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Js
b2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKLSAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIE5vdEVxdWFsLCBPcmlnaW4o
KSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAg
cHJvYywgTm90RXF1YWwsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAg
ICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKLSAgICAgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpLAotICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKSwKLSAg
ICAgICAgRnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNl
KSk7Ci0KLSAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKTsKLQotICAgIGVsc2VDYXNlLT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIGVsc2VD
YXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwotCi0gICAg
YXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAgQ0hFQ0soaW52b2tlPGludD4oKmNv
ZGUsIDQyKSA9PSAxKTsKLSAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgMCkgPT0gMCk7Ci19
Ci0KLXZvaWQgdGVzdEJyYW5jaEVxdWFsKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIHRoZW5D
YXNlID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5h
ZGRCbG9jaygpOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBw
cm9jLCBCcmFuY2gsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAot
ICAgICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0g
ICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSksCi0gICAgICAgIEZyZXF1ZW50
ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOwotCi0gICAgdGhl
bkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKLSAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCAwKSk7Ci0KLSAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAg
ICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKTsKLQotICAgIGF1dG8gY29kZSA9IGNv
bXBpbGVQcm9jKHByb2MpOwotICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCA0MikgPT0gMSk7
Ci0gICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsIDApID09IDApOwotfQotCi12b2lkIHRlc3RC
cmFuY2hFcXVhbEVxdWFsKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJv
Yy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygp
OwotCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBCcmFu
Y2gsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAg
ICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBFcXVhbCwgT3JpZ2luKCksCi0gICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICAgICAgcHJvYywg
VHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAot
ICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCAwKSksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgMCkpLAotICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVx
dWVudGVkQmxvY2soZWxzZUNhc2UpKTsKLQotICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9s
VmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHRoZW5DYXNl
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpOwotCi0gICAgZWxz
ZUNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKLSAgICAgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCAwKSk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBD
SEVDSyhpbnZva2U8aW50PigqY29kZSwgNDIpID09IDEpOwotICAgIENIRUNLKGludm9rZTxpbnQ+
KCpjb2RlLCAwKSA9PSAwKTsKLX0KLQotdm9pZCB0ZXN0QnJhbmNoRXF1YWxDb21tdXRlKCkKLXsK
LSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOwotICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJh
c2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAotICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdp
bigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIDApLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAg
ICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApKSksCi0gICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRC
bG9jayhlbHNlQ2FzZSkpOwotCi0gICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
LSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgdGhlbkNhc2UtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7Ci0KLSAgICBlbHNlQ2FzZS0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAot
ICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IDEpKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotICAgIENIRUNLKGlu
dm9rZTxpbnQ+KCpjb2RlLCA0MikgPT0gMSk7Ci0gICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUs
IDApID09IDApOwotfQotCi12b2lkIHRlc3RCcmFuY2hFcXVhbEVxdWFsMSgpCi17Ci0gICAgUHJv
Y2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAg
ICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2Nr
KiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZSgKLSAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4oKSwKLSAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywg
RXF1YWwsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
Ci0gICAgICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpLAotICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKSwKLSAgICAgICAgRnJl
cXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNlKSk7Ci0KLSAg
ICB0aGVuQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAotICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIDApKTsKLQotICAgIGVsc2VDYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUo
Ci0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIGVsc2VDYXNlLT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpOwotCi0gICAgYXV0byBjb2Rl
ID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsIDQyKSA9
PSAxKTsKLSAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgMCkgPT0gMCk7Ci19Ci0KLXZvaWQg
dGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVyZWRBcmdzKGRvdWJsZSBhLCBkb3VibGUgYikKLXsKLSAg
ICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OwotICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2lj
QmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgVmFsdWUqIGFyZ3VtZW50
QSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBS
SW5mbzo6YXJndW1lbnRGUFIwKTsKLSAgICBWYWx1ZSogYXJndW1lbnRCID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQ
UjEpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgQnJh
bmNoLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAg
ICAgIHByb2MsIEVxdWFsT3JVbm9yZGVyZWQsIE9yaWdpbigpLAotICAgICAgICAgICAgYXJndW1l
bnRBLAotICAgICAgICAgICAgYXJndW1lbnRCKSwKLSAgICAgICAgRnJlcXVlbnRlZEJsb2NrKHRo
ZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNlKSk7Ci0KLSAgICB0aGVuQ2FzZS0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAg
ICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQy
KSk7Ci0KLSAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xMykpOwotCi0gICAgaW50NjRfdCBleHBlY3RlZCA9IChz
dGQ6OmlzdW5vcmRlcmVkKGEsIGIpIHx8IGEgPT0gYikgPyA0MiA6IC0xMzsKLSAgICBDSEVDSyhj
b21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEsIGIpID09IGV4cGVjdGVkKTsKLX0KLQotdm9p
ZCB0ZXN0QnJhbmNoRXF1YWxPclVub3JkZXJlZEFyZ3MoZmxvYXQgYSwgZmxvYXQgYikKLXsKLSAg
ICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OwotICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2lj
QmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgVmFsdWUqIGFyZ3VtZW50
QSA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgRmxvYXQsIE9yaWdp
bigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZhbHVlKiBhcmd1bWVudEIgPSBy
b290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEZsb2F0LCBPcmlnaW4oKSwK
LSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKLSAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEVxdWFsT3JVbm9yZGVyZWQsIE9yaWdp
bigpLAotICAgICAgICAgICAgYXJndW1lbnRBLAotICAgICAgICAgICAgYXJndW1lbnRCKSwKLSAg
ICAgICAgRnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNl
KSk7Ci0KLSAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKSk7Ci0KLSAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICBlbHNl
Q2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xMykpOwotCi0g
ICAgaW50NjRfdCBleHBlY3RlZCA9IChzdGQ6OmlzdW5vcmRlcmVkKGEsIGIpIHx8IGEgPT0gYikg
PyA0MiA6IC0xMzsKLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsICZhLCAm
YikgPT0gZXhwZWN0ZWQpOwotfQotCi12b2lkIHRlc3RCcmFuY2hOb3RFcXVhbEFuZE9yZGVyZWRB
cmdzKGRvdWJsZSBhLCBkb3VibGUgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNl
ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRC
bG9jaygpOwotCi0gICAgVmFsdWUqIGFyZ3VtZW50QSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKLSAgICBW
YWx1ZSogYXJndW1lbnRCID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOwotICAgIFZhbHVlKiBlcXVhbE9yVW5v
cmRlcmVkID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgRXF1YWxPclVu
b3JkZXJlZCwgT3JpZ2luKCksCi0gICAgICAgIGFyZ3VtZW50QSwKLSAgICAgICAgYXJndW1lbnRC
KTsKLSAgICBWYWx1ZSogbm90RXF1YWxBbmRPcmRlcmVkID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKLSAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCksCi0gICAgICAgIGVxdWFsT3JVbm9y
ZGVyZWQpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywg
QnJhbmNoLCBPcmlnaW4oKSwKLSAgICAgICAgbm90RXF1YWxBbmRPcmRlcmVkLAotICAgICAgICBG
cmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKLQot
ICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCi0gICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgNDIpKTsKLQotICAgIGVsc2VDYXNlLT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIGVsc2VDYXNlLT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTEzKSk7Ci0KLSAgICBpbnQ2
NF90IGV4cGVjdGVkID0gKCFzdGQ6OmlzdW5vcmRlcmVkKGEsIGIpICYmIGEgIT0gYikgPyA0MiA6
IC0xMzsKLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEsIGIpID09IGV4
cGVjdGVkKTsKLX0KLQotdm9pZCB0ZXN0QnJhbmNoTm90RXF1YWxBbmRPcmRlcmVkQXJncyhmbG9h
dCBhLCBmbG9hdCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogdGhlbkNhc2UgPSBwcm9jLmFk
ZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7Ci0K
LSAgICBWYWx1ZSogYXJndW1lbnRBID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9j
LCBMb2FkLCBGbG9hdCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAg
VmFsdWUqIGFyZ3VtZW50QiA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9h
ZCwgRmxvYXQsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOwotICAgIFZhbHVl
KiBlcXVhbE9yVW5vcmRlcmVkID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJv
YywgRXF1YWxPclVub3JkZXJlZCwgT3JpZ2luKCksCi0gICAgICAgIGFyZ3VtZW50QSwKLSAgICAg
ICAgYXJndW1lbnRCKTsKLSAgICBWYWx1ZSogbm90RXF1YWxBbmRPcmRlcmVkID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAotICAgICAgICBy
b290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCksCi0gICAgICAg
IGVxdWFsT3JVbm9yZGVyZWQpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAg
ICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKLSAgICAgICAgbm90RXF1YWxBbmRPcmRlcmVk
LAotICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxz
ZUNhc2UpKTsKLQotICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAg
IHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDIpKTsKLQotICAgIGVsc2VDYXNlLT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAg
IGVsc2VDYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTEzKSk7
Ci0KLSAgICBpbnQ2NF90IGV4cGVjdGVkID0gKCFzdGQ6OmlzdW5vcmRlcmVkKGEsIGIpICYmIGEg
IT0gYikgPyA0MiA6IC0xMzsKLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2Ms
ICZhLCAmYikgPT0gZXhwZWN0ZWQpOwotfQotCi12b2lkIHRlc3RCcmFuY2hFcXVhbE9yVW5vcmRl
cmVkRG91YmxlQXJnSW1tKGRvdWJsZSBhLCBkb3VibGUgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJv
YzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxv
Y2sqIHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNl
ID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgVmFsdWUqIGFyZ3VtZW50QSA9IHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRG
UFIwKTsKLSAgICBWYWx1ZSogYXJndW1lbnRCID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91Ymxl
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCi0gICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBFcXVhbE9yVW5vcmRlcmVkLCBPcmlnaW4o
KSwKLSAgICAgICAgICAgIGFyZ3VtZW50QSwKLSAgICAgICAgICAgIGFyZ3VtZW50QiksCi0gICAg
ICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkp
OwotCi0gICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCA0MikpOwotCi0gICAgZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgZWxzZUNh
c2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMTMpKTsKLQotICAg
IGludDY0X3QgZXhwZWN0ZWQgPSAoc3RkOjppc3Vub3JkZXJlZChhLCBiKSB8fCBhID09IGIpID8g
NDIgOiAtMTM7Ci0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhKSA9PSBl
eHBlY3RlZCk7Ci19Ci0KLXZvaWQgdGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVyZWRGbG9hdEFyZ0lt
bShmbG9hdCBhLCBmbG9hdCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogdGhlbkNhc2UgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2Nr
KCk7Ci0KLSAgICBWYWx1ZSogYXJndW1lbnRBID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVl
Pihwcm9jLCBMb2FkLCBGbG9hdCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7
Ci0gICAgVmFsdWUqIGFyZ3VtZW50QiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+
KHByb2MsIE9yaWdpbigpLCBiKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
LSAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEVxdWFsT3JVbm9yZGVyZWQsIE9yaWdpbigpLAot
ICAgICAgICAgICAgYXJndW1lbnRBLAotICAgICAgICAgICAgYXJndW1lbnRCKSwKLSAgICAgICAg
RnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNlKSk7Ci0K
LSAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAotICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIDQyKSk7Ci0KLSAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICBlbHNlQ2FzZS0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xMykpOwotCi0gICAgaW50
NjRfdCBleHBlY3RlZCA9IChzdGQ6OmlzdW5vcmRlcmVkKGEsIGIpIHx8IGEgPT0gYikgPyA0MiA6
IC0xMzsKLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsICZhKSA9PSBleHBl
Y3RlZCk7Ci19Ci0KLXZvaWQgdGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVyZWREb3VibGVJbW1zKGRv
dWJsZSBhLCBkb3VibGUgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJv
Yy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygp
OwotCi0gICAgVmFsdWUqIGFyZ3VtZW50QSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50QiA9IHJvb3QtPmFw
cGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7Ci0gICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAot
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgRXF1YWxP
clVub3JkZXJlZCwgT3JpZ2luKCksCi0gICAgICAgICAgICBhcmd1bWVudEEsCi0gICAgICAgICAg
ICBhcmd1bWVudEIpLAotICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVu
dGVkQmxvY2soZWxzZUNhc2UpKTsKLQotICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHRoZW5DYXNlLT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDIpKTsKLQotICAgIGVsc2VD
YXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksCi0gICAgICAgIGVsc2VDYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmln
aW4oKSwgLTEzKSk7Ci0KLSAgICBpbnQ2NF90IGV4cGVjdGVkID0gKHN0ZDo6aXN1bm9yZGVyZWQo
YSwgYikgfHwgYSA9PSBiKSA/IDQyIDogLTEzOwotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50
NjRfdD4ocHJvYykgPT0gZXhwZWN0ZWQpOwotfQotCi12b2lkIHRlc3RCcmFuY2hFcXVhbE9yVW5v
cmRlcmVkRmxvYXRJbW1zKGZsb2F0IGEsIGZsb2F0IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7
Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2Nr
KiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9
IHByb2MuYWRkQmxvY2soKTsKLQotICAgIFZhbHVlKiBhcmd1bWVudEEgPSByb290LT5hcHBlbmRO
ZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7Ci0gICAgVmFsdWUqIGFyZ3Vt
ZW50QiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBi
KTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgQnJh
bmNoLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAg
ICAgIHByb2MsIEVxdWFsT3JVbm9yZGVyZWQsIE9yaWdpbigpLAotICAgICAgICAgICAgYXJndW1l
bnRBLAotICAgICAgICAgICAgYXJndW1lbnRCKSwKLSAgICAgICAgRnJlcXVlbnRlZEJsb2NrKHRo
ZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNlKSk7Ci0KLSAgICB0aGVuQ2FzZS0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAg
ICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQy
KSk7Ci0KLSAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xMykpOwotCi0gICAgaW50NjRfdCBleHBlY3RlZCA9IChz
dGQ6OmlzdW5vcmRlcmVkKGEsIGIpIHx8IGEgPT0gYikgPyA0MiA6IC0xMzsKLSAgICBDSEVDSyhj
b21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MpID09IGV4cGVjdGVkKTsKLX0KLQotdm9pZCB0ZXN0
QnJhbmNoRXF1YWxPclVub3JkZXJlZEZsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uKGZs
b2F0IGEsIGZsb2F0IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsK
LQotICAgIFZhbHVlKiBhcmd1bWVudDEgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHBy
b2MsIExvYWQsIEZsb2F0LCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAg
ICBWYWx1ZSogYXJndW1lbnQyID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBM
b2FkLCBGbG9hdCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Ci0gICAgVmFs
dWUqIGFyZ3VtZW50MUFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9h
dFRvRG91YmxlLCBPcmlnaW4oKSwgYXJndW1lbnQxKTsKLSAgICBWYWx1ZSogYXJndW1lbnQyQXNE
b3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdp
bigpLCBhcmd1bWVudDIpOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAg
ICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAotICAgICAgICAgICAgcHJvYywgRXF1YWxPclVub3JkZXJlZCwgT3JpZ2luKCksCi0gICAg
ICAgICAgICBhcmd1bWVudDFBc0RvdWJsZSwKLSAgICAgICAgICAgIGFyZ3VtZW50MkFzRG91Ymxl
KSwKLSAgICAgICAgRnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVs
c2VDYXNlKSk7Ci0KLSAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENv
bnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKSk7Ci0KLSAgICBlbHNlQ2FzZS0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAg
ICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xMykp
OwotCi0gICAgaW50NjRfdCBleHBlY3RlZCA9IChzdGQ6OmlzdW5vcmRlcmVkKGEsIGIpIHx8IGEg
PT0gYikgPyA0MiA6IC0xMzsKLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2Ms
ICZhLCAmYikgPT0gZXhwZWN0ZWQpOwotfQotCi12b2lkIHRlc3RCcmFuY2hGb2xkKGludCB2YWx1
ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOwot
ICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAot
ICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdmFs
dWUpLAotICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2so
ZWxzZUNhc2UpKTsKLQotICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpOwotCi0gICAgZWxzZUNhc2UtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAg
ICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7
Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYykgPT0gISF2YWx1ZSk7Ci19Ci0K
LXZvaWQgdGVzdERpYW1vbmRGb2xkKGludCB2YWx1ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsK
LSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sq
IHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0g
cHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGRvbmUgPSBwcm9jLmFkZEJsb2NrKCk7
Ci0KLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIEJyYW5j
aCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCB2YWx1ZSksCi0gICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZy
ZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOwotCi0gICAgVXBzaWxvblZhbHVlKiB0aGVuUmVzdWx0
ID0gdGhlbkNhc2UtPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KAotICAgICAgICBwcm9jLCBPcmln
aW4oKSwgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAx
KSk7Ci0gICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmln
aW4oKSwgRnJlcXVlbnRlZEJsb2NrKGRvbmUpKTsKLQotICAgIFVwc2lsb25WYWx1ZSogZWxzZVJl
c3VsdCA9IGVsc2VDYXNlLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPigKLSAgICAgICAgcHJvYywg
T3JpZ2luKCksIGVsc2VDYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgMCkpOwotICAgIGVsc2VDYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgSnVtcCwg
T3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayhkb25lKSk7Ci0KLSAgICBWYWx1ZSogcGhpID0gZG9u
ZS0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBQaGksIEludDMyLCBPcmlnaW4oKSk7Ci0gICAgdGhl
blJlc3VsdC0+c2V0UGhpKHBoaSk7Ci0gICAgZWxzZVJlc3VsdC0+c2V0UGhpKHBoaSk7Ci0gICAg
ZG9uZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHBoaSk7
Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYykgPT0gISF2YWx1ZSk7Ci19Ci0K
LXZvaWQgdGVzdEJyYW5jaE5vdEVxdWFsRm9sZFB0cihpbnRwdHJfdCB2YWx1ZSkKLXsKLSAgICBQ
cm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwot
ICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxv
Y2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAotICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgTm90RXF1YWwsIE9yaWdpbigp
LAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCB2YWx1ZSksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIDApKSwKLSAgICAgICAgRnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwg
RnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNlKSk7Ci0KLSAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICB0aGVu
Q2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKTsKLQotICAg
IGVsc2VDYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwg
T3JpZ2luKCksCi0gICAgICAgIGVsc2VDYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgMCkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpID09
ICEhdmFsdWUpOwotfQotCi12b2lkIHRlc3RCcmFuY2hFcXVhbEZvbGRQdHIoaW50cHRyX3QgdmFs
dWUpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsK
LSAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwK
LSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEVxdWFs
LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgdmFsdWUpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0
UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSksCi0gICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0
aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOwotCi0gICAgdGhlbkNhc2UtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAg
ICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAx
KSk7Ci0KLSAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50
Pihwcm9jKSA9PSAhdmFsdWUpOwotfQotCi12b2lkIHRlc3RCcmFuY2hMb2FkUHRyKCkKLXsKLSAg
ICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OwotICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2lj
QmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAotICAgICAgICBy
b290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgTG9hZCwgcG9p
bnRlclR5cGUoKSwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAotICAg
ICAgICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2Up
KTsKLQotICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2Ms
IFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpOwotCi0gICAgZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgZWxzZUNh
c2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7Ci0KLSAgICBh
dXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBpbnRwdHJfdCBjb25kOwotICAgIGNv
bmQgPSA0MjsKLSAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgJmNvbmQpID09IDEpOwotICAg
IGNvbmQgPSAwOwotICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAmY29uZCkgPT0gMCk7Ci19
Ci0KLXZvaWQgdGVzdEJyYW5jaExvYWQzMigpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiB0aGVu
Q2FzZSA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2Mu
YWRkQmxvY2soKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAg
cHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZh
bHVlPigKLSAgICAgICAgICAgIHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwKLSAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSksCi0gICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSks
IEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOwotCi0gICAgdGhlbkNhc2UtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgdGhl
bkNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7Ci0KLSAg
ICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAotICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIDApKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwot
ICAgIGludDMyX3QgY29uZDsKLSAgICBjb25kID0gNDI7Ci0gICAgQ0hFQ0soaW52b2tlPGludD4o
KmNvZGUsICZjb25kKSA9PSAxKTsKLSAgICBjb25kID0gMDsKLSAgICBDSEVDSyhpbnZva2U8aW50
PigqY29kZSwgJmNvbmQpID09IDApOwotfQotCi12b2lkIHRlc3RCcmFuY2hMb2FkOFMoKQotewot
ICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7Ci0gICAgQmFzaWNCbG9jayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFz
aWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCi0gICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBMb2FkOFMs
IE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKLSAgICAgICAgRnJlcXVl
bnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNlKSk7Ci0KLSAgICB0
aGVuQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAotICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIDEpKTsKLQotICAgIGVsc2VDYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0g
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIGVsc2VDYXNlLT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwotCi0gICAgYXV0byBjb2RlID0g
Y29tcGlsZVByb2MocHJvYyk7Ci0gICAgaW50OF90IGNvbmQ7Ci0gICAgY29uZCA9IC0xOwotICAg
IENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAmY29uZCkgPT0gMSk7Ci0gICAgY29uZCA9IDA7Ci0g
ICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsICZjb25kKSA9PSAwKTsKLX0KLQotdm9pZCB0ZXN0
QnJhbmNoTG9hZDhaKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5h
ZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOwot
Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBCcmFuY2gs
IE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAg
ICAgICAgcHJvYywgTG9hZDhaLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSksCi0gICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhl
bHNlQ2FzZSkpOwotCi0gICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7Ci0KLSAgICBlbHNlQ2FzZS0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAg
ICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsK
LQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotICAgIHVpbnQ4X3QgY29uZDsK
LSAgICBjb25kID0gMTsKLSAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgJmNvbmQpID09IDEp
OwotICAgIGNvbmQgPSAwOwotICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAmY29uZCkgPT0g
MCk7Ci19Ci0KLXZvaWQgdGVzdEJyYW5jaExvYWQxNlMoKQotewotICAgIFByb2NlZHVyZSBwcm9j
OwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9j
ayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogZWxzZUNhc2Ug
PSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0g
ICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxN
ZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBMb2FkMTZTLCBPcmlnaW4oKSwKLSAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCi0gICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2Fz
ZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOwotCi0gICAgdGhlbkNhc2UtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAg
dGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7Ci0K
LSAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAotICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIDApKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2Mp
OwotICAgIGludDE2X3QgY29uZDsKLSAgICBjb25kID0gLTE7Ci0gICAgQ0hFQ0soaW52b2tlPGlu
dD4oKmNvZGUsICZjb25kKSA9PSAxKTsKLSAgICBjb25kID0gMDsKLSAgICBDSEVDSyhpbnZva2U8
aW50PigqY29kZSwgJmNvbmQpID09IDApOwotfQotCi12b2lkIHRlc3RCcmFuY2hMb2FkMTZaKCkK
LXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOwotICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOwotICAg
IEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAotICAg
ICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgTG9h
ZDE2WiwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAotICAgICAgICBG
cmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKLQot
ICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCi0gICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgMSkpOwotCi0gICAgZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgZWxzZUNhc2UtPmFw
cGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7Ci0KLSAgICBhdXRvIGNv
ZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICB1aW50MTZfdCBjb25kOwotICAgIGNvbmQgPSAx
OwotICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAmY29uZCkgPT0gMSk7Ci0gICAgY29uZCA9
IDA7Ci0gICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsICZjb25kKSA9PSAwKTsKLX0KLQotdm9p
ZCB0ZXN0QnJhbmNoOFdpdGhMb2FkOFpJbmRleCgpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0g
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiB0
aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHBy
b2MuYWRkQmxvY2soKTsKLQotICAgIGludCBsb2dTY2FsZSA9IDE7Ci0gICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAotICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQWJvdmUsIE9yaWdp
bigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAg
ICAgICAgICBwcm9jLCBMb2FkOFosIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCks
Ci0gICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKLSAgICAgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb2Ms
IFNobCwgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgbG9nU2NhbGUpKSkpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDI1MCkpLAotICAgICAgICBGcmVxdWVudGVk
QmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKLQotICAgIHRoZW5D
YXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksCi0gICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmln
aW4oKSwgMSkpOwotCi0gICAgZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21w
aWxlUHJvYyhwcm9jKTsKLSAgICB1aW50MzJfdCBjb25kOwotICAgIGNvbmQgPSAweGZmZmZmZmZm
VTsgLy8gQWxsIGJ5dGVzIGFyZSAweGZmLgotICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAm
Y29uZCAtIDIsIChzaXplb2YodWludDMyX3QpICogMikgPj4gbG9nU2NhbGUpID09IDEpOwotICAg
IGNvbmQgPSAweDAwMDAwMDAwVTsgLy8gQWxsIGJ5dGVzIGFyZSAwLgotICAgIENIRUNLKGludm9r
ZTxpbnQ+KCpjb2RlLCAmY29uZCAtIDIsIChzaXplb2YodWludDMyX3QpICogMikgPj4gbG9nU2Nh
bGUpID09IDApOwotfQotCi12b2lkIHRlc3RDb21wbGV4KHVuc2lnbmVkIG51bVZhcnMsIHVuc2ln
bmVkIG51bUNvbnN0cnVjdHMpCi17Ci0gICAgTW9ub3RvbmljVGltZSBiZWZvcmUgPSBNb25vdG9u
aWNUaW1lOjpub3coKTsKLSAgICAKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2Nr
KiBjdXJyZW50ID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgQ29uc3QzMlZhbHVlKiBvbmUgPSBj
dXJyZW50LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSk7Ci0KLSAg
ICBWZWN0b3I8aW50MzJfdD4gdmFyU2xvdHM7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gbnVtVmFy
czsgaS0tOykKLSAgICAgICAgdmFyU2xvdHMuYXBwZW5kKGkpOwotCi0gICAgVmVjdG9yPFZhbHVl
Kj4gdmFyczsKLSAgICBmb3IgKGludDMyX3QmIHZhclNsb3QgOiB2YXJTbG90cykgewotICAgICAg
ICBWYWx1ZSogdmFyU2xvdFB0ciA9IGN1cnJlbnQtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgJnZhclNsb3QpOwotICAgICAgICB2YXJzLmFwcGVuZChjdXJyZW50LT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgdmFyU2xv
dFB0cikpOwotICAgIH0KLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Db25zdHJ1
Y3RzOyArK2kpIHsKLSAgICAgICAgaWYgKGkgJiAxKSB7Ci0gICAgICAgICAgICAvLyBDb250cm9s
IGZsb3cgZGlhbW9uZC4KLSAgICAgICAgICAgIHVuc2lnbmVkIHByZWRpY2F0ZVZhckluZGV4ID0g
KChpID4+IDEpICsgMikgJSBudW1WYXJzOwotICAgICAgICAgICAgdW5zaWduZWQgdGhlbkluY1Zh
ckluZGV4ID0gKChpID4+IDEpICsgMCkgJSBudW1WYXJzOwotICAgICAgICAgICAgdW5zaWduZWQg
ZWxzZUluY1ZhckluZGV4ID0gKChpID4+IDEpICsgMSkgJSBudW1WYXJzOwotCi0gICAgICAgICAg
ICBCYXNpY0Jsb2NrKiB0aGVuQmxvY2sgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgICAgICBC
YXNpY0Jsb2NrKiBlbHNlQmxvY2sgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgICAgICBCYXNp
Y0Jsb2NrKiBjb250aW51YXRpb24gPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICAgICAgICAgIGN1
cnJlbnQtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgICAgICAgICBwcm9jLCBCcmFu
Y2gsIE9yaWdpbigpLCB2YXJzW3ByZWRpY2F0ZVZhckluZGV4XSwKLSAgICAgICAgICAgICAgICBG
cmVxdWVudGVkQmxvY2sodGhlbkJsb2NrKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VCbG9jaykpOwot
Ci0gICAgICAgICAgICBVcHNpbG9uVmFsdWUqIHRoZW5UaGVuUmVzdWx0ID0gdGhlbkJsb2NrLT5h
cHBlbmROZXc8VXBzaWxvblZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBPcmlnaW4oKSwK
LSAgICAgICAgICAgICAgICB0aGVuQmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBP
cmlnaW4oKSwgdmFyc1t0aGVuSW5jVmFySW5kZXhdLCBvbmUpKTsKLSAgICAgICAgICAgIFVwc2ls
b25WYWx1ZSogdGhlbkVsc2VSZXN1bHQgPSB0aGVuQmxvY2stPmFwcGVuZE5ldzxVcHNpbG9uVmFs
dWU+KAotICAgICAgICAgICAgICAgIHByb2MsIE9yaWdpbigpLCB2YXJzW2Vsc2VJbmNWYXJJbmRl
eF0pOwotICAgICAgICAgICAgdGhlbkJsb2NrLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywg
SnVtcCwgT3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayhjb250aW51YXRpb24pKTsKLQotICAgICAg
ICAgICAgVXBzaWxvblZhbHVlKiBlbHNlRWxzZVJlc3VsdCA9IGVsc2VCbG9jay0+YXBwZW5kTmV3
PFVwc2lsb25WYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgT3JpZ2luKCksCi0gICAgICAg
ICAgICAgICAgZWxzZUJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCks
IHZhcnNbZWxzZUluY1ZhckluZGV4XSwgb25lKSk7Ci0gICAgICAgICAgICBVcHNpbG9uVmFsdWUq
IGVsc2VUaGVuUmVzdWx0ID0gZWxzZUJsb2NrLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPigKLSAg
ICAgICAgICAgICAgICBwcm9jLCBPcmlnaW4oKSwgdmFyc1t0aGVuSW5jVmFySW5kZXhdKTsKLSAg
ICAgICAgICAgIGVsc2VCbG9jay0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIEp1bXAsIE9y
aWdpbigpLCBGcmVxdWVudGVkQmxvY2soY29udGludWF0aW9uKSk7Ci0KLSAgICAgICAgICAgIFZh
bHVlKiB0aGVuUGhpID0gY29udGludWF0aW9uLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFBoaSwg
SW50MzIsIE9yaWdpbigpKTsKLSAgICAgICAgICAgIHRoZW5UaGVuUmVzdWx0LT5zZXRQaGkodGhl
blBoaSk7Ci0gICAgICAgICAgICBlbHNlVGhlblJlc3VsdC0+c2V0UGhpKHRoZW5QaGkpOwotICAg
ICAgICAgICAgdmFyc1t0aGVuSW5jVmFySW5kZXhdID0gdGhlblBoaTsKLSAgICAgICAgICAgIAot
ICAgICAgICAgICAgVmFsdWUqIGVsc2VQaGkgPSBjb250aW51YXRpb24tPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgUGhpLCBJbnQzMiwgT3JpZ2luKCkpOwotICAgICAgICAgICAgdGhlbkVsc2VSZXN1
bHQtPnNldFBoaShlbHNlUGhpKTsKLSAgICAgICAgICAgIGVsc2VFbHNlUmVzdWx0LT5zZXRQaGko
ZWxzZVBoaSk7Ci0gICAgICAgICAgICB2YXJzW2Vsc2VJbmNWYXJJbmRleF0gPSB0aGVuUGhpOwot
ICAgICAgICAgICAgCi0gICAgICAgICAgICBjdXJyZW50ID0gY29udGludWF0aW9uOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgLy8gTG9vcC4KLQotICAgICAgICAgICAgQmFzaWNCbG9j
ayogbG9vcEVudHJ5ID0gcHJvYy5hZGRCbG9jaygpOwotICAgICAgICAgICAgQmFzaWNCbG9jayog
bG9vcFJlZW50cnkgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgICAgICBCYXNpY0Jsb2NrKiBs
b29wQm9keSA9IHByb2MuYWRkQmxvY2soKTsKLSAgICAgICAgICAgIEJhc2ljQmxvY2sqIGxvb3BF
eGl0ID0gcHJvYy5hZGRCbG9jaygpOwotICAgICAgICAgICAgQmFzaWNCbG9jayogbG9vcFNraXAg
PSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgICAgICBCYXNpY0Jsb2NrKiBjb250aW51YXRpb24g
PSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIFZhbHVlKiBzdGFy
dEluZGV4ID0gdmFyc1soKGkgPj4gMSkgKyAxKSAlIG51bVZhcnNdOwotICAgICAgICAgICAgVmFs
dWUqIHN0YXJ0U3VtID0gY3VycmVudC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIDApOwotICAgICAgICAgICAgY3VycmVudC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAot
ICAgICAgICAgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksIHN0YXJ0SW5kZXgsCi0gICAg
ICAgICAgICAgICAgRnJlcXVlbnRlZEJsb2NrKGxvb3BFbnRyeSksIEZyZXF1ZW50ZWRCbG9jayhs
b29wU2tpcCkpOwotCi0gICAgICAgICAgICBVcHNpbG9uVmFsdWUqIHN0YXJ0SW5kZXhGb3JCb2R5
ID0gbG9vcEVudHJ5LT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPigKLSAgICAgICAgICAgICAgICBw
cm9jLCBPcmlnaW4oKSwgc3RhcnRJbmRleCk7Ci0gICAgICAgICAgICBVcHNpbG9uVmFsdWUqIHN0
YXJ0U3VtRm9yQm9keSA9IGxvb3BFbnRyeS0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4oCi0gICAg
ICAgICAgICAgICAgcHJvYywgT3JpZ2luKCksIHN0YXJ0U3VtKTsKLSAgICAgICAgICAgIGxvb3BF
bnRyeS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIEp1bXAsIE9yaWdpbigpLCBGcmVxdWVu
dGVkQmxvY2sobG9vcEJvZHkpKTsKLQotICAgICAgICAgICAgVmFsdWUqIGJvZHlJbmRleCA9IGxv
b3BCb2R5LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFBoaSwgSW50MzIsIE9yaWdpbigpKTsKLSAg
ICAgICAgICAgIHN0YXJ0SW5kZXhGb3JCb2R5LT5zZXRQaGkoYm9keUluZGV4KTsKLSAgICAgICAg
ICAgIFZhbHVlKiBib2R5U3VtID0gbG9vcEJvZHktPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUGhp
LCBJbnQzMiwgT3JpZ2luKCkpOwotICAgICAgICAgICAgc3RhcnRTdW1Gb3JCb2R5LT5zZXRQaGko
Ym9keVN1bSk7Ci0gICAgICAgICAgICBWYWx1ZSogbmV3Qm9keUluZGV4ID0gbG9vcEJvZHktPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgYm9keUluZGV4LCBvbmUpOwotICAg
ICAgICAgICAgVmFsdWUqIG5ld0JvZHlTdW0gPSBsb29wQm9keS0+YXBwZW5kTmV3PFZhbHVlPigK
LSAgICAgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIGJv
ZHlTdW0sCi0gICAgICAgICAgICAgICAgbG9vcEJvZHktPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
Ci0gICAgICAgICAgICAgICAgICAgIHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwKLSAgICAg
ICAgICAgICAgICAgICAgbG9vcEJvZHktPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAg
ICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgICAgICAgICAg
bG9vcEJvZHktPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdmFyU2xv
dHMuZGF0YSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvb3BCb2R5LT5hcHBlbmROZXc8
VmFsdWU+KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2MsIFNobCwgT3JpZ2luKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcEJvZHktPmFwcGVuZE5ldzxWYWx1ZT4o
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2MsIFpFeHQzMiwgT3JpZ2luKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3BCb2R5LT5hcHBlbmROZXc8VmFs
dWU+KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvYywgQml0QW5kLCBP
cmlnaW4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0JvZHlJbmRl
eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3BCb2R5LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwcm9jLCBPcmlnaW4oKSwgbnVtVmFycyAtIDEpKSksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbG9vcEJvZHktPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAy
KSkpKSk7Ci0gICAgICAgICAgICBsb29wQm9keS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAg
ICAgICAgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksIG5ld0JvZHlJbmRleCwKLSAgICAg
ICAgICAgICAgICBGcmVxdWVudGVkQmxvY2sobG9vcFJlZW50cnkpLCBGcmVxdWVudGVkQmxvY2so
bG9vcEV4aXQpKTsKLQotICAgICAgICAgICAgbG9vcFJlZW50cnktPmFwcGVuZE5ldzxVcHNpbG9u
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBuZXdCb2R5SW5kZXgsIGJvZHlJbmRleCk7Ci0gICAgICAg
ICAgICBsb29wUmVlbnRyeS0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4ocHJvYywgT3JpZ2luKCks
IG5ld0JvZHlTdW0sIGJvZHlTdW0pOwotICAgICAgICAgICAgbG9vcFJlZW50cnktPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4oKSwgRnJlcXVlbnRlZEJsb2NrKGxvb3BC
b2R5KSk7Ci0KLSAgICAgICAgICAgIFVwc2lsb25WYWx1ZSogZXhpdFN1bSA9IGxvb3BFeGl0LT5h
cHBlbmROZXc8VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbmV3Qm9keVN1bSk7Ci0gICAg
ICAgICAgICBsb29wRXhpdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIEp1bXAsIE9yaWdp
bigpLCBGcmVxdWVudGVkQmxvY2soY29udGludWF0aW9uKSk7Ci0KLSAgICAgICAgICAgIFVwc2ls
b25WYWx1ZSogc2tpcFN1bSA9IGxvb3BTa2lwLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgc3RhcnRTdW0pOwotICAgICAgICAgICAgbG9vcFNraXAtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4oKSwgRnJlcXVlbnRlZEJsb2NrKGNvbnRpbnVh
dGlvbikpOwotCi0gICAgICAgICAgICBWYWx1ZSogZmluYWxTdW0gPSBjb250aW51YXRpb24tPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgUGhpLCBJbnQzMiwgT3JpZ2luKCkpOwotICAgICAgICAgICAg
ZXhpdFN1bS0+c2V0UGhpKGZpbmFsU3VtKTsKLSAgICAgICAgICAgIHNraXBTdW0tPnNldFBoaShm
aW5hbFN1bSk7Ci0KLSAgICAgICAgICAgIGN1cnJlbnQgPSBjb250aW51YXRpb247Ci0gICAgICAg
ICAgICB2YXJzWygoaSA+PiAxKSArIDApICUgbnVtVmFyc10gPSBmaW5hbFN1bTsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIGN1cnJlbnQtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCB2YXJzWzBdKTsKLQotICAgIGNvbXBpbGVQcm9jKHByb2MpOwotCi0gICAg
TW9ub3RvbmljVGltZSBhZnRlciA9IE1vbm90b25pY1RpbWU6Om5vdygpOwotICAgIGRhdGFMb2co
dG9DU3RyaW5nKCIgICAgVGhhdCB0b29rICIsIChhZnRlciAtIGJlZm9yZSkubWlsbGlzZWNvbmRz
KCksICIgbXMuXG4iKSk7Ci19Ci0KLXZvaWQgdGVzdEJyYW5jaEJpdFRlc3QzMlRtcEltbSh1aW50
MzJfdCB2YWx1ZSwgdWludDMyX3QgaW1tKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogdGhlbkNh
c2UgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFk
ZEJsb2NrKCk7Ci0KLSAgICBWYWx1ZSogdGVzdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKLSAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpOwotICAgIFZhbHVlKiBiaXRPZmZzZXQgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgaW1tKTsKLQotICAgIFZhbHVlKiBvbmUgPSByb290LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSk7Ci0gICAgVmFsdWUqIGJpdFRlc3Qg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigp
LAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNTaHIsIE9yaWdpbigpLCB0
ZXN0VmFsdWUsIGJpdE9mZnNldCksCi0gICAgICAgIG9uZSk7Ci0KLSAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCi0gICAgICAg
IGJpdFRlc3QsCi0gICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRC
bG9jayhlbHNlQ2FzZSkpOwotCi0gICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
LSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgdGhlbkNhc2UtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7Ci0KLSAgICBlbHNlQ2FzZS0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAot
ICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IDApKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotICAgIENIRUNLX0VR
KGludm9rZTx1aW50MzJfdD4oKmNvZGUsIHZhbHVlKSwgKHZhbHVlPj4oaW1tJTMyKSkmMSk7Ci19
Ci0KLXZvaWQgdGVzdEJyYW5jaEJpdFRlc3QzMkFkZHJJbW0odWludDMyX3QgdmFsdWUsIHVpbnQz
Ml90IGltbSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRCbG9j
aygpOwotICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAg
VmFsdWUqIHRlc3RWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAg
IHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsK
LSAgICBWYWx1ZSogYml0T2Zmc2V0ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIGltbSk7Ci0KLSAgICBWYWx1ZSogb25lID0gcm9vdC0+YXBwZW5kTmV3PENv
bnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpOwotICAgIFZhbHVlKiBiaXRUZXN0ID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKLSAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTU2hyLCBPcmlnaW4oKSwgdGVzdFZh
bHVlLCBiaXRPZmZzZXQpLAotICAgICAgICBvbmUpOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAotICAgICAgICBiaXRU
ZXN0LAotICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2so
ZWxzZUNhc2UpKTsKLQotICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpOwotCi0gICAgZWxzZUNhc2UtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAg
ICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7
Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBDSEVDS19FUShpbnZv
a2U8dWludDMyX3Q+KCpjb2RlLCAmdmFsdWUpLCAodmFsdWU+PihpbW0lMzIpKSYxKTsKLX0KLQot
dm9pZCB0ZXN0QnJhbmNoQml0VGVzdDMyVG1wVG1wKHVpbnQzMl90IHZhbHVlLCB1aW50MzJfdCB2
YWx1ZTIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2so
KTsKLSAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIFZh
bHVlKiB0ZXN0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBU
cnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGJp
dE9mZnNldCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIFRydW5jLCBP
cmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKLQotICAgIFZhbHVlKiBvbmUgPSBy
b290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSk7Ci0gICAgVmFs
dWUqIGJpdFRlc3QgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBCaXRB
bmQsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNTaHIs
IE9yaWdpbigpLCB0ZXN0VmFsdWUsIGJpdE9mZnNldCksCi0gICAgICAgIG9uZSk7Ci0KLSAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2lu
KCksCi0gICAgICAgIGJpdFRlc3QsCi0gICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSks
IEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOwotCi0gICAgdGhlbkNhc2UtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgdGhl
bkNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7Ci0KLSAg
ICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAotICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIDApKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwot
ICAgIENIRUNLX0VRKGludm9rZTx1aW50MzJfdD4oKmNvZGUsIHZhbHVlLCB2YWx1ZTIpLCAodmFs
dWU+Pih2YWx1ZTIlMzIpKSYxKTsKLX0KLQotdm9pZCB0ZXN0QnJhbmNoQml0VGVzdDY0VG1wVG1w
KHVpbnQ2NF90IHZhbHVlLCB1aW50NjRfdCB2YWx1ZTIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7
Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2Nr
KiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9
IHByb2MuYWRkQmxvY2soKTsKLQotICAgIFZhbHVlKiB0ZXN0VmFsdWUgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEJpdFhvciwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IC0xbCkpOwotICAgIFZhbHVlKiBiaXRPZmZzZXQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAot
ICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7
Ci0KLSAgICBWYWx1ZSogb25lID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIDEpOwotICAgIFZhbHVlKiBiaXRUZXN0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKLSAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKLSAgICAgICAgdGVzdFZhbHVlLAot
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNobCwgT3JpZ2luKCksIG9uZSwg
Yml0T2Zmc2V0KSk7Ci0KLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAg
IHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCi0gICAgICAgIGJpdFRlc3QsCi0gICAgICAgIEZyZXF1
ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOwotCi0gICAg
dGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKLSAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAwKSk7Ci0KLSAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAot
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICBlbHNlQ2FzZS0+YXBwZW5k
TmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKTsKLQotICAgIGF1dG8gY29kZSA9
IGNvbXBpbGVQcm9jKHByb2MpOwotICAgIENIRUNLX0VRKGludm9rZTx1aW50NjRfdD4oKmNvZGUs
IHZhbHVlLCB2YWx1ZTIpLCAodmFsdWU+Pih2YWx1ZTIlNjQpKSYxKTsKLX0KLQotdm9pZCB0ZXN0
QnJhbmNoQml0VGVzdDY0QWRkclRtcCh1aW50NjRfdCB2YWx1ZSwgdWludDY0X3QgdmFsdWUyKQot
ewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7Ci0gICAgQmFzaWNCbG9jayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAg
QmFzaWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBWYWx1ZSogdGVz
dFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAgcHJvYywgTG9h
ZCwgSW50NjQsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZhbHVl
KiBiaXRPZmZzZXQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBUcnVu
YywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Ci0KLSAgICBWYWx1ZSogb25l
ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpOwotICAg
IFZhbHVlKiBiaXRUZXN0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywg
Qml0QW5kLCBPcmlnaW4oKSwKLSAgICAgICAgdGVzdFZhbHVlLAotICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIFNobCwgT3JpZ2luKCksIG9uZSwgYml0T2Zmc2V0KSk7Ci0KLSAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIEJyYW5jaCwgT3Jp
Z2luKCksCi0gICAgICAgIGJpdFRlc3QsCi0gICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2Fz
ZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOwotCi0gICAgdGhlbkNhc2UtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAg
dGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7Ci0K
LSAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAotICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIDApKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2Mp
OwotICAgIENIRUNLX0VRKGludm9rZTx1aW50NjRfdD4oKmNvZGUsICZ2YWx1ZSwgdmFsdWUyKSwg
KHZhbHVlPj4odmFsdWUyJTY0KSkmMSk7Ci19Ci0KLXZvaWQgdGVzdEJyYW5jaEJpdFRlc3ROZWdh
dGlvbih1aW50NjRfdCB2YWx1ZSwgdWludDY0X3QgdmFsdWUyKQotewotICAgIFByb2NlZHVyZSBw
cm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNC
bG9jayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogZWxzZUNh
c2UgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBWYWx1ZSogdGVzdFZhbHVlID0gcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOwotICAgIFZhbHVlKiBiaXRPZmZzZXQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAot
ICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7
Ci0gICAgVmFsdWUqIHNoaWZ0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTU2hyLCBP
cmlnaW4oKSwgdGVzdFZhbHVlLCBiaXRPZmZzZXQpOwotCi0gICAgVmFsdWUqIG9uZSA9IHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKTsKLSAgICBWYWx1ZSog
Yml0VGVzdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIEJpdEFuZCwg
T3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0WG9yLCBP
cmlnaW4oKSwgc2hpZnQsIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdp
bigpLCAtMWwpKSwKLSAgICAgICAgb25lKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKLSAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKLSAgICAgICAgYml0VGVzdCwK
LSAgICAgICAgRnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VD
YXNlKSk7Ci0KLSAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnN0
NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKLQotICAgIGVsc2VDYXNlLT5hcHBlbmROZXdD
b250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIGVs
c2VDYXNlLT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpOwotCi0g
ICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPHVp
bnQ2NF90PigqY29kZSwgdmFsdWUsIHZhbHVlMiksICh2YWx1ZT4+KHZhbHVlMiU2NCkpJjEpOwot
fQotCi12b2lkIHRlc3RCcmFuY2hCaXRUZXN0TmVnYXRpb24yKHVpbnQ2NF90IHZhbHVlLCB1aW50
NjRfdCB2YWx1ZTIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRk
QmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKLQot
ICAgIFZhbHVlKiB0ZXN0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdFhv
ciwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKLSAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xbCkpOwotICAgIFZhbHVlKiBi
aXRPZmZzZXQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBUcnVuYywg
T3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Ci0gICAgVmFsdWUqIHNoaWZ0ID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTU2hyLCBPcmlnaW4oKSwgdGVzdFZhbHVlLCBi
aXRPZmZzZXQpOwotCi0gICAgVmFsdWUqIG9uZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFs
dWU+KHByb2MsIE9yaWdpbigpLCAxKTsKLSAgICBWYWx1ZSogYml0VGVzdCA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIEJpdEFuZCwgT3JpZ2luKCksCi0gICAgICAgIHNo
aWZ0LAotICAgICAgICBvbmUpOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAot
ICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAotICAgICAgICBiaXRUZXN0LAotICAgICAg
ICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsK
LQotICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCi0gICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgMCkpOwotCi0gICAgZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgZWxzZUNhc2Ut
PmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7Ci0KLSAgICBhdXRv
IGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBDSEVDS19FUShpbnZva2U8dWludDY0X3Q+
KCpjb2RlLCB2YWx1ZSwgdmFsdWUyKSwgKHZhbHVlPj4odmFsdWUyJTY0KSkmMSk7Ci19Ci0KLXZv
aWQgdGVzdFNpbXBsZVBhdGNocG9pbnQoKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZzEgPSByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7Ci0gICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgUGF0
Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1
ZT4ocHJvYywgSW50MzIsIE9yaWdpbigpKTsKLSAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3Ry
YWluZWRWYWx1ZShhcmcxLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7Ci0gICAgcGF0Y2hwb2lu
dC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMiwgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcikp
OwotICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKLSAgICAgICAgWyZdIChDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKLSAgICAg
ICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsK
LSAgICAgICAgICAgIENIRUNLKHBhcmFtcy5zaXplKCkgPT0gMyk7Ci0gICAgICAgICAgICBDSEVD
SyhwYXJhbXNbMF0uaXNHUFIoKSk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0uaXNHUFIo
KSk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXNbMl0uaXNHUFIoKSk7Ci0gICAgICAgICAgICBh
ZGQzMihqaXQsIHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzJdLmdwcigpLCBwYXJhbXNbMF0uZ3By
KCkpOwotICAgICAgICB9KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgcGF0Y2hwb2ludCk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVu
PGludD4ocHJvYywgMSwgMikgPT0gMyk7Ci19Ci0KLXZvaWQgdGVzdFNpbXBsZVBhdGNocG9pbnRX
aXRob3V0T3VwdXRDbG9iYmVyc0dQQXJncygpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJnMSA9IHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKLSAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICBW
YWx1ZSogY29uc3QxID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIDQyKTsKLSAgICBWYWx1ZSogY29uc3QyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIDEzKTsKLQotICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2lu
dCA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigp
KTsKLSAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShSZWdpc3RlclNldChHUFJJbmZvOjphcmd1
bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOwotICAgIHBhdGNocG9pbnQtPmFwcGVu
ZChDb25zdHJhaW5lZFZhbHVlKGNvbnN0MSwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOwotICAg
IHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGNvbnN0MiwgVmFsdWVSZXA6OlNv
bWVSZWdpc3RlcikpOwotICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKLSAgICAgICAgWyZd
IChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJh
bXMpIHsKLSAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1Nj
cmF0Y2goaml0KTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtcy5zaXplKCkgPT0gMik7Ci0gICAg
ICAgICAgICBDSEVDSyhwYXJhbXNbMF0uaXNHUFIoKSk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJh
bXNbMV0uaXNHUFIoKSk7Ci0gICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMigweDAwZmYwMGZmKSwgcGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgICAgIGppdC5t
b3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDB4MDBmZjAwZmYpLCBwYXJhbXNbMV0uZ3By
KCkpOwotICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMHgw
MGZmMDBmZiksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgICAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigweDAwZmYwMGZmKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIxKTsKLSAgICAgICAgfSk7Ci0KLSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBhcmcxLCBhcmcyKTsKLSAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKLQotICAg
IENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCAxLCAyKSA9PSAzKTsKLX0KLQotdm9pZCB0
ZXN0U2ltcGxlUGF0Y2hwb2ludFdpdGhPdXB1dENsb2JiZXJzR1BBcmdzKCkKLXsKLSAgICAvLyBX
ZSBjYW4ndCBwcmVkaWN0IHdoZXJlIHRoZSBvdXRwdXQgd2lsbCBiZSBidXQgd2Ugd2FudCB0byBi
ZSBzdXJlIGl0IGlzIG5vdAotICAgIC8vIG9uZSBvZiB0aGUgY2xvYmJlcmVkIHJlZ2lzdGVycyB3
aGljaCBpcyBhIGJpdCBoYXJkIHRvIHRlc3QuCi0gICAgLy8KLSAgICAvLyBXaGF0IHdlIGRvIGlz
IGZvcmNlIHRoZSBoYW5kIG9mIG91ciByZWdpc3RlciBhbGxvY2F0b3IgYnkgY2xvYmJlcmluZyBh
YnNvbHV0ZWx5Ci0gICAgLy8gZXZlcnl0aGluZyBidXQgMS4gVGhlIG9ubHkgdmFsaWQgYWxsb2Nh
dGlvbiBpcyB0byBnaXZlIGl0IHRvIHRoZSByZXN1bHQgYW5kCi0gICAgLy8gc3BpbGwgZXZlcnl0
aGluZyBlbHNlLgotCi0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgaWYgKHByb2Mub3B0TGV2ZWwo
KSA8IDEpIHsKLSAgICAgICAgLy8gRklYTUU6IEFpciBPMCBhbGxvY2F0b3IgY2FuJ3QgaGFuZGxl
IHN1Y2ggcHJvZ3JhbXMuIFdlIHJlbHkgb24gV2FzbUFpcklSR2VuZXJhdG9yCi0gICAgICAgIC8v
IHRvIG5vdCB1c2UgYW55IHN1Y2ggY29uc3RydWN0cyB3aGVyZSB0aGUgcmVnaXN0ZXIgYWxsb2Nh
dG9yIGlzIGNvcm5lcmVkIGluIHN1Y2gKLSAgICAgICAgLy8gYSB3YXkuCi0gICAgICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ2MzMKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAg
IFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjEpOwotICAgIFZhbHVlKiBjb25zdDEgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgNDIpOwotICAgIFZhbHVlKiBjb25zdDIgPSByb290LT5hcHBl
bmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMTMpOwotCi0gICAgUGF0Y2hwb2lu
dFZhbHVlKiBwYXRjaHBvaW50ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJv
YywgSW50NjQsIE9yaWdpbigpKTsKLQotICAgIFJlZ2lzdGVyU2V0IGNsb2JiZXJBbGwgPSBSZWdp
c3RlclNldDo6YWxsR1BScygpOwotICAgIGNsb2JiZXJBbGwuZXhjbHVkZShSZWdpc3RlclNldDo6
c3RhY2tSZWdpc3RlcnMoKSk7Ci0gICAgY2xvYmJlckFsbC5leGNsdWRlKFJlZ2lzdGVyU2V0Ojpy
ZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOwotICAgIGNsb2JiZXJBbGwuY2xlYXIoR1BSSW5m
bzo6YXJndW1lbnRHUFIyKTsKLSAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShjbG9iYmVyQWxs
KTsKLQotICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGNvbnN0MSwgVmFs
dWVSZXA6OlNvbWVSZWdpc3RlcikpOwotICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5l
ZFZhbHVlKGNvbnN0MiwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOwotCi0gICAgcGF0Y2hwb2lu
dC0+c2V0R2VuZXJhdG9yKAotICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBT
dGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewotICAgICAgICAgICAgQWxsb3dNYWNy
b1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwotICAgICAgICAgICAgQ0hF
Q0socGFyYW1zLnNpemUoKSA9PSAzKTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtc1swXS5pc0dQ
UigpKTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtc1sxXS5pc0dQUigpKTsKLSAgICAgICAgICAg
IENIRUNLKHBhcmFtc1syXS5pc0dQUigpKTsKLSAgICAgICAgICAgIGppdC5tb3ZlKHBhcmFtc1sx
XS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgICAgIGppdC5hZGQ2NChwYXJhbXNb
Ml0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7Ci0KLSAgICAgICAgICAgIGNsb2JiZXJBbGwuZm9y
RWFjaChbJl0gKFJlZyByZWcpIHsKLSAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMigweDAwZmYwMGZmKSwgcmVnLmdwcigpKTsKLSAgICAgICAgICAgIH0p
OwotICAgICAgICB9KTsKLQotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIHBhdGNocG9pbnQsCi0gICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgYXJnMSwgYXJnMikpOwotICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOwot
Ci0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIDEsIDIpID09IDU4KTsKLX0KLQot
dm9pZCB0ZXN0U2ltcGxlUGF0Y2hwb2ludFdpdGhvdXRPdXB1dENsb2JiZXJzRlBBcmdzKCkKLXsK
LSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOwotICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwotICAgIFZhbHVlKiBhcmcy
ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJ
bmZvOjphcmd1bWVudEZQUjEpOwotICAgIFZhbHVlKiBjb25zdDEgPSByb290LT5hcHBlbmROZXc8
Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyLjUpOwotICAgIFZhbHVlKiBjb25z
dDIgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEz
LjEpOwotCi0gICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gcm9vdC0+YXBwZW5kTmV3
PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgVm9pZCwgT3JpZ2luKCkpOwotICAgIHBhdGNocG9pbnQt
PmNsb2JiZXJMYXRlKFJlZ2lzdGVyU2V0KEZQUkluZm86OmFyZ3VtZW50RlBSMCwgRlBSSW5mbzo6
YXJndW1lbnRGUFIxKSk7Ci0gICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUo
Y29uc3QxLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7Ci0gICAgcGF0Y2hwb2ludC0+YXBwZW5k
KENvbnN0cmFpbmVkVmFsdWUoY29uc3QyLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7Ci0gICAg
cGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAotICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0
LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewotICAgICAgICAgICAg
QWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwotICAgICAg
ICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9PSAyKTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFt
c1swXS5pc0ZQUigpKTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtc1sxXS5pc0ZQUigpKTsKLSAg
ICAgICAgICAgIGppdC5tb3ZlWmVyb1RvRG91YmxlKHBhcmFtc1swXS5mcHIoKSk7Ci0gICAgICAg
ICAgICBqaXQubW92ZVplcm9Ub0RvdWJsZShwYXJhbXNbMV0uZnByKCkpOwotICAgICAgICAgICAg
aml0Lm1vdmVaZXJvVG9Eb3VibGUoRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKLSAgICAgICAgICAg
IGppdC5tb3ZlWmVyb1RvRG91YmxlKEZQUkluZm86OmFyZ3VtZW50RlBSMSk7Ci0gICAgICAgIH0p
OwotCi0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRk
LCBPcmlnaW4oKSwgYXJnMSwgYXJnMik7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5k
UnVuPGRvdWJsZT4ocHJvYywgMS41LCAyLjUpID09IDQpOwotfQotCi12b2lkIHRlc3RTaW1wbGVQ
YXRjaHBvaW50V2l0aE91cHV0Q2xvYmJlcnNGUEFyZ3MoKQotewotICAgIFByb2NlZHVyZSBwcm9j
OwotICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAxKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBBaXIg
TzAgYWxsb2NhdG9yIGNhbid0IGhhbmRsZSBzdWNoIHByb2dyYW1zLiBXZSByZWx5IG9uIFdhc21B
aXJJUkdlbmVyYXRvcgotICAgICAgICAvLyB0byBub3QgdXNlIGFueSBzdWNoIGNvbnN0cnVjdHMg
d2hlcmUgdGhlIHJlZ2lzdGVyIGFsbG9jYXRvciBpcyBjb3JuZXJlZCBpbiBzdWNoCi0gICAgICAg
IC8vIGEgd2F5LgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk0NjMzCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsK
LSAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIxKTsKLSAgICBWYWx1ZSogY29uc3QxID0g
cm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0Mi41KTsK
LSAgICBWYWx1ZSogY29uc3QyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCAxMy4xKTsKLQotICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9
IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIERvdWJsZSwgT3JpZ2luKCkp
OwotCi0gICAgUmVnaXN0ZXJTZXQgY2xvYmJlckFsbCA9IFJlZ2lzdGVyU2V0OjphbGxGUFJzKCk7
Ci0gICAgY2xvYmJlckFsbC5leGNsdWRlKFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKTsK
LSAgICBjbG9iYmVyQWxsLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdp
c3RlcnMoKSk7Ci0gICAgY2xvYmJlckFsbC5jbGVhcihGUFJJbmZvOjphcmd1bWVudEZQUjIpOwot
ICAgIHBhdGNocG9pbnQtPmNsb2JiZXJMYXRlKGNsb2JiZXJBbGwpOwotCi0gICAgcGF0Y2hwb2lu
dC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoY29uc3QxLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVy
KSk7Ci0gICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoY29uc3QyLCBWYWx1
ZVJlcDo6U29tZVJlZ2lzdGVyKSk7Ci0KLSAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCi0g
ICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNh
Z2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09
IDMpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzBdLmlzRlBSKCkpOwotICAgICAgICAgICAg
Q0hFQ0socGFyYW1zWzFdLmlzRlBSKCkpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzJdLmlz
RlBSKCkpOwotICAgICAgICAgICAgaml0LmFkZERvdWJsZShwYXJhbXNbMV0uZnByKCksIHBhcmFt
c1syXS5mcHIoKSwgcGFyYW1zWzBdLmZwcigpKTsKLQotICAgICAgICAgICAgY2xvYmJlckFsbC5m
b3JFYWNoKFsmXSAoUmVnIHJlZykgewotICAgICAgICAgICAgICAgIGppdC5tb3ZlWmVyb1RvRG91
YmxlKHJlZy5mcHIoKSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICBWYWx1
ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBw
YXRjaHBvaW50LAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3Jp
Z2luKCksIGFyZzEsIGFyZzIpKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48
ZG91YmxlPihwcm9jLCAxLjUsIDIuNSkgPT0gNTkuNik7Ci19Ci0KLXZvaWQgdGVzdFBhdGNocG9p
bnRXaXRoRWFybHlDbG9iYmVyKCkKLXsKLSAgICBhdXRvIHRlc3QgPSBbXSAoR1BSUmVnIHJlZ2lz
dGVyVG9DbG9iYmVyLCBib29sIGFyZzFJbkFyZ0dQUiwgYm9vbCBhcmcySW5BcmdHUFIpIHsKLSAg
ICAgICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7Ci0gICAgICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgICAg
ICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAgCi0gICAgICAgIFBhdGNo
cG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+
KHByb2MsIEludDMyLCBPcmlnaW4oKSk7Ci0gICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25z
dHJhaW5lZFZhbHVlKGFyZzEsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKLSAgICAgICAgcGF0
Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMiwgVmFsdWVSZXA6OlNvbWVSZWdp
c3RlcikpOwotICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyRWFybHkoUmVnaXN0ZXJTZXQocmVn
aXN0ZXJUb0Nsb2JiZXIpKTsKLSAgICAgICAgdW5zaWduZWQgb3B0TGV2ZWwgPSBwcm9jLm9wdExl
dmVsKCk7Ci0gICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKLSAgICAgICAgICAgIFsm
XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFy
YW1zKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG9wdExldmVsID4gMSkgewotICAgICAgICAgICAg
ICAgICAgICBDSEVDSygocGFyYW1zWzFdLmdwcigpID09IEdQUkluZm86OmFyZ3VtZW50R1BSMCkg
PT0gYXJnMUluQXJnR1BSKTsKLSAgICAgICAgICAgICAgICAgICAgQ0hFQ0soKHBhcmFtc1syXS5n
cHIoKSA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjEpID09IGFyZzJJbkFyZ0dQUik7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGFkZDMyKGppdCwg
cGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMl0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7Ci0gICAg
ICAgICAgICB9KTsKLQotICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgcGF0Y2hwb2ludCk7Ci0KLSAgICAgICAgQ0hFQ0soY29tcGlsZUFu
ZFJ1bjxpbnQ+KHByb2MsIDEsIDIpID09IDMpOwotICAgIH07Ci0KLSAgICB0ZXN0KEdQUkluZm86
Om5vbkFyZ0dQUjAsIHRydWUsIHRydWUpOwotICAgIHRlc3QoR1BSSW5mbzo6YXJndW1lbnRHUFIw
LCBmYWxzZSwgdHJ1ZSk7Ci0gICAgdGVzdChHUFJJbmZvOjphcmd1bWVudEdQUjEsIHRydWUsIGZh
bHNlKTsKLX0KLQotdm9pZCB0ZXN0UGF0Y2hwb2ludENhbGxBcmcoKQotewotICAgIFByb2NlZHVy
ZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFs
dWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMSk7Ci0gICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gcm9vdC0+YXBwZW5kTmV3
PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgSW50MzIsIE9yaWdpbigpKTsKLSAgICBwYXRjaHBvaW50
LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmcxLCBWYWx1ZVJlcDo6c3RhY2tBcmd1bWVudCgw
KSkpOwotICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzIsIFZhbHVl
UmVwOjpzdGFja0FyZ3VtZW50KDgpKSk7Ci0gICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAot
ICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25Q
YXJhbXMmIHBhcmFtcykgewotICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVz
YWdlIGFsbG93U2NyYXRjaChqaXQpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9
PSAzKTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtc1swXS5pc0dQUigpKTsKLSAgICAgICAgICAg
IENIRUNLKHBhcmFtc1sxXS5pc1N0YWNrKCkpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzJd
LmlzU3RhY2soKSk7Ci0gICAgICAgICAgICBqaXQubG9hZDMyKAotICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgcGFyYW1zWzFd
Lm9mZnNldEZyb21GUCgpKSwKLSAgICAgICAgICAgICAgICBwYXJhbXNbMF0uZ3ByKCkpOwotICAg
ICAgICAgICAgaml0LmFkZDMyKAotICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVz
cyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgcGFyYW1zWzJdLm9mZnNldEZyb21GUCgpKSwK
LSAgICAgICAgICAgICAgICBwYXJhbXNbMF0uZ3ByKCkpOwotICAgICAgICB9KTsKLSAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcGF0Y2hwb2lu
dCk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgMSwgMikgPT0gMyk7Ci19
Ci0KLXZvaWQgdGVzdFBhdGNocG9pbnRGaXhlZFJlZ2lzdGVyKCkKLXsKLSAgICBQcm9jZWR1cmUg
cHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVl
KiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjEpOwotICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IHJvb3QtPmFwcGVuZE5ldzxQ
YXRjaHBvaW50VmFsdWU+KHByb2MsIEludDMyLCBPcmlnaW4oKSk7Ci0gICAgcGF0Y2hwb2ludC0+
YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMSwgVmFsdWVSZXAoR1BSSW5mbzo6cmVnVDApKSk7
Ci0gICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMiwgVmFsdWVSZXAo
R1BSSW5mbzo6cmVnVDEpKSk7Ci0gICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAotICAgICAg
ICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMm
IHBhcmFtcykgewotICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFs
bG93U2NyYXRjaChqaXQpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9PSAzKTsK
LSAgICAgICAgICAgIENIRUNLKHBhcmFtc1swXS5pc0dQUigpKTsKLSAgICAgICAgICAgIENIRUNL
KHBhcmFtc1sxXSA9PSBWYWx1ZVJlcChHUFJJbmZvOjpyZWdUMCkpOwotICAgICAgICAgICAgQ0hF
Q0socGFyYW1zWzJdID09IFZhbHVlUmVwKEdQUkluZm86OnJlZ1QxKSk7Ci0gICAgICAgICAgICBh
ZGQzMihqaXQsIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSwgcGFyYW1zWzBdLmdwcigp
KTsKLSAgICAgICAgfSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJl
dHVybiwgT3JpZ2luKCksIHBhdGNocG9pbnQpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxp
bnQ+KHByb2MsIDEsIDIpID09IDMpOwotfQotCi12b2lkIHRlc3RQYXRjaHBvaW50QW55KFZhbHVl
UmVwIHJlcCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAg
IFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0
Y2hwb2ludCA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIEludDMyLCBP
cmlnaW4oKSk7Ci0gICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMSwg
cmVwKSk7Ci0gICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMiwgcmVw
KSk7Ci0gICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAotICAgICAgICBbJl0gKENDYWxsSGVs
cGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewotICAg
ICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQp
OwotICAgICAgICAgICAgLy8gV2Ugc2hvdWxkbid0IGhhdmUgc3BpbGxlZCB0aGUgaW5wdXRzLCBz
byB3ZSBhc3NlcnQgdGhhdCB0aGV5J3JlIGluIHJlZ2lzdGVycy4KLSAgICAgICAgICAgIENIRUNL
KHBhcmFtcy5zaXplKCkgPT0gMyk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXNbMF0uaXNHUFIo
KSk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0uaXNHUFIoKSk7Ci0gICAgICAgICAgICBD
SEVDSyhwYXJhbXNbMl0uaXNHUFIoKSk7Ci0gICAgICAgICAgICBhZGQzMihqaXQsIHBhcmFtc1sx
XS5ncHIoKSwgcGFyYW1zWzJdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOwotICAgICAgICB9KTsK
LSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwg
cGF0Y2hwb2ludCk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgMSwgMikg
PT0gMyk7Ci19Ci0KLXZvaWQgdGVzdFBhdGNocG9pbnRHUFNjcmF0Y2goKQotewotICAgIFByb2Nl
ZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAg
VmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgVmFsdWUqIGFyZzIgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSk7Ci0gICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gcm9vdC0+YXBwZW5k
TmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgSW50MzIsIE9yaWdpbigpKTsKLSAgICBwYXRjaHBv
aW50LT5hcHBlbmQoYXJnMSwgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7Ci0gICAgcGF0Y2hwb2lu
dC0+YXBwZW5kKGFyZzIsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpOwotICAgIHBhdGNocG9pbnQt
Pm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDI7Ci0gICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9y
KAotICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRp
b25QYXJhbXMmIHBhcmFtcykgewotICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3Rl
clVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwotICAgICAgICAgICAgLy8gV2Ugc2hvdWxkbid0IGhh
dmUgc3BpbGxlZCB0aGUgaW5wdXRzLCBzbyB3ZSBhc3NlcnQgdGhhdCB0aGV5J3JlIGluIHJlZ2lz
dGVycy4KLSAgICAgICAgICAgIENIRUNLKHBhcmFtcy5zaXplKCkgPT0gMyk7Ci0gICAgICAgICAg
ICBDSEVDSyhwYXJhbXNbMF0uaXNHUFIoKSk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0u
aXNHUFIoKSk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXNbMl0uaXNHUFIoKSk7Ci0gICAgICAg
ICAgICBDSEVDSyhwYXJhbXMuZ3BTY3JhdGNoKDApICE9IEludmFsaWRHUFJSZWcpOwotICAgICAg
ICAgICAgQ0hFQ0socGFyYW1zLmdwU2NyYXRjaCgwKSAhPSBwYXJhbXNbMF0uZ3ByKCkpOwotICAg
ICAgICAgICAgQ0hFQ0socGFyYW1zLmdwU2NyYXRjaCgwKSAhPSBwYXJhbXNbMV0uZ3ByKCkpOwot
ICAgICAgICAgICAgQ0hFQ0socGFyYW1zLmdwU2NyYXRjaCgwKSAhPSBwYXJhbXNbMl0uZ3ByKCkp
OwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zLmdwU2NyYXRjaCgxKSAhPSBJbnZhbGlkR1BSUmVn
KTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtcy5ncFNjcmF0Y2goMSkgIT0gcGFyYW1zLmdwU2Ny
YXRjaCgwKSk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXMuZ3BTY3JhdGNoKDEpICE9IHBhcmFt
c1swXS5ncHIoKSk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXMuZ3BTY3JhdGNoKDEpICE9IHBh
cmFtc1sxXS5ncHIoKSk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXMuZ3BTY3JhdGNoKDEpICE9
IHBhcmFtc1syXS5ncHIoKSk7Ci0gICAgICAgICAgICBDSEVDSyghcGFyYW1zLnVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCkuZ2V0KHBhcmFtcy5ncFNjcmF0Y2goMCkpKTsKLSAgICAgICAgICAgIENIRUNL
KCFwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKS5nZXQocGFyYW1zLmdwU2NyYXRjaCgxKSkp
OwotICAgICAgICAgICAgYWRkMzIoaml0LCBwYXJhbXNbMV0uZ3ByKCksIHBhcmFtc1syXS5ncHIo
KSwgcGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgfSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHBhdGNocG9pbnQpOwotCi0gICAgQ0hF
Q0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIDEsIDIpID09IDMpOwotfQotCi12b2lkIHRlc3RQ
YXRjaHBvaW50RlBTY3JhdGNoKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOwotICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgIFBhdGNocG9p
bnRWYWx1ZSogcGF0Y2hwb2ludCA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHBy
b2MsIEludDMyLCBPcmlnaW4oKSk7Ci0gICAgcGF0Y2hwb2ludC0+YXBwZW5kKGFyZzEsIFZhbHVl
UmVwOjpTb21lUmVnaXN0ZXIpOwotICAgIHBhdGNocG9pbnQtPmFwcGVuZChhcmcyLCBWYWx1ZVJl
cDo6U29tZVJlZ2lzdGVyKTsKLSAgICBwYXRjaHBvaW50LT5udW1GUFNjcmF0Y2hSZWdpc3RlcnMg
PSAyOwotICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKLSAgICAgICAgWyZdIChDQ2FsbEhl
bHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKLSAg
ICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0
KTsKLSAgICAgICAgICAgIC8vIFdlIHNob3VsZG4ndCBoYXZlIHNwaWxsZWQgdGhlIGlucHV0cywg
c28gd2UgYXNzZXJ0IHRoYXQgdGhleSdyZSBpbiByZWdpc3RlcnMuCi0gICAgICAgICAgICBDSEVD
SyhwYXJhbXMuc2l6ZSgpID09IDMpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzBdLmlzR1BS
KCkpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzFdLmlzR1BSKCkpOwotICAgICAgICAgICAg
Q0hFQ0socGFyYW1zWzJdLmlzR1BSKCkpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zLmZwU2Ny
YXRjaCgwKSAhPSBJbnZhbGlkRlBSUmVnKTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtcy5mcFNj
cmF0Y2goMSkgIT0gSW52YWxpZEZQUlJlZyk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXMuZnBT
Y3JhdGNoKDEpICE9IHBhcmFtcy5mcFNjcmF0Y2goMCkpOwotICAgICAgICAgICAgQ0hFQ0soIXBh
cmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLmdldChwYXJhbXMuZnBTY3JhdGNoKDApKSk7Ci0g
ICAgICAgICAgICBDSEVDSyghcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCkuZ2V0KHBhcmFt
cy5mcFNjcmF0Y2goMSkpKTsKLSAgICAgICAgICAgIGFkZDMyKGppdCwgcGFyYW1zWzFdLmdwcigp
LCBwYXJhbXNbMl0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7Ci0gICAgICAgIH0pOwotICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBwYXRjaHBv
aW50KTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCAxLCAyKSA9PSAzKTsK
LX0KLQotdm9pZCB0ZXN0UGF0Y2hwb2ludExvdHNPZkxhdGVBbnlzKCkKLXsKLSAgICBQcm9jZWR1
cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZl
Y3RvcjxpbnQ+IHRoaW5nczsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAyMDA7IGktLTspCi0gICAg
ICAgIHRoaW5ncy5hcHBlbmQoaSk7Ci0KLSAgICBWZWN0b3I8VmFsdWUqPiB2YWx1ZXM7Ci0gICAg
Zm9yIChpbnQmIHRoaW5nIDogdGhpbmdzKSB7Ci0gICAgICAgIFZhbHVlKiB2YWx1ZSA9IHJvb3Qt
PmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBMb2FkLCBJbnQzMiwg
T3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksICZ0aGluZykpOwotICAgICAgICB2YWx1ZXMuYXBwZW5kKHZhbHVlKTsKLSAg
ICB9Ci0KLSAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8
UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBJbnQzMiwgT3JpZ2luKCkpOwotICAgIHBhdGNocG9pbnQt
PmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKLSAgICBmb3Ig
KFZhbHVlKiB2YWx1ZSA6IHZhbHVlcykKLSAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0
cmFpbmVkVmFsdWUodmFsdWUsIFZhbHVlUmVwOjpMYXRlQ29sZEFueSkpOwotICAgIHBhdGNocG9p
bnQtPnNldEdlbmVyYXRvcigKLSAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3Qg
U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAgIEFsbG93TWFj
cm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKLSAgICAgICAgICAgIC8v
IFdlIHNob3VsZG4ndCBoYXZlIHNwaWxsZWQgdGhlIGlucHV0cywgc28gd2UgYXNzZXJ0IHRoYXQg
dGhleSdyZSBpbiByZWdpc3RlcnMuCi0gICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09
IHRoaW5ncy5zaXplKCkgKyAxKTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtc1swXS5pc0dQUigp
KTsKLSAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDApLCBw
YXJhbXNbMF0uZ3ByKCkpOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IHBh
cmFtcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgICAgIGlmIChwYXJhbXNbaV0uaXNHUFIo
KSkgewotICAgICAgICAgICAgICAgICAgICBDSEVDSyhwYXJhbXNbaV0gIT0gcGFyYW1zWzBdKTsK
LSAgICAgICAgICAgICAgICAgICAgaml0LmFkZDMyKHBhcmFtc1tpXS5ncHIoKSwgcGFyYW1zWzBd
LmdwcigpKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBD
SEVDSyhwYXJhbXNbaV0uaXNTdGFjaygpKTsKLSAgICAgICAgICAgICAgICAgICAgaml0LmFkZDMy
KENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgcGFyYW1z
W2ldLm9mZnNldEZyb21GUCgpKSwgcGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBwYXRjaHBvaW50KTsKLQotICAgIENIRUNLKHN0
YXRpY19jYXN0PHNpemVfdD4oY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpKSA9PSAodGhpbmdzLnNp
emUoKSAqICh0aGluZ3Muc2l6ZSgpIC0gMSkpIC8gMik7Ci19Ci0KLXZvaWQgdGVzdFBhdGNocG9p
bnRBbnlJbW0oVmFsdWVSZXAgcmVwKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZzEgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDIpOwotICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0
Y2hwb2ludCA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIEludDMyLCBP
cmlnaW4oKSk7Ci0gICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMSwg
cmVwKSk7Ci0gICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMiwgcmVw
KSk7Ci0gICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAotICAgICAgICBbJl0gKENDYWxsSGVs
cGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewotICAg
ICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQp
OwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9PSAzKTsKLSAgICAgICAgICAgIENI
RUNLKHBhcmFtc1swXS5pc0dQUigpKTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtc1sxXS5pc0dQ
UigpKTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtc1syXS5pc0NvbnN0YW50KCkpOwotICAgICAg
ICAgICAgQ0hFQ0socGFyYW1zWzJdLnZhbHVlKCkgPT0gNDIpOwotICAgICAgICAgICAgaml0LmFk
ZDMyKAotICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHN0YXRpY19j
YXN0PGludDMyX3Q+KHBhcmFtc1syXS52YWx1ZSgpKSksCi0gICAgICAgICAgICAgICAgcGFyYW1z
WzFdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOwotICAgICAgICB9KTsKLSAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcGF0Y2hwb2ludCk7Ci0K
LSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgMSkgPT0gNDMpOwotfQotCi12b2lk
IHRlc3RQYXRjaHBvaW50TWFueUltbXMoKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZzEgPSByb290
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDIpOwotICAgIFZhbHVl
KiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQz
KTsKLSAgICBWYWx1ZSogYXJnMyA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2Ms
IE9yaWdpbigpLCA0MzAwMDAwMDAwMDAwMGxsKTsKLSAgICBWYWx1ZSogYXJnNCA9IHJvb3QtPmFw
cGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDIuNSk7Ci0gICAgUGF0
Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1
ZT4ocHJvYywgVm9pZCwgT3JpZ2luKCkpOwotICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJh
aW5lZFZhbHVlKGFyZzEsIFZhbHVlUmVwOjpXYXJtQW55KSk7Ci0gICAgcGF0Y2hwb2ludC0+YXBw
ZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMiwgVmFsdWVSZXA6Oldhcm1BbnkpKTsKLSAgICBwYXRj
aHBvaW50LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmczLCBWYWx1ZVJlcDo6V2FybUFueSkp
OwotICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzQsIFZhbHVlUmVw
OjpXYXJtQW55KSk7Ci0gICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAotICAgICAgICBbJl0g
KENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7
Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09IDQpOwotICAgICAgICAgICAgQ0hF
Q0socGFyYW1zWzBdID09IFZhbHVlUmVwOjpjb25zdGFudCg0MikpOwotICAgICAgICAgICAgQ0hF
Q0socGFyYW1zWzFdID09IFZhbHVlUmVwOjpjb25zdGFudCg0MykpOwotICAgICAgICAgICAgQ0hF
Q0socGFyYW1zWzJdID09IFZhbHVlUmVwOjpjb25zdGFudCg0MzAwMDAwMDAwMDAwMGxsKSk7Ci0g
ICAgICAgICAgICBDSEVDSyhwYXJhbXNbM10gPT0gVmFsdWVSZXA6OmNvbnN0YW50KGJpdHdpc2Vf
Y2FzdDxpbnQ2NF90Pig0Mi41KSkpOwotICAgICAgICB9KTsKLSAgICByb290LT5hcHBlbmROZXdD
b250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7Ci0KLSAgICBD
SEVDSyghY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpKTsKLX0KLQotdm9pZCB0ZXN0UGF0Y2hwb2lu
dFdpdGhSZWdpc3RlclJlc3VsdCgpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKLSAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICBQYXRjaHBv
aW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihw
cm9jLCBJbnQzMiwgT3JpZ2luKCkpOwotICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5l
ZFZhbHVlKGFyZzEsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKLSAgICBwYXRjaHBvaW50LT5h
cHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmcyLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7Ci0g
ICAgcGF0Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWludCA9IFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6
bm9uQXJnR1BSMCk7Ci0gICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAotICAgICAgICBbJl0g
KENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFt
cykgewotICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2Ny
YXRjaChqaXQpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9PSAzKTsKLSAgICAg
ICAgICAgIENIRUNLKHBhcmFtc1swXSA9PSBWYWx1ZVJlcDo6cmVnKEdQUkluZm86Om5vbkFyZ0dQ
UjApKTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtc1sxXS5pc0dQUigpKTsKLSAgICAgICAgICAg
IENIRUNLKHBhcmFtc1syXS5pc0dQUigpKTsKLSAgICAgICAgICAgIGFkZDMyKGppdCwgcGFyYW1z
WzFdLmdwcigpLCBwYXJhbXNbMl0uZ3ByKCksIEdQUkluZm86Om5vbkFyZ0dQUjApOwotICAgICAg
ICB9KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmln
aW4oKSwgcGF0Y2hwb2ludCk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywg
MSwgMikgPT0gMyk7Ci19Ci0KLXZvaWQgdGVzdFBhdGNocG9pbnRXaXRoU3RhY2tBcmd1bWVudFJl
c3VsdCgpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBW
YWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNo
cG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBJbnQzMiwgT3Jp
Z2luKCkpOwotICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzEsIFZh
bHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKLSAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3RyYWlu
ZWRWYWx1ZShhcmcyLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7Ci0gICAgcGF0Y2hwb2ludC0+
cmVzdWx0Q29uc3RyYWludCA9IFZhbHVlUmVwOjpzdGFja0FyZ3VtZW50KDApOwotICAgIHBhdGNo
cG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKLSAg
ICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAg
ICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAg
ICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09IDMpOwotICAgICAgICAgICAgQ0hFQ0socGFy
YW1zWzBdID09IFZhbHVlUmVwOjpzdGFjaygtc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHByb2MuZnJh
bWVTaXplKCkpKSk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0uaXNHUFIoKSk7Ci0gICAg
ICAgICAgICBDSEVDSyhwYXJhbXNbMl0uaXNHUFIoKSk7Ci0gICAgICAgICAgICBqaXQuYWRkMzIo
cGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMl0uZ3ByKCksIGppdC5zY3JhdGNoUmVnaXN0ZXIoKSk7
Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMihqaXQuc2NyYXRjaFJlZ2lzdGVyKCksIENDYWxsSGVs
cGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCAwKSk7Ci0g
ICAgICAgIH0pOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCBwYXRjaHBvaW50KTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihw
cm9jLCAxLCAyKSA9PSAzKTsKLX0KLQotdm9pZCB0ZXN0UGF0Y2hwb2ludFdpdGhBbnlSZXN1bHQo
KQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgVmFsdWUq
IGFyZzIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50
ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgRG91YmxlLCBPcmlnaW4o
KSk7Ci0gICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMSwgVmFsdWVS
ZXA6OlNvbWVSZWdpc3RlcikpOwotICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZh
bHVlKGFyZzIsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKLSAgICBwYXRjaHBvaW50LT5yZXN1
bHRDb25zdHJhaW50ID0gVmFsdWVSZXA6Oldhcm1Bbnk7Ci0gICAgcGF0Y2hwb2ludC0+Y2xvYmJl
ckxhdGUoUmVnaXN0ZXJTZXQ6OmFsbEZQUnMoKSk7Ci0gICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihS
ZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwotICAgIHBhdGNocG9pbnQtPmNs
b2JiZXIoUmVnaXN0ZXJTZXQoR1BSSW5mbzo6cmVnVDApKTsKLSAgICBwYXRjaHBvaW50LT5zZXRH
ZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRj
aFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJh
bXMuc2l6ZSgpID09IDMpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzBdLmlzU3RhY2soKSk7
Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0uaXNHUFIoKSk7Ci0gICAgICAgICAgICBDSEVD
SyhwYXJhbXNbMl0uaXNHUFIoKSk7Ci0gICAgICAgICAgICBhZGQzMihqaXQsIHBhcmFtc1sxXS5n
cHIoKSwgcGFyYW1zWzJdLmdwcigpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQu
Y29udmVydEludDMyVG9Eb3VibGUoR1BSSW5mbzo6cmVnVDAsIEZQUkluZm86OmZwUmVnVDApOwot
ICAgICAgICAgICAgaml0LnN0b3JlRG91YmxlKEZQUkluZm86OmZwUmVnVDAsIENDYWxsSGVscGVy
czo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgcGFyYW1zWzBdLm9mZnNldEZy
b21GUCgpKSk7Ci0gICAgICAgIH0pOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLCBwYXRjaHBvaW50KTsKLQotICAgIENIRUNLKGNvbXBpbGVB
bmRSdW48ZG91YmxlPihwcm9jLCAxLCAyKSA9PSAzKTsKLX0KLQotdm9pZCB0ZXN0U2ltcGxlQ2hl
Y2soKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAx
KQotICAgICAgICByZXR1cm47Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKLSAgICBWYWx1ZSogYXJnID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIENoZWNrVmFsdWUqIGNo
ZWNrID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrLCBPcmlnaW4oKSwg
YXJnKTsKLSAgICBjaGVjay0+c2V0R2VuZXJhdG9yKAotICAgICAgICBbJl0gKENDYWxsSGVscGVy
cyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewotICAgICAg
ICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwot
ICAgICAgICAgICAgQ0hFQ0soIXBhcmFtcy5zaXplKCkpOwotCi0gICAgICAgICAgICAvLyBUaGlz
IHNob3VsZCBhbHdheXMgd29yayBiZWNhdXNlIGEgZnVuY3Rpb24gdGhpcyBzaW1wbGUgc2hvdWxk
IG5ldmVyIGhhdmUgY2FsbGVlCi0gICAgICAgICAgICAvLyBzYXZlcy4KLSAgICAgICAgICAgIGpp
dC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDQyKSwgR1BSSW5mbzo6cmV0dXJuVmFs
dWVHUFIpOwotICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7Ci0gICAgICAg
ICAgICBqaXQucmV0KCk7Ci0gICAgICAgIH0pOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kTmV3PENv
bnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBp
bGVQcm9jKHByb2MpOwotICAgIAotICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAwKSA9PSAw
KTsKLSAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgMSkgPT0gNDIpOwotfQotCi12b2lkIHRl
c3RDaGVja0ZhbHNlKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIENoZWNrVmFsdWUqIGNoZWNrID0gcm9vdC0+YXBw
ZW5kTmV3PENoZWNrVmFsdWU+KAotICAgICAgICBwcm9jLCBDaGVjaywgT3JpZ2luKCksIHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7Ci0gICAgdW5zaWdu
ZWQgb3B0TGV2ZWwgPSBwcm9jLm9wdExldmVsKCk7Ci0gICAgY2hlY2stPnNldEdlbmVyYXRvcigK
LSAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmLCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJh
bXMmKSB7Ci0gICAgICAgICAgICBpZiAob3B0TGV2ZWwgPiAxKQotICAgICAgICAgICAgICAgIENI
RUNLKCEiVGhpcyBzaG91bGQgbm90IGhhdmUgZXhlY3V0ZWQiKTsKLSAgICAgICAgfSk7Ci0gICAg
cm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwot
Ci0gICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAgCi0gICAgQ0hFQ0soaW52
b2tlPGludD4oKmNvZGUpID09IDApOwotfQotCi12b2lkIHRlc3RDaGVja1RydWUoKQotewotICAg
IFByb2NlZHVyZSBwcm9jOwotICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAxKQotICAgICAgICBy
ZXR1cm47Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBDaGVj
a1ZhbHVlKiBjaGVjayA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPigKLSAgICAgICAgcHJv
YywgQ2hlY2ssIE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgMSkpOwotICAgIHVuc2lnbmVkIG9wdExldmVsID0gcHJvYy5vcHRMZXZlbCgpOwot
ICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQs
IGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICBB
bGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAgICAg
ICAgICBpZiAob3B0TGV2ZWwgPiAxKQotICAgICAgICAgICAgICAgIENIRUNLKHBhcmFtcy52YWx1
ZSgpLT5vcGNvZGUoKSA9PSBQYXRjaHBvaW50KTsKLSAgICAgICAgICAgIENIRUNLKCFwYXJhbXMu
c2l6ZSgpKTsKLQotICAgICAgICAgICAgLy8gVGhpcyBzaG91bGQgYWx3YXlzIHdvcmsgYmVjYXVz
ZSBhIGZ1bmN0aW9uIHRoaXMgc2ltcGxlIHNob3VsZCBuZXZlciBoYXZlIGNhbGxlZQotICAgICAg
ICAgICAgLy8gc2F2ZXMuCi0gICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMig0MiksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKLSAgICAgICAgICAgIGppdC5l
bWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwotICAgICAgICAgICAgaml0LnJldCgpOwotICAgICAgICB9
KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCAwKSk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICAKLSAgICBD
SEVDSyhpbnZva2U8aW50PigqY29kZSkgPT0gNDIpOwotfQotCi12b2lkIHRlc3RDaGVja0xlc3NU
aGFuKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBpZiAocHJvYy5vcHRMZXZlbCgpIDwg
MSkKLSAgICAgICAgcmV0dXJuOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7Ci0gICAgVmFsdWUqIGFyZyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBDaGVj
a1ZhbHVlKiBjaGVjayA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPigKLSAgICAgICAgcHJv
YywgQ2hlY2ssIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAg
ICAgICAgICAgcHJvYywgTGVzc1RoYW4sIE9yaWdpbigpLCBhcmcsCi0gICAgICAgICAgICByb290
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDIpKSk7Ci0gICAgY2hl
Y2stPnNldEdlbmVyYXRvcigKLSAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3Qg
U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAgIEFsbG93TWFj
cm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKLSAgICAgICAgICAgIENI
RUNLKCFwYXJhbXMuc2l6ZSgpKTsKLQotICAgICAgICAgICAgLy8gVGhpcyBzaG91bGQgYWx3YXlz
IHdvcmsgYmVjYXVzZSBhIGZ1bmN0aW9uIHRoaXMgc2ltcGxlIHNob3VsZCBuZXZlciBoYXZlIGNh
bGxlZQotICAgICAgICAgICAgLy8gc2F2ZXMuCi0gICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMig0MiksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKLSAgICAg
ICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwotICAgICAgICAgICAgaml0LnJldCgp
OwotICAgICAgICB9KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAg
IHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCAwKSk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsK
LSAgICAKLSAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgNDIpID09IDApOwotICAgIENIRUNL
KGludm9rZTxpbnQ+KCpjb2RlLCAxMDAwKSA9PSAwKTsKLSAgICBDSEVDSyhpbnZva2U8aW50Pigq
Y29kZSwgNDEpID09IDQyKTsKLSAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgMCkgPT0gNDIp
OwotICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAtMSkgPT0gNDIpOwotfQotCi12b2lkIHRl
c3RDaGVja01lZ2FDb21ibygpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgaWYgKHByb2Mu
b3B0TGV2ZWwoKSA8IDEpCi0gICAgICAgIHJldHVybjsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBiYXNlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAg
IFZhbHVlKiBpbmRleCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIFpF
eHQzMiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAg
ICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkp
KTsKLQotICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBw
cm9jLCBBZGQsIE9yaWdpbigpLCBiYXNlLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAotICAgICAgICAgICAgcHJvYywgU2hsLCBPcmlnaW4oKSwgaW5kZXgsCi0gICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpKTsKLSAgICAK
LSAgICBDaGVja1ZhbHVlKiBjaGVjayA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPigKLSAg
ICAgICAgcHJvYywgQ2hlY2ssIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAotICAgICAgICAgICAgcHJvYywgTGVzc1RoYW4sIE9yaWdpbigpLAotICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkOFMsIE9yaWdpbigpLCBwdHIp
LAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIDQyKSkpOwotICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxI
ZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0g
ICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGpp
dCk7Ci0gICAgICAgICAgICBDSEVDSyghcGFyYW1zLnNpemUoKSk7Ci0KLSAgICAgICAgICAgIC8v
IFRoaXMgc2hvdWxkIGFsd2F5cyB3b3JrIGJlY2F1c2UgYSBmdW5jdGlvbiB0aGlzIHNpbXBsZSBz
aG91bGQgbmV2ZXIgaGF2ZSBjYWxsZWUKLSAgICAgICAgICAgIC8vIHNhdmVzLgotICAgICAgICAg
ICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoNDIpLCBHUFJJbmZvOjpyZXR1
cm5WYWx1ZUdQUik7Ci0gICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKLSAg
ICAgICAgICAgIGppdC5yZXQoKTsKLSAgICAgICAgfSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByb290LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwotCi0gICAgYXV0byBjb2RlID0g
Y29tcGlsZVByb2MocHJvYyk7Ci0KLSAgICBpbnQ4X3QgdmFsdWU7Ci0gICAgdmFsdWUgPSA0MjsK
LSAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgJnZhbHVlIC0gMiwgMSkgPT0gMCk7Ci0gICAg
dmFsdWUgPSAxMjc7Ci0gICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsICZ2YWx1ZSAtIDIsIDEp
ID09IDApOwotICAgIHZhbHVlID0gNDE7Ci0gICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsICZ2
YWx1ZSAtIDIsIDEpID09IDQyKTsKLSAgICB2YWx1ZSA9IDA7Ci0gICAgQ0hFQ0soaW52b2tlPGlu
dD4oKmNvZGUsICZ2YWx1ZSAtIDIsIDEpID09IDQyKTsKLSAgICB2YWx1ZSA9IC0xOwotICAgIENI
RUNLKGludm9rZTxpbnQ+KCpjb2RlLCAmdmFsdWUgLSAyLCAxKSA9PSA0Mik7Ci19Ci0KLXZvaWQg
dGVzdENoZWNrVHJpY2t5TWVnYUNvbWJvKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBp
ZiAocHJvYy5vcHRMZXZlbCgpIDwgMSkKLSAgICAgICAgcmV0dXJuOwotICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGJhc2UgPSByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7Ci0gICAgVmFsdWUqIGluZGV4ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAg
cHJvYywgWkV4dDMyLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
LSAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKSk7Ci0KLSAgICBWYWx1ZSogcHRy
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwg
YmFzZSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2Ms
IFNobCwgT3JpZ2luKCksIGluZGV4LAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0
MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKSk7Ci0gICAgCi0gICAgQ2hlY2tWYWx1ZSogY2hl
Y2sgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4oCi0gICAgICAgIHByb2MsIENoZWNrLCBP
cmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHBy
b2MsIExlc3NUaGFuLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1v
cnlWYWx1ZT4ocHJvYywgTG9hZDhTLCBPcmlnaW4oKSwgcHRyKSwKLSAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0MikpKTsKLSAgICBjaGVj
ay0+c2V0R2VuZXJhdG9yKAotICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBT
dGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewotICAgICAgICAgICAgQWxsb3dNYWNy
b1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwotICAgICAgICAgICAgQ0hF
Q0soIXBhcmFtcy5zaXplKCkpOwotCi0gICAgICAgICAgICAvLyBUaGlzIHNob3VsZCBhbHdheXMg
d29yayBiZWNhdXNlIGEgZnVuY3Rpb24gdGhpcyBzaW1wbGUgc2hvdWxkIG5ldmVyIGhhdmUgY2Fs
bGVlCi0gICAgICAgICAgICAvLyBzYXZlcy4KLSAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKDQyKSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwotICAgICAg
ICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7Ci0gICAgICAgICAgICBqaXQucmV0KCk7
Ci0gICAgICAgIH0pOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIDApKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwot
Ci0gICAgaW50OF90IHZhbHVlOwotICAgIHZhbHVlID0gNDI7Ci0gICAgQ0hFQ0soaW52b2tlPGlu
dD4oKmNvZGUsICZ2YWx1ZSAtIDIsIDApID09IDApOwotICAgIHZhbHVlID0gMTI3OwotICAgIENI
RUNLKGludm9rZTxpbnQ+KCpjb2RlLCAmdmFsdWUgLSAyLCAwKSA9PSAwKTsKLSAgICB2YWx1ZSA9
IDQxOwotICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAmdmFsdWUgLSAyLCAwKSA9PSA0Mik7
Ci0gICAgdmFsdWUgPSAwOwotICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAmdmFsdWUgLSAy
LCAwKSA9PSA0Mik7Ci0gICAgdmFsdWUgPSAtMTsKLSAgICBDSEVDSyhpbnZva2U8aW50PigqY29k
ZSwgJnZhbHVlIC0gMiwgMCkgPT0gNDIpOwotfQotCi12b2lkIHRlc3RDaGVja1R3b01lZ2FDb21i
b3MoKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAx
KQotICAgICAgICByZXR1cm47Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKLSAgICBWYWx1ZSogYmFzZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBWYWx1ZSogaW5kZXgg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBaRXh0MzIsIE9yaWdpbigp
LAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgVHJ1
bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSk7Ci0KLSAgICBWYWx1
ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgQWRkLCBPcmln
aW4oKSwgYmFzZSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAg
IHByb2MsIFNobCwgT3JpZ2luKCksIGluZGV4LAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKSk7Ci0KLSAgICBWYWx1ZSogcHJlZGlj
YXRlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgTGVzc1RoYW4sIE9y
aWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQ4
UywgT3JpZ2luKCksIHB0ciksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCA0MikpOwotICAgIAotICAgIENoZWNrVmFsdWUqIGNoZWNrID0gcm9v
dC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrLCBPcmlnaW4oKSwgcHJlZGljYXRl
KTsKLSAgICBjaGVjay0+c2V0R2VuZXJhdG9yKAotICAgICAgICBbJl0gKENDYWxsSGVscGVycyYg
aml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewotICAgICAgICAg
ICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwotICAg
ICAgICAgICAgQ0hFQ0soIXBhcmFtcy5zaXplKCkpOwotCi0gICAgICAgICAgICAvLyBUaGlzIHNo
b3VsZCBhbHdheXMgd29yayBiZWNhdXNlIGEgZnVuY3Rpb24gdGhpcyBzaW1wbGUgc2hvdWxkIG5l
dmVyIGhhdmUgY2FsbGVlCi0gICAgICAgICAgICAvLyBzYXZlcy4KLSAgICAgICAgICAgIGppdC5t
b3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDQyKSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVH
UFIpOwotICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7Ci0gICAgICAgICAg
ICBqaXQucmV0KCk7Ci0gICAgICAgIH0pOwotICAgIENoZWNrVmFsdWUqIGNoZWNrMiA9IHJvb3Qt
PmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVjaywgT3JpZ2luKCksIHByZWRpY2F0ZSk7
Ci0gICAgY2hlY2syLT5zZXRHZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAg
ICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAg
ICAgICAgICBDSEVDSyghcGFyYW1zLnNpemUoKSk7Ci0KLSAgICAgICAgICAgIC8vIFRoaXMgc2hv
dWxkIGFsd2F5cyB3b3JrIGJlY2F1c2UgYSBmdW5jdGlvbiB0aGlzIHNpbXBsZSBzaG91bGQgbmV2
ZXIgaGF2ZSBjYWxsZWUKLSAgICAgICAgICAgIC8vIHNhdmVzLgotICAgICAgICAgICAgaml0Lm1v
dmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoNDMpLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQ
Uik7Ci0gICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKLSAgICAgICAgICAg
IGppdC5yZXQoKTsKLSAgICAgICAgfSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8Q29uc3Qz
MlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwotCi0gICAgYXV0byBjb2RlID0gY29tcGlsZVBy
b2MocHJvYyk7Ci0KLSAgICBpbnQ4X3QgdmFsdWU7Ci0gICAgdmFsdWUgPSA0MjsKLSAgICBDSEVD
SyhpbnZva2U8aW50PigqY29kZSwgJnZhbHVlIC0gMiwgMSkgPT0gMCk7Ci0gICAgdmFsdWUgPSAx
Mjc7Ci0gICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsICZ2YWx1ZSAtIDIsIDEpID09IDApOwot
ICAgIHZhbHVlID0gNDE7Ci0gICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsICZ2YWx1ZSAtIDIs
IDEpID09IDQyKTsKLSAgICB2YWx1ZSA9IDA7Ci0gICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUs
ICZ2YWx1ZSAtIDIsIDEpID09IDQyKTsKLSAgICB2YWx1ZSA9IC0xOwotICAgIENIRUNLKGludm9r
ZTxpbnQ+KCpjb2RlLCAmdmFsdWUgLSAyLCAxKSA9PSA0Mik7Ci19Ci0KLXZvaWQgdGVzdENoZWNr
VHdvTm9uUmVkdW5kYW50TWVnYUNvbWJvcygpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAg
aWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNl
ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRC
bG9jaygpOwotICAgIAotICAgIFZhbHVlKiBiYXNlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIFZh
bHVlKiBpbmRleCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIFpFeHQz
MiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAg
ICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKTsK
LSAgICBWYWx1ZSogYnJhbmNoUHJlZGljYXRlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAg
ICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKLSAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIyKSksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCAweGZmKSk7Ci0KLSAgICBWYWx1ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKLSAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwgYmFzZSwKLSAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIFNobCwgT3JpZ2luKCksIGlu
ZGV4LAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIDEpKSk7Ci0KLSAgICBWYWx1ZSogY2hlY2tQcmVkaWNhdGUgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBMZXNzVGhhbiwgT3JpZ2luKCksCi0gICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZDhTLCBPcmlnaW4oKSwgcHRyKSwK
LSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQy
KSk7Ci0KLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIEJy
YW5jaCwgT3JpZ2luKCksIGJyYW5jaFByZWRpY2F0ZSwKLSAgICAgICAgRnJlcXVlbnRlZEJsb2Nr
KHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNlKSk7Ci0gICAgCi0gICAgQ2hlY2tW
YWx1ZSogY2hlY2sgPSB0aGVuQ2FzZS0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNr
LCBPcmlnaW4oKSwgY2hlY2tQcmVkaWNhdGUpOwotICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoCi0g
ICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNh
Z2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAgICAgICAgICBDSEVDSyghcGFyYW1zLnNpemUoKSk7
Ci0KLSAgICAgICAgICAgIC8vIFRoaXMgc2hvdWxkIGFsd2F5cyB3b3JrIGJlY2F1c2UgYSBmdW5j
dGlvbiB0aGlzIHNpbXBsZSBzaG91bGQgbmV2ZXIgaGF2ZSBjYWxsZWUKLSAgICAgICAgICAgIC8v
IHNhdmVzLgotICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
NDIpLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7Ci0gICAgICAgICAgICBqaXQuZW1pdEZ1bmN0
aW9uRXBpbG9ndWUoKTsKLSAgICAgICAgICAgIGppdC5yZXQoKTsKLSAgICAgICAgfSk7Ci0gICAg
dGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCA0MykpOwotCi0gICAgQ2hlY2tWYWx1ZSogY2hlY2syID0gZWxzZUNhc2UtPmFwcGVuZE5ldzxD
aGVja1ZhbHVlPihwcm9jLCBDaGVjaywgT3JpZ2luKCksIGNoZWNrUHJlZGljYXRlKTsKLSAgICBj
aGVjazItPnNldEdlbmVyYXRvcigKLSAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29u
c3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAgIEFsbG93
TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKLSAgICAgICAgICAg
IENIRUNLKCFwYXJhbXMuc2l6ZSgpKTsKLQotICAgICAgICAgICAgLy8gVGhpcyBzaG91bGQgYWx3
YXlzIHdvcmsgYmVjYXVzZSBhIGZ1bmN0aW9uIHRoaXMgc2ltcGxlIHNob3VsZCBuZXZlciBoYXZl
IGNhbGxlZQotICAgICAgICAgICAgLy8gc2F2ZXMuCi0gICAgICAgICAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMig0NCksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKLSAg
ICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwotICAgICAgICAgICAgaml0LnJl
dCgpOwotICAgICAgICB9KTsKLSAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAot
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0
MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQ1KSk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxl
UHJvYyhwcm9jKTsKLQotICAgIGludDhfdCB2YWx1ZTsKLQotICAgIHZhbHVlID0gNDI7Ci0gICAg
Q0hFQ0soaW52b2tlPGludD4oKmNvZGUsICZ2YWx1ZSAtIDIsIDEsIHRydWUpID09IDQzKTsKLSAg
ICB2YWx1ZSA9IDEyNzsKLSAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgJnZhbHVlIC0gMiwg
MSwgdHJ1ZSkgPT0gNDMpOwotICAgIHZhbHVlID0gNDE7Ci0gICAgQ0hFQ0soaW52b2tlPGludD4o
KmNvZGUsICZ2YWx1ZSAtIDIsIDEsIHRydWUpID09IDQyKTsKLSAgICB2YWx1ZSA9IDA7Ci0gICAg
Q0hFQ0soaW52b2tlPGludD4oKmNvZGUsICZ2YWx1ZSAtIDIsIDEsIHRydWUpID09IDQyKTsKLSAg
ICB2YWx1ZSA9IC0xOwotICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAmdmFsdWUgLSAyLCAx
LCB0cnVlKSA9PSA0Mik7Ci0KLSAgICB2YWx1ZSA9IDQyOwotICAgIENIRUNLKGludm9rZTxpbnQ+
KCpjb2RlLCAmdmFsdWUgLSAyLCAxLCBmYWxzZSkgPT0gNDUpOwotICAgIHZhbHVlID0gMTI3Owot
ICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAmdmFsdWUgLSAyLCAxLCBmYWxzZSkgPT0gNDUp
OwotICAgIHZhbHVlID0gNDE7Ci0gICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsICZ2YWx1ZSAt
IDIsIDEsIGZhbHNlKSA9PSA0NCk7Ci0gICAgdmFsdWUgPSAwOwotICAgIENIRUNLKGludm9rZTxp
bnQ+KCpjb2RlLCAmdmFsdWUgLSAyLCAxLCBmYWxzZSkgPT0gNDQpOwotICAgIHZhbHVlID0gLTE7
Ci0gICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsICZ2YWx1ZSAtIDIsIDEsIGZhbHNlKSA9PSA0
NCk7Ci19Ci0KLXZvaWQgdGVzdENoZWNrQWRkSW1tKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsK
LSAgICBpZiAocHJvYy5vcHRMZXZlbCgpIDwgMSkKLSAgICAgICAgcmV0dXJuOwotICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZzEgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDIpOwotICAgIENoZWNrVmFsdWUqIGNoZWNrQWRk
ID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrQWRkLCBPcmlnaW4oKSwg
YXJnMSwgYXJnMik7Ci0gICAgY2hlY2tBZGQtPmFwcGVuZChhcmcxKTsKLSAgICBjaGVja0FkZC0+
YXBwZW5kKGFyZzIpOwotICAgIGNoZWNrQWRkLT5zZXRHZW5lcmF0b3IoCi0gICAgICAgIFsmXSAo
Q0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1z
KSB7Ci0gICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3Jh
dGNoKGppdCk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09IDIpOwotICAgICAg
ICAgICAgQ0hFQ0socGFyYW1zWzBdLmlzR1BSKCkpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1z
WzFdLmlzQ29uc3RhbnQoKSk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0udmFsdWUoKSA9
PSA0Mik7Ci0gICAgICAgICAgICBqaXQuY29udmVydEludDMyVG9Eb3VibGUocGFyYW1zWzBdLmdw
cigpLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5jb252ZXJ0SW50MzJUb0Rv
dWJsZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMig0MiksIEZQUkluZm86OmZwUmVnVDEpOwot
ICAgICAgICAgICAgaml0LmFkZERvdWJsZShGUFJJbmZvOjpmcFJlZ1QxLCBGUFJJbmZvOjpmcFJl
Z1QwKTsKLSAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwotICAgICAgICAg
ICAgaml0LnJldCgpOwotICAgICAgICB9KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgSVRvRCwgT3JpZ2luKCksIGNoZWNrQWRkKSk7Ci0KLSAgICBhdXRv
IGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLQotICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpj
b2RlLCAwKSA9PSA0Mi4wKTsKLSAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgMSkgPT0g
NDMuMCk7Ci0gICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDQyKSA9PSA4NC4wKTsKLSAg
ICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgMjE0NzQ4MzY0NykgPT0gMjE0NzQ4MzY4OS4w
KTsKLX0KLQotdm9pZCB0ZXN0Q2hlY2tBZGRJbW1Db21tdXRlKCkKLXsKLSAgICBQcm9jZWR1cmUg
cHJvYzsKLSAgICBpZiAocHJvYy5vcHRMZXZlbCgpIDwgMSkKLSAgICAgICAgcmV0dXJuOwotICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZzEgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0g
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDIpOwotICAgIENoZWNrVmFsdWUqIGNo
ZWNrQWRkID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrQWRkLCBPcmln
aW4oKSwgYXJnMiwgYXJnMSk7Ci0gICAgY2hlY2tBZGQtPmFwcGVuZChhcmcxKTsKLSAgICBjaGVj
a0FkZC0+YXBwZW5kKGFyZzIpOwotICAgIGNoZWNrQWRkLT5zZXRHZW5lcmF0b3IoCi0gICAgICAg
IFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYg
cGFyYW1zKSB7Ci0gICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxs
b3dTY3JhdGNoKGppdCk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09IDIpOwot
ICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzBdLmlzR1BSKCkpOwotICAgICAgICAgICAgQ0hFQ0so
cGFyYW1zWzFdLmlzQ29uc3RhbnQoKSk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0udmFs
dWUoKSA9PSA0Mik7Ci0gICAgICAgICAgICBqaXQuY29udmVydEludDMyVG9Eb3VibGUocGFyYW1z
WzBdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5jb252ZXJ0SW50
MzJUb0RvdWJsZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMig0MiksIEZQUkluZm86OmZwUmVn
VDEpOwotICAgICAgICAgICAgaml0LmFkZERvdWJsZShGUFJJbmZvOjpmcFJlZ1QxLCBGUFJJbmZv
OjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwotICAg
ICAgICAgICAgaml0LnJldCgpOwotICAgICAgICB9KTsKLSAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSVRvRCwgT3JpZ2luKCksIGNoZWNrQWRkKSk7Ci0KLSAg
ICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLQotICAgIENIRUNLKGludm9rZTxkb3Vi
bGU+KCpjb2RlLCAwKSA9PSA0Mi4wKTsKLSAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwg
MSkgPT0gNDMuMCk7Ci0gICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDQyKSA9PSA4NC4w
KTsKLSAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgMjE0NzQ4MzY0NykgPT0gMjE0NzQ4
MzY4OS4wKTsKLX0KLQotdm9pZCB0ZXN0Q2hlY2tBZGRJbW1Tb21lUmVnaXN0ZXIoKQotewotICAg
IFByb2NlZHVyZSBwcm9jOwotICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAxKQotICAgICAgICBy
ZXR1cm47Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1
ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIFRydW5jLCBP
cmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogYXJnMiA9IHJv
b3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0Mik7Ci0gICAgQ2hl
Y2tWYWx1ZSogY2hlY2tBZGQgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hl
Y2tBZGQsIE9yaWdpbigpLCBhcmcxLCBhcmcyKTsKLSAgICBjaGVja0FkZC0+YXBwZW5kU29tZVJl
Z2lzdGVyKGFyZzEpOwotICAgIGNoZWNrQWRkLT5hcHBlbmRTb21lUmVnaXN0ZXIoYXJnMik7Ci0g
ICAgY2hlY2tBZGQtPnNldEdlbmVyYXRvcigKLSAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAg
IEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKLSAgICAg
ICAgICAgIENIRUNLKHBhcmFtcy5zaXplKCkgPT0gMik7Ci0gICAgICAgICAgICBDSEVDSyhwYXJh
bXNbMF0uaXNHUFIoKSk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0uaXNHUFIoKSk7Ci0g
ICAgICAgICAgICBqaXQuY29udmVydEludDMyVG9Eb3VibGUocGFyYW1zWzBdLmdwcigpLCBGUFJJ
bmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShwYXJh
bXNbMV0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDEpOwotICAgICAgICAgICAgaml0LmFkZERvdWJs
ZShGUFJJbmZvOjpmcFJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5l
bWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwotICAgICAgICAgICAgaml0LnJldCgpOwotICAgICAgICB9
KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSVRvRCwg
T3JpZ2luKCksIGNoZWNrQWRkKSk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9j
KTsKLQotICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAwKSA9PSA0Mi4wKTsKLSAgICBD
SEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgMSkgPT0gNDMuMCk7Ci0gICAgQ0hFQ0soaW52b2tl
PGRvdWJsZT4oKmNvZGUsIDQyKSA9PSA4NC4wKTsKLSAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigq
Y29kZSwgMjE0NzQ4MzY0NykgPT0gMjE0NzQ4MzY4OS4wKTsKLX0KLQotdm9pZCB0ZXN0Q2hlY2tB
ZGQoKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAx
KQotICAgICAgICByZXR1cm47Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKLSAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1
ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIFRydW5jLCBP
cmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKLSAgICBDaGVja1ZhbHVlKiBjaGVj
a0FkZCA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja0FkZCwgT3JpZ2lu
KCksIGFyZzEsIGFyZzIpOwotICAgIGNoZWNrQWRkLT5hcHBlbmRTb21lUmVnaXN0ZXIoYXJnMSk7
Ci0gICAgY2hlY2tBZGQtPmFwcGVuZFNvbWVSZWdpc3RlcihhcmcyKTsKLSAgICBjaGVja0FkZC0+
c2V0R2VuZXJhdG9yKAotICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewotICAgICAgICAgICAgQWxsb3dNYWNyb1Nj
cmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwotICAgICAgICAgICAgQ0hFQ0so
cGFyYW1zLnNpemUoKSA9PSAyKTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtc1swXS5pc0dQUigp
KTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtc1sxXS5pc0dQUigpKTsKLSAgICAgICAgICAgIGpp
dC5jb252ZXJ0SW50MzJUb0RvdWJsZShwYXJhbXNbMF0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDAp
OwotICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKHBhcmFtc1sxXS5ncHIoKSwg
RlBSSW5mbzo6ZnBSZWdUMSk7Ci0gICAgICAgICAgICBqaXQuYWRkRG91YmxlKEZQUkluZm86OmZw
UmVnVDEsIEZQUkluZm86OmZwUmVnVDApOwotICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVw
aWxvZ3VlKCk7Ci0gICAgICAgICAgICBqaXQucmV0KCk7Ci0gICAgICAgIH0pOwotICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwK
LSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJVG9ELCBPcmlnaW4oKSwgY2hl
Y2tBZGQpKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotCi0gICAgQ0hF
Q0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDAsIDQyKSA9PSA0Mi4wKTsKLSAgICBDSEVDSyhpbnZv
a2U8ZG91YmxlPigqY29kZSwgMSwgNDIpID09IDQzLjApOwotICAgIENIRUNLKGludm9rZTxkb3Vi
bGU+KCpjb2RlLCA0MiwgNDIpID09IDg0LjApOwotICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpj
b2RlLCAyMTQ3NDgzNjQ3LCA0MikgPT0gMjE0NzQ4MzY4OS4wKTsKLX0KLQotdm9pZCB0ZXN0Q2hl
Y2tBZGQ2NCgpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgaWYgKHByb2Mub3B0TGV2ZWwo
KSA8IDEpCi0gICAgICAgIHJldHVybjsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOwotICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIFZhbHVlKiBh
cmcyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgIENoZWNrVmFsdWUqIGNoZWNrQWRkID0gcm9vdC0+
YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrQWRkLCBPcmlnaW4oKSwgYXJnMSwgYXJn
Mik7Ci0gICAgY2hlY2tBZGQtPmFwcGVuZFNvbWVSZWdpc3RlcihhcmcxKTsKLSAgICBjaGVja0Fk
ZC0+YXBwZW5kU29tZVJlZ2lzdGVyKGFyZzIpOwotICAgIGNoZWNrQWRkLT5zZXRHZW5lcmF0b3Io
Ci0gICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlv
blBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVy
VXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgp
ID09IDIpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzBdLmlzR1BSKCkpOwotICAgICAgICAg
ICAgQ0hFQ0socGFyYW1zWzFdLmlzR1BSKCkpOwotICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQ2
NFRvRG91YmxlKHBhcmFtc1swXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAg
ICBqaXQuY29udmVydEludDY0VG9Eb3VibGUocGFyYW1zWzFdLmdwcigpLCBGUFJJbmZvOjpmcFJl
Z1QxKTsKLSAgICAgICAgICAgIGppdC5hZGREb3VibGUoRlBSSW5mbzo6ZnBSZWdUMSwgRlBSSW5m
bzo6ZnBSZWdUMCk7Ci0gICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKLSAg
ICAgICAgICAgIGppdC5yZXQoKTsKLSAgICAgICAgfSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIElUb0QsIE9yaWdpbigpLCBjaGVja0FkZCkpOwotCi0g
ICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0KLSAgICBDSEVDSyhpbnZva2U8ZG91
YmxlPigqY29kZSwgMGxsLCA0MmxsKSA9PSA0Mi4wKTsKLSAgICBDSEVDSyhpbnZva2U8ZG91Ymxl
PigqY29kZSwgMWxsLCA0MmxsKSA9PSA0My4wKTsKLSAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigq
Y29kZSwgNDJsbCwgNDJsbCkgPT0gODQuMCk7Ci0gICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNv
ZGUsIDkyMjMzNzIwMzY4NTQ3NzU4MDdsbCwgNDJsbCkgPT0gc3RhdGljX2Nhc3Q8ZG91YmxlPig5
MjIzMzcyMDM2ODU0Nzc1ODA3bGwpICsgNDIuMCk7Ci19Ci0KLXZvaWQgdGVzdENoZWNrQWRkRm9s
ZChpbnQgYSwgaW50IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5l
dzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKLSAgICBWYWx1ZSogYXJnMiA9IHJv
b3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKTsKLSAgICBDaGVj
a1ZhbHVlKiBjaGVja0FkZCA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVj
a0FkZCwgT3JpZ2luKCksIGFyZzEsIGFyZzIpOwotICAgIHVuc2lnbmVkIG9wdExldmVsID0gcHJv
Yy5vcHRMZXZlbCgpOwotICAgIGNoZWNrQWRkLT5zZXRHZW5lcmF0b3IoCi0gICAgICAgIFsmXSAo
Q0NhbGxIZWxwZXJzJiwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewotICAgICAg
ICAgICAgaWYgKG9wdExldmVsID4gMSkKLSAgICAgICAgICAgICAgICBDSEVDSyghIlNob3VsZCBo
YXZlIGJlZW4gZm9sZGVkIik7Ci0gICAgICAgIH0pOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBjaGVja0FkZCk7Ci0KLSAgICBhdXRvIGNv
ZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLQotICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlKSA9
PSBhICsgYik7Ci19Ci0KLXZvaWQgdGVzdENoZWNrQWRkRm9sZEZhaWwoaW50IGEsIGludCBiKQot
ewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAxKQotICAg
ICAgICByZXR1cm47Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAg
ICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBhKTsKLSAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBiKTsKLSAgICBDaGVja1ZhbHVlKiBjaGVja0FkZCA9IHJvb3QtPmFw
cGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja0FkZCwgT3JpZ2luKCksIGFyZzEsIGFyZzIp
OwotICAgIGNoZWNrQWRkLT5zZXRHZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJz
JiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKLSAgICAgICAgICAgIEFs
bG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKLSAgICAgICAg
ICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDQyKSwgR1BSSW5mbzo6cmV0
dXJuVmFsdWVHUFIpOwotICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7Ci0g
ICAgICAgICAgICBqaXQucmV0KCk7Ci0gICAgICAgIH0pOwotICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBjaGVja0FkZCk7Ci0KLSAgICBhdXRv
IGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLQotICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2Rl
KSA9PSA0Mik7Ci19Ci0KLXZvaWQgdGVzdENoZWNrQWRkQXJndW1lbnRBbGlhc2luZzY0KCkKLXsK
LSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOwotICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIFZhbHVlKiBhcmcy
ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjEpOwotICAgIFZhbHVlKiBhcmczID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwot
Ci0gICAgLy8gUHJldGVuZCB0byB1c2UgYWxsIHRoZSBhcmdzLgotICAgIFBhdGNocG9pbnRWYWx1
ZSogdXNlQXJncyA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQs
IE9yaWdpbigpKTsKLSAgICB1c2VBcmdzLT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmcxLCBW
YWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7Ci0gICAgdXNlQXJncy0+YXBwZW5kKENvbnN0cmFpbmVk
VmFsdWUoYXJnMiwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOwotICAgIHVzZUFyZ3MtPmFwcGVu
ZChDb25zdHJhaW5lZFZhbHVlKGFyZzMsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKLSAgICB1
c2VBcmdzLT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMmLCBjb25zdCBTdGFja21hcEdl
bmVyYXRpb25QYXJhbXMmKSB7IH0pOwotCi0gICAgLy8gTGFzdCB1c2Ugb2YgZmlyc3QgYXJnICho
ZXJlLCBhcmcxKS4KLSAgICBDaGVja1ZhbHVlKiBjaGVja0FkZDEgPSByb290LT5hcHBlbmROZXc8
Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2tBZGQsIE9yaWdpbigpLCBhcmcxLCBhcmcyKTsKLSAgICBj
aGVja0FkZDEtPnNldEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMmKSB7IGppdC5vb3BzKCk7IH0pOwotCi0gICAgLy8gTGFzdCB1
c2Ugb2Ygc2Vjb25kIGFyZyAoaGVyZSwgYXJnMikuCi0gICAgQ2hlY2tWYWx1ZSogY2hlY2tBZGQy
ID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrQWRkLCBPcmlnaW4oKSwg
YXJnMywgYXJnMik7Ci0gICAgY2hlY2tBZGQyLT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyBqaXQub29wcygpOyB9
KTsKLQotICAgIC8vIEtlZXAgYXJnMyBsaXZlLgotICAgIFBhdGNocG9pbnRWYWx1ZSoga2VlcEFy
ZzJMaXZlID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgVm9pZCwgT3Jp
Z2luKCkpOwotICAgIGtlZXBBcmcyTGl2ZS0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMiwg
VmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOwotICAgIGtlZXBBcmcyTGl2ZS0+c2V0R2VuZXJhdG9y
KFsmXSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9
KTsKLQotICAgIC8vIE9ubHkgdXNlIG9mIGNoZWNrQWRkMSBhbmQgY2hlY2tBZGQyLgotICAgIENo
ZWNrVmFsdWUqIGNoZWNrQWRkMyA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBD
aGVja0FkZCwgT3JpZ2luKCksIGNoZWNrQWRkMSwgY2hlY2tBZGQyKTsKLSAgICBjaGVja0FkZDMt
PnNldEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMmKSB7IGppdC5vb3BzKCk7IH0pOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGNoZWNrQWRkMyk7Ci0KLSAgICBDSEVD
Syhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIDEsIDIsIDMpID09IDgpOwotfQotCi12b2lk
IHRlc3RDaGVja0FkZEFyZ3VtZW50QWxpYXNpbmczMigpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7
Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJn
MSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4o
KSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEpKTsKLSAgICBWYWx1ZSogYXJnMyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCi0gICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjIpKTsKLQotICAgIC8vIFByZXRlbmQgdG8gdXNlIGFsbCB0aGUgYXJncy4KLSAgICBQYXRjaHBv
aW50VmFsdWUqIHVzZUFyZ3MgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9j
LCBWb2lkLCBPcmlnaW4oKSk7Ci0gICAgdXNlQXJncy0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUo
YXJnMSwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOwotICAgIHVzZUFyZ3MtPmFwcGVuZChDb25z
dHJhaW5lZFZhbHVlKGFyZzIsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKLSAgICB1c2VBcmdz
LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmczLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7
Ci0gICAgdXNlQXJncy0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKLQotICAgIC8vIExhc3QgdXNlIG9mIGZpcnN0
IGFyZyAoaGVyZSwgYXJnMSkuCi0gICAgQ2hlY2tWYWx1ZSogY2hlY2tBZGQxID0gcm9vdC0+YXBw
ZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrQWRkLCBPcmlnaW4oKSwgYXJnMSwgYXJnMik7
Ci0gICAgY2hlY2tBZGQxLT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29u
c3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyBqaXQub29wcygpOyB9KTsKLQotICAgIC8v
IExhc3QgdXNlIG9mIHNlY29uZCBhcmcgKGhlcmUsIGFyZzMpLgotICAgIENoZWNrVmFsdWUqIGNo
ZWNrQWRkMiA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja0FkZCwgT3Jp
Z2luKCksIGFyZzIsIGFyZzMpOwotICAgIGNoZWNrQWRkMi0+c2V0R2VuZXJhdG9yKFsmXSAoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsgaml0Lm9v
cHMoKTsgfSk7Ci0KLSAgICAvLyBLZWVwIGFyZzMgbGl2ZS4KLSAgICBQYXRjaHBvaW50VmFsdWUq
IGtlZXBBcmcyTGl2ZSA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZv
aWQsIE9yaWdpbigpKTsKLSAgICBrZWVwQXJnMkxpdmUtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVl
KGFyZzIsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKLSAgICBrZWVwQXJnMkxpdmUtPnNldEdl
bmVyYXRvcihbJl0gKENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFt
cyYpIHsgfSk7Ci0KLSAgICAvLyBPbmx5IHVzZSBvZiBjaGVja0FkZDEgYW5kIGNoZWNrQWRkMi4K
LSAgICBDaGVja1ZhbHVlKiBjaGVja0FkZDMgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4o
cHJvYywgQ2hlY2tBZGQsIE9yaWdpbigpLCBjaGVja0FkZDEsIGNoZWNrQWRkMik7Ci0gICAgY2hl
Y2tBZGQzLT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2tt
YXBHZW5lcmF0aW9uUGFyYW1zJikgeyBqaXQub29wcygpOyB9KTsKLQotICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBjaGVja0FkZDMpOwotCi0g
ICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCAxLCAyLCAzKSA9PSA4KTsKLX0K
LQotdm9pZCB0ZXN0Q2hlY2tBZGRTZWxmT3ZlcmZsb3c2NCgpCi17Ci0gICAgUHJvY2VkdXJlIHBy
b2M7Ci0gICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEpCi0gICAgICAgIHJldHVybjsKLSAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmcgPSByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7Ci0gICAgQ2hlY2tWYWx1ZSogY2hlY2tBZGQgPSByb290LT5hcHBlbmROZXc8
Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2tBZGQsIE9yaWdpbigpLCBhcmcsIGFyZyk7Ci0gICAgY2hl
Y2tBZGQtPmFwcGVuZChhcmcpOwotICAgIGNoZWNrQWRkLT5zZXRHZW5lcmF0b3IoCi0gICAgICAg
IFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYg
cGFyYW1zKSB7Ci0gICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxs
b3dTY3JhdGNoKGppdCk7Ci0gICAgICAgICAgICBqaXQubW92ZShwYXJhbXNbMF0uZ3ByKCksIEdQ
UkluZm86OnJldHVyblZhbHVlR1BSKTsKLSAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGls
b2d1ZSgpOwotICAgICAgICAgICAgaml0LnJldCgpOwotICAgICAgICB9KTsKLQotICAgIC8vIE1h
a2Ugc3VyZSB0aGUgYXJnIGlzIG5vdCB0aGUgZGVzdGluYXRpb24gb2YgdGhlIG9wZXJhdGlvbi4K
LSAgICBQYXRjaHBvaW50VmFsdWUqIG9wYXF1ZVVzZSA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBv
aW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKLSAgICBvcGFxdWVVc2UtPmFwcGVuZChD
b25zdHJhaW5lZFZhbHVlKGFyZywgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOwotICAgIG9wYXF1
ZVVzZS0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3RhY2ttYXBHZW5l
cmF0aW9uUGFyYW1zJikgeyB9KTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLCBjaGVja0FkZCk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21w
aWxlUHJvYyhwcm9jKTsKLQotICAgIENIRUNLKGludm9rZTxpbnQ2NF90PigqY29kZSwgMGxsKSA9
PSAwKTsKLSAgICBDSEVDSyhpbnZva2U8aW50NjRfdD4oKmNvZGUsIDFsbCkgPT0gMik7Ci0gICAg
Q0hFQ0soaW52b2tlPGludDY0X3Q+KCpjb2RlLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+
OjptYXgoKSkgPT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCkpOwotfQotCi12
b2lkIHRlc3RDaGVja0FkZFNlbGZPdmVyZmxvdzMyKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsK
LSAgICBpZiAocHJvYy5vcHRMZXZlbCgpIDwgMSkKLSAgICAgICAgcmV0dXJuOwotICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZyA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApKTsKLSAgICBDaGVja1ZhbHVlKiBjaGVja0FkZCA9IHJvb3QtPmFwcGVu
ZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja0FkZCwgT3JpZ2luKCksIGFyZywgYXJnKTsKLSAg
ICBjaGVja0FkZC0+YXBwZW5kKGFyZyk7Ci0gICAgY2hlY2tBZGQtPnNldEdlbmVyYXRvcigKLSAg
ICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2Fn
ZSBhbGxvd1NjcmF0Y2goaml0KTsKLSAgICAgICAgICAgIGppdC5tb3ZlKHBhcmFtc1swXS5ncHIo
KSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwotICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlv
bkVwaWxvZ3VlKCk7Ci0gICAgICAgICAgICBqaXQucmV0KCk7Ci0gICAgICAgIH0pOwotCi0gICAg
Ly8gTWFrZSBzdXJlIHRoZSBhcmcgaXMgbm90IHRoZSBkZXN0aW5hdGlvbiBvZiB0aGUgb3BlcmF0
aW9uLgotICAgIFBhdGNocG9pbnRWYWx1ZSogb3BhcXVlVXNlID0gcm9vdC0+YXBwZW5kTmV3PFBh
dGNocG9pbnRWYWx1ZT4ocHJvYywgVm9pZCwgT3JpZ2luKCkpOwotICAgIG9wYXF1ZVVzZS0+YXBw
ZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7Ci0gICAg
b3BhcXVlVXNlLT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMmLCBjb25zdCBTdGFja21h
cEdlbmVyYXRpb25QYXJhbXMmKSB7IH0pOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGNoZWNrQWRkKTsKLQotICAgIGF1dG8gY29kZSA9
IGNvbXBpbGVQcm9jKHByb2MpOwotCi0gICAgQ0hFQ0soaW52b2tlPGludDMyX3Q+KCpjb2RlLCAw
bGwpID09IDApOwotICAgIENIRUNLKGludm9rZTxpbnQzMl90PigqY29kZSwgMWxsKSA9PSAyKTsK
LSAgICBDSEVDSyhpbnZva2U8aW50MzJfdD4oKmNvZGUsIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
MzJfdD46Om1heCgpKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7Ci19
Ci0KLXZvaWQgdGVzdENoZWNrU3ViSW1tKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBp
ZiAocHJvYy5vcHRMZXZlbCgpIDwgMSkKLSAgICAgICAgcmV0dXJuOwotICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgNDIpOwotICAgIENoZWNrVmFsdWUqIGNoZWNrU3ViID0gcm9v
dC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrU3ViLCBPcmlnaW4oKSwgYXJnMSwg
YXJnMik7Ci0gICAgY2hlY2tTdWItPmFwcGVuZChhcmcxKTsKLSAgICBjaGVja1N1Yi0+YXBwZW5k
KGFyZzIpOwotICAgIGNoZWNrU3ViLT5zZXRHZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxI
ZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0g
ICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGpp
dCk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09IDIpOwotICAgICAgICAgICAg
Q0hFQ0socGFyYW1zWzBdLmlzR1BSKCkpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzFdLmlz
Q29uc3RhbnQoKSk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0udmFsdWUoKSA9PSA0Mik7
Ci0gICAgICAgICAgICBqaXQuY29udmVydEludDMyVG9Eb3VibGUocGFyYW1zWzBdLmdwcigpLCBG
UFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMig0MiksIEZQUkluZm86OmZwUmVnVDEpOwotICAgICAg
ICAgICAgaml0LnN1YkRvdWJsZShGUFJJbmZvOjpmcFJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsK
LSAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwotICAgICAgICAgICAgaml0
LnJldCgpOwotICAgICAgICB9KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0g
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgSVRvRCwgT3JpZ2luKCksIGNoZWNrU3ViKSk7Ci0KLSAgICBhdXRvIGNvZGUg
PSBjb21waWxlUHJvYyhwcm9jKTsKLQotICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAw
KSA9PSAtNDIuMCk7Ci0gICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDEpID09IC00MS4w
KTsKLSAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgNDIpID09IDAuMCk7Ci0gICAgQ0hF
Q0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIC0yMTQ3NDgzNjQ3KSA9PSAtMjE0NzQ4MzY4OS4wKTsK
LX0KLQotdm9pZCB0ZXN0Q2hlY2tTdWJCYWRJbW0oKQotewotICAgIFByb2NlZHVyZSBwcm9jOwot
ICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAxKQotICAgICAgICByZXR1cm47Ci0gICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApKTsKLSAgICBpbnQzMl90IGJhZEltbSA9IHN0ZDo6bnVtZXJpY19saW1p
dHM8aW50Pjo6bWluKCk7Ci0gICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8Q29uc3Qz
MlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYmFkSW1tKTsKLSAgICBDaGVja1ZhbHVlKiBjaGVja1N1
YiA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja1N1YiwgT3JpZ2luKCks
IGFyZzEsIGFyZzIpOwotICAgIGNoZWNrU3ViLT5hcHBlbmQoYXJnMSk7Ci0gICAgY2hlY2tTdWIt
PmFwcGVuZChhcmcyKTsKLSAgICBjaGVja1N1Yi0+c2V0R2VuZXJhdG9yKAotICAgICAgICBbJl0g
KENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFt
cykgewotICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2Ny
YXRjaChqaXQpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9PSAyKTsKLSAgICAg
ICAgICAgIENIRUNLKHBhcmFtc1swXS5pc0dQUigpKTsKLSAgICAgICAgICAgIGppdC5jb252ZXJ0
SW50MzJUb0RvdWJsZShwYXJhbXNbMF0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDApOwotCi0gICAg
ICAgICAgICBpZiAocGFyYW1zWzFdLmlzQ29uc3RhbnQoKSkgewotICAgICAgICAgICAgICAgIENI
RUNLKHBhcmFtc1sxXS52YWx1ZSgpID09IGJhZEltbSk7Ci0gICAgICAgICAgICAgICAgaml0LmNv
bnZlcnRJbnQzMlRvRG91YmxlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGJhZEltbSksIEZQ
UkluZm86OmZwUmVnVDEpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBD
SEVDSyhwYXJhbXNbMV0uaXNHUFIoKSk7Ci0gICAgICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQz
MlRvRG91YmxlKHBhcmFtc1sxXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMSk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBqaXQuc3ViRG91YmxlKEZQUkluZm86OmZwUmVnVDEsIEZQUkluZm86
OmZwUmVnVDApOwotICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7Ci0gICAg
ICAgICAgICBqaXQucmV0KCk7Ci0gICAgICAgIH0pOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJVG9ELCBPcmlnaW4oKSwgY2hlY2tTdWIpKTsKLQotICAg
IGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotCi0gICAgQ0hFQ0soaW52b2tlPGRvdWJs
ZT4oKmNvZGUsIDApID09IC1zdGF0aWNfY2FzdDxkb3VibGU+KGJhZEltbSkpOwotICAgIENIRUNL
KGludm9rZTxkb3VibGU+KCpjb2RlLCAtMSkgPT0gLXN0YXRpY19jYXN0PGRvdWJsZT4oYmFkSW1t
KSAtIDEpOwotICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAxKSA9PSAtc3RhdGljX2Nh
c3Q8ZG91YmxlPihiYWRJbW0pICsgMSk7Ci0gICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUs
IDQyKSA9PSAtc3RhdGljX2Nhc3Q8ZG91YmxlPihiYWRJbW0pICsgNDIpOwotfQotCi12b2lkIHRl
c3RDaGVja1N1YigpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgaWYgKHByb2Mub3B0TGV2
ZWwoKSA8IDEpCi0gICAgICAgIHJldHVybjsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAg
ICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwot
ICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywg
VHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOwotICAgIENoZWNrVmFs
dWUqIGNoZWNrU3ViID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrU3Vi
LCBPcmlnaW4oKSwgYXJnMSwgYXJnMik7Ci0gICAgY2hlY2tTdWItPmFwcGVuZChhcmcxKTsKLSAg
ICBjaGVja1N1Yi0+YXBwZW5kKGFyZzIpOwotICAgIGNoZWNrU3ViLT5zZXRHZW5lcmF0b3IoCi0g
ICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNh
Z2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09
IDIpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzBdLmlzR1BSKCkpOwotICAgICAgICAgICAg
Q0hFQ0socGFyYW1zWzFdLmlzR1BSKCkpOwotICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRv
RG91YmxlKHBhcmFtc1swXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAgICBq
aXQuY29udmVydEludDMyVG9Eb3VibGUocGFyYW1zWzFdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1Qx
KTsKLSAgICAgICAgICAgIGppdC5zdWJEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMSwgRlBSSW5mbzo6
ZnBSZWdUMCk7Ci0gICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKLSAgICAg
ICAgICAgIGppdC5yZXQoKTsKLSAgICAgICAgfSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIElUb0QsIE9yaWdpbigpLCBjaGVja1N1YikpOwotCi0gICAg
YXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0KLSAgICBDSEVDSyhpbnZva2U8ZG91Ymxl
PigqY29kZSwgMCwgNDIpID09IC00Mi4wKTsKLSAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29k
ZSwgMSwgNDIpID09IC00MS4wKTsKLSAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgNDIs
IDQyKSA9PSAwLjApOwotICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAtMjE0NzQ4MzY0
NywgNDIpID09IC0yMTQ3NDgzNjg5LjApOwotfQotCi1ORVZFUl9JTkxJTkUgZG91YmxlIGRvdWJs
ZVN1Yihkb3VibGUgYSwgZG91YmxlIGIpCi17Ci0gICAgcmV0dXJuIGEgLSBiOwotfQotCi12b2lk
IHRlc3RDaGVja1N1YjY0KCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBpZiAocHJvYy5v
cHRMZXZlbCgpIDwgMSkKLSAgICAgICAgcmV0dXJuOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAg
VmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgQ2hlY2tWYWx1ZSogY2hlY2tTdWIg
PSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2tTdWIsIE9yaWdpbigpLCBh
cmcxLCBhcmcyKTsKLSAgICBjaGVja1N1Yi0+YXBwZW5kKGFyZzEpOwotICAgIGNoZWNrU3ViLT5h
cHBlbmQoYXJnMik7Ci0gICAgY2hlY2tTdWItPnNldEdlbmVyYXRvcigKLSAgICAgICAgWyZdIChD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMp
IHsKLSAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0
Y2goaml0KTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtcy5zaXplKCkgPT0gMik7Ci0gICAgICAg
ICAgICBDSEVDSyhwYXJhbXNbMF0uaXNHUFIoKSk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXNb
MV0uaXNHUFIoKSk7Ci0gICAgICAgICAgICBqaXQuY29udmVydEludDY0VG9Eb3VibGUocGFyYW1z
WzBdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5jb252ZXJ0SW50
NjRUb0RvdWJsZShwYXJhbXNbMV0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDEpOwotICAgICAgICAg
ICAgaml0LnN1YkRvdWJsZShGUFJJbmZvOjpmcFJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAg
ICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwotICAgICAgICAgICAgaml0LnJl
dCgpOwotICAgICAgICB9KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgSVRvRCwgT3JpZ2luKCksIGNoZWNrU3ViKSk7Ci0KLSAgICBhdXRvIGNvZGUgPSBj
b21waWxlUHJvYyhwcm9jKTsKLQotICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAwbGws
IDQybGwpID09IC00Mi4wKTsKLSAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgMWxsLCA0
MmxsKSA9PSAtNDEuMCk7Ci0gICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDQybGwsIDQy
bGwpID09IDAuMCk7Ci0gICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIC05MjIzMzcyMDM2
ODU0Nzc1ODA3bGwsIDQybGwpID09IGRvdWJsZVN1YihzdGF0aWNfY2FzdDxkb3VibGU+KC05MjIz
MzcyMDM2ODU0Nzc1ODA3bGwpLCA0Mi4wKSk7Ci19Ci0KLXZvaWQgdGVzdENoZWNrU3ViRm9sZChp
bnQgYSwgaW50IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKLSAgICBWYWx1ZSogYXJnMiA9IHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKTsKLSAgICBDaGVja1Zh
bHVlKiBjaGVja1N1YiA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja1N1
YiwgT3JpZ2luKCksIGFyZzEsIGFyZzIpOwotICAgIHVuc2lnbmVkIG9wdExldmVsID0gcHJvYy5v
cHRMZXZlbCgpOwotICAgIGNoZWNrU3ViLT5zZXRHZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0Nh
bGxIZWxwZXJzJiwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewotICAgICAgICAg
ICAgaWYgKG9wdExldmVsID4gMSkKLSAgICAgICAgICAgICAgICBDSEVDSyghIlNob3VsZCBoYXZl
IGJlZW4gZm9sZGVkIik7Ci0gICAgICAgIH0pOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBjaGVja1N1Yik7Ci0KLSAgICBhdXRvIGNvZGUg
PSBjb21waWxlUHJvYyhwcm9jKTsKLQotICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlKSA9PSBh
IC0gYik7Ci19Ci0KLXZvaWQgdGVzdENoZWNrU3ViRm9sZEZhaWwoaW50IGEsIGludCBiKQotewot
ICAgIFByb2NlZHVyZSBwcm9jOwotICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAxKQotICAgICAg
ICByZXR1cm47Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBW
YWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBhKTsKLSAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBiKTsKLSAgICBDaGVja1ZhbHVlKiBjaGVja1N1YiA9IHJvb3QtPmFwcGVu
ZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja1N1YiwgT3JpZ2luKCksIGFyZzEsIGFyZzIpOwot
ICAgIGNoZWNrU3ViLT5zZXRHZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKLSAgICAgICAgICAgIEFsbG93
TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKLSAgICAgICAgICAg
IGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDQyKSwgR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIpOwotICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7Ci0gICAg
ICAgICAgICBqaXQucmV0KCk7Ci0gICAgICAgIH0pOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBjaGVja1N1Yik7Ci0KLSAgICBhdXRvIGNv
ZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLQotICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlKSA9
PSA0Mik7Ci19Ci0KLXZvaWQgdGVzdENoZWNrTmVnKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsK
LSAgICBpZiAocHJvYy5vcHRMZXZlbCgpIDwgMSkKLSAgICAgICAgcmV0dXJuOwotICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZzEgPSByb290LT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCk7Ci0gICAgVmFsdWUqIGFy
ZzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2lu
KCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgQ2hlY2tWYWx1ZSogY2hlY2tOZWcg
PSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2tTdWIsIE9yaWdpbigpLCBh
cmcxLCBhcmcyKTsKLSAgICBjaGVja05lZy0+YXBwZW5kKGFyZzIpOwotICAgIGNoZWNrTmVnLT5z
ZXRHZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICBBbGxvd01hY3JvU2Ny
YXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAgICAgICAgICBDSEVDSyhw
YXJhbXMuc2l6ZSgpID09IDEpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzBdLmlzR1BSKCkp
OwotICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKHBhcmFtc1swXS5ncHIoKSwg
RlBSSW5mbzo6ZnBSZWdUMSk7Ci0gICAgICAgICAgICBqaXQubmVnYXRlRG91YmxlKEZQUkluZm86
OmZwUmVnVDEsIEZQUkluZm86OmZwUmVnVDApOwotICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlv
bkVwaWxvZ3VlKCk7Ci0gICAgICAgICAgICBqaXQucmV0KCk7Ci0gICAgICAgIH0pOwotICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJVG9ELCBPcmlnaW4oKSwg
Y2hlY2tOZWcpKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotCi0gICAg
Q0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDApID09IDAuMCk7Ci0gICAgQ0hFQ0soaW52b2tl
PGRvdWJsZT4oKmNvZGUsIDEpID09IC0xLjApOwotICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpj
b2RlLCA0MikgPT0gLTQyLjApOwotICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAtMjE0
NzQ4MzY0NyAtIDEpID09IDIxNDc0ODM2NDguMCk7Ci19Ci0KLXZvaWQgdGVzdENoZWNrTmVnNjQo
KQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAxKQot
ICAgICAgICByZXR1cm47Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
LSAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9y
aWdpbigpLCAwKTsKLSAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBDaGVj
a1ZhbHVlKiBjaGVja05lZyA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVj
a1N1YiwgT3JpZ2luKCksIGFyZzEsIGFyZzIpOwotICAgIGNoZWNrTmVnLT5hcHBlbmQoYXJnMik7
Ci0gICAgY2hlY2tOZWctPnNldEdlbmVyYXRvcigKLSAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMm
IGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKLSAgICAgICAg
ICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKLSAg
ICAgICAgICAgIENIRUNLKHBhcmFtcy5zaXplKCkgPT0gMSk7Ci0gICAgICAgICAgICBDSEVDSyhw
YXJhbXNbMF0uaXNHUFIoKSk7Ci0gICAgICAgICAgICBqaXQuY29udmVydEludDY0VG9Eb3VibGUo
cGFyYW1zWzBdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QxKTsKLSAgICAgICAgICAgIGppdC5uZWdh
dGVEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAg
ICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKLSAgICAgICAgICAgIGppdC5yZXQoKTsKLSAg
ICAgICAgfSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IElUb0QsIE9yaWdpbigpLCBjaGVja05lZykpOwotCi0gICAgYXV0byBjb2RlID0gY29tcGlsZVBy
b2MocHJvYyk7Ci0KLSAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgMGxsKSA9PSAwLjAp
OwotICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAxbGwpID09IC0xLjApOwotICAgIENI
RUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCA0MmxsKSA9PSAtNDIuMCk7Ci0gICAgQ0hFQ0soaW52
b2tlPGRvdWJsZT4oKmNvZGUsIC05MjIzMzcyMDM2ODU0Nzc1ODA3bGwgLSAxKSA9PSA5MjIzMzcy
MDM2ODU0Nzc1ODA4LjApOwotfQotCi12b2lkIHRlc3RDaGVja011bCgpCi17Ci0gICAgUHJvY2Vk
dXJlIHByb2M7Ci0gICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEpCi0gICAgICAgIHJldHVybjsK
LSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmcx
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigp
LAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMSkpOwotICAgIENoZWNrVmFsdWUqIGNoZWNrTXVsID0gcm9vdC0+YXBwZW5k
TmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrTXVsLCBPcmlnaW4oKSwgYXJnMSwgYXJnMik7Ci0g
ICAgY2hlY2tNdWwtPmFwcGVuZChhcmcxKTsKLSAgICBjaGVja011bC0+YXBwZW5kKGFyZzIpOwot
ICAgIGNoZWNrTXVsLT5zZXRHZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAg
ICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAg
ICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09IDIpOwotICAgICAgICAgICAgQ0hFQ0socGFy
YW1zWzBdLmlzR1BSKCkpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzFdLmlzR1BSKCkpOwot
ICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKHBhcmFtc1swXS5ncHIoKSwgRlBS
SW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAgICBqaXQuY29udmVydEludDMyVG9Eb3VibGUocGFy
YW1zWzFdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QxKTsKLSAgICAgICAgICAgIGppdC5tdWxEb3Vi
bGUoRlBSSW5mbzo6ZnBSZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAgICBqaXQu
ZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKLSAgICAgICAgICAgIGppdC5yZXQoKTsKLSAgICAgICAg
fSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIElUb0Qs
IE9yaWdpbigpLCBjaGVja011bCkpOwotCi0gICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJv
Yyk7Ci0KLSAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgMCwgNDIpID09IDAuMCk7Ci0g
ICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDEsIDQyKSA9PSA0Mi4wKTsKLSAgICBDSEVD
SyhpbnZva2U8ZG91YmxlPigqY29kZSwgNDIsIDQyKSA9PSA0Mi4wICogNDIuMCk7Ci0gICAgQ0hF
Q0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDIxNDc0ODM2NDcsIDQyKSA9PSAyMTQ3NDgzNjQ3LjAg
KiA0Mi4wKTsKLX0KLQotdm9pZCB0ZXN0Q2hlY2tNdWxNZW1vcnkoKQotewotICAgIFByb2NlZHVy
ZSBwcm9jOwotICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAxKQotICAgICAgICByZXR1cm47Ci0g
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIGludCBsZWZ0Owot
ICAgIGludCByaWdodDsKLSAgICAKLSAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxN
ZW1vcnlWYWx1ZT4oCi0gICAgICAgIHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwKLSAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmbGVmdCkp
OwotICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAg
ICAgcHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZyaWdodCkpOwotICAgIENoZWNrVmFsdWUq
IGNoZWNrTXVsID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrTXVsLCBP
cmlnaW4oKSwgYXJnMSwgYXJnMik7Ci0gICAgY2hlY2tNdWwtPmFwcGVuZChhcmcxKTsKLSAgICBj
aGVja011bC0+YXBwZW5kKGFyZzIpOwotICAgIGNoZWNrTXVsLT5zZXRHZW5lcmF0b3IoCi0gICAg
ICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFt
cyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2Ug
YWxsb3dTY3JhdGNoKGppdCk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09IDIp
OwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzBdLmlzR1BSKCkpOwotICAgICAgICAgICAgQ0hF
Q0socGFyYW1zWzFdLmlzR1BSKCkpOwotICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91
YmxlKHBhcmFtc1swXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAgICBqaXQu
Y29udmVydEludDMyVG9Eb3VibGUocGFyYW1zWzFdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QxKTsK
LSAgICAgICAgICAgIGppdC5tdWxEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMSwgRlBSSW5mbzo6ZnBS
ZWdUMCk7Ci0gICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKLSAgICAgICAg
ICAgIGppdC5yZXQoKTsKLSAgICAgICAgfSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIElUb0QsIE9yaWdpbigpLCBjaGVja011bCkpOwotCi0gICAgYXV0
byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0KLSAgICBsZWZ0ID0gMDsKLSAgICByaWdodCA9
IDQyOwotICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlKSA9PSAwLjApOwotICAgIAotICAg
IGxlZnQgPSAxOwotICAgIHJpZ2h0ID0gNDI7Ci0gICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNv
ZGUpID09IDQyLjApOwotCi0gICAgbGVmdCA9IDQyOwotICAgIHJpZ2h0ID0gNDI7Ci0gICAgQ0hF
Q0soaW52b2tlPGRvdWJsZT4oKmNvZGUpID09IDQyLjAgKiA0Mi4wKTsKLQotICAgIGxlZnQgPSAy
MTQ3NDgzNjQ3OwotICAgIHJpZ2h0ID0gNDI7Ci0gICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNv
ZGUpID09IDIxNDc0ODM2NDcuMCAqIDQyLjApOwotfQotCi12b2lkIHRlc3RDaGVja011bDIoKQot
ewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAxKQotICAg
ICAgICByZXR1cm47Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAg
ICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIFRy
dW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogYXJn
MiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAyKTsKLSAg
ICBDaGVja1ZhbHVlKiBjaGVja011bCA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9j
LCBDaGVja011bCwgT3JpZ2luKCksIGFyZzEsIGFyZzIpOwotICAgIGNoZWNrTXVsLT5hcHBlbmQo
YXJnMSk7Ci0gICAgY2hlY2tNdWwtPmFwcGVuZChhcmcyKTsKLSAgICBjaGVja011bC0+c2V0R2Vu
ZXJhdG9yKAotICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdl
bmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewotICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hS
ZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1z
LnNpemUoKSA9PSAyKTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtc1swXS5pc0dQUigpKTsKLSAg
ICAgICAgICAgIENIRUNLKHBhcmFtc1sxXS5pc0NvbnN0YW50KCkpOwotICAgICAgICAgICAgQ0hF
Q0socGFyYW1zWzFdLnZhbHVlKCkgPT0gMik7Ci0gICAgICAgICAgICBqaXQuY29udmVydEludDMy
VG9Eb3VibGUocGFyYW1zWzBdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgICAg
IGppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigyKSwg
RlBSSW5mbzo6ZnBSZWdUMSk7Ci0gICAgICAgICAgICBqaXQubXVsRG91YmxlKEZQUkluZm86OmZw
UmVnVDEsIEZQUkluZm86OmZwUmVnVDApOwotICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVw
aWxvZ3VlKCk7Ci0gICAgICAgICAgICBqaXQucmV0KCk7Ci0gICAgICAgIH0pOwotICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwK
LSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJVG9ELCBPcmlnaW4oKSwgY2hl
Y2tNdWwpKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotCi0gICAgQ0hF
Q0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDApID09IDAuMCk7Ci0gICAgQ0hFQ0soaW52b2tlPGRv
dWJsZT4oKmNvZGUsIDEpID09IDIuMCk7Ci0gICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUs
IDQyKSA9PSA0Mi4wICogMi4wKTsKLSAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgMjE0
NzQ4MzY0NykgPT0gMjE0NzQ4MzY0Ny4wICogMi4wKTsKLX0KLQotdm9pZCB0ZXN0Q2hlY2tNdWw2
NCgpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEp
Ci0gICAgICAgIHJldHVybjsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OwotICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIFZhbHVlKiBhcmcyID0g
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEpOwotICAgIENoZWNrVmFsdWUqIGNoZWNrTXVsID0gcm9vdC0+YXBwZW5k
TmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrTXVsLCBPcmlnaW4oKSwgYXJnMSwgYXJnMik7Ci0g
ICAgY2hlY2tNdWwtPmFwcGVuZChhcmcxKTsKLSAgICBjaGVja011bC0+YXBwZW5kKGFyZzIpOwot
ICAgIGNoZWNrTXVsLT5zZXRHZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAg
ICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAg
ICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09IDIpOwotICAgICAgICAgICAgQ0hFQ0socGFy
YW1zWzBdLmlzR1BSKCkpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzFdLmlzR1BSKCkpOwot
ICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQ2NFRvRG91YmxlKHBhcmFtc1swXS5ncHIoKSwgRlBS
SW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAgICBqaXQuY29udmVydEludDY0VG9Eb3VibGUocGFy
YW1zWzFdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QxKTsKLSAgICAgICAgICAgIGppdC5tdWxEb3Vi
bGUoRlBSSW5mbzo6ZnBSZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAgICBqaXQu
ZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKLSAgICAgICAgICAgIGppdC5yZXQoKTsKLSAgICAgICAg
fSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIElUb0Qs
IE9yaWdpbigpLCBjaGVja011bCkpOwotCi0gICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJv
Yyk7Ci0KLSAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgMCwgNDIpID09IDAuMCk7Ci0g
ICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDEsIDQyKSA9PSA0Mi4wKTsKLSAgICBDSEVD
SyhpbnZva2U8ZG91YmxlPigqY29kZSwgNDIsIDQyKSA9PSA0Mi4wICogNDIuMCk7Ci0gICAgQ0hF
Q0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDkyMjMzNzIwMzY4NTQ3NzU4MDdsbCwgNDIpID09IHN0
YXRpY19jYXN0PGRvdWJsZT4oOTIyMzM3MjAzNjg1NDc3NTgwN2xsKSAqIDQyLjApOwotfQotCi12
b2lkIHRlc3RDaGVja011bEZvbGQoaW50IGEsIGludCBiKQotewotICAgIFByb2NlZHVyZSBwcm9j
OwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFy
ZzEgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7Ci0g
ICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmln
aW4oKSwgYik7Ci0gICAgQ2hlY2tWYWx1ZSogY2hlY2tNdWwgPSByb290LT5hcHBlbmROZXc8Q2hl
Y2tWYWx1ZT4ocHJvYywgQ2hlY2tNdWwsIE9yaWdpbigpLCBhcmcxLCBhcmcyKTsKLSAgICB1bnNp
Z25lZCBvcHRMZXZlbCA9IHByb2Mub3B0TGV2ZWwoKTsKLSAgICBjaGVja011bC0+c2V0R2VuZXJh
dG9yKAotICAgICAgICBbJl0gKENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlv
blBhcmFtcyYpIHsKLSAgICAgICAgICAgIGlmIChvcHRMZXZlbCA+IDEpCi0gICAgICAgICAgICAg
ICAgQ0hFQ0soISJTaG91bGQgaGF2ZSBiZWVuIGZvbGRlZCIpOwotICAgICAgICB9KTsKLSAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2hlY2tN
dWwpOwotCi0gICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0KLSAgICBDSEVDSyhp
bnZva2U8aW50PigqY29kZSkgPT0gYSAqIGIpOwotfQotCi12b2lkIHRlc3RDaGVja011bEZvbGRG
YWlsKGludCBhLCBpbnQgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBpZiAocHJvYy5v
cHRMZXZlbCgpIDwgMSkKLSAgICAgICAgcmV0dXJuOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8Q29uc3Qz
MlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7Ci0gICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7Ci0gICAgQ2hlY2tWYWx1ZSog
Y2hlY2tNdWwgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2tNdWwsIE9y
aWdpbigpLCBhcmcxLCBhcmcyKTsKLSAgICBjaGVja011bC0+c2V0R2VuZXJhdG9yKAotICAgICAg
ICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMm
KSB7Ci0gICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3Jh
dGNoKGppdCk7Ci0gICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
Mig0MiksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKLSAgICAgICAgICAgIGppdC5lbWl0RnVu
Y3Rpb25FcGlsb2d1ZSgpOwotICAgICAgICAgICAgaml0LnJldCgpOwotICAgICAgICB9KTsKLSAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2hl
Y2tNdWwpOwotCi0gICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0KLSAgICBDSEVD
SyhpbnZva2U8aW50PigqY29kZSkgPT0gNDIpOwotfQotCi12b2lkIHRlc3RDaGVja011bEFyZ3Vt
ZW50QWxpYXNpbmc2NCgpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKLSAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICBWYWx1ZSogYXJnMyA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIyKTsKLQotICAgIC8vIFByZXRlbmQgdG8gdXNlIGFsbCB0aGUgYXJncy4K
LSAgICBQYXRjaHBvaW50VmFsdWUqIHVzZUFyZ3MgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2lu
dFZhbHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7Ci0gICAgdXNlQXJncy0+YXBwZW5kKENvbnN0
cmFpbmVkVmFsdWUoYXJnMSwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOwotICAgIHVzZUFyZ3Mt
PmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzIsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsK
LSAgICB1c2VBcmdzLT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmczLCBWYWx1ZVJlcDo6U29t
ZVJlZ2lzdGVyKSk7Ci0gICAgdXNlQXJncy0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxwZXJz
JiwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKLQotICAgIC8vIExhc3Qg
dXNlIG9mIGZpcnN0IGFyZyAoaGVyZSwgYXJnMSkuCi0gICAgQ2hlY2tWYWx1ZSogY2hlY2tNdWwx
ID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrTXVsLCBPcmlnaW4oKSwg
YXJnMSwgYXJnMik7Ci0gICAgY2hlY2tNdWwxLT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyBqaXQub29wcygpOyB9
KTsKLQotICAgIC8vIExhc3QgdXNlIG9mIHNlY29uZCBhcmcgKGhlcmUsIGFyZzIpLgotICAgIENo
ZWNrVmFsdWUqIGNoZWNrTXVsMiA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBD
aGVja011bCwgT3JpZ2luKCksIGFyZzMsIGFyZzIpOwotICAgIGNoZWNrTXVsMi0+c2V0R2VuZXJh
dG9yKFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFt
cyYpIHsgaml0Lm9vcHMoKTsgfSk7Ci0KLSAgICAvLyBLZWVwIGFyZzMgbGl2ZS4KLSAgICBQYXRj
aHBvaW50VmFsdWUqIGtlZXBBcmcyTGl2ZSA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFs
dWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKLSAgICBrZWVwQXJnMkxpdmUtPmFwcGVuZChDb25z
dHJhaW5lZFZhbHVlKGFyZzIsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKLSAgICBrZWVwQXJn
MkxpdmUtPnNldEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2Vu
ZXJhdGlvblBhcmFtcyYpIHsgfSk7Ci0KLSAgICAvLyBPbmx5IHVzZSBvZiBjaGVja011bDEgYW5k
IGNoZWNrTXVsMi4KLSAgICBDaGVja1ZhbHVlKiBjaGVja011bDMgPSByb290LT5hcHBlbmROZXc8
Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2tNdWwsIE9yaWdpbigpLCBjaGVja011bDEsIGNoZWNrTXVs
Mik7Ci0gICAgY2hlY2tNdWwzLT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwg
Y29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyBqaXQub29wcygpOyB9KTsKLQotICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBjaGVj
a011bDMpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCAyLCAzLCA0
KSA9PSA3Mik7Ci19Ci0KLXZvaWQgdGVzdENoZWNrTXVsQXJndW1lbnRBbGlhc2luZzMyKCkKLXsK
LSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOwotICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAg
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZh
bHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgVHJ1bmMs
IE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOwotICAgIFZhbHVlKiBhcmczID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAot
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMikpOwotCi0gICAgLy8gUHJldGVuZCB0byB1c2UgYWxsIHRo
ZSBhcmdzLgotICAgIFBhdGNocG9pbnRWYWx1ZSogdXNlQXJncyA9IHJvb3QtPmFwcGVuZE5ldzxQ
YXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKLSAgICB1c2VBcmdzLT5hcHBl
bmQoQ29uc3RyYWluZWRWYWx1ZShhcmcxLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7Ci0gICAg
dXNlQXJncy0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMiwgVmFsdWVSZXA6OlNvbWVSZWdp
c3RlcikpOwotICAgIHVzZUFyZ3MtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzMsIFZhbHVl
UmVwOjpTb21lUmVnaXN0ZXIpKTsKLSAgICB1c2VBcmdzLT5zZXRHZW5lcmF0b3IoWyZdIChDQ2Fs
bEhlbHBlcnMmLCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7IH0pOwotCi0gICAg
Ly8gTGFzdCB1c2Ugb2YgZmlyc3QgYXJnIChoZXJlLCBhcmcxKS4KLSAgICBDaGVja1ZhbHVlKiBj
aGVja011bDEgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2tNdWwsIE9y
aWdpbigpLCBhcmcxLCBhcmcyKTsKLSAgICBjaGVja011bDEtPnNldEdlbmVyYXRvcihbJl0gKEND
YWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7IGppdC5v
b3BzKCk7IH0pOwotCi0gICAgLy8gTGFzdCB1c2Ugb2Ygc2Vjb25kIGFyZyAoaGVyZSwgYXJnMyku
Ci0gICAgQ2hlY2tWYWx1ZSogY2hlY2tNdWwyID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+
KHByb2MsIENoZWNrTXVsLCBPcmlnaW4oKSwgYXJnMiwgYXJnMyk7Ci0gICAgY2hlY2tNdWwyLT5z
ZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0
aW9uUGFyYW1zJikgeyBqaXQub29wcygpOyB9KTsKLQotICAgIC8vIEtlZXAgYXJnMyBsaXZlLgot
ICAgIFBhdGNocG9pbnRWYWx1ZSoga2VlcEFyZzJMaXZlID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNo
cG9pbnRWYWx1ZT4ocHJvYywgVm9pZCwgT3JpZ2luKCkpOwotICAgIGtlZXBBcmcyTGl2ZS0+YXBw
ZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMiwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOwotICAg
IGtlZXBBcmcyTGl2ZS0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKLQotICAgIC8vIE9ubHkgdXNlIG9mIGNoZWNr
TXVsMSBhbmQgY2hlY2tNdWwyLgotICAgIENoZWNrVmFsdWUqIGNoZWNrTXVsMyA9IHJvb3QtPmFw
cGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja011bCwgT3JpZ2luKCksIGNoZWNrTXVsMSwg
Y2hlY2tNdWwyKTsKLSAgICBjaGVja011bDMtPnNldEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVy
cyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7IGppdC5vb3BzKCk7IH0p
OwotCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2lu
KCksIGNoZWNrTXVsMyk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2Ms
IDIsIDMsIDQpID09IDcyKTsKLX0KLQotdm9pZCB0ZXN0Q2hlY2tNdWw2NFNTaHIoKQotewotICAg
IFByb2NlZHVyZSBwcm9jOwotICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAxKQotICAgICAgICBy
ZXR1cm47Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1
ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIFNTaHIsIE9y
aWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7Ci0gICAgVmFsdWUqIGFyZzIgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBTU2hyLCBPcmlnaW4oKSwKLSAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpLAotICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpOwotICAgIENoZWNrVmFsdWUqIGNoZWNrTXVsID0gcm9v
dC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrTXVsLCBPcmlnaW4oKSwgYXJnMSwg
YXJnMik7Ci0gICAgY2hlY2tNdWwtPmFwcGVuZChhcmcxKTsKLSAgICBjaGVja011bC0+YXBwZW5k
KGFyZzIpOwotICAgIGNoZWNrTXVsLT5zZXRHZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxI
ZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0g
ICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGpp
dCk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09IDIpOwotICAgICAgICAgICAg
Q0hFQ0socGFyYW1zWzBdLmlzR1BSKCkpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzFdLmlz
R1BSKCkpOwotICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQ2NFRvRG91YmxlKHBhcmFtc1swXS5n
cHIoKSwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAgICBqaXQuY29udmVydEludDY0VG9E
b3VibGUocGFyYW1zWzFdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QxKTsKLSAgICAgICAgICAgIGpp
dC5tdWxEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAg
ICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKLSAgICAgICAgICAgIGppdC5yZXQoKTsK
LSAgICAgICAgfSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIElUb0QsIE9yaWdpbigpLCBjaGVja011bCkpOwotCi0gICAgYXV0byBjb2RlID0gY29tcGls
ZVByb2MocHJvYyk7Ci0KLSAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgMGxsLCA0Mmxs
KSA9PSAwLjApOwotICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAxbGwsIDQybGwpID09
IDAuMCk7Ci0gICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDQybGwsIDQybGwpID09ICg0
Mi4wIC8gMi4wKSAqICg0Mi4wIC8gMi4wKSk7Ci0gICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNv
ZGUsIDEwMDAwMDAwMDAwbGwsIDEwMDAwMDAwMDAwbGwpID09IDI1MDAwMDAwMDAwMDAwMDAwMDAw
LjApOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBMZWZ0RnVuY3RvciwgdHlwZW5hbWUgUmlnaHRG
dW5jdG9yLCB0eXBlbmFtZSBJbnB1dFR5cGU+Ci12b2lkIGdlbmVyaWNUZXN0Q29tcGFyZSgKLSAg
ICBCMzo6T3Bjb2RlIG9wY29kZSwgY29uc3QgTGVmdEZ1bmN0b3ImIGxlZnRGdW5jdG9yLCBjb25z
dCBSaWdodEZ1bmN0b3ImIHJpZ2h0RnVuY3RvciwKLSAgICBJbnB1dFR5cGUgbGVmdCwgSW5wdXRU
eXBlIHJpZ2h0LCBpbnQgcmVzdWx0KQotewotICAgIC8vIFVzaW5nIGEgY29tcGFyZS4KLSAgICB7
Ci0gICAgICAgIFByb2NlZHVyZSBwcm9jOwotICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOwotCi0gICAgICAgIFZhbHVlKiBsZWZ0VmFsdWUgPSBsZWZ0RnVuY3Rvcihy
b290LCBwcm9jKTsKLSAgICAgICAgVmFsdWUqIHJpZ2h0VmFsdWUgPSByaWdodEZ1bmN0b3Iocm9v
dCwgcHJvYyk7Ci0gICAgICAgIFZhbHVlKiBjb21wYXJpc29uUmVzdWx0ID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBvcGNvZGUsIE9yaWdpbigpLCBsZWZ0VmFsdWUsIHJpZ2h0VmFsdWUp
OwotICAgICAgICAKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAg
ICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgTm90RXF1YWwsIE9yaWdpbigpLAotICAg
ICAgICAgICAgICAgIGNvbXBhcmlzb25SZXN1bHQsCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIGNvbXBhcmlzb25SZXN1bHQtPnR5cGUoKSwg
MCkpKTsKLQotICAgICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgbGVmdCwgcmln
aHQpID09IHJlc3VsdCk7Ci0gICAgfQotICAgIAotICAgIC8vIFVzaW5nIGEgYnJhbmNoLgotICAg
IHsKLSAgICAgICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRC
bG9jaygpOwotICAgICAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsK
LQotICAgICAgICBWYWx1ZSogbGVmdFZhbHVlID0gbGVmdEZ1bmN0b3Iocm9vdCwgcHJvYyk7Ci0g
ICAgICAgIFZhbHVlKiByaWdodFZhbHVlID0gcmlnaHRGdW5jdG9yKHJvb3QsIHByb2MpOwotCi0g
ICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgICAgIHByb2MsIEJy
YW5jaCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IG9wY29kZSwgT3JpZ2luKCksIGxlZnRWYWx1ZSwgcmlnaHRWYWx1ZSksCi0gICAgICAgICAgICBG
cmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKLQot
ICAgICAgICAvLyBXZSB1c2UgYSBwYXRjaHBvaW50IG9uIHRoZSB0aGVuIGNhc2UgdG8gZW5zdXJl
IHRoYXQgdGhpcyBkb2Vzbid0IGdldCBpZi1jb252ZXJ0ZWQuCi0gICAgICAgIFBhdGNocG9pbnRW
YWx1ZSogcGF0Y2hwb2ludCA9IHRoZW5DYXNlLT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihw
cm9jLCBJbnQzMiwgT3JpZ2luKCkpOwotICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3Io
Ci0gICAgICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMmIHBhcmFtcykgewotICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNo
UmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKLSAgICAgICAgICAgICAgICBDSEVDSyhw
YXJhbXMuc2l6ZSgpID09IDEpOwotICAgICAgICAgICAgICAgIENIRUNLKHBhcmFtc1swXS5pc0dQ
UigpKTsKLSAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MigxKSwgcGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB0aGVuQ2Fz
ZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHBhdGNocG9p
bnQpOwotCi0gICAgICAgIGVsc2VDYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAg
ICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICAgICAgZWxzZUNhc2UtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7Ci0KLSAgICAgICAgQ0hFQ0so
Y29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGxlZnQsIHJpZ2h0KSA9PSByZXN1bHQpOwotICAgIH0K
LX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgSW5wdXRUeXBlPgotSW5wdXRUeXBlIG1vZGVsQ29tcGFy
ZShCMzo6T3Bjb2RlIG9wY29kZSwgSW5wdXRUeXBlIGxlZnQsIElucHV0VHlwZSByaWdodCkKLXsK
LSAgICBzd2l0Y2ggKG9wY29kZSkgewotICAgIGNhc2UgRXF1YWw6Ci0gICAgICAgIHJldHVybiBs
ZWZ0ID09IHJpZ2h0OwotICAgIGNhc2UgTm90RXF1YWw6Ci0gICAgICAgIHJldHVybiBsZWZ0ICE9
IHJpZ2h0OwotICAgIGNhc2UgTGVzc1RoYW46Ci0gICAgICAgIHJldHVybiBsZWZ0IDwgcmlnaHQ7
Ci0gICAgY2FzZSBHcmVhdGVyVGhhbjoKLSAgICAgICAgcmV0dXJuIGxlZnQgPiByaWdodDsKLSAg
ICBjYXNlIExlc3NFcXVhbDoKLSAgICAgICAgcmV0dXJuIGxlZnQgPD0gcmlnaHQ7Ci0gICAgY2Fz
ZSBHcmVhdGVyRXF1YWw6Ci0gICAgICAgIHJldHVybiBsZWZ0ID49IHJpZ2h0OwotICAgIGNhc2Ug
QWJvdmU6Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6Om1ha2VfdW5z
aWduZWQ8SW5wdXRUeXBlPjo6dHlwZT4obGVmdCkgPgotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
dHlwZW5hbWUgc3RkOjptYWtlX3Vuc2lnbmVkPElucHV0VHlwZT46OnR5cGU+KHJpZ2h0KTsKLSAg
ICBjYXNlIEJlbG93OgotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjpt
YWtlX3Vuc2lnbmVkPElucHV0VHlwZT46OnR5cGU+KGxlZnQpIDwKLSAgICAgICAgICAgIHN0YXRp
Y19jYXN0PHR5cGVuYW1lIHN0ZDo6bWFrZV91bnNpZ25lZDxJbnB1dFR5cGU+Ojp0eXBlPihyaWdo
dCk7Ci0gICAgY2FzZSBBYm92ZUVxdWFsOgotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dHlw
ZW5hbWUgc3RkOjptYWtlX3Vuc2lnbmVkPElucHV0VHlwZT46OnR5cGU+KGxlZnQpID49Ci0gICAg
ICAgICAgICBzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6Om1ha2VfdW5zaWduZWQ8SW5wdXRUeXBl
Pjo6dHlwZT4ocmlnaHQpOwotICAgIGNhc2UgQmVsb3dFcXVhbDoKLSAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PHR5cGVuYW1lIHN0ZDo6bWFrZV91bnNpZ25lZDxJbnB1dFR5cGU+Ojp0eXBlPihs
ZWZ0KSA8PQotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjptYWtlX3Vuc2ln
bmVkPElucHV0VHlwZT46OnR5cGU+KHJpZ2h0KTsKLSAgICBjYXNlIEJpdEFuZDoKLSAgICAgICAg
cmV0dXJuICEhKGxlZnQgJiByaWdodCk7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotfQotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBUPgotdm9pZCB0ZXN0Q29tcGFyZUxvYWQoQjM6Ok9wY29kZSBvcGNvZGUs
IEIzOjpPcGNvZGUgbG9hZE9wY29kZSwgaW50IGxlZnQsIGludCByaWdodCkKLXsKLSAgICBpbnQg
cmVzdWx0ID0gbW9kZWxDb21wYXJlKG9wY29kZSwgbW9kZWxMb2FkPFQ+KGxlZnQpLCByaWdodCk7
Ci0gICAgCi0gICAgLy8gVGVzdCBhZGRyLXRvLXRtcAotICAgIGludCBzbG90ID0gbGVmdDsKLSAg
ICBnZW5lcmljVGVzdENvbXBhcmUoCi0gICAgICAgIG9wY29kZSwKLSAgICAgICAgWyZdIChCYXNp
Y0Jsb2NrKiBibG9jaywgUHJvY2VkdXJlJiBwcm9jKSB7Ci0gICAgICAgICAgICByZXR1cm4gYmxv
Y2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgbG9hZE9w
Y29kZSwgSW50MzIsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIGJsb2NrLT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZzbG90KSk7Ci0gICAgICAgIH0sCi0gICAg
ICAgIFsmXSAoQmFzaWNCbG9jayogYmxvY2ssIFByb2NlZHVyZSYgcHJvYykgewotICAgICAgICAg
ICAgcmV0dXJuIGJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICBibG9jay0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKLSAg
ICAgICAgfSwKLSAgICAgICAgbGVmdCwgcmlnaHQsIHJlc3VsdCk7Ci0KLSAgICAvLyBUZXN0IGFk
ZHItdG8taW1tCi0gICAgc2xvdCA9IGxlZnQ7Ci0gICAgZ2VuZXJpY1Rlc3RDb21wYXJlKAotICAg
ICAgICBvcGNvZGUsCi0gICAgICAgIFsmXSAoQmFzaWNCbG9jayogYmxvY2ssIFByb2NlZHVyZSYg
cHJvYykgewotICAgICAgICAgICAgcmV0dXJuIGJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KAotICAgICAgICAgICAgICAgIHByb2MsIGxvYWRPcGNvZGUsIEludDMyLCBPcmlnaW4oKSwKLSAg
ICAgICAgICAgICAgICBibG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCAmc2xvdCkpOwotICAgICAgICB9LAotICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGJsb2Nr
LCBQcm9jZWR1cmUmIHByb2MpIHsKLSAgICAgICAgICAgIHJldHVybiBibG9jay0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHJpZ2h0KTsKLSAgICAgICAgfSwKLSAgICAg
ICAgbGVmdCwgcmlnaHQsIHJlc3VsdCk7Ci0KLSAgICByZXN1bHQgPSBtb2RlbENvbXBhcmUob3Bj
b2RlLCBsZWZ0LCBtb2RlbExvYWQ8VD4ocmlnaHQpKTsKLSAgICAKLSAgICAvLyBUZXN0IHRtcC10
by1hZGRyCi0gICAgc2xvdCA9IHJpZ2h0OwotICAgIGdlbmVyaWNUZXN0Q29tcGFyZSgKLSAgICAg
ICAgb3Bjb2RlLAotICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrLCBQcm9jZWR1cmUmIHBy
b2MpIHsKLSAgICAgICAgICAgIHJldHVybiBibG9jay0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAg
ICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgYmxvY2st
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSk7Ci0gICAgICAgIH0sCi0gICAgICAgIFsmXSAoQmFzaWNCbG9jayogYmxvY2ss
IFByb2NlZHVyZSYgcHJvYykgewotICAgICAgICAgICAgcmV0dXJuIGJsb2NrLT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIGxvYWRPcGNvZGUsIEludDMyLCBP
cmlnaW4oKSwKLSAgICAgICAgICAgICAgICBibG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCAmc2xvdCkpOwotICAgICAgICB9LAotICAgICAgICBsZWZ0LCByaWdo
dCwgcmVzdWx0KTsKLQotICAgIC8vIFRlc3QgaW1tLXRvLWFkZHIKLSAgICBzbG90ID0gcmlnaHQ7
Ci0gICAgZ2VuZXJpY1Rlc3RDb21wYXJlKAotICAgICAgICBvcGNvZGUsCi0gICAgICAgIFsmXSAo
QmFzaWNCbG9jayogYmxvY2ssIFByb2NlZHVyZSYgcHJvYykgewotICAgICAgICAgICAgcmV0dXJu
IGJsb2NrLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbGVmdCk7Ci0g
ICAgICAgIH0sCi0gICAgICAgIFsmXSAoQmFzaWNCbG9jayogYmxvY2ssIFByb2NlZHVyZSYgcHJv
YykgewotICAgICAgICAgICAgcmV0dXJuIGJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAot
ICAgICAgICAgICAgICAgIHByb2MsIGxvYWRPcGNvZGUsIEludDMyLCBPcmlnaW4oKSwKLSAgICAg
ICAgICAgICAgICBibG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCAmc2xvdCkpOwotICAgICAgICB9LAotICAgICAgICBsZWZ0LCByaWdodCwgcmVzdWx0KTsKLQot
ICAgIC8vIFRlc3QgYWRkci10by1hZGRyLCB3aXRoIHRoZSBzYW1lIGFkZHIuCi0gICAgc2xvdCA9
IGxlZnQ7Ci0gICAgVmFsdWUqIHZhbHVlOwotICAgIGdlbmVyaWNUZXN0Q29tcGFyZSgKLSAgICAg
ICAgb3Bjb2RlLAotICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrLCBQcm9jZWR1cmUmIHBy
b2MpIHsKLSAgICAgICAgICAgIHZhbHVlID0gYmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
Ci0gICAgICAgICAgICAgICAgcHJvYywgbG9hZE9wY29kZSwgSW50MzIsIE9yaWdpbigpLAotICAg
ICAgICAgICAgICAgIGJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksICZzbG90KSk7Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgICAgIH0sCi0gICAg
ICAgIFsmXSAoQmFzaWNCbG9jayosIFByb2NlZHVyZSYpIHsKLSAgICAgICAgICAgIHJldHVybiB2
YWx1ZTsKLSAgICAgICAgfSwKLSAgICAgICAgbGVmdCwgbGVmdCwgbW9kZWxDb21wYXJlKG9wY29k
ZSwgbW9kZWxMb2FkPFQ+KGxlZnQpLCBtb2RlbExvYWQ8VD4obGVmdCkpKTsKLX0KLQotdm9pZCB0
ZXN0Q29tcGFyZUltcGwoQjM6Ok9wY29kZSBvcGNvZGUsIGludDY0X3QgbGVmdCwgaW50NjRfdCBy
aWdodCkKLXsKLSAgICBpbnQ2NF90IHJlc3VsdCA9IG1vZGVsQ29tcGFyZShvcGNvZGUsIGxlZnQs
IHJpZ2h0KTsKLSAgICBpbnQzMl90IGludDMyUmVzdWx0ID0gbW9kZWxDb21wYXJlKG9wY29kZSwg
c3RhdGljX2Nhc3Q8aW50MzJfdD4obGVmdCksIHN0YXRpY19jYXN0PGludDMyX3Q+KHJpZ2h0KSk7
Ci0gICAgCi0gICAgLy8gVGVzdCB0bXAtdG8tdG1wLgotICAgIGdlbmVyaWNUZXN0Q29tcGFyZSgK
LSAgICAgICAgb3Bjb2RlLAotICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrLCBQcm9jZWR1
cmUmIHByb2MpIHsKLSAgICAgICAgICAgIHJldHVybiBibG9jay0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgICAg
ICB9LAotICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrLCBQcm9jZWR1cmUmIHByb2MpIHsK
LSAgICAgICAgICAgIHJldHVybiBibG9jay0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAgICB9LAotICAgICAg
ICBsZWZ0LCByaWdodCwgcmVzdWx0KTsKLSAgICBnZW5lcmljVGVzdENvbXBhcmUoCi0gICAgICAg
IG9wY29kZSwKLSAgICAgICAgWyZdIChCYXNpY0Jsb2NrKiBibG9jaywgUHJvY2VkdXJlJiBwcm9j
KSB7Ci0gICAgICAgICAgICByZXR1cm4gYmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAg
ICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIGJsb2NrLT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCkpOwotICAgICAgICB9LAotICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrLCBQ
cm9jZWR1cmUmIHByb2MpIHsKLSAgICAgICAgICAgIHJldHVybiBibG9jay0+YXBwZW5kTmV3PFZh
bHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAg
ICAgICAgYmxvY2stPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Ci0gICAgICAgIH0sCi0gICAgICAgIGxlZnQsIHJpZ2h0
LCBpbnQzMlJlc3VsdCk7Ci0KLSAgICAvLyBUZXN0IGltbS10by10bXAuCi0gICAgZ2VuZXJpY1Rl
c3RDb21wYXJlKAotICAgICAgICBvcGNvZGUsCi0gICAgICAgIFsmXSAoQmFzaWNCbG9jayogYmxv
Y2ssIFByb2NlZHVyZSYgcHJvYykgewotICAgICAgICAgICAgcmV0dXJuIGJsb2NrLT5hcHBlbmRO
ZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbGVmdCk7Ci0gICAgICAgIH0sCi0gICAg
ICAgIFsmXSAoQmFzaWNCbG9jayogYmxvY2ssIFByb2NlZHVyZSYgcHJvYykgewotICAgICAgICAg
ICAgcmV0dXJuIGJsb2NrLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIH0sCi0gICAgICAgIGxlZnQsIHJp
Z2h0LCByZXN1bHQpOwotICAgIGdlbmVyaWNUZXN0Q29tcGFyZSgKLSAgICAgICAgb3Bjb2RlLAot
ICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrLCBQcm9jZWR1cmUmIHByb2MpIHsKLSAgICAg
ICAgICAgIHJldHVybiBibG9jay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIGxlZnQpOwotICAgICAgICB9LAotICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrLCBQ
cm9jZWR1cmUmIHByb2MpIHsKLSAgICAgICAgICAgIHJldHVybiBibG9jay0+YXBwZW5kTmV3PFZh
bHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAg
ICAgICAgYmxvY2stPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Ci0gICAgICAgIH0sCi0gICAgICAgIGxlZnQsIHJpZ2h0
LCBpbnQzMlJlc3VsdCk7Ci0KLSAgICAvLyBUZXN0IHRtcC10by1pbW0uCi0gICAgZ2VuZXJpY1Rl
c3RDb21wYXJlKAotICAgICAgICBvcGNvZGUsCi0gICAgICAgIFsmXSAoQmFzaWNCbG9jayogYmxv
Y2ssIFByb2NlZHVyZSYgcHJvYykgewotICAgICAgICAgICAgcmV0dXJuIGJsb2NrLT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7Ci0gICAgICAgIH0sCi0gICAgICAgIFsmXSAoQmFzaWNCbG9jayogYmxvY2ssIFByb2NlZHVy
ZSYgcHJvYykgewotICAgICAgICAgICAgcmV0dXJuIGJsb2NrLT5hcHBlbmROZXc8Q29uc3Q2NFZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgcmlnaHQpOwotICAgICAgICB9LAotICAgICAgICBsZWZ0LCBy
aWdodCwgcmVzdWx0KTsKLSAgICBnZW5lcmljVGVzdENvbXBhcmUoCi0gICAgICAgIG9wY29kZSwK
LSAgICAgICAgWyZdIChCYXNpY0Jsb2NrKiBibG9jaywgUHJvY2VkdXJlJiBwcm9jKSB7Ci0gICAg
ICAgICAgICByZXR1cm4gYmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAg
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIGJsb2NrLT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkp
OwotICAgICAgICB9LAotICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrLCBQcm9jZWR1cmUm
IHByb2MpIHsKLSAgICAgICAgICAgIHJldHVybiBibG9jay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIHJpZ2h0KTsKLSAgICAgICAgfSwKLSAgICAgICAgbGVmdCwgcmln
aHQsIGludDMyUmVzdWx0KTsKLQotICAgIC8vIFRlc3QgaW1tLXRvLWltbS4KLSAgICBnZW5lcmlj
VGVzdENvbXBhcmUoCi0gICAgICAgIG9wY29kZSwKLSAgICAgICAgWyZdIChCYXNpY0Jsb2NrKiBi
bG9jaywgUHJvY2VkdXJlJiBwcm9jKSB7Ci0gICAgICAgICAgICByZXR1cm4gYmxvY2stPmFwcGVu
ZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBsZWZ0KTsKLSAgICAgICAgfSwKLSAg
ICAgICAgWyZdIChCYXNpY0Jsb2NrKiBibG9jaywgUHJvY2VkdXJlJiBwcm9jKSB7Ci0gICAgICAg
ICAgICByZXR1cm4gYmxvY2stPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigp
LCByaWdodCk7Ci0gICAgICAgIH0sCi0gICAgICAgIGxlZnQsIHJpZ2h0LCByZXN1bHQpOwotICAg
IGdlbmVyaWNUZXN0Q29tcGFyZSgKLSAgICAgICAgb3Bjb2RlLAotICAgICAgICBbJl0gKEJhc2lj
QmxvY2sqIGJsb2NrLCBQcm9jZWR1cmUmIHByb2MpIHsKLSAgICAgICAgICAgIHJldHVybiBibG9j
ay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGxlZnQpOwotICAgICAg
ICB9LAotICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrLCBQcm9jZWR1cmUmIHByb2MpIHsK
LSAgICAgICAgICAgIHJldHVybiBibG9jay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIHJpZ2h0KTsKLSAgICAgICAgfSwKLSAgICAgICAgbGVmdCwgcmlnaHQsIGludDMy
UmVzdWx0KTsKLQotICAgIHRlc3RDb21wYXJlTG9hZDxpbnQzMl90PihvcGNvZGUsIExvYWQsIGxl
ZnQsIHJpZ2h0KTsKLSAgICB0ZXN0Q29tcGFyZUxvYWQ8aW50OF90PihvcGNvZGUsIExvYWQ4Uywg
bGVmdCwgcmlnaHQpOwotICAgIHRlc3RDb21wYXJlTG9hZDx1aW50OF90PihvcGNvZGUsIExvYWQ4
WiwgbGVmdCwgcmlnaHQpOwotICAgIHRlc3RDb21wYXJlTG9hZDxpbnQxNl90PihvcGNvZGUsIExv
YWQxNlMsIGxlZnQsIHJpZ2h0KTsKLSAgICB0ZXN0Q29tcGFyZUxvYWQ8dWludDE2X3Q+KG9wY29k
ZSwgTG9hZDE2WiwgbGVmdCwgcmlnaHQpOwotfQotCi12b2lkIHRlc3RDb21wYXJlKEIzOjpPcGNv
ZGUgb3Bjb2RlLCBpbnQ2NF90IGxlZnQsIGludDY0X3QgcmlnaHQpCi17Ci0gICAgdGVzdENvbXBh
cmVJbXBsKG9wY29kZSwgbGVmdCwgcmlnaHQpOwotICAgIHRlc3RDb21wYXJlSW1wbChvcGNvZGUs
IGxlZnQsIHJpZ2h0ICsgMSk7Ci0gICAgdGVzdENvbXBhcmVJbXBsKG9wY29kZSwgbGVmdCwgcmln
aHQgLSAxKTsKLX0KLQotdm9pZCB0ZXN0RXF1YWxEb3VibGUoZG91YmxlIGxlZnQsIGRvdWJsZSBy
aWdodCwgYm9vbCByZXN1bHQpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBFcXVhbCwgT3JpZ2luKCksCi0gICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQ
UkluZm86OmFyZ3VtZW50RlBSMCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMSkpKTsKLQot
ICAgIENIRUNLKGNvbXBpbGVBbmRSdW48Ym9vbD4ocHJvYywgbGVmdCwgcmlnaHQpID09IHJlc3Vs
dCk7Ci19Ci0KLWludCBzaW1wbGVGdW5jdGlvbihpbnQgYSwgaW50IGIpCi17Ci0gICAgcmV0dXJu
IGEgKyBiOwotfQotCi12b2lkIHRlc3RDYWxsU2ltcGxlKGludCBhLCBpbnQgYikKLXsKLSAgICBQ
cm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwot
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAotICAgICAgICAg
ICAgcHJvYywgSW50MzIsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENv
bnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KHNpbXBs
ZUZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCks
Ci0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRS
dW48aW50Pihwcm9jLCBhLCBiKSA9PSBhICsgYik7Ci19Ci0KLXZvaWQgdGVzdENhbGxSYXJlKGlu
dCBhLCBpbnQgYikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGNvbW1vbiA9IHByb2MuYWRkQmxv
Y2soKTsKLSAgICBCYXNpY0Jsb2NrKiByYXJlID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigp
LAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgIEZyZXF1ZW50ZWRCbG9jayhyYXJl
LCBGcmVxdWVuY3lDbGFzczo6UmFyZSksCi0gICAgICAgIEZyZXF1ZW50ZWRCbG9jayhjb21tb24p
KTsKLQotICAgIGNvbW1vbi0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCBjb21tb24tPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCAwKSk7Ci0gICAgCi0gICAgcmFyZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAg
ICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByYXJlLT5hcHBlbmROZXc8Q0Nh
bGxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksCi0gICAgICAgICAg
ICByYXJlLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5j
dGlvblB0cjx2b2lkKj4oc2ltcGxlRnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSwKLSAgICAgICAg
ICAgIHJhcmUtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxKSwKLSAgICAgICAgICAgIHJhcmUtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKSkpOwotCi0g
ICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIHRydWUsIGEsIGIpID09IGEgKyBiKTsK
LX0KLQotdm9pZCB0ZXN0Q2FsbFJhcmVMaXZlKGludCBhLCBpbnQgYiwgaW50IGMpCi17Ci0gICAg
UHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
LSAgICBCYXNpY0Jsb2NrKiBjb21tb24gPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9j
ayogcmFyZSA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKLSAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApLAotICAgICAgICBGcmVxdWVudGVkQmxvY2socmFyZSwgRnJlcXVlbmN5Q2xhc3M6OlJh
cmUpLAotICAgICAgICBGcmVxdWVudGVkQmxvY2soY29tbW9uKSk7Ci0KLSAgICBjb21tb24tPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY29t
bW9uLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwotICAgIAot
ICAgIHJhcmUtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKLSAgICAgICAgcmFyZS0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHBy
b2MsIEFkZCwgT3JpZ2luKCksCi0gICAgICAgICAgICByYXJlLT5hcHBlbmROZXc8Q0NhbGxWYWx1
ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigpLAotICAgICAgICAgICAg
ICAgIHJhcmUtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1
bmN0aW9uUHRyPHZvaWQqPihzaW1wbGVGdW5jdGlvbiwgQjNDQ2FsbFB0clRhZykpLAotICAgICAg
ICAgICAgICAgIHJhcmUtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSwKLSAgICAgICAgICAgICAgICByYXJlLT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MikpLAotICAgICAgICAgICAgcmFyZS0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAg
ICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcmFyZS0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjMp
KSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIHRydWUsIGEsIGIsIGMp
ID09IGEgKyBiICsgYyk7Ci19Ci0KLXZvaWQgdGVzdENhbGxTaW1wbGVQdXJlKGludCBhLCBpbnQg
YikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+
KAotICAgICAgICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigpLCBFZmZlY3RzOjpub25lKCksCi0g
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4oc2ltcGxlRnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSwK
LSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIx
KSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEsIGIpID09IGEgKyBi
KTsKLX0KLQotaW50IGZ1bmN0aW9uV2l0aEhlbGxhQXJndW1lbnRzKGludCBhLCBpbnQgYiwgaW50
IGMsIGludCBkLCBpbnQgZSwgaW50IGYsIGludCBnLCBpbnQgaCwgaW50IGksIGludCBqLCBpbnQg
aywgaW50IGwsIGludCBtLCBpbnQgbiwgaW50IG8sIGludCBwLCBpbnQgcSwgaW50IHIsIGludCBz
LCBpbnQgdCwgaW50IHUsIGludCB2LCBpbnQgdywgaW50IHgsIGludCB5LCBpbnQgeikKLXsKLSAg
ICByZXR1cm4gKGEgPDwgMCkgKyAoYiA8PCAxKSArIChjIDw8IDIpICsgKGQgPDwgMykgKyAoZSA8
PCA0KSArIChmIDw8IDUpICsgKGcgPDwgNikgKyAoaCA8PCA3KSArIChpIDw8IDgpICsgKGogPDwg
OSkgKyAoayA8PCAxMCkgKyAobCA8PCAxMSkgKyAobSA8PCAxMikgKyAobiA8PCAxMykgKyAobyA8
PCAxNCkgKyAocCA8PCAxNSkgKyAocSA8PCAxNikgKyAociA8PCAxNykgKyAocyA8PCAxOCkgKyAo
dCA8PCAxOSkgKyAodSA8PCAyMCkgKyAodiA8PCAyMSkgKyAodyA8PCAyMikgKyAoeCA8PCAyMykg
KyAoeSA8PCAyNCkgKyAoeiA8PCAyNSk7Ci19Ci0KLXZvaWQgdGVzdENhbGxGdW5jdGlvbldpdGhI
ZWxsYUFyZ3VtZW50cygpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIFZlY3RvcjxWYWx1ZSo+IGFyZ3M7Ci0gICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI2OyArK2kpCi0gICAgICAgIGFyZ3MuYXBwZW5kKHJv
b3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBpICsgMSkpOwotCi0g
ICAgQ0NhbGxWYWx1ZSogY2FsbCA9IHJvb3QtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKLSAgICAg
ICAgcHJvYywgSW50MzIsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQ
dHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4oZnVuY3Rpb25X
aXRoSGVsbGFBcmd1bWVudHMsIEIzQ0NhbGxQdHJUYWcpKSk7Ci0gICAgY2FsbC0+YXBwZW5kQXJn
cyhhcmdzKTsKLSAgICAKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwgY2FsbCk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJv
YykgPT0gZnVuY3Rpb25XaXRoSGVsbGFBcmd1bWVudHMoMSwgMiwgMywgNCwgNSwgNiwgNywgOCwg
OSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIz
LCAyNCwgMjUsIDI2KSk7Ci19Ci0KLXVpbnQ2NF90IGZ1bmN0aW9uV2l0aEhlbGxhQXJndW1lbnRz
Mih1aW50NjRfdCBhLCB1aW50NjRfdCBiLCB1aW50NjRfdCBjLCB1aW50NjRfdCBkLCB1aW50NjRf
dCBlLCB1aW50NjRfdCBmLCB1aW50NjRfdCBnLCB1aW50NjRfdCBoLCB1aW50NjRfdCBpLCB1aW50
NjRfdCBqLCB1aW50NjRfdCBrLCB1aW50NjRfdCBsLCB1aW50NjRfdCBtLCB1aW50NjRfdCBuLCB1
aW50NjRfdCBvLCB1aW50NjRfdCBwLCB1aW50NjRfdCBxLCB1aW50NjRfdCByLCB1aW50NjRfdCBz
LCB1aW50NjRfdCB0LCB1aW50NjRfdCB1LCB1aW50NjRfdCB2LCB1aW50NjRfdCB3LCB1aW50NjRf
dCB4LCB1aW50NjRfdCB5LCB1aW50NjRfdCB6KQotewotICAgIHJldHVybiAoYSA8PCAwKSArIChi
IDw8IDEpICsgKGMgPDwgMikgKyAoZCA8PCAzKSArIChlIDw8IDQpICsgKGYgPDwgNSkgKyAoZyA8
PCA2KSArIChoIDw8IDcpICsgKGkgPDwgOCkgKyAoaiA8PCA5KSArIChrIDw8IDEwKSArIChsIDw8
IDExKSArIChtIDw8IDEyKSArIChuIDw8IDEzKSArIChvIDw8IDE0KSArIChwIDw8IDE1KSArIChx
IDw8IDE2KSArIChyIDw8IDE3KSArIChzIDw8IDE4KSArICh0IDw8IDE5KSArICh1IDw8IDIwKSAr
ICh2IDw8IDIxKSArICh3IDw8IDIyKSArICh4IDw8IDIzKSArICh5IDw8IDI0KSArICh6IDw8IDI1
KTsKLX0KLQotdm9pZCB0ZXN0Q2FsbEZ1bmN0aW9uV2l0aEhlbGxhQXJndW1lbnRzMigpCi17Ci0g
ICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKLQotICAgIHVpbnQ2NF90IGxpbWl0ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KCgxIDw8IDEy
KSAtIDEpOyAvLyBVSU5UMTJfTUFYLCBmb3IgYXJtNjQgdGVzdGluZy4KLQotICAgIFZlY3RvcjxW
YWx1ZSo+IGFyZ3M7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI2OyArK2kpCi0gICAg
ICAgIGFyZ3MuYXBwZW5kKHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdp
bigpLCBsaW1pdCAtIGkpKTsKLQotICAgIENDYWxsVmFsdWUqIGNhbGwgPSByb290LT5hcHBlbmRO
ZXc8Q0NhbGxWYWx1ZT4oCi0gICAgICAgIHByb2MsIEludDY0LCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rp
b25QdHI8dm9pZCo+KGZ1bmN0aW9uV2l0aEhlbGxhQXJndW1lbnRzMiwgQjNDQ2FsbFB0clRhZykp
KTsKLSAgICBjYWxsLT5hcHBlbmRBcmdzKGFyZ3MpOwotICAgIAotICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBjYWxsKTsKLQotICAgIGF1dG8g
YSA9IGNvbXBpbGVBbmRSdW48dWludDY0X3Q+KHByb2MpOwotICAgIGF1dG8gYiA9IGZ1bmN0aW9u
V2l0aEhlbGxhQXJndW1lbnRzMihsaW1pdCwgbGltaXQtMSwgbGltaXQtMiwgbGltaXQtMywgbGlt
aXQtNCwgbGltaXQtNSwgbGltaXQtNiwgbGltaXQtNywgbGltaXQtOCwgbGltaXQtOSwgbGltaXQt
MTAsIGxpbWl0LTExLCBsaW1pdC0xMiwgbGltaXQtMTMsIGxpbWl0LTE0LCBsaW1pdC0xNSwgbGlt
aXQtMTYsIGxpbWl0LTE3LCBsaW1pdC0xOCwgbGltaXQtMTksIGxpbWl0LTIwLCBsaW1pdC0yMSwg
bGltaXQtMjIsIGxpbWl0LTIzLCBsaW1pdC0yNCwgbGltaXQtMjUpOwotICAgIENIRUNLKGEgPT0g
Yik7Ci19Ci0KLWludCBmdW5jdGlvbldpdGhIZWxsYUFyZ3VtZW50czMoaW50IGFyZzAsaW50IGFy
ZzEsaW50IGFyZzIsaW50IGFyZzMsaW50IGFyZzQsaW50IGFyZzUsaW50IGFyZzYsaW50IGFyZzcs
aW50IGFyZzgsaW50IGFyZzksaW50IGFyZzEwLGludCBhcmcxMSxpbnQgYXJnMTIsaW50IGFyZzEz
LGludCBhcmcxNCxpbnQgYXJnMTUsaW50IGFyZzE2LGludCBhcmcxNyxpbnQgYXJnMTgsaW50IGFy
ZzE5LGludCBhcmcyMCxpbnQgYXJnMjEsaW50IGFyZzIyLGludCBhcmcyMyxpbnQgYXJnMjQsaW50
IGFyZzI1LGludCBhcmcyNixpbnQgYXJnMjcsaW50IGFyZzI4LGludCBhcmcyOSxpbnQgYXJnMzAs
aW50IGFyZzMxLGludCBhcmczMixpbnQgYXJnMzMsaW50IGFyZzM0LGludCBhcmczNSxpbnQgYXJn
MzYsaW50IGFyZzM3LGludCBhcmczOCxpbnQgYXJnMzksaW50IGFyZzQwLGludCBhcmc0MSxpbnQg
YXJnNDIsaW50IGFyZzQzLGludCBhcmc0NCxpbnQgYXJnNDUsaW50IGFyZzQ2LGludCBhcmc0Nyxp
bnQgYXJnNDgsaW50IGFyZzQ5LGludCBhcmc1MCxpbnQgYXJnNTEsaW50IGFyZzUyLGludCBhcmc1
MyxpbnQgYXJnNTQsaW50IGFyZzU1LGludCBhcmc1NixpbnQgYXJnNTcsaW50IGFyZzU4LGludCBh
cmc1OSxpbnQgYXJnNjAsaW50IGFyZzYxLGludCBhcmc2MixpbnQgYXJnNjMsaW50IGFyZzY0LGlu
dCBhcmc2NSxpbnQgYXJnNjYsaW50IGFyZzY3LGludCBhcmc2OCxpbnQgYXJnNjksaW50IGFyZzcw
LGludCBhcmc3MSxpbnQgYXJnNzIsaW50IGFyZzczLGludCBhcmc3NCxpbnQgYXJnNzUsaW50IGFy
Zzc2LGludCBhcmc3NyxpbnQgYXJnNzgsaW50IGFyZzc5LGludCBhcmc4MCxpbnQgYXJnODEsaW50
IGFyZzgyLGludCBhcmc4MyxpbnQgYXJnODQsaW50IGFyZzg1LGludCBhcmc4NixpbnQgYXJnODcs
aW50IGFyZzg4LGludCBhcmc4OSxpbnQgYXJnOTAsaW50IGFyZzkxLGludCBhcmc5MixpbnQgYXJn
OTMsaW50IGFyZzk0LGludCBhcmc5NSxpbnQgYXJnOTYsaW50IGFyZzk3LGludCBhcmc5OCxpbnQg
YXJnOTksaW50IGFyZzEwMCxpbnQgYXJnMTAxLGludCBhcmcxMDIsaW50IGFyZzEwMyxpbnQgYXJn
MTA0LGludCBhcmcxMDUsaW50IGFyZzEwNixpbnQgYXJnMTA3LGludCBhcmcxMDgsaW50IGFyZzEw
OSxpbnQgYXJnMTEwLGludCBhcmcxMTEsaW50IGFyZzExMixpbnQgYXJnMTEzLGludCBhcmcxMTQs
aW50IGFyZzExNSxpbnQgYXJnMTE2LGludCBhcmcxMTcsaW50IGFyZzExOCxpbnQgYXJnMTE5LGlu
dCBhcmcxMjAsaW50IGFyZzEyMSxpbnQgYXJnMTIyLGludCBhcmcxMjMsaW50IGFyZzEyNCxpbnQg
YXJnMTI1LGludCBhcmcxMjYsaW50IGFyZzEyNyxpbnQgYXJnMTI4LGludCBhcmcxMjksaW50IGFy
ZzEzMCxpbnQgYXJnMTMxLGludCBhcmcxMzIsaW50IGFyZzEzMyxpbnQgYXJnMTM0LGludCBhcmcx
MzUsaW50IGFyZzEzNixpbnQgYXJnMTM3LGludCBhcmcxMzgsaW50IGFyZzEzOSxpbnQgYXJnMTQw
LGludCBhcmcxNDEsaW50IGFyZzE0MixpbnQgYXJnMTQzLGludCBhcmcxNDQsaW50IGFyZzE0NSxp
bnQgYXJnMTQ2LGludCBhcmcxNDcsaW50IGFyZzE0OCxpbnQgYXJnMTQ5LGludCBhcmcxNTAsaW50
IGFyZzE1MSxpbnQgYXJnMTUyLGludCBhcmcxNTMsaW50IGFyZzE1NCxpbnQgYXJnMTU1LGludCBh
cmcxNTYsaW50IGFyZzE1NyxpbnQgYXJnMTU4LGludCBhcmcxNTksaW50IGFyZzE2MCxpbnQgYXJn
MTYxLGludCBhcmcxNjIsaW50IGFyZzE2MyxpbnQgYXJnMTY0LGludCBhcmcxNjUsaW50IGFyZzE2
NixpbnQgYXJnMTY3LGludCBhcmcxNjgsaW50IGFyZzE2OSxpbnQgYXJnMTcwLGludCBhcmcxNzEs
aW50IGFyZzE3MixpbnQgYXJnMTczLGludCBhcmcxNzQsaW50IGFyZzE3NSxpbnQgYXJnMTc2LGlu
dCBhcmcxNzcsaW50IGFyZzE3OCxpbnQgYXJnMTc5LGludCBhcmcxODAsaW50IGFyZzE4MSxpbnQg
YXJnMTgyLGludCBhcmcxODMsaW50IGFyZzE4NCxpbnQgYXJnMTg1LGludCBhcmcxODYsaW50IGFy
ZzE4NyxpbnQgYXJnMTg4LGludCBhcmcxODksaW50IGFyZzE5MCxpbnQgYXJnMTkxLGludCBhcmcx
OTIsaW50IGFyZzE5MyxpbnQgYXJnMTk0LGludCBhcmcxOTUsaW50IGFyZzE5NixpbnQgYXJnMTk3
LGludCBhcmcxOTgsaW50IGFyZzE5OSxpbnQgYXJnMjAwLGludCBhcmcyMDEsaW50IGFyZzIwMixp
bnQgYXJnMjAzLGludCBhcmcyMDQsaW50IGFyZzIwNSxpbnQgYXJnMjA2LGludCBhcmcyMDcsaW50
IGFyZzIwOCxpbnQgYXJnMjA5LGludCBhcmcyMTAsaW50IGFyZzIxMSxpbnQgYXJnMjEyLGludCBh
cmcyMTMsaW50IGFyZzIxNCxpbnQgYXJnMjE1LGludCBhcmcyMTYsaW50IGFyZzIxNyxpbnQgYXJn
MjE4LGludCBhcmcyMTksaW50IGFyZzIyMCxpbnQgYXJnMjIxLGludCBhcmcyMjIsaW50IGFyZzIy
MyxpbnQgYXJnMjI0LGludCBhcmcyMjUsaW50IGFyZzIyNixpbnQgYXJnMjI3LGludCBhcmcyMjgs
aW50IGFyZzIyOSxpbnQgYXJnMjMwLGludCBhcmcyMzEsaW50IGFyZzIzMixpbnQgYXJnMjMzLGlu
dCBhcmcyMzQsaW50IGFyZzIzNSxpbnQgYXJnMjM2LGludCBhcmcyMzcsaW50IGFyZzIzOCxpbnQg
YXJnMjM5LGludCBhcmcyNDAsaW50IGFyZzI0MSxpbnQgYXJnMjQyLGludCBhcmcyNDMsaW50IGFy
ZzI0NCxpbnQgYXJnMjQ1LGludCBhcmcyNDYsaW50IGFyZzI0NyxpbnQgYXJnMjQ4LGludCBhcmcy
NDksaW50IGFyZzI1MCxpbnQgYXJnMjUxLGludCBhcmcyNTIsaW50IGFyZzI1MyxpbnQgYXJnMjU0
LGludCBhcmcyNTUsaW50IGFyZzI1NixpbnQgYXJnMjU3LGludCBhcmcyNTgsaW50IGFyZzI1OSxp
bnQgYXJnMjYwLGludCBhcmcyNjEsaW50IGFyZzI2MixpbnQgYXJnMjYzLGludCBhcmcyNjQsaW50
IGFyZzI2NSxpbnQgYXJnMjY2LGludCBhcmcyNjcsaW50IGFyZzI2OCxpbnQgYXJnMjY5LGludCBh
cmcyNzAsaW50IGFyZzI3MSxpbnQgYXJnMjcyLGludCBhcmcyNzMsaW50IGFyZzI3NCxpbnQgYXJn
Mjc1LGludCBhcmcyNzYsaW50IGFyZzI3NyxpbnQgYXJnMjc4LGludCBhcmcyNzksaW50IGFyZzI4
MCxpbnQgYXJnMjgxLGludCBhcmcyODIsaW50IGFyZzI4MyxpbnQgYXJnMjg0LGludCBhcmcyODUs
aW50IGFyZzI4NixpbnQgYXJnMjg3LGludCBhcmcyODgsaW50IGFyZzI4OSxpbnQgYXJnMjkwLGlu
dCBhcmcyOTEsaW50IGFyZzI5MixpbnQgYXJnMjkzLGludCBhcmcyOTQsaW50IGFyZzI5NSxpbnQg
YXJnMjk2LGludCBhcmcyOTcsaW50IGFyZzI5OCxpbnQgYXJnMjk5LGludCBhcmczMDAsaW50IGFy
ZzMwMSxpbnQgYXJnMzAyLGludCBhcmczMDMsaW50IGFyZzMwNCxpbnQgYXJnMzA1LGludCBhcmcz
MDYsaW50IGFyZzMwNyxpbnQgYXJnMzA4LGludCBhcmczMDksaW50IGFyZzMxMCxpbnQgYXJnMzEx
LGludCBhcmczMTIsaW50IGFyZzMxMyxpbnQgYXJnMzE0LGludCBhcmczMTUsaW50IGFyZzMxNixp
bnQgYXJnMzE3LGludCBhcmczMTgsaW50IGFyZzMxOSxpbnQgYXJnMzIwLGludCBhcmczMjEsaW50
IGFyZzMyMixpbnQgYXJnMzIzLGludCBhcmczMjQsaW50IGFyZzMyNSxpbnQgYXJnMzI2LGludCBh
cmczMjcsaW50IGFyZzMyOCxpbnQgYXJnMzI5LGludCBhcmczMzAsaW50IGFyZzMzMSxpbnQgYXJn
MzMyLGludCBhcmczMzMsaW50IGFyZzMzNCxpbnQgYXJnMzM1LGludCBhcmczMzYsaW50IGFyZzMz
NyxpbnQgYXJnMzM4LGludCBhcmczMzksaW50IGFyZzM0MCxpbnQgYXJnMzQxLGludCBhcmczNDIs
aW50IGFyZzM0MyxpbnQgYXJnMzQ0LGludCBhcmczNDUsaW50IGFyZzM0NixpbnQgYXJnMzQ3LGlu
dCBhcmczNDgsaW50IGFyZzM0OSxpbnQgYXJnMzUwLGludCBhcmczNTEsaW50IGFyZzM1MixpbnQg
YXJnMzUzLGludCBhcmczNTQsaW50IGFyZzM1NSxpbnQgYXJnMzU2LGludCBhcmczNTcsaW50IGFy
ZzM1OCxpbnQgYXJnMzU5LGludCBhcmczNjAsaW50IGFyZzM2MSxpbnQgYXJnMzYyLGludCBhcmcz
NjMsaW50IGFyZzM2NCxpbnQgYXJnMzY1LGludCBhcmczNjYsaW50IGFyZzM2NyxpbnQgYXJnMzY4
LGludCBhcmczNjksaW50IGFyZzM3MCxpbnQgYXJnMzcxLGludCBhcmczNzIsaW50IGFyZzM3Myxp
bnQgYXJnMzc0LGludCBhcmczNzUsaW50IGFyZzM3NixpbnQgYXJnMzc3LGludCBhcmczNzgsaW50
IGFyZzM3OSxpbnQgYXJnMzgwLGludCBhcmczODEsaW50IGFyZzM4MixpbnQgYXJnMzgzLGludCBh
cmczODQsaW50IGFyZzM4NSxpbnQgYXJnMzg2LGludCBhcmczODcsaW50IGFyZzM4OCxpbnQgYXJn
Mzg5LGludCBhcmczOTAsaW50IGFyZzM5MSxpbnQgYXJnMzkyLGludCBhcmczOTMsaW50IGFyZzM5
NCxpbnQgYXJnMzk1LGludCBhcmczOTYsaW50IGFyZzM5NyxpbnQgYXJnMzk4LGludCBhcmczOTks
aW50IGFyZzQwMCxpbnQgYXJnNDAxLGludCBhcmc0MDIsaW50IGFyZzQwMyxpbnQgYXJnNDA0LGlu
dCBhcmc0MDUsaW50IGFyZzQwNixpbnQgYXJnNDA3LGludCBhcmc0MDgsaW50IGFyZzQwOSxpbnQg
YXJnNDEwLGludCBhcmc0MTEsaW50IGFyZzQxMixpbnQgYXJnNDEzLGludCBhcmc0MTQsaW50IGFy
ZzQxNSxpbnQgYXJnNDE2LGludCBhcmc0MTcsaW50IGFyZzQxOCxpbnQgYXJnNDE5LGludCBhcmc0
MjAsaW50IGFyZzQyMSxpbnQgYXJnNDIyLGludCBhcmc0MjMsaW50IGFyZzQyNCxpbnQgYXJnNDI1
LGludCBhcmc0MjYsaW50IGFyZzQyNyxpbnQgYXJnNDI4LGludCBhcmc0MjksaW50IGFyZzQzMCxp
bnQgYXJnNDMxLGludCBhcmc0MzIsaW50IGFyZzQzMyxpbnQgYXJnNDM0LGludCBhcmc0MzUsaW50
IGFyZzQzNixpbnQgYXJnNDM3LGludCBhcmc0MzgsaW50IGFyZzQzOSxpbnQgYXJnNDQwLGludCBh
cmc0NDEsaW50IGFyZzQ0MixpbnQgYXJnNDQzLGludCBhcmc0NDQsaW50IGFyZzQ0NSxpbnQgYXJn
NDQ2LGludCBhcmc0NDcsaW50IGFyZzQ0OCxpbnQgYXJnNDQ5LGludCBhcmc0NTAsaW50IGFyZzQ1
MSxpbnQgYXJnNDUyLGludCBhcmc0NTMsaW50IGFyZzQ1NCxpbnQgYXJnNDU1LGludCBhcmc0NTYs
aW50IGFyZzQ1NyxpbnQgYXJnNDU4LGludCBhcmc0NTksaW50IGFyZzQ2MCxpbnQgYXJnNDYxLGlu
dCBhcmc0NjIsaW50IGFyZzQ2MyxpbnQgYXJnNDY0LGludCBhcmc0NjUsaW50IGFyZzQ2NixpbnQg
YXJnNDY3LGludCBhcmc0NjgsaW50IGFyZzQ2OSxpbnQgYXJnNDcwLGludCBhcmc0NzEsaW50IGFy
ZzQ3MixpbnQgYXJnNDczLGludCBhcmc0NzQsaW50IGFyZzQ3NSxpbnQgYXJnNDc2LGludCBhcmc0
NzcsaW50IGFyZzQ3OCxpbnQgYXJnNDc5LGludCBhcmc0ODAsaW50IGFyZzQ4MSxpbnQgYXJnNDgy
LGludCBhcmc0ODMsaW50IGFyZzQ4NCxpbnQgYXJnNDg1LGludCBhcmc0ODYsaW50IGFyZzQ4Nyxp
bnQgYXJnNDg4LGludCBhcmc0ODksaW50IGFyZzQ5MCxpbnQgYXJnNDkxLGludCBhcmc0OTIsaW50
IGFyZzQ5MyxpbnQgYXJnNDk0LGludCBhcmc0OTUsaW50IGFyZzQ5NixpbnQgYXJnNDk3LGludCBh
cmc0OTgsaW50IGFyZzQ5OSxpbnQgYXJnNTAwLGludCBhcmc1MDEsaW50IGFyZzUwMixpbnQgYXJn
NTAzLGludCBhcmc1MDQsaW50IGFyZzUwNSxpbnQgYXJnNTA2LGludCBhcmc1MDcsaW50IGFyZzUw
OCxpbnQgYXJnNTA5LGludCBhcmc1MTAsaW50IGFyZzUxMSxpbnQgYXJnNTEyLGludCBhcmc1MTMs
aW50IGFyZzUxNCxpbnQgYXJnNTE1LGludCBhcmc1MTYsaW50IGFyZzUxNyxpbnQgYXJnNTE4LGlu
dCBhcmc1MTksaW50IGFyZzUyMCxpbnQgYXJnNTIxLGludCBhcmc1MjIsaW50IGFyZzUyMyxpbnQg
YXJnNTI0LGludCBhcmc1MjUsaW50IGFyZzUyNixpbnQgYXJnNTI3LGludCBhcmc1MjgsaW50IGFy
ZzUyOSxpbnQgYXJnNTMwLGludCBhcmc1MzEsaW50IGFyZzUzMixpbnQgYXJnNTMzLGludCBhcmc1
MzQsaW50IGFyZzUzNSxpbnQgYXJnNTM2LGludCBhcmc1MzcsaW50IGFyZzUzOCxpbnQgYXJnNTM5
LGludCBhcmc1NDAsaW50IGFyZzU0MSxpbnQgYXJnNTQyLGludCBhcmc1NDMsaW50IGFyZzU0NCxp
bnQgYXJnNTQ1LGludCBhcmc1NDYsaW50IGFyZzU0NyxpbnQgYXJnNTQ4LGludCBhcmc1NDksaW50
IGFyZzU1MCxpbnQgYXJnNTUxLGludCBhcmc1NTIsaW50IGFyZzU1MyxpbnQgYXJnNTU0LGludCBh
cmc1NTUsaW50IGFyZzU1NixpbnQgYXJnNTU3LGludCBhcmc1NTgsaW50IGFyZzU1OSxpbnQgYXJn
NTYwLGludCBhcmc1NjEsaW50IGFyZzU2MixpbnQgYXJnNTYzLGludCBhcmc1NjQsaW50IGFyZzU2
NSxpbnQgYXJnNTY2LGludCBhcmc1NjcsaW50IGFyZzU2OCxpbnQgYXJnNTY5LGludCBhcmc1NzAs
aW50IGFyZzU3MSxpbnQgYXJnNTcyLGludCBhcmc1NzMsaW50IGFyZzU3NCxpbnQgYXJnNTc1LGlu
dCBhcmc1NzYsaW50IGFyZzU3NyxpbnQgYXJnNTc4LGludCBhcmc1NzksaW50IGFyZzU4MCxpbnQg
YXJnNTgxLGludCBhcmc1ODIsaW50IGFyZzU4MyxpbnQgYXJnNTg0LGludCBhcmc1ODUsaW50IGFy
ZzU4NixpbnQgYXJnNTg3LGludCBhcmc1ODgsaW50IGFyZzU4OSxpbnQgYXJnNTkwLGludCBhcmc1
OTEsaW50IGFyZzU5MixpbnQgYXJnNTkzLGludCBhcmc1OTQsaW50IGFyZzU5NSxpbnQgYXJnNTk2
LGludCBhcmc1OTcsaW50IGFyZzU5OCxpbnQgYXJnNTk5LGludCBhcmc2MDAsaW50IGFyZzYwMSxp
bnQgYXJnNjAyLGludCBhcmc2MDMsaW50IGFyZzYwNCxpbnQgYXJnNjA1LGludCBhcmc2MDYsaW50
IGFyZzYwNyxpbnQgYXJnNjA4LGludCBhcmc2MDksaW50IGFyZzYxMCxpbnQgYXJnNjExLGludCBh
cmc2MTIsaW50IGFyZzYxMyxpbnQgYXJnNjE0LGludCBhcmc2MTUsaW50IGFyZzYxNixpbnQgYXJn
NjE3LGludCBhcmc2MTgsaW50IGFyZzYxOSxpbnQgYXJnNjIwLGludCBhcmc2MjEsaW50IGFyZzYy
MixpbnQgYXJnNjIzLGludCBhcmc2MjQsaW50IGFyZzYyNSxpbnQgYXJnNjI2LGludCBhcmc2Mjcs
aW50IGFyZzYyOCxpbnQgYXJnNjI5LGludCBhcmc2MzAsaW50IGFyZzYzMSxpbnQgYXJnNjMyLGlu
dCBhcmc2MzMsaW50IGFyZzYzNCxpbnQgYXJnNjM1LGludCBhcmc2MzYsaW50IGFyZzYzNyxpbnQg
YXJnNjM4LGludCBhcmc2MzksaW50IGFyZzY0MCxpbnQgYXJnNjQxLGludCBhcmc2NDIsaW50IGFy
ZzY0MyxpbnQgYXJnNjQ0LGludCBhcmc2NDUsaW50IGFyZzY0NixpbnQgYXJnNjQ3LGludCBhcmc2
NDgsaW50IGFyZzY0OSxpbnQgYXJnNjUwLGludCBhcmc2NTEsaW50IGFyZzY1MixpbnQgYXJnNjUz
LGludCBhcmc2NTQsaW50IGFyZzY1NSxpbnQgYXJnNjU2LGludCBhcmc2NTcsaW50IGFyZzY1OCxp
bnQgYXJnNjU5LGludCBhcmc2NjAsaW50IGFyZzY2MSxpbnQgYXJnNjYyLGludCBhcmc2NjMsaW50
IGFyZzY2NCxpbnQgYXJnNjY1LGludCBhcmc2NjYsaW50IGFyZzY2NyxpbnQgYXJnNjY4LGludCBh
cmc2NjksaW50IGFyZzY3MCxpbnQgYXJnNjcxLGludCBhcmc2NzIsaW50IGFyZzY3MyxpbnQgYXJn
Njc0LGludCBhcmc2NzUsaW50IGFyZzY3NixpbnQgYXJnNjc3LGludCBhcmc2NzgsaW50IGFyZzY3
OSxpbnQgYXJnNjgwLGludCBhcmc2ODEsaW50IGFyZzY4MixpbnQgYXJnNjgzLGludCBhcmc2ODQs
aW50IGFyZzY4NSxpbnQgYXJnNjg2LGludCBhcmc2ODcsaW50IGFyZzY4OCxpbnQgYXJnNjg5LGlu
dCBhcmc2OTAsaW50IGFyZzY5MSxpbnQgYXJnNjkyLGludCBhcmc2OTMsaW50IGFyZzY5NCxpbnQg
YXJnNjk1LGludCBhcmc2OTYsaW50IGFyZzY5NyxpbnQgYXJnNjk4LGludCBhcmc2OTksaW50IGFy
ZzcwMCxpbnQgYXJnNzAxLGludCBhcmc3MDIsaW50IGFyZzcwMyxpbnQgYXJnNzA0LGludCBhcmc3
MDUsaW50IGFyZzcwNixpbnQgYXJnNzA3LGludCBhcmc3MDgsaW50IGFyZzcwOSxpbnQgYXJnNzEw
LGludCBhcmc3MTEsaW50IGFyZzcxMixpbnQgYXJnNzEzLGludCBhcmc3MTQsaW50IGFyZzcxNSxp
bnQgYXJnNzE2LGludCBhcmc3MTcsaW50IGFyZzcxOCxpbnQgYXJnNzE5LGludCBhcmc3MjAsaW50
IGFyZzcyMSxpbnQgYXJnNzIyLGludCBhcmc3MjMsaW50IGFyZzcyNCxpbnQgYXJnNzI1LGludCBh
cmc3MjYsaW50IGFyZzcyNyxpbnQgYXJnNzI4LGludCBhcmc3MjksaW50IGFyZzczMCxpbnQgYXJn
NzMxLGludCBhcmc3MzIsaW50IGFyZzczMyxpbnQgYXJnNzM0LGludCBhcmc3MzUsaW50IGFyZzcz
NixpbnQgYXJnNzM3LGludCBhcmc3MzgsaW50IGFyZzczOSxpbnQgYXJnNzQwLGludCBhcmc3NDEs
aW50IGFyZzc0MixpbnQgYXJnNzQzLGludCBhcmc3NDQsaW50IGFyZzc0NSxpbnQgYXJnNzQ2LGlu
dCBhcmc3NDcsaW50IGFyZzc0OCxpbnQgYXJnNzQ5LGludCBhcmc3NTAsaW50IGFyZzc1MSxpbnQg
YXJnNzUyLGludCBhcmc3NTMsaW50IGFyZzc1NCxpbnQgYXJnNzU1LGludCBhcmc3NTYsaW50IGFy
Zzc1NyxpbnQgYXJnNzU4LGludCBhcmc3NTksaW50IGFyZzc2MCxpbnQgYXJnNzYxLGludCBhcmc3
NjIsaW50IGFyZzc2MyxpbnQgYXJnNzY0LGludCBhcmc3NjUsaW50IGFyZzc2NixpbnQgYXJnNzY3
LGludCBhcmc3NjgsaW50IGFyZzc2OSxpbnQgYXJnNzcwLGludCBhcmc3NzEsaW50IGFyZzc3Mixp
bnQgYXJnNzczLGludCBhcmc3NzQsaW50IGFyZzc3NSxpbnQgYXJnNzc2LGludCBhcmc3NzcsaW50
IGFyZzc3OCxpbnQgYXJnNzc5LGludCBhcmc3ODAsaW50IGFyZzc4MSxpbnQgYXJnNzgyLGludCBh
cmc3ODMsaW50IGFyZzc4NCxpbnQgYXJnNzg1LGludCBhcmc3ODYsaW50IGFyZzc4NyxpbnQgYXJn
Nzg4LGludCBhcmc3ODksaW50IGFyZzc5MCxpbnQgYXJnNzkxLGludCBhcmc3OTIsaW50IGFyZzc5
MyxpbnQgYXJnNzk0LGludCBhcmc3OTUsaW50IGFyZzc5NixpbnQgYXJnNzk3LGludCBhcmc3OTgs
aW50IGFyZzc5OSxpbnQgYXJnODAwLGludCBhcmc4MDEsaW50IGFyZzgwMixpbnQgYXJnODAzLGlu
dCBhcmc4MDQsaW50IGFyZzgwNSxpbnQgYXJnODA2LGludCBhcmc4MDcsaW50IGFyZzgwOCxpbnQg
YXJnODA5LGludCBhcmc4MTAsaW50IGFyZzgxMSxpbnQgYXJnODEyLGludCBhcmc4MTMsaW50IGFy
ZzgxNCxpbnQgYXJnODE1LGludCBhcmc4MTYsaW50IGFyZzgxNyxpbnQgYXJnODE4LGludCBhcmc4
MTksaW50IGFyZzgyMCxpbnQgYXJnODIxLGludCBhcmc4MjIsaW50IGFyZzgyMyxpbnQgYXJnODI0
LGludCBhcmc4MjUsaW50IGFyZzgyNixpbnQgYXJnODI3LGludCBhcmc4MjgsaW50IGFyZzgyOSxp
bnQgYXJnODMwLGludCBhcmc4MzEsaW50IGFyZzgzMixpbnQgYXJnODMzLGludCBhcmc4MzQsaW50
IGFyZzgzNSxpbnQgYXJnODM2LGludCBhcmc4MzcsaW50IGFyZzgzOCxpbnQgYXJnODM5LGludCBh
cmc4NDAsaW50IGFyZzg0MSxpbnQgYXJnODQyLGludCBhcmc4NDMsaW50IGFyZzg0NCxpbnQgYXJn
ODQ1LGludCBhcmc4NDYsaW50IGFyZzg0NyxpbnQgYXJnODQ4LGludCBhcmc4NDksaW50IGFyZzg1
MCxpbnQgYXJnODUxLGludCBhcmc4NTIsaW50IGFyZzg1MyxpbnQgYXJnODU0LGludCBhcmc4NTUs
aW50IGFyZzg1NixpbnQgYXJnODU3LGludCBhcmc4NTgsaW50IGFyZzg1OSxpbnQgYXJnODYwLGlu
dCBhcmc4NjEsaW50IGFyZzg2MixpbnQgYXJnODYzLGludCBhcmc4NjQsaW50IGFyZzg2NSxpbnQg
YXJnODY2LGludCBhcmc4NjcsaW50IGFyZzg2OCxpbnQgYXJnODY5LGludCBhcmc4NzAsaW50IGFy
Zzg3MSxpbnQgYXJnODcyLGludCBhcmc4NzMsaW50IGFyZzg3NCxpbnQgYXJnODc1LGludCBhcmc4
NzYsaW50IGFyZzg3NyxpbnQgYXJnODc4LGludCBhcmc4NzksaW50IGFyZzg4MCxpbnQgYXJnODgx
LGludCBhcmc4ODIsaW50IGFyZzg4MyxpbnQgYXJnODg0LGludCBhcmc4ODUsaW50IGFyZzg4Nixp
bnQgYXJnODg3LGludCBhcmc4ODgsaW50IGFyZzg4OSxpbnQgYXJnODkwLGludCBhcmc4OTEsaW50
IGFyZzg5MixpbnQgYXJnODkzLGludCBhcmc4OTQsaW50IGFyZzg5NSxpbnQgYXJnODk2LGludCBh
cmc4OTcsaW50IGFyZzg5OCxpbnQgYXJnODk5LGludCBhcmc5MDAsaW50IGFyZzkwMSxpbnQgYXJn
OTAyLGludCBhcmc5MDMsaW50IGFyZzkwNCxpbnQgYXJnOTA1LGludCBhcmc5MDYsaW50IGFyZzkw
NyxpbnQgYXJnOTA4LGludCBhcmc5MDksaW50IGFyZzkxMCxpbnQgYXJnOTExLGludCBhcmc5MTIs
aW50IGFyZzkxMyxpbnQgYXJnOTE0LGludCBhcmc5MTUsaW50IGFyZzkxNixpbnQgYXJnOTE3LGlu
dCBhcmc5MTgsaW50IGFyZzkxOSxpbnQgYXJnOTIwLGludCBhcmc5MjEsaW50IGFyZzkyMixpbnQg
YXJnOTIzLGludCBhcmc5MjQsaW50IGFyZzkyNSxpbnQgYXJnOTI2LGludCBhcmc5MjcsaW50IGFy
ZzkyOCxpbnQgYXJnOTI5LGludCBhcmc5MzAsaW50IGFyZzkzMSxpbnQgYXJnOTMyLGludCBhcmc5
MzMsaW50IGFyZzkzNCxpbnQgYXJnOTM1LGludCBhcmc5MzYsaW50IGFyZzkzNyxpbnQgYXJnOTM4
LGludCBhcmc5MzksaW50IGFyZzk0MCxpbnQgYXJnOTQxLGludCBhcmc5NDIsaW50IGFyZzk0Myxp
bnQgYXJnOTQ0LGludCBhcmc5NDUsaW50IGFyZzk0NixpbnQgYXJnOTQ3LGludCBhcmc5NDgsaW50
IGFyZzk0OSxpbnQgYXJnOTUwLGludCBhcmc5NTEsaW50IGFyZzk1MixpbnQgYXJnOTUzLGludCBh
cmc5NTQsaW50IGFyZzk1NSxpbnQgYXJnOTU2LGludCBhcmc5NTcsaW50IGFyZzk1OCxpbnQgYXJn
OTU5LGludCBhcmc5NjAsaW50IGFyZzk2MSxpbnQgYXJnOTYyLGludCBhcmc5NjMsaW50IGFyZzk2
NCxpbnQgYXJnOTY1LGludCBhcmc5NjYsaW50IGFyZzk2NyxpbnQgYXJnOTY4LGludCBhcmc5Njks
aW50IGFyZzk3MCxpbnQgYXJnOTcxLGludCBhcmc5NzIsaW50IGFyZzk3MyxpbnQgYXJnOTc0LGlu
dCBhcmc5NzUsaW50IGFyZzk3NixpbnQgYXJnOTc3LGludCBhcmc5NzgsaW50IGFyZzk3OSxpbnQg
YXJnOTgwLGludCBhcmc5ODEsaW50IGFyZzk4MixpbnQgYXJnOTgzLGludCBhcmc5ODQsaW50IGFy
Zzk4NSxpbnQgYXJnOTg2LGludCBhcmc5ODcsaW50IGFyZzk4OCxpbnQgYXJnOTg5LGludCBhcmc5
OTAsaW50IGFyZzk5MSxpbnQgYXJnOTkyLGludCBhcmc5OTMsaW50IGFyZzk5NCxpbnQgYXJnOTk1
LGludCBhcmc5OTYsaW50IGFyZzk5NyxpbnQgYXJnOTk4LGludCBhcmc5OTksaW50IGFyZzEwMDAs
aW50IGFyZzEwMDEsaW50IGFyZzEwMDIsaW50IGFyZzEwMDMsaW50IGFyZzEwMDQsaW50IGFyZzEw
MDUsaW50IGFyZzEwMDYsaW50IGFyZzEwMDcsaW50IGFyZzEwMDgsaW50IGFyZzEwMDksaW50IGFy
ZzEwMTAsaW50IGFyZzEwMTEsaW50IGFyZzEwMTIsaW50IGFyZzEwMTMsaW50IGFyZzEwMTQsaW50
IGFyZzEwMTUsaW50IGFyZzEwMTYsaW50IGFyZzEwMTcsaW50IGFyZzEwMTgsaW50IGFyZzEwMTks
aW50IGFyZzEwMjAsaW50IGFyZzEwMjEsaW50IGFyZzEwMjIsaW50IGFyZzEwMjMsaW50IGFyZzEw
MjQsaW50IGFyZzEwMjUsaW50IGFyZzEwMjYsaW50IGFyZzEwMjcsaW50IGFyZzEwMjgsaW50IGFy
ZzEwMjksaW50IGFyZzEwMzAsaW50IGFyZzEwMzEsaW50IGFyZzEwMzIsaW50IGFyZzEwMzMsaW50
IGFyZzEwMzQsaW50IGFyZzEwMzUsaW50IGFyZzEwMzYsaW50IGFyZzEwMzcsaW50IGFyZzEwMzgs
aW50IGFyZzEwMzksaW50IGFyZzEwNDAsaW50IGFyZzEwNDEsaW50IGFyZzEwNDIsaW50IGFyZzEw
NDMsaW50IGFyZzEwNDQsaW50IGFyZzEwNDUsaW50IGFyZzEwNDYsaW50IGFyZzEwNDcsaW50IGFy
ZzEwNDgsaW50IGFyZzEwNDksaW50IGFyZzEwNTAsaW50IGFyZzEwNTEsaW50IGFyZzEwNTIsaW50
IGFyZzEwNTMsaW50IGFyZzEwNTQsaW50IGFyZzEwNTUsaW50IGFyZzEwNTYsaW50IGFyZzEwNTcs
aW50IGFyZzEwNTgsaW50IGFyZzEwNTksaW50IGFyZzEwNjAsaW50IGFyZzEwNjEsaW50IGFyZzEw
NjIsaW50IGFyZzEwNjMsaW50IGFyZzEwNjQsaW50IGFyZzEwNjUsaW50IGFyZzEwNjYsaW50IGFy
ZzEwNjcsaW50IGFyZzEwNjgsaW50IGFyZzEwNjksaW50IGFyZzEwNzAsaW50IGFyZzEwNzEsaW50
IGFyZzEwNzIsaW50IGFyZzEwNzMsaW50IGFyZzEwNzQsaW50IGFyZzEwNzUsaW50IGFyZzEwNzYs
aW50IGFyZzEwNzcsaW50IGFyZzEwNzgsaW50IGFyZzEwNzksaW50IGFyZzEwODAsaW50IGFyZzEw
ODEsaW50IGFyZzEwODIsaW50IGFyZzEwODMsaW50IGFyZzEwODQsaW50IGFyZzEwODUsaW50IGFy
ZzEwODYsaW50IGFyZzEwODcsaW50IGFyZzEwODgsaW50IGFyZzEwODksaW50IGFyZzEwOTAsaW50
IGFyZzEwOTEsaW50IGFyZzEwOTIsaW50IGFyZzEwOTMsaW50IGFyZzEwOTQsaW50IGFyZzEwOTUs
aW50IGFyZzEwOTYsaW50IGFyZzEwOTcsaW50IGFyZzEwOTgsaW50IGFyZzEwOTksaW50IGFyZzEx
MDAsaW50IGFyZzExMDEsaW50IGFyZzExMDIsaW50IGFyZzExMDMsaW50IGFyZzExMDQsaW50IGFy
ZzExMDUsaW50IGFyZzExMDYsaW50IGFyZzExMDcsaW50IGFyZzExMDgsaW50IGFyZzExMDksaW50
IGFyZzExMTAsaW50IGFyZzExMTEsaW50IGFyZzExMTIsaW50IGFyZzExMTMsaW50IGFyZzExMTQs
aW50IGFyZzExMTUsaW50IGFyZzExMTYsaW50IGFyZzExMTcsaW50IGFyZzExMTgsaW50IGFyZzEx
MTksaW50IGFyZzExMjAsaW50IGFyZzExMjEsaW50IGFyZzExMjIsaW50IGFyZzExMjMsaW50IGFy
ZzExMjQsaW50IGFyZzExMjUsaW50IGFyZzExMjYsaW50IGFyZzExMjcsaW50IGFyZzExMjgsaW50
IGFyZzExMjksaW50IGFyZzExMzAsaW50IGFyZzExMzEsaW50IGFyZzExMzIsaW50IGFyZzExMzMs
aW50IGFyZzExMzQsaW50IGFyZzExMzUsaW50IGFyZzExMzYsaW50IGFyZzExMzcsaW50IGFyZzEx
MzgsaW50IGFyZzExMzksaW50IGFyZzExNDAsaW50IGFyZzExNDEsaW50IGFyZzExNDIsaW50IGFy
ZzExNDMsaW50IGFyZzExNDQsaW50IGFyZzExNDUsaW50IGFyZzExNDYsaW50IGFyZzExNDcsaW50
IGFyZzExNDgsaW50IGFyZzExNDksaW50IGFyZzExNTAsaW50IGFyZzExNTEsaW50IGFyZzExNTIs
aW50IGFyZzExNTMsaW50IGFyZzExNTQsaW50IGFyZzExNTUsaW50IGFyZzExNTYsaW50IGFyZzEx
NTcsaW50IGFyZzExNTgsaW50IGFyZzExNTksaW50IGFyZzExNjAsaW50IGFyZzExNjEsaW50IGFy
ZzExNjIsaW50IGFyZzExNjMsaW50IGFyZzExNjQsaW50IGFyZzExNjUsaW50IGFyZzExNjYsaW50
IGFyZzExNjcsaW50IGFyZzExNjgsaW50IGFyZzExNjksaW50IGFyZzExNzAsaW50IGFyZzExNzEs
aW50IGFyZzExNzIsaW50IGFyZzExNzMsaW50IGFyZzExNzQsaW50IGFyZzExNzUsaW50IGFyZzEx
NzYsaW50IGFyZzExNzcsaW50IGFyZzExNzgsaW50IGFyZzExNzksaW50IGFyZzExODAsaW50IGFy
ZzExODEsaW50IGFyZzExODIsaW50IGFyZzExODMsaW50IGFyZzExODQsaW50IGFyZzExODUsaW50
IGFyZzExODYsaW50IGFyZzExODcsaW50IGFyZzExODgsaW50IGFyZzExODksaW50IGFyZzExOTAs
aW50IGFyZzExOTEsaW50IGFyZzExOTIsaW50IGFyZzExOTMsaW50IGFyZzExOTQsaW50IGFyZzEx
OTUsaW50IGFyZzExOTYsaW50IGFyZzExOTcsaW50IGFyZzExOTgsaW50IGFyZzExOTksaW50IGFy
ZzEyMDAsaW50IGFyZzEyMDEsaW50IGFyZzEyMDIsaW50IGFyZzEyMDMsaW50IGFyZzEyMDQsaW50
IGFyZzEyMDUsaW50IGFyZzEyMDYsaW50IGFyZzEyMDcsaW50IGFyZzEyMDgsaW50IGFyZzEyMDks
aW50IGFyZzEyMTAsaW50IGFyZzEyMTEsaW50IGFyZzEyMTIsaW50IGFyZzEyMTMsaW50IGFyZzEy
MTQsaW50IGFyZzEyMTUsaW50IGFyZzEyMTYsaW50IGFyZzEyMTcsaW50IGFyZzEyMTgsaW50IGFy
ZzEyMTksaW50IGFyZzEyMjAsaW50IGFyZzEyMjEsaW50IGFyZzEyMjIsaW50IGFyZzEyMjMsaW50
IGFyZzEyMjQsaW50IGFyZzEyMjUsaW50IGFyZzEyMjYsaW50IGFyZzEyMjcsaW50IGFyZzEyMjgs
aW50IGFyZzEyMjksaW50IGFyZzEyMzAsaW50IGFyZzEyMzEsaW50IGFyZzEyMzIsaW50IGFyZzEy
MzMsaW50IGFyZzEyMzQsaW50IGFyZzEyMzUsaW50IGFyZzEyMzYsaW50IGFyZzEyMzcsaW50IGFy
ZzEyMzgsaW50IGFyZzEyMzksaW50IGFyZzEyNDAsaW50IGFyZzEyNDEsaW50IGFyZzEyNDIsaW50
IGFyZzEyNDMsaW50IGFyZzEyNDQsaW50IGFyZzEyNDUsaW50IGFyZzEyNDYsaW50IGFyZzEyNDcs
aW50IGFyZzEyNDgsaW50IGFyZzEyNDksaW50IGFyZzEyNTAsaW50IGFyZzEyNTEsaW50IGFyZzEy
NTIsaW50IGFyZzEyNTMsaW50IGFyZzEyNTQsaW50IGFyZzEyNTUsaW50IGFyZzEyNTYsaW50IGFy
ZzEyNTcsaW50IGFyZzEyNTgsaW50IGFyZzEyNTksaW50IGFyZzEyNjAsaW50IGFyZzEyNjEsaW50
IGFyZzEyNjIsaW50IGFyZzEyNjMsaW50IGFyZzEyNjQsaW50IGFyZzEyNjUsaW50IGFyZzEyNjYs
aW50IGFyZzEyNjcsaW50IGFyZzEyNjgsaW50IGFyZzEyNjksaW50IGFyZzEyNzAsaW50IGFyZzEy
NzEsaW50IGFyZzEyNzIsaW50IGFyZzEyNzMsaW50IGFyZzEyNzQsaW50IGFyZzEyNzUsaW50IGFy
ZzEyNzYsaW50IGFyZzEyNzcsaW50IGFyZzEyNzgsaW50IGFyZzEyNzksaW50IGFyZzEyODAsaW50
IGFyZzEyODEsaW50IGFyZzEyODIsaW50IGFyZzEyODMsaW50IGFyZzEyODQsaW50IGFyZzEyODUs
aW50IGFyZzEyODYsaW50IGFyZzEyODcsaW50IGFyZzEyODgsaW50IGFyZzEyODksaW50IGFyZzEy
OTAsaW50IGFyZzEyOTEsaW50IGFyZzEyOTIsaW50IGFyZzEyOTMsaW50IGFyZzEyOTQsaW50IGFy
ZzEyOTUsaW50IGFyZzEyOTYsaW50IGFyZzEyOTcsaW50IGFyZzEyOTgsaW50IGFyZzEyOTksaW50
IGFyZzEzMDAsaW50IGFyZzEzMDEsaW50IGFyZzEzMDIsaW50IGFyZzEzMDMsaW50IGFyZzEzMDQs
aW50IGFyZzEzMDUsaW50IGFyZzEzMDYsaW50IGFyZzEzMDcsaW50IGFyZzEzMDgsaW50IGFyZzEz
MDksaW50IGFyZzEzMTAsaW50IGFyZzEzMTEsaW50IGFyZzEzMTIsaW50IGFyZzEzMTMsaW50IGFy
ZzEzMTQsaW50IGFyZzEzMTUsaW50IGFyZzEzMTYsaW50IGFyZzEzMTcsaW50IGFyZzEzMTgsaW50
IGFyZzEzMTksaW50IGFyZzEzMjAsaW50IGFyZzEzMjEsaW50IGFyZzEzMjIsaW50IGFyZzEzMjMs
aW50IGFyZzEzMjQsaW50IGFyZzEzMjUsaW50IGFyZzEzMjYsaW50IGFyZzEzMjcsaW50IGFyZzEz
MjgsaW50IGFyZzEzMjksaW50IGFyZzEzMzAsaW50IGFyZzEzMzEsaW50IGFyZzEzMzIsaW50IGFy
ZzEzMzMsaW50IGFyZzEzMzQsaW50IGFyZzEzMzUsaW50IGFyZzEzMzYsaW50IGFyZzEzMzcsaW50
IGFyZzEzMzgsaW50IGFyZzEzMzksaW50IGFyZzEzNDAsaW50IGFyZzEzNDEsaW50IGFyZzEzNDIs
aW50IGFyZzEzNDMsaW50IGFyZzEzNDQsaW50IGFyZzEzNDUsaW50IGFyZzEzNDYsaW50IGFyZzEz
NDcsaW50IGFyZzEzNDgsaW50IGFyZzEzNDksaW50IGFyZzEzNTAsaW50IGFyZzEzNTEsaW50IGFy
ZzEzNTIsaW50IGFyZzEzNTMsaW50IGFyZzEzNTQsaW50IGFyZzEzNTUsaW50IGFyZzEzNTYsaW50
IGFyZzEzNTcsaW50IGFyZzEzNTgsaW50IGFyZzEzNTksaW50IGFyZzEzNjAsaW50IGFyZzEzNjEs
aW50IGFyZzEzNjIsaW50IGFyZzEzNjMsaW50IGFyZzEzNjQsaW50IGFyZzEzNjUsaW50IGFyZzEz
NjYsaW50IGFyZzEzNjcsaW50IGFyZzEzNjgsaW50IGFyZzEzNjksaW50IGFyZzEzNzAsaW50IGFy
ZzEzNzEsaW50IGFyZzEzNzIsaW50IGFyZzEzNzMsaW50IGFyZzEzNzQsaW50IGFyZzEzNzUsaW50
IGFyZzEzNzYsaW50IGFyZzEzNzcsaW50IGFyZzEzNzgsaW50IGFyZzEzNzksaW50IGFyZzEzODAs
aW50IGFyZzEzODEsaW50IGFyZzEzODIsaW50IGFyZzEzODMsaW50IGFyZzEzODQsaW50IGFyZzEz
ODUsaW50IGFyZzEzODYsaW50IGFyZzEzODcsaW50IGFyZzEzODgsaW50IGFyZzEzODksaW50IGFy
ZzEzOTAsaW50IGFyZzEzOTEsaW50IGFyZzEzOTIsaW50IGFyZzEzOTMsaW50IGFyZzEzOTQsaW50
IGFyZzEzOTUsaW50IGFyZzEzOTYsaW50IGFyZzEzOTcsaW50IGFyZzEzOTgsaW50IGFyZzEzOTks
aW50IGFyZzE0MDAsaW50IGFyZzE0MDEsaW50IGFyZzE0MDIsaW50IGFyZzE0MDMsaW50IGFyZzE0
MDQsaW50IGFyZzE0MDUsaW50IGFyZzE0MDYsaW50IGFyZzE0MDcsaW50IGFyZzE0MDgsaW50IGFy
ZzE0MDksaW50IGFyZzE0MTAsaW50IGFyZzE0MTEsaW50IGFyZzE0MTIsaW50IGFyZzE0MTMsaW50
IGFyZzE0MTQsaW50IGFyZzE0MTUsaW50IGFyZzE0MTYsaW50IGFyZzE0MTcsaW50IGFyZzE0MTgs
aW50IGFyZzE0MTksaW50IGFyZzE0MjAsaW50IGFyZzE0MjEsaW50IGFyZzE0MjIsaW50IGFyZzE0
MjMsaW50IGFyZzE0MjQsaW50IGFyZzE0MjUsaW50IGFyZzE0MjYsaW50IGFyZzE0MjcsaW50IGFy
ZzE0MjgsaW50IGFyZzE0MjksaW50IGFyZzE0MzAsaW50IGFyZzE0MzEsaW50IGFyZzE0MzIsaW50
IGFyZzE0MzMsaW50IGFyZzE0MzQsaW50IGFyZzE0MzUsaW50IGFyZzE0MzYsaW50IGFyZzE0Mzcs
aW50IGFyZzE0MzgsaW50IGFyZzE0MzksaW50IGFyZzE0NDAsaW50IGFyZzE0NDEsaW50IGFyZzE0
NDIsaW50IGFyZzE0NDMsaW50IGFyZzE0NDQsaW50IGFyZzE0NDUsaW50IGFyZzE0NDYsaW50IGFy
ZzE0NDcsaW50IGFyZzE0NDgsaW50IGFyZzE0NDksaW50IGFyZzE0NTAsaW50IGFyZzE0NTEsaW50
IGFyZzE0NTIsaW50IGFyZzE0NTMsaW50IGFyZzE0NTQsaW50IGFyZzE0NTUsaW50IGFyZzE0NTYs
aW50IGFyZzE0NTcsaW50IGFyZzE0NTgsaW50IGFyZzE0NTksaW50IGFyZzE0NjAsaW50IGFyZzE0
NjEsaW50IGFyZzE0NjIsaW50IGFyZzE0NjMsaW50IGFyZzE0NjQsaW50IGFyZzE0NjUsaW50IGFy
ZzE0NjYsaW50IGFyZzE0NjcsaW50IGFyZzE0NjgsaW50IGFyZzE0NjksaW50IGFyZzE0NzAsaW50
IGFyZzE0NzEsaW50IGFyZzE0NzIsaW50IGFyZzE0NzMsaW50IGFyZzE0NzQsaW50IGFyZzE0NzUs
aW50IGFyZzE0NzYsaW50IGFyZzE0NzcsaW50IGFyZzE0NzgsaW50IGFyZzE0NzksaW50IGFyZzE0
ODAsaW50IGFyZzE0ODEsaW50IGFyZzE0ODIsaW50IGFyZzE0ODMsaW50IGFyZzE0ODQsaW50IGFy
ZzE0ODUsaW50IGFyZzE0ODYsaW50IGFyZzE0ODcsaW50IGFyZzE0ODgsaW50IGFyZzE0ODksaW50
IGFyZzE0OTAsaW50IGFyZzE0OTEsaW50IGFyZzE0OTIsaW50IGFyZzE0OTMsaW50IGFyZzE0OTQs
aW50IGFyZzE0OTUsaW50IGFyZzE0OTYsaW50IGFyZzE0OTcsaW50IGFyZzE0OTgsaW50IGFyZzE0
OTksaW50IGFyZzE1MDAsaW50IGFyZzE1MDEsaW50IGFyZzE1MDIsaW50IGFyZzE1MDMsaW50IGFy
ZzE1MDQsaW50IGFyZzE1MDUsaW50IGFyZzE1MDYsaW50IGFyZzE1MDcsaW50IGFyZzE1MDgsaW50
IGFyZzE1MDksaW50IGFyZzE1MTAsaW50IGFyZzE1MTEsaW50IGFyZzE1MTIsaW50IGFyZzE1MTMs
aW50IGFyZzE1MTQsaW50IGFyZzE1MTUsaW50IGFyZzE1MTYsaW50IGFyZzE1MTcsaW50IGFyZzE1
MTgsaW50IGFyZzE1MTksaW50IGFyZzE1MjAsaW50IGFyZzE1MjEsaW50IGFyZzE1MjIsaW50IGFy
ZzE1MjMsaW50IGFyZzE1MjQsaW50IGFyZzE1MjUsaW50IGFyZzE1MjYsaW50IGFyZzE1MjcsaW50
IGFyZzE1MjgsaW50IGFyZzE1MjksaW50IGFyZzE1MzAsaW50IGFyZzE1MzEsaW50IGFyZzE1MzIs
aW50IGFyZzE1MzMsaW50IGFyZzE1MzQsaW50IGFyZzE1MzUsaW50IGFyZzE1MzYsaW50IGFyZzE1
MzcsaW50IGFyZzE1MzgsaW50IGFyZzE1MzksaW50IGFyZzE1NDAsaW50IGFyZzE1NDEsaW50IGFy
ZzE1NDIsaW50IGFyZzE1NDMsaW50IGFyZzE1NDQsaW50IGFyZzE1NDUsaW50IGFyZzE1NDYsaW50
IGFyZzE1NDcsaW50IGFyZzE1NDgsaW50IGFyZzE1NDksaW50IGFyZzE1NTAsaW50IGFyZzE1NTEs
aW50IGFyZzE1NTIsaW50IGFyZzE1NTMsaW50IGFyZzE1NTQsaW50IGFyZzE1NTUsaW50IGFyZzE1
NTYsaW50IGFyZzE1NTcsaW50IGFyZzE1NTgsaW50IGFyZzE1NTksaW50IGFyZzE1NjAsaW50IGFy
ZzE1NjEsaW50IGFyZzE1NjIsaW50IGFyZzE1NjMsaW50IGFyZzE1NjQsaW50IGFyZzE1NjUsaW50
IGFyZzE1NjYsaW50IGFyZzE1NjcsaW50IGFyZzE1NjgsaW50IGFyZzE1NjksaW50IGFyZzE1NzAs
aW50IGFyZzE1NzEsaW50IGFyZzE1NzIsaW50IGFyZzE1NzMsaW50IGFyZzE1NzQsaW50IGFyZzE1
NzUsaW50IGFyZzE1NzYsaW50IGFyZzE1NzcsaW50IGFyZzE1NzgsaW50IGFyZzE1NzksaW50IGFy
ZzE1ODAsaW50IGFyZzE1ODEsaW50IGFyZzE1ODIsaW50IGFyZzE1ODMsaW50IGFyZzE1ODQsaW50
IGFyZzE1ODUsaW50IGFyZzE1ODYsaW50IGFyZzE1ODcsaW50IGFyZzE1ODgsaW50IGFyZzE1ODks
aW50IGFyZzE1OTAsaW50IGFyZzE1OTEsaW50IGFyZzE1OTIsaW50IGFyZzE1OTMsaW50IGFyZzE1
OTQsaW50IGFyZzE1OTUsaW50IGFyZzE1OTYsaW50IGFyZzE1OTcsaW50IGFyZzE1OTgsaW50IGFy
ZzE1OTksaW50IGFyZzE2MDAsaW50IGFyZzE2MDEsaW50IGFyZzE2MDIsaW50IGFyZzE2MDMsaW50
IGFyZzE2MDQsaW50IGFyZzE2MDUsaW50IGFyZzE2MDYsaW50IGFyZzE2MDcsaW50IGFyZzE2MDgs
aW50IGFyZzE2MDksaW50IGFyZzE2MTAsaW50IGFyZzE2MTEsaW50IGFyZzE2MTIsaW50IGFyZzE2
MTMsaW50IGFyZzE2MTQsaW50IGFyZzE2MTUsaW50IGFyZzE2MTYsaW50IGFyZzE2MTcsaW50IGFy
ZzE2MTgsaW50IGFyZzE2MTksaW50IGFyZzE2MjAsaW50IGFyZzE2MjEsaW50IGFyZzE2MjIsaW50
IGFyZzE2MjMsaW50IGFyZzE2MjQsaW50IGFyZzE2MjUsaW50IGFyZzE2MjYsaW50IGFyZzE2Mjcs
aW50IGFyZzE2MjgsaW50IGFyZzE2MjksaW50IGFyZzE2MzAsaW50IGFyZzE2MzEsaW50IGFyZzE2
MzIsaW50IGFyZzE2MzMsaW50IGFyZzE2MzQsaW50IGFyZzE2MzUsaW50IGFyZzE2MzYsaW50IGFy
ZzE2MzcsaW50IGFyZzE2MzgsaW50IGFyZzE2MzksaW50IGFyZzE2NDAsaW50IGFyZzE2NDEsaW50
IGFyZzE2NDIsaW50IGFyZzE2NDMsaW50IGFyZzE2NDQsaW50IGFyZzE2NDUsaW50IGFyZzE2NDYs
aW50IGFyZzE2NDcsaW50IGFyZzE2NDgsaW50IGFyZzE2NDksaW50IGFyZzE2NTAsaW50IGFyZzE2
NTEsaW50IGFyZzE2NTIsaW50IGFyZzE2NTMsaW50IGFyZzE2NTQsaW50IGFyZzE2NTUsaW50IGFy
ZzE2NTYsaW50IGFyZzE2NTcsaW50IGFyZzE2NTgsaW50IGFyZzE2NTksaW50IGFyZzE2NjAsaW50
IGFyZzE2NjEsaW50IGFyZzE2NjIsaW50IGFyZzE2NjMsaW50IGFyZzE2NjQsaW50IGFyZzE2NjUs
aW50IGFyZzE2NjYsaW50IGFyZzE2NjcsaW50IGFyZzE2NjgsaW50IGFyZzE2NjksaW50IGFyZzE2
NzAsaW50IGFyZzE2NzEsaW50IGFyZzE2NzIsaW50IGFyZzE2NzMsaW50IGFyZzE2NzQsaW50IGFy
ZzE2NzUsaW50IGFyZzE2NzYsaW50IGFyZzE2NzcsaW50IGFyZzE2NzgsaW50IGFyZzE2NzksaW50
IGFyZzE2ODAsaW50IGFyZzE2ODEsaW50IGFyZzE2ODIsaW50IGFyZzE2ODMsaW50IGFyZzE2ODQs
aW50IGFyZzE2ODUsaW50IGFyZzE2ODYsaW50IGFyZzE2ODcsaW50IGFyZzE2ODgsaW50IGFyZzE2
ODksaW50IGFyZzE2OTAsaW50IGFyZzE2OTEsaW50IGFyZzE2OTIsaW50IGFyZzE2OTMsaW50IGFy
ZzE2OTQsaW50IGFyZzE2OTUsaW50IGFyZzE2OTYsaW50IGFyZzE2OTcsaW50IGFyZzE2OTgsaW50
IGFyZzE2OTksaW50IGFyZzE3MDAsaW50IGFyZzE3MDEsaW50IGFyZzE3MDIsaW50IGFyZzE3MDMs
aW50IGFyZzE3MDQsaW50IGFyZzE3MDUsaW50IGFyZzE3MDYsaW50IGFyZzE3MDcsaW50IGFyZzE3
MDgsaW50IGFyZzE3MDksaW50IGFyZzE3MTAsaW50IGFyZzE3MTEsaW50IGFyZzE3MTIsaW50IGFy
ZzE3MTMsaW50IGFyZzE3MTQsaW50IGFyZzE3MTUsaW50IGFyZzE3MTYsaW50IGFyZzE3MTcsaW50
IGFyZzE3MTgsaW50IGFyZzE3MTksaW50IGFyZzE3MjAsaW50IGFyZzE3MjEsaW50IGFyZzE3MjIs
aW50IGFyZzE3MjMsaW50IGFyZzE3MjQsaW50IGFyZzE3MjUsaW50IGFyZzE3MjYsaW50IGFyZzE3
MjcsaW50IGFyZzE3MjgsaW50IGFyZzE3MjksaW50IGFyZzE3MzAsaW50IGFyZzE3MzEsaW50IGFy
ZzE3MzIsaW50IGFyZzE3MzMsaW50IGFyZzE3MzQsaW50IGFyZzE3MzUsaW50IGFyZzE3MzYsaW50
IGFyZzE3MzcsaW50IGFyZzE3MzgsaW50IGFyZzE3MzksaW50IGFyZzE3NDAsaW50IGFyZzE3NDEs
aW50IGFyZzE3NDIsaW50IGFyZzE3NDMsaW50IGFyZzE3NDQsaW50IGFyZzE3NDUsaW50IGFyZzE3
NDYsaW50IGFyZzE3NDcsaW50IGFyZzE3NDgsaW50IGFyZzE3NDksaW50IGFyZzE3NTAsaW50IGFy
ZzE3NTEsaW50IGFyZzE3NTIsaW50IGFyZzE3NTMsaW50IGFyZzE3NTQsaW50IGFyZzE3NTUsaW50
IGFyZzE3NTYsaW50IGFyZzE3NTcsaW50IGFyZzE3NTgsaW50IGFyZzE3NTksaW50IGFyZzE3NjAs
aW50IGFyZzE3NjEsaW50IGFyZzE3NjIsaW50IGFyZzE3NjMsaW50IGFyZzE3NjQsaW50IGFyZzE3
NjUsaW50IGFyZzE3NjYsaW50IGFyZzE3NjcsaW50IGFyZzE3NjgsaW50IGFyZzE3NjksaW50IGFy
ZzE3NzAsaW50IGFyZzE3NzEsaW50IGFyZzE3NzIsaW50IGFyZzE3NzMsaW50IGFyZzE3NzQsaW50
IGFyZzE3NzUsaW50IGFyZzE3NzYsaW50IGFyZzE3NzcsaW50IGFyZzE3NzgsaW50IGFyZzE3Nzks
aW50IGFyZzE3ODAsaW50IGFyZzE3ODEsaW50IGFyZzE3ODIsaW50IGFyZzE3ODMsaW50IGFyZzE3
ODQsaW50IGFyZzE3ODUsaW50IGFyZzE3ODYsaW50IGFyZzE3ODcsaW50IGFyZzE3ODgsaW50IGFy
ZzE3ODksaW50IGFyZzE3OTAsaW50IGFyZzE3OTEsaW50IGFyZzE3OTIsaW50IGFyZzE3OTMsaW50
IGFyZzE3OTQsaW50IGFyZzE3OTUsaW50IGFyZzE3OTYsaW50IGFyZzE3OTcsaW50IGFyZzE3OTgs
aW50IGFyZzE3OTksaW50IGFyZzE4MDAsaW50IGFyZzE4MDEsaW50IGFyZzE4MDIsaW50IGFyZzE4
MDMsaW50IGFyZzE4MDQsaW50IGFyZzE4MDUsaW50IGFyZzE4MDYsaW50IGFyZzE4MDcsaW50IGFy
ZzE4MDgsaW50IGFyZzE4MDksaW50IGFyZzE4MTAsaW50IGFyZzE4MTEsaW50IGFyZzE4MTIsaW50
IGFyZzE4MTMsaW50IGFyZzE4MTQsaW50IGFyZzE4MTUsaW50IGFyZzE4MTYsaW50IGFyZzE4MTcs
aW50IGFyZzE4MTgsaW50IGFyZzE4MTksaW50IGFyZzE4MjAsaW50IGFyZzE4MjEsaW50IGFyZzE4
MjIsaW50IGFyZzE4MjMsaW50IGFyZzE4MjQsaW50IGFyZzE4MjUsaW50IGFyZzE4MjYsaW50IGFy
ZzE4MjcsaW50IGFyZzE4MjgsaW50IGFyZzE4MjksaW50IGFyZzE4MzAsaW50IGFyZzE4MzEsaW50
IGFyZzE4MzIsaW50IGFyZzE4MzMsaW50IGFyZzE4MzQsaW50IGFyZzE4MzUsaW50IGFyZzE4MzYs
aW50IGFyZzE4MzcsaW50IGFyZzE4MzgsaW50IGFyZzE4MzksaW50IGFyZzE4NDAsaW50IGFyZzE4
NDEsaW50IGFyZzE4NDIsaW50IGFyZzE4NDMsaW50IGFyZzE4NDQsaW50IGFyZzE4NDUsaW50IGFy
ZzE4NDYsaW50IGFyZzE4NDcsaW50IGFyZzE4NDgsaW50IGFyZzE4NDksaW50IGFyZzE4NTAsaW50
IGFyZzE4NTEsaW50IGFyZzE4NTIsaW50IGFyZzE4NTMsaW50IGFyZzE4NTQsaW50IGFyZzE4NTUs
aW50IGFyZzE4NTYsaW50IGFyZzE4NTcsaW50IGFyZzE4NTgsaW50IGFyZzE4NTksaW50IGFyZzE4
NjAsaW50IGFyZzE4NjEsaW50IGFyZzE4NjIsaW50IGFyZzE4NjMsaW50IGFyZzE4NjQsaW50IGFy
ZzE4NjUsaW50IGFyZzE4NjYsaW50IGFyZzE4NjcsaW50IGFyZzE4NjgsaW50IGFyZzE4NjksaW50
IGFyZzE4NzAsaW50IGFyZzE4NzEsaW50IGFyZzE4NzIsaW50IGFyZzE4NzMsaW50IGFyZzE4NzQs
aW50IGFyZzE4NzUsaW50IGFyZzE4NzYsaW50IGFyZzE4NzcsaW50IGFyZzE4NzgsaW50IGFyZzE4
NzksaW50IGFyZzE4ODAsaW50IGFyZzE4ODEsaW50IGFyZzE4ODIsaW50IGFyZzE4ODMsaW50IGFy
ZzE4ODQsaW50IGFyZzE4ODUsaW50IGFyZzE4ODYsaW50IGFyZzE4ODcsaW50IGFyZzE4ODgsaW50
IGFyZzE4ODksaW50IGFyZzE4OTAsaW50IGFyZzE4OTEsaW50IGFyZzE4OTIsaW50IGFyZzE4OTMs
aW50IGFyZzE4OTQsaW50IGFyZzE4OTUsaW50IGFyZzE4OTYsaW50IGFyZzE4OTcsaW50IGFyZzE4
OTgsaW50IGFyZzE4OTksaW50IGFyZzE5MDAsaW50IGFyZzE5MDEsaW50IGFyZzE5MDIsaW50IGFy
ZzE5MDMsaW50IGFyZzE5MDQsaW50IGFyZzE5MDUsaW50IGFyZzE5MDYsaW50IGFyZzE5MDcsaW50
IGFyZzE5MDgsaW50IGFyZzE5MDksaW50IGFyZzE5MTAsaW50IGFyZzE5MTEsaW50IGFyZzE5MTIs
aW50IGFyZzE5MTMsaW50IGFyZzE5MTQsaW50IGFyZzE5MTUsaW50IGFyZzE5MTYsaW50IGFyZzE5
MTcsaW50IGFyZzE5MTgsaW50IGFyZzE5MTksaW50IGFyZzE5MjAsaW50IGFyZzE5MjEsaW50IGFy
ZzE5MjIsaW50IGFyZzE5MjMsaW50IGFyZzE5MjQsaW50IGFyZzE5MjUsaW50IGFyZzE5MjYsaW50
IGFyZzE5MjcsaW50IGFyZzE5MjgsaW50IGFyZzE5MjksaW50IGFyZzE5MzAsaW50IGFyZzE5MzEs
aW50IGFyZzE5MzIsaW50IGFyZzE5MzMsaW50IGFyZzE5MzQsaW50IGFyZzE5MzUsaW50IGFyZzE5
MzYsaW50IGFyZzE5MzcsaW50IGFyZzE5MzgsaW50IGFyZzE5MzksaW50IGFyZzE5NDAsaW50IGFy
ZzE5NDEsaW50IGFyZzE5NDIsaW50IGFyZzE5NDMsaW50IGFyZzE5NDQsaW50IGFyZzE5NDUsaW50
IGFyZzE5NDYsaW50IGFyZzE5NDcsaW50IGFyZzE5NDgsaW50IGFyZzE5NDksaW50IGFyZzE5NTAs
aW50IGFyZzE5NTEsaW50IGFyZzE5NTIsaW50IGFyZzE5NTMsaW50IGFyZzE5NTQsaW50IGFyZzE5
NTUsaW50IGFyZzE5NTYsaW50IGFyZzE5NTcsaW50IGFyZzE5NTgsaW50IGFyZzE5NTksaW50IGFy
ZzE5NjAsaW50IGFyZzE5NjEsaW50IGFyZzE5NjIsaW50IGFyZzE5NjMsaW50IGFyZzE5NjQsaW50
IGFyZzE5NjUsaW50IGFyZzE5NjYsaW50IGFyZzE5NjcsaW50IGFyZzE5NjgsaW50IGFyZzE5Njks
aW50IGFyZzE5NzAsaW50IGFyZzE5NzEsaW50IGFyZzE5NzIsaW50IGFyZzE5NzMsaW50IGFyZzE5
NzQsaW50IGFyZzE5NzUsaW50IGFyZzE5NzYsaW50IGFyZzE5NzcsaW50IGFyZzE5NzgsaW50IGFy
ZzE5NzksaW50IGFyZzE5ODAsaW50IGFyZzE5ODEsaW50IGFyZzE5ODIsaW50IGFyZzE5ODMsaW50
IGFyZzE5ODQsaW50IGFyZzE5ODUsaW50IGFyZzE5ODYsaW50IGFyZzE5ODcsaW50IGFyZzE5ODgs
aW50IGFyZzE5ODksaW50IGFyZzE5OTAsaW50IGFyZzE5OTEsaW50IGFyZzE5OTIsaW50IGFyZzE5
OTMsaW50IGFyZzE5OTQsaW50IGFyZzE5OTUsaW50IGFyZzE5OTYsaW50IGFyZzE5OTcsaW50IGFy
ZzE5OTgsaW50IGFyZzE5OTksaW50IGFyZzIwMDAsaW50IGFyZzIwMDEsaW50IGFyZzIwMDIsaW50
IGFyZzIwMDMsaW50IGFyZzIwMDQsaW50IGFyZzIwMDUsaW50IGFyZzIwMDYsaW50IGFyZzIwMDcs
aW50IGFyZzIwMDgsaW50IGFyZzIwMDksaW50IGFyZzIwMTAsaW50IGFyZzIwMTEsaW50IGFyZzIw
MTIsaW50IGFyZzIwMTMsaW50IGFyZzIwMTQsaW50IGFyZzIwMTUsaW50IGFyZzIwMTYsaW50IGFy
ZzIwMTcsaW50IGFyZzIwMTgsaW50IGFyZzIwMTksaW50IGFyZzIwMjAsaW50IGFyZzIwMjEsaW50
IGFyZzIwMjIsaW50IGFyZzIwMjMsaW50IGFyZzIwMjQsaW50IGFyZzIwMjUsaW50IGFyZzIwMjYs
aW50IGFyZzIwMjcsaW50IGFyZzIwMjgsaW50IGFyZzIwMjksaW50IGFyZzIwMzAsaW50IGFyZzIw
MzEsaW50IGFyZzIwMzIsaW50IGFyZzIwMzMsaW50IGFyZzIwMzQsaW50IGFyZzIwMzUsaW50IGFy
ZzIwMzYsaW50IGFyZzIwMzcsaW50IGFyZzIwMzgsaW50IGFyZzIwMzksaW50IGFyZzIwNDAsaW50
IGFyZzIwNDEsaW50IGFyZzIwNDIsaW50IGFyZzIwNDMsaW50IGFyZzIwNDQsaW50IGFyZzIwNDUs
aW50IGFyZzIwNDYsaW50IGFyZzIwNDcsaW50IGFyZzIwNDgsaW50IGFyZzIwNDksaW50IGFyZzIw
NTAsaW50IGFyZzIwNTEsaW50IGFyZzIwNTIsaW50IGFyZzIwNTMsaW50IGFyZzIwNTQsaW50IGFy
ZzIwNTUsaW50IGFyZzIwNTYsaW50IGFyZzIwNTcsaW50IGFyZzIwNTgsaW50IGFyZzIwNTksaW50
IGFyZzIwNjAsaW50IGFyZzIwNjEsaW50IGFyZzIwNjIsaW50IGFyZzIwNjMsaW50IGFyZzIwNjQs
aW50IGFyZzIwNjUsaW50IGFyZzIwNjYsaW50IGFyZzIwNjcsaW50IGFyZzIwNjgsaW50IGFyZzIw
NjksaW50IGFyZzIwNzAsaW50IGFyZzIwNzEsaW50IGFyZzIwNzIsaW50IGFyZzIwNzMsaW50IGFy
ZzIwNzQsaW50IGFyZzIwNzUsaW50IGFyZzIwNzYsaW50IGFyZzIwNzcsaW50IGFyZzIwNzgsaW50
IGFyZzIwNzksaW50IGFyZzIwODAsaW50IGFyZzIwODEsaW50IGFyZzIwODIsaW50IGFyZzIwODMs
aW50IGFyZzIwODQsaW50IGFyZzIwODUsaW50IGFyZzIwODYsaW50IGFyZzIwODcsaW50IGFyZzIw
ODgsaW50IGFyZzIwODksaW50IGFyZzIwOTAsaW50IGFyZzIwOTEsaW50IGFyZzIwOTIsaW50IGFy
ZzIwOTMsaW50IGFyZzIwOTQsaW50IGFyZzIwOTUsaW50IGFyZzIwOTYsaW50IGFyZzIwOTcsaW50
IGFyZzIwOTgsaW50IGFyZzIwOTksaW50IGFyZzIxMDAsaW50IGFyZzIxMDEsaW50IGFyZzIxMDIs
aW50IGFyZzIxMDMsaW50IGFyZzIxMDQsaW50IGFyZzIxMDUsaW50IGFyZzIxMDYsaW50IGFyZzIx
MDcsaW50IGFyZzIxMDgsaW50IGFyZzIxMDksaW50IGFyZzIxMTAsaW50IGFyZzIxMTEsaW50IGFy
ZzIxMTIsaW50IGFyZzIxMTMsaW50IGFyZzIxMTQsaW50IGFyZzIxMTUsaW50IGFyZzIxMTYsaW50
IGFyZzIxMTcsaW50IGFyZzIxMTgsaW50IGFyZzIxMTksaW50IGFyZzIxMjAsaW50IGFyZzIxMjEs
aW50IGFyZzIxMjIsaW50IGFyZzIxMjMsaW50IGFyZzIxMjQsaW50IGFyZzIxMjUsaW50IGFyZzIx
MjYsaW50IGFyZzIxMjcsaW50IGFyZzIxMjgsaW50IGFyZzIxMjksaW50IGFyZzIxMzAsaW50IGFy
ZzIxMzEsaW50IGFyZzIxMzIsaW50IGFyZzIxMzMsaW50IGFyZzIxMzQsaW50IGFyZzIxMzUsaW50
IGFyZzIxMzYsaW50IGFyZzIxMzcsaW50IGFyZzIxMzgsaW50IGFyZzIxMzksaW50IGFyZzIxNDAs
aW50IGFyZzIxNDEsaW50IGFyZzIxNDIsaW50IGFyZzIxNDMsaW50IGFyZzIxNDQsaW50IGFyZzIx
NDUsaW50IGFyZzIxNDYsaW50IGFyZzIxNDcsaW50IGFyZzIxNDgsaW50IGFyZzIxNDksaW50IGFy
ZzIxNTAsaW50IGFyZzIxNTEsaW50IGFyZzIxNTIsaW50IGFyZzIxNTMsaW50IGFyZzIxNTQsaW50
IGFyZzIxNTUsaW50IGFyZzIxNTYsaW50IGFyZzIxNTcsaW50IGFyZzIxNTgsaW50IGFyZzIxNTks
aW50IGFyZzIxNjAsaW50IGFyZzIxNjEsaW50IGFyZzIxNjIsaW50IGFyZzIxNjMsaW50IGFyZzIx
NjQsaW50IGFyZzIxNjUsaW50IGFyZzIxNjYsaW50IGFyZzIxNjcsaW50IGFyZzIxNjgsaW50IGFy
ZzIxNjksaW50IGFyZzIxNzAsaW50IGFyZzIxNzEsaW50IGFyZzIxNzIsaW50IGFyZzIxNzMsaW50
IGFyZzIxNzQsaW50IGFyZzIxNzUsaW50IGFyZzIxNzYsaW50IGFyZzIxNzcsaW50IGFyZzIxNzgs
aW50IGFyZzIxNzksaW50IGFyZzIxODAsaW50IGFyZzIxODEsaW50IGFyZzIxODIsaW50IGFyZzIx
ODMsaW50IGFyZzIxODQsaW50IGFyZzIxODUsaW50IGFyZzIxODYsaW50IGFyZzIxODcsaW50IGFy
ZzIxODgsaW50IGFyZzIxODksaW50IGFyZzIxOTAsaW50IGFyZzIxOTEsaW50IGFyZzIxOTIsaW50
IGFyZzIxOTMsaW50IGFyZzIxOTQsaW50IGFyZzIxOTUsaW50IGFyZzIxOTYsaW50IGFyZzIxOTcs
aW50IGFyZzIxOTgsaW50IGFyZzIxOTksaW50IGFyZzIyMDAsaW50IGFyZzIyMDEsaW50IGFyZzIy
MDIsaW50IGFyZzIyMDMsaW50IGFyZzIyMDQsaW50IGFyZzIyMDUsaW50IGFyZzIyMDYsaW50IGFy
ZzIyMDcsaW50IGFyZzIyMDgsaW50IGFyZzIyMDksaW50IGFyZzIyMTAsaW50IGFyZzIyMTEsaW50
IGFyZzIyMTIsaW50IGFyZzIyMTMsaW50IGFyZzIyMTQsaW50IGFyZzIyMTUsaW50IGFyZzIyMTYs
aW50IGFyZzIyMTcsaW50IGFyZzIyMTgsaW50IGFyZzIyMTksaW50IGFyZzIyMjAsaW50IGFyZzIy
MjEsaW50IGFyZzIyMjIsaW50IGFyZzIyMjMsaW50IGFyZzIyMjQsaW50IGFyZzIyMjUsaW50IGFy
ZzIyMjYsaW50IGFyZzIyMjcsaW50IGFyZzIyMjgsaW50IGFyZzIyMjksaW50IGFyZzIyMzAsaW50
IGFyZzIyMzEsaW50IGFyZzIyMzIsaW50IGFyZzIyMzMsaW50IGFyZzIyMzQsaW50IGFyZzIyMzUs
aW50IGFyZzIyMzYsaW50IGFyZzIyMzcsaW50IGFyZzIyMzgsaW50IGFyZzIyMzksaW50IGFyZzIy
NDAsaW50IGFyZzIyNDEsaW50IGFyZzIyNDIsaW50IGFyZzIyNDMsaW50IGFyZzIyNDQsaW50IGFy
ZzIyNDUsaW50IGFyZzIyNDYsaW50IGFyZzIyNDcsaW50IGFyZzIyNDgsaW50IGFyZzIyNDksaW50
IGFyZzIyNTAsaW50IGFyZzIyNTEsaW50IGFyZzIyNTIsaW50IGFyZzIyNTMsaW50IGFyZzIyNTQs
aW50IGFyZzIyNTUsaW50IGFyZzIyNTYsaW50IGFyZzIyNTcsaW50IGFyZzIyNTgsaW50IGFyZzIy
NTksaW50IGFyZzIyNjAsaW50IGFyZzIyNjEsaW50IGFyZzIyNjIsaW50IGFyZzIyNjMsaW50IGFy
ZzIyNjQsaW50IGFyZzIyNjUsaW50IGFyZzIyNjYsaW50IGFyZzIyNjcsaW50IGFyZzIyNjgsaW50
IGFyZzIyNjksaW50IGFyZzIyNzAsaW50IGFyZzIyNzEsaW50IGFyZzIyNzIsaW50IGFyZzIyNzMs
aW50IGFyZzIyNzQsaW50IGFyZzIyNzUsaW50IGFyZzIyNzYsaW50IGFyZzIyNzcsaW50IGFyZzIy
NzgsaW50IGFyZzIyNzksaW50IGFyZzIyODAsaW50IGFyZzIyODEsaW50IGFyZzIyODIsaW50IGFy
ZzIyODMsaW50IGFyZzIyODQsaW50IGFyZzIyODUsaW50IGFyZzIyODYsaW50IGFyZzIyODcsaW50
IGFyZzIyODgsaW50IGFyZzIyODksaW50IGFyZzIyOTAsaW50IGFyZzIyOTEsaW50IGFyZzIyOTIs
aW50IGFyZzIyOTMsaW50IGFyZzIyOTQsaW50IGFyZzIyOTUsaW50IGFyZzIyOTYsaW50IGFyZzIy
OTcsaW50IGFyZzIyOTgsaW50IGFyZzIyOTksaW50IGFyZzIzMDAsaW50IGFyZzIzMDEsaW50IGFy
ZzIzMDIsaW50IGFyZzIzMDMsaW50IGFyZzIzMDQsaW50IGFyZzIzMDUsaW50IGFyZzIzMDYsaW50
IGFyZzIzMDcsaW50IGFyZzIzMDgsaW50IGFyZzIzMDksaW50IGFyZzIzMTAsaW50IGFyZzIzMTEs
aW50IGFyZzIzMTIsaW50IGFyZzIzMTMsaW50IGFyZzIzMTQsaW50IGFyZzIzMTUsaW50IGFyZzIz
MTYsaW50IGFyZzIzMTcsaW50IGFyZzIzMTgsaW50IGFyZzIzMTksaW50IGFyZzIzMjAsaW50IGFy
ZzIzMjEsaW50IGFyZzIzMjIsaW50IGFyZzIzMjMsaW50IGFyZzIzMjQsaW50IGFyZzIzMjUsaW50
IGFyZzIzMjYsaW50IGFyZzIzMjcsaW50IGFyZzIzMjgsaW50IGFyZzIzMjksaW50IGFyZzIzMzAs
aW50IGFyZzIzMzEsaW50IGFyZzIzMzIsaW50IGFyZzIzMzMsaW50IGFyZzIzMzQsaW50IGFyZzIz
MzUsaW50IGFyZzIzMzYsaW50IGFyZzIzMzcsaW50IGFyZzIzMzgsaW50IGFyZzIzMzksaW50IGFy
ZzIzNDAsaW50IGFyZzIzNDEsaW50IGFyZzIzNDIsaW50IGFyZzIzNDMsaW50IGFyZzIzNDQsaW50
IGFyZzIzNDUsaW50IGFyZzIzNDYsaW50IGFyZzIzNDcsaW50IGFyZzIzNDgsaW50IGFyZzIzNDks
aW50IGFyZzIzNTAsaW50IGFyZzIzNTEsaW50IGFyZzIzNTIsaW50IGFyZzIzNTMsaW50IGFyZzIz
NTQsaW50IGFyZzIzNTUsaW50IGFyZzIzNTYsaW50IGFyZzIzNTcsaW50IGFyZzIzNTgsaW50IGFy
ZzIzNTksaW50IGFyZzIzNjAsaW50IGFyZzIzNjEsaW50IGFyZzIzNjIsaW50IGFyZzIzNjMsaW50
IGFyZzIzNjQsaW50IGFyZzIzNjUsaW50IGFyZzIzNjYsaW50IGFyZzIzNjcsaW50IGFyZzIzNjgs
aW50IGFyZzIzNjksaW50IGFyZzIzNzAsaW50IGFyZzIzNzEsaW50IGFyZzIzNzIsaW50IGFyZzIz
NzMsaW50IGFyZzIzNzQsaW50IGFyZzIzNzUsaW50IGFyZzIzNzYsaW50IGFyZzIzNzcsaW50IGFy
ZzIzNzgsaW50IGFyZzIzNzksaW50IGFyZzIzODAsaW50IGFyZzIzODEsaW50IGFyZzIzODIsaW50
IGFyZzIzODMsaW50IGFyZzIzODQsaW50IGFyZzIzODUsaW50IGFyZzIzODYsaW50IGFyZzIzODcs
aW50IGFyZzIzODgsaW50IGFyZzIzODksaW50IGFyZzIzOTAsaW50IGFyZzIzOTEsaW50IGFyZzIz
OTIsaW50IGFyZzIzOTMsaW50IGFyZzIzOTQsaW50IGFyZzIzOTUsaW50IGFyZzIzOTYsaW50IGFy
ZzIzOTcsaW50IGFyZzIzOTgsaW50IGFyZzIzOTksaW50IGFyZzI0MDAsaW50IGFyZzI0MDEsaW50
IGFyZzI0MDIsaW50IGFyZzI0MDMsaW50IGFyZzI0MDQsaW50IGFyZzI0MDUsaW50IGFyZzI0MDYs
aW50IGFyZzI0MDcsaW50IGFyZzI0MDgsaW50IGFyZzI0MDksaW50IGFyZzI0MTAsaW50IGFyZzI0
MTEsaW50IGFyZzI0MTIsaW50IGFyZzI0MTMsaW50IGFyZzI0MTQsaW50IGFyZzI0MTUsaW50IGFy
ZzI0MTYsaW50IGFyZzI0MTcsaW50IGFyZzI0MTgsaW50IGFyZzI0MTksaW50IGFyZzI0MjAsaW50
IGFyZzI0MjEsaW50IGFyZzI0MjIsaW50IGFyZzI0MjMsaW50IGFyZzI0MjQsaW50IGFyZzI0MjUs
aW50IGFyZzI0MjYsaW50IGFyZzI0MjcsaW50IGFyZzI0MjgsaW50IGFyZzI0MjksaW50IGFyZzI0
MzAsaW50IGFyZzI0MzEsaW50IGFyZzI0MzIsaW50IGFyZzI0MzMsaW50IGFyZzI0MzQsaW50IGFy
ZzI0MzUsaW50IGFyZzI0MzYsaW50IGFyZzI0MzcsaW50IGFyZzI0MzgsaW50IGFyZzI0MzksaW50
IGFyZzI0NDAsaW50IGFyZzI0NDEsaW50IGFyZzI0NDIsaW50IGFyZzI0NDMsaW50IGFyZzI0NDQs
aW50IGFyZzI0NDUsaW50IGFyZzI0NDYsaW50IGFyZzI0NDcsaW50IGFyZzI0NDgsaW50IGFyZzI0
NDksaW50IGFyZzI0NTAsaW50IGFyZzI0NTEsaW50IGFyZzI0NTIsaW50IGFyZzI0NTMsaW50IGFy
ZzI0NTQsaW50IGFyZzI0NTUsaW50IGFyZzI0NTYsaW50IGFyZzI0NTcsaW50IGFyZzI0NTgsaW50
IGFyZzI0NTksaW50IGFyZzI0NjAsaW50IGFyZzI0NjEsaW50IGFyZzI0NjIsaW50IGFyZzI0NjMs
aW50IGFyZzI0NjQsaW50IGFyZzI0NjUsaW50IGFyZzI0NjYsaW50IGFyZzI0NjcsaW50IGFyZzI0
NjgsaW50IGFyZzI0NjksaW50IGFyZzI0NzAsaW50IGFyZzI0NzEsaW50IGFyZzI0NzIsaW50IGFy
ZzI0NzMsaW50IGFyZzI0NzQsaW50IGFyZzI0NzUsaW50IGFyZzI0NzYsaW50IGFyZzI0NzcsaW50
IGFyZzI0NzgsaW50IGFyZzI0NzksaW50IGFyZzI0ODAsaW50IGFyZzI0ODEsaW50IGFyZzI0ODIs
aW50IGFyZzI0ODMsaW50IGFyZzI0ODQsaW50IGFyZzI0ODUsaW50IGFyZzI0ODYsaW50IGFyZzI0
ODcsaW50IGFyZzI0ODgsaW50IGFyZzI0ODksaW50IGFyZzI0OTAsaW50IGFyZzI0OTEsaW50IGFy
ZzI0OTIsaW50IGFyZzI0OTMsaW50IGFyZzI0OTQsaW50IGFyZzI0OTUsaW50IGFyZzI0OTYsaW50
IGFyZzI0OTcsaW50IGFyZzI0OTgsaW50IGFyZzI0OTksaW50IGFyZzI1MDAsaW50IGFyZzI1MDEs
aW50IGFyZzI1MDIsaW50IGFyZzI1MDMsaW50IGFyZzI1MDQsaW50IGFyZzI1MDUsaW50IGFyZzI1
MDYsaW50IGFyZzI1MDcsaW50IGFyZzI1MDgsaW50IGFyZzI1MDksaW50IGFyZzI1MTAsaW50IGFy
ZzI1MTEsaW50IGFyZzI1MTIsaW50IGFyZzI1MTMsaW50IGFyZzI1MTQsaW50IGFyZzI1MTUsaW50
IGFyZzI1MTYsaW50IGFyZzI1MTcsaW50IGFyZzI1MTgsaW50IGFyZzI1MTksaW50IGFyZzI1MjAs
aW50IGFyZzI1MjEsaW50IGFyZzI1MjIsaW50IGFyZzI1MjMsaW50IGFyZzI1MjQsaW50IGFyZzI1
MjUsaW50IGFyZzI1MjYsaW50IGFyZzI1MjcsaW50IGFyZzI1MjgsaW50IGFyZzI1MjksaW50IGFy
ZzI1MzAsaW50IGFyZzI1MzEsaW50IGFyZzI1MzIsaW50IGFyZzI1MzMsaW50IGFyZzI1MzQsaW50
IGFyZzI1MzUsaW50IGFyZzI1MzYsaW50IGFyZzI1MzcsaW50IGFyZzI1MzgsaW50IGFyZzI1Mzks
aW50IGFyZzI1NDAsaW50IGFyZzI1NDEsaW50IGFyZzI1NDIsaW50IGFyZzI1NDMsaW50IGFyZzI1
NDQsaW50IGFyZzI1NDUsaW50IGFyZzI1NDYsaW50IGFyZzI1NDcsaW50IGFyZzI1NDgsaW50IGFy
ZzI1NDksaW50IGFyZzI1NTAsaW50IGFyZzI1NTEsaW50IGFyZzI1NTIsaW50IGFyZzI1NTMsaW50
IGFyZzI1NTQsaW50IGFyZzI1NTUsaW50IGFyZzI1NTYsaW50IGFyZzI1NTcsaW50IGFyZzI1NTgs
aW50IGFyZzI1NTksaW50IGFyZzI1NjAsaW50IGFyZzI1NjEsaW50IGFyZzI1NjIsaW50IGFyZzI1
NjMsaW50IGFyZzI1NjQsaW50IGFyZzI1NjUsaW50IGFyZzI1NjYsaW50IGFyZzI1NjcsaW50IGFy
ZzI1NjgsaW50IGFyZzI1NjksaW50IGFyZzI1NzAsaW50IGFyZzI1NzEsaW50IGFyZzI1NzIsaW50
IGFyZzI1NzMsaW50IGFyZzI1NzQsaW50IGFyZzI1NzUsaW50IGFyZzI1NzYsaW50IGFyZzI1Nzcs
aW50IGFyZzI1NzgsaW50IGFyZzI1NzksaW50IGFyZzI1ODAsaW50IGFyZzI1ODEsaW50IGFyZzI1
ODIsaW50IGFyZzI1ODMsaW50IGFyZzI1ODQsaW50IGFyZzI1ODUsaW50IGFyZzI1ODYsaW50IGFy
ZzI1ODcsaW50IGFyZzI1ODgsaW50IGFyZzI1ODksaW50IGFyZzI1OTAsaW50IGFyZzI1OTEsaW50
IGFyZzI1OTIsaW50IGFyZzI1OTMsaW50IGFyZzI1OTQsaW50IGFyZzI1OTUsaW50IGFyZzI1OTYs
aW50IGFyZzI1OTcsaW50IGFyZzI1OTgsaW50IGFyZzI1OTksaW50IGFyZzI2MDAsaW50IGFyZzI2
MDEsaW50IGFyZzI2MDIsaW50IGFyZzI2MDMsaW50IGFyZzI2MDQsaW50IGFyZzI2MDUsaW50IGFy
ZzI2MDYsaW50IGFyZzI2MDcsaW50IGFyZzI2MDgsaW50IGFyZzI2MDksaW50IGFyZzI2MTAsaW50
IGFyZzI2MTEsaW50IGFyZzI2MTIsaW50IGFyZzI2MTMsaW50IGFyZzI2MTQsaW50IGFyZzI2MTUs
aW50IGFyZzI2MTYsaW50IGFyZzI2MTcsaW50IGFyZzI2MTgsaW50IGFyZzI2MTksaW50IGFyZzI2
MjAsaW50IGFyZzI2MjEsaW50IGFyZzI2MjIsaW50IGFyZzI2MjMsaW50IGFyZzI2MjQsaW50IGFy
ZzI2MjUsaW50IGFyZzI2MjYsaW50IGFyZzI2MjcsaW50IGFyZzI2MjgsaW50IGFyZzI2MjksaW50
IGFyZzI2MzAsaW50IGFyZzI2MzEsaW50IGFyZzI2MzIsaW50IGFyZzI2MzMsaW50IGFyZzI2MzQs
aW50IGFyZzI2MzUsaW50IGFyZzI2MzYsaW50IGFyZzI2MzcsaW50IGFyZzI2MzgsaW50IGFyZzI2
MzksaW50IGFyZzI2NDAsaW50IGFyZzI2NDEsaW50IGFyZzI2NDIsaW50IGFyZzI2NDMsaW50IGFy
ZzI2NDQsaW50IGFyZzI2NDUsaW50IGFyZzI2NDYsaW50IGFyZzI2NDcsaW50IGFyZzI2NDgsaW50
IGFyZzI2NDksaW50IGFyZzI2NTAsaW50IGFyZzI2NTEsaW50IGFyZzI2NTIsaW50IGFyZzI2NTMs
aW50IGFyZzI2NTQsaW50IGFyZzI2NTUsaW50IGFyZzI2NTYsaW50IGFyZzI2NTcsaW50IGFyZzI2
NTgsaW50IGFyZzI2NTksaW50IGFyZzI2NjAsaW50IGFyZzI2NjEsaW50IGFyZzI2NjIsaW50IGFy
ZzI2NjMsaW50IGFyZzI2NjQsaW50IGFyZzI2NjUsaW50IGFyZzI2NjYsaW50IGFyZzI2NjcsaW50
IGFyZzI2NjgsaW50IGFyZzI2NjksaW50IGFyZzI2NzAsaW50IGFyZzI2NzEsaW50IGFyZzI2NzIs
aW50IGFyZzI2NzMsaW50IGFyZzI2NzQsaW50IGFyZzI2NzUsaW50IGFyZzI2NzYsaW50IGFyZzI2
NzcsaW50IGFyZzI2NzgsaW50IGFyZzI2NzksaW50IGFyZzI2ODAsaW50IGFyZzI2ODEsaW50IGFy
ZzI2ODIsaW50IGFyZzI2ODMsaW50IGFyZzI2ODQsaW50IGFyZzI2ODUsaW50IGFyZzI2ODYsaW50
IGFyZzI2ODcsaW50IGFyZzI2ODgsaW50IGFyZzI2ODksaW50IGFyZzI2OTAsaW50IGFyZzI2OTEs
aW50IGFyZzI2OTIsaW50IGFyZzI2OTMsaW50IGFyZzI2OTQsaW50IGFyZzI2OTUsaW50IGFyZzI2
OTYsaW50IGFyZzI2OTcsaW50IGFyZzI2OTgsaW50IGFyZzI2OTksaW50IGFyZzI3MDAsaW50IGFy
ZzI3MDEsaW50IGFyZzI3MDIsaW50IGFyZzI3MDMsaW50IGFyZzI3MDQsaW50IGFyZzI3MDUsaW50
IGFyZzI3MDYsaW50IGFyZzI3MDcsaW50IGFyZzI3MDgsaW50IGFyZzI3MDksaW50IGFyZzI3MTAs
aW50IGFyZzI3MTEsaW50IGFyZzI3MTIsaW50IGFyZzI3MTMsaW50IGFyZzI3MTQsaW50IGFyZzI3
MTUsaW50IGFyZzI3MTYsaW50IGFyZzI3MTcsaW50IGFyZzI3MTgsaW50IGFyZzI3MTksaW50IGFy
ZzI3MjAsaW50IGFyZzI3MjEsaW50IGFyZzI3MjIsaW50IGFyZzI3MjMsaW50IGFyZzI3MjQsaW50
IGFyZzI3MjUsaW50IGFyZzI3MjYsaW50IGFyZzI3MjcsaW50IGFyZzI3MjgsaW50IGFyZzI3Mjks
aW50IGFyZzI3MzAsaW50IGFyZzI3MzEsaW50IGFyZzI3MzIsaW50IGFyZzI3MzMsaW50IGFyZzI3
MzQsaW50IGFyZzI3MzUsaW50IGFyZzI3MzYsaW50IGFyZzI3MzcsaW50IGFyZzI3MzgsaW50IGFy
ZzI3MzksaW50IGFyZzI3NDAsaW50IGFyZzI3NDEsaW50IGFyZzI3NDIsaW50IGFyZzI3NDMsaW50
IGFyZzI3NDQsaW50IGFyZzI3NDUsaW50IGFyZzI3NDYsaW50IGFyZzI3NDcsaW50IGFyZzI3NDgs
aW50IGFyZzI3NDksaW50IGFyZzI3NTAsaW50IGFyZzI3NTEsaW50IGFyZzI3NTIsaW50IGFyZzI3
NTMsaW50IGFyZzI3NTQsaW50IGFyZzI3NTUsaW50IGFyZzI3NTYsaW50IGFyZzI3NTcsaW50IGFy
ZzI3NTgsaW50IGFyZzI3NTksaW50IGFyZzI3NjAsaW50IGFyZzI3NjEsaW50IGFyZzI3NjIsaW50
IGFyZzI3NjMsaW50IGFyZzI3NjQsaW50IGFyZzI3NjUsaW50IGFyZzI3NjYsaW50IGFyZzI3Njcs
aW50IGFyZzI3NjgsaW50IGFyZzI3NjksaW50IGFyZzI3NzAsaW50IGFyZzI3NzEsaW50IGFyZzI3
NzIsaW50IGFyZzI3NzMsaW50IGFyZzI3NzQsaW50IGFyZzI3NzUsaW50IGFyZzI3NzYsaW50IGFy
ZzI3NzcsaW50IGFyZzI3NzgsaW50IGFyZzI3NzksaW50IGFyZzI3ODAsaW50IGFyZzI3ODEsaW50
IGFyZzI3ODIsaW50IGFyZzI3ODMsaW50IGFyZzI3ODQsaW50IGFyZzI3ODUsaW50IGFyZzI3ODYs
aW50IGFyZzI3ODcsaW50IGFyZzI3ODgsaW50IGFyZzI3ODksaW50IGFyZzI3OTAsaW50IGFyZzI3
OTEsaW50IGFyZzI3OTIsaW50IGFyZzI3OTMsaW50IGFyZzI3OTQsaW50IGFyZzI3OTUsaW50IGFy
ZzI3OTYsaW50IGFyZzI3OTcsaW50IGFyZzI3OTgsaW50IGFyZzI3OTksaW50IGFyZzI4MDAsaW50
IGFyZzI4MDEsaW50IGFyZzI4MDIsaW50IGFyZzI4MDMsaW50IGFyZzI4MDQsaW50IGFyZzI4MDUs
aW50IGFyZzI4MDYsaW50IGFyZzI4MDcsaW50IGFyZzI4MDgsaW50IGFyZzI4MDksaW50IGFyZzI4
MTAsaW50IGFyZzI4MTEsaW50IGFyZzI4MTIsaW50IGFyZzI4MTMsaW50IGFyZzI4MTQsaW50IGFy
ZzI4MTUsaW50IGFyZzI4MTYsaW50IGFyZzI4MTcsaW50IGFyZzI4MTgsaW50IGFyZzI4MTksaW50
IGFyZzI4MjAsaW50IGFyZzI4MjEsaW50IGFyZzI4MjIsaW50IGFyZzI4MjMsaW50IGFyZzI4MjQs
aW50IGFyZzI4MjUsaW50IGFyZzI4MjYsaW50IGFyZzI4MjcsaW50IGFyZzI4MjgsaW50IGFyZzI4
MjksaW50IGFyZzI4MzAsaW50IGFyZzI4MzEsaW50IGFyZzI4MzIsaW50IGFyZzI4MzMsaW50IGFy
ZzI4MzQsaW50IGFyZzI4MzUsaW50IGFyZzI4MzYsaW50IGFyZzI4MzcsaW50IGFyZzI4MzgsaW50
IGFyZzI4MzksaW50IGFyZzI4NDAsaW50IGFyZzI4NDEsaW50IGFyZzI4NDIsaW50IGFyZzI4NDMs
aW50IGFyZzI4NDQsaW50IGFyZzI4NDUsaW50IGFyZzI4NDYsaW50IGFyZzI4NDcsaW50IGFyZzI4
NDgsaW50IGFyZzI4NDksaW50IGFyZzI4NTAsaW50IGFyZzI4NTEsaW50IGFyZzI4NTIsaW50IGFy
ZzI4NTMsaW50IGFyZzI4NTQsaW50IGFyZzI4NTUsaW50IGFyZzI4NTYsaW50IGFyZzI4NTcsaW50
IGFyZzI4NTgsaW50IGFyZzI4NTksaW50IGFyZzI4NjAsaW50IGFyZzI4NjEsaW50IGFyZzI4NjIs
aW50IGFyZzI4NjMsaW50IGFyZzI4NjQsaW50IGFyZzI4NjUsaW50IGFyZzI4NjYsaW50IGFyZzI4
NjcsaW50IGFyZzI4NjgsaW50IGFyZzI4NjksaW50IGFyZzI4NzAsaW50IGFyZzI4NzEsaW50IGFy
ZzI4NzIsaW50IGFyZzI4NzMsaW50IGFyZzI4NzQsaW50IGFyZzI4NzUsaW50IGFyZzI4NzYsaW50
IGFyZzI4NzcsaW50IGFyZzI4NzgsaW50IGFyZzI4NzksaW50IGFyZzI4ODAsaW50IGFyZzI4ODEs
aW50IGFyZzI4ODIsaW50IGFyZzI4ODMsaW50IGFyZzI4ODQsaW50IGFyZzI4ODUsaW50IGFyZzI4
ODYsaW50IGFyZzI4ODcsaW50IGFyZzI4ODgsaW50IGFyZzI4ODksaW50IGFyZzI4OTAsaW50IGFy
ZzI4OTEsaW50IGFyZzI4OTIsaW50IGFyZzI4OTMsaW50IGFyZzI4OTQsaW50IGFyZzI4OTUsaW50
IGFyZzI4OTYsaW50IGFyZzI4OTcsaW50IGFyZzI4OTgsaW50IGFyZzI4OTksaW50IGFyZzI5MDAs
aW50IGFyZzI5MDEsaW50IGFyZzI5MDIsaW50IGFyZzI5MDMsaW50IGFyZzI5MDQsaW50IGFyZzI5
MDUsaW50IGFyZzI5MDYsaW50IGFyZzI5MDcsaW50IGFyZzI5MDgsaW50IGFyZzI5MDksaW50IGFy
ZzI5MTAsaW50IGFyZzI5MTEsaW50IGFyZzI5MTIsaW50IGFyZzI5MTMsaW50IGFyZzI5MTQsaW50
IGFyZzI5MTUsaW50IGFyZzI5MTYsaW50IGFyZzI5MTcsaW50IGFyZzI5MTgsaW50IGFyZzI5MTks
aW50IGFyZzI5MjAsaW50IGFyZzI5MjEsaW50IGFyZzI5MjIsaW50IGFyZzI5MjMsaW50IGFyZzI5
MjQsaW50IGFyZzI5MjUsaW50IGFyZzI5MjYsaW50IGFyZzI5MjcsaW50IGFyZzI5MjgsaW50IGFy
ZzI5MjksaW50IGFyZzI5MzAsaW50IGFyZzI5MzEsaW50IGFyZzI5MzIsaW50IGFyZzI5MzMsaW50
IGFyZzI5MzQsaW50IGFyZzI5MzUsaW50IGFyZzI5MzYsaW50IGFyZzI5MzcsaW50IGFyZzI5Mzgs
aW50IGFyZzI5MzksaW50IGFyZzI5NDAsaW50IGFyZzI5NDEsaW50IGFyZzI5NDIsaW50IGFyZzI5
NDMsaW50IGFyZzI5NDQsaW50IGFyZzI5NDUsaW50IGFyZzI5NDYsaW50IGFyZzI5NDcsaW50IGFy
ZzI5NDgsaW50IGFyZzI5NDksaW50IGFyZzI5NTAsaW50IGFyZzI5NTEsaW50IGFyZzI5NTIsaW50
IGFyZzI5NTMsaW50IGFyZzI5NTQsaW50IGFyZzI5NTUsaW50IGFyZzI5NTYsaW50IGFyZzI5NTcs
aW50IGFyZzI5NTgsaW50IGFyZzI5NTksaW50IGFyZzI5NjAsaW50IGFyZzI5NjEsaW50IGFyZzI5
NjIsaW50IGFyZzI5NjMsaW50IGFyZzI5NjQsaW50IGFyZzI5NjUsaW50IGFyZzI5NjYsaW50IGFy
ZzI5NjcsaW50IGFyZzI5NjgsaW50IGFyZzI5NjksaW50IGFyZzI5NzAsaW50IGFyZzI5NzEsaW50
IGFyZzI5NzIsaW50IGFyZzI5NzMsaW50IGFyZzI5NzQsaW50IGFyZzI5NzUsaW50IGFyZzI5NzYs
aW50IGFyZzI5NzcsaW50IGFyZzI5NzgsaW50IGFyZzI5NzksaW50IGFyZzI5ODAsaW50IGFyZzI5
ODEsaW50IGFyZzI5ODIsaW50IGFyZzI5ODMsaW50IGFyZzI5ODQsaW50IGFyZzI5ODUsaW50IGFy
ZzI5ODYsaW50IGFyZzI5ODcsaW50IGFyZzI5ODgsaW50IGFyZzI5ODksaW50IGFyZzI5OTAsaW50
IGFyZzI5OTEsaW50IGFyZzI5OTIsaW50IGFyZzI5OTMsaW50IGFyZzI5OTQsaW50IGFyZzI5OTUs
aW50IGFyZzI5OTYsaW50IGFyZzI5OTcsaW50IGFyZzI5OTgsaW50IGFyZzI5OTksaW50IGFyZzMw
MDAsaW50IGFyZzMwMDEsaW50IGFyZzMwMDIsaW50IGFyZzMwMDMsaW50IGFyZzMwMDQsaW50IGFy
ZzMwMDUsaW50IGFyZzMwMDYsaW50IGFyZzMwMDcsaW50IGFyZzMwMDgsaW50IGFyZzMwMDksaW50
IGFyZzMwMTAsaW50IGFyZzMwMTEsaW50IGFyZzMwMTIsaW50IGFyZzMwMTMsaW50IGFyZzMwMTQs
aW50IGFyZzMwMTUsaW50IGFyZzMwMTYsaW50IGFyZzMwMTcsaW50IGFyZzMwMTgsaW50IGFyZzMw
MTksaW50IGFyZzMwMjAsaW50IGFyZzMwMjEsaW50IGFyZzMwMjIsaW50IGFyZzMwMjMsaW50IGFy
ZzMwMjQsaW50IGFyZzMwMjUsaW50IGFyZzMwMjYsaW50IGFyZzMwMjcsaW50IGFyZzMwMjgsaW50
IGFyZzMwMjksaW50IGFyZzMwMzAsaW50IGFyZzMwMzEsaW50IGFyZzMwMzIsaW50IGFyZzMwMzMs
aW50IGFyZzMwMzQsaW50IGFyZzMwMzUsaW50IGFyZzMwMzYsaW50IGFyZzMwMzcsaW50IGFyZzMw
MzgsaW50IGFyZzMwMzksaW50IGFyZzMwNDAsaW50IGFyZzMwNDEsaW50IGFyZzMwNDIsaW50IGFy
ZzMwNDMsaW50IGFyZzMwNDQsaW50IGFyZzMwNDUsaW50IGFyZzMwNDYsaW50IGFyZzMwNDcsaW50
IGFyZzMwNDgsaW50IGFyZzMwNDksaW50IGFyZzMwNTAsaW50IGFyZzMwNTEsaW50IGFyZzMwNTIs
aW50IGFyZzMwNTMsaW50IGFyZzMwNTQsaW50IGFyZzMwNTUsaW50IGFyZzMwNTYsaW50IGFyZzMw
NTcsaW50IGFyZzMwNTgsaW50IGFyZzMwNTksaW50IGFyZzMwNjAsaW50IGFyZzMwNjEsaW50IGFy
ZzMwNjIsaW50IGFyZzMwNjMsaW50IGFyZzMwNjQsaW50IGFyZzMwNjUsaW50IGFyZzMwNjYsaW50
IGFyZzMwNjcsaW50IGFyZzMwNjgsaW50IGFyZzMwNjksaW50IGFyZzMwNzAsaW50IGFyZzMwNzEs
aW50IGFyZzMwNzIsaW50IGFyZzMwNzMsaW50IGFyZzMwNzQsaW50IGFyZzMwNzUsaW50IGFyZzMw
NzYsaW50IGFyZzMwNzcsaW50IGFyZzMwNzgsaW50IGFyZzMwNzksaW50IGFyZzMwODAsaW50IGFy
ZzMwODEsaW50IGFyZzMwODIsaW50IGFyZzMwODMsaW50IGFyZzMwODQsaW50IGFyZzMwODUsaW50
IGFyZzMwODYsaW50IGFyZzMwODcsaW50IGFyZzMwODgsaW50IGFyZzMwODksaW50IGFyZzMwOTAs
aW50IGFyZzMwOTEsaW50IGFyZzMwOTIsaW50IGFyZzMwOTMsaW50IGFyZzMwOTQsaW50IGFyZzMw
OTUsaW50IGFyZzMwOTYsaW50IGFyZzMwOTcsaW50IGFyZzMwOTgsaW50IGFyZzMwOTksaW50IGFy
ZzMxMDAsaW50IGFyZzMxMDEsaW50IGFyZzMxMDIsaW50IGFyZzMxMDMsaW50IGFyZzMxMDQsaW50
IGFyZzMxMDUsaW50IGFyZzMxMDYsaW50IGFyZzMxMDcsaW50IGFyZzMxMDgsaW50IGFyZzMxMDks
aW50IGFyZzMxMTAsaW50IGFyZzMxMTEsaW50IGFyZzMxMTIsaW50IGFyZzMxMTMsaW50IGFyZzMx
MTQsaW50IGFyZzMxMTUsaW50IGFyZzMxMTYsaW50IGFyZzMxMTcsaW50IGFyZzMxMTgsaW50IGFy
ZzMxMTksaW50IGFyZzMxMjAsaW50IGFyZzMxMjEsaW50IGFyZzMxMjIsaW50IGFyZzMxMjMsaW50
IGFyZzMxMjQsaW50IGFyZzMxMjUsaW50IGFyZzMxMjYsaW50IGFyZzMxMjcsaW50IGFyZzMxMjgs
aW50IGFyZzMxMjksaW50IGFyZzMxMzAsaW50IGFyZzMxMzEsaW50IGFyZzMxMzIsaW50IGFyZzMx
MzMsaW50IGFyZzMxMzQsaW50IGFyZzMxMzUsaW50IGFyZzMxMzYsaW50IGFyZzMxMzcsaW50IGFy
ZzMxMzgsaW50IGFyZzMxMzksaW50IGFyZzMxNDAsaW50IGFyZzMxNDEsaW50IGFyZzMxNDIsaW50
IGFyZzMxNDMsaW50IGFyZzMxNDQsaW50IGFyZzMxNDUsaW50IGFyZzMxNDYsaW50IGFyZzMxNDcs
aW50IGFyZzMxNDgsaW50IGFyZzMxNDksaW50IGFyZzMxNTAsaW50IGFyZzMxNTEsaW50IGFyZzMx
NTIsaW50IGFyZzMxNTMsaW50IGFyZzMxNTQsaW50IGFyZzMxNTUsaW50IGFyZzMxNTYsaW50IGFy
ZzMxNTcsaW50IGFyZzMxNTgsaW50IGFyZzMxNTksaW50IGFyZzMxNjAsaW50IGFyZzMxNjEsaW50
IGFyZzMxNjIsaW50IGFyZzMxNjMsaW50IGFyZzMxNjQsaW50IGFyZzMxNjUsaW50IGFyZzMxNjYs
aW50IGFyZzMxNjcsaW50IGFyZzMxNjgsaW50IGFyZzMxNjksaW50IGFyZzMxNzAsaW50IGFyZzMx
NzEsaW50IGFyZzMxNzIsaW50IGFyZzMxNzMsaW50IGFyZzMxNzQsaW50IGFyZzMxNzUsaW50IGFy
ZzMxNzYsaW50IGFyZzMxNzcsaW50IGFyZzMxNzgsaW50IGFyZzMxNzksaW50IGFyZzMxODAsaW50
IGFyZzMxODEsaW50IGFyZzMxODIsaW50IGFyZzMxODMsaW50IGFyZzMxODQsaW50IGFyZzMxODUs
aW50IGFyZzMxODYsaW50IGFyZzMxODcsaW50IGFyZzMxODgsaW50IGFyZzMxODksaW50IGFyZzMx
OTAsaW50IGFyZzMxOTEsaW50IGFyZzMxOTIsaW50IGFyZzMxOTMsaW50IGFyZzMxOTQsaW50IGFy
ZzMxOTUsaW50IGFyZzMxOTYsaW50IGFyZzMxOTcsaW50IGFyZzMxOTgsaW50IGFyZzMxOTksaW50
IGFyZzMyMDAsaW50IGFyZzMyMDEsaW50IGFyZzMyMDIsaW50IGFyZzMyMDMsaW50IGFyZzMyMDQs
aW50IGFyZzMyMDUsaW50IGFyZzMyMDYsaW50IGFyZzMyMDcsaW50IGFyZzMyMDgsaW50IGFyZzMy
MDksaW50IGFyZzMyMTAsaW50IGFyZzMyMTEsaW50IGFyZzMyMTIsaW50IGFyZzMyMTMsaW50IGFy
ZzMyMTQsaW50IGFyZzMyMTUsaW50IGFyZzMyMTYsaW50IGFyZzMyMTcsaW50IGFyZzMyMTgsaW50
IGFyZzMyMTksaW50IGFyZzMyMjAsaW50IGFyZzMyMjEsaW50IGFyZzMyMjIsaW50IGFyZzMyMjMs
aW50IGFyZzMyMjQsaW50IGFyZzMyMjUsaW50IGFyZzMyMjYsaW50IGFyZzMyMjcsaW50IGFyZzMy
MjgsaW50IGFyZzMyMjksaW50IGFyZzMyMzAsaW50IGFyZzMyMzEsaW50IGFyZzMyMzIsaW50IGFy
ZzMyMzMsaW50IGFyZzMyMzQsaW50IGFyZzMyMzUsaW50IGFyZzMyMzYsaW50IGFyZzMyMzcsaW50
IGFyZzMyMzgsaW50IGFyZzMyMzksaW50IGFyZzMyNDAsaW50IGFyZzMyNDEsaW50IGFyZzMyNDIs
aW50IGFyZzMyNDMsaW50IGFyZzMyNDQsaW50IGFyZzMyNDUsaW50IGFyZzMyNDYsaW50IGFyZzMy
NDcsaW50IGFyZzMyNDgsaW50IGFyZzMyNDksaW50IGFyZzMyNTAsaW50IGFyZzMyNTEsaW50IGFy
ZzMyNTIsaW50IGFyZzMyNTMsaW50IGFyZzMyNTQsaW50IGFyZzMyNTUsaW50IGFyZzMyNTYsaW50
IGFyZzMyNTcsaW50IGFyZzMyNTgsaW50IGFyZzMyNTksaW50IGFyZzMyNjAsaW50IGFyZzMyNjEs
aW50IGFyZzMyNjIsaW50IGFyZzMyNjMsaW50IGFyZzMyNjQsaW50IGFyZzMyNjUsaW50IGFyZzMy
NjYsaW50IGFyZzMyNjcsaW50IGFyZzMyNjgsaW50IGFyZzMyNjksaW50IGFyZzMyNzAsaW50IGFy
ZzMyNzEsaW50IGFyZzMyNzIsaW50IGFyZzMyNzMsaW50IGFyZzMyNzQsaW50IGFyZzMyNzUsaW50
IGFyZzMyNzYsaW50IGFyZzMyNzcsaW50IGFyZzMyNzgsaW50IGFyZzMyNzksaW50IGFyZzMyODAs
aW50IGFyZzMyODEsaW50IGFyZzMyODIsaW50IGFyZzMyODMsaW50IGFyZzMyODQsaW50IGFyZzMy
ODUsaW50IGFyZzMyODYsaW50IGFyZzMyODcsaW50IGFyZzMyODgsaW50IGFyZzMyODksaW50IGFy
ZzMyOTAsaW50IGFyZzMyOTEsaW50IGFyZzMyOTIsaW50IGFyZzMyOTMsaW50IGFyZzMyOTQsaW50
IGFyZzMyOTUsaW50IGFyZzMyOTYsaW50IGFyZzMyOTcsaW50IGFyZzMyOTgsaW50IGFyZzMyOTks
aW50IGFyZzMzMDAsaW50IGFyZzMzMDEsaW50IGFyZzMzMDIsaW50IGFyZzMzMDMsaW50IGFyZzMz
MDQsaW50IGFyZzMzMDUsaW50IGFyZzMzMDYsaW50IGFyZzMzMDcsaW50IGFyZzMzMDgsaW50IGFy
ZzMzMDksaW50IGFyZzMzMTAsaW50IGFyZzMzMTEsaW50IGFyZzMzMTIsaW50IGFyZzMzMTMsaW50
IGFyZzMzMTQsaW50IGFyZzMzMTUsaW50IGFyZzMzMTYsaW50IGFyZzMzMTcsaW50IGFyZzMzMTgs
aW50IGFyZzMzMTksaW50IGFyZzMzMjAsaW50IGFyZzMzMjEsaW50IGFyZzMzMjIsaW50IGFyZzMz
MjMsaW50IGFyZzMzMjQsaW50IGFyZzMzMjUsaW50IGFyZzMzMjYsaW50IGFyZzMzMjcsaW50IGFy
ZzMzMjgsaW50IGFyZzMzMjksaW50IGFyZzMzMzAsaW50IGFyZzMzMzEsaW50IGFyZzMzMzIsaW50
IGFyZzMzMzMsaW50IGFyZzMzMzQsaW50IGFyZzMzMzUsaW50IGFyZzMzMzYsaW50IGFyZzMzMzcs
aW50IGFyZzMzMzgsaW50IGFyZzMzMzksaW50IGFyZzMzNDAsaW50IGFyZzMzNDEsaW50IGFyZzMz
NDIsaW50IGFyZzMzNDMsaW50IGFyZzMzNDQsaW50IGFyZzMzNDUsaW50IGFyZzMzNDYsaW50IGFy
ZzMzNDcsaW50IGFyZzMzNDgsaW50IGFyZzMzNDksaW50IGFyZzMzNTAsaW50IGFyZzMzNTEsaW50
IGFyZzMzNTIsaW50IGFyZzMzNTMsaW50IGFyZzMzNTQsaW50IGFyZzMzNTUsaW50IGFyZzMzNTYs
aW50IGFyZzMzNTcsaW50IGFyZzMzNTgsaW50IGFyZzMzNTksaW50IGFyZzMzNjAsaW50IGFyZzMz
NjEsaW50IGFyZzMzNjIsaW50IGFyZzMzNjMsaW50IGFyZzMzNjQsaW50IGFyZzMzNjUsaW50IGFy
ZzMzNjYsaW50IGFyZzMzNjcsaW50IGFyZzMzNjgsaW50IGFyZzMzNjksaW50IGFyZzMzNzAsaW50
IGFyZzMzNzEsaW50IGFyZzMzNzIsaW50IGFyZzMzNzMsaW50IGFyZzMzNzQsaW50IGFyZzMzNzUs
aW50IGFyZzMzNzYsaW50IGFyZzMzNzcsaW50IGFyZzMzNzgsaW50IGFyZzMzNzksaW50IGFyZzMz
ODAsaW50IGFyZzMzODEsaW50IGFyZzMzODIsaW50IGFyZzMzODMsaW50IGFyZzMzODQsaW50IGFy
ZzMzODUsaW50IGFyZzMzODYsaW50IGFyZzMzODcsaW50IGFyZzMzODgsaW50IGFyZzMzODksaW50
IGFyZzMzOTAsaW50IGFyZzMzOTEsaW50IGFyZzMzOTIsaW50IGFyZzMzOTMsaW50IGFyZzMzOTQs
aW50IGFyZzMzOTUsaW50IGFyZzMzOTYsaW50IGFyZzMzOTcsaW50IGFyZzMzOTgsaW50IGFyZzMz
OTksaW50IGFyZzM0MDAsaW50IGFyZzM0MDEsaW50IGFyZzM0MDIsaW50IGFyZzM0MDMsaW50IGFy
ZzM0MDQsaW50IGFyZzM0MDUsaW50IGFyZzM0MDYsaW50IGFyZzM0MDcsaW50IGFyZzM0MDgsaW50
IGFyZzM0MDksaW50IGFyZzM0MTAsaW50IGFyZzM0MTEsaW50IGFyZzM0MTIsaW50IGFyZzM0MTMs
aW50IGFyZzM0MTQsaW50IGFyZzM0MTUsaW50IGFyZzM0MTYsaW50IGFyZzM0MTcsaW50IGFyZzM0
MTgsaW50IGFyZzM0MTksaW50IGFyZzM0MjAsaW50IGFyZzM0MjEsaW50IGFyZzM0MjIsaW50IGFy
ZzM0MjMsaW50IGFyZzM0MjQsaW50IGFyZzM0MjUsaW50IGFyZzM0MjYsaW50IGFyZzM0MjcsaW50
IGFyZzM0MjgsaW50IGFyZzM0MjksaW50IGFyZzM0MzAsaW50IGFyZzM0MzEsaW50IGFyZzM0MzIs
aW50IGFyZzM0MzMsaW50IGFyZzM0MzQsaW50IGFyZzM0MzUsaW50IGFyZzM0MzYsaW50IGFyZzM0
MzcsaW50IGFyZzM0MzgsaW50IGFyZzM0MzksaW50IGFyZzM0NDAsaW50IGFyZzM0NDEsaW50IGFy
ZzM0NDIsaW50IGFyZzM0NDMsaW50IGFyZzM0NDQsaW50IGFyZzM0NDUsaW50IGFyZzM0NDYsaW50
IGFyZzM0NDcsaW50IGFyZzM0NDgsaW50IGFyZzM0NDksaW50IGFyZzM0NTAsaW50IGFyZzM0NTEs
aW50IGFyZzM0NTIsaW50IGFyZzM0NTMsaW50IGFyZzM0NTQsaW50IGFyZzM0NTUsaW50IGFyZzM0
NTYsaW50IGFyZzM0NTcsaW50IGFyZzM0NTgsaW50IGFyZzM0NTksaW50IGFyZzM0NjAsaW50IGFy
ZzM0NjEsaW50IGFyZzM0NjIsaW50IGFyZzM0NjMsaW50IGFyZzM0NjQsaW50IGFyZzM0NjUsaW50
IGFyZzM0NjYsaW50IGFyZzM0NjcsaW50IGFyZzM0NjgsaW50IGFyZzM0NjksaW50IGFyZzM0NzAs
aW50IGFyZzM0NzEsaW50IGFyZzM0NzIsaW50IGFyZzM0NzMsaW50IGFyZzM0NzQsaW50IGFyZzM0
NzUsaW50IGFyZzM0NzYsaW50IGFyZzM0NzcsaW50IGFyZzM0NzgsaW50IGFyZzM0NzksaW50IGFy
ZzM0ODAsaW50IGFyZzM0ODEsaW50IGFyZzM0ODIsaW50IGFyZzM0ODMsaW50IGFyZzM0ODQsaW50
IGFyZzM0ODUsaW50IGFyZzM0ODYsaW50IGFyZzM0ODcsaW50IGFyZzM0ODgsaW50IGFyZzM0ODks
aW50IGFyZzM0OTAsaW50IGFyZzM0OTEsaW50IGFyZzM0OTIsaW50IGFyZzM0OTMsaW50IGFyZzM0
OTQsaW50IGFyZzM0OTUsaW50IGFyZzM0OTYsaW50IGFyZzM0OTcsaW50IGFyZzM0OTgsaW50IGFy
ZzM0OTksaW50IGFyZzM1MDAsaW50IGFyZzM1MDEsaW50IGFyZzM1MDIsaW50IGFyZzM1MDMsaW50
IGFyZzM1MDQsaW50IGFyZzM1MDUsaW50IGFyZzM1MDYsaW50IGFyZzM1MDcsaW50IGFyZzM1MDgs
aW50IGFyZzM1MDksaW50IGFyZzM1MTAsaW50IGFyZzM1MTEsaW50IGFyZzM1MTIsaW50IGFyZzM1
MTMsaW50IGFyZzM1MTQsaW50IGFyZzM1MTUsaW50IGFyZzM1MTYsaW50IGFyZzM1MTcsaW50IGFy
ZzM1MTgsaW50IGFyZzM1MTksaW50IGFyZzM1MjAsaW50IGFyZzM1MjEsaW50IGFyZzM1MjIsaW50
IGFyZzM1MjMsaW50IGFyZzM1MjQsaW50IGFyZzM1MjUsaW50IGFyZzM1MjYsaW50IGFyZzM1Mjcs
aW50IGFyZzM1MjgsaW50IGFyZzM1MjksaW50IGFyZzM1MzAsaW50IGFyZzM1MzEsaW50IGFyZzM1
MzIsaW50IGFyZzM1MzMsaW50IGFyZzM1MzQsaW50IGFyZzM1MzUsaW50IGFyZzM1MzYsaW50IGFy
ZzM1MzcsaW50IGFyZzM1MzgsaW50IGFyZzM1MzksaW50IGFyZzM1NDAsaW50IGFyZzM1NDEsaW50
IGFyZzM1NDIsaW50IGFyZzM1NDMsaW50IGFyZzM1NDQsaW50IGFyZzM1NDUsaW50IGFyZzM1NDYs
aW50IGFyZzM1NDcsaW50IGFyZzM1NDgsaW50IGFyZzM1NDksaW50IGFyZzM1NTAsaW50IGFyZzM1
NTEsaW50IGFyZzM1NTIsaW50IGFyZzM1NTMsaW50IGFyZzM1NTQsaW50IGFyZzM1NTUsaW50IGFy
ZzM1NTYsaW50IGFyZzM1NTcsaW50IGFyZzM1NTgsaW50IGFyZzM1NTksaW50IGFyZzM1NjAsaW50
IGFyZzM1NjEsaW50IGFyZzM1NjIsaW50IGFyZzM1NjMsaW50IGFyZzM1NjQsaW50IGFyZzM1NjUs
aW50IGFyZzM1NjYsaW50IGFyZzM1NjcsaW50IGFyZzM1NjgsaW50IGFyZzM1NjksaW50IGFyZzM1
NzAsaW50IGFyZzM1NzEsaW50IGFyZzM1NzIsaW50IGFyZzM1NzMsaW50IGFyZzM1NzQsaW50IGFy
ZzM1NzUsaW50IGFyZzM1NzYsaW50IGFyZzM1NzcsaW50IGFyZzM1NzgsaW50IGFyZzM1NzksaW50
IGFyZzM1ODAsaW50IGFyZzM1ODEsaW50IGFyZzM1ODIsaW50IGFyZzM1ODMsaW50IGFyZzM1ODQs
aW50IGFyZzM1ODUsaW50IGFyZzM1ODYsaW50IGFyZzM1ODcsaW50IGFyZzM1ODgsaW50IGFyZzM1
ODksaW50IGFyZzM1OTAsaW50IGFyZzM1OTEsaW50IGFyZzM1OTIsaW50IGFyZzM1OTMsaW50IGFy
ZzM1OTQsaW50IGFyZzM1OTUsaW50IGFyZzM1OTYsaW50IGFyZzM1OTcsaW50IGFyZzM1OTgsaW50
IGFyZzM1OTksaW50IGFyZzM2MDAsaW50IGFyZzM2MDEsaW50IGFyZzM2MDIsaW50IGFyZzM2MDMs
aW50IGFyZzM2MDQsaW50IGFyZzM2MDUsaW50IGFyZzM2MDYsaW50IGFyZzM2MDcsaW50IGFyZzM2
MDgsaW50IGFyZzM2MDksaW50IGFyZzM2MTAsaW50IGFyZzM2MTEsaW50IGFyZzM2MTIsaW50IGFy
ZzM2MTMsaW50IGFyZzM2MTQsaW50IGFyZzM2MTUsaW50IGFyZzM2MTYsaW50IGFyZzM2MTcsaW50
IGFyZzM2MTgsaW50IGFyZzM2MTksaW50IGFyZzM2MjAsaW50IGFyZzM2MjEsaW50IGFyZzM2MjIs
aW50IGFyZzM2MjMsaW50IGFyZzM2MjQsaW50IGFyZzM2MjUsaW50IGFyZzM2MjYsaW50IGFyZzM2
MjcsaW50IGFyZzM2MjgsaW50IGFyZzM2MjksaW50IGFyZzM2MzAsaW50IGFyZzM2MzEsaW50IGFy
ZzM2MzIsaW50IGFyZzM2MzMsaW50IGFyZzM2MzQsaW50IGFyZzM2MzUsaW50IGFyZzM2MzYsaW50
IGFyZzM2MzcsaW50IGFyZzM2MzgsaW50IGFyZzM2MzksaW50IGFyZzM2NDAsaW50IGFyZzM2NDEs
aW50IGFyZzM2NDIsaW50IGFyZzM2NDMsaW50IGFyZzM2NDQsaW50IGFyZzM2NDUsaW50IGFyZzM2
NDYsaW50IGFyZzM2NDcsaW50IGFyZzM2NDgsaW50IGFyZzM2NDksaW50IGFyZzM2NTAsaW50IGFy
ZzM2NTEsaW50IGFyZzM2NTIsaW50IGFyZzM2NTMsaW50IGFyZzM2NTQsaW50IGFyZzM2NTUsaW50
IGFyZzM2NTYsaW50IGFyZzM2NTcsaW50IGFyZzM2NTgsaW50IGFyZzM2NTksaW50IGFyZzM2NjAs
aW50IGFyZzM2NjEsaW50IGFyZzM2NjIsaW50IGFyZzM2NjMsaW50IGFyZzM2NjQsaW50IGFyZzM2
NjUsaW50IGFyZzM2NjYsaW50IGFyZzM2NjcsaW50IGFyZzM2NjgsaW50IGFyZzM2NjksaW50IGFy
ZzM2NzAsaW50IGFyZzM2NzEsaW50IGFyZzM2NzIsaW50IGFyZzM2NzMsaW50IGFyZzM2NzQsaW50
IGFyZzM2NzUsaW50IGFyZzM2NzYsaW50IGFyZzM2NzcsaW50IGFyZzM2NzgsaW50IGFyZzM2Nzks
aW50IGFyZzM2ODAsaW50IGFyZzM2ODEsaW50IGFyZzM2ODIsaW50IGFyZzM2ODMsaW50IGFyZzM2
ODQsaW50IGFyZzM2ODUsaW50IGFyZzM2ODYsaW50IGFyZzM2ODcsaW50IGFyZzM2ODgsaW50IGFy
ZzM2ODksaW50IGFyZzM2OTAsaW50IGFyZzM2OTEsaW50IGFyZzM2OTIsaW50IGFyZzM2OTMsaW50
IGFyZzM2OTQsaW50IGFyZzM2OTUsaW50IGFyZzM2OTYsaW50IGFyZzM2OTcsaW50IGFyZzM2OTgs
aW50IGFyZzM2OTksaW50IGFyZzM3MDAsaW50IGFyZzM3MDEsaW50IGFyZzM3MDIsaW50IGFyZzM3
MDMsaW50IGFyZzM3MDQsaW50IGFyZzM3MDUsaW50IGFyZzM3MDYsaW50IGFyZzM3MDcsaW50IGFy
ZzM3MDgsaW50IGFyZzM3MDksaW50IGFyZzM3MTAsaW50IGFyZzM3MTEsaW50IGFyZzM3MTIsaW50
IGFyZzM3MTMsaW50IGFyZzM3MTQsaW50IGFyZzM3MTUsaW50IGFyZzM3MTYsaW50IGFyZzM3MTcs
aW50IGFyZzM3MTgsaW50IGFyZzM3MTksaW50IGFyZzM3MjAsaW50IGFyZzM3MjEsaW50IGFyZzM3
MjIsaW50IGFyZzM3MjMsaW50IGFyZzM3MjQsaW50IGFyZzM3MjUsaW50IGFyZzM3MjYsaW50IGFy
ZzM3MjcsaW50IGFyZzM3MjgsaW50IGFyZzM3MjksaW50IGFyZzM3MzAsaW50IGFyZzM3MzEsaW50
IGFyZzM3MzIsaW50IGFyZzM3MzMsaW50IGFyZzM3MzQsaW50IGFyZzM3MzUsaW50IGFyZzM3MzYs
aW50IGFyZzM3MzcsaW50IGFyZzM3MzgsaW50IGFyZzM3MzksaW50IGFyZzM3NDAsaW50IGFyZzM3
NDEsaW50IGFyZzM3NDIsaW50IGFyZzM3NDMsaW50IGFyZzM3NDQsaW50IGFyZzM3NDUsaW50IGFy
ZzM3NDYsaW50IGFyZzM3NDcsaW50IGFyZzM3NDgsaW50IGFyZzM3NDksaW50IGFyZzM3NTAsaW50
IGFyZzM3NTEsaW50IGFyZzM3NTIsaW50IGFyZzM3NTMsaW50IGFyZzM3NTQsaW50IGFyZzM3NTUs
aW50IGFyZzM3NTYsaW50IGFyZzM3NTcsaW50IGFyZzM3NTgsaW50IGFyZzM3NTksaW50IGFyZzM3
NjAsaW50IGFyZzM3NjEsaW50IGFyZzM3NjIsaW50IGFyZzM3NjMsaW50IGFyZzM3NjQsaW50IGFy
ZzM3NjUsaW50IGFyZzM3NjYsaW50IGFyZzM3NjcsaW50IGFyZzM3NjgsaW50IGFyZzM3NjksaW50
IGFyZzM3NzAsaW50IGFyZzM3NzEsaW50IGFyZzM3NzIsaW50IGFyZzM3NzMsaW50IGFyZzM3NzQs
aW50IGFyZzM3NzUsaW50IGFyZzM3NzYsaW50IGFyZzM3NzcsaW50IGFyZzM3NzgsaW50IGFyZzM3
NzksaW50IGFyZzM3ODAsaW50IGFyZzM3ODEsaW50IGFyZzM3ODIsaW50IGFyZzM3ODMsaW50IGFy
ZzM3ODQsaW50IGFyZzM3ODUsaW50IGFyZzM3ODYsaW50IGFyZzM3ODcsaW50IGFyZzM3ODgsaW50
IGFyZzM3ODksaW50IGFyZzM3OTAsaW50IGFyZzM3OTEsaW50IGFyZzM3OTIsaW50IGFyZzM3OTMs
aW50IGFyZzM3OTQsaW50IGFyZzM3OTUsaW50IGFyZzM3OTYsaW50IGFyZzM3OTcsaW50IGFyZzM3
OTgsaW50IGFyZzM3OTksaW50IGFyZzM4MDAsaW50IGFyZzM4MDEsaW50IGFyZzM4MDIsaW50IGFy
ZzM4MDMsaW50IGFyZzM4MDQsaW50IGFyZzM4MDUsaW50IGFyZzM4MDYsaW50IGFyZzM4MDcsaW50
IGFyZzM4MDgsaW50IGFyZzM4MDksaW50IGFyZzM4MTAsaW50IGFyZzM4MTEsaW50IGFyZzM4MTIs
aW50IGFyZzM4MTMsaW50IGFyZzM4MTQsaW50IGFyZzM4MTUsaW50IGFyZzM4MTYsaW50IGFyZzM4
MTcsaW50IGFyZzM4MTgsaW50IGFyZzM4MTksaW50IGFyZzM4MjAsaW50IGFyZzM4MjEsaW50IGFy
ZzM4MjIsaW50IGFyZzM4MjMsaW50IGFyZzM4MjQsaW50IGFyZzM4MjUsaW50IGFyZzM4MjYsaW50
IGFyZzM4MjcsaW50IGFyZzM4MjgsaW50IGFyZzM4MjksaW50IGFyZzM4MzAsaW50IGFyZzM4MzEs
aW50IGFyZzM4MzIsaW50IGFyZzM4MzMsaW50IGFyZzM4MzQsaW50IGFyZzM4MzUsaW50IGFyZzM4
MzYsaW50IGFyZzM4MzcsaW50IGFyZzM4MzgsaW50IGFyZzM4MzksaW50IGFyZzM4NDAsaW50IGFy
ZzM4NDEsaW50IGFyZzM4NDIsaW50IGFyZzM4NDMsaW50IGFyZzM4NDQsaW50IGFyZzM4NDUsaW50
IGFyZzM4NDYsaW50IGFyZzM4NDcsaW50IGFyZzM4NDgsaW50IGFyZzM4NDksaW50IGFyZzM4NTAs
aW50IGFyZzM4NTEsaW50IGFyZzM4NTIsaW50IGFyZzM4NTMsaW50IGFyZzM4NTQsaW50IGFyZzM4
NTUsaW50IGFyZzM4NTYsaW50IGFyZzM4NTcsaW50IGFyZzM4NTgsaW50IGFyZzM4NTksaW50IGFy
ZzM4NjAsaW50IGFyZzM4NjEsaW50IGFyZzM4NjIsaW50IGFyZzM4NjMsaW50IGFyZzM4NjQsaW50
IGFyZzM4NjUsaW50IGFyZzM4NjYsaW50IGFyZzM4NjcsaW50IGFyZzM4NjgsaW50IGFyZzM4Njks
aW50IGFyZzM4NzAsaW50IGFyZzM4NzEsaW50IGFyZzM4NzIsaW50IGFyZzM4NzMsaW50IGFyZzM4
NzQsaW50IGFyZzM4NzUsaW50IGFyZzM4NzYsaW50IGFyZzM4NzcsaW50IGFyZzM4NzgsaW50IGFy
ZzM4NzksaW50IGFyZzM4ODAsaW50IGFyZzM4ODEsaW50IGFyZzM4ODIsaW50IGFyZzM4ODMsaW50
IGFyZzM4ODQsaW50IGFyZzM4ODUsaW50IGFyZzM4ODYsaW50IGFyZzM4ODcsaW50IGFyZzM4ODgs
aW50IGFyZzM4ODksaW50IGFyZzM4OTAsaW50IGFyZzM4OTEsaW50IGFyZzM4OTIsaW50IGFyZzM4
OTMsaW50IGFyZzM4OTQsaW50IGFyZzM4OTUsaW50IGFyZzM4OTYsaW50IGFyZzM4OTcsaW50IGFy
ZzM4OTgsaW50IGFyZzM4OTksaW50IGFyZzM5MDAsaW50IGFyZzM5MDEsaW50IGFyZzM5MDIsaW50
IGFyZzM5MDMsaW50IGFyZzM5MDQsaW50IGFyZzM5MDUsaW50IGFyZzM5MDYsaW50IGFyZzM5MDcs
aW50IGFyZzM5MDgsaW50IGFyZzM5MDksaW50IGFyZzM5MTAsaW50IGFyZzM5MTEsaW50IGFyZzM5
MTIsaW50IGFyZzM5MTMsaW50IGFyZzM5MTQsaW50IGFyZzM5MTUsaW50IGFyZzM5MTYsaW50IGFy
ZzM5MTcsaW50IGFyZzM5MTgsaW50IGFyZzM5MTksaW50IGFyZzM5MjAsaW50IGFyZzM5MjEsaW50
IGFyZzM5MjIsaW50IGFyZzM5MjMsaW50IGFyZzM5MjQsaW50IGFyZzM5MjUsaW50IGFyZzM5MjYs
aW50IGFyZzM5MjcsaW50IGFyZzM5MjgsaW50IGFyZzM5MjksaW50IGFyZzM5MzAsaW50IGFyZzM5
MzEsaW50IGFyZzM5MzIsaW50IGFyZzM5MzMsaW50IGFyZzM5MzQsaW50IGFyZzM5MzUsaW50IGFy
ZzM5MzYsaW50IGFyZzM5MzcsaW50IGFyZzM5MzgsaW50IGFyZzM5MzksaW50IGFyZzM5NDAsaW50
IGFyZzM5NDEsaW50IGFyZzM5NDIsaW50IGFyZzM5NDMsaW50IGFyZzM5NDQsaW50IGFyZzM5NDUs
aW50IGFyZzM5NDYsaW50IGFyZzM5NDcsaW50IGFyZzM5NDgsaW50IGFyZzM5NDksaW50IGFyZzM5
NTAsaW50IGFyZzM5NTEsaW50IGFyZzM5NTIsaW50IGFyZzM5NTMsaW50IGFyZzM5NTQsaW50IGFy
ZzM5NTUsaW50IGFyZzM5NTYsaW50IGFyZzM5NTcsaW50IGFyZzM5NTgsaW50IGFyZzM5NTksaW50
IGFyZzM5NjAsaW50IGFyZzM5NjEsaW50IGFyZzM5NjIsaW50IGFyZzM5NjMsaW50IGFyZzM5NjQs
aW50IGFyZzM5NjUsaW50IGFyZzM5NjYsaW50IGFyZzM5NjcsaW50IGFyZzM5NjgsaW50IGFyZzM5
NjksaW50IGFyZzM5NzAsaW50IGFyZzM5NzEsaW50IGFyZzM5NzIsaW50IGFyZzM5NzMsaW50IGFy
ZzM5NzQsaW50IGFyZzM5NzUsaW50IGFyZzM5NzYsaW50IGFyZzM5NzcsaW50IGFyZzM5NzgsaW50
IGFyZzM5NzksaW50IGFyZzM5ODAsaW50IGFyZzM5ODEsaW50IGFyZzM5ODIsaW50IGFyZzM5ODMs
aW50IGFyZzM5ODQsaW50IGFyZzM5ODUsaW50IGFyZzM5ODYsaW50IGFyZzM5ODcsaW50IGFyZzM5
ODgsaW50IGFyZzM5ODksaW50IGFyZzM5OTAsaW50IGFyZzM5OTEsaW50IGFyZzM5OTIsaW50IGFy
ZzM5OTMsaW50IGFyZzM5OTQsaW50IGFyZzM5OTUsaW50IGFyZzM5OTYsaW50IGFyZzM5OTcsaW50
IGFyZzM5OTgsaW50IGFyZzM5OTksaW50IGFyZzQwMDAsaW50IGFyZzQwMDEsaW50IGFyZzQwMDIs
aW50IGFyZzQwMDMsaW50IGFyZzQwMDQsaW50IGFyZzQwMDUsaW50IGFyZzQwMDYsaW50IGFyZzQw
MDcsaW50IGFyZzQwMDgsaW50IGFyZzQwMDksaW50IGFyZzQwMTAsaW50IGFyZzQwMTEsaW50IGFy
ZzQwMTIsaW50IGFyZzQwMTMsaW50IGFyZzQwMTQsaW50IGFyZzQwMTUsaW50IGFyZzQwMTYsaW50
IGFyZzQwMTcsaW50IGFyZzQwMTgsaW50IGFyZzQwMTksaW50IGFyZzQwMjAsaW50IGFyZzQwMjEs
aW50IGFyZzQwMjIsaW50IGFyZzQwMjMsaW50IGFyZzQwMjQsaW50IGFyZzQwMjUsaW50IGFyZzQw
MjYsaW50IGFyZzQwMjcsaW50IGFyZzQwMjgsaW50IGFyZzQwMjksaW50IGFyZzQwMzAsaW50IGFy
ZzQwMzEsaW50IGFyZzQwMzIsaW50IGFyZzQwMzMsaW50IGFyZzQwMzQsaW50IGFyZzQwMzUsaW50
IGFyZzQwMzYsaW50IGFyZzQwMzcsaW50IGFyZzQwMzgsaW50IGFyZzQwMzksaW50IGFyZzQwNDAs
aW50IGFyZzQwNDEsaW50IGFyZzQwNDIsaW50IGFyZzQwNDMsaW50IGFyZzQwNDQsaW50IGFyZzQw
NDUsaW50IGFyZzQwNDYsaW50IGFyZzQwNDcsaW50IGFyZzQwNDgsaW50IGFyZzQwNDksaW50IGFy
ZzQwNTAsaW50IGFyZzQwNTEsaW50IGFyZzQwNTIsaW50IGFyZzQwNTMsaW50IGFyZzQwNTQsaW50
IGFyZzQwNTUsaW50IGFyZzQwNTYsaW50IGFyZzQwNTcsaW50IGFyZzQwNTgsaW50IGFyZzQwNTks
aW50IGFyZzQwNjAsaW50IGFyZzQwNjEsaW50IGFyZzQwNjIsaW50IGFyZzQwNjMsaW50IGFyZzQw
NjQsaW50IGFyZzQwNjUsaW50IGFyZzQwNjYsaW50IGFyZzQwNjcsaW50IGFyZzQwNjgsaW50IGFy
ZzQwNjksaW50IGFyZzQwNzAsaW50IGFyZzQwNzEsaW50IGFyZzQwNzIsaW50IGFyZzQwNzMsaW50
IGFyZzQwNzQsaW50IGFyZzQwNzUsaW50IGFyZzQwNzYsaW50IGFyZzQwNzcsaW50IGFyZzQwNzgs
aW50IGFyZzQwNzksaW50IGFyZzQwODAsaW50IGFyZzQwODEsaW50IGFyZzQwODIsaW50IGFyZzQw
ODMsaW50IGFyZzQwODQsaW50IGFyZzQwODUsaW50IGFyZzQwODYsaW50IGFyZzQwODcsaW50IGFy
ZzQwODgsaW50IGFyZzQwODksaW50IGFyZzQwOTAsaW50IGFyZzQwOTEsaW50IGFyZzQwOTIsaW50
IGFyZzQwOTMsaW50IGFyZzQwOTQsaW50IGFyZzQwOTUsaW50IGFyZzQwOTYsaW50IGFyZzQwOTcs
aW50IGFyZzQwOTgsaW50IGFyZzQwOTksaW50IGFyZzQxMDAsaW50IGFyZzQxMDEsaW50IGFyZzQx
MDIsaW50IGFyZzQxMDMsaW50IGFyZzQxMDQsaW50IGFyZzQxMDUsaW50IGFyZzQxMDYsaW50IGFy
ZzQxMDcsaW50IGFyZzQxMDgsaW50IGFyZzQxMDksaW50IGFyZzQxMTAsaW50IGFyZzQxMTEsaW50
IGFyZzQxMTIsaW50IGFyZzQxMTMsaW50IGFyZzQxMTQsaW50IGFyZzQxMTUsaW50IGFyZzQxMTYs
aW50IGFyZzQxMTcsaW50IGFyZzQxMTgsaW50IGFyZzQxMTksaW50IGFyZzQxMjAsaW50IGFyZzQx
MjEsaW50IGFyZzQxMjIsaW50IGFyZzQxMjMsaW50IGFyZzQxMjQsaW50IGFyZzQxMjUsaW50IGFy
ZzQxMjYsaW50IGFyZzQxMjcsaW50IGFyZzQxMjgsaW50IGFyZzQxMjksaW50IGFyZzQxMzAsaW50
IGFyZzQxMzEsaW50IGFyZzQxMzIsaW50IGFyZzQxMzMsaW50IGFyZzQxMzQsaW50IGFyZzQxMzUs
aW50IGFyZzQxMzYsaW50IGFyZzQxMzcsaW50IGFyZzQxMzgsaW50IGFyZzQxMzksaW50IGFyZzQx
NDAsaW50IGFyZzQxNDEsaW50IGFyZzQxNDIsaW50IGFyZzQxNDMsaW50IGFyZzQxNDQsaW50IGFy
ZzQxNDUsaW50IGFyZzQxNDYsaW50IGFyZzQxNDcsaW50IGFyZzQxNDgsaW50IGFyZzQxNDksaW50
IGFyZzQxNTAsaW50IGFyZzQxNTEsaW50IGFyZzQxNTIsaW50IGFyZzQxNTMsaW50IGFyZzQxNTQs
aW50IGFyZzQxNTUsaW50IGFyZzQxNTYsaW50IGFyZzQxNTcsaW50IGFyZzQxNTgsaW50IGFyZzQx
NTksaW50IGFyZzQxNjAsaW50IGFyZzQxNjEsaW50IGFyZzQxNjIsaW50IGFyZzQxNjMsaW50IGFy
ZzQxNjQsaW50IGFyZzQxNjUsaW50IGFyZzQxNjYsaW50IGFyZzQxNjcsaW50IGFyZzQxNjgsaW50
IGFyZzQxNjksaW50IGFyZzQxNzAsaW50IGFyZzQxNzEsaW50IGFyZzQxNzIsaW50IGFyZzQxNzMs
aW50IGFyZzQxNzQsaW50IGFyZzQxNzUsaW50IGFyZzQxNzYsaW50IGFyZzQxNzcsaW50IGFyZzQx
NzgsaW50IGFyZzQxNzksaW50IGFyZzQxODAsaW50IGFyZzQxODEsaW50IGFyZzQxODIsaW50IGFy
ZzQxODMsaW50IGFyZzQxODQsaW50IGFyZzQxODUsaW50IGFyZzQxODYsaW50IGFyZzQxODcsaW50
IGFyZzQxODgsaW50IGFyZzQxODksaW50IGFyZzQxOTAsaW50IGFyZzQxOTEsaW50IGFyZzQxOTIs
aW50IGFyZzQxOTMsaW50IGFyZzQxOTQsaW50IGFyZzQxOTUsaW50IGFyZzQxOTYsaW50IGFyZzQx
OTcsaW50IGFyZzQxOTgsaW50IGFyZzQxOTksaW50IGFyZzQyMDAsaW50IGFyZzQyMDEsaW50IGFy
ZzQyMDIsaW50IGFyZzQyMDMsaW50IGFyZzQyMDQsaW50IGFyZzQyMDUsaW50IGFyZzQyMDYsaW50
IGFyZzQyMDcsaW50IGFyZzQyMDgsaW50IGFyZzQyMDksaW50IGFyZzQyMTAsaW50IGFyZzQyMTEs
aW50IGFyZzQyMTIsaW50IGFyZzQyMTMsaW50IGFyZzQyMTQsaW50IGFyZzQyMTUsaW50IGFyZzQy
MTYsaW50IGFyZzQyMTcsaW50IGFyZzQyMTgsaW50IGFyZzQyMTksaW50IGFyZzQyMjAsaW50IGFy
ZzQyMjEsaW50IGFyZzQyMjIsaW50IGFyZzQyMjMsaW50IGFyZzQyMjQsaW50IGFyZzQyMjUsaW50
IGFyZzQyMjYsaW50IGFyZzQyMjcsaW50IGFyZzQyMjgsaW50IGFyZzQyMjksaW50IGFyZzQyMzAs
aW50IGFyZzQyMzEsaW50IGFyZzQyMzIsaW50IGFyZzQyMzMsaW50IGFyZzQyMzQsaW50IGFyZzQy
MzUsaW50IGFyZzQyMzYsaW50IGFyZzQyMzcsaW50IGFyZzQyMzgsaW50IGFyZzQyMzksaW50IGFy
ZzQyNDAsaW50IGFyZzQyNDEsaW50IGFyZzQyNDIsaW50IGFyZzQyNDMsaW50IGFyZzQyNDQsaW50
IGFyZzQyNDUsaW50IGFyZzQyNDYsaW50IGFyZzQyNDcsaW50IGFyZzQyNDgsaW50IGFyZzQyNDks
aW50IGFyZzQyNTAsaW50IGFyZzQyNTEsaW50IGFyZzQyNTIsaW50IGFyZzQyNTMsaW50IGFyZzQy
NTQsaW50IGFyZzQyNTUsaW50IGFyZzQyNTYsaW50IGFyZzQyNTcsaW50IGFyZzQyNTgsaW50IGFy
ZzQyNTksaW50IGFyZzQyNjAsaW50IGFyZzQyNjEsaW50IGFyZzQyNjIsaW50IGFyZzQyNjMsaW50
IGFyZzQyNjQsaW50IGFyZzQyNjUsaW50IGFyZzQyNjYsaW50IGFyZzQyNjcsaW50IGFyZzQyNjgs
aW50IGFyZzQyNjksaW50IGFyZzQyNzAsaW50IGFyZzQyNzEsaW50IGFyZzQyNzIsaW50IGFyZzQy
NzMsaW50IGFyZzQyNzQsaW50IGFyZzQyNzUsaW50IGFyZzQyNzYsaW50IGFyZzQyNzcsaW50IGFy
ZzQyNzgsaW50IGFyZzQyNzksaW50IGFyZzQyODAsaW50IGFyZzQyODEsaW50IGFyZzQyODIsaW50
IGFyZzQyODMsaW50IGFyZzQyODQsaW50IGFyZzQyODUsaW50IGFyZzQyODYsaW50IGFyZzQyODcs
aW50IGFyZzQyODgsaW50IGFyZzQyODksaW50IGFyZzQyOTAsaW50IGFyZzQyOTEsaW50IGFyZzQy
OTIsaW50IGFyZzQyOTMsaW50IGFyZzQyOTQsaW50IGFyZzQyOTUsaW50IGFyZzQyOTYsaW50IGFy
ZzQyOTcsaW50IGFyZzQyOTgsaW50IGFyZzQyOTksaW50IGFyZzQzMDAsaW50IGFyZzQzMDEsaW50
IGFyZzQzMDIsaW50IGFyZzQzMDMsaW50IGFyZzQzMDQsaW50IGFyZzQzMDUsaW50IGFyZzQzMDYs
aW50IGFyZzQzMDcsaW50IGFyZzQzMDgsaW50IGFyZzQzMDksaW50IGFyZzQzMTAsaW50IGFyZzQz
MTEsaW50IGFyZzQzMTIsaW50IGFyZzQzMTMsaW50IGFyZzQzMTQsaW50IGFyZzQzMTUsaW50IGFy
ZzQzMTYsaW50IGFyZzQzMTcsaW50IGFyZzQzMTgsaW50IGFyZzQzMTksaW50IGFyZzQzMjAsaW50
IGFyZzQzMjEsaW50IGFyZzQzMjIsaW50IGFyZzQzMjMsaW50IGFyZzQzMjQsaW50IGFyZzQzMjUs
aW50IGFyZzQzMjYsaW50IGFyZzQzMjcsaW50IGFyZzQzMjgsaW50IGFyZzQzMjksaW50IGFyZzQz
MzAsaW50IGFyZzQzMzEsaW50IGFyZzQzMzIsaW50IGFyZzQzMzMsaW50IGFyZzQzMzQsaW50IGFy
ZzQzMzUsaW50IGFyZzQzMzYsaW50IGFyZzQzMzcsaW50IGFyZzQzMzgsaW50IGFyZzQzMzksaW50
IGFyZzQzNDAsaW50IGFyZzQzNDEsaW50IGFyZzQzNDIsaW50IGFyZzQzNDMsaW50IGFyZzQzNDQs
aW50IGFyZzQzNDUsaW50IGFyZzQzNDYsaW50IGFyZzQzNDcsaW50IGFyZzQzNDgsaW50IGFyZzQz
NDksaW50IGFyZzQzNTAsaW50IGFyZzQzNTEsaW50IGFyZzQzNTIsaW50IGFyZzQzNTMsaW50IGFy
ZzQzNTQsaW50IGFyZzQzNTUsaW50IGFyZzQzNTYsaW50IGFyZzQzNTcsaW50IGFyZzQzNTgsaW50
IGFyZzQzNTksaW50IGFyZzQzNjAsaW50IGFyZzQzNjEsaW50IGFyZzQzNjIsaW50IGFyZzQzNjMs
aW50IGFyZzQzNjQsaW50IGFyZzQzNjUsaW50IGFyZzQzNjYsaW50IGFyZzQzNjcsaW50IGFyZzQz
NjgsaW50IGFyZzQzNjksaW50IGFyZzQzNzAsaW50IGFyZzQzNzEsaW50IGFyZzQzNzIsaW50IGFy
ZzQzNzMsaW50IGFyZzQzNzQsaW50IGFyZzQzNzUsaW50IGFyZzQzNzYsaW50IGFyZzQzNzcsaW50
IGFyZzQzNzgsaW50IGFyZzQzNzksaW50IGFyZzQzODAsaW50IGFyZzQzODEsaW50IGFyZzQzODIs
aW50IGFyZzQzODMsaW50IGFyZzQzODQsaW50IGFyZzQzODUsaW50IGFyZzQzODYsaW50IGFyZzQz
ODcsaW50IGFyZzQzODgsaW50IGFyZzQzODksaW50IGFyZzQzOTAsaW50IGFyZzQzOTEsaW50IGFy
ZzQzOTIsaW50IGFyZzQzOTMsaW50IGFyZzQzOTQsaW50IGFyZzQzOTUsaW50IGFyZzQzOTYsaW50
IGFyZzQzOTcsaW50IGFyZzQzOTgsaW50IGFyZzQzOTksaW50IGFyZzQ0MDAsaW50IGFyZzQ0MDEs
aW50IGFyZzQ0MDIsaW50IGFyZzQ0MDMsaW50IGFyZzQ0MDQsaW50IGFyZzQ0MDUsaW50IGFyZzQ0
MDYsaW50IGFyZzQ0MDcsaW50IGFyZzQ0MDgsaW50IGFyZzQ0MDksaW50IGFyZzQ0MTAsaW50IGFy
ZzQ0MTEsaW50IGFyZzQ0MTIsaW50IGFyZzQ0MTMsaW50IGFyZzQ0MTQsaW50IGFyZzQ0MTUsaW50
IGFyZzQ0MTYsaW50IGFyZzQ0MTcsaW50IGFyZzQ0MTgsaW50IGFyZzQ0MTksaW50IGFyZzQ0MjAs
aW50IGFyZzQ0MjEsaW50IGFyZzQ0MjIsaW50IGFyZzQ0MjMsaW50IGFyZzQ0MjQsaW50IGFyZzQ0
MjUsaW50IGFyZzQ0MjYsaW50IGFyZzQ0MjcsaW50IGFyZzQ0MjgsaW50IGFyZzQ0MjksaW50IGFy
ZzQ0MzAsaW50IGFyZzQ0MzEsaW50IGFyZzQ0MzIsaW50IGFyZzQ0MzMsaW50IGFyZzQ0MzQsaW50
IGFyZzQ0MzUsaW50IGFyZzQ0MzYsaW50IGFyZzQ0MzcsaW50IGFyZzQ0MzgsaW50IGFyZzQ0Mzks
aW50IGFyZzQ0NDAsaW50IGFyZzQ0NDEsaW50IGFyZzQ0NDIsaW50IGFyZzQ0NDMsaW50IGFyZzQ0
NDQsaW50IGFyZzQ0NDUsaW50IGFyZzQ0NDYsaW50IGFyZzQ0NDcsaW50IGFyZzQ0NDgsaW50IGFy
ZzQ0NDksaW50IGFyZzQ0NTAsaW50IGFyZzQ0NTEsaW50IGFyZzQ0NTIsaW50IGFyZzQ0NTMsaW50
IGFyZzQ0NTQsaW50IGFyZzQ0NTUsaW50IGFyZzQ0NTYsaW50IGFyZzQ0NTcsaW50IGFyZzQ0NTgs
aW50IGFyZzQ0NTksaW50IGFyZzQ0NjAsaW50IGFyZzQ0NjEsaW50IGFyZzQ0NjIsaW50IGFyZzQ0
NjMsaW50IGFyZzQ0NjQsaW50IGFyZzQ0NjUsaW50IGFyZzQ0NjYsaW50IGFyZzQ0NjcsaW50IGFy
ZzQ0NjgsaW50IGFyZzQ0NjksaW50IGFyZzQ0NzAsaW50IGFyZzQ0NzEsaW50IGFyZzQ0NzIsaW50
IGFyZzQ0NzMsaW50IGFyZzQ0NzQsaW50IGFyZzQ0NzUsaW50IGFyZzQ0NzYsaW50IGFyZzQ0Nzcs
aW50IGFyZzQ0NzgsaW50IGFyZzQ0NzksaW50IGFyZzQ0ODAsaW50IGFyZzQ0ODEsaW50IGFyZzQ0
ODIsaW50IGFyZzQ0ODMsaW50IGFyZzQ0ODQsaW50IGFyZzQ0ODUsaW50IGFyZzQ0ODYsaW50IGFy
ZzQ0ODcsaW50IGFyZzQ0ODgsaW50IGFyZzQ0ODksaW50IGFyZzQ0OTAsaW50IGFyZzQ0OTEsaW50
IGFyZzQ0OTIsaW50IGFyZzQ0OTMsaW50IGFyZzQ0OTQsaW50IGFyZzQ0OTUsaW50IGFyZzQ0OTYs
aW50IGFyZzQ0OTcsaW50IGFyZzQ0OTgsaW50IGFyZzQ0OTksaW50IGFyZzQ1MDAsaW50IGFyZzQ1
MDEsaW50IGFyZzQ1MDIsaW50IGFyZzQ1MDMsaW50IGFyZzQ1MDQsaW50IGFyZzQ1MDUsaW50IGFy
ZzQ1MDYsaW50IGFyZzQ1MDcsaW50IGFyZzQ1MDgsaW50IGFyZzQ1MDksaW50IGFyZzQ1MTAsaW50
IGFyZzQ1MTEsaW50IGFyZzQ1MTIsaW50IGFyZzQ1MTMsaW50IGFyZzQ1MTQsaW50IGFyZzQ1MTUs
aW50IGFyZzQ1MTYsaW50IGFyZzQ1MTcsaW50IGFyZzQ1MTgsaW50IGFyZzQ1MTksaW50IGFyZzQ1
MjAsaW50IGFyZzQ1MjEsaW50IGFyZzQ1MjIsaW50IGFyZzQ1MjMsaW50IGFyZzQ1MjQsaW50IGFy
ZzQ1MjUsaW50IGFyZzQ1MjYsaW50IGFyZzQ1MjcsaW50IGFyZzQ1MjgsaW50IGFyZzQ1MjksaW50
IGFyZzQ1MzAsaW50IGFyZzQ1MzEsaW50IGFyZzQ1MzIsaW50IGFyZzQ1MzMsaW50IGFyZzQ1MzQs
aW50IGFyZzQ1MzUsaW50IGFyZzQ1MzYsaW50IGFyZzQ1MzcsaW50IGFyZzQ1MzgsaW50IGFyZzQ1
MzksaW50IGFyZzQ1NDAsaW50IGFyZzQ1NDEsaW50IGFyZzQ1NDIsaW50IGFyZzQ1NDMsaW50IGFy
ZzQ1NDQsaW50IGFyZzQ1NDUsaW50IGFyZzQ1NDYsaW50IGFyZzQ1NDcsaW50IGFyZzQ1NDgsaW50
IGFyZzQ1NDksaW50IGFyZzQ1NTAsaW50IGFyZzQ1NTEsaW50IGFyZzQ1NTIsaW50IGFyZzQ1NTMs
aW50IGFyZzQ1NTQsaW50IGFyZzQ1NTUsaW50IGFyZzQ1NTYsaW50IGFyZzQ1NTcsaW50IGFyZzQ1
NTgsaW50IGFyZzQ1NTksaW50IGFyZzQ1NjAsaW50IGFyZzQ1NjEsaW50IGFyZzQ1NjIsaW50IGFy
ZzQ1NjMsaW50IGFyZzQ1NjQsaW50IGFyZzQ1NjUsaW50IGFyZzQ1NjYsaW50IGFyZzQ1NjcsaW50
IGFyZzQ1NjgsaW50IGFyZzQ1NjksaW50IGFyZzQ1NzAsaW50IGFyZzQ1NzEsaW50IGFyZzQ1NzIs
aW50IGFyZzQ1NzMsaW50IGFyZzQ1NzQsaW50IGFyZzQ1NzUsaW50IGFyZzQ1NzYsaW50IGFyZzQ1
NzcsaW50IGFyZzQ1NzgsaW50IGFyZzQ1NzksaW50IGFyZzQ1ODAsaW50IGFyZzQ1ODEsaW50IGFy
ZzQ1ODIsaW50IGFyZzQ1ODMsaW50IGFyZzQ1ODQsaW50IGFyZzQ1ODUsaW50IGFyZzQ1ODYsaW50
IGFyZzQ1ODcsaW50IGFyZzQ1ODgsaW50IGFyZzQ1ODksaW50IGFyZzQ1OTAsaW50IGFyZzQ1OTEs
aW50IGFyZzQ1OTIsaW50IGFyZzQ1OTMsaW50IGFyZzQ1OTQsaW50IGFyZzQ1OTUsaW50IGFyZzQ1
OTYsaW50IGFyZzQ1OTcsaW50IGFyZzQ1OTgsaW50IGFyZzQ1OTksaW50IGFyZzQ2MDAsaW50IGFy
ZzQ2MDEsaW50IGFyZzQ2MDIsaW50IGFyZzQ2MDMsaW50IGFyZzQ2MDQsaW50IGFyZzQ2MDUsaW50
IGFyZzQ2MDYsaW50IGFyZzQ2MDcsaW50IGFyZzQ2MDgsaW50IGFyZzQ2MDksaW50IGFyZzQ2MTAs
aW50IGFyZzQ2MTEsaW50IGFyZzQ2MTIsaW50IGFyZzQ2MTMsaW50IGFyZzQ2MTQsaW50IGFyZzQ2
MTUsaW50IGFyZzQ2MTYsaW50IGFyZzQ2MTcsaW50IGFyZzQ2MTgsaW50IGFyZzQ2MTksaW50IGFy
ZzQ2MjAsaW50IGFyZzQ2MjEsaW50IGFyZzQ2MjIsaW50IGFyZzQ2MjMsaW50IGFyZzQ2MjQsaW50
IGFyZzQ2MjUsaW50IGFyZzQ2MjYsaW50IGFyZzQ2MjcsaW50IGFyZzQ2MjgsaW50IGFyZzQ2Mjks
aW50IGFyZzQ2MzAsaW50IGFyZzQ2MzEsaW50IGFyZzQ2MzIsaW50IGFyZzQ2MzMsaW50IGFyZzQ2
MzQsaW50IGFyZzQ2MzUsaW50IGFyZzQ2MzYsaW50IGFyZzQ2MzcsaW50IGFyZzQ2MzgsaW50IGFy
ZzQ2MzksaW50IGFyZzQ2NDAsaW50IGFyZzQ2NDEsaW50IGFyZzQ2NDIsaW50IGFyZzQ2NDMsaW50
IGFyZzQ2NDQsaW50IGFyZzQ2NDUsaW50IGFyZzQ2NDYsaW50IGFyZzQ2NDcsaW50IGFyZzQ2NDgs
aW50IGFyZzQ2NDksaW50IGFyZzQ2NTAsaW50IGFyZzQ2NTEsaW50IGFyZzQ2NTIsaW50IGFyZzQ2
NTMsaW50IGFyZzQ2NTQsaW50IGFyZzQ2NTUsaW50IGFyZzQ2NTYsaW50IGFyZzQ2NTcsaW50IGFy
ZzQ2NTgsaW50IGFyZzQ2NTksaW50IGFyZzQ2NjAsaW50IGFyZzQ2NjEsaW50IGFyZzQ2NjIsaW50
IGFyZzQ2NjMsaW50IGFyZzQ2NjQsaW50IGFyZzQ2NjUsaW50IGFyZzQ2NjYsaW50IGFyZzQ2Njcs
aW50IGFyZzQ2NjgsaW50IGFyZzQ2NjksaW50IGFyZzQ2NzAsaW50IGFyZzQ2NzEsaW50IGFyZzQ2
NzIsaW50IGFyZzQ2NzMsaW50IGFyZzQ2NzQsaW50IGFyZzQ2NzUsaW50IGFyZzQ2NzYsaW50IGFy
ZzQ2NzcsaW50IGFyZzQ2NzgsaW50IGFyZzQ2NzksaW50IGFyZzQ2ODAsaW50IGFyZzQ2ODEsaW50
IGFyZzQ2ODIsaW50IGFyZzQ2ODMsaW50IGFyZzQ2ODQsaW50IGFyZzQ2ODUsaW50IGFyZzQ2ODYs
aW50IGFyZzQ2ODcsaW50IGFyZzQ2ODgsaW50IGFyZzQ2ODksaW50IGFyZzQ2OTAsaW50IGFyZzQ2
OTEsaW50IGFyZzQ2OTIsaW50IGFyZzQ2OTMsaW50IGFyZzQ2OTQsaW50IGFyZzQ2OTUsaW50IGFy
ZzQ2OTYsaW50IGFyZzQ2OTcsaW50IGFyZzQ2OTgsaW50IGFyZzQ2OTksaW50IGFyZzQ3MDAsaW50
IGFyZzQ3MDEsaW50IGFyZzQ3MDIsaW50IGFyZzQ3MDMsaW50IGFyZzQ3MDQsaW50IGFyZzQ3MDUs
aW50IGFyZzQ3MDYsaW50IGFyZzQ3MDcsaW50IGFyZzQ3MDgsaW50IGFyZzQ3MDksaW50IGFyZzQ3
MTAsaW50IGFyZzQ3MTEsaW50IGFyZzQ3MTIsaW50IGFyZzQ3MTMsaW50IGFyZzQ3MTQsaW50IGFy
ZzQ3MTUsaW50IGFyZzQ3MTYsaW50IGFyZzQ3MTcsaW50IGFyZzQ3MTgsaW50IGFyZzQ3MTksaW50
IGFyZzQ3MjAsaW50IGFyZzQ3MjEsaW50IGFyZzQ3MjIsaW50IGFyZzQ3MjMsaW50IGFyZzQ3MjQs
aW50IGFyZzQ3MjUsaW50IGFyZzQ3MjYsaW50IGFyZzQ3MjcsaW50IGFyZzQ3MjgsaW50IGFyZzQ3
MjksaW50IGFyZzQ3MzAsaW50IGFyZzQ3MzEsaW50IGFyZzQ3MzIsaW50IGFyZzQ3MzMsaW50IGFy
ZzQ3MzQsaW50IGFyZzQ3MzUsaW50IGFyZzQ3MzYsaW50IGFyZzQ3MzcsaW50IGFyZzQ3MzgsaW50
IGFyZzQ3MzksaW50IGFyZzQ3NDAsaW50IGFyZzQ3NDEsaW50IGFyZzQ3NDIsaW50IGFyZzQ3NDMs
aW50IGFyZzQ3NDQsaW50IGFyZzQ3NDUsaW50IGFyZzQ3NDYsaW50IGFyZzQ3NDcsaW50IGFyZzQ3
NDgsaW50IGFyZzQ3NDksaW50IGFyZzQ3NTAsaW50IGFyZzQ3NTEsaW50IGFyZzQ3NTIsaW50IGFy
ZzQ3NTMsaW50IGFyZzQ3NTQsaW50IGFyZzQ3NTUsaW50IGFyZzQ3NTYsaW50IGFyZzQ3NTcsaW50
IGFyZzQ3NTgsaW50IGFyZzQ3NTksaW50IGFyZzQ3NjAsaW50IGFyZzQ3NjEsaW50IGFyZzQ3NjIs
aW50IGFyZzQ3NjMsaW50IGFyZzQ3NjQsaW50IGFyZzQ3NjUsaW50IGFyZzQ3NjYsaW50IGFyZzQ3
NjcsaW50IGFyZzQ3NjgsaW50IGFyZzQ3NjksaW50IGFyZzQ3NzAsaW50IGFyZzQ3NzEsaW50IGFy
ZzQ3NzIsaW50IGFyZzQ3NzMsaW50IGFyZzQ3NzQsaW50IGFyZzQ3NzUsaW50IGFyZzQ3NzYsaW50
IGFyZzQ3NzcsaW50IGFyZzQ3NzgsaW50IGFyZzQ3NzksaW50IGFyZzQ3ODAsaW50IGFyZzQ3ODEs
aW50IGFyZzQ3ODIsaW50IGFyZzQ3ODMsaW50IGFyZzQ3ODQsaW50IGFyZzQ3ODUsaW50IGFyZzQ3
ODYsaW50IGFyZzQ3ODcsaW50IGFyZzQ3ODgsaW50IGFyZzQ3ODksaW50IGFyZzQ3OTAsaW50IGFy
ZzQ3OTEsaW50IGFyZzQ3OTIsaW50IGFyZzQ3OTMsaW50IGFyZzQ3OTQsaW50IGFyZzQ3OTUsaW50
IGFyZzQ3OTYsaW50IGFyZzQ3OTcsaW50IGFyZzQ3OTgsaW50IGFyZzQ3OTksaW50IGFyZzQ4MDAs
aW50IGFyZzQ4MDEsaW50IGFyZzQ4MDIsaW50IGFyZzQ4MDMsaW50IGFyZzQ4MDQsaW50IGFyZzQ4
MDUsaW50IGFyZzQ4MDYsaW50IGFyZzQ4MDcsaW50IGFyZzQ4MDgsaW50IGFyZzQ4MDksaW50IGFy
ZzQ4MTAsaW50IGFyZzQ4MTEsaW50IGFyZzQ4MTIsaW50IGFyZzQ4MTMsaW50IGFyZzQ4MTQsaW50
IGFyZzQ4MTUsaW50IGFyZzQ4MTYsaW50IGFyZzQ4MTcsaW50IGFyZzQ4MTgsaW50IGFyZzQ4MTks
aW50IGFyZzQ4MjAsaW50IGFyZzQ4MjEsaW50IGFyZzQ4MjIsaW50IGFyZzQ4MjMsaW50IGFyZzQ4
MjQsaW50IGFyZzQ4MjUsaW50IGFyZzQ4MjYsaW50IGFyZzQ4MjcsaW50IGFyZzQ4MjgsaW50IGFy
ZzQ4MjksaW50IGFyZzQ4MzAsaW50IGFyZzQ4MzEsaW50IGFyZzQ4MzIsaW50IGFyZzQ4MzMsaW50
IGFyZzQ4MzQsaW50IGFyZzQ4MzUsaW50IGFyZzQ4MzYsaW50IGFyZzQ4MzcsaW50IGFyZzQ4Mzgs
aW50IGFyZzQ4MzksaW50IGFyZzQ4NDAsaW50IGFyZzQ4NDEsaW50IGFyZzQ4NDIsaW50IGFyZzQ4
NDMsaW50IGFyZzQ4NDQsaW50IGFyZzQ4NDUsaW50IGFyZzQ4NDYsaW50IGFyZzQ4NDcsaW50IGFy
ZzQ4NDgsaW50IGFyZzQ4NDksaW50IGFyZzQ4NTAsaW50IGFyZzQ4NTEsaW50IGFyZzQ4NTIsaW50
IGFyZzQ4NTMsaW50IGFyZzQ4NTQsaW50IGFyZzQ4NTUsaW50IGFyZzQ4NTYsaW50IGFyZzQ4NTcs
aW50IGFyZzQ4NTgsaW50IGFyZzQ4NTksaW50IGFyZzQ4NjAsaW50IGFyZzQ4NjEsaW50IGFyZzQ4
NjIsaW50IGFyZzQ4NjMsaW50IGFyZzQ4NjQsaW50IGFyZzQ4NjUsaW50IGFyZzQ4NjYsaW50IGFy
ZzQ4NjcsaW50IGFyZzQ4NjgsaW50IGFyZzQ4NjksaW50IGFyZzQ4NzAsaW50IGFyZzQ4NzEsaW50
IGFyZzQ4NzIsaW50IGFyZzQ4NzMsaW50IGFyZzQ4NzQsaW50IGFyZzQ4NzUsaW50IGFyZzQ4NzYs
aW50IGFyZzQ4NzcsaW50IGFyZzQ4NzgsaW50IGFyZzQ4NzksaW50IGFyZzQ4ODAsaW50IGFyZzQ4
ODEsaW50IGFyZzQ4ODIsaW50IGFyZzQ4ODMsaW50IGFyZzQ4ODQsaW50IGFyZzQ4ODUsaW50IGFy
ZzQ4ODYsaW50IGFyZzQ4ODcsaW50IGFyZzQ4ODgsaW50IGFyZzQ4ODksaW50IGFyZzQ4OTAsaW50
IGFyZzQ4OTEsaW50IGFyZzQ4OTIsaW50IGFyZzQ4OTMsaW50IGFyZzQ4OTQsaW50IGFyZzQ4OTUs
aW50IGFyZzQ4OTYsaW50IGFyZzQ4OTcsaW50IGFyZzQ4OTgsaW50IGFyZzQ4OTksaW50IGFyZzQ5
MDAsaW50IGFyZzQ5MDEsaW50IGFyZzQ5MDIsaW50IGFyZzQ5MDMsaW50IGFyZzQ5MDQsaW50IGFy
ZzQ5MDUsaW50IGFyZzQ5MDYsaW50IGFyZzQ5MDcsaW50IGFyZzQ5MDgsaW50IGFyZzQ5MDksaW50
IGFyZzQ5MTAsaW50IGFyZzQ5MTEsaW50IGFyZzQ5MTIsaW50IGFyZzQ5MTMsaW50IGFyZzQ5MTQs
aW50IGFyZzQ5MTUsaW50IGFyZzQ5MTYsaW50IGFyZzQ5MTcsaW50IGFyZzQ5MTgsaW50IGFyZzQ5
MTksaW50IGFyZzQ5MjAsaW50IGFyZzQ5MjEsaW50IGFyZzQ5MjIsaW50IGFyZzQ5MjMsaW50IGFy
ZzQ5MjQsaW50IGFyZzQ5MjUsaW50IGFyZzQ5MjYsaW50IGFyZzQ5MjcsaW50IGFyZzQ5MjgsaW50
IGFyZzQ5MjksaW50IGFyZzQ5MzAsaW50IGFyZzQ5MzEsaW50IGFyZzQ5MzIsaW50IGFyZzQ5MzMs
aW50IGFyZzQ5MzQsaW50IGFyZzQ5MzUsaW50IGFyZzQ5MzYsaW50IGFyZzQ5MzcsaW50IGFyZzQ5
MzgsaW50IGFyZzQ5MzksaW50IGFyZzQ5NDAsaW50IGFyZzQ5NDEsaW50IGFyZzQ5NDIsaW50IGFy
ZzQ5NDMsaW50IGFyZzQ5NDQsaW50IGFyZzQ5NDUsaW50IGFyZzQ5NDYsaW50IGFyZzQ5NDcsaW50
IGFyZzQ5NDgsaW50IGFyZzQ5NDksaW50IGFyZzQ5NTAsaW50IGFyZzQ5NTEsaW50IGFyZzQ5NTIs
aW50IGFyZzQ5NTMsaW50IGFyZzQ5NTQsaW50IGFyZzQ5NTUsaW50IGFyZzQ5NTYsaW50IGFyZzQ5
NTcsaW50IGFyZzQ5NTgsaW50IGFyZzQ5NTksaW50IGFyZzQ5NjAsaW50IGFyZzQ5NjEsaW50IGFy
ZzQ5NjIsaW50IGFyZzQ5NjMsaW50IGFyZzQ5NjQsaW50IGFyZzQ5NjUsaW50IGFyZzQ5NjYsaW50
IGFyZzQ5NjcsaW50IGFyZzQ5NjgsaW50IGFyZzQ5NjksaW50IGFyZzQ5NzAsaW50IGFyZzQ5NzEs
aW50IGFyZzQ5NzIsaW50IGFyZzQ5NzMsaW50IGFyZzQ5NzQsaW50IGFyZzQ5NzUsaW50IGFyZzQ5
NzYsaW50IGFyZzQ5NzcsaW50IGFyZzQ5NzgsaW50IGFyZzQ5NzksaW50IGFyZzQ5ODAsaW50IGFy
ZzQ5ODEsaW50IGFyZzQ5ODIsaW50IGFyZzQ5ODMsaW50IGFyZzQ5ODQsaW50IGFyZzQ5ODUsaW50
IGFyZzQ5ODYsaW50IGFyZzQ5ODcsaW50IGFyZzQ5ODgsaW50IGFyZzQ5ODksaW50IGFyZzQ5OTAs
aW50IGFyZzQ5OTEsaW50IGFyZzQ5OTIsaW50IGFyZzQ5OTMsaW50IGFyZzQ5OTQsaW50IGFyZzQ5
OTUsaW50IGFyZzQ5OTYsaW50IGFyZzQ5OTcsaW50IGFyZzQ5OTgsaW50IGFyZzQ5OTkpIHsgcmV0
dXJuIGFyZzArYXJnMSthcmcyK2FyZzMrYXJnNCthcmc1K2FyZzYrYXJnNythcmc4K2FyZzkrYXJn
MTArYXJnMTErYXJnMTIrYXJnMTMrYXJnMTQrYXJnMTUrYXJnMTYrYXJnMTcrYXJnMTgrYXJnMTkr
YXJnMjArYXJnMjErYXJnMjIrYXJnMjMrYXJnMjQrYXJnMjUrYXJnMjYrYXJnMjcrYXJnMjgrYXJn
MjkrYXJnMzArYXJnMzErYXJnMzIrYXJnMzMrYXJnMzQrYXJnMzUrYXJnMzYrYXJnMzcrYXJnMzgr
YXJnMzkrYXJnNDArYXJnNDErYXJnNDIrYXJnNDMrYXJnNDQrYXJnNDUrYXJnNDYrYXJnNDcrYXJn
NDgrYXJnNDkrYXJnNTArYXJnNTErYXJnNTIrYXJnNTMrYXJnNTQrYXJnNTUrYXJnNTYrYXJnNTcr
YXJnNTgrYXJnNTkrYXJnNjArYXJnNjErYXJnNjIrYXJnNjMrYXJnNjQrYXJnNjUrYXJnNjYrYXJn
NjcrYXJnNjgrYXJnNjkrYXJnNzArYXJnNzErYXJnNzIrYXJnNzMrYXJnNzQrYXJnNzUrYXJnNzYr
YXJnNzcrYXJnNzgrYXJnNzkrYXJnODArYXJnODErYXJnODIrYXJnODMrYXJnODQrYXJnODUrYXJn
ODYrYXJnODcrYXJnODgrYXJnODkrYXJnOTArYXJnOTErYXJnOTIrYXJnOTMrYXJnOTQrYXJnOTUr
YXJnOTYrYXJnOTcrYXJnOTgrYXJnOTkrYXJnMTAwK2FyZzEwMSthcmcxMDIrYXJnMTAzK2FyZzEw
NCthcmcxMDUrYXJnMTA2K2FyZzEwNythcmcxMDgrYXJnMTA5K2FyZzExMCthcmcxMTErYXJnMTEy
K2FyZzExMythcmcxMTQrYXJnMTE1K2FyZzExNithcmcxMTcrYXJnMTE4K2FyZzExOSthcmcxMjAr
YXJnMTIxK2FyZzEyMithcmcxMjMrYXJnMTI0K2FyZzEyNSthcmcxMjYrYXJnMTI3K2FyZzEyOCth
cmcxMjkrYXJnMTMwK2FyZzEzMSthcmcxMzIrYXJnMTMzK2FyZzEzNCthcmcxMzUrYXJnMTM2K2Fy
ZzEzNythcmcxMzgrYXJnMTM5K2FyZzE0MCthcmcxNDErYXJnMTQyK2FyZzE0MythcmcxNDQrYXJn
MTQ1K2FyZzE0NithcmcxNDcrYXJnMTQ4K2FyZzE0OSthcmcxNTArYXJnMTUxK2FyZzE1Mithcmcx
NTMrYXJnMTU0K2FyZzE1NSthcmcxNTYrYXJnMTU3K2FyZzE1OCthcmcxNTkrYXJnMTYwK2FyZzE2
MSthcmcxNjIrYXJnMTYzK2FyZzE2NCthcmcxNjUrYXJnMTY2K2FyZzE2NythcmcxNjgrYXJnMTY5
K2FyZzE3MCthcmcxNzErYXJnMTcyK2FyZzE3MythcmcxNzQrYXJnMTc1K2FyZzE3NithcmcxNzcr
YXJnMTc4K2FyZzE3OSthcmcxODArYXJnMTgxK2FyZzE4MithcmcxODMrYXJnMTg0K2FyZzE4NSth
cmcxODYrYXJnMTg3K2FyZzE4OCthcmcxODkrYXJnMTkwK2FyZzE5MSthcmcxOTIrYXJnMTkzK2Fy
ZzE5NCthcmcxOTUrYXJnMTk2K2FyZzE5NythcmcxOTgrYXJnMTk5K2FyZzIwMCthcmcyMDErYXJn
MjAyK2FyZzIwMythcmcyMDQrYXJnMjA1K2FyZzIwNithcmcyMDcrYXJnMjA4K2FyZzIwOSthcmcy
MTArYXJnMjExK2FyZzIxMithcmcyMTMrYXJnMjE0K2FyZzIxNSthcmcyMTYrYXJnMjE3K2FyZzIx
OCthcmcyMTkrYXJnMjIwK2FyZzIyMSthcmcyMjIrYXJnMjIzK2FyZzIyNCthcmcyMjUrYXJnMjI2
K2FyZzIyNythcmcyMjgrYXJnMjI5K2FyZzIzMCthcmcyMzErYXJnMjMyK2FyZzIzMythcmcyMzQr
YXJnMjM1K2FyZzIzNithcmcyMzcrYXJnMjM4K2FyZzIzOSthcmcyNDArYXJnMjQxK2FyZzI0Mith
cmcyNDMrYXJnMjQ0K2FyZzI0NSthcmcyNDYrYXJnMjQ3K2FyZzI0OCthcmcyNDkrYXJnMjUwK2Fy
ZzI1MSthcmcyNTIrYXJnMjUzK2FyZzI1NCthcmcyNTUrYXJnMjU2K2FyZzI1NythcmcyNTgrYXJn
MjU5K2FyZzI2MCthcmcyNjErYXJnMjYyK2FyZzI2MythcmcyNjQrYXJnMjY1K2FyZzI2Nithcmcy
NjcrYXJnMjY4K2FyZzI2OSthcmcyNzArYXJnMjcxK2FyZzI3MithcmcyNzMrYXJnMjc0K2FyZzI3
NSthcmcyNzYrYXJnMjc3K2FyZzI3OCthcmcyNzkrYXJnMjgwK2FyZzI4MSthcmcyODIrYXJnMjgz
K2FyZzI4NCthcmcyODUrYXJnMjg2K2FyZzI4NythcmcyODgrYXJnMjg5K2FyZzI5MCthcmcyOTEr
YXJnMjkyK2FyZzI5MythcmcyOTQrYXJnMjk1K2FyZzI5NithcmcyOTcrYXJnMjk4K2FyZzI5OSth
cmczMDArYXJnMzAxK2FyZzMwMithcmczMDMrYXJnMzA0K2FyZzMwNSthcmczMDYrYXJnMzA3K2Fy
ZzMwOCthcmczMDkrYXJnMzEwK2FyZzMxMSthcmczMTIrYXJnMzEzK2FyZzMxNCthcmczMTUrYXJn
MzE2K2FyZzMxNythcmczMTgrYXJnMzE5K2FyZzMyMCthcmczMjErYXJnMzIyK2FyZzMyMythcmcz
MjQrYXJnMzI1K2FyZzMyNithcmczMjcrYXJnMzI4K2FyZzMyOSthcmczMzArYXJnMzMxK2FyZzMz
MithcmczMzMrYXJnMzM0K2FyZzMzNSthcmczMzYrYXJnMzM3K2FyZzMzOCthcmczMzkrYXJnMzQw
K2FyZzM0MSthcmczNDIrYXJnMzQzK2FyZzM0NCthcmczNDUrYXJnMzQ2K2FyZzM0NythcmczNDgr
YXJnMzQ5K2FyZzM1MCthcmczNTErYXJnMzUyK2FyZzM1MythcmczNTQrYXJnMzU1K2FyZzM1Nith
cmczNTcrYXJnMzU4K2FyZzM1OSthcmczNjArYXJnMzYxK2FyZzM2MithcmczNjMrYXJnMzY0K2Fy
ZzM2NSthcmczNjYrYXJnMzY3K2FyZzM2OCthcmczNjkrYXJnMzcwK2FyZzM3MSthcmczNzIrYXJn
MzczK2FyZzM3NCthcmczNzUrYXJnMzc2K2FyZzM3NythcmczNzgrYXJnMzc5K2FyZzM4MCthcmcz
ODErYXJnMzgyK2FyZzM4MythcmczODQrYXJnMzg1K2FyZzM4NithcmczODcrYXJnMzg4K2FyZzM4
OSthcmczOTArYXJnMzkxK2FyZzM5MithcmczOTMrYXJnMzk0K2FyZzM5NSthcmczOTYrYXJnMzk3
K2FyZzM5OCthcmczOTkrYXJnNDAwK2FyZzQwMSthcmc0MDIrYXJnNDAzK2FyZzQwNCthcmc0MDUr
YXJnNDA2K2FyZzQwNythcmc0MDgrYXJnNDA5K2FyZzQxMCthcmc0MTErYXJnNDEyK2FyZzQxMyth
cmc0MTQrYXJnNDE1K2FyZzQxNithcmc0MTcrYXJnNDE4K2FyZzQxOSthcmc0MjArYXJnNDIxK2Fy
ZzQyMithcmc0MjMrYXJnNDI0K2FyZzQyNSthcmc0MjYrYXJnNDI3K2FyZzQyOCthcmc0MjkrYXJn
NDMwK2FyZzQzMSthcmc0MzIrYXJnNDMzK2FyZzQzNCthcmc0MzUrYXJnNDM2K2FyZzQzNythcmc0
MzgrYXJnNDM5K2FyZzQ0MCthcmc0NDErYXJnNDQyK2FyZzQ0Mythcmc0NDQrYXJnNDQ1K2FyZzQ0
Nithcmc0NDcrYXJnNDQ4K2FyZzQ0OSthcmc0NTArYXJnNDUxK2FyZzQ1Mithcmc0NTMrYXJnNDU0
K2FyZzQ1NSthcmc0NTYrYXJnNDU3K2FyZzQ1OCthcmc0NTkrYXJnNDYwK2FyZzQ2MSthcmc0NjIr
YXJnNDYzK2FyZzQ2NCthcmc0NjUrYXJnNDY2K2FyZzQ2Nythcmc0NjgrYXJnNDY5K2FyZzQ3MCth
cmc0NzErYXJnNDcyK2FyZzQ3Mythcmc0NzQrYXJnNDc1K2FyZzQ3Nithcmc0NzcrYXJnNDc4K2Fy
ZzQ3OSthcmc0ODArYXJnNDgxK2FyZzQ4Mithcmc0ODMrYXJnNDg0K2FyZzQ4NSthcmc0ODYrYXJn
NDg3K2FyZzQ4OCthcmc0ODkrYXJnNDkwK2FyZzQ5MSthcmc0OTIrYXJnNDkzK2FyZzQ5NCthcmc0
OTUrYXJnNDk2K2FyZzQ5Nythcmc0OTgrYXJnNDk5K2FyZzUwMCthcmc1MDErYXJnNTAyK2FyZzUw
Mythcmc1MDQrYXJnNTA1K2FyZzUwNithcmc1MDcrYXJnNTA4K2FyZzUwOSthcmc1MTArYXJnNTEx
K2FyZzUxMithcmc1MTMrYXJnNTE0K2FyZzUxNSthcmc1MTYrYXJnNTE3K2FyZzUxOCthcmc1MTkr
YXJnNTIwK2FyZzUyMSthcmc1MjIrYXJnNTIzK2FyZzUyNCthcmc1MjUrYXJnNTI2K2FyZzUyNyth
cmc1MjgrYXJnNTI5K2FyZzUzMCthcmc1MzErYXJnNTMyK2FyZzUzMythcmc1MzQrYXJnNTM1K2Fy
ZzUzNithcmc1MzcrYXJnNTM4K2FyZzUzOSthcmc1NDArYXJnNTQxK2FyZzU0Mithcmc1NDMrYXJn
NTQ0K2FyZzU0NSthcmc1NDYrYXJnNTQ3K2FyZzU0OCthcmc1NDkrYXJnNTUwK2FyZzU1MSthcmc1
NTIrYXJnNTUzK2FyZzU1NCthcmc1NTUrYXJnNTU2K2FyZzU1Nythcmc1NTgrYXJnNTU5K2FyZzU2
MCthcmc1NjErYXJnNTYyK2FyZzU2Mythcmc1NjQrYXJnNTY1K2FyZzU2Nithcmc1NjcrYXJnNTY4
K2FyZzU2OSthcmc1NzArYXJnNTcxK2FyZzU3Mithcmc1NzMrYXJnNTc0K2FyZzU3NSthcmc1NzYr
YXJnNTc3K2FyZzU3OCthcmc1NzkrYXJnNTgwK2FyZzU4MSthcmc1ODIrYXJnNTgzK2FyZzU4NCth
cmc1ODUrYXJnNTg2K2FyZzU4Nythcmc1ODgrYXJnNTg5K2FyZzU5MCthcmc1OTErYXJnNTkyK2Fy
ZzU5Mythcmc1OTQrYXJnNTk1K2FyZzU5Nithcmc1OTcrYXJnNTk4K2FyZzU5OSthcmc2MDArYXJn
NjAxK2FyZzYwMithcmc2MDMrYXJnNjA0K2FyZzYwNSthcmc2MDYrYXJnNjA3K2FyZzYwOCthcmc2
MDkrYXJnNjEwK2FyZzYxMSthcmc2MTIrYXJnNjEzK2FyZzYxNCthcmc2MTUrYXJnNjE2K2FyZzYx
Nythcmc2MTgrYXJnNjE5K2FyZzYyMCthcmc2MjErYXJnNjIyK2FyZzYyMythcmc2MjQrYXJnNjI1
K2FyZzYyNithcmc2MjcrYXJnNjI4K2FyZzYyOSthcmc2MzArYXJnNjMxK2FyZzYzMithcmc2MzMr
YXJnNjM0K2FyZzYzNSthcmc2MzYrYXJnNjM3K2FyZzYzOCthcmc2MzkrYXJnNjQwK2FyZzY0MSth
cmc2NDIrYXJnNjQzK2FyZzY0NCthcmc2NDUrYXJnNjQ2K2FyZzY0Nythcmc2NDgrYXJnNjQ5K2Fy
ZzY1MCthcmc2NTErYXJnNjUyK2FyZzY1Mythcmc2NTQrYXJnNjU1K2FyZzY1Nithcmc2NTcrYXJn
NjU4K2FyZzY1OSthcmc2NjArYXJnNjYxK2FyZzY2Mithcmc2NjMrYXJnNjY0K2FyZzY2NSthcmc2
NjYrYXJnNjY3K2FyZzY2OCthcmc2NjkrYXJnNjcwK2FyZzY3MSthcmc2NzIrYXJnNjczK2FyZzY3
NCthcmc2NzUrYXJnNjc2K2FyZzY3Nythcmc2NzgrYXJnNjc5K2FyZzY4MCthcmc2ODErYXJnNjgy
K2FyZzY4Mythcmc2ODQrYXJnNjg1K2FyZzY4Nithcmc2ODcrYXJnNjg4K2FyZzY4OSthcmc2OTAr
YXJnNjkxK2FyZzY5Mithcmc2OTMrYXJnNjk0K2FyZzY5NSthcmc2OTYrYXJnNjk3K2FyZzY5OCth
cmc2OTkrYXJnNzAwK2FyZzcwMSthcmc3MDIrYXJnNzAzK2FyZzcwNCthcmc3MDUrYXJnNzA2K2Fy
ZzcwNythcmc3MDgrYXJnNzA5K2FyZzcxMCthcmc3MTErYXJnNzEyK2FyZzcxMythcmc3MTQrYXJn
NzE1K2FyZzcxNithcmc3MTcrYXJnNzE4K2FyZzcxOSthcmc3MjArYXJnNzIxK2FyZzcyMithcmc3
MjMrYXJnNzI0K2FyZzcyNSthcmc3MjYrYXJnNzI3K2FyZzcyOCthcmc3MjkrYXJnNzMwK2FyZzcz
MSthcmc3MzIrYXJnNzMzK2FyZzczNCthcmc3MzUrYXJnNzM2K2FyZzczNythcmc3MzgrYXJnNzM5
K2FyZzc0MCthcmc3NDErYXJnNzQyK2FyZzc0Mythcmc3NDQrYXJnNzQ1K2FyZzc0Nithcmc3NDcr
YXJnNzQ4K2FyZzc0OSthcmc3NTArYXJnNzUxK2FyZzc1Mithcmc3NTMrYXJnNzU0K2FyZzc1NSth
cmc3NTYrYXJnNzU3K2FyZzc1OCthcmc3NTkrYXJnNzYwK2FyZzc2MSthcmc3NjIrYXJnNzYzK2Fy
Zzc2NCthcmc3NjUrYXJnNzY2K2FyZzc2Nythcmc3NjgrYXJnNzY5K2FyZzc3MCthcmc3NzErYXJn
NzcyK2FyZzc3Mythcmc3NzQrYXJnNzc1K2FyZzc3Nithcmc3NzcrYXJnNzc4K2FyZzc3OSthcmc3
ODArYXJnNzgxK2FyZzc4Mithcmc3ODMrYXJnNzg0K2FyZzc4NSthcmc3ODYrYXJnNzg3K2FyZzc4
OCthcmc3ODkrYXJnNzkwK2FyZzc5MSthcmc3OTIrYXJnNzkzK2FyZzc5NCthcmc3OTUrYXJnNzk2
K2FyZzc5Nythcmc3OTgrYXJnNzk5K2FyZzgwMCthcmc4MDErYXJnODAyK2FyZzgwMythcmc4MDQr
YXJnODA1K2FyZzgwNithcmc4MDcrYXJnODA4K2FyZzgwOSthcmc4MTArYXJnODExK2FyZzgxMith
cmc4MTMrYXJnODE0K2FyZzgxNSthcmc4MTYrYXJnODE3K2FyZzgxOCthcmc4MTkrYXJnODIwK2Fy
ZzgyMSthcmc4MjIrYXJnODIzK2FyZzgyNCthcmc4MjUrYXJnODI2K2FyZzgyNythcmc4MjgrYXJn
ODI5K2FyZzgzMCthcmc4MzErYXJnODMyK2FyZzgzMythcmc4MzQrYXJnODM1K2FyZzgzNithcmc4
MzcrYXJnODM4K2FyZzgzOSthcmc4NDArYXJnODQxK2FyZzg0Mithcmc4NDMrYXJnODQ0K2FyZzg0
NSthcmc4NDYrYXJnODQ3K2FyZzg0OCthcmc4NDkrYXJnODUwK2FyZzg1MSthcmc4NTIrYXJnODUz
K2FyZzg1NCthcmc4NTUrYXJnODU2K2FyZzg1Nythcmc4NTgrYXJnODU5K2FyZzg2MCthcmc4NjEr
YXJnODYyK2FyZzg2Mythcmc4NjQrYXJnODY1K2FyZzg2Nithcmc4NjcrYXJnODY4K2FyZzg2OSth
cmc4NzArYXJnODcxK2FyZzg3Mithcmc4NzMrYXJnODc0K2FyZzg3NSthcmc4NzYrYXJnODc3K2Fy
Zzg3OCthcmc4NzkrYXJnODgwK2FyZzg4MSthcmc4ODIrYXJnODgzK2FyZzg4NCthcmc4ODUrYXJn
ODg2K2FyZzg4Nythcmc4ODgrYXJnODg5K2FyZzg5MCthcmc4OTErYXJnODkyK2FyZzg5Mythcmc4
OTQrYXJnODk1K2FyZzg5Nithcmc4OTcrYXJnODk4K2FyZzg5OSthcmc5MDArYXJnOTAxK2FyZzkw
Mithcmc5MDMrYXJnOTA0K2FyZzkwNSthcmc5MDYrYXJnOTA3K2FyZzkwOCthcmc5MDkrYXJnOTEw
K2FyZzkxMSthcmc5MTIrYXJnOTEzK2FyZzkxNCthcmc5MTUrYXJnOTE2K2FyZzkxNythcmc5MTgr
YXJnOTE5K2FyZzkyMCthcmc5MjErYXJnOTIyK2FyZzkyMythcmc5MjQrYXJnOTI1K2FyZzkyNith
cmc5MjcrYXJnOTI4K2FyZzkyOSthcmc5MzArYXJnOTMxK2FyZzkzMithcmc5MzMrYXJnOTM0K2Fy
ZzkzNSthcmc5MzYrYXJnOTM3K2FyZzkzOCthcmc5MzkrYXJnOTQwK2FyZzk0MSthcmc5NDIrYXJn
OTQzK2FyZzk0NCthcmc5NDUrYXJnOTQ2K2FyZzk0Nythcmc5NDgrYXJnOTQ5K2FyZzk1MCthcmc5
NTErYXJnOTUyK2FyZzk1Mythcmc5NTQrYXJnOTU1K2FyZzk1Nithcmc5NTcrYXJnOTU4K2FyZzk1
OSthcmc5NjArYXJnOTYxK2FyZzk2Mithcmc5NjMrYXJnOTY0K2FyZzk2NSthcmc5NjYrYXJnOTY3
K2FyZzk2OCthcmc5NjkrYXJnOTcwK2FyZzk3MSthcmc5NzIrYXJnOTczK2FyZzk3NCthcmc5NzUr
YXJnOTc2K2FyZzk3Nythcmc5NzgrYXJnOTc5K2FyZzk4MCthcmc5ODErYXJnOTgyK2FyZzk4Myth
cmc5ODQrYXJnOTg1K2FyZzk4Nithcmc5ODcrYXJnOTg4K2FyZzk4OSthcmc5OTArYXJnOTkxK2Fy
Zzk5Mithcmc5OTMrYXJnOTk0K2FyZzk5NSthcmc5OTYrYXJnOTk3K2FyZzk5OCthcmc5OTkrYXJn
MTAwMCthcmcxMDAxK2FyZzEwMDIrYXJnMTAwMythcmcxMDA0K2FyZzEwMDUrYXJnMTAwNithcmcx
MDA3K2FyZzEwMDgrYXJnMTAwOSthcmcxMDEwK2FyZzEwMTErYXJnMTAxMithcmcxMDEzK2FyZzEw
MTQrYXJnMTAxNSthcmcxMDE2K2FyZzEwMTcrYXJnMTAxOCthcmcxMDE5K2FyZzEwMjArYXJnMTAy
MSthcmcxMDIyK2FyZzEwMjMrYXJnMTAyNCthcmcxMDI1K2FyZzEwMjYrYXJnMTAyNythcmcxMDI4
K2FyZzEwMjkrYXJnMTAzMCthcmcxMDMxK2FyZzEwMzIrYXJnMTAzMythcmcxMDM0K2FyZzEwMzUr
YXJnMTAzNithcmcxMDM3K2FyZzEwMzgrYXJnMTAzOSthcmcxMDQwK2FyZzEwNDErYXJnMTA0Mith
cmcxMDQzK2FyZzEwNDQrYXJnMTA0NSthcmcxMDQ2K2FyZzEwNDcrYXJnMTA0OCthcmcxMDQ5K2Fy
ZzEwNTArYXJnMTA1MSthcmcxMDUyK2FyZzEwNTMrYXJnMTA1NCthcmcxMDU1K2FyZzEwNTYrYXJn
MTA1NythcmcxMDU4K2FyZzEwNTkrYXJnMTA2MCthcmcxMDYxK2FyZzEwNjIrYXJnMTA2Mythcmcx
MDY0K2FyZzEwNjUrYXJnMTA2NithcmcxMDY3K2FyZzEwNjgrYXJnMTA2OSthcmcxMDcwK2FyZzEw
NzErYXJnMTA3MithcmcxMDczK2FyZzEwNzQrYXJnMTA3NSthcmcxMDc2K2FyZzEwNzcrYXJnMTA3
OCthcmcxMDc5K2FyZzEwODArYXJnMTA4MSthcmcxMDgyK2FyZzEwODMrYXJnMTA4NCthcmcxMDg1
K2FyZzEwODYrYXJnMTA4NythcmcxMDg4K2FyZzEwODkrYXJnMTA5MCthcmcxMDkxK2FyZzEwOTIr
YXJnMTA5MythcmcxMDk0K2FyZzEwOTUrYXJnMTA5NithcmcxMDk3K2FyZzEwOTgrYXJnMTA5OSth
cmcxMTAwK2FyZzExMDErYXJnMTEwMithcmcxMTAzK2FyZzExMDQrYXJnMTEwNSthcmcxMTA2K2Fy
ZzExMDcrYXJnMTEwOCthcmcxMTA5K2FyZzExMTArYXJnMTExMSthcmcxMTEyK2FyZzExMTMrYXJn
MTExNCthcmcxMTE1K2FyZzExMTYrYXJnMTExNythcmcxMTE4K2FyZzExMTkrYXJnMTEyMCthcmcx
MTIxK2FyZzExMjIrYXJnMTEyMythcmcxMTI0K2FyZzExMjUrYXJnMTEyNithcmcxMTI3K2FyZzEx
MjgrYXJnMTEyOSthcmcxMTMwK2FyZzExMzErYXJnMTEzMithcmcxMTMzK2FyZzExMzQrYXJnMTEz
NSthcmcxMTM2K2FyZzExMzcrYXJnMTEzOCthcmcxMTM5K2FyZzExNDArYXJnMTE0MSthcmcxMTQy
K2FyZzExNDMrYXJnMTE0NCthcmcxMTQ1K2FyZzExNDYrYXJnMTE0NythcmcxMTQ4K2FyZzExNDkr
YXJnMTE1MCthcmcxMTUxK2FyZzExNTIrYXJnMTE1MythcmcxMTU0K2FyZzExNTUrYXJnMTE1Nith
cmcxMTU3K2FyZzExNTgrYXJnMTE1OSthcmcxMTYwK2FyZzExNjErYXJnMTE2MithcmcxMTYzK2Fy
ZzExNjQrYXJnMTE2NSthcmcxMTY2K2FyZzExNjcrYXJnMTE2OCthcmcxMTY5K2FyZzExNzArYXJn
MTE3MSthcmcxMTcyK2FyZzExNzMrYXJnMTE3NCthcmcxMTc1K2FyZzExNzYrYXJnMTE3Nythcmcx
MTc4K2FyZzExNzkrYXJnMTE4MCthcmcxMTgxK2FyZzExODIrYXJnMTE4MythcmcxMTg0K2FyZzEx
ODUrYXJnMTE4NithcmcxMTg3K2FyZzExODgrYXJnMTE4OSthcmcxMTkwK2FyZzExOTErYXJnMTE5
MithcmcxMTkzK2FyZzExOTQrYXJnMTE5NSthcmcxMTk2K2FyZzExOTcrYXJnMTE5OCthcmcxMTk5
K2FyZzEyMDArYXJnMTIwMSthcmcxMjAyK2FyZzEyMDMrYXJnMTIwNCthcmcxMjA1K2FyZzEyMDYr
YXJnMTIwNythcmcxMjA4K2FyZzEyMDkrYXJnMTIxMCthcmcxMjExK2FyZzEyMTIrYXJnMTIxMyth
cmcxMjE0K2FyZzEyMTUrYXJnMTIxNithcmcxMjE3K2FyZzEyMTgrYXJnMTIxOSthcmcxMjIwK2Fy
ZzEyMjErYXJnMTIyMithcmcxMjIzK2FyZzEyMjQrYXJnMTIyNSthcmcxMjI2K2FyZzEyMjcrYXJn
MTIyOCthcmcxMjI5K2FyZzEyMzArYXJnMTIzMSthcmcxMjMyK2FyZzEyMzMrYXJnMTIzNCthcmcx
MjM1K2FyZzEyMzYrYXJnMTIzNythcmcxMjM4K2FyZzEyMzkrYXJnMTI0MCthcmcxMjQxK2FyZzEy
NDIrYXJnMTI0MythcmcxMjQ0K2FyZzEyNDUrYXJnMTI0NithcmcxMjQ3K2FyZzEyNDgrYXJnMTI0
OSthcmcxMjUwK2FyZzEyNTErYXJnMTI1MithcmcxMjUzK2FyZzEyNTQrYXJnMTI1NSthcmcxMjU2
K2FyZzEyNTcrYXJnMTI1OCthcmcxMjU5K2FyZzEyNjArYXJnMTI2MSthcmcxMjYyK2FyZzEyNjMr
YXJnMTI2NCthcmcxMjY1K2FyZzEyNjYrYXJnMTI2NythcmcxMjY4K2FyZzEyNjkrYXJnMTI3MCth
cmcxMjcxK2FyZzEyNzIrYXJnMTI3MythcmcxMjc0K2FyZzEyNzUrYXJnMTI3NithcmcxMjc3K2Fy
ZzEyNzgrYXJnMTI3OSthcmcxMjgwK2FyZzEyODErYXJnMTI4MithcmcxMjgzK2FyZzEyODQrYXJn
MTI4NSthcmcxMjg2K2FyZzEyODcrYXJnMTI4OCthcmcxMjg5K2FyZzEyOTArYXJnMTI5MSthcmcx
MjkyK2FyZzEyOTMrYXJnMTI5NCthcmcxMjk1K2FyZzEyOTYrYXJnMTI5NythcmcxMjk4K2FyZzEy
OTkrYXJnMTMwMCthcmcxMzAxK2FyZzEzMDIrYXJnMTMwMythcmcxMzA0K2FyZzEzMDUrYXJnMTMw
NithcmcxMzA3K2FyZzEzMDgrYXJnMTMwOSthcmcxMzEwK2FyZzEzMTErYXJnMTMxMithcmcxMzEz
K2FyZzEzMTQrYXJnMTMxNSthcmcxMzE2K2FyZzEzMTcrYXJnMTMxOCthcmcxMzE5K2FyZzEzMjAr
YXJnMTMyMSthcmcxMzIyK2FyZzEzMjMrYXJnMTMyNCthcmcxMzI1K2FyZzEzMjYrYXJnMTMyNyth
cmcxMzI4K2FyZzEzMjkrYXJnMTMzMCthcmcxMzMxK2FyZzEzMzIrYXJnMTMzMythcmcxMzM0K2Fy
ZzEzMzUrYXJnMTMzNithcmcxMzM3K2FyZzEzMzgrYXJnMTMzOSthcmcxMzQwK2FyZzEzNDErYXJn
MTM0MithcmcxMzQzK2FyZzEzNDQrYXJnMTM0NSthcmcxMzQ2K2FyZzEzNDcrYXJnMTM0OCthcmcx
MzQ5K2FyZzEzNTArYXJnMTM1MSthcmcxMzUyK2FyZzEzNTMrYXJnMTM1NCthcmcxMzU1K2FyZzEz
NTYrYXJnMTM1NythcmcxMzU4K2FyZzEzNTkrYXJnMTM2MCthcmcxMzYxK2FyZzEzNjIrYXJnMTM2
MythcmcxMzY0K2FyZzEzNjUrYXJnMTM2NithcmcxMzY3K2FyZzEzNjgrYXJnMTM2OSthcmcxMzcw
K2FyZzEzNzErYXJnMTM3MithcmcxMzczK2FyZzEzNzQrYXJnMTM3NSthcmcxMzc2K2FyZzEzNzcr
YXJnMTM3OCthcmcxMzc5K2FyZzEzODArYXJnMTM4MSthcmcxMzgyK2FyZzEzODMrYXJnMTM4NCth
cmcxMzg1K2FyZzEzODYrYXJnMTM4NythcmcxMzg4K2FyZzEzODkrYXJnMTM5MCthcmcxMzkxK2Fy
ZzEzOTIrYXJnMTM5MythcmcxMzk0K2FyZzEzOTUrYXJnMTM5NithcmcxMzk3K2FyZzEzOTgrYXJn
MTM5OSthcmcxNDAwK2FyZzE0MDErYXJnMTQwMithcmcxNDAzK2FyZzE0MDQrYXJnMTQwNSthcmcx
NDA2K2FyZzE0MDcrYXJnMTQwOCthcmcxNDA5K2FyZzE0MTArYXJnMTQxMSthcmcxNDEyK2FyZzE0
MTMrYXJnMTQxNCthcmcxNDE1K2FyZzE0MTYrYXJnMTQxNythcmcxNDE4K2FyZzE0MTkrYXJnMTQy
MCthcmcxNDIxK2FyZzE0MjIrYXJnMTQyMythcmcxNDI0K2FyZzE0MjUrYXJnMTQyNithcmcxNDI3
K2FyZzE0MjgrYXJnMTQyOSthcmcxNDMwK2FyZzE0MzErYXJnMTQzMithcmcxNDMzK2FyZzE0MzQr
YXJnMTQzNSthcmcxNDM2K2FyZzE0MzcrYXJnMTQzOCthcmcxNDM5K2FyZzE0NDArYXJnMTQ0MSth
cmcxNDQyK2FyZzE0NDMrYXJnMTQ0NCthcmcxNDQ1K2FyZzE0NDYrYXJnMTQ0NythcmcxNDQ4K2Fy
ZzE0NDkrYXJnMTQ1MCthcmcxNDUxK2FyZzE0NTIrYXJnMTQ1MythcmcxNDU0K2FyZzE0NTUrYXJn
MTQ1NithcmcxNDU3K2FyZzE0NTgrYXJnMTQ1OSthcmcxNDYwK2FyZzE0NjErYXJnMTQ2Mithcmcx
NDYzK2FyZzE0NjQrYXJnMTQ2NSthcmcxNDY2K2FyZzE0NjcrYXJnMTQ2OCthcmcxNDY5K2FyZzE0
NzArYXJnMTQ3MSthcmcxNDcyK2FyZzE0NzMrYXJnMTQ3NCthcmcxNDc1K2FyZzE0NzYrYXJnMTQ3
NythcmcxNDc4K2FyZzE0NzkrYXJnMTQ4MCthcmcxNDgxK2FyZzE0ODIrYXJnMTQ4MythcmcxNDg0
K2FyZzE0ODUrYXJnMTQ4NithcmcxNDg3K2FyZzE0ODgrYXJnMTQ4OSthcmcxNDkwK2FyZzE0OTEr
YXJnMTQ5MithcmcxNDkzK2FyZzE0OTQrYXJnMTQ5NSthcmcxNDk2K2FyZzE0OTcrYXJnMTQ5OCth
cmcxNDk5K2FyZzE1MDArYXJnMTUwMSthcmcxNTAyK2FyZzE1MDMrYXJnMTUwNCthcmcxNTA1K2Fy
ZzE1MDYrYXJnMTUwNythcmcxNTA4K2FyZzE1MDkrYXJnMTUxMCthcmcxNTExK2FyZzE1MTIrYXJn
MTUxMythcmcxNTE0K2FyZzE1MTUrYXJnMTUxNithcmcxNTE3K2FyZzE1MTgrYXJnMTUxOSthcmcx
NTIwK2FyZzE1MjErYXJnMTUyMithcmcxNTIzK2FyZzE1MjQrYXJnMTUyNSthcmcxNTI2K2FyZzE1
MjcrYXJnMTUyOCthcmcxNTI5K2FyZzE1MzArYXJnMTUzMSthcmcxNTMyK2FyZzE1MzMrYXJnMTUz
NCthcmcxNTM1K2FyZzE1MzYrYXJnMTUzNythcmcxNTM4K2FyZzE1MzkrYXJnMTU0MCthcmcxNTQx
K2FyZzE1NDIrYXJnMTU0MythcmcxNTQ0K2FyZzE1NDUrYXJnMTU0NithcmcxNTQ3K2FyZzE1NDgr
YXJnMTU0OSthcmcxNTUwK2FyZzE1NTErYXJnMTU1MithcmcxNTUzK2FyZzE1NTQrYXJnMTU1NSth
cmcxNTU2K2FyZzE1NTcrYXJnMTU1OCthcmcxNTU5K2FyZzE1NjArYXJnMTU2MSthcmcxNTYyK2Fy
ZzE1NjMrYXJnMTU2NCthcmcxNTY1K2FyZzE1NjYrYXJnMTU2NythcmcxNTY4K2FyZzE1NjkrYXJn
MTU3MCthcmcxNTcxK2FyZzE1NzIrYXJnMTU3MythcmcxNTc0K2FyZzE1NzUrYXJnMTU3Nithcmcx
NTc3K2FyZzE1NzgrYXJnMTU3OSthcmcxNTgwK2FyZzE1ODErYXJnMTU4MithcmcxNTgzK2FyZzE1
ODQrYXJnMTU4NSthcmcxNTg2K2FyZzE1ODcrYXJnMTU4OCthcmcxNTg5K2FyZzE1OTArYXJnMTU5
MSthcmcxNTkyK2FyZzE1OTMrYXJnMTU5NCthcmcxNTk1K2FyZzE1OTYrYXJnMTU5NythcmcxNTk4
K2FyZzE1OTkrYXJnMTYwMCthcmcxNjAxK2FyZzE2MDIrYXJnMTYwMythcmcxNjA0K2FyZzE2MDUr
YXJnMTYwNithcmcxNjA3K2FyZzE2MDgrYXJnMTYwOSthcmcxNjEwK2FyZzE2MTErYXJnMTYxMith
cmcxNjEzK2FyZzE2MTQrYXJnMTYxNSthcmcxNjE2K2FyZzE2MTcrYXJnMTYxOCthcmcxNjE5K2Fy
ZzE2MjArYXJnMTYyMSthcmcxNjIyK2FyZzE2MjMrYXJnMTYyNCthcmcxNjI1K2FyZzE2MjYrYXJn
MTYyNythcmcxNjI4K2FyZzE2MjkrYXJnMTYzMCthcmcxNjMxK2FyZzE2MzIrYXJnMTYzMythcmcx
NjM0K2FyZzE2MzUrYXJnMTYzNithcmcxNjM3K2FyZzE2MzgrYXJnMTYzOSthcmcxNjQwK2FyZzE2
NDErYXJnMTY0MithcmcxNjQzK2FyZzE2NDQrYXJnMTY0NSthcmcxNjQ2K2FyZzE2NDcrYXJnMTY0
OCthcmcxNjQ5K2FyZzE2NTArYXJnMTY1MSthcmcxNjUyK2FyZzE2NTMrYXJnMTY1NCthcmcxNjU1
K2FyZzE2NTYrYXJnMTY1NythcmcxNjU4K2FyZzE2NTkrYXJnMTY2MCthcmcxNjYxK2FyZzE2NjIr
YXJnMTY2MythcmcxNjY0K2FyZzE2NjUrYXJnMTY2NithcmcxNjY3K2FyZzE2NjgrYXJnMTY2OSth
cmcxNjcwK2FyZzE2NzErYXJnMTY3MithcmcxNjczK2FyZzE2NzQrYXJnMTY3NSthcmcxNjc2K2Fy
ZzE2NzcrYXJnMTY3OCthcmcxNjc5K2FyZzE2ODArYXJnMTY4MSthcmcxNjgyK2FyZzE2ODMrYXJn
MTY4NCthcmcxNjg1K2FyZzE2ODYrYXJnMTY4NythcmcxNjg4K2FyZzE2ODkrYXJnMTY5MCthcmcx
NjkxK2FyZzE2OTIrYXJnMTY5MythcmcxNjk0K2FyZzE2OTUrYXJnMTY5NithcmcxNjk3K2FyZzE2
OTgrYXJnMTY5OSthcmcxNzAwK2FyZzE3MDErYXJnMTcwMithcmcxNzAzK2FyZzE3MDQrYXJnMTcw
NSthcmcxNzA2K2FyZzE3MDcrYXJnMTcwOCthcmcxNzA5K2FyZzE3MTArYXJnMTcxMSthcmcxNzEy
K2FyZzE3MTMrYXJnMTcxNCthcmcxNzE1K2FyZzE3MTYrYXJnMTcxNythcmcxNzE4K2FyZzE3MTkr
YXJnMTcyMCthcmcxNzIxK2FyZzE3MjIrYXJnMTcyMythcmcxNzI0K2FyZzE3MjUrYXJnMTcyNith
cmcxNzI3K2FyZzE3MjgrYXJnMTcyOSthcmcxNzMwK2FyZzE3MzErYXJnMTczMithcmcxNzMzK2Fy
ZzE3MzQrYXJnMTczNSthcmcxNzM2K2FyZzE3MzcrYXJnMTczOCthcmcxNzM5K2FyZzE3NDArYXJn
MTc0MSthcmcxNzQyK2FyZzE3NDMrYXJnMTc0NCthcmcxNzQ1K2FyZzE3NDYrYXJnMTc0Nythcmcx
NzQ4K2FyZzE3NDkrYXJnMTc1MCthcmcxNzUxK2FyZzE3NTIrYXJnMTc1MythcmcxNzU0K2FyZzE3
NTUrYXJnMTc1NithcmcxNzU3K2FyZzE3NTgrYXJnMTc1OSthcmcxNzYwK2FyZzE3NjErYXJnMTc2
MithcmcxNzYzK2FyZzE3NjQrYXJnMTc2NSthcmcxNzY2K2FyZzE3NjcrYXJnMTc2OCthcmcxNzY5
K2FyZzE3NzArYXJnMTc3MSthcmcxNzcyK2FyZzE3NzMrYXJnMTc3NCthcmcxNzc1K2FyZzE3NzYr
YXJnMTc3NythcmcxNzc4K2FyZzE3NzkrYXJnMTc4MCthcmcxNzgxK2FyZzE3ODIrYXJnMTc4Myth
cmcxNzg0K2FyZzE3ODUrYXJnMTc4NithcmcxNzg3K2FyZzE3ODgrYXJnMTc4OSthcmcxNzkwK2Fy
ZzE3OTErYXJnMTc5MithcmcxNzkzK2FyZzE3OTQrYXJnMTc5NSthcmcxNzk2K2FyZzE3OTcrYXJn
MTc5OCthcmcxNzk5K2FyZzE4MDArYXJnMTgwMSthcmcxODAyK2FyZzE4MDMrYXJnMTgwNCthcmcx
ODA1K2FyZzE4MDYrYXJnMTgwNythcmcxODA4K2FyZzE4MDkrYXJnMTgxMCthcmcxODExK2FyZzE4
MTIrYXJnMTgxMythcmcxODE0K2FyZzE4MTUrYXJnMTgxNithcmcxODE3K2FyZzE4MTgrYXJnMTgx
OSthcmcxODIwK2FyZzE4MjErYXJnMTgyMithcmcxODIzK2FyZzE4MjQrYXJnMTgyNSthcmcxODI2
K2FyZzE4MjcrYXJnMTgyOCthcmcxODI5K2FyZzE4MzArYXJnMTgzMSthcmcxODMyK2FyZzE4MzMr
YXJnMTgzNCthcmcxODM1K2FyZzE4MzYrYXJnMTgzNythcmcxODM4K2FyZzE4MzkrYXJnMTg0MCth
cmcxODQxK2FyZzE4NDIrYXJnMTg0MythcmcxODQ0K2FyZzE4NDUrYXJnMTg0NithcmcxODQ3K2Fy
ZzE4NDgrYXJnMTg0OSthcmcxODUwK2FyZzE4NTErYXJnMTg1MithcmcxODUzK2FyZzE4NTQrYXJn
MTg1NSthcmcxODU2K2FyZzE4NTcrYXJnMTg1OCthcmcxODU5K2FyZzE4NjArYXJnMTg2MSthcmcx
ODYyK2FyZzE4NjMrYXJnMTg2NCthcmcxODY1K2FyZzE4NjYrYXJnMTg2NythcmcxODY4K2FyZzE4
NjkrYXJnMTg3MCthcmcxODcxK2FyZzE4NzIrYXJnMTg3MythcmcxODc0K2FyZzE4NzUrYXJnMTg3
NithcmcxODc3K2FyZzE4NzgrYXJnMTg3OSthcmcxODgwK2FyZzE4ODErYXJnMTg4MithcmcxODgz
K2FyZzE4ODQrYXJnMTg4NSthcmcxODg2K2FyZzE4ODcrYXJnMTg4OCthcmcxODg5K2FyZzE4OTAr
YXJnMTg5MSthcmcxODkyK2FyZzE4OTMrYXJnMTg5NCthcmcxODk1K2FyZzE4OTYrYXJnMTg5Nyth
cmcxODk4K2FyZzE4OTkrYXJnMTkwMCthcmcxOTAxK2FyZzE5MDIrYXJnMTkwMythcmcxOTA0K2Fy
ZzE5MDUrYXJnMTkwNithcmcxOTA3K2FyZzE5MDgrYXJnMTkwOSthcmcxOTEwK2FyZzE5MTErYXJn
MTkxMithcmcxOTEzK2FyZzE5MTQrYXJnMTkxNSthcmcxOTE2K2FyZzE5MTcrYXJnMTkxOCthcmcx
OTE5K2FyZzE5MjArYXJnMTkyMSthcmcxOTIyK2FyZzE5MjMrYXJnMTkyNCthcmcxOTI1K2FyZzE5
MjYrYXJnMTkyNythcmcxOTI4K2FyZzE5MjkrYXJnMTkzMCthcmcxOTMxK2FyZzE5MzIrYXJnMTkz
MythcmcxOTM0K2FyZzE5MzUrYXJnMTkzNithcmcxOTM3K2FyZzE5MzgrYXJnMTkzOSthcmcxOTQw
K2FyZzE5NDErYXJnMTk0MithcmcxOTQzK2FyZzE5NDQrYXJnMTk0NSthcmcxOTQ2K2FyZzE5NDcr
YXJnMTk0OCthcmcxOTQ5K2FyZzE5NTArYXJnMTk1MSthcmcxOTUyK2FyZzE5NTMrYXJnMTk1NCth
cmcxOTU1K2FyZzE5NTYrYXJnMTk1NythcmcxOTU4K2FyZzE5NTkrYXJnMTk2MCthcmcxOTYxK2Fy
ZzE5NjIrYXJnMTk2MythcmcxOTY0K2FyZzE5NjUrYXJnMTk2NithcmcxOTY3K2FyZzE5NjgrYXJn
MTk2OSthcmcxOTcwK2FyZzE5NzErYXJnMTk3MithcmcxOTczK2FyZzE5NzQrYXJnMTk3NSthcmcx
OTc2K2FyZzE5NzcrYXJnMTk3OCthcmcxOTc5K2FyZzE5ODArYXJnMTk4MSthcmcxOTgyK2FyZzE5
ODMrYXJnMTk4NCthcmcxOTg1K2FyZzE5ODYrYXJnMTk4NythcmcxOTg4K2FyZzE5ODkrYXJnMTk5
MCthcmcxOTkxK2FyZzE5OTIrYXJnMTk5MythcmcxOTk0K2FyZzE5OTUrYXJnMTk5NithcmcxOTk3
K2FyZzE5OTgrYXJnMTk5OSthcmcyMDAwK2FyZzIwMDErYXJnMjAwMithcmcyMDAzK2FyZzIwMDQr
YXJnMjAwNSthcmcyMDA2K2FyZzIwMDcrYXJnMjAwOCthcmcyMDA5K2FyZzIwMTArYXJnMjAxMSth
cmcyMDEyK2FyZzIwMTMrYXJnMjAxNCthcmcyMDE1K2FyZzIwMTYrYXJnMjAxNythcmcyMDE4K2Fy
ZzIwMTkrYXJnMjAyMCthcmcyMDIxK2FyZzIwMjIrYXJnMjAyMythcmcyMDI0K2FyZzIwMjUrYXJn
MjAyNithcmcyMDI3K2FyZzIwMjgrYXJnMjAyOSthcmcyMDMwK2FyZzIwMzErYXJnMjAzMithcmcy
MDMzK2FyZzIwMzQrYXJnMjAzNSthcmcyMDM2K2FyZzIwMzcrYXJnMjAzOCthcmcyMDM5K2FyZzIw
NDArYXJnMjA0MSthcmcyMDQyK2FyZzIwNDMrYXJnMjA0NCthcmcyMDQ1K2FyZzIwNDYrYXJnMjA0
NythcmcyMDQ4K2FyZzIwNDkrYXJnMjA1MCthcmcyMDUxK2FyZzIwNTIrYXJnMjA1MythcmcyMDU0
K2FyZzIwNTUrYXJnMjA1NithcmcyMDU3K2FyZzIwNTgrYXJnMjA1OSthcmcyMDYwK2FyZzIwNjEr
YXJnMjA2MithcmcyMDYzK2FyZzIwNjQrYXJnMjA2NSthcmcyMDY2K2FyZzIwNjcrYXJnMjA2OCth
cmcyMDY5K2FyZzIwNzArYXJnMjA3MSthcmcyMDcyK2FyZzIwNzMrYXJnMjA3NCthcmcyMDc1K2Fy
ZzIwNzYrYXJnMjA3NythcmcyMDc4K2FyZzIwNzkrYXJnMjA4MCthcmcyMDgxK2FyZzIwODIrYXJn
MjA4MythcmcyMDg0K2FyZzIwODUrYXJnMjA4NithcmcyMDg3K2FyZzIwODgrYXJnMjA4OSthcmcy
MDkwK2FyZzIwOTErYXJnMjA5MithcmcyMDkzK2FyZzIwOTQrYXJnMjA5NSthcmcyMDk2K2FyZzIw
OTcrYXJnMjA5OCthcmcyMDk5K2FyZzIxMDArYXJnMjEwMSthcmcyMTAyK2FyZzIxMDMrYXJnMjEw
NCthcmcyMTA1K2FyZzIxMDYrYXJnMjEwNythcmcyMTA4K2FyZzIxMDkrYXJnMjExMCthcmcyMTEx
K2FyZzIxMTIrYXJnMjExMythcmcyMTE0K2FyZzIxMTUrYXJnMjExNithcmcyMTE3K2FyZzIxMTgr
YXJnMjExOSthcmcyMTIwK2FyZzIxMjErYXJnMjEyMithcmcyMTIzK2FyZzIxMjQrYXJnMjEyNSth
cmcyMTI2K2FyZzIxMjcrYXJnMjEyOCthcmcyMTI5K2FyZzIxMzArYXJnMjEzMSthcmcyMTMyK2Fy
ZzIxMzMrYXJnMjEzNCthcmcyMTM1K2FyZzIxMzYrYXJnMjEzNythcmcyMTM4K2FyZzIxMzkrYXJn
MjE0MCthcmcyMTQxK2FyZzIxNDIrYXJnMjE0MythcmcyMTQ0K2FyZzIxNDUrYXJnMjE0Nithcmcy
MTQ3K2FyZzIxNDgrYXJnMjE0OSthcmcyMTUwK2FyZzIxNTErYXJnMjE1MithcmcyMTUzK2FyZzIx
NTQrYXJnMjE1NSthcmcyMTU2K2FyZzIxNTcrYXJnMjE1OCthcmcyMTU5K2FyZzIxNjArYXJnMjE2
MSthcmcyMTYyK2FyZzIxNjMrYXJnMjE2NCthcmcyMTY1K2FyZzIxNjYrYXJnMjE2NythcmcyMTY4
K2FyZzIxNjkrYXJnMjE3MCthcmcyMTcxK2FyZzIxNzIrYXJnMjE3MythcmcyMTc0K2FyZzIxNzUr
YXJnMjE3NithcmcyMTc3K2FyZzIxNzgrYXJnMjE3OSthcmcyMTgwK2FyZzIxODErYXJnMjE4Mith
cmcyMTgzK2FyZzIxODQrYXJnMjE4NSthcmcyMTg2K2FyZzIxODcrYXJnMjE4OCthcmcyMTg5K2Fy
ZzIxOTArYXJnMjE5MSthcmcyMTkyK2FyZzIxOTMrYXJnMjE5NCthcmcyMTk1K2FyZzIxOTYrYXJn
MjE5NythcmcyMTk4K2FyZzIxOTkrYXJnMjIwMCthcmcyMjAxK2FyZzIyMDIrYXJnMjIwMythcmcy
MjA0K2FyZzIyMDUrYXJnMjIwNithcmcyMjA3K2FyZzIyMDgrYXJnMjIwOSthcmcyMjEwK2FyZzIy
MTErYXJnMjIxMithcmcyMjEzK2FyZzIyMTQrYXJnMjIxNSthcmcyMjE2K2FyZzIyMTcrYXJnMjIx
OCthcmcyMjE5K2FyZzIyMjArYXJnMjIyMSthcmcyMjIyK2FyZzIyMjMrYXJnMjIyNCthcmcyMjI1
K2FyZzIyMjYrYXJnMjIyNythcmcyMjI4K2FyZzIyMjkrYXJnMjIzMCthcmcyMjMxK2FyZzIyMzIr
YXJnMjIzMythcmcyMjM0K2FyZzIyMzUrYXJnMjIzNithcmcyMjM3K2FyZzIyMzgrYXJnMjIzOSth
cmcyMjQwK2FyZzIyNDErYXJnMjI0MithcmcyMjQzK2FyZzIyNDQrYXJnMjI0NSthcmcyMjQ2K2Fy
ZzIyNDcrYXJnMjI0OCthcmcyMjQ5K2FyZzIyNTArYXJnMjI1MSthcmcyMjUyK2FyZzIyNTMrYXJn
MjI1NCthcmcyMjU1K2FyZzIyNTYrYXJnMjI1NythcmcyMjU4K2FyZzIyNTkrYXJnMjI2MCthcmcy
MjYxK2FyZzIyNjIrYXJnMjI2MythcmcyMjY0K2FyZzIyNjUrYXJnMjI2NithcmcyMjY3K2FyZzIy
NjgrYXJnMjI2OSthcmcyMjcwK2FyZzIyNzErYXJnMjI3MithcmcyMjczK2FyZzIyNzQrYXJnMjI3
NSthcmcyMjc2K2FyZzIyNzcrYXJnMjI3OCthcmcyMjc5K2FyZzIyODArYXJnMjI4MSthcmcyMjgy
K2FyZzIyODMrYXJnMjI4NCthcmcyMjg1K2FyZzIyODYrYXJnMjI4NythcmcyMjg4K2FyZzIyODkr
YXJnMjI5MCthcmcyMjkxK2FyZzIyOTIrYXJnMjI5MythcmcyMjk0K2FyZzIyOTUrYXJnMjI5Nith
cmcyMjk3K2FyZzIyOTgrYXJnMjI5OSthcmcyMzAwK2FyZzIzMDErYXJnMjMwMithcmcyMzAzK2Fy
ZzIzMDQrYXJnMjMwNSthcmcyMzA2K2FyZzIzMDcrYXJnMjMwOCthcmcyMzA5K2FyZzIzMTArYXJn
MjMxMSthcmcyMzEyK2FyZzIzMTMrYXJnMjMxNCthcmcyMzE1K2FyZzIzMTYrYXJnMjMxNythcmcy
MzE4K2FyZzIzMTkrYXJnMjMyMCthcmcyMzIxK2FyZzIzMjIrYXJnMjMyMythcmcyMzI0K2FyZzIz
MjUrYXJnMjMyNithcmcyMzI3K2FyZzIzMjgrYXJnMjMyOSthcmcyMzMwK2FyZzIzMzErYXJnMjMz
MithcmcyMzMzK2FyZzIzMzQrYXJnMjMzNSthcmcyMzM2K2FyZzIzMzcrYXJnMjMzOCthcmcyMzM5
K2FyZzIzNDArYXJnMjM0MSthcmcyMzQyK2FyZzIzNDMrYXJnMjM0NCthcmcyMzQ1K2FyZzIzNDYr
YXJnMjM0NythcmcyMzQ4K2FyZzIzNDkrYXJnMjM1MCthcmcyMzUxK2FyZzIzNTIrYXJnMjM1Myth
cmcyMzU0K2FyZzIzNTUrYXJnMjM1NithcmcyMzU3K2FyZzIzNTgrYXJnMjM1OSthcmcyMzYwK2Fy
ZzIzNjErYXJnMjM2MithcmcyMzYzK2FyZzIzNjQrYXJnMjM2NSthcmcyMzY2K2FyZzIzNjcrYXJn
MjM2OCthcmcyMzY5K2FyZzIzNzArYXJnMjM3MSthcmcyMzcyK2FyZzIzNzMrYXJnMjM3NCthcmcy
Mzc1K2FyZzIzNzYrYXJnMjM3NythcmcyMzc4K2FyZzIzNzkrYXJnMjM4MCthcmcyMzgxK2FyZzIz
ODIrYXJnMjM4MythcmcyMzg0K2FyZzIzODUrYXJnMjM4NithcmcyMzg3K2FyZzIzODgrYXJnMjM4
OSthcmcyMzkwK2FyZzIzOTErYXJnMjM5MithcmcyMzkzK2FyZzIzOTQrYXJnMjM5NSthcmcyMzk2
K2FyZzIzOTcrYXJnMjM5OCthcmcyMzk5K2FyZzI0MDArYXJnMjQwMSthcmcyNDAyK2FyZzI0MDMr
YXJnMjQwNCthcmcyNDA1K2FyZzI0MDYrYXJnMjQwNythcmcyNDA4K2FyZzI0MDkrYXJnMjQxMCth
cmcyNDExK2FyZzI0MTIrYXJnMjQxMythcmcyNDE0K2FyZzI0MTUrYXJnMjQxNithcmcyNDE3K2Fy
ZzI0MTgrYXJnMjQxOSthcmcyNDIwK2FyZzI0MjErYXJnMjQyMithcmcyNDIzK2FyZzI0MjQrYXJn
MjQyNSthcmcyNDI2K2FyZzI0MjcrYXJnMjQyOCthcmcyNDI5K2FyZzI0MzArYXJnMjQzMSthcmcy
NDMyK2FyZzI0MzMrYXJnMjQzNCthcmcyNDM1K2FyZzI0MzYrYXJnMjQzNythcmcyNDM4K2FyZzI0
MzkrYXJnMjQ0MCthcmcyNDQxK2FyZzI0NDIrYXJnMjQ0MythcmcyNDQ0K2FyZzI0NDUrYXJnMjQ0
NithcmcyNDQ3K2FyZzI0NDgrYXJnMjQ0OSthcmcyNDUwK2FyZzI0NTErYXJnMjQ1MithcmcyNDUz
K2FyZzI0NTQrYXJnMjQ1NSthcmcyNDU2K2FyZzI0NTcrYXJnMjQ1OCthcmcyNDU5K2FyZzI0NjAr
YXJnMjQ2MSthcmcyNDYyK2FyZzI0NjMrYXJnMjQ2NCthcmcyNDY1K2FyZzI0NjYrYXJnMjQ2Nyth
cmcyNDY4K2FyZzI0NjkrYXJnMjQ3MCthcmcyNDcxK2FyZzI0NzIrYXJnMjQ3MythcmcyNDc0K2Fy
ZzI0NzUrYXJnMjQ3NithcmcyNDc3K2FyZzI0NzgrYXJnMjQ3OSthcmcyNDgwK2FyZzI0ODErYXJn
MjQ4MithcmcyNDgzK2FyZzI0ODQrYXJnMjQ4NSthcmcyNDg2K2FyZzI0ODcrYXJnMjQ4OCthcmcy
NDg5K2FyZzI0OTArYXJnMjQ5MSthcmcyNDkyK2FyZzI0OTMrYXJnMjQ5NCthcmcyNDk1K2FyZzI0
OTYrYXJnMjQ5NythcmcyNDk4K2FyZzI0OTkrYXJnMjUwMCthcmcyNTAxK2FyZzI1MDIrYXJnMjUw
MythcmcyNTA0K2FyZzI1MDUrYXJnMjUwNithcmcyNTA3K2FyZzI1MDgrYXJnMjUwOSthcmcyNTEw
K2FyZzI1MTErYXJnMjUxMithcmcyNTEzK2FyZzI1MTQrYXJnMjUxNSthcmcyNTE2K2FyZzI1MTcr
YXJnMjUxOCthcmcyNTE5K2FyZzI1MjArYXJnMjUyMSthcmcyNTIyK2FyZzI1MjMrYXJnMjUyNCth
cmcyNTI1K2FyZzI1MjYrYXJnMjUyNythcmcyNTI4K2FyZzI1MjkrYXJnMjUzMCthcmcyNTMxK2Fy
ZzI1MzIrYXJnMjUzMythcmcyNTM0K2FyZzI1MzUrYXJnMjUzNithcmcyNTM3K2FyZzI1MzgrYXJn
MjUzOSthcmcyNTQwK2FyZzI1NDErYXJnMjU0MithcmcyNTQzK2FyZzI1NDQrYXJnMjU0NSthcmcy
NTQ2K2FyZzI1NDcrYXJnMjU0OCthcmcyNTQ5K2FyZzI1NTArYXJnMjU1MSthcmcyNTUyK2FyZzI1
NTMrYXJnMjU1NCthcmcyNTU1K2FyZzI1NTYrYXJnMjU1NythcmcyNTU4K2FyZzI1NTkrYXJnMjU2
MCthcmcyNTYxK2FyZzI1NjIrYXJnMjU2MythcmcyNTY0K2FyZzI1NjUrYXJnMjU2NithcmcyNTY3
K2FyZzI1NjgrYXJnMjU2OSthcmcyNTcwK2FyZzI1NzErYXJnMjU3MithcmcyNTczK2FyZzI1NzQr
YXJnMjU3NSthcmcyNTc2K2FyZzI1NzcrYXJnMjU3OCthcmcyNTc5K2FyZzI1ODArYXJnMjU4MSth
cmcyNTgyK2FyZzI1ODMrYXJnMjU4NCthcmcyNTg1K2FyZzI1ODYrYXJnMjU4NythcmcyNTg4K2Fy
ZzI1ODkrYXJnMjU5MCthcmcyNTkxK2FyZzI1OTIrYXJnMjU5MythcmcyNTk0K2FyZzI1OTUrYXJn
MjU5NithcmcyNTk3K2FyZzI1OTgrYXJnMjU5OSthcmcyNjAwK2FyZzI2MDErYXJnMjYwMithcmcy
NjAzK2FyZzI2MDQrYXJnMjYwNSthcmcyNjA2K2FyZzI2MDcrYXJnMjYwOCthcmcyNjA5K2FyZzI2
MTArYXJnMjYxMSthcmcyNjEyK2FyZzI2MTMrYXJnMjYxNCthcmcyNjE1K2FyZzI2MTYrYXJnMjYx
NythcmcyNjE4K2FyZzI2MTkrYXJnMjYyMCthcmcyNjIxK2FyZzI2MjIrYXJnMjYyMythcmcyNjI0
K2FyZzI2MjUrYXJnMjYyNithcmcyNjI3K2FyZzI2MjgrYXJnMjYyOSthcmcyNjMwK2FyZzI2MzEr
YXJnMjYzMithcmcyNjMzK2FyZzI2MzQrYXJnMjYzNSthcmcyNjM2K2FyZzI2MzcrYXJnMjYzOCth
cmcyNjM5K2FyZzI2NDArYXJnMjY0MSthcmcyNjQyK2FyZzI2NDMrYXJnMjY0NCthcmcyNjQ1K2Fy
ZzI2NDYrYXJnMjY0NythcmcyNjQ4K2FyZzI2NDkrYXJnMjY1MCthcmcyNjUxK2FyZzI2NTIrYXJn
MjY1MythcmcyNjU0K2FyZzI2NTUrYXJnMjY1NithcmcyNjU3K2FyZzI2NTgrYXJnMjY1OSthcmcy
NjYwK2FyZzI2NjErYXJnMjY2MithcmcyNjYzK2FyZzI2NjQrYXJnMjY2NSthcmcyNjY2K2FyZzI2
NjcrYXJnMjY2OCthcmcyNjY5K2FyZzI2NzArYXJnMjY3MSthcmcyNjcyK2FyZzI2NzMrYXJnMjY3
NCthcmcyNjc1K2FyZzI2NzYrYXJnMjY3NythcmcyNjc4K2FyZzI2NzkrYXJnMjY4MCthcmcyNjgx
K2FyZzI2ODIrYXJnMjY4MythcmcyNjg0K2FyZzI2ODUrYXJnMjY4NithcmcyNjg3K2FyZzI2ODgr
YXJnMjY4OSthcmcyNjkwK2FyZzI2OTErYXJnMjY5MithcmcyNjkzK2FyZzI2OTQrYXJnMjY5NSth
cmcyNjk2K2FyZzI2OTcrYXJnMjY5OCthcmcyNjk5K2FyZzI3MDArYXJnMjcwMSthcmcyNzAyK2Fy
ZzI3MDMrYXJnMjcwNCthcmcyNzA1K2FyZzI3MDYrYXJnMjcwNythcmcyNzA4K2FyZzI3MDkrYXJn
MjcxMCthcmcyNzExK2FyZzI3MTIrYXJnMjcxMythcmcyNzE0K2FyZzI3MTUrYXJnMjcxNithcmcy
NzE3K2FyZzI3MTgrYXJnMjcxOSthcmcyNzIwK2FyZzI3MjErYXJnMjcyMithcmcyNzIzK2FyZzI3
MjQrYXJnMjcyNSthcmcyNzI2K2FyZzI3MjcrYXJnMjcyOCthcmcyNzI5K2FyZzI3MzArYXJnMjcz
MSthcmcyNzMyK2FyZzI3MzMrYXJnMjczNCthcmcyNzM1K2FyZzI3MzYrYXJnMjczNythcmcyNzM4
K2FyZzI3MzkrYXJnMjc0MCthcmcyNzQxK2FyZzI3NDIrYXJnMjc0MythcmcyNzQ0K2FyZzI3NDUr
YXJnMjc0NithcmcyNzQ3K2FyZzI3NDgrYXJnMjc0OSthcmcyNzUwK2FyZzI3NTErYXJnMjc1Mith
cmcyNzUzK2FyZzI3NTQrYXJnMjc1NSthcmcyNzU2K2FyZzI3NTcrYXJnMjc1OCthcmcyNzU5K2Fy
ZzI3NjArYXJnMjc2MSthcmcyNzYyK2FyZzI3NjMrYXJnMjc2NCthcmcyNzY1K2FyZzI3NjYrYXJn
Mjc2NythcmcyNzY4K2FyZzI3NjkrYXJnMjc3MCthcmcyNzcxK2FyZzI3NzIrYXJnMjc3Mythcmcy
Nzc0K2FyZzI3NzUrYXJnMjc3NithcmcyNzc3K2FyZzI3NzgrYXJnMjc3OSthcmcyNzgwK2FyZzI3
ODErYXJnMjc4MithcmcyNzgzK2FyZzI3ODQrYXJnMjc4NSthcmcyNzg2K2FyZzI3ODcrYXJnMjc4
OCthcmcyNzg5K2FyZzI3OTArYXJnMjc5MSthcmcyNzkyK2FyZzI3OTMrYXJnMjc5NCthcmcyNzk1
K2FyZzI3OTYrYXJnMjc5NythcmcyNzk4K2FyZzI3OTkrYXJnMjgwMCthcmcyODAxK2FyZzI4MDIr
YXJnMjgwMythcmcyODA0K2FyZzI4MDUrYXJnMjgwNithcmcyODA3K2FyZzI4MDgrYXJnMjgwOSth
cmcyODEwK2FyZzI4MTErYXJnMjgxMithcmcyODEzK2FyZzI4MTQrYXJnMjgxNSthcmcyODE2K2Fy
ZzI4MTcrYXJnMjgxOCthcmcyODE5K2FyZzI4MjArYXJnMjgyMSthcmcyODIyK2FyZzI4MjMrYXJn
MjgyNCthcmcyODI1K2FyZzI4MjYrYXJnMjgyNythcmcyODI4K2FyZzI4MjkrYXJnMjgzMCthcmcy
ODMxK2FyZzI4MzIrYXJnMjgzMythcmcyODM0K2FyZzI4MzUrYXJnMjgzNithcmcyODM3K2FyZzI4
MzgrYXJnMjgzOSthcmcyODQwK2FyZzI4NDErYXJnMjg0MithcmcyODQzK2FyZzI4NDQrYXJnMjg0
NSthcmcyODQ2K2FyZzI4NDcrYXJnMjg0OCthcmcyODQ5K2FyZzI4NTArYXJnMjg1MSthcmcyODUy
K2FyZzI4NTMrYXJnMjg1NCthcmcyODU1K2FyZzI4NTYrYXJnMjg1NythcmcyODU4K2FyZzI4NTkr
YXJnMjg2MCthcmcyODYxK2FyZzI4NjIrYXJnMjg2MythcmcyODY0K2FyZzI4NjUrYXJnMjg2Nith
cmcyODY3K2FyZzI4NjgrYXJnMjg2OSthcmcyODcwK2FyZzI4NzErYXJnMjg3MithcmcyODczK2Fy
ZzI4NzQrYXJnMjg3NSthcmcyODc2K2FyZzI4NzcrYXJnMjg3OCthcmcyODc5K2FyZzI4ODArYXJn
Mjg4MSthcmcyODgyK2FyZzI4ODMrYXJnMjg4NCthcmcyODg1K2FyZzI4ODYrYXJnMjg4Nythcmcy
ODg4K2FyZzI4ODkrYXJnMjg5MCthcmcyODkxK2FyZzI4OTIrYXJnMjg5MythcmcyODk0K2FyZzI4
OTUrYXJnMjg5NithcmcyODk3K2FyZzI4OTgrYXJnMjg5OSthcmcyOTAwK2FyZzI5MDErYXJnMjkw
MithcmcyOTAzK2FyZzI5MDQrYXJnMjkwNSthcmcyOTA2K2FyZzI5MDcrYXJnMjkwOCthcmcyOTA5
K2FyZzI5MTArYXJnMjkxMSthcmcyOTEyK2FyZzI5MTMrYXJnMjkxNCthcmcyOTE1K2FyZzI5MTYr
YXJnMjkxNythcmcyOTE4K2FyZzI5MTkrYXJnMjkyMCthcmcyOTIxK2FyZzI5MjIrYXJnMjkyMyth
cmcyOTI0K2FyZzI5MjUrYXJnMjkyNithcmcyOTI3K2FyZzI5MjgrYXJnMjkyOSthcmcyOTMwK2Fy
ZzI5MzErYXJnMjkzMithcmcyOTMzK2FyZzI5MzQrYXJnMjkzNSthcmcyOTM2K2FyZzI5MzcrYXJn
MjkzOCthcmcyOTM5K2FyZzI5NDArYXJnMjk0MSthcmcyOTQyK2FyZzI5NDMrYXJnMjk0NCthcmcy
OTQ1K2FyZzI5NDYrYXJnMjk0NythcmcyOTQ4K2FyZzI5NDkrYXJnMjk1MCthcmcyOTUxK2FyZzI5
NTIrYXJnMjk1MythcmcyOTU0K2FyZzI5NTUrYXJnMjk1NithcmcyOTU3K2FyZzI5NTgrYXJnMjk1
OSthcmcyOTYwK2FyZzI5NjErYXJnMjk2MithcmcyOTYzK2FyZzI5NjQrYXJnMjk2NSthcmcyOTY2
K2FyZzI5NjcrYXJnMjk2OCthcmcyOTY5K2FyZzI5NzArYXJnMjk3MSthcmcyOTcyK2FyZzI5NzMr
YXJnMjk3NCthcmcyOTc1K2FyZzI5NzYrYXJnMjk3NythcmcyOTc4K2FyZzI5NzkrYXJnMjk4MCth
cmcyOTgxK2FyZzI5ODIrYXJnMjk4MythcmcyOTg0K2FyZzI5ODUrYXJnMjk4NithcmcyOTg3K2Fy
ZzI5ODgrYXJnMjk4OSthcmcyOTkwK2FyZzI5OTErYXJnMjk5MithcmcyOTkzK2FyZzI5OTQrYXJn
Mjk5NSthcmcyOTk2K2FyZzI5OTcrYXJnMjk5OCthcmcyOTk5K2FyZzMwMDArYXJnMzAwMSthcmcz
MDAyK2FyZzMwMDMrYXJnMzAwNCthcmczMDA1K2FyZzMwMDYrYXJnMzAwNythcmczMDA4K2FyZzMw
MDkrYXJnMzAxMCthcmczMDExK2FyZzMwMTIrYXJnMzAxMythcmczMDE0K2FyZzMwMTUrYXJnMzAx
NithcmczMDE3K2FyZzMwMTgrYXJnMzAxOSthcmczMDIwK2FyZzMwMjErYXJnMzAyMithcmczMDIz
K2FyZzMwMjQrYXJnMzAyNSthcmczMDI2K2FyZzMwMjcrYXJnMzAyOCthcmczMDI5K2FyZzMwMzAr
YXJnMzAzMSthcmczMDMyK2FyZzMwMzMrYXJnMzAzNCthcmczMDM1K2FyZzMwMzYrYXJnMzAzNyth
cmczMDM4K2FyZzMwMzkrYXJnMzA0MCthcmczMDQxK2FyZzMwNDIrYXJnMzA0MythcmczMDQ0K2Fy
ZzMwNDUrYXJnMzA0NithcmczMDQ3K2FyZzMwNDgrYXJnMzA0OSthcmczMDUwK2FyZzMwNTErYXJn
MzA1MithcmczMDUzK2FyZzMwNTQrYXJnMzA1NSthcmczMDU2K2FyZzMwNTcrYXJnMzA1OCthcmcz
MDU5K2FyZzMwNjArYXJnMzA2MSthcmczMDYyK2FyZzMwNjMrYXJnMzA2NCthcmczMDY1K2FyZzMw
NjYrYXJnMzA2NythcmczMDY4K2FyZzMwNjkrYXJnMzA3MCthcmczMDcxK2FyZzMwNzIrYXJnMzA3
MythcmczMDc0K2FyZzMwNzUrYXJnMzA3NithcmczMDc3K2FyZzMwNzgrYXJnMzA3OSthcmczMDgw
K2FyZzMwODErYXJnMzA4MithcmczMDgzK2FyZzMwODQrYXJnMzA4NSthcmczMDg2K2FyZzMwODcr
YXJnMzA4OCthcmczMDg5K2FyZzMwOTArYXJnMzA5MSthcmczMDkyK2FyZzMwOTMrYXJnMzA5NCth
cmczMDk1K2FyZzMwOTYrYXJnMzA5NythcmczMDk4K2FyZzMwOTkrYXJnMzEwMCthcmczMTAxK2Fy
ZzMxMDIrYXJnMzEwMythcmczMTA0K2FyZzMxMDUrYXJnMzEwNithcmczMTA3K2FyZzMxMDgrYXJn
MzEwOSthcmczMTEwK2FyZzMxMTErYXJnMzExMithcmczMTEzK2FyZzMxMTQrYXJnMzExNSthcmcz
MTE2K2FyZzMxMTcrYXJnMzExOCthcmczMTE5K2FyZzMxMjArYXJnMzEyMSthcmczMTIyK2FyZzMx
MjMrYXJnMzEyNCthcmczMTI1K2FyZzMxMjYrYXJnMzEyNythcmczMTI4K2FyZzMxMjkrYXJnMzEz
MCthcmczMTMxK2FyZzMxMzIrYXJnMzEzMythcmczMTM0K2FyZzMxMzUrYXJnMzEzNithcmczMTM3
K2FyZzMxMzgrYXJnMzEzOSthcmczMTQwK2FyZzMxNDErYXJnMzE0MithcmczMTQzK2FyZzMxNDQr
YXJnMzE0NSthcmczMTQ2K2FyZzMxNDcrYXJnMzE0OCthcmczMTQ5K2FyZzMxNTArYXJnMzE1MSth
cmczMTUyK2FyZzMxNTMrYXJnMzE1NCthcmczMTU1K2FyZzMxNTYrYXJnMzE1NythcmczMTU4K2Fy
ZzMxNTkrYXJnMzE2MCthcmczMTYxK2FyZzMxNjIrYXJnMzE2MythcmczMTY0K2FyZzMxNjUrYXJn
MzE2NithcmczMTY3K2FyZzMxNjgrYXJnMzE2OSthcmczMTcwK2FyZzMxNzErYXJnMzE3Mithcmcz
MTczK2FyZzMxNzQrYXJnMzE3NSthcmczMTc2K2FyZzMxNzcrYXJnMzE3OCthcmczMTc5K2FyZzMx
ODArYXJnMzE4MSthcmczMTgyK2FyZzMxODMrYXJnMzE4NCthcmczMTg1K2FyZzMxODYrYXJnMzE4
NythcmczMTg4K2FyZzMxODkrYXJnMzE5MCthcmczMTkxK2FyZzMxOTIrYXJnMzE5MythcmczMTk0
K2FyZzMxOTUrYXJnMzE5NithcmczMTk3K2FyZzMxOTgrYXJnMzE5OSthcmczMjAwK2FyZzMyMDEr
YXJnMzIwMithcmczMjAzK2FyZzMyMDQrYXJnMzIwNSthcmczMjA2K2FyZzMyMDcrYXJnMzIwOCth
cmczMjA5K2FyZzMyMTArYXJnMzIxMSthcmczMjEyK2FyZzMyMTMrYXJnMzIxNCthcmczMjE1K2Fy
ZzMyMTYrYXJnMzIxNythcmczMjE4K2FyZzMyMTkrYXJnMzIyMCthcmczMjIxK2FyZzMyMjIrYXJn
MzIyMythcmczMjI0K2FyZzMyMjUrYXJnMzIyNithcmczMjI3K2FyZzMyMjgrYXJnMzIyOSthcmcz
MjMwK2FyZzMyMzErYXJnMzIzMithcmczMjMzK2FyZzMyMzQrYXJnMzIzNSthcmczMjM2K2FyZzMy
MzcrYXJnMzIzOCthcmczMjM5K2FyZzMyNDArYXJnMzI0MSthcmczMjQyK2FyZzMyNDMrYXJnMzI0
NCthcmczMjQ1K2FyZzMyNDYrYXJnMzI0NythcmczMjQ4K2FyZzMyNDkrYXJnMzI1MCthcmczMjUx
K2FyZzMyNTIrYXJnMzI1MythcmczMjU0K2FyZzMyNTUrYXJnMzI1NithcmczMjU3K2FyZzMyNTgr
YXJnMzI1OSthcmczMjYwK2FyZzMyNjErYXJnMzI2MithcmczMjYzK2FyZzMyNjQrYXJnMzI2NSth
cmczMjY2K2FyZzMyNjcrYXJnMzI2OCthcmczMjY5K2FyZzMyNzArYXJnMzI3MSthcmczMjcyK2Fy
ZzMyNzMrYXJnMzI3NCthcmczMjc1K2FyZzMyNzYrYXJnMzI3NythcmczMjc4K2FyZzMyNzkrYXJn
MzI4MCthcmczMjgxK2FyZzMyODIrYXJnMzI4MythcmczMjg0K2FyZzMyODUrYXJnMzI4Nithcmcz
Mjg3K2FyZzMyODgrYXJnMzI4OSthcmczMjkwK2FyZzMyOTErYXJnMzI5MithcmczMjkzK2FyZzMy
OTQrYXJnMzI5NSthcmczMjk2K2FyZzMyOTcrYXJnMzI5OCthcmczMjk5K2FyZzMzMDArYXJnMzMw
MSthcmczMzAyK2FyZzMzMDMrYXJnMzMwNCthcmczMzA1K2FyZzMzMDYrYXJnMzMwNythcmczMzA4
K2FyZzMzMDkrYXJnMzMxMCthcmczMzExK2FyZzMzMTIrYXJnMzMxMythcmczMzE0K2FyZzMzMTUr
YXJnMzMxNithcmczMzE3K2FyZzMzMTgrYXJnMzMxOSthcmczMzIwK2FyZzMzMjErYXJnMzMyMith
cmczMzIzK2FyZzMzMjQrYXJnMzMyNSthcmczMzI2K2FyZzMzMjcrYXJnMzMyOCthcmczMzI5K2Fy
ZzMzMzArYXJnMzMzMSthcmczMzMyK2FyZzMzMzMrYXJnMzMzNCthcmczMzM1K2FyZzMzMzYrYXJn
MzMzNythcmczMzM4K2FyZzMzMzkrYXJnMzM0MCthcmczMzQxK2FyZzMzNDIrYXJnMzM0Mythcmcz
MzQ0K2FyZzMzNDUrYXJnMzM0NithcmczMzQ3K2FyZzMzNDgrYXJnMzM0OSthcmczMzUwK2FyZzMz
NTErYXJnMzM1MithcmczMzUzK2FyZzMzNTQrYXJnMzM1NSthcmczMzU2K2FyZzMzNTcrYXJnMzM1
OCthcmczMzU5K2FyZzMzNjArYXJnMzM2MSthcmczMzYyK2FyZzMzNjMrYXJnMzM2NCthcmczMzY1
K2FyZzMzNjYrYXJnMzM2NythcmczMzY4K2FyZzMzNjkrYXJnMzM3MCthcmczMzcxK2FyZzMzNzIr
YXJnMzM3MythcmczMzc0K2FyZzMzNzUrYXJnMzM3NithcmczMzc3K2FyZzMzNzgrYXJnMzM3OSth
cmczMzgwK2FyZzMzODErYXJnMzM4MithcmczMzgzK2FyZzMzODQrYXJnMzM4NSthcmczMzg2K2Fy
ZzMzODcrYXJnMzM4OCthcmczMzg5K2FyZzMzOTArYXJnMzM5MSthcmczMzkyK2FyZzMzOTMrYXJn
MzM5NCthcmczMzk1K2FyZzMzOTYrYXJnMzM5NythcmczMzk4K2FyZzMzOTkrYXJnMzQwMCthcmcz
NDAxK2FyZzM0MDIrYXJnMzQwMythcmczNDA0K2FyZzM0MDUrYXJnMzQwNithcmczNDA3K2FyZzM0
MDgrYXJnMzQwOSthcmczNDEwK2FyZzM0MTErYXJnMzQxMithcmczNDEzK2FyZzM0MTQrYXJnMzQx
NSthcmczNDE2K2FyZzM0MTcrYXJnMzQxOCthcmczNDE5K2FyZzM0MjArYXJnMzQyMSthcmczNDIy
K2FyZzM0MjMrYXJnMzQyNCthcmczNDI1K2FyZzM0MjYrYXJnMzQyNythcmczNDI4K2FyZzM0Mjkr
YXJnMzQzMCthcmczNDMxK2FyZzM0MzIrYXJnMzQzMythcmczNDM0K2FyZzM0MzUrYXJnMzQzNith
cmczNDM3K2FyZzM0MzgrYXJnMzQzOSthcmczNDQwK2FyZzM0NDErYXJnMzQ0MithcmczNDQzK2Fy
ZzM0NDQrYXJnMzQ0NSthcmczNDQ2K2FyZzM0NDcrYXJnMzQ0OCthcmczNDQ5K2FyZzM0NTArYXJn
MzQ1MSthcmczNDUyK2FyZzM0NTMrYXJnMzQ1NCthcmczNDU1K2FyZzM0NTYrYXJnMzQ1Nythcmcz
NDU4K2FyZzM0NTkrYXJnMzQ2MCthcmczNDYxK2FyZzM0NjIrYXJnMzQ2MythcmczNDY0K2FyZzM0
NjUrYXJnMzQ2NithcmczNDY3K2FyZzM0NjgrYXJnMzQ2OSthcmczNDcwK2FyZzM0NzErYXJnMzQ3
MithcmczNDczK2FyZzM0NzQrYXJnMzQ3NSthcmczNDc2K2FyZzM0NzcrYXJnMzQ3OCthcmczNDc5
K2FyZzM0ODArYXJnMzQ4MSthcmczNDgyK2FyZzM0ODMrYXJnMzQ4NCthcmczNDg1K2FyZzM0ODYr
YXJnMzQ4NythcmczNDg4K2FyZzM0ODkrYXJnMzQ5MCthcmczNDkxK2FyZzM0OTIrYXJnMzQ5Myth
cmczNDk0K2FyZzM0OTUrYXJnMzQ5NithcmczNDk3K2FyZzM0OTgrYXJnMzQ5OSthcmczNTAwK2Fy
ZzM1MDErYXJnMzUwMithcmczNTAzK2FyZzM1MDQrYXJnMzUwNSthcmczNTA2K2FyZzM1MDcrYXJn
MzUwOCthcmczNTA5K2FyZzM1MTArYXJnMzUxMSthcmczNTEyK2FyZzM1MTMrYXJnMzUxNCthcmcz
NTE1K2FyZzM1MTYrYXJnMzUxNythcmczNTE4K2FyZzM1MTkrYXJnMzUyMCthcmczNTIxK2FyZzM1
MjIrYXJnMzUyMythcmczNTI0K2FyZzM1MjUrYXJnMzUyNithcmczNTI3K2FyZzM1MjgrYXJnMzUy
OSthcmczNTMwK2FyZzM1MzErYXJnMzUzMithcmczNTMzK2FyZzM1MzQrYXJnMzUzNSthcmczNTM2
K2FyZzM1MzcrYXJnMzUzOCthcmczNTM5K2FyZzM1NDArYXJnMzU0MSthcmczNTQyK2FyZzM1NDMr
YXJnMzU0NCthcmczNTQ1K2FyZzM1NDYrYXJnMzU0NythcmczNTQ4K2FyZzM1NDkrYXJnMzU1MCth
cmczNTUxK2FyZzM1NTIrYXJnMzU1MythcmczNTU0K2FyZzM1NTUrYXJnMzU1NithcmczNTU3K2Fy
ZzM1NTgrYXJnMzU1OSthcmczNTYwK2FyZzM1NjErYXJnMzU2MithcmczNTYzK2FyZzM1NjQrYXJn
MzU2NSthcmczNTY2K2FyZzM1NjcrYXJnMzU2OCthcmczNTY5K2FyZzM1NzArYXJnMzU3MSthcmcz
NTcyK2FyZzM1NzMrYXJnMzU3NCthcmczNTc1K2FyZzM1NzYrYXJnMzU3NythcmczNTc4K2FyZzM1
NzkrYXJnMzU4MCthcmczNTgxK2FyZzM1ODIrYXJnMzU4MythcmczNTg0K2FyZzM1ODUrYXJnMzU4
NithcmczNTg3K2FyZzM1ODgrYXJnMzU4OSthcmczNTkwK2FyZzM1OTErYXJnMzU5MithcmczNTkz
K2FyZzM1OTQrYXJnMzU5NSthcmczNTk2K2FyZzM1OTcrYXJnMzU5OCthcmczNTk5K2FyZzM2MDAr
YXJnMzYwMSthcmczNjAyK2FyZzM2MDMrYXJnMzYwNCthcmczNjA1K2FyZzM2MDYrYXJnMzYwNyth
cmczNjA4K2FyZzM2MDkrYXJnMzYxMCthcmczNjExK2FyZzM2MTIrYXJnMzYxMythcmczNjE0K2Fy
ZzM2MTUrYXJnMzYxNithcmczNjE3K2FyZzM2MTgrYXJnMzYxOSthcmczNjIwK2FyZzM2MjErYXJn
MzYyMithcmczNjIzK2FyZzM2MjQrYXJnMzYyNSthcmczNjI2K2FyZzM2MjcrYXJnMzYyOCthcmcz
NjI5K2FyZzM2MzArYXJnMzYzMSthcmczNjMyK2FyZzM2MzMrYXJnMzYzNCthcmczNjM1K2FyZzM2
MzYrYXJnMzYzNythcmczNjM4K2FyZzM2MzkrYXJnMzY0MCthcmczNjQxK2FyZzM2NDIrYXJnMzY0
MythcmczNjQ0K2FyZzM2NDUrYXJnMzY0NithcmczNjQ3K2FyZzM2NDgrYXJnMzY0OSthcmczNjUw
K2FyZzM2NTErYXJnMzY1MithcmczNjUzK2FyZzM2NTQrYXJnMzY1NSthcmczNjU2K2FyZzM2NTcr
YXJnMzY1OCthcmczNjU5K2FyZzM2NjArYXJnMzY2MSthcmczNjYyK2FyZzM2NjMrYXJnMzY2NCth
cmczNjY1K2FyZzM2NjYrYXJnMzY2NythcmczNjY4K2FyZzM2NjkrYXJnMzY3MCthcmczNjcxK2Fy
ZzM2NzIrYXJnMzY3MythcmczNjc0K2FyZzM2NzUrYXJnMzY3NithcmczNjc3K2FyZzM2NzgrYXJn
MzY3OSthcmczNjgwK2FyZzM2ODErYXJnMzY4MithcmczNjgzK2FyZzM2ODQrYXJnMzY4NSthcmcz
Njg2K2FyZzM2ODcrYXJnMzY4OCthcmczNjg5K2FyZzM2OTArYXJnMzY5MSthcmczNjkyK2FyZzM2
OTMrYXJnMzY5NCthcmczNjk1K2FyZzM2OTYrYXJnMzY5NythcmczNjk4K2FyZzM2OTkrYXJnMzcw
MCthcmczNzAxK2FyZzM3MDIrYXJnMzcwMythcmczNzA0K2FyZzM3MDUrYXJnMzcwNithcmczNzA3
K2FyZzM3MDgrYXJnMzcwOSthcmczNzEwK2FyZzM3MTErYXJnMzcxMithcmczNzEzK2FyZzM3MTQr
YXJnMzcxNSthcmczNzE2K2FyZzM3MTcrYXJnMzcxOCthcmczNzE5K2FyZzM3MjArYXJnMzcyMSth
cmczNzIyK2FyZzM3MjMrYXJnMzcyNCthcmczNzI1K2FyZzM3MjYrYXJnMzcyNythcmczNzI4K2Fy
ZzM3MjkrYXJnMzczMCthcmczNzMxK2FyZzM3MzIrYXJnMzczMythcmczNzM0K2FyZzM3MzUrYXJn
MzczNithcmczNzM3K2FyZzM3MzgrYXJnMzczOSthcmczNzQwK2FyZzM3NDErYXJnMzc0Mithcmcz
NzQzK2FyZzM3NDQrYXJnMzc0NSthcmczNzQ2K2FyZzM3NDcrYXJnMzc0OCthcmczNzQ5K2FyZzM3
NTArYXJnMzc1MSthcmczNzUyK2FyZzM3NTMrYXJnMzc1NCthcmczNzU1K2FyZzM3NTYrYXJnMzc1
NythcmczNzU4K2FyZzM3NTkrYXJnMzc2MCthcmczNzYxK2FyZzM3NjIrYXJnMzc2MythcmczNzY0
K2FyZzM3NjUrYXJnMzc2NithcmczNzY3K2FyZzM3NjgrYXJnMzc2OSthcmczNzcwK2FyZzM3NzEr
YXJnMzc3MithcmczNzczK2FyZzM3NzQrYXJnMzc3NSthcmczNzc2K2FyZzM3NzcrYXJnMzc3OCth
cmczNzc5K2FyZzM3ODArYXJnMzc4MSthcmczNzgyK2FyZzM3ODMrYXJnMzc4NCthcmczNzg1K2Fy
ZzM3ODYrYXJnMzc4NythcmczNzg4K2FyZzM3ODkrYXJnMzc5MCthcmczNzkxK2FyZzM3OTIrYXJn
Mzc5MythcmczNzk0K2FyZzM3OTUrYXJnMzc5NithcmczNzk3K2FyZzM3OTgrYXJnMzc5OSthcmcz
ODAwK2FyZzM4MDErYXJnMzgwMithcmczODAzK2FyZzM4MDQrYXJnMzgwNSthcmczODA2K2FyZzM4
MDcrYXJnMzgwOCthcmczODA5K2FyZzM4MTArYXJnMzgxMSthcmczODEyK2FyZzM4MTMrYXJnMzgx
NCthcmczODE1K2FyZzM4MTYrYXJnMzgxNythcmczODE4K2FyZzM4MTkrYXJnMzgyMCthcmczODIx
K2FyZzM4MjIrYXJnMzgyMythcmczODI0K2FyZzM4MjUrYXJnMzgyNithcmczODI3K2FyZzM4Mjgr
YXJnMzgyOSthcmczODMwK2FyZzM4MzErYXJnMzgzMithcmczODMzK2FyZzM4MzQrYXJnMzgzNSth
cmczODM2K2FyZzM4MzcrYXJnMzgzOCthcmczODM5K2FyZzM4NDArYXJnMzg0MSthcmczODQyK2Fy
ZzM4NDMrYXJnMzg0NCthcmczODQ1K2FyZzM4NDYrYXJnMzg0NythcmczODQ4K2FyZzM4NDkrYXJn
Mzg1MCthcmczODUxK2FyZzM4NTIrYXJnMzg1MythcmczODU0K2FyZzM4NTUrYXJnMzg1Nithcmcz
ODU3K2FyZzM4NTgrYXJnMzg1OSthcmczODYwK2FyZzM4NjErYXJnMzg2MithcmczODYzK2FyZzM4
NjQrYXJnMzg2NSthcmczODY2K2FyZzM4NjcrYXJnMzg2OCthcmczODY5K2FyZzM4NzArYXJnMzg3
MSthcmczODcyK2FyZzM4NzMrYXJnMzg3NCthcmczODc1K2FyZzM4NzYrYXJnMzg3NythcmczODc4
K2FyZzM4NzkrYXJnMzg4MCthcmczODgxK2FyZzM4ODIrYXJnMzg4MythcmczODg0K2FyZzM4ODUr
YXJnMzg4NithcmczODg3K2FyZzM4ODgrYXJnMzg4OSthcmczODkwK2FyZzM4OTErYXJnMzg5Mith
cmczODkzK2FyZzM4OTQrYXJnMzg5NSthcmczODk2K2FyZzM4OTcrYXJnMzg5OCthcmczODk5K2Fy
ZzM5MDArYXJnMzkwMSthcmczOTAyK2FyZzM5MDMrYXJnMzkwNCthcmczOTA1K2FyZzM5MDYrYXJn
MzkwNythcmczOTA4K2FyZzM5MDkrYXJnMzkxMCthcmczOTExK2FyZzM5MTIrYXJnMzkxMythcmcz
OTE0K2FyZzM5MTUrYXJnMzkxNithcmczOTE3K2FyZzM5MTgrYXJnMzkxOSthcmczOTIwK2FyZzM5
MjErYXJnMzkyMithcmczOTIzK2FyZzM5MjQrYXJnMzkyNSthcmczOTI2K2FyZzM5MjcrYXJnMzky
OCthcmczOTI5K2FyZzM5MzArYXJnMzkzMSthcmczOTMyK2FyZzM5MzMrYXJnMzkzNCthcmczOTM1
K2FyZzM5MzYrYXJnMzkzNythcmczOTM4K2FyZzM5MzkrYXJnMzk0MCthcmczOTQxK2FyZzM5NDIr
YXJnMzk0MythcmczOTQ0K2FyZzM5NDUrYXJnMzk0NithcmczOTQ3K2FyZzM5NDgrYXJnMzk0OSth
cmczOTUwK2FyZzM5NTErYXJnMzk1MithcmczOTUzK2FyZzM5NTQrYXJnMzk1NSthcmczOTU2K2Fy
ZzM5NTcrYXJnMzk1OCthcmczOTU5K2FyZzM5NjArYXJnMzk2MSthcmczOTYyK2FyZzM5NjMrYXJn
Mzk2NCthcmczOTY1K2FyZzM5NjYrYXJnMzk2NythcmczOTY4K2FyZzM5NjkrYXJnMzk3MCthcmcz
OTcxK2FyZzM5NzIrYXJnMzk3MythcmczOTc0K2FyZzM5NzUrYXJnMzk3NithcmczOTc3K2FyZzM5
NzgrYXJnMzk3OSthcmczOTgwK2FyZzM5ODErYXJnMzk4MithcmczOTgzK2FyZzM5ODQrYXJnMzk4
NSthcmczOTg2K2FyZzM5ODcrYXJnMzk4OCthcmczOTg5K2FyZzM5OTArYXJnMzk5MSthcmczOTky
K2FyZzM5OTMrYXJnMzk5NCthcmczOTk1K2FyZzM5OTYrYXJnMzk5NythcmczOTk4K2FyZzM5OTkr
YXJnNDAwMCthcmc0MDAxK2FyZzQwMDIrYXJnNDAwMythcmc0MDA0K2FyZzQwMDUrYXJnNDAwNith
cmc0MDA3K2FyZzQwMDgrYXJnNDAwOSthcmc0MDEwK2FyZzQwMTErYXJnNDAxMithcmc0MDEzK2Fy
ZzQwMTQrYXJnNDAxNSthcmc0MDE2K2FyZzQwMTcrYXJnNDAxOCthcmc0MDE5K2FyZzQwMjArYXJn
NDAyMSthcmc0MDIyK2FyZzQwMjMrYXJnNDAyNCthcmc0MDI1K2FyZzQwMjYrYXJnNDAyNythcmc0
MDI4K2FyZzQwMjkrYXJnNDAzMCthcmc0MDMxK2FyZzQwMzIrYXJnNDAzMythcmc0MDM0K2FyZzQw
MzUrYXJnNDAzNithcmc0MDM3K2FyZzQwMzgrYXJnNDAzOSthcmc0MDQwK2FyZzQwNDErYXJnNDA0
Mithcmc0MDQzK2FyZzQwNDQrYXJnNDA0NSthcmc0MDQ2K2FyZzQwNDcrYXJnNDA0OCthcmc0MDQ5
K2FyZzQwNTArYXJnNDA1MSthcmc0MDUyK2FyZzQwNTMrYXJnNDA1NCthcmc0MDU1K2FyZzQwNTYr
YXJnNDA1Nythcmc0MDU4K2FyZzQwNTkrYXJnNDA2MCthcmc0MDYxK2FyZzQwNjIrYXJnNDA2Myth
cmc0MDY0K2FyZzQwNjUrYXJnNDA2Nithcmc0MDY3K2FyZzQwNjgrYXJnNDA2OSthcmc0MDcwK2Fy
ZzQwNzErYXJnNDA3Mithcmc0MDczK2FyZzQwNzQrYXJnNDA3NSthcmc0MDc2K2FyZzQwNzcrYXJn
NDA3OCthcmc0MDc5K2FyZzQwODArYXJnNDA4MSthcmc0MDgyK2FyZzQwODMrYXJnNDA4NCthcmc0
MDg1K2FyZzQwODYrYXJnNDA4Nythcmc0MDg4K2FyZzQwODkrYXJnNDA5MCthcmc0MDkxK2FyZzQw
OTIrYXJnNDA5Mythcmc0MDk0K2FyZzQwOTUrYXJnNDA5Nithcmc0MDk3K2FyZzQwOTgrYXJnNDA5
OSthcmc0MTAwK2FyZzQxMDErYXJnNDEwMithcmc0MTAzK2FyZzQxMDQrYXJnNDEwNSthcmc0MTA2
K2FyZzQxMDcrYXJnNDEwOCthcmc0MTA5K2FyZzQxMTArYXJnNDExMSthcmc0MTEyK2FyZzQxMTMr
YXJnNDExNCthcmc0MTE1K2FyZzQxMTYrYXJnNDExNythcmc0MTE4K2FyZzQxMTkrYXJnNDEyMCth
cmc0MTIxK2FyZzQxMjIrYXJnNDEyMythcmc0MTI0K2FyZzQxMjUrYXJnNDEyNithcmc0MTI3K2Fy
ZzQxMjgrYXJnNDEyOSthcmc0MTMwK2FyZzQxMzErYXJnNDEzMithcmc0MTMzK2FyZzQxMzQrYXJn
NDEzNSthcmc0MTM2K2FyZzQxMzcrYXJnNDEzOCthcmc0MTM5K2FyZzQxNDArYXJnNDE0MSthcmc0
MTQyK2FyZzQxNDMrYXJnNDE0NCthcmc0MTQ1K2FyZzQxNDYrYXJnNDE0Nythcmc0MTQ4K2FyZzQx
NDkrYXJnNDE1MCthcmc0MTUxK2FyZzQxNTIrYXJnNDE1Mythcmc0MTU0K2FyZzQxNTUrYXJnNDE1
Nithcmc0MTU3K2FyZzQxNTgrYXJnNDE1OSthcmc0MTYwK2FyZzQxNjErYXJnNDE2Mithcmc0MTYz
K2FyZzQxNjQrYXJnNDE2NSthcmc0MTY2K2FyZzQxNjcrYXJnNDE2OCthcmc0MTY5K2FyZzQxNzAr
YXJnNDE3MSthcmc0MTcyK2FyZzQxNzMrYXJnNDE3NCthcmc0MTc1K2FyZzQxNzYrYXJnNDE3Nyth
cmc0MTc4K2FyZzQxNzkrYXJnNDE4MCthcmc0MTgxK2FyZzQxODIrYXJnNDE4Mythcmc0MTg0K2Fy
ZzQxODUrYXJnNDE4Nithcmc0MTg3K2FyZzQxODgrYXJnNDE4OSthcmc0MTkwK2FyZzQxOTErYXJn
NDE5Mithcmc0MTkzK2FyZzQxOTQrYXJnNDE5NSthcmc0MTk2K2FyZzQxOTcrYXJnNDE5OCthcmc0
MTk5K2FyZzQyMDArYXJnNDIwMSthcmc0MjAyK2FyZzQyMDMrYXJnNDIwNCthcmc0MjA1K2FyZzQy
MDYrYXJnNDIwNythcmc0MjA4K2FyZzQyMDkrYXJnNDIxMCthcmc0MjExK2FyZzQyMTIrYXJnNDIx
Mythcmc0MjE0K2FyZzQyMTUrYXJnNDIxNithcmc0MjE3K2FyZzQyMTgrYXJnNDIxOSthcmc0MjIw
K2FyZzQyMjErYXJnNDIyMithcmc0MjIzK2FyZzQyMjQrYXJnNDIyNSthcmc0MjI2K2FyZzQyMjcr
YXJnNDIyOCthcmc0MjI5K2FyZzQyMzArYXJnNDIzMSthcmc0MjMyK2FyZzQyMzMrYXJnNDIzNCth
cmc0MjM1K2FyZzQyMzYrYXJnNDIzNythcmc0MjM4K2FyZzQyMzkrYXJnNDI0MCthcmc0MjQxK2Fy
ZzQyNDIrYXJnNDI0Mythcmc0MjQ0K2FyZzQyNDUrYXJnNDI0Nithcmc0MjQ3K2FyZzQyNDgrYXJn
NDI0OSthcmc0MjUwK2FyZzQyNTErYXJnNDI1Mithcmc0MjUzK2FyZzQyNTQrYXJnNDI1NSthcmc0
MjU2K2FyZzQyNTcrYXJnNDI1OCthcmc0MjU5K2FyZzQyNjArYXJnNDI2MSthcmc0MjYyK2FyZzQy
NjMrYXJnNDI2NCthcmc0MjY1K2FyZzQyNjYrYXJnNDI2Nythcmc0MjY4K2FyZzQyNjkrYXJnNDI3
MCthcmc0MjcxK2FyZzQyNzIrYXJnNDI3Mythcmc0Mjc0K2FyZzQyNzUrYXJnNDI3Nithcmc0Mjc3
K2FyZzQyNzgrYXJnNDI3OSthcmc0MjgwK2FyZzQyODErYXJnNDI4Mithcmc0MjgzK2FyZzQyODQr
YXJnNDI4NSthcmc0Mjg2K2FyZzQyODcrYXJnNDI4OCthcmc0Mjg5K2FyZzQyOTArYXJnNDI5MSth
cmc0MjkyK2FyZzQyOTMrYXJnNDI5NCthcmc0Mjk1K2FyZzQyOTYrYXJnNDI5Nythcmc0Mjk4K2Fy
ZzQyOTkrYXJnNDMwMCthcmc0MzAxK2FyZzQzMDIrYXJnNDMwMythcmc0MzA0K2FyZzQzMDUrYXJn
NDMwNithcmc0MzA3K2FyZzQzMDgrYXJnNDMwOSthcmc0MzEwK2FyZzQzMTErYXJnNDMxMithcmc0
MzEzK2FyZzQzMTQrYXJnNDMxNSthcmc0MzE2K2FyZzQzMTcrYXJnNDMxOCthcmc0MzE5K2FyZzQz
MjArYXJnNDMyMSthcmc0MzIyK2FyZzQzMjMrYXJnNDMyNCthcmc0MzI1K2FyZzQzMjYrYXJnNDMy
Nythcmc0MzI4K2FyZzQzMjkrYXJnNDMzMCthcmc0MzMxK2FyZzQzMzIrYXJnNDMzMythcmc0MzM0
K2FyZzQzMzUrYXJnNDMzNithcmc0MzM3K2FyZzQzMzgrYXJnNDMzOSthcmc0MzQwK2FyZzQzNDEr
YXJnNDM0Mithcmc0MzQzK2FyZzQzNDQrYXJnNDM0NSthcmc0MzQ2K2FyZzQzNDcrYXJnNDM0OCth
cmc0MzQ5K2FyZzQzNTArYXJnNDM1MSthcmc0MzUyK2FyZzQzNTMrYXJnNDM1NCthcmc0MzU1K2Fy
ZzQzNTYrYXJnNDM1Nythcmc0MzU4K2FyZzQzNTkrYXJnNDM2MCthcmc0MzYxK2FyZzQzNjIrYXJn
NDM2Mythcmc0MzY0K2FyZzQzNjUrYXJnNDM2Nithcmc0MzY3K2FyZzQzNjgrYXJnNDM2OSthcmc0
MzcwK2FyZzQzNzErYXJnNDM3Mithcmc0MzczK2FyZzQzNzQrYXJnNDM3NSthcmc0Mzc2K2FyZzQz
NzcrYXJnNDM3OCthcmc0Mzc5K2FyZzQzODArYXJnNDM4MSthcmc0MzgyK2FyZzQzODMrYXJnNDM4
NCthcmc0Mzg1K2FyZzQzODYrYXJnNDM4Nythcmc0Mzg4K2FyZzQzODkrYXJnNDM5MCthcmc0Mzkx
K2FyZzQzOTIrYXJnNDM5Mythcmc0Mzk0K2FyZzQzOTUrYXJnNDM5Nithcmc0Mzk3K2FyZzQzOTgr
YXJnNDM5OSthcmc0NDAwK2FyZzQ0MDErYXJnNDQwMithcmc0NDAzK2FyZzQ0MDQrYXJnNDQwNSth
cmc0NDA2K2FyZzQ0MDcrYXJnNDQwOCthcmc0NDA5K2FyZzQ0MTArYXJnNDQxMSthcmc0NDEyK2Fy
ZzQ0MTMrYXJnNDQxNCthcmc0NDE1K2FyZzQ0MTYrYXJnNDQxNythcmc0NDE4K2FyZzQ0MTkrYXJn
NDQyMCthcmc0NDIxK2FyZzQ0MjIrYXJnNDQyMythcmc0NDI0K2FyZzQ0MjUrYXJnNDQyNithcmc0
NDI3K2FyZzQ0MjgrYXJnNDQyOSthcmc0NDMwK2FyZzQ0MzErYXJnNDQzMithcmc0NDMzK2FyZzQ0
MzQrYXJnNDQzNSthcmc0NDM2K2FyZzQ0MzcrYXJnNDQzOCthcmc0NDM5K2FyZzQ0NDArYXJnNDQ0
MSthcmc0NDQyK2FyZzQ0NDMrYXJnNDQ0NCthcmc0NDQ1K2FyZzQ0NDYrYXJnNDQ0Nythcmc0NDQ4
K2FyZzQ0NDkrYXJnNDQ1MCthcmc0NDUxK2FyZzQ0NTIrYXJnNDQ1Mythcmc0NDU0K2FyZzQ0NTUr
YXJnNDQ1Nithcmc0NDU3K2FyZzQ0NTgrYXJnNDQ1OSthcmc0NDYwK2FyZzQ0NjErYXJnNDQ2Mith
cmc0NDYzK2FyZzQ0NjQrYXJnNDQ2NSthcmc0NDY2K2FyZzQ0NjcrYXJnNDQ2OCthcmc0NDY5K2Fy
ZzQ0NzArYXJnNDQ3MSthcmc0NDcyK2FyZzQ0NzMrYXJnNDQ3NCthcmc0NDc1K2FyZzQ0NzYrYXJn
NDQ3Nythcmc0NDc4K2FyZzQ0NzkrYXJnNDQ4MCthcmc0NDgxK2FyZzQ0ODIrYXJnNDQ4Mythcmc0
NDg0K2FyZzQ0ODUrYXJnNDQ4Nithcmc0NDg3K2FyZzQ0ODgrYXJnNDQ4OSthcmc0NDkwK2FyZzQ0
OTErYXJnNDQ5Mithcmc0NDkzK2FyZzQ0OTQrYXJnNDQ5NSthcmc0NDk2K2FyZzQ0OTcrYXJnNDQ5
OCthcmc0NDk5K2FyZzQ1MDArYXJnNDUwMSthcmc0NTAyK2FyZzQ1MDMrYXJnNDUwNCthcmc0NTA1
K2FyZzQ1MDYrYXJnNDUwNythcmc0NTA4K2FyZzQ1MDkrYXJnNDUxMCthcmc0NTExK2FyZzQ1MTIr
YXJnNDUxMythcmc0NTE0K2FyZzQ1MTUrYXJnNDUxNithcmc0NTE3K2FyZzQ1MTgrYXJnNDUxOSth
cmc0NTIwK2FyZzQ1MjErYXJnNDUyMithcmc0NTIzK2FyZzQ1MjQrYXJnNDUyNSthcmc0NTI2K2Fy
ZzQ1MjcrYXJnNDUyOCthcmc0NTI5K2FyZzQ1MzArYXJnNDUzMSthcmc0NTMyK2FyZzQ1MzMrYXJn
NDUzNCthcmc0NTM1K2FyZzQ1MzYrYXJnNDUzNythcmc0NTM4K2FyZzQ1MzkrYXJnNDU0MCthcmc0
NTQxK2FyZzQ1NDIrYXJnNDU0Mythcmc0NTQ0K2FyZzQ1NDUrYXJnNDU0Nithcmc0NTQ3K2FyZzQ1
NDgrYXJnNDU0OSthcmc0NTUwK2FyZzQ1NTErYXJnNDU1Mithcmc0NTUzK2FyZzQ1NTQrYXJnNDU1
NSthcmc0NTU2K2FyZzQ1NTcrYXJnNDU1OCthcmc0NTU5K2FyZzQ1NjArYXJnNDU2MSthcmc0NTYy
K2FyZzQ1NjMrYXJnNDU2NCthcmc0NTY1K2FyZzQ1NjYrYXJnNDU2Nythcmc0NTY4K2FyZzQ1Njkr
YXJnNDU3MCthcmc0NTcxK2FyZzQ1NzIrYXJnNDU3Mythcmc0NTc0K2FyZzQ1NzUrYXJnNDU3Nith
cmc0NTc3K2FyZzQ1NzgrYXJnNDU3OSthcmc0NTgwK2FyZzQ1ODErYXJnNDU4Mithcmc0NTgzK2Fy
ZzQ1ODQrYXJnNDU4NSthcmc0NTg2K2FyZzQ1ODcrYXJnNDU4OCthcmc0NTg5K2FyZzQ1OTArYXJn
NDU5MSthcmc0NTkyK2FyZzQ1OTMrYXJnNDU5NCthcmc0NTk1K2FyZzQ1OTYrYXJnNDU5Nythcmc0
NTk4K2FyZzQ1OTkrYXJnNDYwMCthcmc0NjAxK2FyZzQ2MDIrYXJnNDYwMythcmc0NjA0K2FyZzQ2
MDUrYXJnNDYwNithcmc0NjA3K2FyZzQ2MDgrYXJnNDYwOSthcmc0NjEwK2FyZzQ2MTErYXJnNDYx
Mithcmc0NjEzK2FyZzQ2MTQrYXJnNDYxNSthcmc0NjE2K2FyZzQ2MTcrYXJnNDYxOCthcmc0NjE5
K2FyZzQ2MjArYXJnNDYyMSthcmc0NjIyK2FyZzQ2MjMrYXJnNDYyNCthcmc0NjI1K2FyZzQ2MjYr
YXJnNDYyNythcmc0NjI4K2FyZzQ2MjkrYXJnNDYzMCthcmc0NjMxK2FyZzQ2MzIrYXJnNDYzMyth
cmc0NjM0K2FyZzQ2MzUrYXJnNDYzNithcmc0NjM3K2FyZzQ2MzgrYXJnNDYzOSthcmc0NjQwK2Fy
ZzQ2NDErYXJnNDY0Mithcmc0NjQzK2FyZzQ2NDQrYXJnNDY0NSthcmc0NjQ2K2FyZzQ2NDcrYXJn
NDY0OCthcmc0NjQ5K2FyZzQ2NTArYXJnNDY1MSthcmc0NjUyK2FyZzQ2NTMrYXJnNDY1NCthcmc0
NjU1K2FyZzQ2NTYrYXJnNDY1Nythcmc0NjU4K2FyZzQ2NTkrYXJnNDY2MCthcmc0NjYxK2FyZzQ2
NjIrYXJnNDY2Mythcmc0NjY0K2FyZzQ2NjUrYXJnNDY2Nithcmc0NjY3K2FyZzQ2NjgrYXJnNDY2
OSthcmc0NjcwK2FyZzQ2NzErYXJnNDY3Mithcmc0NjczK2FyZzQ2NzQrYXJnNDY3NSthcmc0Njc2
K2FyZzQ2NzcrYXJnNDY3OCthcmc0Njc5K2FyZzQ2ODArYXJnNDY4MSthcmc0NjgyK2FyZzQ2ODMr
YXJnNDY4NCthcmc0Njg1K2FyZzQ2ODYrYXJnNDY4Nythcmc0Njg4K2FyZzQ2ODkrYXJnNDY5MCth
cmc0NjkxK2FyZzQ2OTIrYXJnNDY5Mythcmc0Njk0K2FyZzQ2OTUrYXJnNDY5Nithcmc0Njk3K2Fy
ZzQ2OTgrYXJnNDY5OSthcmc0NzAwK2FyZzQ3MDErYXJnNDcwMithcmc0NzAzK2FyZzQ3MDQrYXJn
NDcwNSthcmc0NzA2K2FyZzQ3MDcrYXJnNDcwOCthcmc0NzA5K2FyZzQ3MTArYXJnNDcxMSthcmc0
NzEyK2FyZzQ3MTMrYXJnNDcxNCthcmc0NzE1K2FyZzQ3MTYrYXJnNDcxNythcmc0NzE4K2FyZzQ3
MTkrYXJnNDcyMCthcmc0NzIxK2FyZzQ3MjIrYXJnNDcyMythcmc0NzI0K2FyZzQ3MjUrYXJnNDcy
Nithcmc0NzI3K2FyZzQ3MjgrYXJnNDcyOSthcmc0NzMwK2FyZzQ3MzErYXJnNDczMithcmc0NzMz
K2FyZzQ3MzQrYXJnNDczNSthcmc0NzM2K2FyZzQ3MzcrYXJnNDczOCthcmc0NzM5K2FyZzQ3NDAr
YXJnNDc0MSthcmc0NzQyK2FyZzQ3NDMrYXJnNDc0NCthcmc0NzQ1K2FyZzQ3NDYrYXJnNDc0Nyth
cmc0NzQ4K2FyZzQ3NDkrYXJnNDc1MCthcmc0NzUxK2FyZzQ3NTIrYXJnNDc1Mythcmc0NzU0K2Fy
ZzQ3NTUrYXJnNDc1Nithcmc0NzU3K2FyZzQ3NTgrYXJnNDc1OSthcmc0NzYwK2FyZzQ3NjErYXJn
NDc2Mithcmc0NzYzK2FyZzQ3NjQrYXJnNDc2NSthcmc0NzY2K2FyZzQ3NjcrYXJnNDc2OCthcmc0
NzY5K2FyZzQ3NzArYXJnNDc3MSthcmc0NzcyK2FyZzQ3NzMrYXJnNDc3NCthcmc0Nzc1K2FyZzQ3
NzYrYXJnNDc3Nythcmc0Nzc4K2FyZzQ3NzkrYXJnNDc4MCthcmc0NzgxK2FyZzQ3ODIrYXJnNDc4
Mythcmc0Nzg0K2FyZzQ3ODUrYXJnNDc4Nithcmc0Nzg3K2FyZzQ3ODgrYXJnNDc4OSthcmc0Nzkw
K2FyZzQ3OTErYXJnNDc5Mithcmc0NzkzK2FyZzQ3OTQrYXJnNDc5NSthcmc0Nzk2K2FyZzQ3OTcr
YXJnNDc5OCthcmc0Nzk5K2FyZzQ4MDArYXJnNDgwMSthcmc0ODAyK2FyZzQ4MDMrYXJnNDgwNCth
cmc0ODA1K2FyZzQ4MDYrYXJnNDgwNythcmc0ODA4K2FyZzQ4MDkrYXJnNDgxMCthcmc0ODExK2Fy
ZzQ4MTIrYXJnNDgxMythcmc0ODE0K2FyZzQ4MTUrYXJnNDgxNithcmc0ODE3K2FyZzQ4MTgrYXJn
NDgxOSthcmc0ODIwK2FyZzQ4MjErYXJnNDgyMithcmc0ODIzK2FyZzQ4MjQrYXJnNDgyNSthcmc0
ODI2K2FyZzQ4MjcrYXJnNDgyOCthcmc0ODI5K2FyZzQ4MzArYXJnNDgzMSthcmc0ODMyK2FyZzQ4
MzMrYXJnNDgzNCthcmc0ODM1K2FyZzQ4MzYrYXJnNDgzNythcmc0ODM4K2FyZzQ4MzkrYXJnNDg0
MCthcmc0ODQxK2FyZzQ4NDIrYXJnNDg0Mythcmc0ODQ0K2FyZzQ4NDUrYXJnNDg0Nithcmc0ODQ3
K2FyZzQ4NDgrYXJnNDg0OSthcmc0ODUwK2FyZzQ4NTErYXJnNDg1Mithcmc0ODUzK2FyZzQ4NTQr
YXJnNDg1NSthcmc0ODU2K2FyZzQ4NTcrYXJnNDg1OCthcmc0ODU5K2FyZzQ4NjArYXJnNDg2MSth
cmc0ODYyK2FyZzQ4NjMrYXJnNDg2NCthcmc0ODY1K2FyZzQ4NjYrYXJnNDg2Nythcmc0ODY4K2Fy
ZzQ4NjkrYXJnNDg3MCthcmc0ODcxK2FyZzQ4NzIrYXJnNDg3Mythcmc0ODc0K2FyZzQ4NzUrYXJn
NDg3Nithcmc0ODc3K2FyZzQ4NzgrYXJnNDg3OSthcmc0ODgwK2FyZzQ4ODErYXJnNDg4Mithcmc0
ODgzK2FyZzQ4ODQrYXJnNDg4NSthcmc0ODg2K2FyZzQ4ODcrYXJnNDg4OCthcmc0ODg5K2FyZzQ4
OTArYXJnNDg5MSthcmc0ODkyK2FyZzQ4OTMrYXJnNDg5NCthcmc0ODk1K2FyZzQ4OTYrYXJnNDg5
Nythcmc0ODk4K2FyZzQ4OTkrYXJnNDkwMCthcmc0OTAxK2FyZzQ5MDIrYXJnNDkwMythcmc0OTA0
K2FyZzQ5MDUrYXJnNDkwNithcmc0OTA3K2FyZzQ5MDgrYXJnNDkwOSthcmc0OTEwK2FyZzQ5MTEr
YXJnNDkxMithcmc0OTEzK2FyZzQ5MTQrYXJnNDkxNSthcmc0OTE2K2FyZzQ5MTcrYXJnNDkxOCth
cmc0OTE5K2FyZzQ5MjArYXJnNDkyMSthcmc0OTIyK2FyZzQ5MjMrYXJnNDkyNCthcmc0OTI1K2Fy
ZzQ5MjYrYXJnNDkyNythcmc0OTI4K2FyZzQ5MjkrYXJnNDkzMCthcmc0OTMxK2FyZzQ5MzIrYXJn
NDkzMythcmc0OTM0K2FyZzQ5MzUrYXJnNDkzNithcmc0OTM3K2FyZzQ5MzgrYXJnNDkzOSthcmc0
OTQwK2FyZzQ5NDErYXJnNDk0Mithcmc0OTQzK2FyZzQ5NDQrYXJnNDk0NSthcmc0OTQ2K2FyZzQ5
NDcrYXJnNDk0OCthcmc0OTQ5K2FyZzQ5NTArYXJnNDk1MSthcmc0OTUyK2FyZzQ5NTMrYXJnNDk1
NCthcmc0OTU1K2FyZzQ5NTYrYXJnNDk1Nythcmc0OTU4K2FyZzQ5NTkrYXJnNDk2MCthcmc0OTYx
K2FyZzQ5NjIrYXJnNDk2Mythcmc0OTY0K2FyZzQ5NjUrYXJnNDk2Nithcmc0OTY3K2FyZzQ5Njgr
YXJnNDk2OSthcmc0OTcwK2FyZzQ5NzErYXJnNDk3Mithcmc0OTczK2FyZzQ5NzQrYXJnNDk3NSth
cmc0OTc2K2FyZzQ5NzcrYXJnNDk3OCthcmc0OTc5K2FyZzQ5ODArYXJnNDk4MSthcmc0OTgyK2Fy
ZzQ5ODMrYXJnNDk4NCthcmc0OTg1K2FyZzQ5ODYrYXJnNDk4Nythcmc0OTg4K2FyZzQ5ODkrYXJn
NDk5MCthcmc0OTkxK2FyZzQ5OTIrYXJnNDk5Mythcmc0OTk0K2FyZzQ5OTUrYXJnNDk5Nithcmc0
OTk3K2FyZzQ5OTgrYXJnNDk5OTt9Ci12b2lkIHRlc3RDYWxsRnVuY3Rpb25XaXRoSGVsbGFBcmd1
bWVudHMzKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOwotCi0gICAgVmVjdG9yPFZhbHVlKj4gYXJnczsKLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgNTAwMDsgKytpKQotICAgICAgICBhcmdzLmFwcGVuZChyb290LT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDA5NSAtIDUwMDAgKyBpIC0g
MSkpOwotCi0gICAgQ0NhbGxWYWx1ZSogY2FsbCA9IHJvb3QtPmFwcGVuZE5ldzxDQ2FsbFZhbHVl
PigKLSAgICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmRO
ZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4o
ZnVuY3Rpb25XaXRoSGVsbGFBcmd1bWVudHMzLCBCM0NDYWxsUHRyVGFnKSkpOwotICAgIGNhbGwt
PmFwcGVuZEFyZ3MoYXJncyk7Ci0gICAgCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KHByb2MsIFJldHVybiwgT3JpZ2luKCksIGNhbGwpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPENv
bXBpbGF0aW9uPiBjb21waWxhdGlvbiA9IGNvbXBpbGVQcm9jKHByb2MpOwotICAgIENIRUNLKGlu
dm9rZTxpbnQ+KCpjb21waWxhdGlvbikgPT0gaW52b2tlPGludD4oKmNvbXBpbGF0aW9uKSk7Ci0g
ICAgQ0hFQ0soaW52b2tlPGludD4oKmNvbXBpbGF0aW9uKSA9PSA3OTY3NTAwKTsKLSAgICBDSEVD
SyhpbnZva2U8aW50PigqY29tcGlsYXRpb24pID09IGludm9rZTxpbnQ+KCpjb21waWxhdGlvbikp
OwotICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb21waWxhdGlvbikgPT0gNzk2NzUwMCk7Ci0gICAg
Q0hFQ0soaW52b2tlPGludD4oKmNvbXBpbGF0aW9uKSA9PSBpbnZva2U8aW50PigqY29tcGlsYXRp
b24pKTsKLSAgICBDSEVDSyhpbnZva2U8aW50PigqY29tcGlsYXRpb24pID09IDc5Njc1MDApOwot
ICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb21waWxhdGlvbikgPT0gaW52b2tlPGludD4oKmNvbXBp
bGF0aW9uKSk7Ci0gICAgQ0hFQ0soaW52b2tlPGludD4oKmNvbXBpbGF0aW9uKSA9PSA3OTY3NTAw
KTsKLX0KLQotdm9pZCB0ZXN0UmV0dXJuRG91YmxlKGRvdWJsZSB2YWx1ZSkKLXsKLSAgICBQcm9j
ZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9y
aWdpbigpLCB2YWx1ZSkpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxk
b3VibGU+KHByb2MpLCB2YWx1ZSkpOwotfQotCi12b2lkIHRlc3RSZXR1cm5GbG9hdChmbG9hdCB2
YWx1ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0Rmxv
YXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHZhbHVlKSk7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNh
bChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jKSwgdmFsdWUpKTsKLX0KLQotZG91YmxlIHNpbXBs
ZUZ1bmN0aW9uRG91YmxlKGRvdWJsZSBhLCBkb3VibGUgYikKLXsKLSAgICByZXR1cm4gYSArIGI7
Ci19Ci0KLXZvaWQgdGVzdENhbGxTaW1wbGVEb3VibGUoZG91YmxlIGEsIGRvdWJsZSBiKQotewot
ICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCi0gICAg
ICAgICAgICBwcm9jLCBEb3VibGUsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+
KHNpbXBsZUZ1bmN0aW9uRG91YmxlLCBCM0NDYWxsUHRyVGFnKSksCi0gICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFy
Z3VtZW50RlBSMCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMSkpKTsKLQotICAgIENIRUNL
KGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBhLCBiKSA9PSBhICsgYik7Ci19Ci0KLWZsb2F0
IHNpbXBsZUZ1bmN0aW9uRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKLXsKLSAgICByZXR1cm4gYSAr
IGI7Ci19Ci0KLXZvaWQgdGVzdENhbGxTaW1wbGVGbG9hdChmbG9hdCBhLCBmbG9hdCBiKQotewot
ICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFs
dWUqIGFyZ3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywg
T3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Ci0gICAgVmFsdWUqIGZsb2F0VmFs
dWUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCks
IGFyZ3VtZW50MWludDMyKTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZTIgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQyaW50MzIpOwot
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAotICAgICAgICAg
ICAgcHJvYywgRmxvYXQsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENv
bnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KHNpbXBs
ZUZ1bmN0aW9uRmxvYXQsIEIzQ0NhbGxQdHJUYWcpKSwKLSAgICAgICAgICAgIGZsb2F0VmFsdWUx
LAotICAgICAgICAgICAgZmxvYXRWYWx1ZTIpKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNv
bXBpbGVBbmRSdW48ZmxvYXQ+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYml0d2lz
ZV9jYXN0PGludDMyX3Q+KGIpKSwgYSArIGIpKTsKLX0KLQotZG91YmxlIGZ1bmN0aW9uV2l0aEhl
bGxhRG91YmxlQXJndW1lbnRzKGRvdWJsZSBhLCBkb3VibGUgYiwgZG91YmxlIGMsIGRvdWJsZSBk
LCBkb3VibGUgZSwgZG91YmxlIGYsIGRvdWJsZSBnLCBkb3VibGUgaCwgZG91YmxlIGksIGRvdWJs
ZSBqLCBkb3VibGUgaywgZG91YmxlIGwsIGRvdWJsZSBtLCBkb3VibGUgbiwgZG91YmxlIG8sIGRv
dWJsZSBwLCBkb3VibGUgcSwgZG91YmxlIHIsIGRvdWJsZSBzLCBkb3VibGUgdCwgZG91YmxlIHUs
IGRvdWJsZSB2LCBkb3VibGUgdywgZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgeikKLXsKLSAg
ICByZXR1cm4gYSAqIHBvdygyLCAwKSArIGIgKiBwb3coMiwgMSkgKyBjICogcG93KDIsIDIpICsg
ZCAqIHBvdygyLCAzKSArIGUgKiBwb3coMiwgNCkgKyBmICogcG93KDIsIDUpICsgZyAqIHBvdygy
LCA2KSArIGggKiBwb3coMiwgNykgKyBpICogcG93KDIsIDgpICsgaiAqIHBvdygyLCA5KSArIGsg
KiBwb3coMiwgMTApICsgbCAqIHBvdygyLCAxMSkgKyBtICogcG93KDIsIDEyKSArIG4gKiBwb3co
MiwgMTMpICsgbyAqIHBvdygyLCAxNCkgKyBwICogcG93KDIsIDE1KSArIHEgKiBwb3coMiwgMTYp
ICsgciAqIHBvdygyLCAxNykgKyBzICogcG93KDIsIDE4KSArIHQgKiBwb3coMiwgMTkpICsgdSAq
IHBvdygyLCAyMCkgKyB2ICogcG93KDIsIDIxKSArIHcgKiBwb3coMiwgMjIpICsgeCAqIHBvdygy
LCAyMykgKyB5ICogcG93KDIsIDI0KSArIHogKiBwb3coMiwgMjUpOwotfQotCi12b2lkIHRlc3RD
YWxsRnVuY3Rpb25XaXRoSGVsbGFEb3VibGVBcmd1bWVudHMoKQotewotICAgIFByb2NlZHVyZSBw
cm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBWZWN0
b3I8VmFsdWUqPiBhcmdzOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAyNjsgKytpKQot
ICAgICAgICBhcmdzLmFwcGVuZChyb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIGkgKyAxKSk7Ci0KLSAgICBDQ2FsbFZhbHVlKiBjYWxsID0gcm9vdC0+YXBw
ZW5kTmV3PENDYWxsVmFsdWU+KAotICAgICAgICBwcm9jLCBEb3VibGUsIE9yaWdpbigpLAotICAg
ICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NG
dW5jdGlvblB0cjx2b2lkKj4oZnVuY3Rpb25XaXRoSGVsbGFEb3VibGVBcmd1bWVudHMsIEIzQ0Nh
bGxQdHJUYWcpKSk7Ci0gICAgY2FsbC0+YXBwZW5kQXJncyhhcmdzKTsKLSAgICAKLSAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2FsbCk7Ci0K
LSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYykgPT0gZnVuY3Rpb25XaXRoSGVs
bGFEb3VibGVBcmd1bWVudHMoMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwg
MTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2KSk7
Ci19Ci0KLWZsb2F0IGZ1bmN0aW9uV2l0aEhlbGxhRmxvYXRBcmd1bWVudHMoZmxvYXQgYSwgZmxv
YXQgYiwgZmxvYXQgYywgZmxvYXQgZCwgZmxvYXQgZSwgZmxvYXQgZiwgZmxvYXQgZywgZmxvYXQg
aCwgZmxvYXQgaSwgZmxvYXQgaiwgZmxvYXQgaywgZmxvYXQgbCwgZmxvYXQgbSwgZmxvYXQgbiwg
ZmxvYXQgbywgZmxvYXQgcCwgZmxvYXQgcSwgZmxvYXQgciwgZmxvYXQgcywgZmxvYXQgdCwgZmxv
YXQgdSwgZmxvYXQgdiwgZmxvYXQgdywgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikKLXsKLSAg
ICByZXR1cm4gYSAqIHBvdygyLCAwKSArIGIgKiBwb3coMiwgMSkgKyBjICogcG93KDIsIDIpICsg
ZCAqIHBvdygyLCAzKSArIGUgKiBwb3coMiwgNCkgKyBmICogcG93KDIsIDUpICsgZyAqIHBvdygy
LCA2KSArIGggKiBwb3coMiwgNykgKyBpICogcG93KDIsIDgpICsgaiAqIHBvdygyLCA5KSArIGsg
KiBwb3coMiwgMTApICsgbCAqIHBvdygyLCAxMSkgKyBtICogcG93KDIsIDEyKSArIG4gKiBwb3co
MiwgMTMpICsgbyAqIHBvdygyLCAxNCkgKyBwICogcG93KDIsIDE1KSArIHEgKiBwb3coMiwgMTYp
ICsgciAqIHBvdygyLCAxNykgKyBzICogcG93KDIsIDE4KSArIHQgKiBwb3coMiwgMTkpICsgdSAq
IHBvdygyLCAyMCkgKyB2ICogcG93KDIsIDIxKSArIHcgKiBwb3coMiwgMjIpICsgeCAqIHBvdygy
LCAyMykgKyB5ICogcG93KDIsIDI0KSArIHogKiBwb3coMiwgMjUpOwotfQotCi12b2lkIHRlc3RD
YWxsRnVuY3Rpb25XaXRoSGVsbGFGbG9hdEFyZ3VtZW50cygpCi17Ci0gICAgUHJvY2VkdXJlIHBy
b2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIFZlY3Rv
cjxWYWx1ZSo+IGFyZ3M7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI2OyArK2kpCi0g
ICAgICAgIGFyZ3MuYXBwZW5kKHJvb3QtPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBpICsgMSkpOwotCi0gICAgQ0NhbGxWYWx1ZSogY2FsbCA9IHJvb3QtPmFwcGVu
ZE5ldzxDQ2FsbFZhbHVlPigKLSAgICAgICAgcHJvYywgRmxvYXQsIE9yaWdpbigpLAotICAgICAg
ICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5j
dGlvblB0cjx2b2lkKj4oZnVuY3Rpb25XaXRoSGVsbGFGbG9hdEFyZ3VtZW50cywgQjNDQ2FsbFB0
clRhZykpKTsKLSAgICBjYWxsLT5hcHBlbmRBcmdzKGFyZ3MpOwotICAgIAotICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBjYWxsKTsKLQotICAg
IENIRUNLKGNvbXBpbGVBbmRSdW48ZmxvYXQ+KHByb2MpID09IGZ1bmN0aW9uV2l0aEhlbGxhRmxv
YXRBcmd1bWVudHMoMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0
LCAxNSwgMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2KSk7Ci19Ci0K
LXZvaWQgdGVzdExpbmVhclNjYW5XaXRoQ2FsbGVlT25TdGFjaygpCi17Ci0gICAgLy8gVGhpcyB0
ZXN0cyBwcm9wZXIgQ0NhbGwgZ2VuZXJhdGlvbiB3aGVuIGNvbXBpbGluZyB3aXRoIGEgbG93ZXIg
b3B0aW1pemF0aW9uCi0gICAgLy8gbGV2ZWwgYW5kIG9wZXJhdGluZyB3aXRoIGEgY2FsbGVlIGFy
Z3VtZW50IHRoYXQncyBzcGlsdCBvbiB0aGUgc3RhY2suCi0gICAgLy8gT24gQVJNNjQsIHRoaXMg
Y2F1c2VkIGFuIGFzc2VydCBpbiBNYWNyb0Fzc2VtYmxlckFSTTY0IGJlY2F1c2Ugb2YgZGlzYWxs
b3dlZAotICAgIC8vIHVzZSBvZiB0aGUgc2NyYXRjaCByZWdpc3Rlci4KLSAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwNjcyCi0KLSAgICBQcm9jZWR1cmUg
cHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LAotICAgICAgICByb290LT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9j
LCBJbnQzMiwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4oc2ltcGxlRnVuY3Rp
b24sIEIzQ0NhbGxQdHJUYWcpKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKLSAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpOwotCi0gICAgLy8gRm9yY2UgdGhlIGxpbmVhciBzY2Fu
IGFsZ29yaXRobSB0byBzcGlsbCBldmVyeXRoaW5nLgotICAgIGF1dG8gb3JpZ2luYWwgPSBPcHRp
b25zOjphaXJMaW5lYXJTY2FuU3BpbGxzRXZlcnl0aGluZygpOwotICAgIE9wdGlvbnM6OmFpckxp
bmVhclNjYW5TcGlsbHNFdmVyeXRoaW5nKCkgPSB0cnVlOwotCi0gICAgLy8gQ29tcGlsaW5nIHdp
dGggMSBhcyB0aGUgb3B0aW1pemF0aW9uIGxldmVsIGVuZm9yY2VzIHRoZSB1c2Ugb2YgbGluZWFy
IHNjYW4KLSAgICAvLyBmb3IgcmVnaXN0ZXIgYWxsb2NhdGlvbi4KLSAgICBhdXRvIGNvZGUgPSBj
b21waWxlUHJvYyhwcm9jKTsKLSAgICBDSEVDS19FUShpbnZva2U8aW50PigqY29kZSwgNDEsIDEp
LCA0Mik7Ci0KLSAgICBPcHRpb25zOjphaXJMaW5lYXJTY2FuU3BpbGxzRXZlcnl0aGluZygpID0g
b3JpZ2luYWw7Ci19Ci0KLXZvaWQgdGVzdENoaWxsRGl2KGludCBudW0sIGludCBkZW4sIGludCBy
ZXMpCi17Ci0gICAgLy8gVGVzdCBub24tY29uc3RhbnQuCi0gICAgewotICAgICAgICBQcm9jZWR1
cmUgcHJvYzsKLSAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAg
ICAgICAgCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgICAg
IHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAotICAgICAgICAgICAgICAgIHByb2MsIGNoaWxsKERpdiksIE9yaWdpbigpLAotICAgICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgICAgIHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
KSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAg
ICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKSkpKTsKLQotICAgICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywg
bnVtLCBkZW4pID09IHJlcyk7Ci0gICAgfQotCi0gICAgLy8gVGVzdCBjb25zdGFudC4KLSAgICB7
Ci0gICAgICAgIFByb2NlZHVyZSBwcm9jOwotICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOwotICAgICAgICAKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAotICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgY2hpbGwoRGl2KSwg
T3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIG51bSksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENv
bnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGRlbikpKTsKLSAgICAgICAgCi0gICAgICAgIENI
RUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jKSA9PSByZXMpOwotICAgIH0KLX0KLQotdm9pZCB0
ZXN0Q2hpbGxEaXZUd2ljZShpbnQgbnVtMSwgaW50IGRlbjEsIGludCBudW0yLCBpbnQgZGVuMiwg
aW50IHJlcykKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAg
ICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAotICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgY2hpbGwoRGl2KSwgT3Jp
Z2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAg
ICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCkpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
Ci0gICAgICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIGNoaWxsKERpdiksIE9yaWdpbigpLAotICAg
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgICAg
IHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjIpKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAg
ICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIzKSkpKSk7Ci0gICAgCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHBy
b2MsIG51bTEsIGRlbjEsIG51bTIsIGRlbjIpID09IHJlcyk7Ci19Ci0KLXZvaWQgdGVzdENoaWxs
RGl2NjQoaW50NjRfdCBudW0sIGludDY0X3QgZGVuLCBpbnQ2NF90IHJlcykKLXsKLSAgICBpZiAo
IWlzNjRCaXQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gVGVzdCBub24tY29uc3RhbnQu
Ci0gICAgewotICAgICAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICAgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICAgICAgCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKLSAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIGNoaWxs
KERpdiksIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKLSAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKTsKLSAgICAgICAgCi0gICAgICAgIENIRUNLKGNv
bXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgbnVtLCBkZW4pID09IHJlcyk7Ci0gICAgfQotCi0g
ICAgLy8gVGVzdCBjb25zdGFudC4KLSAgICB7Ci0gICAgICAgIFByb2NlZHVyZSBwcm9jOwotICAg
ICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgICAgICAKLSAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAg
ICAgICAgICAgcHJvYywgY2hpbGwoRGl2KSwgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIG51bSksCi0gICAgICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGRl
bikpKTsKLSAgICAgICAgCi0gICAgICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJv
YykgPT0gcmVzKTsKLSAgICB9Ci19Ci0KLXZvaWQgdGVzdE1vZEFyZyhpbnQ2NF90IHZhbHVlKQot
ewotICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIFByb2NlZHVyZSBwcm9j
OwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBWYWx1ZSog
YXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgTW9kLCBPcmlnaW4oKSwgYXJndW1lbnQsIGFyZ3VtZW50KTsK
LSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwg
cmVzdWx0KTsKLQotICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIHZhbHVl
KSk7Ci19Ci0KLXZvaWQgdGVzdE1vZEFyZ3MoaW50NjRfdCBudW1lcmF0b3IsIGludDY0X3QgZGVu
b21pbmF0b3IpCi17Ci0gICAgaWYgKCFkZW5vbWluYXRvcikKLSAgICAgICAgcmV0dXJuOwotICAg
IGlmIChudW1lcmF0b3IgPT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCkgJiYg
ZGVub21pbmF0b3IgPT0gLTEpCi0gICAgICAgIHJldHVybjsKLQotICAgIFByb2NlZHVyZSBwcm9j
OwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBWYWx1ZSog
YXJndW1lbnQxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIFZhbHVlKiBhcmd1bWVudDIgPSByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMSk7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgTW9kLCBPcmlnaW4oKSwgYXJndW1lbnQxLCBhcmd1bWVudDIpOwotICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOwotCi0g
ICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBudW1lcmF0b3IsIGRlbm9taW5h
dG9yKSA9PSBudW1lcmF0b3IgJSBkZW5vbWluYXRvcik7Ci19Ci0KLXZvaWQgdGVzdE1vZEltbXMo
aW50NjRfdCBudW1lcmF0b3IsIGludDY0X3QgZGVub21pbmF0b3IpCi17Ci0gICAgaWYgKCFkZW5v
bWluYXRvcikKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChudW1lcmF0b3IgPT0gc3RkOjpudW1l
cmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCkgJiYgZGVub21pbmF0b3IgPT0gLTEpCi0gICAgICAg
IHJldHVybjsKLQotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBWYWx1ZSogYXJndW1lbnQxID0gcm9vdC0+YXBwZW5kTmV3
PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIG51bWVyYXRvcik7Ci0gICAgVmFsdWUqIGFy
Z3VtZW50MiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBk
ZW5vbWluYXRvcik7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgTW9kLCBPcmlnaW4oKSwgYXJndW1lbnQxLCBhcmd1bWVudDIpOwotICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOwotCi0g
ICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBudW1lcmF0b3IsIGRlbm9taW5h
dG9yKSA9PSBudW1lcmF0b3IgJSBkZW5vbWluYXRvcik7Ci19Ci0KLXZvaWQgdGVzdE1vZEFyZzMy
KGludDMyX3QgdmFsdWUpCi17Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKLQotICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
VHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZhbHVlKiBy
ZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE1vZCwgT3JpZ2luKCksIGFyZ3Vt
ZW50LCBhcmd1bWVudCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJl
dHVybiwgT3JpZ2luKCksIHJlc3VsdCk7Ci0KLSAgICBDSEVDSyghY29tcGlsZUFuZFJ1bjxpbnQz
Ml90Pihwcm9jLCB2YWx1ZSkpOwotfQotCi12b2lkIHRlc3RNb2RBcmdzMzIoaW50MzJfdCBudW1l
cmF0b3IsIGludDMyX3QgZGVub21pbmF0b3IpCi17Ci0gICAgaWYgKCFkZW5vbWluYXRvcikKLSAg
ICAgICAgcmV0dXJuOwotICAgIGlmIChudW1lcmF0b3IgPT0gc3RkOjpudW1lcmljX2xpbWl0czxp
bnQzMl90Pjo6bWluKCkgJiYgZGVub21pbmF0b3IgPT0gLTEpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7Ci0KLSAgICBWYWx1ZSogYXJndW1lbnQxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUq
IGFyZ3VtZW50MiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigp
LAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIE1vZCwgT3JpZ2luKCksIGFyZ3VtZW50MSwgYXJndW1lbnQy
KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwgcmVzdWx0KTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgbnVt
ZXJhdG9yLCBkZW5vbWluYXRvcikgPT0gbnVtZXJhdG9yICUgZGVub21pbmF0b3IpOwotfQotCi12
b2lkIHRlc3RNb2RJbW1zMzIoaW50MzJfdCBudW1lcmF0b3IsIGludDMyX3QgZGVub21pbmF0b3Ip
Ci17Ci0gICAgaWYgKCFkZW5vbWluYXRvcikKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChudW1l
cmF0b3IgPT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkgJiYgZGVub21pbmF0
b3IgPT0gLTEpCi0gICAgICAgIHJldHVybjsKLQotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBWYWx1ZSogYXJndW1lbnQx
ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIG51bWVyYXRv
cik7Ci0gICAgVmFsdWUqIGFyZ3VtZW50MiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBkZW5vbWluYXRvcik7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTW9kLCBPcmlnaW4oKSwgYXJndW1lbnQxLCBhcmd1bWVu
dDIpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCByZXN1bHQpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBu
dW1lcmF0b3IsIGRlbm9taW5hdG9yKSA9PSBudW1lcmF0b3IgJSBkZW5vbWluYXRvcik7Ci19Ci0K
LXZvaWQgdGVzdENoaWxsTW9kQXJnKGludDY0X3QgdmFsdWUpCi17Ci0gICAgUHJvY2VkdXJlIHBy
b2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIFZhbHVl
KiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBjaGlsbChNb2QpLCBPcmlnaW4oKSwgYXJndW1lbnQsIGFy
Z3VtZW50KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgcmVzdWx0KTsKLQotICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludDY0X3Q+KHBy
b2MsIHZhbHVlKSk7Ci19Ci0KLXZvaWQgdGVzdENoaWxsTW9kQXJncyhpbnQ2NF90IG51bWVyYXRv
ciwgaW50NjRfdCBkZW5vbWluYXRvcikKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgVmFsdWUqIGFyZ3VtZW50MSA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKLSAgICBWYWx1ZSogYXJndW1lbnQyID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEp
OwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIGNoaWxs
KE1vZCksIE9yaWdpbigpLCBhcmd1bWVudDEsIGFyZ3VtZW50Mik7Ci0gICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7Ci0KLSAgICBD
SEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIG51bWVyYXRvciwgZGVub21pbmF0b3Ip
ID09IGNoaWxsTW9kKG51bWVyYXRvciwgZGVub21pbmF0b3IpKTsKLX0KLQotdm9pZCB0ZXN0Q2hp
bGxNb2RJbW1zKGludDY0X3QgbnVtZXJhdG9yLCBpbnQ2NF90IGRlbm9taW5hdG9yKQotewotICAg
IFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
Ci0KLSAgICBWYWx1ZSogYXJndW1lbnQxID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIG51bWVyYXRvcik7Ci0gICAgVmFsdWUqIGFyZ3VtZW50MiA9IHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBkZW5vbWluYXRvcik7Ci0g
ICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgY2hpbGwoTW9k
KSwgT3JpZ2luKCksIGFyZ3VtZW50MSwgYXJndW1lbnQyKTsKLSAgICByb290LT5hcHBlbmROZXdD
b250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKLQotICAgIENIRUNL
KGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgbnVtZXJhdG9yLCBkZW5vbWluYXRvcikgPT0g
Y2hpbGxNb2QobnVtZXJhdG9yLCBkZW5vbWluYXRvcikpOwotfQotCi12b2lkIHRlc3RDaGlsbE1v
ZEFyZzMyKGludDMyX3QgdmFsdWUpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIFZhbHVlKiBhcmd1bWVudCA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCkpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIGNoaWxsKE1vZCksIE9yaWdpbigpLCBhcmd1bWVudCwgYXJndW1lbnQpOwotICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQp
OwotCi0gICAgQ0hFQ0soIWNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgdmFsdWUpKTsKLX0K
LQotdm9pZCB0ZXN0Q2hpbGxNb2RBcmdzMzIoaW50MzJfdCBudW1lcmF0b3IsIGludDMyX3QgZGVu
b21pbmF0b3IpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKLQotICAgIFZhbHVlKiBhcmd1bWVudDEgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
KTsKLSAgICBWYWx1ZSogYXJndW1lbnQyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBU
cnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Ci0gICAgVmFsdWUqIHJl
c3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgY2hpbGwoTW9kKSwgT3JpZ2luKCks
IGFyZ3VtZW50MSwgYXJndW1lbnQyKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRS
dW48aW50MzJfdD4ocHJvYywgbnVtZXJhdG9yLCBkZW5vbWluYXRvcikgPT0gY2hpbGxNb2QobnVt
ZXJhdG9yLCBkZW5vbWluYXRvcikpOwotfQotCi12b2lkIHRlc3RDaGlsbE1vZEltbXMzMihpbnQz
Ml90IG51bWVyYXRvciwgaW50MzJfdCBkZW5vbWluYXRvcikKLXsKLSAgICBQcm9jZWR1cmUgcHJv
YzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgVmFsdWUq
IGFyZ3VtZW50MSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBudW1lcmF0b3IpOwotICAgIFZhbHVlKiBhcmd1bWVudDIgPSByb290LT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgZGVub21pbmF0b3IpOwotICAgIFZhbHVlKiByZXN1
bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIGNoaWxsKE1vZCksIE9yaWdpbigpLCBh
cmd1bWVudDEsIGFyZ3VtZW50Mik7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHBy
b2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVu
PGludDMyX3Q+KHByb2MsIG51bWVyYXRvciwgZGVub21pbmF0b3IpID09IGNoaWxsTW9kKG51bWVy
YXRvciwgZGVub21pbmF0b3IpKTsKLX0KLQotdm9pZCB0ZXN0TG9vcFdpdGhNdWx0aXBsZUhlYWRl
ckVkZ2VzKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGlubmVySGVhZGVyID0gcHJvYy5hZGRC
bG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGlubmVyRW5kID0gcHJvYy5hZGRCbG9jaygpOwotICAg
IEJhc2ljQmxvY2sqIG91dGVySGVhZGVyID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxv
Y2sqIG91dGVyRW5kID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGVuZCA9IHBy
b2MuYWRkQmxvY2soKTsKLQotICAgIGF1dG8qIG5lNDIgPSBvdXRlckhlYWRlci0+YXBwZW5kTmV3
PFZhbHVlPigKLSAgICAgICAgcHJvYywgTm90RXF1YWwsIE9yaWdpbigpLAotICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgNDIpKTsKLSAgICBvdXRlckhlYWRlci0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAotICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAotICAgICAgICBuZTQyLAotICAgICAg
ICBGcmVxdWVudGVkQmxvY2soaW5uZXJIZWFkZXIpLCBGcmVxdWVudGVkQmxvY2sob3V0ZXJFbmQp
KTsKLSAgICBvdXRlckVuZC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBC
cmFuY2gsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAg
ICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
KSwKLSAgICAgICAgRnJlcXVlbnRlZEJsb2NrKG91dGVySGVhZGVyKSwgRnJlcXVlbnRlZEJsb2Nr
KGVuZCkpOwotCi0gICAgU3dpdGNoVmFsdWUqIHN3aXRjaFZhbHVlID0gaW5uZXJIZWFkZXItPmFw
cGVuZE5ldzxTd2l0Y2hWYWx1ZT4oCi0gICAgICAgIHByb2MsIE9yaWdpbigpLCByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMSkpOwotICAgIHN3aXRjaFZhbHVlLT5zZXRGYWxsVGhyb3VnaChGcmVxdWVudGVkQmxvY2so
aW5uZXJFbmQpKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjA7ICsraSkgewotICAg
ICAgICBzd2l0Y2hWYWx1ZS0+YXBwZW5kQ2FzZShTd2l0Y2hDYXNlKGksIEZyZXF1ZW50ZWRCbG9j
ayhpbm5lckhlYWRlcikpKTsKLSAgICB9Ci0KLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUocHJvYywgSnVtcCwgT3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayhvdXRlckhlYWRlcikpOwot
Ci0gICAgaW5uZXJFbmQtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4o
KSwgRnJlcXVlbnRlZEJsb2NrKG91dGVyRW5kKSk7Ci0gICAgZW5kLT5hcHBlbmROZXdDb250cm9s
VmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIGVuZC0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDU2NzgpKTsKLQotICAgIGF1dG8g
Y29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOyAvLyBUaGlzIHNob3VsZG4ndCBjcmFzaCBpbiBjb21w
dXRpbmcgTmF0dXJhbExvb3BzLgotICAgIENIRUNLKGludm9rZTxpbnQzMl90PigqY29kZSwgMCwg
MTIzNDUpID09IDU2NzgpOwotfQotCi12b2lkIHRlc3RTd2l0Y2godW5zaWduZWQgZGVncmVlLCB1
bnNpZ25lZCBnYXAgPSAxKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBCYXNpY0Jsb2NrKiB0ZXJtaW5hdGUgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgdGVybWluYXRlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0g
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHRlcm1pbmF0ZS0+YXBwZW5k
TmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKLQotICAgIFN3aXRjaFZhbHVl
KiBzd2l0Y2hWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxTd2l0Y2hWYWx1ZT4oCi0gICAgICAgIHBy
b2MsIE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIHN3aXRjaFZhbHVlLT5zZXRGYWxs
VGhyb3VnaChGcmVxdWVudGVkQmxvY2sodGVybWluYXRlKSk7Ci0KLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgZGVncmVlOyArK2kpIHsKLSAgICAgICAgQmFzaWNCbG9jayogbmV3QmxvY2sg
PSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgIG5ld0Jsb2NrLT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCi0gICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICAgICAgbmV3
QmxvY2stPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9j
LCBPcmlnaW4oKSwgKGkgJiAxKSA/IEdQUkluZm86OmFyZ3VtZW50R1BSMiA6IEdQUkluZm86OmFy
Z3VtZW50R1BSMSkpOwotICAgICAgICBzd2l0Y2hWYWx1ZS0+YXBwZW5kQ2FzZShTd2l0Y2hDYXNl
KGdhcCAqIGksIEZyZXF1ZW50ZWRCbG9jayhuZXdCbG9jaykpKTsKLSAgICB9Ci0KLSAgICBhdXRv
IGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBkZWdyZWU7ICsraSkgewotICAgICAgICBDSEVDSyhpbnZva2U8aW50MzJfdD4oKmNvZGUsIGkg
KiBnYXAsIDQyLCAxMSkgPT0gKChpICYgMSkgPyAxMSA6IDQyKSk7Ci0gICAgICAgIGlmIChnYXAg
PiAxKSB7Ci0gICAgICAgICAgICBDSEVDSyghaW52b2tlPGludDMyX3Q+KCpjb2RlLCBpICogZ2Fw
ICsgMSwgNDIsIDExKSk7Ci0gICAgICAgICAgICBDSEVDSyghaW52b2tlPGludDMyX3Q+KCpjb2Rl
LCBpICogZ2FwIC0gMSwgNDIsIDExKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBDSEVDSygh
aW52b2tlPGludDMyX3Q+KCpjb2RlLCAtMSwgNDIsIDExKSk7Ci0gICAgQ0hFQ0soIWludm9rZTxp
bnQzMl90PigqY29kZSwgZGVncmVlICogZ2FwLCA0MiwgMTEpKTsKLSAgICBDSEVDSyghaW52b2tl
PGludDMyX3Q+KCpjb2RlLCBkZWdyZWUgKiBnYXAgKyAxLCA0MiwgMTEpKTsKLX0KLQotdm9pZCB0
ZXN0U3dpdGNoU2FtZUNhc2VBc0RlZmF1bHQoKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBCYXNpY0Jsb2NrKiBy
ZXR1cm4xMCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByZXR1cm4xMC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByZXR1cm4x
MC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEwKSk7Ci0KLSAgICBW
YWx1ZSogc3dpdGNoT3BlcmFuZCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLQotICAgIEJhc2ljQmxvY2sq
IGNhc2VBbmREZWZhdWx0ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIGNhc2VBbmREZWZhdWx0LT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAot
ICAgICAgICAgICAgY2FzZUFuZERlZmF1bHQtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAg
ICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHN3aXRjaE9wZXJh
bmQsIGNhc2VBbmREZWZhdWx0LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIDApKSk7Ci0KLSAgICBTd2l0Y2hWYWx1ZSogc3dpdGNoVmFsdWUgPSByb290LT5hcHBlbmRO
ZXc8U3dpdGNoVmFsdWU+KHByb2MsIE9yaWdpbigpLCBzd2l0Y2hPcGVyYW5kKTsKLQotICAgIHN3
aXRjaFZhbHVlLT5hcHBlbmRDYXNlKFN3aXRjaENhc2UoMTAwLCBGcmVxdWVudGVkQmxvY2socmV0
dXJuMTApKSk7Ci0KLSAgICAvLyBCZWNhdXNlIGNhc2VBbmREZWZhdWx0IGlzIHJlYWNoZWQgYm90
aCBhcyBkZWZhdWx0IGNhc2UsIGFuZCB3aGVuIGl0J3MgMCwKLSAgICAvLyB3ZSBzaG91bGQgbm90
IGluY29ycmVjdGx5IG9wdGltaXplIGFuZCBhc3N1bWUgdGhhdCBzd2l0Y2hPcGVyYW5kPT0wLgot
ICAgIHN3aXRjaFZhbHVlLT5hcHBlbmRDYXNlKFN3aXRjaENhc2UoMCwgRnJlcXVlbnRlZEJsb2Nr
KGNhc2VBbmREZWZhdWx0KSkpOwotICAgIHN3aXRjaFZhbHVlLT5zZXRGYWxsVGhyb3VnaChGcmVx
dWVudGVkQmxvY2soY2FzZUFuZERlZmF1bHQpKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQ
cm9jKHByb2MpOwotCi0gICAgQ0hFQ0soaW52b2tlPGludDMyX3Q+KCpjb2RlLCAxMDApID09IDEw
KTsKLSAgICBDSEVDSyhpbnZva2U8aW50MzJfdD4oKmNvZGUsIDApID09IDEpOwotICAgIENIRUNL
KGludm9rZTxpbnQzMl90PigqY29kZSwgMSkgPT0gMCk7Ci0gICAgQ0hFQ0soaW52b2tlPGludDMy
X3Q+KCpjb2RlLCAyKSA9PSAwKTsKLSAgICBDSEVDSyhpbnZva2U8aW50MzJfdD4oKmNvZGUsIDk5
KSA9PSAwKTsKLSAgICBDSEVDSyhpbnZva2U8aW50MzJfdD4oKmNvZGUsIDB4YmFhZGJlZWYpID09
IDApOwotfQotCi12b2lkIHRlc3RTd2l0Y2hDaGlsbERpdih1bnNpZ25lZCBkZWdyZWUsIHVuc2ln
bmVkIGdhcCA9IDEpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIFZhbHVlKiBsZWZ0ID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEp
OwotICAgIFZhbHVlKiByaWdodCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLQotICAgIEJhc2ljQmxvY2sq
IHRlcm1pbmF0ZSA9IHByb2MuYWRkQmxvY2soKTsKLSAgICB0ZXJtaW5hdGUtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgdGVy
bWluYXRlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwotCi0g
ICAgU3dpdGNoVmFsdWUqIHN3aXRjaFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFN3aXRjaFZhbHVl
PigKLSAgICAgICAgcHJvYywgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgc3dpdGNo
VmFsdWUtPnNldEZhbGxUaHJvdWdoKEZyZXF1ZW50ZWRCbG9jayh0ZXJtaW5hdGUpKTsKLQotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkZWdyZWU7ICsraSkgewotICAgICAgICBCYXNpY0Js
b2NrKiBuZXdCbG9jayA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgICAgICBuZXdCbG9jay0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwK
LSAgICAgICAgICAgIG5ld0Jsb2NrLT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAg
IHByb2MsIGNoaWxsKERpdiksIE9yaWdpbigpLCAoaSAmIDEpID8gcmlnaHQgOiBsZWZ0LCAoaSAm
IDEpID8gbGVmdCA6IHJpZ2h0KSk7Ci0gICAgICAgIAotICAgICAgICBzd2l0Y2hWYWx1ZS0+YXBw
ZW5kQ2FzZShTd2l0Y2hDYXNlKGdhcCAqIGksIEZyZXF1ZW50ZWRCbG9jayhuZXdCbG9jaykpKTsK
LSAgICB9Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLQotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBkZWdyZWU7ICsraSkgewotICAgICAgICBkYXRhTG9nKCJpID0g
IiwgaSwgIlxuIik7Ci0gICAgICAgIGludDMyX3QgcmVzdWx0ID0gaW52b2tlPGludDMyX3Q+KCpj
b2RlLCBpICogZ2FwLCA0MiwgMTEpOwotICAgICAgICBkYXRhTG9nKCJyZXN1bHQgPSAiLCByZXN1
bHQsICJcbiIpOwotICAgICAgICBDSEVDSyhyZXN1bHQgPT0gKChpICYgMSkgPyAxMS80MiA6IDQy
LzExKSk7Ci0gICAgICAgIGlmIChnYXAgPiAxKSB7Ci0gICAgICAgICAgICBDSEVDSyghaW52b2tl
PGludDMyX3Q+KCpjb2RlLCBpICogZ2FwICsgMSwgNDIsIDExKSk7Ci0gICAgICAgICAgICBDSEVD
SyghaW52b2tlPGludDMyX3Q+KCpjb2RlLCBpICogZ2FwIC0gMSwgNDIsIDExKSk7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICBDSEVDSyghaW52b2tlPGludDMyX3Q+KCpjb2RlLCAtMSwgNDIsIDEx
KSk7Ci0gICAgQ0hFQ0soIWludm9rZTxpbnQzMl90PigqY29kZSwgZGVncmVlICogZ2FwLCA0Miwg
MTEpKTsKLSAgICBDSEVDSyghaW52b2tlPGludDMyX3Q+KCpjb2RlLCBkZWdyZWUgKiBnYXAgKyAx
LCA0MiwgMTEpKTsKLX0KLQotdm9pZCB0ZXN0U3dpdGNoVGFyZ2V0dGluZ1NhbWVCbG9jaygpCi17
Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKLQotICAgIEJhc2ljQmxvY2sqIHRlcm1pbmF0ZSA9IHByb2MuYWRkQmxvY2soKTsKLSAg
ICB0ZXJtaW5hdGUtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKLSAgICAgICAgdGVybWluYXRlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgNSkpOwotCi0gICAgU3dpdGNoVmFsdWUqIHN3aXRjaFZhbHVlID0gcm9v
dC0+YXBwZW5kTmV3PFN3aXRjaFZhbHVlPigKLSAgICAgICAgcHJvYywgT3JpZ2luKCksIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSk7Ci0gICAgc3dpdGNoVmFsdWUtPnNldEZhbGxUaHJvdWdoKEZyZXF1ZW50ZWRC
bG9jayh0ZXJtaW5hdGUpKTsKLQotICAgIEJhc2ljQmxvY2sqIG90aGVyVGFyZ2V0ID0gcHJvYy5h
ZGRCbG9jaygpOwotICAgIG90aGVyVGFyZ2V0LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIG90aGVyVGFyZ2V0LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDIpKTsKLSAgICBzd2l0Y2hWYWx1ZS0+
YXBwZW5kQ2FzZShTd2l0Y2hDYXNlKDMsIEZyZXF1ZW50ZWRCbG9jayhvdGhlclRhcmdldCkpKTsK
LSAgICBzd2l0Y2hWYWx1ZS0+YXBwZW5kQ2FzZShTd2l0Y2hDYXNlKDEzLCBGcmVxdWVudGVkQmxv
Y2sob3RoZXJUYXJnZXQpKSk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsK
LQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAyMDsgKytpKSB7Ci0gICAgICAgIGludDMy
X3QgZXhwZWN0ZWQgPSAoaSA9PSAzIHx8IGkgPT0gMTMpID8gNDIgOiA1OwotICAgICAgICBDSEVD
SyhpbnZva2U8aW50MzJfdD4oKmNvZGUsIGkpID09IGV4cGVjdGVkKTsKLSAgICB9Ci19Ci0KLXZv
aWQgdGVzdFN3aXRjaFRhcmdldHRpbmdTYW1lQmxvY2tGb2xkUGF0aENvbnN0YW50KCkKLXsKLSAg
ICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OwotCi0gICAgQmFzaWNCbG9jayogdGVybWluYXRlID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHRl
cm1pbmF0ZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAotICAgICAgICB0ZXJtaW5hdGUtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCA0MikpOwotCi0gICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OwotICAgIFN3aXRjaFZhbHVlKiBzd2l0Y2hWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxTd2l0Y2hW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIGFyZ3VtZW50KTsKLSAgICBzd2l0Y2hWYWx1ZS0+c2V0RmFs
bFRocm91Z2goRnJlcXVlbnRlZEJsb2NrKHRlcm1pbmF0ZSkpOwotCi0gICAgQmFzaWNCbG9jayog
b3RoZXJUYXJnZXQgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgb3RoZXJUYXJnZXQtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgYXJndW1lbnQp
OwotICAgIHN3aXRjaFZhbHVlLT5hcHBlbmRDYXNlKFN3aXRjaENhc2UoMywgRnJlcXVlbnRlZEJs
b2NrKG90aGVyVGFyZ2V0KSkpOwotICAgIHN3aXRjaFZhbHVlLT5hcHBlbmRDYXNlKFN3aXRjaENh
c2UoMTMsIEZyZXF1ZW50ZWRCbG9jayhvdGhlclRhcmdldCkpKTsKLQotICAgIGF1dG8gY29kZSA9
IGNvbXBpbGVQcm9jKHByb2MpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDIwOyAr
K2kpIHsKLSAgICAgICAgaW50MzJfdCBleHBlY3RlZCA9IChpID09IDMgfHwgaSA9PSAxMykgPyBp
IDogNDI7Ci0gICAgICAgIENIRUNLKGludm9rZTxpbnQzMl90PigqY29kZSwgaSkgPT0gZXhwZWN0
ZWQpOwotICAgIH0KLX0KLQotdm9pZCB0ZXN0VHJ1bmNGb2xkKGludDY0X3QgdmFsdWUpCi17Ci0g
ICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAg
ICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29u
c3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdmFsdWUpKSk7Ci0KLSAgICBDSEVDSyhjb21waWxl
QW5kUnVuPGludD4ocHJvYykgPT0gc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSkpOwotfQotCi12b2lk
IHRlc3RaRXh0MzIoaW50MzJfdCB2YWx1ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIFpFeHQzMiwgT3JpZ2luKCks
Ci0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSk7
Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPHVpbnQ2NF90Pihwcm9jLCB2YWx1ZSkgPT0gc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KHN0YXRpY19jYXN0PHVpbnQzMl90Pih2YWx1ZSkpKTsKLX0KLQot
dm9pZCB0ZXN0WkV4dDMyRm9sZChpbnQzMl90IHZhbHVlKQotewotICAgIFByb2NlZHVyZSBwcm9j
OwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgWkV4dDMyLCBP
cmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCB2YWx1ZSkpKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48dWludDY0X3Q+
KHByb2MsIHZhbHVlKSA9PSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KHZhbHVlKSkpOwotfQotCi12b2lkIHRlc3RTRXh0MzIoaW50MzJfdCB2YWx1ZSkKLXsKLSAg
ICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAg
IHByb2MsIFNFeHQzMiwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAotICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCkpKSk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0
X3Q+KHByb2MsIHZhbHVlKSA9PSBzdGF0aWNfY2FzdDxpbnQ2NF90Pih2YWx1ZSkpOwotfQotCi12
b2lkIHRlc3RTRXh0MzJGb2xkKGludDMyX3QgdmFsdWUpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7
Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBTRXh0MzIsIE9y
aWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIHZhbHVlKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihw
cm9jLCB2YWx1ZSkgPT0gc3RhdGljX2Nhc3Q8aW50NjRfdD4odmFsdWUpKTsKLX0KLQotdm9pZCB0
ZXN0VHJ1bmNaRXh0MzIoaW50MzJfdCB2YWx1ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4o
KSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAg
cHJvYywgWkV4dDMyLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAotICAgICAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAg
ICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpKSk7Ci0KLSAgICBDSEVDSyhjb21waWxl
QW5kUnVuPGludDMyX3Q+KHByb2MsIHZhbHVlKSA9PSB2YWx1ZSk7Ci19Ci0KLXZvaWQgdGVzdFRy
dW5jU0V4dDMyKGludDMyX3QgdmFsdWUpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0g
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2Ms
IFNFeHQzMiwgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKLSAgICAgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1
bjxpbnQzMl90Pihwcm9jLCB2YWx1ZSkgPT0gdmFsdWUpOwotfQotCi12b2lkIHRlc3RTRXh0OChp
bnQzMl90IHZhbHVlKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAot
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgU0V4dDgsIE9yaWdpbigpLAotICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3Jp
Z2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSkpOwotCi0gICAgQ0hFQ0so
Y29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCB2YWx1ZSkgPT0gc3RhdGljX2Nhc3Q8aW50MzJf
dD4oc3RhdGljX2Nhc3Q8aW50OF90Pih2YWx1ZSkpKTsKLX0KLQotdm9pZCB0ZXN0U0V4dDhGb2xk
KGludDMyX3QgdmFsdWUpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
Ci0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBTRXh0OCwgT3JpZ2luKCksCi0gICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdmFsdWUpKSk7
Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MpID09IHN0YXRpY19jYXN0
PGludDMyX3Q+KHN0YXRpY19jYXN0PGludDhfdD4odmFsdWUpKSk7Ci19Ci0KLXZvaWQgdGVzdFNF
eHQ4U0V4dDgoaW50MzJfdCB2YWx1ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIFNFeHQ4LCBPcmlnaW4oKSwKLSAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywg
U0V4dDgsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
Ci0gICAgICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSkpKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48
aW50MzJfdD4ocHJvYywgdmFsdWUpID09IHN0YXRpY19jYXN0PGludDMyX3Q+KHN0YXRpY19jYXN0
PGludDhfdD4odmFsdWUpKSk7Ci19Ci0KLXZvaWQgdGVzdFNFeHQ4U0V4dDE2KGludDMyX3QgdmFs
dWUpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0g
ICAgICAgICAgICBwcm9jLCBTRXh0OCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIFNFeHQxNiwgT3JpZ2luKCksCi0g
ICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICAg
ICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCkpKSkpOwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCB2YWx1
ZSkgPT0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8aW50OF90Pih2YWx1ZSkpKTsK
LX0KLQotdm9pZCB0ZXN0U0V4dDhCaXRBbmQoaW50MzJfdCB2YWx1ZSwgaW50MzJfdCBtYXNrKQot
ewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAg
ICAgICAgcHJvYywgU0V4dDgsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAotICAgICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgICAgIHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
KSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgbWFzaykpKSk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDMyX3Q+KHBy
b2MsIHZhbHVlKSA9PSBzdGF0aWNfY2FzdDxpbnQzMl90PihzdGF0aWNfY2FzdDxpbnQ4X3Q+KHZh
bHVlICYgbWFzaykpKTsKLX0KLQotdm9pZCB0ZXN0Qml0QW5kU0V4dDgoaW50MzJfdCB2YWx1ZSwg
aW50MzJfdCBtYXNrKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAot
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKLSAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgU0V4dDgsIE9y
aWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAg
ICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApKSksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgbWFzaykpKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48
aW50MzJfdD4ocHJvYywgdmFsdWUpID09IChzdGF0aWNfY2FzdDxpbnQzMl90PihzdGF0aWNfY2Fz
dDxpbnQ4X3Q+KHZhbHVlKSkgJiBtYXNrKSk7Ci19Ci0KLXZvaWQgdGVzdFNFeHQxNihpbnQzMl90
IHZhbHVlKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAotICAgICAgICAgICAgcHJvYywgU0V4dDE2LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigp
LAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpKTsKLQotICAgIENIRUNLKGNvbXBp
bGVBbmRSdW48aW50MzJfdD4ocHJvYywgdmFsdWUpID09IHN0YXRpY19jYXN0PGludDMyX3Q+KHN0
YXRpY19jYXN0PGludDE2X3Q+KHZhbHVlKSkpOwotfQotCi12b2lkIHRlc3RTRXh0MTZGb2xkKGlu
dDMyX3QgdmFsdWUpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0g
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBTRXh0MTYsIE9yaWdpbigpLAotICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHZhbHVlKSkpOwot
Ci0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jKSA9PSBzdGF0aWNfY2FzdDxp
bnQzMl90PihzdGF0aWNfY2FzdDxpbnQxNl90Pih2YWx1ZSkpKTsKLX0KLQotdm9pZCB0ZXN0U0V4
dDE2U0V4dDE2KGludDMyX3QgdmFsdWUpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBTRXh0MTYsIE9yaWdpbigpLAot
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9j
LCBTRXh0MTYsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCi0gICAgICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAg
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSkpKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRS
dW48aW50MzJfdD4ocHJvYywgdmFsdWUpID09IHN0YXRpY19jYXN0PGludDMyX3Q+KHN0YXRpY19j
YXN0PGludDE2X3Q+KHZhbHVlKSkpOwotfQotCi12b2lkIHRlc3RTRXh0MTZTRXh0OChpbnQzMl90
IHZhbHVlKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAotICAgICAgICAgICAgcHJvYywgU0V4dDE2LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgU0V4dDgsIE9yaWdpbigp
LAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAg
ICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKSkpKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywg
dmFsdWUpID09IHN0YXRpY19jYXN0PGludDMyX3Q+KHN0YXRpY19jYXN0PGludDhfdD4odmFsdWUp
KSk7Ci19Ci0KLXZvaWQgdGVzdFNFeHQxNkJpdEFuZChpbnQzMl90IHZhbHVlLCBpbnQzMl90IG1h
c2spCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0g
ICAgICAgICAgICBwcm9jLCBTRXh0MTYsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAot
ICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAg
ICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgbWFzaykpKSk7Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDMy
X3Q+KHByb2MsIHZhbHVlKSA9PSBzdGF0aWNfY2FzdDxpbnQzMl90PihzdGF0aWNfY2FzdDxpbnQx
Nl90Pih2YWx1ZSAmIG1hc2spKSk7Ci19Ci0KLXZvaWQgdGVzdEJpdEFuZFNFeHQxNihpbnQzMl90
IHZhbHVlLCBpbnQzMl90IG1hc2spCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAotICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBT
RXh0MTYsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
Ci0gICAgICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbWFzaykpKTsKLQotICAgIENIRUNLKGNvbXBp
bGVBbmRSdW48aW50MzJfdD4ocHJvYywgdmFsdWUpID09IChzdGF0aWNfY2FzdDxpbnQzMl90Pihz
dGF0aWNfY2FzdDxpbnQxNl90Pih2YWx1ZSkpICYgbWFzaykpOwotfQotCi12b2lkIHRlc3RTRXh0
MzJCaXRBbmQoaW50MzJfdCB2YWx1ZSwgaW50MzJfdCBtYXNrKQotewotICAgIFByb2NlZHVyZSBw
cm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAot
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgU0V4dDMy
LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAg
ICAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2lu
KCksCi0gICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCi0gICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIG1hc2spKSkp
OwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCB2YWx1ZSkgPT0gc3Rh
dGljX2Nhc3Q8aW50NjRfdD4odmFsdWUgJiBtYXNrKSk7Ci19Ci0KLXZvaWQgdGVzdEJpdEFuZFNF
eHQzMihpbnQzMl90IHZhbHVlLCBpbnQ2NF90IG1hc2spCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7
Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9y
aWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAg
ICAgICBwcm9jLCBTRXh0MzIsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwK
LSAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSksCi0gICAgICAgICAgICByb290
LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbWFzaykpKTsKLQotICAg
IENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgdmFsdWUpID09IChzdGF0aWNfY2Fz
dDxpbnQ2NF90Pih2YWx1ZSkgJiBtYXNrKSk7Ci19Ci0KLXZvaWQgdGVzdEJhc2ljU2VsZWN0KCkK
LXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAg
ICAgICAgIHByb2MsIFNlbGVjdCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4oKSwKLSAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0MikpLAotICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjEpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpKSk7Ci0KLSAgICBhdXRv
IGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBDSEVDSyhpbnZva2U8aW50cHRyX3Q+KCpj
b2RlLCA0MiwgMSwgMikgPT0gMSk7Ci0gICAgQ0hFQ0soaW52b2tlPGludHB0cl90PigqY29kZSwg
NDIsIDY0MjQ2MiwgMzI1MzMpID09IDY0MjQ2Mik7Ci0gICAgQ0hFQ0soaW52b2tlPGludHB0cl90
PigqY29kZSwgNDMsIDEsIDIpID09IDIpOwotICAgIENIRUNLKGludm9rZTxpbnRwdHJfdD4oKmNv
ZGUsIDQzLCA2NDI0NjIsIDMyNTMzKSA9PSAzMjUzMyk7Ci19Ci0KLXZvaWQgdGVzdFNlbGVjdFRl
c3QoKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAot
ICAgICAgICAgICAgcHJvYywgU2VsZWN0LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSwKLSAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIyKSkpOwotCi0gICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAg
Q0hFQ0soaW52b2tlPGludHB0cl90PigqY29kZSwgNDIsIDEsIDIpID09IDEpOwotICAgIENIRUNL
KGludm9rZTxpbnRwdHJfdD4oKmNvZGUsIDQyLCA2NDI0NjIsIDMyNTMzKSA9PSA2NDI0NjIpOwot
ICAgIENIRUNLKGludm9rZTxpbnRwdHJfdD4oKmNvZGUsIDAsIDEsIDIpID09IDIpOwotICAgIENI
RUNLKGludm9rZTxpbnRwdHJfdD4oKmNvZGUsIDAsIDY0MjQ2MiwgMzI1MzMpID09IDMyNTMzKTsK
LX0KLQotdm9pZCB0ZXN0U2VsZWN0Q29tcGFyZURvdWJsZSgpCi17Ci0gICAgUHJvY2VkdXJlIHBy
b2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0g
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBTZWxlY3Qs
IE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAg
ICAgICAgICBwcm9jLCBMZXNzVGhhbiwgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1
bWVudEZQUjApLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIxKSksCi0gICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKTsKLQotICAg
IGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotICAgIENIRUNLKGludm9rZTxpbnRwdHJf
dD4oKmNvZGUsIC0xLjAsIDEuMCwgMSwgMikgPT0gMSk7Ci0gICAgQ0hFQ0soaW52b2tlPGludHB0
cl90PigqY29kZSwgNDIuNSwgNDIuNTEsIDY0MjQ2MiwgMzI1MzMpID09IDY0MjQ2Mik7Ci0gICAg
Q0hFQ0soaW52b2tlPGludHB0cl90PigqY29kZSwgUE5hTiwgMC4wLCAxLCAyKSA9PSAyKTsKLSAg
ICBDSEVDSyhpbnZva2U8aW50cHRyX3Q+KCpjb2RlLCA0Mi41MSwgNDIuNSwgNjQyNDYyLCAzMjUz
MykgPT0gMzI1MzMpOwotICAgIENIRUNLKGludm9rZTxpbnRwdHJfdD4oKmNvZGUsIDQyLjUyLCA0
Mi41MiwgNTI0OTc4MjQ1LCAzNTIpID09IDM1Mik7Ci19Ci0KLXRlbXBsYXRlPEIzOjpPcGNvZGUg
b3Bjb2RlPgotdm9pZCB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0KGZsb2F0IGEsIGZsb2F0IGIsIGJv
b2wgKCpvcGVyYXRpb24pKGZsb2F0LCBmbG9hdCkpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0g
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1l
bnQxaW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwK
LSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogYXJndW1lbnQyaW50MzIgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjEpKTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZTEgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQxaW50MzIpOwotICAg
IFZhbHVlKiBmbG9hdFZhbHVlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lz
ZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDJpbnQzMik7Ci0KLSAgICByb290LT5hcHBlbmROZXdD
b250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBTZWxlY3QsIE9yaWdpbigp
LAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBw
cm9jLCBvcGNvZGUsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIGZsb2F0VmFsdWUxLAotICAg
ICAgICAgICAgICAgIGZsb2F0VmFsdWUyKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKSwK
LSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIzKSkpOwotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNv
bXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3
aXNlX2Nhc3Q8aW50MzJfdD4oYiksIDQyLCAtNSksIG9wZXJhdGlvbihhLCBiKSA/IDQyIDogLTUp
KTsKLX0KLQotdm9pZCB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCi17
Ci0gICAgdGVzdFNlbGVjdENvbXBhcmVGbG9hdDxFcXVhbD4oYSwgYiwgW10oZmxvYXQgYSwgZmxv
YXQgYikgLT4gYm9vbCB7IHJldHVybiBhID09IGI7IH0pOwotICAgIHRlc3RTZWxlY3RDb21wYXJl
RmxvYXQ8Tm90RXF1YWw+KGEsIGIsIFtdKGZsb2F0IGEsIGZsb2F0IGIpIC0+IGJvb2wgeyByZXR1
cm4gYSAhPSBiOyB9KTsKLSAgICB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0PExlc3NUaGFuPihhLCBi
LCBbXShmbG9hdCBhLCBmbG9hdCBiKSAtPiBib29sIHsgcmV0dXJuIGEgPCBiOyB9KTsKLSAgICB0
ZXN0U2VsZWN0Q29tcGFyZUZsb2F0PEdyZWF0ZXJUaGFuPihhLCBiLCBbXShmbG9hdCBhLCBmbG9h
dCBiKSAtPiBib29sIHsgcmV0dXJuIGEgPiBiOyB9KTsKLSAgICB0ZXN0U2VsZWN0Q29tcGFyZUZs
b2F0PExlc3NFcXVhbD4oYSwgYiwgW10oZmxvYXQgYSwgZmxvYXQgYikgLT4gYm9vbCB7IHJldHVy
biBhIDw9IGI7IH0pOwotICAgIHRlc3RTZWxlY3RDb21wYXJlRmxvYXQ8R3JlYXRlckVxdWFsPihh
LCBiLCBbXShmbG9hdCBhLCBmbG9hdCBiKSAtPiBib29sIHsgcmV0dXJuIGEgPj0gYjsgfSk7Ci0g
ICAgdGVzdFNlbGVjdENvbXBhcmVGbG9hdDxFcXVhbE9yVW5vcmRlcmVkPihhLCBiLCBbXShmbG9h
dCBhLCBmbG9hdCBiKSAtPiBib29sIHsgcmV0dXJuIGEgIT0gYSB8fCBiICE9IGIgfHwgYSA9PSBi
OyB9KTsKLX0KLQotdGVtcGxhdGU8QjM6Ok9wY29kZSBvcGNvZGU+Ci12b2lkIHRlc3RTZWxlY3RD
b21wYXJlRmxvYXRUb0RvdWJsZShmbG9hdCBhLCBmbG9hdCBiLCBib29sICgqb3BlcmF0aW9uKShm
bG9hdCwgZmxvYXQpKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Ci0g
ICAgVmFsdWUqIGZsb2F0VmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3
aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MWludDMyKTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1
ZTIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwg
YXJndW1lbnQyaW50MzIpOwotICAgIFZhbHVlKiBkb3VibGVWYWx1ZTEgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlMSk7Ci0g
ICAgVmFsdWUqIGRvdWJsZVZhbHVlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxv
YXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUyKTsKLQotICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIFNlbGVjdCwgT3JpZ2lu
KCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAg
IHByb2MsIG9wY29kZSwgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgZG91YmxlVmFsdWUxLAot
ICAgICAgICAgICAgICAgIGRvdWJsZVZhbHVlMiksCi0gICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MiksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMykpKTsKLSAgICBDSEVDSyhpc0lkZW50aWNh
bChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwg
Yml0d2lzZV9jYXN0PGludDMyX3Q+KGIpLCA0MiwgLTUpLCBvcGVyYXRpb24oYSwgYikgPyA0MiA6
IC01KSk7Ci19Ci0KLXZvaWQgdGVzdFNlbGVjdENvbXBhcmVGbG9hdFRvRG91YmxlKGZsb2F0IGEs
IGZsb2F0IGIpCi17Ci0gICAgdGVzdFNlbGVjdENvbXBhcmVGbG9hdFRvRG91YmxlPEVxdWFsPihh
LCBiLCBbXShmbG9hdCBhLCBmbG9hdCBiKSAtPiBib29sIHsgcmV0dXJuIGEgPT0gYjsgfSk7Ci0g
ICAgdGVzdFNlbGVjdENvbXBhcmVGbG9hdFRvRG91YmxlPE5vdEVxdWFsPihhLCBiLCBbXShmbG9h
dCBhLCBmbG9hdCBiKSAtPiBib29sIHsgcmV0dXJuIGEgIT0gYjsgfSk7Ci0gICAgdGVzdFNlbGVj
dENvbXBhcmVGbG9hdFRvRG91YmxlPExlc3NUaGFuPihhLCBiLCBbXShmbG9hdCBhLCBmbG9hdCBi
KSAtPiBib29sIHsgcmV0dXJuIGEgPCBiOyB9KTsKLSAgICB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0
VG9Eb3VibGU8R3JlYXRlclRoYW4+KGEsIGIsIFtdKGZsb2F0IGEsIGZsb2F0IGIpIC0+IGJvb2wg
eyByZXR1cm4gYSA+IGI7IH0pOwotICAgIHRlc3RTZWxlY3RDb21wYXJlRmxvYXRUb0RvdWJsZTxM
ZXNzRXF1YWw+KGEsIGIsIFtdKGZsb2F0IGEsIGZsb2F0IGIpIC0+IGJvb2wgeyByZXR1cm4gYSA8
PSBiOyB9KTsKLSAgICB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0VG9Eb3VibGU8R3JlYXRlckVxdWFs
PihhLCBiLCBbXShmbG9hdCBhLCBmbG9hdCBiKSAtPiBib29sIHsgcmV0dXJuIGEgPj0gYjsgfSk7
Ci0gICAgdGVzdFNlbGVjdENvbXBhcmVGbG9hdFRvRG91YmxlPEVxdWFsT3JVbm9yZGVyZWQ+KGEs
IGIsIFtdKGZsb2F0IGEsIGZsb2F0IGIpIC0+IGJvb2wgeyByZXR1cm4gYSAhPSBhIHx8IGIgIT0g
YiB8fCBhID09IGI7IH0pOwotfQotCi12b2lkIHRlc3RTZWxlY3REb3VibGUoKQotewotICAgIFBy
b2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0g
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJv
YywgU2VsZWN0LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
Ci0gICAgICAgICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAotICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQ
dHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKSksCi0gICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBS
MCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMSkpKTsKLQotICAgIGF1dG8gY29kZSA9IGNv
bXBpbGVQcm9jKHByb2MpOwotICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCA0MiwgMS41
LCAyLjYpID09IDEuNSk7Ci0gICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDQyLCA2NDI0
NjIuNywgMzI1MzMuOCkgPT0gNjQyNDYyLjcpOwotICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpj
b2RlLCA0MywgMS45LCAyLjApID09IDIuMCk7Ci0gICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNv
ZGUsIDQzLCA2NDI0NjIuMSwgMzI1MzMuMikgPT0gMzI1MzMuMik7Ci19Ci0KLXZvaWQgdGVzdFNl
bGVjdERvdWJsZVRlc3QoKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgU2VsZWN0LCBPcmlnaW4oKSwKLSAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKSwKLSAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
RlBSSW5mbzo6YXJndW1lbnRGUFIxKSkpOwotCi0gICAgYXV0byBjb2RlID0gY29tcGlsZVByb2Mo
cHJvYyk7Ci0gICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDQyLCAxLjUsIDIuNikgPT0g
MS41KTsKLSAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgNDIsIDY0MjQ2Mi43LCAzMjUz
My44KSA9PSA2NDI0NjIuNyk7Ci0gICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDAsIDEu
OSwgMi4wKSA9PSAyLjApOwotICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAwLCA2NDI0
NjIuMSwgMzI1MzMuMikgPT0gMzI1MzMuMik7Ci19Ci0KLXZvaWQgdGVzdFNlbGVjdERvdWJsZUNv
bXBhcmVEb3VibGUoKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAot
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgU2VsZWN0LCBPcmlnaW4oKSwKLSAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgTGVzc1RoYW4s
IE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKSwKLSAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQ
UkluZm86OmFyZ3VtZW50RlBSMSkpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjIpLAotICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBGUFJJbmZvOjphcmd1bWVudEZQUjMpKSk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJv
Yyhwcm9jKTsKLSAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgLTEuMCwgMS4wLCAxLjEs
IDIuMikgPT0gMS4xKTsKLSAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgNDIuNSwgNDIu
NTEsIDY0MjQ2Mi4zLCAzMjUzMy40KSA9PSA2NDI0NjIuMyk7Ci0gICAgQ0hFQ0soaW52b2tlPGRv
dWJsZT4oKmNvZGUsIFBOYU4sIDAuMCwgMS41LCAyLjYpID09IDIuNik7Ci0gICAgQ0hFQ0soaW52
b2tlPGRvdWJsZT4oKmNvZGUsIDQyLjUxLCA0Mi41LCA2NDI0NjIuNywgMzI1MzMuOCkgPT0gMzI1
MzMuOCk7Ci0gICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDQyLjUyLCA0Mi41MiwgNTI0
OTc4MjQ1LjksIDM1Mi4wKSA9PSAzNTIuMCk7Ci19Ci0KLXZvaWQgdGVzdFNlbGVjdERvdWJsZUNv
bXBhcmVGbG9hdChmbG9hdCBhLCBmbG9hdCBiKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50
MWludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0g
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50MmludDMyID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKSk7Ci0gICAgVmFsdWUqIGZsb2F0VmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MWludDMyKTsKLSAgICBW
YWx1ZSogZmxvYXRWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VD
YXN0LCBPcmlnaW4oKSwgYXJndW1lbnQyaW50MzIpOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgU2VsZWN0LCBPcmlnaW4oKSwK
LSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJv
YywgTGVzc1RoYW4sIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIGZsb2F0VmFsdWUxLAotICAg
ICAgICAgICAgICAgIGZsb2F0VmFsdWUyKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKSwK
LSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIxKSkpOwotCi0gICAgQ0hFQ0soaXNJZGVudGljYWwo
Y29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYml0
d2lzZV9jYXN0PGludDMyX3Q+KGIpLCA0Mi4xLCAtTV9QSSksIGEgPCBiID8gNDIuMSA6IC1NX1BJ
KSk7Ci19Ci0KLXZvaWQgdGVzdFNlbGVjdEZsb2F0Q29tcGFyZUZsb2F0KGZsb2F0IGEsIGZsb2F0
IGIpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnQxaW50MzIgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsK
LSAgICBWYWx1ZSogYXJndW1lbnQyaW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKLSAgICBWYWx1ZSog
YXJndW1lbnQzaW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmln
aW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpKTsKLSAgICBWYWx1ZSogYXJndW1lbnQ0aW50
MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjMpKTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZTEgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQxaW50MzIp
OwotICAgIFZhbHVlKiBmbG9hdFZhbHVlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
Qml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDJpbnQzMik7Ci0gICAgVmFsdWUqIGZsb2F0
VmFsdWUzID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2lu
KCksIGFyZ3VtZW50M2ludDMyKTsKLSAgICBWYWx1ZSogZmxvYXRWYWx1ZTQgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQ0aW50MzIp
OwotCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAg
ICAgcHJvYywgU2VsZWN0LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgTGVzc1RoYW4sIE9yaWdpbigpLAotICAgICAg
ICAgICAgICAgIGZsb2F0VmFsdWUxLAotICAgICAgICAgICAgICAgIGZsb2F0VmFsdWUyKSwKLSAg
ICAgICAgICAgIGZsb2F0VmFsdWUzLAotICAgICAgICAgICAgZmxvYXRWYWx1ZTQpKTsKLQotICAg
IENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZmxvYXQ+KHByb2MsIGJpdHdpc2VfY2Fz
dDxpbnQzMl90PihhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpLCBiaXR3aXNlX2Nhc3Q8aW50
MzJfdD4oMS4xZiksIGJpdHdpc2VfY2FzdDxpbnQzMl90PigtNDIuZikpLCBhIDwgYiA/IDEuMWYg
OiAtNDIuZikpOwotfQotCi0KLXRlbXBsYXRlPEIzOjpPcGNvZGUgb3Bjb2RlPgotdm9pZCB0ZXN0
U2VsZWN0RG91YmxlQ29tcGFyZURvdWJsZShib29sICgqb3BlcmF0aW9uKShkb3VibGUsIGRvdWJs
ZSkpCi17Ci0gICAgeyAvLyBDb21wYXJlIGFyZ3VtZW50cyBhbmQgc2VsZWN0ZWQgYXJndW1lbnRz
IGFyZSBhbGwgZGlmZmVyZW50LgotICAgICAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICAgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICAgICAgVmFsdWUqIGFyZzAgPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86
OmFyZ3VtZW50RlBSMCk7Ci0gICAgICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOwot
ICAgICAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIyKTsKLSAgICAgICAgVmFsdWUqIGFy
ZzMgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQ
UkluZm86OmFyZ3VtZW50RlBSMyk7Ci0KLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAotICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgU2VsZWN0LCBPcmln
aW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAg
ICAgICAgICAgICBwcm9jLCBvcGNvZGUsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgICAgICBh
cmcwLAotICAgICAgICAgICAgICAgICAgICBhcmcxKSwKLSAgICAgICAgICAgICAgICBhcmcyLAot
ICAgICAgICAgICAgICAgIGFyZzMpKTsKLSAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2Mo
cHJvYyk7Ci0KLSAgICAgICAgZm9yIChhdXRvJiBsZWZ0IDogZmxvYXRpbmdQb2ludE9wZXJhbmRz
PGRvdWJsZT4oKSkgewotICAgICAgICAgICAgZm9yIChhdXRvJiByaWdodCA6IGZsb2F0aW5nUG9p
bnRPcGVyYW5kczxkb3VibGU+KCkpIHsKLSAgICAgICAgICAgICAgICBkb3VibGUgZXhwZWN0ZWQg
PSBvcGVyYXRpb24obGVmdC52YWx1ZSwgcmlnaHQudmFsdWUpID8gNDIuNSA6IC02Ni41OwotICAg
ICAgICAgICAgICAgIENIRUNLKGlzSWRlbnRpY2FsKGludm9rZTxkb3VibGU+KCpjb2RlLCBsZWZ0
LnZhbHVlLCByaWdodC52YWx1ZSwgNDIuNSwgLTY2LjUpLCBleHBlY3RlZCkpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIHsgLy8gQ29tcGFyZSBhcmd1bWVudHMgYW5kIHNl
bGVjdGVkIGFyZ3VtZW50cyBhcmUgYWxsIGRpZmZlcmVudC4gInRoZW5DYXNlIiBpcyBsaXZlIGFm
dGVyIG9wZXJhdGlvbi4KLSAgICAgICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgIFZhbHVlKiBhcmcwID0gcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1
bWVudEZQUjApOwotICAgICAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIxKTsKLSAgICAg
ICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMik7Ci0gICAgICAgIFZhbHVlKiBhcmczID0g
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZv
Ojphcmd1bWVudEZQUjMpOwotCi0gICAgICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFNlbGVjdCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIG9wY29kZSwgT3JpZ2luKCksIGFyZzAsIGFyZzEpLAotICAgICAg
ICAgICAgYXJnMiwKLSAgICAgICAgICAgIGFyZzMpOwotCi0gICAgICAgIFBhdGNocG9pbnRWYWx1
ZSoga2VlcFZhbHVlc0xpdmUgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9j
LCBWb2lkLCBPcmlnaW4oKSk7Ci0gICAgICAgIGtlZXBWYWx1ZXNMaXZlLT5hcHBlbmQoQ29uc3Ry
YWluZWRWYWx1ZShhcmcyLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7Ci0gICAgICAgIGtlZXBW
YWx1ZXNMaXZlLT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMmLCBjb25zdCBTdGFja21h
cEdlbmVyYXRpb25QYXJhbXMmKSB7IH0pOwotCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOwotICAgICAgICBhdXRvIGNv
ZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLQotICAgICAgICBmb3IgKGF1dG8mIGxlZnQgOiBmbG9h
dGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIHJp
Z2h0IDogZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSkgewotICAgICAgICAgICAgICAg
IGRvdWJsZSBleHBlY3RlZCA9IG9wZXJhdGlvbihsZWZ0LnZhbHVlLCByaWdodC52YWx1ZSkgPyA0
Mi41IDogLTY2LjU7Ci0gICAgICAgICAgICAgICAgQ0hFQ0soaXNJZGVudGljYWwoaW52b2tlPGRv
dWJsZT4oKmNvZGUsIGxlZnQudmFsdWUsIHJpZ2h0LnZhbHVlLCA0Mi41LCAtNjYuNSksIGV4cGVj
dGVkKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgeyAvLyBDb21wYXJl
IGFyZ3VtZW50cyBhbmQgc2VsZWN0ZWQgYXJndW1lbnRzIGFyZSBhbGwgZGlmZmVyZW50LiAiZWxz
ZUNhc2UiIGlzIGxpdmUgYWZ0ZXIgb3BlcmF0aW9uLgotICAgICAgICBQcm9jZWR1cmUgcHJvYzsK
LSAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICAgICAgVmFs
dWUqIGFyZzAgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Ci0gICAgICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1
bWVudEZQUjEpOwotICAgICAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIyKTsKLSAgICAg
ICAgVmFsdWUqIGFyZzMgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMyk7Ci0KLSAgICAgICAgVmFsdWUqIHJlc3Vs
dCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2VsZWN0LCBPcmlnaW4oKSwKLSAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgb3Bjb2RlLCBPcmlnaW4oKSwgYXJn
MCwgYXJnMSksCi0gICAgICAgICAgICBhcmcyLAotICAgICAgICAgICAgYXJnMyk7Ci0KLSAgICAg
ICAgUGF0Y2hwb2ludFZhbHVlKiBrZWVwVmFsdWVzTGl2ZSA9IHJvb3QtPmFwcGVuZE5ldzxQYXRj
aHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKLSAgICAgICAga2VlcFZhbHVlc0xp
dmUtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzMsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIp
KTsKLSAgICAgICAga2VlcFZhbHVlc0xpdmUtPnNldEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVy
cyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsgfSk7Ci0KLSAgICAgICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7
Ci0gICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotCi0gICAgICAgIGZvciAo
YXV0byYgbGVmdCA6IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpIHsKLSAgICAgICAg
ICAgIGZvciAoYXV0byYgcmlnaHQgOiBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKSB7
Ci0gICAgICAgICAgICAgICAgZG91YmxlIGV4cGVjdGVkID0gb3BlcmF0aW9uKGxlZnQudmFsdWUs
IHJpZ2h0LnZhbHVlKSA/IDQyLjUgOiAtNjYuNTsKLSAgICAgICAgICAgICAgICBDSEVDSyhpc0lk
ZW50aWNhbChpbnZva2U8ZG91YmxlPigqY29kZSwgbGVmdC52YWx1ZSwgcmlnaHQudmFsdWUsIDQy
LjUsIC02Ni41KSwgZXhwZWN0ZWQpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0K
LSAgICB7IC8vIENvbXBhcmUgYXJndW1lbnRzIGFuZCBzZWxlY3RlZCBhcmd1bWVudHMgYXJlIGFs
bCBkaWZmZXJlbnQuIEJvdGggY2FzZXMgYXJlIGxpdmUgYWZ0ZXIgb3BlcmF0aW9uLgotICAgICAg
ICBQcm9jZWR1cmUgcHJvYzsKLSAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKLSAgICAgICAgVmFsdWUqIGFyZzAgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Ci0gICAgICAgIFZh
bHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOwotICAgICAgICBWYWx1ZSogYXJnMiA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJn
dW1lbnRGUFIyKTsKLSAgICAgICAgVmFsdWUqIGFyZzMgPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMyk7Ci0KLSAg
ICAgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2VsZWN0
LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgb3Bj
b2RlLCBPcmlnaW4oKSwgYXJnMCwgYXJnMSksCi0gICAgICAgICAgICBhcmcyLAotICAgICAgICAg
ICAgYXJnMyk7Ci0KLSAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBrZWVwVmFsdWVzTGl2ZSA9IHJv
b3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKLSAg
ICAgICAga2VlcFZhbHVlc0xpdmUtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzIsIFZhbHVl
UmVwOjpTb21lUmVnaXN0ZXIpKTsKLSAgICAgICAga2VlcFZhbHVlc0xpdmUtPmFwcGVuZChDb25z
dHJhaW5lZFZhbHVlKGFyZzMsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKLSAgICAgICAga2Vl
cFZhbHVlc0xpdmUtPnNldEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYpIHsgfSk7Ci0KLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgICAgIGF1dG8g
Y29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotCi0gICAgICAgIGZvciAoYXV0byYgbGVmdCA6IGZs
b2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byYg
cmlnaHQgOiBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKSB7Ci0gICAgICAgICAgICAg
ICAgZG91YmxlIGV4cGVjdGVkID0gb3BlcmF0aW9uKGxlZnQudmFsdWUsIHJpZ2h0LnZhbHVlKSA/
IDQyLjUgOiAtNjYuNTsKLSAgICAgICAgICAgICAgICBDSEVDSyhpc0lkZW50aWNhbChpbnZva2U8
ZG91YmxlPigqY29kZSwgbGVmdC52YWx1ZSwgcmlnaHQudmFsdWUsIDQyLjUsIC02Ni41KSwgZXhw
ZWN0ZWQpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICB7IC8vIFRoZSBs
ZWZ0IGFyZ3VtZW50IGlzIHRoZSBzYW1lIGFzIHRoZSAiZWxzZUNhc2UiIGFyZ3VtZW50LgotICAg
ICAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKLSAgICAgICAgVmFsdWUqIGFyZzAgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Ci0gICAgICAg
IFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOwotICAgICAgICBWYWx1ZSogYXJnMiA9IHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6
YXJndW1lbnRGUFIyKTsKLQotICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0g
ICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBTZWxlY3QsIE9yaWdpbigpLAot
ICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAg
ICAgIHByb2MsIG9wY29kZSwgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgICAgIGFyZzAsCi0g
ICAgICAgICAgICAgICAgICAgIGFyZzEpLAotICAgICAgICAgICAgICAgIGFyZzIsCi0gICAgICAg
ICAgICAgICAgYXJnMCkpOwotICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsK
LQotICAgICAgICBmb3IgKGF1dG8mIGxlZnQgOiBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91Ymxl
PigpKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIHJpZ2h0IDogZmxvYXRpbmdQb2ludE9wZXJh
bmRzPGRvdWJsZT4oKSkgewotICAgICAgICAgICAgICAgIGRvdWJsZSBleHBlY3RlZCA9IG9wZXJh
dGlvbihsZWZ0LnZhbHVlLCByaWdodC52YWx1ZSkgPyA0Mi41IDogbGVmdC52YWx1ZTsKLSAgICAg
ICAgICAgICAgICBDSEVDSyhpc0lkZW50aWNhbChpbnZva2U8ZG91YmxlPigqY29kZSwgbGVmdC52
YWx1ZSwgcmlnaHQudmFsdWUsIDQyLjUsIGxlZnQudmFsdWUpLCBleHBlY3RlZCkpOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIHsgLy8gVGhlIGxlZnQgYXJndW1lbnQgaXMg
dGhlIHNhbWUgYXMgdGhlICJlbHNlQ2FzZSIgYXJndW1lbnQuICJ0aGVuQ2FzZSIgaXMgbGl2ZSBh
ZnRlciBvcGVyYXRpb24uCi0gICAgICAgIFByb2NlZHVyZSBwcm9jOwotICAgICAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgICAgICBWYWx1ZSogYXJnMCA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJn
dW1lbnRGUFIwKTsKLSAgICAgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7Ci0gICAg
ICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjIpOwotCi0gICAgICAgIFZhbHVlKiByZXN1
bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNlbGVjdCwgT3JpZ2luKCksCi0gICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIG9wY29kZSwgT3JpZ2luKCksIGFy
ZzAsIGFyZzEpLAotICAgICAgICAgICAgYXJnMiwKLSAgICAgICAgICAgIGFyZzApOwotCi0gICAg
ICAgIFBhdGNocG9pbnRWYWx1ZSoga2VlcFZhbHVlc0xpdmUgPSByb290LT5hcHBlbmROZXc8UGF0
Y2hwb2ludFZhbHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7Ci0gICAgICAgIGtlZXBWYWx1ZXNM
aXZlLT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmcyLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVy
KSk7Ci0gICAgICAgIGtlZXBWYWx1ZXNMaXZlLT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBl
cnMmLCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7IH0pOwotCi0gICAgICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQp
OwotICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLQotICAgICAgICBmb3Ig
KGF1dG8mIGxlZnQgOiBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKSB7Ci0gICAgICAg
ICAgICBmb3IgKGF1dG8mIHJpZ2h0IDogZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSkg
ewotICAgICAgICAgICAgICAgIGRvdWJsZSBleHBlY3RlZCA9IG9wZXJhdGlvbihsZWZ0LnZhbHVl
LCByaWdodC52YWx1ZSkgPyA0Mi41IDogbGVmdC52YWx1ZTsKLSAgICAgICAgICAgICAgICBDSEVD
Syhpc0lkZW50aWNhbChpbnZva2U8ZG91YmxlPigqY29kZSwgbGVmdC52YWx1ZSwgcmlnaHQudmFs
dWUsIDQyLjUsIGxlZnQudmFsdWUpLCBleHBlY3RlZCkpOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgfQotfQotCi12b2lkIHRlc3RTZWxlY3REb3VibGVDb21wYXJlRG91YmxlV2l0aEFs
aWFzaW5nKCkKLXsKLSAgICB0ZXN0U2VsZWN0RG91YmxlQ29tcGFyZURvdWJsZTxFcXVhbD4oW10o
ZG91YmxlIGEsIGRvdWJsZSBiKSAtPiBib29sIHsgcmV0dXJuIGEgPT0gYjsgfSk7Ci0gICAgdGVz
dFNlbGVjdERvdWJsZUNvbXBhcmVEb3VibGU8Tm90RXF1YWw+KFtdKGRvdWJsZSBhLCBkb3VibGUg
YikgLT4gYm9vbCB7IHJldHVybiBhICE9IGI7IH0pOwotICAgIHRlc3RTZWxlY3REb3VibGVDb21w
YXJlRG91YmxlPExlc3NUaGFuPihbXShkb3VibGUgYSwgZG91YmxlIGIpIC0+IGJvb2wgeyByZXR1
cm4gYSA8IGI7IH0pOwotICAgIHRlc3RTZWxlY3REb3VibGVDb21wYXJlRG91YmxlPEdyZWF0ZXJU
aGFuPihbXShkb3VibGUgYSwgZG91YmxlIGIpIC0+IGJvb2wgeyByZXR1cm4gYSA+IGI7IH0pOwot
ICAgIHRlc3RTZWxlY3REb3VibGVDb21wYXJlRG91YmxlPExlc3NFcXVhbD4oW10oZG91YmxlIGEs
IGRvdWJsZSBiKSAtPiBib29sIHsgcmV0dXJuIGEgPD0gYjsgfSk7Ci0gICAgdGVzdFNlbGVjdERv
dWJsZUNvbXBhcmVEb3VibGU8R3JlYXRlckVxdWFsPihbXShkb3VibGUgYSwgZG91YmxlIGIpIC0+
IGJvb2wgeyByZXR1cm4gYSA+PSBiOyB9KTsKLSAgICB0ZXN0U2VsZWN0RG91YmxlQ29tcGFyZURv
dWJsZTxFcXVhbE9yVW5vcmRlcmVkPihbXShkb3VibGUgYSwgZG91YmxlIGIpIC0+IGJvb2wgeyBy
ZXR1cm4gYSAhPSBhIHx8IGIgIT0gYiB8fCBhID09IGI7IH0pOwotfQotCi10ZW1wbGF0ZTxCMzo6
T3Bjb2RlIG9wY29kZT4KLXZvaWQgdGVzdFNlbGVjdEZsb2F0Q29tcGFyZUZsb2F0KGJvb2wgKCpv
cGVyYXRpb24pKGZsb2F0LCBmbG9hdCkpCi17Ci0gICAgeyAvLyBDb21wYXJlIGFyZ3VtZW50cyBh
bmQgc2VsZWN0ZWQgYXJndW1lbnRzIGFyZSBhbGwgZGlmZmVyZW50LgotICAgICAgICBQcm9jZWR1
cmUgcHJvYzsKLSAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLQot
ICAgICAgICBWYWx1ZSogYXJnMCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lz
ZUNhc3QsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSk7Ci0g
ICAgICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNl
Q2FzdCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKTsKLSAg
ICAgICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VD
YXN0LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
VHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKSkpOwotICAg
ICAgICBWYWx1ZSogYXJnMyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNh
c3QsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBU
cnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpKSk7Ci0KLSAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAg
ICAgICAgICAgICAgcHJvYywgU2VsZWN0LCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgICAgICBwcm9jLCBvcGNvZGUsIE9y
aWdpbigpLAotICAgICAgICAgICAgICAgICAgICBhcmcwLAotICAgICAgICAgICAgICAgICAgICBh
cmcxKSwKLSAgICAgICAgICAgICAgICBhcmcyLAotICAgICAgICAgICAgICAgIGFyZzMpKTsKLSAg
ICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0KLSAgICAgICAgZm9yIChhdXRv
JiBsZWZ0IDogZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKSB7Ci0gICAgICAgICAgICBm
b3IgKGF1dG8mIHJpZ2h0IDogZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKSB7Ci0gICAg
ICAgICAgICAgICAgZmxvYXQgZXhwZWN0ZWQgPSBvcGVyYXRpb24obGVmdC52YWx1ZSwgcmlnaHQu
dmFsdWUpID8gNDIuNSA6IC02Ni41OwotICAgICAgICAgICAgICAgIENIRUNLKGlzSWRlbnRpY2Fs
KGludm9rZTxmbG9hdD4oKmNvZGUsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihsZWZ0LnZhbHVlKSwg
Yml0d2lzZV9jYXN0PGludDMyX3Q+KHJpZ2h0LnZhbHVlKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+
KDQyLjVmKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KC02Ni41ZikpLCBleHBlY3RlZCkpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIHsgLy8gQ29tcGFyZSBhcmd1bWVudHMg
YW5kIHNlbGVjdGVkIGFyZ3VtZW50cyBhcmUgYWxsIGRpZmZlcmVudC4gInRoZW5DYXNlIiBpcyBs
aXZlIGFmdGVyIG9wZXJhdGlvbi4KLSAgICAgICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgIFZhbHVlKiBhcmcwID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCi0gICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKTsKLSAgICAgICAgVmFsdWUqIGFyZzEgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwKLSAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAg
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpOwotICAgICAgICBWYWx1ZSogYXJnMiA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLAotICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAg
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpKSk7Ci0gICAgICAgIFZhbHVlKiBhcmczID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCi0gICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMykpKTsKLQotICAgICAgICBWYWx1ZSogcmVzdWx0ID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTZWxlY3QsIE9yaWdpbigpLAotICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBvcGNvZGUsIE9yaWdpbigpLCBhcmcwLCBh
cmcxKSwKLSAgICAgICAgICAgIGFyZzIsCi0gICAgICAgICAgICBhcmczKTsKLQotICAgICAgICBQ
YXRjaHBvaW50VmFsdWUqIGtlZXBWYWx1ZXNMaXZlID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9p
bnRWYWx1ZT4ocHJvYywgVm9pZCwgT3JpZ2luKCkpOwotICAgICAgICBrZWVwVmFsdWVzTGl2ZS0+
YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMiwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOwot
ICAgICAgICBrZWVwVmFsdWVzTGl2ZS0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxwZXJzJiwg
Y29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKLQotICAgICAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKLSAg
ICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0KLSAgICAgICAgZm9yIChhdXRv
JiBsZWZ0IDogZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKSB7Ci0gICAgICAgICAgICBm
b3IgKGF1dG8mIHJpZ2h0IDogZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKSB7Ci0gICAg
ICAgICAgICAgICAgZmxvYXQgZXhwZWN0ZWQgPSBvcGVyYXRpb24obGVmdC52YWx1ZSwgcmlnaHQu
dmFsdWUpID8gNDIuNSA6IC02Ni41OwotICAgICAgICAgICAgICAgIENIRUNLKGlzSWRlbnRpY2Fs
KGludm9rZTxmbG9hdD4oKmNvZGUsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihsZWZ0LnZhbHVlKSwg
Yml0d2lzZV9jYXN0PGludDMyX3Q+KHJpZ2h0LnZhbHVlKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+
KDQyLjVmKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KC02Ni41ZikpLCBleHBlY3RlZCkpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIHsgLy8gQ29tcGFyZSBhcmd1bWVudHMg
YW5kIHNlbGVjdGVkIGFyZ3VtZW50cyBhcmUgYWxsIGRpZmZlcmVudC4gImVsc2VDYXNlIiBpcyBs
aXZlIGFmdGVyIG9wZXJhdGlvbi4KLSAgICAgICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgIFZhbHVlKiBhcmcwID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCi0gICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKTsKLSAgICAgICAgVmFsdWUqIGFyZzEgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwKLSAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAg
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpOwotICAgICAgICBWYWx1ZSogYXJnMiA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLAotICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAg
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpKSk7Ci0gICAgICAgIFZhbHVlKiBhcmczID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCi0gICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMykpKTsKLQotICAgICAgICBWYWx1ZSogcmVzdWx0ID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTZWxlY3QsIE9yaWdpbigpLAotICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBvcGNvZGUsIE9yaWdpbigpLCBhcmcwLCBh
cmcxKSwKLSAgICAgICAgICAgIGFyZzIsCi0gICAgICAgICAgICBhcmczKTsKLQotICAgICAgICBQ
YXRjaHBvaW50VmFsdWUqIGtlZXBWYWx1ZXNMaXZlID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9p
bnRWYWx1ZT4ocHJvYywgVm9pZCwgT3JpZ2luKCkpOwotICAgICAgICBrZWVwVmFsdWVzTGl2ZS0+
YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMywgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOwot
ICAgICAgICBrZWVwVmFsdWVzTGl2ZS0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxwZXJzJiwg
Y29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKLQotICAgICAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKLSAg
ICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0KLSAgICAgICAgZm9yIChhdXRv
JiBsZWZ0IDogZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKSB7Ci0gICAgICAgICAgICBm
b3IgKGF1dG8mIHJpZ2h0IDogZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKSB7Ci0gICAg
ICAgICAgICAgICAgZmxvYXQgZXhwZWN0ZWQgPSBvcGVyYXRpb24obGVmdC52YWx1ZSwgcmlnaHQu
dmFsdWUpID8gNDIuNSA6IC02Ni41OwotICAgICAgICAgICAgICAgIENIRUNLKGlzSWRlbnRpY2Fs
KGludm9rZTxmbG9hdD4oKmNvZGUsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihsZWZ0LnZhbHVlKSwg
Yml0d2lzZV9jYXN0PGludDMyX3Q+KHJpZ2h0LnZhbHVlKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+
KDQyLjVmKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KC02Ni41ZikpLCBleHBlY3RlZCkpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIHsgLy8gQ29tcGFyZSBhcmd1bWVudHMg
YW5kIHNlbGVjdGVkIGFyZ3VtZW50cyBhcmUgYWxsIGRpZmZlcmVudC4gQm90aCBjYXNlcyBhcmUg
bGl2ZSBhZnRlciBvcGVyYXRpb24uCi0gICAgICAgIFByb2NlZHVyZSBwcm9jOwotICAgICAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgICAgICBWYWx1ZSogYXJnMCA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLAotICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0g
ICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSk7Ci0gICAgICAgIFZhbHVlKiBhcmcxID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCi0gICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKTsKLSAgICAgICAgVmFsdWUqIGFyZzIgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwKLSAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAg
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKSkpOwotICAgICAgICBWYWx1ZSogYXJnMyA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLAotICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAg
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpKSk7Ci0KLSAgICAgICAgVmFsdWUqIHJlc3VsdCA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2VsZWN0LCBPcmlnaW4oKSwKLSAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgb3Bjb2RlLCBPcmlnaW4oKSwgYXJnMCwg
YXJnMSksCi0gICAgICAgICAgICBhcmcyLAotICAgICAgICAgICAgYXJnMyk7Ci0KLSAgICAgICAg
UGF0Y2hwb2ludFZhbHVlKiBrZWVwVmFsdWVzTGl2ZSA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBv
aW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKLSAgICAgICAga2VlcFZhbHVlc0xpdmUt
PmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzIsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsK
LSAgICAgICAga2VlcFZhbHVlc0xpdmUtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzMsIFZh
bHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKLSAgICAgICAga2VlcFZhbHVlc0xpdmUtPnNldEdlbmVy
YXRvcihbJl0gKENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYp
IHsgfSk7Ci0KLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVy
biwgT3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHBy
b2MpOwotCi0gICAgICAgIGZvciAoYXV0byYgbGVmdCA6IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxm
bG9hdD4oKSkgewotICAgICAgICAgICAgZm9yIChhdXRvJiByaWdodCA6IGZsb2F0aW5nUG9pbnRP
cGVyYW5kczxmbG9hdD4oKSkgewotICAgICAgICAgICAgICAgIGZsb2F0IGV4cGVjdGVkID0gb3Bl
cmF0aW9uKGxlZnQudmFsdWUsIHJpZ2h0LnZhbHVlKSA/IDQyLjUgOiAtNjYuNTsKLSAgICAgICAg
ICAgICAgICBDSEVDSyhpc0lkZW50aWNhbChpbnZva2U8ZmxvYXQ+KCpjb2RlLCBiaXR3aXNlX2Nh
c3Q8aW50MzJfdD4obGVmdC52YWx1ZSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihyaWdodC52YWx1
ZSksIGJpdHdpc2VfY2FzdDxpbnQzMl90Pig0Mi41ZiksIGJpdHdpc2VfY2FzdDxpbnQzMl90Pigt
NjYuNWYpKSwgZXhwZWN0ZWQpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAg
ICB7IC8vIFRoZSBsZWZ0IGFyZ3VtZW50IGlzIHRoZSBzYW1lIGFzIHRoZSAiZWxzZUNhc2UiIGFy
Z3VtZW50LgotICAgICAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICAgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICAgICAgVmFsdWUqIGFyZzAgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKSkpOwotICAgICAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEpKSk7Ci0gICAgICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMikpKTsKLQotICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
Ci0gICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBTZWxlY3QsIE9yaWdpbigp
LAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAg
ICAgICAgIHByb2MsIG9wY29kZSwgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgICAgIGFyZzAs
Ci0gICAgICAgICAgICAgICAgICAgIGFyZzEpLAotICAgICAgICAgICAgICAgIGFyZzIsCi0gICAg
ICAgICAgICAgICAgYXJnMCkpOwotICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9j
KTsKLQotICAgICAgICBmb3IgKGF1dG8mIGxlZnQgOiBmbG9hdGluZ1BvaW50T3BlcmFuZHM8Zmxv
YXQ+KCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byYgcmlnaHQgOiBmbG9hdGluZ1BvaW50T3Bl
cmFuZHM8ZmxvYXQ+KCkpIHsKLSAgICAgICAgICAgICAgICBmbG9hdCBleHBlY3RlZCA9IG9wZXJh
dGlvbihsZWZ0LnZhbHVlLCByaWdodC52YWx1ZSkgPyA0Mi41IDogbGVmdC52YWx1ZTsKLSAgICAg
ICAgICAgICAgICBDSEVDSyhpc0lkZW50aWNhbChpbnZva2U8ZmxvYXQ+KCpjb2RlLCBiaXR3aXNl
X2Nhc3Q8aW50MzJfdD4obGVmdC52YWx1ZSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihyaWdodC52
YWx1ZSksIGJpdHdpc2VfY2FzdDxpbnQzMl90Pig0Mi41ZiksIGJpdHdpc2VfY2FzdDxpbnQzMl90
PihsZWZ0LnZhbHVlKSksIGV4cGVjdGVkKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgeyAvLyBUaGUgbGVmdCBhcmd1bWVudCBpcyB0aGUgc2FtZSBhcyB0aGUgImVsc2VD
YXNlIiBhcmd1bWVudC4gInRoZW5DYXNlIiBpcyBsaXZlIGFmdGVyIG9wZXJhdGlvbi4KLSAgICAg
ICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7Ci0gICAgICAgIFZhbHVlKiBhcmcwID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpKTsKLSAgICAgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIx
KSkpOwotICAgICAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
Qml0d2lzZUNhc3QsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIp
KSk7Ci0KLSAgICAgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgU2VsZWN0LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgb3Bjb2RlLCBPcmlnaW4oKSwgYXJnMCwgYXJnMSksCi0gICAgICAgICAgICBhcmcyLAot
ICAgICAgICAgICAgYXJnMCk7Ci0KLSAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBrZWVwVmFsdWVz
TGl2ZSA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdp
bigpKTsKLSAgICAgICAga2VlcFZhbHVlc0xpdmUtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFy
ZzIsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKLSAgICAgICAga2VlcFZhbHVlc0xpdmUtPnNl
dEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcyYpIHsgfSk7Ci0KLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2Ms
IFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQ
cm9jKHByb2MpOwotCi0gICAgICAgIGZvciAoYXV0byYgbGVmdCA6IGZsb2F0aW5nUG9pbnRPcGVy
YW5kczxmbG9hdD4oKSkgewotICAgICAgICAgICAgZm9yIChhdXRvJiByaWdodCA6IGZsb2F0aW5n
UG9pbnRPcGVyYW5kczxmbG9hdD4oKSkgewotICAgICAgICAgICAgICAgIGZsb2F0IGV4cGVjdGVk
ID0gb3BlcmF0aW9uKGxlZnQudmFsdWUsIHJpZ2h0LnZhbHVlKSA/IDQyLjUgOiBsZWZ0LnZhbHVl
OwotICAgICAgICAgICAgICAgIENIRUNLKGlzSWRlbnRpY2FsKGludm9rZTxmbG9hdD4oKmNvZGUs
IGJpdHdpc2VfY2FzdDxpbnQzMl90PihsZWZ0LnZhbHVlKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+
KHJpZ2h0LnZhbHVlKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KDQyLjVmKSwgYml0d2lzZV9jYXN0
PGludDMyX3Q+KGxlZnQudmFsdWUpKSwgZXhwZWN0ZWQpKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgIH0KLX0KLQotdm9pZCB0ZXN0U2VsZWN0RmxvYXRDb21wYXJlRmxvYXRXaXRoQWxp
YXNpbmcoKQotewotICAgIHRlc3RTZWxlY3RGbG9hdENvbXBhcmVGbG9hdDxFcXVhbD4oW10oZmxv
YXQgYSwgZmxvYXQgYikgLT4gYm9vbCB7IHJldHVybiBhID09IGI7IH0pOwotICAgIHRlc3RTZWxl
Y3RGbG9hdENvbXBhcmVGbG9hdDxOb3RFcXVhbD4oW10oZmxvYXQgYSwgZmxvYXQgYikgLT4gYm9v
bCB7IHJldHVybiBhICE9IGI7IH0pOwotICAgIHRlc3RTZWxlY3RGbG9hdENvbXBhcmVGbG9hdDxM
ZXNzVGhhbj4oW10oZmxvYXQgYSwgZmxvYXQgYikgLT4gYm9vbCB7IHJldHVybiBhIDwgYjsgfSk7
Ci0gICAgdGVzdFNlbGVjdEZsb2F0Q29tcGFyZUZsb2F0PEdyZWF0ZXJUaGFuPihbXShmbG9hdCBh
LCBmbG9hdCBiKSAtPiBib29sIHsgcmV0dXJuIGEgPiBiOyB9KTsKLSAgICB0ZXN0U2VsZWN0Rmxv
YXRDb21wYXJlRmxvYXQ8TGVzc0VxdWFsPihbXShmbG9hdCBhLCBmbG9hdCBiKSAtPiBib29sIHsg
cmV0dXJuIGEgPD0gYjsgfSk7Ci0gICAgdGVzdFNlbGVjdEZsb2F0Q29tcGFyZUZsb2F0PEdyZWF0
ZXJFcXVhbD4oW10oZmxvYXQgYSwgZmxvYXQgYikgLT4gYm9vbCB7IHJldHVybiBhID49IGI7IH0p
OwotICAgIHRlc3RTZWxlY3RGbG9hdENvbXBhcmVGbG9hdDxFcXVhbE9yVW5vcmRlcmVkPihbXShm
bG9hdCBhLCBmbG9hdCBiKSAtPiBib29sIHsgcmV0dXJuIGEgIT0gYSB8fCBiICE9IGIgfHwgYSA9
PSBiOyB9KTsKLX0KLQotdm9pZCB0ZXN0U2VsZWN0Rm9sZChpbnRwdHJfdCB2YWx1ZSkKLXsKLSAg
ICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAg
IHByb2MsIFNlbGVjdCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAotICAgICAgICAgICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4oKSwKLSAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHZhbHVl
KSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIDQyKSksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSkpKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2Mp
OwotICAgIENIRUNLKGludm9rZTxpbnRwdHJfdD4oKmNvZGUsIDEsIDIpID09ICh2YWx1ZSA9PSA0
MiA/IDEgOiAyKSk7Ci0gICAgQ0hFQ0soaW52b2tlPGludHB0cl90PigqY29kZSwgNjQyNDYyLCAz
MjUzMykgPT0gKHZhbHVlID09IDQyID8gNjQyNDYyIDogMzI1MzMpKTsKLX0KLQotdm9pZCB0ZXN0
U2VsZWN0SW52ZXJ0KCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
LSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIFNlbGVjdCwgT3JpZ2luKCksCi0gICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIEVxdWFsLCBP
cmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAg
ICAgICAgICAgICAgICBwcm9jLCBOb3RFcXVhbCwgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSwKLSAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0MikpLAotICAgICAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSksCi0gICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMikpKTsKLQot
ICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotICAgIENIRUNLKGludm9rZTxpbnRw
dHJfdD4oKmNvZGUsIDQyLCAxLCAyKSA9PSAxKTsKLSAgICBDSEVDSyhpbnZva2U8aW50cHRyX3Q+
KCpjb2RlLCA0MiwgNjQyNDYyLCAzMjUzMykgPT0gNjQyNDYyKTsKLSAgICBDSEVDSyhpbnZva2U8
aW50cHRyX3Q+KCpjb2RlLCA0MywgMSwgMikgPT0gMik7Ci0gICAgQ0hFQ0soaW52b2tlPGludHB0
cl90PigqY29kZSwgNDMsIDY0MjQ2MiwgMzI1MzMpID09IDMyNTMzKTsKLX0KLQotdm9pZCB0ZXN0
Q2hlY2tTZWxlY3QoKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIGlmIChwcm9jLm9wdExl
dmVsKCkgPCAxKQotICAgICAgICByZXR1cm47Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLQotICAgIENoZWNrVmFsdWUqIGNoZWNrID0gcm9vdC0+YXBwZW5kTmV3PENo
ZWNrVmFsdWU+KAotICAgICAgICBwcm9jLCBDaGVjaywgT3JpZ2luKCksCi0gICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAotICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBT
ZWxlY3QsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
Ci0gICAgICAgICAgICAgICAgICAgIHByb2MsIEJpdEFuZCwgT3JpZ2luKCksCi0gICAgICAgICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgICAgICAg
ICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAotICAgICAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMHhmZikp
LAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgLTQyKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIDM1KSksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKSkpOwotICAgIHVuc2lnbmVkIGdlbmVy
YXRpb25Db3VudCA9IDA7Ci0gICAgY2hlY2stPnNldEdlbmVyYXRvcigKLSAgICAgICAgWyZdIChD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewotICAg
ICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQp
OwotCi0gICAgICAgICAgICBnZW5lcmF0aW9uQ291bnQrKzsKLSAgICAgICAgICAgIGppdC5tb3Zl
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDY2NiksIEdQUkluZm86OnJldHVyblZhbHVlR1BS
KTsKLSAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwotICAgICAgICAgICAg
aml0LnJldCgpOwotICAgICAgICB9KTsKLSAgICAKLSAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7Ci0KLSAgICBhdXRvIGNv
ZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBDSEVDSyhnZW5lcmF0aW9uQ291bnQgPT0gMSk7
Ci0gICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsIHRydWUpID09IDApOwotICAgIENIRUNLKGlu
dm9rZTxpbnQ+KCpjb2RlLCBmYWxzZSkgPT0gNjY2KTsKLX0KLQotdm9pZCB0ZXN0Q2hlY2tTZWxl
Y3RDaGVja1NlbGVjdCgpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgaWYgKHByb2Mub3B0
TGV2ZWwoKSA8IDEpCi0gICAgICAgIHJldHVybjsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOwotCi0gICAgQ2hlY2tWYWx1ZSogY2hlY2sgPSByb290LT5hcHBlbmROZXc8
Q2hlY2tWYWx1ZT4oCi0gICAgICAgIHByb2MsIENoZWNrLCBPcmlnaW4oKSwKLSAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCi0g
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2Ms
IFNlbGVjdCwgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKLSAgICAgICAgICAgICAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKLSAgICAgICAg
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPigKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCi0gICAgICAgICAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAweGZm
KSksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAtNDIpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0
clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMzUpKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDIpKSk7Ci0KLSAgICB1bnNpZ25lZCBn
ZW5lcmF0aW9uQ291bnQgPSAwOwotICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoCi0gICAgICAgIFsm
XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsK
LSAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2go
aml0KTsKLQotICAgICAgICAgICAgZ2VuZXJhdGlvbkNvdW50Kys7Ci0gICAgICAgICAgICBqaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMig2NjYpLCBHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUik7Ci0gICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKLSAgICAgICAg
ICAgIGppdC5yZXQoKTsKLSAgICAgICAgfSk7Ci0gICAgCi0gICAgQ2hlY2tWYWx1ZSogY2hlY2sy
ID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KAotICAgICAgICBwcm9jLCBDaGVjaywgT3Jp
Z2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9j
LCBBZGQsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAg
ICAgICAgICAgICAgICBwcm9jLCBTZWxlY3QsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgICAgIHByb2MsIEJpdEFuZCwg
T3JpZ2luKCksCi0gICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0g
ICAgICAgICAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4oCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MSkpLAotICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgMHhmZikpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxD
b25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTQzKSwKLSAgICAgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDM2KSksCi0gICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQzKSkp
OwotCi0gICAgdW5zaWduZWQgZ2VuZXJhdGlvbkNvdW50MiA9IDA7Ci0gICAgY2hlY2syLT5zZXRH
ZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcyYpIHsKLSAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0
ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKLQotICAgICAgICAgICAgZ2VuZXJhdGlvbkNvdW50
MisrOwotICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoNjY3
KSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwotICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlv
bkVwaWxvZ3VlKCk7Ci0gICAgICAgICAgICBqaXQucmV0KCk7Ci0gICAgICAgIH0pOwotICAgIAot
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIDApKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotICAgIENI
RUNLKGdlbmVyYXRpb25Db3VudCA9PSAxKTsKLSAgICBDSEVDSyhnZW5lcmF0aW9uQ291bnQyID09
IDEpOwotICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCB0cnVlLCB0cnVlKSA9PSAwKTsKLSAg
ICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgZmFsc2UsIHRydWUpID09IDY2Nik7Ci0gICAgQ0hF
Q0soaW52b2tlPGludD4oKmNvZGUsIHRydWUsIGZhbHNlKSA9PSA2NjcpOwotfQotCi12b2lkIHRl
c3RDaGVja1NlbGVjdEFuZENTRSgpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgaWYgKHBy
b2Mub3B0TGV2ZWwoKSA8IDEpCi0gICAgICAgIHJldHVybjsKLSAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgYXV0byogc2VsZWN0VmFsdWUgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBTZWxlY3QsIE9yaWdpbigpLAotICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4o
KSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAg
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPigKLSAgICAgICAgICAgICAgICAgICAgcHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCkpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0
MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDB4ZmYpKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAtNDIpLAotICAgICAgICByb290LT5hcHBl
bmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDM1KSk7Ci0KLSAgICBhdXRvKiBj
b25zdGFudCA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
NDIpOwotICAgIGF1dG8qIGFkZFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBB
ZGQsIE9yaWdpbigpLCBzZWxlY3RWYWx1ZSwgY29uc3RhbnQpOwotCi0gICAgQ2hlY2tWYWx1ZSog
Y2hlY2sgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2ssIE9yaWdpbigp
LCBhZGRWYWx1ZSk7Ci0gICAgdW5zaWduZWQgZ2VuZXJhdGlvbkNvdW50ID0gMDsKLSAgICBjaGVj
ay0+c2V0R2VuZXJhdG9yKAotICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBT
dGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7Ci0gICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRj
aFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0KLSAgICAgICAgICAgIGdlbmVyYXRp
b25Db3VudCsrOwotICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoNjY2KSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwotICAgICAgICAgICAgaml0LmVtaXRG
dW5jdGlvbkVwaWxvZ3VlKCk7Ci0gICAgICAgICAgICBqaXQucmV0KCk7Ci0gICAgICAgIH0pOwot
Ci0gICAgYXV0byogYWRkVmFsdWUyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQs
IE9yaWdpbigpLCBzZWxlY3RWYWx1ZSwgY29uc3RhbnQpOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGFkZFZhbHVlLCBhZGRW
YWx1ZTIpKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotICAgIENIRUNL
KGdlbmVyYXRpb25Db3VudCA9PSAxKTsKLSAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgdHJ1
ZSkgPT0gMCk7Ci0gICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsIGZhbHNlKSA9PSA2NjYpOwot
fQotCi1kb3VibGUgYjNQb3coZG91YmxlIHgsIGludCB5KQotewotICAgIGlmICh5IDwgMCB8fCB5
ID4gMTAwMCkKLSAgICAgICAgcmV0dXJuIHBvdyh4LCB5KTsKLSAgICBkb3VibGUgcmVzdWx0ID0g
MTsKLSAgICB3aGlsZSAoeSkgewotICAgICAgICBpZiAoeSAmIDEpCi0gICAgICAgICAgICByZXN1
bHQgKj0geDsKLSAgICAgICAgeCAqPSB4OwotICAgICAgICB5ID4+PSAxOwotICAgIH0KLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIHRlc3RQb3dEb3VibGVCeUludGVnZXJMb29wKGRvdWJs
ZSB4T3BlcmFuZCwgaW50MzJfdCB5T3BlcmFuZCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgVmFsdWUqIHggPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86
OmFyZ3VtZW50RlBSMCk7Ci0gICAgVmFsdWUqIHkgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBhdXRv
IHJlc3VsdCA9IHBvd0RvdWJsZUludDMyKHByb2MsIHJvb3QsIE9yaWdpbigpLCB4LCB5KTsKLSAg
ICBCYXNpY0Jsb2NrKiBjb250aW51YXRpb24gPSByZXN1bHQuZmlyc3Q7Ci0gICAgY29udGludWF0
aW9uLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0
LnNlY29uZCk7Ci0KLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4o
cHJvYywgeE9wZXJhbmQsIHlPcGVyYW5kKSwgYjNQb3coeE9wZXJhbmQsIHlPcGVyYW5kKSkpOwot
fQotCi12b2lkIHRlc3RUcnVuY09ySGlnaCgpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4o
KSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAg
cHJvYywgQml0T3IsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwK
LSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmln
aW4oKSwgMHgxMDAwMDAwMDApKSkpOwotCi0gICAgaW50NjRfdCB2YWx1ZSA9IDB4MTIzNDU2Nzgx
MjM0OwotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCB2YWx1ZSkgPT0gMHg1Njc4
MTIzNCk7Ci19Ci0KLXZvaWQgdGVzdFRydW5jT3JMb3coKQotewotICAgIFByb2NlZHVyZSBwcm9j
OwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0g
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBUcnVuYywg
T3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAg
ICAgICAgIHByb2MsIEJpdE9yLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIDB4MTAwMDAwMCkpKSk7Ci0KLSAgICBpbnQ2NF90IHZhbHVlID0gMHgxMjM0
NTY3ODEyMzQ7Ci0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIHZhbHVlKSA9PSAw
eDU3NzgxMjM0KTsKLX0KLQotdm9pZCB0ZXN0Qml0QW5kT3JIaWdoKCkKLXsKLSAgICBQcm9jZWR1
cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAg
cm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywg
Qml0QW5kLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0g
ICAgICAgICAgICAgICAgcHJvYywgQml0T3IsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgMHg4KSksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8
Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMHg3Nzc3Nzc3Nzc3NzcpKSk7Ci0KLSAgICBp
bnQ2NF90IHZhbHVlID0gMHgxMjM0NTY3ODEyMzQ7Ci0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxp
bnQ2NF90Pihwcm9jLCB2YWx1ZSkgPT0gMHgxMjM0NTY3MDEyMzRsbCk7Ci19Ci0KLXZvaWQgdGVz
dEJpdEFuZE9yTG93KCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKLSAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgQml0T3Is
IE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKLSAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMHgxKSks
Ci0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgMHg3Nzc3Nzc3Nzc3NzcpKSk7Ci0KLSAgICBpbnQ2NF90IHZhbHVlID0gMHgxMjM0NTY3ODEy
MzQ7Ci0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCB2YWx1ZSkgPT0gMHgx
MjM0NTY3MDEyMzVsbCk7Ci19Ci0KLXZvaWQgdGVzdEJyYW5jaDY0RXF1YWwoaW50NjRfdCBsZWZ0
LCBpbnQ2NF90IHJpZ2h0KQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogdGhlbkNhc2UgPSBwcm9j
LmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7
Ci0KLSAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBWYWx1ZSogYXJnMiA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIxKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAg
ICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgRXF1YWwsIE9yaWdpbigpLCBhcmcxLCBhcmcyKSwKLSAgICAgICAgRnJlcXVlbnRl
ZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNlKSk7Ci0KLSAgICBib29s
IHRydWVSZXN1bHQgPSB0cnVlOwotICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUo
Ci0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHRoZW5DYXNlLT5hcHBl
bmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgTG9hZDhaLCBPcmlnaW4oKSwK
LSAgICAgICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksICZ0cnVlUmVzdWx0KSkpOwotCi0gICAgYm9vbCBlbHNlUmVzdWx0ID0gZmFsc2U7Ci0g
ICAgZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKLSAgICAgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0g
ICAgICAgICAgICBwcm9jLCBMb2FkOFosIE9yaWdpbigpLAotICAgICAgICAgICAgZWxzZUNhc2Ut
PmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJmVsc2VSZXN1bHQpKSk7
Ci0KLSAgICBDSEVDSyhjb21waWxlQW5kUnVuPGJvb2w+KHByb2MsIGxlZnQsIHJpZ2h0KSA9PSAo
bGVmdCA9PSByaWdodCkpOwotfQotCi12b2lkIHRlc3RCcmFuY2g2NEVxdWFsSW1tKGludDY0X3Qg
bGVmdCwgaW50NjRfdCByaWdodCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0g
cHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9j
aygpOwotCi0gICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgVmFsdWUqIGFy
ZzIgPSByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHJpZ2h0
KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIEJyYW5j
aCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRXF1YWws
IE9yaWdpbigpLCBhcmcxLCBhcmcyKSwKLSAgICAgICAgRnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNl
KSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNlKSk7Ci0KLSAgICBib29sIHRydWVSZXN1bHQgPSB0
cnVlOwotICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2Ms
IFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8TWVtb3J5VmFs
dWU+KAotICAgICAgICAgICAgcHJvYywgTG9hZDhaLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHRo
ZW5DYXNlLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZ0cnVlUmVz
dWx0KSkpOwotCi0gICAgYm9vbCBlbHNlUmVzdWx0ID0gZmFsc2U7Ci0gICAgZWxzZUNhc2UtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAg
ICAgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICBwcm9j
LCBMb2FkOFosIE9yaWdpbigpLAotICAgICAgICAgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxDb25z
dFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJmVsc2VSZXN1bHQpKSk7Ci0KLSAgICBDSEVDSyhj
b21waWxlQW5kUnVuPGJvb2w+KHByb2MsIGxlZnQpID09IChsZWZ0ID09IHJpZ2h0KSk7Ci19Ci0K
LXZvaWQgdGVzdEJyYW5jaDY0RXF1YWxNZW0oaW50NjRfdCBsZWZ0LCBpbnQ2NF90IHJpZ2h0KQot
ewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7Ci0gICAgQmFzaWNCbG9jayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAg
QmFzaWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBWYWx1ZSogYXJn
MSA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgIHByb2MsIExvYWQsIHBv
aW50ZXJUeXBlKCksIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZh
bHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKLSAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBFcXVhbCwgT3JpZ2luKCksIGFyZzEsIGFyZzIpLAotICAgICAg
ICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsK
LQotICAgIGJvb2wgdHJ1ZVJlc3VsdCA9IHRydWU7Ci0gICAgdGhlbkNhc2UtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgdGhl
bkNhc2UtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBMb2FkOFos
IE9yaWdpbigpLAotICAgICAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgJnRydWVSZXN1bHQpKSk7Ci0KLSAgICBib29sIGVsc2VSZXN1bHQg
PSBmYWxzZTsKLSAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIExvYWQ4WiwgT3JpZ2luKCksCi0gICAgICAgICAg
ICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmZWxz
ZVJlc3VsdCkpKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48Ym9vbD4ocHJvYywgJmxlZnQs
IHJpZ2h0KSA9PSAobGVmdCA9PSByaWdodCkpOwotfQotCi12b2lkIHRlc3RCcmFuY2g2NEVxdWFs
TWVtSW1tKGludDY0X3QgbGVmdCwgaW50NjRfdCByaWdodCkKLXsKLSAgICBQcm9jZWR1cmUgcHJv
YzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxv
Y2sqIHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNl
ID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KAotICAgICAgICBwcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4o
KSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFw
cGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgcmlnaHQpOwotICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwK
LSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBFcXVhbCwgT3JpZ2luKCksIGFy
ZzEsIGFyZzIpLAotICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVk
QmxvY2soZWxzZUNhc2UpKTsKLQotICAgIGJvb2wgdHJ1ZVJlc3VsdCA9IHRydWU7Ci0gICAgdGhl
bkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKLSAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAg
ICAgICBwcm9jLCBMb2FkOFosIE9yaWdpbigpLAotICAgICAgICAgICAgdGhlbkNhc2UtPmFwcGVu
ZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnRydWVSZXN1bHQpKSk7Ci0KLSAg
ICBib29sIGVsc2VSZXN1bHQgPSBmYWxzZTsKLSAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICBlbHNlQ2Fz
ZS0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIExvYWQ4WiwgT3Jp
Z2luKCksCi0gICAgICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCAmZWxzZVJlc3VsdCkpKTsKLQotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48
Ym9vbD4ocHJvYywgJmxlZnQpID09IChsZWZ0ID09IHJpZ2h0KSk7Ci19Ci0KLXZvaWQgdGVzdFN0
b3JlOExvYWQ4WihpbnQzMl90IHZhbHVlKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgCi0gICAgaW50OF90IGJ5dGU7
Ci0gICAgVmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgJmJ5dGUpOwotICAgIAotICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
Ci0gICAgICAgIHByb2MsIFN0b3JlOCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCkpLAotICAgICAgICBwdHIpOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICBy
b290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQ4WiwgT3JpZ2luKCksIHB0cikp
OwotCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCB2YWx1ZSkgPT0gc3Rh
dGljX2Nhc3Q8dWludDhfdD4odmFsdWUpKTsKLX0KLQotdm9pZCB0ZXN0U3RvcmUxNkxvYWQxNloo
aW50MzJfdCB2YWx1ZSkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIAotICAgIGludDE2X3QgYnl0ZTsKLSAgICBWYWx1
ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAm
Ynl0ZSk7Ci0gICAgCi0gICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAg
cHJvYywgU3RvcmUxNiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
Ci0gICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCkpLAotICAgICAgICBwdHIpOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBl
bmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQxNlosIE9yaWdpbigpLCBwdHIpKTsKLQotICAg
IENIRUNLKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgdmFsdWUpID09IHN0YXRpY19jYXN0
PHVpbnQxNl90Pih2YWx1ZSkpOwotfQotCi12b2lkIHRlc3RTU2hyU2hsMzIoaW50MzJfdCB2YWx1
ZSwgaW50MzJfdCBzc2hyQW1vdW50LCBpbnQzMl90IHNobEFtb3VudCkKLXsKLSAgICBQcm9jZWR1
cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAg
cm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywg
U1NociwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAg
ICAgICAgICAgICAgIHByb2MsIFNobCwgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdp
bigpLAotICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAotICAgICAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBzaGxBbW91
bnQpKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBzc2hyQW1vdW50KSkpOwotCi0gICAgQ0hFQ0soCi0gICAgICAgIGNvbXBpbGVBbmRS
dW48aW50MzJfdD4ocHJvYywgdmFsdWUpCi0gICAgICAgID09ICgodmFsdWUgPDwgKHNobEFtb3Vu
dCAmIDMxKSkgPj4gKHNzaHJBbW91bnQgJiAzMSkpKTsKLX0KLQotdm9pZCB0ZXN0U1NoclNobDY0
KGludDY0X3QgdmFsdWUsIGludDMyX3Qgc3NockFtb3VudCwgaW50MzJfdCBzaGxBbW91bnQpCi17
Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAg
ICAgICAgIHByb2MsIFNTaHIsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdpbigpLAotICAgICAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgc2hsQW1vdW50KSksCi0gICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgc3NockFtb3VudCkp
KTsKLQotICAgIENIRUNLKAotICAgICAgICBjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIHZh
bHVlKQotICAgICAgICA9PSAoKHZhbHVlIDw8IChzaGxBbW91bnQgJiA2MykpID4+IChzc2hyQW1v
dW50ICYgNjMpKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci12b2lkIHRlc3RSb3RSKFQg
dmFsdWVJbnQsIGludDMyX3Qgc2hpZnQpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLQotICAgIFZhbHVlKiB2YWx1ZSA9IHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKLSAgICBpZiAoc2l6ZW9mKFQpID09IDQpCi0gICAgICAgIHZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksIHZhbHVlKTsKLQot
ICAgIFZhbHVlKiBhbW1vdW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywg
T3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgUm90UiwgT3JpZ2luKCksIHZhbHVlLCBhbW1vdW50KSk7Ci0KLSAg
ICBDSEVDS19FUShjb21waWxlQW5kUnVuPFQ+KHByb2MsIHZhbHVlSW50LCBzaGlmdCksIHJvdGF0
ZVJpZ2h0KHZhbHVlSW50LCBzaGlmdCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdm9p
ZCB0ZXN0Um90TChUIHZhbHVlSW50LCBpbnQzMl90IHNoaWZ0KQotewotICAgIFByb2NlZHVyZSBw
cm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBWYWx1
ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgaWYgKHNpemVvZihUKSA9PSA0KQotICAg
ICAgICB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigp
LCB2YWx1ZSk7Ci0KLSAgICBWYWx1ZSogYW1tb3VudCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOwotICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJvdEwsIE9yaWdpbigpLCB2YWx1ZSwgYW1t
b3VudCkpOwotCi0gICAgQ0hFQ0tfRVEoY29tcGlsZUFuZFJ1bjxUPihwcm9jLCB2YWx1ZUludCwg
c2hpZnQpLCByb3RhdGVMZWZ0KHZhbHVlSW50LCBzaGlmdCkpOwotfQotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBUPgotdm9pZCB0ZXN0Um90UldpdGhJbW1TaGlmdChUIHZhbHVlSW50LCBpbnQzMl90IHNo
aWZ0KQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7Ci0KLSAgICBWYWx1ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAg
aWYgKHNpemVvZihUKSA9PSA0KQotICAgICAgICB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLCB2YWx1ZSk7Ci0KLSAgICBWYWx1ZSogYW1tb3VudCA9
IHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCBJbnQzMiwgc2hpZnQpOwot
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAot
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJvdFIsIE9yaWdpbigpLCB2YWx1
ZSwgYW1tb3VudCkpOwotCi0gICAgQ0hFQ0tfRVEoY29tcGlsZUFuZFJ1bjxUPihwcm9jLCB2YWx1
ZUludCwgc2hpZnQpLCByb3RhdGVSaWdodCh2YWx1ZUludCwgc2hpZnQpKTsKLX0KLQotdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLXZvaWQgdGVzdFJvdExXaXRoSW1tU2hpZnQoVCB2YWx1ZUludCwgaW50
MzJfdCBzaGlmdCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgVmFsdWUqIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OwotICAgIGlmIChzaXplb2YoVCkgPT0gNCkKLSAgICAgICAgdmFsdWUgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwgdmFsdWUpOwotCi0gICAgVmFsdWUqIGFt
bW91bnQgPSByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgSW50MzIsIHNo
aWZ0KTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSb3RMLCBPcmlnaW4o
KSwgdmFsdWUsIGFtbW91bnQpKTsKLQotICAgIENIRUNLX0VRKGNvbXBpbGVBbmRSdW48VD4ocHJv
YywgdmFsdWVJbnQsIHNoaWZ0KSwgcm90YXRlTGVmdCh2YWx1ZUludCwgc2hpZnQpKTsKLX0KLQot
dGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZvaWQgdGVzdENvbXB1dGVEaXZpc2lvbk1hZ2ljKFQgdmFs
dWUsIFQgbWFnaWNNdWx0aXBsaWVyLCB1bnNpZ25lZCBzaGlmdCkKLXsKLSAgICBEaXZpc2lvbk1h
Z2ljPFQ+IG1hZ2ljID0gY29tcHV0ZURpdmlzaW9uTWFnaWModmFsdWUpOwotICAgIENIRUNLKG1h
Z2ljLm1hZ2ljTXVsdGlwbGllciA9PSBtYWdpY011bHRpcGxpZXIpOwotICAgIENIRUNLKG1hZ2lj
LnNoaWZ0ID09IHNoaWZ0KTsKLX0KLQotdm9pZCB0ZXN0VHJpdmlhbEluZmluaXRlTG9vcCgpCi17
Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKLSAgICBCYXNpY0Jsb2NrKiBsb29wID0gcHJvYy5hZGRCbG9jaygpOwotICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4oKSwgRnJlcXVlbnRlZEJs
b2NrKGxvb3ApKTsKLSAgICBsb29wLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgSnVtcCwg
T3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayhsb29wKSk7Ci0KLSAgICBjb21waWxlUHJvYyhwcm9j
KTsKLX0KLQotdm9pZCB0ZXN0Rm9sZFBhdGhFcXVhbCgpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7
Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2Nr
KiB0aGVuQmxvY2sgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogZWxzZUJsb2Nr
ID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgVmFsdWUqIGFyZyA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
LQotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgQnJhbmNo
LCBPcmlnaW4oKSwgYXJnLCBGcmVxdWVudGVkQmxvY2sodGhlbkJsb2NrKSwgRnJlcXVlbnRlZEJs
b2NrKGVsc2VCbG9jaykpOwotCi0gICAgdGhlbkJsb2NrLT5hcHBlbmROZXdDb250cm9sVmFsdWUo
Ci0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHRoZW5CbG9jay0+YXBw
ZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4oKSwgYXJnLCB0
aGVuQmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpKTsK
LQotICAgIGVsc2VCbG9jay0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLAotICAgICAgICBlbHNlQmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4oCi0g
ICAgICAgICAgICBwcm9jLCBFcXVhbCwgT3JpZ2luKCksIGFyZywgZWxzZUJsb2NrLT5hcHBlbmRO
ZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKSk7Ci0KLSAgICBhdXRvIGNvZGUg
PSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBDSEVDSyhpbnZva2U8aW50cHRyX3Q+KCpjb2RlLCAw
KSA9PSAxKTsKLSAgICBDSEVDSyhpbnZva2U8aW50cHRyX3Q+KCpjb2RlLCAxKSA9PSAwKTsKLSAg
ICBDSEVDSyhpbnZva2U8aW50cHRyX3Q+KCpjb2RlLCA0MikgPT0gMCk7Ci19Ci0KLXZvaWQgdGVz
dExTaGlmdFNlbGYzMigpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJnID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKLSAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCkpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBTaGwsIE9yaWdpbigpLCBhcmcsIGFyZykpOwotCi0gICAgYXV0byBjb2RlID0gY29tcGlsZVBy
b2MocHJvYyk7Ci0KLSAgICBhdXRvIGNoZWNrID0gWyZdIChpbnQzMl90IHZhbHVlKSB7Ci0gICAg
ICAgIENIRUNLKGludm9rZTxpbnQzMl90PigqY29kZSwgdmFsdWUpID09IHZhbHVlIDw8ICh2YWx1
ZSAmIDMxKSk7Ci0gICAgfTsKLQotICAgIGNoZWNrKDApOwotICAgIGNoZWNrKDEpOwotICAgIGNo
ZWNrKDMxKTsKLSAgICBjaGVjaygzMik7Ci19Ci0KLXZvaWQgdGVzdFJTaGlmdFNlbGYzMigpCi17
Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKLSAgICBWYWx1ZSogYXJnID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAg
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTU2hyLCBPcmlnaW4oKSwg
YXJnLCBhcmcpKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotCi0gICAg
YXV0byBjaGVjayA9IFsmXSAoaW50MzJfdCB2YWx1ZSkgewotICAgICAgICBDSEVDSyhpbnZva2U8
aW50MzJfdD4oKmNvZGUsIHZhbHVlKSA9PSB2YWx1ZSA+PiAodmFsdWUgJiAzMSkpOwotICAgIH07
Ci0KLSAgICBjaGVjaygwKTsKLSAgICBjaGVjaygxKTsKLSAgICBjaGVjaygzMSk7Ci0gICAgY2hl
Y2soMzIpOwotfQotCi12b2lkIHRlc3RVUlNoaWZ0U2VsZjMyKCkKLXsKLSAgICBQcm9jZWR1cmUg
cHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVl
KiBhcmcgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBUcnVuYywgT3Jp
Z2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFpTaHIsIE9yaWdpbigpLCBhcmcsIGFyZykpOwotCi0g
ICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0KLSAgICBhdXRvIGNoZWNrID0gWyZd
ICh1aW50MzJfdCB2YWx1ZSkgewotICAgICAgICBDSEVDSyhpbnZva2U8dWludDMyX3Q+KCpjb2Rl
LCB2YWx1ZSkgPT0gdmFsdWUgPj4gKHZhbHVlICYgMzEpKTsKLSAgICB9OwotCi0gICAgY2hlY2so
MCk7Ci0gICAgY2hlY2soMSk7Ci0gICAgY2hlY2soMzEpOwotICAgIGNoZWNrKDMyKTsKLX0KLQot
dm9pZCB0ZXN0TFNoaWZ0U2VsZjY0KCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmcgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAg
ICAgICAgICAgcHJvYywgU2hsLCBPcmlnaW4oKSwgYXJnLCByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFRydW5jLCBPcmlnaW4oKSwgYXJnKSkpOwotCi0gICAgYXV0byBjb2RlID0gY29tcGls
ZVByb2MocHJvYyk7Ci0KLSAgICBhdXRvIGNoZWNrID0gWyZdIChpbnQ2NF90IHZhbHVlKSB7Ci0g
ICAgICAgIENIRUNLKGludm9rZTxpbnQ2NF90PigqY29kZSwgdmFsdWUpID09IHZhbHVlIDw8ICh2
YWx1ZSAmIDYzKSk7Ci0gICAgfTsKLQotICAgIGNoZWNrKDApOwotICAgIGNoZWNrKDEpOwotICAg
IGNoZWNrKDMxKTsKLSAgICBjaGVjaygzMik7Ci0gICAgY2hlY2soNjMpOwotICAgIGNoZWNrKDY0
KTsKLX0KLQotdm9pZCB0ZXN0UlNoaWZ0U2VsZjY0KCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsK
LSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmcg
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAg
ICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAotICAgICAgICAgICAgcHJvYywgU1NociwgT3JpZ2luKCksIGFyZywgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksIGFyZykpKTsKLQotICAgIGF1dG8gY29k
ZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotCi0gICAgYXV0byBjaGVjayA9IFsmXSAoaW50NjRfdCB2
YWx1ZSkgewotICAgICAgICBDSEVDSyhpbnZva2U8aW50NjRfdD4oKmNvZGUsIHZhbHVlKSA9PSB2
YWx1ZSA+PiAodmFsdWUgJiA2MykpOwotICAgIH07Ci0KLSAgICBjaGVjaygwKTsKLSAgICBjaGVj
aygxKTsKLSAgICBjaGVjaygzMSk7Ci0gICAgY2hlY2soMzIpOwotICAgIGNoZWNrKDYzKTsKLSAg
ICBjaGVjayg2NCk7Ci19Ci0KLXZvaWQgdGVzdFVSU2hpZnRTZWxmNjQoKQotewotICAgIFByb2Nl
ZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAg
VmFsdWUqIGFyZyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUoCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBaU2hyLCBPcmlnaW4oKSwgYXJnLCBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwgYXJnKSkpOwotCi0g
ICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0KLSAgICBhdXRvIGNoZWNrID0gWyZd
ICh1aW50NjRfdCB2YWx1ZSkgewotICAgICAgICBDSEVDSyhpbnZva2U8dWludDY0X3Q+KCpjb2Rl
LCB2YWx1ZSkgPT0gdmFsdWUgPj4gKHZhbHVlICYgNjMpKTsKLSAgICB9OwotCi0gICAgY2hlY2so
MCk7Ci0gICAgY2hlY2soMSk7Ci0gICAgY2hlY2soMzEpOwotICAgIGNoZWNrKDMyKTsKLSAgICBj
aGVjayg2Myk7Ci0gICAgY2hlY2soNjQpOwotfQotCi12b2lkIHRlc3RQYXRjaHBvaW50RG91Ymxl
UmVncygpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKLQotICAgIFZhbHVlKiBhcmcgPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Ci0gICAg
Ci0gICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNo
cG9pbnRWYWx1ZT4ocHJvYywgRG91YmxlLCBPcmlnaW4oKSk7Ci0gICAgcGF0Y2hwb2ludC0+YXBw
ZW5kKGFyZywgVmFsdWVSZXAoRlBSSW5mbzo6ZnBSZWdUMCkpOwotICAgIHBhdGNocG9pbnQtPnJl
c3VsdENvbnN0cmFpbnQgPSBWYWx1ZVJlcChGUFJJbmZvOjpmcFJlZ1QwKTsKLQotICAgIHVuc2ln
bmVkIG51bUNhbGxzID0gMDsKLSAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCi0gICAgICAg
IFsmXSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewot
ICAgICAgICAgICAgbnVtQ2FsbHMrKzsKLSAgICAgICAgfSk7Ci0KLSAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcGF0Y2hwb2ludCk7Ci0KLSAg
ICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBDSEVDSyhudW1DYWxscyA9PSAx
KTsKLSAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgNDIuNSkgPT0gNDIuNSk7Ci19Ci0K
LXZvaWQgdGVzdFNwaWxsRGVmU21hbGxlclRoYW5Vc2UoKQotewotICAgIFByb2NlZHVyZSBwcm9j
OwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICAvLyBNb3Zl
MzIuCi0gICAgVmFsdWUqIGFyZzMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAg
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZh
bHVlKiBhcmc2NCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgWkV4dDMyLCBPcmlnaW4o
KSwgYXJnMzIpOwotCi0gICAgLy8gTWFrZSBzdXJlIGFyZzY0IGlzIG9uIHRoZSBzdGFjay4KLSAg
ICBQYXRjaHBvaW50VmFsdWUqIGZvcmNlU3BpbGwgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2lu
dFZhbHVlPihwcm9jLCBJbnQ2NCwgT3JpZ2luKCkpOwotICAgIFJlZ2lzdGVyU2V0IGNsb2JiZXJT
ZXQgPSBSZWdpc3RlclNldDo6YWxsR1BScygpOwotICAgIGNsb2JiZXJTZXQuZXhjbHVkZShSZWdp
c3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSk7Ci0gICAgY2xvYmJlclNldC5leGNsdWRlKFJlZ2lz
dGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOwotICAgIGNsb2JiZXJTZXQuY2xl
YXIoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOyAvLyBGb3JjZSB0aGUgcmV0dXJuIHZhbHVlIGZv
ciBhbGlhc2luZyBiZWxvdy4KLSAgICBmb3JjZVNwaWxsLT5jbG9iYmVyTGF0ZShjbG9iYmVyU2V0
KTsKLSAgICBmb3JjZVNwaWxsLT5zZXRHZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxIZWxw
ZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAg
ICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7
Ci0gICAgICAgICAgICBqaXQueG9yNjQocGFyYW1zWzBdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkp
OwotICAgICAgICB9KTsKLQotICAgIC8vIE9uIHg4NiwgU3ViIGFkbWl0IGFuIGFkZHJlc3MgZm9y
IGFueSBvcGVyYW5kLiBJZiBpdCB1c2VzIHRoZSBzdGFjaywgdGhlIHRvcCBiaXRzIG11c3QgYmUg
emVyby4KLSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBT
dWIsIE9yaWdpbigpLCBmb3JjZVNwaWxsLCBhcmc2NCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7Ci0KLSAgICBhdXRvIGNv
ZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBDSEVDSyhpbnZva2U8aW50NjRfdD4oKmNvZGUs
IDB4ZmZmZmZmZmYwMDAwMDAwMCkgPT0gMCk7Ci19Ci0KLXZvaWQgdGVzdFNwaWxsVXNlTGFyZ2Vy
VGhhbkRlZigpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxv
Y2soKTsKLSAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBC
YXNpY0Jsb2NrKiB0YWlsID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgUmVnaXN0ZXJTZXQgY2xv
YmJlclNldCA9IFJlZ2lzdGVyU2V0OjphbGxHUFJzKCk7Ci0gICAgY2xvYmJlclNldC5leGNsdWRl
KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKTsKLSAgICBjbG9iYmVyU2V0LmV4Y2x1ZGUo
UmVnaXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSk7Ci0KLSAgICBWYWx1ZSog
Y29uZGl0aW9uID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKTsKLSAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHBy
b2MsIEJyYW5jaCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0g
ICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICBjb25kaXRpb24p
LAotICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxz
ZUNhc2UpKTsKLQotICAgIFZhbHVlKiB0cnVuY2F0ZWQgPSB0aGVuQ2FzZS0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBaRXh0MzIsIE9yaWdpbigpLAotICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksIGFyZ3VtZW50KSk7Ci0gICAgVXBzaWxvblZh
bHVlKiB0aGVuUmVzdWx0ID0gdGhlbkNhc2UtPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCB0cnVuY2F0ZWQpOwotICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFs
dWUocHJvYywgSnVtcCwgT3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayh0YWlsKSk7Ci0KLSAgICBV
cHNpbG9uVmFsdWUqIGVsc2VSZXN1bHQgPSBlbHNlQ2FzZS0+YXBwZW5kTmV3PFVwc2lsb25WYWx1
ZT4ocHJvYywgT3JpZ2luKCksIGFyZ3VtZW50KTsKLSAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKHByb2MsIEp1bXAsIE9yaWdpbigpLCBGcmVxdWVudGVkQmxvY2sodGFpbCkpOwot
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDEwMDsgKytpKSB7Ci0gICAgICAgIFBhdGNo
cG9pbnRWYWx1ZSogcHJldmVudFRhaWxEdXBsaWNhdGlvbiA9IHRhaWwtPmFwcGVuZE5ldzxQYXRj
aHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKLSAgICAgICAgcHJldmVudFRhaWxE
dXBsaWNhdGlvbi0+Y2xvYmJlckxhdGUoY2xvYmJlclNldCk7Ci0gICAgICAgIHByZXZlbnRUYWls
RHVwbGljYXRpb24tPnNldEdlbmVyYXRvcihbXSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3RhY2tt
YXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKLSAgICB9Ci0KLSAgICBQYXRjaHBvaW50VmFsdWUq
IGZvcmNlU3BpbGwgPSB0YWlsLT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBWb2lk
LCBPcmlnaW4oKSk7Ci0gICAgZm9yY2VTcGlsbC0+Y2xvYmJlckxhdGUoY2xvYmJlclNldCk7Ci0g
ICAgZm9yY2VTcGlsbC0+c2V0R2VuZXJhdG9yKAotICAgICAgICBbJl0gKENDYWxsSGVscGVycyYg
aml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7Ci0gICAgICAgICAgICBBbGxv
d01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAgICAgICAg
ICBjbG9iYmVyU2V0LmZvckVhY2goWyZdIChSZWcgcmVnKSB7Ci0gICAgICAgICAgICAgICAgaml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoMHhmZmZmZmZmZmZmZmZmZmZmKSwgcmVn
LmdwcigpKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLQotICAgIFZhbHVlKiBwaGkg
PSB0YWlsLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFBoaSwgSW50NjQsIE9yaWdpbigpKTsKLSAg
ICB0aGVuUmVzdWx0LT5zZXRQaGkocGhpKTsKLSAgICBlbHNlUmVzdWx0LT5zZXRQaGkocGhpKTsK
LSAgICB0YWlsLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwg
cGhpKTsKLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotICAgIENIRUNLKGlu
dm9rZTx1aW50NjRfdD4oKmNvZGUsIDEsIDB4ZmZmZmZmZmYwMDAwMDAwMCkgPT0gMCk7Ci0gICAg
Q0hFQ0soaW52b2tlPHVpbnQ2NF90PigqY29kZSwgMCwgMHhmZmZmZmZmZjAwMDAwMDAwKSA9PSAw
eGZmZmZmZmZmMDAwMDAwMDApOwotCi0gICAgLy8gQSBzZWNvbmQgdGltZSBzaW5jZSB0aGUgcHJl
dmlvdXMgcnVuIGlzIHN0aWxsIG9uIHRoZSBzdGFjay4KLSAgICBDSEVDSyhpbnZva2U8dWludDY0
X3Q+KCpjb2RlLCAxLCAweGZmZmZmZmZmMDAwMDAwMDApID09IDApOwotCi19Ci0KLXZvaWQgdGVz
dExhdGVSZWdpc3RlcigpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0KLSAgICBpZiAoIXByb2Mu
b3B0TGV2ZWwoKSkgewotICAgICAgICAvLyBGSVhNRTogTWFrZSBPMCBoYW5kbGUgc3VjaCBzaXR1
YXRpb25zOgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTk0NjMzCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgLy8gVGhpcyB3b3JrcyBieSBtYWtpbmcgYWxsIGJ1
dCAxIHJlZ2lzdGVyIGJlIGlucHV0IHRvIHRoZSBmaXJzdCBwYXRjaHBvaW50IGFzIExhdGVSZWdp
c3Rlci4KLSAgICAvLyBUaGUgb3RoZXIgMSByZWdpc3RlciBpcyBqdXN0IGEgcmVndWxhciBSZWdp
c3RlciBpbnB1dC4gV2UgYXNzZXJ0IG91ciByZXN1bHQgaXMgdGhlIHJlZ3VsYXIKLSAgICAvLyBy
ZWdpc3RlciBpbnB1dC4gVGhlcmUgd291bGQgYmUgbm8gb3RoZXIgd2F5IGZvciB0aGUgcmVnaXN0
ZXIgYWxsb2NhdG9yIHRvIGFycmFuZ2UgdGhpbmdzCi0gICAgLy8gYmVjYXVzZSBMYXRlUmVnaXN0
ZXIgaW50ZXJmZXJlcyB3aXRoIHRoZSByZXN1bHQuCi0gICAgLy8gVGhlbiwgdGhlIHNlY29uZCBw
YXRjaHBvaW50IHRha2VzIHRoZSByZXN1bHQgb2YgdGhlIGZpcnN0IGFzIGFuIGFyZ3VtZW50IGFu
ZCBhc2tzIGZvcgotICAgIC8vIGl0IGluIGEgcmVnaXN0ZXIgdGhhdCB3YXMgYSBMYXRlUmVnaXN0
ZXIuIFRoaXMgaXMgdG8gaW5jZW50aXZpemUgdGhlIHJlZ2lzdGVyIGFsbG9jYXRvcgotICAgIC8v
IHRvIHVzZSB0aGF0IExhdGVSZWdpc3RlciBhcyB0aGUgcmVzdWx0IGZvciB0aGUgZmlyc3QgcGF0
Y2hwb2ludC4gQnV0IG9mIGNvdXJzZSBpdCBjYW4gbm90IGRvIHRoYXQuCi0gICAgLy8gU28gaXQg
bXVzdCBpc3N1ZSBhIG1vdiBhZnRlciB0aGUgZmlyc3QgcGF0Y2hwb2ludCBmcm9tIHRoZSBmaXJz
dCdzIHJlc3VsdCBpbnRvIHRoZSBzZWNvbmQncyBpbnB1dC4KLQotICAgIFJlZ2lzdGVyU2V0IHJl
Z3MgPSBSZWdpc3RlclNldDo6YWxsR1BScygpOwotICAgIHJlZ3MuZXhjbHVkZShSZWdpc3RlclNl
dDo6c3RhY2tSZWdpc3RlcnMoKSk7Ci0gICAgcmVncy5leGNsdWRlKFJlZ2lzdGVyU2V0OjpyZXNl
cnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOwotICAgIFZlY3RvcjxWYWx1ZSo+IGxhdGVVc2VBcmdz
OwotICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7Ci0gICAgZm9yIChHUFJSZWcgcmVnID0gQ0NhbGxI
ZWxwZXJzOjpmaXJzdFJlZ2lzdGVyKCk7IHJlZyA8PSBDQ2FsbEhlbHBlcnM6Omxhc3RSZWdpc3Rl
cigpOyByZWcgPSBDQ2FsbEhlbHBlcnM6Om5leHRSZWdpc3RlcihyZWcpKSB7Ci0gICAgICAgIGlm
ICghcmVncy5nZXQocmVnKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICByZXN1bHQr
KzsKLSAgICAgICAgaWYgKHJlZyA9PSBHUFJJbmZvOjpyZWdUMCkKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICBWYWx1ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgMSk7Ci0gICAgICAgIGxhdGVVc2VBcmdzLmFwcGVuZCh2YWx1ZSk7
Ci0gICAgfQotICAgIFZhbHVlKiByZWd1bGFyVXNlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpOwotICAgIFBhdGNocG9pbnRWYWx1ZSogZmlyc3RQYXRj
aHBvaW50ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgSW50NjQsIE9y
aWdpbigpKTsKLSAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGkgPSAwOwotICAgICAgICBmb3IgKEdQ
UlJlZyByZWcgPSBDQ2FsbEhlbHBlcnM6OmZpcnN0UmVnaXN0ZXIoKTsgcmVnIDw9IENDYWxsSGVs
cGVyczo6bGFzdFJlZ2lzdGVyKCk7IHJlZyA9IENDYWxsSGVscGVyczo6bmV4dFJlZ2lzdGVyKHJl
ZykpIHsKLSAgICAgICAgICAgIGlmICghcmVncy5nZXQocmVnKSkKLSAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIGlmIChyZWcgPT0gR1BSSW5mbzo6cmVnVDApCi0gICAgICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBWYWx1ZSogdmFsdWUgPSBsYXRlVXNlQXJn
c1tpKytdOwotICAgICAgICAgICAgZmlyc3RQYXRjaHBvaW50LT5hcHBlbmQodmFsdWUsIFZhbHVl
UmVwOjpsYXRlUmVnKHJlZykpOwotICAgICAgICB9Ci0gICAgICAgIGZpcnN0UGF0Y2hwb2ludC0+
YXBwZW5kKHJlZ3VsYXJVc2UsIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6cmVnVDApKTsKLSAgICB9
Ci0KLSAgICBmaXJzdFBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKLSAgICAgICAgWyZdIChDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsK
LSAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2go
aml0KTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtc1swXS5ncHIoKSA9PSBHUFJJbmZvOjpyZWdU
MCk7Ci0gICAgICAgICAgICAvLyBOb3RlIHRoYXQgcmVnVDAgc2hvdWxkIGFsc28gc3RhcnQgb2Zm
IGFzIDEsIHNvIHdlJ3JlIGltcGxpY2l0bHkgc3RhcnRpbmcgb3VyIGFkZCB3aXRoIDEsIHdoaWNo
IGlzIGFsc28gYW4gYXJndW1lbnQuCi0gICAgICAgICAgICB1bnNpZ25lZCBza2lwcGVkID0gMDsK
LSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBwYXJhbXMuc2l6ZSgpOyBpKysp
IHsKLSAgICAgICAgICAgICAgICBpZiAocGFyYW1zW2ldLmdwcigpID09IHBhcmFtc1swXS5ncHIo
KSkgewotICAgICAgICAgICAgICAgICAgICBza2lwcGVkID0gaTsKLSAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGppdC5hZGQ2
NChwYXJhbXNbaV0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBDSEVDSyghIXNraXBwZWQpOwotICAgICAgICB9KTsKLQotICAgIFBhdGNocG9pbnRW
YWx1ZSogc2Vjb25kUGF0Y2hwb2ludCA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+
KHByb2MsIEludDY0LCBPcmlnaW4oKSk7Ci0gICAgc2Vjb25kUGF0Y2hwb2ludC0+YXBwZW5kKGZp
cnN0UGF0Y2hwb2ludCwgVmFsdWVSZXA6OnJlZyhHUFJJbmZvOjpyZWdUMSkpOwotICAgIHNlY29u
ZFBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKLSAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAg
IEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKLSAgICAg
ICAgICAgIENIRUNLKHBhcmFtc1sxXS5ncHIoKSA9PSBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgICAg
ICAgICBqaXQubm9wKCk7Ci0gICAgICAgICAgICBqaXQubm9wKCk7Ci0gICAgICAgICAgICBqaXQu
bW92ZShwYXJhbXNbMV0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7Ci0gICAgICAgICAgICBqaXQu
bm9wKCk7Ci0gICAgICAgICAgICBqaXQubm9wKCk7Ci0gICAgICAgIH0pOwotICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBzZWNvbmRQYXRjaHBv
aW50KTsKLSAgICAKLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBDSEVD
SyhpbnZva2U8dWludDY0X3Q+KCpjb2RlKSA9PSByZXN1bHQpOwotfQotCi12b2lkIGludGVycHJl
dGVyUHJpbnQoVmVjdG9yPGludHB0cl90Piogc3RyZWFtLCBpbnRwdHJfdCB2YWx1ZSkKLXsKLSAg
ICBzdHJlYW0tPmFwcGVuZCh2YWx1ZSk7Ci19Ci0KLXZvaWQgdGVzdEludGVycHJldGVyKCkKLXsK
LSAgICAvLyBUaGlzIGltcGxlbWVudHMgYSBzaWxseSBpbnRlcnByZXRlciB0byB0ZXN0IGJ1aWxk
aW5nIGN1c3RvbSBzd2l0Y2ggc3RhdGVtZW50cyB1c2luZwotICAgIC8vIFBhdGNocG9pbnQuCi0g
ICAgCi0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgCi0gICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBkaXNwYXRjaCA9IHByb2MuYWRkQmxvY2so
KTsKLSAgICBCYXNpY0Jsb2NrKiBhZGRUb0RhdGFQb2ludGVyID0gcHJvYy5hZGRCbG9jaygpOwot
ICAgIEJhc2ljQmxvY2sqIGFkZFRvQ29kZVBvaW50ZXIgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAg
QmFzaWNCbG9jayogYWRkVG9Db2RlUG9pbnRlclRha2VuID0gcHJvYy5hZGRCbG9jaygpOwotICAg
IEJhc2ljQmxvY2sqIGFkZFRvQ29kZVBvaW50ZXJOb3RUYWtlbiA9IHByb2MuYWRkQmxvY2soKTsK
LSAgICBCYXNpY0Jsb2NrKiBhZGRUb0RhdGEgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNC
bG9jayogcHJpbnQgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogc3RvcCA9IHBy
b2MuYWRkQmxvY2soKTsKLSAgICAKLSAgICBWYXJpYWJsZSogZGF0YVBvaW50ZXIgPSBwcm9jLmFk
ZFZhcmlhYmxlKHBvaW50ZXJUeXBlKCkpOwotICAgIFZhcmlhYmxlKiBjb2RlUG9pbnRlciA9IHBy
b2MuYWRkVmFyaWFibGUocG9pbnRlclR5cGUoKSk7Ci0gICAgCi0gICAgcm9vdC0+YXBwZW5kTmV3
PFZhcmlhYmxlVmFsdWU+KAotICAgICAgICBwcm9jLCBTZXQsIE9yaWdpbigpLCBkYXRhUG9pbnRl
ciwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICByb290LT5hcHBlbmROZXc8VmFyaWFi
bGVWYWx1ZT4oCi0gICAgICAgIHByb2MsIFNldCwgT3JpZ2luKCksIGNvZGVQb2ludGVyLAotICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSkpOwotICAgIFZhbHVlKiBjb250ZXh0ID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjIpOwotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4o
KSwgRnJlcXVlbnRlZEJsb2NrKGRpc3BhdGNoKSk7Ci0KLSAgICAvLyBOT1RFOiBJdCdzIHRvdGFs
bHkgdmFsaWQgZm9yIHRoaXMgcGF0Y2hwb2ludCB0byBiZSB0YWlsLWR1cGxpY2F0ZWQuCi0gICAg
VmFsdWUqIGNvZGVQb2ludGVyVmFsdWUgPQotICAgICAgICBkaXNwYXRjaC0+YXBwZW5kTmV3PFZh
cmlhYmxlVmFsdWU+KHByb2MsIEIzOjpHZXQsIE9yaWdpbigpLCBjb2RlUG9pbnRlcik7Ci0gICAg
VmFsdWUqIG9wY29kZSA9IGRpc3BhdGNoLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAg
ICBwcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSwgY29kZVBvaW50ZXJWYWx1ZSk7
Ci0gICAgUGF0Y2hwb2ludFZhbHVlKiBwb2x5SnVtcCA9IGRpc3BhdGNoLT5hcHBlbmROZXc8UGF0
Y2hwb2ludFZhbHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7Ci0gICAgcG9seUp1bXAtPmVmZmVj
dHMgPSBFZmZlY3RzKCk7Ci0gICAgcG9seUp1bXAtPmVmZmVjdHMudGVybWluYWwgPSB0cnVlOwot
ICAgIHBvbHlKdW1wLT5hcHBlbmRTb21lUmVnaXN0ZXIob3Bjb2RlKTsKLSAgICBwb2x5SnVtcC0+
Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwotICAgIHBvbHlK
dW1wLT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAyOwotICAgIGRpc3BhdGNoLT5hcHBlbmRTdWNj
ZXNzb3IoRnJlcXVlbnRlZEJsb2NrKGFkZFRvRGF0YVBvaW50ZXIpKTsKLSAgICBkaXNwYXRjaC0+
YXBwZW5kU3VjY2Vzc29yKEZyZXF1ZW50ZWRCbG9jayhhZGRUb0NvZGVQb2ludGVyKSk7Ci0gICAg
ZGlzcGF0Y2gtPmFwcGVuZFN1Y2Nlc3NvcihGcmVxdWVudGVkQmxvY2soYWRkVG9EYXRhKSk7Ci0g
ICAgZGlzcGF0Y2gtPmFwcGVuZFN1Y2Nlc3NvcihGcmVxdWVudGVkQmxvY2socHJpbnQpKTsKLSAg
ICBkaXNwYXRjaC0+YXBwZW5kU3VjY2Vzc29yKEZyZXF1ZW50ZWRCbG9jayhzdG9wKSk7Ci0gICAg
Ci0gICAgLy8gT3VyICJvcGNvZGVzIi4KLSAgICBzdGF0aWMgY29uc3QgaW50cHRyX3QgQWRkRFAg
PSAwOwotICAgIHN0YXRpYyBjb25zdCBpbnRwdHJfdCBBZGRDUCA9IDE7Ci0gICAgc3RhdGljIGNv
bnN0IGludHB0cl90IEFkZCA9IDI7Ci0gICAgc3RhdGljIGNvbnN0IGludHB0cl90IFByaW50ID0g
MzsKLSAgICBzdGF0aWMgY29uc3QgaW50cHRyX3QgU3RvcCA9IDQ7Ci0gICAgCi0gICAgcG9seUp1
bXAtPnNldEdlbmVyYXRvcigKLSAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3Qg
U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAgIEFsbG93TWFj
cm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKLSAgICAgICAgICAgIFZl
Y3RvcjxCb3g8Q0NhbGxIZWxwZXJzOjpMYWJlbD4+IGxhYmVscyA9IHBhcmFtcy5zdWNjZXNzb3JM
YWJlbHMoKTsKLQotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEIzQ29tcGlsYXRp
b25QdHJUYWc+KiBqdW1wVGFibGUgPSBiaXR3aXNlX2Nhc3Q8TWFjcm9Bc3NlbWJsZXJDb2RlUHRy
PEIzQ29tcGlsYXRpb25QdHJUYWc+Kj4oCi0gICAgICAgICAgICAgICAgcGFyYW1zLnByb2MoKS5h
ZGREYXRhU2VjdGlvbihzaXplb2YoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEIzQ29tcGlsYXRpb25Q
dHJUYWc+KSAqIGxhYmVscy5zaXplKCkpKTsKLQotICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2gg
PSBwYXJhbXMuZ3BTY3JhdGNoKDApOwotCi0gICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoanVtcFRhYmxlKSwgc2NyYXRjaCk7Ci0gICAgICAgICAgICBqaXQu
bG9hZDY0KENDYWxsSGVscGVyczo6QmFzZUluZGV4KHNjcmF0Y2gsIHBhcmFtc1swXS5ncHIoKSwg
Q0NhbGxIZWxwZXJzOjp0aW1lc1B0cigpKSwgc2NyYXRjaCk7Ci0gICAgICAgICAgICBqaXQuanVt
cChzY3JhdGNoLCBCM0NvbXBpbGF0aW9uUHRyVGFnKTsKLQotICAgICAgICAgICAgaml0LmFkZExp
bmtUYXNrKAotICAgICAgICAgICAgICAgIFsmLCBqdW1wVGFibGUsIGxhYmVsc10gKExpbmtCdWZm
ZXImIGxpbmtCdWZmZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
bGFiZWxzLnNpemUoKTsgaS0tOykKLSAgICAgICAgICAgICAgICAgICAgICAgIGp1bXBUYWJsZVtp
XSA9IGxpbmtCdWZmZXIubG9jYXRpb25PZjxCM0NvbXBpbGF0aW9uUHRyVGFnPigqbGFiZWxzW2ld
KTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0gICAgCi0gICAgLy8gQWRkRFAg
PG9wZXJhbmQ+OiBhZGRzIDxvcGVyYW5kPiB0byBEUC4KLSAgICBjb2RlUG9pbnRlclZhbHVlID0K
LSAgICAgICAgYWRkVG9EYXRhUG9pbnRlci0+YXBwZW5kTmV3PFZhcmlhYmxlVmFsdWU+KHByb2Ms
IEIzOjpHZXQsIE9yaWdpbigpLCBjb2RlUG9pbnRlcik7Ci0gICAgYWRkVG9EYXRhUG9pbnRlci0+
YXBwZW5kTmV3PFZhcmlhYmxlVmFsdWU+KAotICAgICAgICBwcm9jLCBTZXQsIE9yaWdpbigpLCBk
YXRhUG9pbnRlciwKLSAgICAgICAgYWRkVG9EYXRhUG9pbnRlci0+YXBwZW5kTmV3PFZhbHVlPigK
LSAgICAgICAgICAgIHByb2MsIEIzOjpBZGQsIE9yaWdpbigpLAotICAgICAgICAgICAgYWRkVG9E
YXRhUG9pbnRlci0+YXBwZW5kTmV3PFZhcmlhYmxlVmFsdWU+KHByb2MsIEIzOjpHZXQsIE9yaWdp
bigpLCBkYXRhUG9pbnRlciksCi0gICAgICAgICAgICBhZGRUb0RhdGFQb2ludGVyLT5hcHBlbmRO
ZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIE11bCwgT3JpZ2luKCksCi0gICAgICAg
ICAgICAgICAgYWRkVG9EYXRhUG9pbnRlci0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAg
ICAgICAgICAgICAgICAgcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCksIGNvZGVQ
b2ludGVyVmFsdWUsIHN0YXRpY19jYXN0PGludDMyX3Q+KHNpemVvZihpbnRwdHJfdCkpKSwKLSAg
ICAgICAgICAgICAgICBhZGRUb0RhdGFQb2ludGVyLT5hcHBlbmRJbnRDb25zdGFudCgKLSAgICAg
ICAgICAgICAgICAgICAgcHJvYywgT3JpZ2luKCksIHBvaW50ZXJUeXBlKCksIHNpemVvZihpbnRw
dHJfdCkpKSkpOwotICAgIGFkZFRvRGF0YVBvaW50ZXItPmFwcGVuZE5ldzxWYXJpYWJsZVZhbHVl
PigKLSAgICAgICAgcHJvYywgU2V0LCBPcmlnaW4oKSwgY29kZVBvaW50ZXIsCi0gICAgICAgIGFk
ZFRvRGF0YVBvaW50ZXItPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBCMzo6
QWRkLCBPcmlnaW4oKSwgY29kZVBvaW50ZXJWYWx1ZSwKLSAgICAgICAgICAgIGFkZFRvRGF0YVBv
aW50ZXItPmFwcGVuZEludENvbnN0YW50KAotICAgICAgICAgICAgICAgIHByb2MsIE9yaWdpbigp
LCBwb2ludGVyVHlwZSgpLCBzaXplb2YoaW50cHRyX3QpICogMikpKTsKLSAgICBhZGRUb0RhdGFQ
b2ludGVyLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgSnVtcCwgT3JpZ2luKCksIEZyZXF1
ZW50ZWRCbG9jayhkaXNwYXRjaCkpOwotICAgIAotICAgIC8vIEFkZENQIDxvcGVyYW5kPjogYWRk
cyA8b3BlcmFuZD4gdG8gQ1AgaWYgdGhlIGN1cnJlbnQgdmFsdWUgYXQgRFAgaXMgbm9uLXplcm8s
IG90aGVyd2lzZQotICAgIC8vIGZhbGxzIHRocm91Z2ggbm9ybWFsbHkuCi0gICAgY29kZVBvaW50
ZXJWYWx1ZSA9Ci0gICAgICAgIGFkZFRvQ29kZVBvaW50ZXItPmFwcGVuZE5ldzxWYXJpYWJsZVZh
bHVlPihwcm9jLCBCMzo6R2V0LCBPcmlnaW4oKSwgY29kZVBvaW50ZXIpOwotICAgIFZhbHVlKiBk
YXRhUG9pbnRlclZhbHVlID0KLSAgICAgICAgYWRkVG9Db2RlUG9pbnRlci0+YXBwZW5kTmV3PFZh
cmlhYmxlVmFsdWU+KHByb2MsIEIzOjpHZXQsIE9yaWdpbigpLCBkYXRhUG9pbnRlcik7Ci0gICAg
YWRkVG9Db2RlUG9pbnRlci0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBC
cmFuY2gsIE9yaWdpbigpLAotICAgICAgICBhZGRUb0NvZGVQb2ludGVyLT5hcHBlbmROZXc8TWVt
b3J5VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2lu
KCksIGRhdGFQb2ludGVyVmFsdWUpLAotICAgICAgICBGcmVxdWVudGVkQmxvY2soYWRkVG9Db2Rl
UG9pbnRlclRha2VuKSwgRnJlcXVlbnRlZEJsb2NrKGFkZFRvQ29kZVBvaW50ZXJOb3RUYWtlbikp
OwotICAgIGFkZFRvQ29kZVBvaW50ZXJUYWtlbi0+YXBwZW5kTmV3PFZhcmlhYmxlVmFsdWU+KAot
ICAgICAgICBwcm9jLCBTZXQsIE9yaWdpbigpLCBjb2RlUG9pbnRlciwKLSAgICAgICAgYWRkVG9D
b2RlUG9pbnRlclRha2VuLT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQjM6
OkFkZCwgT3JpZ2luKCksIGNvZGVQb2ludGVyVmFsdWUsCi0gICAgICAgICAgICBhZGRUb0NvZGVQ
b2ludGVyVGFrZW4tPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgTXVs
LCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICBhZGRUb0NvZGVQb2ludGVyVGFrZW4tPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICAgICAgICAgIHByb2MsIExvYWQsIHBvaW50
ZXJUeXBlKCksIE9yaWdpbigpLCBjb2RlUG9pbnRlclZhbHVlLCBzdGF0aWNfY2FzdDxpbnQzMl90
PihzaXplb2YoaW50cHRyX3QpKSksCi0gICAgICAgICAgICAgICAgYWRkVG9Db2RlUG9pbnRlclRh
a2VuLT5hcHBlbmRJbnRDb25zdGFudCgKLSAgICAgICAgICAgICAgICAgICAgcHJvYywgT3JpZ2lu
KCksIHBvaW50ZXJUeXBlKCksIHNpemVvZihpbnRwdHJfdCkpKSkpOwotICAgIGFkZFRvQ29kZVBv
aW50ZXJUYWtlbi0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIEp1bXAsIE9yaWdpbigpLCBG
cmVxdWVudGVkQmxvY2soZGlzcGF0Y2gpKTsKLSAgICBhZGRUb0NvZGVQb2ludGVyTm90VGFrZW4t
PmFwcGVuZE5ldzxWYXJpYWJsZVZhbHVlPigKLSAgICAgICAgcHJvYywgU2V0LCBPcmlnaW4oKSwg
Y29kZVBvaW50ZXIsCi0gICAgICAgIGFkZFRvQ29kZVBvaW50ZXJOb3RUYWtlbi0+YXBwZW5kTmV3
PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEIzOjpBZGQsIE9yaWdpbigpLCBjb2RlUG9pbnRl
clZhbHVlLAotICAgICAgICAgICAgYWRkVG9Db2RlUG9pbnRlck5vdFRha2VuLT5hcHBlbmRJbnRD
b25zdGFudCgKLSAgICAgICAgICAgICAgICBwcm9jLCBPcmlnaW4oKSwgcG9pbnRlclR5cGUoKSwg
c2l6ZW9mKGludHB0cl90KSAqIDIpKSk7Ci0gICAgYWRkVG9Db2RlUG9pbnRlck5vdFRha2VuLT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCi0gICAgICAgIHByb2MsIEp1bXAsIE9yaWdpbigpLCBGcmVx
dWVudGVkQmxvY2soZGlzcGF0Y2gpKTsKLQotICAgIC8vIEFkZCA8b3BlcmFuZD46IGFkZHMgPG9w
ZXJhbmQ+IHRvIHRoZSBzbG90IHBvaW50ZWQgdG8gYnkgRFAuCi0gICAgY29kZVBvaW50ZXJWYWx1
ZSA9IGFkZFRvRGF0YS0+YXBwZW5kTmV3PFZhcmlhYmxlVmFsdWU+KHByb2MsIEIzOjpHZXQsIE9y
aWdpbigpLCBjb2RlUG9pbnRlcik7Ci0gICAgZGF0YVBvaW50ZXJWYWx1ZSA9IGFkZFRvRGF0YS0+
YXBwZW5kTmV3PFZhcmlhYmxlVmFsdWU+KHByb2MsIEIzOjpHZXQsIE9yaWdpbigpLCBkYXRhUG9p
bnRlcik7Ci0gICAgYWRkVG9EYXRhLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICBw
cm9jLCBTdG9yZSwgT3JpZ2luKCksCi0gICAgICAgIGFkZFRvRGF0YS0+YXBwZW5kTmV3PFZhbHVl
PigKLSAgICAgICAgICAgIHByb2MsIEIzOjpBZGQsIE9yaWdpbigpLAotICAgICAgICAgICAgYWRk
VG9EYXRhLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIExv
YWQsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigpLCBkYXRhUG9pbnRlclZhbHVlKSwKLSAgICAgICAg
ICAgIGFkZFRvRGF0YS0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAgICAgICAgICBw
cm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSwgY29kZVBvaW50ZXJWYWx1ZSwgc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oc2l6ZW9mKGludHB0cl90KSkpKSwKLSAgICAgICAgZGF0YVBvaW50
ZXJWYWx1ZSk7Ci0gICAgYWRkVG9EYXRhLT5hcHBlbmROZXc8VmFyaWFibGVWYWx1ZT4oCi0gICAg
ICAgIHByb2MsIFNldCwgT3JpZ2luKCksIGNvZGVQb2ludGVyLAotICAgICAgICBhZGRUb0RhdGEt
PmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBCMzo6QWRkLCBPcmlnaW4oKSwg
Y29kZVBvaW50ZXJWYWx1ZSwKLSAgICAgICAgICAgIGFkZFRvRGF0YS0+YXBwZW5kSW50Q29uc3Rh
bnQocHJvYywgT3JpZ2luKCksIHBvaW50ZXJUeXBlKCksIHNpemVvZihpbnRwdHJfdCkgKiAyKSkp
OwotICAgIGFkZFRvRGF0YS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIEp1bXAsIE9yaWdp
bigpLCBGcmVxdWVudGVkQmxvY2soZGlzcGF0Y2gpKTsKLSAgICAKLSAgICAvLyBQcmludDogInBy
aW50cyIgdGhlIHZhbHVlIHBvaW50ZWQgdG8gYnkgRFAuIFdoYXQgdGhpcyBhY3R1YWxseSBtZWFu
cyBpcyB0aGF0IHRoZSB2YWx1ZSBpcwotICAgIC8vIGFwcGVuZGVkIHRvIHRoZSBzdHJlYW0gdmVj
dG9yIGJ5IHRoZSBpbnRlcnByZXRlclByaW50IGZ1bmN0aW9uLgotICAgIGNvZGVQb2ludGVyVmFs
dWUgPSBwcmludC0+YXBwZW5kTmV3PFZhcmlhYmxlVmFsdWU+KHByb2MsIEIzOjpHZXQsIE9yaWdp
bigpLCBjb2RlUG9pbnRlcik7Ci0gICAgZGF0YVBvaW50ZXJWYWx1ZSA9IHByaW50LT5hcHBlbmRO
ZXc8VmFyaWFibGVWYWx1ZT4ocHJvYywgQjM6OkdldCwgT3JpZ2luKCksIGRhdGFQb2ludGVyKTsK
LSAgICBwcmludC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAotICAgICAgICBwcm9jLCBWb2lkLCBP
cmlnaW4oKSwKLSAgICAgICAgcHJpbnQtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPigKLSAgICAg
ICAgICAgIHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KGludGVycHJldGVy
UHJpbnQsIEIzQ0NhbGxQdHJUYWcpKSwKLSAgICAgICAgY29udGV4dCwKLSAgICAgICAgcHJpbnQt
PmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2lu
KCksIGRhdGFQb2ludGVyVmFsdWUpKTsKLSAgICBwcmludC0+YXBwZW5kTmV3PFZhcmlhYmxlVmFs
dWU+KAotICAgICAgICBwcm9jLCBTZXQsIE9yaWdpbigpLCBjb2RlUG9pbnRlciwKLSAgICAgICAg
cHJpbnQtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBCMzo6QWRkLCBPcmln
aW4oKSwgY29kZVBvaW50ZXJWYWx1ZSwKLSAgICAgICAgICAgIHByaW50LT5hcHBlbmRJbnRDb25z
dGFudChwcm9jLCBPcmlnaW4oKSwgcG9pbnRlclR5cGUoKSwgc2l6ZW9mKGludHB0cl90KSkpKTsK
LSAgICBwcmludC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIEp1bXAsIE9yaWdpbigpLCBG
cmVxdWVudGVkQmxvY2soZGlzcGF0Y2gpKTsKLSAgICAKLSAgICAvLyBTdG9wOiByZXR1cm5zLgot
ICAgIHN0b3AtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKLSAgICAgICAgc3RvcC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCks
IHBvaW50ZXJUeXBlKCksIDApKTsKLSAgICAKLSAgICBhdXRvIGludGVycHJldGVyID0gY29tcGls
ZVByb2MocHJvYyk7Ci0gICAgCi0gICAgVmVjdG9yPHVpbnRwdHJfdD4gZGF0YTsKLSAgICBWZWN0
b3I8dWludHB0cl90PiBjb2RlOwotICAgIFZlY3Rvcjx1aW50cHRyX3Q+IHN0cmVhbTsKLSAgICAK
LSAgICBkYXRhLmFwcGVuZCgxKTsKLSAgICBkYXRhLmFwcGVuZCgwKTsKLSAgICAKLSAgICBpZiAo
c2hvdWxkQmVWZXJib3NlKCkpCi0gICAgICAgIGRhdGFMb2coImRhdGEgPSAiLCBsaXN0RHVtcChk
YXRhKSwgIlxuIik7Ci0gICAgCi0gICAgLy8gV2UnbGwgd3JpdGUgYSBwcm9ncmFtIHRoYXQgcHJp
bnRzIHRoZSBudW1iZXJzIDEuLjEwMC4KLSAgICAvLyBXZSBleHBlY3QgRFAgdG8gcG9pbnQgYXQg
IzAuCi0gICAgY29kZS5hcHBlbmQoQWRkQ1ApOwotICAgIGNvZGUuYXBwZW5kKDYpOyAvLyBnbyB0
byBsb29wIGJvZHkKLSAgICAKLSAgICAvLyBMb29wIHJlLWVudHJ5OgotICAgIC8vIFdlIGV4cGVj
dCBEUCB0byBwb2ludCBhdCAjMSBhbmQgZm9yICMxIHRvIGJlIG9mZnNldCBieSAtMTAwLgotICAg
IGNvZGUuYXBwZW5kKEFkZCk7Ci0gICAgY29kZS5hcHBlbmQoMTAwKTsKLSAgICAKLSAgICBjb2Rl
LmFwcGVuZChBZGREUCk7Ci0gICAgY29kZS5hcHBlbmQoLTEpOwotICAgIAotICAgIC8vIExvb3Ag
aGVhZGVyOgotICAgIC8vIFdlIGV4cGVjdCBEUCB0byBwb2ludCBhdCAjMC4KLSAgICBjb2RlLmFw
cGVuZChBZGREUCk7Ci0gICAgY29kZS5hcHBlbmQoMSk7Ci0gICAgCi0gICAgY29kZS5hcHBlbmQo
QWRkKTsKLSAgICBjb2RlLmFwcGVuZCgxKTsKLSAgICAKLSAgICBjb2RlLmFwcGVuZChQcmludCk7
Ci0gICAgCi0gICAgY29kZS5hcHBlbmQoQWRkKTsKLSAgICBjb2RlLmFwcGVuZCgtMTAwKTsKLSAg
ICAKLSAgICAvLyBXZSB3YW50IHRvIHN0b3AgaWYgaXQncyB6ZXJvIGFuZCBjb250aW51ZSBpZiBp
dCdzIG5vbi16ZXJvLiBBZGRDUCB0YWtlcyB0aGUgYnJhbmNoIGlmIGl0J3MKLSAgICAvLyBub24t
emVyby4KLSAgICBjb2RlLmFwcGVuZChBZGRDUCk7Ci0gICAgY29kZS5hcHBlbmQoLTExKTsgLy8g
Z28gdG8gbG9vcCByZS1lbnRyeS4KLSAgICAKLSAgICBjb2RlLmFwcGVuZChTdG9wKTsKLSAgICAK
LSAgICBpZiAoc2hvdWxkQmVWZXJib3NlKCkpCi0gICAgICAgIGRhdGFMb2coImNvZGUgPSAiLCBs
aXN0RHVtcChjb2RlKSwgIlxuIik7Ci0gICAgCi0gICAgQ0hFQ0soIWludm9rZTxpbnRwdHJfdD4o
KmludGVycHJldGVyLCBkYXRhLmRhdGEoKSwgY29kZS5kYXRhKCksICZzdHJlYW0pKTsKLSAgICAK
LSAgICBDSEVDSyhzdHJlYW0uc2l6ZSgpID09IDEwMCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IDEwMDsgKytpKQotICAgICAgICBDSEVDSyhzdHJlYW1baV0gPT0gaSArIDEpOwotICAg
IAotICAgIGlmIChzaG91bGRCZVZlcmJvc2UoKSkKLSAgICAgICAgZGF0YUxvZygic3RyZWFtID0g
IiwgbGlzdER1bXAoc3RyZWFtKSwgIlxuIik7Ci19Ci0KLXZvaWQgdGVzdFJlZHVjZVN0cmVuZ3Ro
Q2hlY2tCb3R0b21Vc2VJbkFub3RoZXJCbG9jaygpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0g
ICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBC
YXNpY0Jsb2NrKiBvbmUgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogdHdvID0g
cHJvYy5hZGRCbG9jaygpOwotICAgIAotICAgIENoZWNrVmFsdWUqIGNoZWNrID0gb25lLT5hcHBl
bmROZXc8Q2hlY2tWYWx1ZT4oCi0gICAgICAgIHByb2MsIENoZWNrLCBPcmlnaW4oKSwgb25lLT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpOwotICAgIGNoZWNrLT5z
ZXRHZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKLSAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVn
aXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKLQotICAgICAgICAgICAgaml0Lm1vdmUoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoNjY2KSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwot
ICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7Ci0gICAgICAgICAgICBqaXQu
cmV0KCk7Ci0gICAgICAgIH0pOwotICAgIFZhbHVlKiBhcmcgPSBvbmUtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAg
ICBvbmUtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4oKSwgRnJlcXVl
bnRlZEJsb2NrKHR3bykpOwotICAgIAotICAgIGNoZWNrID0gdHdvLT5hcHBlbmROZXc8Q2hlY2tW
YWx1ZT4oCi0gICAgICAgIHByb2MsIENoZWNrQWRkLCBPcmlnaW4oKSwgYXJnLAotICAgICAgICB0
d28tPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpOwotICAgIGNo
ZWNrLT5zZXRHZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewotICAgICAgICAgICAgQ0hFQ0soISJTaG91bGQgbm90
IGV4ZWN1dGUiKTsKLSAgICAgICAgfSk7Ci0gICAgdHdvLT5hcHBlbmROZXdDb250cm9sVmFsdWUo
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2hlY2spOwotICAgIAotICAgIHByb2MucmVzZXRSZWFj
aGFiaWxpdHkoKTsKLSAgICByZWR1Y2VTdHJlbmd0aChwcm9jKTsKLX0KLQotdm9pZCB0ZXN0UmVz
ZXRSZWFjaGFiaWxpdHlEYW5nbGluZ1JlZmVyZW5jZSgpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7
Ci0gICAgCi0gICAgQmFzaWNCbG9jayogb25lID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2lj
QmxvY2sqIHR3byA9IHByb2MuYWRkQmxvY2soKTsKLSAgICAKLSAgICBVcHNpbG9uVmFsdWUqIHVw
c2lsb24gPSBvbmUtPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KAotICAgICAgICBwcm9jLCBPcmln
aW4oKSwgb25lLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDIpKTsK
LSAgICBvbmUtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBPb3BzLCBPcmlnaW4oKSk7Ci0g
ICAgCi0gICAgVmFsdWUqIHBoaSA9IHR3by0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBQaGksIElu
dDMyLCBPcmlnaW4oKSk7Ci0gICAgdXBzaWxvbi0+c2V0UGhpKHBoaSk7Ci0gICAgdHdvLT5hcHBl
bmROZXdDb250cm9sVmFsdWUocHJvYywgT29wcywgT3JpZ2luKCkpOwotICAgIAotICAgIHByb2Mu
cmVzZXRSZWFjaGFiaWxpdHkoKTsKLSAgICB2YWxpZGF0ZShwcm9jKTsKLX0KLQotdm9pZCB0ZXN0
RW50cnlTd2l0Y2hTaW1wbGUoKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIHByb2Muc2V0
TnVtRW50cnlwb2ludHMoMyk7Ci0gICAgCi0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBvbmUgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFz
aWNCbG9jayogdHdvID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIHRocmVlID0g
cHJvYy5hZGRCbG9jaygpOwotICAgIAotICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
RW50cnlTd2l0Y2gsIE9yaWdpbigpKTsKLSAgICByb290LT5hcHBlbmRTdWNjZXNzb3IoRnJlcXVl
bnRlZEJsb2NrKG9uZSkpOwotICAgIHJvb3QtPmFwcGVuZFN1Y2Nlc3NvcihGcmVxdWVudGVkQmxv
Y2sodHdvKSk7Ci0gICAgcm9vdC0+YXBwZW5kU3VjY2Vzc29yKEZyZXF1ZW50ZWRCbG9jayh0aHJl
ZSkpOwotICAgIAotICAgIG9uZS0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgb25lLT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAg
ICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIG9uZS0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAotICAg
ICAgICAgICAgb25lLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKTsKLSAgICAKLSAgICB0d28tPmFwcGVuZE5ldzxWYWx1
ZT4oCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHR3by0+YXBwZW5k
TmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIFN1YiwgT3JpZ2luKCksCi0gICAgICAgICAg
ICB0d28tPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKSwKLSAgICAgICAgICAgIHR3by0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSk7Ci0gICAgCi0g
ICAgdGhyZWUtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksCi0gICAgICAgIHRocmVlLT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywg
TXVsLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHRocmVlLT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgICAg
ICB0aHJlZS0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjEpKSk7Ci0gICAgCi0gICAgcHJlcGFyZUZvckdlbmVyYXRpb24ocHJv
Yyk7Ci0gICAgCi0gICAgQ0NhbGxIZWxwZXJzIGppdDsKLSAgICBnZW5lcmF0ZShwcm9jLCBqaXQp
OwotICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcihqaXQsIG51bGxwdHIpOwotICAgIENvZGVMb2Nh
dGlvbkxhYmVsPEIzQ29tcGlsYXRpb25QdHJUYWc+IGxhYmVsT25lID0gbGlua0J1ZmZlci5sb2Nh
dGlvbk9mPEIzQ29tcGlsYXRpb25QdHJUYWc+KHByb2MuZW50cnlwb2ludExhYmVsKDApKTsKLSAg
ICBDb2RlTG9jYXRpb25MYWJlbDxCM0NvbXBpbGF0aW9uUHRyVGFnPiBsYWJlbFR3byA9IGxpbmtC
dWZmZXIubG9jYXRpb25PZjxCM0NvbXBpbGF0aW9uUHRyVGFnPihwcm9jLmVudHJ5cG9pbnRMYWJl
bCgxKSk7Ci0gICAgQ29kZUxvY2F0aW9uTGFiZWw8QjNDb21waWxhdGlvblB0clRhZz4gbGFiZWxU
aHJlZSA9IGxpbmtCdWZmZXIubG9jYXRpb25PZjxCM0NvbXBpbGF0aW9uUHRyVGFnPihwcm9jLmVu
dHJ5cG9pbnRMYWJlbCgyKSk7Ci0KLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8QjNDb21waWxh
dGlvblB0clRhZz4gY29kZVJlZiA9IEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgQjNDb21waWxh
dGlvblB0clRhZywgInRlc3RiMyBjb21waWxhdGlvbiIpOwotCi0gICAgQ0hFQ0soaW52b2tlPGlu
dD4obGFiZWxPbmUsIDEsIDIpID09IDMpOwotICAgIENIRUNLKGludm9rZTxpbnQ+KGxhYmVsVHdv
LCAxLCAyKSA9PSAtMSk7Ci0gICAgQ0hFQ0soaW52b2tlPGludD4obGFiZWxUaHJlZSwgMSwgMikg
PT0gMik7Ci0gICAgQ0hFQ0soaW52b2tlPGludD4obGFiZWxPbmUsIC0xLCAyKSA9PSAxKTsKLSAg
ICBDSEVDSyhpbnZva2U8aW50PihsYWJlbFR3bywgLTEsIDIpID09IC0zKTsKLSAgICBDSEVDSyhp
bnZva2U8aW50PihsYWJlbFRocmVlLCAtMSwgMikgPT0gLTIpOwotfQotCi12b2lkIHRlc3RFbnRy
eVN3aXRjaE5vRW50cnlTd2l0Y2goKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIHByb2Mu
c2V0TnVtRW50cnlwb2ludHMoMyk7Ci0gICAgCi0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICAKLSAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAot
ICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpOwotICAgIAotICAgIHByZXBhcmVG
b3JHZW5lcmF0aW9uKHByb2MpOwotICAgIAotICAgIENDYWxsSGVscGVycyBqaXQ7Ci0gICAgZ2Vu
ZXJhdGUocHJvYywgaml0KTsKLSAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBudWxscHRy
KTsKLSAgICBDb2RlTG9jYXRpb25MYWJlbDxCM0NvbXBpbGF0aW9uUHRyVGFnPiBsYWJlbE9uZSA9
IGxpbmtCdWZmZXIubG9jYXRpb25PZjxCM0NvbXBpbGF0aW9uUHRyVGFnPihwcm9jLmVudHJ5cG9p
bnRMYWJlbCgwKSk7Ci0gICAgQ29kZUxvY2F0aW9uTGFiZWw8QjNDb21waWxhdGlvblB0clRhZz4g
bGFiZWxUd28gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8QjNDb21waWxhdGlvblB0clRhZz4ocHJv
Yy5lbnRyeXBvaW50TGFiZWwoMSkpOwotICAgIENvZGVMb2NhdGlvbkxhYmVsPEIzQ29tcGlsYXRp
b25QdHJUYWc+IGxhYmVsVGhyZWUgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8QjNDb21waWxhdGlv
blB0clRhZz4ocHJvYy5lbnRyeXBvaW50TGFiZWwoMikpOwotCi0gICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEIzQ29tcGlsYXRpb25QdHJUYWc+IGNvZGVSZWYgPSBGSU5BTElaRV9DT0RFKGxpbmtC
dWZmZXIsIEIzQ29tcGlsYXRpb25QdHJUYWcsICJ0ZXN0YjMgY29tcGlsYXRpb24iKTsKLQotICAg
IENIRUNLX0VRKGludm9rZTxpbnQ+KGxhYmVsT25lLCAxLCAyKSwgMyk7Ci0gICAgQ0hFQ0tfRVEo
aW52b2tlPGludD4obGFiZWxUd28sIDEsIDIpLCAzKTsKLSAgICBDSEVDS19FUShpbnZva2U8aW50
PihsYWJlbFRocmVlLCAxLCAyKSwgMyk7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxP
bmUsIC0xLCAyKSwgMSk7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUd28sIC0xLCAy
KSwgMSk7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUaHJlZSwgLTEsIDIpLCAxKTsK
LX0KLQotdm9pZCB0ZXN0RW50cnlTd2l0Y2hXaXRoQ29tbW9uUGF0aHMoKQotewotICAgIFByb2Nl
ZHVyZSBwcm9jOwotICAgIHByb2Muc2V0TnVtRW50cnlwb2ludHMoMyk7Ci0gICAgCi0gICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBvbmUgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogdHdvID0gcHJvYy5hZGRCbG9jaygpOwot
ICAgIEJhc2ljQmxvY2sqIHRocmVlID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sq
IGVuZCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICAKLSAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEVudHJ5U3dpdGNoLCBPcmlnaW4oKSk7Ci0gICAgcm9vdC0+YXBwZW5kU3VjY2Vzc29y
KEZyZXF1ZW50ZWRCbG9jayhvbmUpKTsKLSAgICByb290LT5hcHBlbmRTdWNjZXNzb3IoRnJlcXVl
bnRlZEJsb2NrKHR3bykpOwotICAgIHJvb3QtPmFwcGVuZFN1Y2Nlc3NvcihGcmVxdWVudGVkQmxv
Y2sodGhyZWUpKTsKLSAgICAKLSAgICBVcHNpbG9uVmFsdWUqIHVwc2lsb25PbmUgPSBvbmUtPmFw
cGVuZE5ldzxVcHNpbG9uVmFsdWU+KAotICAgICAgICBwcm9jLCBPcmlnaW4oKSwKLSAgICAgICAg
b25lLT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwK
LSAgICAgICAgICAgIG9uZS0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9j
LCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgb25lLT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAotICAg
ICAgICAgICAgb25lLT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIFRy
dW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICBvbmUtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpKTsKLSAgICBv
bmUtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSnVtcCwgT3JpZ2luKCkpOwotICAgIG9uZS0+c2V0
U3VjY2Vzc29ycyhGcmVxdWVudGVkQmxvY2soZW5kKSk7Ci0gICAgCi0gICAgVXBzaWxvblZhbHVl
KiB1cHNpbG9uVHdvID0gdHdvLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPigKLSAgICAgICAgcHJv
YywgT3JpZ2luKCksCi0gICAgICAgIHR3by0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAg
IHByb2MsIFN1YiwgT3JpZ2luKCksCi0gICAgICAgICAgICB0d28tPmFwcGVuZE5ldzxWYWx1ZT4o
Ci0gICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgICAg
IHR3by0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApKSwKLSAgICAgICAgICAgIHR3by0+YXBwZW5kTmV3PFZhbHVlPigKLSAg
ICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgdHdv
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMSkpKSk7Ci0gICAgdHdvLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEp1bXAsIE9y
aWdpbigpKTsKLSAgICB0d28tPnNldFN1Y2Nlc3NvcnMoRnJlcXVlbnRlZEJsb2NrKGVuZCkpOwot
ICAgIAotICAgIFVwc2lsb25WYWx1ZSogdXBzaWxvblRocmVlID0gdGhyZWUtPmFwcGVuZE5ldzxV
cHNpbG9uVmFsdWU+KAotICAgICAgICBwcm9jLCBPcmlnaW4oKSwKLSAgICAgICAgdGhyZWUtPmFw
cGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBNdWwsIE9yaWdpbigpLAotICAgICAg
ICAgICAgdGhyZWUtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgVHJ1
bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHRocmVlLT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAotICAgICAg
ICAgICAgdGhyZWUtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgVHJ1
bmMsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHRocmVlLT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKSk7Ci0gICAg
dGhyZWUtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSnVtcCwgT3JpZ2luKCkpOwotICAgIHRocmVl
LT5zZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9jayhlbmQpKTsKLSAgICAKLSAgICBWYWx1ZSog
cGhpID0gZW5kLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFBoaSwgSW50MzIsIE9yaWdpbigpKTsK
LSAgICB1cHNpbG9uT25lLT5zZXRQaGkocGhpKTsKLSAgICB1cHNpbG9uVHdvLT5zZXRQaGkocGhp
KTsKLSAgICB1cHNpbG9uVGhyZWUtPnNldFBoaShwaGkpOwotICAgIAotICAgIGVuZC0+YXBwZW5k
TmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgZW5k
LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgY2hpbGwoTW9kKSwgT3JpZ2lu
KCksCi0gICAgICAgICAgICBwaGksIGVuZC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAg
ICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgZW5kLT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MikpKSk7Ci0gICAgCi0gICAgcHJlcGFyZUZvckdlbmVyYXRpb24ocHJvYyk7Ci0gICAgCi0gICAg
Q0NhbGxIZWxwZXJzIGppdDsKLSAgICBnZW5lcmF0ZShwcm9jLCBqaXQpOwotICAgIExpbmtCdWZm
ZXIgbGlua0J1ZmZlcihqaXQsIG51bGxwdHIpOwotICAgIENvZGVMb2NhdGlvbkxhYmVsPEIzQ29t
cGlsYXRpb25QdHJUYWc+IGxhYmVsT25lID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEIzQ29tcGls
YXRpb25QdHJUYWc+KHByb2MuZW50cnlwb2ludExhYmVsKDApKTsKLSAgICBDb2RlTG9jYXRpb25M
YWJlbDxCM0NvbXBpbGF0aW9uUHRyVGFnPiBsYWJlbFR3byA9IGxpbmtCdWZmZXIubG9jYXRpb25P
ZjxCM0NvbXBpbGF0aW9uUHRyVGFnPihwcm9jLmVudHJ5cG9pbnRMYWJlbCgxKSk7Ci0gICAgQ29k
ZUxvY2F0aW9uTGFiZWw8QjNDb21waWxhdGlvblB0clRhZz4gbGFiZWxUaHJlZSA9IGxpbmtCdWZm
ZXIubG9jYXRpb25PZjxCM0NvbXBpbGF0aW9uUHRyVGFnPihwcm9jLmVudHJ5cG9pbnRMYWJlbCgy
KSk7Ci0KLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8QjNDb21waWxhdGlvblB0clRhZz4gY29k
ZVJlZiA9IEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgQjNDb21waWxhdGlvblB0clRhZywgInRl
c3RiMyBjb21waWxhdGlvbiIpOwotCi0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxPbmUs
IDEsIDIsIDEwKSwgMyk7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUd28sIDEsIDIs
IDEwKSwgLTEpOwotICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KGxhYmVsVGhyZWUsIDEsIDIsIDEw
KSwgMik7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxPbmUsIC0xLCAyLCAxMCksIDEp
OwotICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KGxhYmVsVHdvLCAtMSwgMiwgMTApLCAtMyk7Ci0g
ICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUaHJlZSwgLTEsIDIsIDEwKSwgLTIpOwotICAg
IENIRUNLX0VRKGludm9rZTxpbnQ+KGxhYmVsT25lLCAxLCAyLCAyKSwgMSk7Ci0gICAgQ0hFQ0tf
RVEoaW52b2tlPGludD4obGFiZWxUd28sIDEsIDIsIDIpLCAtMSk7Ci0gICAgQ0hFQ0tfRVEoaW52
b2tlPGludD4obGFiZWxUaHJlZSwgMSwgMiwgMiksIDApOwotICAgIENIRUNLX0VRKGludm9rZTxp
bnQ+KGxhYmVsT25lLCAtMSwgMiwgMiksIDEpOwotICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KGxh
YmVsVHdvLCAtMSwgMiwgMiksIC0xKTsKLSAgICBDSEVDS19FUShpbnZva2U8aW50PihsYWJlbFRo
cmVlLCAtMSwgMiwgMiksIDApOwotICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KGxhYmVsT25lLCAx
LCAyLCAwKSwgMCk7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUd28sIDEsIDIsIDAp
LCAwKTsKLSAgICBDSEVDS19FUShpbnZva2U8aW50PihsYWJlbFRocmVlLCAxLCAyLCAwKSwgMCk7
Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxPbmUsIC0xLCAyLCAwKSwgMCk7Ci0gICAg
Q0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUd28sIC0xLCAyLCAwKSwgMCk7Ci0gICAgQ0hFQ0tf
RVEoaW52b2tlPGludD4obGFiZWxUaHJlZSwgLTEsIDIsIDApLCAwKTsKLX0KLQotdm9pZCB0ZXN0
RW50cnlTd2l0Y2hXaXRoQ29tbW9uUGF0aHNBbmROb25Ucml2aWFsRW50cnlwb2ludCgpCi17Ci0g
ICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgcHJvYy5zZXROdW1FbnRyeXBvaW50cygzKTsKLSAgICAK
LSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sq
IG5lZ2F0ZSA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBkaXNwYXRjaCA9IHBy
b2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBvbmUgPSBwcm9jLmFkZEJsb2NrKCk7Ci0g
ICAgQmFzaWNCbG9jayogdHdvID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIHRo
cmVlID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGVuZCA9IHByb2MuYWRkQmxv
Y2soKTsKLQotICAgIFVwc2lsb25WYWx1ZSogdXBzaWxvbkJhc2UgPSByb290LT5hcHBlbmROZXc8
VXBzaWxvblZhbHVlPigKLSAgICAgICAgcHJvYywgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCi0gICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCkpKTsKLSAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBw
cm9jLCBCcmFuY2gsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAot
ICAgICAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIzKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgMHhmZikpKTsKLSAgICByb290LT5zZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRC
bG9jayhuZWdhdGUpLCBGcmVxdWVudGVkQmxvY2soZGlzcGF0Y2gpKTsKLSAgICAKLSAgICBVcHNp
bG9uVmFsdWUqIHVwc2lsb25OZWdhdGUgPSBuZWdhdGUtPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+
KAotICAgICAgICBwcm9jLCBPcmlnaW4oKSwKLSAgICAgICAgbmVnYXRlLT5hcHBlbmROZXc8VmFs
dWU+KAotICAgICAgICAgICAgcHJvYywgTmVnLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIG5lZ2F0
ZS0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2lu
KCksCi0gICAgICAgICAgICAgICAgbmVnYXRlLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSk7Ci0gICAgbmVnYXRlLT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEp1bXAsIE9yaWdpbigpKTsKLSAgICBuZWdhdGUtPnNldFN1
Y2Nlc3NvcnMoRnJlcXVlbnRlZEJsb2NrKGRpc3BhdGNoKSk7Ci0gICAgCi0gICAgVmFsdWUqIGFy
ZzAgPSBkaXNwYXRjaC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBQaGksIEludDMyLCBPcmlnaW4o
KSk7Ci0gICAgdXBzaWxvbkJhc2UtPnNldFBoaShhcmcwKTsKLSAgICB1cHNpbG9uTmVnYXRlLT5z
ZXRQaGkoYXJnMCk7Ci0gICAgZGlzcGF0Y2gtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRW50cnlT
d2l0Y2gsIE9yaWdpbigpKTsKLSAgICBkaXNwYXRjaC0+YXBwZW5kU3VjY2Vzc29yKEZyZXF1ZW50
ZWRCbG9jayhvbmUpKTsKLSAgICBkaXNwYXRjaC0+YXBwZW5kU3VjY2Vzc29yKEZyZXF1ZW50ZWRC
bG9jayh0d28pKTsKLSAgICBkaXNwYXRjaC0+YXBwZW5kU3VjY2Vzc29yKEZyZXF1ZW50ZWRCbG9j
ayh0aHJlZSkpOwotICAgIAotICAgIFVwc2lsb25WYWx1ZSogdXBzaWxvbk9uZSA9IG9uZS0+YXBw
ZW5kTmV3PFVwc2lsb25WYWx1ZT4oCi0gICAgICAgIHByb2MsIE9yaWdpbigpLAotICAgICAgICBv
bmUtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAot
ICAgICAgICAgICAgYXJnMCwgb25lLT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAg
IHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICBvbmUtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkp
KTsKLSAgICBvbmUtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSnVtcCwgT3JpZ2luKCkpOwotICAg
IG9uZS0+c2V0U3VjY2Vzc29ycyhGcmVxdWVudGVkQmxvY2soZW5kKSk7Ci0gICAgCi0gICAgVXBz
aWxvblZhbHVlKiB1cHNpbG9uVHdvID0gdHdvLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPigKLSAg
ICAgICAgcHJvYywgT3JpZ2luKCksCi0gICAgICAgIHR3by0+YXBwZW5kTmV3PFZhbHVlPigKLSAg
ICAgICAgICAgIHByb2MsIFN1YiwgT3JpZ2luKCksCi0gICAgICAgICAgICBhcmcwLCB0d28tPmFw
cGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAot
ICAgICAgICAgICAgICAgIHR3by0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSkpOwotICAgIHR3by0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBKdW1wLCBPcmlnaW4oKSk7Ci0gICAgdHdvLT5zZXRTdWNjZXNzb3JzKEZyZXF1
ZW50ZWRCbG9jayhlbmQpKTsKLSAgICAKLSAgICBVcHNpbG9uVmFsdWUqIHVwc2lsb25UaHJlZSA9
IHRocmVlLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPigKLSAgICAgICAgcHJvYywgT3JpZ2luKCks
Ci0gICAgICAgIHRocmVlLT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgTXVs
LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIGFyZzAsIHRocmVlLT5hcHBlbmROZXc8VmFsdWU+KAot
ICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICB0
aHJlZS0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEpKSkpOwotICAgIHRocmVlLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEp1
bXAsIE9yaWdpbigpKTsKLSAgICB0aHJlZS0+c2V0U3VjY2Vzc29ycyhGcmVxdWVudGVkQmxvY2so
ZW5kKSk7Ci0gICAgCi0gICAgVmFsdWUqIHBoaSA9IGVuZC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBQaGksIEludDMyLCBPcmlnaW4oKSk7Ci0gICAgdXBzaWxvbk9uZS0+c2V0UGhpKHBoaSk7Ci0g
ICAgdXBzaWxvblR3by0+c2V0UGhpKHBoaSk7Ci0gICAgdXBzaWxvblRocmVlLT5zZXRQaGkocGhp
KTsKLSAgICAKLSAgICBlbmQtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCi0gICAgICAgIGVuZC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAg
IHByb2MsIGNoaWxsKE1vZCksIE9yaWdpbigpLAotICAgICAgICAgICAgcGhpLCBlbmQtPmFwcGVu
ZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAg
ICAgICAgICAgICAgIGVuZC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpKSkpOwotICAgIAotICAgIHByZXBhcmVGb3JHZW5l
cmF0aW9uKHByb2MpOwotICAgIAotICAgIENDYWxsSGVscGVycyBqaXQ7Ci0gICAgZ2VuZXJhdGUo
cHJvYywgaml0KTsKLSAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBudWxscHRyKTsKLSAg
ICBDb2RlTG9jYXRpb25MYWJlbDxCM0NvbXBpbGF0aW9uUHRyVGFnPiBsYWJlbE9uZSA9IGxpbmtC
dWZmZXIubG9jYXRpb25PZjxCM0NvbXBpbGF0aW9uUHRyVGFnPihwcm9jLmVudHJ5cG9pbnRMYWJl
bCgwKSk7Ci0gICAgQ29kZUxvY2F0aW9uTGFiZWw8QjNDb21waWxhdGlvblB0clRhZz4gbGFiZWxU
d28gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8QjNDb21waWxhdGlvblB0clRhZz4ocHJvYy5lbnRy
eXBvaW50TGFiZWwoMSkpOwotICAgIENvZGVMb2NhdGlvbkxhYmVsPEIzQ29tcGlsYXRpb25QdHJU
YWc+IGxhYmVsVGhyZWUgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8QjNDb21waWxhdGlvblB0clRh
Zz4ocHJvYy5lbnRyeXBvaW50TGFiZWwoMikpOwotCi0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEIzQ29tcGlsYXRpb25QdHJUYWc+IGNvZGVSZWYgPSBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIs
IEIzQ29tcGlsYXRpb25QdHJUYWcsICJ0ZXN0YjMgY29tcGlsYXRpb24iKTsKLQotICAgIENIRUNL
X0VRKGludm9rZTxpbnQ+KGxhYmVsT25lLCAxLCAyLCAxMCwgZmFsc2UpLCAzKTsKLSAgICBDSEVD
S19FUShpbnZva2U8aW50PihsYWJlbFR3bywgMSwgMiwgMTAsIGZhbHNlKSwgLTEpOwotICAgIENI
RUNLX0VRKGludm9rZTxpbnQ+KGxhYmVsVGhyZWUsIDEsIDIsIDEwLCBmYWxzZSksIDIpOwotICAg
IENIRUNLX0VRKGludm9rZTxpbnQ+KGxhYmVsT25lLCAtMSwgMiwgMTAsIGZhbHNlKSwgMSk7Ci0g
ICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUd28sIC0xLCAyLCAxMCwgZmFsc2UpLCAtMyk7
Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUaHJlZSwgLTEsIDIsIDEwLCBmYWxzZSks
IC0yKTsKLSAgICBDSEVDS19FUShpbnZva2U8aW50PihsYWJlbE9uZSwgMSwgMiwgMTAsIHRydWUp
LCAxKTsKLSAgICBDSEVDS19FUShpbnZva2U8aW50PihsYWJlbFR3bywgMSwgMiwgMTAsIHRydWUp
LCAtMyk7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUaHJlZSwgMSwgMiwgMTAsIHRy
dWUpLCAtMik7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxPbmUsIC0xLCAyLCAxMCwg
dHJ1ZSksIDMpOwotICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KGxhYmVsVHdvLCAtMSwgMiwgMTAs
IHRydWUpLCAtMSk7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUaHJlZSwgLTEsIDIs
IDEwLCB0cnVlKSwgMik7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxPbmUsIDEsIDIs
IDIsIGZhbHNlKSwgMSk7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUd28sIDEsIDIs
IDIsIGZhbHNlKSwgLTEpOwotICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KGxhYmVsVGhyZWUsIDEs
IDIsIDIsIGZhbHNlKSwgMCk7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxPbmUsIC0x
LCAyLCAyLCBmYWxzZSksIDEpOwotICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KGxhYmVsVHdvLCAt
MSwgMiwgMiwgZmFsc2UpLCAtMSk7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUaHJl
ZSwgLTEsIDIsIDIsIGZhbHNlKSwgMCk7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxP
bmUsIDEsIDIsIDAsIGZhbHNlKSwgMCk7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxU
d28sIDEsIDIsIDAsIGZhbHNlKSwgMCk7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxU
aHJlZSwgMSwgMiwgMCwgZmFsc2UpLCAwKTsKLSAgICBDSEVDS19FUShpbnZva2U8aW50PihsYWJl
bE9uZSwgLTEsIDIsIDAsIGZhbHNlKSwgMCk7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFi
ZWxUd28sIC0xLCAyLCAwLCBmYWxzZSksIDApOwotICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KGxh
YmVsVGhyZWUsIC0xLCAyLCAwLCBmYWxzZSksIDApOwotfQotCi12b2lkIHRlc3RFbnRyeVN3aXRj
aExvb3AoKQotewotICAgIC8vIFRoaXMgaXMgYSBjb21wbGV0ZWx5IGFic3VyZCB1c2Ugb2YgRW50
cnlTd2l0Y2gsIHdoZXJlIGl0IGltcGFjdHMgdGhlIGxvb3AgY29uZGl0aW9uLiBUaGlzCi0gICAg
Ly8gc2hvdWxkIGNhdXNlIGR1cGxpY2F0aW9uIG9mIGVpdGhlciBuZWFybHkgdGhlIGVudGlyZSBQ
cm9jZWR1cmUuIEF0IHRpbWUgb2Ygd3JpdGluZywgd2UgZW5kZWQKLSAgICAvLyB1cCBkdXBsaWNh
dGluZyBhbGwgb2YgaXQsIHdoaWNoIGlzIGZpbmUuIEl0J3MgaW1wb3J0YW50IHRvIHRlc3QgdGhp
cyBjYXNlLCB0byBtYWtlIHN1cmUgdGhhdAotICAgIC8vIHRoZSBkdXBsaWNhdGlvbiBhbGdvcml0
aG0gY2FuIGhhbmRsZSBpbnRlcmVzdGluZyBjb250cm9sIGZsb3cuCi0gICAgCi0gICAgUHJvY2Vk
dXJlIHByb2M7Ci0gICAgcHJvYy5zZXROdW1FbnRyeXBvaW50cygyKTsKLSAgICAKLSAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGxvb3BIZWFk
ZXIgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogbG9vcEZvb3RlciA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBlbmQgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAg
ICBVcHNpbG9uVmFsdWUqIGluaXRpYWxWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxVcHNpbG9uVmFs
dWU+KAotICAgICAgICBwcm9jLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAg
ICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSkpOwotICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSnVtcCwgT3JpZ2luKCkp
OwotICAgIHJvb3QtPnNldFN1Y2Nlc3NvcnMobG9vcEhlYWRlcik7Ci0gICAgCi0gICAgVmFsdWUq
IHZhbHVlSW5Mb29wID0gbG9vcEhlYWRlci0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBQaGksIElu
dDMyLCBPcmlnaW4oKSk7Ci0gICAgaW5pdGlhbFZhbHVlLT5zZXRQaGkodmFsdWVJbkxvb3ApOwot
ICAgIFZhbHVlKiBuZXdWYWx1ZSA9IGxvb3BIZWFkZXItPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAg
ICAgIHByb2MsIEFkZCwgT3JpZ2luKCksIHZhbHVlSW5Mb29wLAotICAgICAgICBsb29wSGVhZGVy
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpOwotICAgIGxvb3BI
ZWFkZXItPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRW50cnlTd2l0Y2gsIE9yaWdpbigpKTsKLSAg
ICBsb29wSGVhZGVyLT5hcHBlbmRTdWNjZXNzb3IoZW5kKTsKLSAgICBsb29wSGVhZGVyLT5hcHBl
bmRTdWNjZXNzb3IobG9vcEZvb3Rlcik7Ci0gICAgCi0gICAgbG9vcEZvb3Rlci0+YXBwZW5kTmV3
PFVwc2lsb25WYWx1ZT4ocHJvYywgT3JpZ2luKCksIG5ld1ZhbHVlLCB2YWx1ZUluTG9vcCk7Ci0g
ICAgbG9vcEZvb3Rlci0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgQnJhbmNoLCBP
cmlnaW4oKSwKLSAgICAgICAgbG9vcEZvb3Rlci0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAg
ICAgIHByb2MsIExlc3NUaGFuLCBPcmlnaW4oKSwgbmV3VmFsdWUsCi0gICAgICAgICAgICBsb29w
Rm9vdGVyLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMTAwKSkpOwot
ICAgIGxvb3BGb290ZXItPnNldFN1Y2Nlc3NvcnMobG9vcEhlYWRlciwgZW5kKTsKLSAgICAKLSAg
ICBlbmQtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgbmV3VmFsdWUp
OwotICAgIAotICAgIHByZXBhcmVGb3JHZW5lcmF0aW9uKHByb2MpOwotICAgIAotICAgIENDYWxs
SGVscGVycyBqaXQ7Ci0gICAgZ2VuZXJhdGUocHJvYywgaml0KTsKLSAgICBMaW5rQnVmZmVyIGxp
bmtCdWZmZXIoaml0LCBudWxscHRyKTsKLSAgICBDb2RlTG9jYXRpb25MYWJlbDxCM0NvbXBpbGF0
aW9uUHRyVGFnPiBsYWJlbE9uZSA9IGxpbmtCdWZmZXIubG9jYXRpb25PZjxCM0NvbXBpbGF0aW9u
UHRyVGFnPihwcm9jLmVudHJ5cG9pbnRMYWJlbCgwKSk7Ci0gICAgQ29kZUxvY2F0aW9uTGFiZWw8
QjNDb21waWxhdGlvblB0clRhZz4gbGFiZWxUd28gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8QjND
b21waWxhdGlvblB0clRhZz4ocHJvYy5lbnRyeXBvaW50TGFiZWwoMSkpOwotCi0gICAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEIzQ29tcGlsYXRpb25QdHJUYWc+IGNvZGVSZWYgPSBGSU5BTElaRV9D
T0RFKGxpbmtCdWZmZXIsIEIzQ29tcGlsYXRpb25QdHJUYWcsICJ0ZXN0YjMgY29tcGlsYXRpb24i
KTsKLQotICAgIENIRUNLKGludm9rZTxpbnQ+KGxhYmVsT25lLCAwKSA9PSAxKTsKLSAgICBDSEVD
SyhpbnZva2U8aW50PihsYWJlbE9uZSwgNDIpID09IDQzKTsKLSAgICBDSEVDSyhpbnZva2U8aW50
PihsYWJlbE9uZSwgMTAwMCkgPT0gMTAwMSk7Ci0gICAgCi0gICAgQ0hFQ0soaW52b2tlPGludD4o
bGFiZWxUd28sIDApID09IDEwMCk7Ci0gICAgQ0hFQ0soaW52b2tlPGludD4obGFiZWxUd28sIDQy
KSA9PSAxMDApOwotICAgIENIRUNLKGludm9rZTxpbnQ+KGxhYmVsVHdvLCAxMDAwKSA9PSAxMDAx
KTsKLX0KLQotdm9pZCB0ZXN0U29tZUVhcmx5UmVnaXN0ZXIoKQotewotICAgIGF1dG8gcnVuID0g
WyZdIChib29sIHN1Y2NlZWQpIHsKLSAgICAgICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIAot
ICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgICAgICAKLSAg
ICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNo
cG9pbnRWYWx1ZT4ocHJvYywgSW50MzIsIE9yaWdpbigpKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+
cmVzdWx0Q29uc3RyYWludCA9IFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIp
OwotICAgICAgICBib29sIHJhbkZpcnN0UGF0Y2hwb2ludCA9IGZhbHNlOwotICAgICAgICBwYXRj
aHBvaW50LT5zZXRHZW5lcmF0b3IoCi0gICAgICAgICAgICBbJl0gKENDYWxsSGVscGVycyYsIGNv
bnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICAgICAg
Q0hFQ0socGFyYW1zWzBdLmdwcigpID09IEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKLSAgICAg
ICAgICAgICAgICByYW5GaXJzdFBhdGNocG9pbnQgPSB0cnVlOwotICAgICAgICAgICAgfSk7Ci0g
ICAgICAgIAotICAgICAgICBWYWx1ZSogYXJnID0gcGF0Y2hwb2ludDsKLSAgICAgICAgCi0gICAg
ICAgIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBJ
bnQzMiwgT3JpZ2luKCkpOwotICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIo
YXJnKTsKLSAgICAgICAgaWYgKHN1Y2NlZWQpCi0gICAgICAgICAgICBwYXRjaHBvaW50LT5yZXN1
bHRDb25zdHJhaW50ID0gVmFsdWVSZXA6OlNvbWVFYXJseVJlZ2lzdGVyOwotICAgICAgICBib29s
IHJhblNlY29uZFBhdGNocG9pbnQgPSBmYWxzZTsKLSAgICAgICAgdW5zaWduZWQgb3B0TGV2ZWwg
PSBwcm9jLm9wdExldmVsKCk7Ci0gICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKLSAg
ICAgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAgICAgICBpZiAoc3VjY2VlZCkKLSAgICAgICAgICAg
ICAgICAgICAgQ0hFQ0socGFyYW1zWzBdLmdwcigpICE9IHBhcmFtc1sxXS5ncHIoKSk7Ci0gICAg
ICAgICAgICAgICAgZWxzZSBpZiAob3B0TGV2ZWwgPiAxKQotICAgICAgICAgICAgICAgICAgICBD
SEVDSyhwYXJhbXNbMF0uZ3ByKCkgPT0gcGFyYW1zWzFdLmdwcigpKTsKLSAgICAgICAgICAgICAg
ICByYW5TZWNvbmRQYXRjaHBvaW50ID0gdHJ1ZTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAK
LSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBw
YXRjaHBvaW50KTsKLSAgICAgICAgCi0gICAgICAgIGNvbXBpbGVQcm9jKHByb2MpOwotICAgICAg
ICBDSEVDSyhyYW5GaXJzdFBhdGNocG9pbnQpOwotICAgICAgICBDSEVDSyhyYW5TZWNvbmRQYXRj
aHBvaW50KTsKLSAgICB9OwotICAgIAotICAgIHJ1bih0cnVlKTsKLSAgICBydW4oZmFsc2UpOwot
fQotCi12b2lkIHRlc3RCcmFuY2hCaXRBbmRJbW1GdXNpb24oCi0gICAgQjM6Ok9wY29kZSB2YWx1
ZU1vZGlmaWVyLCBUeXBlIHZhbHVlVHlwZSwgaW50NjRfdCBjb25zdGFudCwKLSAgICBBaXI6Ok9w
Y29kZSBleHBlY3RlZE9wY29kZSwgQWlyOjpBcmc6OktpbmQgZmlyc3RLaW5kKQotewotICAgIC8v
IEN1cnJlbnRseSB0aGlzIHRlc3Qgc2hvdWxkIHBhc3Mgb24gYWxsIENQVXMuIEJ1dCBzb21lIENQ
VXMgbWF5IG5vdCBzdXBwb3J0IHRoaXMgZnVzZWQKLSAgICAvLyBpbnN0cnVjdGlvbi4gSXQncyBP
SyB0byBza2lwIHRoaXMgdGVzdCBvbiB0aG9zZSBDUFVzLgotICAgIAotICAgIFByb2NlZHVyZSBw
cm9jOwotICAgIAotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAg
QmFzaWNCbG9jayogb25lID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIHR3byA9
IHByb2MuYWRkQmxvY2soKTsKLSAgICAKLSAgICBWYWx1ZSogbGVmdCA9IHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKLSAgICAKLSAgICBpZiAodmFsdWVNb2RpZmllciAhPSBJZGVudGl0eSkgewotICAgICAgICBp
ZiAoTWVtb3J5VmFsdWU6OmFjY2VwdHModmFsdWVNb2RpZmllcikpCi0gICAgICAgICAgICBsZWZ0
ID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCB2YWx1ZU1vZGlmaWVyLCB2YWx1
ZVR5cGUsIE9yaWdpbigpLCBsZWZ0KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbGVmdCA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgdmFsdWVNb2RpZmllciwgdmFsdWVUeXBlLCBP
cmlnaW4oKSwgbGVmdCk7Ci0gICAgfQotICAgIAotICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
Ci0gICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBsZWZ0LAotICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHZhbHVlVHlw
ZSwgY29uc3RhbnQpKSk7Ci0gICAgcm9vdC0+c2V0U3VjY2Vzc29ycyhGcmVxdWVudGVkQmxvY2so
b25lKSwgRnJlcXVlbnRlZEJsb2NrKHR3bykpOwotICAgIAotICAgIG9uZS0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBPb3BzLCBPcmlnaW4oKSk7Ci0gICAgdHdvLT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIE9vcHMsIE9yaWdpbigpKTsKLQotICAgIGxvd2VyVG9BaXJGb3JUZXN0aW5nKHByb2MpOwot
Ci0gICAgLy8gVGhlIGZpcnN0IGJhc2ljIGJsb2NrIG11c3QgZW5kIGluIGEgQnJhbmNoVGVzdDY0
KHJlc0NvbmQsIHRtcCwgYml0SW1tKS4KLSAgICBBaXI6Okluc3QgdGVybWluYWwgPSBwcm9jLmNv
ZGUoKVswXS0+bGFzdCgpOwotICAgIENIRUNLX0VRKHRlcm1pbmFsLmtpbmQub3Bjb2RlLCBleHBl
Y3RlZE9wY29kZSk7Ci0gICAgQ0hFQ0tfRVEodGVybWluYWwuYXJnc1swXS5raW5kKCksIEFpcjo6
QXJnOjpSZXNDb25kKTsKLSAgICBDSEVDS19FUSh0ZXJtaW5hbC5hcmdzWzFdLmtpbmQoKSwgZmly
c3RLaW5kKTsKLSAgICBDSEVDSyh0ZXJtaW5hbC5hcmdzWzJdLmtpbmQoKSA9PSBBaXI6OkFyZzo6
Qml0SW1tIHx8IHRlcm1pbmFsLmFyZ3NbMl0ua2luZCgpID09IEFpcjo6QXJnOjpCaXRJbW02NCk7
Ci19Ci0KLXZvaWQgdGVzdFRlcm1pbmFsUGF0Y2hwb2ludFRoYXROZWVkc1RvQmVTcGlsbGVkKCkK
LXsKLSAgICAvLyBUaGlzIGlzIGEgdW5pdCB0ZXN0IGZvciBob3cgRlRMJ3MgaGVhcCBhbGxvY2F0
aW9uIGZhc3QgcGF0aHMgYmVoYXZlLgotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIAotICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogc3VjY2Vz
cyA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBzbG93UGF0aCA9IHByb2MuYWRk
QmxvY2soKTsKLSAgICAKLSAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5h
cHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBJbnQzMiwgT3JpZ2luKCkpOwotICAgIHBh
dGNocG9pbnQtPmVmZmVjdHMudGVybWluYWwgPSB0cnVlOwotICAgIHBhdGNocG9pbnQtPmNsb2Ji
ZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKLSAgICAKLSAgICByb290
LT5hcHBlbmRTdWNjZXNzb3Ioc3VjY2Vzcyk7Ci0gICAgcm9vdC0+YXBwZW5kU3VjY2Vzc29yKEZy
ZXF1ZW50ZWRCbG9jayhzbG93UGF0aCwgRnJlcXVlbmN5Q2xhc3M6OlJhcmUpKTsKLSAgICAKLSAg
ICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAg
ICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAg
ICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMig0MiksIHBhcmFtc1sw
XS5ncHIoKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBq
dW1wVG9TdWNjZXNzOwotICAgICAgICAgICAgaWYgKCFwYXJhbXMuZmFsbHNUaHJvdWdoVG9TdWNj
ZXNzb3IoMCkpCi0gICAgICAgICAgICAgICAganVtcFRvU3VjY2VzcyA9IGppdC5qdW1wKCk7Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIFZlY3RvcjxCb3g8Q0NhbGxIZWxwZXJzOjpMYWJlbD4+
IGxhYmVscyA9IHBhcmFtcy5zdWNjZXNzb3JMYWJlbHMoKTsKLSAgICAgICAgICAgIAotICAgICAg
ICAgICAgcGFyYW1zLmFkZExhdGVQYXRoKAotICAgICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxw
ZXJzJiBqaXQpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGp1bXBUb1N1Y2Nlc3MuaXNTZXQo
KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGp1bXBUb1N1Y2Nlc3MubGlua1RvKCpsYWJlbHNb
MF0sICZqaXQpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICAKLSAgICBW
ZWN0b3I8VmFsdWUqPiBhcmdzOwotICAgIHsKLSAgICAgICAgUmVnaXN0ZXJTZXQgZmlsbEFsbEdQ
UnNTZXQgPSBwcm9jLm11dGFibGVHUFJzKCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBmaWxsQWxsR1BSc1NldC5udW1iZXJPZlNldFJlZ2lzdGVycygpOyBpKyspCi0gICAgICAg
ICAgICBhcmdzLmFwcGVuZChzdWNjZXNzLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgaSkpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgLy8gTm93IGZvcmNlIGFsbCB2
YWx1ZXMgaW50byBldmVyeSBhdmFpbGFibGUgcmVnaXN0ZXIuCi0gICAgICAgIFBhdGNocG9pbnRW
YWx1ZSogcCA9IHN1Y2Nlc3MtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQs
IE9yaWdpbigpKTsKLSAgICAgICAgZm9yIChWYWx1ZSogdiA6IGFyZ3MpCi0gICAgICAgICAgICBw
LT5hcHBlbmQodiwgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7Ci0gICAgICAgIHAtPnNldEdlbmVy
YXRvcihbJl0gKENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYp
IHsgfSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICAvLyBOb3cgcmVxdWlyZSB0aGUgb3JpZ2lu
YWwgcGF0Y2hwb2ludCB0byBiZSBtYXRlcmlhbGl6ZWQgaW50byBhIHJlZ2lzdGVyLgotICAgICAg
ICBQYXRjaHBvaW50VmFsdWUqIHAgPSBzdWNjZXNzLT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVl
Pihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7Ci0gICAgICAgIHAtPmFwcGVuZChwYXRjaHBvaW50LCBW
YWx1ZVJlcDo6U29tZVJlZ2lzdGVyKTsKLSAgICAgICAgcC0+c2V0R2VuZXJhdG9yKFsmXSAoQ0Nh
bGxIZWxwZXJzJiwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKLSAgICB9
Ci0KLSAgICBzdWNjZXNzLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCks
IHN1Y2Nlc3MtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxMCkpOwot
ICAgIAotICAgIHNsb3dQYXRoLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2lu
KCksIHNsb3dQYXRoLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMjAp
KTsKLSAgICAKLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBDSEVDS19F
UShpbnZva2U8aW50PigqY29kZSksIDEwKTsKLX0KLQotdm9pZCB0ZXN0VGVybWluYWxQYXRjaHBv
aW50VGhhdE5lZWRzVG9CZVNwaWxsZWQyKCkKLXsKLSAgICAvLyBUaGlzIGlzIGEgdW5pdCB0ZXN0
IGZvciBob3cgRlRMJ3MgaGVhcCBhbGxvY2F0aW9uIGZhc3QgcGF0aHMgYmVoYXZlLgotICAgIFBy
b2NlZHVyZSBwcm9jOwotCi0gICAgLy8gRklYTUU6IEFpciBPMC9PMSBhbGxvY2F0b3IgY2FuJ3Qg
aGFuZGxlIHN1Y2ggcHJvZ3JhbXMuIFdlIHJlbHkgb24gV2FzbUFpcklSR2VuZXJhdG9yCi0gICAg
Ly8gdG8gbm90IHVzZSBhbnkgc3VjaCBjb25zdHJ1Y3RzIHdoZXJlIHRoZSByZWdpc3RlciBhbGxv
Y2F0b3IgaXMgY29ybmVyZWQgaW4gc3VjaAotICAgIC8vIGEgd2F5LgotICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ2MzMKLSAgICBpZiAocHJvYy5vcHRM
ZXZlbCgpIDwgMikKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogb25lID0gcHJvYy5hZGRCbG9jaygp
OwotICAgIEJhc2ljQmxvY2sqIHN1Y2Nlc3MgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNC
bG9jayogc2xvd1BhdGggPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBWYWx1ZSogYXJnID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAotICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCkpOwotCi0gICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAg
ICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwgYXJnKTsKLSAgICByb290LT5hcHBlbmRTdWNj
ZXNzb3Iob25lKTsKLSAgICByb290LT5hcHBlbmRTdWNjZXNzb3IoRnJlcXVlbnRlZEJsb2NrKHNs
b3dQYXRoLCBGcmVxdWVuY3lDbGFzczo6UmFyZSkpOwotICAgIAotICAgIFBhdGNocG9pbnRWYWx1
ZSogcGF0Y2hwb2ludCA9IG9uZS0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgSW50
MzIsIE9yaWdpbigpKTsKLSAgICBwYXRjaHBvaW50LT5lZmZlY3RzLnRlcm1pbmFsID0gdHJ1ZTsK
LSAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3Rl
cnMoKSk7Ci0gICAgcGF0Y2hwb2ludC0+YXBwZW5kKGFyZywgVmFsdWVSZXA6OlNvbWVSZWdpc3Rl
cik7Ci0gICAgCi0gICAgb25lLT5hcHBlbmRTdWNjZXNzb3Ioc3VjY2Vzcyk7Ci0gICAgb25lLT5h
cHBlbmRTdWNjZXNzb3IoRnJlcXVlbnRlZEJsb2NrKHNsb3dQYXRoLCBGcmVxdWVuY3lDbGFzczo6
UmFyZSkpOwotICAgIAotICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKLSAgICAgICAgWyZd
IChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJh
bXMpIHsKLSAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1Nj
cmF0Y2goaml0KTsKLSAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKDY2NiksIHBhcmFtc1swXS5ncHIoKSk7Ci0gICAgICAgICAgICBhdXRvIGdvVG9GYXN0UGF0
aCA9IGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkVxdWFsLCBwYXJhbXNbMV0uZ3ByKCksIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDQyKSk7Ci0gICAgICAgICAgICBhdXRvIGp1bXBUb1Ns
b3cgPSBqaXQuanVtcCgpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBNYWtlIHN1cmUg
dGhlIGFzc2VydHMgaGVyZSBwYXNzLgotICAgICAgICAgICAgcGFyYW1zLmZhbGxzVGhyb3VnaFRv
U3VjY2Vzc29yKDApOwotICAgICAgICAgICAgcGFyYW1zLmZhbGxzVGhyb3VnaFRvU3VjY2Vzc29y
KDEpOwotCi0gICAgICAgICAgICBWZWN0b3I8Qm94PENDYWxsSGVscGVyczo6TGFiZWw+PiBsYWJl
bHMgPSBwYXJhbXMuc3VjY2Vzc29yTGFiZWxzKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
IHBhcmFtcy5hZGRMYXRlUGF0aCgKLSAgICAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYg
aml0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGdvVG9GYXN0UGF0aC5saW5rVG8oKmxhYmVsc1sw
XSwgJmppdCk7Ci0gICAgICAgICAgICAgICAgICAgIGp1bXBUb1Nsb3cubGlua1RvKCpsYWJlbHNb
MV0sICZqaXQpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICAKLSAgICBW
ZWN0b3I8VmFsdWUqPiBhcmdzOwotICAgIHsKLSAgICAgICAgUmVnaXN0ZXJTZXQgZmlsbEFsbEdQ
UnNTZXQgPSBwcm9jLm11dGFibGVHUFJzKCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBmaWxsQWxsR1BSc1NldC5udW1iZXJPZlNldFJlZ2lzdGVycygpOyBpKyspCi0gICAgICAg
ICAgICBhcmdzLmFwcGVuZChzdWNjZXNzLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgaSkpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgLy8gTm93IGZvcmNlIGFsbCB2
YWx1ZXMgaW50byBldmVyeSBhdmFpbGFibGUgcmVnaXN0ZXIuCi0gICAgICAgIFBhdGNocG9pbnRW
YWx1ZSogcCA9IHN1Y2Nlc3MtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQs
IE9yaWdpbigpKTsKLSAgICAgICAgZm9yIChWYWx1ZSogdiA6IGFyZ3MpCi0gICAgICAgICAgICBw
LT5hcHBlbmQodiwgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7Ci0gICAgICAgIHAtPnNldEdlbmVy
YXRvcihbJl0gKENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYp
IHsgfSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICAvLyBOb3cgcmVxdWlyZSB0aGUgb3JpZ2lu
YWwgcGF0Y2hwb2ludCB0byBiZSBtYXRlcmlhbGl6ZWQgaW50byBhIHJlZ2lzdGVyLgotICAgICAg
ICBQYXRjaHBvaW50VmFsdWUqIHAgPSBzdWNjZXNzLT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVl
Pihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7Ci0gICAgICAgIHAtPmFwcGVuZChwYXRjaHBvaW50LCBW
YWx1ZVJlcDo6U29tZVJlZ2lzdGVyKTsKLSAgICAgICAgcC0+c2V0R2VuZXJhdG9yKFsmXSAoQ0Nh
bGxIZWxwZXJzJiwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKLSAgICB9
Ci0KLSAgICBzdWNjZXNzLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCks
IHBhdGNocG9pbnQpOwotICAgIAotICAgIHNsb3dQYXRoLT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFJldHVybiwgT3JpZ2luKCksIGFyZyk7Ci0gICAgCi0gICAgYXV0byBvcmlnaW5hbDEgPSBPcHRp
b25zOjptYXhCM1RhaWxEdXBCbG9ja1NpemUoKTsKLSAgICBhdXRvIG9yaWdpbmFsMiA9IE9wdGlv
bnM6Om1heEIzVGFpbER1cEJsb2NrU3VjY2Vzc29ycygpOwotCi0gICAgLy8gVGFpbCBkdXBsaWNh
dGlvbiB3aWxsIGJyZWFrIHRoZSBjcml0aWNhbCBlZGdlIHdlJ3JlIHRyeWluZyB0byB0ZXN0IGJl
Y2F1c2UgaXQKLSAgICAvLyB3aWxsIGNsb25lIHRoZSBzbG93UGF0aCBibG9jayBmb3IgYm90aCBl
ZGdlcyB0byBpdCEKLSAgICBPcHRpb25zOjptYXhCM1RhaWxEdXBCbG9ja1NpemUoKSA9IDA7Ci0g
ICAgT3B0aW9uczo6bWF4QjNUYWlsRHVwQmxvY2tTdWNjZXNzb3JzKCkgPSAwOwotCi0gICAgYXV0
byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKmNv
ZGUsIDEpLCAxKTsKLSAgICBDSEVDS19FUShpbnZva2U8aW50PigqY29kZSwgMCksIDApOwotICAg
IENIRUNLX0VRKGludm9rZTxpbnQ+KCpjb2RlLCA0MiksIDY2Nik7Ci0KLSAgICBPcHRpb25zOjpt
YXhCM1RhaWxEdXBCbG9ja1NpemUoKSA9IG9yaWdpbmFsMTsKLSAgICBPcHRpb25zOjptYXhCM1Rh
aWxEdXBCbG9ja1N1Y2Nlc3NvcnMoKSA9IG9yaWdpbmFsMjsKLX0KLQotdm9pZCB0ZXN0UGF0Y2hw
b2ludFRlcm1pbmFsUmV0dXJuVmFsdWUoYm9vbCBzdWNjZXNzSXNSYXJlKQotewotICAgIC8vIFRo
aXMgaXMgYSB1bml0IHRlc3QgZm9yIGhvdyBGVEwncyBoZWFwIGFsbG9jYXRpb24gZmFzdCBwYXRo
cyBiZWhhdmUuCi0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgCi0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBzdWNjZXNzID0gcHJvYy5hZGRC
bG9jaygpOwotICAgIEJhc2ljQmxvY2sqIHNsb3dQYXRoID0gcHJvYy5hZGRCbG9jaygpOwotICAg
IEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbiA9IHByb2MuYWRkQmxvY2soKTsKLSAgICAKLSAgICBW
YWx1ZSogYXJnID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgcHJvYywgVHJ1bmMs
IE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIAotICAgIFBhdGNocG9p
bnRWYWx1ZSogcGF0Y2hwb2ludCA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHBy
b2MsIEludDMyLCBPcmlnaW4oKSk7Ci0gICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy50ZXJtaW5hbCA9
IHRydWU7Ci0gICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNo
UmVnaXN0ZXJzKCkpOwotICAgIAotICAgIGlmIChzdWNjZXNzSXNSYXJlKSB7Ci0gICAgICAgIHJv
b3QtPmFwcGVuZFN1Y2Nlc3NvcihGcmVxdWVudGVkQmxvY2soc3VjY2VzcywgRnJlcXVlbmN5Q2xh
c3M6OlJhcmUpKTsKLSAgICAgICAgcm9vdC0+YXBwZW5kU3VjY2Vzc29yKHNsb3dQYXRoKTsKLSAg
ICB9IGVsc2UgewotICAgICAgICByb290LT5hcHBlbmRTdWNjZXNzb3Ioc3VjY2Vzcyk7Ci0gICAg
ICAgIHJvb3QtPmFwcGVuZFN1Y2Nlc3NvcihGcmVxdWVudGVkQmxvY2soc2xvd1BhdGgsIEZyZXF1
ZW5jeUNsYXNzOjpSYXJlKSk7Ci0gICAgfQotICAgIAotICAgIHBhdGNocG9pbnQtPmFwcGVuZFNv
bWVSZWdpc3RlcihhcmcpOwotICAgIAotICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKLSAg
ICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2Fn
ZSBhbGxvd1NjcmF0Y2goaml0KTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpKdW1wIGp1bXBUb1Nsb3cgPQotICAgICAgICAgICAgICAgIGppdC5icmFuY2gzMihDQ2Fs
bEhlbHBlcnM6OkFib3ZlLCBwYXJhbXNbMV0uZ3ByKCksIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKDQyKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGppdC5hZGQzMihDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMigzMSksIHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGp1bXBUb1N1Y2Nl
c3M7Ci0gICAgICAgICAgICBpZiAoIXBhcmFtcy5mYWxsc1Rocm91Z2hUb1N1Y2Nlc3NvcigwKSkK
LSAgICAgICAgICAgICAgICBqdW1wVG9TdWNjZXNzID0gaml0Lmp1bXAoKTsKLSAgICAgICAgICAg
IAotICAgICAgICAgICAgVmVjdG9yPEJveDxDQ2FsbEhlbHBlcnM6OkxhYmVsPj4gbGFiZWxzID0g
cGFyYW1zLnN1Y2Nlc3NvckxhYmVscygpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBwYXJh
bXMuYWRkTGF0ZVBhdGgoCi0gICAgICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkg
ewotICAgICAgICAgICAgICAgICAgICBqdW1wVG9TbG93LmxpbmtUbygqbGFiZWxzWzFdLCAmaml0
KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGp1bXBUb1N1Y2Nlc3MuaXNTZXQoKSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGp1bXBUb1N1Y2Nlc3MubGlua1RvKCpsYWJlbHNbMF0sICZqaXQp
OwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICAKLSAgICBVcHNpbG9uVmFs
dWUqIHN1Y2Nlc3NVcHNpbG9uID0gc3VjY2Vzcy0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4ocHJv
YywgT3JpZ2luKCksIHBhdGNocG9pbnQpOwotICAgIHN1Y2Nlc3MtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgSnVtcCwgT3JpZ2luKCkpOwotICAgIHN1Y2Nlc3MtPnNldFN1Y2Nlc3NvcnMoY29udGlu
dWF0aW9uKTsKLSAgICAKLSAgICBVcHNpbG9uVmFsdWUqIHNsb3dQYXRoVXBzaWxvbiA9IHNsb3dQ
YXRoLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPigKLSAgICAgICAgcHJvYywgT3JpZ2luKCksIHNs
b3dQYXRoLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNjY2KSk7Ci0g
ICAgc2xvd1BhdGgtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSnVtcCwgT3JpZ2luKCkpOwotICAg
IHNsb3dQYXRoLT5zZXRTdWNjZXNzb3JzKGNvbnRpbnVhdGlvbik7Ci0gICAgCi0gICAgVmFsdWUq
IHBoaSA9IGNvbnRpbnVhdGlvbi0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBQaGksIEludDMyLCBP
cmlnaW4oKSk7Ci0gICAgc3VjY2Vzc1Vwc2lsb24tPnNldFBoaShwaGkpOwotICAgIHNsb3dQYXRo
VXBzaWxvbi0+c2V0UGhpKHBoaSk7Ci0gICAgY29udGludWF0aW9uLT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHBoaSk7Ci0gICAgCi0gICAgYXV0byBjb2RlID0gY29t
cGlsZVByb2MocHJvYyk7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKmNvZGUsIDApLCAzMSk7
Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKmNvZGUsIDEpLCAzMik7Ci0gICAgQ0hFQ0tfRVEo
aW52b2tlPGludD4oKmNvZGUsIDQxKSwgNzIpOwotICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpj
b2RlLCA0MiksIDczKTsKLSAgICBDSEVDS19FUShpbnZva2U8aW50PigqY29kZSwgNDMpLCA2NjYp
OwotICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpjb2RlLCAtMSksIDY2Nik7Ci19Ci0KLXZvaWQg
dGVzdE1lbW9yeUZlbmNlKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLQotICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICByb290LT5hcHBlbmROZXc8RmVuY2VW
YWx1ZT4ocHJvYywgT3JpZ2luKCkpOwotICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCks
IEludDMyLCA0MikpOwotCi0gICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAg
Q0hFQ0tfRVEoaW52b2tlPGludD4oKmNvZGUpLCA0Mik7Ci0gICAgaWYgKGlzWDg2KCkpCi0gICAg
ICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibG9jayBvciAkMHgwLCAoJXJzcCkiKTsK
LSAgICBpZiAoaXNBUk02NCgpKQotICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwg
ImRtYiAgICAgaXNoIik7Ci0gICAgY2hlY2tEb2VzTm90VXNlSW5zdHJ1Y3Rpb24oKmNvZGUsICJt
ZmVuY2UiKTsKLSAgICBjaGVja0RvZXNOb3RVc2VJbnN0cnVjdGlvbigqY29kZSwgImRtYiAgICAg
aXNoc3QiKTsKLX0KLQotdm9pZCB0ZXN0U3RvcmVGZW5jZSgpCi17Ci0gICAgUHJvY2VkdXJlIHBy
b2M7Ci0KLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotCi0gICAgcm9v
dC0+YXBwZW5kTmV3PEZlbmNlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBIZWFwUmFuZ2U6OnRvcCgp
LCBIZWFwUmFuZ2UoKSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgSW50MzIs
IDQyKSk7Ci0KLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBDSEVDS19F
UShpbnZva2U8aW50PigqY29kZSksIDQyKTsKLSAgICBjaGVja0RvZXNOb3RVc2VJbnN0cnVjdGlv
bigqY29kZSwgImxvY2siKTsKLSAgICBjaGVja0RvZXNOb3RVc2VJbnN0cnVjdGlvbigqY29kZSwg
Im1mZW5jZSIpOwotICAgIGlmIChpc0FSTTY0KCkpCi0gICAgICAgIGNoZWNrVXNlc0luc3RydWN0
aW9uKCpjb2RlLCAiZG1iICAgICBpc2hzdCIpOwotfQotCi12b2lkIHRlc3RMb2FkRmVuY2UoKQot
ewotICAgIFByb2NlZHVyZSBwcm9jOwotCi0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ldzxGZW5jZVZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgSGVhcFJhbmdlKCksIEhlYXBSYW5nZTo6dG9wKCkpOwotICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJv
YywgT3JpZ2luKCksIEludDMyLCA0MikpOwotCi0gICAgYXV0byBjb2RlID0gY29tcGlsZVByb2Mo
cHJvYyk7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKmNvZGUpLCA0Mik7Ci0gICAgY2hlY2tE
b2VzTm90VXNlSW5zdHJ1Y3Rpb24oKmNvZGUsICJsb2NrIik7Ci0gICAgY2hlY2tEb2VzTm90VXNl
SW5zdHJ1Y3Rpb24oKmNvZGUsICJtZmVuY2UiKTsKLSAgICBpZiAoaXNBUk02NCgpKQotICAgICAg
ICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImRtYiAgICAgaXNoIik7Ci0gICAgY2hlY2tE
b2VzTm90VXNlSW5zdHJ1Y3Rpb24oKmNvZGUsICJkbWIgICAgIGlzaHN0Iik7Ci19Ci0KLXZvaWQg
dGVzdFRyYXBwaW5nTG9hZCgpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBpbnQgeCA9IDQyOwotICAgIE1lbW9yeVZh
bHVlKiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgIHByb2Ms
IHRyYXBwaW5nKExvYWQpLCBJbnQzMiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJngpKTsKLSAgICBFZmZlY3RzIGV4cGVj
dGVkRWZmZWN0czsKLSAgICBleHBlY3RlZEVmZmVjdHMuZXhpdHNTaWRld2F5cyA9IHRydWU7Ci0g
ICAgZXhwZWN0ZWRFZmZlY3RzLmNvbnRyb2xEZXBlbmRlbnQ9IHRydWU7Ci0gICAgZXhwZWN0ZWRF
ZmZlY3RzLnJlYWRzID0gSGVhcFJhbmdlOjp0b3AoKTsKLSAgICBDSEVDS19FUSh2YWx1ZS0+cmFu
Z2UoKSwgSGVhcFJhbmdlOjp0b3AoKSk7Ci0gICAgQ0hFQ0tfRVEodmFsdWUtPmVmZmVjdHMoKSwg
ZXhwZWN0ZWRFZmZlY3RzKTsKLSAgICB2YWx1ZS0+c2V0UmFuZ2UoSGVhcFJhbmdlKDApKTsKLSAg
ICBDSEVDS19FUSh2YWx1ZS0+cmFuZ2UoKSwgSGVhcFJhbmdlKDApKTsKLSAgICBDSEVDS19FUSh2
YWx1ZS0+ZWZmZWN0cygpLCBleHBlY3RlZEVmZmVjdHMpOyAvLyBXZSBzdGlsbCByZWFkcyB0b3Ah
Ci0gICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCB2YWx1
ZSk7Ci0gICAgQ0hFQ0tfRVEoY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpLCA0Mik7Ci0gICAgdW5z
aWduZWQgdHJhcHNDb3VudCA9IDA7Ci0gICAgZm9yIChBaXI6OkJhc2ljQmxvY2sqIGJsb2NrIDog
cHJvYy5jb2RlKCkpIHsKLSAgICAgICAgZm9yIChBaXI6Okluc3QmIGluc3QgOiAqYmxvY2spIHsK
LSAgICAgICAgICAgIGlmIChpbnN0LmtpbmQuZWZmZWN0cykKLSAgICAgICAgICAgICAgICB0cmFw
c0NvdW50Kys7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgQ0hFQ0tfRVEodHJhcHNDb3VudCwgMXUp
OwotfQotCi12b2lkIHRlc3RUcmFwcGluZ1N0b3JlKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsK
LSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIGludCB4ID0gNDI7
Ci0gICAgTWVtb3J5VmFsdWUqIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigK
LSAgICAgICAgcHJvYywgdHJhcHBpbmcoU3RvcmUpLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDExMSksCi0gICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJngpLCAwKTsKLSAg
ICBFZmZlY3RzIGV4cGVjdGVkRWZmZWN0czsKLSAgICBleHBlY3RlZEVmZmVjdHMuZXhpdHNTaWRl
d2F5cyA9IHRydWU7Ci0gICAgZXhwZWN0ZWRFZmZlY3RzLmNvbnRyb2xEZXBlbmRlbnQ9IHRydWU7
Ci0gICAgZXhwZWN0ZWRFZmZlY3RzLnJlYWRzID0gSGVhcFJhbmdlOjp0b3AoKTsKLSAgICBleHBl
Y3RlZEVmZmVjdHMud3JpdGVzID0gSGVhcFJhbmdlOjp0b3AoKTsKLSAgICBDSEVDS19FUSh2YWx1
ZS0+cmFuZ2UoKSwgSGVhcFJhbmdlOjp0b3AoKSk7Ci0gICAgQ0hFQ0tfRVEodmFsdWUtPmVmZmVj
dHMoKSwgZXhwZWN0ZWRFZmZlY3RzKTsKLSAgICB2YWx1ZS0+c2V0UmFuZ2UoSGVhcFJhbmdlKDAp
KTsKLSAgICBDSEVDS19FUSh2YWx1ZS0+cmFuZ2UoKSwgSGVhcFJhbmdlKDApKTsKLSAgICBleHBl
Y3RlZEVmZmVjdHMud3JpdGVzID0gSGVhcFJhbmdlKDApOwotICAgIENIRUNLX0VRKHZhbHVlLT5l
ZmZlY3RzKCksIGV4cGVjdGVkRWZmZWN0cyk7IC8vIFdlIHN0aWxsIHJlYWRzIHRvcCEKLSAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOwotICAgIGNvbXBp
bGVBbmRSdW48aW50Pihwcm9jKTsKLSAgICBDSEVDS19FUSh4LCAxMTEpOwotICAgIHVuc2lnbmVk
IHRyYXBzQ291bnQgPSAwOwotICAgIGZvciAoQWlyOjpCYXNpY0Jsb2NrKiBibG9jayA6IHByb2Mu
Y29kZSgpKSB7Ci0gICAgICAgIGZvciAoQWlyOjpJbnN0JiBpbnN0IDogKmJsb2NrKSB7Ci0gICAg
ICAgICAgICBpZiAoaW5zdC5raW5kLmVmZmVjdHMpCi0gICAgICAgICAgICAgICAgdHJhcHNDb3Vu
dCsrOwotICAgICAgICB9Ci0gICAgfQotICAgIENIRUNLX0VRKHRyYXBzQ291bnQsIDF1KTsKLX0K
LQotdm9pZCB0ZXN0VHJhcHBpbmdMb2FkQWRkU3RvcmUoKQotewotICAgIFByb2NlZHVyZSBwcm9j
OwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgaW50IHggPSA0
MjsKLSAgICBDb25zdFB0clZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1
ZT4ocHJvYywgT3JpZ2luKCksICZ4KTsKLSAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KAotICAgICAgICBwcm9jLCB0cmFwcGluZyhTdG9yZSksIE9yaWdpbigpLAotICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKLSAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgdHJhcHBpbmcoTG9h
ZCksIEludDMyLCBPcmlnaW4oKSwgcHRyKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAzKSksCi0gICAgICAgIHB0ciwgMCk7Ci0gICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKLSAgICBjb21w
aWxlQW5kUnVuPGludD4ocHJvYyk7Ci0gICAgQ0hFQ0tfRVEoeCwgNDUpOwotICAgIGJvb2wgdHJh
cHMgPSBmYWxzZTsKLSAgICBmb3IgKEFpcjo6QmFzaWNCbG9jayogYmxvY2sgOiBwcm9jLmNvZGUo
KSkgewotICAgICAgICBmb3IgKEFpcjo6SW5zdCYgaW5zdCA6ICpibG9jaykgewotICAgICAgICAg
ICAgaWYgKGluc3Qua2luZC5lZmZlY3RzKQotICAgICAgICAgICAgICAgIHRyYXBzID0gdHJ1ZTsK
LSAgICAgICAgfQotICAgIH0KLSAgICBDSEVDSyh0cmFwcyk7Ci19Ci0KLXZvaWQgdGVzdFRyYXBw
aW5nTG9hZERDRSgpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBpbnQgeCA9IDQyOwotICAgIHJvb3QtPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgIHByb2MsIHRyYXBwaW5nKExvYWQpLCBJbnQzMiwgT3Jp
Z2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmln
aW4oKSwgJngpKTsKLSAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3Jp
Z2luKCkpOwotICAgIGNvbXBpbGVBbmRSdW48aW50Pihwcm9jKTsKLSAgICB1bnNpZ25lZCB0cmFw
c0NvdW50ID0gMDsKLSAgICBmb3IgKEFpcjo6QmFzaWNCbG9jayogYmxvY2sgOiBwcm9jLmNvZGUo
KSkgewotICAgICAgICBmb3IgKEFpcjo6SW5zdCYgaW5zdCA6ICpibG9jaykgewotICAgICAgICAg
ICAgaWYgKGluc3Qua2luZC5lZmZlY3RzKQotICAgICAgICAgICAgICAgIHRyYXBzQ291bnQrKzsK
LSAgICAgICAgfQotICAgIH0KLSAgICBDSEVDS19FUSh0cmFwc0NvdW50LCAxdSk7Ci19Ci0KLXZv
aWQgdGVzdFRyYXBwaW5nU3RvcmVFbGltaW5hdGlvbigpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7
Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBpbnQgeCA9IDQy
OwotICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksICZ4KTsKLSAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAg
ICBwcm9jLCB0cmFwcGluZyhTdG9yZSksIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDMpLAotICAgICAgICBwdHIpOwotICAg
IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgIHByb2MsIHRyYXBwaW5nKFN0
b3JlKSwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCA0NCksCi0gICAgICAgIHB0cik7Ci0gICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKLSAgICBjb21waWxlQW5kUnVuPGludD4ocHJv
Yyk7Ci0gICAgdW5zaWduZWQgc3RvcmVDb3VudCA9IDA7Ci0gICAgZm9yIChWYWx1ZSogdmFsdWUg
OiBwcm9jLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChpc1N0b3JlKHZhbHVlLT5vcGNvZGUoKSkp
Ci0gICAgICAgICAgICBzdG9yZUNvdW50Kys7Ci0gICAgfQotICAgIENIRUNLX0VRKHN0b3JlQ291
bnQsIDJ1KTsKLX0KLQotdm9pZCB0ZXN0TW92ZUNvbnN0YW50cygpCi17Ci0gICAgYXV0byBjaGVj
ayA9IFtdIChQcm9jZWR1cmUmIHByb2MpIHsKLSAgICAgICAgcHJvYy5yZXNldFJlYWNoYWJpbGl0
eSgpOwotICAgICAgICAKLSAgICAgICAgaWYgKHNob3VsZEJlVmVyYm9zZSgpKSB7Ci0gICAgICAg
ICAgICBkYXRhTG9nKCJJUiBiZWZvcmU6XG4iKTsKLSAgICAgICAgICAgIGRhdGFMb2cocHJvYyk7
Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIG1vdmVDb25zdGFudHMocHJvYyk7Ci0gICAg
ICAgIAotICAgICAgICBpZiAoc2hvdWxkQmVWZXJib3NlKCkpIHsKLSAgICAgICAgICAgIGRhdGFM
b2coIklSIGFmdGVyOlxuIik7Ci0gICAgICAgICAgICBkYXRhTG9nKHByb2MpOwotICAgICAgICB9
Ci0gICAgICAgIAotICAgICAgICBVc2VDb3VudHMgdXNlQ291bnRzKHByb2MpOwotICAgICAgICB1
bnNpZ25lZCBjb3VudCA9IDA7Ci0gICAgICAgIGZvciAoVmFsdWUqIHZhbHVlIDogcHJvYy52YWx1
ZXMoKSkgewotICAgICAgICAgICAgaWYgKHVzZUNvdW50cy5udW1Vc2VzKHZhbHVlKSAmJiB2YWx1
ZS0+aGFzSW50NjQoKSkKLSAgICAgICAgICAgICAgICBjb3VudCsrOwotICAgICAgICB9Ci0gICAg
ICAgIAotICAgICAgICBpZiAoY291bnQgPT0gMSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgCi0gICAgICAgIGNyYXNoTG9jay5sb2NrKCk7Ci0gICAgICAgIGRhdGFMb2coIkZhaWwgaW4g
dGVzdE1vdmVDb25zdGFudHM6IGdvdCBtb3JlIHRoYW4gb25lIENvbnN0NjQ6XG4iKTsKLSAgICAg
ICAgZGF0YUxvZyhwcm9jKTsKLSAgICAgICAgQ1JBU0goKTsKLSAgICB9OwotCi0gICAgewotICAg
ICAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKLSAgICAgICAgVmFsdWUqIGEgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KAotICAgICAgICAgICAgcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCksIAotICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAw
eDEyMzQxMjM0MTIzNCkpOwotICAgICAgICBWYWx1ZSogYiA9IHJvb3QtPmFwcGVuZE5ldzxNZW1v
cnlWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4o
KSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmln
aW4oKSwgMHgxMjM0MTIzNDEzMzQpKTsKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENDYWxsVmFs
dWU+KHByb2MsIFZvaWQsIE9yaWdpbigpLCBhLCBiKTsKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKLSAgICAgICAgY2hlY2socHJvYyk7Ci0g
ICAgfQotICAgIAotICAgIHsKLSAgICAgICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgIFZhbHVlKiB4ID0gcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApOwotICAgICAgICBWYWx1ZSogYSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0g
ICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLCB4LCByb290LT5hcHBlbmROZXc8Q29uc3RQ
dHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDB4MTIzNDEyMzQxMjM0KSk7Ci0gICAgICAgIFZhbHVl
KiBiID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEFkZCwgT3Jp
Z2luKCksIHgsIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
LTB4MTIzNDEyMzQxMjM0KSk7Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPihw
cm9jLCBWb2lkLCBPcmlnaW4oKSwgYSwgYik7Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7Ci0gICAgICAgIGNoZWNrKHByb2MpOwotICAgIH0K
LX0KLQotdm9pZCB0ZXN0UENPcmlnaW5NYXBEb2VzbnRJbnNlcnROb3BzKCkKLXsKLSAgICBQcm9j
ZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotCi0g
ICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCB3YXRjaHBvaW50TGFiZWw7Ci0KLSAgICBQYXRjaHBvaW50
VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9j
LCBWb2lkLCBPcmlnaW4oKSk7Ci0gICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAotICAgICAg
ICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMm
KSB7Ci0gICAgICAgICAgICB3YXRjaHBvaW50TGFiZWwgPSBqaXQud2F0Y2hwb2ludExhYmVsKCk7
Ci0gICAgICAgIH0pOwotCi0gICAgcGF0Y2hwb2ludCA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBv
aW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKLSAgICBwYXRjaHBvaW50LT5zZXRHZW5l
cmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2Vu
ZXJhdGlvblBhcmFtcyYpIHsKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgbGFiZWxJ
Z25vcmluZ1dhdGNocG9pbnRzID0gaml0LmxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpOwotCi0g
ICAgICAgICAgICBDSEVDSyh3YXRjaHBvaW50TGFiZWwgPT0gbGFiZWxJZ25vcmluZ1dhdGNocG9p
bnRzKTsKLSAgICAgICAgfSk7Ci0KLSAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJl
dHVybiwgT3JpZ2luKCkpOwotCi0gICAgY29tcGlsZVByb2MocHJvYyk7Ci19Ci0KLXZvaWQgdGVz
dFBpblJlZ2lzdGVycygpCi17Ci0gICAgYXV0byBnbyA9IFsmXSAoYm9vbCBwaW4pIHsKLSAgICAg
ICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIFJlZ2lzdGVyU2V0IGNzcnM7Ci0gICAgICAgIGNz
cnMubWVyZ2UoUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7Ci0gICAgICAgIGNz
cnMuZXhjbHVkZShSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSk7Ci0gICAgICAgIGlmIChw
aW4pIHsKLSAgICAgICAgICAgIGNzcnMuZm9yRWFjaCgKLSAgICAgICAgICAgICAgICBbJl0gKFJl
ZyByZWcpIHsKLSAgICAgICAgICAgICAgICAgICAgcHJvYy5waW5SZWdpc3RlcihyZWcpOwotICAg
ICAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0gICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgIFZhbHVlKiBhID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAg
ICAgICBWYWx1ZSogYiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAgVmFsdWUqIGMgPSByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMik7Ci0gICAgICAgIFZhbHVlKiBkID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjpyZWdDUzApOwotICAgICAgICByb290
LT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBWb2lkLCBPcmlnaW4o
KSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmln
aW4oKSwgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDB4MTIzNCkpKTsKLSAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PENDYWxsVmFsdWU+KAotICAgICAgICAgICAgcHJvYywgVm9pZCwgT3JpZ2luKCksCi0g
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IHN0YXRpY19jYXN0PGludHB0cl90PigweDEyMzUpKSwKLSAgICAgICAgICAgIGEsIGIsIGMpOwot
ICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0
Y2hwb2ludFZhbHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7Ci0gICAgICAgIHBhdGNocG9pbnQt
PmFwcGVuZFNvbWVSZWdpc3RlcihkKTsKLSAgICAgICAgdW5zaWduZWQgb3B0TGV2ZWwgPSBwcm9j
Lm9wdExldmVsKCk7Ci0gICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKLSAgICAgICAg
ICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBw
YXJhbXMpIHsKLSAgICAgICAgICAgICAgICBpZiAob3B0TGV2ZWwgPiAxKQotICAgICAgICAgICAg
ICAgICAgICBDSEVDS19FUShwYXJhbXNbMF0uZ3ByKCksIEdQUkluZm86OnJlZ0NTMCk7Ci0gICAg
ICAgICAgICB9KTsKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4s
IE9yaWdpbigpKTsKLSAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAg
ICAgIGJvb2wgdXNlc0NTUnMgPSBmYWxzZTsKLSAgICAgICAgZm9yIChBaXI6OkJhc2ljQmxvY2sq
IGJsb2NrIDogcHJvYy5jb2RlKCkpIHsKLSAgICAgICAgICAgIGZvciAoQWlyOjpJbnN0JiBpbnN0
IDogKmJsb2NrKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGluc3Qua2luZC5vcGNvZGUgPT0gQWly
OjpQYXRjaCAmJiBpbnN0Lm9yaWdpbiA9PSBwYXRjaHBvaW50KQotICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBpbnN0LmZvckVhY2hUbXBGYXN0KAotICAgICAg
ICAgICAgICAgICAgICBbJl0gKEFpcjo6VG1wIHRtcCkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKHRtcC5pc1JlZygpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXNDU1Jz
IHw9IGNzcnMuZ2V0KHRtcC5yZWcoKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAyKSB7Ci0g
ICAgICAgICAgICAvLyBPdXIgbGVzcyBnb29kIHJlZ2lzdGVyIGFsbG9jYXRvcnMgbWF5IHVzZSB0
aGUKLSAgICAgICAgICAgIC8vIHBpbm5lZCBDU1JzIGluIGEgbW92ZS4KLSAgICAgICAgICAgIHVz
ZXNDU1JzID0gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgZm9yIChjb25zdCBSZWdpc3RlckF0
T2Zmc2V0JiByZWdBdE9mZnNldCA6IHByb2MuY2FsbGVlU2F2ZVJlZ2lzdGVyQXRPZmZzZXRMaXN0
KCkpCi0gICAgICAgICAgICB1c2VzQ1NScyB8PSBjc3JzLmdldChyZWdBdE9mZnNldC5yZWcoKSk7
Ci0gICAgICAgIENIRUNLX0VRKHVzZXNDU1JzLCAhcGluKTsKLSAgICB9OwotCi0gICAgZ28odHJ1
ZSk7Ci0gICAgZ28oZmFsc2UpOwotfQotCi12b2lkIHRlc3RYODZMZWFBZGRBZGRTaGxMZWZ0KCkK
LXsKLSAgICAvLyBBZGQoQWRkKFNobChAeCwgJGMpLCBAeSksICRkKQotICAgIFByb2NlZHVyZSBw
cm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUq
IHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIEFkZCwgT3Jp
Z2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9j
LCBBZGQsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAg
ICAgICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgMikpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKLSAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxMDAp
KTsKLSAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJl
c3VsdCk7Ci0gICAgCi0gICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAgaWYg
KHByb2Mub3B0TGV2ZWwoKSA+IDEpCi0gICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2Rl
LCAibGVhIDB4NjQoJXJkaSwlcnNpLDQpLCAlcmF4Iik7Ci0gICAgZWxzZQotICAgICAgICBjaGVj
a1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxlYSIpOwotICAgIENIRUNLX0VRKGludm9rZTxpbnRw
dHJfdD4oKmNvZGUsIDEsIDIpLCAoMSArICgyIDw8IDIpKSArIDEwMCk7Ci19Ci0KLXZvaWQgdGVz
dFg4NkxlYUFkZEFkZFNobFJpZ2h0KCkKLXsKLSAgICAvLyBBZGQoQWRkKEB4LCBTaGwoQHksICRj
KSksICRkKQotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
Ci0gICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAg
ICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIxKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgMikpKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCAxMDApKTsKLSAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgCi0gICAgYXV0byBjb2RlID0gY29t
cGlsZVByb2MocHJvYyk7Ci0gICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA+IDEpCi0gICAgICAgIGNo
ZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibGVhIDB4NjQoJXJkaSwlcnNpLDQpLCAlcmF4Iik7
Ci0gICAgZWxzZQotICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxlYSIpOwot
ICAgIENIRUNLX0VRKGludm9rZTxpbnRwdHJfdD4oKmNvZGUsIDEsIDIpLCAoMSArICgyIDw8IDIp
KSArIDEwMCk7Ci19Ci0KLXZvaWQgdGVzdFg4NkxlYUFkZEFkZCgpCi17Ci0gICAgLy8gQWRkKEFk
ZChAeCwgQHkpLCAkYykKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KAotICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKLSAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCi0gICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMTAwKSk7
Ci0gICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1
bHQpOwotICAgIAotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotICAgIENIRUNL
X0VRKGludm9rZTxpbnRwdHJfdD4oKmNvZGUsIDEsIDIpLCAoMSArIDIpICsgMTAwKTsKLSAgICBp
ZiAocHJvYy5vcHRMZXZlbCgpID4gMSkgewotICAgICAgICBjaGVja0Rpc2Fzc2VtYmx5KAotICAg
ICAgICAgICAgKmNvZGUsCi0gICAgICAgICAgICBbJl0gKGNvbnN0IGNoYXIqIGRpc2Fzc2VtYmx5
KSAtPiBib29sIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3Ryc3RyKGRpc2Fzc2VtYmx5LCAi
bGVhIDB4NjQoJXJkaSwlcnNpKSwgJXJheCIpCi0gICAgICAgICAgICAgICAgICAgIHx8IHN0cnN0
cihkaXNhc3NlbWJseSwgImxlYSAweDY0KCVyc2ksJXJkaSksICVyYXgiKTsKLSAgICAgICAgICAg
IH0sCi0gICAgICAgICAgICAiRXhwZWN0ZWQgdG8gZmluZCBzb21ldGhpbmcgbGlrZSBsZWEgMHg2
NCglcmRpLCVyc2kpLCAlcmF4IGJ1dCBkaWRuJ3QhIik7Ci0gICAgfQotfQotCi12b2lkIHRlc3RY
ODZMZWFBZGRTaGxSaWdodCgpCi17Ci0gICAgLy8gQWRkKFNobChAeCwgJGMpLCBAeSkKLSAgICBQ
cm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwot
ICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9j
LCBBZGQsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdpbigpLAotICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjEpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENv
bnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDIpKSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOwotICAgIAotICAgIGF1dG8gY29k
ZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotICAgIGlmIChwcm9jLm9wdExldmVsKCkgPiAxKQotICAg
ICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxlYSAoJXJkaSwlcnNpLDQpLCAlcmF4
Iik7Ci0gICAgZWxzZQotICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxlYSIp
OwotICAgIENIRUNLX0VRKGludm9rZTxpbnRwdHJfdD4oKmNvZGUsIDEsIDIpLCAxICsgKDIgPDwg
MikpOwotfQotCi12b2lkIHRlc3RYODZMZWFBZGRTaGxMZWZ0U2NhbGUxKCkKLXsKLSAgICAvLyBB
ZGQoU2hsKEB4LCAkYyksIEB5KQotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCi0gICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAg
IHByb2MsIFNobCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSksCi0gICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkp
KTsKLSAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJl
c3VsdCk7Ci0gICAgCi0gICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAgQ0hF
Q0tfRVEoaW52b2tlPGludHB0cl90PigqY29kZSwgMSwgMiksIDEgKyAyKTsKLSAgICBpZiAocHJv
Yy5vcHRMZXZlbCgpID4gMSkgewotICAgICAgICBjaGVja0Rpc2Fzc2VtYmx5KAotICAgICAgICAg
ICAgKmNvZGUsCi0gICAgICAgICAgICBbJl0gKGNvbnN0IGNoYXIqIGRpc2Fzc2VtYmx5KSAtPiBi
b29sIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3Ryc3RyKGRpc2Fzc2VtYmx5LCAibGVhICgl
cmRpLCVyc2kpLCAlcmF4IikKLSAgICAgICAgICAgICAgICAgICAgfHwgc3Ryc3RyKGRpc2Fzc2Vt
Ymx5LCAibGVhICglcnNpLCVyZGkpLCAlcmF4Iik7Ci0gICAgICAgICAgICB9LAotICAgICAgICAg
ICAgIkV4cGVjdGVkIHRvIGZpbmQgc29tZXRoaW5nIGxpa2UgbGVhICglcmRpLCVyc2kpLCAlcmF4
IGJ1dCBkaWRuJ3QhIik7Ci0gICAgfQotfQotCi12b2lkIHRlc3RYODZMZWFBZGRTaGxMZWZ0U2Nh
bGUyKCkKLXsKLSAgICAvLyBBZGQoU2hsKEB4LCAkYyksIEB5KQotICAgIFByb2NlZHVyZSBwcm9j
OwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIHJl
c3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIEFkZCwgT3JpZ2lu
KCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKLSAgICAgICAgICAgIHByb2MsIFNobCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMSksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgMSkpKTsKLSAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJl
dHVybiwgT3JpZ2luKCksIHJlc3VsdCk7Ci0gICAgCi0gICAgYXV0byBjb2RlID0gY29tcGlsZVBy
b2MocHJvYyk7Ci0gICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA+IDEpCi0gICAgICAgIGNoZWNrVXNl
c0luc3RydWN0aW9uKCpjb2RlLCAibGVhICglcmRpLCVyc2ksMiksICVyYXgiKTsKLSAgICBlbHNl
Ci0gICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibGVhIik7Ci0gICAgQ0hFQ0tf
RVEoaW52b2tlPGludHB0cl90PigqY29kZSwgMSwgMiksIDEgKyAoMiA8PCAxKSk7Ci19Ci0KLXZv
aWQgdGVzdFg4NkxlYUFkZFNobExlZnRTY2FsZTQoKQotewotICAgIC8vIEFkZChTaGwoQHgsICRj
KSwgQHkpCi0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
LSAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKLSAgICAgICAgICAgIHByb2MsIFNobCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMSksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgMikpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKLSAgICAK
LSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBpZiAocHJvYy5vcHRMZXZl
bCgpID4gMSkKLSAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJsZWEgKCVyZGks
JXJzaSw0KSwgJXJheCIpOwotICAgIGVsc2UKLSAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24o
KmNvZGUsICJsZWEiKTsKLSAgICBDSEVDS19FUShpbnZva2U8aW50cHRyX3Q+KCpjb2RlLCAxLCAy
KSwgMSArICgyIDw8IDIpKTsKLX0KLQotdm9pZCB0ZXN0WDg2TGVhQWRkU2hsTGVmdFNjYWxlOCgp
Ci17Ci0gICAgLy8gQWRkKFNobChAeCwgJGMpLCBAeSkKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiByZXN1bHQg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAot
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
Ci0gICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjEpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIDMpKSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCByZXN1bHQpOwotICAgIAotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHBy
b2MpOwotICAgIGlmIChwcm9jLm9wdExldmVsKCkgPiAxKQotICAgICAgICBjaGVja1VzZXNJbnN0
cnVjdGlvbigqY29kZSwgImxlYSAoJXJkaSwlcnNpLDgpLCAlcmF4Iik7Ci0gICAgZWxzZQotICAg
ICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxlYSIpOwotICAgIENIRUNLX0VRKGlu
dm9rZTxpbnRwdHJfdD4oKmNvZGUsIDEsIDIpLCAxICsgKDIgPDwgMykpOwotfQotCi12b2lkIHRl
c3RBZGRTaGwzMigpCi17Ci0gICAgLy8gQWRkKFNobChAeCwgJGMpLCBAeSkKLSAgICBQcm9jZWR1
cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZh
bHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBBZGQs
IE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdpbigpLAotICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjEpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIDMyKSkpOwotICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKLSAgICAKLSAgICBhdXRvIGNvZGUgPSBj
b21waWxlUHJvYyhwcm9jKTsKLSAgICBDSEVDS19FUShpbnZva2U8aW50NjRfdD4oKmNvZGUsIDEs
IDIpLCAxICsgKHN0YXRpY19jYXN0PGludDY0X3Q+KDIpIDw8IHN0YXRpY19jYXN0PGludDY0X3Q+
KDMyKSkpOwotfQotCi12b2lkIHRlc3RBZGRTaGw2NCgpCi17Ci0gICAgLy8gQWRkKFNobChAeCwg
JGMpLCBAeSkKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KAotICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCks
Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBTaGws
IE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpLAotICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDY0KSkpOwotICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKLSAg
ICAKLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICBDSEVDS19FUShpbnZv
a2U8aW50cHRyX3Q+KCpjb2RlLCAxLCAyKSwgMSArIDIpOwotfQotCi12b2lkIHRlc3RBZGRTaGw2
NSgpCi17Ci0gICAgLy8gQWRkKFNobChAeCwgJGMpLCBAeSkKLSAgICBQcm9jZWR1cmUgcHJvYzsK
LSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiByZXN1
bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigp
LAotICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCi0gICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjEpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIDY1KSkpOwotICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKLSAgICAKLSAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJv
Yyhwcm9jKTsKLSAgICBDSEVDS19FUShpbnZva2U8aW50cHRyX3Q+KCpjb2RlLCAxLCAyKSwgMSAr
ICgyIDw8IDEpKTsKLX0KLQotdm9pZCB0ZXN0UmVkdWNlU3RyZW5ndGhSZWFzc29jaWF0aW9uKGJv
b2wgZmxpcCkKLXsKLSAgICAvLyBBZGQoQWRkKEB4LCAkYyksIEB5KSAtPiBBZGQoQWRkKEB4LCBA
eSksICRjKQotICAgIC8vIGFuZAotICAgIC8vIEFkZChAeSwgQWRkKEB4LCAkYykpIC0+IEFkZChB
ZGQoQHgsIEB5KSwgJGMpCi0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
LSAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAKLSAgICBWYWx1ZSogaW5u
ZXJBZGQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBBZGQsIE9yaWdp
bigpLCBhcmcxLAotICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIDQyKSk7Ci0gICAgCi0gICAgVmFsdWUqIG91dGVyQWRkOwotICAgIGlmIChmbGlw
KQotICAgICAgICBvdXRlckFkZCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBP
cmlnaW4oKSwgYXJnMiwgaW5uZXJBZGQpOwotICAgIGVsc2UKLSAgICAgICAgb3V0ZXJBZGQgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGlubmVyQWRkLCBhcmcy
KTsKLSAgICAKLSAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2lu
KCksIG91dGVyQWRkKTsKLSAgICAKLSAgICBwcm9jLnJlc2V0UmVhY2hhYmlsaXR5KCk7Ci0KLSAg
ICBpZiAoc2hvdWxkQmVWZXJib3NlKCkpIHsKLSAgICAgICAgZGF0YUxvZygiSVIgYmVmb3JlIHJl
ZHVjZVN0cmVuZ3RoOlxuIik7Ci0gICAgICAgIGRhdGFMb2cocHJvYyk7Ci0gICAgfQotICAgIAot
ICAgIHJlZHVjZVN0cmVuZ3RoKHByb2MpOwotICAgIAotICAgIGlmIChzaG91bGRCZVZlcmJvc2Uo
KSkgewotICAgICAgICBkYXRhTG9nKCJJUiBhZnRlciByZWR1Y2VTdHJlbmd0aDpcbiIpOwotICAg
ICAgICBkYXRhTG9nKHByb2MpOwotICAgIH0KLSAgICAKLSAgICBDSEVDS19FUShyb290LT5sYXN0
KCktPm9wY29kZSgpLCBSZXR1cm4pOwotICAgIENIRUNLX0VRKHJvb3QtPmxhc3QoKS0+Y2hpbGQo
MCktPm9wY29kZSgpLCBBZGQpOwotICAgIENIRUNLKHJvb3QtPmxhc3QoKS0+Y2hpbGQoMCktPmNo
aWxkKDEpLT5pc0ludFB0cig0MikpOwotICAgIENIRUNLX0VRKHJvb3QtPmxhc3QoKS0+Y2hpbGQo
MCktPmNoaWxkKDApLT5vcGNvZGUoKSwgQWRkKTsKLSAgICBDSEVDSygKLSAgICAgICAgKHJvb3Qt
Pmxhc3QoKS0+Y2hpbGQoMCktPmNoaWxkKDApLT5jaGlsZCgwKSA9PSBhcmcxICYmIHJvb3QtPmxh
c3QoKS0+Y2hpbGQoMCktPmNoaWxkKDApLT5jaGlsZCgxKSA9PSBhcmcyKSB8fAotICAgICAgICAo
cm9vdC0+bGFzdCgpLT5jaGlsZCgwKS0+Y2hpbGQoMCktPmNoaWxkKDApID09IGFyZzIgJiYgcm9v
dC0+bGFzdCgpLT5jaGlsZCgwKS0+Y2hpbGQoMCktPmNoaWxkKDEpID09IGFyZzEpKTsKLX0KLQot
dm9pZCB0ZXN0TG9hZEJhc2VJbmRleFNoaWZ0MigpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0g
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgTG9hZCwgSW50MzIs
IE9yaWdpbigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAg
ICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAg
ICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMSksCi0gICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCAyKSkpKSk7Ci0gICAgYXV0byBjb2RlID0gY29tcGlsZVBy
b2MocHJvYyk7Ci0gICAgaWYgKGlzWDg2KCkgJiYgcHJvYy5vcHRMZXZlbCgpID4gMSkKLSAgICAg
ICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICIoJXJkaSwlcnNpLDQpIik7Ci0gICAgaW50
MzJfdCB2YWx1ZSA9IDEyMzQxMjM0OwotICAgIGNoYXIqIHB0ciA9IGJpdHdpc2VfY2FzdDxjaGFy
Kj4oJnZhbHVlKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMTA7ICsraSkKLSAgICAg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludDMyX3Q+KCpjb2RlLCBwdHIgLSAoc3RhdGljX2Nhc3Q8aW50
cHRyX3Q+KDEpIDw8IHN0YXRpY19jYXN0PGludHB0cl90PigyKSkgKiBpLCBpKSwgMTIzNDEyMzQp
OwotfQotCi12b2lkIHRlc3RMb2FkQmFzZUluZGV4U2hpZnQzMigpCi17Ci0jaWYgQ1BVKEFERFJF
U1M2NCkKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOwotICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0g
ICAgICAgICAgICBwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCks
Ci0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAotICAgICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgICAgIHByb2MsIFNobCwgT3JpZ2lu
KCksCi0gICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSwKLSAgICAgICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDMyKSkp
KSk7Ci0gICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAgaW50MzJfdCB2YWx1
ZSA9IDEyMzQxMjM0OwotICAgIGNoYXIqIHB0ciA9IGJpdHdpc2VfY2FzdDxjaGFyKj4oJnZhbHVl
KTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMTA7ICsraSkKLSAgICAgICAgQ0hFQ0tf
RVEoaW52b2tlPGludDMyX3Q+KCpjb2RlLCBwdHIgLSAoc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDEp
IDw8IHN0YXRpY19jYXN0PGludHB0cl90PigzMikpICogaSwgaSksIDEyMzQxMjM0KTsKLSNlbmRp
ZgotfQotCi12b2lkIHRlc3RPcHRpbWl6ZU1hdGVyaWFsaXphdGlvbigpCi17Ci0gICAgUHJvY2Vk
dXJlIHByb2M7Ci0gICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDIpCi0gICAgICAgIHJldHVybjsK
LQotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgcm9vdC0+YXBw
ZW5kTmV3PENDYWxsVmFsdWU+KAotICAgICAgICBwcm9jLCBWb2lkLCBPcmlnaW4oKSwKLSAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAweDEyMzQy
MzQ1MzQ1NmxsdSksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgMHgxMjM0MjM0NTM0NTZsbHUgKyAzNSkpOwotICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7Ci0gICAgCi0gICAgYXV0byBjb2RlID0g
Y29tcGlsZVByb2MocHJvYyk7Ci0gICAgYm9vbCBmb3VuZCA9IGZhbHNlOwotICAgIGZvciAoQWly
OjpCYXNpY0Jsb2NrKiBibG9jayA6IHByb2MuY29kZSgpKSB7Ci0gICAgICAgIGZvciAoQWlyOjpJ
bnN0JiBpbnN0IDogKmJsb2NrKSB7Ci0gICAgICAgICAgICBpZiAoaW5zdC5raW5kLm9wY29kZSAh
PSBBaXI6OkFkZDY0KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYg
KGluc3QuYXJnc1swXSAhPSBBaXI6OkFyZzo6aW1tKDM1KSkKLSAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLSAgICBD
SEVDSyhmb3VuZCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci12b2lkIGdlbmVyYXRl
TG9vcChQcm9jZWR1cmUmIHByb2MsIGNvbnN0IEZ1bmMmIGZ1bmMpCi17Ci0gICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBsb29wID0gcHJvYy5h
ZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGVuZCA9IHByb2MuYWRkQmxvY2soKTsKLQotICAg
IFVwc2lsb25WYWx1ZSogaW5pdGlhbEluZGV4ID0gcm9vdC0+YXBwZW5kTmV3PFVwc2lsb25WYWx1
ZT4oCi0gICAgICAgIHByb2MsIE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgMCkpOwotICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
SnVtcCwgT3JpZ2luKCkpOwotICAgIHJvb3QtPnNldFN1Y2Nlc3NvcnMobG9vcCk7Ci0gICAgCi0g
ICAgVmFsdWUqIGluZGV4ID0gbG9vcC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBQaGksIEludDMy
LCBPcmlnaW4oKSk7Ci0gICAgaW5pdGlhbEluZGV4LT5zZXRQaGkoaW5kZXgpOwotICAgIAotICAg
IFZhbHVlKiBvbmUgPSBmdW5jKGxvb3AsIGluZGV4KTsKLSAgICAKLSAgICBWYWx1ZSogbmV4dElu
ZGV4ID0gbG9vcC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBpbmRleCwg
b25lKTsKLSAgICBVcHNpbG9uVmFsdWUqIGxvb3BJbmRleCA9IGxvb3AtPmFwcGVuZE5ldzxVcHNp
bG9uVmFsdWU+KHByb2MsIE9yaWdpbigpLCBuZXh0SW5kZXgpOwotICAgIGxvb3BJbmRleC0+c2V0
UGhpKGluZGV4KTsKLSAgICBsb29wLT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICBwcm9jLCBC
cmFuY2gsIE9yaWdpbigpLAotICAgICAgICBsb29wLT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAg
ICAgICAgcHJvYywgTGVzc1RoYW4sIE9yaWdpbigpLCBuZXh0SW5kZXgsCi0gICAgICAgICAgICBs
b29wLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMTAwKSkpOwotICAg
IGxvb3AtPnNldFN1Y2Nlc3NvcnMobG9vcCwgZW5kKTsKLSAgICAKLSAgICBlbmQtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7Ci19Ci0KLXN0ZDo6YXJyYXk8aW50LCAx
MDA+IG1ha2VBcnJheUZvckxvb3BzKCkKLXsKLSAgICBzdGQ6OmFycmF5PGludCwgMTAwPiByZXN1
bHQ7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlc3VsdC5zaXplKCk7ICsraSkKLSAg
ICAgICAgcmVzdWx0W2ldID0gaSAmIDE7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdGVtcGxh
dGU8dHlwZW5hbWUgRnVuYz4KLXZvaWQgZ2VuZXJhdGVMb29wTm90QmFja3dhcmRzRG9taW5hbnQo
UHJvY2VkdXJlJiBwcm9jLCBzdGQ6OmFycmF5PGludCwgMTAwPiYgYXJyYXksIGNvbnN0IEZ1bmMm
IGZ1bmMpCi17Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBC
YXNpY0Jsb2NrKiBsb29wSGVhZGVyID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sq
IGxvb3BDYWxsID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGxvb3BGb290ZXIg
PSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogZW5kID0gcHJvYy5hZGRCbG9jaygp
OwotCi0gICAgVXBzaWxvblZhbHVlKiBpbml0aWFsSW5kZXggPSByb290LT5hcHBlbmROZXc8VXBz
aWxvblZhbHVlPigKLSAgICAgICAgcHJvYywgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7Ci0gICAgLy8gSWYgeW91IGxvb2sgY2FyZWZ1
bGx5LCB5b3UnbGwgbm90aWNlIHRoYXQgdGhpcyBpcyBhbiBleHRyZW1lbHkgc25lYWt5IHVzZSBv
ZiBVcHNpbG9uIHRoYXQgZGVtb25zdHJhdGVzCi0gICAgLy8gdGhlIGV4dGVudCB0byB3aGljaCBv
dXIgU1NBIGlzIGRpZmZlcmVudCBmcm9tIG5vcm1hbC1wZXJzb24gU1NBLgotICAgIFVwc2lsb25W
YWx1ZSogZGVmYXVsdE9uZSA9IHJvb3QtPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KAotICAgICAg
ICBwcm9jLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIDEpKTsKLSAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEp1bXAsIE9yaWdp
bigpKTsKLSAgICByb290LT5zZXRTdWNjZXNzb3JzKGxvb3BIZWFkZXIpOwotICAgIAotICAgIFZh
bHVlKiBpbmRleCA9IGxvb3BIZWFkZXItPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUGhpLCBJbnQz
MiwgT3JpZ2luKCkpOwotICAgIGluaXRpYWxJbmRleC0+c2V0UGhpKGluZGV4KTsKLSAgICAKLSAg
ICAvLyBpZiAoYXJyYXlbaW5kZXhdKQotICAgIGxvb3BIZWFkZXItPmFwcGVuZE5ldzxWYWx1ZT4o
Ci0gICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCi0gICAgICAgIGxvb3BIZWFkZXItPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBMb2FkLCBJbnQzMiwgT3Jp
Z2luKCksCi0gICAgICAgICAgICBsb29wSGVhZGVyLT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAg
ICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgbG9vcEhlYWRl
ci0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmYXJyYXkpLAotICAg
ICAgICAgICAgICAgIGxvb3BIZWFkZXItPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAg
ICAgICAgIHByb2MsIE11bCwgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgICAgIGxvb3BIZWFk
ZXItPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgWkV4dDMyLCBPcmlnaW4oKSwgaW5kZXgpLAotICAg
ICAgICAgICAgICAgICAgICBsb29wSGVhZGVyLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIHNpemVvZihpbnQpKSkpKSk7Ci0gICAgbG9vcEhlYWRlci0+c2V0U3VjY2Vz
c29ycyhsb29wQ2FsbCwgbG9vcEZvb3Rlcik7Ci0gICAgCi0gICAgVmFsdWUqIGZ1bmN0aW9uQ2Fs
bCA9IGZ1bmMobG9vcENhbGwsIGluZGV4KTsKLSAgICBVcHNpbG9uVmFsdWUqIG9uZUZyb21GdW5j
dGlvbiA9IGxvb3BDYWxsLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
ZnVuY3Rpb25DYWxsKTsKLSAgICBsb29wQ2FsbC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBKdW1w
LCBPcmlnaW4oKSk7Ci0gICAgbG9vcENhbGwtPnNldFN1Y2Nlc3NvcnMobG9vcEZvb3Rlcik7Ci0g
ICAgCi0gICAgVmFsdWUqIG9uZSA9IGxvb3BGb290ZXItPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
UGhpLCBJbnQzMiwgT3JpZ2luKCkpOwotICAgIGRlZmF1bHRPbmUtPnNldFBoaShvbmUpOwotICAg
IG9uZUZyb21GdW5jdGlvbi0+c2V0UGhpKG9uZSk7Ci0gICAgVmFsdWUqIG5leHRJbmRleCA9IGxv
b3BGb290ZXItPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgaW5kZXgsIG9u
ZSk7Ci0gICAgVXBzaWxvblZhbHVlKiBsb29wSW5kZXggPSBsb29wRm9vdGVyLT5hcHBlbmROZXc8
VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbmV4dEluZGV4KTsKLSAgICBsb29wSW5kZXgt
PnNldFBoaShpbmRleCk7Ci0gICAgbG9vcEZvb3Rlci0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAg
ICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKLSAgICAgICAgbG9vcEZvb3Rlci0+YXBwZW5kTmV3
PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIExlc3NUaGFuLCBPcmlnaW4oKSwgbmV4dEluZGV4
LAotICAgICAgICAgICAgbG9vcEZvb3Rlci0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIDEwMCkpKTsKLSAgICBsb29wRm9vdGVyLT5zZXRTdWNjZXNzb3JzKGxvb3BIZWFk
ZXIsIGVuZCk7Ci0gICAgCi0gICAgZW5kLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwg
T3JpZ2luKCkpOwotfQotCi1zdGF0aWMgaW50IG9uZUZ1bmN0aW9uKGludCogY2FsbENvdW50KQot
ewotICAgICgqY2FsbENvdW50KSsrOwotICAgIHJldHVybiAxOwotfQotCi1zdGF0aWMgdm9pZCBu
b09wRnVuY3Rpb24oKQotewotfQotCi12b2lkIHRlc3RMSUNNUHVyZSgpCi17Ci0gICAgUHJvY2Vk
dXJlIHByb2M7Ci0KLSAgICBpZiAocHJvYy5vcHRMZXZlbCgpIDwgMikKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgZ2VuZXJhdGVMb29wKAotICAgICAgICBwcm9jLAotICAgICAgICBbJl0gKEJhc2lj
QmxvY2sqIGxvb3AsIFZhbHVlKikgLT4gVmFsdWUqIHsKLSAgICAgICAgICAgIHJldHVybiBsb29w
LT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgSW50MzIsIE9y
aWdpbigpLCBFZmZlY3RzOjpub25lKCksCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3
PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG9u
ZUZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSksCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApKTsKLSAgICAgICAgfSk7Ci0gICAgCi0gICAgdW5zaWduZWQgY2FsbENvdW50ID0gMDsKLSAg
ICBjb21waWxlQW5kUnVuPHZvaWQ+KHByb2MsICZjYWxsQ291bnQpOwotICAgIENIRUNLX0VRKGNh
bGxDb3VudCwgMXUpOwotfQotCi12b2lkIHRlc3RMSUNNUHVyZVNpZGVFeGl0cygpCi17Ci0gICAg
UHJvY2VkdXJlIHByb2M7Ci0gICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDIpCi0gICAgICAgIHJl
dHVybjsKLSAgICBnZW5lcmF0ZUxvb3AoCi0gICAgICAgIHByb2MsCi0gICAgICAgIFsmXSAoQmFz
aWNCbG9jayogbG9vcCwgVmFsdWUqKSAtPiBWYWx1ZSogewotICAgICAgICAgICAgRWZmZWN0cyBl
ZmZlY3RzID0gRWZmZWN0czo6bm9uZSgpOwotICAgICAgICAgICAgZWZmZWN0cy5leGl0c1NpZGV3
YXlzID0gdHJ1ZTsKLSAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKLSAg
ICAgICAgICAgICAgICBwcm9jLCBWb2lkLCBPcmlnaW4oKSwgZWZmZWN0cywKLSAgICAgICAgICAg
ICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NG
dW5jdGlvblB0cjx2b2lkKj4obm9PcEZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSkpOwotCi0gICAg
ICAgICAgICByZXR1cm4gbG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAotICAgICAgICAgICAg
ICAgIHByb2MsIEludDMyLCBPcmlnaW4oKSwgRWZmZWN0czo6bm9uZSgpLAotICAgICAgICAgICAg
ICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1
bmN0aW9uUHRyPHZvaWQqPihvbmVGdW5jdGlvbiwgQjNDQ2FsbFB0clRhZykpLAotICAgICAgICAg
ICAgICAgIGxvb3AtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgICAgIH0pOwotICAgIAotICAgIHVuc2lnbmVk
IGNhbGxDb3VudCA9IDA7Ci0gICAgY29tcGlsZUFuZFJ1bjx2b2lkPihwcm9jLCAmY2FsbENvdW50
KTsKLSAgICBDSEVDS19FUShjYWxsQ291bnQsIDF1KTsKLX0KLQotdm9pZCB0ZXN0TElDTVB1cmVX
cml0ZXNQaW5uZWQoKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIGlmIChwcm9jLm9wdExl
dmVsKCkgPCAyKQotICAgICAgICByZXR1cm47Ci0gICAgZ2VuZXJhdGVMb29wKAotICAgICAgICBw
cm9jLAotICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGxvb3AsIFZhbHVlKikgLT4gVmFsdWUqIHsK
LSAgICAgICAgICAgIEVmZmVjdHMgZWZmZWN0cyA9IEVmZmVjdHM6Om5vbmUoKTsKLSAgICAgICAg
ICAgIGVmZmVjdHMud3JpdGVzUGlubmVkID0gdHJ1ZTsKLSAgICAgICAgICAgIGxvb3AtPmFwcGVu
ZE5ldzxDQ2FsbFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBWb2lkLCBPcmlnaW4oKSwg
ZWZmZWN0cywKLSAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4obm9PcEZ1bmN0aW9uLCBCM0ND
YWxsUHRyVGFnKSkpOwotCi0gICAgICAgICAgICByZXR1cm4gbG9vcC0+YXBwZW5kTmV3PENDYWxs
VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIEludDMyLCBPcmlnaW4oKSwgRWZmZWN0czo6
bm9uZSgpLAotICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihvbmVGdW5jdGlvbiwgQjNDQ2Fs
bFB0clRhZykpLAotICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgICAgIH0p
OwotICAgIAotICAgIHVuc2lnbmVkIGNhbGxDb3VudCA9IDA7Ci0gICAgY29tcGlsZUFuZFJ1bjx2
b2lkPihwcm9jLCAmY2FsbENvdW50KTsKLSAgICBDSEVDS19FUShjYWxsQ291bnQsIDF1KTsKLX0K
LQotdm9pZCB0ZXN0TElDTVB1cmVXcml0ZXMoKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAg
IGlmIChwcm9jLm9wdExldmVsKCkgPCAyKQotICAgICAgICByZXR1cm47Ci0gICAgZ2VuZXJhdGVM
b29wKAotICAgICAgICBwcm9jLAotICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGxvb3AsIFZhbHVl
KikgLT4gVmFsdWUqIHsKLSAgICAgICAgICAgIEVmZmVjdHMgZWZmZWN0cyA9IEVmZmVjdHM6Om5v
bmUoKTsKLSAgICAgICAgICAgIGVmZmVjdHMud3JpdGVzID0gSGVhcFJhbmdlKDYzNDc5KTsKLSAg
ICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKLSAgICAgICAgICAgICAgICBw
cm9jLCBWb2lkLCBPcmlnaW4oKSwgZWZmZWN0cywKLSAgICAgICAgICAgICAgICBsb29wLT5hcHBl
bmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lk
Kj4obm9PcEZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSkpOwotCi0gICAgICAgICAgICByZXR1cm4g
bG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIEludDMy
LCBPcmlnaW4oKSwgRWZmZWN0czo6bm9uZSgpLAotICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVu
ZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQq
PihvbmVGdW5jdGlvbiwgQjNDQ2FsbFB0clRhZykpLAotICAgICAgICAgICAgICAgIGxvb3AtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSk7Ci0gICAgICAgIH0pOwotICAgIAotICAgIHVuc2lnbmVkIGNhbGxDb3VudCA9IDA7
Ci0gICAgY29tcGlsZUFuZFJ1bjx2b2lkPihwcm9jLCAmY2FsbENvdW50KTsKLSAgICBDSEVDS19F
UShjYWxsQ291bnQsIDF1KTsKLX0KLQotdm9pZCB0ZXN0TElDTVJlYWRzTG9jYWxTdGF0ZSgpCi17
Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgZ2VuZXJhdGVMb29wKAotICAgICAgICBwcm9jLAot
ICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGxvb3AsIFZhbHVlKikgLT4gVmFsdWUqIHsKLSAgICAg
ICAgICAgIEVmZmVjdHMgZWZmZWN0cyA9IEVmZmVjdHM6Om5vbmUoKTsKLSAgICAgICAgICAgIGVm
ZmVjdHMucmVhZHNMb2NhbFN0YXRlID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiBsb29wLT5h
cHBlbmROZXc8Q0NhbGxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgSW50MzIsIE9yaWdp
bigpLCBlZmZlY3RzLAotICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihvbmVGdW5jdGlvbiwg
QjNDQ2FsbFB0clRhZykpLAotICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAg
ICAgIH0pOwotICAgIAotICAgIHVuc2lnbmVkIGNhbGxDb3VudCA9IDA7Ci0gICAgY29tcGlsZUFu
ZFJ1bjx2b2lkPihwcm9jLCAmY2FsbENvdW50KTsKLSAgICBDSEVDS19FUShjYWxsQ291bnQsIDEw
MHUpOyAvLyBXZSdsbCBmYWlsIHRvIGhvaXN0IGJlY2F1c2UgdGhlIGxvb3AgaGFzIFVwc2lsb25z
LgotfQotCi12b2lkIHRlc3RMSUNNUmVhZHNQaW5uZWQoKQotewotICAgIFByb2NlZHVyZSBwcm9j
OwotICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAyKQotICAgICAgICByZXR1cm47Ci0gICAgZ2Vu
ZXJhdGVMb29wKAotICAgICAgICBwcm9jLAotICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGxvb3As
IFZhbHVlKikgLT4gVmFsdWUqIHsKLSAgICAgICAgICAgIEVmZmVjdHMgZWZmZWN0cyA9IEVmZmVj
dHM6Om5vbmUoKTsKLSAgICAgICAgICAgIGVmZmVjdHMucmVhZHNQaW5uZWQgPSB0cnVlOwotICAg
ICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKLSAgICAgICAgICAg
ICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksIGVmZmVjdHMsCi0gICAgICAgICAgICAgICAgbG9v
cC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25Q
dHI8dm9pZCo+KG9uZUZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSksCi0gICAgICAgICAgICAgICAg
bG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApKTsKLSAgICAgICAgfSk7Ci0gICAgCi0gICAgdW5zaWduZWQgY2FsbENv
dW50ID0gMDsKLSAgICBjb21waWxlQW5kUnVuPHZvaWQ+KHByb2MsICZjYWxsQ291bnQpOwotICAg
IENIRUNLX0VRKGNhbGxDb3VudCwgMXUpOwotfQotCi12b2lkIHRlc3RMSUNNUmVhZHMoKQotewot
ICAgIFByb2NlZHVyZSBwcm9jOwotICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAyKQotICAgICAg
ICByZXR1cm47Ci0gICAgZ2VuZXJhdGVMb29wKAotICAgICAgICBwcm9jLAotICAgICAgICBbJl0g
KEJhc2ljQmxvY2sqIGxvb3AsIFZhbHVlKikgLT4gVmFsdWUqIHsKLSAgICAgICAgICAgIEVmZmVj
dHMgZWZmZWN0cyA9IEVmZmVjdHM6Om5vbmUoKTsKLSAgICAgICAgICAgIGVmZmVjdHMucmVhZHMg
PSBIZWFwUmFuZ2U6OnRvcCgpOwotICAgICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5ldzxD
Q2FsbFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksIGVmZmVj
dHMsCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG9uZUZ1bmN0aW9uLCBCM0NDYWxsUHRy
VGFnKSksCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICAgICAgfSk7Ci0g
ICAgCi0gICAgdW5zaWduZWQgY2FsbENvdW50ID0gMDsKLSAgICBjb21waWxlQW5kUnVuPHZvaWQ+
KHByb2MsICZjYWxsQ291bnQpOwotICAgIENIRUNLX0VRKGNhbGxDb3VudCwgMXUpOwotfQotCi12
b2lkIHRlc3RMSUNNUHVyZU5vdEJhY2t3YXJkc0RvbWluYW50KCkKLXsKLSAgICBQcm9jZWR1cmUg
cHJvYzsKLSAgICBpZiAocHJvYy5vcHRMZXZlbCgpIDwgMikKLSAgICAgICAgcmV0dXJuOwotICAg
IGF1dG8gYXJyYXkgPSBtYWtlQXJyYXlGb3JMb29wcygpOwotICAgIGdlbmVyYXRlTG9vcE5vdEJh
Y2t3YXJkc0RvbWluYW50KAotICAgICAgICBwcm9jLCBhcnJheSwKLSAgICAgICAgWyZdIChCYXNp
Y0Jsb2NrKiBsb29wLCBWYWx1ZSopIC0+IFZhbHVlKiB7Ci0gICAgICAgICAgICByZXR1cm4gbG9v
cC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIEludDMyLCBP
cmlnaW4oKSwgRWZmZWN0czo6bm9uZSgpLAotICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5l
dzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihv
bmVGdW5jdGlvbiwgQjNDQ2FsbFB0clRhZykpLAotICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSk7Ci0gICAgICAgIH0pOwotICAgIAotICAgIHVuc2lnbmVkIGNhbGxDb3VudCA9IDA7Ci0g
ICAgY29tcGlsZUFuZFJ1bjx2b2lkPihwcm9jLCAmY2FsbENvdW50KTsKLSAgICBDSEVDS19FUShj
YWxsQ291bnQsIDF1KTsKLX0KLQotdm9pZCB0ZXN0TElDTVB1cmVGb2lsZWRCeUNoaWxkKCkKLXsK
LSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBnZW5lcmF0ZUxvb3AoCi0gICAgICAgIHByb2MsCi0g
ICAgICAgIFsmXSAoQmFzaWNCbG9jayogbG9vcCwgVmFsdWUqIGluZGV4KSAtPiBWYWx1ZSogewot
ICAgICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKLSAgICAgICAg
ICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksIEVmZmVjdHM6Om5vbmUoKSwKLSAgICAgICAg
ICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRh
Z0NGdW5jdGlvblB0cjx2b2lkKj4ob25lRnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSwKLSAgICAg
ICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgICAgICAgICAgaW5kZXgpOwotICAg
ICAgICB9KTsKLSAgICAKLSAgICB1bnNpZ25lZCBjYWxsQ291bnQgPSAwOwotICAgIGNvbXBpbGVB
bmRSdW48dm9pZD4ocHJvYywgJmNhbGxDb3VudCk7Ci0gICAgQ0hFQ0tfRVEoY2FsbENvdW50LCAx
MDB1KTsKLX0KLQotdm9pZCB0ZXN0TElDTVB1cmVOb3RCYWNrd2FyZHNEb21pbmFudEZvaWxlZEJ5
Q2hpbGQoKQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIGlmIChwcm9jLm9wdExldmVsKCkg
PCAyKQotICAgICAgICByZXR1cm47Ci0gICAgYXV0byBhcnJheSA9IG1ha2VBcnJheUZvckxvb3Bz
KCk7Ci0gICAgZ2VuZXJhdGVMb29wTm90QmFja3dhcmRzRG9taW5hbnQoCi0gICAgICAgIHByb2Ms
IGFycmF5LAotICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGxvb3AsIFZhbHVlKiBpbmRleCkgLT4g
VmFsdWUqIHsKLSAgICAgICAgICAgIHJldHVybiBsb29wLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4o
Ci0gICAgICAgICAgICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigpLCBFZmZlY3RzOjpub25lKCks
Ci0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG9uZUZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFn
KSksCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAotICAgICAgICAgICAgICAgIGlu
ZGV4KTsKLSAgICAgICAgfSk7Ci0gICAgCi0gICAgdW5zaWduZWQgY2FsbENvdW50ID0gMDsKLSAg
ICBjb21waWxlQW5kUnVuPHZvaWQ+KHByb2MsICZjYWxsQ291bnQpOwotICAgIENIRUNLX0VRKGNh
bGxDb3VudCwgNTB1KTsKLX0KLQotdm9pZCB0ZXN0TElDTUV4aXRzU2lkZXdheXMoKQotewotICAg
IFByb2NlZHVyZSBwcm9jOwotICAgIGdlbmVyYXRlTG9vcCgKLSAgICAgICAgcHJvYywKLSAgICAg
ICAgWyZdIChCYXNpY0Jsb2NrKiBsb29wLCBWYWx1ZSopIC0+IFZhbHVlKiB7Ci0gICAgICAgICAg
ICBFZmZlY3RzIGVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7Ci0gICAgICAgICAgICBlZmZlY3Rz
LmV4aXRzU2lkZXdheXMgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5l
dzxDQ2FsbFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksIGVm
ZmVjdHMsCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG9uZUZ1bmN0aW9uLCBCM0NDYWxs
UHRyVGFnKSksCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICAgICAgfSk7
Ci0gICAgCi0gICAgdW5zaWduZWQgY2FsbENvdW50ID0gMDsKLSAgICBjb21waWxlQW5kUnVuPHZv
aWQ+KHByb2MsICZjYWxsQ291bnQpOwotICAgIENIRUNLX0VRKGNhbGxDb3VudCwgMTAwdSk7Ci19
Ci0KLXZvaWQgdGVzdExJQ01Xcml0ZXNMb2NhbFN0YXRlKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJv
YzsKLSAgICBnZW5lcmF0ZUxvb3AoCi0gICAgICAgIHByb2MsCi0gICAgICAgIFsmXSAoQmFzaWNC
bG9jayogbG9vcCwgVmFsdWUqKSAtPiBWYWx1ZSogewotICAgICAgICAgICAgRWZmZWN0cyBlZmZl
Y3RzID0gRWZmZWN0czo6bm9uZSgpOwotICAgICAgICAgICAgZWZmZWN0cy53cml0ZXNMb2NhbFN0
YXRlID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiBsb29wLT5hcHBlbmROZXc8Q0NhbGxWYWx1
ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigpLCBlZmZlY3RzLAotICAg
ICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihvbmVGdW5jdGlvbiwgQjNDQ2FsbFB0clRhZykpLAot
ICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgICAgIH0pOwotICAgIAotICAg
IHVuc2lnbmVkIGNhbGxDb3VudCA9IDA7Ci0gICAgY29tcGlsZUFuZFJ1bjx2b2lkPihwcm9jLCAm
Y2FsbENvdW50KTsKLSAgICBDSEVDS19FUShjYWxsQ291bnQsIDEwMHUpOwotfQotCi12b2lkIHRl
c3RMSUNNV3JpdGVzKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBnZW5lcmF0ZUxvb3Ao
Ci0gICAgICAgIHByb2MsCi0gICAgICAgIFsmXSAoQmFzaWNCbG9jayogbG9vcCwgVmFsdWUqKSAt
PiBWYWx1ZSogewotICAgICAgICAgICAgRWZmZWN0cyBlZmZlY3RzID0gRWZmZWN0czo6bm9uZSgp
OwotICAgICAgICAgICAgZWZmZWN0cy53cml0ZXMgPSBIZWFwUmFuZ2UoNjY2KTsKLSAgICAgICAg
ICAgIHJldHVybiBsb29wLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCi0gICAgICAgICAgICAgICAg
cHJvYywgSW50MzIsIE9yaWdpbigpLCBlZmZlY3RzLAotICAgICAgICAgICAgICAgIGxvb3AtPmFw
cGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZv
aWQqPihvbmVGdW5jdGlvbiwgQjNDQ2FsbFB0clRhZykpLAotICAgICAgICAgICAgICAgIGxvb3At
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSk7Ci0gICAgICAgIH0pOwotICAgIAotICAgIHVuc2lnbmVkIGNhbGxDb3VudCA9
IDA7Ci0gICAgY29tcGlsZUFuZFJ1bjx2b2lkPihwcm9jLCAmY2FsbENvdW50KTsKLSAgICBDSEVD
S19FUShjYWxsQ291bnQsIDEwMHUpOwotfQotCi12b2lkIHRlc3RMSUNNRmVuY2UoKQotewotICAg
IFByb2NlZHVyZSBwcm9jOwotICAgIGdlbmVyYXRlTG9vcCgKLSAgICAgICAgcHJvYywKLSAgICAg
ICAgWyZdIChCYXNpY0Jsb2NrKiBsb29wLCBWYWx1ZSopIC0+IFZhbHVlKiB7Ci0gICAgICAgICAg
ICBFZmZlY3RzIGVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7Ci0gICAgICAgICAgICBlZmZlY3Rz
LmZlbmNlID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiBsb29wLT5hcHBlbmROZXc8Q0NhbGxW
YWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigpLCBlZmZlY3RzLAot
ICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmln
aW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihvbmVGdW5jdGlvbiwgQjNDQ2FsbFB0clRhZykp
LAotICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Ci0gICAgICAgIH0pOwotICAgIAot
ICAgIHVuc2lnbmVkIGNhbGxDb3VudCA9IDA7Ci0gICAgY29tcGlsZUFuZFJ1bjx2b2lkPihwcm9j
LCAmY2FsbENvdW50KTsKLSAgICBDSEVDS19FUShjYWxsQ291bnQsIDEwMHUpOwotfQotCi12b2lk
IHRlc3RMSUNNV3JpdGVzUGlubmVkKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBnZW5l
cmF0ZUxvb3AoCi0gICAgICAgIHByb2MsCi0gICAgICAgIFsmXSAoQmFzaWNCbG9jayogbG9vcCwg
VmFsdWUqKSAtPiBWYWx1ZSogewotICAgICAgICAgICAgRWZmZWN0cyBlZmZlY3RzID0gRWZmZWN0
czo6bm9uZSgpOwotICAgICAgICAgICAgZWZmZWN0cy53cml0ZXNQaW5uZWQgPSB0cnVlOwotICAg
ICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKLSAgICAgICAgICAg
ICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksIGVmZmVjdHMsCi0gICAgICAgICAgICAgICAgbG9v
cC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25Q
dHI8dm9pZCo+KG9uZUZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSksCi0gICAgICAgICAgICAgICAg
bG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApKTsKLSAgICAgICAgfSk7Ci0gICAgCi0gICAgdW5zaWduZWQgY2FsbENv
dW50ID0gMDsKLSAgICBjb21waWxlQW5kUnVuPHZvaWQ+KHByb2MsICZjYWxsQ291bnQpOwotICAg
IENIRUNLX0VRKGNhbGxDb3VudCwgMTAwdSk7Ci19Ci0KLXZvaWQgdGVzdExJQ01Db250cm9sRGVw
ZW5kZW50KCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBpZiAocHJvYy5vcHRMZXZlbCgp
IDwgMikKLSAgICAgICAgcmV0dXJuOwotICAgIGdlbmVyYXRlTG9vcCgKLSAgICAgICAgcHJvYywK
LSAgICAgICAgWyZdIChCYXNpY0Jsb2NrKiBsb29wLCBWYWx1ZSopIC0+IFZhbHVlKiB7Ci0gICAg
ICAgICAgICBFZmZlY3RzIGVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7Ci0gICAgICAgICAgICBl
ZmZlY3RzLmNvbnRyb2xEZXBlbmRlbnQgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuIGxvb3At
PmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3Jp
Z2luKCksIGVmZmVjdHMsCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG9uZUZ1bmN0aW9u
LCBCM0NDYWxsUHRyVGFnKSksCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAg
ICAgICAgfSk7Ci0gICAgCi0gICAgdW5zaWduZWQgY2FsbENvdW50ID0gMDsKLSAgICBjb21waWxl
QW5kUnVuPHZvaWQ+KHByb2MsICZjYWxsQ291bnQpOwotICAgIENIRUNLX0VRKGNhbGxDb3VudCwg
MXUpOwotfQotCi12b2lkIHRlc3RMSUNNQ29udHJvbERlcGVuZGVudE5vdEJhY2t3YXJkc0RvbWlu
YW50KCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBpZiAocHJvYy5vcHRMZXZlbCgpIDwg
MikKLSAgICAgICAgcmV0dXJuOwotICAgIGF1dG8gYXJyYXkgPSBtYWtlQXJyYXlGb3JMb29wcygp
OwotICAgIGdlbmVyYXRlTG9vcE5vdEJhY2t3YXJkc0RvbWluYW50KAotICAgICAgICBwcm9jLCBh
cnJheSwKLSAgICAgICAgWyZdIChCYXNpY0Jsb2NrKiBsb29wLCBWYWx1ZSopIC0+IFZhbHVlKiB7
Ci0gICAgICAgICAgICBFZmZlY3RzIGVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7Ci0gICAgICAg
ICAgICBlZmZlY3RzLmNvbnRyb2xEZXBlbmRlbnQgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJu
IGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBJbnQz
MiwgT3JpZ2luKCksIGVmZmVjdHMsCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENv
bnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG9uZUZ1
bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSksCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
KTsKLSAgICAgICAgfSk7Ci0gICAgCi0gICAgdW5zaWduZWQgY2FsbENvdW50ID0gMDsKLSAgICBj
b21waWxlQW5kUnVuPHZvaWQ+KHByb2MsICZjYWxsQ291bnQpOwotICAgIENIRUNLX0VRKGNhbGxD
b3VudCwgNTB1KTsKLX0KLQotdm9pZCB0ZXN0TElDTUNvbnRyb2xEZXBlbmRlbnRTaWRlRXhpdHMo
KQotewotICAgIFByb2NlZHVyZSBwcm9jOwotICAgIGdlbmVyYXRlTG9vcCgKLSAgICAgICAgcHJv
YywKLSAgICAgICAgWyZdIChCYXNpY0Jsb2NrKiBsb29wLCBWYWx1ZSopIC0+IFZhbHVlKiB7Ci0g
ICAgICAgICAgICBFZmZlY3RzIGVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7Ci0gICAgICAgICAg
ICBlZmZlY3RzLmV4aXRzU2lkZXdheXMgPSB0cnVlOwotICAgICAgICAgICAgbG9vcC0+YXBwZW5k
TmV3PENDYWxsVmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIFZvaWQsIE9yaWdpbigpLCBl
ZmZlY3RzLAotICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihub09wRnVuY3Rpb24sIEIzQ0Nh
bGxQdHJUYWcpKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGVmZmVjdHMgPSBFZmZlY3Rz
Ojpub25lKCk7Ci0gICAgICAgICAgICBlZmZlY3RzLmNvbnRyb2xEZXBlbmRlbnQgPSB0cnVlOwot
ICAgICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKLSAgICAgICAg
ICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksIGVmZmVjdHMsCi0gICAgICAgICAgICAgICAg
bG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rp
b25QdHI8dm9pZCo+KG9uZUZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSksCi0gICAgICAgICAgICAg
ICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApKTsKLSAgICAgICAgfSk7Ci0gICAgCi0gICAgdW5zaWduZWQgY2Fs
bENvdW50ID0gMDsKLSAgICBjb21waWxlQW5kUnVuPHZvaWQ+KHByb2MsICZjYWxsQ291bnQpOwot
ICAgIENIRUNLX0VRKGNhbGxDb3VudCwgMTAwdSk7Ci19Ci0KLXZvaWQgdGVzdExJQ01SZWFkc1Bp
bm5lZFdyaXRlc1Bpbm5lZCgpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgZ2VuZXJhdGVM
b29wKAotICAgICAgICBwcm9jLAotICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGxvb3AsIFZhbHVl
KikgLT4gVmFsdWUqIHsKLSAgICAgICAgICAgIEVmZmVjdHMgZWZmZWN0cyA9IEVmZmVjdHM6Om5v
bmUoKTsKLSAgICAgICAgICAgIGVmZmVjdHMud3JpdGVzUGlubmVkID0gdHJ1ZTsKLSAgICAgICAg
ICAgIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBW
b2lkLCBPcmlnaW4oKSwgZWZmZWN0cywKLSAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4obm9P
cEZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSkpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBl
ZmZlY3RzID0gRWZmZWN0czo6bm9uZSgpOwotICAgICAgICAgICAgZWZmZWN0cy5yZWFkc1Bpbm5l
ZCA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gbG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+
KAotICAgICAgICAgICAgICAgIHByb2MsIEludDMyLCBPcmlnaW4oKSwgZWZmZWN0cywKLSAgICAg
ICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4ob25lRnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSwKLSAg
ICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgICAgICB9KTsKLSAgICAKLSAgICB1
bnNpZ25lZCBjYWxsQ291bnQgPSAwOwotICAgIGNvbXBpbGVBbmRSdW48dm9pZD4ocHJvYywgJmNh
bGxDb3VudCk7Ci0gICAgQ0hFQ0tfRVEoY2FsbENvdW50LCAxMDB1KTsKLX0KLQotdm9pZCB0ZXN0
TElDTVJlYWRzV3JpdGVzRGlmZmVyZW50SGVhcHMoKQotewotICAgIFByb2NlZHVyZSBwcm9jOwot
ICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAyKQotICAgICAgICByZXR1cm47Ci0gICAgZ2VuZXJh
dGVMb29wKAotICAgICAgICBwcm9jLAotICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGxvb3AsIFZh
bHVlKikgLT4gVmFsdWUqIHsKLSAgICAgICAgICAgIEVmZmVjdHMgZWZmZWN0cyA9IEVmZmVjdHM6
Om5vbmUoKTsKLSAgICAgICAgICAgIGVmZmVjdHMud3JpdGVzID0gSGVhcFJhbmdlKDY0MzYpOwot
ICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAotICAgICAgICAgICAgICAg
IHByb2MsIFZvaWQsIE9yaWdpbigpLCBlZmZlY3RzLAotICAgICAgICAgICAgICAgIGxvb3AtPmFw
cGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZv
aWQqPihub09wRnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSk7Ci0gICAgICAgICAgICAKLSAgICAg
ICAgICAgIGVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7Ci0gICAgICAgICAgICBlZmZlY3RzLnJl
YWRzID0gSGVhcFJhbmdlKDQ4ODYpOwotICAgICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5l
dzxDQ2FsbFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksIGVm
ZmVjdHMsCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG9uZUZ1bmN0aW9uLCBCM0NDYWxs
UHRyVGFnKSksCi0gICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKLSAgICAgICAgfSk7
Ci0gICAgCi0gICAgdW5zaWduZWQgY2FsbENvdW50ID0gMDsKLSAgICBjb21waWxlQW5kUnVuPHZv
aWQ+KHByb2MsICZjYWxsQ291bnQpOwotICAgIENIRUNLX0VRKGNhbGxDb3VudCwgMXUpOwotfQot
Ci12b2lkIHRlc3RMSUNNUmVhZHNXcml0ZXNPdmVybGFwcGluZ0hlYXBzKCkKLXsKLSAgICBQcm9j
ZWR1cmUgcHJvYzsKLSAgICBnZW5lcmF0ZUxvb3AoCi0gICAgICAgIHByb2MsCi0gICAgICAgIFsm
XSAoQmFzaWNCbG9jayogbG9vcCwgVmFsdWUqKSAtPiBWYWx1ZSogewotICAgICAgICAgICAgRWZm
ZWN0cyBlZmZlY3RzID0gRWZmZWN0czo6bm9uZSgpOwotICAgICAgICAgICAgZWZmZWN0cy53cml0
ZXMgPSBIZWFwUmFuZ2UoNjQzNiwgNzQ0NTgpOwotICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3
PENDYWxsVmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIFZvaWQsIE9yaWdpbigpLCBlZmZl
Y3RzLAotICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihub09wRnVuY3Rpb24sIEIzQ0NhbGxQ
dHJUYWcpKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGVmZmVjdHMgPSBFZmZlY3RzOjpu
b25lKCk7Ci0gICAgICAgICAgICBlZmZlY3RzLnJlYWRzID0gSGVhcFJhbmdlKDQ4ODY0LCA3ODIz
OSk7Ci0gICAgICAgICAgICByZXR1cm4gbG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAotICAg
ICAgICAgICAgICAgIHByb2MsIEludDMyLCBPcmlnaW4oKSwgZWZmZWN0cywKLSAgICAgICAgICAg
ICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NG
dW5jdGlvblB0cjx2b2lkKj4ob25lRnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSwKLSAgICAgICAg
ICAgICAgICBsb29wLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgICAgICB9KTsKLSAgICAKLSAgICB1bnNpZ25l
ZCBjYWxsQ291bnQgPSAwOwotICAgIGNvbXBpbGVBbmRSdW48dm9pZD4ocHJvYywgJmNhbGxDb3Vu
dCk7Ci0gICAgQ0hFQ0tfRVEoY2FsbENvdW50LCAxMDB1KTsKLX0KLQotdm9pZCB0ZXN0TElDTURl
ZmF1bHRDYWxsKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBnZW5lcmF0ZUxvb3AoCi0g
ICAgICAgIHByb2MsCi0gICAgICAgIFsmXSAoQmFzaWNCbG9jayogbG9vcCwgVmFsdWUqKSAtPiBW
YWx1ZSogewotICAgICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigK
LSAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAg
bG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rp
b25QdHI8dm9pZCo+KG9uZUZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSksCi0gICAgICAgICAgICAg
ICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApKTsKLSAgICAgICAgfSk7Ci0gICAgCi0gICAgdW5zaWduZWQgY2Fs
bENvdW50ID0gMDsKLSAgICBjb21waWxlQW5kUnVuPHZvaWQ+KHByb2MsICZjYWxsQ291bnQpOwot
ICAgIENIRUNLX0VRKGNhbGxDb3VudCwgMTAwdSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+
Ci12b2lkIHRlc3RBdG9taWNXZWFrQ0FTKCkKLXsKLSAgICBUeXBlIHR5cGUgPSBOYXRpdmVUcmFp
dHM8VD46OnR5cGU7Ci0gICAgV2lkdGggd2lkdGggPSBOYXRpdmVUcmFpdHM8VD46OndpZHRoOwot
ICAgIAotICAgIGF1dG8gY2hlY2tNeURpc2Fzc2VtYmx5ID0gWyZdIChDb21waWxhdGlvbiYgY29t
cGlsYXRpb24sIGJvb2wgZmVuY2VkKSB7Ci0gICAgICAgIGlmIChpc1g4NigpKSB7Ci0gICAgICAg
ICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImxvY2siKTsKLSAgICAgICAg
ICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAiY21weGNoZyIpOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKGZlbmNlZCkgewotICAgICAgICAgICAgICAgIGNo
ZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAibGRheCIpOwotICAgICAgICAgICAgICAg
IGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAic3RseCIpOwotICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlv
biwgImxkeCIpOwotICAgICAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0
aW9uLCAic3R4Iik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9OwotICAgIAotICAg
IHsKLSAgICAgICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgIEJhc2ljQmxvY2sqIHJlbG9vcCA9IHByb2MuYWRkQmxv
Y2soKTsKLSAgICAgICAgQmFzaWNCbG9jayogZG9uZSA9IHByb2MuYWRkQmxvY2soKTsKLSAgICAg
ICAgCi0gICAgICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSnVtcCwgT3JpZ2luKCkpOwotICAgICAgICByb290LT5z
ZXRTdWNjZXNzb3JzKHJlbG9vcCk7Ci0gICAgICAgIAotICAgICAgICByZWxvb3AtPmFwcGVuZE5l
dzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAotICAgICAgICAg
ICAgcmVsb29wLT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2Ms
IEF0b21pY1dlYWtDQVMsIE9yaWdpbigpLCB3aWR0aCwKLSAgICAgICAgICAgICAgICByZWxvb3At
PmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCi0gICAgICAgICAg
ICAgICAgcmVsb29wLT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhi
ZWVmKSwKLSAgICAgICAgICAgICAgICBwdHIpKTsKLSAgICAgICAgcmVsb29wLT5zZXRTdWNjZXNz
b3JzKGRvbmUsIHJlbG9vcCk7Ci0gICAgICAgIAotICAgICAgICBkb25lLT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOwotICAgICAgICAKLSAgICAgICAgYXV0byBjb2Rl
ID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAgICAgIFQgdmFsdWVbMl07Ci0gICAgICAgIHZhbHVl
WzBdID0gNDI7Ci0gICAgICAgIHZhbHVlWzFdID0gMTM7Ci0gICAgICAgIGludm9rZTx2b2lkPigq
Y29kZSwgdmFsdWUpOwotICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4o
MHhiZWVmKSk7Ci0gICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7Ci0gICAgICAgIGNoZWNr
TXlEaXNhc3NlbWJseSgqY29kZSwgdHJ1ZSk7Ci0gICAgfQotICAgIAotICAgIHsKLSAgICAgICAg
UHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7Ci0gICAgICAgIEJhc2ljQmxvY2sqIHJlbG9vcCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICAg
ICAgQmFzaWNCbG9jayogZG9uZSA9IHByb2MuYWRkQmxvY2soKTsKLSAgICAgICAgCi0gICAgICAg
IFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgSnVtcCwgT3JpZ2luKCkpOwotICAgICAgICByb290LT5zZXRTdWNjZXNzb3Jz
KHJlbG9vcCk7Ci0gICAgICAgIAotICAgICAgICByZWxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4oCi0g
ICAgICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAotICAgICAgICAgICAgcmVsb29wLT5h
cHBlbmROZXc8QXRvbWljVmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIEF0b21pY1dlYWtD
QVMsIE9yaWdpbigpLCB3aWR0aCwKLSAgICAgICAgICAgICAgICByZWxvb3AtPmFwcGVuZEludENv
bnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCi0gICAgICAgICAgICAgICAgcmVsb29w
LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKLSAgICAg
ICAgICAgICAgICBwdHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSgpKSk7Ci0gICAgICAg
IHJlbG9vcC0+c2V0U3VjY2Vzc29ycyhkb25lLCByZWxvb3ApOwotICAgICAgICAKLSAgICAgICAg
ZG9uZS0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKLSAgICAgICAg
Ci0gICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotICAgICAgICBUIHZhbHVl
WzJdOwotICAgICAgICB2YWx1ZVswXSA9IDQyOwotICAgICAgICB2YWx1ZVsxXSA9IDEzOwotICAg
ICAgICBpbnZva2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsKLSAgICAgICAgQ0hFQ0tfRVEodmFsdWVb
MF0sIHN0YXRpY19jYXN0PFQ+KDB4YmVlZikpOwotICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwg
MTMpOwotICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUsIGZhbHNlKTsKLSAgICB9Ci0g
ICAgCi0gICAgewotICAgICAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICAgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICAgICAgQmFzaWNCbG9jayogc3VjYyA9IHByb2Mu
YWRkQmxvY2soKTsKLSAgICAgICAgQmFzaWNCbG9jayogZmFpbCA9IHByb2MuYWRkQmxvY2soKTsK
LSAgICAgICAgCi0gICAgICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdp
bigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKLSAgICAgICAg
ICAgICAgICBwcm9jLCBBdG9taWNXZWFrQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCi0gICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwK
LSAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwg
dHlwZSwgMHhiZWVmKSwKLSAgICAgICAgICAgICAgICBwdHIpKTsKLSAgICAgICAgcm9vdC0+c2V0
U3VjY2Vzc29ycyhzdWNjLCBmYWlsKTsKLSAgICAgICAgCi0gICAgICAgIHN1Y2MtPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBzdG9yZU9wY29kZShHUCwgd2lkdGgp
LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHN1Y2MtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9y
aWdpbigpLCB0eXBlLCAxMDApLAotICAgICAgICAgICAgcHRyKTsKLSAgICAgICAgc3VjYy0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKLSAgICAgICAgCi0gICAgICAg
IGZhaWwtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7Ci0gICAgICAg
IAotICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICAgICAgVCB2YWx1
ZVsyXTsKLSAgICAgICAgdmFsdWVbMF0gPSA0MjsKLSAgICAgICAgdmFsdWVbMV0gPSAxMzsKLSAg
ICAgICAgd2hpbGUgKHZhbHVlWzBdID09IDQyKQotICAgICAgICAgICAgaW52b2tlPHZvaWQ+KCpj
b2RlLCB2YWx1ZSk7Ci0gICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigx
MDApKTsKLSAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKLSAgICAgICAgdmFsdWVbMF0g
PSBzdGF0aWNfY2FzdDxUPigzMDApOwotICAgICAgICBpbnZva2U8dm9pZD4oKmNvZGUsIHZhbHVl
KTsKLSAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDMwMCkpOwotICAg
ICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOwotICAgICAgICBjaGVja015RGlzYXNzZW1ibHko
KmNvZGUsIHRydWUpOwotICAgIH0KLSAgICAKLSAgICB7Ci0gICAgICAgIFByb2NlZHVyZSBwcm9j
OwotICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgICAgICBC
YXNpY0Jsb2NrKiBzdWNjID0gcHJvYy5hZGRCbG9jaygpOwotICAgICAgICBCYXNpY0Jsb2NrKiBm
YWlsID0gcHJvYy5hZGRCbG9jaygpOwotICAgICAgICAKLSAgICAgICAgVmFsdWUqIHB0ciA9IHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAg
ICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4oKSwKLSAgICAgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAotICAgICAgICAgICAgICAgICAg
ICBwcm9jLCBBdG9taWNXZWFrQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCi0gICAgICAgICAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCi0g
ICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigp
LCB0eXBlLCAweGJlZWYpLAotICAgICAgICAgICAgICAgICAgICBwdHIpLAotICAgICAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCBJbnQzMiwgMCkpKTsK
LSAgICAgICAgcm9vdC0+c2V0U3VjY2Vzc29ycyhmYWlsLCBzdWNjKTsKLSAgICAgICAgCi0gICAg
ICAgIHN1Y2MtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBzdG9y
ZU9wY29kZShHUCwgd2lkdGgpLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHN1Y2MtPmFwcGVuZElu
dENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAxMDApLAotICAgICAgICAgICAgcHRyKTsK
LSAgICAgICAgc3VjYy0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsK
LSAgICAgICAgCi0gICAgICAgIGZhaWwtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBP
cmlnaW4oKSk7Ci0gICAgICAgIAotICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9j
KTsKLSAgICAgICAgVCB2YWx1ZVsyXTsKLSAgICAgICAgdmFsdWVbMF0gPSA0MjsKLSAgICAgICAg
dmFsdWVbMV0gPSAxMzsKLSAgICAgICAgd2hpbGUgKHZhbHVlWzBdID09IDQyKQotICAgICAgICAg
ICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7Ci0gICAgICAgIENIRUNLX0VRKHZhbHVlWzBd
LCBzdGF0aWNfY2FzdDxUPigxMDApKTsKLSAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsK
LSAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxUPigzMDApOwotICAgICAgICBpbnZva2U8
dm9pZD4oKmNvZGUsIHZhbHVlKTsKLSAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19j
YXN0PFQ+KDMwMCkpOwotICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOwotICAgICAgICBj
aGVja015RGlzYXNzZW1ibHkoKmNvZGUsIHRydWUpOwotICAgIH0KLSAgICAKLSAgICB7Ci0gICAg
ICAgIFByb2NlZHVyZSBwcm9jOwotICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOwotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNW
YWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgQXRvbWljV2Vha0NBUywgT3JpZ2luKCksIHdp
ZHRoLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdp
bigpLCB0eXBlLCA0MiksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQo
cHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApKSk7Ci0gICAgICAgIAotICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9j
KTsKLSAgICAgICAgVCB2YWx1ZVsyXTsKLSAgICAgICAgdmFsdWVbMF0gPSA0MjsKLSAgICAgICAg
dmFsdWVbMV0gPSAxMzsKLSAgICAgICAgd2hpbGUgKCFpbnZva2U8Ym9vbD4oKmNvZGUsIHZhbHVl
KSkgeyB9Ci0gICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigweGJlZWYp
KTsKLSAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKLSAgICAgICAgCi0gICAgICAgIHZh
bHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKLSAgICAgICAgQ0hFQ0soIWludm9rZTxib29s
PigqY29kZSwgdmFsdWUpKTsKLSAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0
PFQ+KDMwMCkpOwotICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOwotICAgICAgICBjaGVj
a015RGlzYXNzZW1ibHkoKmNvZGUsIHRydWUpOwotICAgIH0KLSAgICAKLSAgICB7Ci0gICAgICAg
IFByb2NlZHVyZSBwcm9jOwotICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOwotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0g
ICAgICAgICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCi0gICAgICAgICAgICAgICAgICAgIHByb2MsIEF0
b21pY1dlYWtDQVMsIE9yaWdpbigpLCB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKLSAgICAgICAgICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4
YmVlZiksCi0gICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCi0gICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKSk7
Ci0gICAgICAgIAotICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICAg
ICAgVCB2YWx1ZVsyXTsKLSAgICAgICAgdmFsdWVbMF0gPSA0MjsKLSAgICAgICAgdmFsdWVbMV0g
PSAxMzsKLSAgICAgICAgd2hpbGUgKGludm9rZTxib29sPigqY29kZSwgdmFsdWUpKSB7IH0KLSAg
ICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDB4YmVlZikpOwotICAgICAg
ICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOwotICAgICAgICAKLSAgICAgICAgdmFsdWVbMF0gPSBz
dGF0aWNfY2FzdDxUPigzMDApOwotICAgICAgICBDSEVDSyhpbnZva2U8Ym9vbD4oKmNvZGUsIHZh
bHVlKSk7Ci0gICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigzMDApKTsK
LSAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKLSAgICAgICAgY2hlY2tNeURpc2Fzc2Vt
Ymx5KCpjb2RlLCB0cnVlKTsKLSAgICB9Ci0gICAgCi0gICAgewotICAgICAgICBQcm9jZWR1cmUg
cHJvYzsKLSAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3Jp
Z2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAotICAgICAg
ICAgICAgICAgIHByb2MsIEF0b21pY1dlYWtDQVMsIE9yaWdpbigpLCB3aWR0aCwKLSAgICAgICAg
ICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIp
LAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigp
LCB0eXBlLCAweGJlZWYpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKLSAgICAg
ICAgICAgICAgICA0MikpOwotICAgICAgICAKLSAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVBy
b2MocHJvYyk7Ci0gICAgICAgIFQgdmFsdWVbMl07Ci0gICAgICAgIHZhbHVlWzBdID0gNDI7Ci0g
ICAgICAgIHZhbHVlWzFdID0gMTM7Ci0gICAgICAgIHdoaWxlICghaW52b2tlPGJvb2w+KCpjb2Rl
LCBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KHZhbHVlKSAtIDQyKSkgeyB9Ci0gICAgICAgIENIRUNL
X0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigweGJlZWYpKTsKLSAgICAgICAgQ0hFQ0tfRVEo
dmFsdWVbMV0sIDEzKTsKLSAgICAgICAgCi0gICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8
VD4oMzAwKTsKLSAgICAgICAgQ0hFQ0soIWludm9rZTxib29sPigqY29kZSwgYml0d2lzZV9jYXN0
PGludHB0cl90Pih2YWx1ZSkgLSA0MikpOwotICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3Rh
dGljX2Nhc3Q8VD4oMzAwKSk7Ci0gICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7Ci0gICAg
ICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwgdHJ1ZSk7Ci0gICAgfQotfQotCi10ZW1wbGF0
ZTx0eXBlbmFtZSBUPgotdm9pZCB0ZXN0QXRvbWljU3Ryb25nQ0FTKCkKLXsKLSAgICBUeXBlIHR5
cGUgPSBOYXRpdmVUcmFpdHM8VD46OnR5cGU7Ci0gICAgV2lkdGggd2lkdGggPSBOYXRpdmVUcmFp
dHM8VD46OndpZHRoOwotICAgIAotICAgIGF1dG8gY2hlY2tNeURpc2Fzc2VtYmx5ID0gWyZdIChD
b21waWxhdGlvbiYgY29tcGlsYXRpb24sIGJvb2wgZmVuY2VkKSB7Ci0gICAgICAgIGlmIChpc1g4
NigpKSB7Ci0gICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImxv
Y2siKTsKLSAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAiY21w
eGNoZyIpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKGZlbmNlZCkgewotICAg
ICAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAibGRheCIpOwot
ICAgICAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAic3RseCIp
OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVj
dGlvbihjb21waWxhdGlvbiwgImxkeCIpOwotICAgICAgICAgICAgICAgIGNoZWNrVXNlc0luc3Ry
dWN0aW9uKGNvbXBpbGF0aW9uLCAic3R4Iik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9OwotICAgIAotICAgIHsKLSAgICAgICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgIEJhc2ljQmxvY2sqIHN1Y2Mg
PSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgIEJhc2ljQmxvY2sqIGZhaWwgPSBwcm9jLmFkZEJs
b2NrKCk7Ci0gICAgICAgIAotICAgICAgICBWYWx1ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwot
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQnJhbmNo
LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAg
ICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBdG9taWNWYWx1ZT4oCi0gICAgICAgICAgICAgICAgICAgIHByb2MsIEF0b21pY1N0
cm9uZ0NBUywgT3JpZ2luKCksIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICByb290LT5hcHBl
bmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAotICAgICAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVm
KSwKLSAgICAgICAgICAgICAgICAgICAgcHRyKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBl
bmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpKSk7Ci0gICAgICAgIHJvb3Qt
PnNldFN1Y2Nlc3NvcnMoc3VjYywgZmFpbCk7Ci0gICAgICAgIAotICAgICAgICBzdWNjLT5hcHBl
bmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgc3RvcmVPcGNvZGUoR1AsIHdp
ZHRoKSwgT3JpZ2luKCksCi0gICAgICAgICAgICBzdWNjLT5hcHBlbmRJbnRDb25zdGFudChwcm9j
LCBPcmlnaW4oKSwgdHlwZSwgMTAwKSwKLSAgICAgICAgICAgIHB0cik7Ci0gICAgICAgIHN1Y2Mt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7Ci0gICAgICAgIAotICAg
ICAgICBmYWlsLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOwotICAg
ICAgICAKLSAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAgICAgIFQg
dmFsdWVbMl07Ci0gICAgICAgIHZhbHVlWzBdID0gNDI7Ci0gICAgICAgIHZhbHVlWzFdID0gMTM7
Ci0gICAgICAgIGludm9rZTx2b2lkPigqY29kZSwgdmFsdWUpOwotICAgICAgICBDSEVDS19FUSh2
YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMTAwKSk7Ci0gICAgICAgIENIRUNLX0VRKHZhbHVlWzFd
LCAxMyk7Ci0gICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKLSAgICAgICAg
aW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7Ci0gICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBz
dGF0aWNfY2FzdDxUPigzMDApKTsKLSAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKLSAg
ICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlLCB0cnVlKTsKLSAgICB9Ci0gICAgCi0gICAg
ewotICAgICAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKLSAgICAgICAgQmFzaWNCbG9jayogc3VjYyA9IHByb2MuYWRkQmxvY2so
KTsKLSAgICAgICAgQmFzaWNCbG9jayogZmFpbCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICAgICAg
Ci0gICAgICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAotICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBF
cXVhbCwgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1Zh
bHVlPigKLSAgICAgICAgICAgICAgICAgICAgcHJvYywgQXRvbWljU3Ryb25nQ0FTLCBPcmlnaW4o
KSwgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHBy
b2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCi0gICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAotICAgICAgICAgICAg
ICAgICAgICBwdHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSgpKSwKLSAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpKSk7
Ci0gICAgICAgIHJvb3QtPnNldFN1Y2Nlc3NvcnMoc3VjYywgZmFpbCk7Ci0gICAgICAgIAotICAg
ICAgICBzdWNjLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgc3Rv
cmVPcGNvZGUoR1AsIHdpZHRoKSwgT3JpZ2luKCksCi0gICAgICAgICAgICBzdWNjLT5hcHBlbmRJ
bnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMTAwKSwKLSAgICAgICAgICAgIHB0cik7
Ci0gICAgICAgIHN1Y2MtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7
Ci0gICAgICAgIAotICAgICAgICBmYWlsLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwg
T3JpZ2luKCkpOwotICAgICAgICAKLSAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJv
Yyk7Ci0gICAgICAgIFQgdmFsdWVbMl07Ci0gICAgICAgIHZhbHVlWzBdID0gNDI7Ci0gICAgICAg
IHZhbHVlWzFdID0gMTM7Ci0gICAgICAgIGludm9rZTx2b2lkPigqY29kZSwgdmFsdWUpOwotICAg
ICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMTAwKSk7Ci0gICAgICAgIENI
RUNLX0VRKHZhbHVlWzFdLCAxMyk7Ci0gICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4o
MzAwKTsKLSAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7Ci0gICAgICAgIENIRUNL
X0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigzMDApKTsKLSAgICAgICAgQ0hFQ0tfRVEodmFs
dWVbMV0sIDEzKTsKLSAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlLCBmYWxzZSk7Ci0g
ICAgfQotICAgIAotICAgIHsKLSAgICAgICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgIEJhc2ljQmxvY2sqIHN1Y2Mg
PSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgIEJhc2ljQmxvY2sqIGZhaWwgPSBwcm9jLmFkZEJs
b2NrKCk7Ci0gICAgICAgIAotICAgICAgICBWYWx1ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwot
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQnJhbmNo
LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAg
ICAgICAgICAgcHJvYywgTm90RXF1YWwsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCi0gICAgICAgICAgICAgICAgICAgIHByb2MsIEF0b21p
Y1N0cm9uZ0NBUywgT3JpZ2luKCksIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICByb290LT5h
cHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAotICAgICAgICAgICAg
ICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhi
ZWVmKSwKLSAgICAgICAgICAgICAgICAgICAgcHRyKSwKLSAgICAgICAgICAgICAgICByb290LT5h
cHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpKSk7Ci0gICAgICAgIHJv
b3QtPnNldFN1Y2Nlc3NvcnMoZmFpbCwgc3VjYyk7Ci0gICAgICAgIAotICAgICAgICBzdWNjLT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgc3RvcmVPcGNvZGUoR1As
IHdpZHRoKSwgT3JpZ2luKCksCi0gICAgICAgICAgICBzdWNjLT5hcHBlbmRJbnRDb25zdGFudChw
cm9jLCBPcmlnaW4oKSwgdHlwZSwgMTAwKSwKLSAgICAgICAgICAgIHB0cik7Ci0gICAgICAgIHN1
Y2MtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7Ci0gICAgICAgIAot
ICAgICAgICBmYWlsLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOwot
ICAgICAgICAKLSAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAgICAg
IFQgdmFsdWVbMl07Ci0gICAgICAgIHZhbHVlWzBdID0gNDI7Ci0gICAgICAgIHZhbHVlWzFdID0g
MTM7Ci0gICAgICAgIGludm9rZTx2b2lkPigqY29kZSwgdmFsdWUpOwotICAgICAgICBDSEVDS19F
USh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMTAwKSk7Ci0gICAgICAgIENIRUNLX0VRKHZhbHVl
WzFdLCAxMyk7Ci0gICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKLSAgICAg
ICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7Ci0gICAgICAgIENIRUNLX0VRKHZhbHVlWzBd
LCBzdGF0aWNfY2FzdDxUPigzMDApKTsKLSAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsK
LSAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlLCB0cnVlKTsKLSAgICB9Ci0gICAgCi0g
ICAgewotICAgICAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAg
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXRvbWljVmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIEF0b21pY1N0cm9uZ0NBUywg
T3JpZ2luKCksIHdpZHRoLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50
KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5k
SW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCi0gICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApKSk7Ci0gICAgICAgIAotICAgICAgICBhdXRvIGNvZGUgPSBjb21w
aWxlUHJvYyhwcm9jKTsKLSAgICAgICAgVCB2YWx1ZVsyXTsKLSAgICAgICAgdmFsdWVbMF0gPSA0
MjsKLSAgICAgICAgdmFsdWVbMV0gPSAxMzsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPHR5cGVu
YW1lIE5hdGl2ZVRyYWl0czxUPjo6Q2Fub25pY2FsVHlwZT4oKmNvZGUsIHZhbHVlKSwgNDIpOwot
ICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMHhiZWVmKSk7Ci0gICAg
ICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7Ci0gICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nh
c3Q8VD4oMzAwKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPHR5cGVuYW1lIE5hdGl2ZVRyYWl0
czxUPjo6Q2Fub25pY2FsVHlwZT4oKmNvZGUsIHZhbHVlKSwgc3RhdGljX2Nhc3Q8dHlwZW5hbWUg
TmF0aXZlVHJhaXRzPFQ+OjpDYW5vbmljYWxUeXBlPihzdGF0aWNfY2FzdDxUPigzMDApKSk7Ci0g
ICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigzMDApKTsKLSAgICAgICAg
Q0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKLSAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxU
PigtMSk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTx0eXBlbmFtZSBOYXRpdmVUcmFpdHM8VD46
OkNhbm9uaWNhbFR5cGU+KCpjb2RlLCB2YWx1ZSksIHN0YXRpY19jYXN0PHR5cGVuYW1lIE5hdGl2
ZVRyYWl0czxUPjo6Q2Fub25pY2FsVHlwZT4oc3RhdGljX2Nhc3Q8VD4oLTEpKSk7Ci0gICAgICAg
IENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigtMSkpOwotICAgICAgICBDSEVDS19F
USh2YWx1ZVsxXSwgMTMpOwotICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUsIHRydWUp
OwotICAgIH0KLSAgICAKLSAgICB7Ci0gICAgICAgIC8vIFRlc3QgZm9yIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk4NjcuCi0gICAgICAgIAotICAgICAgICBQcm9j
ZWR1cmUgcHJvYzsKLSAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
LSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAg
ICAgICAgICAgIHByb2MsIEJpdFhvciwgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKLSAgICAgICAgICAgICAgICAgICAgcHJvYywgQXRvbWlj
U3Ryb25nQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgIHJvb3QtPmFw
cGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCi0gICAgICAgICAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJl
ZWYpLAotICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAotICAgICAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAxKSkpOwot
ICAgICAgICAKLSAgICAgICAgdHlwZW5hbWUgTmF0aXZlVHJhaXRzPFQ+OjpDYW5vbmljYWxUeXBl
IG9uZSA9IDE7Ci0gICAgICAgIAotICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9j
KTsKLSAgICAgICAgVCB2YWx1ZVsyXTsKLSAgICAgICAgdmFsdWVbMF0gPSA0MjsKLSAgICAgICAg
dmFsdWVbMV0gPSAxMzsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPHR5cGVuYW1lIE5hdGl2ZVRy
YWl0czxUPjo6Q2Fub25pY2FsVHlwZT4oKmNvZGUsIHZhbHVlKSwgNDIgXiBvbmUpOwotICAgICAg
ICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMHhiZWVmKSk7Ci0gICAgICAgIENI
RUNLX0VRKHZhbHVlWzFdLCAxMyk7Ci0gICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4o
MzAwKTsKLSAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPHR5cGVuYW1lIE5hdGl2ZVRyYWl0czxUPjo6
Q2Fub25pY2FsVHlwZT4oKmNvZGUsIHZhbHVlKSwgc3RhdGljX2Nhc3Q8dHlwZW5hbWUgTmF0aXZl
VHJhaXRzPFQ+OjpDYW5vbmljYWxUeXBlPihzdGF0aWNfY2FzdDxUPigzMDApKSBeIG9uZSk7Ci0g
ICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigzMDApKTsKLSAgICAgICAg
Q0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKLSAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxU
PigtMSk7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTx0eXBlbmFtZSBOYXRpdmVUcmFpdHM8VD46
OkNhbm9uaWNhbFR5cGU+KCpjb2RlLCB2YWx1ZSksIHN0YXRpY19jYXN0PHR5cGVuYW1lIE5hdGl2
ZVRyYWl0czxUPjo6Q2Fub25pY2FsVHlwZT4oc3RhdGljX2Nhc3Q8VD4oLTEpKSBeIG9uZSk7Ci0g
ICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigtMSkpOwotICAgICAgICBD
SEVDS19FUSh2YWx1ZVsxXSwgMTMpOwotICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUs
IHRydWUpOwotICAgIH0KLSAgICAKLSAgICB7Ci0gICAgICAgIFByb2NlZHVyZSBwcm9jOwotICAg
ICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywg
RXF1YWwsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNW
YWx1ZT4oCi0gICAgICAgICAgICAgICAgICAgIHByb2MsIEF0b21pY1N0cm9uZ0NBUywgT3JpZ2lu
KCksIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChw
cm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAotICAgICAgICAgICAgICAgICAgICByb290LT5hcHBl
bmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKLSAgICAgICAgICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJ
bnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpKSk7Ci0gICAgICAgIAotICAgICAg
ICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICAgICAgVCB2YWx1ZVsyXTsKLSAg
ICAgICAgdmFsdWVbMF0gPSA0MjsKLSAgICAgICAgdmFsdWVbMV0gPSAxMzsKLSAgICAgICAgQ0hF
Q0soaW52b2tlPGJvb2w+KCpjb2RlLCB2YWx1ZSkpOwotICAgICAgICBDSEVDS19FUSh2YWx1ZVsw
XSwgc3RhdGljX2Nhc3Q8VD4oMHhiZWVmKSk7Ci0gICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAx
Myk7Ci0gICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKLSAgICAgICAgQ0hF
Q0soIWludm9rZTxib29sPigqY29kZSwgdmFsdWUpKTsKLSAgICAgICAgQ0hFQ0tfRVEodmFsdWVb
MF0sIHN0YXRpY19jYXN0PFQ+KDMwMCkpOwotICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMp
OwotICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUsIHRydWUpOwotICAgIH0KLSAgICAK
LSAgICB7Ci0gICAgICAgIFByb2NlZHVyZSBwcm9jOwotICAgICAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOwotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAg
ICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAotICAg
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgICAg
IHByb2MsIE5vdEVxdWFsLCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEF0b21pY1ZhbHVlPigKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb2MsIEF0b21p
Y1N0cm9uZ0NBUywgT3JpZ2luKCksIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgcm9v
dC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0
eXBlLCAweGJlZWYpLAotICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwK
LSAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2lu
KCksIHR5cGUsIDQyKSksCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgYXV0byBj
b2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAgICAgIFQgdmFsdWVbMl07Ci0gICAgICAgIHZh
bHVlWzBdID0gNDI7Ci0gICAgICAgIHZhbHVlWzFdID0gMTM7Ci0gICAgICAgIENIRUNLKGludm9r
ZTxib29sPigqY29kZSwgdmFsdWUpKTsKLSAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRp
Y19jYXN0PFQ+KDB4YmVlZikpOwotICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOwotICAg
ICAgICB2YWx1ZVswXSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7Ci0gICAgICAgIENIRUNLKCFpbnZv
a2U8Ym9vbD4oKmNvZGUsICZ2YWx1ZSkpOwotICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3Rh
dGljX2Nhc3Q8VD4oMzAwKSk7Ci0gICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7Ci0gICAg
ICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwgdHJ1ZSk7Ci0gICAgfQotfQotCi10ZW1wbGF0
ZTx0eXBlbmFtZSBUPgotdm9pZCB0ZXN0QXRvbWljWGNoZyhCMzo6T3Bjb2RlIG9wY29kZSkKLXsK
LSAgICBUeXBlIHR5cGUgPSBOYXRpdmVUcmFpdHM8VD46OnR5cGU7Ci0gICAgV2lkdGggd2lkdGgg
PSBOYXRpdmVUcmFpdHM8VD46OndpZHRoOwotICAgIAotICAgIGF1dG8gZG9UaGVNYXRoID0gWyZd
IChUJiBtZW1vcnksIFQgb3BlcmFuZCkgLT4gVCB7Ci0gICAgICAgIFQgb2xkVmFsdWUgPSBtZW1v
cnk7Ci0gICAgICAgIHN3aXRjaCAob3Bjb2RlKSB7Ci0gICAgICAgIGNhc2UgQXRvbWljWGNoZ0Fk
ZDoKLSAgICAgICAgICAgIG1lbW9yeSArPSBvcGVyYW5kOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKLSAgICAgICAgICAgIG1lbW9yeSAmPSBvcGVyYW5k
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQXRvbWljWGNoZ09yOgotICAgICAg
ICAgICAgbWVtb3J5IHw9IG9wZXJhbmQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBBdG9taWNYY2hnU3ViOgotICAgICAgICAgICAgbWVtb3J5IC09IG9wZXJhbmQ7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBBdG9taWNYY2hnWG9yOgotICAgICAgICAgICAgbWVt
b3J5IF49IG9wZXJhbmQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBBdG9taWNY
Y2hnOgotICAgICAgICAgICAgbWVtb3J5ID0gb3BlcmFuZDsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gb2xkVmFsdWU7Ci0gICAgfTsKLSAgICAKLSAg
ICBhdXRvIG9sZFZhbHVlID0gWyZdIChUIG1lbW9yeSwgVCBvcGVyYW5kKSAtPiBUIHsKLSAgICAg
ICAgcmV0dXJuIGRvVGhlTWF0aChtZW1vcnksIG9wZXJhbmQpOwotICAgIH07Ci0gICAgCi0gICAg
YXV0byBuZXdWYWx1ZSA9IFsmXSAoVCBtZW1vcnksIFQgb3BlcmFuZCkgLT4gVCB7Ci0gICAgICAg
IGRvVGhlTWF0aChtZW1vcnksIG9wZXJhbmQpOwotICAgICAgICByZXR1cm4gbWVtb3J5OwotICAg
IH07Ci0gICAgCi0gICAgYXV0byBjaGVja015RGlzYXNzZW1ibHkgPSBbJl0gKENvbXBpbGF0aW9u
JiBjb21waWxhdGlvbiwgYm9vbCBmZW5jZWQpIHsKLSAgICAgICAgaWYgKGlzWDg2KCkpCi0gICAg
ICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImxvY2siKTsKLSAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAoZmVuY2VkKSB7Ci0gICAgICAgICAgICAgICAgY2hl
Y2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJsZGF4Iik7Ci0gICAgICAgICAgICAgICAg
Y2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJzdGx4Iik7Ci0gICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9u
LCAibGR4Iik7Ci0gICAgICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRp
b24sICJzdHgiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH07Ci0gICAgCi0gICAg
ewotICAgICAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8
QXRvbWljVmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIG9wY29kZSwgT3JpZ2luKCksIHdp
ZHRoLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdp
bigpLCB0eXBlLCAxKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKTsKLSAgICAK
LSAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Ci0gICAgICAgIFQgdmFsdWVb
Ml07Ci0gICAgICAgIHZhbHVlWzBdID0gNTsKLSAgICAgICAgdmFsdWVbMV0gPSAxMDA7Ci0gICAg
ICAgIENIRUNLX0VRKGludm9rZTxUPigqY29kZSwgdmFsdWUpLCBvbGRWYWx1ZSg1LCAxKSk7Ci0g
ICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBuZXdWYWx1ZSg1LCAxKSk7Ci0gICAgICAgIENIRUNL
X0VRKHZhbHVlWzFdLCAxMDApOwotICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUsIHRy
dWUpOwotICAgIH0KLSAgICAKLSAgICB7Ci0gICAgICAgIFByb2NlZHVyZSBwcm9jOwotICAgICAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJv
Yywgb3Bjb2RlLCBPcmlnaW4oKSwgd2lkdGgsCi0gICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5k
SW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKLSAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCkpKTsKLSAgICAKLSAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2Mo
cHJvYyk7Ci0gICAgICAgIFQgdmFsdWVbMl07Ci0gICAgICAgIHZhbHVlWzBdID0gNTsKLSAgICAg
ICAgdmFsdWVbMV0gPSAxMDA7Ci0gICAgICAgIENIRUNLX0VRKGludm9rZTxUPigqY29kZSwgdmFs
dWUpLCBvbGRWYWx1ZSg1LCA0MikpOwotICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgbmV3VmFs
dWUoNSwgNDIpKTsKLSAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEwMCk7Ci0gICAgICAgIGNo
ZWNrTXlEaXNhc3NlbWJseSgqY29kZSwgdHJ1ZSk7Ci0gICAgfQotICAgIAotICAgIHsKLSAgICAg
ICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCi0gICAgICAgICAg
ICBwcm9jLCBvcGNvZGUsIE9yaWdpbigpLCB3aWR0aCwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCi0gICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCkpOwotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVy
biwgT3JpZ2luKCkpOwotICAgIAotICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9j
KTsKLSAgICAgICAgVCB2YWx1ZVsyXTsKLSAgICAgICAgdmFsdWVbMF0gPSA1OwotICAgICAgICB2
YWx1ZVsxXSA9IDEwMDsKLSAgICAgICAgaW52b2tlPFQ+KCpjb2RlLCB2YWx1ZSk7Ci0gICAgICAg
IENIRUNLX0VRKHZhbHVlWzBdLCBuZXdWYWx1ZSg1LCA0MikpOwotICAgICAgICBDSEVDS19FUSh2
YWx1ZVsxXSwgMTAwKTsKLSAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlLCB0cnVlKTsK
LSAgICB9Ci0gICAgCi0gICAgewotICAgICAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICAgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEF0b21pY1ZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIG9wY29kZSwgT3JpZ2luKCksIHdpZHRo
LAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5
cGUsIDQyKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKLSAgICAgICAgICAgIDAsIEhl
YXBSYW5nZSg0MiksIEhlYXBSYW5nZSgpKTsKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKLSAgICAKLSAgICAgICAgYXV0byBjb2RlID0gY29t
cGlsZVByb2MocHJvYyk7Ci0gICAgICAgIFQgdmFsdWVbMl07Ci0gICAgICAgIHZhbHVlWzBdID0g
NTsKLSAgICAgICAgdmFsdWVbMV0gPSAxMDA7Ci0gICAgICAgIGludm9rZTxUPigqY29kZSwgdmFs
dWUpOwotICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgbmV3VmFsdWUoNSwgNDIpKTsKLSAgICAg
ICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEwMCk7Ci0gICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgq
Y29kZSwgZmFsc2UpOwotICAgIH0KLX0KLQotdm9pZCB0ZXN0RGVwZW5kMzIoKQotewotICAgIFBy
b2NlZHVyZSBwcm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0g
ICAgVmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBWYWx1ZSogZmlyc3QgPSByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgcHRy
LCAwKTsKLSAgICBWYWx1ZSogc2Vjb25kID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigK
LSAgICAgICAgcHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwgcHRyLAotICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBa
RXh0MzIsIE9yaWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgRGVwZW5kLCBPcmlnaW4oKSwgZmlyc3QpKSksCi0gICAgICAgIDQpOwotICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgZmlyc3QsIHNl
Y29uZCkpOwotICAgIAotICAgIGludDMyX3QgdmFsdWVzWzJdOwotICAgIHZhbHVlc1swXSA9IDQy
OwotICAgIHZhbHVlc1sxXSA9IDB4YmVlZjsKLSAgICAKLSAgICBhdXRvIGNvZGUgPSBjb21waWxl
UHJvYyhwcm9jKTsKLSAgICBpZiAoaXNBUk02NCgpKQotICAgICAgICBjaGVja1VzZXNJbnN0cnVj
dGlvbigqY29kZSwgImVvciIpOwotICAgIGVsc2UgaWYgKGlzWDg2KCkpIHsKLSAgICAgICAgY2hl
Y2tEb2VzTm90VXNlSW5zdHJ1Y3Rpb24oKmNvZGUsICJtZmVuY2UiKTsKLSAgICAgICAgY2hlY2tE
b2VzTm90VXNlSW5zdHJ1Y3Rpb24oKmNvZGUsICJsb2NrIik7Ci0gICAgfQotICAgIENIRUNLX0VR
KGludm9rZTxpbnQzMl90PigqY29kZSwgdmFsdWVzKSwgNDIgKyAweGJlZWYpOwotfQotCi12b2lk
IHRlc3REZXBlbmQ2NCgpCi17Ci0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OwotICAgIFZhbHVlKiBmaXJzdCA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywg
TG9hZCwgSW50NjQsIE9yaWdpbigpLCBwdHIsIDApOwotICAgIFZhbHVlKiBzZWNvbmQgPSByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICBwcm9jLCBMb2FkLCBJbnQ2NCwgT3Jp
Z2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9j
LCBBZGQsIE9yaWdpbigpLCBwdHIsCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIERlcGVuZCwgT3JpZ2luKCksIGZpcnN0KSksCi0gICAgICAgIDgpOwotICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgZmlyc3QsIHNl
Y29uZCkpOwotICAgIAotICAgIGludDY0X3QgdmFsdWVzWzJdOwotICAgIHZhbHVlc1swXSA9IDQy
OwotICAgIHZhbHVlc1sxXSA9IDB4YmVlZjsKLSAgICAKLSAgICBhdXRvIGNvZGUgPSBjb21waWxl
UHJvYyhwcm9jKTsKLSAgICBpZiAoaXNBUk02NCgpKQotICAgICAgICBjaGVja1VzZXNJbnN0cnVj
dGlvbigqY29kZSwgImVvciIpOwotICAgIGVsc2UgaWYgKGlzWDg2KCkpIHsKLSAgICAgICAgY2hl
Y2tEb2VzTm90VXNlSW5zdHJ1Y3Rpb24oKmNvZGUsICJtZmVuY2UiKTsKLSAgICAgICAgY2hlY2tE
b2VzTm90VXNlSW5zdHJ1Y3Rpb24oKmNvZGUsICJsb2NrIik7Ci0gICAgfQotICAgIENIRUNLX0VR
KGludm9rZTxpbnQ2NF90PigqY29kZSwgdmFsdWVzKSwgNDIgKyAweGJlZWYpOwotfQotCi12b2lk
IHRlc3RXYXNtQm91bmRzQ2hlY2sodW5zaWduZWQgb2Zmc2V0KQotewotICAgIFByb2NlZHVyZSBw
cm9jOwotICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAxKQotICAgICAgICByZXR1cm47Ci0gICAg
R1BSUmVnIHBpbm5lZCA9IEdQUkluZm86OmFyZ3VtZW50R1BSMTsKLSAgICBwcm9jLnBpblJlZ2lz
dGVyKHBpbm5lZCk7Ci0KLSAgICBwcm9jLnNldFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvcihbPV0g
KENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgcGlubmVkR1BSKSB7Ci0gICAgICAgIENIRUNLX0VR
KHBpbm5lZEdQUiwgcGlubmVkKTsKLQotICAgICAgICAvLyBUaGlzIHNob3VsZCBhbHdheXMgd29y
ayBiZWNhdXNlIGEgZnVuY3Rpb24gdGhpcyBzaW1wbGUgc2hvdWxkIG5ldmVyIGhhdmUgY2FsbGVl
Ci0gICAgICAgIC8vIHNhdmVzLgotICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMig0MiksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKLSAgICAgICAgaml0LmVtaXRG
dW5jdGlvbkVwaWxvZ3VlKCk7Ci0gICAgICAgIGppdC5yZXQoKTsKLSAgICB9KTsKLQotICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGxlZnQgPSByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7Ci0gICAgaWYgKHBvaW50ZXJUeXBlKCkgIT0gSW50MzIpCi0gICAgICAgIGxl
ZnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwgbGVmdCk7
Ci0gICAgcm9vdC0+YXBwZW5kTmV3PFdhc21Cb3VuZHNDaGVja1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgcGlubmVkLCBsZWZ0LCBvZmZzZXQpOwotICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMHg0Mik7Ci0gICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7Ci0KLSAg
ICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKLSAgICB1aW50MzJfdCBib3VuZCA9IDIg
KyBvZmZzZXQ7Ci0gICAgYXV0byBjb21wdXRlUmVzdWx0ID0gWyZdICh1aW50MzJfdCBpbnB1dCkg
ewotICAgICAgICByZXR1cm4gaW5wdXQgKyBvZmZzZXQgPCBib3VuZCA/IDB4NDIgOiA0MjsKLSAg
ICB9OwotCi0gICAgQ0hFQ0tfRVEoaW52b2tlPGludDMyX3Q+KCpjb2RlLCAxLCBib3VuZCksIGNv
bXB1dGVSZXN1bHQoMSkpOwotICAgIENIRUNLX0VRKGludm9rZTxpbnQzMl90PigqY29kZSwgMywg
Ym91bmQpLCBjb21wdXRlUmVzdWx0KDMpKTsKLSAgICBDSEVDS19FUShpbnZva2U8aW50MzJfdD4o
KmNvZGUsIDIsIGJvdW5kKSwgY29tcHV0ZVJlc3VsdCgyKSk7Ci19Ci0KLXZvaWQgdGVzdFdhc21B
ZGRyZXNzKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBHUFJSZWcgcGlubmVkR1BSID0g
R1BSSW5mbzo6YXJndW1lbnRHUFIyOwotICAgIHByb2MucGluUmVnaXN0ZXIocGlubmVkR1BSKTsK
LQotICAgIHVuc2lnbmVkIGxvb3BDb3VudCA9IDEwMDsKLSAgICBWZWN0b3I8dW5zaWduZWQ+IHZh
bHVlcyhsb29wQ291bnQpOwotICAgIHVuc2lnbmVkIG51bVRvU3RvcmUgPSA0MjsKLQotICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogaGVhZGVy
ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGJvZHkgPSBwcm9jLmFkZEJsb2Nr
KCk7Ci0gICAgQmFzaWNCbG9jayogY29udGludWF0aW9uID0gcHJvYy5hZGRCbG9jaygpOwotCi0g
ICAgLy8gUm9vdAotICAgIFZhbHVlKiBsb29wQ291bnRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwotICAgIFZhbHVl
KiB2YWx1ZVRvU3RvcmUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmln
aW4oKSwgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpKTsKLSAgICBVcHNpbG9uVmFsdWUqIGJlZ2luVXBzaWxvbiA9
IHJvb3QtPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KHByb2MsIE9yaWdpbigpLCByb290LT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwotICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4oKSwgaGVhZGVyKTsKLQotICAgIC8v
IEhlYWRlcgotICAgIFZhbHVlKiBpbmRleFBoaSA9IGhlYWRlci0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBQaGksIEludDMyLCBPcmlnaW4oKSk7Ci0gICAgaGVhZGVyLT5hcHBlbmROZXdDb250cm9s
VmFsdWUocHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKLSAgICAgICAgaGVhZGVyLT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEJlbG93LCBPcmlnaW4oKSwgaW5kZXhQaGksIGxvb3BDb3VudFZhbHVlKSwK
LSAgICAgICAgYm9keSwgY29udGludWF0aW9uKTsKLQotICAgIC8vIEJvZHkKLSAgICBWYWx1ZSog
cG9pbnRlciA9IGJvZHktPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgaW5k
ZXhQaGksCi0gICAgICAgIGJvZHktPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBzaXplb2YodW5zaWduZWQpKSk7Ci0gICAgcG9pbnRlciA9IGJvZHktPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgWkV4dDMyLCBPcmlnaW4oKSwgcG9pbnRlcik7Ci0gICAgYm9keS0+YXBwZW5k
TmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHZhbHVlVG9TdG9yZSwKLSAg
ICAgICAgYm9keS0+YXBwZW5kTmV3PFdhc21BZGRyZXNzVmFsdWU+KHByb2MsIE9yaWdpbigpLCBw
b2ludGVyLCBwaW5uZWRHUFIpLCAwKTsKLSAgICBVcHNpbG9uVmFsdWUqIGluY1Vwc2lsb24gPSBi
b2R5LT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4oKSwKLSAgICAgICAgYm9k
eS0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBpbmRleFBoaSwKLSAgICAg
ICAgICAgIGJvZHktPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSkp
OwotICAgIGJvZHktPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4oKSwg
aGVhZGVyKTsKLQotICAgIC8vIENvbnRpbnVhdGlvbgotICAgIGNvbnRpbnVhdGlvbi0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCkpOwotCi0gICAgYmVnaW5VcHNp
bG9uLT5zZXRQaGkoaW5kZXhQaGkpOwotICAgIGluY1Vwc2lsb24tPnNldFBoaShpbmRleFBoaSk7
Ci0KLQotICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwotICAgIGludm9rZTx2b2lk
PigqY29kZSwgbG9vcENvdW50LCBudW1Ub1N0b3JlLCB2YWx1ZXMuZGF0YSgpKTsKLSAgICBmb3Ig
KHVuc2lnbmVkIHZhbHVlIDogdmFsdWVzKQotICAgICAgICBDSEVDS19FUShudW1Ub1N0b3JlLCB2
YWx1ZSk7Ci19Ci0KLXZvaWQgdGVzdEZhc3RUTFNMb2FkKCkKLXsKLSNpZiBFTkFCTEUoRkFTVF9U
TFNfSklUKQotICAgIF9wdGhyZWFkX3NldHNwZWNpZmljX2RpcmVjdChXVEZfVEVTVElOR19LRVks
IGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigweGJlZWYpKSk7Ci0g
ICAgCi0gICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKLSAgICAKLSAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5h
cHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSk7
Ci0gICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0
ZXJzKCkpOwotICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKLSAgICAgICAgWyZdIChDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsK
LSAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2go
aml0KTsKLSAgICAgICAgICAgIGppdC5sb2FkRnJvbVRMU1B0cihmYXN0VExTT2Zmc2V0Rm9yS2V5
KFdURl9URVNUSU5HX0tFWSksIHBhcmFtc1swXS5ncHIoKSk7Ci0gICAgICAgIH0pOwotCi0gICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBwYXRjaHBvaW50
KTsKLSAgICAKLSAgICBDSEVDS19FUShjb21waWxlQW5kUnVuPHVpbnRwdHJfdD4ocHJvYyksIHN0
YXRpY19jYXN0PHVpbnRwdHJfdD4oMHhiZWVmKSk7Ci0jZW5kaWYKLX0KLQotdm9pZCB0ZXN0RmFz
dFRMU1N0b3JlKCkKLXsKLSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotICAgIFByb2NlZHVyZSBw
cm9jOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBQYXRj
aHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVl
Pihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7Ci0gICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3Rl
clNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwotICAgIHBhdGNocG9pbnQtPm51bUdQU2Ny
YXRjaFJlZ2lzdGVycyA9IDE7Ci0gICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAotICAgICAg
ICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMm
IHBhcmFtcykgewotICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFs
bG93U2NyYXRjaChqaXQpOwotICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2ggPSBwYXJhbXMuZ3BT
Y3JhdGNoKDApOwotICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoMHhkZWFkKSwgc2NyYXRjaCk7Ci0gICAgICAgICAgICBqaXQuc3RvcmVUb1RMU1B0cihzY3Jh
dGNoLCBmYXN0VExTT2Zmc2V0Rm9yS2V5KFdURl9URVNUSU5HX0tFWSkpOwotICAgICAgICB9KTsK
LQotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigp
KTsKLQotICAgIGNvbXBpbGVBbmRSdW48dm9pZD4ocHJvYyk7Ci0gICAgQ0hFQ0tfRVEoYml0d2lz
ZV9jYXN0PHVpbnRwdHJfdD4oX3B0aHJlYWRfZ2V0c3BlY2lmaWNfZGlyZWN0KFdURl9URVNUSU5H
X0tFWSkpLCBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDB4ZGVhZCkpOwotI2VuZGlmCi19Ci0KLU5F
VkVSX0lOTElORSBib29sIGRvdWJsZUVxKGRvdWJsZSBhLCBkb3VibGUgYikgeyByZXR1cm4gYSA9
PSBiOyB9Ci1ORVZFUl9JTkxJTkUgYm9vbCBkb3VibGVOZXEoZG91YmxlIGEsIGRvdWJsZSBiKSB7
IHJldHVybiBhICE9IGI7IH0KLU5FVkVSX0lOTElORSBib29sIGRvdWJsZUd0KGRvdWJsZSBhLCBk
b3VibGUgYikgeyByZXR1cm4gYSA+IGI7IH0KLU5FVkVSX0lOTElORSBib29sIGRvdWJsZUd0ZShk
b3VibGUgYSwgZG91YmxlIGIpIHsgcmV0dXJuIGEgPj0gYjsgfQotTkVWRVJfSU5MSU5FIGJvb2wg
ZG91YmxlTHQoZG91YmxlIGEsIGRvdWJsZSBiKSB7IHJldHVybiBhIDwgYjsgfQotTkVWRVJfSU5M
SU5FIGJvb2wgZG91YmxlTHRlKGRvdWJsZSBhLCBkb3VibGUgYikgeyByZXR1cm4gYSA8PSBiOyB9
Ci0KLXZvaWQgdGVzdERvdWJsZUxpdGVyYWxDb21wYXJpc29uKGRvdWJsZSBhLCBkb3VibGUgYikK
LXsKLSAgICB1c2luZyBUZXN0ID0gc3RkOjp0dXBsZTxCMzo6T3Bjb2RlLCBib29sICgqKShkb3Vi
bGUsIGRvdWJsZSk+OwotICAgIFN0ZExpc3Q8VGVzdD4gdGVzdHMgPSB7Ci0gICAgICAgIFRlc3Qg
eyBOb3RFcXVhbCwgZG91YmxlTmVxIH0sCi0gICAgICAgIFRlc3QgeyBFcXVhbCwgZG91YmxlRXEg
fSwKLSAgICAgICAgVGVzdCB7IEVxdWFsT3JVbm9yZGVyZWQsIGRvdWJsZUVxIH0sCi0gICAgICAg
IFRlc3QgeyBHcmVhdGVyVGhhbiwgZG91YmxlR3QgfSwKLSAgICAgICAgVGVzdCB7IEdyZWF0ZXJF
cXVhbCwgZG91YmxlR3RlIH0sCi0gICAgICAgIFRlc3QgeyBMZXNzVGhhbiwgZG91YmxlTHQgfSwK
LSAgICAgICAgVGVzdCB7IExlc3NFcXVhbCwgZG91YmxlTHRlIH0sCi0gICAgfTsKLQotICAgIGZv
ciAoY29uc3QgVGVzdCYgdGVzdCA6IHRlc3RzKSB7Ci0gICAgICAgIFByb2NlZHVyZSBwcm9jOwot
ICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgICAgICBWYWx1
ZSogdmFsdWVBID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBhKTsKLSAgICAgICAgVmFsdWUqIHZhbHVlQiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERv
dWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7Ci0KLSAgICAgICAgLy8gVGhpcyBpcyBoZXJl
IGp1c3QgdG8gbWFrZSByZWR1Y2VEb3VibGVUb0Zsb2F0IGRvIHRoaW5ncy4KLSAgICAgICAgVmFs
dWUqIHZhbHVlQyA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmln
aW4oKSwgMC4wKTsKLSAgICAgICAgVmFsdWUqIHZhbHVlQXNGbG9hdCA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIHZhbHVlQyk7Ci0KLSAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEJpdEFuZCwgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgc3RkOjpnZXQ8MD4odGVzdCksIE9yaWdpbigpLCB2YWx1ZUEsIHZhbHVlQiks
Ci0gICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRXF1YWws
IE9yaWdpbigpLCB2YWx1ZUFzRmxvYXQsIHZhbHVlQXNGbG9hdCkpKTsKLQotICAgICAgICBDSEVD
SyghIWNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYykgPT0gc3RkOjpnZXQ8MT4odGVzdCkoYSwg
YikpOwotICAgIH0KLX0KLQotdm9pZCB0ZXN0RmxvYXRFcXVhbE9yVW5vcmRlcmVkRm9sZGluZygp
Ci17Ci0gICAgZm9yIChhdXRvJiBmaXJzdCA6IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4o
KSkgewotICAgICAgICBmb3IgKGF1dG8mIHNlY29uZCA6IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxm
bG9hdD4oKSkgewotICAgICAgICAgICAgZmxvYXQgYSA9IGZpcnN0LnZhbHVlOwotICAgICAgICAg
ICAgZmxvYXQgYiA9IHNlY29uZC52YWx1ZTsKLSAgICAgICAgICAgIGJvb2wgZXhwZWN0ZWRSZXN1
bHQgPSAoYSA9PSBiKSB8fCBzdGQ6OmlzdW5vcmRlcmVkKGEsIGIpOwotICAgICAgICAgICAgUHJv
Y2VkdXJlIHByb2M7Ci0gICAgICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOwotICAgICAgICAgICAgVmFsdWUqIGNvbnN0QSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdEZs
b2F0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKLSAgICAgICAgICAgIFZhbHVlKiBjb25zdEIg
PSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7Ci0K
LSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAotICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAg
ICAgICAgICAgICAgIHByb2MsIEVxdWFsT3JVbm9yZGVyZWQsIE9yaWdpbigpLAotICAgICAgICAg
ICAgICAgICAgICBjb25zdEEsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0QikpOwotICAgICAg
ICAgICAgQ0hFQ0soISFjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MpID09IGV4cGVjdGVkUmVz
dWx0KTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCB0ZXN0RmxvYXRFcXVhbE9yVW5vcmRl
cmVkRm9sZGluZ05hTigpCi17Ci0gICAgU3RkTGlzdDxmbG9hdD4gbmFucyA9IHsKLSAgICAgICAg
Yml0d2lzZV9jYXN0PGZsb2F0PigweGZmZmZmZmZkKSwKLSAgICAgICAgYml0d2lzZV9jYXN0PGZs
b2F0PigweGZmZmZmZmZlKSwKLSAgICAgICAgYml0d2lzZV9jYXN0PGZsb2F0PigweGZmZmZmZmYw
KSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KFBOYU4pLAotICAgIH07Ci0KLSAgICB1bnNp
Z25lZCBpID0gMDsKLSAgICBmb3IgKGZsb2F0IG5hbiA6IG5hbnMpIHsKLSAgICAgICAgUkVMRUFT
RV9BU1NFUlQoc3RkOjppc25hbihuYW4pKTsKLSAgICAgICAgUHJvY2VkdXJlIHByb2M7Ci0gICAg
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgICAgIFZhbHVlKiBh
ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIG5hbik7
Ci0gICAgICAgIFZhbHVlKiBiID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVU
b0Zsb2F0LCBPcmlnaW4oKSwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKSk7Ci0KLSAgICAg
ICAgaWYgKGkgJSAyKQotICAgICAgICAgICAgc3RkOjpzd2FwKGEsIGIpOwotICAgICAgICArK2k7
Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBFcXVhbE9yVW5v
cmRlcmVkLCBPcmlnaW4oKSwgYSwgYikpOwotICAgICAgICBDSEVDSyghIWNvbXBpbGVBbmRSdW48
aW50MzJfdD4ocHJvYywgc3RhdGljX2Nhc3Q8ZG91YmxlPigxLjApKSk7Ci0gICAgfQotfQotCi12
b2lkIHRlc3RGbG9hdEVxdWFsT3JVbm9yZGVyZWREb250Rm9sZCgpCi17Ci0gICAgZm9yIChhdXRv
JiBmaXJzdCA6IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSkgewotICAgICAgICBmbG9h
dCBhID0gZmlyc3QudmFsdWU7Ci0gICAgICAgIFByb2NlZHVyZSBwcm9jOwotICAgICAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgICAgICBWYWx1ZSogY29uc3RBID0g
cm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpOwotICAg
ICAgICBWYWx1ZSogYiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9h
dCwgT3JpZ2luKCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCkpOwotICAgICAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgRXF1YWxP
clVub3JkZXJlZCwgT3JpZ2luKCksIGNvbnN0QSwgYikpOwotCi0gICAgICAgIGF1dG8gY29kZSA9
IGNvbXBpbGVQcm9jKHByb2MpOwotCi0gICAgICAgIGZvciAoYXV0byYgc2Vjb25kIDogZmxvYXRp
bmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKSB7Ci0gICAgICAgICAgICBmbG9hdCBiID0gc2Vjb25k
LnZhbHVlOwotICAgICAgICAgICAgYm9vbCBleHBlY3RlZFJlc3VsdCA9IChhID09IGIpIHx8IHN0
ZDo6aXN1bm9yZGVyZWQoYSwgYik7Ci0gICAgICAgICAgICBDSEVDSyghIWludm9rZTxpbnQzMl90
PigqY29kZSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihiKSkgPT0gZXhwZWN0ZWRSZXN1bHQpOwotICAg
ICAgICB9Ci0gICAgfQotfQotCi12b2lkIGZ1bmN0aW9uTmluZUFyZ3MoaW50MzJfdCwgdm9pZCos
IHZvaWQqLCB2b2lkKiwgdm9pZCosIHZvaWQqLCB2b2lkKiwgdm9pZCosIHZvaWQqKSB7IH0KLQot
dm9pZCB0ZXN0U2h1ZmZsZURvZXNudFRyYXNoQ2FsbGVlU2F2ZXMoKQotewotICAgIFByb2NlZHVy
ZSBwcm9jOwotCi0gICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBC
YXNpY0Jsb2NrKiBsaWtlbHkgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogdW5s
aWtlbHkgPSBwcm9jLmFkZEJsb2NrKCk7Ci0KLSAgICBSZWdpc3RlclNldCByZWdzID0gUmVnaXN0
ZXJTZXQ6OmFsbEdQUnMoKTsKLSAgICByZWdzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVn
aXN0ZXJzKCkpOwotICAgIHJlZ3MuZXhjbHVkZShSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2Fy
ZVJlZ2lzdGVycygpKTsKLSAgICByZWdzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVS
ZWdpc3RlcnMoKSk7Ci0gICAgcmVncy5leGNsdWRlKFJlZ2lzdGVyU2V0Ojphcmd1bWVudEdQUlMo
KSk7Ci0KLSAgICB1bnNpZ25lZCBpID0gMDsKLSAgICBWZWN0b3I8VmFsdWUqPiBwYXRjaGVzOwot
ICAgIGZvciAoUmVnIHJlZyA6IHJlZ3MpIHsKLSAgICAgICAgKytpOwotICAgICAgICBQYXRjaHBv
aW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihw
cm9jLCBJbnQzMiwgT3JpZ2luKCkpOwotICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lz
dGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJU
KHJlZy5pc0dQUigpKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWludCA9IFZh
bHVlUmVwOjpyZWcocmVnLmdwcigpKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9y
KAotICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5l
cmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRj
aFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAgICAgICAgICAgICAgaml0Lm1v
dmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoaSksIHBhcmFtc1swXS5ncHIoKSk7Ci0gICAg
ICAgICAgICB9KTsKLSAgICAgICAgcGF0Y2hlcy5hcHBlbmQocGF0Y2hwb2ludCk7Ci0gICAgfQot
Ci0gICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3RlcigwICUgR1BSSW5mbzo6bnVt
YmVyT2ZBcmd1bWVudFJlZ2lzdGVycykpOwotICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjp0b0FyZ3VtZW50
UmVnaXN0ZXIoMSAlIEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMpKTsKLSAgICBW
YWx1ZSogYXJnMyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6dG9Bcmd1bWVudFJlZ2lzdGVyKDIgJSBHUFJJbmZvOjpudW1iZXJPZkFy
Z3VtZW50UmVnaXN0ZXJzKSk7Ci0gICAgVmFsdWUqIGFyZzQgPSByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3Rl
cigzICUgR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycykpOwotICAgIFZhbHVlKiBh
cmc1ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIoNCAlIEdQUkluZm86Om51bWJlck9mQXJndW1lbnRS
ZWdpc3RlcnMpKTsKLSAgICBWYWx1ZSogYXJnNiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6dG9Bcmd1bWVudFJlZ2lzdGVyKDUgJSBH
UFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzKSk7Ci0gICAgVmFsdWUqIGFyZzcgPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OnRvQXJndW1lbnRSZWdpc3Rlcig2ICUgR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVy
cykpOwotICAgIFZhbHVlKiBhcmc4ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIoNyAlIEdQUkluZm86
Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMpKTsKLQotICAgIFBhdGNocG9pbnRWYWx1ZSogcHRy
ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgSW50NjQsIE9yaWdpbigp
KTsKLSAgICBwdHItPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygp
KTsKLSAgICBwdHItPnJlc3VsdENvbnN0cmFpbnQgPSBWYWx1ZVJlcDo6cmVnKEdQUkluZm86OnJl
Z0NTMCk7Ci0gICAgcHRyLT5hcHBlbmRTb21lUmVnaXN0ZXIoYXJnMSk7Ci0gICAgcHRyLT5zZXRH
ZW5lcmF0b3IoCi0gICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRj
aFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAgICAgICAgICBqaXQubW92ZShw
YXJhbXNbMV0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7Ci0gICAgICAgIH0pOwotCi0gICAgVmFs
dWUqIGNvbmRpdGlvbiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgIHByb2MsIEVx
dWFsLCBPcmlnaW4oKSwgCi0gICAgICAgIHB0ciwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENv
bnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKLQotICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKLSAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKLSAgICAgICAgY29u
ZGl0aW9uLAotICAgICAgICBGcmVxdWVudGVkQmxvY2sobGlrZWx5LCBGcmVxdWVuY3lDbGFzczo6
Tm9ybWFsKSwgRnJlcXVlbnRlZEJsb2NrKHVubGlrZWx5LCBGcmVxdWVuY3lDbGFzczo6UmFyZSkp
OwotCi0gICAgLy8gTmV2ZXIgZXhlY3V0ZXMuCi0gICAgVmFsdWUqIGNvbnN0NDIgPSBsaWtlbHkt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0Mik7Ci0gICAgbGlrZWx5
LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY29uc3Q0Mik7
Ci0KLSAgICAvLyBBbHdheXMgZXhlY3V0ZXMuCi0gICAgVmFsdWUqIGNvbnN0TnVtYmVyID0gdW5s
aWtlbHktPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAweDEpOwotCi0g
ICAgdW5saWtlbHktPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKLSAgICAgICAgcHJvYywgVm9pZCwg
T3JpZ2luKCksCi0gICAgICAgIHVubGlrZWx5LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4oZnVuY3Rpb25OaW5lQXJncywgQjND
Q2FsbFB0clRhZykpLAotICAgICAgICBjb25zdE51bWJlciwgYXJnMSwgYXJnMiwgYXJnMywgYXJn
NCwgYXJnNSwgYXJnNiwgYXJnNywgYXJnOCk7Ci0KLSAgICBQYXRjaHBvaW50VmFsdWUqIHZvaWRQ
YXRjaCA9IHVubGlrZWx5LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBWb2lkLCBP
cmlnaW4oKSk7Ci0gICAgdm9pZFBhdGNoLT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0
Y2hSZWdpc3RlcnMoKSk7Ci0gICAgZm9yIChWYWx1ZSogdiA6IHBhdGNoZXMpCi0gICAgICAgIHZv
aWRQYXRjaC0+YXBwZW5kU29tZVJlZ2lzdGVyKHYpOwotICAgIHZvaWRQYXRjaC0+YXBwZW5kU29t
ZVJlZ2lzdGVyKGFyZzEpOwotICAgIHZvaWRQYXRjaC0+YXBwZW5kU29tZVJlZ2lzdGVyKGFyZzIp
OwotICAgIHZvaWRQYXRjaC0+YXBwZW5kU29tZVJlZ2lzdGVyKGFyZzMpOwotICAgIHZvaWRQYXRj
aC0+YXBwZW5kU29tZVJlZ2lzdGVyKGFyZzQpOwotICAgIHZvaWRQYXRjaC0+YXBwZW5kU29tZVJl
Z2lzdGVyKGFyZzUpOwotICAgIHZvaWRQYXRjaC0+YXBwZW5kU29tZVJlZ2lzdGVyKGFyZzYpOwot
ICAgIHZvaWRQYXRjaC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKLQotICAgIHVubGlrZWx5LT5hcHBlbmROZXdD
b250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgdW5saWtlbHktPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBwdHIpKTsK
LQotICAgIGludDMyX3QqIGlucHV0UHRyID0gc3RhdGljX2Nhc3Q8aW50MzJfdCo+KGZhc3RNYWxs
b2Moc2l6ZW9mKGludDMyX3QpKSk7Ci0gICAgKmlucHV0UHRyID0gNDg7Ci0gICAgQ0hFQ0soY29t
cGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBpbnB1dFB0cikgPT0gNDgpOwotICAgIGZhc3RGcmVl
KGlucHV0UHRyKTsKLX0KLQotdm9pZCB0ZXN0RGVtb3RlUGF0Y2hwb2ludFRlcm1pbmFsKCkKLXsK
LSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICAKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIGRvbmUgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAg
Ci0gICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNo
cG9pbnRWYWx1ZT4ocHJvYywgSW50MzIsIE9yaWdpbigpKTsKLSAgICBwYXRjaHBvaW50LT5lZmZl
Y3RzLnRlcm1pbmFsID0gdHJ1ZTsKLSAgICByb290LT5zZXRTdWNjZXNzb3JzKGRvbmUpOwotICAg
IAotICAgIGRvbmUtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcGF0
Y2hwb2ludCk7Ci0gICAgCi0gICAgcHJvYy5yZXNldFJlYWNoYWJpbGl0eSgpOwotICAgIGJyZWFr
Q3JpdGljYWxFZGdlcyhwcm9jKTsKLSAgICBJbmRleFNldDxWYWx1ZSo+IHZhbHVlc1RvRGVtb3Rl
OwotICAgIHZhbHVlc1RvRGVtb3RlLmFkZChwYXRjaHBvaW50KTsKLSAgICBkZW1vdGVWYWx1ZXMo
cHJvYywgdmFsdWVzVG9EZW1vdGUpOwotICAgIHZhbGlkYXRlKHByb2MpOwotfQotCi12b2lkIHRl
c3RSZXBvcnRVc2VkUmVnaXN0ZXJzTGF0ZVVzZUZvbGxvd2VkQnlFYXJseURlZkRvZXNOb3RNYXJr
VXNlQXNEZWFkKCkKLXsKLSAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICBpZiAocHJvYy5vcHRMZXZl
bCgpIDwgMikKLSAgICAgICAgcmV0dXJuOwotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7Ci0KLSAgICBSZWdpc3RlclNldCBhbGxSZWdzID0gUmVnaXN0ZXJTZXQ6OmFsbEdQ
UnMoKTsKLSAgICBhbGxSZWdzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkp
OwotICAgIGFsbFJlZ3MuZXhjbHVkZShSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lz
dGVycygpKTsKLQotICAgIHsKLSAgICAgICAgLy8gTWFrZSBldmVyeSByZWcgNDIgKGp1c3QgbmVl
ZHMgdG8gYmUgYSB2YWx1ZSBvdGhlciB0aGFuIDEwKS4KLSAgICAgICAgUGF0Y2hwb2ludFZhbHVl
KiBwYXRjaHBvaW50ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgVm9p
ZCwgT3JpZ2luKCkpOwotICAgICAgICBWYWx1ZSogY29uc3Q0MiA9IHJvb3QtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0Mik7Ci0gICAgICAgIGZvciAoUmVnIHJlZyA6
IGFsbFJlZ3MpCi0gICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoY29uc3Q0MiwgVmFsdWVS
ZXA6OnJlZyhyZWcpKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFsmXSAoQ0Nh
bGxIZWxwZXJzJiwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKLSAgICB9
Ci0KLSAgICB7Ci0gICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IHJvb3QtPmFw
cGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKLSAgICAgICAg
VmFsdWUqIGNvbnN0MTAgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmln
aW4oKSwgMTApOwotICAgICAgICBmb3IgKFJlZyByZWcgOiBhbGxSZWdzKQotICAgICAgICAgICAg
cGF0Y2hwb2ludC0+YXBwZW5kKGNvbnN0MTAsIFZhbHVlUmVwOjpsYXRlUmVnKHJlZykpOwotICAg
ICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29u
c3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewotICAgICAgICAgICAgZm9yIChSZWcgcmVn
IDogYWxsUmVncykgewotICAgICAgICAgICAgICAgIGF1dG8gZG9uZSA9IGppdC5icmFuY2gzMihD
Q2FsbEhlbHBlcnM6OkVxdWFsLCByZWcuZ3ByKCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KDEwKSk7Ci0gICAgICAgICAgICAgICAgaml0LmJyZWFrcG9pbnQoKTsKLSAgICAgICAgICAgICAg
ICBkb25lLmxpbmsoJmppdCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotICAgIH0KLQot
ICAgIHsKLSAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gcm9vdC0+YXBwZW5k
TmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgSW50MzIsIE9yaWdpbigpKTsKLSAgICAgICAgcGF0
Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWludCA9IFZhbHVlUmVwOjpTb21lRWFybHlSZWdpc3RlcjsK
LSAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxwZXJzJiwgY29u
c3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGFsbFJlZ3MuY29udGFpbnMocGFyYW1zWzBdLmdwcigpKSk7Ci0gICAgICAgIH0p
OwotICAgIH0KLQotICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4s
IE9yaWdpbigpKTsKLQotICAgIGNvbXBpbGVBbmRSdW48dm9pZD4ocHJvYyk7Ci19Ci0KLXZvaWQg
dGVzdEluZmluaXRlTG9vcERvZXNudENhdXNlQmFkSG9pc3RpbmcoKQotewotICAgIFByb2NlZHVy
ZSBwcm9jOwotICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAyKQotICAgICAgICByZXR1cm47Ci0g
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBo
ZWFkZXIgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogbG9hZEJsb2NrID0gcHJv
Yy5hZGRCbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIHBvc3RMb2FkQmxvY2sgPSBwcm9jLmFkZEJs
b2NrKCk7Ci0KLSAgICBWYWx1ZSogYXJnID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4oKSwgaGVhZGVyKTsKLQotICAg
IGhlYWRlci0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBCcmFuY2gsIE9y
aWdpbigpLAotICAgICAgICBoZWFkZXItPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRXF1YWwsIE9y
aWdpbigpLAotICAgICAgICAgICAgYXJnLAotICAgICAgICAgICAgaGVhZGVyLT5hcHBlbmROZXc8
Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMTApKSwgaGVhZGVyLCBsb2FkQmxvY2spOwot
Ci0gICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbG9hZEJsb2NrLT5hcHBlbmROZXc8
UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7Ci0gICAgcGF0Y2hwb2ludC0+
ZWZmZWN0cyA9IEVmZmVjdHM6Om5vbmUoKTsKLSAgICBwYXRjaHBvaW50LT5lZmZlY3RzLndyaXRl
c0xvY2FsU3RhdGUgPSB0cnVlOyAvLyBEb24ndCBEQ0UgdGhpcy4KLSAgICBwYXRjaHBvaW50LT5z
ZXRHZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgd29ya3MgYmVjYXVz
ZSB3ZSBkb24ndCBoYXZlIGNhbGxlZSBzYXZlcy4KLSAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rp
b25FcGlsb2d1ZSgpOwotICAgICAgICAgICAgaml0LnJldCgpOwotICAgICAgICB9KTsKLQotICAg
IFZhbHVlKiBiYWRMb2FkID0gbG9hZEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2Ms
IExvYWQsIEludDY0LCBPcmlnaW4oKSwgYXJnLCAwKTsKLQotICAgIGxvYWRCbG9jay0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAotICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAotICAgICAg
ICBsb2FkQmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRXF1YWwsIE9yaWdpbigpLAotICAg
ICAgICAgICAgYmFkTG9hZCwKLSAgICAgICAgICAgIGxvYWRCbG9jay0+YXBwZW5kTmV3PENvbnN0
NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQ1KSksIGhlYWRlciwgcG9zdExvYWRCbG9jayk7Ci0K
LSAgICBwb3N0TG9hZEJsb2NrLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgYmFkTG9hZCk7Ci0KLSAgICAvLyBUaGUgcGF0Y2hwb2ludCBlYXJseSByZXQoKSB3
b3JrcyBiZWNhdXNlIHdlIGRvbid0IGhhdmUgY2FsbGVlIHNhdmVzLgotICAgIGF1dG8gY29kZSA9
IGNvbXBpbGVQcm9jKHByb2MpOwotICAgIFJFTEVBU0VfQVNTRVJUKCFwcm9jLmNhbGxlZVNhdmVS
ZWdpc3RlckF0T2Zmc2V0TGlzdCgpLnNpemUoKSk7IAotICAgIGludm9rZTx2b2lkPigqY29kZSwg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KDU1KSk7IC8vIFNob3VsZG4ndCBjcmFzaCBkZXJlZmVybmNp
bmcgNTUuCi19Ci0KLS8vIE1ha2Ugc3VyZSB0aGUgY29tcGlsZXIgZG9lcyBub3QgdHJ5IHRvIG9w
dGltaXplIGFueXRoaW5nIG91dC4KLU5FVkVSX0lOTElORSBkb3VibGUgemVybygpCi17Ci0gICAg
cmV0dXJuIDAuOwotfQotCi1kb3VibGUgbmVnYXRpdmVaZXJvKCkKLXsKLSAgICByZXR1cm4gLXpl
cm8oKTsKLX0KLQotI2RlZmluZSBQUkVGSVggIk8iLCBPcHRpb25zOjpkZWZhdWx0QjNPcHRMZXZl
bCgpLCAiOiAiCi0KLSNkZWZpbmUgUlVOX05PVyh0ZXN0KSBkbyB7ICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAgICAgaWYgKCFzaG91bGRSdW4oI3Rlc3QpKSAgICAgICAgICAgICAgICAgIFwK
LSAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg
ICAgZGF0YUxvZyhQUkVGSVggI3Rlc3QgIi4uLlxuIik7ICAgICAgICAgIFwKLSAgICAgICAgdGVz
dDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZGF0YUxvZyhQ
UkVGSVggI3Rlc3QgIjogT0shXG4iKTsgICAgICAgIFwKLSAgICB9IHdoaWxlIChmYWxzZSkKLSNk
ZWZpbmUgUlVOKHRlc3QpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgICAgIGlmICghc2hvdWxkUnVuKCN0ZXN0KSkgICAgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgICAgICAgdGFza3MuYXBwZW5kKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgICAgICAgICBjcmVhdGVTaGFyZWRUYXNrPHZvaWQoKT4oICAgICAgICAgICAgICAgICAg
XAotICAgICAgICAgICAgICAgIFsmXSAoKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZyhQUkVGSVggI3Rlc3QgIi4uLlxuIik7ICAg
ICBcCi0gICAgICAgICAgICAgICAgICAgIHRlc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKFBSRUZJWCAjdGVzdCAiOiBPSyFcbiIp
OyAgIFwKLSAgICAgICAgICAgICAgICB9KSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0gICAgfSB3aGlsZSAoZmFsc2UpOwotCi0jZGVmaW5lIFJVTl9VTkFSWSh0ZXN0LCB2
YWx1ZXMpIFwKLSAgICBmb3IgKGF1dG8gYSA6IHZhbHVlcykgeyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotICAgICAgICBDU3RyaW5nIHRlc3RTdHIgPSB0b0NTdHJpbmcoUFJFRklYICN0
ZXN0LCAiKCIsIGEubmFtZSwgIikiKTsgXAotICAgICAgICBpZiAoIXNob3VsZFJ1bih0ZXN0U3Ry
LmRhdGEoKSkpICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBjb250aW51ZTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdGFza3MuYXBwZW5kKGNyZWF0
ZVNoYXJlZFRhc2s8dm9pZCgpPiggICAgICAgICAgXAotICAgICAgICAgICAgWz1dICgpIHsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgZGF0YUxv
Zyh0b0NTdHJpbmcodGVzdFN0ciwgIi4uLlxuIikpOyAgIFwKLSAgICAgICAgICAgICAgICB0ZXN0
KGEudmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIGRh
dGFMb2codG9DU3RyaW5nKHRlc3RTdHIsICI6IE9LIVxuIikpOyBcCi0gICAgICAgICAgICB9KSk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9Ci0KLSNkZWZp
bmUgUlVOX0JJTkFSWSh0ZXN0LCB2YWx1ZXNBLCB2YWx1ZXNCKSBcCi0gICAgZm9yIChhdXRvIGEg
OiB2YWx1ZXNBKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGZv
ciAoYXV0byBiIDogdmFsdWVzQikgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
ICAgICAgICBDU3RyaW5nIHRlc3RTdHIgPSB0b0NTdHJpbmcoUFJFRklYICN0ZXN0LCAiKCIsIGEu
bmFtZSwgIiwgIiwgYi5uYW1lLCAiKSIpOyBcCi0gICAgICAgICAgICBpZiAoIXNob3VsZFJ1bih0
ZXN0U3RyLmRhdGEoKSkpICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgY29udGlu
dWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICB0YXNr
cy5hcHBlbmQoY3JlYXRlU2hhcmVkVGFzazx2b2lkKCk+KCAgICAgICAgICBcCi0gICAgICAgICAg
ICAgICAgWz1dICgpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
ICAgICAgICAgICAgICAgIGRhdGFMb2codG9DU3RyaW5nKHRlc3RTdHIsICIuLi5cbiIpKTsgICBc
Ci0gICAgICAgICAgICAgICAgICAgIHRlc3QoYS52YWx1ZSwgYi52YWx1ZSk7ICAgICAgICAgICAg
ICAgICBcCi0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2codG9DU3RyaW5nKHRlc3RTdHIsICI6
IE9LIVxuIikpOyBcCi0gICAgICAgICAgICAgICAgfSkpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfQotI2RlZmluZSBSVU5fVEVSTkFSWSh0ZXN0
LCB2YWx1ZXNBLCB2YWx1ZXNCLCB2YWx1ZXNDKSBcCi0gICAgZm9yIChhdXRvIGEgOiB2YWx1ZXNB
KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBmb3IgKGF1
dG8gYiA6IHZhbHVlc0IpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg
ICAgICAgIGZvciAoYXV0byBjIDogdmFsdWVzQykgeyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgICAgICAgICAgICAgQ1N0cmluZyB0ZXN0U3RyID0gdG9DU3RyaW5nKCN0ZXN0LCAi
KCIsIGEubmFtZSwgIiwgIiwgYi5uYW1lLCAiLCIsIGMubmFtZSwgIikiKTsgXAotICAgICAgICAg
ICAgICAgIGlmICghc2hvdWxkUnVuKHRlc3RTdHIuZGF0YSgpKSkgICAgICAgICAgICAgICAgIFwK
LSAgICAgICAgICAgICAgICAgICAgY29udGludWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0gICAgICAgICAgICAgICAgdGFza3MuYXBwZW5kKGNyZWF0ZVNoYXJlZFRhc2s8
dm9pZCgpPiggICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICBbPV0gKCkgeyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRh
dGFMb2codG9DU3RyaW5nKHRlc3RTdHIsICIuLi5cbiIpKTsgICBcCi0gICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0KGEudmFsdWUsIGIudmFsdWUsIGMudmFsdWUpOyAgICAgICAgXAotICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZyh0b0NTdHJpbmcodGVzdFN0ciwgIjogT0shXG4iKSk7
IFwKLSAgICAgICAgICAgICAgICAgICAgfSkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9Ci0KLXZvaWQgcnVuKGNvbnN0
IGNoYXIqIGZpbHRlcikKLXsKLSAgICBEZXF1ZTxSZWZQdHI8U2hhcmVkVGFzazx2b2lkKCk+Pj4g
dGFza3M7Ci0KLSAgICBhdXRvIHNob3VsZFJ1biA9IFsmXSAoY29uc3QgY2hhciogdGVzdE5hbWUp
IC0+IGJvb2wgewotICAgICAgICAvLyBGSVhNRTogVGhlc2UgdGVzdHMgZmFpbCA8aHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTMzMD4uCi0gICAgICAgIGlmICghZmls
dGVyICYmIGlzQVJNNjQoKSkgewotICAgICAgICAgICAgZm9yIChhdXRvJiBmYWlsaW5nVGVzdCA6
IHsKLSAgICAgICAgICAgICAgICAidGVzdFJlcG9ydFVzZWRSZWdpc3RlcnNMYXRlVXNlRm9sbG93
ZWRCeUVhcmx5RGVmRG9lc05vdE1hcmtVc2VBc0RlYWQiLAotICAgICAgICAgICAgICAgICJ0ZXN0
TmVnRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24iLAotICAgICAgICAgICAgICAgICJ0
ZXN0UGluUmVnaXN0ZXJzIiwKLSAgICAgICAgICAgIH0pIHsKLSAgICAgICAgICAgICAgICBpZiAo
V1RGOjpmaW5kSWdub3JpbmdBU0NJSUNhc2VXaXRob3V0TGVuZ3RoKHRlc3ROYW1lLCBmYWlsaW5n
VGVzdCkgIT0gV1RGOjpub3RGb3VuZCkgewotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG4o
IioqKiBXYXJuaW5nOiBTa2lwcGluZyBrbm93bi1iYWQgdGVzdDogIiwgdGVzdE5hbWUpOwotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmICghZmlsdGVyICYmIGlzWDg2KCkpIHsKLSAg
ICAgICAgICAgIGZvciAoYXV0byYgZmFpbGluZ1Rlc3QgOiB7Ci0gICAgICAgICAgICAgICAgInRl
c3RSZXBvcnRVc2VkUmVnaXN0ZXJzTGF0ZVVzZUZvbGxvd2VkQnlFYXJseURlZkRvZXNOb3RNYXJr
VXNlQXNEZWFkIiwKLSAgICAgICAgICAgIH0pIHsKLSAgICAgICAgICAgICAgICBpZiAoV1RGOjpm
aW5kSWdub3JpbmdBU0NJSUNhc2VXaXRob3V0TGVuZ3RoKHRlc3ROYW1lLCBmYWlsaW5nVGVzdCkg
IT0gV1RGOjpub3RGb3VuZCkgewotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIioqKiBX
YXJuaW5nOiBTa2lwcGluZyBrbm93bi1iYWQgdGVzdDogIiwgdGVzdE5hbWUpOwotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAhZmlsdGVyIHx8IFdURjo6ZmluZElnbm9yaW5n
QVNDSUlDYXNlV2l0aG91dExlbmd0aCh0ZXN0TmFtZSwgZmlsdGVyKSAhPSBXVEY6Om5vdEZvdW5k
OwotICAgIH07Ci0KLSAgICBSVU5fTk9XKHRlc3RUZXJtaW5hbFBhdGNocG9pbnRUaGF0TmVlZHNU
b0JlU3BpbGxlZDIoKSk7Ci0gICAgUlVOKHRlc3Q0MigpKTsKLSAgICBSVU4odGVzdExvYWQ0Migp
KTsKLSAgICBSVU4odGVzdExvYWRBY3E0MigpKTsKLSAgICBSVU4odGVzdExvYWRPZmZzZXRJbW05
TWF4KCkpOwotICAgIFJVTih0ZXN0TG9hZE9mZnNldEltbTlNYXhQbHVzT25lKCkpOwotICAgIFJV
Tih0ZXN0TG9hZE9mZnNldEltbTlNYXhQbHVzVHdvKCkpOwotICAgIFJVTih0ZXN0TG9hZE9mZnNl
dEltbTlNaW4oKSk7Ci0gICAgUlVOKHRlc3RMb2FkT2Zmc2V0SW1tOU1pbk1pbnVzT25lKCkpOwot
ICAgIFJVTih0ZXN0TG9hZE9mZnNldFNjYWxlZFVuc2lnbmVkSW1tMTJNYXgoKSk7Ci0gICAgUlVO
KHRlc3RMb2FkT2Zmc2V0U2NhbGVkVW5zaWduZWRPdmVySW1tMTJNYXgoKSk7Ci0gICAgUlVOKHRl
c3RBcmcoNDMpKTsKLSAgICBSVU4odGVzdFJldHVybkNvbnN0NjQoNSkpOwotICAgIFJVTih0ZXN0
UmV0dXJuQ29uc3Q2NCgtNDIpKTsKLSAgICBSVU4odGVzdFJldHVyblZvaWQoKSk7Ci0KLSAgICBS
VU5fQklOQVJZKHRlc3RCaXRYb3JUcmVlQXJncywgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJh
bmRzKCkpOwotICAgIFJVTl9CSU5BUlkodGVzdEJpdFhvclRyZWVBcmdzRXZlbiwgaW50NjRPcGVy
YW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5BUlkodGVzdEJpdFhvclRyZWVB
cmdJbW0sIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKLSAgICBSVU5fVU5BUlko
dGVzdEFkZFRyZWVBcmczMiwgaW50MzJPcGVyYW5kcygpKTsKLSAgICBSVU5fVU5BUlkodGVzdE11
bFRyZWVBcmczMiwgaW50MzJPcGVyYW5kcygpKTsKLSAgICBSVU5fVU5BUlkodGVzdEJpdEFuZFRy
ZWVBcmczMiwgaW50MzJPcGVyYW5kcygpKTsKLSAgICBSVU5fVU5BUlkodGVzdEJpdE9yVHJlZUFy
ZzMyLCBpbnQzMk9wZXJhbmRzKCkpOwotCi0gICAgUlVOKHRlc3RBZGRBcmcoMTExKSk7Ci0gICAg
UlVOKHRlc3RBZGRBcmdzKDEsIDEpKTsKLSAgICBSVU4odGVzdEFkZEFyZ3MoMSwgMikpOwotICAg
IFJVTih0ZXN0QWRkQXJnSW1tKDEsIDIpKTsKLSAgICBSVU4odGVzdEFkZEFyZ0ltbSgwLCAyKSk7
Ci0gICAgUlVOKHRlc3RBZGRBcmdJbW0oMSwgMCkpOwotICAgIFJVTih0ZXN0QWRkSW1tQXJnKDEs
IDIpKTsKLSAgICBSVU4odGVzdEFkZEltbUFyZygwLCAyKSk7Ci0gICAgUlVOKHRlc3RBZGRJbW1B
cmcoMSwgMCkpOwotICAgIFJVTl9CSU5BUlkodGVzdEFkZEFyZ01lbSwgaW50NjRPcGVyYW5kcygp
LCBpbnQ2NE9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5BUlkodGVzdEFkZE1lbUFyZywgaW50NjRP
cGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5BUlkodGVzdEFkZEltbU1l
bSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0
QWRkQXJnMzIsIGludDMyT3BlcmFuZHMoKSk7Ci0gICAgUlVOKHRlc3RBZGRBcmdzMzIoMSwgMSkp
OwotICAgIFJVTih0ZXN0QWRkQXJnczMyKDEsIDIpKTsKLSAgICBSVU5fQklOQVJZKHRlc3RBZGRB
cmdNZW0zMiwgaW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5B
UlkodGVzdEFkZE1lbUFyZzMyLCBpbnQzMk9wZXJhbmRzKCksIGludDMyT3BlcmFuZHMoKSk7Ci0g
ICAgUlVOX0JJTkFSWSh0ZXN0QWRkSW1tTWVtMzIsIGludDMyT3BlcmFuZHMoKSwgaW50MzJPcGVy
YW5kcygpKTsKLSAgICBSVU5fQklOQVJZKHRlc3RBZGROZWcxLCBpbnQzMk9wZXJhbmRzKCksIGlu
dDMyT3BlcmFuZHMoKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0QWRkTmVnMiwgaW50MzJPcGVyYW5k
cygpLCBpbnQzMk9wZXJhbmRzKCkpOwotICAgIFJVTih0ZXN0QWRkQXJnWmVyb0ltbVpEZWYoKSk7
Ci0gICAgUlVOKHRlc3RBZGRMb2FkVHdpY2UoKSk7Ci0gICAgUlVOX1RFUk5BUlkodGVzdEFkZE11
bE11bEFyZ3MsIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRz
KCkpOwotCi0gICAgUlVOKHRlc3RBZGRBcmdEb3VibGUoTV9QSSkpOwotICAgIFJVTih0ZXN0QWRk
QXJnc0RvdWJsZShNX1BJLCAxKSk7Ci0gICAgUlVOKHRlc3RBZGRBcmdzRG91YmxlKE1fUEksIC1N
X1BJKSk7Ci0gICAgUlVOKHRlc3RBZGRBcmdJbW1Eb3VibGUoTV9QSSwgMSkpOwotICAgIFJVTih0
ZXN0QWRkQXJnSW1tRG91YmxlKE1fUEksIDApKTsKLSAgICBSVU4odGVzdEFkZEFyZ0ltbURvdWJs
ZShNX1BJLCBuZWdhdGl2ZVplcm8oKSkpOwotICAgIFJVTih0ZXN0QWRkQXJnSW1tRG91YmxlKDAs
IDApKTsKLSAgICBSVU4odGVzdEFkZEFyZ0ltbURvdWJsZSgwLCBuZWdhdGl2ZVplcm8oKSkpOwot
ICAgIFJVTih0ZXN0QWRkQXJnSW1tRG91YmxlKG5lZ2F0aXZlWmVybygpLCAwKSk7Ci0gICAgUlVO
KHRlc3RBZGRBcmdJbW1Eb3VibGUobmVnYXRpdmVaZXJvKCksIG5lZ2F0aXZlWmVybygpKSk7Ci0g
ICAgUlVOKHRlc3RBZGRJbW1BcmdEb3VibGUoTV9QSSwgMSkpOwotICAgIFJVTih0ZXN0QWRkSW1t
QXJnRG91YmxlKE1fUEksIDApKTsKLSAgICBSVU4odGVzdEFkZEltbUFyZ0RvdWJsZShNX1BJLCBu
ZWdhdGl2ZVplcm8oKSkpOwotICAgIFJVTih0ZXN0QWRkSW1tQXJnRG91YmxlKDAsIDApKTsKLSAg
ICBSVU4odGVzdEFkZEltbUFyZ0RvdWJsZSgwLCBuZWdhdGl2ZVplcm8oKSkpOwotICAgIFJVTih0
ZXN0QWRkSW1tQXJnRG91YmxlKG5lZ2F0aXZlWmVybygpLCAwKSk7Ci0gICAgUlVOKHRlc3RBZGRJ
bW1BcmdEb3VibGUobmVnYXRpdmVaZXJvKCksIG5lZ2F0aXZlWmVybygpKSk7Ci0gICAgUlVOKHRl
c3RBZGRJbW1zRG91YmxlKE1fUEksIDEpKTsKLSAgICBSVU4odGVzdEFkZEltbXNEb3VibGUoTV9Q
SSwgMCkpOwotICAgIFJVTih0ZXN0QWRkSW1tc0RvdWJsZShNX1BJLCBuZWdhdGl2ZVplcm8oKSkp
OwotICAgIFJVTih0ZXN0QWRkSW1tc0RvdWJsZSgwLCAwKSk7Ci0gICAgUlVOKHRlc3RBZGRJbW1z
RG91YmxlKDAsIG5lZ2F0aXZlWmVybygpKSk7Ci0gICAgUlVOKHRlc3RBZGRJbW1zRG91YmxlKG5l
Z2F0aXZlWmVybygpLCBuZWdhdGl2ZVplcm8oKSkpOwotICAgIFJVTl9VTkFSWSh0ZXN0QWRkQXJn
RmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0
ZXN0QWRkQXJnc0Zsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5n
UG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0QWRkRlBSQXJnc0Zs
b2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5k
czxmbG9hdD4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0QWRkQXJnSW1tRmxvYXQsIGZsb2F0aW5n
UG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsK
LSAgICBSVU5fQklOQVJZKHRlc3RBZGRJbW1BcmdGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRz
PGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTl9CSU5B
UlkodGVzdEFkZEltbXNGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9h
dGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0QWRkQXJnRmxv
YXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9h
dD4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0QWRkQXJnc0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVD
b252ZXJzaW9uLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRP
cGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0QWRkQXJnc0Zsb2F0V2l0aEVm
ZmVjdGZ1bERvdWJsZUNvbnZlcnNpb24sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwg
ZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKLQotICAgIFJVTih0ZXN0TXVsQXJnKDUp
KTsKLSAgICBSVU4odGVzdE11bEFkZEFyZyg1KSk7Ci0gICAgUlVOKHRlc3RNdWxBZGRBcmcoODUp
KTsKLSAgICBSVU4odGVzdE11bEFyZ1N0b3JlKDUpKTsKLSAgICBSVU4odGVzdE11bEFyZ1N0b3Jl
KDg1KSk7Ci0gICAgUlVOKHRlc3RNdWxBcmdzKDEsIDEpKTsKLSAgICBSVU4odGVzdE11bEFyZ3Mo
MSwgMikpOwotICAgIFJVTih0ZXN0TXVsQXJncygzLCAzKSk7Ci0gICAgUlVOKHRlc3RNdWxBcmdJ
bW0oMSwgMikpOwotICAgIFJVTih0ZXN0TXVsQXJnSW1tKDEsIDQpKTsKLSAgICBSVU4odGVzdE11
bEFyZ0ltbSgxLCA4KSk7Ci0gICAgUlVOKHRlc3RNdWxBcmdJbW0oMSwgMTYpKTsKLSAgICBSVU4o
dGVzdE11bEFyZ0ltbSgxLCAweDgwMDAwMDAwbGx1KSk7Ci0gICAgUlVOKHRlc3RNdWxBcmdJbW0o
MSwgMHg4MDAwMDAwMDAwMDBsbHUpKTsKLSAgICBSVU4odGVzdE11bEFyZ0ltbSg3LCAyKSk7Ci0g
ICAgUlVOKHRlc3RNdWxBcmdJbW0oNywgNCkpOwotICAgIFJVTih0ZXN0TXVsQXJnSW1tKDcsIDgp
KTsKLSAgICBSVU4odGVzdE11bEFyZ0ltbSg3LCAxNikpOwotICAgIFJVTih0ZXN0TXVsQXJnSW1t
KDcsIDB4ODAwMDAwMDBsbHUpKTsKLSAgICBSVU4odGVzdE11bEFyZ0ltbSg3LCAweDgwMDAwMDAw
MDAwMGxsdSkpOwotICAgIFJVTih0ZXN0TXVsQXJnSW1tKC00MiwgMikpOwotICAgIFJVTih0ZXN0
TXVsQXJnSW1tKC00MiwgNCkpOwotICAgIFJVTih0ZXN0TXVsQXJnSW1tKC00MiwgOCkpOwotICAg
IFJVTih0ZXN0TXVsQXJnSW1tKC00MiwgMTYpKTsKLSAgICBSVU4odGVzdE11bEFyZ0ltbSgtNDIs
IDB4ODAwMDAwMDBsbHUpKTsKLSAgICBSVU4odGVzdE11bEFyZ0ltbSgtNDIsIDB4ODAwMDAwMDAw
MDAwbGx1KSk7Ci0gICAgUlVOKHRlc3RNdWxBcmdJbW0oMCwgMikpOwotICAgIFJVTih0ZXN0TXVs
QXJnSW1tKDEsIDApKTsKLSAgICBSVU4odGVzdE11bEFyZ0ltbSgzLCAzKSk7Ci0gICAgUlVOKHRl
c3RNdWxBcmdJbW0oMywgLTEpKTsKLSAgICBSVU4odGVzdE11bEFyZ0ltbSgtMywgLTEpKTsKLSAg
ICBSVU4odGVzdE11bEFyZ0ltbSgwLCAtMSkpOwotICAgIFJVTih0ZXN0TXVsSW1tQXJnKDEsIDIp
KTsKLSAgICBSVU4odGVzdE11bEltbUFyZygwLCAyKSk7Ci0gICAgUlVOKHRlc3RNdWxJbW1Bcmco
MSwgMCkpOwotICAgIFJVTih0ZXN0TXVsSW1tQXJnKDMsIDMpKTsKLSAgICBSVU4odGVzdE11bElt
bTMyU2lnbkV4dGVuZCgxLCAyKSk7Ci0gICAgUlVOKHRlc3RNdWxJbW0zMlNpZ25FeHRlbmQoMCwg
MikpOwotICAgIFJVTih0ZXN0TXVsSW1tMzJTaWduRXh0ZW5kKDEsIDApKTsKLSAgICBSVU4odGVz
dE11bEltbTMyU2lnbkV4dGVuZCgzLCAzKSk7Ci0gICAgUlVOKHRlc3RNdWxJbW0zMlNpZ25FeHRl
bmQoMHhGRkZGRkZGRiwgMHhGRkZGRkZGRikpOwotICAgIFJVTih0ZXN0TXVsSW1tMzJTaWduRXh0
ZW5kKDB4RkZGRkZGRkUsIDB4RkZGRkZGRkYpKTsKLSAgICBSVU4odGVzdE11bEltbTMyU2lnbkV4
dGVuZCgweEZGRkZGRkZGLCAweEZGRkZGRkZFKSk7Ci0gICAgUlVOKHRlc3RNdWxBcmdzMzIoMSwg
MSkpOwotICAgIFJVTih0ZXN0TXVsQXJnczMyKDEsIDIpKTsKLSAgICBSVU4odGVzdE11bEFyZ3Mz
MigweEZGRkZGRkZGLCAweEZGRkZGRkZGKSk7Ci0gICAgUlVOKHRlc3RNdWxBcmdzMzIoMHhGRkZG
RkZGRSwgMHhGRkZGRkZGRikpOwotICAgIFJVTih0ZXN0TXVsQXJnczMyU2lnbkV4dGVuZCgxLCAx
KSk7Ci0gICAgUlVOKHRlc3RNdWxBcmdzMzJTaWduRXh0ZW5kKDEsIDIpKTsKLSAgICBSVU4odGVz
dE11bEFyZ3MzMlNpZ25FeHRlbmQoMHhGRkZGRkZGRiwgMHhGRkZGRkZGRikpOwotICAgIFJVTih0
ZXN0TXVsQXJnczMyU2lnbkV4dGVuZCgweEZGRkZGRkZFLCAweEZGRkZGRkZGKSk7Ci0gICAgUlVO
KHRlc3RNdWxMb2FkVHdpY2UoKSk7Ci0gICAgUlVOKHRlc3RNdWxBZGRBcmdzTGVmdCgpKTsKLSAg
ICBSVU4odGVzdE11bEFkZEFyZ3NSaWdodCgpKTsKLSAgICBSVU4odGVzdE11bEFkZEFyZ3NMZWZ0
MzIoKSk7Ci0gICAgUlVOKHRlc3RNdWxBZGRBcmdzUmlnaHQzMigpKTsKLSAgICBSVU4odGVzdE11
bFN1YkFyZ3NMZWZ0KCkpOwotICAgIFJVTih0ZXN0TXVsU3ViQXJnc1JpZ2h0KCkpOwotICAgIFJV
Tih0ZXN0TXVsU3ViQXJnc0xlZnQzMigpKTsKLSAgICBSVU4odGVzdE11bFN1YkFyZ3NSaWdodDMy
KCkpOwotICAgIFJVTih0ZXN0TXVsTmVnQXJncygpKTsKLSAgICBSVU4odGVzdE11bE5lZ0FyZ3Mz
MigpKTsKLQotICAgIFJVTl9CSU5BUlkodGVzdE11bEFyZ05lZ0FyZywgaW50NjRPcGVyYW5kcygp
LCBpbnQ2NE9wZXJhbmRzKCkpCi0gICAgUlVOX0JJTkFSWSh0ZXN0TXVsTmVnQXJnQXJnLCBpbnQ2
NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSkKLSAgICBSVU5fVU5BUlkodGVzdE11bEFyZ0Rv
dWJsZSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0
ZXN0TXVsQXJnc0RvdWJsZSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSwgZmxvYXRp
bmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0TXVsQXJnSW1t
RG91YmxlLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpLCBmbG9hdGluZ1BvaW50T3Bl
cmFuZHM8ZG91YmxlPigpKTsKLSAgICBSVU5fQklOQVJZKHRlc3RNdWxJbW1BcmdEb3VibGUsIGZs
b2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3Vi
bGU+KCkpOwotICAgIFJVTl9CSU5BUlkodGVzdE11bEltbXNEb3VibGUsIGZsb2F0aW5nUG9pbnRP
cGVyYW5kczxkb3VibGU+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwotICAg
IFJVTl9VTkFSWSh0ZXN0TXVsQXJnRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4o
KSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0TXVsQXJnc0Zsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFu
ZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX0JJ
TkFSWSh0ZXN0TXVsQXJnSW1tRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwg
ZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKLSAgICBSVU5fQklOQVJZKHRlc3RNdWxJ
bW1BcmdGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTl9CSU5BUlkodGVzdE11bEltbXNGbG9hdCwgZmxv
YXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+
KCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0TXVsQXJnRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZl
cnNpb24sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0
ZXN0TXVsQXJnc0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAg
UlVOX0JJTkFSWSh0ZXN0TXVsQXJnc0Zsb2F0V2l0aEVmZmVjdGZ1bERvdWJsZUNvbnZlcnNpb24s
IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZs
b2F0PigpKTsKLQotICAgIFJVTih0ZXN0RGl2QXJnRG91YmxlKE1fUEkpKTsKLSAgICBSVU4odGVz
dERpdkFyZ3NEb3VibGUoTV9QSSwgMSkpOwotICAgIFJVTih0ZXN0RGl2QXJnc0RvdWJsZShNX1BJ
LCAtTV9QSSkpOwotICAgIFJVTih0ZXN0RGl2QXJnSW1tRG91YmxlKE1fUEksIDEpKTsKLSAgICBS
VU4odGVzdERpdkFyZ0ltbURvdWJsZShNX1BJLCAwKSk7Ci0gICAgUlVOKHRlc3REaXZBcmdJbW1E
b3VibGUoTV9QSSwgbmVnYXRpdmVaZXJvKCkpKTsKLSAgICBSVU4odGVzdERpdkFyZ0ltbURvdWJs
ZSgwLCAwKSk7Ci0gICAgUlVOKHRlc3REaXZBcmdJbW1Eb3VibGUoMCwgbmVnYXRpdmVaZXJvKCkp
KTsKLSAgICBSVU4odGVzdERpdkFyZ0ltbURvdWJsZShuZWdhdGl2ZVplcm8oKSwgMCkpOwotICAg
IFJVTih0ZXN0RGl2QXJnSW1tRG91YmxlKG5lZ2F0aXZlWmVybygpLCBuZWdhdGl2ZVplcm8oKSkp
OwotICAgIFJVTih0ZXN0RGl2SW1tQXJnRG91YmxlKE1fUEksIDEpKTsKLSAgICBSVU4odGVzdERp
dkltbUFyZ0RvdWJsZShNX1BJLCAwKSk7Ci0gICAgUlVOKHRlc3REaXZJbW1BcmdEb3VibGUoTV9Q
SSwgbmVnYXRpdmVaZXJvKCkpKTsKLSAgICBSVU4odGVzdERpdkltbUFyZ0RvdWJsZSgwLCAwKSk7
Ci0gICAgUlVOKHRlc3REaXZJbW1BcmdEb3VibGUoMCwgbmVnYXRpdmVaZXJvKCkpKTsKLSAgICBS
VU4odGVzdERpdkltbUFyZ0RvdWJsZShuZWdhdGl2ZVplcm8oKSwgMCkpOwotICAgIFJVTih0ZXN0
RGl2SW1tQXJnRG91YmxlKG5lZ2F0aXZlWmVybygpLCBuZWdhdGl2ZVplcm8oKSkpOwotICAgIFJV
Tih0ZXN0RGl2SW1tc0RvdWJsZShNX1BJLCAxKSk7Ci0gICAgUlVOKHRlc3REaXZJbW1zRG91Ymxl
KE1fUEksIDApKTsKLSAgICBSVU4odGVzdERpdkltbXNEb3VibGUoTV9QSSwgbmVnYXRpdmVaZXJv
KCkpKTsKLSAgICBSVU4odGVzdERpdkltbXNEb3VibGUoMCwgMCkpOwotICAgIFJVTih0ZXN0RGl2
SW1tc0RvdWJsZSgwLCBuZWdhdGl2ZVplcm8oKSkpOwotICAgIFJVTih0ZXN0RGl2SW1tc0RvdWJs
ZShuZWdhdGl2ZVplcm8oKSwgbmVnYXRpdmVaZXJvKCkpKTsKLSAgICBSVU5fVU5BUlkodGVzdERp
dkFyZ0Zsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTl9CSU5B
UlkodGVzdERpdkFyZ3NGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9h
dGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTl9CSU5BUlkodGVzdERpdkFyZ0lt
bUZsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVy
YW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0RGl2SW1tQXJnRmxvYXQsIGZsb2F0
aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0Pigp
KTsKLSAgICBSVU5fQklOQVJZKHRlc3REaXZJbW1zRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5k
czxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKLSAgICBSVU5fVU5B
UlkodGVzdERpdkFyZ0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1Bv
aW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTl9CSU5BUlkodGVzdERpdkFyZ3NGbG9hdFdp
dGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbiwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0Pigp
LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTl9CSU5BUlkodGVzdERp
dkFyZ3NGbG9hdFdpdGhFZmZlY3RmdWxEb3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50T3Bl
cmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0KLSAgICBS
VU5fQklOQVJZKHRlc3RVRGl2QXJnc0ludDMyLCBpbnQzMk9wZXJhbmRzKCksIGludDMyT3BlcmFu
ZHMoKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0VURpdkFyZ3NJbnQ2NCwgaW50NjRPcGVyYW5kcygp
LCBpbnQ2NE9wZXJhbmRzKCkpOwotCi0gICAgUlVOX1VOQVJZKHRlc3RNb2RBcmdEb3VibGUsIGZs
b2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwotICAgIFJVTl9CSU5BUlkodGVzdE1vZEFy
Z3NEb3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCksIGZsb2F0aW5nUG9pbnRP
cGVyYW5kczxkb3VibGU+KCkpOwotICAgIFJVTl9CSU5BUlkodGVzdE1vZEFyZ0ltbURvdWJsZSwg
ZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRv
dWJsZT4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0TW9kSW1tQXJnRG91YmxlLCBmbG9hdGluZ1Bv
aW50T3BlcmFuZHM8ZG91YmxlPigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsK
LSAgICBSVU5fQklOQVJZKHRlc3RNb2RJbW1zRG91YmxlLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8
ZG91YmxlPigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKLSAgICBSVU5fVU5B
UlkodGVzdE1vZEFyZ0Zsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAg
IFJVTl9CSU5BUlkodGVzdE1vZEFyZ3NGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0
PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTl9CSU5BUlkodGVz
dE1vZEFyZ0ltbUZsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5n
UG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0TW9kSW1tQXJnRmxv
YXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRz
PGZsb2F0PigpKTsKLSAgICBSVU5fQklOQVJZKHRlc3RNb2RJbW1zRmxvYXQsIGZsb2F0aW5nUG9p
bnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKLQot
ICAgIFJVTl9CSU5BUlkodGVzdFVNb2RBcmdzSW50MzIsIGludDMyT3BlcmFuZHMoKSwgaW50MzJP
cGVyYW5kcygpKTsKLSAgICBSVU5fQklOQVJZKHRlc3RVTW9kQXJnc0ludDY0LCBpbnQ2NE9wZXJh
bmRzKCksIGludDY0T3BlcmFuZHMoKSk7Ci0KLSAgICBSVU4odGVzdFN1YkFyZygyNCkpOwotICAg
IFJVTih0ZXN0U3ViQXJncygxLCAxKSk7Ci0gICAgUlVOKHRlc3RTdWJBcmdzKDEsIDIpKTsKLSAg
ICBSVU4odGVzdFN1YkFyZ3MoMTMsIC00MikpOwotICAgIFJVTih0ZXN0U3ViQXJncygtMTMsIDQy
KSk7Ci0gICAgUlVOKHRlc3RTdWJBcmdJbW0oMSwgMSkpOwotICAgIFJVTih0ZXN0U3ViQXJnSW1t
KDEsIDIpKTsKLSAgICBSVU4odGVzdFN1YkFyZ0ltbSgxMywgLTQyKSk7Ci0gICAgUlVOKHRlc3RT
dWJBcmdJbW0oLTEzLCA0MikpOwotICAgIFJVTih0ZXN0U3ViQXJnSW1tKDQyLCAwKSk7Ci0gICAg
UlVOKHRlc3RTdWJJbW1BcmcoMSwgMSkpOwotICAgIFJVTih0ZXN0U3ViSW1tQXJnKDEsIDIpKTsK
LSAgICBSVU4odGVzdFN1YkltbUFyZygxMywgLTQyKSk7Ci0gICAgUlVOKHRlc3RTdWJJbW1Bcmco
LTEzLCA0MikpOwotICAgIFJVTl9CSU5BUlkodGVzdFN1YkFyZ01lbSwgaW50NjRPcGVyYW5kcygp
LCBpbnQ2NE9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5BUlkodGVzdFN1Yk1lbUFyZywgaW50NjRP
cGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5BUlkodGVzdFN1YkltbU1l
bSwgaW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5BUlkodGVz
dFN1Yk1lbUltbSwgaW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkpOwotICAgIFJVTl9C
SU5BUlkodGVzdFN1Yk5lZywgaW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkpOwotICAg
IFJVTl9CSU5BUlkodGVzdE5lZ1N1YiwgaW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkp
OwotICAgIFJVTl9VTkFSWSh0ZXN0TmVnVmFsdWVTdWJPbmUsIGludDMyT3BlcmFuZHMoKSk7Ci0g
ICAgUlVOX0JJTkFSWSh0ZXN0TmVnTXVsQXJnSW1tLCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3Bl
cmFuZHMoKSk7Ci0gICAgUlVOX1RFUk5BUlkodGVzdFN1Yk11bE11bEFyZ3MsIGludDY0T3BlcmFu
ZHMoKSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOwotCi0gICAgUlVOX1RFUk5B
UlkodGVzdFN1YlN1YiwgaW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCksIGludDMyT3Bl
cmFuZHMoKSk7Ci0gICAgUlVOX1RFUk5BUlkodGVzdFN1YlN1YjIsIGludDMyT3BlcmFuZHMoKSwg
aW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkpOwotICAgIFJVTl9URVJOQVJZKHRlc3RT
dWJBZGQsIGludDMyT3BlcmFuZHMoKSwgaW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkp
OwotICAgIFJVTl9CSU5BUlkodGVzdFN1YkZpcnN0TmVnLCBpbnQzMk9wZXJhbmRzKCksIGludDMy
T3BlcmFuZHMoKSk7Ci0KLSAgICBSVU4odGVzdFN1YkFyZ3MzMigxLCAxKSk7Ci0gICAgUlVOKHRl
c3RTdWJBcmdzMzIoMSwgMikpOwotICAgIFJVTih0ZXN0U3ViQXJnczMyKDEzLCAtNDIpKTsKLSAg
ICBSVU4odGVzdFN1YkFyZ3MzMigtMTMsIDQyKSk7Ci0gICAgUlVOKHRlc3RTdWJBcmdJbW0zMigx
LCAxKSk7Ci0gICAgUlVOKHRlc3RTdWJBcmdJbW0zMigxLCAyKSk7Ci0gICAgUlVOKHRlc3RTdWJB
cmdJbW0zMigxMywgLTQyKSk7Ci0gICAgUlVOKHRlc3RTdWJBcmdJbW0zMigtMTMsIDQyKSk7Ci0g
ICAgUlVOKHRlc3RTdWJJbW1BcmczMigxLCAxKSk7Ci0gICAgUlVOKHRlc3RTdWJJbW1BcmczMigx
LCAyKSk7Ci0gICAgUlVOKHRlc3RTdWJJbW1BcmczMigxMywgLTQyKSk7Ci0gICAgUlVOKHRlc3RT
dWJJbW1BcmczMigtMTMsIDQyKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0U3ViQXJnTWVtMzIsIGlu
dDMyT3BlcmFuZHMoKSwgaW50MzJPcGVyYW5kcygpKTsKLSAgICBSVU5fQklOQVJZKHRlc3RTdWJN
ZW1BcmczMiwgaW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5B
UlkodGVzdFN1YkltbU1lbTMyLCBpbnQzMk9wZXJhbmRzKCksIGludDMyT3BlcmFuZHMoKSk7Ci0g
ICAgUlVOX0JJTkFSWSh0ZXN0U3ViTWVtSW1tMzIsIGludDMyT3BlcmFuZHMoKSwgaW50MzJPcGVy
YW5kcygpKTsKLSAgICBSVU5fVU5BUlkodGVzdE5lZ1ZhbHVlU3ViT25lMzIsIGludDY0T3BlcmFu
ZHMoKSk7Ci0KLSAgICBSVU5fVU5BUlkodGVzdFN1YkFyZ0RvdWJsZSwgZmxvYXRpbmdQb2ludE9w
ZXJhbmRzPGRvdWJsZT4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0U3ViQXJnc0RvdWJsZSwgZmxv
YXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJs
ZT4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0U3ViQXJnSW1tRG91YmxlLCBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZG91YmxlPigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKLSAg
ICBSVU5fQklOQVJZKHRlc3RTdWJJbW1BcmdEb3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxk
b3VibGU+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwotICAgIFJVTl9CSU5B
UlkodGVzdFN1YkltbXNEb3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCksIGZs
b2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0U3ViQXJn
RmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0
ZXN0U3ViQXJnc0Zsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5n
UG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0U3ViQXJnSW1tRmxv
YXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRz
PGZsb2F0PigpKTsKLSAgICBSVU5fQklOQVJZKHRlc3RTdWJJbW1BcmdGbG9hdCwgZmxvYXRpbmdQ
b2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwot
ICAgIFJVTl9CSU5BUlkodGVzdFN1YkltbXNGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZs
b2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTl9VTkFSWSh0
ZXN0U3ViQXJnRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24sIGZsb2F0aW5nUG9pbnRP
cGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0U3ViQXJnc0Zsb2F0V2l0aFVz
ZWxlc3NEb3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZs
b2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0U3ViQXJn
c0Zsb2F0V2l0aEVmZmVjdGZ1bERvdWJsZUNvbnZlcnNpb24sIGZsb2F0aW5nUG9pbnRPcGVyYW5k
czxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKLQotICAgIFJVTl9V
TkFSWSh0ZXN0TmVnRG91YmxlLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKLSAg
ICBSVU5fVU5BUlkodGVzdE5lZ0Zsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkp
OwotICAgIFJVTl9VTkFSWSh0ZXN0TmVnRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24s
IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0KLSAgICBSVU4odGVzdEJpdEFuZEFy
Z3MoNDMsIDQzKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRBcmdzKDQzLCAwKSk7Ci0gICAgUlVOKHRl
c3RCaXRBbmRBcmdzKDEwLCAzKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRBcmdzKDQyLCAweGZmZmZm
ZmZmZmZmZmZmZmYpKTsKLSAgICBSVU4odGVzdEJpdEFuZFNhbWVBcmcoNDMpKTsKLSAgICBSVU4o
dGVzdEJpdEFuZFNhbWVBcmcoMCkpOwotICAgIFJVTih0ZXN0Qml0QW5kU2FtZUFyZygzKSk7Ci0g
ICAgUlVOKHRlc3RCaXRBbmRTYW1lQXJnKDB4ZmZmZmZmZmZmZmZmZmZmZikpOwotICAgIFJVTih0
ZXN0Qml0QW5kSW1tcyg0MywgNDMpKTsKLSAgICBSVU4odGVzdEJpdEFuZEltbXMoNDMsIDApKTsK
LSAgICBSVU4odGVzdEJpdEFuZEltbXMoMTAsIDMpKTsKLSAgICBSVU4odGVzdEJpdEFuZEltbXMo
NDIsIDB4ZmZmZmZmZmZmZmZmZmZmZikpOwotICAgIFJVTih0ZXN0Qml0QW5kQXJnSW1tKDQzLCA0
MykpOwotICAgIFJVTih0ZXN0Qml0QW5kQXJnSW1tKDQzLCAwKSk7Ci0gICAgUlVOKHRlc3RCaXRB
bmRBcmdJbW0oMTAsIDMpKTsKLSAgICBSVU4odGVzdEJpdEFuZEFyZ0ltbSg0MiwgMHhmZmZmZmZm
ZmZmZmZmZmZmKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRBcmdJbW0oNDIsIDB4ZmYpKTsKLSAgICBS
VU4odGVzdEJpdEFuZEFyZ0ltbSgzMDAsIDB4ZmYpKTsKLSAgICBSVU4odGVzdEJpdEFuZEFyZ0lt
bSgtMzAwLCAweGZmKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRBcmdJbW0oNDIsIDB4ZmZmZikpOwot
ICAgIFJVTih0ZXN0Qml0QW5kQXJnSW1tKDQwMDAwLCAweGZmZmYpKTsKLSAgICBSVU4odGVzdEJp
dEFuZEFyZ0ltbSgtNDAwMDAsIDB4ZmZmZikpOwotICAgIFJVTih0ZXN0Qml0QW5kSW1tQXJnKDQz
LCA0MykpOwotICAgIFJVTih0ZXN0Qml0QW5kSW1tQXJnKDQzLCAwKSk7Ci0gICAgUlVOKHRlc3RC
aXRBbmRJbW1BcmcoMTAsIDMpKTsKLSAgICBSVU4odGVzdEJpdEFuZEltbUFyZyg0MiwgMHhmZmZm
ZmZmZmZmZmZmZmZmKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRCaXRBbmRBcmdJbW1JbW0oMiwgNywg
MykpOwotICAgIFJVTih0ZXN0Qml0QW5kQml0QW5kQXJnSW1tSW1tKDEsIDYsIDYpKTsKLSAgICBS
VU4odGVzdEJpdEFuZEJpdEFuZEFyZ0ltbUltbSgweGZmZmYsIDI0LCA3KSk7Ci0gICAgUlVOKHRl
c3RCaXRBbmRJbW1CaXRBbmRBcmdJbW0oNywgMiwgMykpOwotICAgIFJVTih0ZXN0Qml0QW5kSW1t
Qml0QW5kQXJnSW1tKDYsIDEsIDYpKTsKLSAgICBSVU4odGVzdEJpdEFuZEltbUJpdEFuZEFyZ0lt
bSgyNCwgMHhmZmZmLCA3KSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRBcmdzMzIoNDMsIDQzKSk7Ci0g
ICAgUlVOKHRlc3RCaXRBbmRBcmdzMzIoNDMsIDApKTsKLSAgICBSVU4odGVzdEJpdEFuZEFyZ3Mz
MigxMCwgMykpOwotICAgIFJVTih0ZXN0Qml0QW5kQXJnczMyKDQyLCAweGZmZmZmZmZmKSk7Ci0g
ICAgUlVOKHRlc3RCaXRBbmRTYW1lQXJnMzIoNDMpKTsKLSAgICBSVU4odGVzdEJpdEFuZFNhbWVB
cmczMigwKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRTYW1lQXJnMzIoMykpOwotICAgIFJVTih0ZXN0
Qml0QW5kU2FtZUFyZzMyKDB4ZmZmZmZmZmYpKTsKLSAgICBSVU4odGVzdEJpdEFuZEltbXMzMig0
MywgNDMpKTsKLSAgICBSVU4odGVzdEJpdEFuZEltbXMzMig0MywgMCkpOwotICAgIFJVTih0ZXN0
Qml0QW5kSW1tczMyKDEwLCAzKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRJbW1zMzIoNDIsIDB4ZmZm
ZmZmZmYpKTsKLSAgICBSVU4odGVzdEJpdEFuZEFyZ0ltbTMyKDQzLCA0MykpOwotICAgIFJVTih0
ZXN0Qml0QW5kQXJnSW1tMzIoNDMsIDApKTsKLSAgICBSVU4odGVzdEJpdEFuZEFyZ0ltbTMyKDEw
LCAzKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRBcmdJbW0zMig0MiwgMHhmZmZmZmZmZikpOwotICAg
IFJVTih0ZXN0Qml0QW5kSW1tQXJnMzIoNDMsIDQzKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRJbW1B
cmczMig0MywgMCkpOwotICAgIFJVTih0ZXN0Qml0QW5kSW1tQXJnMzIoMTAsIDMpKTsKLSAgICBS
VU4odGVzdEJpdEFuZEltbUFyZzMyKDQyLCAweGZmZmZmZmZmKSk7Ci0gICAgUlVOKHRlc3RCaXRB
bmRJbW1BcmczMig0MiwgMHhmZikpOwotICAgIFJVTih0ZXN0Qml0QW5kSW1tQXJnMzIoMzAwLCAw
eGZmKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRJbW1BcmczMigtMzAwLCAweGZmKSk7Ci0gICAgUlVO
KHRlc3RCaXRBbmRJbW1BcmczMig0MiwgMHhmZmZmKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRJbW1B
cmczMig0MDAwMCwgMHhmZmZmKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRJbW1BcmczMigtNDAwMDAs
IDB4ZmZmZikpOwotICAgIFJVTih0ZXN0Qml0QW5kQml0QW5kQXJnSW1tSW1tMzIoMiwgNywgMykp
OwotICAgIFJVTih0ZXN0Qml0QW5kQml0QW5kQXJnSW1tSW1tMzIoMSwgNiwgNikpOwotICAgIFJV
Tih0ZXN0Qml0QW5kQml0QW5kQXJnSW1tSW1tMzIoMHhmZmZmLCAyNCwgNykpOwotICAgIFJVTih0
ZXN0Qml0QW5kSW1tQml0QW5kQXJnSW1tMzIoNywgMiwgMykpOwotICAgIFJVTih0ZXN0Qml0QW5k
SW1tQml0QW5kQXJnSW1tMzIoNiwgMSwgNikpOwotICAgIFJVTih0ZXN0Qml0QW5kSW1tQml0QW5k
QXJnSW1tMzIoMjQsIDB4ZmZmZiwgNykpOwotICAgIFJVTl9CSU5BUlkodGVzdEJpdEFuZFdpdGhN
YXNrUmV0dXJuc0Jvb2xlYW5zLCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSk7Ci0g
ICAgUlVOX1VOQVJZKHRlc3RCaXRBbmRBcmdEb3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxk
b3VibGU+KCkpOwotICAgIFJVTl9CSU5BUlkodGVzdEJpdEFuZEFyZ3NEb3VibGUsIGZsb2F0aW5n
UG9pbnRPcGVyYW5kczxkb3VibGU+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkp
OwotICAgIFJVTl9CSU5BUlkodGVzdEJpdEFuZEFyZ0ltbURvdWJsZSwgZmxvYXRpbmdQb2ludE9w
ZXJhbmRzPGRvdWJsZT4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7Ci0gICAg
UlVOX0JJTkFSWSh0ZXN0Qml0QW5kSW1tc0RvdWJsZSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRv
dWJsZT4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7Ci0gICAgUlVOX1VOQVJZ
KHRlc3RCaXRBbmRBcmdGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKLSAg
ICBSVU5fQklOQVJZKHRlc3RCaXRBbmRBcmdzRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxm
bG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKLSAgICBSVU5fQklOQVJZ
KHRlc3RCaXRBbmRBcmdJbW1GbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBm
bG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTl9CSU5BUlkodGVzdEJpdEFu
ZEltbXNGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTl9CSU5BUlkodGVzdEJpdEFuZEFyZ3NGbG9hdFdp
dGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbiwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0Pigp
LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTl9CSU5BUlkodGVzdEJp
dEFuZE5vdE5vdCwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOwotICAgIFJVTl9C
SU5BUlkodGVzdEJpdEFuZE5vdEltbSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkp
OwotCi0gICAgUlVOKHRlc3RCaXRPckFyZ3MoNDMsIDQzKSk7Ci0gICAgUlVOKHRlc3RCaXRPckFy
Z3MoNDMsIDApKTsKLSAgICBSVU4odGVzdEJpdE9yQXJncygxMCwgMykpOwotICAgIFJVTih0ZXN0
Qml0T3JBcmdzKDQyLCAweGZmZmZmZmZmZmZmZmZmZmYpKTsKLSAgICBSVU4odGVzdEJpdE9yU2Ft
ZUFyZyg0MykpOwotICAgIFJVTih0ZXN0Qml0T3JTYW1lQXJnKDApKTsKLSAgICBSVU4odGVzdEJp
dE9yU2FtZUFyZygzKSk7Ci0gICAgUlVOKHRlc3RCaXRPclNhbWVBcmcoMHhmZmZmZmZmZmZmZmZm
ZmZmKSk7Ci0gICAgUlVOKHRlc3RCaXRPckltbXMoNDMsIDQzKSk7Ci0gICAgUlVOKHRlc3RCaXRP
ckltbXMoNDMsIDApKTsKLSAgICBSVU4odGVzdEJpdE9ySW1tcygxMCwgMykpOwotICAgIFJVTih0
ZXN0Qml0T3JJbW1zKDQyLCAweGZmZmZmZmZmZmZmZmZmZmYpKTsKLSAgICBSVU4odGVzdEJpdE9y
QXJnSW1tKDQzLCA0MykpOwotICAgIFJVTih0ZXN0Qml0T3JBcmdJbW0oNDMsIDApKTsKLSAgICBS
VU4odGVzdEJpdE9yQXJnSW1tKDEwLCAzKSk7Ci0gICAgUlVOKHRlc3RCaXRPckFyZ0ltbSg0Miwg
MHhmZmZmZmZmZmZmZmZmZmZmKSk7Ci0gICAgUlVOKHRlc3RCaXRPckltbUFyZyg0MywgNDMpKTsK
LSAgICBSVU4odGVzdEJpdE9ySW1tQXJnKDQzLCAwKSk7Ci0gICAgUlVOKHRlc3RCaXRPckltbUFy
ZygxMCwgMykpOwotICAgIFJVTih0ZXN0Qml0T3JJbW1BcmcoNDIsIDB4ZmZmZmZmZmZmZmZmZmZm
ZikpOwotICAgIFJVTih0ZXN0Qml0T3JCaXRPckFyZ0ltbUltbSgyLCA3LCAzKSk7Ci0gICAgUlVO
KHRlc3RCaXRPckJpdE9yQXJnSW1tSW1tKDEsIDYsIDYpKTsKLSAgICBSVU4odGVzdEJpdE9yQml0
T3JBcmdJbW1JbW0oMHhmZmZmLCAyNCwgNykpOwotICAgIFJVTih0ZXN0Qml0T3JJbW1CaXRPckFy
Z0ltbSg3LCAyLCAzKSk7Ci0gICAgUlVOKHRlc3RCaXRPckltbUJpdE9yQXJnSW1tKDYsIDEsIDYp
KTsKLSAgICBSVU4odGVzdEJpdE9ySW1tQml0T3JBcmdJbW0oMjQsIDB4ZmZmZiwgNykpOwotICAg
IFJVTih0ZXN0Qml0T3JBcmdzMzIoNDMsIDQzKSk7Ci0gICAgUlVOKHRlc3RCaXRPckFyZ3MzMig0
MywgMCkpOwotICAgIFJVTih0ZXN0Qml0T3JBcmdzMzIoMTAsIDMpKTsKLSAgICBSVU4odGVzdEJp
dE9yQXJnczMyKDQyLCAweGZmZmZmZmZmKSk7Ci0gICAgUlVOKHRlc3RCaXRPclNhbWVBcmczMig0
MykpOwotICAgIFJVTih0ZXN0Qml0T3JTYW1lQXJnMzIoMCkpOwotICAgIFJVTih0ZXN0Qml0T3JT
YW1lQXJnMzIoMykpOwotICAgIFJVTih0ZXN0Qml0T3JTYW1lQXJnMzIoMHhmZmZmZmZmZikpOwot
ICAgIFJVTih0ZXN0Qml0T3JJbW1zMzIoNDMsIDQzKSk7Ci0gICAgUlVOKHRlc3RCaXRPckltbXMz
Mig0MywgMCkpOwotICAgIFJVTih0ZXN0Qml0T3JJbW1zMzIoMTAsIDMpKTsKLSAgICBSVU4odGVz
dEJpdE9ySW1tczMyKDQyLCAweGZmZmZmZmZmKSk7Ci0gICAgUlVOKHRlc3RCaXRPckFyZ0ltbTMy
KDQzLCA0MykpOwotICAgIFJVTih0ZXN0Qml0T3JBcmdJbW0zMig0MywgMCkpOwotICAgIFJVTih0
ZXN0Qml0T3JBcmdJbW0zMigxMCwgMykpOwotICAgIFJVTih0ZXN0Qml0T3JBcmdJbW0zMig0Miwg
MHhmZmZmZmZmZikpOwotICAgIFJVTih0ZXN0Qml0T3JJbW1BcmczMig0MywgNDMpKTsKLSAgICBS
VU4odGVzdEJpdE9ySW1tQXJnMzIoNDMsIDApKTsKLSAgICBSVU4odGVzdEJpdE9ySW1tQXJnMzIo
MTAsIDMpKTsKLSAgICBSVU4odGVzdEJpdE9ySW1tQXJnMzIoNDIsIDB4ZmZmZmZmZmYpKTsKLSAg
ICBSVU4odGVzdEJpdE9yQml0T3JBcmdJbW1JbW0zMigyLCA3LCAzKSk7Ci0gICAgUlVOKHRlc3RC
aXRPckJpdE9yQXJnSW1tSW1tMzIoMSwgNiwgNikpOwotICAgIFJVTih0ZXN0Qml0T3JCaXRPckFy
Z0ltbUltbTMyKDB4ZmZmZiwgMjQsIDcpKTsKLSAgICBSVU4odGVzdEJpdE9ySW1tQml0T3JBcmdJ
bW0zMig3LCAyLCAzKSk7Ci0gICAgUlVOKHRlc3RCaXRPckltbUJpdE9yQXJnSW1tMzIoNiwgMSwg
NikpOwotICAgIFJVTih0ZXN0Qml0T3JJbW1CaXRPckFyZ0ltbTMyKDI0LCAweGZmZmYsIDcpKTsK
LSAgICBSVU5fVU5BUlkodGVzdEJpdE9yQXJnRG91YmxlLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8
ZG91YmxlPigpKTsKLSAgICBSVU5fQklOQVJZKHRlc3RCaXRPckFyZ3NEb3VibGUsIGZsb2F0aW5n
UG9pbnRPcGVyYW5kczxkb3VibGU+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkp
OwotICAgIFJVTl9CSU5BUlkodGVzdEJpdE9yQXJnSW1tRG91YmxlLCBmbG9hdGluZ1BvaW50T3Bl
cmFuZHM8ZG91YmxlPigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKLSAgICBS
VU5fQklOQVJZKHRlc3RCaXRPckltbXNEb3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3Vi
bGU+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwotICAgIFJVTl9VTkFSWSh0
ZXN0Qml0T3JBcmdGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKLSAgICBS
VU5fQklOQVJZKHRlc3RCaXRPckFyZ3NGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0
PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTl9CSU5BUlkodGVz
dEJpdE9yQXJnSW1tRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRp
bmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKLSAgICBSVU5fQklOQVJZKHRlc3RCaXRPckltbXNG
bG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFu
ZHM8ZmxvYXQ+KCkpOwotICAgIFJVTl9CSU5BUlkodGVzdEJpdE9yQXJnc0Zsb2F0V2l0aFVzZWxl
c3NEb3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0
aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX1RFUk5BUlkodGVzdEJpdE9yQW5k
QW5kQXJncywgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMo
KSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0Qml0T3JBbmRTYW1lQXJncywgaW50NjRPcGVyYW5kcygp
LCBpbnQ2NE9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5BUlkodGVzdEJpdE9yTm90Tm90LCBpbnQ2
NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0Qml0T3JO
b3RJbW0sIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKLQotICAgIFJVTl9CSU5B
UlkodGVzdEJpdFhvckFyZ3MsIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKLSAg
ICBSVU5fVU5BUlkodGVzdEJpdFhvclNhbWVBcmcsIGludDY0T3BlcmFuZHMoKSk7Ci0gICAgUlVO
X0JJTkFSWSh0ZXN0Qml0WG9ySW1tcywgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkp
OwotICAgIFJVTl9CSU5BUlkodGVzdEJpdFhvckFyZ0ltbSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2
NE9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5BUlkodGVzdEJpdFhvckltbUFyZywgaW50NjRPcGVy
YW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOwotICAgIFJVTih0ZXN0Qml0WG9yQml0WG9yQXJnSW1t
SW1tKDIsIDcsIDMpKTsKLSAgICBSVU4odGVzdEJpdFhvckJpdFhvckFyZ0ltbUltbSgxLCA2LCA2
KSk7Ci0gICAgUlVOKHRlc3RCaXRYb3JCaXRYb3JBcmdJbW1JbW0oMHhmZmZmLCAyNCwgNykpOwot
ICAgIFJVTih0ZXN0Qml0WG9ySW1tQml0WG9yQXJnSW1tKDcsIDIsIDMpKTsKLSAgICBSVU4odGVz
dEJpdFhvckltbUJpdFhvckFyZ0ltbSg2LCAxLCA2KSk7Ci0gICAgUlVOKHRlc3RCaXRYb3JJbW1C
aXRYb3JBcmdJbW0oMjQsIDB4ZmZmZiwgNykpOwotICAgIFJVTih0ZXN0Qml0WG9yQXJnczMyKDQz
LCA0MykpOwotICAgIFJVTih0ZXN0Qml0WG9yQXJnczMyKDQzLCAwKSk7Ci0gICAgUlVOKHRlc3RC
aXRYb3JBcmdzMzIoMTAsIDMpKTsKLSAgICBSVU4odGVzdEJpdFhvckFyZ3MzMig0MiwgMHhmZmZm
ZmZmZikpOwotICAgIFJVTih0ZXN0Qml0WG9yU2FtZUFyZzMyKDQzKSk7Ci0gICAgUlVOKHRlc3RC
aXRYb3JTYW1lQXJnMzIoMCkpOwotICAgIFJVTih0ZXN0Qml0WG9yU2FtZUFyZzMyKDMpKTsKLSAg
ICBSVU4odGVzdEJpdFhvclNhbWVBcmczMigweGZmZmZmZmZmKSk7Ci0gICAgUlVOKHRlc3RCaXRY
b3JJbW1zMzIoNDMsIDQzKSk7Ci0gICAgUlVOKHRlc3RCaXRYb3JJbW1zMzIoNDMsIDApKTsKLSAg
ICBSVU4odGVzdEJpdFhvckltbXMzMigxMCwgMykpOwotICAgIFJVTih0ZXN0Qml0WG9ySW1tczMy
KDQyLCAweGZmZmZmZmZmKSk7Ci0gICAgUlVOKHRlc3RCaXRYb3JBcmdJbW0zMig0MywgNDMpKTsK
LSAgICBSVU4odGVzdEJpdFhvckFyZ0ltbTMyKDQzLCAwKSk7Ci0gICAgUlVOKHRlc3RCaXRYb3JB
cmdJbW0zMigxMCwgMykpOwotICAgIFJVTih0ZXN0Qml0WG9yQXJnSW1tMzIoNDIsIDB4ZmZmZmZm
ZmYpKTsKLSAgICBSVU4odGVzdEJpdFhvckltbUFyZzMyKDQzLCA0MykpOwotICAgIFJVTih0ZXN0
Qml0WG9ySW1tQXJnMzIoNDMsIDApKTsKLSAgICBSVU4odGVzdEJpdFhvckltbUFyZzMyKDEwLCAz
KSk7Ci0gICAgUlVOKHRlc3RCaXRYb3JJbW1BcmczMig0MiwgMHhmZmZmZmZmZikpOwotICAgIFJV
Tih0ZXN0Qml0WG9yQml0WG9yQXJnSW1tSW1tMzIoMiwgNywgMykpOwotICAgIFJVTih0ZXN0Qml0
WG9yQml0WG9yQXJnSW1tSW1tMzIoMSwgNiwgNikpOwotICAgIFJVTih0ZXN0Qml0WG9yQml0WG9y
QXJnSW1tSW1tMzIoMHhmZmZmLCAyNCwgNykpOwotICAgIFJVTih0ZXN0Qml0WG9ySW1tQml0WG9y
QXJnSW1tMzIoNywgMiwgMykpOwotICAgIFJVTih0ZXN0Qml0WG9ySW1tQml0WG9yQXJnSW1tMzIo
NiwgMSwgNikpOwotICAgIFJVTih0ZXN0Qml0WG9ySW1tQml0WG9yQXJnSW1tMzIoMjQsIDB4ZmZm
ZiwgNykpOwotICAgIFJVTl9URVJOQVJZKHRlc3RCaXRYb3JBbmRBbmRBcmdzLCBpbnQ2NE9wZXJh
bmRzKCksIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKLSAgICBSVU5fQklOQVJZ
KHRlc3RCaXRYb3JBbmRTYW1lQXJncywgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkp
OwotCi0gICAgUlVOX1VOQVJZKHRlc3RCaXROb3RBcmcsIGludDY0T3BlcmFuZHMoKSk7Ci0gICAg
UlVOX1VOQVJZKHRlc3RCaXROb3RJbW0sIGludDY0T3BlcmFuZHMoKSk7Ci0gICAgUlVOX1VOQVJZ
KHRlc3RCaXROb3RNZW0sIGludDY0T3BlcmFuZHMoKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RCaXRO
b3RBcmczMiwgaW50MzJPcGVyYW5kcygpKTsKLSAgICBSVU5fVU5BUlkodGVzdEJpdE5vdEltbTMy
LCBpbnQzMk9wZXJhbmRzKCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0Qml0Tm90TWVtMzIsIGludDMy
T3BlcmFuZHMoKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0Tm90T25Cb29sZWFuQW5kQnJhbmNoMzIs
IGludDMyT3BlcmFuZHMoKSwgaW50MzJPcGVyYW5kcygpKTsKLSAgICBSVU5fQklOQVJZKHRlc3RC
aXROb3RPbkJvb2xlYW5BbmRCcmFuY2gzMiwgaW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRz
KCkpOwotCi0gICAgUlVOKHRlc3RTaGxBcmdzKDEsIDApKTsKLSAgICBSVU4odGVzdFNobEFyZ3Mo
MSwgMSkpOwotICAgIFJVTih0ZXN0U2hsQXJncygxLCA2MikpOwotICAgIFJVTih0ZXN0U2hsQXJn
cygweGZmZmZmZmZmZmZmZmZmZmYsIDApKTsKLSAgICBSVU4odGVzdFNobEFyZ3MoMHhmZmZmZmZm
ZmZmZmZmZmZmLCAxKSk7Ci0gICAgUlVOKHRlc3RTaGxBcmdzKDB4ZmZmZmZmZmZmZmZmZmZmZiwg
NjMpKTsKLSAgICBSVU4odGVzdFNobEltbXMoMSwgMCkpOwotICAgIFJVTih0ZXN0U2hsSW1tcygx
LCAxKSk7Ci0gICAgUlVOKHRlc3RTaGxJbW1zKDEsIDYyKSk7Ci0gICAgUlVOKHRlc3RTaGxJbW1z
KDEsIDY1KSk7Ci0gICAgUlVOKHRlc3RTaGxJbW1zKDB4ZmZmZmZmZmZmZmZmZmZmZiwgMCkpOwot
ICAgIFJVTih0ZXN0U2hsSW1tcygweGZmZmZmZmZmZmZmZmZmZmYsIDEpKTsKLSAgICBSVU4odGVz
dFNobEltbXMoMHhmZmZmZmZmZmZmZmZmZmZmLCA2MykpOwotICAgIFJVTih0ZXN0U2hsQXJnSW1t
KDEsIDApKTsKLSAgICBSVU4odGVzdFNobEFyZ0ltbSgxLCAxKSk7Ci0gICAgUlVOKHRlc3RTaGxB
cmdJbW0oMSwgNjIpKTsKLSAgICBSVU4odGVzdFNobEFyZ0ltbSgxLCA2NSkpOwotICAgIFJVTih0
ZXN0U2hsQXJnSW1tKDB4ZmZmZmZmZmZmZmZmZmZmZiwgMCkpOwotICAgIFJVTih0ZXN0U2hsQXJn
SW1tKDB4ZmZmZmZmZmZmZmZmZmZmZiwgMSkpOwotICAgIFJVTih0ZXN0U2hsQXJnSW1tKDB4ZmZm
ZmZmZmZmZmZmZmZmZiwgNjMpKTsKLSAgICBSVU4odGVzdFNobFNTaHJBcmdJbW0oMSwgMCkpOwot
ICAgIFJVTih0ZXN0U2hsU1NockFyZ0ltbSgxLCAxKSk7Ci0gICAgUlVOKHRlc3RTaGxTU2hyQXJn
SW1tKDEsIDYyKSk7Ci0gICAgUlVOKHRlc3RTaGxTU2hyQXJnSW1tKDEsIDY1KSk7Ci0gICAgUlVO
KHRlc3RTaGxTU2hyQXJnSW1tKDB4ZmZmZmZmZmZmZmZmZmZmZiwgMCkpOwotICAgIFJVTih0ZXN0
U2hsU1NockFyZ0ltbSgweGZmZmZmZmZmZmZmZmZmZmYsIDEpKTsKLSAgICBSVU4odGVzdFNobFNT
aHJBcmdJbW0oMHhmZmZmZmZmZmZmZmZmZmZmLCA2MykpOwotICAgIFJVTih0ZXN0U2hsQXJnMzIo
MikpOwotICAgIFJVTih0ZXN0U2hsQXJnczMyKDEsIDApKTsKLSAgICBSVU4odGVzdFNobEFyZ3Mz
MigxLCAxKSk7Ci0gICAgUlVOKHRlc3RTaGxBcmdzMzIoMSwgNjIpKTsKLSAgICBSVU4odGVzdFNo
bEltbXMzMigxLCAzMykpOwotICAgIFJVTih0ZXN0U2hsQXJnczMyKDB4ZmZmZmZmZmYsIDApKTsK
LSAgICBSVU4odGVzdFNobEFyZ3MzMigweGZmZmZmZmZmLCAxKSk7Ci0gICAgUlVOKHRlc3RTaGxB
cmdzMzIoMHhmZmZmZmZmZiwgNjMpKTsKLSAgICBSVU4odGVzdFNobEltbXMzMigxLCAwKSk7Ci0g
ICAgUlVOKHRlc3RTaGxJbW1zMzIoMSwgMSkpOwotICAgIFJVTih0ZXN0U2hsSW1tczMyKDEsIDYy
KSk7Ci0gICAgUlVOKHRlc3RTaGxJbW1zMzIoMSwgMzMpKTsKLSAgICBSVU4odGVzdFNobEltbXMz
MigweGZmZmZmZmZmLCAwKSk7Ci0gICAgUlVOKHRlc3RTaGxJbW1zMzIoMHhmZmZmZmZmZiwgMSkp
OwotICAgIFJVTih0ZXN0U2hsSW1tczMyKDB4ZmZmZmZmZmYsIDYzKSk7Ci0gICAgUlVOKHRlc3RT
aGxBcmdJbW0zMigxLCAwKSk7Ci0gICAgUlVOKHRlc3RTaGxBcmdJbW0zMigxLCAxKSk7Ci0gICAg
UlVOKHRlc3RTaGxBcmdJbW0zMigxLCA2MikpOwotICAgIFJVTih0ZXN0U2hsQXJnSW1tMzIoMSwg
MzMpKTsKLSAgICBSVU4odGVzdFNobEFyZ0ltbTMyKDB4ZmZmZmZmZmYsIDApKTsKLSAgICBSVU4o
dGVzdFNobEFyZ0ltbTMyKDB4ZmZmZmZmZmYsIDEpKTsKLSAgICBSVU4odGVzdFNobEFyZ0ltbTMy
KDB4ZmZmZmZmZmYsIDYzKSk7Ci0gICAgUlVOKHRlc3RTaGxaU2hyQXJnSW1tMzIoMSwgMCkpOwot
ICAgIFJVTih0ZXN0U2hsWlNockFyZ0ltbTMyKDEsIDEpKTsKLSAgICBSVU4odGVzdFNobFpTaHJB
cmdJbW0zMigxLCA2MikpOwotICAgIFJVTih0ZXN0U2hsWlNockFyZ0ltbTMyKDEsIDMzKSk7Ci0g
ICAgUlVOKHRlc3RTaGxaU2hyQXJnSW1tMzIoMHhmZmZmZmZmZiwgMCkpOwotICAgIFJVTih0ZXN0
U2hsWlNockFyZ0ltbTMyKDB4ZmZmZmZmZmYsIDEpKTsKLSAgICBSVU4odGVzdFNobFpTaHJBcmdJ
bW0zMigweGZmZmZmZmZmLCA2MykpOwotCi0gICAgUlVOKHRlc3RTU2hyQXJncygxLCAwKSk7Ci0g
ICAgUlVOKHRlc3RTU2hyQXJncygxLCAxKSk7Ci0gICAgUlVOKHRlc3RTU2hyQXJncygxLCA2Mikp
OwotICAgIFJVTih0ZXN0U1NockFyZ3MoMHhmZmZmZmZmZmZmZmZmZmZmLCAwKSk7Ci0gICAgUlVO
KHRlc3RTU2hyQXJncygweGZmZmZmZmZmZmZmZmZmZmYsIDEpKTsKLSAgICBSVU4odGVzdFNTaHJB
cmdzKDB4ZmZmZmZmZmZmZmZmZmZmZiwgNjMpKTsKLSAgICBSVU4odGVzdFNTaHJJbW1zKDEsIDAp
KTsKLSAgICBSVU4odGVzdFNTaHJJbW1zKDEsIDEpKTsKLSAgICBSVU4odGVzdFNTaHJJbW1zKDEs
IDYyKSk7Ci0gICAgUlVOKHRlc3RTU2hySW1tcygxLCA2NSkpOwotICAgIFJVTih0ZXN0U1Nocklt
bXMoMHhmZmZmZmZmZmZmZmZmZmZmLCAwKSk7Ci0gICAgUlVOKHRlc3RTU2hySW1tcygweGZmZmZm
ZmZmZmZmZmZmZmYsIDEpKTsKLSAgICBSVU4odGVzdFNTaHJJbW1zKDB4ZmZmZmZmZmZmZmZmZmZm
ZiwgNjMpKTsKLSAgICBSVU4odGVzdFNTaHJBcmdJbW0oMSwgMCkpOwotICAgIFJVTih0ZXN0U1No
ckFyZ0ltbSgxLCAxKSk7Ci0gICAgUlVOKHRlc3RTU2hyQXJnSW1tKDEsIDYyKSk7Ci0gICAgUlVO
KHRlc3RTU2hyQXJnSW1tKDEsIDY1KSk7Ci0gICAgUlVOKHRlc3RTU2hyQXJnSW1tKDB4ZmZmZmZm
ZmZmZmZmZmZmZiwgMCkpOwotICAgIFJVTih0ZXN0U1NockFyZ0ltbSgweGZmZmZmZmZmZmZmZmZm
ZmYsIDEpKTsKLSAgICBSVU4odGVzdFNTaHJBcmdJbW0oMHhmZmZmZmZmZmZmZmZmZmZmLCA2Mykp
OwotICAgIFJVTih0ZXN0U1NockFyZzMyKDMyKSk7Ci0gICAgUlVOKHRlc3RTU2hyQXJnczMyKDEs
IDApKTsKLSAgICBSVU4odGVzdFNTaHJBcmdzMzIoMSwgMSkpOwotICAgIFJVTih0ZXN0U1NockFy
Z3MzMigxLCA2MikpOwotICAgIFJVTih0ZXN0U1NockFyZ3MzMigxLCAzMykpOwotICAgIFJVTih0
ZXN0U1NockFyZ3MzMigweGZmZmZmZmZmLCAwKSk7Ci0gICAgUlVOKHRlc3RTU2hyQXJnczMyKDB4
ZmZmZmZmZmYsIDEpKTsKLSAgICBSVU4odGVzdFNTaHJBcmdzMzIoMHhmZmZmZmZmZiwgNjMpKTsK
LSAgICBSVU4odGVzdFNTaHJJbW1zMzIoMSwgMCkpOwotICAgIFJVTih0ZXN0U1NockltbXMzMigx
LCAxKSk7Ci0gICAgUlVOKHRlc3RTU2hySW1tczMyKDEsIDYyKSk7Ci0gICAgUlVOKHRlc3RTU2hy
SW1tczMyKDEsIDMzKSk7Ci0gICAgUlVOKHRlc3RTU2hySW1tczMyKDB4ZmZmZmZmZmYsIDApKTsK
LSAgICBSVU4odGVzdFNTaHJJbW1zMzIoMHhmZmZmZmZmZiwgMSkpOwotICAgIFJVTih0ZXN0U1No
ckltbXMzMigweGZmZmZmZmZmLCA2MykpOwotICAgIFJVTih0ZXN0U1NockFyZ0ltbTMyKDEsIDAp
KTsKLSAgICBSVU4odGVzdFNTaHJBcmdJbW0zMigxLCAxKSk7Ci0gICAgUlVOKHRlc3RTU2hyQXJn
SW1tMzIoMSwgNjIpKTsKLSAgICBSVU4odGVzdFNTaHJBcmdJbW0zMigweGZmZmZmZmZmLCAwKSk7
Ci0gICAgUlVOKHRlc3RTU2hyQXJnSW1tMzIoMHhmZmZmZmZmZiwgMSkpOwotICAgIFJVTih0ZXN0
U1NockFyZ0ltbTMyKDB4ZmZmZmZmZmYsIDYzKSk7Ci0KLSAgICBSVU4odGVzdFpTaHJBcmdzKDEs
IDApKTsKLSAgICBSVU4odGVzdFpTaHJBcmdzKDEsIDEpKTsKLSAgICBSVU4odGVzdFpTaHJBcmdz
KDEsIDYyKSk7Ci0gICAgUlVOKHRlc3RaU2hyQXJncygweGZmZmZmZmZmZmZmZmZmZmYsIDApKTsK
LSAgICBSVU4odGVzdFpTaHJBcmdzKDB4ZmZmZmZmZmZmZmZmZmZmZiwgMSkpOwotICAgIFJVTih0
ZXN0WlNockFyZ3MoMHhmZmZmZmZmZmZmZmZmZmZmLCA2MykpOwotICAgIFJVTih0ZXN0WlNocklt
bXMoMSwgMCkpOwotICAgIFJVTih0ZXN0WlNockltbXMoMSwgMSkpOwotICAgIFJVTih0ZXN0WlNo
ckltbXMoMSwgNjIpKTsKLSAgICBSVU4odGVzdFpTaHJJbW1zKDEsIDY1KSk7Ci0gICAgUlVOKHRl
c3RaU2hySW1tcygweGZmZmZmZmZmZmZmZmZmZmYsIDApKTsKLSAgICBSVU4odGVzdFpTaHJJbW1z
KDB4ZmZmZmZmZmZmZmZmZmZmZiwgMSkpOwotICAgIFJVTih0ZXN0WlNockltbXMoMHhmZmZmZmZm
ZmZmZmZmZmZmLCA2MykpOwotICAgIFJVTih0ZXN0WlNockFyZ0ltbSgxLCAwKSk7Ci0gICAgUlVO
KHRlc3RaU2hyQXJnSW1tKDEsIDEpKTsKLSAgICBSVU4odGVzdFpTaHJBcmdJbW0oMSwgNjIpKTsK
LSAgICBSVU4odGVzdFpTaHJBcmdJbW0oMSwgNjUpKTsKLSAgICBSVU4odGVzdFpTaHJBcmdJbW0o
MHhmZmZmZmZmZmZmZmZmZmZmLCAwKSk7Ci0gICAgUlVOKHRlc3RaU2hyQXJnSW1tKDB4ZmZmZmZm
ZmZmZmZmZmZmZiwgMSkpOwotICAgIFJVTih0ZXN0WlNockFyZ0ltbSgweGZmZmZmZmZmZmZmZmZm
ZmYsIDYzKSk7Ci0gICAgUlVOKHRlc3RaU2hyQXJnMzIoMzIpKTsKLSAgICBSVU4odGVzdFpTaHJB
cmdzMzIoMSwgMCkpOwotICAgIFJVTih0ZXN0WlNockFyZ3MzMigxLCAxKSk7Ci0gICAgUlVOKHRl
c3RaU2hyQXJnczMyKDEsIDYyKSk7Ci0gICAgUlVOKHRlc3RaU2hyQXJnczMyKDEsIDMzKSk7Ci0g
ICAgUlVOKHRlc3RaU2hyQXJnczMyKDB4ZmZmZmZmZmYsIDApKTsKLSAgICBSVU4odGVzdFpTaHJB
cmdzMzIoMHhmZmZmZmZmZiwgMSkpOwotICAgIFJVTih0ZXN0WlNockFyZ3MzMigweGZmZmZmZmZm
LCA2MykpOwotICAgIFJVTih0ZXN0WlNockltbXMzMigxLCAwKSk7Ci0gICAgUlVOKHRlc3RaU2hy
SW1tczMyKDEsIDEpKTsKLSAgICBSVU4odGVzdFpTaHJJbW1zMzIoMSwgNjIpKTsKLSAgICBSVU4o
dGVzdFpTaHJJbW1zMzIoMSwgMzMpKTsKLSAgICBSVU4odGVzdFpTaHJJbW1zMzIoMHhmZmZmZmZm
ZiwgMCkpOwotICAgIFJVTih0ZXN0WlNockltbXMzMigweGZmZmZmZmZmLCAxKSk7Ci0gICAgUlVO
KHRlc3RaU2hySW1tczMyKDB4ZmZmZmZmZmYsIDYzKSk7Ci0gICAgUlVOKHRlc3RaU2hyQXJnSW1t
MzIoMSwgMCkpOwotICAgIFJVTih0ZXN0WlNockFyZ0ltbTMyKDEsIDEpKTsKLSAgICBSVU4odGVz
dFpTaHJBcmdJbW0zMigxLCA2MikpOwotICAgIFJVTih0ZXN0WlNockFyZ0ltbTMyKDB4ZmZmZmZm
ZmYsIDApKTsKLSAgICBSVU4odGVzdFpTaHJBcmdJbW0zMigweGZmZmZmZmZmLCAxKSk7Ci0gICAg
UlVOKHRlc3RaU2hyQXJnSW1tMzIoMHhmZmZmZmZmZiwgNjMpKTsKLQotICAgIFJVTl9VTkFSWSh0
ZXN0Q2x6QXJnNjQsIGludDY0T3BlcmFuZHMoKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RDbHpNZW02
NCwgaW50NjRPcGVyYW5kcygpKTsKLSAgICBSVU5fVU5BUlkodGVzdENsekFyZzMyLCBpbnQzMk9w
ZXJhbmRzKCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0Q2x6TWVtMzIsIGludDY0T3BlcmFuZHMoKSk7
Ci0KLSAgICBSVU5fVU5BUlkodGVzdEFic0FyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJs
ZT4oKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RBYnNJbW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxk
b3VibGU+KCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0QWJzTWVtLCBmbG9hdGluZ1BvaW50T3BlcmFu
ZHM8ZG91YmxlPigpKTsKLSAgICBSVU5fVU5BUlkodGVzdEFic0Fic0FyZywgZmxvYXRpbmdQb2lu
dE9wZXJhbmRzPGRvdWJsZT4oKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RBYnNOZWdBcmcsIGZsb2F0
aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0QWJzQml0d2lz
ZUNhc3RBcmcsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwotICAgIFJVTl9VTkFS
WSh0ZXN0Qml0d2lzZUNhc3RBYnNCaXR3aXNlQ2FzdEFyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRz
PGRvdWJsZT4oKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RBYnNBcmcsIGZsb2F0aW5nUG9pbnRPcGVy
YW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RBYnNJbW0sIGZsb2F0aW5nUG9pbnRP
cGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RBYnNNZW0sIGZsb2F0aW5nUG9p
bnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RBYnNBYnNBcmcsIGZsb2F0
aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RBYnNOZWdBcmcs
IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RBYnNC
aXR3aXNlQ2FzdEFyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKLSAgICBSVU5f
VU5BUlkodGVzdEJpdHdpc2VDYXN0QWJzQml0d2lzZUNhc3RBcmcsIGZsb2F0aW5nUG9pbnRPcGVy
YW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RBYnNBcmdXaXRoVXNlbGVzc0RvdWJs
ZUNvbnZlcnNpb24sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX1VO
QVJZKHRlc3RBYnNBcmdXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lvbiwgZmxvYXRpbmdQb2lu
dE9wZXJhbmRzPGZsb2F0PigpKTsKLQotICAgIFJVTl9VTkFSWSh0ZXN0Q2VpbEFyZywgZmxvYXRp
bmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RDZWlsSW1tLCBm
bG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKLSAgICBSVU5fVU5BUlkodGVzdENlaWxN
ZW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0
Q2VpbENlaWxBcmcsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwotICAgIFJVTl9V
TkFSWSh0ZXN0Rmxvb3JDZWlsQXJnLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsK
LSAgICBSVU5fVU5BUlkodGVzdENlaWxJVG9ENjQsIGludDY0T3BlcmFuZHMoKSk7Ci0gICAgUlVO
X1VOQVJZKHRlc3RDZWlsSVRvRDMyLCBpbnQzMk9wZXJhbmRzKCkpOwotICAgIFJVTl9VTkFSWSh0
ZXN0Q2VpbEFyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKLSAgICBSVU5fVU5B
UlkodGVzdENlaWxJbW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVO
X1VOQVJZKHRlc3RDZWlsTWVtLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAg
IFJVTl9VTkFSWSh0ZXN0Q2VpbENlaWxBcmcsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4o
KSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RGbG9vckNlaWxBcmcsIGZsb2F0aW5nUG9pbnRPcGVyYW5k
czxmbG9hdD4oKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RDZWlsQXJnV2l0aFVzZWxlc3NEb3VibGVD
b252ZXJzaW9uLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTl9VTkFS
WSh0ZXN0Q2VpbEFyZ1dpdGhFZmZlY3RmdWxEb3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZmxvYXQ+KCkpOwotCi0gICAgUlVOX1VOQVJZKHRlc3RGbG9vckFyZywgZmxvYXRp
bmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RGbG9vckltbSwg
ZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RGbG9v
ck1lbSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7Ci0gICAgUlVOX1VOQVJZKHRl
c3RGbG9vckZsb29yQXJnLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKLSAgICBS
VU5fVU5BUlkodGVzdENlaWxGbG9vckFyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4o
KSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RGbG9vcklUb0Q2NCwgaW50NjRPcGVyYW5kcygpKTsKLSAg
ICBSVU5fVU5BUlkodGVzdEZsb29ySVRvRDMyLCBpbnQzMk9wZXJhbmRzKCkpOwotICAgIFJVTl9V
TkFSWSh0ZXN0Rmxvb3JBcmcsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAg
UlVOX1VOQVJZKHRlc3RGbG9vckltbSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsK
LSAgICBSVU5fVU5BUlkodGVzdEZsb29yTWVtLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+
KCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0Rmxvb3JGbG9vckFyZywgZmxvYXRpbmdQb2ludE9wZXJh
bmRzPGZsb2F0PigpKTsKLSAgICBSVU5fVU5BUlkodGVzdENlaWxGbG9vckFyZywgZmxvYXRpbmdQ
b2ludE9wZXJhbmRzPGZsb2F0PigpKTsKLSAgICBSVU5fVU5BUlkodGVzdEZsb29yQXJnV2l0aFVz
ZWxlc3NEb3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwot
ICAgIFJVTl9VTkFSWSh0ZXN0Rmxvb3JBcmdXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lvbiwg
ZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKLQotICAgIFJVTl9VTkFSWSh0ZXN0U3Fy
dEFyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7Ci0gICAgUlVOX1VOQVJZKHRl
c3RTcXJ0SW1tLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKLSAgICBSVU5fVU5B
UlkodGVzdFNxcnRNZW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwotICAgIFJV
Tl9VTkFSWSh0ZXN0U3FydEFyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKLSAg
ICBSVU5fVU5BUlkodGVzdFNxcnRJbW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7
Ci0gICAgUlVOX1VOQVJZKHRlc3RTcXJ0TWVtLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+
KCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0U3FydEFyZ1dpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lv
biwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKLSAgICBSVU5fVU5BUlkodGVzdFNx
cnRBcmdXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lvbiwgZmxvYXRpbmdQb2ludE9wZXJhbmRz
PGZsb2F0PigpKTsKLQotICAgIFJVTl9CSU5BUlkodGVzdENvbXBhcmVUd29GbG9hdFRvRG91Ymxl
LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxm
bG9hdD4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0Q29tcGFyZU9uZUZsb2F0VG9Eb3VibGUsIGZs
b2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJs
ZT4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0Q29tcGFyZUZsb2F0VG9Eb3VibGVUaHJvdWdoUGhp
LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxm
bG9hdD4oKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3REb3VibGVUb0Zsb2F0VGhyb3VnaFBoaSwgZmxv
YXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKLSAgICBSVU4odGVzdFJlZHVjZUZsb2F0VG9E
b3VibGVWYWxpZGF0ZXMoKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3REb3VibGVQcm9kdWNlclBoaVRv
RmxvYXRDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJV
Tl9VTkFSWSh0ZXN0RG91YmxlUHJvZHVjZXJQaGlUb0Zsb2F0Q29udmVyc2lvbldpdGhEb3VibGVD
b25zdW1lciwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKLSAgICBSVU5fQklOQVJZ
KHRlc3REb3VibGVQcm9kdWNlclBoaVdpdGhOb25GbG9hdENvbnN0LCBmbG9hdGluZ1BvaW50T3Bl
cmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwotCi0gICAg
UlVOX1VOQVJZKHRlc3REb3VibGVBcmdUb0ludDY0Qml0d2lzZUNhc3QsIGZsb2F0aW5nUG9pbnRP
cGVyYW5kczxkb3VibGU+KCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0RG91YmxlSW1tVG9JbnQ2NEJp
dHdpc2VDYXN0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKLSAgICBSVU5fVU5B
UlkodGVzdFR3b0JpdHdpc2VDYXN0T25Eb3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3Vi
bGU+KCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0Qml0d2lzZUNhc3RPbkRvdWJsZUluTWVtb3J5LCBm
bG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKLSAgICBSVU5fVU5BUlkodGVzdEJpdHdp
c2VDYXN0T25Eb3VibGVJbk1lbW9yeUluZGV4ZWQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3Vi
bGU+KCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0SW50NjRCQXJnVG9Eb3VibGVCaXR3aXNlQ2FzdCwg
aW50NjRPcGVyYW5kcygpKTsKLSAgICBSVU5fVU5BUlkodGVzdEludDY0QkltbVRvRG91YmxlQml0
d2lzZUNhc3QsIGludDY0T3BlcmFuZHMoKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RUd29CaXR3aXNl
Q2FzdE9uSW50NjQsIGludDY0T3BlcmFuZHMoKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RCaXR3aXNl
Q2FzdE9uSW50NjRJbk1lbW9yeSwgaW50NjRPcGVyYW5kcygpKTsKLSAgICBSVU5fVU5BUlkodGVz
dEJpdHdpc2VDYXN0T25JbnQ2NEluTWVtb3J5SW5kZXhlZCwgaW50NjRPcGVyYW5kcygpKTsKLSAg
ICBSVU5fVU5BUlkodGVzdEZsb2F0SW1tVG9JbnQzMkJpdHdpc2VDYXN0LCBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0Qml0d2lzZUNhc3RPbkZsb2F0
SW5NZW1vcnksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX1VOQVJZ
KHRlc3RJbnQzMkJBcmdUb0Zsb2F0Qml0d2lzZUNhc3QsIGludDMyT3BlcmFuZHMoKSk7Ci0gICAg
UlVOX1VOQVJZKHRlc3RJbnQzMkJJbW1Ub0Zsb2F0Qml0d2lzZUNhc3QsIGludDMyT3BlcmFuZHMo
KSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RUd29CaXR3aXNlQ2FzdE9uSW50MzIsIGludDMyT3BlcmFu
ZHMoKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RCaXR3aXNlQ2FzdE9uSW50MzJJbk1lbW9yeSwgaW50
MzJPcGVyYW5kcygpKTsKLQotICAgIFJVTl9VTkFSWSh0ZXN0Q29udmVydERvdWJsZVRvRmxvYXRB
cmcsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0
Q29udmVydERvdWJsZVRvRmxvYXRJbW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkp
OwotICAgIFJVTl9VTkFSWSh0ZXN0Q29udmVydERvdWJsZVRvRmxvYXRNZW0sIGZsb2F0aW5nUG9p
bnRPcGVyYW5kczxkb3VibGU+KCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0Q29udmVydEZsb2F0VG9E
b3VibGVBcmcsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX1VOQVJZ
KHRlc3RDb252ZXJ0RmxvYXRUb0RvdWJsZUltbSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0
PigpKTsKLSAgICBSVU5fVU5BUlkodGVzdENvbnZlcnRGbG9hdFRvRG91YmxlTWVtLCBmbG9hdGlu
Z1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0Q29udmVydERvdWJs
ZVRvRmxvYXRUb0RvdWJsZVRvRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkp
OwotICAgIFJVTl9VTkFSWSh0ZXN0U3RvcmVGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRv
dWJsZT4oKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RTdG9yZURvdWJsZUNvbnN0YW50QXNGbG9hdCwg
ZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RMb2Fk
RmxvYXRDb252ZXJ0RG91YmxlQ29udmVydEZsb2F0U3RvcmVGbG9hdCwgZmxvYXRpbmdQb2ludE9w
ZXJhbmRzPGZsb2F0PigpKTsKLSAgICBSVU5fVU5BUlkodGVzdEZyb3VuZEFyZywgZmxvYXRpbmdQ
b2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RGcm91bmRNZW0sIGZs
b2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwotCi0gICAgUlVOKHRlc3RJVG9ENjRBcmco
KSk7Ci0gICAgUlVOKHRlc3RJVG9GNjRBcmcoKSk7Ci0gICAgUlVOKHRlc3RJVG9EMzJBcmcoKSk7
Ci0gICAgUlVOKHRlc3RJVG9GMzJBcmcoKSk7Ci0gICAgUlVOKHRlc3RJVG9ENjRNZW0oKSk7Ci0g
ICAgUlVOKHRlc3RJVG9GNjRNZW0oKSk7Ci0gICAgUlVOKHRlc3RJVG9EMzJNZW0oKSk7Ci0gICAg
UlVOKHRlc3RJVG9GMzJNZW0oKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RJVG9ENjRJbW0sIGludDY0
T3BlcmFuZHMoKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RJVG9GNjRJbW0sIGludDY0T3BlcmFuZHMo
KSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RJVG9EMzJJbW0sIGludDMyT3BlcmFuZHMoKSk7Ci0gICAg
UlVOX1VOQVJZKHRlc3RJVG9GMzJJbW0sIGludDMyT3BlcmFuZHMoKSk7Ci0gICAgUlVOKHRlc3RJ
VG9EUmVkdWNlZFRvSVRvRjY0QXJnKCkpOwotICAgIFJVTih0ZXN0SVRvRFJlZHVjZWRUb0lUb0Yz
MkFyZygpKTsKLQotICAgIFJVTih0ZXN0U3RvcmUzMig0NCkpOwotICAgIFJVTih0ZXN0U3RvcmVD
b25zdGFudCg0OSkpOwotICAgIFJVTih0ZXN0U3RvcmVDb25zdGFudFB0cig0OSkpOwotICAgIFJV
Tih0ZXN0U3RvcmU4QXJnKCkpOwotICAgIFJVTih0ZXN0U3RvcmU4SW1tKCkpOwotICAgIFJVTih0
ZXN0U3RvcmVQYXJ0aWFsOEJpdFJlZ2lzdGVyT25YODYoKSk7Ci0gICAgUlVOKHRlc3RTdG9yZTE2
QXJnKCkpOwotICAgIFJVTih0ZXN0U3RvcmUxNkltbSgpKTsKLSAgICBSVU4odGVzdFRydW5jKChz
dGF0aWNfY2FzdDxpbnQ2NF90PigxKSA8PCA0MCkgKyA0MikpOwotICAgIFJVTih0ZXN0QWRkMSg0
NSkpOwotICAgIFJVTih0ZXN0QWRkMVB0cig1MSkpOwotICAgIFJVTih0ZXN0QWRkMVB0cihzdGF0
aWNfY2FzdDxpbnRwdHJfdD4oMHhiYWFkYmVlZikpKTsKLSAgICBSVU4odGVzdE5lZzMyKDUyKSk7
Ci0gICAgUlVOKHRlc3ROZWdQdHIoNTMpKTsKLSAgICBSVU4odGVzdFN0b3JlQWRkTG9hZDMyKDQ2
KSk7Ci0gICAgUlVOKHRlc3RTdG9yZVJlbEFkZExvYWRBY3EzMig0NikpOwotICAgIFJVTih0ZXN0
U3RvcmVBZGRMb2FkSW1tMzIoNDYpKTsKLSAgICBSVU4odGVzdFN0b3JlQWRkTG9hZDY0KDQ2MDAp
KTsKLSAgICBSVU4odGVzdFN0b3JlUmVsQWRkTG9hZEFjcTY0KDQ2MDApKTsKLSAgICBSVU4odGVz
dFN0b3JlQWRkTG9hZEltbTY0KDQ2MDApKTsKLSAgICBSVU4odGVzdFN0b3JlQWRkTG9hZDgoNCwg
TG9hZDhaKSk7Ci0gICAgUlVOKHRlc3RTdG9yZVJlbEFkZExvYWRBY3E4KDQsIExvYWQ4WikpOwot
ICAgIFJVTih0ZXN0U3RvcmVSZWxBZGRGZW5jZUxvYWRBY3E4KDQsIExvYWQ4WikpOwotICAgIFJV
Tih0ZXN0U3RvcmVBZGRMb2FkSW1tOCg0LCBMb2FkOFopKTsKLSAgICBSVU4odGVzdFN0b3JlQWRk
TG9hZDgoNCwgTG9hZDhTKSk7Ci0gICAgUlVOKHRlc3RTdG9yZVJlbEFkZExvYWRBY3E4KDQsIExv
YWQ4UykpOwotICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkSW1tOCg0LCBMb2FkOFMpKTsKLSAgICBS
VU4odGVzdFN0b3JlQWRkTG9hZDE2KDYsIExvYWQxNlopKTsKLSAgICBSVU4odGVzdFN0b3JlUmVs
QWRkTG9hZEFjcTE2KDYsIExvYWQxNlopKTsKLSAgICBSVU4odGVzdFN0b3JlQWRkTG9hZEltbTE2
KDYsIExvYWQxNlopKTsKLSAgICBSVU4odGVzdFN0b3JlQWRkTG9hZDE2KDYsIExvYWQxNlMpKTsK
LSAgICBSVU4odGVzdFN0b3JlUmVsQWRkTG9hZEFjcTE2KDYsIExvYWQxNlMpKTsKLSAgICBSVU4o
dGVzdFN0b3JlQWRkTG9hZEltbTE2KDYsIExvYWQxNlMpKTsKLSAgICBSVU4odGVzdFN0b3JlQWRk
TG9hZDMySW5kZXgoNDYpKTsKLSAgICBSVU4odGVzdFN0b3JlQWRkTG9hZEltbTMySW5kZXgoNDYp
KTsKLSAgICBSVU4odGVzdFN0b3JlQWRkTG9hZDY0SW5kZXgoNDYwMCkpOwotICAgIFJVTih0ZXN0
U3RvcmVBZGRMb2FkSW1tNjRJbmRleCg0NjAwKSk7Ci0gICAgUlVOKHRlc3RTdG9yZUFkZExvYWQ4
SW5kZXgoNCwgTG9hZDhaKSk7Ci0gICAgUlVOKHRlc3RTdG9yZUFkZExvYWRJbW04SW5kZXgoNCwg
TG9hZDhaKSk7Ci0gICAgUlVOKHRlc3RTdG9yZUFkZExvYWQ4SW5kZXgoNCwgTG9hZDhTKSk7Ci0g
ICAgUlVOKHRlc3RTdG9yZUFkZExvYWRJbW04SW5kZXgoNCwgTG9hZDhTKSk7Ci0gICAgUlVOKHRl
c3RTdG9yZUFkZExvYWQxNkluZGV4KDYsIExvYWQxNlopKTsKLSAgICBSVU4odGVzdFN0b3JlQWRk
TG9hZEltbTE2SW5kZXgoNiwgTG9hZDE2WikpOwotICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkMTZJ
bmRleCg2LCBMb2FkMTZTKSk7Ci0gICAgUlVOKHRlc3RTdG9yZUFkZExvYWRJbW0xNkluZGV4KDYs
IExvYWQxNlMpKTsKLSAgICBSVU4odGVzdFN0b3JlU3ViTG9hZCg0NikpOwotICAgIFJVTih0ZXN0
U3RvcmVBZGRMb2FkSW50ZXJmZXJlbmNlKDUyKSk7Ci0gICAgUlVOKHRlc3RTdG9yZUFkZEFuZExv
YWQoNDcsIDB4ZmZmZikpOwotICAgIFJVTih0ZXN0U3RvcmVBZGRBbmRMb2FkKDQ3MDAwMCwgMHhm
ZmZmKSk7Ci0gICAgUlVOKHRlc3RTdG9yZU5lZ0xvYWQzMig1NCkpOwotICAgIFJVTih0ZXN0U3Rv
cmVOZWdMb2FkUHRyKDU1KSk7Ci0gICAgUlVOKHRlc3RBZGQxVW5jb21tdXRlZCg0OCkpOwotICAg
IFJVTih0ZXN0TG9hZE9mZnNldCgpKTsKLSAgICBSVU4odGVzdExvYWRPZmZzZXROb3RDb25zdGFu
dCgpKTsKLSAgICBSVU4odGVzdExvYWRPZmZzZXRVc2luZ0FkZCgpKTsKLSAgICBSVU4odGVzdExv
YWRPZmZzZXRVc2luZ0FkZEludGVyZmVyZW5jZSgpKTsKLSAgICBSVU4odGVzdExvYWRPZmZzZXRV
c2luZ0FkZE5vdENvbnN0YW50KCkpOwotICAgIFJVTih0ZXN0TG9hZEFkZHJTaGlmdCgwKSk7Ci0g
ICAgUlVOKHRlc3RMb2FkQWRkclNoaWZ0KDEpKTsKLSAgICBSVU4odGVzdExvYWRBZGRyU2hpZnQo
MikpOwotICAgIFJVTih0ZXN0TG9hZEFkZHJTaGlmdCgzKSk7Ci0gICAgUlVOKHRlc3RGcmFtZVBv
aW50ZXIoKSk7Ci0gICAgUlVOKHRlc3RPdmVycmlkZUZyYW1lUG9pbnRlcigpKTsKLSAgICBSVU4o
dGVzdFN0YWNrU2xvdCgpKTsKLSAgICBSVU4odGVzdExvYWRGcm9tRnJhbWVQb2ludGVyKCkpOwot
ICAgIFJVTih0ZXN0U3RvcmVMb2FkU3RhY2tTbG90KDUwKSk7Ci0gICAgCi0gICAgUlVOKHRlc3RC
cmFuY2goKSk7Ci0gICAgUlVOKHRlc3RCcmFuY2hQdHIoKSk7Ci0gICAgUlVOKHRlc3REaWFtb25k
KCkpOwotICAgIFJVTih0ZXN0QnJhbmNoTm90RXF1YWwoKSk7Ci0gICAgUlVOKHRlc3RCcmFuY2hO
b3RFcXVhbENvbW11dGUoKSk7Ci0gICAgUlVOKHRlc3RCcmFuY2hOb3RFcXVhbE5vdEVxdWFsKCkp
OwotICAgIFJVTih0ZXN0QnJhbmNoRXF1YWwoKSk7Ci0gICAgUlVOKHRlc3RCcmFuY2hFcXVhbEVx
dWFsKCkpOwotICAgIFJVTih0ZXN0QnJhbmNoRXF1YWxDb21tdXRlKCkpOwotICAgIFJVTih0ZXN0
QnJhbmNoRXF1YWxFcXVhbDEoKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0QnJhbmNoRXF1YWxPclVu
b3JkZXJlZEFyZ3MsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCksIGZsb2F0aW5nUG9p
bnRPcGVyYW5kczxkb3VibGU+KCkpOwotICAgIFJVTl9CSU5BUlkodGVzdEJyYW5jaEVxdWFsT3JV
bm9yZGVyZWRBcmdzLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9p
bnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0QnJhbmNoTm90RXF1YWxB
bmRPcmRlcmVkQXJncywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSwgZmxvYXRpbmdQ
b2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0QnJhbmNoTm90RXF1
YWxBbmRPcmRlcmVkQXJncywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGlu
Z1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTl9CSU5BUlkodGVzdEJyYW5jaEVxdWFs
T3JVbm9yZGVyZWREb3VibGVBcmdJbW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCks
IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwotICAgIFJVTl9CSU5BUlkodGVzdEJy
YW5jaEVxdWFsT3JVbm9yZGVyZWRGbG9hdEFyZ0ltbSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZs
b2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTl9CSU5BUlko
dGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVyZWREb3VibGVJbW1zLCBmbG9hdGluZ1BvaW50T3BlcmFu
ZHM8ZG91YmxlPigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKLSAgICBSVU5f
QklOQVJZKHRlc3RCcmFuY2hFcXVhbE9yVW5vcmRlcmVkRmxvYXRJbW1zLCBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAg
UlVOX0JJTkFSWSh0ZXN0QnJhbmNoRXF1YWxPclVub3JkZXJlZEZsb2F0V2l0aFVzZWxlc3NEb3Vi
bGVDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9p
bnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0QnJhbmNoTm90RXF1YWxB
bmRPcmRlcmVkQXJncywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSwgZmxvYXRpbmdQ
b2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0QnJhbmNoTm90RXF1
YWxBbmRPcmRlcmVkQXJncywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGlu
Z1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTih0ZXN0QnJhbmNoRm9sZCg0MikpOwot
ICAgIFJVTih0ZXN0QnJhbmNoRm9sZCgwKSk7Ci0gICAgUlVOKHRlc3REaWFtb25kRm9sZCg0Mikp
OwotICAgIFJVTih0ZXN0RGlhbW9uZEZvbGQoMCkpOwotICAgIFJVTih0ZXN0QnJhbmNoTm90RXF1
YWxGb2xkUHRyKDQyKSk7Ci0gICAgUlVOKHRlc3RCcmFuY2hOb3RFcXVhbEZvbGRQdHIoMCkpOwot
ICAgIFJVTih0ZXN0QnJhbmNoRXF1YWxGb2xkUHRyKDQyKSk7Ci0gICAgUlVOKHRlc3RCcmFuY2hF
cXVhbEZvbGRQdHIoMCkpOwotICAgIFJVTih0ZXN0QnJhbmNoTG9hZFB0cigpKTsKLSAgICBSVU4o
dGVzdEJyYW5jaExvYWQzMigpKTsKLSAgICBSVU4odGVzdEJyYW5jaExvYWQ4UygpKTsKLSAgICBS
VU4odGVzdEJyYW5jaExvYWQ4WigpKTsKLSAgICBSVU4odGVzdEJyYW5jaExvYWQxNlMoKSk7Ci0g
ICAgUlVOKHRlc3RCcmFuY2hMb2FkMTZaKCkpOwotICAgIFJVTih0ZXN0QnJhbmNoOFdpdGhMb2Fk
OFpJbmRleCgpKTsKLQotICAgIFJVTih0ZXN0Q29tcGxleCg2NCwgMTI4KSk7Ci0gICAgUlVOKHRl
c3RDb21wbGV4KDQsIDEyOCkpOwotICAgIFJVTih0ZXN0Q29tcGxleCg0LCAyNTYpKTsKLSAgICBS
VU4odGVzdENvbXBsZXgoNCwgMzg0KSk7Ci0KLSAgICBSVU5fQklOQVJZKHRlc3RCcmFuY2hCaXRU
ZXN0MzJUbXBJbW0sIGludDMyT3BlcmFuZHMoKSwgaW50MzJPcGVyYW5kcygpKTsKLSAgICBSVU5f
QklOQVJZKHRlc3RCcmFuY2hCaXRUZXN0MzJBZGRySW1tLCBpbnQzMk9wZXJhbmRzKCksIGludDMy
T3BlcmFuZHMoKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0QnJhbmNoQml0VGVzdDMyVG1wVG1wLCBp
bnQzMk9wZXJhbmRzKCksIGludDMyT3BlcmFuZHMoKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0QnJh
bmNoQml0VGVzdDY0VG1wVG1wLCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSk7Ci0g
ICAgUlVOX0JJTkFSWSh0ZXN0QnJhbmNoQml0VGVzdDY0QWRkclRtcCwgaW50NjRPcGVyYW5kcygp
LCBpbnQ2NE9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5BUlkodGVzdEJyYW5jaEJpdFRlc3ROZWdh
dGlvbiwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5BUlko
dGVzdEJyYW5jaEJpdFRlc3ROZWdhdGlvbjIsIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5k
cygpKTsKLQotICAgIFJVTih0ZXN0U2ltcGxlUGF0Y2hwb2ludCgpKTsKLSAgICBSVU4odGVzdFNp
bXBsZVBhdGNocG9pbnRXaXRob3V0T3VwdXRDbG9iYmVyc0dQQXJncygpKTsKLSAgICBSVU4odGVz
dFNpbXBsZVBhdGNocG9pbnRXaXRoT3VwdXRDbG9iYmVyc0dQQXJncygpKTsKLSAgICBSVU4odGVz
dFNpbXBsZVBhdGNocG9pbnRXaXRob3V0T3VwdXRDbG9iYmVyc0ZQQXJncygpKTsKLSAgICBSVU4o
dGVzdFNpbXBsZVBhdGNocG9pbnRXaXRoT3VwdXRDbG9iYmVyc0ZQQXJncygpKTsKLSAgICBSVU4o
dGVzdFBhdGNocG9pbnRXaXRoRWFybHlDbG9iYmVyKCkpOwotICAgIFJVTih0ZXN0UGF0Y2hwb2lu
dENhbGxBcmcoKSk7Ci0gICAgUlVOKHRlc3RQYXRjaHBvaW50Rml4ZWRSZWdpc3RlcigpKTsKLSAg
ICBSVU4odGVzdFBhdGNocG9pbnRBbnkoVmFsdWVSZXA6Oldhcm1BbnkpKTsKLSAgICBSVU4odGVz
dFBhdGNocG9pbnRBbnkoVmFsdWVSZXA6OkNvbGRBbnkpKTsKLSAgICBSVU4odGVzdFBhdGNocG9p
bnRHUFNjcmF0Y2goKSk7Ci0gICAgUlVOKHRlc3RQYXRjaHBvaW50RlBTY3JhdGNoKCkpOwotICAg
IFJVTih0ZXN0UGF0Y2hwb2ludExvdHNPZkxhdGVBbnlzKCkpOwotICAgIFJVTih0ZXN0UGF0Y2hw
b2ludEFueUltbShWYWx1ZVJlcDo6V2FybUFueSkpOwotICAgIFJVTih0ZXN0UGF0Y2hwb2ludEFu
eUltbShWYWx1ZVJlcDo6Q29sZEFueSkpOwotICAgIFJVTih0ZXN0UGF0Y2hwb2ludEFueUltbShW
YWx1ZVJlcDo6TGF0ZUNvbGRBbnkpKTsKLSAgICBSVU4odGVzdFBhdGNocG9pbnRNYW55SW1tcygp
KTsKLSAgICBSVU4odGVzdFBhdGNocG9pbnRXaXRoUmVnaXN0ZXJSZXN1bHQoKSk7Ci0gICAgUlVO
KHRlc3RQYXRjaHBvaW50V2l0aFN0YWNrQXJndW1lbnRSZXN1bHQoKSk7Ci0gICAgUlVOKHRlc3RQ
YXRjaHBvaW50V2l0aEFueVJlc3VsdCgpKTsKLSAgICBSVU4odGVzdFNpbXBsZUNoZWNrKCkpOwot
ICAgIFJVTih0ZXN0Q2hlY2tGYWxzZSgpKTsKLSAgICBSVU4odGVzdENoZWNrVHJ1ZSgpKTsKLSAg
ICBSVU4odGVzdENoZWNrTGVzc1RoYW4oKSk7Ci0gICAgUlVOKHRlc3RDaGVja01lZ2FDb21ibygp
KTsKLSAgICBSVU4odGVzdENoZWNrVHJpY2t5TWVnYUNvbWJvKCkpOwotICAgIFJVTih0ZXN0Q2hl
Y2tUd29NZWdhQ29tYm9zKCkpOwotICAgIFJVTih0ZXN0Q2hlY2tUd29Ob25SZWR1bmRhbnRNZWdh
Q29tYm9zKCkpOwotICAgIFJVTih0ZXN0Q2hlY2tBZGRJbW0oKSk7Ci0gICAgUlVOKHRlc3RDaGVj
a0FkZEltbUNvbW11dGUoKSk7Ci0gICAgUlVOKHRlc3RDaGVja0FkZEltbVNvbWVSZWdpc3Rlcigp
KTsKLSAgICBSVU4odGVzdENoZWNrQWRkKCkpOwotICAgIFJVTih0ZXN0Q2hlY2tBZGQ2NCgpKTsK
LSAgICBSVU4odGVzdENoZWNrQWRkRm9sZCgxMDAsIDIwMCkpOwotICAgIFJVTih0ZXN0Q2hlY2tB
ZGRGb2xkRmFpbCgyMTQ3NDgzNjQ3LCAxMDApKTsKLSAgICBSVU4odGVzdENoZWNrQWRkQXJndW1l
bnRBbGlhc2luZzY0KCkpOwotICAgIFJVTih0ZXN0Q2hlY2tBZGRBcmd1bWVudEFsaWFzaW5nMzIo
KSk7Ci0gICAgUlVOKHRlc3RDaGVja0FkZFNlbGZPdmVyZmxvdzY0KCkpOwotICAgIFJVTih0ZXN0
Q2hlY2tBZGRTZWxmT3ZlcmZsb3czMigpKTsKLSAgICBSVU4odGVzdENoZWNrU3ViSW1tKCkpOwot
ICAgIFJVTih0ZXN0Q2hlY2tTdWJCYWRJbW0oKSk7Ci0gICAgUlVOKHRlc3RDaGVja1N1YigpKTsK
LSAgICBSVU4odGVzdENoZWNrU3ViNjQoKSk7Ci0gICAgUlVOKHRlc3RDaGVja1N1YkZvbGQoMTAw
LCAyMDApKTsKLSAgICBSVU4odGVzdENoZWNrU3ViRm9sZEZhaWwoLTIxNDc0ODM2NDcsIDEwMCkp
OwotICAgIFJVTih0ZXN0Q2hlY2tOZWcoKSk7Ci0gICAgUlVOKHRlc3RDaGVja05lZzY0KCkpOwot
ICAgIFJVTih0ZXN0Q2hlY2tNdWwoKSk7Ci0gICAgUlVOKHRlc3RDaGVja011bE1lbW9yeSgpKTsK
LSAgICBSVU4odGVzdENoZWNrTXVsMigpKTsKLSAgICBSVU4odGVzdENoZWNrTXVsNjQoKSk7Ci0g
ICAgUlVOKHRlc3RDaGVja011bEZvbGQoMTAwLCAyMDApKTsKLSAgICBSVU4odGVzdENoZWNrTXVs
Rm9sZEZhaWwoMjE0NzQ4MzY0NywgMTAwKSk7Ci0gICAgUlVOKHRlc3RDaGVja011bEFyZ3VtZW50
QWxpYXNpbmc2NCgpKTsKLSAgICBSVU4odGVzdENoZWNrTXVsQXJndW1lbnRBbGlhc2luZzMyKCkp
OwotCi0gICAgUlVOX0JJTkFSWShbXShpbnQzMl90IGEsIGludDMyX3QgYikgeyB0ZXN0Q29tcGFy
ZShFcXVhbCwgYSwgYik7IH0sIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKLSAg
ICBSVU5fQklOQVJZKFtdKGludDMyX3QgYSwgaW50MzJfdCBiKSB7IHRlc3RDb21wYXJlKE5vdEVx
dWFsLCBhLCBiKTsgfSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOwotICAgIFJV
Tl9CSU5BUlkoW10oaW50MzJfdCBhLCBpbnQzMl90IGIpIHsgdGVzdENvbXBhcmUoTGVzc1RoYW4s
IGEsIGIpOyB9LCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSk7Ci0gICAgUlVOX0JJ
TkFSWShbXShpbnQzMl90IGEsIGludDMyX3QgYikgeyB0ZXN0Q29tcGFyZShHcmVhdGVyVGhhbiwg
YSwgYik7IH0sIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKLSAgICBSVU5fQklO
QVJZKFtdKGludDMyX3QgYSwgaW50MzJfdCBiKSB7IHRlc3RDb21wYXJlKExlc3NFcXVhbCwgYSwg
Yik7IH0sIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKLSAgICBSVU5fQklOQVJZ
KFtdKGludDMyX3QgYSwgaW50MzJfdCBiKSB7IHRlc3RDb21wYXJlKEdyZWF0ZXJFcXVhbCwgYSwg
Yik7IH0sIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKLSAgICBSVU5fQklOQVJZ
KFtdKGludDMyX3QgYSwgaW50MzJfdCBiKSB7IHRlc3RDb21wYXJlKEJlbG93LCBhLCBiKTsgfSwg
aW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5BUlkoW10oaW50
MzJfdCBhLCBpbnQzMl90IGIpIHsgdGVzdENvbXBhcmUoQWJvdmUsIGEsIGIpOyB9LCBpbnQ2NE9w
ZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSk7Ci0gICAgUlVOX0JJTkFSWShbXShpbnQzMl90IGEs
IGludDMyX3QgYikgeyB0ZXN0Q29tcGFyZShCZWxvd0VxdWFsLCBhLCBiKTsgfSwgaW50NjRPcGVy
YW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5BUlkoW10oaW50MzJfdCBhLCBp
bnQzMl90IGIpIHsgdGVzdENvbXBhcmUoQWJvdmVFcXVhbCwgYSwgYik7IH0sIGludDY0T3BlcmFu
ZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKLSAgICBSVU5fQklOQVJZKFtdKGludDMyX3QgYSwgaW50
MzJfdCBiKSB7IHRlc3RDb21wYXJlKEJpdEFuZCwgYSwgYik7IH0sIGludDY0T3BlcmFuZHMoKSwg
aW50NjRPcGVyYW5kcygpKTsKLQotICAgIFJVTih0ZXN0RXF1YWxEb3VibGUoNDIsIDQyLCB0cnVl
KSk7Ci0gICAgUlVOKHRlc3RFcXVhbERvdWJsZSgwLCAtMCwgdHJ1ZSkpOwotICAgIFJVTih0ZXN0
RXF1YWxEb3VibGUoNDIsIDQzLCBmYWxzZSkpOwotICAgIFJVTih0ZXN0RXF1YWxEb3VibGUoUE5h
TiwgNDIsIGZhbHNlKSk7Ci0gICAgUlVOKHRlc3RFcXVhbERvdWJsZSg0MiwgUE5hTiwgZmFsc2Up
KTsKLSAgICBSVU4odGVzdEVxdWFsRG91YmxlKFBOYU4sIFBOYU4sIGZhbHNlKSk7Ci0KLSAgICBS
VU4odGVzdExvYWQ8SW50MzI+KDYwKSk7Ci0gICAgUlVOKHRlc3RMb2FkPEludDMyPigtNjApKTsK
LSAgICBSVU4odGVzdExvYWQ8SW50MzI+KDEwMDApKTsKLSAgICBSVU4odGVzdExvYWQ8SW50MzI+
KC0xMDAwKSk7Ci0gICAgUlVOKHRlc3RMb2FkPEludDMyPigxMDAwMDAwKSk7Ci0gICAgUlVOKHRl
c3RMb2FkPEludDMyPigtMTAwMDAwMCkpOwotICAgIFJVTih0ZXN0TG9hZDxJbnQzMj4oMTAwMDAw
MDAwMCkpOwotICAgIFJVTih0ZXN0TG9hZDxJbnQzMj4oLTEwMDAwMDAwMDApKTsKLSAgICBSVU5f
VU5BUlkodGVzdExvYWQ8SW50NjQ+LCBpbnQ2NE9wZXJhbmRzKCkpOwotICAgIFJVTl9VTkFSWSh0
ZXN0TG9hZDxGbG9hdD4sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVO
X1VOQVJZKHRlc3RMb2FkPERvdWJsZT4sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkp
OwotICAgIAotICAgIFJVTih0ZXN0TG9hZDxpbnQ4X3Q+KExvYWQ4UywgNjApKTsKLSAgICBSVU4o
dGVzdExvYWQ8aW50OF90PihMb2FkOFMsIC02MCkpOwotICAgIFJVTih0ZXN0TG9hZDxpbnQ4X3Q+
KExvYWQ4UywgMTAwMCkpOwotICAgIFJVTih0ZXN0TG9hZDxpbnQ4X3Q+KExvYWQ4UywgLTEwMDAp
KTsKLSAgICBSVU4odGVzdExvYWQ8aW50OF90PihMb2FkOFMsIDEwMDAwMDApKTsKLSAgICBSVU4o
dGVzdExvYWQ8aW50OF90PihMb2FkOFMsIC0xMDAwMDAwKSk7Ci0gICAgUlVOKHRlc3RMb2FkPGlu
dDhfdD4oTG9hZDhTLCAxMDAwMDAwMDAwKSk7Ci0gICAgUlVOKHRlc3RMb2FkPGludDhfdD4oTG9h
ZDhTLCAtMTAwMDAwMDAwMCkpOwotICAgIAotICAgIFJVTih0ZXN0TG9hZDx1aW50OF90PihMb2Fk
OFosIDYwKSk7Ci0gICAgUlVOKHRlc3RMb2FkPHVpbnQ4X3Q+KExvYWQ4WiwgLTYwKSk7Ci0gICAg
UlVOKHRlc3RMb2FkPHVpbnQ4X3Q+KExvYWQ4WiwgMTAwMCkpOwotICAgIFJVTih0ZXN0TG9hZDx1
aW50OF90PihMb2FkOFosIC0xMDAwKSk7Ci0gICAgUlVOKHRlc3RMb2FkPHVpbnQ4X3Q+KExvYWQ4
WiwgMTAwMDAwMCkpOwotICAgIFJVTih0ZXN0TG9hZDx1aW50OF90PihMb2FkOFosIC0xMDAwMDAw
KSk7Ci0gICAgUlVOKHRlc3RMb2FkPHVpbnQ4X3Q+KExvYWQ4WiwgMTAwMDAwMDAwMCkpOwotICAg
IFJVTih0ZXN0TG9hZDx1aW50OF90PihMb2FkOFosIC0xMDAwMDAwMDAwKSk7Ci0KLSAgICBSVU4o
dGVzdExvYWQ8aW50MTZfdD4oTG9hZDE2UywgNjApKTsKLSAgICBSVU4odGVzdExvYWQ8aW50MTZf
dD4oTG9hZDE2UywgLTYwKSk7Ci0gICAgUlVOKHRlc3RMb2FkPGludDE2X3Q+KExvYWQxNlMsIDEw
MDApKTsKLSAgICBSVU4odGVzdExvYWQ8aW50MTZfdD4oTG9hZDE2UywgLTEwMDApKTsKLSAgICBS
VU4odGVzdExvYWQ8aW50MTZfdD4oTG9hZDE2UywgMTAwMDAwMCkpOwotICAgIFJVTih0ZXN0TG9h
ZDxpbnQxNl90PihMb2FkMTZTLCAtMTAwMDAwMCkpOwotICAgIFJVTih0ZXN0TG9hZDxpbnQxNl90
PihMb2FkMTZTLCAxMDAwMDAwMDAwKSk7Ci0gICAgUlVOKHRlc3RMb2FkPGludDE2X3Q+KExvYWQx
NlMsIC0xMDAwMDAwMDAwKSk7Ci0gICAgCi0gICAgUlVOKHRlc3RMb2FkPHVpbnQxNl90PihMb2Fk
MTZaLCA2MCkpOwotICAgIFJVTih0ZXN0TG9hZDx1aW50MTZfdD4oTG9hZDE2WiwgLTYwKSk7Ci0g
ICAgUlVOKHRlc3RMb2FkPHVpbnQxNl90PihMb2FkMTZaLCAxMDAwKSk7Ci0gICAgUlVOKHRlc3RM
b2FkPHVpbnQxNl90PihMb2FkMTZaLCAtMTAwMCkpOwotICAgIFJVTih0ZXN0TG9hZDx1aW50MTZf
dD4oTG9hZDE2WiwgMTAwMDAwMCkpOwotICAgIFJVTih0ZXN0TG9hZDx1aW50MTZfdD4oTG9hZDE2
WiwgLTEwMDAwMDApKTsKLSAgICBSVU4odGVzdExvYWQ8dWludDE2X3Q+KExvYWQxNlosIDEwMDAw
MDAwMDApKTsKLSAgICBSVU4odGVzdExvYWQ8dWludDE2X3Q+KExvYWQxNlosIC0xMDAwMDAwMDAw
KSk7Ci0KLSAgICBSVU4odGVzdFNwaWxsR1AoKSk7Ci0gICAgUlVOKHRlc3RTcGlsbEZQKCkpOwot
Ci0gICAgUlVOKHRlc3RJbnQzMlRvRG91YmxlUGFydGlhbFJlZ2lzdGVyU3RhbGwoKSk7Ci0gICAg
UlVOKHRlc3RJbnQzMlRvRG91YmxlUGFydGlhbFJlZ2lzdGVyV2l0aG91dFN0YWxsKCkpOwotCi0g
ICAgUlVOKHRlc3RDYWxsU2ltcGxlKDEsIDIpKTsKLSAgICBSVU4odGVzdENhbGxSYXJlKDEsIDIp
KTsKLSAgICBSVU4odGVzdENhbGxSYXJlTGl2ZSgxLCAyLCAzKSk7Ci0gICAgUlVOKHRlc3RDYWxs
U2ltcGxlUHVyZSgxLCAyKSk7Ci0gICAgUlVOKHRlc3RDYWxsRnVuY3Rpb25XaXRoSGVsbGFBcmd1
bWVudHMoKSk7Ci0gICAgUlVOKHRlc3RDYWxsRnVuY3Rpb25XaXRoSGVsbGFBcmd1bWVudHMyKCkp
OwotICAgIFJVTih0ZXN0Q2FsbEZ1bmN0aW9uV2l0aEhlbGxhQXJndW1lbnRzMygpKTsKLQotICAg
IFJVTih0ZXN0UmV0dXJuRG91YmxlKDAuMCkpOwotICAgIFJVTih0ZXN0UmV0dXJuRG91YmxlKG5l
Z2F0aXZlWmVybygpKSk7Ci0gICAgUlVOKHRlc3RSZXR1cm5Eb3VibGUoNDIuNSkpOwotICAgIFJV
Tl9VTkFSWSh0ZXN0UmV0dXJuRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7
Ci0KLSAgICBSVU4odGVzdENhbGxTaW1wbGVEb3VibGUoMSwgMikpOwotICAgIFJVTih0ZXN0Q2Fs
bEZ1bmN0aW9uV2l0aEhlbGxhRG91YmxlQXJndW1lbnRzKCkpOwotICAgIFJVTl9CSU5BUlkodGVz
dENhbGxTaW1wbGVGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGlu
Z1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTih0ZXN0Q2FsbEZ1bmN0aW9uV2l0aEhl
bGxhRmxvYXRBcmd1bWVudHMoKSk7Ci0KLSAgICBSVU4odGVzdExpbmVhclNjYW5XaXRoQ2FsbGVl
T25TdGFjaygpKTsKLQotICAgIFJVTih0ZXN0Q2hpbGxEaXYoNCwgMiwgMikpOwotICAgIFJVTih0
ZXN0Q2hpbGxEaXYoMSwgMCwgMCkpOwotICAgIFJVTih0ZXN0Q2hpbGxEaXYoMCwgMCwgMCkpOwot
ICAgIFJVTih0ZXN0Q2hpbGxEaXYoMSwgLTEsIC0xKSk7Ci0gICAgUlVOKHRlc3RDaGlsbERpdigt
MjE0NzQ4MzY0NyAtIDEsIDAsIDApKTsKLSAgICBSVU4odGVzdENoaWxsRGl2KC0yMTQ3NDgzNjQ3
IC0gMSwgMSwgLTIxNDc0ODM2NDcgLSAxKSk7Ci0gICAgUlVOKHRlc3RDaGlsbERpdigtMjE0NzQ4
MzY0NyAtIDEsIC0xLCAtMjE0NzQ4MzY0NyAtIDEpKTsKLSAgICBSVU4odGVzdENoaWxsRGl2KC0y
MTQ3NDgzNjQ3IC0gMSwgMiwgLTEwNzM3NDE4MjQpKTsKLSAgICBSVU4odGVzdENoaWxsRGl2NjQo
NCwgMiwgMikpOwotICAgIFJVTih0ZXN0Q2hpbGxEaXY2NCgxLCAwLCAwKSk7Ci0gICAgUlVOKHRl
c3RDaGlsbERpdjY0KDAsIDAsIDApKTsKLSAgICBSVU4odGVzdENoaWxsRGl2NjQoMSwgLTEsIC0x
KSk7Ci0gICAgUlVOKHRlc3RDaGlsbERpdjY0KC05MjIzMzcyMDM2ODU0Nzc1ODA3bGwgLSAxLCAw
LCAwKSk7Ci0gICAgUlVOKHRlc3RDaGlsbERpdjY0KC05MjIzMzcyMDM2ODU0Nzc1ODA3bGwgLSAx
LCAxLCAtOTIyMzM3MjAzNjg1NDc3NTgwN2xsIC0gMSkpOwotICAgIFJVTih0ZXN0Q2hpbGxEaXY2
NCgtOTIyMzM3MjAzNjg1NDc3NTgwN2xsIC0gMSwgLTEsIC05MjIzMzcyMDM2ODU0Nzc1ODA3bGwg
LSAxKSk7Ci0gICAgUlVOKHRlc3RDaGlsbERpdjY0KC05MjIzMzcyMDM2ODU0Nzc1ODA3bGwgLSAx
LCAyLCAtNDYxMTY4NjAxODQyNzM4NzkwNCkpOwotICAgIFJVTih0ZXN0Q2hpbGxEaXZUd2ljZSg0
LCAyLCA2LCAyLCA1KSk7Ci0gICAgUlVOKHRlc3RDaGlsbERpdlR3aWNlKDQsIDAsIDYsIDIsIDMp
KTsKLSAgICBSVU4odGVzdENoaWxsRGl2VHdpY2UoNCwgMiwgNiwgMCwgMikpOwotCi0gICAgUlVO
X1VOQVJZKHRlc3RNb2RBcmcsIGludDY0T3BlcmFuZHMoKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0
TW9kQXJncywgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5B
UlkodGVzdE1vZEltbXMsIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKLSAgICBS
VU5fVU5BUlkodGVzdE1vZEFyZzMyLCBpbnQzMk9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5BUlko
dGVzdE1vZEFyZ3MzMiwgaW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkpOwotICAgIFJV
Tl9CSU5BUlkodGVzdE1vZEltbXMzMiwgaW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkp
OwotICAgIFJVTl9VTkFSWSh0ZXN0Q2hpbGxNb2RBcmcsIGludDY0T3BlcmFuZHMoKSk7Ci0gICAg
UlVOX0JJTkFSWSh0ZXN0Q2hpbGxNb2RBcmdzLCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFu
ZHMoKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0Q2hpbGxNb2RJbW1zLCBpbnQ2NE9wZXJhbmRzKCks
IGludDY0T3BlcmFuZHMoKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RDaGlsbE1vZEFyZzMyLCBpbnQz
Mk9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5BUlkodGVzdENoaWxsTW9kQXJnczMyLCBpbnQzMk9w
ZXJhbmRzKCksIGludDMyT3BlcmFuZHMoKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0Q2hpbGxNb2RJ
bW1zMzIsIGludDMyT3BlcmFuZHMoKSwgaW50MzJPcGVyYW5kcygpKTsKLQotICAgIFJVTih0ZXN0
U3dpdGNoKDAsIDEpKTsKLSAgICBSVU4odGVzdFN3aXRjaCgxLCAxKSk7Ci0gICAgUlVOKHRlc3RT
d2l0Y2goMiwgMSkpOwotICAgIFJVTih0ZXN0U3dpdGNoKDIsIDIpKTsKLSAgICBSVU4odGVzdFN3
aXRjaCgxMCwgMSkpOwotICAgIFJVTih0ZXN0U3dpdGNoKDEwLCAyKSk7Ci0gICAgUlVOKHRlc3RT
d2l0Y2goMTAwLCAxKSk7Ci0gICAgUlVOKHRlc3RTd2l0Y2goMTAwLCAxMDApKTsKLQotICAgIFJV
Tih0ZXN0U3dpdGNoU2FtZUNhc2VBc0RlZmF1bHQoKSk7Ci0KLSAgICBSVU4odGVzdFN3aXRjaENo
aWxsRGl2KDAsIDEpKTsKLSAgICBSVU4odGVzdFN3aXRjaENoaWxsRGl2KDEsIDEpKTsKLSAgICBS
VU4odGVzdFN3aXRjaENoaWxsRGl2KDIsIDEpKTsKLSAgICBSVU4odGVzdFN3aXRjaENoaWxsRGl2
KDIsIDIpKTsKLSAgICBSVU4odGVzdFN3aXRjaENoaWxsRGl2KDEwLCAxKSk7Ci0gICAgUlVOKHRl
c3RTd2l0Y2hDaGlsbERpdigxMCwgMikpOwotICAgIFJVTih0ZXN0U3dpdGNoQ2hpbGxEaXYoMTAw
LCAxKSk7Ci0gICAgUlVOKHRlc3RTd2l0Y2hDaGlsbERpdigxMDAsIDEwMCkpOwotCi0gICAgUlVO
KHRlc3RTd2l0Y2hUYXJnZXR0aW5nU2FtZUJsb2NrKCkpOwotICAgIFJVTih0ZXN0U3dpdGNoVGFy
Z2V0dGluZ1NhbWVCbG9ja0ZvbGRQYXRoQ29uc3RhbnQoKSk7Ci0KLSAgICBSVU4odGVzdFRydW5j
KDApKTsKLSAgICBSVU4odGVzdFRydW5jKDEpKTsKLSAgICBSVU4odGVzdFRydW5jKC0xKSk7Ci0g
ICAgUlVOKHRlc3RUcnVuYygxMDAwMDAwMDAwMDAwbGwpKTsKLSAgICBSVU4odGVzdFRydW5jKC0x
MDAwMDAwMDAwMDAwbGwpKTsKLSAgICBSVU4odGVzdFRydW5jRm9sZCgwKSk7Ci0gICAgUlVOKHRl
c3RUcnVuY0ZvbGQoMSkpOwotICAgIFJVTih0ZXN0VHJ1bmNGb2xkKC0xKSk7Ci0gICAgUlVOKHRl
c3RUcnVuY0ZvbGQoMTAwMDAwMDAwMDAwMGxsKSk7Ci0gICAgUlVOKHRlc3RUcnVuY0ZvbGQoLTEw
MDAwMDAwMDAwMDBsbCkpOwotICAgIAotICAgIFJVTih0ZXN0WkV4dDMyKDApKTsKLSAgICBSVU4o
dGVzdFpFeHQzMigxKSk7Ci0gICAgUlVOKHRlc3RaRXh0MzIoLTEpKTsKLSAgICBSVU4odGVzdFpF
eHQzMigxMDAwMDAwMDAwbGwpKTsKLSAgICBSVU4odGVzdFpFeHQzMigtMTAwMDAwMDAwMGxsKSk7
Ci0gICAgUlVOKHRlc3RaRXh0MzJGb2xkKDApKTsKLSAgICBSVU4odGVzdFpFeHQzMkZvbGQoMSkp
OwotICAgIFJVTih0ZXN0WkV4dDMyRm9sZCgtMSkpOwotICAgIFJVTih0ZXN0WkV4dDMyRm9sZCgx
MDAwMDAwMDAwbGwpKTsKLSAgICBSVU4odGVzdFpFeHQzMkZvbGQoLTEwMDAwMDAwMDBsbCkpOwot
Ci0gICAgUlVOKHRlc3RTRXh0MzIoMCkpOwotICAgIFJVTih0ZXN0U0V4dDMyKDEpKTsKLSAgICBS
VU4odGVzdFNFeHQzMigtMSkpOwotICAgIFJVTih0ZXN0U0V4dDMyKDEwMDAwMDAwMDBsbCkpOwot
ICAgIFJVTih0ZXN0U0V4dDMyKC0xMDAwMDAwMDAwbGwpKTsKLSAgICBSVU4odGVzdFNFeHQzMkZv
bGQoMCkpOwotICAgIFJVTih0ZXN0U0V4dDMyRm9sZCgxKSk7Ci0gICAgUlVOKHRlc3RTRXh0MzJG
b2xkKC0xKSk7Ci0gICAgUlVOKHRlc3RTRXh0MzJGb2xkKDEwMDAwMDAwMDBsbCkpOwotICAgIFJV
Tih0ZXN0U0V4dDMyRm9sZCgtMTAwMDAwMDAwMGxsKSk7Ci0KLSAgICBSVU4odGVzdFRydW5jWkV4
dDMyKDApKTsKLSAgICBSVU4odGVzdFRydW5jWkV4dDMyKDEpKTsKLSAgICBSVU4odGVzdFRydW5j
WkV4dDMyKC0xKSk7Ci0gICAgUlVOKHRlc3RUcnVuY1pFeHQzMigxMDAwMDAwMDAwbGwpKTsKLSAg
ICBSVU4odGVzdFRydW5jWkV4dDMyKC0xMDAwMDAwMDAwbGwpKTsKLSAgICBSVU4odGVzdFRydW5j
U0V4dDMyKDApKTsKLSAgICBSVU4odGVzdFRydW5jU0V4dDMyKDEpKTsKLSAgICBSVU4odGVzdFRy
dW5jU0V4dDMyKC0xKSk7Ci0gICAgUlVOKHRlc3RUcnVuY1NFeHQzMigxMDAwMDAwMDAwbGwpKTsK
LSAgICBSVU4odGVzdFRydW5jU0V4dDMyKC0xMDAwMDAwMDAwbGwpKTsKLQotICAgIFJVTih0ZXN0
U0V4dDgoMCkpOwotICAgIFJVTih0ZXN0U0V4dDgoMSkpOwotICAgIFJVTih0ZXN0U0V4dDgoNDIp
KTsKLSAgICBSVU4odGVzdFNFeHQ4KC0xKSk7Ci0gICAgUlVOKHRlc3RTRXh0OCgweGZmKSk7Ci0g
ICAgUlVOKHRlc3RTRXh0OCgweDEwMCkpOwotICAgIFJVTih0ZXN0U0V4dDhGb2xkKDApKTsKLSAg
ICBSVU4odGVzdFNFeHQ4Rm9sZCgxKSk7Ci0gICAgUlVOKHRlc3RTRXh0OEZvbGQoNDIpKTsKLSAg
ICBSVU4odGVzdFNFeHQ4Rm9sZCgtMSkpOwotICAgIFJVTih0ZXN0U0V4dDhGb2xkKDB4ZmYpKTsK
LSAgICBSVU4odGVzdFNFeHQ4Rm9sZCgweDEwMCkpOwotICAgIFJVTih0ZXN0U0V4dDhTRXh0OCgw
KSk7Ci0gICAgUlVOKHRlc3RTRXh0OFNFeHQ4KDEpKTsKLSAgICBSVU4odGVzdFNFeHQ4U0V4dDgo
NDIpKTsKLSAgICBSVU4odGVzdFNFeHQ4U0V4dDgoLTEpKTsKLSAgICBSVU4odGVzdFNFeHQ4U0V4
dDgoMHhmZikpOwotICAgIFJVTih0ZXN0U0V4dDhTRXh0OCgweDEwMCkpOwotICAgIFJVTih0ZXN0
U0V4dDhTRXh0MTYoMCkpOwotICAgIFJVTih0ZXN0U0V4dDhTRXh0MTYoMSkpOwotICAgIFJVTih0
ZXN0U0V4dDhTRXh0MTYoNDIpKTsKLSAgICBSVU4odGVzdFNFeHQ4U0V4dDE2KC0xKSk7Ci0gICAg
UlVOKHRlc3RTRXh0OFNFeHQxNigweGZmKSk7Ci0gICAgUlVOKHRlc3RTRXh0OFNFeHQxNigweDEw
MCkpOwotICAgIFJVTih0ZXN0U0V4dDhTRXh0MTYoMHhmZmZmKSk7Ci0gICAgUlVOKHRlc3RTRXh0
OFNFeHQxNigweDEwMDAwKSk7Ci0gICAgUlVOKHRlc3RTRXh0OEJpdEFuZCgwLCAwKSk7Ci0gICAg
UlVOKHRlc3RTRXh0OEJpdEFuZCgxLCAwKSk7Ci0gICAgUlVOKHRlc3RTRXh0OEJpdEFuZCg0Miwg
MCkpOwotICAgIFJVTih0ZXN0U0V4dDhCaXRBbmQoLTEsIDApKTsKLSAgICBSVU4odGVzdFNFeHQ4
Qml0QW5kKDB4ZmYsIDApKTsKLSAgICBSVU4odGVzdFNFeHQ4Qml0QW5kKDB4MTAwLCAwKSk7Ci0g
ICAgUlVOKHRlc3RTRXh0OEJpdEFuZCgweGZmZmYsIDApKTsKLSAgICBSVU4odGVzdFNFeHQ4Qml0
QW5kKDB4MTAwMDAsIDApKTsKLSAgICBSVU4odGVzdFNFeHQ4Qml0QW5kKDAsIDB4ZikpOwotICAg
IFJVTih0ZXN0U0V4dDhCaXRBbmQoMSwgMHhmKSk7Ci0gICAgUlVOKHRlc3RTRXh0OEJpdEFuZCg0
MiwgMHhmKSk7Ci0gICAgUlVOKHRlc3RTRXh0OEJpdEFuZCgtMSwgMHhmKSk7Ci0gICAgUlVOKHRl
c3RTRXh0OEJpdEFuZCgweGZmLCAweGYpKTsKLSAgICBSVU4odGVzdFNFeHQ4Qml0QW5kKDB4MTAw
LCAweGYpKTsKLSAgICBSVU4odGVzdFNFeHQ4Qml0QW5kKDB4ZmZmZiwgMHhmKSk7Ci0gICAgUlVO
KHRlc3RTRXh0OEJpdEFuZCgweDEwMDAwLCAweGYpKTsKLSAgICBSVU4odGVzdFNFeHQ4Qml0QW5k
KDAsIDB4ZmYpKTsKLSAgICBSVU4odGVzdFNFeHQ4Qml0QW5kKDEsIDB4ZmYpKTsKLSAgICBSVU4o
dGVzdFNFeHQ4Qml0QW5kKDQyLCAweGZmKSk7Ci0gICAgUlVOKHRlc3RTRXh0OEJpdEFuZCgtMSwg
MHhmZikpOwotICAgIFJVTih0ZXN0U0V4dDhCaXRBbmQoMHhmZiwgMHhmZikpOwotICAgIFJVTih0
ZXN0U0V4dDhCaXRBbmQoMHgxMDAsIDB4ZmYpKTsKLSAgICBSVU4odGVzdFNFeHQ4Qml0QW5kKDB4
ZmZmZiwgMHhmZikpOwotICAgIFJVTih0ZXN0U0V4dDhCaXRBbmQoMHgxMDAwMCwgMHhmZikpOwot
ICAgIFJVTih0ZXN0U0V4dDhCaXRBbmQoMCwgMHg4MCkpOwotICAgIFJVTih0ZXN0U0V4dDhCaXRB
bmQoMSwgMHg4MCkpOwotICAgIFJVTih0ZXN0U0V4dDhCaXRBbmQoNDIsIDB4ODApKTsKLSAgICBS
VU4odGVzdFNFeHQ4Qml0QW5kKC0xLCAweDgwKSk7Ci0gICAgUlVOKHRlc3RTRXh0OEJpdEFuZCgw
eGZmLCAweDgwKSk7Ci0gICAgUlVOKHRlc3RTRXh0OEJpdEFuZCgweDEwMCwgMHg4MCkpOwotICAg
IFJVTih0ZXN0U0V4dDhCaXRBbmQoMHhmZmZmLCAweDgwKSk7Ci0gICAgUlVOKHRlc3RTRXh0OEJp
dEFuZCgweDEwMDAwLCAweDgwKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRTRXh0OCgwLCAweGYpKTsK
LSAgICBSVU4odGVzdEJpdEFuZFNFeHQ4KDEsIDB4ZikpOwotICAgIFJVTih0ZXN0Qml0QW5kU0V4
dDgoNDIsIDB4ZikpOwotICAgIFJVTih0ZXN0Qml0QW5kU0V4dDgoLTEsIDB4ZikpOwotICAgIFJV
Tih0ZXN0Qml0QW5kU0V4dDgoMHhmZiwgMHhmKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRTRXh0OCgw
eDEwMCwgMHhmKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRTRXh0OCgweGZmZmYsIDB4ZikpOwotICAg
IFJVTih0ZXN0Qml0QW5kU0V4dDgoMHgxMDAwMCwgMHhmKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRT
RXh0OCgwLCAweGZmKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRTRXh0OCgxLCAweGZmKSk7Ci0gICAg
UlVOKHRlc3RCaXRBbmRTRXh0OCg0MiwgMHhmZikpOwotICAgIFJVTih0ZXN0Qml0QW5kU0V4dDgo
LTEsIDB4ZmYpKTsKLSAgICBSVU4odGVzdEJpdEFuZFNFeHQ4KDB4ZmYsIDB4ZmYpKTsKLSAgICBS
VU4odGVzdEJpdEFuZFNFeHQ4KDB4MTAwLCAweGZmKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRTRXh0
OCgweGZmZmYsIDB4ZmYpKTsKLSAgICBSVU4odGVzdEJpdEFuZFNFeHQ4KDB4MTAwMDAsIDB4ZmYp
KTsKLSAgICBSVU4odGVzdEJpdEFuZFNFeHQ4KDAsIDB4ZmZmKSk7Ci0gICAgUlVOKHRlc3RCaXRB
bmRTRXh0OCgxLCAweGZmZikpOwotICAgIFJVTih0ZXN0Qml0QW5kU0V4dDgoNDIsIDB4ZmZmKSk7
Ci0gICAgUlVOKHRlc3RCaXRBbmRTRXh0OCgtMSwgMHhmZmYpKTsKLSAgICBSVU4odGVzdEJpdEFu
ZFNFeHQ4KDB4ZmYsIDB4ZmZmKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRTRXh0OCgweDEwMCwgMHhm
ZmYpKTsKLSAgICBSVU4odGVzdEJpdEFuZFNFeHQ4KDB4ZmZmZiwgMHhmZmYpKTsKLSAgICBSVU4o
dGVzdEJpdEFuZFNFeHQ4KDB4MTAwMDAsIDB4ZmZmKSk7Ci0KLSAgICBSVU4odGVzdFNFeHQxNigw
KSk7Ci0gICAgUlVOKHRlc3RTRXh0MTYoMSkpOwotICAgIFJVTih0ZXN0U0V4dDE2KDQyKSk7Ci0g
ICAgUlVOKHRlc3RTRXh0MTYoLTEpKTsKLSAgICBSVU4odGVzdFNFeHQxNigweGZmZmYpKTsKLSAg
ICBSVU4odGVzdFNFeHQxNigweDEwMDAwKSk7Ci0gICAgUlVOKHRlc3RTRXh0MTZGb2xkKDApKTsK
LSAgICBSVU4odGVzdFNFeHQxNkZvbGQoMSkpOwotICAgIFJVTih0ZXN0U0V4dDE2Rm9sZCg0Mikp
OwotICAgIFJVTih0ZXN0U0V4dDE2Rm9sZCgtMSkpOwotICAgIFJVTih0ZXN0U0V4dDE2Rm9sZCgw
eGZmZmYpKTsKLSAgICBSVU4odGVzdFNFeHQxNkZvbGQoMHgxMDAwMCkpOwotICAgIFJVTih0ZXN0
U0V4dDE2U0V4dDgoMCkpOwotICAgIFJVTih0ZXN0U0V4dDE2U0V4dDgoMSkpOwotICAgIFJVTih0
ZXN0U0V4dDE2U0V4dDgoNDIpKTsKLSAgICBSVU4odGVzdFNFeHQxNlNFeHQ4KC0xKSk7Ci0gICAg
UlVOKHRlc3RTRXh0MTZTRXh0OCgweGZmZmYpKTsKLSAgICBSVU4odGVzdFNFeHQxNlNFeHQ4KDB4
MTAwMDApKTsKLSAgICBSVU4odGVzdFNFeHQxNlNFeHQxNigwKSk7Ci0gICAgUlVOKHRlc3RTRXh0
MTZTRXh0MTYoMSkpOwotICAgIFJVTih0ZXN0U0V4dDE2U0V4dDE2KDQyKSk7Ci0gICAgUlVOKHRl
c3RTRXh0MTZTRXh0MTYoLTEpKTsKLSAgICBSVU4odGVzdFNFeHQxNlNFeHQxNigweGZmZmYpKTsK
LSAgICBSVU4odGVzdFNFeHQxNlNFeHQxNigweDEwMDAwKSk7Ci0gICAgUlVOKHRlc3RTRXh0MTZT
RXh0MTYoMHhmZmZmZmYpKTsKLSAgICBSVU4odGVzdFNFeHQxNlNFeHQxNigweDEwMDAwMDApKTsK
LSAgICBSVU4odGVzdFNFeHQxNkJpdEFuZCgwLCAwKSk7Ci0gICAgUlVOKHRlc3RTRXh0MTZCaXRB
bmQoMSwgMCkpOwotICAgIFJVTih0ZXN0U0V4dDE2Qml0QW5kKDQyLCAwKSk7Ci0gICAgUlVOKHRl
c3RTRXh0MTZCaXRBbmQoLTEsIDApKTsKLSAgICBSVU4odGVzdFNFeHQxNkJpdEFuZCgweGZmZmYs
IDApKTsKLSAgICBSVU4odGVzdFNFeHQxNkJpdEFuZCgweDEwMDAwLCAwKSk7Ci0gICAgUlVOKHRl
c3RTRXh0MTZCaXRBbmQoMHhmZmZmZmYsIDApKTsKLSAgICBSVU4odGVzdFNFeHQxNkJpdEFuZCgw
eDEwMDAwMDAsIDApKTsKLSAgICBSVU4odGVzdFNFeHQxNkJpdEFuZCgwLCAweGYpKTsKLSAgICBS
VU4odGVzdFNFeHQxNkJpdEFuZCgxLCAweGYpKTsKLSAgICBSVU4odGVzdFNFeHQxNkJpdEFuZCg0
MiwgMHhmKSk7Ci0gICAgUlVOKHRlc3RTRXh0MTZCaXRBbmQoLTEsIDB4ZikpOwotICAgIFJVTih0
ZXN0U0V4dDE2Qml0QW5kKDB4ZmZmZiwgMHhmKSk7Ci0gICAgUlVOKHRlc3RTRXh0MTZCaXRBbmQo
MHgxMDAwMCwgMHhmKSk7Ci0gICAgUlVOKHRlc3RTRXh0MTZCaXRBbmQoMHhmZmZmZmYsIDB4Zikp
OwotICAgIFJVTih0ZXN0U0V4dDE2Qml0QW5kKDB4MTAwMDAwMCwgMHhmKSk7Ci0gICAgUlVOKHRl
c3RTRXh0MTZCaXRBbmQoMCwgMHhmZmZmKSk7Ci0gICAgUlVOKHRlc3RTRXh0MTZCaXRBbmQoMSwg
MHhmZmZmKSk7Ci0gICAgUlVOKHRlc3RTRXh0MTZCaXRBbmQoNDIsIDB4ZmZmZikpOwotICAgIFJV
Tih0ZXN0U0V4dDE2Qml0QW5kKC0xLCAweGZmZmYpKTsKLSAgICBSVU4odGVzdFNFeHQxNkJpdEFu
ZCgweGZmZmYsIDB4ZmZmZikpOwotICAgIFJVTih0ZXN0U0V4dDE2Qml0QW5kKDB4MTAwMDAsIDB4
ZmZmZikpOwotICAgIFJVTih0ZXN0U0V4dDE2Qml0QW5kKDB4ZmZmZmZmLCAweGZmZmYpKTsKLSAg
ICBSVU4odGVzdFNFeHQxNkJpdEFuZCgweDEwMDAwMDAsIDB4ZmZmZikpOwotICAgIFJVTih0ZXN0
U0V4dDE2Qml0QW5kKDAsIDB4ODAwMCkpOwotICAgIFJVTih0ZXN0U0V4dDE2Qml0QW5kKDEsIDB4
ODAwMCkpOwotICAgIFJVTih0ZXN0U0V4dDE2Qml0QW5kKDQyLCAweDgwMDApKTsKLSAgICBSVU4o
dGVzdFNFeHQxNkJpdEFuZCgtMSwgMHg4MDAwKSk7Ci0gICAgUlVOKHRlc3RTRXh0MTZCaXRBbmQo
MHhmZmZmLCAweDgwMDApKTsKLSAgICBSVU4odGVzdFNFeHQxNkJpdEFuZCgweDEwMDAwLCAweDgw
MDApKTsKLSAgICBSVU4odGVzdFNFeHQxNkJpdEFuZCgweGZmZmZmZiwgMHg4MDAwKSk7Ci0gICAg
UlVOKHRlc3RTRXh0MTZCaXRBbmQoMHgxMDAwMDAwLCAweDgwMDApKTsKLSAgICBSVU4odGVzdEJp
dEFuZFNFeHQxNigwLCAweGYpKTsKLSAgICBSVU4odGVzdEJpdEFuZFNFeHQxNigxLCAweGYpKTsK
LSAgICBSVU4odGVzdEJpdEFuZFNFeHQxNig0MiwgMHhmKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRT
RXh0MTYoLTEsIDB4ZikpOwotICAgIFJVTih0ZXN0Qml0QW5kU0V4dDE2KDB4ZmZmZiwgMHhmKSk7
Ci0gICAgUlVOKHRlc3RCaXRBbmRTRXh0MTYoMHgxMDAwMCwgMHhmKSk7Ci0gICAgUlVOKHRlc3RC
aXRBbmRTRXh0MTYoMHhmZmZmZmYsIDB4ZikpOwotICAgIFJVTih0ZXN0Qml0QW5kU0V4dDE2KDB4
MTAwMDAwMCwgMHhmKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRTRXh0MTYoMCwgMHhmZmZmKSk7Ci0g
ICAgUlVOKHRlc3RCaXRBbmRTRXh0MTYoMSwgMHhmZmZmKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRT
RXh0MTYoNDIsIDB4ZmZmZikpOwotICAgIFJVTih0ZXN0Qml0QW5kU0V4dDE2KC0xLCAweGZmZmYp
KTsKLSAgICBSVU4odGVzdEJpdEFuZFNFeHQxNigweGZmZmYsIDB4ZmZmZikpOwotICAgIFJVTih0
ZXN0Qml0QW5kU0V4dDE2KDB4MTAwMDAsIDB4ZmZmZikpOwotICAgIFJVTih0ZXN0Qml0QW5kU0V4
dDE2KDB4ZmZmZmZmLCAweGZmZmYpKTsKLSAgICBSVU4odGVzdEJpdEFuZFNFeHQxNigweDEwMDAw
MDAsIDB4ZmZmZikpOwotICAgIFJVTih0ZXN0Qml0QW5kU0V4dDE2KDAsIDB4ZmZmZmYpKTsKLSAg
ICBSVU4odGVzdEJpdEFuZFNFeHQxNigxLCAweGZmZmZmKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRT
RXh0MTYoNDIsIDB4ZmZmZmYpKTsKLSAgICBSVU4odGVzdEJpdEFuZFNFeHQxNigtMSwgMHhmZmZm
ZikpOwotICAgIFJVTih0ZXN0Qml0QW5kU0V4dDE2KDB4ZmZmZiwgMHhmZmZmZikpOwotICAgIFJV
Tih0ZXN0Qml0QW5kU0V4dDE2KDB4MTAwMDAsIDB4ZmZmZmYpKTsKLSAgICBSVU4odGVzdEJpdEFu
ZFNFeHQxNigweGZmZmZmZiwgMHhmZmZmZikpOwotICAgIFJVTih0ZXN0Qml0QW5kU0V4dDE2KDB4
MTAwMDAwMCwgMHhmZmZmZikpOwotCi0gICAgUlVOKHRlc3RTRXh0MzJCaXRBbmQoMCwgMCkpOwot
ICAgIFJVTih0ZXN0U0V4dDMyQml0QW5kKDEsIDApKTsKLSAgICBSVU4odGVzdFNFeHQzMkJpdEFu
ZCg0MiwgMCkpOwotICAgIFJVTih0ZXN0U0V4dDMyQml0QW5kKC0xLCAwKSk7Ci0gICAgUlVOKHRl
c3RTRXh0MzJCaXRBbmQoMHg4MDAwMDAwMCwgMCkpOwotICAgIFJVTih0ZXN0U0V4dDMyQml0QW5k
KDAsIDB4ZikpOwotICAgIFJVTih0ZXN0U0V4dDMyQml0QW5kKDEsIDB4ZikpOwotICAgIFJVTih0
ZXN0U0V4dDMyQml0QW5kKDQyLCAweGYpKTsKLSAgICBSVU4odGVzdFNFeHQzMkJpdEFuZCgtMSwg
MHhmKSk7Ci0gICAgUlVOKHRlc3RTRXh0MzJCaXRBbmQoMHg4MDAwMDAwMCwgMHhmKSk7Ci0gICAg
UlVOKHRlc3RTRXh0MzJCaXRBbmQoMCwgMHg4MDAwMDAwMCkpOwotICAgIFJVTih0ZXN0U0V4dDMy
Qml0QW5kKDEsIDB4ODAwMDAwMDApKTsKLSAgICBSVU4odGVzdFNFeHQzMkJpdEFuZCg0MiwgMHg4
MDAwMDAwMCkpOwotICAgIFJVTih0ZXN0U0V4dDMyQml0QW5kKC0xLCAweDgwMDAwMDAwKSk7Ci0g
ICAgUlVOKHRlc3RTRXh0MzJCaXRBbmQoMHg4MDAwMDAwMCwgMHg4MDAwMDAwMCkpOwotICAgIFJV
Tih0ZXN0Qml0QW5kU0V4dDMyKDAsIDB4ZikpOwotICAgIFJVTih0ZXN0Qml0QW5kU0V4dDMyKDEs
IDB4ZikpOwotICAgIFJVTih0ZXN0Qml0QW5kU0V4dDMyKDQyLCAweGYpKTsKLSAgICBSVU4odGVz
dEJpdEFuZFNFeHQzMigtMSwgMHhmKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRTRXh0MzIoMHhmZmZm
LCAweGYpKTsKLSAgICBSVU4odGVzdEJpdEFuZFNFeHQzMigweDEwMDAwLCAweGYpKTsKLSAgICBS
VU4odGVzdEJpdEFuZFNFeHQzMigweGZmZmZmZiwgMHhmKSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRT
RXh0MzIoMHgxMDAwMDAwLCAweGYpKTsKLSAgICBSVU4odGVzdEJpdEFuZFNFeHQzMigwLCAweGZm
ZmYwMDAwMDAwMGxsdSkpOwotICAgIFJVTih0ZXN0Qml0QW5kU0V4dDMyKDEsIDB4ZmZmZjAwMDAw
MDAwbGx1KSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRTRXh0MzIoNDIsIDB4ZmZmZjAwMDAwMDAwbGx1
KSk7Ci0gICAgUlVOKHRlc3RCaXRBbmRTRXh0MzIoLTEsIDB4ZmZmZjAwMDAwMDAwbGx1KSk7Ci0g
ICAgUlVOKHRlc3RCaXRBbmRTRXh0MzIoMHg4MDAwMDAwMCwgMHhmZmZmMDAwMDAwMDBsbHUpKTsK
LQotICAgIFJVTih0ZXN0QmFzaWNTZWxlY3QoKSk7Ci0gICAgUlVOKHRlc3RTZWxlY3RUZXN0KCkp
OwotICAgIFJVTih0ZXN0U2VsZWN0Q29tcGFyZURvdWJsZSgpKTsKLSAgICBSVU5fQklOQVJZKHRl
c3RTZWxlY3RDb21wYXJlRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxv
YXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKLSAgICBSVU5fQklOQVJZKHRlc3RTZWxlY3RD
b21wYXJlRmxvYXRUb0RvdWJsZSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9h
dGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwotICAgIFJVTih0ZXN0U2VsZWN0RG91YmxlKCkp
OwotICAgIFJVTih0ZXN0U2VsZWN0RG91YmxlVGVzdCgpKTsKLSAgICBSVU4odGVzdFNlbGVjdERv
dWJsZUNvbXBhcmVEb3VibGUoKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0U2VsZWN0RG91YmxlQ29t
cGFyZUZsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRP
cGVyYW5kczxmbG9hdD4oKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0U2VsZWN0RmxvYXRDb21wYXJl
RmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJh
bmRzPGZsb2F0PigpKTsKLSAgICBSVU4odGVzdFNlbGVjdERvdWJsZUNvbXBhcmVEb3VibGVXaXRo
QWxpYXNpbmcoKSk7Ci0gICAgUlVOKHRlc3RTZWxlY3RGbG9hdENvbXBhcmVGbG9hdFdpdGhBbGlh
c2luZygpKTsKLSAgICBSVU4odGVzdFNlbGVjdEZvbGQoNDIpKTsKLSAgICBSVU4odGVzdFNlbGVj
dEZvbGQoNDMpKTsKLSAgICBSVU4odGVzdFNlbGVjdEludmVydCgpKTsKLSAgICBSVU4odGVzdENo
ZWNrU2VsZWN0KCkpOwotICAgIFJVTih0ZXN0Q2hlY2tTZWxlY3RDaGVja1NlbGVjdCgpKTsKLSAg
ICBSVU4odGVzdENoZWNrU2VsZWN0QW5kQ1NFKCkpOwotICAgIFJVTl9CSU5BUlkodGVzdFBvd0Rv
dWJsZUJ5SW50ZWdlckxvb3AsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCksIGludDY0
T3BlcmFuZHMoKSk7Ci0KLSAgICBSVU4odGVzdFRydW5jT3JIaWdoKCkpOwotICAgIFJVTih0ZXN0
VHJ1bmNPckxvdygpKTsKLSAgICBSVU4odGVzdEJpdEFuZE9ySGlnaCgpKTsKLSAgICBSVU4odGVz
dEJpdEFuZE9yTG93KCkpOwotCi0gICAgUlVOKHRlc3RCcmFuY2g2NEVxdWFsKDAsIDApKTsKLSAg
ICBSVU4odGVzdEJyYW5jaDY0RXF1YWwoMSwgMSkpOwotICAgIFJVTih0ZXN0QnJhbmNoNjRFcXVh
bCgtMSwgLTEpKTsKLSAgICBSVU4odGVzdEJyYW5jaDY0RXF1YWwoMSwgLTEpKTsKLSAgICBSVU4o
dGVzdEJyYW5jaDY0RXF1YWwoLTEsIDEpKTsKLSAgICBSVU4odGVzdEJyYW5jaDY0RXF1YWxJbW0o
MCwgMCkpOwotICAgIFJVTih0ZXN0QnJhbmNoNjRFcXVhbEltbSgxLCAxKSk7Ci0gICAgUlVOKHRl
c3RCcmFuY2g2NEVxdWFsSW1tKC0xLCAtMSkpOwotICAgIFJVTih0ZXN0QnJhbmNoNjRFcXVhbElt
bSgxLCAtMSkpOwotICAgIFJVTih0ZXN0QnJhbmNoNjRFcXVhbEltbSgtMSwgMSkpOwotICAgIFJV
Tih0ZXN0QnJhbmNoNjRFcXVhbE1lbSgwLCAwKSk7Ci0gICAgUlVOKHRlc3RCcmFuY2g2NEVxdWFs
TWVtKDEsIDEpKTsKLSAgICBSVU4odGVzdEJyYW5jaDY0RXF1YWxNZW0oLTEsIC0xKSk7Ci0gICAg
UlVOKHRlc3RCcmFuY2g2NEVxdWFsTWVtKDEsIC0xKSk7Ci0gICAgUlVOKHRlc3RCcmFuY2g2NEVx
dWFsTWVtKC0xLCAxKSk7Ci0gICAgUlVOKHRlc3RCcmFuY2g2NEVxdWFsTWVtSW1tKDAsIDApKTsK
LSAgICBSVU4odGVzdEJyYW5jaDY0RXF1YWxNZW1JbW0oMSwgMSkpOwotICAgIFJVTih0ZXN0QnJh
bmNoNjRFcXVhbE1lbUltbSgtMSwgLTEpKTsKLSAgICBSVU4odGVzdEJyYW5jaDY0RXF1YWxNZW1J
bW0oMSwgLTEpKTsKLSAgICBSVU4odGVzdEJyYW5jaDY0RXF1YWxNZW1JbW0oLTEsIDEpKTsKLQot
ICAgIFJVTih0ZXN0U3RvcmU4TG9hZDhaKDApKTsKLSAgICBSVU4odGVzdFN0b3JlOExvYWQ4Wigx
MjMpKTsKLSAgICBSVU4odGVzdFN0b3JlOExvYWQ4WigxMjM0NSkpOwotICAgIFJVTih0ZXN0U3Rv
cmU4TG9hZDhaKC0xMjMpKTsKLQotICAgIFJVTih0ZXN0U3RvcmUxNkxvYWQxNlooMCkpOwotICAg
IFJVTih0ZXN0U3RvcmUxNkxvYWQxNlooMTIzKSk7Ci0gICAgUlVOKHRlc3RTdG9yZTE2TG9hZDE2
WigxMjM0NSkpOwotICAgIFJVTih0ZXN0U3RvcmUxNkxvYWQxNlooMTIzNDU2NzgpKTsKLSAgICBS
VU4odGVzdFN0b3JlMTZMb2FkMTZaKC0xMjMpKTsKLQotICAgIFJVTih0ZXN0U1NoclNobDMyKDQy
LCAyNCwgMjQpKTsKLSAgICBSVU4odGVzdFNTaHJTaGwzMigtNDIsIDI0LCAyNCkpOwotICAgIFJV
Tih0ZXN0U1NoclNobDMyKDQyMDAsIDI0LCAyNCkpOwotICAgIFJVTih0ZXN0U1NoclNobDMyKC00
MjAwLCAyNCwgMjQpKTsKLSAgICBSVU4odGVzdFNTaHJTaGwzMig0MjAwMDAwLCAyNCwgMjQpKTsK
LSAgICBSVU4odGVzdFNTaHJTaGwzMigtNDIwMDAwMCwgMjQsIDI0KSk7Ci0KLSAgICBSVU4odGVz
dFNTaHJTaGwzMig0MiwgMTYsIDE2KSk7Ci0gICAgUlVOKHRlc3RTU2hyU2hsMzIoLTQyLCAxNiwg
MTYpKTsKLSAgICBSVU4odGVzdFNTaHJTaGwzMig0MjAwLCAxNiwgMTYpKTsKLSAgICBSVU4odGVz
dFNTaHJTaGwzMigtNDIwMCwgMTYsIDE2KSk7Ci0gICAgUlVOKHRlc3RTU2hyU2hsMzIoNDIwMDAw
MCwgMTYsIDE2KSk7Ci0gICAgUlVOKHRlc3RTU2hyU2hsMzIoLTQyMDAwMDAsIDE2LCAxNikpOwot
Ci0gICAgUlVOKHRlc3RTU2hyU2hsMzIoNDIsIDgsIDgpKTsKLSAgICBSVU4odGVzdFNTaHJTaGwz
MigtNDIsIDgsIDgpKTsKLSAgICBSVU4odGVzdFNTaHJTaGwzMig0MjAwLCA4LCA4KSk7Ci0gICAg
UlVOKHRlc3RTU2hyU2hsMzIoLTQyMDAsIDgsIDgpKTsKLSAgICBSVU4odGVzdFNTaHJTaGwzMig0
MjAwMDAwLCA4LCA4KSk7Ci0gICAgUlVOKHRlc3RTU2hyU2hsMzIoLTQyMDAwMDAsIDgsIDgpKTsK
LSAgICBSVU4odGVzdFNTaHJTaGwzMig0MjAwMDAwMDAsIDgsIDgpKTsKLSAgICBSVU4odGVzdFNT
aHJTaGwzMigtNDIwMDAwMDAwLCA4LCA4KSk7Ci0KLSAgICBSVU4odGVzdFNTaHJTaGw2NCg0Miwg
NTYsIDU2KSk7Ci0gICAgUlVOKHRlc3RTU2hyU2hsNjQoLTQyLCA1NiwgNTYpKTsKLSAgICBSVU4o
dGVzdFNTaHJTaGw2NCg0MjAwLCA1NiwgNTYpKTsKLSAgICBSVU4odGVzdFNTaHJTaGw2NCgtNDIw
MCwgNTYsIDU2KSk7Ci0gICAgUlVOKHRlc3RTU2hyU2hsNjQoNDIwMDAwMCwgNTYsIDU2KSk7Ci0g
ICAgUlVOKHRlc3RTU2hyU2hsNjQoLTQyMDAwMDAsIDU2LCA1NikpOwotICAgIFJVTih0ZXN0U1No
clNobDY0KDQyMDAwMDAwMCwgNTYsIDU2KSk7Ci0gICAgUlVOKHRlc3RTU2hyU2hsNjQoLTQyMDAw
MDAwMCwgNTYsIDU2KSk7Ci0gICAgUlVOKHRlc3RTU2hyU2hsNjQoNDIwMDAwMDAwMDAsIDU2LCA1
NikpOwotICAgIFJVTih0ZXN0U1NoclNobDY0KC00MjAwMDAwMDAwMCwgNTYsIDU2KSk7Ci0KLSAg
ICBSVU4odGVzdFNTaHJTaGw2NCg0MiwgNDgsIDQ4KSk7Ci0gICAgUlVOKHRlc3RTU2hyU2hsNjQo
LTQyLCA0OCwgNDgpKTsKLSAgICBSVU4odGVzdFNTaHJTaGw2NCg0MjAwLCA0OCwgNDgpKTsKLSAg
ICBSVU4odGVzdFNTaHJTaGw2NCgtNDIwMCwgNDgsIDQ4KSk7Ci0gICAgUlVOKHRlc3RTU2hyU2hs
NjQoNDIwMDAwMCwgNDgsIDQ4KSk7Ci0gICAgUlVOKHRlc3RTU2hyU2hsNjQoLTQyMDAwMDAsIDQ4
LCA0OCkpOwotICAgIFJVTih0ZXN0U1NoclNobDY0KDQyMDAwMDAwMCwgNDgsIDQ4KSk7Ci0gICAg
UlVOKHRlc3RTU2hyU2hsNjQoLTQyMDAwMDAwMCwgNDgsIDQ4KSk7Ci0gICAgUlVOKHRlc3RTU2hy
U2hsNjQoNDIwMDAwMDAwMDAsIDQ4LCA0OCkpOwotICAgIFJVTih0ZXN0U1NoclNobDY0KC00MjAw
MDAwMDAwMCwgNDgsIDQ4KSk7Ci0KLSAgICBSVU4odGVzdFNTaHJTaGw2NCg0MiwgMzIsIDMyKSk7
Ci0gICAgUlVOKHRlc3RTU2hyU2hsNjQoLTQyLCAzMiwgMzIpKTsKLSAgICBSVU4odGVzdFNTaHJT
aGw2NCg0MjAwLCAzMiwgMzIpKTsKLSAgICBSVU4odGVzdFNTaHJTaGw2NCgtNDIwMCwgMzIsIDMy
KSk7Ci0gICAgUlVOKHRlc3RTU2hyU2hsNjQoNDIwMDAwMCwgMzIsIDMyKSk7Ci0gICAgUlVOKHRl
c3RTU2hyU2hsNjQoLTQyMDAwMDAsIDMyLCAzMikpOwotICAgIFJVTih0ZXN0U1NoclNobDY0KDQy
MDAwMDAwMCwgMzIsIDMyKSk7Ci0gICAgUlVOKHRlc3RTU2hyU2hsNjQoLTQyMDAwMDAwMCwgMzIs
IDMyKSk7Ci0gICAgUlVOKHRlc3RTU2hyU2hsNjQoNDIwMDAwMDAwMDAsIDMyLCAzMikpOwotICAg
IFJVTih0ZXN0U1NoclNobDY0KC00MjAwMDAwMDAwMCwgMzIsIDMyKSk7Ci0KLSAgICBSVU4odGVz
dFNTaHJTaGw2NCg0MiwgMjQsIDI0KSk7Ci0gICAgUlVOKHRlc3RTU2hyU2hsNjQoLTQyLCAyNCwg
MjQpKTsKLSAgICBSVU4odGVzdFNTaHJTaGw2NCg0MjAwLCAyNCwgMjQpKTsKLSAgICBSVU4odGVz
dFNTaHJTaGw2NCgtNDIwMCwgMjQsIDI0KSk7Ci0gICAgUlVOKHRlc3RTU2hyU2hsNjQoNDIwMDAw
MCwgMjQsIDI0KSk7Ci0gICAgUlVOKHRlc3RTU2hyU2hsNjQoLTQyMDAwMDAsIDI0LCAyNCkpOwot
ICAgIFJVTih0ZXN0U1NoclNobDY0KDQyMDAwMDAwMCwgMjQsIDI0KSk7Ci0gICAgUlVOKHRlc3RT
U2hyU2hsNjQoLTQyMDAwMDAwMCwgMjQsIDI0KSk7Ci0gICAgUlVOKHRlc3RTU2hyU2hsNjQoNDIw
MDAwMDAwMDAsIDI0LCAyNCkpOwotICAgIFJVTih0ZXN0U1NoclNobDY0KC00MjAwMDAwMDAwMCwg
MjQsIDI0KSk7Ci0KLSAgICBSVU4odGVzdFNTaHJTaGw2NCg0MiwgMTYsIDE2KSk7Ci0gICAgUlVO
KHRlc3RTU2hyU2hsNjQoLTQyLCAxNiwgMTYpKTsKLSAgICBSVU4odGVzdFNTaHJTaGw2NCg0MjAw
LCAxNiwgMTYpKTsKLSAgICBSVU4odGVzdFNTaHJTaGw2NCgtNDIwMCwgMTYsIDE2KSk7Ci0gICAg
UlVOKHRlc3RTU2hyU2hsNjQoNDIwMDAwMCwgMTYsIDE2KSk7Ci0gICAgUlVOKHRlc3RTU2hyU2hs
NjQoLTQyMDAwMDAsIDE2LCAxNikpOwotICAgIFJVTih0ZXN0U1NoclNobDY0KDQyMDAwMDAwMCwg
MTYsIDE2KSk7Ci0gICAgUlVOKHRlc3RTU2hyU2hsNjQoLTQyMDAwMDAwMCwgMTYsIDE2KSk7Ci0g
ICAgUlVOKHRlc3RTU2hyU2hsNjQoNDIwMDAwMDAwMDAsIDE2LCAxNikpOwotICAgIFJVTih0ZXN0
U1NoclNobDY0KC00MjAwMDAwMDAwMCwgMTYsIDE2KSk7Ci0KLSAgICBSVU4odGVzdFNTaHJTaGw2
NCg0MiwgOCwgOCkpOwotICAgIFJVTih0ZXN0U1NoclNobDY0KC00MiwgOCwgOCkpOwotICAgIFJV
Tih0ZXN0U1NoclNobDY0KDQyMDAsIDgsIDgpKTsKLSAgICBSVU4odGVzdFNTaHJTaGw2NCgtNDIw
MCwgOCwgOCkpOwotICAgIFJVTih0ZXN0U1NoclNobDY0KDQyMDAwMDAsIDgsIDgpKTsKLSAgICBS
VU4odGVzdFNTaHJTaGw2NCgtNDIwMDAwMCwgOCwgOCkpOwotICAgIFJVTih0ZXN0U1NoclNobDY0
KDQyMDAwMDAwMCwgOCwgOCkpOwotICAgIFJVTih0ZXN0U1NoclNobDY0KC00MjAwMDAwMDAsIDgs
IDgpKTsKLSAgICBSVU4odGVzdFNTaHJTaGw2NCg0MjAwMDAwMDAwMCwgOCwgOCkpOwotICAgIFJV
Tih0ZXN0U1NoclNobDY0KC00MjAwMDAwMDAwMCwgOCwgOCkpOwotCi0gICAgUlVOKHRlc3RDaGVj
a011bDY0U1NocigpKTsKLQotICAgIFJVTl9CSU5BUlkodGVzdFJvdFIsIGludDMyT3BlcmFuZHMo
KSwgaW50MzJPcGVyYW5kcygpKTsKLSAgICBSVU5fQklOQVJZKHRlc3RSb3RSLCBpbnQ2NE9wZXJh
bmRzKCksIGludDMyT3BlcmFuZHMoKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0Um90TCwgaW50MzJP
cGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5BUlkodGVzdFJvdEwsIGlu
dDY0T3BlcmFuZHMoKSwgaW50MzJPcGVyYW5kcygpKTsKLQotICAgIFJVTl9CSU5BUlkodGVzdFJv
dFJXaXRoSW1tU2hpZnQsIGludDMyT3BlcmFuZHMoKSwgaW50MzJPcGVyYW5kcygpKTsKLSAgICBS
VU5fQklOQVJZKHRlc3RSb3RSV2l0aEltbVNoaWZ0LCBpbnQ2NE9wZXJhbmRzKCksIGludDMyT3Bl
cmFuZHMoKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0Um90TFdpdGhJbW1TaGlmdCwgaW50MzJPcGVy
YW5kcygpLCBpbnQzMk9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5BUlkodGVzdFJvdExXaXRoSW1t
U2hpZnQsIGludDY0T3BlcmFuZHMoKSwgaW50MzJPcGVyYW5kcygpKTsKLQotICAgIFJVTih0ZXN0
Q29tcHV0ZURpdmlzaW9uTWFnaWM8aW50MzJfdD4oMiwgLTIxNDc0ODM2NDcsIDApKTsKLSAgICBS
VU4odGVzdFRyaXZpYWxJbmZpbml0ZUxvb3AoKSk7Ci0gICAgUlVOKHRlc3RGb2xkUGF0aEVxdWFs
KCkpOwotICAgIAotICAgIFJVTih0ZXN0UlNoaWZ0U2VsZjMyKCkpOwotICAgIFJVTih0ZXN0VVJT
aGlmdFNlbGYzMigpKTsKLSAgICBSVU4odGVzdExTaGlmdFNlbGYzMigpKTsKLSAgICBSVU4odGVz
dFJTaGlmdFNlbGY2NCgpKTsKLSAgICBSVU4odGVzdFVSU2hpZnRTZWxmNjQoKSk7Ci0gICAgUlVO
KHRlc3RMU2hpZnRTZWxmNjQoKSk7Ci0KLSAgICBSVU4odGVzdFBhdGNocG9pbnREb3VibGVSZWdz
KCkpOwotICAgIFJVTih0ZXN0U3BpbGxEZWZTbWFsbGVyVGhhblVzZSgpKTsKLSAgICBSVU4odGVz
dFNwaWxsVXNlTGFyZ2VyVGhhbkRlZigpKTsKLSAgICBSVU4odGVzdExhdGVSZWdpc3RlcigpKTsK
LSAgICBSVU4odGVzdEludGVycHJldGVyKCkpOwotICAgIFJVTih0ZXN0UmVkdWNlU3RyZW5ndGhD
aGVja0JvdHRvbVVzZUluQW5vdGhlckJsb2NrKCkpOwotICAgIFJVTih0ZXN0UmVzZXRSZWFjaGFi
aWxpdHlEYW5nbGluZ1JlZmVyZW5jZSgpKTsKLSAgICAKLSAgICBSVU4odGVzdEVudHJ5U3dpdGNo
U2ltcGxlKCkpOwotICAgIFJVTih0ZXN0RW50cnlTd2l0Y2hOb0VudHJ5U3dpdGNoKCkpOwotICAg
IFJVTih0ZXN0RW50cnlTd2l0Y2hXaXRoQ29tbW9uUGF0aHMoKSk7Ci0gICAgUlVOKHRlc3RFbnRy
eVN3aXRjaFdpdGhDb21tb25QYXRoc0FuZE5vblRyaXZpYWxFbnRyeXBvaW50KCkpOwotICAgIFJV
Tih0ZXN0RW50cnlTd2l0Y2hMb29wKCkpOwotCi0gICAgUlVOKHRlc3RTb21lRWFybHlSZWdpc3Rl
cigpKTsKLSAgICBSVU4odGVzdFBhdGNocG9pbnRUZXJtaW5hbFJldHVyblZhbHVlKHRydWUpKTsK
LSAgICBSVU4odGVzdFBhdGNocG9pbnRUZXJtaW5hbFJldHVyblZhbHVlKGZhbHNlKSk7Ci0gICAg
UlVOKHRlc3RUZXJtaW5hbFBhdGNocG9pbnRUaGF0TmVlZHNUb0JlU3BpbGxlZCgpKTsKLQotICAg
IFJVTih0ZXN0TWVtb3J5RmVuY2UoKSk7Ci0gICAgUlVOKHRlc3RTdG9yZUZlbmNlKCkpOwotICAg
IFJVTih0ZXN0TG9hZEZlbmNlKCkpOwotICAgIFJVTih0ZXN0VHJhcHBpbmdMb2FkKCkpOwotICAg
IFJVTih0ZXN0VHJhcHBpbmdTdG9yZSgpKTsKLSAgICBSVU4odGVzdFRyYXBwaW5nTG9hZEFkZFN0
b3JlKCkpOwotICAgIFJVTih0ZXN0VHJhcHBpbmdMb2FkRENFKCkpOwotICAgIFJVTih0ZXN0VHJh
cHBpbmdTdG9yZUVsaW1pbmF0aW9uKCkpOwotICAgIFJVTih0ZXN0TW92ZUNvbnN0YW50cygpKTsK
LSAgICBSVU4odGVzdFBDT3JpZ2luTWFwRG9lc250SW5zZXJ0Tm9wcygpKTsKLSAgICBSVU4odGVz
dFBpblJlZ2lzdGVycygpKTsKLSAgICBSVU4odGVzdFJlZHVjZVN0cmVuZ3RoUmVhc3NvY2lhdGlv
bih0cnVlKSk7Ci0gICAgUlVOKHRlc3RSZWR1Y2VTdHJlbmd0aFJlYXNzb2NpYXRpb24oZmFsc2Up
KTsKLSAgICBSVU4odGVzdEFkZFNobDMyKCkpOwotICAgIFJVTih0ZXN0QWRkU2hsNjQoKSk7Ci0g
ICAgUlVOKHRlc3RBZGRTaGw2NSgpKTsKLSAgICBSVU4odGVzdExvYWRCYXNlSW5kZXhTaGlmdDIo
KSk7Ci0gICAgUlVOKHRlc3RMb2FkQmFzZUluZGV4U2hpZnQzMigpKTsKLSAgICBSVU4odGVzdE9w
dGltaXplTWF0ZXJpYWxpemF0aW9uKCkpOwotICAgIFJVTih0ZXN0TElDTVB1cmUoKSk7Ci0gICAg
UlVOKHRlc3RMSUNNUHVyZVNpZGVFeGl0cygpKTsKLSAgICBSVU4odGVzdExJQ01QdXJlV3JpdGVz
UGlubmVkKCkpOwotICAgIFJVTih0ZXN0TElDTVB1cmVXcml0ZXMoKSk7Ci0gICAgUlVOKHRlc3RM
SUNNUmVhZHNMb2NhbFN0YXRlKCkpOwotICAgIFJVTih0ZXN0TElDTVJlYWRzUGlubmVkKCkpOwot
ICAgIFJVTih0ZXN0TElDTVJlYWRzKCkpOwotICAgIFJVTih0ZXN0TElDTVB1cmVOb3RCYWNrd2Fy
ZHNEb21pbmFudCgpKTsKLSAgICBSVU4odGVzdExJQ01QdXJlRm9pbGVkQnlDaGlsZCgpKTsKLSAg
ICBSVU4odGVzdExJQ01QdXJlTm90QmFja3dhcmRzRG9taW5hbnRGb2lsZWRCeUNoaWxkKCkpOwot
ICAgIFJVTih0ZXN0TElDTUV4aXRzU2lkZXdheXMoKSk7Ci0gICAgUlVOKHRlc3RMSUNNV3JpdGVz
TG9jYWxTdGF0ZSgpKTsKLSAgICBSVU4odGVzdExJQ01Xcml0ZXMoKSk7Ci0gICAgUlVOKHRlc3RM
SUNNV3JpdGVzUGlubmVkKCkpOwotICAgIFJVTih0ZXN0TElDTUZlbmNlKCkpOwotICAgIFJVTih0
ZXN0TElDTUNvbnRyb2xEZXBlbmRlbnQoKSk7Ci0gICAgUlVOKHRlc3RMSUNNQ29udHJvbERlcGVu
ZGVudE5vdEJhY2t3YXJkc0RvbWluYW50KCkpOwotICAgIFJVTih0ZXN0TElDTUNvbnRyb2xEZXBl
bmRlbnRTaWRlRXhpdHMoKSk7Ci0gICAgUlVOKHRlc3RMSUNNUmVhZHNQaW5uZWRXcml0ZXNQaW5u
ZWQoKSk7Ci0gICAgUlVOKHRlc3RMSUNNUmVhZHNXcml0ZXNEaWZmZXJlbnRIZWFwcygpKTsKLSAg
ICBSVU4odGVzdExJQ01SZWFkc1dyaXRlc092ZXJsYXBwaW5nSGVhcHMoKSk7Ci0gICAgUlVOKHRl
c3RMSUNNRGVmYXVsdENhbGwoKSk7Ci0KLSAgICBSVU4odGVzdEF0b21pY1dlYWtDQVM8aW50OF90
PigpKTsKLSAgICBSVU4odGVzdEF0b21pY1dlYWtDQVM8aW50MTZfdD4oKSk7Ci0gICAgUlVOKHRl
c3RBdG9taWNXZWFrQ0FTPGludDMyX3Q+KCkpOwotICAgIFJVTih0ZXN0QXRvbWljV2Vha0NBUzxp
bnQ2NF90PigpKTsKLSAgICBSVU4odGVzdEF0b21pY1N0cm9uZ0NBUzxpbnQ4X3Q+KCkpOwotICAg
IFJVTih0ZXN0QXRvbWljU3Ryb25nQ0FTPGludDE2X3Q+KCkpOwotICAgIFJVTih0ZXN0QXRvbWlj
U3Ryb25nQ0FTPGludDMyX3Q+KCkpOwotICAgIFJVTih0ZXN0QXRvbWljU3Ryb25nQ0FTPGludDY0
X3Q+KCkpOwotICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ4X3Q+KEF0b21pY1hjaGdBZGQpKTsK
LSAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50MTZfdD4oQXRvbWljWGNoZ0FkZCkpOwotICAgIFJV
Tih0ZXN0QXRvbWljWGNoZzxpbnQzMl90PihBdG9taWNYY2hnQWRkKSk7Ci0gICAgUlVOKHRlc3RB
dG9taWNYY2hnPGludDY0X3Q+KEF0b21pY1hjaGdBZGQpKTsKLSAgICBSVU4odGVzdEF0b21pY1hj
aGc8aW50OF90PihBdG9taWNYY2hnQW5kKSk7Ci0gICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDE2
X3Q+KEF0b21pY1hjaGdBbmQpKTsKLSAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50MzJfdD4oQXRv
bWljWGNoZ0FuZCkpOwotICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ2NF90PihBdG9taWNYY2hn
QW5kKSk7Ci0gICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDhfdD4oQXRvbWljWGNoZ09yKSk7Ci0g
ICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDE2X3Q+KEF0b21pY1hjaGdPcikpOwotICAgIFJVTih0
ZXN0QXRvbWljWGNoZzxpbnQzMl90PihBdG9taWNYY2hnT3IpKTsKLSAgICBSVU4odGVzdEF0b21p
Y1hjaGc8aW50NjRfdD4oQXRvbWljWGNoZ09yKSk7Ci0gICAgUlVOKHRlc3RBdG9taWNYY2hnPGlu
dDhfdD4oQXRvbWljWGNoZ1N1YikpOwotICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQxNl90PihB
dG9taWNYY2hnU3ViKSk7Ci0gICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDMyX3Q+KEF0b21pY1hj
aGdTdWIpKTsKLSAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50NjRfdD4oQXRvbWljWGNoZ1N1Yikp
OwotICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ4X3Q+KEF0b21pY1hjaGdYb3IpKTsKLSAgICBS
VU4odGVzdEF0b21pY1hjaGc8aW50MTZfdD4oQXRvbWljWGNoZ1hvcikpOwotICAgIFJVTih0ZXN0
QXRvbWljWGNoZzxpbnQzMl90PihBdG9taWNYY2hnWG9yKSk7Ci0gICAgUlVOKHRlc3RBdG9taWNY
Y2hnPGludDY0X3Q+KEF0b21pY1hjaGdYb3IpKTsKLSAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50
OF90PihBdG9taWNYY2hnKSk7Ci0gICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDE2X3Q+KEF0b21p
Y1hjaGcpKTsKLSAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50MzJfdD4oQXRvbWljWGNoZykpOwot
ICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ2NF90PihBdG9taWNYY2hnKSk7Ci0gICAgUlVOKHRl
c3REZXBlbmQzMigpKTsKLSAgICBSVU4odGVzdERlcGVuZDY0KCkpOwotCi0gICAgUlVOKHRlc3RX
YXNtQm91bmRzQ2hlY2soMCkpOwotICAgIFJVTih0ZXN0V2FzbUJvdW5kc0NoZWNrKDEwMCkpOwot
ICAgIFJVTih0ZXN0V2FzbUJvdW5kc0NoZWNrKDEwMDAwKSk7Ci0gICAgUlVOKHRlc3RXYXNtQm91
bmRzQ2hlY2soc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIC0gNSkpOwotCi0g
ICAgUlVOKHRlc3RXYXNtQWRkcmVzcygpKTsKLSAgICAKLSAgICBSVU4odGVzdEZhc3RUTFNMb2Fk
KCkpOwotICAgIFJVTih0ZXN0RmFzdFRMU1N0b3JlKCkpOwotCi0gICAgUlVOKHRlc3REb3VibGVM
aXRlcmFsQ29tcGFyaXNvbihiaXR3aXNlX2Nhc3Q8ZG91YmxlPigweDgwMDAwMDAwMDAwMDAwMDF1
bGwpLCBiaXR3aXNlX2Nhc3Q8ZG91YmxlPigweDAwMDAwMDAwMDAwMDAwMDB1bGwpKSk7Ci0gICAg
UlVOKHRlc3REb3VibGVMaXRlcmFsQ29tcGFyaXNvbihiaXR3aXNlX2Nhc3Q8ZG91YmxlPigweDAw
MDAwMDAwMDAwMDAwMDB1bGwpLCBiaXR3aXNlX2Nhc3Q8ZG91YmxlPigweDgwMDAwMDAwMDAwMDAw
MDF1bGwpKSk7Ci0gICAgUlVOKHRlc3REb3VibGVMaXRlcmFsQ29tcGFyaXNvbigxMjUuMzE0NDQ0
Njk0ODI0MSwgMTI1LjMxNDQ0NDY5NDgyNDIpKTsKLSAgICBSVU4odGVzdERvdWJsZUxpdGVyYWxD
b21wYXJpc29uKDEyNS4zMTQ0NDQ2OTQ4MjQyLCAxMjUuMzE0NDQ0Njk0ODI0MSkpOwotCi0gICAg
UlVOKHRlc3RGbG9hdEVxdWFsT3JVbm9yZGVyZWRGb2xkaW5nKCkpOwotICAgIFJVTih0ZXN0Rmxv
YXRFcXVhbE9yVW5vcmRlcmVkRm9sZGluZ05hTigpKTsKLSAgICBSVU4odGVzdEZsb2F0RXF1YWxP
clVub3JkZXJlZERvbnRGb2xkKCkpOwotICAgIAotICAgIFJVTih0ZXN0U2h1ZmZsZURvZXNudFRy
YXNoQ2FsbGVlU2F2ZXMoKSk7Ci0gICAgUlVOKHRlc3REZW1vdGVQYXRjaHBvaW50VGVybWluYWwo
KSk7Ci0KLSAgICBSVU4odGVzdExvb3BXaXRoTXVsdGlwbGVIZWFkZXJFZGdlcygpKTsKLQotICAg
IFJVTih0ZXN0SW5maW5pdGVMb29wRG9lc250Q2F1c2VCYWRIb2lzdGluZygpKTsKLQotICAgIGlm
IChpc1g4NigpKSB7Ci0gICAgICAgIFJVTih0ZXN0QnJhbmNoQml0QW5kSW1tRnVzaW9uKElkZW50
aXR5LCBJbnQ2NCwgMSwgQWlyOjpCcmFuY2hUZXN0MzIsIEFpcjo6QXJnOjpUbXApKTsKLSAgICAg
ICAgUlVOKHRlc3RCcmFuY2hCaXRBbmRJbW1GdXNpb24oSWRlbnRpdHksIEludDY0LCAweGZmLCBB
aXI6OkJyYW5jaFRlc3QzMiwgQWlyOjpBcmc6OlRtcCkpOwotICAgICAgICBSVU4odGVzdEJyYW5j
aEJpdEFuZEltbUZ1c2lvbihUcnVuYywgSW50MzIsIDEsIEFpcjo6QnJhbmNoVGVzdDMyLCBBaXI6
OkFyZzo6VG1wKSk7Ci0gICAgICAgIFJVTih0ZXN0QnJhbmNoQml0QW5kSW1tRnVzaW9uKFRydW5j
LCBJbnQzMiwgMHhmZiwgQWlyOjpCcmFuY2hUZXN0MzIsIEFpcjo6QXJnOjpUbXApKTsKLSAgICAg
ICAgUlVOKHRlc3RCcmFuY2hCaXRBbmRJbW1GdXNpb24oTG9hZDhTLCBJbnQzMiwgMSwgQWlyOjpC
cmFuY2hUZXN0OCwgQWlyOjpBcmc6OkFkZHIpKTsKLSAgICAgICAgUlVOKHRlc3RCcmFuY2hCaXRB
bmRJbW1GdXNpb24oTG9hZDhaLCBJbnQzMiwgMSwgQWlyOjpCcmFuY2hUZXN0OCwgQWlyOjpBcmc6
OkFkZHIpKTsKLSAgICAgICAgUlVOKHRlc3RCcmFuY2hCaXRBbmRJbW1GdXNpb24oTG9hZCwgSW50
MzIsIDEsIEFpcjo6QnJhbmNoVGVzdDMyLCBBaXI6OkFyZzo6QWRkcikpOwotICAgICAgICBSVU4o
dGVzdEJyYW5jaEJpdEFuZEltbUZ1c2lvbihMb2FkLCBJbnQ2NCwgMSwgQWlyOjpCcmFuY2hUZXN0
MzIsIEFpcjo6QXJnOjpBZGRyKSk7Ci0gICAgICAgIFJVTih0ZXN0WDg2TGVhQWRkQWRkU2hsTGVm
dCgpKTsKLSAgICAgICAgUlVOKHRlc3RYODZMZWFBZGRBZGRTaGxSaWdodCgpKTsKLSAgICAgICAg
UlVOKHRlc3RYODZMZWFBZGRBZGQoKSk7Ci0gICAgICAgIFJVTih0ZXN0WDg2TGVhQWRkU2hsUmln
aHQoKSk7Ci0gICAgICAgIFJVTih0ZXN0WDg2TGVhQWRkU2hsTGVmdFNjYWxlMSgpKTsKLSAgICAg
ICAgUlVOKHRlc3RYODZMZWFBZGRTaGxMZWZ0U2NhbGUyKCkpOwotICAgICAgICBSVU4odGVzdFg4
NkxlYUFkZFNobExlZnRTY2FsZTQoKSk7Ci0gICAgICAgIFJVTih0ZXN0WDg2TGVhQWRkU2hsTGVm
dFNjYWxlOCgpKTsKLSAgICB9Ci0KLSAgICBpZiAoaXNBUk02NCgpKSB7Ci0gICAgICAgIFJVTih0
ZXN0VGVybmFyeVN1Ykluc3RydWN0aW9uU2VsZWN0aW9uKElkZW50aXR5LCBJbnQ2NCwgQWlyOjpT
dWI2NCkpOwotICAgICAgICBSVU4odGVzdFRlcm5hcnlTdWJJbnN0cnVjdGlvblNlbGVjdGlvbihU
cnVuYywgSW50MzIsIEFpcjo6U3ViMzIpKTsKLSAgICB9Ci0KLSAgICBSVU4odGVzdFJlcG9ydFVz
ZWRSZWdpc3RlcnNMYXRlVXNlRm9sbG93ZWRCeUVhcmx5RGVmRG9lc05vdE1hcmtVc2VBc0RlYWQo
KSk7Ci0KLSAgICBpZiAodGFza3MuaXNFbXB0eSgpKQotICAgICAgICB1c2FnZSgpOwotCi0gICAg
TG9jayBsb2NrOwotCi0gICAgVmVjdG9yPFJlZjxUaHJlYWQ+PiB0aHJlYWRzOwotICAgIGZvciAo
dW5zaWduZWQgaSA9IGZpbHRlciA/IDEgOiBXVEY6Om51bWJlck9mUHJvY2Vzc29yQ29yZXMoKTsg
aS0tOykgewotICAgICAgICB0aHJlYWRzLmFwcGVuZCgKLSAgICAgICAgICAgIFRocmVhZDo6Y3Jl
YXRlKAotICAgICAgICAgICAgICAgICJ0ZXN0YjMgdGhyZWFkIiwKLSAgICAgICAgICAgICAgICBb
Jl0gKCkgewotICAgICAgICAgICAgICAgICAgICBmb3IgKDs7KSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBSZWZQdHI8U2hhcmVkVGFzazx2b2lkKCk+PiB0YXNrOwotICAgICAgICAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2Vy
KGxvY2spOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXNrcy5pc0VtcHR5KCkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0YXNrID0gdGFza3MudGFrZUZpcnN0KCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIHRhc2stPnJ1bigpOwotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSkpOwotICAgIH0KLQotICAgIGZvciAo
YXV0byYgdGhyZWFkIDogdGhyZWFkcykKLSAgICAgICAgdGhyZWFkLT53YWl0Rm9yQ29tcGxldGlv
bigpOwotICAgIGNyYXNoTG9jay5sb2NrKCk7Ci0gICAgY3Jhc2hMb2NrLnVubG9jaygpOwotfQot
Ci19IC8vIGFub255bW91cyBuYW1lc3BhY2UKLQotI2Vsc2UgLy8gRU5BQkxFKEIzX0pJVCkKLQot
c3RhdGljIHZvaWQgcnVuKGNvbnN0IGNoYXIqKQotewotICAgIGRhdGFMb2coIkIzIEpJVCBpcyBu
b3QgZW5hYmxlZC5cbiIpOwotfQotCi0jZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKLQotaW50IG1h
aW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQotewotICAgIGNvbnN0IGNoYXIqIGZpbHRlciA9IG51
bGxwdHI7Ci0gICAgc3dpdGNoIChhcmdjKSB7Ci0gICAgY2FzZSAxOgotICAgICAgICBicmVhazsK
LSAgICBjYXNlIDI6Ci0gICAgICAgIGZpbHRlciA9IGFyZ3ZbMV07Ci0gICAgICAgIGJyZWFrOwot
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIHVzYWdlKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQot
ICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwotICAgIAotICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPD0gMjsgKytpKSB7Ci0gICAgICAgIEpTQzo6T3B0aW9uczo6ZGVmYXVsdEIzT3B0
TGV2ZWwoKSA9IGk7Ci0gICAgICAgIHJ1bihmaWx0ZXIpOwotICAgIH0KLQotICAgIHJldHVybiAw
OwotfQotCi0jaWYgT1MoV0lORE9XUykKLWV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxleHBvcnQp
IGludCBXSU5BUEkgZGxsTGF1bmNoZXJFbnRyeVBvaW50KGludCBhcmdjLCBjb25zdCBjaGFyKiBh
cmd2W10pCi17Ci0gICAgcmV0dXJuIG1haW4oYXJnYywgY29uc3RfY2FzdDxjaGFyKio+KGFyZ3Yp
KTsKLX0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3Ri
My5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmMDE0
YmI4NzFmZDM3MzY0NDkzNDkwODc5NjNiM2FiZjUyYjY0NGUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKQEAgLTAsMCArMSwxMDczIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIkFpckNv
ZGUuaCIKKyNpbmNsdWRlICJBaXJJbnN0SW5saW5lcy5oIgorI2luY2x1ZGUgIkFpclZhbGlkYXRl
LmgiCisjaW5jbHVkZSAiQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmgiCisjaW5jbHVk
ZSAiQjNBcmd1bWVudFJlZ1ZhbHVlLmgiCisjaW5jbHVkZSAiQjNBdG9taWNWYWx1ZS5oIgorI2lu
Y2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKKyNpbmNsdWRlICJCM0JyZWFrQ3JpdGljYWxF
ZGdlcy5oIgorI2luY2x1ZGUgIkIzQ0NhbGxWYWx1ZS5oIgorI2luY2x1ZGUgIkIzQ29tcGlsYXRp
b24uaCIKKyNpbmNsdWRlICJCM0NvbXBpbGUuaCIKKyNpbmNsdWRlICJCM0NvbXB1dGVEaXZpc2lv
bk1hZ2ljLmgiCisjaW5jbHVkZSAiQjNDb25zdDMyVmFsdWUuaCIKKyNpbmNsdWRlICJCM0NvbnN0
NjRWYWx1ZS5oIgorI2luY2x1ZGUgIkIzQ29uc3RQdHJWYWx1ZS5oIgorI2luY2x1ZGUgIkIzRWZm
ZWN0cy5oIgorI2luY2x1ZGUgIkIzRmVuY2VWYWx1ZS5oIgorI2luY2x1ZGUgIkIzRml4U1NBLmgi
CisjaW5jbHVkZSAiQjNHZW5lcmF0ZS5oIgorI2luY2x1ZGUgIkIzTG93ZXJUb0Fpci5oIgorI2lu
Y2x1ZGUgIkIzTWF0aEV4dHJhcy5oIgorI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIKKyNpbmNs
dWRlICJCM01vdmVDb25zdGFudHMuaCIKKyNpbmNsdWRlICJCM05hdGl2ZVRyYWl0cy5oIgorI2lu
Y2x1ZGUgIkIzUHJvY2VkdXJlLmgiCisjaW5jbHVkZSAiQjNSZWR1Y2VTdHJlbmd0aC5oIgorI2lu
Y2x1ZGUgIkIzU2xvdEJhc2VWYWx1ZS5oIgorI2luY2x1ZGUgIkIzU3RhY2tTbG90LmgiCisjaW5j
bHVkZSAiQjNTdGFja21hcEdlbmVyYXRpb25QYXJhbXMuaCIKKyNpbmNsdWRlICJCM1N3aXRjaFZh
bHVlLmgiCisjaW5jbHVkZSAiQjNVcHNpbG9uVmFsdWUuaCIKKyNpbmNsdWRlICJCM1VzZUNvdW50
cy5oIgorI2luY2x1ZGUgIkIzVmFsaWRhdGUuaCIKKyNpbmNsdWRlICJCM1ZhbHVlSW5saW5lcy5o
IgorI2luY2x1ZGUgIkIzVmFyaWFibGVWYWx1ZS5oIgorI2luY2x1ZGUgIkIzV2FzbUFkZHJlc3NW
YWx1ZS5oIgorI2luY2x1ZGUgIkIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCIKKyNpbmNsdWRlICJD
Q2FsbEhlbHBlcnMuaCIKKyNpbmNsdWRlICJGUFJJbmZvLmgiCisjaW5jbHVkZSAiR1BSSW5mby5o
IgorI2luY2x1ZGUgIkluaXRpYWxpemVUaHJlYWRpbmcuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCisjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgorI2luY2x1ZGUgIlB1cmVOYU4uaCIKKyNpbmNs
dWRlIDxjbWF0aD4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8d3RmL0Zhc3RUTFMuaD4K
KyNpbmNsdWRlIDx3dGYvSW5kZXhTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTGlzdER1bXAuaD4KKyNp
bmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9OdW1iZXJPZkNvcmVzLmg+CisjaW5j
bHVkZSA8d3RmL1N0ZExpc3QuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQ29tbW9uLmg+CisKKy8vIFdlIGRvbid0IGhhdmUgYSBOT19SRVRV
Uk5fRFVFX1RPX0VYSVQsIG5vciBzaG91bGQgd2UuIFRoYXQncyByaWRpY3Vsb3VzLgoraW5saW5l
IGJvb2wgaGlkZGVuVHJ1dGhCZWNhdXNlTm9SZXR1cm5Jc1N0dXBpZCgpIHsgcmV0dXJuIHRydWU7
IH0KKworaW5saW5lIHZvaWQgdXNhZ2UoKQoreworICAgIGRhdGFMb2coIlVzYWdlOiB0ZXN0YjMg
WzxmaWx0ZXI+XVxuIik7CisgICAgaWYgKGhpZGRlblRydXRoQmVjYXVzZU5vUmV0dXJuSXNTdHVw
aWQoKSkKKyAgICAgICAgZXhpdCgxKTsKK30KKworI2lmIEVOQUJMRShCM19KSVQpCisKK3VzaW5n
IG5hbWVzcGFjZSBKU0M7Cit1c2luZyBuYW1lc3BhY2UgSlNDOjpCMzsKKworaW5saW5lIGJvb2wg
c2hvdWxkQmVWZXJib3NlKCkKK3sKKyAgICByZXR1cm4gc2hvdWxkRHVtcElSKEIzTW9kZSk7Cit9
CisKK2V4dGVybiBMb2NrIGNyYXNoTG9jazsKKworLy8gTm90aGluZyBmYW5jeSBmb3Igbm93OyB3
ZSBqdXN0IHVzZSB0aGUgZXhpc3RpbmcgV1RGIGFzc2VydGlvbiBtYWNoaW5lcnkuCisjZGVmaW5l
IENIRUNLKHgpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgaWYgKCEhKHgpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgYnJlYWs7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNyYXNoTG9jay5sb2Nr
KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
V1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZShfX0ZJTEVfXywgX19MSU5FX18sIFdURl9QUkVUVFlf
RlVOQ1RJT04sICN4KTsgXAorICAgIENSQVNIKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9IHdoaWxlIChmYWxzZSkKKyAgICAKKyNk
ZWZpbmUgQ0hFQ0tfRVEoeCwgeSkgZG8geyBcCisgICAgYXV0byBfX3ggPSAoeCk7IFwKKyAgICBh
dXRvIF9feSA9ICh5KTsgXAorICAgIGlmIChfX3ggPT0gX195KSBcCisgICAgICAgIGJyZWFrOyBc
CisgICAgY3Jhc2hMb2NrLmxvY2soKTsgXAorICAgIFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUo
X19GSUxFX18sIF9fTElORV9fLCBXVEZfUFJFVFRZX0ZVTkNUSU9OLCB0b0NTdHJpbmcoI3ggIiA9
PSAiICN5LCAiICgiICN4ICIgPT0gIiwgX194LCAiLCAiICN5ICIgPT0gIiwgX195LCAiKSIpLmRh
dGEoKSk7IFwKKyAgICBDUkFTSCgpOyBcCit9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBQUkVG
SVggIk8iLCBPcHRpb25zOjpkZWZhdWx0QjNPcHRMZXZlbCgpLCAiOiAiCisKKyNkZWZpbmUgUlVO
KHRlc3QpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIXNob3Vs
ZFJ1bihmaWx0ZXIsICN0ZXN0KSkgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgYnJlYWs7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB0YXNrcy5hcHBlbmQoICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgY3JlYXRlU2hhcmVkVGFz
azx2b2lkKCk+KCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIFsmXSAoKSB7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBkYXRhTG9nKFBSRUZJ
WCAjdGVzdCAiLi4uXG4iKTsgICAgIFwKKyAgICAgICAgICAgICAgICB0ZXN0OyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBkYXRhTG9nKFBSRUZJWCAjdGVz
dCAiOiBPSyFcbiIpOyAgIFwKKyAgICAgICAgICAgIH0pKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSk7CisKKyNkZWZpbmUgUlVOX1VOQVJZ
KHRlc3QsIHZhbHVlcykgXAorICAgIGZvciAoYXV0byBhIDogdmFsdWVzKSB7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIENTdHJpbmcgdGVzdFN0ciA9IHRvQ1N0cmluZyhQ
UkVGSVggI3Rlc3QsICIoIiwgYS5uYW1lLCAiKSIpOyBcCisgICAgICAgIGlmICghc2hvdWxkUnVu
KGZpbHRlciwgdGVzdFN0ci5kYXRhKCkpKSAgICAgICAgIFwKKyAgICAgICAgICAgIGNvbnRpbnVl
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB0YXNrcy5hcHBl
bmQoY3JlYXRlU2hhcmVkVGFzazx2b2lkKCk+KCAgICAgICAgICBcCisgICAgICAgICAgICBbPV0g
KCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAg
ICBkYXRhTG9nKHRvQ1N0cmluZyh0ZXN0U3RyLCAiLi4uXG4iKSk7ICAgXAorICAgICAgICAgICAg
ICAgIHRlc3QoYS52YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg
ICAgICAgZGF0YUxvZyh0b0NTdHJpbmcodGVzdFN0ciwgIjogT0shXG4iKSk7IFwKKyAgICAgICAg
ICAgIH0pKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0K
KworI2RlZmluZSBSVU5fTk9XKHRlc3QpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICBpZiAoIXNob3VsZFJ1bihmaWx0ZXIsICN0ZXN0KSkgICAgICAgICAgXAorICAgICAgICAg
ICAgYnJlYWs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBkYXRhTG9n
KFBSRUZJWCAjdGVzdCAiLi4uXG4iKTsgICAgICAgICAgXAorICAgICAgICB0ZXN0OyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBkYXRhTG9nKFBSRUZJWCAjdGVz
dCAiOiBPSyFcbiIpOyAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIFJV
Tl9CSU5BUlkodGVzdCwgdmFsdWVzQSwgdmFsdWVzQikgXAorICAgIGZvciAoYXV0byBhIDogdmFs
dWVzQSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBmb3IgKGF1
dG8gYiA6IHZhbHVlc0IpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAg
ICAgQ1N0cmluZyB0ZXN0U3RyID0gdG9DU3RyaW5nKFBSRUZJWCAjdGVzdCwgIigiLCBhLm5hbWUs
ICIsICIsIGIubmFtZSwgIikiKTsgXAorICAgICAgICAgICAgaWYgKCFzaG91bGRSdW4oZmlsdGVy
LCB0ZXN0U3RyLmRhdGEoKSkpICAgICAgICAgXAorICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgdGFza3MuYXBw
ZW5kKGNyZWF0ZVNoYXJlZFRhc2s8dm9pZCgpPiggICAgICAgICAgXAorICAgICAgICAgICAgICAg
IFs9XSAoKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nKHRvQ1N0cmluZyh0ZXN0U3RyLCAiLi4uXG4iKSk7ICAgXAorICAg
ICAgICAgICAgICAgICAgICB0ZXN0KGEudmFsdWUsIGIudmFsdWUpOyAgICAgICAgICAgICAgICAg
XAorICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKHRvQ1N0cmluZyh0ZXN0U3RyLCAiOiBPSyFc
biIpKTsgXAorICAgICAgICAgICAgICAgIH0pKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIH0KKyNkZWZpbmUgUlVOX1RFUk5BUlkodGVzdCwgdmFs
dWVzQSwgdmFsdWVzQiwgdmFsdWVzQykgXAorICAgIGZvciAoYXV0byBhIDogdmFsdWVzQSkgeyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZm9yIChhdXRvIGIg
OiB2YWx1ZXNCKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg
ICBmb3IgKGF1dG8gYyA6IHZhbHVlc0MpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICAgICAgICAgIENTdHJpbmcgdGVzdFN0ciA9IHRvQ1N0cmluZygjdGVzdCwgIigiLCBh
Lm5hbWUsICIsICIsIGIubmFtZSwgIiwiLCBjLm5hbWUsICIpIik7IFwKKyAgICAgICAgICAgICAg
ICBpZiAoIXNob3VsZFJ1bihmaWx0ZXIsIHRlc3RTdHIuZGF0YSgpKSkgICAgICAgICBcCisgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICAgICAgICAgIHRhc2tzLmFwcGVuZChjcmVhdGVTaGFyZWRUYXNrPHZvaWQo
KT4oICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgWz1dICgpIHsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
KHRvQ1N0cmluZyh0ZXN0U3RyLCAiLi4uXG4iKSk7ICAgXAorICAgICAgICAgICAgICAgICAgICAg
ICAgdGVzdChhLnZhbHVlLCBiLnZhbHVlLCBjLnZhbHVlKTsgICAgICAgIFwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGFMb2codG9DU3RyaW5nKHRlc3RTdHIsICI6IE9LIVxuIikpOyBcCisg
ICAgICAgICAgICAgICAgICAgIH0pKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCisKK2lubGluZSBzdGQ6OnVuaXF1
ZV9wdHI8Q29tcGlsYXRpb24+IGNvbXBpbGVQcm9jKFByb2NlZHVyZSYgcHJvY2VkdXJlLCB1bnNp
Z25lZCBvcHRMZXZlbCA9IE9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkpCit7CisgICAgcHJv
Y2VkdXJlLnNldE9wdExldmVsKG9wdExldmVsKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxDb21waWxhdGlvbj4oQjM6OmNvbXBpbGUocHJvY2VkdXJlKSk7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KK1QgaW52b2tlKE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjxCM0NvbXBpbGF0aW9uUHRyVGFnPiBwdHIsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMp
Cit7CisgICAgdm9pZCogZXhlY3V0YWJsZUFkZHJlc3MgPSB1bnRhZ0NGdW5jdGlvblB0cjxCM0Nv
bXBpbGF0aW9uUHRyVGFnPihwdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgVCAoKmZ1bmN0
aW9uKShBcmd1bWVudHMuLi4pID0gYml0d2lzZV9jYXN0PFQoKikoQXJndW1lbnRzLi4uKT4oZXhl
Y3V0YWJsZUFkZHJlc3MpOworICAgIHJldHVybiBmdW5jdGlvbihhcmd1bWVudHMuLi4pOworfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CitUIGludm9rZShj
b25zdCBDb21waWxhdGlvbiYgY29kZSwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKK3sKKyAgICBy
ZXR1cm4gaW52b2tlPFQ+KGNvZGUuY29kZSgpLCBhcmd1bWVudHMuLi4pOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CitUIGNvbXBpbGVBbmRSdW4oUHJv
Y2VkdXJlJiBwcm9jZWR1cmUsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCit7CisgICAgcmV0dXJu
IGludm9rZTxUPigqY29tcGlsZVByb2MocHJvY2VkdXJlKSwgYXJndW1lbnRzLi4uKTsKK30KKwor
aW5saW5lIHZvaWQgbG93ZXJUb0FpckZvclRlc3RpbmcoUHJvY2VkdXJlJiBwcm9jKQoreworICAg
IHByb2MucmVzZXRSZWFjaGFiaWxpdHkoKTsKKyAgICAKKyAgICBpZiAoc2hvdWxkQmVWZXJib3Nl
KCkpCisgICAgICAgIGRhdGFMb2coIkIzIGJlZm9yZSBsb3dlcmluZzpcbiIsIHByb2MpOworICAg
IAorICAgIHZhbGlkYXRlKHByb2MpOworICAgIGxvd2VyVG9BaXIocHJvYyk7CisgICAgCisgICAg
aWYgKHNob3VsZEJlVmVyYm9zZSgpKQorICAgICAgICBkYXRhTG9nKCJBaXIgYWZ0ZXIgbG93ZXJp
bmc6XG4iLCBwcm9jLmNvZGUoKSk7CisgICAgCisgICAgQWlyOjp2YWxpZGF0ZShwcm9jLmNvZGUo
KSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Cit2b2lkIGNoZWNrRGlzYXNzZW1ibHko
Q29tcGlsYXRpb24mIGNvbXBpbGF0aW9uLCBjb25zdCBGdW5jJiBmdW5jLCBjb25zdCBDU3RyaW5n
JiBmYWlsVGV4dCkKK3sKKyAgICBDU3RyaW5nIGRpc2Fzc2VtYmx5ID0gY29tcGlsYXRpb24uZGlz
YXNzZW1ibHkoKTsKKyAgICBpZiAoZnVuYyhkaXNhc3NlbWJseS5kYXRhKCkpKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgY3Jhc2hMb2NrLmxvY2soKTsKKyAgICBkYXRhTG9nKCJCYWQgbG93
ZXJpbmchICAiLCBmYWlsVGV4dCwgIlxuIik7CisgICAgZGF0YUxvZyhkaXNhc3NlbWJseSk7Cisg
ICAgQ1JBU0goKTsKK30KKworaW5saW5lIHZvaWQgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oQ29tcGls
YXRpb24mIGNvbXBpbGF0aW9uLCBjb25zdCBjaGFyKiB0ZXh0KQoreworICAgIGNoZWNrRGlzYXNz
ZW1ibHkoCisgICAgICAgIGNvbXBpbGF0aW9uLAorICAgICAgICBbJl0gKGNvbnN0IGNoYXIqIGRp
c2Fzc2VtYmx5KSAtPiBib29sIHsKKyAgICAgICAgICAgIHJldHVybiBzdHJzdHIoZGlzYXNzZW1i
bHksIHRleHQpOworICAgICAgICB9LAorICAgICAgICB0b0NTdHJpbmcoIkV4cGVjdGVkIHRvIGZp
bmQgIiwgdGV4dCwgIiBidXQgZGlkbnQhIikpOworfQorCitpbmxpbmUgdm9pZCBjaGVja0RvZXNO
b3RVc2VJbnN0cnVjdGlvbihDb21waWxhdGlvbiYgY29tcGlsYXRpb24sIGNvbnN0IGNoYXIqIHRl
eHQpCit7CisgICAgY2hlY2tEaXNhc3NlbWJseSgKKyAgICAgICAgY29tcGlsYXRpb24sCisgICAg
ICAgIFsmXSAoY29uc3QgY2hhciogZGlzYXNzZW1ibHkpIC0+IGJvb2wgeworICAgICAgICAgICAg
cmV0dXJuICFzdHJzdHIoZGlzYXNzZW1ibHksIHRleHQpOworICAgICAgICB9LAorICAgICAgICB0
b0NTdHJpbmcoIkRpZCBub3QgZXhwZWN0ZWQgdG8gZmluZCAiLCB0ZXh0LCAiIGJ1dCBpdCdzIHRo
ZXJlISIpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KK3N0cnVjdCBPcGVyYW5kIHsK
KyAgICBjb25zdCBjaGFyKiBuYW1lOworICAgIFR5cGUgdmFsdWU7Cit9OworCit0eXBlZGVmIE9w
ZXJhbmQ8aW50NjRfdD4gSW50NjRPcGVyYW5kOwordHlwZWRlZiBPcGVyYW5kPGludDMyX3Q+IElu
dDMyT3BlcmFuZDsKKwordGVtcGxhdGU8dHlwZW5hbWUgRmxvYXRUeXBlPgordm9pZCBwb3B1bGF0
ZVdpdGhJbnRlcmVzdGluZ1ZhbHVlcyhWZWN0b3I8T3BlcmFuZDxGbG9hdFR5cGU+PiYgb3BlcmFu
ZHMpCit7CisgICAgb3BlcmFuZHMuYXBwZW5kKHsgIjAuIiwgc3RhdGljX2Nhc3Q8RmxvYXRUeXBl
PigwLikgfSk7CisgICAgb3BlcmFuZHMuYXBwZW5kKHsgIi0wLiIsIHN0YXRpY19jYXN0PEZsb2F0
VHlwZT4oLTAuKSB9KTsKKyAgICBvcGVyYW5kcy5hcHBlbmQoeyAiMC40Iiwgc3RhdGljX2Nhc3Q8
RmxvYXRUeXBlPigwLjUpIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICItMC40Iiwgc3RhdGlj
X2Nhc3Q8RmxvYXRUeXBlPigtMC41KSB9KTsKKyAgICBvcGVyYW5kcy5hcHBlbmQoeyAiMC41Iiwg
c3RhdGljX2Nhc3Q8RmxvYXRUeXBlPigwLjUpIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICIt
MC41Iiwgc3RhdGljX2Nhc3Q8RmxvYXRUeXBlPigtMC41KSB9KTsKKyAgICBvcGVyYW5kcy5hcHBl
bmQoeyAiMC42Iiwgc3RhdGljX2Nhc3Q8RmxvYXRUeXBlPigwLjUpIH0pOworICAgIG9wZXJhbmRz
LmFwcGVuZCh7ICItMC42Iiwgc3RhdGljX2Nhc3Q8RmxvYXRUeXBlPigtMC41KSB9KTsKKyAgICBv
cGVyYW5kcy5hcHBlbmQoeyAiMS4iLCBzdGF0aWNfY2FzdDxGbG9hdFR5cGU+KDEuKSB9KTsKKyAg
ICBvcGVyYW5kcy5hcHBlbmQoeyAiLTEuIiwgc3RhdGljX2Nhc3Q8RmxvYXRUeXBlPigtMS4pIH0p
OworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICIyLiIsIHN0YXRpY19jYXN0PEZsb2F0VHlwZT4oMi4p
IH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICItMi4iLCBzdGF0aWNfY2FzdDxGbG9hdFR5cGU+
KC0yLikgfSk7CisgICAgb3BlcmFuZHMuYXBwZW5kKHsgIk1fUEkiLCBzdGF0aWNfY2FzdDxGbG9h
dFR5cGU+KE1fUEkpIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICItTV9QSSIsIHN0YXRpY19j
YXN0PEZsb2F0VHlwZT4oLU1fUEkpIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICJtaW4iLCBz
dGQ6Om51bWVyaWNfbGltaXRzPEZsb2F0VHlwZT46Om1pbigpIH0pOworICAgIG9wZXJhbmRzLmFw
cGVuZCh7ICJtYXgiLCBzdGQ6Om51bWVyaWNfbGltaXRzPEZsb2F0VHlwZT46Om1heCgpIH0pOwor
ICAgIG9wZXJhbmRzLmFwcGVuZCh7ICJsb3dlc3QiLCBzdGQ6Om51bWVyaWNfbGltaXRzPEZsb2F0
VHlwZT46Omxvd2VzdCgpIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICJlcHNpbG9uIiwgc3Rk
OjpudW1lcmljX2xpbWl0czxGbG9hdFR5cGU+OjplcHNpbG9uKCkgfSk7CisgICAgb3BlcmFuZHMu
YXBwZW5kKHsgImluZmluaXRpIiwgc3RkOjpudW1lcmljX2xpbWl0czxGbG9hdFR5cGU+OjppbmZp
bml0eSgpIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICItaW5maW5pdGkiLCAtIHN0ZDo6bnVt
ZXJpY19saW1pdHM8RmxvYXRUeXBlPjo6aW5maW5pdHkoKSB9KTsKKyAgICBvcGVyYW5kcy5hcHBl
bmQoeyAiUE5hTiIsIHN0YXRpY19jYXN0PEZsb2F0VHlwZT4oUE5hTikgfSk7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIEZsb2F0VHlwZT4KK1ZlY3RvcjxPcGVyYW5kPEZsb2F0VHlwZT4+IGZsb2F0
aW5nUG9pbnRPcGVyYW5kcygpCit7CisgICAgVmVjdG9yPE9wZXJhbmQ8RmxvYXRUeXBlPj4gb3Bl
cmFuZHM7CisgICAgcG9wdWxhdGVXaXRoSW50ZXJlc3RpbmdWYWx1ZXMob3BlcmFuZHMpOworICAg
IHJldHVybiBvcGVyYW5kczsKK307CisKK2lubGluZSBWZWN0b3I8SW50NjRPcGVyYW5kPiBpbnQ2
NE9wZXJhbmRzKCkKK3sKKyAgICBWZWN0b3I8SW50NjRPcGVyYW5kPiBvcGVyYW5kczsKKyAgICBv
cGVyYW5kcy5hcHBlbmQoeyAiMCIsIDAgfSk7CisgICAgb3BlcmFuZHMuYXBwZW5kKHsgIjEiLCAx
IH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICItMSIsIC0xIH0pOworICAgIG9wZXJhbmRzLmFw
cGVuZCh7ICI0MiIsIDQyIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICItNDIiLCAtNDIgfSk7
CisgICAgb3BlcmFuZHMuYXBwZW5kKHsgImludDY0LW1heCIsIHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50NjRfdD46Om1heCgpIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICJpbnQ2NC1taW4iLCBz
dGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSB9KTsKKyAgICBvcGVyYW5kcy5hcHBl
bmQoeyAiaW50MzItbWF4Iiwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkgfSk7
CisgICAgb3BlcmFuZHMuYXBwZW5kKHsgImludDMyLW1pbiIsIHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50MzJfdD46Om1pbigpIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICJ1aW50NjQtbWF4Iiwg
c3RhdGljX2Nhc3Q8aW50NjRfdD4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgp
KSB9KTsKKyAgICBvcGVyYW5kcy5hcHBlbmQoeyAidWludDY0LW1pbiIsIHN0YXRpY19jYXN0PGlu
dDY0X3Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptaW4oKSkgfSk7CisgICAgb3Bl
cmFuZHMuYXBwZW5kKHsgInVpbnQzMi1tYXgiLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihzdGQ6Om51
bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7
ICJ1aW50MzItbWluIiwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oc3RkOjpudW1lcmljX2xpbWl0czx1
aW50MzJfdD46Om1pbigpKSB9KTsKKyAgICAKKyAgICByZXR1cm4gb3BlcmFuZHM7Cit9CisKK2lu
bGluZSBWZWN0b3I8SW50MzJPcGVyYW5kPiBpbnQzMk9wZXJhbmRzKCkKK3sKKyAgICBWZWN0b3I8
SW50MzJPcGVyYW5kPiBvcGVyYW5kcyh7CisgICAgICAgIHsgIjAiLCAwIH0sCisgICAgICAgIHsg
IjEiLCAxIH0sCisgICAgICAgIHsgIi0xIiwgLTEgfSwKKyAgICAgICAgeyAiNDIiLCA0MiB9LAor
ICAgICAgICB7ICItNDIiLCAtNDIgfSwKKyAgICAgICAgeyAiaW50MzItbWF4Iiwgc3RkOjpudW1l
cmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkgfSwKKyAgICAgICAgeyAiaW50MzItbWluIiwgc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkgfSwKKyAgICAgICAgeyAidWludDMyLW1h
eCIsIHN0YXRpY19jYXN0PGludDMyX3Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+Ojpt
YXgoKSkgfSwKKyAgICAgICAgeyAidWludDMyLW1pbiIsIHN0YXRpY19jYXN0PGludDMyX3Q+KHN0
ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptaW4oKSkgfQorICAgIH0pOworICAgIHJldHVy
biBvcGVyYW5kczsKK30KKworaW5saW5lIHZvaWQgYWRkMzIoQ0NhbGxIZWxwZXJzJiBqaXQsIEdQ
UlJlZyBzcmMxLCBHUFJSZWcgc3JjMiwgR1BSUmVnIGRlc3QpCit7CisgICAgaWYgKHNyYzIgPT0g
ZGVzdCkKKyAgICAgICAgaml0LmFkZDMyKHNyYzEsIGRlc3QpOworICAgIGVsc2UgeworICAgICAg
ICBqaXQubW92ZShzcmMxLCBkZXN0KTsKKyAgICAgICAgaml0LmFkZDMyKHNyYzIsIGRlc3QpOwor
ICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUgTG9hZGVkVHlwZSwgdHlwZW5hbWUgRWZmZWN0
aXZlVHlwZT4KK0VmZmVjdGl2ZVR5cGUgbW9kZWxMb2FkKEVmZmVjdGl2ZVR5cGUgdmFsdWUpOwor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBMb2FkZWRUeXBlLCB0eXBlbmFtZSBFZmZlY3RpdmVUeXBlPgor
RWZmZWN0aXZlVHlwZSBtb2RlbExvYWQoRWZmZWN0aXZlVHlwZSB2YWx1ZSkKK3sKKyAgICB1bmlv
biB7CisgICAgICAgIEVmZmVjdGl2ZVR5cGUgb3JpZ2luYWw7CisgICAgICAgIExvYWRlZFR5cGUg
bG9hZGVkOworICAgIH0gdTsKKyAgICAKKyAgICB1Lm9yaWdpbmFsID0gdmFsdWU7CisgICAgaWYg
KHN0ZDo6aXNfc2lnbmVkPExvYWRlZFR5cGU+Ojp2YWx1ZSkKKyAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEVmZmVjdGl2ZVR5cGU+KHUubG9hZGVkKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
RWZmZWN0aXZlVHlwZT4oc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjptYWtlX3Vuc2lnbmVkPEVm
ZmVjdGl2ZVR5cGU+Ojp0eXBlPih1LmxvYWRlZCkpOworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUg
ZmxvYXQgbW9kZWxMb2FkPGZsb2F0LCBmbG9hdD4oZmxvYXQgdmFsdWUpIHsgcmV0dXJuIHZhbHVl
OyB9CisKK3RlbXBsYXRlPD4KK2lubGluZSBkb3VibGUgbW9kZWxMb2FkPGRvdWJsZSwgZG91Ymxl
Pihkb3VibGUgdmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9CisKK3ZvaWQgcnVuKGNvbnN0IGNoYXIq
IGZpbHRlcik7Cit2b2lkIHRlc3RCaXRBbmRTRXh0MzIoaW50MzJfdCB2YWx1ZSwgaW50NjRfdCBt
YXNrKTsKK3ZvaWQgdGVzdEJhc2ljU2VsZWN0KCk7Cit2b2lkIHRlc3RTZWxlY3RUZXN0KCk7Cit2
b2lkIHRlc3RTZWxlY3RDb21wYXJlRG91YmxlKCk7Cit2b2lkIHRlc3RTZWxlY3RDb21wYXJlRmxv
YXQoZmxvYXQsIGZsb2F0KTsKK3ZvaWQgdGVzdFNlbGVjdENvbXBhcmVGbG9hdFRvRG91YmxlKGZs
b2F0LCBmbG9hdCk7Cit2b2lkIHRlc3RTZWxlY3REb3VibGUoKTsKK3ZvaWQgdGVzdFNlbGVjdERv
dWJsZVRlc3QoKTsKK3ZvaWQgdGVzdFNlbGVjdERvdWJsZUNvbXBhcmVEb3VibGUoKTsKK3ZvaWQg
dGVzdFNlbGVjdERvdWJsZUNvbXBhcmVGbG9hdChmbG9hdCwgZmxvYXQpOwordm9pZCB0ZXN0U2Vs
ZWN0RmxvYXRDb21wYXJlRmxvYXQoZmxvYXQsIGZsb2F0KTsKK3ZvaWQgdGVzdFNlbGVjdERvdWJs
ZUNvbXBhcmVEb3VibGVXaXRoQWxpYXNpbmcoKTsKK3ZvaWQgdGVzdFNlbGVjdEZsb2F0Q29tcGFy
ZUZsb2F0V2l0aEFsaWFzaW5nKCk7Cit2b2lkIHRlc3RTZWxlY3RGb2xkKGludHB0cl90IHZhbHVl
KTsKK3ZvaWQgdGVzdFNlbGVjdEludmVydCgpOwordm9pZCB0ZXN0Q2hlY2tTZWxlY3QoKTsKK3Zv
aWQgdGVzdENoZWNrU2VsZWN0Q2hlY2tTZWxlY3QoKTsKK3ZvaWQgdGVzdENoZWNrU2VsZWN0QW5k
Q1NFKCk7Cit2b2lkIHRlc3RQb3dEb3VibGVCeUludGVnZXJMb29wKGRvdWJsZSB4T3BlcmFuZCwg
aW50MzJfdCB5T3BlcmFuZCk7Citkb3VibGUgYjNQb3coZG91YmxlIHgsIGludCB5KTsKK3ZvaWQg
dGVzdFRydW5jT3JIaWdoKCk7Cit2b2lkIHRlc3RUcnVuY09yTG93KCk7Cit2b2lkIHRlc3RCaXRB
bmRPckhpZ2goKTsKK3ZvaWQgdGVzdEJpdEFuZE9yTG93KCk7Cit2b2lkIHRlc3RCcmFuY2g2NEVx
dWFsKGludDY0X3QgbGVmdCwgaW50NjRfdCByaWdodCk7Cit2b2lkIHRlc3RCcmFuY2g2NEVxdWFs
SW1tKGludDY0X3QgbGVmdCwgaW50NjRfdCByaWdodCk7Cit2b2lkIHRlc3RCcmFuY2g2NEVxdWFs
TWVtKGludDY0X3QgbGVmdCwgaW50NjRfdCByaWdodCk7Cit2b2lkIHRlc3RCcmFuY2g2NEVxdWFs
TWVtSW1tKGludDY0X3QgbGVmdCwgaW50NjRfdCByaWdodCk7Cit2b2lkIHRlc3RTdG9yZThMb2Fk
OFooaW50MzJfdCB2YWx1ZSk7Cit2b2lkIHRlc3RTdG9yZTE2TG9hZDE2WihpbnQzMl90IHZhbHVl
KTsKK3ZvaWQgdGVzdFNTaHJTaGwzMihpbnQzMl90IHZhbHVlLCBpbnQzMl90IHNzaHJBbW91bnQs
IGludDMyX3Qgc2hsQW1vdW50KTsKK3ZvaWQgdGVzdFNTaHJTaGw2NChpbnQ2NF90IHZhbHVlLCBp
bnQzMl90IHNzaHJBbW91bnQsIGludDMyX3Qgc2hsQW1vdW50KTsKK3ZvaWQgdGVzdFRyaXZpYWxJ
bmZpbml0ZUxvb3AoKTsKK3ZvaWQgdGVzdEZvbGRQYXRoRXF1YWwoKTsKK3ZvaWQgdGVzdExTaGlm
dFNlbGYzMigpOwordm9pZCB0ZXN0UlNoaWZ0U2VsZjMyKCk7Cit2b2lkIHRlc3RVUlNoaWZ0U2Vs
ZjMyKCk7Cit2b2lkIHRlc3RMU2hpZnRTZWxmNjQoKTsKK3ZvaWQgdGVzdFJTaGlmdFNlbGY2NCgp
Owordm9pZCB0ZXN0VVJTaGlmdFNlbGY2NCgpOwordm9pZCB0ZXN0UGF0Y2hwb2ludERvdWJsZVJl
Z3MoKTsKK3ZvaWQgdGVzdFNwaWxsRGVmU21hbGxlclRoYW5Vc2UoKTsKK3ZvaWQgdGVzdFNwaWxs
VXNlTGFyZ2VyVGhhbkRlZigpOwordm9pZCB0ZXN0TGF0ZVJlZ2lzdGVyKCk7Cit2b2lkIGludGVy
cHJldGVyUHJpbnQoVmVjdG9yPGludHB0cl90Piogc3RyZWFtLCBpbnRwdHJfdCB2YWx1ZSk7Cit2
b2lkIHRlc3RJbnRlcnByZXRlcigpOwordm9pZCB0ZXN0UmVkdWNlU3RyZW5ndGhDaGVja0JvdHRv
bVVzZUluQW5vdGhlckJsb2NrKCk7Cit2b2lkIHRlc3RSZXNldFJlYWNoYWJpbGl0eURhbmdsaW5n
UmVmZXJlbmNlKCk7Cit2b2lkIHRlc3RFbnRyeVN3aXRjaFNpbXBsZSgpOwordm9pZCB0ZXN0RW50
cnlTd2l0Y2hOb0VudHJ5U3dpdGNoKCk7Cit2b2lkIHRlc3RFbnRyeVN3aXRjaFdpdGhDb21tb25Q
YXRocygpOwordm9pZCB0ZXN0RW50cnlTd2l0Y2hXaXRoQ29tbW9uUGF0aHNBbmROb25Ucml2aWFs
RW50cnlwb2ludCgpOwordm9pZCB0ZXN0RW50cnlTd2l0Y2hMb29wKCk7Cit2b2lkIHRlc3RTb21l
RWFybHlSZWdpc3RlcigpOwordm9pZCB0ZXN0QnJhbmNoQml0QW5kSW1tRnVzaW9uKEIzOjpPcGNv
ZGUgdmFsdWVNb2RpZmllciwgVHlwZSB2YWx1ZVR5cGUsIGludDY0X3QgY29uc3RhbnQsIEFpcjo6
T3Bjb2RlIGV4cGVjdGVkT3Bjb2RlLCBBaXI6OkFyZzo6S2luZCBmaXJzdEtpbmQpOwordm9pZCB0
ZXN0VGVybWluYWxQYXRjaHBvaW50VGhhdE5lZWRzVG9CZVNwaWxsZWQoKTsKK3ZvaWQgdGVzdFRl
cm1pbmFsUGF0Y2hwb2ludFRoYXROZWVkc1RvQmVTcGlsbGVkMigpOwordm9pZCB0ZXN0UGF0Y2hw
b2ludFRlcm1pbmFsUmV0dXJuVmFsdWUoYm9vbCBzdWNjZXNzSXNSYXJlKTsKK3ZvaWQgdGVzdE1l
bW9yeUZlbmNlKCk7Cit2b2lkIHRlc3RTdG9yZUZlbmNlKCk7Cit2b2lkIHRlc3RMb2FkRmVuY2Uo
KTsKK3ZvaWQgdGVzdFRyYXBwaW5nTG9hZCgpOwordm9pZCB0ZXN0VHJhcHBpbmdTdG9yZSgpOwor
dm9pZCB0ZXN0VHJhcHBpbmdMb2FkQWRkU3RvcmUoKTsKK3ZvaWQgdGVzdFRyYXBwaW5nTG9hZERD
RSgpOwordm9pZCB0ZXN0VHJhcHBpbmdTdG9yZUVsaW1pbmF0aW9uKCk7Cit2b2lkIHRlc3RNb3Zl
Q29uc3RhbnRzKCk7Cit2b2lkIHRlc3RQQ09yaWdpbk1hcERvZXNudEluc2VydE5vcHMoKTsKK3Zv
aWQgdGVzdEJpdE9yQml0T3JBcmdJbW1JbW0zMihpbnQsIGludCwgaW50IGMpOwordm9pZCB0ZXN0
Qml0T3JJbW1CaXRPckFyZ0ltbTMyKGludCwgaW50LCBpbnQgYyk7Citkb3VibGUgYml0T3JEb3Vi
bGUoZG91YmxlLCBkb3VibGUpOwordm9pZCB0ZXN0Qml0T3JBcmdEb3VibGUoZG91YmxlKTsKK3Zv
aWQgdGVzdEJpdE9yQXJnc0RvdWJsZShkb3VibGUsIGRvdWJsZSk7Cit2b2lkIHRlc3RCaXRPckFy
Z0ltbURvdWJsZShkb3VibGUsIGRvdWJsZSk7Cit2b2lkIHRlc3RCaXRPckltbXNEb3VibGUoZG91
YmxlLCBkb3VibGUpOworZmxvYXQgYml0T3JGbG9hdChmbG9hdCwgZmxvYXQpOwordm9pZCB0ZXN0
Qml0T3JBcmdGbG9hdChmbG9hdCk7Cit2b2lkIHRlc3RCaXRPckFyZ3NGbG9hdChmbG9hdCwgZmxv
YXQpOwordm9pZCB0ZXN0Qml0T3JBcmdJbW1GbG9hdChmbG9hdCwgZmxvYXQpOwordm9pZCB0ZXN0
Qml0T3JJbW1zRmxvYXQoZmxvYXQsIGZsb2F0KTsKK3ZvaWQgdGVzdEJpdE9yQXJnc0Zsb2F0V2l0
aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uKGZsb2F0LCBmbG9hdCk7Cit2b2lkIHRlc3RCaXRYb3JB
cmdzKGludDY0X3QsIGludDY0X3QpOwordm9pZCB0ZXN0Qml0WG9yU2FtZUFyZyhpbnQ2NF90KTsK
K3ZvaWQgdGVzdEJpdFhvckFuZEFuZEFyZ3MoaW50NjRfdCwgaW50NjRfdCwgaW50NjRfdCBjKTsK
K3ZvaWQgdGVzdEJpdFhvckFuZFNhbWVBcmdzKGludDY0X3QsIGludDY0X3QpOwordm9pZCB0ZXN0
Qml0WG9ySW1tcyhpbnQ2NF90LCBpbnQ2NF90KTsKK3ZvaWQgdGVzdEJpdFhvckFyZ0ltbShpbnQ2
NF90LCBpbnQ2NF90KTsKK3ZvaWQgdGVzdEJpdFhvckltbUFyZyhpbnQ2NF90LCBpbnQ2NF90KTsK
K3ZvaWQgdGVzdEJpdFhvckJpdFhvckFyZ0ltbUltbShpbnQ2NF90LCBpbnQ2NF90LCBpbnQ2NF90
IGMpOwordm9pZCB0ZXN0Qml0WG9ySW1tQml0WG9yQXJnSW1tKGludDY0X3QsIGludDY0X3QsIGlu
dDY0X3QgYyk7Cit2b2lkIHRlc3RCaXRYb3JBcmdzMzIoaW50LCBpbnQpOwordm9pZCB0ZXN0Qml0
WG9yU2FtZUFyZzMyKGludCk7Cit2b2lkIHRlc3RCaXRYb3JJbW1zMzIoaW50LCBpbnQpOwordm9p
ZCB0ZXN0Qml0WG9yQXJnSW1tMzIoaW50LCBpbnQpOwordm9pZCB0ZXN0Qml0WG9ySW1tQXJnMzIo
aW50LCBpbnQpOwordm9pZCB0ZXN0Qml0WG9yQml0WG9yQXJnSW1tSW1tMzIoaW50LCBpbnQsIGlu
dCBjKTsKK3ZvaWQgdGVzdEJpdFhvckltbUJpdFhvckFyZ0ltbTMyKGludCwgaW50LCBpbnQgYyk7
Cit2b2lkIHRlc3RCaXROb3RBcmcoaW50NjRfdCk7Cit2b2lkIHRlc3RCaXROb3RJbW0oaW50NjRf
dCk7Cit2b2lkIHRlc3RCaXROb3RNZW0oaW50NjRfdCk7Cit2b2lkIHRlc3RCaXROb3RBcmczMihp
bnQzMl90KTsKK3ZvaWQgdGVzdEJpdE5vdEltbTMyKGludDMyX3QpOwordm9pZCB0ZXN0Qml0Tm90
TWVtMzIoaW50MzJfdCk7Cit2b2lkIHRlc3ROb3RPbkJvb2xlYW5BbmRCcmFuY2gzMihpbnQ2NF90
LCBpbnQ2NF90KTsKK3ZvaWQgdGVzdEJpdE5vdE9uQm9vbGVhbkFuZEJyYW5jaDMyKGludDY0X3Qs
IGludDY0X3QpOwordm9pZCB0ZXN0U2hsQXJncyhpbnQ2NF90LCBpbnQ2NF90KTsKK3ZvaWQgdGVz
dFNobEltbXMoaW50NjRfdCwgaW50NjRfdCk7Cit2b2lkIHRlc3RTaGxBcmdJbW0oaW50NjRfdCwg
aW50NjRfdCk7Cit2b2lkIHRlc3RTaGxTU2hyQXJnSW1tKGludDY0X3QsIGludDY0X3QpOwordm9p
ZCB0ZXN0U2hsQXJnMzIoaW50MzJfdCk7Cit2b2lkIHRlc3RTaGxBcmdzMzIoaW50MzJfdCwgaW50
MzJfdCk7Cit2b2lkIHRlc3RTaGxJbW1zMzIoaW50MzJfdCwgaW50MzJfdCk7Cit2b2lkIHRlc3RT
aGxBcmdJbW0zMihpbnQzMl90LCBpbnQzMl90KTsKK3ZvaWQgdGVzdFNobFpTaHJBcmdJbW0zMihp
bnQzMl90LCBpbnQzMl90KTsKK3ZvaWQgdGVzdFNTaHJBcmdzKGludDY0X3QsIGludDY0X3QpOwor
dm9pZCB0ZXN0U1NockltbXMoaW50NjRfdCwgaW50NjRfdCk7Cit2b2lkIHRlc3RTU2hyQXJnSW1t
KGludDY0X3QsIGludDY0X3QpOwordm9pZCB0ZXN0U1NockFyZzMyKGludDMyX3QpOwordm9pZCB0
ZXN0U1NockFyZ3MzMihpbnQzMl90LCBpbnQzMl90KTsKK3ZvaWQgdGVzdFNTaHJJbW1zMzIoaW50
MzJfdCwgaW50MzJfdCk7Cit2b2lkIHRlc3RTU2hyQXJnSW1tMzIoaW50MzJfdCwgaW50MzJfdCk7
Cit2b2lkIHRlc3RaU2hyQXJncyh1aW50NjRfdCwgdWludDY0X3QpOwordm9pZCB0ZXN0WlNocklt
bXModWludDY0X3QsIHVpbnQ2NF90KTsKK3ZvaWQgdGVzdFpTaHJBcmdJbW0odWludDY0X3QsIHVp
bnQ2NF90KTsKK3ZvaWQgdGVzdFpTaHJBcmczMih1aW50MzJfdCk7Cit2b2lkIHRlc3RaU2hyQXJn
czMyKHVpbnQzMl90LCB1aW50MzJfdCk7Cit2b2lkIHRlc3RaU2hySW1tczMyKHVpbnQzMl90LCB1
aW50MzJfdCk7Cit2b2lkIHRlc3RaU2hyQXJnSW1tMzIodWludDMyX3QsIHVpbnQzMl90KTsKK3Zv
aWQgdGVzdENsekFyZzY0KGludDY0X3QpOwordm9pZCB0ZXN0Q2x6TWVtNjQoaW50NjRfdCk7Cit2
b2lkIHRlc3RDbHpBcmczMihpbnQzMl90KTsKK3ZvaWQgdGVzdENsek1lbTMyKGludDMyX3QpOwor
dm9pZCB0ZXN0QWJzQXJnKGRvdWJsZSk7Cit2b2lkIHRlc3RBYnNJbW0oZG91YmxlKTsKK3ZvaWQg
dGVzdEFic01lbShkb3VibGUpOwordm9pZCB0ZXN0QWJzQWJzQXJnKGRvdWJsZSk7Cit2b2lkIHRl
c3RBYnNOZWdBcmcoZG91YmxlKTsKK3ZvaWQgdGVzdEFic0JpdHdpc2VDYXN0QXJnKGRvdWJsZSk7
Cit2b2lkIHRlc3RCaXR3aXNlQ2FzdEFic0JpdHdpc2VDYXN0QXJnKGRvdWJsZSk7Cit2b2lkIHRl
c3RBYnNBcmcoZmxvYXQpOwordm9pZCB0ZXN0QWJzSW1tKGZsb2F0KTsKK3ZvaWQgdGVzdEFic01l
bShmbG9hdCk7Cit2b2lkIHRlc3RBYnNBYnNBcmcoZmxvYXQpOwordm9pZCB0ZXN0QWJzTmVnQXJn
KGZsb2F0KTsKK3ZvaWQgdGVzdEFic0JpdHdpc2VDYXN0QXJnKGZsb2F0KTsKK3ZvaWQgdGVzdEJp
dHdpc2VDYXN0QWJzQml0d2lzZUNhc3RBcmcoZmxvYXQpOwordm9pZCB0ZXN0QWJzQXJnV2l0aFVz
ZWxlc3NEb3VibGVDb252ZXJzaW9uKGZsb2F0KTsKK3ZvaWQgdGVzdEFic0FyZ1dpdGhFZmZlY3Rm
dWxEb3VibGVDb252ZXJzaW9uKGZsb2F0KTsKK3ZvaWQgdGVzdENlaWxBcmcoZG91YmxlKTsKK3Zv
aWQgdGVzdENlaWxJbW0oZG91YmxlKTsKK3ZvaWQgdGVzdENlaWxNZW0oZG91YmxlKTsKK3ZvaWQg
dGVzdENlaWxDZWlsQXJnKGRvdWJsZSk7Cit2b2lkIHRlc3RGbG9vckNlaWxBcmcoZG91YmxlKTsK
K3ZvaWQgdGVzdENlaWxJVG9ENjQoaW50NjRfdCk7Cit2b2lkIHRlc3RDZWlsSVRvRDMyKGludDY0
X3QpOwordm9pZCB0ZXN0Q2VpbEFyZyhmbG9hdCk7Cit2b2lkIHRlc3RDZWlsSW1tKGZsb2F0KTsK
K3ZvaWQgdGVzdENlaWxNZW0oZmxvYXQpOwordm9pZCB0ZXN0Q2VpbENlaWxBcmcoZmxvYXQpOwor
dm9pZCB0ZXN0Rmxvb3JDZWlsQXJnKGZsb2F0KTsKK3ZvaWQgdGVzdENlaWxBcmdXaXRoVXNlbGVz
c0RvdWJsZUNvbnZlcnNpb24oZmxvYXQpOwordm9pZCB0ZXN0Q2VpbEFyZ1dpdGhFZmZlY3RmdWxE
b3VibGVDb252ZXJzaW9uKGZsb2F0KTsKK3ZvaWQgdGVzdEZsb29yQXJnKGRvdWJsZSk7Cit2b2lk
IHRlc3RGbG9vckltbShkb3VibGUpOwordm9pZCB0ZXN0Rmxvb3JNZW0oZG91YmxlKTsKK3ZvaWQg
dGVzdEZsb29yRmxvb3JBcmcoZG91YmxlKTsKK3ZvaWQgdGVzdENlaWxGbG9vckFyZyhkb3VibGUp
Owordm9pZCB0ZXN0Rmxvb3JJVG9ENjQoaW50NjRfdCk7Cit2b2lkIHRlc3RGbG9vcklUb0QzMihp
bnQ2NF90KTsKK3ZvaWQgdGVzdEZsb29yQXJnKGZsb2F0KTsKK3ZvaWQgdGVzdEZsb29ySW1tKGZs
b2F0KTsKK3ZvaWQgdGVzdEZsb29yTWVtKGZsb2F0KTsKK3ZvaWQgdGVzdEZsb29yRmxvb3JBcmco
ZmxvYXQpOwordm9pZCB0ZXN0Q2VpbEZsb29yQXJnKGZsb2F0KTsKK3ZvaWQgdGVzdEZsb29yQXJn
V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uKGZsb2F0KTsKK3ZvaWQgdGVzdEZsb29yQXJnV2l0
aEVmZmVjdGZ1bERvdWJsZUNvbnZlcnNpb24oZmxvYXQpOworZG91YmxlIGNvcnJlY3RTcXJ0KGRv
dWJsZSB2YWx1ZSk7Cit2b2lkIHRlc3RTcXJ0QXJnKGRvdWJsZSk7Cit2b2lkIHRlc3RTcXJ0SW1t
KGRvdWJsZSk7Cit2b2lkIHRlc3RTcXJ0TWVtKGRvdWJsZSk7Cit2b2lkIHRlc3RTcXJ0QXJnKGZs
b2F0KTsKK3ZvaWQgdGVzdFNxcnRJbW0oZmxvYXQpOwordm9pZCB0ZXN0U3FydE1lbShmbG9hdCk7
Cit2b2lkIHRlc3RTcXJ0QXJnV2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uKGZsb2F0KTsKK3Zv
aWQgdGVzdFNxcnRBcmdXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lvbihmbG9hdCk7Cit2b2lk
IHRlc3RDb21wYXJlVHdvRmxvYXRUb0RvdWJsZShmbG9hdCwgZmxvYXQpOwordm9pZCB0ZXN0Q29t
cGFyZU9uZUZsb2F0VG9Eb3VibGUoZmxvYXQsIGRvdWJsZSk7Cit2b2lkIHRlc3RDb21wYXJlRmxv
YXRUb0RvdWJsZVRocm91Z2hQaGkoZmxvYXQsIGZsb2F0KTsKK3ZvaWQgdGVzdERvdWJsZVRvRmxv
YXRUaHJvdWdoUGhpKGZsb2F0IHZhbHVlKTsKK3ZvaWQgdGVzdFJlZHVjZUZsb2F0VG9Eb3VibGVW
YWxpZGF0ZXMoKTsKK3ZvaWQgdGVzdERvdWJsZVByb2R1Y2VyUGhpVG9GbG9hdENvbnZlcnNpb24o
ZmxvYXQgdmFsdWUpOwordm9pZCB0ZXN0RG91YmxlUHJvZHVjZXJQaGlUb0Zsb2F0Q29udmVyc2lv
bldpdGhEb3VibGVDb25zdW1lcihmbG9hdCB2YWx1ZSk7Cit2b2lkIHRlc3REb3VibGVQcm9kdWNl
clBoaVdpdGhOb25GbG9hdENvbnN0KGZsb2F0IHZhbHVlLCBkb3VibGUgY29uc3RWYWx1ZSk7Cit2
b2lkIHRlc3REb3VibGVBcmdUb0ludDY0Qml0d2lzZUNhc3QoZG91YmxlIHZhbHVlKTsKK3ZvaWQg
dGVzdERvdWJsZUltbVRvSW50NjRCaXR3aXNlQ2FzdChkb3VibGUgdmFsdWUpOwordm9pZCB0ZXN0
VHdvQml0d2lzZUNhc3RPbkRvdWJsZShkb3VibGUgdmFsdWUpOwordm9pZCB0ZXN0Qml0d2lzZUNh
c3RPbkRvdWJsZUluTWVtb3J5KGRvdWJsZSB2YWx1ZSk7Cit2b2lkIHRlc3RCaXR3aXNlQ2FzdE9u
RG91YmxlSW5NZW1vcnlJbmRleGVkKGRvdWJsZSB2YWx1ZSk7Cit2b2lkIHRlc3RJbnQ2NEJBcmdU
b0RvdWJsZUJpdHdpc2VDYXN0KGludDY0X3QgdmFsdWUpOwordm9pZCB0ZXN0SW50NjRCSW1tVG9E
b3VibGVCaXR3aXNlQ2FzdChpbnQ2NF90IHZhbHVlKTsKK3ZvaWQgdGVzdFR3b0JpdHdpc2VDYXN0
T25JbnQ2NChpbnQ2NF90IHZhbHVlKTsKK3ZvaWQgdGVzdEJpdHdpc2VDYXN0T25JbnQ2NEluTWVt
b3J5KGludDY0X3QgdmFsdWUpOwordm9pZCB0ZXN0Qml0d2lzZUNhc3RPbkludDY0SW5NZW1vcnlJ
bmRleGVkKGludDY0X3QgdmFsdWUpOwordm9pZCB0ZXN0RmxvYXRJbW1Ub0ludDMyQml0d2lzZUNh
c3QoZmxvYXQgdmFsdWUpOwordm9pZCB0ZXN0Qml0d2lzZUNhc3RPbkZsb2F0SW5NZW1vcnkoZmxv
YXQgdmFsdWUpOwordm9pZCB0ZXN0SW50MzJCQXJnVG9GbG9hdEJpdHdpc2VDYXN0KGludDMyX3Qg
dmFsdWUpOwordm9pZCB0ZXN0SW50MzJCSW1tVG9GbG9hdEJpdHdpc2VDYXN0KGludDMyX3QgdmFs
dWUpOwordm9pZCB0ZXN0VHdvQml0d2lzZUNhc3RPbkludDMyKGludDMyX3QgdmFsdWUpOwordm9p
ZCB0ZXN0Qml0d2lzZUNhc3RPbkludDMySW5NZW1vcnkoaW50MzJfdCB2YWx1ZSk7Cit2b2lkIHRl
c3RDb252ZXJ0RG91YmxlVG9GbG9hdEFyZyhkb3VibGUgdmFsdWUpOwordm9pZCB0ZXN0Q29udmVy
dERvdWJsZVRvRmxvYXRJbW0oZG91YmxlIHZhbHVlKTsKK3ZvaWQgdGVzdENvbnZlcnREb3VibGVU
b0Zsb2F0TWVtKGRvdWJsZSB2YWx1ZSk7Cit2b2lkIHRlc3RDb252ZXJ0RmxvYXRUb0RvdWJsZUFy
ZyhmbG9hdCB2YWx1ZSk7Cit2b2lkIHRlc3RDb252ZXJ0RmxvYXRUb0RvdWJsZUltbShmbG9hdCB2
YWx1ZSk7Cit2b2lkIHRlc3RDb252ZXJ0RmxvYXRUb0RvdWJsZU1lbShmbG9hdCB2YWx1ZSk7Cit2
b2lkIHRlc3RDb252ZXJ0RG91YmxlVG9GbG9hdFRvRG91YmxlVG9GbG9hdChkb3VibGUgdmFsdWUp
Owordm9pZCB0ZXN0TG9hZEZsb2F0Q29udmVydERvdWJsZUNvbnZlcnRGbG9hdFN0b3JlRmxvYXQo
ZmxvYXQgdmFsdWUpOwordm9pZCB0ZXN0RnJvdW5kQXJnKGRvdWJsZSB2YWx1ZSk7Cit2b2lkIHRl
c3RGcm91bmRNZW0oZG91YmxlIHZhbHVlKTsKK3ZvaWQgdGVzdElUb0Q2NEFyZygpOwordm9pZCB0
ZXN0SVRvRjY0QXJnKCk7Cit2b2lkIHRlc3RJVG9EMzJBcmcoKTsKK3ZvaWQgdGVzdElUb0YzMkFy
ZygpOwordm9pZCB0ZXN0SVRvRDY0TWVtKCk7Cit2b2lkIHRlc3RJVG9GNjRNZW0oKTsKK3ZvaWQg
dGVzdElUb0QzMk1lbSgpOwordm9pZCB0ZXN0SVRvRjMyTWVtKCk7Cit2b2lkIHRlc3RJVG9ENjRJ
bW0oaW50NjRfdCB2YWx1ZSk7Cit2b2lkIHRlc3RJVG9GNjRJbW0oaW50NjRfdCB2YWx1ZSk7Cit2
b2lkIHRlc3RJVG9EMzJJbW0oaW50MzJfdCB2YWx1ZSk7Cit2b2lkIHRlc3RJVG9GMzJJbW0oaW50
MzJfdCB2YWx1ZSk7Cit2b2lkIHRlc3RJVG9EUmVkdWNlZFRvSVRvRjY0QXJnKCk7Cit2b2lkIHRl
c3RJVG9EUmVkdWNlZFRvSVRvRjMyQXJnKCk7Cit2b2lkIHRlc3RTdG9yZTMyKGludCB2YWx1ZSk7
Cit2b2lkIHRlc3RTdG9yZUNvbnN0YW50KGludCB2YWx1ZSk7Cit2b2lkIHRlc3RTdG9yZUNvbnN0
YW50UHRyKGludHB0cl90IHZhbHVlKTsKK3ZvaWQgdGVzdFN0b3JlOEFyZygpOwordm9pZCB0ZXN0
U3RvcmU4SW1tKCk7Cit2b2lkIHRlc3RTdG9yZVBhcnRpYWw4Qml0UmVnaXN0ZXJPblg4NigpOwor
dm9pZCB0ZXN0U3RvcmUxNkFyZygpOwordm9pZCB0ZXN0U3RvcmUxNkltbSgpOwordm9pZCB0ZXN0
VHJ1bmMoaW50NjRfdCB2YWx1ZSk7Cit2b2lkIHRlc3RBZGQxKGludCB2YWx1ZSk7Cit2b2lkIHRl
c3RBZGQxUHRyKGludHB0cl90IHZhbHVlKTsKK3ZvaWQgdGVzdE5lZzMyKGludDMyX3QgdmFsdWUp
Owordm9pZCB0ZXN0TmVnUHRyKGludHB0cl90IHZhbHVlKTsKK3ZvaWQgdGVzdFN0b3JlQWRkTG9h
ZDMyKGludCBhbW91bnQpOwordm9pZCB0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxMzIoaW50IGFtb3Vu
dCk7Cit2b2lkIHRlc3RTdG9yZUFkZExvYWRJbW0zMihpbnQgYW1vdW50KTsKK3ZvaWQgdGVzdFN0
b3JlQWRkTG9hZDgoaW50IGFtb3VudCwgQjM6Ok9wY29kZSBsb2FkT3Bjb2RlKTsKK3ZvaWQgdGVz
dFN0b3JlUmVsQWRkTG9hZEFjcTgoaW50IGFtb3VudCwgQjM6Ok9wY29kZSBsb2FkT3Bjb2RlKTsK
K3ZvaWQgdGVzdFN0b3JlUmVsQWRkRmVuY2VMb2FkQWNxOChpbnQgYW1vdW50LCBCMzo6T3Bjb2Rl
IGxvYWRPcGNvZGUpOwordm9pZCB0ZXN0U3RvcmVBZGRMb2FkSW1tOChpbnQgYW1vdW50LCBCMzo6
T3Bjb2RlIGxvYWRPcGNvZGUpOwordm9pZCB0ZXN0U3RvcmVBZGRMb2FkMTYoaW50IGFtb3VudCwg
QjM6Ok9wY29kZSBsb2FkT3Bjb2RlKTsKK3ZvaWQgdGVzdFN0b3JlUmVsQWRkTG9hZEFjcTE2KGlu
dCBhbW91bnQsIEIzOjpPcGNvZGUgbG9hZE9wY29kZSk7Cit2b2lkIHRlc3RTdG9yZUFkZExvYWRJ
bW0xNihpbnQgYW1vdW50LCBCMzo6T3Bjb2RlIGxvYWRPcGNvZGUpOwordm9pZCB0ZXN0U3RvcmVB
ZGRMb2FkNjQoaW50IGFtb3VudCk7Cit2b2lkIHRlc3RTdG9yZVJlbEFkZExvYWRBY3E2NChpbnQg
YW1vdW50KTsKK3ZvaWQgdGVzdFN0b3JlQWRkTG9hZEltbTY0KGludDY0X3QgYW1vdW50KTsKK3Zv
aWQgdGVzdFN0b3JlQWRkTG9hZDMySW5kZXgoaW50IGFtb3VudCk7Cit2b2lkIHRlc3RTdG9yZUFk
ZExvYWRJbW0zMkluZGV4KGludCBhbW91bnQpOwordm9pZCB0ZXN0U3RvcmVBZGRMb2FkOEluZGV4
KGludCBhbW91bnQsIEIzOjpPcGNvZGUgbG9hZE9wY29kZSk7Cit2b2lkIHRlc3RTdG9yZUFkZExv
YWRJbW04SW5kZXgoaW50IGFtb3VudCwgQjM6Ok9wY29kZSBsb2FkT3Bjb2RlKTsKK3ZvaWQgdGVz
dFN0b3JlQWRkTG9hZDE2SW5kZXgoaW50IGFtb3VudCwgQjM6Ok9wY29kZSBsb2FkT3Bjb2RlKTsK
K3ZvaWQgdGVzdFN0b3JlQWRkTG9hZEltbTE2SW5kZXgoaW50IGFtb3VudCwgQjM6Ok9wY29kZSBs
b2FkT3Bjb2RlKTsKK3ZvaWQgdGVzdFN0b3JlQWRkTG9hZDY0SW5kZXgoaW50IGFtb3VudCk7Cit2
b2lkIHRlc3RTdG9yZUFkZExvYWRJbW02NEluZGV4KGludDY0X3QgYW1vdW50KTsKK3ZvaWQgdGVz
dFN0b3JlU3ViTG9hZChpbnQgYW1vdW50KTsKK3ZvaWQgdGVzdFN0b3JlQWRkTG9hZEludGVyZmVy
ZW5jZShpbnQgYW1vdW50KTsKK3ZvaWQgdGVzdFN0b3JlQWRkQW5kTG9hZChpbnQgYW1vdW50LCBp
bnQgbWFzayk7Cit2b2lkIHRlc3RTdG9yZU5lZ0xvYWQzMihpbnQzMl90IHZhbHVlKTsKK3ZvaWQg
dGVzdFN0b3JlTmVnTG9hZFB0cihpbnRwdHJfdCB2YWx1ZSk7Cit2b2lkIHRlc3RBZGQxVW5jb21t
dXRlZChpbnQgdmFsdWUpOwordm9pZCB0ZXN0TG9hZE9mZnNldCgpOwordm9pZCB0ZXN0TG9hZE9m
ZnNldE5vdENvbnN0YW50KCk7Cit2b2lkIHRlc3RMb2FkT2Zmc2V0VXNpbmdBZGQoKTsKK3ZvaWQg
dGVzdExvYWRPZmZzZXRVc2luZ0FkZEludGVyZmVyZW5jZSgpOwordm9pZCB0ZXN0TG9hZE9mZnNl
dFVzaW5nQWRkTm90Q29uc3RhbnQoKTsKK3ZvaWQgdGVzdExvYWRBZGRyU2hpZnQodW5zaWduZWQg
c2hpZnQpOwordm9pZCB0ZXN0RnJhbWVQb2ludGVyKCk7Cit2b2lkIHRlc3RPdmVycmlkZUZyYW1l
UG9pbnRlcigpOwordm9pZCB0ZXN0U3RhY2tTbG90KCk7Cit2b2lkIHRlc3RMb2FkRnJvbUZyYW1l
UG9pbnRlcigpOwordm9pZCB0ZXN0U3RvcmVMb2FkU3RhY2tTbG90KGludCB2YWx1ZSk7Cit2b2lk
IHRlc3RTdG9yZUZsb2F0KGRvdWJsZSBpbnB1dCk7Cit2b2lkIHRlc3RTdG9yZURvdWJsZUNvbnN0
YW50QXNGbG9hdChkb3VibGUgaW5wdXQpOwordm9pZCB0ZXN0U3BpbGxHUCgpOwordm9pZCB0ZXN0
U3BpbGxGUCgpOwordm9pZCB0ZXN0SW50MzJUb0RvdWJsZVBhcnRpYWxSZWdpc3RlclN0YWxsKCk7
Cit2b2lkIHRlc3RJbnQzMlRvRG91YmxlUGFydGlhbFJlZ2lzdGVyV2l0aG91dFN0YWxsKCk7Cit2
b2lkIHRlc3RCcmFuY2goKTsKK3ZvaWQgdGVzdEJyYW5jaFB0cigpOwordm9pZCB0ZXN0RGlhbW9u
ZCgpOwordm9pZCB0ZXN0QnJhbmNoTm90RXF1YWwoKTsKK3ZvaWQgdGVzdEJyYW5jaE5vdEVxdWFs
Q29tbXV0ZSgpOwordm9pZCB0ZXN0QnJhbmNoTm90RXF1YWxOb3RFcXVhbCgpOwordm9pZCB0ZXN0
QnJhbmNoRXF1YWwoKTsKK3ZvaWQgdGVzdEJyYW5jaEVxdWFsRXF1YWwoKTsKK3ZvaWQgdGVzdEJy
YW5jaEVxdWFsQ29tbXV0ZSgpOwordm9pZCB0ZXN0QnJhbmNoRXF1YWxFcXVhbDEoKTsKK3ZvaWQg
dGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVyZWRBcmdzKGRvdWJsZSwgZG91YmxlKTsKK3ZvaWQgdGVz
dEJyYW5jaEVxdWFsT3JVbm9yZGVyZWRBcmdzKGZsb2F0LCBmbG9hdCk7Cit2b2lkIHRlc3RCcmFu
Y2hOb3RFcXVhbEFuZE9yZGVyZWRBcmdzKGRvdWJsZSwgZG91YmxlKTsKK3ZvaWQgdGVzdEJyYW5j
aE5vdEVxdWFsQW5kT3JkZXJlZEFyZ3MoZmxvYXQsIGZsb2F0KTsKK3ZvaWQgdGVzdEJyYW5jaEVx
dWFsT3JVbm9yZGVyZWREb3VibGVBcmdJbW0oZG91YmxlLCBkb3VibGUpOwordm9pZCB0ZXN0QnJh
bmNoRXF1YWxPclVub3JkZXJlZEZsb2F0QXJnSW1tKGZsb2F0LCBmbG9hdCk7Cit2b2lkIHRlc3RC
cmFuY2hFcXVhbE9yVW5vcmRlcmVkRG91YmxlSW1tcyhkb3VibGUsIGRvdWJsZSk7Cit2b2lkIHRl
c3RCcmFuY2hFcXVhbE9yVW5vcmRlcmVkRmxvYXRJbW1zKGZsb2F0LCBmbG9hdCk7Cit2b2lkIHRl
c3RCcmFuY2hFcXVhbE9yVW5vcmRlcmVkRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24o
ZmxvYXQsIGZsb2F0KTsKK3ZvaWQgdGVzdEJyYW5jaEZvbGQoaW50IHZhbHVlKTsKK3ZvaWQgdGVz
dERpYW1vbmRGb2xkKGludCB2YWx1ZSk7Cit2b2lkIHRlc3RCcmFuY2hOb3RFcXVhbEZvbGRQdHIo
aW50cHRyX3QgdmFsdWUpOwordm9pZCB0ZXN0QnJhbmNoRXF1YWxGb2xkUHRyKGludHB0cl90IHZh
bHVlKTsKK3ZvaWQgdGVzdEJyYW5jaExvYWRQdHIoKTsKK3ZvaWQgdGVzdEJyYW5jaExvYWQzMigp
Owordm9pZCB0ZXN0QnJhbmNoTG9hZDhTKCk7Cit2b2lkIHRlc3RCcmFuY2hMb2FkOFooKTsKK3Zv
aWQgdGVzdEJyYW5jaExvYWQxNlMoKTsKK3ZvaWQgdGVzdEJyYW5jaExvYWQxNlooKTsKK3ZvaWQg
dGVzdEJyYW5jaDhXaXRoTG9hZDhaSW5kZXgoKTsKK3ZvaWQgdGVzdENvbXBsZXgodW5zaWduZWQg
bnVtVmFycywgdW5zaWduZWQgbnVtQ29uc3RydWN0cyk7Cit2b2lkIHRlc3RCcmFuY2hCaXRUZXN0
MzJUbXBJbW0odWludDMyX3QgdmFsdWUsIHVpbnQzMl90IGltbSk7Cit2b2lkIHRlc3RCcmFuY2hC
aXRUZXN0MzJBZGRySW1tKHVpbnQzMl90IHZhbHVlLCB1aW50MzJfdCBpbW0pOwordm9pZCB0ZXN0
QnJhbmNoQml0VGVzdDMyVG1wVG1wKHVpbnQzMl90IHZhbHVlLCB1aW50MzJfdCB2YWx1ZTIpOwor
dm9pZCB0ZXN0QnJhbmNoQml0VGVzdDY0VG1wVG1wKHVpbnQ2NF90IHZhbHVlLCB1aW50NjRfdCB2
YWx1ZTIpOwordm9pZCB0ZXN0QnJhbmNoQml0VGVzdDY0QWRkclRtcCh1aW50NjRfdCB2YWx1ZSwg
dWludDY0X3QgdmFsdWUyKTsKK3ZvaWQgdGVzdEJyYW5jaEJpdFRlc3ROZWdhdGlvbih1aW50NjRf
dCB2YWx1ZSwgdWludDY0X3QgdmFsdWUyKTsKK3ZvaWQgdGVzdEJyYW5jaEJpdFRlc3ROZWdhdGlv
bjIodWludDY0X3QgdmFsdWUsIHVpbnQ2NF90IHZhbHVlMik7Cit2b2lkIHRlc3RTaW1wbGVQYXRj
aHBvaW50KCk7Cit2b2lkIHRlc3RTaW1wbGVQYXRjaHBvaW50V2l0aG91dE91cHV0Q2xvYmJlcnNH
UEFyZ3MoKTsKK3ZvaWQgdGVzdFNpbXBsZVBhdGNocG9pbnRXaXRoT3VwdXRDbG9iYmVyc0dQQXJn
cygpOwordm9pZCB0ZXN0U2ltcGxlUGF0Y2hwb2ludFdpdGhvdXRPdXB1dENsb2JiZXJzRlBBcmdz
KCk7Cit2b2lkIHRlc3RTaW1wbGVQYXRjaHBvaW50V2l0aE91cHV0Q2xvYmJlcnNGUEFyZ3MoKTsK
K3ZvaWQgdGVzdFBhdGNocG9pbnRXaXRoRWFybHlDbG9iYmVyKCk7Cit2b2lkIHRlc3RQYXRjaHBv
aW50Q2FsbEFyZygpOwordm9pZCB0ZXN0UGF0Y2hwb2ludEZpeGVkUmVnaXN0ZXIoKTsKK3ZvaWQg
dGVzdFBhdGNocG9pbnRBbnkoVmFsdWVSZXAgcmVwKTsKK3ZvaWQgdGVzdFBhdGNocG9pbnRHUFNj
cmF0Y2goKTsKK3ZvaWQgdGVzdFBhdGNocG9pbnRGUFNjcmF0Y2goKTsKK3ZvaWQgdGVzdFBhdGNo
cG9pbnRMb3RzT2ZMYXRlQW55cygpOwordm9pZCB0ZXN0UGF0Y2hwb2ludEFueUltbShWYWx1ZVJl
cCByZXApOwordm9pZCB0ZXN0UGF0Y2hwb2ludE1hbnlJbW1zKCk7Cit2b2lkIHRlc3RQYXRjaHBv
aW50V2l0aFJlZ2lzdGVyUmVzdWx0KCk7Cit2b2lkIHRlc3RQYXRjaHBvaW50V2l0aFN0YWNrQXJn
dW1lbnRSZXN1bHQoKTsKK3ZvaWQgdGVzdFBhdGNocG9pbnRXaXRoQW55UmVzdWx0KCk7Cit2b2lk
IHRlc3RTaW1wbGVDaGVjaygpOwordm9pZCB0ZXN0Q2hlY2tGYWxzZSgpOwordm9pZCB0ZXN0Q2hl
Y2tUcnVlKCk7Cit2b2lkIHRlc3RDaGVja0xlc3NUaGFuKCk7Cit2b2lkIHRlc3RDaGVja01lZ2FD
b21ibygpOwordm9pZCB0ZXN0Q2hlY2tUcmlja3lNZWdhQ29tYm8oKTsKK3ZvaWQgdGVzdENoZWNr
VHdvTWVnYUNvbWJvcygpOwordm9pZCB0ZXN0Q2hlY2tUd29Ob25SZWR1bmRhbnRNZWdhQ29tYm9z
KCk7Cit2b2lkIHRlc3RDaGVja0FkZEltbSgpOwordm9pZCB0ZXN0Q2hlY2tBZGRJbW1Db21tdXRl
KCk7Cit2b2lkIHRlc3RDaGVja0FkZEltbVNvbWVSZWdpc3RlcigpOwordm9pZCB0ZXN0Q2hlY2tB
ZGQoKTsKK3ZvaWQgdGVzdENoZWNrQWRkNjQoKTsKK3ZvaWQgdGVzdENoZWNrQWRkRm9sZChpbnQs
IGludCk7Cit2b2lkIHRlc3RDaGVja0FkZEZvbGRGYWlsKGludCwgaW50KTsKK3ZvaWQgdGVzdDQy
KCk7Cit2b2lkIHRlc3RMb2FkNDIoKTsKK3ZvaWQgdGVzdExvYWRBY3E0MigpOwordm9pZCB0ZXN0
TG9hZFdpdGhPZmZzZXRJbXBsKGludDMyX3Qgb2Zmc2V0NjQsIGludDMyX3Qgb2Zmc2V0MzIpOwor
dm9pZCB0ZXN0TG9hZE9mZnNldEltbTlNYXgoKTsKK3ZvaWQgdGVzdExvYWRPZmZzZXRJbW05TWF4
UGx1c09uZSgpOwordm9pZCB0ZXN0TG9hZE9mZnNldEltbTlNYXhQbHVzVHdvKCk7Cit2b2lkIHRl
c3RMb2FkT2Zmc2V0SW1tOU1pbigpOwordm9pZCB0ZXN0TG9hZE9mZnNldEltbTlNaW5NaW51c09u
ZSgpOwordm9pZCB0ZXN0TG9hZE9mZnNldFNjYWxlZFVuc2lnbmVkSW1tMTJNYXgoKTsKK3ZvaWQg
dGVzdExvYWRPZmZzZXRTY2FsZWRVbnNpZ25lZE92ZXJJbW0xMk1heCgpOwordm9pZCB0ZXN0Qml0
WG9yVHJlZUFyZ3MoaW50NjRfdCwgaW50NjRfdCk7Cit2b2lkIHRlc3RCaXRYb3JUcmVlQXJnc0V2
ZW4oaW50NjRfdCwgaW50NjRfdCk7Cit2b2lkIHRlc3RCaXRYb3JUcmVlQXJnSW1tKGludDY0X3Qs
IGludDY0X3QpOwordm9pZCB0ZXN0QWRkVHJlZUFyZzMyKGludDMyX3QpOwordm9pZCB0ZXN0TXVs
VHJlZUFyZzMyKGludDMyX3QpOwordm9pZCB0ZXN0Qml0QW5kVHJlZUFyZzMyKGludDMyX3QpOwor
dm9pZCB0ZXN0Qml0T3JUcmVlQXJnMzIoaW50MzJfdCk7Cit2b2lkIHRlc3RBcmcoaW50IGFyZ3Vt
ZW50KTsKK3ZvaWQgdGVzdFJldHVybkNvbnN0NjQoaW50NjRfdCB2YWx1ZSk7Cit2b2lkIHRlc3RS
ZXR1cm5Wb2lkKCk7Cit2b2lkIHRlc3RBZGRBcmcoaW50KTsKK3ZvaWQgdGVzdEFkZEFyZ3MoaW50
LCBpbnQpOwordm9pZCB0ZXN0QWRkQXJnSW1tKGludCwgaW50KTsKK3ZvaWQgdGVzdEFkZEltbUFy
ZyhpbnQsIGludCk7Cit2b2lkIHRlc3RBZGRBcmdNZW0oaW50NjRfdCwgaW50NjRfdCk7Cit2b2lk
IHRlc3RBZGRNZW1BcmcoaW50NjRfdCwgaW50NjRfdCk7Cit2b2lkIHRlc3RBZGRJbW1NZW0oaW50
NjRfdCwgaW50NjRfdCk7Cit2b2lkIHRlc3RBZGRBcmczMihpbnQpOwordm9pZCB0ZXN0QWRkQXJn
czMyKGludCwgaW50KTsKK3ZvaWQgdGVzdEFkZEFyZ01lbTMyKGludDMyX3QsIGludDMyX3QpOwor
dm9pZCB0ZXN0QWRkTWVtQXJnMzIoaW50MzJfdCwgaW50MzJfdCk7Cit2b2lkIHRlc3RBZGRJbW1N
ZW0zMihpbnQzMl90LCBpbnQzMl90KTsKK3ZvaWQgdGVzdEFkZE5lZzEoaW50LCBpbnQpOwordm9p
ZCB0ZXN0QWRkTmVnMihpbnQsIGludCk7Cit2b2lkIHRlc3RBZGRBcmdaZXJvSW1tWkRlZigpOwor
dm9pZCB0ZXN0QWRkTG9hZFR3aWNlKCk7Cit2b2lkIHRlc3RBZGRBcmdEb3VibGUoZG91YmxlKTsK
K3ZvaWQgdGVzdENoZWNrQWRkQXJndW1lbnRBbGlhc2luZzY0KCk7Cit2b2lkIHRlc3RDaGVja0Fk
ZEFyZ3VtZW50QWxpYXNpbmczMigpOwordm9pZCB0ZXN0Q2hlY2tBZGRTZWxmT3ZlcmZsb3c2NCgp
Owordm9pZCB0ZXN0Q2hlY2tBZGRTZWxmT3ZlcmZsb3czMigpOwordm9pZCB0ZXN0Q2hlY2tTdWJJ
bW0oKTsKK3ZvaWQgdGVzdENoZWNrU3ViQmFkSW1tKCk7Cit2b2lkIHRlc3RDaGVja1N1YigpOwor
ZG91YmxlIGRvdWJsZVN1Yihkb3VibGUsIGRvdWJsZSk7Cit2b2lkIHRlc3RDaGVja1N1YjY0KCk7
Cit2b2lkIHRlc3RDaGVja1N1YkZvbGQoaW50LCBpbnQpOwordm9pZCB0ZXN0Q2hlY2tTdWJGb2xk
RmFpbChpbnQsIGludCk7Cit2b2lkIHRlc3RDaGVja05lZygpOwordm9pZCB0ZXN0Q2hlY2tOZWc2
NCgpOwordm9pZCB0ZXN0Q2hlY2tNdWwoKTsKK3ZvaWQgdGVzdENoZWNrTXVsTWVtb3J5KCk7Cit2
b2lkIHRlc3RDaGVja011bDIoKTsKK3ZvaWQgdGVzdENoZWNrTXVsNjQoKTsKK3ZvaWQgdGVzdENo
ZWNrTXVsRm9sZChpbnQsIGludCk7Cit2b2lkIHRlc3RDaGVja011bEZvbGRGYWlsKGludCwgaW50
KTsKK3ZvaWQgdGVzdEFkZEFyZ3NEb3VibGUoZG91YmxlLCBkb3VibGUpOwordm9pZCB0ZXN0QWRk
QXJnSW1tRG91YmxlKGRvdWJsZSwgZG91YmxlKTsKK3ZvaWQgdGVzdEFkZEltbUFyZ0RvdWJsZShk
b3VibGUsIGRvdWJsZSk7Cit2b2lkIHRlc3RBZGRJbW1zRG91YmxlKGRvdWJsZSwgZG91YmxlKTsK
K3ZvaWQgdGVzdEFkZEFyZ0Zsb2F0KGZsb2F0KTsKK3ZvaWQgdGVzdEFkZEFyZ3NGbG9hdChmbG9h
dCwgZmxvYXQpOwordm9pZCB0ZXN0QWRkRlBSQXJnc0Zsb2F0KGZsb2F0LCBmbG9hdCk7Cit2b2lk
IHRlc3RBZGRBcmdJbW1GbG9hdChmbG9hdCwgZmxvYXQpOwordm9pZCB0ZXN0QWRkSW1tQXJnRmxv
YXQoZmxvYXQsIGZsb2F0KTsKK3ZvaWQgdGVzdEFkZEltbXNGbG9hdChmbG9hdCwgZmxvYXQpOwor
dm9pZCB0ZXN0QWRkQXJnRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24oZmxvYXQpOwor
dm9pZCB0ZXN0QWRkQXJnc0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uKGZsb2F0LCBm
bG9hdCk7Cit2b2lkIHRlc3RBZGRBcmdzRmxvYXRXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lv
bihmbG9hdCwgZmxvYXQpOwordm9pZCB0ZXN0QWRkTXVsTXVsQXJncyhpbnQ2NF90LCBpbnQ2NF90
LCBpbnQ2NF90IGMpOwordm9pZCB0ZXN0TXVsQXJnKGludCk7Cit2b2lkIHRlc3RNdWxBcmdTdG9y
ZShpbnQpOwordm9pZCB0ZXN0TXVsQWRkQXJnKGludCk7Cit2b2lkIHRlc3RNdWxBcmdzKGludCwg
aW50KTsKK3ZvaWQgdGVzdE11bEFyZ05lZ0FyZyhpbnQsIGludCk7Cit2b2lkIHRlc3RDaGVja011
bEFyZ3VtZW50QWxpYXNpbmc2NCgpOwordm9pZCB0ZXN0Q2hlY2tNdWxBcmd1bWVudEFsaWFzaW5n
MzIoKTsKK3ZvaWQgdGVzdENoZWNrTXVsNjRTU2hyKCk7Cit2b2lkIHRlc3RDb21wYXJlSW1wbChC
Mzo6T3Bjb2RlIG9wY29kZSwgaW50NjRfdCBsZWZ0LCBpbnQ2NF90IHJpZ2h0KTsKK3ZvaWQgdGVz
dENvbXBhcmUoQjM6Ok9wY29kZSBvcGNvZGUsIGludDY0X3QgbGVmdCwgaW50NjRfdCByaWdodCk7
Cit2b2lkIHRlc3RFcXVhbERvdWJsZShkb3VibGUgbGVmdCwgZG91YmxlIHJpZ2h0LCBib29sIHJl
c3VsdCk7Cit2b2lkIHRlc3RDYWxsU2ltcGxlKGludCwgaW50KTsKK3ZvaWQgdGVzdENhbGxSYXJl
KGludCwgaW50KTsKK3ZvaWQgdGVzdENhbGxSYXJlTGl2ZShpbnQsIGludCwgaW50IGMpOwordm9p
ZCB0ZXN0Q2FsbFNpbXBsZVB1cmUoaW50LCBpbnQpOwordm9pZCB0ZXN0Q2FsbEZ1bmN0aW9uV2l0
aEhlbGxhQXJndW1lbnRzKCk7Cit2b2lkIHRlc3RDYWxsRnVuY3Rpb25XaXRoSGVsbGFBcmd1bWVu
dHMyKCk7Cit2b2lkIHRlc3RDYWxsRnVuY3Rpb25XaXRoSGVsbGFBcmd1bWVudHMzKCk7Cit2b2lk
IHRlc3RSZXR1cm5Eb3VibGUoZG91YmxlIHZhbHVlKTsKK3ZvaWQgdGVzdFJldHVybkZsb2F0KGZs
b2F0IHZhbHVlKTsKK3ZvaWQgdGVzdE11bE5lZ0FyZ0FyZyhpbnQsIGludCk7Cit2b2lkIHRlc3RN
dWxBcmdJbW0oaW50NjRfdCwgaW50NjRfdCk7Cit2b2lkIHRlc3RNdWxJbW1BcmcoaW50LCBpbnQp
Owordm9pZCB0ZXN0TXVsQXJnczMyKGludCwgaW50KTsKK3ZvaWQgdGVzdE11bEFyZ3MzMlNpZ25F
eHRlbmQoaW50LCBpbnQpOwordm9pZCB0ZXN0TXVsSW1tMzJTaWduRXh0ZW5kKGNvbnN0IGludCwg
aW50KTsKK3ZvaWQgdGVzdE11bExvYWRUd2ljZSgpOwordm9pZCB0ZXN0TXVsQWRkQXJnc0xlZnQo
KTsKK3ZvaWQgdGVzdE11bEFkZEFyZ3NSaWdodCgpOwordm9pZCB0ZXN0TXVsQWRkQXJnc0xlZnQz
MigpOwordm9pZCB0ZXN0TXVsQWRkQXJnc1JpZ2h0MzIoKTsKK3ZvaWQgdGVzdE11bFN1YkFyZ3NM
ZWZ0KCk7Cit2b2lkIHRlc3RNdWxTdWJBcmdzUmlnaHQoKTsKK3ZvaWQgdGVzdE11bFN1YkFyZ3NM
ZWZ0MzIoKTsKK3ZvaWQgdGVzdE11bFN1YkFyZ3NSaWdodDMyKCk7Cit2b2lkIHRlc3RNdWxOZWdB
cmdzKCk7Cit2b2lkIHRlc3RNdWxOZWdBcmdzMzIoKTsKK3ZvaWQgdGVzdE11bEFyZ0RvdWJsZShk
b3VibGUpOwordm9pZCB0ZXN0TXVsQXJnc0RvdWJsZShkb3VibGUsIGRvdWJsZSk7Cit2b2lkIHRl
c3RDYWxsU2ltcGxlRG91YmxlKGRvdWJsZSwgZG91YmxlKTsKK3ZvaWQgdGVzdENhbGxTaW1wbGVG
bG9hdChmbG9hdCwgZmxvYXQpOwordm9pZCB0ZXN0Q2FsbEZ1bmN0aW9uV2l0aEhlbGxhRG91Ymxl
QXJndW1lbnRzKCk7Cit2b2lkIHRlc3RDYWxsRnVuY3Rpb25XaXRoSGVsbGFGbG9hdEFyZ3VtZW50
cygpOwordm9pZCB0ZXN0TGluZWFyU2NhbldpdGhDYWxsZWVPblN0YWNrKCk7Cit2b2lkIHRlc3RD
aGlsbERpdihpbnQgbnVtLCBpbnQgZGVuLCBpbnQgcmVzKTsKK3ZvaWQgdGVzdENoaWxsRGl2VHdp
Y2UoaW50IG51bTEsIGludCBkZW4xLCBpbnQgbnVtMiwgaW50IGRlbjIsIGludCByZXMpOwordm9p
ZCB0ZXN0Q2hpbGxEaXY2NChpbnQ2NF90IG51bSwgaW50NjRfdCBkZW4sIGludDY0X3QgcmVzKTsK
K3ZvaWQgdGVzdE1vZEFyZyhpbnQ2NF90IHZhbHVlKTsKK3ZvaWQgdGVzdE1vZEFyZ3MoaW50NjRf
dCBudW1lcmF0b3IsIGludDY0X3QgZGVub21pbmF0b3IpOwordm9pZCB0ZXN0TW9kSW1tcyhpbnQ2
NF90IG51bWVyYXRvciwgaW50NjRfdCBkZW5vbWluYXRvcik7Cit2b2lkIHRlc3RNdWxBcmdJbW1E
b3VibGUoZG91YmxlLCBkb3VibGUpOwordm9pZCB0ZXN0TXVsSW1tQXJnRG91YmxlKGRvdWJsZSwg
ZG91YmxlKTsKK3ZvaWQgdGVzdE11bEltbXNEb3VibGUoZG91YmxlLCBkb3VibGUpOwordm9pZCB0
ZXN0TXVsQXJnRmxvYXQoZmxvYXQpOwordm9pZCB0ZXN0TXVsQXJnc0Zsb2F0KGZsb2F0LCBmbG9h
dCk7Cit2b2lkIHRlc3RNdWxBcmdJbW1GbG9hdChmbG9hdCwgZmxvYXQpOwordm9pZCB0ZXN0TXVs
SW1tQXJnRmxvYXQoZmxvYXQsIGZsb2F0KTsKK3ZvaWQgdGVzdE11bEltbXNGbG9hdChmbG9hdCwg
ZmxvYXQpOwordm9pZCB0ZXN0TXVsQXJnRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24o
ZmxvYXQpOwordm9pZCB0ZXN0TXVsQXJnc0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9u
KGZsb2F0LCBmbG9hdCk7Cit2b2lkIHRlc3RNdWxBcmdzRmxvYXRXaXRoRWZmZWN0ZnVsRG91Ymxl
Q29udmVyc2lvbihmbG9hdCwgZmxvYXQpOwordm9pZCB0ZXN0RGl2QXJnRG91YmxlKGRvdWJsZSk7
Cit2b2lkIHRlc3REaXZBcmdzRG91YmxlKGRvdWJsZSwgZG91YmxlKTsKK3ZvaWQgdGVzdERpdkFy
Z0ltbURvdWJsZShkb3VibGUsIGRvdWJsZSk7Cit2b2lkIHRlc3REaXZJbW1BcmdEb3VibGUoZG91
YmxlLCBkb3VibGUpOwordm9pZCB0ZXN0RGl2SW1tc0RvdWJsZShkb3VibGUsIGRvdWJsZSk7Cit2
b2lkIHRlc3REaXZBcmdGbG9hdChmbG9hdCk7Cit2b2lkIHRlc3REaXZBcmdzRmxvYXQoZmxvYXQs
IGZsb2F0KTsKK3ZvaWQgdGVzdERpdkFyZ0ltbUZsb2F0KGZsb2F0LCBmbG9hdCk7Cit2b2lkIHRl
c3RNb2RBcmczMihpbnQzMl90IHZhbHVlKTsKK3ZvaWQgdGVzdE1vZEFyZ3MzMihpbnQzMl90IG51
bWVyYXRvciwgaW50MzJfdCBkZW5vbWluYXRvcik7Cit2b2lkIHRlc3RNb2RJbW1zMzIoaW50MzJf
dCBudW1lcmF0b3IsIGludDMyX3QgZGVub21pbmF0b3IpOwordm9pZCB0ZXN0Q2hpbGxNb2RBcmco
aW50NjRfdCB2YWx1ZSk7Cit2b2lkIHRlc3RDaGlsbE1vZEFyZ3MoaW50NjRfdCBudW1lcmF0b3Is
IGludDY0X3QgZGVub21pbmF0b3IpOwordm9pZCB0ZXN0Q2hpbGxNb2RJbW1zKGludDY0X3QgbnVt
ZXJhdG9yLCBpbnQ2NF90IGRlbm9taW5hdG9yKTsKK3ZvaWQgdGVzdENoaWxsTW9kQXJnMzIoaW50
MzJfdCB2YWx1ZSk7Cit2b2lkIHRlc3RDaGlsbE1vZEFyZ3MzMihpbnQzMl90IG51bWVyYXRvciwg
aW50MzJfdCBkZW5vbWluYXRvcik7Cit2b2lkIHRlc3RDaGlsbE1vZEltbXMzMihpbnQzMl90IG51
bWVyYXRvciwgaW50MzJfdCBkZW5vbWluYXRvcik7Cit2b2lkIHRlc3RMb29wV2l0aE11bHRpcGxl
SGVhZGVyRWRnZXMoKTsKK3ZvaWQgdGVzdFN3aXRjaCh1bnNpZ25lZCBkZWdyZWUpOwordm9pZCB0
ZXN0U3dpdGNoKHVuc2lnbmVkIGRlZ3JlZSwgdW5zaWduZWQgZ2FwKTsKK3ZvaWQgdGVzdFN3aXRj
aFNhbWVDYXNlQXNEZWZhdWx0KCk7Cit2b2lkIHRlc3RTd2l0Y2hDaGlsbERpdih1bnNpZ25lZCBk
ZWdyZWUsIHVuc2lnbmVkIGdhcCk7Cit2b2lkIHRlc3RTd2l0Y2hUYXJnZXR0aW5nU2FtZUJsb2Nr
KCk7Cit2b2lkIHRlc3RTd2l0Y2hUYXJnZXR0aW5nU2FtZUJsb2NrRm9sZFBhdGhDb25zdGFudCgp
Owordm9pZCB0ZXN0VHJ1bmNGb2xkKGludDY0X3QgdmFsdWUpOwordm9pZCB0ZXN0WkV4dDMyKGlu
dDMyX3QgdmFsdWUpOwordm9pZCB0ZXN0WkV4dDMyRm9sZChpbnQzMl90IHZhbHVlKTsKK3ZvaWQg
dGVzdFNFeHQzMihpbnQzMl90IHZhbHVlKTsKK3ZvaWQgdGVzdFNFeHQzMkZvbGQoaW50MzJfdCB2
YWx1ZSk7Cit2b2lkIHRlc3RUcnVuY1pFeHQzMihpbnQzMl90IHZhbHVlKTsKK3ZvaWQgdGVzdFBp
blJlZ2lzdGVycygpOwordm9pZCB0ZXN0WDg2TGVhQWRkQWRkU2hsTGVmdCgpOwordm9pZCB0ZXN0
WDg2TGVhQWRkQWRkU2hsUmlnaHQoKTsKK3ZvaWQgdGVzdFg4NkxlYUFkZEFkZCgpOwordm9pZCB0
ZXN0WDg2TGVhQWRkU2hsUmlnaHQoKTsKK3ZvaWQgdGVzdFg4NkxlYUFkZFNobExlZnRTY2FsZTEo
KTsKK3ZvaWQgdGVzdFg4NkxlYUFkZFNobExlZnRTY2FsZTIoKTsKK3ZvaWQgdGVzdFg4NkxlYUFk
ZFNobExlZnRTY2FsZTQoKTsKK3ZvaWQgdGVzdFg4NkxlYUFkZFNobExlZnRTY2FsZTgoKTsKK3Zv
aWQgdGVzdEFkZFNobDMyKCk7Cit2b2lkIHRlc3RBZGRTaGw2NCgpOwordm9pZCB0ZXN0QWRkU2hs
NjUoKTsKK3ZvaWQgdGVzdFJlZHVjZVN0cmVuZ3RoUmVhc3NvY2lhdGlvbihib29sIGZsaXApOwor
dm9pZCB0ZXN0TG9hZEJhc2VJbmRleFNoaWZ0MigpOwordm9pZCB0ZXN0TG9hZEJhc2VJbmRleFNo
aWZ0MzIoKTsKK3ZvaWQgdGVzdE9wdGltaXplTWF0ZXJpYWxpemF0aW9uKCk7Cit2b2lkIHRlc3RM
SUNNUHVyZSgpOwordm9pZCB0ZXN0TElDTVB1cmVTaWRlRXhpdHMoKTsKK3ZvaWQgdGVzdFRydW5j
U0V4dDMyKGludDMyX3QgdmFsdWUpOwordm9pZCB0ZXN0U0V4dDgoaW50MzJfdCB2YWx1ZSk7Cit2
b2lkIHRlc3RTRXh0OEZvbGQoaW50MzJfdCB2YWx1ZSk7Cit2b2lkIHRlc3RTRXh0OFNFeHQ4KGlu
dDMyX3QgdmFsdWUpOwordm9pZCB0ZXN0U0V4dDhTRXh0MTYoaW50MzJfdCB2YWx1ZSk7Cit2b2lk
IHRlc3RTRXh0OEJpdEFuZChpbnQzMl90IHZhbHVlLCBpbnQzMl90IG1hc2spOwordm9pZCB0ZXN0
Qml0QW5kU0V4dDgoaW50MzJfdCB2YWx1ZSwgaW50MzJfdCBtYXNrKTsKK3ZvaWQgdGVzdFNFeHQx
NihpbnQzMl90IHZhbHVlKTsKK3ZvaWQgdGVzdFNFeHQxNkZvbGQoaW50MzJfdCB2YWx1ZSk7Cit2
b2lkIHRlc3RTRXh0MTZTRXh0MTYoaW50MzJfdCB2YWx1ZSk7Cit2b2lkIHRlc3RTRXh0MTZTRXh0
OChpbnQzMl90IHZhbHVlKTsKK3ZvaWQgdGVzdExJQ01QdXJlV3JpdGVzUGlubmVkKCk7Cit2b2lk
IHRlc3RMSUNNUHVyZVdyaXRlcygpOwordm9pZCB0ZXN0TElDTVJlYWRzTG9jYWxTdGF0ZSgpOwor
dm9pZCB0ZXN0TElDTVJlYWRzUGlubmVkKCk7Cit2b2lkIHRlc3RMSUNNUmVhZHMoKTsKK3ZvaWQg
dGVzdExJQ01QdXJlTm90QmFja3dhcmRzRG9taW5hbnQoKTsKK3ZvaWQgdGVzdExJQ01QdXJlRm9p
bGVkQnlDaGlsZCgpOwordm9pZCB0ZXN0TElDTVB1cmVOb3RCYWNrd2FyZHNEb21pbmFudEZvaWxl
ZEJ5Q2hpbGQoKTsKK3ZvaWQgdGVzdExJQ01FeGl0c1NpZGV3YXlzKCk7Cit2b2lkIHRlc3RMSUNN
V3JpdGVzTG9jYWxTdGF0ZSgpOwordm9pZCB0ZXN0TElDTVdyaXRlcygpOwordm9pZCB0ZXN0TElD
TUZlbmNlKCk7Cit2b2lkIHRlc3RMSUNNV3JpdGVzUGlubmVkKCk7Cit2b2lkIHRlc3RMSUNNQ29u
dHJvbERlcGVuZGVudCgpOwordm9pZCB0ZXN0TElDTUNvbnRyb2xEZXBlbmRlbnROb3RCYWNrd2Fy
ZHNEb21pbmFudCgpOwordm9pZCB0ZXN0TElDTUNvbnRyb2xEZXBlbmRlbnRTaWRlRXhpdHMoKTsK
K3ZvaWQgdGVzdExJQ01SZWFkc1Bpbm5lZFdyaXRlc1Bpbm5lZCgpOwordm9pZCB0ZXN0TElDTVJl
YWRzV3JpdGVzRGlmZmVyZW50SGVhcHMoKTsKK3ZvaWQgdGVzdExJQ01SZWFkc1dyaXRlc092ZXJs
YXBwaW5nSGVhcHMoKTsKK3ZvaWQgdGVzdExJQ01EZWZhdWx0Q2FsbCgpOwordm9pZCB0ZXN0RGVw
ZW5kMzIoKTsKK3ZvaWQgdGVzdERlcGVuZDY0KCk7Cit2b2lkIHRlc3RXYXNtQm91bmRzQ2hlY2so
dW5zaWduZWQgb2Zmc2V0KTsKK3ZvaWQgdGVzdFdhc21BZGRyZXNzKCk7Cit2b2lkIHRlc3RGYXN0
VExTTG9hZCgpOwordm9pZCB0ZXN0RmFzdFRMU1N0b3JlKCk7Cit2b2lkIHRlc3REb3VibGVMaXRl
cmFsQ29tcGFyaXNvbihkb3VibGUsIGRvdWJsZSk7Cit2b2lkIHRlc3RGbG9hdEVxdWFsT3JVbm9y
ZGVyZWRGb2xkaW5nKCk7Cit2b2lkIHRlc3RGbG9hdEVxdWFsT3JVbm9yZGVyZWRGb2xkaW5nTmFO
KCk7Cit2b2lkIHRlc3RGbG9hdEVxdWFsT3JVbm9yZGVyZWREb250Rm9sZCgpOwordm9pZCB0ZXN0
U0V4dDE2Qml0QW5kKGludDMyX3QgdmFsdWUsIGludDMyX3QgbWFzayk7Cit2b2lkIHRlc3RCaXRB
bmRTRXh0MTYoaW50MzJfdCB2YWx1ZSwgaW50MzJfdCBtYXNrKTsKK3ZvaWQgdGVzdFNFeHQzMkJp
dEFuZChpbnQzMl90IHZhbHVlLCBpbnQzMl90IG1hc2spOwordm9pZCB0ZXN0U2h1ZmZsZURvZXNu
dFRyYXNoQ2FsbGVlU2F2ZXMoKTsKK3ZvaWQgdGVzdERlbW90ZVBhdGNocG9pbnRUZXJtaW5hbCgp
Owordm9pZCB0ZXN0UmVwb3J0VXNlZFJlZ2lzdGVyc0xhdGVVc2VGb2xsb3dlZEJ5RWFybHlEZWZE
b2VzTm90TWFya1VzZUFzRGVhZCgpOwordm9pZCB0ZXN0SW5maW5pdGVMb29wRG9lc250Q2F1c2VC
YWRIb2lzdGluZygpOwordm9pZCB0ZXN0RGl2SW1tQXJnRmxvYXQoZmxvYXQsIGZsb2F0KTsKK3Zv
aWQgdGVzdERpdkltbXNGbG9hdChmbG9hdCwgZmxvYXQpOwordm9pZCB0ZXN0TW9kQXJnRG91Ymxl
KGRvdWJsZSk7Cit2b2lkIHRlc3RNb2RBcmdzRG91YmxlKGRvdWJsZSwgZG91YmxlKTsKK3ZvaWQg
dGVzdE1vZEFyZ0ltbURvdWJsZShkb3VibGUsIGRvdWJsZSk7Cit2b2lkIHRlc3RNb2RJbW1BcmdE
b3VibGUoZG91YmxlLCBkb3VibGUpOwordm9pZCB0ZXN0TW9kSW1tc0RvdWJsZShkb3VibGUsIGRv
dWJsZSk7Cit2b2lkIHRlc3RNb2RBcmdGbG9hdChmbG9hdCk7Cit2b2lkIHRlc3RNb2RBcmdzRmxv
YXQoZmxvYXQsIGZsb2F0KTsKK3ZvaWQgdGVzdE1vZEFyZ0ltbUZsb2F0KGZsb2F0LCBmbG9hdCk7
Cit2b2lkIHRlc3RNb2RJbW1BcmdGbG9hdChmbG9hdCwgZmxvYXQpOwordm9pZCB0ZXN0TW9kSW1t
c0Zsb2F0KGZsb2F0LCBmbG9hdCk7Cit2b2lkIHRlc3REaXZBcmdGbG9hdFdpdGhVc2VsZXNzRG91
YmxlQ29udmVyc2lvbihmbG9hdCk7Cit2b2lkIHRlc3REaXZBcmdzRmxvYXRXaXRoVXNlbGVzc0Rv
dWJsZUNvbnZlcnNpb24oZmxvYXQsIGZsb2F0KTsKK3ZvaWQgdGVzdERpdkFyZ3NGbG9hdFdpdGhF
ZmZlY3RmdWxEb3VibGVDb252ZXJzaW9uKGZsb2F0LCBmbG9hdCk7Cit2b2lkIHRlc3RVRGl2QXJn
c0ludDMyKHVpbnQzMl90LCB1aW50MzJfdCk7Cit2b2lkIHRlc3RVRGl2QXJnc0ludDY0KHVpbnQ2
NF90LCB1aW50NjRfdCk7Cit2b2lkIHRlc3RVTW9kQXJnc0ludDMyKHVpbnQzMl90LCB1aW50MzJf
dCk7Cit2b2lkIHRlc3RVTW9kQXJnc0ludDY0KHVpbnQ2NF90LCB1aW50NjRfdCk7Cit2b2lkIHRl
c3RTdWJBcmcoaW50KTsKK3ZvaWQgdGVzdFN1YkFyZ3MoaW50LCBpbnQpOwordm9pZCB0ZXN0U3Vi
QXJnSW1tKGludDY0X3QsIGludDY0X3QpOwordm9pZCB0ZXN0U3ViTmVnKGludCwgaW50KTsKK3Zv
aWQgdGVzdE5lZ1N1YihpbnQsIGludCk7Cit2b2lkIHRlc3ROZWdWYWx1ZVN1Yk9uZShpbnQpOwor
dm9pZCB0ZXN0U3ViU3ViKGludCwgaW50LCBpbnQgYyk7Cit2b2lkIHRlc3RTdWJTdWIyKGludCwg
aW50LCBpbnQgYyk7Cit2b2lkIHRlc3RTdWJBZGQoaW50LCBpbnQsIGludCBjKTsKK3ZvaWQgdGVz
dFN1YkZpcnN0TmVnKGludCwgaW50KTsKK3ZvaWQgdGVzdFN1YkltbUFyZyhpbnQsIGludCk7Cit2
b2lkIHRlc3RTdWJBcmdNZW0oaW50NjRfdCwgaW50NjRfdCk7Cit2b2lkIHRlc3RTdWJNZW1Bcmco
aW50NjRfdCwgaW50NjRfdCk7Cit2b2lkIHRlc3RTdWJJbW1NZW0oaW50NjRfdCwgaW50NjRfdCk7
Cit2b2lkIHRlc3RTdWJNZW1JbW0oaW50NjRfdCwgaW50NjRfdCk7Cit2b2lkIHRlc3RTdWJBcmdz
MzIoaW50LCBpbnQpOwordm9pZCB0ZXN0U3ViQXJnSW1tMzIoaW50LCBpbnQpOwordm9pZCB0ZXN0
U3ViSW1tQXJnMzIoaW50LCBpbnQpOwordm9pZCB0ZXN0U3ViTWVtQXJnMzIoaW50MzJfdCwgaW50
MzJfdCk7Cit2b2lkIHRlc3RTdWJBcmdNZW0zMihpbnQzMl90LCBpbnQzMl90KTsKK3ZvaWQgdGVz
dFN1YkltbU1lbTMyKGludDMyX3QsIGludDMyX3QpOwordm9pZCB0ZXN0U3ViTWVtSW1tMzIoaW50
MzJfdCwgaW50MzJfdCk7Cit2b2lkIHRlc3ROZWdWYWx1ZVN1Yk9uZTMyKGludCk7Cit2b2lkIHRl
c3ROZWdNdWxBcmdJbW0oaW50NjRfdCwgaW50NjRfdCk7Cit2b2lkIHRlc3RTdWJNdWxNdWxBcmdz
KGludDY0X3QsIGludDY0X3QsIGludDY0X3QgYyk7Cit2b2lkIHRlc3RTdWJBcmdEb3VibGUoZG91
YmxlKTsKK3ZvaWQgdGVzdFN1YkFyZ3NEb3VibGUoZG91YmxlLCBkb3VibGUpOwordm9pZCB0ZXN0
U3ViQXJnSW1tRG91YmxlKGRvdWJsZSwgZG91YmxlKTsKK3ZvaWQgdGVzdFN1YkltbUFyZ0RvdWJs
ZShkb3VibGUsIGRvdWJsZSk7Cit2b2lkIHRlc3RTdWJJbW1zRG91YmxlKGRvdWJsZSwgZG91Ymxl
KTsKK3ZvaWQgdGVzdFN1YkFyZ0Zsb2F0KGZsb2F0KTsKK3ZvaWQgdGVzdFN1YkFyZ3NGbG9hdChm
bG9hdCwgZmxvYXQpOwordm9pZCB0ZXN0U3ViQXJnSW1tRmxvYXQoZmxvYXQsIGZsb2F0KTsKK3Zv
aWQgdGVzdFN1YkltbUFyZ0Zsb2F0KGZsb2F0LCBmbG9hdCk7Cit2b2lkIHRlc3RTdWJJbW1zRmxv
YXQoZmxvYXQsIGZsb2F0KTsKK3ZvaWQgdGVzdFN1YkFyZ0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVD
b252ZXJzaW9uKGZsb2F0KTsKK3ZvaWQgdGVzdFN1YkFyZ3NGbG9hdFdpdGhVc2VsZXNzRG91Ymxl
Q29udmVyc2lvbihmbG9hdCwgZmxvYXQpOwordm9pZCB0ZXN0U3ViQXJnc0Zsb2F0V2l0aEVmZmVj
dGZ1bERvdWJsZUNvbnZlcnNpb24oZmxvYXQsIGZsb2F0KTsKK3ZvaWQgdGVzdFRlcm5hcnlTdWJJ
bnN0cnVjdGlvblNlbGVjdGlvbihCMzo6T3Bjb2RlIHZhbHVlTW9kaWZpZXIsIFR5cGUgdmFsdWVU
eXBlLCBBaXI6Ok9wY29kZSBleHBlY3RlZE9wY29kZSk7Cit2b2lkIHRlc3ROZWdEb3VibGUoZG91
YmxlKTsKK3ZvaWQgdGVzdE5lZ0Zsb2F0KGZsb2F0KTsKK3ZvaWQgdGVzdE5lZ0Zsb2F0V2l0aFVz
ZWxlc3NEb3VibGVDb252ZXJzaW9uKGZsb2F0KTsKK3ZvaWQgdGVzdEJpdEFuZEFyZ3MoaW50NjRf
dCwgaW50NjRfdCk7Cit2b2lkIHRlc3RCaXRBbmRTYW1lQXJnKGludDY0X3QpOwordm9pZCB0ZXN0
Qml0QW5kTm90Tm90KGludDY0X3QsIGludDY0X3QpOwordm9pZCB0ZXN0Qml0QW5kTm90SW1tKGlu
dDY0X3QsIGludDY0X3QpOwordm9pZCB0ZXN0Qml0QW5kSW1tcyhpbnQ2NF90LCBpbnQ2NF90KTsK
K3ZvaWQgdGVzdEJpdEFuZEFyZ0ltbShpbnQ2NF90LCBpbnQ2NF90KTsKK3ZvaWQgdGVzdEJpdEFu
ZEltbUFyZyhpbnQ2NF90LCBpbnQ2NF90KTsKK3ZvaWQgdGVzdEJpdEFuZEJpdEFuZEFyZ0ltbUlt
bShpbnQ2NF90LCBpbnQ2NF90LCBpbnQ2NF90IGMpOwordm9pZCB0ZXN0Qml0QW5kSW1tQml0QW5k
QXJnSW1tKGludDY0X3QsIGludDY0X3QsIGludDY0X3QgYyk7Cit2b2lkIHRlc3RCaXRBbmRBcmdz
MzIoaW50LCBpbnQpOwordm9pZCB0ZXN0Qml0QW5kU2FtZUFyZzMyKGludCk7Cit2b2lkIHRlc3RC
aXRBbmRJbW1zMzIoaW50LCBpbnQpOwordm9pZCB0ZXN0Qml0QW5kQXJnSW1tMzIoaW50LCBpbnQp
Owordm9pZCB0ZXN0Qml0QW5kSW1tQXJnMzIoaW50LCBpbnQpOwordm9pZCB0ZXN0Qml0QW5kQml0
QW5kQXJnSW1tSW1tMzIoaW50LCBpbnQsIGludCBjKTsKK3ZvaWQgdGVzdEJpdEFuZEltbUJpdEFu
ZEFyZ0ltbTMyKGludCwgaW50LCBpbnQgYyk7Cit2b2lkIHRlc3RCaXRBbmRXaXRoTWFza1JldHVy
bnNCb29sZWFucyhpbnQ2NF90LCBpbnQ2NF90KTsKK3ZvaWQgdGVzdEJpdEFuZEFyZ0RvdWJsZShk
b3VibGUpOwordm9pZCB0ZXN0Qml0QW5kQXJnc0RvdWJsZShkb3VibGUsIGRvdWJsZSk7Cit2b2lk
IHRlc3RCaXRBbmRBcmdJbW1Eb3VibGUoZG91YmxlLCBkb3VibGUpOwordm9pZCB0ZXN0Qml0QW5k
SW1tc0RvdWJsZShkb3VibGUsIGRvdWJsZSk7Cit2b2lkIHRlc3RCaXRBbmRBcmdGbG9hdChmbG9h
dCk7Cit2b2lkIHRlc3RCaXRBbmRBcmdzRmxvYXQoZmxvYXQsIGZsb2F0KTsKK3ZvaWQgdGVzdEJp
dEFuZEFyZ0ltbUZsb2F0KGZsb2F0LCBmbG9hdCk7Cit2b2lkIHRlc3RCaXRBbmRJbW1zRmxvYXQo
ZmxvYXQsIGZsb2F0KTsKK3ZvaWQgdGVzdEJpdEFuZEFyZ3NGbG9hdFdpdGhVc2VsZXNzRG91Ymxl
Q29udmVyc2lvbihmbG9hdCwgZmxvYXQpOwordm9pZCB0ZXN0Qml0T3JBcmdzKGludDY0X3QsIGlu
dDY0X3QpOwordm9pZCB0ZXN0Qml0T3JTYW1lQXJnKGludDY0X3QpOwordm9pZCB0ZXN0Qml0T3JB
bmRBbmRBcmdzKGludDY0X3QsIGludDY0X3QsIGludDY0X3QgYyk7Cit2b2lkIHRlc3RCaXRPckFu
ZFNhbWVBcmdzKGludDY0X3QsIGludDY0X3QpOwordm9pZCB0ZXN0Qml0T3JOb3ROb3QoaW50NjRf
dCwgaW50NjRfdCk7Cit2b2lkIHRlc3RCaXRPck5vdEltbShpbnQ2NF90LCBpbnQ2NF90KTsKK3Zv
aWQgdGVzdEJpdE9ySW1tcyhpbnQ2NF90LCBpbnQ2NF90KTsKK3ZvaWQgdGVzdEJpdE9yQXJnSW1t
KGludDY0X3QsIGludDY0X3QpOwordm9pZCB0ZXN0Qml0T3JJbW1BcmcoaW50NjRfdCwgaW50NjRf
dCk7Cit2b2lkIHRlc3RCaXRPckJpdE9yQXJnSW1tSW1tKGludDY0X3QsIGludDY0X3QsIGludDY0
X3QgYyk7Cit2b2lkIHRlc3RCaXRPckltbUJpdE9yQXJnSW1tKGludDY0X3QsIGludDY0X3QsIGlu
dDY0X3QgYyk7Cit2b2lkIHRlc3RCaXRPckFyZ3MzMihpbnQsIGludCk7Cit2b2lkIHRlc3RCaXRP
clNhbWVBcmczMihpbnQpOwordm9pZCB0ZXN0Qml0T3JJbW1zMzIoaW50LCBpbnQpOwordm9pZCB0
ZXN0Qml0T3JBcmdJbW0zMihpbnQsIGludCk7Cit2b2lkIHRlc3RCaXRPckltbUFyZzMyKGludCwg
aW50KTsKKwordm9pZCBhZGRBdG9taWNUZXN0cyhjb25zdCBjaGFyKiBmaWx0ZXIsIERlcXVlPFJl
ZlB0cjxTaGFyZWRUYXNrPHZvaWQoKT4+PiYgdGFza3MpOwordm9pZCBhZGRMb2FkVGVzdHMoY29u
c3QgY2hhciogZmlsdGVyLCBEZXF1ZTxSZWZQdHI8U2hhcmVkVGFzazx2b2lkKCk+Pj4mIHRhc2tz
KTsKK2Jvb2wgc2hvdWxkUnVuKGNvbnN0IGNoYXIqIGZpbHRlciwgY29uc3QgY2hhciogdGVzdE5h
bWUpOworCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy90ZXN0YjNfMS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVz
dGIzXzEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4MzExMmExNmZkNzBjMGY3MTU1OWMwNWZlNDI1YjFjNzYx
ZmRlYmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIz
XzEuY3BwCkBAIC0wLDAgKzEsMTc0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJ0ZXN0
YjMuaCIKKworI2lmIEVOQUJMRShCM19KSVQpCisKK0xvY2sgY3Jhc2hMb2NrOworCisvLyBNYWtl
IHN1cmUgdGhlIGNvbXBpbGVyIGRvZXMgbm90IHRyeSB0byBvcHRpbWl6ZSBhbnl0aGluZyBvdXQu
CitzdGF0aWMgTkVWRVJfSU5MSU5FIGRvdWJsZSB6ZXJvKCkKK3sKKyAgICByZXR1cm4gMC47Cit9
CisKK3N0YXRpYyBkb3VibGUgbmVnYXRpdmVaZXJvKCkKK3sKKyAgICByZXR1cm4gLXplcm8oKTsK
K30KKworYm9vbCBzaG91bGRSdW4oY29uc3QgY2hhciogZmlsdGVyLCBjb25zdCBjaGFyKiB0ZXN0
TmFtZSkKK3sKKyAgICAvLyBGSVhNRTogVGhlc2UgdGVzdHMgZmFpbCA8aHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTMzMD4uCisgICAgaWYgKCFmaWx0ZXIgJiYgaXNB
Uk02NCgpKSB7CisgICAgICAgIGZvciAoYXV0byYgZmFpbGluZ1Rlc3QgOiB7CisgICAgICAgICAg
ICAidGVzdFJlcG9ydFVzZWRSZWdpc3RlcnNMYXRlVXNlRm9sbG93ZWRCeUVhcmx5RGVmRG9lc05v
dE1hcmtVc2VBc0RlYWQiLAorICAgICAgICAgICAgInRlc3ROZWdGbG9hdFdpdGhVc2VsZXNzRG91
YmxlQ29udmVyc2lvbiIsCisgICAgICAgICAgICAidGVzdFBpblJlZ2lzdGVycyIsCisgICAgICAg
IH0pIHsKKyAgICAgICAgICAgIGlmIChXVEY6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZVdpdGhvdXRM
ZW5ndGgodGVzdE5hbWUsIGZhaWxpbmdUZXN0KSAhPSBXVEY6Om5vdEZvdW5kKSB7CisgICAgICAg
ICAgICAgICAgZGF0YUxvZ0xuKCIqKiogV2FybmluZzogU2tpcHBpbmcga25vd24tYmFkIHRlc3Q6
ICIsIHRlc3ROYW1lKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCFmaWx0ZXIgJiYgaXNYODYoKSkgeworICAg
ICAgICBmb3IgKGF1dG8mIGZhaWxpbmdUZXN0IDogeworICAgICAgICAgICAgInRlc3RSZXBvcnRV
c2VkUmVnaXN0ZXJzTGF0ZVVzZUZvbGxvd2VkQnlFYXJseURlZkRvZXNOb3RNYXJrVXNlQXNEZWFk
IiwKKyAgICAgICAgfSkgeworICAgICAgICAgICAgaWYgKFdURjo6ZmluZElnbm9yaW5nQVNDSUlD
YXNlV2l0aG91dExlbmd0aCh0ZXN0TmFtZSwgZmFpbGluZ1Rlc3QpICE9IFdURjo6bm90Rm91bmQp
IHsKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIioqKiBXYXJuaW5nOiBTa2lwcGluZyBrbm93
bi1iYWQgdGVzdDogIiwgdGVzdE5hbWUpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gIWZpbHRlciB8fCBX
VEY6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZVdpdGhvdXRMZW5ndGgodGVzdE5hbWUsIGZpbHRlcikg
IT0gV1RGOjpub3RGb3VuZDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgdGVzdFJv
dFIoVCB2YWx1ZUludCwgaW50MzJfdCBzaGlmdCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIAorICAgIFZhbHVlKiB2
YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBpZiAoc2l6ZW9mKFQpID09IDQpCisgICAgICAg
IHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksIHZh
bHVlKTsKKyAgICAKKyAgICBWYWx1ZSogYW1tb3VudCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJvdFIsIE9yaWdpbigpLCB2YWx1ZSwgYW1t
b3VudCkpOworICAgIAorICAgIENIRUNLX0VRKGNvbXBpbGVBbmRSdW48VD4ocHJvYywgdmFsdWVJ
bnQsIHNoaWZ0KSwgcm90YXRlUmlnaHQodmFsdWVJbnQsIHNoaWZ0KSk7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+Cit2b2lkIHRlc3RSb3RMKFQgdmFsdWVJbnQsIGludDMyX3Qgc2hpZnQpCit7
CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICAKKyAgICBWYWx1ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgaWYg
KHNpemVvZihUKSA9PSA0KQorICAgICAgICB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgVHJ1bmMsIE9yaWdpbigpLCB2YWx1ZSk7CisgICAgCisgICAgVmFsdWUqIGFtbW91bnQg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEpKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBS
b3RMLCBPcmlnaW4oKSwgdmFsdWUsIGFtbW91bnQpKTsKKyAgICAKKyAgICBDSEVDS19FUShjb21w
aWxlQW5kUnVuPFQ+KHByb2MsIHZhbHVlSW50LCBzaGlmdCksIHJvdGF0ZUxlZnQodmFsdWVJbnQs
IHNoaWZ0KSk7Cit9CisKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgdGVzdFJvdFJXaXRo
SW1tU2hpZnQoVCB2YWx1ZUludCwgaW50MzJfdCBzaGlmdCkKK3sKKyAgICBQcm9jZWR1cmUgcHJv
YzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIAorICAgIFZh
bHVlKiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBpZiAoc2l6ZW9mKFQpID09IDQpCisg
ICAgICAgIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2lu
KCksIHZhbHVlKTsKKyAgICAKKyAgICBWYWx1ZSogYW1tb3VudCA9IHJvb3QtPmFwcGVuZEludENv
bnN0YW50KHByb2MsIE9yaWdpbigpLCBJbnQzMiwgc2hpZnQpOworICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIFJvdFIsIE9yaWdpbigpLCB2YWx1ZSwgYW1tb3VudCkpOworICAg
IAorICAgIENIRUNLX0VRKGNvbXBpbGVBbmRSdW48VD4ocHJvYywgdmFsdWVJbnQsIHNoaWZ0KSwg
cm90YXRlUmlnaHQodmFsdWVJbnQsIHNoaWZ0KSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
Cit2b2lkIHRlc3RSb3RMV2l0aEltbVNoaWZ0KFQgdmFsdWVJbnQsIGludDMyX3Qgc2hpZnQpCit7
CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICAKKyAgICBWYWx1ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgaWYg
KHNpemVvZihUKSA9PSA0KQorICAgICAgICB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgVHJ1bmMsIE9yaWdpbigpLCB2YWx1ZSk7CisgICAgCisgICAgVmFsdWUqIGFtbW91bnQg
PSByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgSW50MzIsIHNoaWZ0KTsK
KyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSb3RMLCBPcmlnaW4oKSwgdmFs
dWUsIGFtbW91bnQpKTsKKyAgICAKKyAgICBDSEVDS19FUShjb21waWxlQW5kUnVuPFQ+KHByb2Ms
IHZhbHVlSW50LCBzaGlmdCksIHJvdGF0ZUxlZnQodmFsdWVJbnQsIHNoaWZ0KSk7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+Cit2b2lkIHRlc3RDb21wdXRlRGl2aXNpb25NYWdpYyhUIHZhbHVl
LCBUIG1hZ2ljTXVsdGlwbGllciwgdW5zaWduZWQgc2hpZnQpCit7CisgICAgRGl2aXNpb25NYWdp
YzxUPiBtYWdpYyA9IGNvbXB1dGVEaXZpc2lvbk1hZ2ljKHZhbHVlKTsKKyAgICBDSEVDSyhtYWdp
Yy5tYWdpY011bHRpcGxpZXIgPT0gbWFnaWNNdWx0aXBsaWVyKTsKKyAgICBDSEVDSyhtYWdpYy5z
aGlmdCA9PSBzaGlmdCk7Cit9CisKK3ZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKK3sKKyAg
ICBEZXF1ZTxSZWZQdHI8U2hhcmVkVGFzazx2b2lkKCk+Pj4gdGFza3M7CisKKyAgICBSVU5fTk9X
KHRlc3RUZXJtaW5hbFBhdGNocG9pbnRUaGF0TmVlZHNUb0JlU3BpbGxlZDIoKSk7CisgICAgUlVO
KHRlc3Q0MigpKTsKKyAgICBSVU4odGVzdExvYWQ0MigpKTsKKyAgICBSVU4odGVzdExvYWRBY3E0
MigpKTsKKyAgICBSVU4odGVzdExvYWRPZmZzZXRJbW05TWF4KCkpOworICAgIFJVTih0ZXN0TG9h
ZE9mZnNldEltbTlNYXhQbHVzT25lKCkpOworICAgIFJVTih0ZXN0TG9hZE9mZnNldEltbTlNYXhQ
bHVzVHdvKCkpOworICAgIFJVTih0ZXN0TG9hZE9mZnNldEltbTlNaW4oKSk7CisgICAgUlVOKHRl
c3RMb2FkT2Zmc2V0SW1tOU1pbk1pbnVzT25lKCkpOworICAgIFJVTih0ZXN0TG9hZE9mZnNldFNj
YWxlZFVuc2lnbmVkSW1tMTJNYXgoKSk7CisgICAgUlVOKHRlc3RMb2FkT2Zmc2V0U2NhbGVkVW5z
aWduZWRPdmVySW1tMTJNYXgoKSk7CisgICAgUlVOKHRlc3RBcmcoNDMpKTsKKyAgICBSVU4odGVz
dFJldHVybkNvbnN0NjQoNSkpOworICAgIFJVTih0ZXN0UmV0dXJuQ29uc3Q2NCgtNDIpKTsKKyAg
ICBSVU4odGVzdFJldHVyblZvaWQoKSk7CisKKyAgICBSVU5fQklOQVJZKHRlc3RCaXRYb3JUcmVl
QXJncywgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlko
dGVzdEJpdFhvclRyZWVBcmdzRXZlbiwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkp
OworICAgIFJVTl9CSU5BUlkodGVzdEJpdFhvclRyZWVBcmdJbW0sIGludDY0T3BlcmFuZHMoKSwg
aW50NjRPcGVyYW5kcygpKTsKKyAgICBSVU5fVU5BUlkodGVzdEFkZFRyZWVBcmczMiwgaW50MzJP
cGVyYW5kcygpKTsKKyAgICBSVU5fVU5BUlkodGVzdE11bFRyZWVBcmczMiwgaW50MzJPcGVyYW5k
cygpKTsKKyAgICBSVU5fVU5BUlkodGVzdEJpdEFuZFRyZWVBcmczMiwgaW50MzJPcGVyYW5kcygp
KTsKKyAgICBSVU5fVU5BUlkodGVzdEJpdE9yVHJlZUFyZzMyLCBpbnQzMk9wZXJhbmRzKCkpOwor
CisgICAgUlVOKHRlc3RBZGRBcmcoMTExKSk7CisgICAgUlVOKHRlc3RBZGRBcmdzKDEsIDEpKTsK
KyAgICBSVU4odGVzdEFkZEFyZ3MoMSwgMikpOworICAgIFJVTih0ZXN0QWRkQXJnSW1tKDEsIDIp
KTsKKyAgICBSVU4odGVzdEFkZEFyZ0ltbSgwLCAyKSk7CisgICAgUlVOKHRlc3RBZGRBcmdJbW0o
MSwgMCkpOworICAgIFJVTih0ZXN0QWRkSW1tQXJnKDEsIDIpKTsKKyAgICBSVU4odGVzdEFkZElt
bUFyZygwLCAyKSk7CisgICAgUlVOKHRlc3RBZGRJbW1BcmcoMSwgMCkpOworICAgIFJVTl9CSU5B
UlkodGVzdEFkZEFyZ01lbSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOworICAg
IFJVTl9CSU5BUlkodGVzdEFkZE1lbUFyZywgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRz
KCkpOworICAgIFJVTl9CSU5BUlkodGVzdEFkZEltbU1lbSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2
NE9wZXJhbmRzKCkpOworICAgIFJVTl9VTkFSWSh0ZXN0QWRkQXJnMzIsIGludDMyT3BlcmFuZHMo
KSk7CisgICAgUlVOKHRlc3RBZGRBcmdzMzIoMSwgMSkpOworICAgIFJVTih0ZXN0QWRkQXJnczMy
KDEsIDIpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RBZGRBcmdNZW0zMiwgaW50MzJPcGVyYW5kcygp
LCBpbnQzMk9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlkodGVzdEFkZE1lbUFyZzMyLCBpbnQz
Mk9wZXJhbmRzKCksIGludDMyT3BlcmFuZHMoKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0QWRkSW1t
TWVtMzIsIGludDMyT3BlcmFuZHMoKSwgaW50MzJPcGVyYW5kcygpKTsKKyAgICBSVU5fQklOQVJZ
KHRlc3RBZGROZWcxLCBpbnQzMk9wZXJhbmRzKCksIGludDMyT3BlcmFuZHMoKSk7CisgICAgUlVO
X0JJTkFSWSh0ZXN0QWRkTmVnMiwgaW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkpOwor
ICAgIFJVTih0ZXN0QWRkQXJnWmVyb0ltbVpEZWYoKSk7CisgICAgUlVOKHRlc3RBZGRMb2FkVHdp
Y2UoKSk7CisgICAgUlVOX1RFUk5BUlkodGVzdEFkZE11bE11bEFyZ3MsIGludDY0T3BlcmFuZHMo
KSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOworCisgICAgUlVOKHRlc3RBZGRB
cmdEb3VibGUoTV9QSSkpOworICAgIFJVTih0ZXN0QWRkQXJnc0RvdWJsZShNX1BJLCAxKSk7Cisg
ICAgUlVOKHRlc3RBZGRBcmdzRG91YmxlKE1fUEksIC1NX1BJKSk7CisgICAgUlVOKHRlc3RBZGRB
cmdJbW1Eb3VibGUoTV9QSSwgMSkpOworICAgIFJVTih0ZXN0QWRkQXJnSW1tRG91YmxlKE1fUEks
IDApKTsKKyAgICBSVU4odGVzdEFkZEFyZ0ltbURvdWJsZShNX1BJLCBuZWdhdGl2ZVplcm8oKSkp
OworICAgIFJVTih0ZXN0QWRkQXJnSW1tRG91YmxlKDAsIDApKTsKKyAgICBSVU4odGVzdEFkZEFy
Z0ltbURvdWJsZSgwLCBuZWdhdGl2ZVplcm8oKSkpOworICAgIFJVTih0ZXN0QWRkQXJnSW1tRG91
YmxlKG5lZ2F0aXZlWmVybygpLCAwKSk7CisgICAgUlVOKHRlc3RBZGRBcmdJbW1Eb3VibGUobmVn
YXRpdmVaZXJvKCksIG5lZ2F0aXZlWmVybygpKSk7CisgICAgUlVOKHRlc3RBZGRJbW1BcmdEb3Vi
bGUoTV9QSSwgMSkpOworICAgIFJVTih0ZXN0QWRkSW1tQXJnRG91YmxlKE1fUEksIDApKTsKKyAg
ICBSVU4odGVzdEFkZEltbUFyZ0RvdWJsZShNX1BJLCBuZWdhdGl2ZVplcm8oKSkpOworICAgIFJV
Tih0ZXN0QWRkSW1tQXJnRG91YmxlKDAsIDApKTsKKyAgICBSVU4odGVzdEFkZEltbUFyZ0RvdWJs
ZSgwLCBuZWdhdGl2ZVplcm8oKSkpOworICAgIFJVTih0ZXN0QWRkSW1tQXJnRG91YmxlKG5lZ2F0
aXZlWmVybygpLCAwKSk7CisgICAgUlVOKHRlc3RBZGRJbW1BcmdEb3VibGUobmVnYXRpdmVaZXJv
KCksIG5lZ2F0aXZlWmVybygpKSk7CisgICAgUlVOKHRlc3RBZGRJbW1zRG91YmxlKE1fUEksIDEp
KTsKKyAgICBSVU4odGVzdEFkZEltbXNEb3VibGUoTV9QSSwgMCkpOworICAgIFJVTih0ZXN0QWRk
SW1tc0RvdWJsZShNX1BJLCBuZWdhdGl2ZVplcm8oKSkpOworICAgIFJVTih0ZXN0QWRkSW1tc0Rv
dWJsZSgwLCAwKSk7CisgICAgUlVOKHRlc3RBZGRJbW1zRG91YmxlKDAsIG5lZ2F0aXZlWmVybygp
KSk7CisgICAgUlVOKHRlc3RBZGRJbW1zRG91YmxlKG5lZ2F0aXZlWmVybygpLCBuZWdhdGl2ZVpl
cm8oKSkpOworICAgIFJVTl9VTkFSWSh0ZXN0QWRkQXJnRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVy
YW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0QWRkQXJnc0Zsb2F0LCBmbG9hdGlu
Z1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7
CisgICAgUlVOX0JJTkFSWSh0ZXN0QWRkRlBSQXJnc0Zsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFu
ZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJ
TkFSWSh0ZXN0QWRkQXJnSW1tRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwg
ZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RBZGRJ
bW1BcmdGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdEFkZEltbXNGbG9hdCwgZmxv
YXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+
KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0QWRkQXJnRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZl
cnNpb24sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFSWSh0
ZXN0QWRkQXJnc0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAg
UlVOX0JJTkFSWSh0ZXN0QWRkQXJnc0Zsb2F0V2l0aEVmZmVjdGZ1bERvdWJsZUNvbnZlcnNpb24s
IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZs
b2F0PigpKTsKKworICAgIFJVTih0ZXN0TXVsQXJnKDUpKTsKKyAgICBSVU4odGVzdE11bEFkZEFy
Zyg1KSk7CisgICAgUlVOKHRlc3RNdWxBZGRBcmcoODUpKTsKKyAgICBSVU4odGVzdE11bEFyZ1N0
b3JlKDUpKTsKKyAgICBSVU4odGVzdE11bEFyZ1N0b3JlKDg1KSk7CisgICAgUlVOKHRlc3RNdWxB
cmdzKDEsIDEpKTsKKyAgICBSVU4odGVzdE11bEFyZ3MoMSwgMikpOworICAgIFJVTih0ZXN0TXVs
QXJncygzLCAzKSk7CisgICAgUlVOKHRlc3RNdWxBcmdJbW0oMSwgMikpOworICAgIFJVTih0ZXN0
TXVsQXJnSW1tKDEsIDQpKTsKKyAgICBSVU4odGVzdE11bEFyZ0ltbSgxLCA4KSk7CisgICAgUlVO
KHRlc3RNdWxBcmdJbW0oMSwgMTYpKTsKKyAgICBSVU4odGVzdE11bEFyZ0ltbSgxLCAweDgwMDAw
MDAwbGx1KSk7CisgICAgUlVOKHRlc3RNdWxBcmdJbW0oMSwgMHg4MDAwMDAwMDAwMDBsbHUpKTsK
KyAgICBSVU4odGVzdE11bEFyZ0ltbSg3LCAyKSk7CisgICAgUlVOKHRlc3RNdWxBcmdJbW0oNywg
NCkpOworICAgIFJVTih0ZXN0TXVsQXJnSW1tKDcsIDgpKTsKKyAgICBSVU4odGVzdE11bEFyZ0lt
bSg3LCAxNikpOworICAgIFJVTih0ZXN0TXVsQXJnSW1tKDcsIDB4ODAwMDAwMDBsbHUpKTsKKyAg
ICBSVU4odGVzdE11bEFyZ0ltbSg3LCAweDgwMDAwMDAwMDAwMGxsdSkpOworICAgIFJVTih0ZXN0
TXVsQXJnSW1tKC00MiwgMikpOworICAgIFJVTih0ZXN0TXVsQXJnSW1tKC00MiwgNCkpOworICAg
IFJVTih0ZXN0TXVsQXJnSW1tKC00MiwgOCkpOworICAgIFJVTih0ZXN0TXVsQXJnSW1tKC00Miwg
MTYpKTsKKyAgICBSVU4odGVzdE11bEFyZ0ltbSgtNDIsIDB4ODAwMDAwMDBsbHUpKTsKKyAgICBS
VU4odGVzdE11bEFyZ0ltbSgtNDIsIDB4ODAwMDAwMDAwMDAwbGx1KSk7CisgICAgUlVOKHRlc3RN
dWxBcmdJbW0oMCwgMikpOworICAgIFJVTih0ZXN0TXVsQXJnSW1tKDEsIDApKTsKKyAgICBSVU4o
dGVzdE11bEFyZ0ltbSgzLCAzKSk7CisgICAgUlVOKHRlc3RNdWxBcmdJbW0oMywgLTEpKTsKKyAg
ICBSVU4odGVzdE11bEFyZ0ltbSgtMywgLTEpKTsKKyAgICBSVU4odGVzdE11bEFyZ0ltbSgwLCAt
MSkpOworICAgIFJVTih0ZXN0TXVsSW1tQXJnKDEsIDIpKTsKKyAgICBSVU4odGVzdE11bEltbUFy
ZygwLCAyKSk7CisgICAgUlVOKHRlc3RNdWxJbW1BcmcoMSwgMCkpOworICAgIFJVTih0ZXN0TXVs
SW1tQXJnKDMsIDMpKTsKKyAgICBSVU4odGVzdE11bEltbTMyU2lnbkV4dGVuZCgxLCAyKSk7Cisg
ICAgUlVOKHRlc3RNdWxJbW0zMlNpZ25FeHRlbmQoMCwgMikpOworICAgIFJVTih0ZXN0TXVsSW1t
MzJTaWduRXh0ZW5kKDEsIDApKTsKKyAgICBSVU4odGVzdE11bEltbTMyU2lnbkV4dGVuZCgzLCAz
KSk7CisgICAgUlVOKHRlc3RNdWxJbW0zMlNpZ25FeHRlbmQoMHhGRkZGRkZGRiwgMHhGRkZGRkZG
RikpOworICAgIFJVTih0ZXN0TXVsSW1tMzJTaWduRXh0ZW5kKDB4RkZGRkZGRkUsIDB4RkZGRkZG
RkYpKTsKKyAgICBSVU4odGVzdE11bEltbTMyU2lnbkV4dGVuZCgweEZGRkZGRkZGLCAweEZGRkZG
RkZFKSk7CisgICAgUlVOKHRlc3RNdWxBcmdzMzIoMSwgMSkpOworICAgIFJVTih0ZXN0TXVsQXJn
czMyKDEsIDIpKTsKKyAgICBSVU4odGVzdE11bEFyZ3MzMigweEZGRkZGRkZGLCAweEZGRkZGRkZG
KSk7CisgICAgUlVOKHRlc3RNdWxBcmdzMzIoMHhGRkZGRkZGRSwgMHhGRkZGRkZGRikpOworICAg
IFJVTih0ZXN0TXVsQXJnczMyU2lnbkV4dGVuZCgxLCAxKSk7CisgICAgUlVOKHRlc3RNdWxBcmdz
MzJTaWduRXh0ZW5kKDEsIDIpKTsKKyAgICBSVU4odGVzdE11bEFyZ3MzMlNpZ25FeHRlbmQoMHhG
RkZGRkZGRiwgMHhGRkZGRkZGRikpOworICAgIFJVTih0ZXN0TXVsQXJnczMyU2lnbkV4dGVuZCgw
eEZGRkZGRkZFLCAweEZGRkZGRkZGKSk7CisgICAgUlVOKHRlc3RNdWxMb2FkVHdpY2UoKSk7Cisg
ICAgUlVOKHRlc3RNdWxBZGRBcmdzTGVmdCgpKTsKKyAgICBSVU4odGVzdE11bEFkZEFyZ3NSaWdo
dCgpKTsKKyAgICBSVU4odGVzdE11bEFkZEFyZ3NMZWZ0MzIoKSk7CisgICAgUlVOKHRlc3RNdWxB
ZGRBcmdzUmlnaHQzMigpKTsKKyAgICBSVU4odGVzdE11bFN1YkFyZ3NMZWZ0KCkpOworICAgIFJV
Tih0ZXN0TXVsU3ViQXJnc1JpZ2h0KCkpOworICAgIFJVTih0ZXN0TXVsU3ViQXJnc0xlZnQzMigp
KTsKKyAgICBSVU4odGVzdE11bFN1YkFyZ3NSaWdodDMyKCkpOworICAgIFJVTih0ZXN0TXVsTmVn
QXJncygpKTsKKyAgICBSVU4odGVzdE11bE5lZ0FyZ3MzMigpKTsKKworICAgIFJVTl9CSU5BUlko
dGVzdE11bEFyZ05lZ0FyZywgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpCisgICAg
UlVOX0JJTkFSWSh0ZXN0TXVsTmVnQXJnQXJnLCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFu
ZHMoKSkKKyAgICBSVU5fVU5BUlkodGVzdE11bEFyZ0RvdWJsZSwgZmxvYXRpbmdQb2ludE9wZXJh
bmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0TXVsQXJnc0RvdWJsZSwgZmxvYXRp
bmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4o
KSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0TXVsQXJnSW1tRG91YmxlLCBmbG9hdGluZ1BvaW50T3Bl
cmFuZHM8ZG91YmxlPigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBS
VU5fQklOQVJZKHRlc3RNdWxJbW1BcmdEb3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3Vi
bGU+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9CSU5BUlko
dGVzdE11bEltbXNEb3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCksIGZsb2F0
aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0TXVsQXJnRmxv
YXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0
TXVsQXJnc0Zsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9p
bnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0TXVsQXJnSW1tRmxvYXQs
IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZs
b2F0PigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RNdWxJbW1BcmdGbG9hdCwgZmxvYXRpbmdQb2lu
dE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAg
IFJVTl9CSU5BUlkodGVzdE11bEltbXNGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0
PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0
TXVsQXJnRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24sIGZsb2F0aW5nUG9pbnRPcGVy
YW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0TXVsQXJnc0Zsb2F0V2l0aFVzZWxl
c3NEb3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0
aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0TXVsQXJnc0Zs
b2F0V2l0aEVmZmVjdGZ1bERvdWJsZUNvbnZlcnNpb24sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxm
bG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKworICAgIFJVTih0ZXN0
RGl2QXJnRG91YmxlKE1fUEkpKTsKKyAgICBSVU4odGVzdERpdkFyZ3NEb3VibGUoTV9QSSwgMSkp
OworICAgIFJVTih0ZXN0RGl2QXJnc0RvdWJsZShNX1BJLCAtTV9QSSkpOworICAgIFJVTih0ZXN0
RGl2QXJnSW1tRG91YmxlKE1fUEksIDEpKTsKKyAgICBSVU4odGVzdERpdkFyZ0ltbURvdWJsZShN
X1BJLCAwKSk7CisgICAgUlVOKHRlc3REaXZBcmdJbW1Eb3VibGUoTV9QSSwgbmVnYXRpdmVaZXJv
KCkpKTsKKyAgICBSVU4odGVzdERpdkFyZ0ltbURvdWJsZSgwLCAwKSk7CisgICAgUlVOKHRlc3RE
aXZBcmdJbW1Eb3VibGUoMCwgbmVnYXRpdmVaZXJvKCkpKTsKKyAgICBSVU4odGVzdERpdkFyZ0lt
bURvdWJsZShuZWdhdGl2ZVplcm8oKSwgMCkpOworICAgIFJVTih0ZXN0RGl2QXJnSW1tRG91Ymxl
KG5lZ2F0aXZlWmVybygpLCBuZWdhdGl2ZVplcm8oKSkpOworICAgIFJVTih0ZXN0RGl2SW1tQXJn
RG91YmxlKE1fUEksIDEpKTsKKyAgICBSVU4odGVzdERpdkltbUFyZ0RvdWJsZShNX1BJLCAwKSk7
CisgICAgUlVOKHRlc3REaXZJbW1BcmdEb3VibGUoTV9QSSwgbmVnYXRpdmVaZXJvKCkpKTsKKyAg
ICBSVU4odGVzdERpdkltbUFyZ0RvdWJsZSgwLCAwKSk7CisgICAgUlVOKHRlc3REaXZJbW1BcmdE
b3VibGUoMCwgbmVnYXRpdmVaZXJvKCkpKTsKKyAgICBSVU4odGVzdERpdkltbUFyZ0RvdWJsZShu
ZWdhdGl2ZVplcm8oKSwgMCkpOworICAgIFJVTih0ZXN0RGl2SW1tQXJnRG91YmxlKG5lZ2F0aXZl
WmVybygpLCBuZWdhdGl2ZVplcm8oKSkpOworICAgIFJVTih0ZXN0RGl2SW1tc0RvdWJsZShNX1BJ
LCAxKSk7CisgICAgUlVOKHRlc3REaXZJbW1zRG91YmxlKE1fUEksIDApKTsKKyAgICBSVU4odGVz
dERpdkltbXNEb3VibGUoTV9QSSwgbmVnYXRpdmVaZXJvKCkpKTsKKyAgICBSVU4odGVzdERpdklt
bXNEb3VibGUoMCwgMCkpOworICAgIFJVTih0ZXN0RGl2SW1tc0RvdWJsZSgwLCBuZWdhdGl2ZVpl
cm8oKSkpOworICAgIFJVTih0ZXN0RGl2SW1tc0RvdWJsZShuZWdhdGl2ZVplcm8oKSwgbmVnYXRp
dmVaZXJvKCkpKTsKKyAgICBSVU5fVU5BUlkodGVzdERpdkFyZ0Zsb2F0LCBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdERpdkFyZ3NGbG9hdCwgZmxv
YXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+
KCkpOworICAgIFJVTl9CSU5BUlkodGVzdERpdkFyZ0ltbUZsb2F0LCBmbG9hdGluZ1BvaW50T3Bl
cmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVO
X0JJTkFSWSh0ZXN0RGl2SW1tQXJnRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4o
KSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RE
aXZJbW1zRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2lu
dE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fVU5BUlkodGVzdERpdkFyZ0Zsb2F0V2l0aFVz
ZWxlc3NEb3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwor
ICAgIFJVTl9CSU5BUlkodGVzdERpdkFyZ3NGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lv
biwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8
ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdERpdkFyZ3NGbG9hdFdpdGhFZmZlY3RmdWxE
b3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5n
UG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisKKyAgICBSVU5fQklOQVJZKHRlc3RVRGl2QXJnc0lu
dDMyLCBpbnQzMk9wZXJhbmRzKCksIGludDMyT3BlcmFuZHMoKSk7CisgICAgUlVOX0JJTkFSWSh0
ZXN0VURpdkFyZ3NJbnQ2NCwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOworCisg
ICAgUlVOX1VOQVJZKHRlc3RNb2RBcmdEb3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3Vi
bGU+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdE1vZEFyZ3NEb3VibGUsIGZsb2F0aW5nUG9pbnRP
cGVyYW5kczxkb3VibGU+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAg
IFJVTl9CSU5BUlkodGVzdE1vZEFyZ0ltbURvdWJsZSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRv
dWJsZT4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX0JJTkFS
WSh0ZXN0TW9kSW1tQXJnRG91YmxlLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpLCBm
bG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RNb2RJ
bW1zRG91YmxlLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpLCBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fVU5BUlkodGVzdE1vZEFyZ0Zsb2F0LCBmbG9h
dGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdE1vZEFyZ3NG
bG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFu
ZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdE1vZEFyZ0ltbUZsb2F0LCBmbG9hdGlu
Z1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7
CisgICAgUlVOX0JJTkFSWSh0ZXN0TW9kSW1tQXJnRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5k
czxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fQklO
QVJZKHRlc3RNb2RJbW1zRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxv
YXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKworICAgIFJVTl9CSU5BUlkodGVzdFVNb2RB
cmdzSW50MzIsIGludDMyT3BlcmFuZHMoKSwgaW50MzJPcGVyYW5kcygpKTsKKyAgICBSVU5fQklO
QVJZKHRlc3RVTW9kQXJnc0ludDY0LCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSk7
CisKKyAgICBSVU4odGVzdFN1YkFyZygyNCkpOworICAgIFJVTih0ZXN0U3ViQXJncygxLCAxKSk7
CisgICAgUlVOKHRlc3RTdWJBcmdzKDEsIDIpKTsKKyAgICBSVU4odGVzdFN1YkFyZ3MoMTMsIC00
MikpOworICAgIFJVTih0ZXN0U3ViQXJncygtMTMsIDQyKSk7CisgICAgUlVOKHRlc3RTdWJBcmdJ
bW0oMSwgMSkpOworICAgIFJVTih0ZXN0U3ViQXJnSW1tKDEsIDIpKTsKKyAgICBSVU4odGVzdFN1
YkFyZ0ltbSgxMywgLTQyKSk7CisgICAgUlVOKHRlc3RTdWJBcmdJbW0oLTEzLCA0MikpOworICAg
IFJVTih0ZXN0U3ViQXJnSW1tKDQyLCAwKSk7CisgICAgUlVOKHRlc3RTdWJJbW1BcmcoMSwgMSkp
OworICAgIFJVTih0ZXN0U3ViSW1tQXJnKDEsIDIpKTsKKyAgICBSVU4odGVzdFN1YkltbUFyZygx
MywgLTQyKSk7CisgICAgUlVOKHRlc3RTdWJJbW1BcmcoLTEzLCA0MikpOworICAgIFJVTl9CSU5B
UlkodGVzdFN1YkFyZ01lbSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOworICAg
IFJVTl9CSU5BUlkodGVzdFN1Yk1lbUFyZywgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRz
KCkpOworICAgIFJVTl9CSU5BUlkodGVzdFN1YkltbU1lbSwgaW50MzJPcGVyYW5kcygpLCBpbnQz
Mk9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlkodGVzdFN1Yk1lbUltbSwgaW50MzJPcGVyYW5k
cygpLCBpbnQzMk9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlkodGVzdFN1Yk5lZywgaW50MzJP
cGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlkodGVzdE5lZ1N1Yiwg
aW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkpOworICAgIFJVTl9VTkFSWSh0ZXN0TmVn
VmFsdWVTdWJPbmUsIGludDMyT3BlcmFuZHMoKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0TmVnTXVs
QXJnSW1tLCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSk7CisgICAgUlVOX1RFUk5B
UlkodGVzdFN1Yk11bE11bEFyZ3MsIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpLCBp
bnQ2NE9wZXJhbmRzKCkpOworCisgICAgUlVOX1RFUk5BUlkodGVzdFN1YlN1YiwgaW50MzJPcGVy
YW5kcygpLCBpbnQzMk9wZXJhbmRzKCksIGludDMyT3BlcmFuZHMoKSk7CisgICAgUlVOX1RFUk5B
UlkodGVzdFN1YlN1YjIsIGludDMyT3BlcmFuZHMoKSwgaW50MzJPcGVyYW5kcygpLCBpbnQzMk9w
ZXJhbmRzKCkpOworICAgIFJVTl9URVJOQVJZKHRlc3RTdWJBZGQsIGludDMyT3BlcmFuZHMoKSwg
aW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlkodGVzdFN1
YkZpcnN0TmVnLCBpbnQzMk9wZXJhbmRzKCksIGludDMyT3BlcmFuZHMoKSk7CisKKyAgICBSVU4o
dGVzdFN1YkFyZ3MzMigxLCAxKSk7CisgICAgUlVOKHRlc3RTdWJBcmdzMzIoMSwgMikpOworICAg
IFJVTih0ZXN0U3ViQXJnczMyKDEzLCAtNDIpKTsKKyAgICBSVU4odGVzdFN1YkFyZ3MzMigtMTMs
IDQyKSk7CisgICAgUlVOKHRlc3RTdWJBcmdJbW0zMigxLCAxKSk7CisgICAgUlVOKHRlc3RTdWJB
cmdJbW0zMigxLCAyKSk7CisgICAgUlVOKHRlc3RTdWJBcmdJbW0zMigxMywgLTQyKSk7CisgICAg
UlVOKHRlc3RTdWJBcmdJbW0zMigtMTMsIDQyKSk7CisgICAgUlVOKHRlc3RTdWJJbW1BcmczMigx
LCAxKSk7CisgICAgUlVOKHRlc3RTdWJJbW1BcmczMigxLCAyKSk7CisgICAgUlVOKHRlc3RTdWJJ
bW1BcmczMigxMywgLTQyKSk7CisgICAgUlVOKHRlc3RTdWJJbW1BcmczMigtMTMsIDQyKSk7Cisg
ICAgUlVOX0JJTkFSWSh0ZXN0U3ViQXJnTWVtMzIsIGludDMyT3BlcmFuZHMoKSwgaW50MzJPcGVy
YW5kcygpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RTdWJNZW1BcmczMiwgaW50MzJPcGVyYW5kcygp
LCBpbnQzMk9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlkodGVzdFN1YkltbU1lbTMyLCBpbnQz
Mk9wZXJhbmRzKCksIGludDMyT3BlcmFuZHMoKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0U3ViTWVt
SW1tMzIsIGludDMyT3BlcmFuZHMoKSwgaW50MzJPcGVyYW5kcygpKTsKKyAgICBSVU5fVU5BUlko
dGVzdE5lZ1ZhbHVlU3ViT25lMzIsIGludDY0T3BlcmFuZHMoKSk7CisKKyAgICBSVU5fVU5BUlko
dGVzdFN1YkFyZ0RvdWJsZSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAg
UlVOX0JJTkFSWSh0ZXN0U3ViQXJnc0RvdWJsZSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJs
ZT4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX0JJTkFSWSh0
ZXN0U3ViQXJnSW1tRG91YmxlLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpLCBmbG9h
dGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RTdWJJbW1B
cmdEb3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCksIGZsb2F0aW5nUG9pbnRP
cGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdFN1YkltbXNEb3VibGUsIGZs
b2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3Vi
bGU+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0U3ViQXJnRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVy
YW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0U3ViQXJnc0Zsb2F0LCBmbG9hdGlu
Z1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7
CisgICAgUlVOX0JJTkFSWSh0ZXN0U3ViQXJnSW1tRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5k
czxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fQklO
QVJZKHRlc3RTdWJJbW1BcmdGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBm
bG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdFN1Yklt
bXNGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3Bl
cmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0U3ViQXJnRmxvYXRXaXRoVXNlbGVz
c0RvdWJsZUNvbnZlcnNpb24sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAg
UlVOX0JJTkFSWSh0ZXN0U3ViQXJnc0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uLCBm
bG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9h
dD4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0U3ViQXJnc0Zsb2F0V2l0aEVmZmVjdGZ1bERvdWJs
ZUNvbnZlcnNpb24sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2lu
dE9wZXJhbmRzPGZsb2F0PigpKTsKKworICAgIFJVTl9VTkFSWSh0ZXN0TmVnRG91YmxlLCBmbG9h
dGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fVU5BUlkodGVzdE5lZ0Zsb2F0
LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0TmVn
RmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxm
bG9hdD4oKSk7CisKKyAgICBSVU4odGVzdEJpdEFuZEFyZ3MoNDMsIDQzKSk7CisgICAgUlVOKHRl
c3RCaXRBbmRBcmdzKDQzLCAwKSk7CisgICAgUlVOKHRlc3RCaXRBbmRBcmdzKDEwLCAzKSk7Cisg
ICAgUlVOKHRlc3RCaXRBbmRBcmdzKDQyLCAweGZmZmZmZmZmZmZmZmZmZmYpKTsKKyAgICBSVU4o
dGVzdEJpdEFuZFNhbWVBcmcoNDMpKTsKKyAgICBSVU4odGVzdEJpdEFuZFNhbWVBcmcoMCkpOwor
ICAgIFJVTih0ZXN0Qml0QW5kU2FtZUFyZygzKSk7CisgICAgUlVOKHRlc3RCaXRBbmRTYW1lQXJn
KDB4ZmZmZmZmZmZmZmZmZmZmZikpOworICAgIFJVTih0ZXN0Qml0QW5kSW1tcyg0MywgNDMpKTsK
KyAgICBSVU4odGVzdEJpdEFuZEltbXMoNDMsIDApKTsKKyAgICBSVU4odGVzdEJpdEFuZEltbXMo
MTAsIDMpKTsKKyAgICBSVU4odGVzdEJpdEFuZEltbXMoNDIsIDB4ZmZmZmZmZmZmZmZmZmZmZikp
OworICAgIFJVTih0ZXN0Qml0QW5kQXJnSW1tKDQzLCA0MykpOworICAgIFJVTih0ZXN0Qml0QW5k
QXJnSW1tKDQzLCAwKSk7CisgICAgUlVOKHRlc3RCaXRBbmRBcmdJbW0oMTAsIDMpKTsKKyAgICBS
VU4odGVzdEJpdEFuZEFyZ0ltbSg0MiwgMHhmZmZmZmZmZmZmZmZmZmZmKSk7CisgICAgUlVOKHRl
c3RCaXRBbmRBcmdJbW0oNDIsIDB4ZmYpKTsKKyAgICBSVU4odGVzdEJpdEFuZEFyZ0ltbSgzMDAs
IDB4ZmYpKTsKKyAgICBSVU4odGVzdEJpdEFuZEFyZ0ltbSgtMzAwLCAweGZmKSk7CisgICAgUlVO
KHRlc3RCaXRBbmRBcmdJbW0oNDIsIDB4ZmZmZikpOworICAgIFJVTih0ZXN0Qml0QW5kQXJnSW1t
KDQwMDAwLCAweGZmZmYpKTsKKyAgICBSVU4odGVzdEJpdEFuZEFyZ0ltbSgtNDAwMDAsIDB4ZmZm
ZikpOworICAgIFJVTih0ZXN0Qml0QW5kSW1tQXJnKDQzLCA0MykpOworICAgIFJVTih0ZXN0Qml0
QW5kSW1tQXJnKDQzLCAwKSk7CisgICAgUlVOKHRlc3RCaXRBbmRJbW1BcmcoMTAsIDMpKTsKKyAg
ICBSVU4odGVzdEJpdEFuZEltbUFyZyg0MiwgMHhmZmZmZmZmZmZmZmZmZmZmKSk7CisgICAgUlVO
KHRlc3RCaXRBbmRCaXRBbmRBcmdJbW1JbW0oMiwgNywgMykpOworICAgIFJVTih0ZXN0Qml0QW5k
Qml0QW5kQXJnSW1tSW1tKDEsIDYsIDYpKTsKKyAgICBSVU4odGVzdEJpdEFuZEJpdEFuZEFyZ0lt
bUltbSgweGZmZmYsIDI0LCA3KSk7CisgICAgUlVOKHRlc3RCaXRBbmRJbW1CaXRBbmRBcmdJbW0o
NywgMiwgMykpOworICAgIFJVTih0ZXN0Qml0QW5kSW1tQml0QW5kQXJnSW1tKDYsIDEsIDYpKTsK
KyAgICBSVU4odGVzdEJpdEFuZEltbUJpdEFuZEFyZ0ltbSgyNCwgMHhmZmZmLCA3KSk7CisgICAg
UlVOKHRlc3RCaXRBbmRBcmdzMzIoNDMsIDQzKSk7CisgICAgUlVOKHRlc3RCaXRBbmRBcmdzMzIo
NDMsIDApKTsKKyAgICBSVU4odGVzdEJpdEFuZEFyZ3MzMigxMCwgMykpOworICAgIFJVTih0ZXN0
Qml0QW5kQXJnczMyKDQyLCAweGZmZmZmZmZmKSk7CisgICAgUlVOKHRlc3RCaXRBbmRTYW1lQXJn
MzIoNDMpKTsKKyAgICBSVU4odGVzdEJpdEFuZFNhbWVBcmczMigwKSk7CisgICAgUlVOKHRlc3RC
aXRBbmRTYW1lQXJnMzIoMykpOworICAgIFJVTih0ZXN0Qml0QW5kU2FtZUFyZzMyKDB4ZmZmZmZm
ZmYpKTsKKyAgICBSVU4odGVzdEJpdEFuZEltbXMzMig0MywgNDMpKTsKKyAgICBSVU4odGVzdEJp
dEFuZEltbXMzMig0MywgMCkpOworICAgIFJVTih0ZXN0Qml0QW5kSW1tczMyKDEwLCAzKSk7Cisg
ICAgUlVOKHRlc3RCaXRBbmRJbW1zMzIoNDIsIDB4ZmZmZmZmZmYpKTsKKyAgICBSVU4odGVzdEJp
dEFuZEFyZ0ltbTMyKDQzLCA0MykpOworICAgIFJVTih0ZXN0Qml0QW5kQXJnSW1tMzIoNDMsIDAp
KTsKKyAgICBSVU4odGVzdEJpdEFuZEFyZ0ltbTMyKDEwLCAzKSk7CisgICAgUlVOKHRlc3RCaXRB
bmRBcmdJbW0zMig0MiwgMHhmZmZmZmZmZikpOworICAgIFJVTih0ZXN0Qml0QW5kSW1tQXJnMzIo
NDMsIDQzKSk7CisgICAgUlVOKHRlc3RCaXRBbmRJbW1BcmczMig0MywgMCkpOworICAgIFJVTih0
ZXN0Qml0QW5kSW1tQXJnMzIoMTAsIDMpKTsKKyAgICBSVU4odGVzdEJpdEFuZEltbUFyZzMyKDQy
LCAweGZmZmZmZmZmKSk7CisgICAgUlVOKHRlc3RCaXRBbmRJbW1BcmczMig0MiwgMHhmZikpOwor
ICAgIFJVTih0ZXN0Qml0QW5kSW1tQXJnMzIoMzAwLCAweGZmKSk7CisgICAgUlVOKHRlc3RCaXRB
bmRJbW1BcmczMigtMzAwLCAweGZmKSk7CisgICAgUlVOKHRlc3RCaXRBbmRJbW1BcmczMig0Miwg
MHhmZmZmKSk7CisgICAgUlVOKHRlc3RCaXRBbmRJbW1BcmczMig0MDAwMCwgMHhmZmZmKSk7Cisg
ICAgUlVOKHRlc3RCaXRBbmRJbW1BcmczMigtNDAwMDAsIDB4ZmZmZikpOworICAgIFJVTih0ZXN0
Qml0QW5kQml0QW5kQXJnSW1tSW1tMzIoMiwgNywgMykpOworICAgIFJVTih0ZXN0Qml0QW5kQml0
QW5kQXJnSW1tSW1tMzIoMSwgNiwgNikpOworICAgIFJVTih0ZXN0Qml0QW5kQml0QW5kQXJnSW1t
SW1tMzIoMHhmZmZmLCAyNCwgNykpOworICAgIFJVTih0ZXN0Qml0QW5kSW1tQml0QW5kQXJnSW1t
MzIoNywgMiwgMykpOworICAgIFJVTih0ZXN0Qml0QW5kSW1tQml0QW5kQXJnSW1tMzIoNiwgMSwg
NikpOworICAgIFJVTih0ZXN0Qml0QW5kSW1tQml0QW5kQXJnSW1tMzIoMjQsIDB4ZmZmZiwgNykp
OworICAgIFJVTl9CSU5BUlkodGVzdEJpdEFuZFdpdGhNYXNrUmV0dXJuc0Jvb2xlYW5zLCBpbnQ2
NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSk7CisgICAgUlVOX1VOQVJZKHRlc3RCaXRBbmRB
cmdEb3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9CSU5B
UlkodGVzdEJpdEFuZEFyZ3NEb3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCks
IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdEJp
dEFuZEFyZ0ltbURvdWJsZSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSwgZmxvYXRp
bmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0Qml0QW5kSW1t
c0RvdWJsZSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSwgZmxvYXRpbmdQb2ludE9w
ZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RCaXRBbmRBcmdGbG9hdCwgZmxv
YXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RCaXRBbmRB
cmdzRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9w
ZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RCaXRBbmRBcmdJbW1GbG9hdCwg
ZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8Zmxv
YXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdEJpdEFuZEltbXNGbG9hdCwgZmxvYXRpbmdQb2lu
dE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAg
IFJVTl9CSU5BUlkodGVzdEJpdEFuZEFyZ3NGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lv
biwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8
ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdEJpdEFuZE5vdE5vdCwgaW50NjRPcGVyYW5k
cygpLCBpbnQ2NE9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlkodGVzdEJpdEFuZE5vdEltbSwg
aW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOworCisgICAgUlVOKHRlc3RCaXRPckFy
Z3MoNDMsIDQzKSk7CisgICAgUlVOKHRlc3RCaXRPckFyZ3MoNDMsIDApKTsKKyAgICBSVU4odGVz
dEJpdE9yQXJncygxMCwgMykpOworICAgIFJVTih0ZXN0Qml0T3JBcmdzKDQyLCAweGZmZmZmZmZm
ZmZmZmZmZmYpKTsKKyAgICBSVU4odGVzdEJpdE9yU2FtZUFyZyg0MykpOworICAgIFJVTih0ZXN0
Qml0T3JTYW1lQXJnKDApKTsKKyAgICBSVU4odGVzdEJpdE9yU2FtZUFyZygzKSk7CisgICAgUlVO
KHRlc3RCaXRPclNhbWVBcmcoMHhmZmZmZmZmZmZmZmZmZmZmKSk7CisgICAgUlVOKHRlc3RCaXRP
ckltbXMoNDMsIDQzKSk7CisgICAgUlVOKHRlc3RCaXRPckltbXMoNDMsIDApKTsKKyAgICBSVU4o
dGVzdEJpdE9ySW1tcygxMCwgMykpOworICAgIFJVTih0ZXN0Qml0T3JJbW1zKDQyLCAweGZmZmZm
ZmZmZmZmZmZmZmYpKTsKKyAgICBSVU4odGVzdEJpdE9yQXJnSW1tKDQzLCA0MykpOworICAgIFJV
Tih0ZXN0Qml0T3JBcmdJbW0oNDMsIDApKTsKKyAgICBSVU4odGVzdEJpdE9yQXJnSW1tKDEwLCAz
KSk7CisgICAgUlVOKHRlc3RCaXRPckFyZ0ltbSg0MiwgMHhmZmZmZmZmZmZmZmZmZmZmKSk7Cisg
ICAgUlVOKHRlc3RCaXRPckltbUFyZyg0MywgNDMpKTsKKyAgICBSVU4odGVzdEJpdE9ySW1tQXJn
KDQzLCAwKSk7CisgICAgUlVOKHRlc3RCaXRPckltbUFyZygxMCwgMykpOworICAgIFJVTih0ZXN0
Qml0T3JJbW1BcmcoNDIsIDB4ZmZmZmZmZmZmZmZmZmZmZikpOworICAgIFJVTih0ZXN0Qml0T3JC
aXRPckFyZ0ltbUltbSgyLCA3LCAzKSk7CisgICAgUlVOKHRlc3RCaXRPckJpdE9yQXJnSW1tSW1t
KDEsIDYsIDYpKTsKKyAgICBSVU4odGVzdEJpdE9yQml0T3JBcmdJbW1JbW0oMHhmZmZmLCAyNCwg
NykpOworICAgIFJVTih0ZXN0Qml0T3JJbW1CaXRPckFyZ0ltbSg3LCAyLCAzKSk7CisgICAgUlVO
KHRlc3RCaXRPckltbUJpdE9yQXJnSW1tKDYsIDEsIDYpKTsKKyAgICBSVU4odGVzdEJpdE9ySW1t
Qml0T3JBcmdJbW0oMjQsIDB4ZmZmZiwgNykpOworICAgIFJVTih0ZXN0Qml0T3JBcmdzMzIoNDMs
IDQzKSk7CisgICAgUlVOKHRlc3RCaXRPckFyZ3MzMig0MywgMCkpOworICAgIFJVTih0ZXN0Qml0
T3JBcmdzMzIoMTAsIDMpKTsKKyAgICBSVU4odGVzdEJpdE9yQXJnczMyKDQyLCAweGZmZmZmZmZm
KSk7CisgICAgUlVOKHRlc3RCaXRPclNhbWVBcmczMig0MykpOworICAgIFJVTih0ZXN0Qml0T3JT
YW1lQXJnMzIoMCkpOworICAgIFJVTih0ZXN0Qml0T3JTYW1lQXJnMzIoMykpOworICAgIFJVTih0
ZXN0Qml0T3JTYW1lQXJnMzIoMHhmZmZmZmZmZikpOworICAgIFJVTih0ZXN0Qml0T3JJbW1zMzIo
NDMsIDQzKSk7CisgICAgUlVOKHRlc3RCaXRPckltbXMzMig0MywgMCkpOworICAgIFJVTih0ZXN0
Qml0T3JJbW1zMzIoMTAsIDMpKTsKKyAgICBSVU4odGVzdEJpdE9ySW1tczMyKDQyLCAweGZmZmZm
ZmZmKSk7CisgICAgUlVOKHRlc3RCaXRPckFyZ0ltbTMyKDQzLCA0MykpOworICAgIFJVTih0ZXN0
Qml0T3JBcmdJbW0zMig0MywgMCkpOworICAgIFJVTih0ZXN0Qml0T3JBcmdJbW0zMigxMCwgMykp
OworICAgIFJVTih0ZXN0Qml0T3JBcmdJbW0zMig0MiwgMHhmZmZmZmZmZikpOworICAgIFJVTih0
ZXN0Qml0T3JJbW1BcmczMig0MywgNDMpKTsKKyAgICBSVU4odGVzdEJpdE9ySW1tQXJnMzIoNDMs
IDApKTsKKyAgICBSVU4odGVzdEJpdE9ySW1tQXJnMzIoMTAsIDMpKTsKKyAgICBSVU4odGVzdEJp
dE9ySW1tQXJnMzIoNDIsIDB4ZmZmZmZmZmYpKTsKKyAgICBSVU4odGVzdEJpdE9yQml0T3JBcmdJ
bW1JbW0zMigyLCA3LCAzKSk7CisgICAgUlVOKHRlc3RCaXRPckJpdE9yQXJnSW1tSW1tMzIoMSwg
NiwgNikpOworICAgIFJVTih0ZXN0Qml0T3JCaXRPckFyZ0ltbUltbTMyKDB4ZmZmZiwgMjQsIDcp
KTsKKyAgICBSVU4odGVzdEJpdE9ySW1tQml0T3JBcmdJbW0zMig3LCAyLCAzKSk7CisgICAgUlVO
KHRlc3RCaXRPckltbUJpdE9yQXJnSW1tMzIoNiwgMSwgNikpOworICAgIFJVTih0ZXN0Qml0T3JJ
bW1CaXRPckFyZ0ltbTMyKDI0LCAweGZmZmYsIDcpKTsKKyAgICBSVU5fVU5BUlkodGVzdEJpdE9y
QXJnRG91YmxlLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fQklO
QVJZKHRlc3RCaXRPckFyZ3NEb3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCks
IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdEJp
dE9yQXJnSW1tRG91YmxlLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpLCBmbG9hdGlu
Z1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RCaXRPckltbXNE
b3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCksIGZsb2F0aW5nUG9pbnRPcGVy
YW5kczxkb3VibGU+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Qml0T3JBcmdGbG9hdCwgZmxvYXRp
bmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RCaXRPckFyZ3NG
bG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFu
ZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdEJpdE9yQXJnSW1tRmxvYXQsIGZsb2F0
aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0Pigp
KTsKKyAgICBSVU5fQklOQVJZKHRlc3RCaXRPckltbXNGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJh
bmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9C
SU5BUlkodGVzdEJpdE9yQXJnc0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uLCBmbG9h
dGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4o
KSk7CisgICAgUlVOX1RFUk5BUlkodGVzdEJpdE9yQW5kQW5kQXJncywgaW50NjRPcGVyYW5kcygp
LCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0
Qml0T3JBbmRTYW1lQXJncywgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOworICAg
IFJVTl9CSU5BUlkodGVzdEJpdE9yTm90Tm90LCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFu
ZHMoKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0Qml0T3JOb3RJbW0sIGludDY0T3BlcmFuZHMoKSwg
aW50NjRPcGVyYW5kcygpKTsKKworICAgIFJVTl9CSU5BUlkodGVzdEJpdFhvckFyZ3MsIGludDY0
T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKKyAgICBSVU5fVU5BUlkodGVzdEJpdFhvclNh
bWVBcmcsIGludDY0T3BlcmFuZHMoKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0Qml0WG9ySW1tcywg
aW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlkodGVzdEJp
dFhvckFyZ0ltbSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOworICAgIFJVTl9C
SU5BUlkodGVzdEJpdFhvckltbUFyZywgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkp
OworICAgIFJVTih0ZXN0Qml0WG9yQml0WG9yQXJnSW1tSW1tKDIsIDcsIDMpKTsKKyAgICBSVU4o
dGVzdEJpdFhvckJpdFhvckFyZ0ltbUltbSgxLCA2LCA2KSk7CisgICAgUlVOKHRlc3RCaXRYb3JC
aXRYb3JBcmdJbW1JbW0oMHhmZmZmLCAyNCwgNykpOworICAgIFJVTih0ZXN0Qml0WG9ySW1tQml0
WG9yQXJnSW1tKDcsIDIsIDMpKTsKKyAgICBSVU4odGVzdEJpdFhvckltbUJpdFhvckFyZ0ltbSg2
LCAxLCA2KSk7CisgICAgUlVOKHRlc3RCaXRYb3JJbW1CaXRYb3JBcmdJbW0oMjQsIDB4ZmZmZiwg
NykpOworICAgIFJVTih0ZXN0Qml0WG9yQXJnczMyKDQzLCA0MykpOworICAgIFJVTih0ZXN0Qml0
WG9yQXJnczMyKDQzLCAwKSk7CisgICAgUlVOKHRlc3RCaXRYb3JBcmdzMzIoMTAsIDMpKTsKKyAg
ICBSVU4odGVzdEJpdFhvckFyZ3MzMig0MiwgMHhmZmZmZmZmZikpOworICAgIFJVTih0ZXN0Qml0
WG9yU2FtZUFyZzMyKDQzKSk7CisgICAgUlVOKHRlc3RCaXRYb3JTYW1lQXJnMzIoMCkpOworICAg
IFJVTih0ZXN0Qml0WG9yU2FtZUFyZzMyKDMpKTsKKyAgICBSVU4odGVzdEJpdFhvclNhbWVBcmcz
MigweGZmZmZmZmZmKSk7CisgICAgUlVOKHRlc3RCaXRYb3JJbW1zMzIoNDMsIDQzKSk7CisgICAg
UlVOKHRlc3RCaXRYb3JJbW1zMzIoNDMsIDApKTsKKyAgICBSVU4odGVzdEJpdFhvckltbXMzMigx
MCwgMykpOworICAgIFJVTih0ZXN0Qml0WG9ySW1tczMyKDQyLCAweGZmZmZmZmZmKSk7CisgICAg
UlVOKHRlc3RCaXRYb3JBcmdJbW0zMig0MywgNDMpKTsKKyAgICBSVU4odGVzdEJpdFhvckFyZ0lt
bTMyKDQzLCAwKSk7CisgICAgUlVOKHRlc3RCaXRYb3JBcmdJbW0zMigxMCwgMykpOworICAgIFJV
Tih0ZXN0Qml0WG9yQXJnSW1tMzIoNDIsIDB4ZmZmZmZmZmYpKTsKKyAgICBSVU4odGVzdEJpdFhv
ckltbUFyZzMyKDQzLCA0MykpOworICAgIFJVTih0ZXN0Qml0WG9ySW1tQXJnMzIoNDMsIDApKTsK
KyAgICBSVU4odGVzdEJpdFhvckltbUFyZzMyKDEwLCAzKSk7CisgICAgUlVOKHRlc3RCaXRYb3JJ
bW1BcmczMig0MiwgMHhmZmZmZmZmZikpOworICAgIFJVTih0ZXN0Qml0WG9yQml0WG9yQXJnSW1t
SW1tMzIoMiwgNywgMykpOworICAgIFJVTih0ZXN0Qml0WG9yQml0WG9yQXJnSW1tSW1tMzIoMSwg
NiwgNikpOworICAgIFJVTih0ZXN0Qml0WG9yQml0WG9yQXJnSW1tSW1tMzIoMHhmZmZmLCAyNCwg
NykpOworICAgIFJVTih0ZXN0Qml0WG9ySW1tQml0WG9yQXJnSW1tMzIoNywgMiwgMykpOworICAg
IFJVTih0ZXN0Qml0WG9ySW1tQml0WG9yQXJnSW1tMzIoNiwgMSwgNikpOworICAgIFJVTih0ZXN0
Qml0WG9ySW1tQml0WG9yQXJnSW1tMzIoMjQsIDB4ZmZmZiwgNykpOworICAgIFJVTl9URVJOQVJZ
KHRlc3RCaXRYb3JBbmRBbmRBcmdzLCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSwg
aW50NjRPcGVyYW5kcygpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RCaXRYb3JBbmRTYW1lQXJncywg
aW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOworCisgICAgUlVOX1VOQVJZKHRlc3RC
aXROb3RBcmcsIGludDY0T3BlcmFuZHMoKSk7CisgICAgUlVOX1VOQVJZKHRlc3RCaXROb3RJbW0s
IGludDY0T3BlcmFuZHMoKSk7CisgICAgUlVOX1VOQVJZKHRlc3RCaXROb3RNZW0sIGludDY0T3Bl
cmFuZHMoKSk7CisgICAgUlVOX1VOQVJZKHRlc3RCaXROb3RBcmczMiwgaW50MzJPcGVyYW5kcygp
KTsKKyAgICBSVU5fVU5BUlkodGVzdEJpdE5vdEltbTMyLCBpbnQzMk9wZXJhbmRzKCkpOworICAg
IFJVTl9VTkFSWSh0ZXN0Qml0Tm90TWVtMzIsIGludDMyT3BlcmFuZHMoKSk7CisgICAgUlVOX0JJ
TkFSWSh0ZXN0Tm90T25Cb29sZWFuQW5kQnJhbmNoMzIsIGludDMyT3BlcmFuZHMoKSwgaW50MzJP
cGVyYW5kcygpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RCaXROb3RPbkJvb2xlYW5BbmRCcmFuY2gz
MiwgaW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkpOworCisgICAgUlVOKHRlc3RTaGxB
cmdzKDEsIDApKTsKKyAgICBSVU4odGVzdFNobEFyZ3MoMSwgMSkpOworICAgIFJVTih0ZXN0U2hs
QXJncygxLCA2MikpOworICAgIFJVTih0ZXN0U2hsQXJncygweGZmZmZmZmZmZmZmZmZmZmYsIDAp
KTsKKyAgICBSVU4odGVzdFNobEFyZ3MoMHhmZmZmZmZmZmZmZmZmZmZmLCAxKSk7CisgICAgUlVO
KHRlc3RTaGxBcmdzKDB4ZmZmZmZmZmZmZmZmZmZmZiwgNjMpKTsKKyAgICBSVU4odGVzdFNobElt
bXMoMSwgMCkpOworICAgIFJVTih0ZXN0U2hsSW1tcygxLCAxKSk7CisgICAgUlVOKHRlc3RTaGxJ
bW1zKDEsIDYyKSk7CisgICAgUlVOKHRlc3RTaGxJbW1zKDEsIDY1KSk7CisgICAgUlVOKHRlc3RT
aGxJbW1zKDB4ZmZmZmZmZmZmZmZmZmZmZiwgMCkpOworICAgIFJVTih0ZXN0U2hsSW1tcygweGZm
ZmZmZmZmZmZmZmZmZmYsIDEpKTsKKyAgICBSVU4odGVzdFNobEltbXMoMHhmZmZmZmZmZmZmZmZm
ZmZmLCA2MykpOworICAgIFJVTih0ZXN0U2hsQXJnSW1tKDEsIDApKTsKKyAgICBSVU4odGVzdFNo
bEFyZ0ltbSgxLCAxKSk7CisgICAgUlVOKHRlc3RTaGxBcmdJbW0oMSwgNjIpKTsKKyAgICBSVU4o
dGVzdFNobEFyZ0ltbSgxLCA2NSkpOworICAgIFJVTih0ZXN0U2hsQXJnSW1tKDB4ZmZmZmZmZmZm
ZmZmZmZmZiwgMCkpOworICAgIFJVTih0ZXN0U2hsQXJnSW1tKDB4ZmZmZmZmZmZmZmZmZmZmZiwg
MSkpOworICAgIFJVTih0ZXN0U2hsQXJnSW1tKDB4ZmZmZmZmZmZmZmZmZmZmZiwgNjMpKTsKKyAg
ICBSVU4odGVzdFNobFNTaHJBcmdJbW0oMSwgMCkpOworICAgIFJVTih0ZXN0U2hsU1NockFyZ0lt
bSgxLCAxKSk7CisgICAgUlVOKHRlc3RTaGxTU2hyQXJnSW1tKDEsIDYyKSk7CisgICAgUlVOKHRl
c3RTaGxTU2hyQXJnSW1tKDEsIDY1KSk7CisgICAgUlVOKHRlc3RTaGxTU2hyQXJnSW1tKDB4ZmZm
ZmZmZmZmZmZmZmZmZiwgMCkpOworICAgIFJVTih0ZXN0U2hsU1NockFyZ0ltbSgweGZmZmZmZmZm
ZmZmZmZmZmYsIDEpKTsKKyAgICBSVU4odGVzdFNobFNTaHJBcmdJbW0oMHhmZmZmZmZmZmZmZmZm
ZmZmLCA2MykpOworICAgIFJVTih0ZXN0U2hsQXJnMzIoMikpOworICAgIFJVTih0ZXN0U2hsQXJn
czMyKDEsIDApKTsKKyAgICBSVU4odGVzdFNobEFyZ3MzMigxLCAxKSk7CisgICAgUlVOKHRlc3RT
aGxBcmdzMzIoMSwgNjIpKTsKKyAgICBSVU4odGVzdFNobEltbXMzMigxLCAzMykpOworICAgIFJV
Tih0ZXN0U2hsQXJnczMyKDB4ZmZmZmZmZmYsIDApKTsKKyAgICBSVU4odGVzdFNobEFyZ3MzMigw
eGZmZmZmZmZmLCAxKSk7CisgICAgUlVOKHRlc3RTaGxBcmdzMzIoMHhmZmZmZmZmZiwgNjMpKTsK
KyAgICBSVU4odGVzdFNobEltbXMzMigxLCAwKSk7CisgICAgUlVOKHRlc3RTaGxJbW1zMzIoMSwg
MSkpOworICAgIFJVTih0ZXN0U2hsSW1tczMyKDEsIDYyKSk7CisgICAgUlVOKHRlc3RTaGxJbW1z
MzIoMSwgMzMpKTsKKyAgICBSVU4odGVzdFNobEltbXMzMigweGZmZmZmZmZmLCAwKSk7CisgICAg
UlVOKHRlc3RTaGxJbW1zMzIoMHhmZmZmZmZmZiwgMSkpOworICAgIFJVTih0ZXN0U2hsSW1tczMy
KDB4ZmZmZmZmZmYsIDYzKSk7CisgICAgUlVOKHRlc3RTaGxBcmdJbW0zMigxLCAwKSk7CisgICAg
UlVOKHRlc3RTaGxBcmdJbW0zMigxLCAxKSk7CisgICAgUlVOKHRlc3RTaGxBcmdJbW0zMigxLCA2
MikpOworICAgIFJVTih0ZXN0U2hsQXJnSW1tMzIoMSwgMzMpKTsKKyAgICBSVU4odGVzdFNobEFy
Z0ltbTMyKDB4ZmZmZmZmZmYsIDApKTsKKyAgICBSVU4odGVzdFNobEFyZ0ltbTMyKDB4ZmZmZmZm
ZmYsIDEpKTsKKyAgICBSVU4odGVzdFNobEFyZ0ltbTMyKDB4ZmZmZmZmZmYsIDYzKSk7CisgICAg
UlVOKHRlc3RTaGxaU2hyQXJnSW1tMzIoMSwgMCkpOworICAgIFJVTih0ZXN0U2hsWlNockFyZ0lt
bTMyKDEsIDEpKTsKKyAgICBSVU4odGVzdFNobFpTaHJBcmdJbW0zMigxLCA2MikpOworICAgIFJV
Tih0ZXN0U2hsWlNockFyZ0ltbTMyKDEsIDMzKSk7CisgICAgUlVOKHRlc3RTaGxaU2hyQXJnSW1t
MzIoMHhmZmZmZmZmZiwgMCkpOworICAgIFJVTih0ZXN0U2hsWlNockFyZ0ltbTMyKDB4ZmZmZmZm
ZmYsIDEpKTsKKyAgICBSVU4odGVzdFNobFpTaHJBcmdJbW0zMigweGZmZmZmZmZmLCA2MykpOwor
CisgICAgUlVOKHRlc3RTU2hyQXJncygxLCAwKSk7CisgICAgUlVOKHRlc3RTU2hyQXJncygxLCAx
KSk7CisgICAgUlVOKHRlc3RTU2hyQXJncygxLCA2MikpOworICAgIFJVTih0ZXN0U1NockFyZ3Mo
MHhmZmZmZmZmZmZmZmZmZmZmLCAwKSk7CisgICAgUlVOKHRlc3RTU2hyQXJncygweGZmZmZmZmZm
ZmZmZmZmZmYsIDEpKTsKKyAgICBSVU4odGVzdFNTaHJBcmdzKDB4ZmZmZmZmZmZmZmZmZmZmZiwg
NjMpKTsKKyAgICBSVU4odGVzdFNTaHJJbW1zKDEsIDApKTsKKyAgICBSVU4odGVzdFNTaHJJbW1z
KDEsIDEpKTsKKyAgICBSVU4odGVzdFNTaHJJbW1zKDEsIDYyKSk7CisgICAgUlVOKHRlc3RTU2hy
SW1tcygxLCA2NSkpOworICAgIFJVTih0ZXN0U1NockltbXMoMHhmZmZmZmZmZmZmZmZmZmZmLCAw
KSk7CisgICAgUlVOKHRlc3RTU2hySW1tcygweGZmZmZmZmZmZmZmZmZmZmYsIDEpKTsKKyAgICBS
VU4odGVzdFNTaHJJbW1zKDB4ZmZmZmZmZmZmZmZmZmZmZiwgNjMpKTsKKyAgICBSVU4odGVzdFNT
aHJBcmdJbW0oMSwgMCkpOworICAgIFJVTih0ZXN0U1NockFyZ0ltbSgxLCAxKSk7CisgICAgUlVO
KHRlc3RTU2hyQXJnSW1tKDEsIDYyKSk7CisgICAgUlVOKHRlc3RTU2hyQXJnSW1tKDEsIDY1KSk7
CisgICAgUlVOKHRlc3RTU2hyQXJnSW1tKDB4ZmZmZmZmZmZmZmZmZmZmZiwgMCkpOworICAgIFJV
Tih0ZXN0U1NockFyZ0ltbSgweGZmZmZmZmZmZmZmZmZmZmYsIDEpKTsKKyAgICBSVU4odGVzdFNT
aHJBcmdJbW0oMHhmZmZmZmZmZmZmZmZmZmZmLCA2MykpOworICAgIFJVTih0ZXN0U1NockFyZzMy
KDMyKSk7CisgICAgUlVOKHRlc3RTU2hyQXJnczMyKDEsIDApKTsKKyAgICBSVU4odGVzdFNTaHJB
cmdzMzIoMSwgMSkpOworICAgIFJVTih0ZXN0U1NockFyZ3MzMigxLCA2MikpOworICAgIFJVTih0
ZXN0U1NockFyZ3MzMigxLCAzMykpOworICAgIFJVTih0ZXN0U1NockFyZ3MzMigweGZmZmZmZmZm
LCAwKSk7CisgICAgUlVOKHRlc3RTU2hyQXJnczMyKDB4ZmZmZmZmZmYsIDEpKTsKKyAgICBSVU4o
dGVzdFNTaHJBcmdzMzIoMHhmZmZmZmZmZiwgNjMpKTsKKyAgICBSVU4odGVzdFNTaHJJbW1zMzIo
MSwgMCkpOworICAgIFJVTih0ZXN0U1NockltbXMzMigxLCAxKSk7CisgICAgUlVOKHRlc3RTU2hy
SW1tczMyKDEsIDYyKSk7CisgICAgUlVOKHRlc3RTU2hySW1tczMyKDEsIDMzKSk7CisgICAgUlVO
KHRlc3RTU2hySW1tczMyKDB4ZmZmZmZmZmYsIDApKTsKKyAgICBSVU4odGVzdFNTaHJJbW1zMzIo
MHhmZmZmZmZmZiwgMSkpOworICAgIFJVTih0ZXN0U1NockltbXMzMigweGZmZmZmZmZmLCA2Mykp
OworICAgIFJVTih0ZXN0U1NockFyZ0ltbTMyKDEsIDApKTsKKyAgICBSVU4odGVzdFNTaHJBcmdJ
bW0zMigxLCAxKSk7CisgICAgUlVOKHRlc3RTU2hyQXJnSW1tMzIoMSwgNjIpKTsKKyAgICBSVU4o
dGVzdFNTaHJBcmdJbW0zMigweGZmZmZmZmZmLCAwKSk7CisgICAgUlVOKHRlc3RTU2hyQXJnSW1t
MzIoMHhmZmZmZmZmZiwgMSkpOworICAgIFJVTih0ZXN0U1NockFyZ0ltbTMyKDB4ZmZmZmZmZmYs
IDYzKSk7CisKKyAgICBSVU4odGVzdFpTaHJBcmdzKDEsIDApKTsKKyAgICBSVU4odGVzdFpTaHJB
cmdzKDEsIDEpKTsKKyAgICBSVU4odGVzdFpTaHJBcmdzKDEsIDYyKSk7CisgICAgUlVOKHRlc3Ra
U2hyQXJncygweGZmZmZmZmZmZmZmZmZmZmYsIDApKTsKKyAgICBSVU4odGVzdFpTaHJBcmdzKDB4
ZmZmZmZmZmZmZmZmZmZmZiwgMSkpOworICAgIFJVTih0ZXN0WlNockFyZ3MoMHhmZmZmZmZmZmZm
ZmZmZmZmLCA2MykpOworICAgIFJVTih0ZXN0WlNockltbXMoMSwgMCkpOworICAgIFJVTih0ZXN0
WlNockltbXMoMSwgMSkpOworICAgIFJVTih0ZXN0WlNockltbXMoMSwgNjIpKTsKKyAgICBSVU4o
dGVzdFpTaHJJbW1zKDEsIDY1KSk7CisgICAgUlVOKHRlc3RaU2hySW1tcygweGZmZmZmZmZmZmZm
ZmZmZmYsIDApKTsKKyAgICBSVU4odGVzdFpTaHJJbW1zKDB4ZmZmZmZmZmZmZmZmZmZmZiwgMSkp
OworICAgIFJVTih0ZXN0WlNockltbXMoMHhmZmZmZmZmZmZmZmZmZmZmLCA2MykpOworICAgIFJV
Tih0ZXN0WlNockFyZ0ltbSgxLCAwKSk7CisgICAgUlVOKHRlc3RaU2hyQXJnSW1tKDEsIDEpKTsK
KyAgICBSVU4odGVzdFpTaHJBcmdJbW0oMSwgNjIpKTsKKyAgICBSVU4odGVzdFpTaHJBcmdJbW0o
MSwgNjUpKTsKKyAgICBSVU4odGVzdFpTaHJBcmdJbW0oMHhmZmZmZmZmZmZmZmZmZmZmLCAwKSk7
CisgICAgUlVOKHRlc3RaU2hyQXJnSW1tKDB4ZmZmZmZmZmZmZmZmZmZmZiwgMSkpOworICAgIFJV
Tih0ZXN0WlNockFyZ0ltbSgweGZmZmZmZmZmZmZmZmZmZmYsIDYzKSk7CisgICAgUlVOKHRlc3Ra
U2hyQXJnMzIoMzIpKTsKKyAgICBSVU4odGVzdFpTaHJBcmdzMzIoMSwgMCkpOworICAgIFJVTih0
ZXN0WlNockFyZ3MzMigxLCAxKSk7CisgICAgUlVOKHRlc3RaU2hyQXJnczMyKDEsIDYyKSk7Cisg
ICAgUlVOKHRlc3RaU2hyQXJnczMyKDEsIDMzKSk7CisgICAgUlVOKHRlc3RaU2hyQXJnczMyKDB4
ZmZmZmZmZmYsIDApKTsKKyAgICBSVU4odGVzdFpTaHJBcmdzMzIoMHhmZmZmZmZmZiwgMSkpOwor
ICAgIFJVTih0ZXN0WlNockFyZ3MzMigweGZmZmZmZmZmLCA2MykpOworICAgIFJVTih0ZXN0WlNo
ckltbXMzMigxLCAwKSk7CisgICAgUlVOKHRlc3RaU2hySW1tczMyKDEsIDEpKTsKKyAgICBSVU4o
dGVzdFpTaHJJbW1zMzIoMSwgNjIpKTsKKyAgICBSVU4odGVzdFpTaHJJbW1zMzIoMSwgMzMpKTsK
KyAgICBSVU4odGVzdFpTaHJJbW1zMzIoMHhmZmZmZmZmZiwgMCkpOworICAgIFJVTih0ZXN0WlNo
ckltbXMzMigweGZmZmZmZmZmLCAxKSk7CisgICAgUlVOKHRlc3RaU2hySW1tczMyKDB4ZmZmZmZm
ZmYsIDYzKSk7CisgICAgUlVOKHRlc3RaU2hyQXJnSW1tMzIoMSwgMCkpOworICAgIFJVTih0ZXN0
WlNockFyZ0ltbTMyKDEsIDEpKTsKKyAgICBSVU4odGVzdFpTaHJBcmdJbW0zMigxLCA2MikpOwor
ICAgIFJVTih0ZXN0WlNockFyZ0ltbTMyKDB4ZmZmZmZmZmYsIDApKTsKKyAgICBSVU4odGVzdFpT
aHJBcmdJbW0zMigweGZmZmZmZmZmLCAxKSk7CisgICAgUlVOKHRlc3RaU2hyQXJnSW1tMzIoMHhm
ZmZmZmZmZiwgNjMpKTsKKworICAgIFJVTl9VTkFSWSh0ZXN0Q2x6QXJnNjQsIGludDY0T3BlcmFu
ZHMoKSk7CisgICAgUlVOX1VOQVJZKHRlc3RDbHpNZW02NCwgaW50NjRPcGVyYW5kcygpKTsKKyAg
ICBSVU5fVU5BUlkodGVzdENsekFyZzMyLCBpbnQzMk9wZXJhbmRzKCkpOworICAgIFJVTl9VTkFS
WSh0ZXN0Q2x6TWVtMzIsIGludDY0T3BlcmFuZHMoKSk7CisKKyAgICBSVU5fVU5BUlkodGVzdEFi
c0FyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX1VOQVJZKHRl
c3RBYnNJbW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9VTkFS
WSh0ZXN0QWJzTWVtLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5f
VU5BUlkodGVzdEFic0Fic0FyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7Cisg
ICAgUlVOX1VOQVJZKHRlc3RBYnNOZWdBcmcsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+
KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0QWJzQml0d2lzZUNhc3RBcmcsIGZsb2F0aW5nUG9pbnRP
cGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Qml0d2lzZUNhc3RBYnNCaXR3
aXNlQ2FzdEFyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX1VO
QVJZKHRlc3RBYnNBcmcsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVO
X1VOQVJZKHRlc3RBYnNJbW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAg
UlVOX1VOQVJZKHRlc3RBYnNNZW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Cisg
ICAgUlVOX1VOQVJZKHRlc3RBYnNBYnNBcmcsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4o
KSk7CisgICAgUlVOX1VOQVJZKHRlc3RBYnNOZWdBcmcsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxm
bG9hdD4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RBYnNCaXR3aXNlQ2FzdEFyZywgZmxvYXRpbmdQ
b2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fVU5BUlkodGVzdEJpdHdpc2VDYXN0QWJz
Qml0d2lzZUNhc3RBcmcsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVO
X1VOQVJZKHRlc3RBYnNBcmdXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24sIGZsb2F0aW5nUG9p
bnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RBYnNBcmdXaXRoRWZmZWN0
ZnVsRG91YmxlQ29udmVyc2lvbiwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKwor
ICAgIFJVTl9VTkFSWSh0ZXN0Q2VpbEFyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4o
KSk7CisgICAgUlVOX1VOQVJZKHRlc3RDZWlsSW1tLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91
YmxlPigpKTsKKyAgICBSVU5fVU5BUlkodGVzdENlaWxNZW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5k
czxkb3VibGU+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Q2VpbENlaWxBcmcsIGZsb2F0aW5nUG9p
bnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Rmxvb3JDZWlsQXJnLCBm
bG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fVU5BUlkodGVzdENlaWxJ
VG9ENjQsIGludDY0T3BlcmFuZHMoKSk7CisgICAgUlVOX1VOQVJZKHRlc3RDZWlsSVRvRDMyLCBp
bnQzMk9wZXJhbmRzKCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Q2VpbEFyZywgZmxvYXRpbmdQb2lu
dE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fVU5BUlkodGVzdENlaWxJbW0sIGZsb2F0aW5n
UG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RDZWlsTWVtLCBmbG9h
dGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Q2VpbENlaWxB
cmcsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RG
bG9vckNlaWxBcmcsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX1VO
QVJZKHRlc3RDZWlsQXJnV2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Q2VpbEFyZ1dpdGhFZmZlY3Rm
dWxEb3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworCisg
ICAgUlVOX1VOQVJZKHRlc3RGbG9vckFyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4o
KSk7CisgICAgUlVOX1VOQVJZKHRlc3RGbG9vckltbSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRv
dWJsZT4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RGbG9vck1lbSwgZmxvYXRpbmdQb2ludE9wZXJh
bmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RGbG9vckZsb29yQXJnLCBmbG9hdGlu
Z1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fVU5BUlkodGVzdENlaWxGbG9vckFy
ZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RG
bG9vcklUb0Q2NCwgaW50NjRPcGVyYW5kcygpKTsKKyAgICBSVU5fVU5BUlkodGVzdEZsb29ySVRv
RDMyLCBpbnQzMk9wZXJhbmRzKCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Rmxvb3JBcmcsIGZsb2F0
aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RGbG9vckltbSwg
ZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fVU5BUlkodGVzdEZsb29y
TWVtLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0
Rmxvb3JGbG9vckFyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5f
VU5BUlkodGVzdENlaWxGbG9vckFyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsK
KyAgICBSVU5fVU5BUlkodGVzdEZsb29yQXJnV2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uLCBm
bG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Rmxvb3JB
cmdXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lvbiwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZs
b2F0PigpKTsKKworICAgIFJVTl9VTkFSWSh0ZXN0U3FydEFyZywgZmxvYXRpbmdQb2ludE9wZXJh
bmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RTcXJ0SW1tLCBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fVU5BUlkodGVzdFNxcnRNZW0sIGZsb2F0aW5n
UG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0U3FydEFyZywgZmxv
YXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fVU5BUlkodGVzdFNxcnRJbW0s
IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RTcXJ0
TWVtLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0
U3FydEFyZ1dpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbiwgZmxvYXRpbmdQb2ludE9wZXJhbmRz
PGZsb2F0PigpKTsKKyAgICBSVU5fVU5BUlkodGVzdFNxcnRBcmdXaXRoRWZmZWN0ZnVsRG91Ymxl
Q29udmVyc2lvbiwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKworICAgIFJVTl9C
SU5BUlkodGVzdENvbXBhcmVUd29GbG9hdFRvRG91YmxlLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8
ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFS
WSh0ZXN0Q29tcGFyZU9uZUZsb2F0VG9Eb3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9h
dD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX0JJTkFSWSh0
ZXN0Q29tcGFyZUZsb2F0VG9Eb3VibGVUaHJvdWdoUGhpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8
ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX1VOQVJZ
KHRlc3REb3VibGVUb0Zsb2F0VGhyb3VnaFBoaSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0
PigpKTsKKyAgICBSVU4odGVzdFJlZHVjZUZsb2F0VG9Eb3VibGVWYWxpZGF0ZXMoKSk7CisgICAg
UlVOX1VOQVJZKHRlc3REb3VibGVQcm9kdWNlclBoaVRvRmxvYXRDb252ZXJzaW9uLCBmbG9hdGlu
Z1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0RG91YmxlUHJvZHVj
ZXJQaGlUb0Zsb2F0Q29udmVyc2lvbldpdGhEb3VibGVDb25zdW1lciwgZmxvYXRpbmdQb2ludE9w
ZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3REb3VibGVQcm9kdWNlclBoaVdp
dGhOb25GbG9hdENvbnN0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5n
UG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworCisgICAgUlVOX1VOQVJZKHRlc3REb3VibGVBcmdU
b0ludDY0Qml0d2lzZUNhc3QsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAg
IFJVTl9VTkFSWSh0ZXN0RG91YmxlSW1tVG9JbnQ2NEJpdHdpc2VDYXN0LCBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fVU5BUlkodGVzdFR3b0JpdHdpc2VDYXN0T25E
b3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9VTkFSWSh0
ZXN0Qml0d2lzZUNhc3RPbkRvdWJsZUluTWVtb3J5LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91
YmxlPigpKTsKKyAgICBSVU5fVU5BUlkodGVzdEJpdHdpc2VDYXN0T25Eb3VibGVJbk1lbW9yeUlu
ZGV4ZWQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9VTkFSWSh0
ZXN0SW50NjRCQXJnVG9Eb3VibGVCaXR3aXNlQ2FzdCwgaW50NjRPcGVyYW5kcygpKTsKKyAgICBS
VU5fVU5BUlkodGVzdEludDY0QkltbVRvRG91YmxlQml0d2lzZUNhc3QsIGludDY0T3BlcmFuZHMo
KSk7CisgICAgUlVOX1VOQVJZKHRlc3RUd29CaXR3aXNlQ2FzdE9uSW50NjQsIGludDY0T3BlcmFu
ZHMoKSk7CisgICAgUlVOX1VOQVJZKHRlc3RCaXR3aXNlQ2FzdE9uSW50NjRJbk1lbW9yeSwgaW50
NjRPcGVyYW5kcygpKTsKKyAgICBSVU5fVU5BUlkodGVzdEJpdHdpc2VDYXN0T25JbnQ2NEluTWVt
b3J5SW5kZXhlZCwgaW50NjRPcGVyYW5kcygpKTsKKyAgICBSVU5fVU5BUlkodGVzdEZsb2F0SW1t
VG9JbnQzMkJpdHdpc2VDYXN0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAg
IFJVTl9VTkFSWSh0ZXN0Qml0d2lzZUNhc3RPbkZsb2F0SW5NZW1vcnksIGZsb2F0aW5nUG9pbnRP
cGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RJbnQzMkJBcmdUb0Zsb2F0Qml0
d2lzZUNhc3QsIGludDMyT3BlcmFuZHMoKSk7CisgICAgUlVOX1VOQVJZKHRlc3RJbnQzMkJJbW1U
b0Zsb2F0Qml0d2lzZUNhc3QsIGludDMyT3BlcmFuZHMoKSk7CisgICAgUlVOX1VOQVJZKHRlc3RU
d29CaXR3aXNlQ2FzdE9uSW50MzIsIGludDMyT3BlcmFuZHMoKSk7CisgICAgUlVOX1VOQVJZKHRl
c3RCaXR3aXNlQ2FzdE9uSW50MzJJbk1lbW9yeSwgaW50MzJPcGVyYW5kcygpKTsKKworICAgIFJV
Tl9VTkFSWSh0ZXN0Q29udmVydERvdWJsZVRvRmxvYXRBcmcsIGZsb2F0aW5nUG9pbnRPcGVyYW5k
czxkb3VibGU+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Q29udmVydERvdWJsZVRvRmxvYXRJbW0s
IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Q29u
dmVydERvdWJsZVRvRmxvYXRNZW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwor
ICAgIFJVTl9VTkFSWSh0ZXN0Q29udmVydEZsb2F0VG9Eb3VibGVBcmcsIGZsb2F0aW5nUG9pbnRP
cGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RDb252ZXJ0RmxvYXRUb0RvdWJs
ZUltbSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fVU5BUlkodGVz
dENvbnZlcnRGbG9hdFRvRG91YmxlTWVtLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkp
OworICAgIFJVTl9VTkFSWSh0ZXN0Q29udmVydERvdWJsZVRvRmxvYXRUb0RvdWJsZVRvRmxvYXQs
IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0U3Rv
cmVGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX1VOQVJZ
KHRlc3RTdG9yZURvdWJsZUNvbnN0YW50QXNGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRv
dWJsZT4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RMb2FkRmxvYXRDb252ZXJ0RG91YmxlQ29udmVy
dEZsb2F0U3RvcmVGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBS
VU5fVU5BUlkodGVzdEZyb3VuZEFyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7
CisgICAgUlVOX1VOQVJZKHRlc3RGcm91bmRNZW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3Vi
bGU+KCkpOworCisgICAgUlVOKHRlc3RJVG9ENjRBcmcoKSk7CisgICAgUlVOKHRlc3RJVG9GNjRB
cmcoKSk7CisgICAgUlVOKHRlc3RJVG9EMzJBcmcoKSk7CisgICAgUlVOKHRlc3RJVG9GMzJBcmco
KSk7CisgICAgUlVOKHRlc3RJVG9ENjRNZW0oKSk7CisgICAgUlVOKHRlc3RJVG9GNjRNZW0oKSk7
CisgICAgUlVOKHRlc3RJVG9EMzJNZW0oKSk7CisgICAgUlVOKHRlc3RJVG9GMzJNZW0oKSk7Cisg
ICAgUlVOX1VOQVJZKHRlc3RJVG9ENjRJbW0sIGludDY0T3BlcmFuZHMoKSk7CisgICAgUlVOX1VO
QVJZKHRlc3RJVG9GNjRJbW0sIGludDY0T3BlcmFuZHMoKSk7CisgICAgUlVOX1VOQVJZKHRlc3RJ
VG9EMzJJbW0sIGludDMyT3BlcmFuZHMoKSk7CisgICAgUlVOX1VOQVJZKHRlc3RJVG9GMzJJbW0s
IGludDMyT3BlcmFuZHMoKSk7CisgICAgUlVOKHRlc3RJVG9EUmVkdWNlZFRvSVRvRjY0QXJnKCkp
OworICAgIFJVTih0ZXN0SVRvRFJlZHVjZWRUb0lUb0YzMkFyZygpKTsKKworICAgIFJVTih0ZXN0
U3RvcmUzMig0NCkpOworICAgIFJVTih0ZXN0U3RvcmVDb25zdGFudCg0OSkpOworICAgIFJVTih0
ZXN0U3RvcmVDb25zdGFudFB0cig0OSkpOworICAgIFJVTih0ZXN0U3RvcmU4QXJnKCkpOworICAg
IFJVTih0ZXN0U3RvcmU4SW1tKCkpOworICAgIFJVTih0ZXN0U3RvcmVQYXJ0aWFsOEJpdFJlZ2lz
dGVyT25YODYoKSk7CisgICAgUlVOKHRlc3RTdG9yZTE2QXJnKCkpOworICAgIFJVTih0ZXN0U3Rv
cmUxNkltbSgpKTsKKyAgICBSVU4odGVzdFRydW5jKChzdGF0aWNfY2FzdDxpbnQ2NF90PigxKSA8
PCA0MCkgKyA0MikpOworICAgIFJVTih0ZXN0QWRkMSg0NSkpOworICAgIFJVTih0ZXN0QWRkMVB0
cig1MSkpOworICAgIFJVTih0ZXN0QWRkMVB0cihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMHhiYWFk
YmVlZikpKTsKKyAgICBSVU4odGVzdE5lZzMyKDUyKSk7CisgICAgUlVOKHRlc3ROZWdQdHIoNTMp
KTsKKyAgICBSVU4odGVzdFN0b3JlQWRkTG9hZDMyKDQ2KSk7CisgICAgUlVOKHRlc3RTdG9yZVJl
bEFkZExvYWRBY3EzMig0NikpOworICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkSW1tMzIoNDYpKTsK
KyAgICBSVU4odGVzdFN0b3JlQWRkTG9hZDY0KDQ2MDApKTsKKyAgICBSVU4odGVzdFN0b3JlUmVs
QWRkTG9hZEFjcTY0KDQ2MDApKTsKKyAgICBSVU4odGVzdFN0b3JlQWRkTG9hZEltbTY0KDQ2MDAp
KTsKKyAgICBSVU4odGVzdFN0b3JlQWRkTG9hZDgoNCwgTG9hZDhaKSk7CisgICAgUlVOKHRlc3RT
dG9yZVJlbEFkZExvYWRBY3E4KDQsIExvYWQ4WikpOworICAgIFJVTih0ZXN0U3RvcmVSZWxBZGRG
ZW5jZUxvYWRBY3E4KDQsIExvYWQ4WikpOworICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkSW1tOCg0
LCBMb2FkOFopKTsKKyAgICBSVU4odGVzdFN0b3JlQWRkTG9hZDgoNCwgTG9hZDhTKSk7CisgICAg
UlVOKHRlc3RTdG9yZVJlbEFkZExvYWRBY3E4KDQsIExvYWQ4UykpOworICAgIFJVTih0ZXN0U3Rv
cmVBZGRMb2FkSW1tOCg0LCBMb2FkOFMpKTsKKyAgICBSVU4odGVzdFN0b3JlQWRkTG9hZDE2KDYs
IExvYWQxNlopKTsKKyAgICBSVU4odGVzdFN0b3JlUmVsQWRkTG9hZEFjcTE2KDYsIExvYWQxNlop
KTsKKyAgICBSVU4odGVzdFN0b3JlQWRkTG9hZEltbTE2KDYsIExvYWQxNlopKTsKKyAgICBSVU4o
dGVzdFN0b3JlQWRkTG9hZDE2KDYsIExvYWQxNlMpKTsKKyAgICBSVU4odGVzdFN0b3JlUmVsQWRk
TG9hZEFjcTE2KDYsIExvYWQxNlMpKTsKKyAgICBSVU4odGVzdFN0b3JlQWRkTG9hZEltbTE2KDYs
IExvYWQxNlMpKTsKKyAgICBSVU4odGVzdFN0b3JlQWRkTG9hZDMySW5kZXgoNDYpKTsKKyAgICBS
VU4odGVzdFN0b3JlQWRkTG9hZEltbTMySW5kZXgoNDYpKTsKKyAgICBSVU4odGVzdFN0b3JlQWRk
TG9hZDY0SW5kZXgoNDYwMCkpOworICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkSW1tNjRJbmRleCg0
NjAwKSk7CisgICAgUlVOKHRlc3RTdG9yZUFkZExvYWQ4SW5kZXgoNCwgTG9hZDhaKSk7CisgICAg
UlVOKHRlc3RTdG9yZUFkZExvYWRJbW04SW5kZXgoNCwgTG9hZDhaKSk7CisgICAgUlVOKHRlc3RT
dG9yZUFkZExvYWQ4SW5kZXgoNCwgTG9hZDhTKSk7CisgICAgUlVOKHRlc3RTdG9yZUFkZExvYWRJ
bW04SW5kZXgoNCwgTG9hZDhTKSk7CisgICAgUlVOKHRlc3RTdG9yZUFkZExvYWQxNkluZGV4KDYs
IExvYWQxNlopKTsKKyAgICBSVU4odGVzdFN0b3JlQWRkTG9hZEltbTE2SW5kZXgoNiwgTG9hZDE2
WikpOworICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkMTZJbmRleCg2LCBMb2FkMTZTKSk7CisgICAg
UlVOKHRlc3RTdG9yZUFkZExvYWRJbW0xNkluZGV4KDYsIExvYWQxNlMpKTsKKyAgICBSVU4odGVz
dFN0b3JlU3ViTG9hZCg0NikpOworICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkSW50ZXJmZXJlbmNl
KDUyKSk7CisgICAgUlVOKHRlc3RTdG9yZUFkZEFuZExvYWQoNDcsIDB4ZmZmZikpOworICAgIFJV
Tih0ZXN0U3RvcmVBZGRBbmRMb2FkKDQ3MDAwMCwgMHhmZmZmKSk7CisgICAgUlVOKHRlc3RTdG9y
ZU5lZ0xvYWQzMig1NCkpOworICAgIFJVTih0ZXN0U3RvcmVOZWdMb2FkUHRyKDU1KSk7CisgICAg
UlVOKHRlc3RBZGQxVW5jb21tdXRlZCg0OCkpOworICAgIFJVTih0ZXN0TG9hZE9mZnNldCgpKTsK
KyAgICBSVU4odGVzdExvYWRPZmZzZXROb3RDb25zdGFudCgpKTsKKyAgICBSVU4odGVzdExvYWRP
ZmZzZXRVc2luZ0FkZCgpKTsKKyAgICBSVU4odGVzdExvYWRPZmZzZXRVc2luZ0FkZEludGVyZmVy
ZW5jZSgpKTsKKyAgICBSVU4odGVzdExvYWRPZmZzZXRVc2luZ0FkZE5vdENvbnN0YW50KCkpOwor
ICAgIFJVTih0ZXN0TG9hZEFkZHJTaGlmdCgwKSk7CisgICAgUlVOKHRlc3RMb2FkQWRkclNoaWZ0
KDEpKTsKKyAgICBSVU4odGVzdExvYWRBZGRyU2hpZnQoMikpOworICAgIFJVTih0ZXN0TG9hZEFk
ZHJTaGlmdCgzKSk7CisgICAgUlVOKHRlc3RGcmFtZVBvaW50ZXIoKSk7CisgICAgUlVOKHRlc3RP
dmVycmlkZUZyYW1lUG9pbnRlcigpKTsKKyAgICBSVU4odGVzdFN0YWNrU2xvdCgpKTsKKyAgICBS
VU4odGVzdExvYWRGcm9tRnJhbWVQb2ludGVyKCkpOworICAgIFJVTih0ZXN0U3RvcmVMb2FkU3Rh
Y2tTbG90KDUwKSk7CisgICAgCisgICAgUlVOKHRlc3RCcmFuY2goKSk7CisgICAgUlVOKHRlc3RC
cmFuY2hQdHIoKSk7CisgICAgUlVOKHRlc3REaWFtb25kKCkpOworICAgIFJVTih0ZXN0QnJhbmNo
Tm90RXF1YWwoKSk7CisgICAgUlVOKHRlc3RCcmFuY2hOb3RFcXVhbENvbW11dGUoKSk7CisgICAg
UlVOKHRlc3RCcmFuY2hOb3RFcXVhbE5vdEVxdWFsKCkpOworICAgIFJVTih0ZXN0QnJhbmNoRXF1
YWwoKSk7CisgICAgUlVOKHRlc3RCcmFuY2hFcXVhbEVxdWFsKCkpOworICAgIFJVTih0ZXN0QnJh
bmNoRXF1YWxDb21tdXRlKCkpOworICAgIFJVTih0ZXN0QnJhbmNoRXF1YWxFcXVhbDEoKSk7Cisg
ICAgUlVOX0JJTkFSWSh0ZXN0QnJhbmNoRXF1YWxPclVub3JkZXJlZEFyZ3MsIGZsb2F0aW5nUG9p
bnRPcGVyYW5kczxkb3VibGU+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwor
ICAgIFJVTl9CSU5BUlkodGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVyZWRBcmdzLCBmbG9hdGluZ1Bv
aW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Cisg
ICAgUlVOX0JJTkFSWSh0ZXN0QnJhbmNoTm90RXF1YWxBbmRPcmRlcmVkQXJncywgZmxvYXRpbmdQ
b2ludE9wZXJhbmRzPGRvdWJsZT4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7
CisgICAgUlVOX0JJTkFSWSh0ZXN0QnJhbmNoTm90RXF1YWxBbmRPcmRlcmVkQXJncywgZmxvYXRp
bmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkp
OworICAgIFJVTl9CSU5BUlkodGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVyZWREb3VibGVBcmdJbW0s
IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxk
b3VibGU+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVyZWRGbG9h
dEFyZ0ltbSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3Bl
cmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVy
ZWREb3VibGVJbW1zLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpLCBmbG9hdGluZ1Bv
aW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RCcmFuY2hFcXVhbE9y
VW5vcmRlcmVkRmxvYXRJbW1zLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0
aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0QnJhbmNoRXF1
YWxPclVub3JkZXJlZEZsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1Bv
aW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Cisg
ICAgUlVOX0JJTkFSWSh0ZXN0QnJhbmNoTm90RXF1YWxBbmRPcmRlcmVkQXJncywgZmxvYXRpbmdQ
b2ludE9wZXJhbmRzPGRvdWJsZT4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7
CisgICAgUlVOX0JJTkFSWSh0ZXN0QnJhbmNoTm90RXF1YWxBbmRPcmRlcmVkQXJncywgZmxvYXRp
bmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkp
OworICAgIFJVTih0ZXN0QnJhbmNoRm9sZCg0MikpOworICAgIFJVTih0ZXN0QnJhbmNoRm9sZCgw
KSk7CisgICAgUlVOKHRlc3REaWFtb25kRm9sZCg0MikpOworICAgIFJVTih0ZXN0RGlhbW9uZEZv
bGQoMCkpOworICAgIFJVTih0ZXN0QnJhbmNoTm90RXF1YWxGb2xkUHRyKDQyKSk7CisgICAgUlVO
KHRlc3RCcmFuY2hOb3RFcXVhbEZvbGRQdHIoMCkpOworICAgIFJVTih0ZXN0QnJhbmNoRXF1YWxG
b2xkUHRyKDQyKSk7CisgICAgUlVOKHRlc3RCcmFuY2hFcXVhbEZvbGRQdHIoMCkpOworICAgIFJV
Tih0ZXN0QnJhbmNoTG9hZFB0cigpKTsKKyAgICBSVU4odGVzdEJyYW5jaExvYWQzMigpKTsKKyAg
ICBSVU4odGVzdEJyYW5jaExvYWQ4UygpKTsKKyAgICBSVU4odGVzdEJyYW5jaExvYWQ4WigpKTsK
KyAgICBSVU4odGVzdEJyYW5jaExvYWQxNlMoKSk7CisgICAgUlVOKHRlc3RCcmFuY2hMb2FkMTZa
KCkpOworICAgIFJVTih0ZXN0QnJhbmNoOFdpdGhMb2FkOFpJbmRleCgpKTsKKworICAgIFJVTih0
ZXN0Q29tcGxleCg2NCwgMTI4KSk7CisgICAgUlVOKHRlc3RDb21wbGV4KDQsIDEyOCkpOworICAg
IFJVTih0ZXN0Q29tcGxleCg0LCAyNTYpKTsKKyAgICBSVU4odGVzdENvbXBsZXgoNCwgMzg0KSk7
CisKKyAgICBSVU5fQklOQVJZKHRlc3RCcmFuY2hCaXRUZXN0MzJUbXBJbW0sIGludDMyT3BlcmFu
ZHMoKSwgaW50MzJPcGVyYW5kcygpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RCcmFuY2hCaXRUZXN0
MzJBZGRySW1tLCBpbnQzMk9wZXJhbmRzKCksIGludDMyT3BlcmFuZHMoKSk7CisgICAgUlVOX0JJ
TkFSWSh0ZXN0QnJhbmNoQml0VGVzdDMyVG1wVG1wLCBpbnQzMk9wZXJhbmRzKCksIGludDMyT3Bl
cmFuZHMoKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0QnJhbmNoQml0VGVzdDY0VG1wVG1wLCBpbnQ2
NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0QnJhbmNo
Qml0VGVzdDY0QWRkclRtcCwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOworICAg
IFJVTl9CSU5BUlkodGVzdEJyYW5jaEJpdFRlc3ROZWdhdGlvbiwgaW50NjRPcGVyYW5kcygpLCBp
bnQ2NE9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlkodGVzdEJyYW5jaEJpdFRlc3ROZWdhdGlv
bjIsIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKKworICAgIFJVTih0ZXN0U2lt
cGxlUGF0Y2hwb2ludCgpKTsKKyAgICBSVU4odGVzdFNpbXBsZVBhdGNocG9pbnRXaXRob3V0T3Vw
dXRDbG9iYmVyc0dQQXJncygpKTsKKyAgICBSVU4odGVzdFNpbXBsZVBhdGNocG9pbnRXaXRoT3Vw
dXRDbG9iYmVyc0dQQXJncygpKTsKKyAgICBSVU4odGVzdFNpbXBsZVBhdGNocG9pbnRXaXRob3V0
T3VwdXRDbG9iYmVyc0ZQQXJncygpKTsKKyAgICBSVU4odGVzdFNpbXBsZVBhdGNocG9pbnRXaXRo
T3VwdXRDbG9iYmVyc0ZQQXJncygpKTsKKyAgICBSVU4odGVzdFBhdGNocG9pbnRXaXRoRWFybHlD
bG9iYmVyKCkpOworICAgIFJVTih0ZXN0UGF0Y2hwb2ludENhbGxBcmcoKSk7CisgICAgUlVOKHRl
c3RQYXRjaHBvaW50Rml4ZWRSZWdpc3RlcigpKTsKKyAgICBSVU4odGVzdFBhdGNocG9pbnRBbnko
VmFsdWVSZXA6Oldhcm1BbnkpKTsKKyAgICBSVU4odGVzdFBhdGNocG9pbnRBbnkoVmFsdWVSZXA6
OkNvbGRBbnkpKTsKKyAgICBSVU4odGVzdFBhdGNocG9pbnRHUFNjcmF0Y2goKSk7CisgICAgUlVO
KHRlc3RQYXRjaHBvaW50RlBTY3JhdGNoKCkpOworICAgIFJVTih0ZXN0UGF0Y2hwb2ludExvdHNP
ZkxhdGVBbnlzKCkpOworICAgIFJVTih0ZXN0UGF0Y2hwb2ludEFueUltbShWYWx1ZVJlcDo6V2Fy
bUFueSkpOworICAgIFJVTih0ZXN0UGF0Y2hwb2ludEFueUltbShWYWx1ZVJlcDo6Q29sZEFueSkp
OworICAgIFJVTih0ZXN0UGF0Y2hwb2ludEFueUltbShWYWx1ZVJlcDo6TGF0ZUNvbGRBbnkpKTsK
KyAgICBSVU4odGVzdFBhdGNocG9pbnRNYW55SW1tcygpKTsKKyAgICBSVU4odGVzdFBhdGNocG9p
bnRXaXRoUmVnaXN0ZXJSZXN1bHQoKSk7CisgICAgUlVOKHRlc3RQYXRjaHBvaW50V2l0aFN0YWNr
QXJndW1lbnRSZXN1bHQoKSk7CisgICAgUlVOKHRlc3RQYXRjaHBvaW50V2l0aEFueVJlc3VsdCgp
KTsKKyAgICBSVU4odGVzdFNpbXBsZUNoZWNrKCkpOworICAgIFJVTih0ZXN0Q2hlY2tGYWxzZSgp
KTsKKyAgICBSVU4odGVzdENoZWNrVHJ1ZSgpKTsKKyAgICBSVU4odGVzdENoZWNrTGVzc1RoYW4o
KSk7CisgICAgUlVOKHRlc3RDaGVja01lZ2FDb21ibygpKTsKKyAgICBSVU4odGVzdENoZWNrVHJp
Y2t5TWVnYUNvbWJvKCkpOworICAgIFJVTih0ZXN0Q2hlY2tUd29NZWdhQ29tYm9zKCkpOworICAg
IFJVTih0ZXN0Q2hlY2tUd29Ob25SZWR1bmRhbnRNZWdhQ29tYm9zKCkpOworICAgIFJVTih0ZXN0
Q2hlY2tBZGRJbW0oKSk7CisgICAgUlVOKHRlc3RDaGVja0FkZEltbUNvbW11dGUoKSk7CisgICAg
UlVOKHRlc3RDaGVja0FkZEltbVNvbWVSZWdpc3RlcigpKTsKKyAgICBSVU4odGVzdENoZWNrQWRk
KCkpOworICAgIFJVTih0ZXN0Q2hlY2tBZGQ2NCgpKTsKKyAgICBSVU4odGVzdENoZWNrQWRkRm9s
ZCgxMDAsIDIwMCkpOworICAgIFJVTih0ZXN0Q2hlY2tBZGRGb2xkRmFpbCgyMTQ3NDgzNjQ3LCAx
MDApKTsKKyAgICBSVU4odGVzdENoZWNrQWRkQXJndW1lbnRBbGlhc2luZzY0KCkpOworICAgIFJV
Tih0ZXN0Q2hlY2tBZGRBcmd1bWVudEFsaWFzaW5nMzIoKSk7CisgICAgUlVOKHRlc3RDaGVja0Fk
ZFNlbGZPdmVyZmxvdzY0KCkpOworICAgIFJVTih0ZXN0Q2hlY2tBZGRTZWxmT3ZlcmZsb3czMigp
KTsKKyAgICBSVU4odGVzdENoZWNrU3ViSW1tKCkpOworICAgIFJVTih0ZXN0Q2hlY2tTdWJCYWRJ
bW0oKSk7CisgICAgUlVOKHRlc3RDaGVja1N1YigpKTsKKyAgICBSVU4odGVzdENoZWNrU3ViNjQo
KSk7CisgICAgUlVOKHRlc3RDaGVja1N1YkZvbGQoMTAwLCAyMDApKTsKKyAgICBSVU4odGVzdENo
ZWNrU3ViRm9sZEZhaWwoLTIxNDc0ODM2NDcsIDEwMCkpOworICAgIFJVTih0ZXN0Q2hlY2tOZWco
KSk7CisgICAgUlVOKHRlc3RDaGVja05lZzY0KCkpOworICAgIFJVTih0ZXN0Q2hlY2tNdWwoKSk7
CisgICAgUlVOKHRlc3RDaGVja011bE1lbW9yeSgpKTsKKyAgICBSVU4odGVzdENoZWNrTXVsMigp
KTsKKyAgICBSVU4odGVzdENoZWNrTXVsNjQoKSk7CisgICAgUlVOKHRlc3RDaGVja011bEZvbGQo
MTAwLCAyMDApKTsKKyAgICBSVU4odGVzdENoZWNrTXVsRm9sZEZhaWwoMjE0NzQ4MzY0NywgMTAw
KSk7CisgICAgUlVOKHRlc3RDaGVja011bEFyZ3VtZW50QWxpYXNpbmc2NCgpKTsKKyAgICBSVU4o
dGVzdENoZWNrTXVsQXJndW1lbnRBbGlhc2luZzMyKCkpOworCisgICAgUlVOX0JJTkFSWShbXShp
bnQzMl90IGEsIGludDMyX3QgYikgeyB0ZXN0Q29tcGFyZShFcXVhbCwgYSwgYik7IH0sIGludDY0
T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKKyAgICBSVU5fQklOQVJZKFtdKGludDMyX3Qg
YSwgaW50MzJfdCBiKSB7IHRlc3RDb21wYXJlKE5vdEVxdWFsLCBhLCBiKTsgfSwgaW50NjRPcGVy
YW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlkoW10oaW50MzJfdCBhLCBp
bnQzMl90IGIpIHsgdGVzdENvbXBhcmUoTGVzc1RoYW4sIGEsIGIpOyB9LCBpbnQ2NE9wZXJhbmRz
KCksIGludDY0T3BlcmFuZHMoKSk7CisgICAgUlVOX0JJTkFSWShbXShpbnQzMl90IGEsIGludDMy
X3QgYikgeyB0ZXN0Q29tcGFyZShHcmVhdGVyVGhhbiwgYSwgYik7IH0sIGludDY0T3BlcmFuZHMo
KSwgaW50NjRPcGVyYW5kcygpKTsKKyAgICBSVU5fQklOQVJZKFtdKGludDMyX3QgYSwgaW50MzJf
dCBiKSB7IHRlc3RDb21wYXJlKExlc3NFcXVhbCwgYSwgYik7IH0sIGludDY0T3BlcmFuZHMoKSwg
aW50NjRPcGVyYW5kcygpKTsKKyAgICBSVU5fQklOQVJZKFtdKGludDMyX3QgYSwgaW50MzJfdCBi
KSB7IHRlc3RDb21wYXJlKEdyZWF0ZXJFcXVhbCwgYSwgYik7IH0sIGludDY0T3BlcmFuZHMoKSwg
aW50NjRPcGVyYW5kcygpKTsKKyAgICBSVU5fQklOQVJZKFtdKGludDMyX3QgYSwgaW50MzJfdCBi
KSB7IHRlc3RDb21wYXJlKEJlbG93LCBhLCBiKTsgfSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9w
ZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlkoW10oaW50MzJfdCBhLCBpbnQzMl90IGIpIHsgdGVz
dENvbXBhcmUoQWJvdmUsIGEsIGIpOyB9LCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMo
KSk7CisgICAgUlVOX0JJTkFSWShbXShpbnQzMl90IGEsIGludDMyX3QgYikgeyB0ZXN0Q29tcGFy
ZShCZWxvd0VxdWFsLCBhLCBiKTsgfSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkp
OworICAgIFJVTl9CSU5BUlkoW10oaW50MzJfdCBhLCBpbnQzMl90IGIpIHsgdGVzdENvbXBhcmUo
QWJvdmVFcXVhbCwgYSwgYik7IH0sIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsK
KyAgICBSVU5fQklOQVJZKFtdKGludDMyX3QgYSwgaW50MzJfdCBiKSB7IHRlc3RDb21wYXJlKEJp
dEFuZCwgYSwgYik7IH0sIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKKworICAg
IFJVTih0ZXN0RXF1YWxEb3VibGUoNDIsIDQyLCB0cnVlKSk7CisgICAgUlVOKHRlc3RFcXVhbERv
dWJsZSgwLCAtMCwgdHJ1ZSkpOworICAgIFJVTih0ZXN0RXF1YWxEb3VibGUoNDIsIDQzLCBmYWxz
ZSkpOworICAgIFJVTih0ZXN0RXF1YWxEb3VibGUoUE5hTiwgNDIsIGZhbHNlKSk7CisgICAgUlVO
KHRlc3RFcXVhbERvdWJsZSg0MiwgUE5hTiwgZmFsc2UpKTsKKyAgICBSVU4odGVzdEVxdWFsRG91
YmxlKFBOYU4sIFBOYU4sIGZhbHNlKSk7CisKKyAgICBhZGRMb2FkVGVzdHMoZmlsdGVyLCB0YXNr
cyk7CisKKyAgICBSVU4odGVzdFNwaWxsR1AoKSk7CisgICAgUlVOKHRlc3RTcGlsbEZQKCkpOwor
CisgICAgUlVOKHRlc3RJbnQzMlRvRG91YmxlUGFydGlhbFJlZ2lzdGVyU3RhbGwoKSk7CisgICAg
UlVOKHRlc3RJbnQzMlRvRG91YmxlUGFydGlhbFJlZ2lzdGVyV2l0aG91dFN0YWxsKCkpOworCisg
ICAgUlVOKHRlc3RDYWxsU2ltcGxlKDEsIDIpKTsKKyAgICBSVU4odGVzdENhbGxSYXJlKDEsIDIp
KTsKKyAgICBSVU4odGVzdENhbGxSYXJlTGl2ZSgxLCAyLCAzKSk7CisgICAgUlVOKHRlc3RDYWxs
U2ltcGxlUHVyZSgxLCAyKSk7CisgICAgUlVOKHRlc3RDYWxsRnVuY3Rpb25XaXRoSGVsbGFBcmd1
bWVudHMoKSk7CisgICAgUlVOKHRlc3RDYWxsRnVuY3Rpb25XaXRoSGVsbGFBcmd1bWVudHMyKCkp
OworICAgIFJVTih0ZXN0Q2FsbEZ1bmN0aW9uV2l0aEhlbGxhQXJndW1lbnRzMygpKTsKKworICAg
IFJVTih0ZXN0UmV0dXJuRG91YmxlKDAuMCkpOworICAgIFJVTih0ZXN0UmV0dXJuRG91YmxlKG5l
Z2F0aXZlWmVybygpKSk7CisgICAgUlVOKHRlc3RSZXR1cm5Eb3VibGUoNDIuNSkpOworICAgIFJV
Tl9VTkFSWSh0ZXN0UmV0dXJuRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7
CisKKyAgICBSVU4odGVzdENhbGxTaW1wbGVEb3VibGUoMSwgMikpOworICAgIFJVTih0ZXN0Q2Fs
bEZ1bmN0aW9uV2l0aEhlbGxhRG91YmxlQXJndW1lbnRzKCkpOworICAgIFJVTl9CSU5BUlkodGVz
dENhbGxTaW1wbGVGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGlu
Z1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTih0ZXN0Q2FsbEZ1bmN0aW9uV2l0aEhl
bGxhRmxvYXRBcmd1bWVudHMoKSk7CisKKyAgICBSVU4odGVzdExpbmVhclNjYW5XaXRoQ2FsbGVl
T25TdGFjaygpKTsKKworICAgIFJVTih0ZXN0Q2hpbGxEaXYoNCwgMiwgMikpOworICAgIFJVTih0
ZXN0Q2hpbGxEaXYoMSwgMCwgMCkpOworICAgIFJVTih0ZXN0Q2hpbGxEaXYoMCwgMCwgMCkpOwor
ICAgIFJVTih0ZXN0Q2hpbGxEaXYoMSwgLTEsIC0xKSk7CisgICAgUlVOKHRlc3RDaGlsbERpdigt
MjE0NzQ4MzY0NyAtIDEsIDAsIDApKTsKKyAgICBSVU4odGVzdENoaWxsRGl2KC0yMTQ3NDgzNjQ3
IC0gMSwgMSwgLTIxNDc0ODM2NDcgLSAxKSk7CisgICAgUlVOKHRlc3RDaGlsbERpdigtMjE0NzQ4
MzY0NyAtIDEsIC0xLCAtMjE0NzQ4MzY0NyAtIDEpKTsKKyAgICBSVU4odGVzdENoaWxsRGl2KC0y
MTQ3NDgzNjQ3IC0gMSwgMiwgLTEwNzM3NDE4MjQpKTsKKyAgICBSVU4odGVzdENoaWxsRGl2NjQo
NCwgMiwgMikpOworICAgIFJVTih0ZXN0Q2hpbGxEaXY2NCgxLCAwLCAwKSk7CisgICAgUlVOKHRl
c3RDaGlsbERpdjY0KDAsIDAsIDApKTsKKyAgICBSVU4odGVzdENoaWxsRGl2NjQoMSwgLTEsIC0x
KSk7CisgICAgUlVOKHRlc3RDaGlsbERpdjY0KC05MjIzMzcyMDM2ODU0Nzc1ODA3bGwgLSAxLCAw
LCAwKSk7CisgICAgUlVOKHRlc3RDaGlsbERpdjY0KC05MjIzMzcyMDM2ODU0Nzc1ODA3bGwgLSAx
LCAxLCAtOTIyMzM3MjAzNjg1NDc3NTgwN2xsIC0gMSkpOworICAgIFJVTih0ZXN0Q2hpbGxEaXY2
NCgtOTIyMzM3MjAzNjg1NDc3NTgwN2xsIC0gMSwgLTEsIC05MjIzMzcyMDM2ODU0Nzc1ODA3bGwg
LSAxKSk7CisgICAgUlVOKHRlc3RDaGlsbERpdjY0KC05MjIzMzcyMDM2ODU0Nzc1ODA3bGwgLSAx
LCAyLCAtNDYxMTY4NjAxODQyNzM4NzkwNCkpOworICAgIFJVTih0ZXN0Q2hpbGxEaXZUd2ljZSg0
LCAyLCA2LCAyLCA1KSk7CisgICAgUlVOKHRlc3RDaGlsbERpdlR3aWNlKDQsIDAsIDYsIDIsIDMp
KTsKKyAgICBSVU4odGVzdENoaWxsRGl2VHdpY2UoNCwgMiwgNiwgMCwgMikpOworCisgICAgUlVO
X1VOQVJZKHRlc3RNb2RBcmcsIGludDY0T3BlcmFuZHMoKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0
TW9kQXJncywgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5B
UlkodGVzdE1vZEltbXMsIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKKyAgICBS
VU5fVU5BUlkodGVzdE1vZEFyZzMyLCBpbnQzMk9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlko
dGVzdE1vZEFyZ3MzMiwgaW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkpOworICAgIFJV
Tl9CSU5BUlkodGVzdE1vZEltbXMzMiwgaW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkp
OworICAgIFJVTl9VTkFSWSh0ZXN0Q2hpbGxNb2RBcmcsIGludDY0T3BlcmFuZHMoKSk7CisgICAg
UlVOX0JJTkFSWSh0ZXN0Q2hpbGxNb2RBcmdzLCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFu
ZHMoKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0Q2hpbGxNb2RJbW1zLCBpbnQ2NE9wZXJhbmRzKCks
IGludDY0T3BlcmFuZHMoKSk7CisgICAgUlVOX1VOQVJZKHRlc3RDaGlsbE1vZEFyZzMyLCBpbnQz
Mk9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlkodGVzdENoaWxsTW9kQXJnczMyLCBpbnQzMk9w
ZXJhbmRzKCksIGludDMyT3BlcmFuZHMoKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0Q2hpbGxNb2RJ
bW1zMzIsIGludDMyT3BlcmFuZHMoKSwgaW50MzJPcGVyYW5kcygpKTsKKworICAgIFJVTih0ZXN0
U3dpdGNoKDAsIDEpKTsKKyAgICBSVU4odGVzdFN3aXRjaCgxLCAxKSk7CisgICAgUlVOKHRlc3RT
d2l0Y2goMiwgMSkpOworICAgIFJVTih0ZXN0U3dpdGNoKDIsIDIpKTsKKyAgICBSVU4odGVzdFN3
aXRjaCgxMCwgMSkpOworICAgIFJVTih0ZXN0U3dpdGNoKDEwLCAyKSk7CisgICAgUlVOKHRlc3RT
d2l0Y2goMTAwLCAxKSk7CisgICAgUlVOKHRlc3RTd2l0Y2goMTAwLCAxMDApKTsKKworICAgIFJV
Tih0ZXN0U3dpdGNoU2FtZUNhc2VBc0RlZmF1bHQoKSk7CisKKyAgICBSVU4odGVzdFN3aXRjaENo
aWxsRGl2KDAsIDEpKTsKKyAgICBSVU4odGVzdFN3aXRjaENoaWxsRGl2KDEsIDEpKTsKKyAgICBS
VU4odGVzdFN3aXRjaENoaWxsRGl2KDIsIDEpKTsKKyAgICBSVU4odGVzdFN3aXRjaENoaWxsRGl2
KDIsIDIpKTsKKyAgICBSVU4odGVzdFN3aXRjaENoaWxsRGl2KDEwLCAxKSk7CisgICAgUlVOKHRl
c3RTd2l0Y2hDaGlsbERpdigxMCwgMikpOworICAgIFJVTih0ZXN0U3dpdGNoQ2hpbGxEaXYoMTAw
LCAxKSk7CisgICAgUlVOKHRlc3RTd2l0Y2hDaGlsbERpdigxMDAsIDEwMCkpOworCisgICAgUlVO
KHRlc3RTd2l0Y2hUYXJnZXR0aW5nU2FtZUJsb2NrKCkpOworICAgIFJVTih0ZXN0U3dpdGNoVGFy
Z2V0dGluZ1NhbWVCbG9ja0ZvbGRQYXRoQ29uc3RhbnQoKSk7CisKKyAgICBSVU4odGVzdFRydW5j
KDApKTsKKyAgICBSVU4odGVzdFRydW5jKDEpKTsKKyAgICBSVU4odGVzdFRydW5jKC0xKSk7Cisg
ICAgUlVOKHRlc3RUcnVuYygxMDAwMDAwMDAwMDAwbGwpKTsKKyAgICBSVU4odGVzdFRydW5jKC0x
MDAwMDAwMDAwMDAwbGwpKTsKKyAgICBSVU4odGVzdFRydW5jRm9sZCgwKSk7CisgICAgUlVOKHRl
c3RUcnVuY0ZvbGQoMSkpOworICAgIFJVTih0ZXN0VHJ1bmNGb2xkKC0xKSk7CisgICAgUlVOKHRl
c3RUcnVuY0ZvbGQoMTAwMDAwMDAwMDAwMGxsKSk7CisgICAgUlVOKHRlc3RUcnVuY0ZvbGQoLTEw
MDAwMDAwMDAwMDBsbCkpOworICAgIAorICAgIFJVTih0ZXN0WkV4dDMyKDApKTsKKyAgICBSVU4o
dGVzdFpFeHQzMigxKSk7CisgICAgUlVOKHRlc3RaRXh0MzIoLTEpKTsKKyAgICBSVU4odGVzdFpF
eHQzMigxMDAwMDAwMDAwbGwpKTsKKyAgICBSVU4odGVzdFpFeHQzMigtMTAwMDAwMDAwMGxsKSk7
CisgICAgUlVOKHRlc3RaRXh0MzJGb2xkKDApKTsKKyAgICBSVU4odGVzdFpFeHQzMkZvbGQoMSkp
OworICAgIFJVTih0ZXN0WkV4dDMyRm9sZCgtMSkpOworICAgIFJVTih0ZXN0WkV4dDMyRm9sZCgx
MDAwMDAwMDAwbGwpKTsKKyAgICBSVU4odGVzdFpFeHQzMkZvbGQoLTEwMDAwMDAwMDBsbCkpOwor
CisgICAgUlVOKHRlc3RTRXh0MzIoMCkpOworICAgIFJVTih0ZXN0U0V4dDMyKDEpKTsKKyAgICBS
VU4odGVzdFNFeHQzMigtMSkpOworICAgIFJVTih0ZXN0U0V4dDMyKDEwMDAwMDAwMDBsbCkpOwor
ICAgIFJVTih0ZXN0U0V4dDMyKC0xMDAwMDAwMDAwbGwpKTsKKyAgICBSVU4odGVzdFNFeHQzMkZv
bGQoMCkpOworICAgIFJVTih0ZXN0U0V4dDMyRm9sZCgxKSk7CisgICAgUlVOKHRlc3RTRXh0MzJG
b2xkKC0xKSk7CisgICAgUlVOKHRlc3RTRXh0MzJGb2xkKDEwMDAwMDAwMDBsbCkpOworICAgIFJV
Tih0ZXN0U0V4dDMyRm9sZCgtMTAwMDAwMDAwMGxsKSk7CisKKyAgICBSVU4odGVzdFRydW5jWkV4
dDMyKDApKTsKKyAgICBSVU4odGVzdFRydW5jWkV4dDMyKDEpKTsKKyAgICBSVU4odGVzdFRydW5j
WkV4dDMyKC0xKSk7CisgICAgUlVOKHRlc3RUcnVuY1pFeHQzMigxMDAwMDAwMDAwbGwpKTsKKyAg
ICBSVU4odGVzdFRydW5jWkV4dDMyKC0xMDAwMDAwMDAwbGwpKTsKKyAgICBSVU4odGVzdFRydW5j
U0V4dDMyKDApKTsKKyAgICBSVU4odGVzdFRydW5jU0V4dDMyKDEpKTsKKyAgICBSVU4odGVzdFRy
dW5jU0V4dDMyKC0xKSk7CisgICAgUlVOKHRlc3RUcnVuY1NFeHQzMigxMDAwMDAwMDAwbGwpKTsK
KyAgICBSVU4odGVzdFRydW5jU0V4dDMyKC0xMDAwMDAwMDAwbGwpKTsKKworICAgIFJVTih0ZXN0
U0V4dDgoMCkpOworICAgIFJVTih0ZXN0U0V4dDgoMSkpOworICAgIFJVTih0ZXN0U0V4dDgoNDIp
KTsKKyAgICBSVU4odGVzdFNFeHQ4KC0xKSk7CisgICAgUlVOKHRlc3RTRXh0OCgweGZmKSk7Cisg
ICAgUlVOKHRlc3RTRXh0OCgweDEwMCkpOworICAgIFJVTih0ZXN0U0V4dDhGb2xkKDApKTsKKyAg
ICBSVU4odGVzdFNFeHQ4Rm9sZCgxKSk7CisgICAgUlVOKHRlc3RTRXh0OEZvbGQoNDIpKTsKKyAg
ICBSVU4odGVzdFNFeHQ4Rm9sZCgtMSkpOworICAgIFJVTih0ZXN0U0V4dDhGb2xkKDB4ZmYpKTsK
KyAgICBSVU4odGVzdFNFeHQ4Rm9sZCgweDEwMCkpOworICAgIFJVTih0ZXN0U0V4dDhTRXh0OCgw
KSk7CisgICAgUlVOKHRlc3RTRXh0OFNFeHQ4KDEpKTsKKyAgICBSVU4odGVzdFNFeHQ4U0V4dDgo
NDIpKTsKKyAgICBSVU4odGVzdFNFeHQ4U0V4dDgoLTEpKTsKKyAgICBSVU4odGVzdFNFeHQ4U0V4
dDgoMHhmZikpOworICAgIFJVTih0ZXN0U0V4dDhTRXh0OCgweDEwMCkpOworICAgIFJVTih0ZXN0
U0V4dDhTRXh0MTYoMCkpOworICAgIFJVTih0ZXN0U0V4dDhTRXh0MTYoMSkpOworICAgIFJVTih0
ZXN0U0V4dDhTRXh0MTYoNDIpKTsKKyAgICBSVU4odGVzdFNFeHQ4U0V4dDE2KC0xKSk7CisgICAg
UlVOKHRlc3RTRXh0OFNFeHQxNigweGZmKSk7CisgICAgUlVOKHRlc3RTRXh0OFNFeHQxNigweDEw
MCkpOworICAgIFJVTih0ZXN0U0V4dDhTRXh0MTYoMHhmZmZmKSk7CisgICAgUlVOKHRlc3RTRXh0
OFNFeHQxNigweDEwMDAwKSk7CisgICAgUlVOKHRlc3RTRXh0OEJpdEFuZCgwLCAwKSk7CisgICAg
UlVOKHRlc3RTRXh0OEJpdEFuZCgxLCAwKSk7CisgICAgUlVOKHRlc3RTRXh0OEJpdEFuZCg0Miwg
MCkpOworICAgIFJVTih0ZXN0U0V4dDhCaXRBbmQoLTEsIDApKTsKKyAgICBSVU4odGVzdFNFeHQ4
Qml0QW5kKDB4ZmYsIDApKTsKKyAgICBSVU4odGVzdFNFeHQ4Qml0QW5kKDB4MTAwLCAwKSk7Cisg
ICAgUlVOKHRlc3RTRXh0OEJpdEFuZCgweGZmZmYsIDApKTsKKyAgICBSVU4odGVzdFNFeHQ4Qml0
QW5kKDB4MTAwMDAsIDApKTsKKyAgICBSVU4odGVzdFNFeHQ4Qml0QW5kKDAsIDB4ZikpOworICAg
IFJVTih0ZXN0U0V4dDhCaXRBbmQoMSwgMHhmKSk7CisgICAgUlVOKHRlc3RTRXh0OEJpdEFuZCg0
MiwgMHhmKSk7CisgICAgUlVOKHRlc3RTRXh0OEJpdEFuZCgtMSwgMHhmKSk7CisgICAgUlVOKHRl
c3RTRXh0OEJpdEFuZCgweGZmLCAweGYpKTsKKyAgICBSVU4odGVzdFNFeHQ4Qml0QW5kKDB4MTAw
LCAweGYpKTsKKyAgICBSVU4odGVzdFNFeHQ4Qml0QW5kKDB4ZmZmZiwgMHhmKSk7CisgICAgUlVO
KHRlc3RTRXh0OEJpdEFuZCgweDEwMDAwLCAweGYpKTsKKyAgICBSVU4odGVzdFNFeHQ4Qml0QW5k
KDAsIDB4ZmYpKTsKKyAgICBSVU4odGVzdFNFeHQ4Qml0QW5kKDEsIDB4ZmYpKTsKKyAgICBSVU4o
dGVzdFNFeHQ4Qml0QW5kKDQyLCAweGZmKSk7CisgICAgUlVOKHRlc3RTRXh0OEJpdEFuZCgtMSwg
MHhmZikpOworICAgIFJVTih0ZXN0U0V4dDhCaXRBbmQoMHhmZiwgMHhmZikpOworICAgIFJVTih0
ZXN0U0V4dDhCaXRBbmQoMHgxMDAsIDB4ZmYpKTsKKyAgICBSVU4odGVzdFNFeHQ4Qml0QW5kKDB4
ZmZmZiwgMHhmZikpOworICAgIFJVTih0ZXN0U0V4dDhCaXRBbmQoMHgxMDAwMCwgMHhmZikpOwor
ICAgIFJVTih0ZXN0U0V4dDhCaXRBbmQoMCwgMHg4MCkpOworICAgIFJVTih0ZXN0U0V4dDhCaXRB
bmQoMSwgMHg4MCkpOworICAgIFJVTih0ZXN0U0V4dDhCaXRBbmQoNDIsIDB4ODApKTsKKyAgICBS
VU4odGVzdFNFeHQ4Qml0QW5kKC0xLCAweDgwKSk7CisgICAgUlVOKHRlc3RTRXh0OEJpdEFuZCgw
eGZmLCAweDgwKSk7CisgICAgUlVOKHRlc3RTRXh0OEJpdEFuZCgweDEwMCwgMHg4MCkpOworICAg
IFJVTih0ZXN0U0V4dDhCaXRBbmQoMHhmZmZmLCAweDgwKSk7CisgICAgUlVOKHRlc3RTRXh0OEJp
dEFuZCgweDEwMDAwLCAweDgwKSk7CisgICAgUlVOKHRlc3RCaXRBbmRTRXh0OCgwLCAweGYpKTsK
KyAgICBSVU4odGVzdEJpdEFuZFNFeHQ4KDEsIDB4ZikpOworICAgIFJVTih0ZXN0Qml0QW5kU0V4
dDgoNDIsIDB4ZikpOworICAgIFJVTih0ZXN0Qml0QW5kU0V4dDgoLTEsIDB4ZikpOworICAgIFJV
Tih0ZXN0Qml0QW5kU0V4dDgoMHhmZiwgMHhmKSk7CisgICAgUlVOKHRlc3RCaXRBbmRTRXh0OCgw
eDEwMCwgMHhmKSk7CisgICAgUlVOKHRlc3RCaXRBbmRTRXh0OCgweGZmZmYsIDB4ZikpOworICAg
IFJVTih0ZXN0Qml0QW5kU0V4dDgoMHgxMDAwMCwgMHhmKSk7CisgICAgUlVOKHRlc3RCaXRBbmRT
RXh0OCgwLCAweGZmKSk7CisgICAgUlVOKHRlc3RCaXRBbmRTRXh0OCgxLCAweGZmKSk7CisgICAg
UlVOKHRlc3RCaXRBbmRTRXh0OCg0MiwgMHhmZikpOworICAgIFJVTih0ZXN0Qml0QW5kU0V4dDgo
LTEsIDB4ZmYpKTsKKyAgICBSVU4odGVzdEJpdEFuZFNFeHQ4KDB4ZmYsIDB4ZmYpKTsKKyAgICBS
VU4odGVzdEJpdEFuZFNFeHQ4KDB4MTAwLCAweGZmKSk7CisgICAgUlVOKHRlc3RCaXRBbmRTRXh0
OCgweGZmZmYsIDB4ZmYpKTsKKyAgICBSVU4odGVzdEJpdEFuZFNFeHQ4KDB4MTAwMDAsIDB4ZmYp
KTsKKyAgICBSVU4odGVzdEJpdEFuZFNFeHQ4KDAsIDB4ZmZmKSk7CisgICAgUlVOKHRlc3RCaXRB
bmRTRXh0OCgxLCAweGZmZikpOworICAgIFJVTih0ZXN0Qml0QW5kU0V4dDgoNDIsIDB4ZmZmKSk7
CisgICAgUlVOKHRlc3RCaXRBbmRTRXh0OCgtMSwgMHhmZmYpKTsKKyAgICBSVU4odGVzdEJpdEFu
ZFNFeHQ4KDB4ZmYsIDB4ZmZmKSk7CisgICAgUlVOKHRlc3RCaXRBbmRTRXh0OCgweDEwMCwgMHhm
ZmYpKTsKKyAgICBSVU4odGVzdEJpdEFuZFNFeHQ4KDB4ZmZmZiwgMHhmZmYpKTsKKyAgICBSVU4o
dGVzdEJpdEFuZFNFeHQ4KDB4MTAwMDAsIDB4ZmZmKSk7CisKKyAgICBSVU4odGVzdFNFeHQxNigw
KSk7CisgICAgUlVOKHRlc3RTRXh0MTYoMSkpOworICAgIFJVTih0ZXN0U0V4dDE2KDQyKSk7Cisg
ICAgUlVOKHRlc3RTRXh0MTYoLTEpKTsKKyAgICBSVU4odGVzdFNFeHQxNigweGZmZmYpKTsKKyAg
ICBSVU4odGVzdFNFeHQxNigweDEwMDAwKSk7CisgICAgUlVOKHRlc3RTRXh0MTZGb2xkKDApKTsK
KyAgICBSVU4odGVzdFNFeHQxNkZvbGQoMSkpOworICAgIFJVTih0ZXN0U0V4dDE2Rm9sZCg0Mikp
OworICAgIFJVTih0ZXN0U0V4dDE2Rm9sZCgtMSkpOworICAgIFJVTih0ZXN0U0V4dDE2Rm9sZCgw
eGZmZmYpKTsKKyAgICBSVU4odGVzdFNFeHQxNkZvbGQoMHgxMDAwMCkpOworICAgIFJVTih0ZXN0
U0V4dDE2U0V4dDgoMCkpOworICAgIFJVTih0ZXN0U0V4dDE2U0V4dDgoMSkpOworICAgIFJVTih0
ZXN0U0V4dDE2U0V4dDgoNDIpKTsKKyAgICBSVU4odGVzdFNFeHQxNlNFeHQ4KC0xKSk7CisgICAg
UlVOKHRlc3RTRXh0MTZTRXh0OCgweGZmZmYpKTsKKyAgICBSVU4odGVzdFNFeHQxNlNFeHQ4KDB4
MTAwMDApKTsKKyAgICBSVU4odGVzdFNFeHQxNlNFeHQxNigwKSk7CisgICAgUlVOKHRlc3RTRXh0
MTZTRXh0MTYoMSkpOworICAgIFJVTih0ZXN0U0V4dDE2U0V4dDE2KDQyKSk7CisgICAgUlVOKHRl
c3RTRXh0MTZTRXh0MTYoLTEpKTsKKyAgICBSVU4odGVzdFNFeHQxNlNFeHQxNigweGZmZmYpKTsK
KyAgICBSVU4odGVzdFNFeHQxNlNFeHQxNigweDEwMDAwKSk7CisgICAgUlVOKHRlc3RTRXh0MTZT
RXh0MTYoMHhmZmZmZmYpKTsKKyAgICBSVU4odGVzdFNFeHQxNlNFeHQxNigweDEwMDAwMDApKTsK
KyAgICBSVU4odGVzdFNFeHQxNkJpdEFuZCgwLCAwKSk7CisgICAgUlVOKHRlc3RTRXh0MTZCaXRB
bmQoMSwgMCkpOworICAgIFJVTih0ZXN0U0V4dDE2Qml0QW5kKDQyLCAwKSk7CisgICAgUlVOKHRl
c3RTRXh0MTZCaXRBbmQoLTEsIDApKTsKKyAgICBSVU4odGVzdFNFeHQxNkJpdEFuZCgweGZmZmYs
IDApKTsKKyAgICBSVU4odGVzdFNFeHQxNkJpdEFuZCgweDEwMDAwLCAwKSk7CisgICAgUlVOKHRl
c3RTRXh0MTZCaXRBbmQoMHhmZmZmZmYsIDApKTsKKyAgICBSVU4odGVzdFNFeHQxNkJpdEFuZCgw
eDEwMDAwMDAsIDApKTsKKyAgICBSVU4odGVzdFNFeHQxNkJpdEFuZCgwLCAweGYpKTsKKyAgICBS
VU4odGVzdFNFeHQxNkJpdEFuZCgxLCAweGYpKTsKKyAgICBSVU4odGVzdFNFeHQxNkJpdEFuZCg0
MiwgMHhmKSk7CisgICAgUlVOKHRlc3RTRXh0MTZCaXRBbmQoLTEsIDB4ZikpOworICAgIFJVTih0
ZXN0U0V4dDE2Qml0QW5kKDB4ZmZmZiwgMHhmKSk7CisgICAgUlVOKHRlc3RTRXh0MTZCaXRBbmQo
MHgxMDAwMCwgMHhmKSk7CisgICAgUlVOKHRlc3RTRXh0MTZCaXRBbmQoMHhmZmZmZmYsIDB4Zikp
OworICAgIFJVTih0ZXN0U0V4dDE2Qml0QW5kKDB4MTAwMDAwMCwgMHhmKSk7CisgICAgUlVOKHRl
c3RTRXh0MTZCaXRBbmQoMCwgMHhmZmZmKSk7CisgICAgUlVOKHRlc3RTRXh0MTZCaXRBbmQoMSwg
MHhmZmZmKSk7CisgICAgUlVOKHRlc3RTRXh0MTZCaXRBbmQoNDIsIDB4ZmZmZikpOworICAgIFJV
Tih0ZXN0U0V4dDE2Qml0QW5kKC0xLCAweGZmZmYpKTsKKyAgICBSVU4odGVzdFNFeHQxNkJpdEFu
ZCgweGZmZmYsIDB4ZmZmZikpOworICAgIFJVTih0ZXN0U0V4dDE2Qml0QW5kKDB4MTAwMDAsIDB4
ZmZmZikpOworICAgIFJVTih0ZXN0U0V4dDE2Qml0QW5kKDB4ZmZmZmZmLCAweGZmZmYpKTsKKyAg
ICBSVU4odGVzdFNFeHQxNkJpdEFuZCgweDEwMDAwMDAsIDB4ZmZmZikpOworICAgIFJVTih0ZXN0
U0V4dDE2Qml0QW5kKDAsIDB4ODAwMCkpOworICAgIFJVTih0ZXN0U0V4dDE2Qml0QW5kKDEsIDB4
ODAwMCkpOworICAgIFJVTih0ZXN0U0V4dDE2Qml0QW5kKDQyLCAweDgwMDApKTsKKyAgICBSVU4o
dGVzdFNFeHQxNkJpdEFuZCgtMSwgMHg4MDAwKSk7CisgICAgUlVOKHRlc3RTRXh0MTZCaXRBbmQo
MHhmZmZmLCAweDgwMDApKTsKKyAgICBSVU4odGVzdFNFeHQxNkJpdEFuZCgweDEwMDAwLCAweDgw
MDApKTsKKyAgICBSVU4odGVzdFNFeHQxNkJpdEFuZCgweGZmZmZmZiwgMHg4MDAwKSk7CisgICAg
UlVOKHRlc3RTRXh0MTZCaXRBbmQoMHgxMDAwMDAwLCAweDgwMDApKTsKKyAgICBSVU4odGVzdEJp
dEFuZFNFeHQxNigwLCAweGYpKTsKKyAgICBSVU4odGVzdEJpdEFuZFNFeHQxNigxLCAweGYpKTsK
KyAgICBSVU4odGVzdEJpdEFuZFNFeHQxNig0MiwgMHhmKSk7CisgICAgUlVOKHRlc3RCaXRBbmRT
RXh0MTYoLTEsIDB4ZikpOworICAgIFJVTih0ZXN0Qml0QW5kU0V4dDE2KDB4ZmZmZiwgMHhmKSk7
CisgICAgUlVOKHRlc3RCaXRBbmRTRXh0MTYoMHgxMDAwMCwgMHhmKSk7CisgICAgUlVOKHRlc3RC
aXRBbmRTRXh0MTYoMHhmZmZmZmYsIDB4ZikpOworICAgIFJVTih0ZXN0Qml0QW5kU0V4dDE2KDB4
MTAwMDAwMCwgMHhmKSk7CisgICAgUlVOKHRlc3RCaXRBbmRTRXh0MTYoMCwgMHhmZmZmKSk7Cisg
ICAgUlVOKHRlc3RCaXRBbmRTRXh0MTYoMSwgMHhmZmZmKSk7CisgICAgUlVOKHRlc3RCaXRBbmRT
RXh0MTYoNDIsIDB4ZmZmZikpOworICAgIFJVTih0ZXN0Qml0QW5kU0V4dDE2KC0xLCAweGZmZmYp
KTsKKyAgICBSVU4odGVzdEJpdEFuZFNFeHQxNigweGZmZmYsIDB4ZmZmZikpOworICAgIFJVTih0
ZXN0Qml0QW5kU0V4dDE2KDB4MTAwMDAsIDB4ZmZmZikpOworICAgIFJVTih0ZXN0Qml0QW5kU0V4
dDE2KDB4ZmZmZmZmLCAweGZmZmYpKTsKKyAgICBSVU4odGVzdEJpdEFuZFNFeHQxNigweDEwMDAw
MDAsIDB4ZmZmZikpOworICAgIFJVTih0ZXN0Qml0QW5kU0V4dDE2KDAsIDB4ZmZmZmYpKTsKKyAg
ICBSVU4odGVzdEJpdEFuZFNFeHQxNigxLCAweGZmZmZmKSk7CisgICAgUlVOKHRlc3RCaXRBbmRT
RXh0MTYoNDIsIDB4ZmZmZmYpKTsKKyAgICBSVU4odGVzdEJpdEFuZFNFeHQxNigtMSwgMHhmZmZm
ZikpOworICAgIFJVTih0ZXN0Qml0QW5kU0V4dDE2KDB4ZmZmZiwgMHhmZmZmZikpOworICAgIFJV
Tih0ZXN0Qml0QW5kU0V4dDE2KDB4MTAwMDAsIDB4ZmZmZmYpKTsKKyAgICBSVU4odGVzdEJpdEFu
ZFNFeHQxNigweGZmZmZmZiwgMHhmZmZmZikpOworICAgIFJVTih0ZXN0Qml0QW5kU0V4dDE2KDB4
MTAwMDAwMCwgMHhmZmZmZikpOworCisgICAgUlVOKHRlc3RTRXh0MzJCaXRBbmQoMCwgMCkpOwor
ICAgIFJVTih0ZXN0U0V4dDMyQml0QW5kKDEsIDApKTsKKyAgICBSVU4odGVzdFNFeHQzMkJpdEFu
ZCg0MiwgMCkpOworICAgIFJVTih0ZXN0U0V4dDMyQml0QW5kKC0xLCAwKSk7CisgICAgUlVOKHRl
c3RTRXh0MzJCaXRBbmQoMHg4MDAwMDAwMCwgMCkpOworICAgIFJVTih0ZXN0U0V4dDMyQml0QW5k
KDAsIDB4ZikpOworICAgIFJVTih0ZXN0U0V4dDMyQml0QW5kKDEsIDB4ZikpOworICAgIFJVTih0
ZXN0U0V4dDMyQml0QW5kKDQyLCAweGYpKTsKKyAgICBSVU4odGVzdFNFeHQzMkJpdEFuZCgtMSwg
MHhmKSk7CisgICAgUlVOKHRlc3RTRXh0MzJCaXRBbmQoMHg4MDAwMDAwMCwgMHhmKSk7CisgICAg
UlVOKHRlc3RTRXh0MzJCaXRBbmQoMCwgMHg4MDAwMDAwMCkpOworICAgIFJVTih0ZXN0U0V4dDMy
Qml0QW5kKDEsIDB4ODAwMDAwMDApKTsKKyAgICBSVU4odGVzdFNFeHQzMkJpdEFuZCg0MiwgMHg4
MDAwMDAwMCkpOworICAgIFJVTih0ZXN0U0V4dDMyQml0QW5kKC0xLCAweDgwMDAwMDAwKSk7Cisg
ICAgUlVOKHRlc3RTRXh0MzJCaXRBbmQoMHg4MDAwMDAwMCwgMHg4MDAwMDAwMCkpOworICAgIFJV
Tih0ZXN0Qml0QW5kU0V4dDMyKDAsIDB4ZikpOworICAgIFJVTih0ZXN0Qml0QW5kU0V4dDMyKDEs
IDB4ZikpOworICAgIFJVTih0ZXN0Qml0QW5kU0V4dDMyKDQyLCAweGYpKTsKKyAgICBSVU4odGVz
dEJpdEFuZFNFeHQzMigtMSwgMHhmKSk7CisgICAgUlVOKHRlc3RCaXRBbmRTRXh0MzIoMHhmZmZm
LCAweGYpKTsKKyAgICBSVU4odGVzdEJpdEFuZFNFeHQzMigweDEwMDAwLCAweGYpKTsKKyAgICBS
VU4odGVzdEJpdEFuZFNFeHQzMigweGZmZmZmZiwgMHhmKSk7CisgICAgUlVOKHRlc3RCaXRBbmRT
RXh0MzIoMHgxMDAwMDAwLCAweGYpKTsKKyAgICBSVU4odGVzdEJpdEFuZFNFeHQzMigwLCAweGZm
ZmYwMDAwMDAwMGxsdSkpOworICAgIFJVTih0ZXN0Qml0QW5kU0V4dDMyKDEsIDB4ZmZmZjAwMDAw
MDAwbGx1KSk7CisgICAgUlVOKHRlc3RCaXRBbmRTRXh0MzIoNDIsIDB4ZmZmZjAwMDAwMDAwbGx1
KSk7CisgICAgUlVOKHRlc3RCaXRBbmRTRXh0MzIoLTEsIDB4ZmZmZjAwMDAwMDAwbGx1KSk7Cisg
ICAgUlVOKHRlc3RCaXRBbmRTRXh0MzIoMHg4MDAwMDAwMCwgMHhmZmZmMDAwMDAwMDBsbHUpKTsK
KworICAgIFJVTih0ZXN0QmFzaWNTZWxlY3QoKSk7CisgICAgUlVOKHRlc3RTZWxlY3RUZXN0KCkp
OworICAgIFJVTih0ZXN0U2VsZWN0Q29tcGFyZURvdWJsZSgpKTsKKyAgICBSVU5fQklOQVJZKHRl
c3RTZWxlY3RDb21wYXJlRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxv
YXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RTZWxlY3RD
b21wYXJlRmxvYXRUb0RvdWJsZSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9h
dGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTih0ZXN0U2VsZWN0RG91YmxlKCkp
OworICAgIFJVTih0ZXN0U2VsZWN0RG91YmxlVGVzdCgpKTsKKyAgICBSVU4odGVzdFNlbGVjdERv
dWJsZUNvbXBhcmVEb3VibGUoKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0U2VsZWN0RG91YmxlQ29t
cGFyZUZsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRP
cGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0U2VsZWN0RmxvYXRDb21wYXJl
RmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJh
bmRzPGZsb2F0PigpKTsKKyAgICBSVU4odGVzdFNlbGVjdERvdWJsZUNvbXBhcmVEb3VibGVXaXRo
QWxpYXNpbmcoKSk7CisgICAgUlVOKHRlc3RTZWxlY3RGbG9hdENvbXBhcmVGbG9hdFdpdGhBbGlh
c2luZygpKTsKKyAgICBSVU4odGVzdFNlbGVjdEZvbGQoNDIpKTsKKyAgICBSVU4odGVzdFNlbGVj
dEZvbGQoNDMpKTsKKyAgICBSVU4odGVzdFNlbGVjdEludmVydCgpKTsKKyAgICBSVU4odGVzdENo
ZWNrU2VsZWN0KCkpOworICAgIFJVTih0ZXN0Q2hlY2tTZWxlY3RDaGVja1NlbGVjdCgpKTsKKyAg
ICBSVU4odGVzdENoZWNrU2VsZWN0QW5kQ1NFKCkpOworICAgIFJVTl9CSU5BUlkodGVzdFBvd0Rv
dWJsZUJ5SW50ZWdlckxvb3AsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCksIGludDY0
T3BlcmFuZHMoKSk7CisKKyAgICBSVU4odGVzdFRydW5jT3JIaWdoKCkpOworICAgIFJVTih0ZXN0
VHJ1bmNPckxvdygpKTsKKyAgICBSVU4odGVzdEJpdEFuZE9ySGlnaCgpKTsKKyAgICBSVU4odGVz
dEJpdEFuZE9yTG93KCkpOworCisgICAgUlVOKHRlc3RCcmFuY2g2NEVxdWFsKDAsIDApKTsKKyAg
ICBSVU4odGVzdEJyYW5jaDY0RXF1YWwoMSwgMSkpOworICAgIFJVTih0ZXN0QnJhbmNoNjRFcXVh
bCgtMSwgLTEpKTsKKyAgICBSVU4odGVzdEJyYW5jaDY0RXF1YWwoMSwgLTEpKTsKKyAgICBSVU4o
dGVzdEJyYW5jaDY0RXF1YWwoLTEsIDEpKTsKKyAgICBSVU4odGVzdEJyYW5jaDY0RXF1YWxJbW0o
MCwgMCkpOworICAgIFJVTih0ZXN0QnJhbmNoNjRFcXVhbEltbSgxLCAxKSk7CisgICAgUlVOKHRl
c3RCcmFuY2g2NEVxdWFsSW1tKC0xLCAtMSkpOworICAgIFJVTih0ZXN0QnJhbmNoNjRFcXVhbElt
bSgxLCAtMSkpOworICAgIFJVTih0ZXN0QnJhbmNoNjRFcXVhbEltbSgtMSwgMSkpOworICAgIFJV
Tih0ZXN0QnJhbmNoNjRFcXVhbE1lbSgwLCAwKSk7CisgICAgUlVOKHRlc3RCcmFuY2g2NEVxdWFs
TWVtKDEsIDEpKTsKKyAgICBSVU4odGVzdEJyYW5jaDY0RXF1YWxNZW0oLTEsIC0xKSk7CisgICAg
UlVOKHRlc3RCcmFuY2g2NEVxdWFsTWVtKDEsIC0xKSk7CisgICAgUlVOKHRlc3RCcmFuY2g2NEVx
dWFsTWVtKC0xLCAxKSk7CisgICAgUlVOKHRlc3RCcmFuY2g2NEVxdWFsTWVtSW1tKDAsIDApKTsK
KyAgICBSVU4odGVzdEJyYW5jaDY0RXF1YWxNZW1JbW0oMSwgMSkpOworICAgIFJVTih0ZXN0QnJh
bmNoNjRFcXVhbE1lbUltbSgtMSwgLTEpKTsKKyAgICBSVU4odGVzdEJyYW5jaDY0RXF1YWxNZW1J
bW0oMSwgLTEpKTsKKyAgICBSVU4odGVzdEJyYW5jaDY0RXF1YWxNZW1JbW0oLTEsIDEpKTsKKwor
ICAgIFJVTih0ZXN0U3RvcmU4TG9hZDhaKDApKTsKKyAgICBSVU4odGVzdFN0b3JlOExvYWQ4Wigx
MjMpKTsKKyAgICBSVU4odGVzdFN0b3JlOExvYWQ4WigxMjM0NSkpOworICAgIFJVTih0ZXN0U3Rv
cmU4TG9hZDhaKC0xMjMpKTsKKworICAgIFJVTih0ZXN0U3RvcmUxNkxvYWQxNlooMCkpOworICAg
IFJVTih0ZXN0U3RvcmUxNkxvYWQxNlooMTIzKSk7CisgICAgUlVOKHRlc3RTdG9yZTE2TG9hZDE2
WigxMjM0NSkpOworICAgIFJVTih0ZXN0U3RvcmUxNkxvYWQxNlooMTIzNDU2NzgpKTsKKyAgICBS
VU4odGVzdFN0b3JlMTZMb2FkMTZaKC0xMjMpKTsKKworICAgIFJVTih0ZXN0U1NoclNobDMyKDQy
LCAyNCwgMjQpKTsKKyAgICBSVU4odGVzdFNTaHJTaGwzMigtNDIsIDI0LCAyNCkpOworICAgIFJV
Tih0ZXN0U1NoclNobDMyKDQyMDAsIDI0LCAyNCkpOworICAgIFJVTih0ZXN0U1NoclNobDMyKC00
MjAwLCAyNCwgMjQpKTsKKyAgICBSVU4odGVzdFNTaHJTaGwzMig0MjAwMDAwLCAyNCwgMjQpKTsK
KyAgICBSVU4odGVzdFNTaHJTaGwzMigtNDIwMDAwMCwgMjQsIDI0KSk7CisKKyAgICBSVU4odGVz
dFNTaHJTaGwzMig0MiwgMTYsIDE2KSk7CisgICAgUlVOKHRlc3RTU2hyU2hsMzIoLTQyLCAxNiwg
MTYpKTsKKyAgICBSVU4odGVzdFNTaHJTaGwzMig0MjAwLCAxNiwgMTYpKTsKKyAgICBSVU4odGVz
dFNTaHJTaGwzMigtNDIwMCwgMTYsIDE2KSk7CisgICAgUlVOKHRlc3RTU2hyU2hsMzIoNDIwMDAw
MCwgMTYsIDE2KSk7CisgICAgUlVOKHRlc3RTU2hyU2hsMzIoLTQyMDAwMDAsIDE2LCAxNikpOwor
CisgICAgUlVOKHRlc3RTU2hyU2hsMzIoNDIsIDgsIDgpKTsKKyAgICBSVU4odGVzdFNTaHJTaGwz
MigtNDIsIDgsIDgpKTsKKyAgICBSVU4odGVzdFNTaHJTaGwzMig0MjAwLCA4LCA4KSk7CisgICAg
UlVOKHRlc3RTU2hyU2hsMzIoLTQyMDAsIDgsIDgpKTsKKyAgICBSVU4odGVzdFNTaHJTaGwzMig0
MjAwMDAwLCA4LCA4KSk7CisgICAgUlVOKHRlc3RTU2hyU2hsMzIoLTQyMDAwMDAsIDgsIDgpKTsK
KyAgICBSVU4odGVzdFNTaHJTaGwzMig0MjAwMDAwMDAsIDgsIDgpKTsKKyAgICBSVU4odGVzdFNT
aHJTaGwzMigtNDIwMDAwMDAwLCA4LCA4KSk7CisKKyAgICBSVU4odGVzdFNTaHJTaGw2NCg0Miwg
NTYsIDU2KSk7CisgICAgUlVOKHRlc3RTU2hyU2hsNjQoLTQyLCA1NiwgNTYpKTsKKyAgICBSVU4o
dGVzdFNTaHJTaGw2NCg0MjAwLCA1NiwgNTYpKTsKKyAgICBSVU4odGVzdFNTaHJTaGw2NCgtNDIw
MCwgNTYsIDU2KSk7CisgICAgUlVOKHRlc3RTU2hyU2hsNjQoNDIwMDAwMCwgNTYsIDU2KSk7Cisg
ICAgUlVOKHRlc3RTU2hyU2hsNjQoLTQyMDAwMDAsIDU2LCA1NikpOworICAgIFJVTih0ZXN0U1No
clNobDY0KDQyMDAwMDAwMCwgNTYsIDU2KSk7CisgICAgUlVOKHRlc3RTU2hyU2hsNjQoLTQyMDAw
MDAwMCwgNTYsIDU2KSk7CisgICAgUlVOKHRlc3RTU2hyU2hsNjQoNDIwMDAwMDAwMDAsIDU2LCA1
NikpOworICAgIFJVTih0ZXN0U1NoclNobDY0KC00MjAwMDAwMDAwMCwgNTYsIDU2KSk7CisKKyAg
ICBSVU4odGVzdFNTaHJTaGw2NCg0MiwgNDgsIDQ4KSk7CisgICAgUlVOKHRlc3RTU2hyU2hsNjQo
LTQyLCA0OCwgNDgpKTsKKyAgICBSVU4odGVzdFNTaHJTaGw2NCg0MjAwLCA0OCwgNDgpKTsKKyAg
ICBSVU4odGVzdFNTaHJTaGw2NCgtNDIwMCwgNDgsIDQ4KSk7CisgICAgUlVOKHRlc3RTU2hyU2hs
NjQoNDIwMDAwMCwgNDgsIDQ4KSk7CisgICAgUlVOKHRlc3RTU2hyU2hsNjQoLTQyMDAwMDAsIDQ4
LCA0OCkpOworICAgIFJVTih0ZXN0U1NoclNobDY0KDQyMDAwMDAwMCwgNDgsIDQ4KSk7CisgICAg
UlVOKHRlc3RTU2hyU2hsNjQoLTQyMDAwMDAwMCwgNDgsIDQ4KSk7CisgICAgUlVOKHRlc3RTU2hy
U2hsNjQoNDIwMDAwMDAwMDAsIDQ4LCA0OCkpOworICAgIFJVTih0ZXN0U1NoclNobDY0KC00MjAw
MDAwMDAwMCwgNDgsIDQ4KSk7CisKKyAgICBSVU4odGVzdFNTaHJTaGw2NCg0MiwgMzIsIDMyKSk7
CisgICAgUlVOKHRlc3RTU2hyU2hsNjQoLTQyLCAzMiwgMzIpKTsKKyAgICBSVU4odGVzdFNTaHJT
aGw2NCg0MjAwLCAzMiwgMzIpKTsKKyAgICBSVU4odGVzdFNTaHJTaGw2NCgtNDIwMCwgMzIsIDMy
KSk7CisgICAgUlVOKHRlc3RTU2hyU2hsNjQoNDIwMDAwMCwgMzIsIDMyKSk7CisgICAgUlVOKHRl
c3RTU2hyU2hsNjQoLTQyMDAwMDAsIDMyLCAzMikpOworICAgIFJVTih0ZXN0U1NoclNobDY0KDQy
MDAwMDAwMCwgMzIsIDMyKSk7CisgICAgUlVOKHRlc3RTU2hyU2hsNjQoLTQyMDAwMDAwMCwgMzIs
IDMyKSk7CisgICAgUlVOKHRlc3RTU2hyU2hsNjQoNDIwMDAwMDAwMDAsIDMyLCAzMikpOworICAg
IFJVTih0ZXN0U1NoclNobDY0KC00MjAwMDAwMDAwMCwgMzIsIDMyKSk7CisKKyAgICBSVU4odGVz
dFNTaHJTaGw2NCg0MiwgMjQsIDI0KSk7CisgICAgUlVOKHRlc3RTU2hyU2hsNjQoLTQyLCAyNCwg
MjQpKTsKKyAgICBSVU4odGVzdFNTaHJTaGw2NCg0MjAwLCAyNCwgMjQpKTsKKyAgICBSVU4odGVz
dFNTaHJTaGw2NCgtNDIwMCwgMjQsIDI0KSk7CisgICAgUlVOKHRlc3RTU2hyU2hsNjQoNDIwMDAw
MCwgMjQsIDI0KSk7CisgICAgUlVOKHRlc3RTU2hyU2hsNjQoLTQyMDAwMDAsIDI0LCAyNCkpOwor
ICAgIFJVTih0ZXN0U1NoclNobDY0KDQyMDAwMDAwMCwgMjQsIDI0KSk7CisgICAgUlVOKHRlc3RT
U2hyU2hsNjQoLTQyMDAwMDAwMCwgMjQsIDI0KSk7CisgICAgUlVOKHRlc3RTU2hyU2hsNjQoNDIw
MDAwMDAwMDAsIDI0LCAyNCkpOworICAgIFJVTih0ZXN0U1NoclNobDY0KC00MjAwMDAwMDAwMCwg
MjQsIDI0KSk7CisKKyAgICBSVU4odGVzdFNTaHJTaGw2NCg0MiwgMTYsIDE2KSk7CisgICAgUlVO
KHRlc3RTU2hyU2hsNjQoLTQyLCAxNiwgMTYpKTsKKyAgICBSVU4odGVzdFNTaHJTaGw2NCg0MjAw
LCAxNiwgMTYpKTsKKyAgICBSVU4odGVzdFNTaHJTaGw2NCgtNDIwMCwgMTYsIDE2KSk7CisgICAg
UlVOKHRlc3RTU2hyU2hsNjQoNDIwMDAwMCwgMTYsIDE2KSk7CisgICAgUlVOKHRlc3RTU2hyU2hs
NjQoLTQyMDAwMDAsIDE2LCAxNikpOworICAgIFJVTih0ZXN0U1NoclNobDY0KDQyMDAwMDAwMCwg
MTYsIDE2KSk7CisgICAgUlVOKHRlc3RTU2hyU2hsNjQoLTQyMDAwMDAwMCwgMTYsIDE2KSk7Cisg
ICAgUlVOKHRlc3RTU2hyU2hsNjQoNDIwMDAwMDAwMDAsIDE2LCAxNikpOworICAgIFJVTih0ZXN0
U1NoclNobDY0KC00MjAwMDAwMDAwMCwgMTYsIDE2KSk7CisKKyAgICBSVU4odGVzdFNTaHJTaGw2
NCg0MiwgOCwgOCkpOworICAgIFJVTih0ZXN0U1NoclNobDY0KC00MiwgOCwgOCkpOworICAgIFJV
Tih0ZXN0U1NoclNobDY0KDQyMDAsIDgsIDgpKTsKKyAgICBSVU4odGVzdFNTaHJTaGw2NCgtNDIw
MCwgOCwgOCkpOworICAgIFJVTih0ZXN0U1NoclNobDY0KDQyMDAwMDAsIDgsIDgpKTsKKyAgICBS
VU4odGVzdFNTaHJTaGw2NCgtNDIwMDAwMCwgOCwgOCkpOworICAgIFJVTih0ZXN0U1NoclNobDY0
KDQyMDAwMDAwMCwgOCwgOCkpOworICAgIFJVTih0ZXN0U1NoclNobDY0KC00MjAwMDAwMDAsIDgs
IDgpKTsKKyAgICBSVU4odGVzdFNTaHJTaGw2NCg0MjAwMDAwMDAwMCwgOCwgOCkpOworICAgIFJV
Tih0ZXN0U1NoclNobDY0KC00MjAwMDAwMDAwMCwgOCwgOCkpOworCisgICAgUlVOKHRlc3RDaGVj
a011bDY0U1NocigpKTsKKworICAgIFJVTl9CSU5BUlkodGVzdFJvdFIsIGludDMyT3BlcmFuZHMo
KSwgaW50MzJPcGVyYW5kcygpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RSb3RSLCBpbnQ2NE9wZXJh
bmRzKCksIGludDMyT3BlcmFuZHMoKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0Um90TCwgaW50MzJP
cGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlkodGVzdFJvdEwsIGlu
dDY0T3BlcmFuZHMoKSwgaW50MzJPcGVyYW5kcygpKTsKKworICAgIFJVTl9CSU5BUlkodGVzdFJv
dFJXaXRoSW1tU2hpZnQsIGludDMyT3BlcmFuZHMoKSwgaW50MzJPcGVyYW5kcygpKTsKKyAgICBS
VU5fQklOQVJZKHRlc3RSb3RSV2l0aEltbVNoaWZ0LCBpbnQ2NE9wZXJhbmRzKCksIGludDMyT3Bl
cmFuZHMoKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0Um90TFdpdGhJbW1TaGlmdCwgaW50MzJPcGVy
YW5kcygpLCBpbnQzMk9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlkodGVzdFJvdExXaXRoSW1t
U2hpZnQsIGludDY0T3BlcmFuZHMoKSwgaW50MzJPcGVyYW5kcygpKTsKKworICAgIFJVTih0ZXN0
Q29tcHV0ZURpdmlzaW9uTWFnaWM8aW50MzJfdD4oMiwgLTIxNDc0ODM2NDcsIDApKTsKKyAgICBS
VU4odGVzdFRyaXZpYWxJbmZpbml0ZUxvb3AoKSk7CisgICAgUlVOKHRlc3RGb2xkUGF0aEVxdWFs
KCkpOworICAgIAorICAgIFJVTih0ZXN0UlNoaWZ0U2VsZjMyKCkpOworICAgIFJVTih0ZXN0VVJT
aGlmdFNlbGYzMigpKTsKKyAgICBSVU4odGVzdExTaGlmdFNlbGYzMigpKTsKKyAgICBSVU4odGVz
dFJTaGlmdFNlbGY2NCgpKTsKKyAgICBSVU4odGVzdFVSU2hpZnRTZWxmNjQoKSk7CisgICAgUlVO
KHRlc3RMU2hpZnRTZWxmNjQoKSk7CisKKyAgICBSVU4odGVzdFBhdGNocG9pbnREb3VibGVSZWdz
KCkpOworICAgIFJVTih0ZXN0U3BpbGxEZWZTbWFsbGVyVGhhblVzZSgpKTsKKyAgICBSVU4odGVz
dFNwaWxsVXNlTGFyZ2VyVGhhbkRlZigpKTsKKyAgICBSVU4odGVzdExhdGVSZWdpc3RlcigpKTsK
KyAgICBSVU4odGVzdEludGVycHJldGVyKCkpOworICAgIFJVTih0ZXN0UmVkdWNlU3RyZW5ndGhD
aGVja0JvdHRvbVVzZUluQW5vdGhlckJsb2NrKCkpOworICAgIFJVTih0ZXN0UmVzZXRSZWFjaGFi
aWxpdHlEYW5nbGluZ1JlZmVyZW5jZSgpKTsKKyAgICAKKyAgICBSVU4odGVzdEVudHJ5U3dpdGNo
U2ltcGxlKCkpOworICAgIFJVTih0ZXN0RW50cnlTd2l0Y2hOb0VudHJ5U3dpdGNoKCkpOworICAg
IFJVTih0ZXN0RW50cnlTd2l0Y2hXaXRoQ29tbW9uUGF0aHMoKSk7CisgICAgUlVOKHRlc3RFbnRy
eVN3aXRjaFdpdGhDb21tb25QYXRoc0FuZE5vblRyaXZpYWxFbnRyeXBvaW50KCkpOworICAgIFJV
Tih0ZXN0RW50cnlTd2l0Y2hMb29wKCkpOworCisgICAgUlVOKHRlc3RTb21lRWFybHlSZWdpc3Rl
cigpKTsKKyAgICBSVU4odGVzdFBhdGNocG9pbnRUZXJtaW5hbFJldHVyblZhbHVlKHRydWUpKTsK
KyAgICBSVU4odGVzdFBhdGNocG9pbnRUZXJtaW5hbFJldHVyblZhbHVlKGZhbHNlKSk7CisgICAg
UlVOKHRlc3RUZXJtaW5hbFBhdGNocG9pbnRUaGF0TmVlZHNUb0JlU3BpbGxlZCgpKTsKKworICAg
IFJVTih0ZXN0TWVtb3J5RmVuY2UoKSk7CisgICAgUlVOKHRlc3RTdG9yZUZlbmNlKCkpOworICAg
IFJVTih0ZXN0TG9hZEZlbmNlKCkpOworICAgIFJVTih0ZXN0VHJhcHBpbmdMb2FkKCkpOworICAg
IFJVTih0ZXN0VHJhcHBpbmdTdG9yZSgpKTsKKyAgICBSVU4odGVzdFRyYXBwaW5nTG9hZEFkZFN0
b3JlKCkpOworICAgIFJVTih0ZXN0VHJhcHBpbmdMb2FkRENFKCkpOworICAgIFJVTih0ZXN0VHJh
cHBpbmdTdG9yZUVsaW1pbmF0aW9uKCkpOworICAgIFJVTih0ZXN0TW92ZUNvbnN0YW50cygpKTsK
KyAgICBSVU4odGVzdFBDT3JpZ2luTWFwRG9lc250SW5zZXJ0Tm9wcygpKTsKKyAgICBSVU4odGVz
dFBpblJlZ2lzdGVycygpKTsKKyAgICBSVU4odGVzdFJlZHVjZVN0cmVuZ3RoUmVhc3NvY2lhdGlv
bih0cnVlKSk7CisgICAgUlVOKHRlc3RSZWR1Y2VTdHJlbmd0aFJlYXNzb2NpYXRpb24oZmFsc2Up
KTsKKyAgICBSVU4odGVzdEFkZFNobDMyKCkpOworICAgIFJVTih0ZXN0QWRkU2hsNjQoKSk7Cisg
ICAgUlVOKHRlc3RBZGRTaGw2NSgpKTsKKyAgICBSVU4odGVzdExvYWRCYXNlSW5kZXhTaGlmdDIo
KSk7CisgICAgUlVOKHRlc3RMb2FkQmFzZUluZGV4U2hpZnQzMigpKTsKKyAgICBSVU4odGVzdE9w
dGltaXplTWF0ZXJpYWxpemF0aW9uKCkpOworICAgIFJVTih0ZXN0TElDTVB1cmUoKSk7CisgICAg
UlVOKHRlc3RMSUNNUHVyZVNpZGVFeGl0cygpKTsKKyAgICBSVU4odGVzdExJQ01QdXJlV3JpdGVz
UGlubmVkKCkpOworICAgIFJVTih0ZXN0TElDTVB1cmVXcml0ZXMoKSk7CisgICAgUlVOKHRlc3RM
SUNNUmVhZHNMb2NhbFN0YXRlKCkpOworICAgIFJVTih0ZXN0TElDTVJlYWRzUGlubmVkKCkpOwor
ICAgIFJVTih0ZXN0TElDTVJlYWRzKCkpOworICAgIFJVTih0ZXN0TElDTVB1cmVOb3RCYWNrd2Fy
ZHNEb21pbmFudCgpKTsKKyAgICBSVU4odGVzdExJQ01QdXJlRm9pbGVkQnlDaGlsZCgpKTsKKyAg
ICBSVU4odGVzdExJQ01QdXJlTm90QmFja3dhcmRzRG9taW5hbnRGb2lsZWRCeUNoaWxkKCkpOwor
ICAgIFJVTih0ZXN0TElDTUV4aXRzU2lkZXdheXMoKSk7CisgICAgUlVOKHRlc3RMSUNNV3JpdGVz
TG9jYWxTdGF0ZSgpKTsKKyAgICBSVU4odGVzdExJQ01Xcml0ZXMoKSk7CisgICAgUlVOKHRlc3RM
SUNNV3JpdGVzUGlubmVkKCkpOworICAgIFJVTih0ZXN0TElDTUZlbmNlKCkpOworICAgIFJVTih0
ZXN0TElDTUNvbnRyb2xEZXBlbmRlbnQoKSk7CisgICAgUlVOKHRlc3RMSUNNQ29udHJvbERlcGVu
ZGVudE5vdEJhY2t3YXJkc0RvbWluYW50KCkpOworICAgIFJVTih0ZXN0TElDTUNvbnRyb2xEZXBl
bmRlbnRTaWRlRXhpdHMoKSk7CisgICAgUlVOKHRlc3RMSUNNUmVhZHNQaW5uZWRXcml0ZXNQaW5u
ZWQoKSk7CisgICAgUlVOKHRlc3RMSUNNUmVhZHNXcml0ZXNEaWZmZXJlbnRIZWFwcygpKTsKKyAg
ICBSVU4odGVzdExJQ01SZWFkc1dyaXRlc092ZXJsYXBwaW5nSGVhcHMoKSk7CisgICAgUlVOKHRl
c3RMSUNNRGVmYXVsdENhbGwoKSk7CisKKyAgICBhZGRBdG9taWNUZXN0cyhmaWx0ZXIsIHRhc2tz
KTsKKyAgICBSVU4odGVzdERlcGVuZDMyKCkpOworICAgIFJVTih0ZXN0RGVwZW5kNjQoKSk7CisK
KyAgICBSVU4odGVzdFdhc21Cb3VuZHNDaGVjaygwKSk7CisgICAgUlVOKHRlc3RXYXNtQm91bmRz
Q2hlY2soMTAwKSk7CisgICAgUlVOKHRlc3RXYXNtQm91bmRzQ2hlY2soMTAwMDApKTsKKyAgICBS
VU4odGVzdFdhc21Cb3VuZHNDaGVjayhzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4
KCkgLSA1KSk7CisKKyAgICBSVU4odGVzdFdhc21BZGRyZXNzKCkpOworICAgIAorICAgIFJVTih0
ZXN0RmFzdFRMU0xvYWQoKSk7CisgICAgUlVOKHRlc3RGYXN0VExTU3RvcmUoKSk7CisKKyAgICBS
VU4odGVzdERvdWJsZUxpdGVyYWxDb21wYXJpc29uKGJpdHdpc2VfY2FzdDxkb3VibGU+KDB4ODAw
MDAwMDAwMDAwMDAwMXVsbCksIGJpdHdpc2VfY2FzdDxkb3VibGU+KDB4MDAwMDAwMDAwMDAwMDAw
MHVsbCkpKTsKKyAgICBSVU4odGVzdERvdWJsZUxpdGVyYWxDb21wYXJpc29uKGJpdHdpc2VfY2Fz
dDxkb3VibGU+KDB4MDAwMDAwMDAwMDAwMDAwMHVsbCksIGJpdHdpc2VfY2FzdDxkb3VibGU+KDB4
ODAwMDAwMDAwMDAwMDAwMXVsbCkpKTsKKyAgICBSVU4odGVzdERvdWJsZUxpdGVyYWxDb21wYXJp
c29uKDEyNS4zMTQ0NDQ2OTQ4MjQxLCAxMjUuMzE0NDQ0Njk0ODI0MikpOworICAgIFJVTih0ZXN0
RG91YmxlTGl0ZXJhbENvbXBhcmlzb24oMTI1LjMxNDQ0NDY5NDgyNDIsIDEyNS4zMTQ0NDQ2OTQ4
MjQxKSk7CisKKyAgICBSVU4odGVzdEZsb2F0RXF1YWxPclVub3JkZXJlZEZvbGRpbmcoKSk7Cisg
ICAgUlVOKHRlc3RGbG9hdEVxdWFsT3JVbm9yZGVyZWRGb2xkaW5nTmFOKCkpOworICAgIFJVTih0
ZXN0RmxvYXRFcXVhbE9yVW5vcmRlcmVkRG9udEZvbGQoKSk7CisgICAgCisgICAgUlVOKHRlc3RT
aHVmZmxlRG9lc250VHJhc2hDYWxsZWVTYXZlcygpKTsKKyAgICBSVU4odGVzdERlbW90ZVBhdGNo
cG9pbnRUZXJtaW5hbCgpKTsKKworICAgIFJVTih0ZXN0TG9vcFdpdGhNdWx0aXBsZUhlYWRlckVk
Z2VzKCkpOworCisgICAgUlVOKHRlc3RJbmZpbml0ZUxvb3BEb2VzbnRDYXVzZUJhZEhvaXN0aW5n
KCkpOworCisgICAgaWYgKGlzWDg2KCkpIHsKKyAgICAgICAgUlVOKHRlc3RCcmFuY2hCaXRBbmRJ
bW1GdXNpb24oSWRlbnRpdHksIEludDY0LCAxLCBBaXI6OkJyYW5jaFRlc3QzMiwgQWlyOjpBcmc6
OlRtcCkpOworICAgICAgICBSVU4odGVzdEJyYW5jaEJpdEFuZEltbUZ1c2lvbihJZGVudGl0eSwg
SW50NjQsIDB4ZmYsIEFpcjo6QnJhbmNoVGVzdDMyLCBBaXI6OkFyZzo6VG1wKSk7CisgICAgICAg
IFJVTih0ZXN0QnJhbmNoQml0QW5kSW1tRnVzaW9uKFRydW5jLCBJbnQzMiwgMSwgQWlyOjpCcmFu
Y2hUZXN0MzIsIEFpcjo6QXJnOjpUbXApKTsKKyAgICAgICAgUlVOKHRlc3RCcmFuY2hCaXRBbmRJ
bW1GdXNpb24oVHJ1bmMsIEludDMyLCAweGZmLCBBaXI6OkJyYW5jaFRlc3QzMiwgQWlyOjpBcmc6
OlRtcCkpOworICAgICAgICBSVU4odGVzdEJyYW5jaEJpdEFuZEltbUZ1c2lvbihMb2FkOFMsIElu
dDMyLCAxLCBBaXI6OkJyYW5jaFRlc3Q4LCBBaXI6OkFyZzo6QWRkcikpOworICAgICAgICBSVU4o
dGVzdEJyYW5jaEJpdEFuZEltbUZ1c2lvbihMb2FkOFosIEludDMyLCAxLCBBaXI6OkJyYW5jaFRl
c3Q4LCBBaXI6OkFyZzo6QWRkcikpOworICAgICAgICBSVU4odGVzdEJyYW5jaEJpdEFuZEltbUZ1
c2lvbihMb2FkLCBJbnQzMiwgMSwgQWlyOjpCcmFuY2hUZXN0MzIsIEFpcjo6QXJnOjpBZGRyKSk7
CisgICAgICAgIFJVTih0ZXN0QnJhbmNoQml0QW5kSW1tRnVzaW9uKExvYWQsIEludDY0LCAxLCBB
aXI6OkJyYW5jaFRlc3QzMiwgQWlyOjpBcmc6OkFkZHIpKTsKKyAgICAgICAgUlVOKHRlc3RYODZM
ZWFBZGRBZGRTaGxMZWZ0KCkpOworICAgICAgICBSVU4odGVzdFg4NkxlYUFkZEFkZFNobFJpZ2h0
KCkpOworICAgICAgICBSVU4odGVzdFg4NkxlYUFkZEFkZCgpKTsKKyAgICAgICAgUlVOKHRlc3RY
ODZMZWFBZGRTaGxSaWdodCgpKTsKKyAgICAgICAgUlVOKHRlc3RYODZMZWFBZGRTaGxMZWZ0U2Nh
bGUxKCkpOworICAgICAgICBSVU4odGVzdFg4NkxlYUFkZFNobExlZnRTY2FsZTIoKSk7CisgICAg
ICAgIFJVTih0ZXN0WDg2TGVhQWRkU2hsTGVmdFNjYWxlNCgpKTsKKyAgICAgICAgUlVOKHRlc3RY
ODZMZWFBZGRTaGxMZWZ0U2NhbGU4KCkpOworICAgIH0KKworICAgIGlmIChpc0FSTTY0KCkpIHsK
KyAgICAgICAgUlVOKHRlc3RUZXJuYXJ5U3ViSW5zdHJ1Y3Rpb25TZWxlY3Rpb24oSWRlbnRpdHks
IEludDY0LCBBaXI6OlN1YjY0KSk7CisgICAgICAgIFJVTih0ZXN0VGVybmFyeVN1Ykluc3RydWN0
aW9uU2VsZWN0aW9uKFRydW5jLCBJbnQzMiwgQWlyOjpTdWIzMikpOworICAgIH0KKworICAgIFJV
Tih0ZXN0UmVwb3J0VXNlZFJlZ2lzdGVyc0xhdGVVc2VGb2xsb3dlZEJ5RWFybHlEZWZEb2VzTm90
TWFya1VzZUFzRGVhZCgpKTsKKworICAgIGlmICh0YXNrcy5pc0VtcHR5KCkpCisgICAgICAgIHVz
YWdlKCk7CisKKyAgICBMb2NrIGxvY2s7CisKKyAgICBWZWN0b3I8UmVmPFRocmVhZD4+IHRocmVh
ZHM7CisgICAgZm9yICh1bnNpZ25lZCBpID0gZmlsdGVyID8gMSA6IFdURjo6bnVtYmVyT2ZQcm9j
ZXNzb3JDb3JlcygpOyBpLS07KSB7CisgICAgICAgIHRocmVhZHMuYXBwZW5kKAorICAgICAgICAg
ICAgVGhyZWFkOjpjcmVhdGUoCisgICAgICAgICAgICAgICAgInRlc3RiMyB0aHJlYWQiLAorICAg
ICAgICAgICAgICAgIFsmXSAoKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoOzspIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoKT4+IHRhc2s7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobG9jayk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRh
c2tzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sgPSB0YXNrcy50YWtlRmlyc3QoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgdGFzay0+
cnVuKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KSk7CisgICAg
fQorCisgICAgZm9yIChhdXRvJiB0aHJlYWQgOiB0aHJlYWRzKQorICAgICAgICB0aHJlYWQtPndh
aXRGb3JDb21wbGV0aW9uKCk7CisgICAgY3Jhc2hMb2NrLmxvY2soKTsKKyAgICBjcmFzaExvY2su
dW5sb2NrKCk7Cit9CisKKyNlbHNlIC8vIEVOQUJMRShCM19KSVQpCisKK3N0YXRpYyB2b2lkIHJ1
bihjb25zdCBjaGFyKikKK3sKKyAgICBkYXRhTG9nKCJCMyBKSVQgaXMgbm90IGVuYWJsZWQuXG4i
KTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCisKK2ludCBtYWluKGludCBhcmdjLCBj
aGFyKiogYXJndikKK3sKKyAgICBjb25zdCBjaGFyKiBmaWx0ZXIgPSBudWxscHRyOworICAgIHN3
aXRjaCAoYXJnYykgeworICAgIGNhc2UgMToKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAyOgor
ICAgICAgICBmaWx0ZXIgPSBhcmd2WzFdOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICB1c2FnZSgpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBKU0M6OmluaXRp
YWxpemVUaHJlYWRpbmcoKTsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDw9IDI7
ICsraSkgeworICAgICAgICBKU0M6Ok9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkgPSBpOwor
ICAgICAgICBydW4oZmlsdGVyKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworI2lmIE9T
KFdJTkRPV1MpCitleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBpbnQgV0lOQVBJIGRs
bExhdW5jaGVyRW50cnlQb2ludChpbnQgYXJnYywgY29uc3QgY2hhciogYXJndltdKQoreworICAg
IHJldHVybiBtYWluKGFyZ2MsIGNvbnN0X2Nhc3Q8Y2hhcioqPihhcmd2KSk7Cit9CisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3NWRjMjQ0YWYy
YjUxYmU1ZTQ0YjM5M2JhMmFlZTA2OTM1MzVjNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIuY3BwCkBAIC0wLDAgKzEsMzIxMyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgInRlc3RiMy5oIgorCisjaWYgRU5BQkxFKEIzX0pJVCkKKwordm9p
ZCB0ZXN0NDIoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGNvbnN0NDIgPSByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDIpOworICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBjb25zdDQyKTsKKworICAgIENIRUNL
KGNvbXBpbGVBbmRSdW48aW50Pihwcm9jKSA9PSA0Mik7Cit9CisKK3ZvaWQgdGVzdExvYWQ0Migp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICBpbnQgeCA9IDQyOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmln
aW4oKSwgJngpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYykgPT0gNDIp
OworfQorCit2b2lkIHRlc3RMb2FkQWNxNDIoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgaW50IHggPSA0MjsKKyAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3Jp
Z2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAg
ICBwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZ4KSwKKyAgICAgICAgICAgIDAsIEhl
YXBSYW5nZSg0MiksIEhlYXBSYW5nZSg0MikpKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQ
cm9jKHByb2MpOworICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0
aW9uKCpjb2RlLCAibGRhIik7CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUpID09IDQyKTsK
K30KKwordm9pZCB0ZXN0TG9hZFdpdGhPZmZzZXRJbXBsKGludDMyX3Qgb2Zmc2V0NjQsIGludDMy
X3Qgb2Zmc2V0MzIpCit7CisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgaW50NjRfdCB4ID0g
LTQyOworICAgICAgICBWYWx1ZSogYmFzZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAg
ICAgICAgICAgcHJvYywgTG9hZCwgSW50NjQsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIGJh
c2UsCisgICAgICAgICAgICAgICAgb2Zmc2V0NjQpKTsKKworICAgICAgICBjaGFyKiBhZGRyZXNz
ID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oJngpIC0gb2Zmc2V0NjQ7CisgICAgICAgIENIRUNL
KGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYWRkcmVzcykgPT0gLTQyKTsKKyAgICB9Cisg
ICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgaW50MzJfdCB4ID0gLTQyOworICAgICAgICBWYWx1
ZSogYmFzZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgTG9h
ZCwgSW50MzIsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIGJhc2UsCisgICAgICAgICAgICAg
ICAgb2Zmc2V0MzIpKTsKKworICAgICAgICBjaGFyKiBhZGRyZXNzID0gcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4oJngpIC0gb2Zmc2V0MzI7CisgICAgICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50
MzJfdD4ocHJvYywgYWRkcmVzcykgPT0gLTQyKTsKKyAgICB9Cit9CisKK3ZvaWQgdGVzdExvYWRP
ZmZzZXRJbW05TWF4KCkKK3sKKyAgICB0ZXN0TG9hZFdpdGhPZmZzZXRJbXBsKDI1NSwgMjU1KTsK
K30KKwordm9pZCB0ZXN0TG9hZE9mZnNldEltbTlNYXhQbHVzT25lKCkKK3sKKyAgICB0ZXN0TG9h
ZFdpdGhPZmZzZXRJbXBsKDI1NiwgMjU2KTsKK30KKwordm9pZCB0ZXN0TG9hZE9mZnNldEltbTlN
YXhQbHVzVHdvKCkKK3sKKyAgICB0ZXN0TG9hZFdpdGhPZmZzZXRJbXBsKDI1NywgMjU3KTsKK30K
Kwordm9pZCB0ZXN0TG9hZE9mZnNldEltbTlNaW4oKQoreworICAgIHRlc3RMb2FkV2l0aE9mZnNl
dEltcGwoLTI1NiwgLTI1Nik7Cit9CisKK3ZvaWQgdGVzdExvYWRPZmZzZXRJbW05TWluTWludXNP
bmUoKQoreworICAgIHRlc3RMb2FkV2l0aE9mZnNldEltcGwoLTI1NywgLTI1Nyk7Cit9CisKK3Zv
aWQgdGVzdExvYWRPZmZzZXRTY2FsZWRVbnNpZ25lZEltbTEyTWF4KCkKK3sKKyAgICB0ZXN0TG9h
ZFdpdGhPZmZzZXRJbXBsKDMyNzYwLCAxNjM4MCk7Cit9CisKK3ZvaWQgdGVzdExvYWRPZmZzZXRT
Y2FsZWRVbnNpZ25lZE92ZXJJbW0xMk1heCgpCit7CisgICAgdGVzdExvYWRXaXRoT2Zmc2V0SW1w
bCgzMjc2MCwgMzI3NjApOworICAgIHRlc3RMb2FkV2l0aE9mZnNldEltcGwoMzI3NjEsIDE2Mzgx
KTsKKyAgICB0ZXN0TG9hZFdpdGhPZmZzZXRJbXBsKDMyNzY4LCAxNjM4NCk7Cit9CisKK3ZvaWQg
dGVzdEJpdFhvclRyZWVBcmdzKGludDY0X3QgYSwgaW50NjRfdCBiKQoreworICAgIFByb2NlZHVy
ZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFs
dWUqIGFyZ0EgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgVmFsdWUqIGFyZ0IgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMSk7CisgICAgVmFsdWUqIG5vZGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJp
dFhvciwgT3JpZ2luKCksIGFyZ0EsIGFyZ0IpOworICAgIG5vZGUgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEJpdFhvciwgT3JpZ2luKCksIG5vZGUsIGFyZ0IpOworICAgIG5vZGUgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdFhvciwgT3JpZ2luKCksIG5vZGUsIGFyZ0Ep
OworICAgIG5vZGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdFhvciwgT3JpZ2lu
KCksIG5vZGUsIGFyZ0IpOworICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwgbm9kZSk7CisKKyAgICBDSEVDS19FUShjb21waWxlQW5kUnVuPGludDY0X3Q+
KHByb2MsIGEsIGIpLCAoKChhIF4gYikgXiBiKSBeIGEpIF4gYik7Cit9CisKK3ZvaWQgdGVzdEJp
dFhvclRyZWVBcmdzRXZlbihpbnQ2NF90IGEsIGludDY0X3QgYikKK3sKKyAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVl
KiBhcmdBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVlKiBhcmdCID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjEpOworICAgIFZhbHVlKiBub2RlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRY
b3IsIE9yaWdpbigpLCBhcmdBLCBhcmdCKTsKKyAgICBub2RlID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLCBub2RlLCBhcmdCKTsKKyAgICBub2RlID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLCBub2RlLCBhcmdBKTsK
KyAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIG5vZGUp
OworCisgICAgQ0hFQ0tfRVEoY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhLCBiKSwgKChh
IF4gYikgXiBiKSBeIGEpOworfQorCit2b2lkIHRlc3RCaXRYb3JUcmVlQXJnSW1tKGludDY0X3Qg
YSwgaW50NjRfdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ0EgPSByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
CisgICAgVmFsdWUqIGltbUIgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgYik7CisgICAgVmFsdWUqIG5vZGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEJpdFhvciwgT3JpZ2luKCksIGFyZ0EsIGltbUIpOworICAgIG5vZGUgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdFhvciwgT3JpZ2luKCksIGFyZ0EsIG5vZGUpOworICAgIG5v
ZGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdFhvciwgT3JpZ2luKCksIGFyZ0Es
IG5vZGUpOworICAgIG5vZGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdFhvciwg
T3JpZ2luKCksIGltbUIsIG5vZGUpOworICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgbm9kZSk7CisKKyAgICBDSEVDS19FUShjb21waWxlQW5kUnVuPGlu
dDY0X3Q+KHByb2MsIGEpLCBiIF4gKGEgXiAoYSBeIChhIF4gYikpKSk7Cit9CisKK3ZvaWQgdGVz
dEFkZFRyZWVBcmczMihpbnQzMl90IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJnQSA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKKyAgICBhcmdBID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVu
YywgT3JpZ2luKCksIGFyZ0EpOworICAgIFZhbHVlKiBub2RlID0gYXJnQTsKKyAgICBpbnQzMl90
IGV4cGVjdGVkUmVzdWx0ID0gYTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjA7ICsr
aSkgeworICAgICAgICBWYWx1ZSogb3RoZXJOb2RlOworICAgICAgICBpZiAoIShpICUgMykpIHsK
KyAgICAgICAgICAgIG90aGVyTm9kZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBpKTsKKyAgICAgICAgICAgIGV4cGVjdGVkUmVzdWx0ICs9IGk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBvdGhlck5vZGUgPSBhcmdBOworICAgICAgICAgICAg
ZXhwZWN0ZWRSZXN1bHQgKz0gYTsKKyAgICAgICAgfQorICAgICAgICBub2RlID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBub2RlLCBvdGhlck5vZGUpOworICAg
IH0KKyAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIG5v
ZGUpOworCisgICAgQ0hFQ0tfRVEoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBhKSwgZXhw
ZWN0ZWRSZXN1bHQpOworfQorCit2b2lkIHRlc3RNdWxUcmVlQXJnMzIoaW50MzJfdCBhKQorewor
ICAgIC8vIEZpYm9uYWNjaS1saWtlIGV4cHJlc3Npb24gdHJlZSB3aXRoIG11bHRpcGxpY2F0aW9u
IGluc3RlYWQgb2YgYWRkaXRpb24uCisgICAgLy8gVmVyaWZpZXMgdGhhdCB3ZSBkb24ndCBleHBs
b2RlIG9uIGhlYXZpbHkgZmFjdG9yZWQgZ3JhcGhzLgorICAgIFByb2NlZHVyZSBwcm9jOworICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ0EgPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7CisgICAgYXJnQSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
VHJ1bmMsIE9yaWdpbigpLCBhcmdBKTsKKyAgICBWYWx1ZSogbm9kZUEgPSBhcmdBOworICAgIFZh
bHVlKiBub2RlQiA9IGFyZ0E7CisgICAgaW50MzJfdCBleHBlY3RlZEEgPSBhLCBleHBlY3RlZFJl
c3VsdCA9IGE7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDIwOyArK2kpIHsKKyAgICAg
ICAgVmFsdWUqIG5ld05vZGVCID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9y
aWdpbigpLCBub2RlQSwgbm9kZUIpOworICAgICAgICBub2RlQSA9IG5vZGVCOworICAgICAgICBu
b2RlQiA9IG5ld05vZGVCOworICAgICAgICBpbnQzMl90IG5ld0V4cGVjdGVkUmVzdWx0ID0gZXhw
ZWN0ZWRBICogZXhwZWN0ZWRSZXN1bHQ7CisgICAgICAgIGV4cGVjdGVkQSA9IGV4cGVjdGVkUmVz
dWx0OworICAgICAgICBleHBlY3RlZFJlc3VsdCA9IG5ld0V4cGVjdGVkUmVzdWx0OworICAgIH0K
KyAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIG5vZGVC
KTsKKworICAgIENIRUNLX0VRKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYSksIGV4cGVj
dGVkUmVzdWx0KTsKK30KKwordm9pZCB0ZXN0Qml0QW5kVHJlZUFyZzMyKGludDMyX3QgYSkKK3sK
KyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworICAgIFZhbHVlKiBhcmdBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIGFyZ0EgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwgYXJnQSk7CisgICAgVmFs
dWUqIG5vZGUgPSBhcmdBOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCA4OyArK2kpIHsK
KyAgICAgICAgVmFsdWUqIGNvbnN0SSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBpIHwgNDIpOworICAgICAgICBWYWx1ZSogbmV3Qml0QW5kID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBhcmdBLCBjb25zdEkpOwor
ICAgICAgICBub2RlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdp
bigpLCBub2RlLCBuZXdCaXRBbmQpOworICAgIH0KKyAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFJldHVybiwgT3JpZ2luKCksIG5vZGUpOworCisgICAgQ0hFQ0tfRVEoY29tcGlsZUFu
ZFJ1bjxpbnQzMl90Pihwcm9jLCBhKSwgYSAmIDQyKTsKK30KKwordm9pZCB0ZXN0Qml0T3JUcmVl
QXJnMzIoaW50MzJfdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ0EgPSByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7CisgICAgYXJnQSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdp
bigpLCBhcmdBKTsKKyAgICBWYWx1ZSogbm9kZSA9IGFyZ0E7CisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IDg7ICsraSkgeworICAgICAgICBWYWx1ZSogY29uc3RJID0gcm9vdC0+YXBwZW5k
TmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGkpOworICAgICAgICBWYWx1ZSogbmV3
Qml0QW5kID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRPciwgT3JpZ2luKCksIGFy
Z0EsIGNvbnN0SSk7CisgICAgICAgIG5vZGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEJpdE9yLCBPcmlnaW4oKSwgbm9kZSwgbmV3Qml0QW5kKTsKKyAgICB9CisgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBub2RlKTsKKworICAgIENIRUNL
X0VRKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYSksIGEgfCA3KTsKK30KKwordm9pZCB0
ZXN0QXJnKGludCBhcmd1bWVudCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhcmd1bWVudCkg
PT0gYXJndW1lbnQpOworfQorCit2b2lkIHRlc3RSZXR1cm5Db25zdDY0KGludDY0X3QgdmFsdWUp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2Ms
IFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+
KHByb2MsIE9yaWdpbigpLCB2YWx1ZSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2
NF90Pihwcm9jKSA9PSB2YWx1ZSk7Cit9CisKK3ZvaWQgdGVzdFJldHVyblZvaWQoKQoreworICAg
IFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCkp
OworICAgIGNvbXBpbGVBbmRSdW48dm9pZD4ocHJvYyk7Cit9CisKK3ZvaWQgdGVzdEFkZEFyZyhp
bnQgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOworICAgIFZhbHVlKiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwg
dmFsdWUsIHZhbHVlKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYSkg
PT0gYSArIGEpOworfQorCit2b2lkIHRlc3RBZGRBcmdzKGludCBhLCBpbnQgYikKK3sKKyAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSkpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihw
cm9jLCBhLCBiKSA9PSBhICsgYik7Cit9CisKK3ZvaWQgdGVzdEFkZEFyZ0ltbShpbnQgYSwgaW50
IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIGIpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYSkgPT0g
YSArIGIpOworfQorCit2b2lkIHRlc3RBZGRJbW1BcmcoaW50IGEsIGludCBiKQoreworICAgIFBy
b2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJv
YywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFs
dWU+KHByb2MsIE9yaWdpbigpLCBhKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOwor
CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGIpID09IGEgKyBiKTsKK30KKwor
dm9pZCB0ZXN0QWRkQXJnTWVtKGludDY0X3QgYSwgaW50NjRfdCBiKQoreworICAgIFByb2NlZHVy
ZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFs
dWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgTWVtb3J5VmFsdWUqIGxvYWQgPSBy
b290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwg
YWRkcmVzcyk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAorICAgICAgICBsb2Fk
KTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlLCBPcmlnaW4o
KSwgcmVzdWx0LCBhZGRyZXNzKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIDApKTsKKworICAgIGludDY0X3QgaW5wdXRPdXRwdXQgPSBiOworICAgIENIRUNL
KCFjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEsICZpbnB1dE91dHB1dCkpOworICAgIENI
RUNLKGlucHV0T3V0cHV0ID09IGEgKyBiKTsKK30KKwordm9pZCB0ZXN0QWRkTWVtQXJnKGludDY0
X3QgYSwgaW50NjRfdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7CisgICAgTWVtb3J5VmFsdWUqIGxvYWQgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFs
dWU+KHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwgYWRkcmVzcyk7CisgICAgVmFsdWUqIHJl
c3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwKKyAgICAg
ICAgbG9hZCwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICByb290LT5hcHBlbmROZXdD
b250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKworICAgIENIRUNL
KGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgJmEsIGIpID09IGEgKyBiKTsKK30KKwordm9p
ZCB0ZXN0QWRkSW1tTWVtKGludDY0X3QgYSwgaW50NjRfdCBiKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUq
IGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgTWVtb3J5VmFsdWUqIGxvYWQgPSByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwgYWRk
cmVzcyk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
QWRkLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIGEpLAorICAgICAgICBsb2FkKTsKKyAgICByb290LT5hcHBlbmROZXc8TWVt
b3J5VmFsdWU+KHByb2MsIFN0b3JlLCBPcmlnaW4oKSwgcmVzdWx0LCBhZGRyZXNzKTsKKyAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIGludDY0
X3QgaW5wdXRPdXRwdXQgPSBiOworICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludD4ocHJvYywg
JmlucHV0T3V0cHV0KSk7CisgICAgQ0hFQ0soaW5wdXRPdXRwdXQgPT0gYSArIGIpOworfQorCit2
b2lkIHRlc3RBZGRBcmczMihpbnQgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiB2YWx1ZSA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCkpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBBZGQsIE9yaWdpbigpLCB2YWx1ZSwgdmFsdWUpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRS
dW48aW50Pihwcm9jLCBhKSA9PSBhICsgYSk7Cit9CisKK3ZvaWQgdGVzdEFkZEFyZ3MzMihpbnQg
YSwgaW50IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCks
CisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAor
ICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpKTsKKworICAgIENIRUNLKGNvbXBpbGVB
bmRSdW48aW50Pihwcm9jLCBhLCBiKSA9PSBhICsgYik7Cit9CisKK3ZvaWQgdGVzdEFkZEFyZ01l
bTMyKGludDMyX3QgYSwgaW50MzJfdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFkZHJlc3MgPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMSk7CisgICAgTWVtb3J5VmFsdWUqIGxvYWQgPSByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgYWRkcmVzcyk7CisgICAg
VmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3Jp
Z2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgYXJndW1lbnQsIGxvYWQp
OworICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmUsIE9yaWdpbigp
LCByZXN1bHQsIGFkZHJlc3MpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgMCkpOworCisgICAgaW50MzJfdCBpbnB1dE91dHB1dCA9IGI7CisgICAgQ0hFQ0so
IWNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYSwgJmlucHV0T3V0cHV0KSk7CisgICAgQ0hF
Q0soaW5wdXRPdXRwdXQgPT0gYSArIGIpOworfQorCit2b2lkIHRlc3RBZGRNZW1BcmczMihpbnQz
Ml90IGEsIGludDMyX3QgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOworICAgIE1lbW9yeVZhbHVlKiBsb2FkID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZh
bHVlPihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksIGFkZHJlc3MpOworICAgIFZhbHVlKiBh
cmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGxvYWQsIGFyZ3VtZW50KTsKKyAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0
KTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgJmEsIGIpID09IGEg
KyBiKTsKK30KKwordm9pZCB0ZXN0QWRkSW1tTWVtMzIoaW50MzJfdCBhLCBpbnQzMl90IGIpCit7
CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBNZW1vcnlW
YWx1ZSogbG9hZCA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50
MzIsIE9yaWdpbigpLCBhZGRyZXNzKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSksCisgICAgICAgIGxvYWQpOworICAgIHJv
b3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmUsIE9yaWdpbigpLCByZXN1bHQs
IGFkZHJlc3MpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
MCkpOworCisgICAgaW50MzJfdCBpbnB1dE91dHB1dCA9IGI7CisgICAgQ0hFQ0soIWNvbXBpbGVB
bmRSdW48aW50Pihwcm9jLCAmaW5wdXRPdXRwdXQpKTsKKyAgICBDSEVDSyhpbnB1dE91dHB1dCA9
PSBhICsgYik7Cit9CisKK3ZvaWQgdGVzdEFkZE5lZzEoaW50IGEsIGludCBiKQoreworICAgIFBy
b2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJv
YywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgTmVnLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGlu
dD4ocHJvYywgYSwgYikgPT0gKC0gYSkgKyBiKTsKK30KKwordm9pZCB0ZXN0QWRkTmVnMihpbnQg
YSwgaW50IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBOZWcs
IE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpKTsKKworICAgIENI
RUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhLCBiKSA9PSBhICsgKC0gYikpOworfQorCit2
b2lkIHRlc3RBZGRBcmdaZXJvSW1tWkRlZigpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJnID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBjb25zdFplcm8gPSByb290LT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCk7CisgICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIGFyZywKKyAgICAgICAgICAgIGNvbnN0WmVybykpOworCisgICAgYXV0
byBjb2RlID0gY29tcGlsZVByb2MocHJvYywgMCk7CisgICAgQ0hFQ0soaW52b2tlPGludDY0X3Q+
KCpjb2RlLCAweDAxMjM0NTY3ODlhYmNkZWYpID09IDB4ODlhYmNkZWYpOworfQorCit2b2lkIHRl
c3RBZGRMb2FkVHdpY2UoKQoreworICAgIGF1dG8gdGVzdCA9IFsmXSAoKSB7CisgICAgICAgIFBy
b2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworICAgICAgICBpbnQzMl90IHZhbHVlID0gNDI7CisgICAgICAgIFZhbHVlKiBsb2FkID0gcm9v
dC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIExvYWQsIEludDMy
LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgJnZhbHVlKSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGxvYWQsIGxvYWQpKTsK
KworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgQ0hFQ0so
aW52b2tlPGludDMyX3Q+KCpjb2RlKSA9PSA0MiAqIDIpOworICAgIH07CisKKyAgICB0ZXN0KCk7
Cit9CisKK3ZvaWQgdGVzdEFkZEFyZ0RvdWJsZShkb3VibGUgYSkKK3sKKyAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVl
KiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgdmFsdWUsIHZhbHVlKSk7CisKKyAgICBD
SEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgYSksIGEgKyBhKSk7
Cit9CisKK3ZvaWQgdGVzdEFkZEFyZ3NEb3VibGUoZG91YmxlIGEsIGRvdWJsZSBiKQoreworICAg
IFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisgICAgVmFsdWUqIHZhbHVlQSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICBWYWx1ZSogdmFsdWVC
ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJ
bmZvOjphcmd1bWVudEZQUjEpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAg
ICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCB2YWx1ZUEsIHZhbHVlQikpOworCisgICAgQ0hFQ0so
aXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEsIGIpLCBhICsgYikpOwor
fQorCit2b2lkIHRlc3RBZGRBcmdJbW1Eb3VibGUoZG91YmxlIGEsIGRvdWJsZSBiKQoreworICAg
IFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisgICAgVmFsdWUqIHZhbHVlQSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICBWYWx1ZSogdmFsdWVC
ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKTsK
KyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmln
aW4oKSwgdmFsdWVBLCB2YWx1ZUIpKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVB
bmRSdW48ZG91YmxlPihwcm9jLCBhKSwgYSArIGIpKTsKK30KKwordm9pZCB0ZXN0QWRkSW1tQXJn
RG91YmxlKGRvdWJsZSBhLCBkb3VibGUgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiB2YWx1ZUEgPSBy
b290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpOworICAg
IFZhbHVlKiB2YWx1ZUIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIHZhbHVlQSwgdmFsdWVCKSk7
CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgYiks
IGEgKyBiKSk7Cit9CisKK3ZvaWQgdGVzdEFkZEltbXNEb3VibGUoZG91YmxlIGEsIGRvdWJsZSBi
KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgVmFsdWUqIHZhbHVlQSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJs
ZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7CisgICAgVmFsdWUqIHZhbHVlQiA9IHJvb3QtPmFw
cGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7CisgICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIHZhbHVl
QSwgdmFsdWVCKSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJs
ZT4ocHJvYyksIGEgKyBiKSk7Cit9CisKK3ZvaWQgdGVzdEFkZEFyZ0Zsb2F0KGZsb2F0IGEpCit7
CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVl
KiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwg
T3JpZ2luKCksIGFyZ3VtZW50MzIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGZsb2F0VmFsdWUsIGZsb2F0VmFsdWUpOwor
ICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lz
ZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKworICAgIENIRUNLKGlzSWRl
bnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+
KGEpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgKyBhKSkpOworfQorCit2b2lkIHRlc3RBZGRB
cmdzRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDFp
bnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmd1bWVudDJpbnQzMiA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDFpbnQzMik7CisgICAgVmFs
dWUqIGZsb2F0VmFsdWUyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2Fz
dCwgT3JpZ2luKCksIGFyZ3VtZW50MmludDMyKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBmbG9hdFZhbHVlMSwgZmxvYXRW
YWx1ZTIpOworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVD
Syhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxp
bnQzMl90PihhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpKSwgYml0d2lzZV9jYXN0PGludDMy
X3Q+KGEgKyBiKSkpOworfQorCit2b2lkIHRlc3RBZGRGUFJBcmdzRmxvYXQoZmxvYXQgYSwgZmxv
YXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDEgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApKTsKKyAg
ICBWYWx1ZSogYXJndW1lbnQyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIxKSk7CisgICAgVmFsdWUqIHJlc3VsdCA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgYXJndW1lbnQxLCBh
cmd1bWVudDIpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCByZXN1bHQpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1
bjxmbG9hdD4ocHJvYywgYSwgYiksIGEgKyBiKSk7Cit9CisKK3ZvaWQgdGVzdEFkZEFyZ0ltbUZs
b2F0KGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOworICAgIFZhbHVl
KiBjb25zdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIGIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEFkZCwgT3JpZ2luKCksIGZsb2F0VmFsdWUsIGNvbnN0VmFsdWUpOworICAgIFZhbHVlKiBy
ZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdp
bigpLCByZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxl
QW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2Vf
Y2FzdDxpbnQzMl90PihhICsgYikpKTsKK30KKwordm9pZCB0ZXN0QWRkSW1tQXJnRmxvYXQoZmxv
YXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7CisgICAgVmFsdWUqIGNvbnN0
VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
YSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRk
LCBPcmlnaW4oKSwgY29uc3RWYWx1ZSwgZmxvYXRWYWx1ZSk7CisgICAgVmFsdWUqIHJlc3VsdDMy
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJl
c3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48
aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpKSwgYml0d2lzZV9jYXN0PGlu
dDMyX3Q+KGEgKyBiKSkpOworfQorCit2b2lkIHRlc3RBZGRJbW1zRmxvYXQoZmxvYXQgYSwgZmxv
YXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBjb25zdFZhbHVlMSA9IHJvb3QtPmFwcGVuZE5ldzxD
b25zdEZsb2F0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKKyAgICBWYWx1ZSogY29uc3RWYWx1
ZTIgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7
CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBP
cmlnaW4oKSwgY29uc3RWYWx1ZTEsIGNvbnN0VmFsdWUyKTsKKyAgICBWYWx1ZSogcmVzdWx0MzIg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgcmVz
dWx0KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmln
aW4oKSwgcmVzdWx0MzIpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxp
bnQzMl90Pihwcm9jKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgKyBiKSkpOworfQorCit2b2lk
IHRlc3RBZGRBcmdGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbihmbG9hdCBhKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgVmFsdWUqIGFyZ3VtZW50SW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1
ZSogZmxvYXRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3Qs
IE9yaWdpbigpLCBhcmd1bWVudEludDMyKTsKKyAgICBWYWx1ZSogYXNEb3VibGUgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVl
KTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQs
IE9yaWdpbigpLCBhc0RvdWJsZSwgYXNEb3VibGUpOworICAgIFZhbHVlKiBmbG9hdFJlc3VsdCA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIHJl
c3VsdCk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGZsb2F0UmVzdWx0KTsKKyAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOworCisgICAg
Q0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nh
c3Q8aW50MzJfdD4oYSkpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSArIGEpKSk7Cit9CisKK3Zv
aWQgdGVzdEFkZEFyZ3NGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbihmbG9hdCBhLCBm
bG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSk7CisgICAgVmFsdWUqIGFyZ3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgVmFs
dWUqIGZsb2F0VmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2Fz
dCwgT3JpZ2luKCksIGFyZ3VtZW50MWludDMyKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZTIgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1l
bnQyaW50MzIpOworICAgIFZhbHVlKiBhc0RvdWJsZTEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlMSk7CisgICAgVmFsdWUq
IGFzRG91YmxlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwg
T3JpZ2luKCksIGZsb2F0VmFsdWUyKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBhc0RvdWJsZTEsIGFzRG91YmxlMik7Cisg
ICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3Vi
bGVUb0Zsb2F0LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1
bHQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGlu
dDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYml0d2lzZV9jYXN0PGludDMy
X3Q+KGIpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgKyBiKSkpOworfQorCit2b2lkIHRlc3RB
ZGRBcmdzRmxvYXRXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lvbihmbG9hdCBhLCBmbG9hdCBi
KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Cisg
ICAgVmFsdWUqIGFyZ3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBU
cnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgVmFsdWUqIGZs
b2F0VmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3Jp
Z2luKCksIGFyZ3VtZW50MWludDMyKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZTIgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQyaW50
MzIpOworICAgIFZhbHVlKiBhc0RvdWJsZTEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlMSk7CisgICAgVmFsdWUqIGFzRG91
YmxlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2lu
KCksIGZsb2F0VmFsdWUyKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBhc0RvdWJsZTEsIGFzRG91YmxlMik7CisgICAgVmFs
dWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zs
b2F0LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICBWYWx1ZSogZG91YmxlQWRkcmVzcyA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIyKTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0b3Jl
LCBPcmlnaW4oKSwgcmVzdWx0LCBkb3VibGVBZGRyZXNzKTsKKyAgICBWYWx1ZSogcmVzdWx0MzIg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxv
YXRSZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBkb3VibGUgZWZmZWN0ID0gMDsKKyAgICBDSEVD
Syhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxp
bnQzMl90PihhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpLCAmZWZmZWN0KSwgYml0d2lzZV9j
YXN0PGludDMyX3Q+KGEgKyBiKSkpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGVmZmVjdCwgc3Rh
dGljX2Nhc3Q8ZG91YmxlPihhKSArIHN0YXRpY19jYXN0PGRvdWJsZT4oYikpKTsKK30KKwordm9p
ZCB0ZXN0QWRkTXVsTXVsQXJncyhpbnQ2NF90IGEsIGludDY0X3QgYiwgaW50NjRfdCBjKQorewor
ICAgIC8vIFdlIHdhbnQgdG8gY2hlY2sgZXZlcnkgcG9zc2libGUgb3JkZXJpbmcgb2YgYXJndW1l
bnRzICh0byBwcm9wZXJseSBjaGVjayBldmVyeSBwYXRoIGluIEIzUmVkdWNlU3RyZW5ndGgpOgor
ICAgIC8vICgoYSAqIGIpICsgKGEgKiBjKSkKKyAgICAvLyAoKGEgKiBiKSArIChjICogYSkpCisg
ICAgLy8gKChiICogYSkgKyAoYSAqIGMpKQorICAgIC8vICgoYiAqIGEpICsgKGMgKiBhKSkKKyAg
ICBmb3IgKGludCBpID0gMDsgaSA8IDQ7ICsraSkgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgVmFs
dWUqIGFyZ0EgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBhcmdCID0gcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjEpOworICAgICAgICBWYWx1ZSogYXJnQyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICAg
ICAgVmFsdWUqIG11bEFCID0gaSAmIDIgPyByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11
bCwgT3JpZ2luKCksIGFyZ0EsIGFyZ0IpCisgICAgICAgICAgICA6IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgYXJnQiwgYXJnQSk7CisgICAgICAgIFZhbHVlKiBt
dWxBQyA9IGkgJiAxID8gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigp
LCBhcmdBLCBhcmdDKQorICAgICAgICAgICAgOiByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IE11bCwgT3JpZ2luKCksIGFyZ0MsIGFyZ0EpOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgbXVsQUIsCisgICAg
ICAgICAgICAgICAgbXVsQUMpKTsKKworICAgICAgICBDSEVDS19FUShjb21waWxlQW5kUnVuPGlu
dDY0X3Q+KHByb2MsIGEsIGIsIGMpLCAoKGEgKiBiKSArIChhICogYykpKTsKKyAgICB9Cit9CisK
K3ZvaWQgdGVzdE11bEFyZyhpbnQgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiB2YWx1ZSA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgTXVsLCBPcmlnaW4oKSwgdmFsdWUsIHZhbHVlKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5k
UnVuPGludD4ocHJvYywgYSkgPT0gYSAqIGEpOworfQorCit2b2lkIHRlc3RNdWxBcmdTdG9yZShp
bnQgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOworCisgICAgaW50IG11bFNsb3Q7CisgICAgaW50IHZhbHVlU2xvdDsKKwor
ICAgIFZhbHVlKiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSog
bXVsID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCB2YWx1ZSwg
dmFsdWUpOworCisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJv
YywgU3RvcmUsIE9yaWdpbigpLCB2YWx1ZSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0
UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmdmFsdWVTbG90KSwgMCk7CisgICAgcm9vdC0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywgU3RvcmUsIE9yaWdpbigpLCBtdWws
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
Jm11bFNsb3QpLCAwKTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludD4ocHJv
YywgYSkpOworICAgIENIRUNLKG11bFNsb3QgPT0gYSAqIGEpOworICAgIENIRUNLKHZhbHVlU2xv
dCA9PSBhKTsKK30KKwordm9pZCB0ZXN0TXVsQWRkQXJnKGludCBhKQoreworICAgIFByb2NlZHVy
ZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFs
dWUqIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgVHJ1bmMs
IE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCks
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCks
IHZhbHVlLCB2YWx1ZSksCisgICAgICAgICAgICB2YWx1ZSkpOworCisgICAgQ0hFQ0soY29tcGls
ZUFuZFJ1bjxpbnQ+KHByb2MsIGEpID09IGEgKiBhICsgYSk7Cit9CisKK3ZvaWQgdGVzdE11bEFy
Z3MoaW50IGEsIGludCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTXVsLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpOworCisgICAg
Q0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEsIGIpID09IGEgKiBiKTsKK30KKwordm9p
ZCB0ZXN0TXVsQXJnTmVnQXJnKGludCBhLCBpbnQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmdB
ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVlKiBhcmdCID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwor
ICAgIFZhbHVlKiBuZWdCID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBOZWcsIE9yaWdp
bigpLCBhcmdCKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBNdWwsIE9yaWdpbigpLCBhcmdBLCBuZWdCKTsKKyAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisKKyAgICBDSEVDSyhjb21waWxl
QW5kUnVuPGludD4ocHJvYywgYSwgYikgPT0gYSAqICgtYikpOworfQorCit2b2lkIHRlc3RNdWxO
ZWdBcmdBcmcoaW50IGEsIGludCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ0EgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7CisgICAgVmFsdWUqIGFyZ0IgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgVmFsdWUq
IG5lZ0EgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE5lZywgT3JpZ2luKCksIGFyZ0Ep
OworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwg
T3JpZ2luKCksIG5lZ0EsIGFyZ0IpOworICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50
Pihwcm9jLCBhLCBiKSA9PSAoLWEpICogYik7Cit9CisKK3ZvaWQgdGVzdE11bEFyZ0ltbShpbnQ2
NF90IGEsIGludDY0X3QgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIE11bCwgT3JpZ2luKCksCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYikpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50
NjRfdD4ocHJvYywgYSkgPT0gYSAqIGIpOworfQorCit2b2lkIHRlc3RNdWxJbW1BcmcoaW50IGEs
IGludCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICAgICAgcHJvYywgTXVsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGIp
ID09IGEgKiBiKTsKK30KKwordm9pZCB0ZXN0TXVsQXJnczMyKGludCBhLCBpbnQgYikKK3sKKyAg
ICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
IHByb2MsIE11bCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEpKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2Ms
IGEsIGIpID09IGEgKiBiKTsKK30KKwordm9pZCB0ZXN0TXVsQXJnczMyU2lnbkV4dGVuZChpbnQg
YSwgaW50IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgaWYgKHByb2Mub3B0TGV2ZWwo
KSA8IDEpCisgICAgICAgIHJldHVybjsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAg
ICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAg
IFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgVHJ1
bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgIFZhbHVlKiBhcmcx
NjQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNFeHQzMiwgT3JpZ2luKCksIGFyZzEp
OworICAgIFZhbHVlKiBhcmcyNjQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNFeHQz
MiwgT3JpZ2luKCksIGFyZzIpOworICAgIFZhbHVlKiBtdWwgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIE11bCwgT3JpZ2luKCksIGFyZzE2NCwgYXJnMjY0KTsKKyAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgbXVsKTsKKworICAgIGF1
dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworCisgICAgQ0hFQ0soaW52b2tlPGxvbmcgaW50
PigqY29kZSwgYSwgYikgPT0gKChsb25nIGludCkgYSkgKiAoKGxvbmcgaW50KSBiKSk7Cit9CisK
K3ZvaWQgdGVzdE11bEltbTMyU2lnbkV4dGVuZChjb25zdCBpbnQgYSwgaW50IGIpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEpCisgICAgICAgIHJl
dHVybjsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVl
KiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEp
OworICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJv
YywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgIFZhbHVl
KiBhcmcyNjQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNFeHQzMiwgT3JpZ2luKCks
IGFyZzIpOworICAgIFZhbHVlKiBtdWwgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11
bCwgT3JpZ2luKCksIGFyZzEsIGFyZzI2NCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIG11bCk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21w
aWxlUHJvYyhwcm9jKTsKKworICAgIENIRUNLKGludm9rZTxsb25nIGludD4oKmNvZGUsIGIpID09
ICgobG9uZyBpbnQpIGEpICogKChsb25nIGludCkgYikpOworfQorCit2b2lkIHRlc3RNdWxMb2Fk
VHdpY2UoKQoreworICAgIGF1dG8gdGVzdCA9IFsmXSAoKSB7CisgICAgICAgIFByb2NlZHVyZSBw
cm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAg
ICBpbnQzMl90IHZhbHVlID0gNDI7CisgICAgICAgIFZhbHVlKiBsb2FkID0gcm9vdC0+YXBwZW5k
TmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmln
aW4oKSwgJnZhbHVlKSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAg
ICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIGxvYWQsIGxvYWQpKTsKKworICAgICAg
ICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgQ0hFQ0soaW52b2tlPGlu
dDMyX3Q+KCpjb2RlKSA9PSA0MiAqIDQyKTsKKyAgICB9OworCisgICAgdGVzdCgpOworfQorCit2
b2lkIHRlc3RNdWxBZGRBcmdzTGVmdCgpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBhcmcwID0gcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOworICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgIFZh
bHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgIFZhbHVlKiBtdWx0aXBsaWVkID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBhcmcwLCBhcmcxKTsKKyAg
ICBWYWx1ZSogYWRkZWQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2lu
KCksIG11bHRpcGxpZWQsIGFyZzIpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLCBhZGRlZCk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxl
UHJvYyhwcm9jKTsKKworICAgIGF1dG8gdGVzdFZhbHVlcyA9IGludDY0T3BlcmFuZHMoKTsKKyAg
ICBmb3IgKGF1dG8gYSA6IHRlc3RWYWx1ZXMpIHsKKyAgICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0
VmFsdWVzKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYyA6IHRlc3RWYWx1ZXMpIHsKKyAgICAg
ICAgICAgICAgICBDSEVDSyhpbnZva2U8aW50NjRfdD4oKmNvZGUsIGEudmFsdWUsIGIudmFsdWUs
IGMudmFsdWUpID09IGEudmFsdWUgKiBiLnZhbHVlICsgYy52YWx1ZSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdE11bEFkZEFyZ3NSaWdodCgpCit7Cisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKworICAgIFZhbHVlKiBhcmcwID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVlKiBhcmcx
ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjEpOworICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwor
ICAgIFZhbHVlKiBtdWx0aXBsaWVkID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWws
IE9yaWdpbigpLCBhcmcxLCBhcmcyKTsKKyAgICBWYWx1ZSogYWRkZWQgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGFyZzAsIG11bHRpcGxpZWQpOworICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBhZGRlZCk7
CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKworICAgIGF1dG8gdGVzdFZh
bHVlcyA9IGludDY0T3BlcmFuZHMoKTsKKyAgICBmb3IgKGF1dG8gYSA6IHRlc3RWYWx1ZXMpIHsK
KyAgICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKSB7CisgICAgICAgICAgICBmb3IgKGF1
dG8gYyA6IHRlc3RWYWx1ZXMpIHsKKyAgICAgICAgICAgICAgICBDSEVDSyhpbnZva2U8aW50NjRf
dD4oKmNvZGUsIGEudmFsdWUsIGIudmFsdWUsIGMudmFsdWUpID09IGEudmFsdWUgKyBiLnZhbHVl
ICogYy52YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQg
dGVzdE11bEFkZEFyZ3NMZWZ0MzIoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBWYWx1ZSogYXJnMCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgVmFsdWUq
IGFyZzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjIpKTsKKyAgICBWYWx1ZSogbXVsdGlwbGllZCA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgYXJnMCwgYXJnMSk7CisgICAgVmFs
dWUqIGFkZGVkID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBt
dWx0aXBsaWVkLCBhcmcyKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgYWRkZWQpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2Mo
cHJvYyk7CisKKyAgICBhdXRvIHRlc3RWYWx1ZXMgPSBpbnQzMk9wZXJhbmRzKCk7CisgICAgZm9y
IChhdXRvIGEgOiB0ZXN0VmFsdWVzKSB7CisgICAgICAgIGZvciAoYXV0byBiIDogdGVzdFZhbHVl
cykgeworICAgICAgICAgICAgZm9yIChhdXRvIGMgOiB0ZXN0VmFsdWVzKSB7CisgICAgICAgICAg
ICAgICAgQ0hFQ0soaW52b2tlPGludDMyX3Q+KCpjb2RlLCBhLnZhbHVlLCBiLnZhbHVlLCBjLnZh
bHVlKSA9PSBhLnZhbHVlICogYi52YWx1ZSArIGMudmFsdWUpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RNdWxBZGRBcmdzUmlnaHQzMigpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KworICAgIFZhbHVlKiBhcmcwID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZzEgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjEpKTsKKyAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMikpOworICAgIFZh
bHVlKiBtdWx0aXBsaWVkID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdp
bigpLCBhcmcxLCBhcmcyKTsKKyAgICBWYWx1ZSogYWRkZWQgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGFyZzAsIG11bHRpcGxpZWQpOworICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBhZGRlZCk7CisKKyAg
ICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKworICAgIGF1dG8gdGVzdFZhbHVlcyA9
IGludDMyT3BlcmFuZHMoKTsKKyAgICBmb3IgKGF1dG8gYSA6IHRlc3RWYWx1ZXMpIHsKKyAgICAg
ICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYyA6
IHRlc3RWYWx1ZXMpIHsKKyAgICAgICAgICAgICAgICBDSEVDSyhpbnZva2U8aW50MzJfdD4oKmNv
ZGUsIGEudmFsdWUsIGIudmFsdWUsIGMudmFsdWUpID09IGEudmFsdWUgKyBiLnZhbHVlICogYy52
YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdE11
bFN1YkFyZ3NMZWZ0KCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgVmFsdWUqIGFyZzAgPSByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7CisgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgVmFsdWUqIGFyZzIg
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMik7CisgICAgVmFsdWUqIG11bHRpcGxpZWQgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIGFyZzAsIGFyZzEpOworICAgIFZhbHVlKiBh
ZGRlZCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgbXVsdGlw
bGllZCwgYXJnMik7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVy
biwgT3JpZ2luKCksIGFkZGVkKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2Mp
OworCisgICAgYXV0byB0ZXN0VmFsdWVzID0gaW50NjRPcGVyYW5kcygpOworICAgIGZvciAoYXV0
byBhIDogdGVzdFZhbHVlcykgeworICAgICAgICBmb3IgKGF1dG8gYiA6IHRlc3RWYWx1ZXMpIHsK
KyAgICAgICAgICAgIGZvciAoYXV0byBjIDogdGVzdFZhbHVlcykgeworICAgICAgICAgICAgICAg
IENIRUNLKGludm9rZTxpbnQ2NF90PigqY29kZSwgYS52YWx1ZSwgYi52YWx1ZSwgYy52YWx1ZSkg
PT0gYS52YWx1ZSAqIGIudmFsdWUgLSBjLnZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KK30KKwordm9pZCB0ZXN0TXVsU3ViQXJnc1JpZ2h0KCkKK3sKKyAgICBQcm9jZWR1
cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAg
VmFsdWUqIGFyZzAgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgVmFsdWUqIGFyZzEgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSk7CisgICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisgICAgVmFsdWUq
IG11bHRpcGxpZWQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCks
IGFyZzEsIGFyZzIpOworICAgIFZhbHVlKiBhZGRlZCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgU3ViLCBPcmlnaW4oKSwgYXJnMCwgbXVsdGlwbGllZCk7CisgICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFkZGVkKTsKKworICAgIGF1
dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworCisgICAgYXV0byB0ZXN0VmFsdWVzID0gaW50
NjRPcGVyYW5kcygpOworICAgIGZvciAoYXV0byBhIDogdGVzdFZhbHVlcykgeworICAgICAgICBm
b3IgKGF1dG8gYiA6IHRlc3RWYWx1ZXMpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBjIDogdGVz
dFZhbHVlcykgeworICAgICAgICAgICAgICAgIENIRUNLKGludm9rZTxpbnQ2NF90PigqY29kZSwg
YS52YWx1ZSwgYi52YWx1ZSwgYy52YWx1ZSkgPT0gYS52YWx1ZSAtIGIudmFsdWUgKiBjLnZhbHVl
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0TXVsU3Vi
QXJnc0xlZnQzMigpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBhcmcwID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7
CisgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICBWYWx1ZSogYXJnMiA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMikpOworICAgIFZhbHVlKiBtdWx0aXBsaWVkID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBhcmcwLCBhcmcxKTsKKyAgICBWYWx1ZSogYWRkZWQg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIG11bHRpcGxpZWQs
IGFyZzIpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCBhZGRlZCk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKwor
ICAgIGF1dG8gdGVzdFZhbHVlcyA9IGludDMyT3BlcmFuZHMoKTsKKyAgICBmb3IgKGF1dG8gYSA6
IHRlc3RWYWx1ZXMpIHsKKyAgICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKSB7CisgICAg
ICAgICAgICBmb3IgKGF1dG8gYyA6IHRlc3RWYWx1ZXMpIHsKKyAgICAgICAgICAgICAgICBDSEVD
SyhpbnZva2U8aW50MzJfdD4oKmNvZGUsIGEudmFsdWUsIGIudmFsdWUsIGMudmFsdWUpID09IGEu
dmFsdWUgKiBiLnZhbHVlIC0gYy52YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK3ZvaWQgdGVzdE11bFN1YkFyZ3NSaWdodDMyKCkKK3sKKyAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgVmFs
dWUqIGFyZzAgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MSkpOworICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVu
YywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKSk7CisgICAgVmFsdWUqIG11bHRp
cGxpZWQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIGFyZzEs
IGFyZzIpOworICAgIFZhbHVlKiBhZGRlZCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
U3ViLCBPcmlnaW4oKSwgYXJnMCwgbXVsdGlwbGllZCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFkZGVkKTsKKworICAgIGF1dG8gY29k
ZSA9IGNvbXBpbGVQcm9jKHByb2MpOworCisgICAgYXV0byB0ZXN0VmFsdWVzID0gaW50MzJPcGVy
YW5kcygpOworICAgIGZvciAoYXV0byBhIDogdGVzdFZhbHVlcykgeworICAgICAgICBmb3IgKGF1
dG8gYiA6IHRlc3RWYWx1ZXMpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBjIDogdGVzdFZhbHVl
cykgeworICAgICAgICAgICAgICAgIENIRUNLKGludm9rZTxpbnQzMl90PigqY29kZSwgYS52YWx1
ZSwgYi52YWx1ZSwgYy52YWx1ZSkgPT0gYS52YWx1ZSAtIGIudmFsdWUgKiBjLnZhbHVlKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0TXVsTmVnQXJncygp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKworICAgIFZhbHVlKiBhcmcwID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVl
KiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgIFZhbHVlKiBtdWx0aXBsaWVkID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBhcmcwLCBhcmcxKTsKKyAgICBW
YWx1ZSogemVybyA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigp
LCAwKTsKKyAgICBWYWx1ZSogYWRkZWQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1
YiwgT3JpZ2luKCksIHplcm8sIG11bHRpcGxpZWQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBhZGRlZCk7CisKKyAgICBhdXRvIGNvZGUg
PSBjb21waWxlUHJvYyhwcm9jKTsKKworICAgIGF1dG8gdGVzdFZhbHVlcyA9IGludDY0T3BlcmFu
ZHMoKTsKKyAgICBmb3IgKGF1dG8gYSA6IHRlc3RWYWx1ZXMpIHsKKyAgICAgICAgZm9yIChhdXRv
IGIgOiB0ZXN0VmFsdWVzKSB7CisgICAgICAgICAgICBDSEVDSyhpbnZva2U8aW50NjRfdD4oKmNv
ZGUsIGEudmFsdWUsIGIudmFsdWUpID09IC0oYS52YWx1ZSAqIGIudmFsdWUpKTsKKyAgICAgICAg
fQorICAgIH0KK30KKwordm9pZCB0ZXN0TXVsTmVnQXJnczMyKCkKK3sKKyAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgVmFs
dWUqIGFyZzAgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MSkpOworICAgIFZhbHVlKiBtdWx0aXBsaWVkID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBNdWwsIE9yaWdpbigpLCBhcmcwLCBhcmcxKTsKKyAgICBWYWx1ZSogemVybyA9IHJvb3QtPmFw
cGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKTsKKyAgICBWYWx1ZSogYWRk
ZWQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIHplcm8sIG11
bHRpcGxpZWQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCBhZGRlZCk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsK
KworICAgIGF1dG8gdGVzdFZhbHVlcyA9IGludDMyT3BlcmFuZHMoKTsKKyAgICBmb3IgKGF1dG8g
YSA6IHRlc3RWYWx1ZXMpIHsKKyAgICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKSB7Cisg
ICAgICAgICAgICBDSEVDSyhpbnZva2U8aW50MzJfdD4oKmNvZGUsIGEudmFsdWUsIGIudmFsdWUp
ID09IC0oYS52YWx1ZSAqIGIudmFsdWUpKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0
ZXN0TXVsQXJnRG91YmxlKGRvdWJsZSBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIHZhbHVlID0gcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjph
cmd1bWVudEZQUjApOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBNdWwsIE9yaWdpbigpLCB2YWx1ZSwgdmFsdWUpKTsKKworICAgIENIRUNLKGlzSWRlbnRp
Y2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBhKSwgYSAqIGEpKTsKK30KKwordm9pZCB0
ZXN0TXVsQXJnc0RvdWJsZShkb3VibGUgYSwgZG91YmxlIGIpCit7CisgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSog
dmFsdWVBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgIFZhbHVlKiB2YWx1ZUIgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50
RlBSMSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11
bCwgT3JpZ2luKCksIHZhbHVlQSwgdmFsdWVCKSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChj
b21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgYSwgYiksIGEgKiBiKSk7Cit9CisKK3ZvaWQgdGVz
dE11bEFyZ0ltbURvdWJsZShkb3VibGUgYSwgZG91YmxlIGIpCit7CisgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSog
dmFsdWVBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgIFZhbHVlKiB2YWx1ZUIgPSByb290LT5hcHBl
bmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpOworICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCB2YWx1ZUEs
IHZhbHVlQikpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+
KHByb2MsIGEpLCBhICogYikpOworfQorCit2b2lkIHRlc3RNdWxJbW1BcmdEb3VibGUoZG91Ymxl
IGEsIGRvdWJsZSBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIHZhbHVlQSA9IHJvb3QtPmFwcGVuZE5l
dzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7CisgICAgVmFsdWUqIHZhbHVl
QiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBS
SW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisg
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgdmFsdWVBLCB2YWx1ZUIpKTsKKworICAgIENIRUNL
KGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBiKSwgYSAqIGIpKTsKK30K
Kwordm9pZCB0ZXN0TXVsSW1tc0RvdWJsZShkb3VibGUgYSwgZG91YmxlIGIpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBWYWx1ZSogdmFsdWVBID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBhKTsKKyAgICBWYWx1ZSogdmFsdWVCID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0
RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKTsKKyAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgdmFsdWVBLCB2YWx1ZUIpKTsK
KworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jKSwgYSAq
IGIpKTsKK30KKwordm9pZCB0ZXN0TXVsQXJnRmxvYXQoZmxvYXQgYSkKK3sKKyAgICBQcm9jZWR1
cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZh
bHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3Jp
Z2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJn
dW1lbnQzMik7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgTXVsLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZSwgZmxvYXRWYWx1ZSk7CisgICAgVmFsdWUqIHJl
c3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2lu
KCksIHJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVy
biwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGls
ZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXR3aXNl
X2Nhc3Q8aW50MzJfdD4oYSAqIGEpKSk7Cit9CisKK3ZvaWQgdGVzdE11bEFyZ3NGbG9hdChmbG9h
dCBhLCBmbG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Cisg
ICAgVmFsdWUqIGZsb2F0VmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3
aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MWludDMyKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1
ZTIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwg
YXJndW1lbnQyaW50MzIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIE11bCwgT3JpZ2luKCksIGZsb2F0VmFsdWUxLCBmbG9hdFZhbHVlMik7CisgICAg
VmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2Fz
dCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHBy
b2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2Fs
KGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBi
aXR3aXNlX2Nhc3Q8aW50MzJfdD4oYikpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAqIGIpKSk7
Cit9CisKK3ZvaWQgdGVzdE11bEFyZ0ltbUZsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1
bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBmbG9h
dFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2lu
KCksIGFyZ3VtZW50MzIpOworICAgIFZhbHVlKiBjb25zdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpOworICAgIFZhbHVlKiByZXN1bHQg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIGZsb2F0VmFsdWUs
IGNvbnN0VmFsdWUpOworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOworICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAg
ICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2Vf
Y2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhICogYikpKTsKK30KKwor
dm9pZCB0ZXN0TXVsSW1tQXJnRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1
cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZh
bHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3Jp
Z2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJn
dW1lbnQzMik7CisgICAgVmFsdWUqIGNvbnN0VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3RG
bG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgY29uc3RWYWx1ZSwgZmxvYXRW
YWx1ZSk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNL
KGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGlu
dDMyX3Q+KGIpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgKiBiKSkpOworfQorCit2b2lkIHRl
c3RNdWxJbW1zRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBjb25z
dFZhbHVlMSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+KHByb2MsIE9yaWdpbigp
LCBhKTsKKyAgICBWYWx1ZSogY29uc3RWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9h
dFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgY29uc3RWYWx1ZTEsIGNvbnN0VmFs
dWUyKTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOworCisgICAgQ0hFQ0so
aXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jKSwgYml0d2lzZV9jYXN0PGlu
dDMyX3Q+KGEgKiBiKSkpOworfQorCit2b2lkIHRlc3RNdWxBcmdGbG9hdFdpdGhVc2VsZXNzRG91
YmxlQ29udmVyc2lvbihmbG9hdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50SW50MzIg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudEludDMyKTsKKyAg
ICBWYWx1ZSogYXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9E
b3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBhc0RvdWJsZSwgYXNEb3VibGUp
OworICAgIFZhbHVlKiBmbG9hdFJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
RG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGZsb2F0
UmVzdWx0KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgcmVzdWx0MzIpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1
bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXR3aXNlX2Nhc3Q8
aW50MzJfdD4oYSAqIGEpKSk7Cit9CisKK3ZvaWQgdGVzdE11bEFyZ3NGbG9hdFdpdGhVc2VsZXNz
RG91YmxlQ29udmVyc2lvbihmbG9hdCBhLCBmbG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9j
OworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFy
Z3VtZW50MWludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2lu
KCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50MmludDMy
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIxKSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUxID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MWludDMyKTsK
KyAgICBWYWx1ZSogZmxvYXRWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJp
dHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQyaW50MzIpOworICAgIFZhbHVlKiBhc0RvdWJs
ZTEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigp
LCBmbG9hdFZhbHVlMSk7CisgICAgVmFsdWUqIGFzRG91YmxlMiA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUyKTsKKyAgICBW
YWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigp
LCBhc0RvdWJsZTEsIGFzRG91YmxlMik7CisgICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgcmVzdWx0KTsK
KyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdp
c2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhp
c0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQz
Ml90PihhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+
KGEgKiBiKSkpOworfQorCit2b2lkIHRlc3RNdWxBcmdzRmxvYXRXaXRoRWZmZWN0ZnVsRG91Ymxl
Q29udmVyc2lvbihmbG9hdCBhLCBmbG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50
MWludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50MmludDMyID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MWludDMyKTsKKyAgICBW
YWx1ZSogZmxvYXRWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VD
YXN0LCBPcmlnaW4oKSwgYXJndW1lbnQyaW50MzIpOworICAgIFZhbHVlKiBhc0RvdWJsZTEgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9h
dFZhbHVlMSk7CisgICAgVmFsdWUqIGFzRG91YmxlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUyKTsKKyAgICBWYWx1ZSog
cmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBhc0Rv
dWJsZTEsIGFzRG91YmxlMik7CisgICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICBW
YWx1ZSogZG91YmxlTXVscmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICByb290LT5hcHBlbmRO
ZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlLCBPcmlnaW4oKSwgcmVzdWx0LCBkb3VibGVNdWxy
ZXNzKTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBk
b3VibGUgZWZmZWN0ID0gMDsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGlu
dDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYml0d2lzZV9jYXN0PGludDMy
X3Q+KGIpLCAmZWZmZWN0KSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgKiBiKSkpOworICAgIENI
RUNLKGlzSWRlbnRpY2FsKGVmZmVjdCwgc3RhdGljX2Nhc3Q8ZG91YmxlPihhKSAqIHN0YXRpY19j
YXN0PGRvdWJsZT4oYikpKTsKK30KKwordm9pZCB0ZXN0RGl2QXJnRG91YmxlKGRvdWJsZSBhKQor
eworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgVmFsdWUqIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEaXYsIE9yaWdpbigpLCB2YWx1ZSwg
dmFsdWUpKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihw
cm9jLCBhKSwgYSAvIGEpKTsKK30KKwordm9pZCB0ZXN0RGl2QXJnc0RvdWJsZShkb3VibGUgYSwg
ZG91YmxlIGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogdmFsdWVBID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwor
ICAgIFZhbHVlKiB2YWx1ZUIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7CisgICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERpdiwgT3JpZ2luKCksIHZhbHVlQSwgdmFsdWVC
KSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywg
YSwgYiksIGEgLyBiKSk7Cit9CisKK3ZvaWQgdGVzdERpdkFyZ0ltbURvdWJsZShkb3VibGUgYSwg
ZG91YmxlIGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogdmFsdWVBID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwor
ICAgIFZhbHVlKiB2YWx1ZUIgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIGIpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBEaXYsIE9yaWdpbigpLCB2YWx1ZUEsIHZhbHVlQikpOworCisgICAgQ0hFQ0soaXNJ
ZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEpLCBhIC8gYikpOworfQorCit2
b2lkIHRlc3REaXZJbW1BcmdEb3VibGUoZG91YmxlIGEsIGRvdWJsZSBiKQoreworICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAg
VmFsdWUqIHZhbHVlQSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgYSk7CisgICAgVmFsdWUqIHZhbHVlQiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRGl2LCBPcmlnaW4oKSwg
dmFsdWVBLCB2YWx1ZUIpKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48
ZG91YmxlPihwcm9jLCBiKSwgYSAvIGIpKTsKK30KKwordm9pZCB0ZXN0RGl2SW1tc0RvdWJsZShk
b3VibGUgYSwgZG91YmxlIGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogdmFsdWVBID0gcm9vdC0+YXBw
ZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKKyAgICBWYWx1ZSog
dmFsdWVCID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBiKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRGl2
LCBPcmlnaW4oKSwgdmFsdWVBLCB2YWx1ZUIpKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNv
bXBpbGVBbmRSdW48ZG91YmxlPihwcm9jKSwgYSAvIGIpKTsKK30KKwordm9pZCB0ZXN0RGl2QXJn
RmxvYXQoZmxvYXQgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7CisgICAgVmFsdWUqIHJlc3Vs
dCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRGl2LCBPcmlnaW4oKSwgZmxvYXRWYWx1
ZSwgZmxvYXRWYWx1ZSk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKwor
CisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3
aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAvIGEpKSk7Cit9
CisKK3ZvaWQgdGVzdERpdkFyZ3NGbG9hdChmbG9hdCBhLCBmbG9hdCBiKQoreworICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAg
VmFsdWUqIGFyZ3VtZW50MWludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVu
YywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZ3Vt
ZW50MmludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCks
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUxID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50
MWludDMyKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQyaW50MzIpOworICAgIFZhbHVl
KiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERpdiwgT3JpZ2luKCksIGZs
b2F0VmFsdWUxLCBmbG9hdFZhbHVlMik7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAg
cm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3Vs
dDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJv
YywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYikpLCBi
aXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAvIGIpKSk7Cit9CisKK3ZvaWQgdGVzdERpdkFyZ0ltbUZs
b2F0KGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOworICAgIFZhbHVl
KiBjb25zdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIGIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIERpdiwgT3JpZ2luKCksIGZsb2F0VmFsdWUsIGNvbnN0VmFsdWUpOworICAgIFZhbHVlKiBy
ZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdp
bigpLCByZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxl
QW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2Vf
Y2FzdDxpbnQzMl90PihhIC8gYikpKTsKK30KKwordm9pZCB0ZXN0RGl2SW1tQXJnRmxvYXQoZmxv
YXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7CisgICAgVmFsdWUqIGNvbnN0
VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
YSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRGl2
LCBPcmlnaW4oKSwgY29uc3RWYWx1ZSwgZmxvYXRWYWx1ZSk7CisgICAgVmFsdWUqIHJlc3VsdDMy
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJl
c3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48
aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpKSwgYml0d2lzZV9jYXN0PGlu
dDMyX3Q+KGEgLyBiKSkpOworfQorCit2b2lkIHRlc3REaXZJbW1zRmxvYXQoZmxvYXQgYSwgZmxv
YXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBjb25zdFZhbHVlMSA9IHJvb3QtPmFwcGVuZE5ldzxD
b25zdEZsb2F0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKKyAgICBWYWx1ZSogY29uc3RWYWx1
ZTIgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7
CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRGl2LCBP
cmlnaW4oKSwgY29uc3RWYWx1ZTEsIGNvbnN0VmFsdWUyKTsKKyAgICBWYWx1ZSogcmVzdWx0MzIg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgcmVz
dWx0KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmln
aW4oKSwgcmVzdWx0MzIpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxp
bnQzMl90Pihwcm9jKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgLyBiKSkpOworfQorCit2b2lk
IHRlc3RNb2RBcmdEb3VibGUoZG91YmxlIGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogdmFsdWUgPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86
OmFyZ3VtZW50RlBSMCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIE1vZCwgT3JpZ2luKCksIHZhbHVlLCB2YWx1ZSkpOworCisgICAgQ0hFQ0soaXNJZGVu
dGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEpLCBmbW9kKGEsIGEpKSk7Cit9CisK
K3ZvaWQgdGVzdE1vZEFyZ3NEb3VibGUoZG91YmxlIGEsIGRvdWJsZSBiKQoreworICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAg
VmFsdWUqIHZhbHVlQSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICBWYWx1ZSogdmFsdWVCID0gcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjph
cmd1bWVudEZQUjEpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBNb2QsIE9yaWdpbigpLCB2YWx1ZUEsIHZhbHVlQikpOworCisgICAgQ0hFQ0soaXNJZGVu
dGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEsIGIpLCBmbW9kKGEsIGIpKSk7Cit9
CisKK3ZvaWQgdGVzdE1vZEFyZ0ltbURvdWJsZShkb3VibGUgYSwgZG91YmxlIGIpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBWYWx1ZSogdmFsdWVBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgIFZhbHVlKiB2YWx1ZUIg
PSByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpOwor
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNb2QsIE9yaWdp
bigpLCB2YWx1ZUEsIHZhbHVlQikpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFu
ZFJ1bjxkb3VibGU+KHByb2MsIGEpLCBmbW9kKGEsIGIpKSk7Cit9CisKK3ZvaWQgdGVzdE1vZElt
bUFyZ0RvdWJsZShkb3VibGUgYSwgZG91YmxlIGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogdmFsdWVB
ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsK
KyAgICBWYWx1ZSogdmFsdWVCID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNb2QsIE9yaWdpbigpLCB2YWx1ZUEsIHZhbHVl
QikpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2Ms
IGIpLCBmbW9kKGEsIGIpKSk7Cit9CisKK3ZvaWQgdGVzdE1vZEltbXNEb3VibGUoZG91YmxlIGEs
IGRvdWJsZSBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIHZhbHVlQSA9IHJvb3QtPmFwcGVuZE5ldzxD
b25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7CisgICAgVmFsdWUqIHZhbHVlQiA9
IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7Cisg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE1vZCwgT3JpZ2lu
KCksIHZhbHVlQSwgdmFsdWVCKSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5k
UnVuPGRvdWJsZT4ocHJvYyksIGZtb2QoYSwgYikpKTsKK30KKwordm9pZCB0ZXN0TW9kQXJnRmxv
YXQoZmxvYXQgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7CisgICAgVmFsdWUqIHJlc3VsdCA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTW9kLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZSwg
ZmxvYXRWYWx1ZSk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworCisg
ICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNl
X2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8Zmxv
YXQ+KGZtb2QoYSwgYSkpKSkpOworfQorCit2b2lkIHRlc3RNb2RBcmdzRmxvYXQoZmxvYXQgYSwg
ZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDFpbnQzMiA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpOworICAgIFZhbHVlKiBhcmd1bWVudDJpbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgIFZh
bHVlKiBmbG9hdFZhbHVlMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNh
c3QsIE9yaWdpbigpLCBhcmd1bWVudDFpbnQzMik7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUyID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3Vt
ZW50MmludDMyKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBNb2QsIE9yaWdpbigpLCBmbG9hdFZhbHVlMSwgZmxvYXRWYWx1ZTIpOworICAgIFZhbHVl
KiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9y
aWdpbigpLCByZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21w
aWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYml0d2lz
ZV9jYXN0PGludDMyX3Q+KGIpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KHN0YXRpY19jYXN0PGZs
b2F0PihmbW9kKGEsIGIpKSkpKTsKK30KKwordm9pZCB0ZXN0TW9kQXJnSW1tRmxvYXQoZmxvYXQg
YSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7CisgICAgVmFsdWUqIGNvbnN0VmFs
dWUgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7
CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTW9kLCBP
cmlnaW4oKSwgZmxvYXRWYWx1ZSwgY29uc3RWYWx1ZSk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3Vs
dCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2lu
KCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50
MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgYml0d2lzZV9jYXN0PGludDMy
X3Q+KHN0YXRpY19jYXN0PGZsb2F0PihmbW9kKGEsIGIpKSkpKTsKK30KKwordm9pZCB0ZXN0TW9k
SW1tQXJnRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVu
dDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7Cisg
ICAgVmFsdWUqIGNvbnN0VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgYSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgTW9kLCBPcmlnaW4oKSwgY29uc3RWYWx1ZSwgZmxvYXRWYWx1ZSk7CisgICAg
VmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2Fz
dCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHBy
b2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2Fs
KGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpKSwg
Yml0d2lzZV9jYXN0PGludDMyX3Q+KHN0YXRpY19jYXN0PGZsb2F0PihmbW9kKGEsIGIpKSkpKTsK
K30KKwordm9pZCB0ZXN0TW9kSW1tc0Zsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBWYWx1ZSogY29uc3RWYWx1ZTEgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgYSk7CisgICAgVmFsdWUqIGNvbnN0VmFsdWUyID0gcm9vdC0+YXBwZW5k
TmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpOworICAgIFZhbHVlKiByZXN1
bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE1vZCwgT3JpZ2luKCksIGNvbnN0VmFs
dWUxLCBjb25zdFZhbHVlMik7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsK
KworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYyksIGJp
dHdpc2VfY2FzdDxpbnQzMl90PihzdGF0aWNfY2FzdDxmbG9hdD4oZm1vZChhLCBiKSkpKSk7Cit9
CisKK3ZvaWQgdGVzdERpdkFyZ0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uKGZsb2F0
IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnRJbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwor
ICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3
aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50SW50MzIpOworICAgIFZhbHVlKiBhc0RvdWJsZSA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZs
b2F0VmFsdWUpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIERpdiwgT3JpZ2luKCksIGFzRG91YmxlLCBhc0RvdWJsZSk7CisgICAgVmFsdWUqIGZsb2F0
UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmln
aW4oKSwgcmVzdWx0KTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1bHQpOworICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7
CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJp
dHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhIC8gYSkpKTsK
K30KKwordm9pZCB0ZXN0RGl2QXJnc0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uKGZs
b2F0IGEsIGZsb2F0IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQxaW50MzIgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKTsKKyAgICBWYWx1ZSogYXJndW1lbnQyaW50MzIgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsK
KyAgICBWYWx1ZSogZmxvYXRWYWx1ZTEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJp
dHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQxaW50MzIpOworICAgIFZhbHVlKiBmbG9hdFZh
bHVlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigp
LCBhcmd1bWVudDJpbnQzMik7CisgICAgVmFsdWUqIGFzRG91YmxlMSA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUxKTsKKyAg
ICBWYWx1ZSogYXNEb3VibGUyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRv
RG91YmxlLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZTIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERpdiwgT3JpZ2luKCksIGFzRG91YmxlMSwgYXNEb3Vi
bGUyKTsKKyAgICBWYWx1ZSogZmxvYXRSZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCByZXN1bHQpOworICAgIFZhbHVlKiByZXN1bHQz
MiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBm
bG9hdFJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVy
biwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVB
bmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3aXNlX2Nh
c3Q8aW50MzJfdD4oYikpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAvIGIpKSk7Cit9CisKK3Zv
aWQgdGVzdERpdkFyZ3NGbG9hdFdpdGhFZmZlY3RmdWxEb3VibGVDb252ZXJzaW9uKGZsb2F0IGEs
IGZsb2F0IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQxaW50MzIgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApKTsKKyAgICBWYWx1ZSogYXJndW1lbnQyaW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICBW
YWx1ZSogZmxvYXRWYWx1ZTEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VD
YXN0LCBPcmlnaW4oKSwgYXJndW1lbnQxaW50MzIpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlMiA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1
bWVudDJpbnQzMik7CisgICAgVmFsdWUqIGFzRG91YmxlMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUxKTsKKyAgICBWYWx1
ZSogYXNEb3VibGUyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91Ymxl
LCBPcmlnaW4oKSwgZmxvYXRWYWx1ZTIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIERpdiwgT3JpZ2luKCksIGFzRG91YmxlMSwgYXNEb3VibGUyKTsK
KyAgICBWYWx1ZSogZmxvYXRSZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERv
dWJsZVRvRmxvYXQsIE9yaWdpbigpLCByZXN1bHQpOworICAgIFZhbHVlKiBkb3VibGVEaXZyZXNz
ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjIpOworICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJv
YywgU3RvcmUsIE9yaWdpbigpLCByZXN1bHQsIGRvdWJsZURpdnJlc3MpOworICAgIFZhbHVlKiBy
ZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdp
bigpLCBmbG9hdFJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2Ms
IFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIGRvdWJsZSBlZmZlY3QgPSAwOwor
ICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lz
ZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYiksICZlZmZlY3QpLCBi
aXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAvIGIpKSk7CisgICAgQ0hFQ0soaXNJZGVudGljYWwoZWZm
ZWN0LCBzdGF0aWNfY2FzdDxkb3VibGU+KGEpIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihiKSkpOwor
fQorCit2b2lkIHRlc3RVRGl2QXJnc0ludDMyKHVpbnQzMl90IGEsIHVpbnQzMl90IGIpCit7Cisg
ICAgLy8gVURpdiB3aXRoIGRlbm9taW5hdG9yID09IDAgaXMgaW52YWxpZC4KKyAgICBpZiAoIWIp
CisgICAgICAgIHJldHVybjsKKworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MSA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCkpOworICAgIFZhbHVlKiBhcmd1bWVudDIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICBWYWx1
ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBVRGl2LCBPcmlnaW4oKSwg
YXJndW1lbnQxLCBhcmd1bWVudDIpOworICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKworICAgIENIRUNLX0VRKGNvbXBpbGVBbmRSdW48
dWludDMyX3Q+KHByb2MsIGEsIGIpLCBhIC8gYik7Cit9CisKK3ZvaWQgdGVzdFVEaXZBcmdzSW50
NjQodWludDY0X3QgYSwgdWludDY0X3QgYikKK3sKKyAgICAvLyBVRGl2IHdpdGggZGVub21pbmF0
b3IgPT0gMCBpcyBpbnZhbGlkLgorICAgIGlmICghYikKKyAgICAgICAgcmV0dXJuOworCisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBWYWx1ZSogYXJndW1lbnQxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVlKiBhcmd1
bWVudDIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgVURpdiwgT3JpZ2luKCksIGFyZ3VtZW50MSwgYXJndW1lbnQyKTsK
KyAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3Vs
dCk7CisKKyAgICBDSEVDS19FUShjb21waWxlQW5kUnVuPHVpbnQ2NF90Pihwcm9jLCBhLCBiKSwg
YSAvIGIpOworfQorCit2b2lkIHRlc3RVTW9kQXJnc0ludDMyKHVpbnQzMl90IGEsIHVpbnQzMl90
IGIpCit7CisgICAgLy8gVU1vZCB3aXRoIGRlbm9taW5hdG9yID09IDAgaXMgaW52YWxpZC4KKyAg
ICBpZiAoIWIpCisgICAgICAgIHJldHVybjsKKworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MSA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmd1bWVudDIgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsK
KyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBVTW9kLCBP
cmlnaW4oKSwgYXJndW1lbnQxLCBhcmd1bWVudDIpOworICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKworICAgIENIRUNLX0VRKGNvbXBp
bGVBbmRSdW48dWludDMyX3Q+KHByb2MsIGEsIGIpLCBhICUgYik7Cit9CisKK3ZvaWQgdGVzdFVN
b2RBcmdzSW50NjQodWludDY0X3QgYSwgdWludDY0X3QgYikKK3sKKyAgICAvLyBVTW9kIHdpdGgg
ZGVub21pbmF0b3IgPT0gMCBpcyBpbnZhbGlkLgorICAgIGlmICghYikKKyAgICAgICAgcmV0dXJu
OworCisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZh
bHVlKiBhcmd1bWVudDIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVU1vZCwgT3JpZ2luKCksIGFyZ3VtZW50MSwgYXJn
dW1lbnQyKTsKKyAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2lu
KCksIHJlc3VsdCk7CisKKyAgICBDSEVDS19FUShjb21waWxlQW5kUnVuPHVpbnQ2NF90Pihwcm9j
LCBhLCBiKSwgYSAlIGIpOworfQorCit2b2lkIHRlc3RTdWJBcmcoaW50IGEpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBWYWx1ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIHZhbHVlLCB2YWx1ZSkpOwor
CisgICAgQ0hFQ0soIWNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhKSk7Cit9CisKK3ZvaWQgdGVz
dFN1YkFyZ3MoaW50IGEsIGludCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgU3ViLCBPcmlnaW4oKSwKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpOwor
CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEsIGIpID09IGEgLSBiKTsKK30K
Kwordm9pZCB0ZXN0U3ViQXJnSW1tKGludDY0X3QgYSwgaW50NjRfdCBiKQoreworICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAg
cm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywg
U3ViLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSkpOworCisg
ICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhKSA9PSBhIC0gYik7Cit9CisK
K3ZvaWQgdGVzdFN1Yk5lZyhpbnQgYSwgaW50IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTdWIsIE9yaWdpbigp
LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBOZWcsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIxKSkpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhLCBiKSA9
PSBhIC0gKC0gYikpOworfQorCit2b2lkIHRlc3ROZWdTdWIoaW50IGEsIGludCBiKQoreworICAg
IFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAg
cHJvYywgTmVnLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgU3ViLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCisg
ICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFu
ZFJ1bjxpbnQ+KHByb2MsIGEsIGIpID09IC0oYSAtIGIpKTsKK30KKwordm9pZCB0ZXN0TmVnVmFs
dWVTdWJPbmUoaW50IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7CisgICAgVmFsdWUqIG5lZ0FyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBTdWIsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgMCksCisgICAgICAgIGFyZ3VtZW50KTsKKyAgICBWYWx1ZSogbmVn
QXJndW1lbnRNaW51c09uZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmln
aW4oKSwKKyAgICAgICAgbmVnQXJndW1lbnQsCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25z
dDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIG5lZ0FyZ3VtZW50TWludXNPbmUpOworICAg
IENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhKSA9PSAtYSAtIDEpOworfQorCit2b2lk
IHRlc3RTdWJTdWIoaW50IGEsIGludCBiLCBpbnQgYykKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFN1YiwgT3JpZ2lu
KCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2lu
KCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAorICAgICAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIxKSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMikpKTsKKworICAgIENI
RUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhLCBiLCBjKSA9PSAoYS1iKS1jKTsKK30KKwor
dm9pZCB0ZXN0U3ViU3ViMihpbnQgYSwgaW50IGIsIGludCBjKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgU3ViLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMSksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpKSkpOworCisg
ICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEsIGIsIGMpID09IGEtKGItYykpOwor
fQorCit2b2lkIHRlc3RTdWJBZGQoaW50IGEsIGludCBiLCBpbnQgYykKK3sKKyAgICBQcm9jZWR1
cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFN1
YiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFk
ZCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAorICAgICAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxKSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMikpKTsK
KworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhLCBiLCBjKSA9PSAoYStiKS1j
KTsKK30KKwordm9pZCB0ZXN0U3ViRmlyc3ROZWcoaW50IGEsIGludCBiKQoreworICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAg
cm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywg
U3ViLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
TmVnLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4o
cHJvYywgYSwgYikgPT0gKC1hKS1iKTsKK30KKwordm9pZCB0ZXN0U3ViSW1tQXJnKGludCBhLCBp
bnQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgIHByb2MsIFN1YiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSksCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCkpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBiKSA9
PSBhIC0gYik7Cit9CisKK3ZvaWQgdGVzdFN1YkFyZ01lbShpbnQ2NF90IGEsIGludDY0X3QgYikK
K3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgIE1lbW9y
eVZhbHVlKiBsb2FkID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJ
bnQ2NCwgT3JpZ2luKCksIGFkZHJlc3MpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSwKKyAgICAgICAgbG9hZCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2Ms
IFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGlu
dDY0X3Q+KHByb2MsIGEsICZiKSA9PSBhIC0gYik7Cit9CisKK3ZvaWQgdGVzdFN1Yk1lbUFyZyhp
bnQ2NF90IGEsIGludDY0X3QgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApOworICAgIE1lbW9yeVZhbHVlKiBsb2FkID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPihwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksIGFkZHJlc3MpOworICAgIFZhbHVl
KiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksCisg
ICAgICAgIGxvYWQsCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgcm9vdC0+YXBwZW5k
TmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHJlc3VsdCwgYWRkcmVzcyk7
CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCks
IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAg
ICBpbnQ2NF90IGlucHV0T3V0cHV0ID0gYTsKKyAgICBDSEVDSyghY29tcGlsZUFuZFJ1bjxpbnQ2
NF90Pihwcm9jLCAmaW5wdXRPdXRwdXQsIGIpKTsKKyAgICBDSEVDSyhpbnB1dE91dHB1dCA9PSBh
IC0gYik7Cit9CisKK3ZvaWQgdGVzdFN1YkltbU1lbShpbnQ2NF90IGEsIGludDY0X3QgYikKK3sK
KyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIE1lbW9yeVZh
bHVlKiBsb2FkID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQ2
NCwgT3JpZ2luKCksIGFkZHJlc3MpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxD
b25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKSwKKyAgICAgICAgbG9hZCk7CisgICAgcm9v
dC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHJlc3VsdCwg
YWRkcmVzcyk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwg
T3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAw
KSk7CisKKyAgICBpbnQ2NF90IGlucHV0T3V0cHV0ID0gYjsKKyAgICBDSEVDSyghY29tcGlsZUFu
ZFJ1bjxpbnQ+KHByb2MsICZpbnB1dE91dHB1dCkpOworICAgIENIRUNLKGlucHV0T3V0cHV0ID09
IGEgLSBiKTsKK30KKwordm9pZCB0ZXN0U3ViTWVtSW1tKGludDY0X3QgYSwgaW50NjRfdCBiKQor
eworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgTWVtb3J5
VmFsdWUqIGxvYWQgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIElu
dDY0LCBPcmlnaW4oKSwgYWRkcmVzcyk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwKKyAgICAgICAgbG9hZCwKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpKTsKKyAgICBy
b290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlLCBPcmlnaW4oKSwgcmVzdWx0
LCBhZGRyZXNzKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IDApKTsKKworICAgIGludDY0X3QgaW5wdXRPdXRwdXQgPSBhOworICAgIENIRUNLKCFjb21waWxl
QW5kUnVuPGludD4ocHJvYywgJmlucHV0T3V0cHV0KSk7CisgICAgQ0hFQ0soaW5wdXRPdXRwdXQg
PT0gYSAtIGIpOworfQorCisKK3ZvaWQgdGVzdFN1YkFyZ3MzMihpbnQgYSwgaW50IGIpCit7Cisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAg
ICBwcm9jLCBTdWIsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIxKSkpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9j
LCBhLCBiKSA9PSBhIC0gYik7Cit9CisKK3ZvaWQgdGVzdFN1YkFyZ0ltbTMyKGludCBhLCBpbnQg
YikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIFN1YiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpKSk7CisKKyAgICBDSEVDSyhjb21waWxl
QW5kUnVuPGludD4ocHJvYywgYSkgPT0gYSAtIGIpOworfQorCit2b2lkIHRlc3RTdWJJbW1Bcmcz
MihpbnQgYSwgaW50IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
CisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTdWIsIE9yaWdpbigpLAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpLAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBUcnVu
YywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSkpOworCisgICAg
Q0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGIpID09IGEgLSBiKTsKK30KKwordm9pZCB0
ZXN0U3ViTWVtQXJnMzIoaW50MzJfdCBhLCBpbnQzMl90IGIpCit7CisgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSog
YWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBNZW1vcnlWYWx1ZSogbG9hZCA9IHJvb3Qt
PmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBhZGRy
ZXNzKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICBWYWx1ZSog
cmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBsb2Fk
LCBhcmd1bWVudCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9y
ZSwgT3JpZ2luKCksIHJlc3VsdCwgYWRkcmVzcyk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICBpbnQzMl90IGlucHV0T3V0cHV0ID0gYTsK
KyAgICBDSEVDSyghY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCAmaW5wdXRPdXRwdXQsIGIp
KTsKKyAgICBDSEVDSyhpbnB1dE91dHB1dCA9PSBhIC0gYik7Cit9CisKK3ZvaWQgdGVzdFN1YkFy
Z01lbTMyKGludDMyX3QgYSwgaW50MzJfdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFkZHJlc3Mg
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSk7CisgICAgTWVtb3J5VmFsdWUqIGxvYWQgPSByb290LT5hcHBlbmRO
ZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgYWRkcmVzcyk7Cisg
ICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIHJlc3VsdCA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgYXJndW1lbnQsIGxv
YWQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCByZXN1bHQpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBh
LCAmYikgPT0gYSAtIGIpOworfQorCit2b2lkIHRlc3RTdWJJbW1NZW0zMihpbnQzMl90IGEsIGlu
dDMyX3QgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwor
ICAgIE1lbW9yeVZhbHVlKiBsb2FkID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9j
LCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksIGFkZHJlc3MpOworICAgIFZhbHVlKiByZXN1bHQgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKSwKKyAgICAgICAgbG9h
ZCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2lu
KCksIHJlc3VsdCwgYWRkcmVzcyk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHBy
b2MsIFJldHVybiwgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAwKSk7CisKKyAgICBpbnQzMl90IGlucHV0T3V0cHV0ID0gYjsKKyAgICBDSEVD
SyghY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsICZpbnB1dE91dHB1dCkpOworICAgIENIRUNLKGlu
cHV0T3V0cHV0ID09IGEgLSBiKTsKK30KKwordm9pZCB0ZXN0U3ViTWVtSW1tMzIoaW50MzJfdCBh
LCBpbnQzMl90IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKKyAgICBNZW1vcnlWYWx1ZSogbG9hZCA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
cHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBhZGRyZXNzKTsKKyAgICBWYWx1ZSogcmVzdWx0
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLAorICAgICAgICBs
b2FkLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgYikpOworICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmUsIE9y
aWdpbigpLCByZXN1bHQsIGFkZHJlc3MpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgaW50MzJfdCBpbnB1dE91dHB1dCA9IGE7CisgICAg
Q0hFQ0soIWNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCAmaW5wdXRPdXRwdXQpKTsKKyAgICBDSEVD
SyhpbnB1dE91dHB1dCA9PSBhIC0gYik7Cit9CisKK3ZvaWQgdGVzdE5lZ1ZhbHVlU3ViT25lMzIo
aW50IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAg
ICBWYWx1ZSogbmVnQXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1Yiwg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCAwKSwKKyAgICAgICAgYXJndW1lbnQpOworICAgIFZhbHVlKiBuZWdBcmd1bWVudE1p
bnVzT25lID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLAorICAg
ICAgICBuZWdBcmd1bWVudCwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIDEpKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwgbmVnQXJndW1lbnRNaW51c09uZSk7CisgICAgQ0hFQ0soY29t
cGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEpID09IC1hIC0gMSk7Cit9CisKK3ZvaWQgdGVzdE5lZ011
bEFyZ0ltbShpbnQ2NF90IGEsIGludDY0X3QgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVu
dCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogY29uc3RhbnQgPSByb290LT5hcHBlbmRO
ZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7CisgICAgVmFsdWUqIG11bCA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgYXJndW1lbnQsIGNvbnN0
YW50KTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBO
ZWcsIE9yaWdpbigpLCBtdWwpOworICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRf
dD4ocHJvYywgYSkgPT0gLShhICogYikpOworfQorCit2b2lkIHRlc3RTdWJNdWxNdWxBcmdzKGlu
dDY0X3QgYSwgaW50NjRfdCBiLCBpbnQ2NF90IGMpCit7CisgICAgLy8gV2Ugd2FudCB0byBjaGVj
ayBldmVyeSBwb3NzaWJsZSBvcmRlcmluZyBvZiBhcmd1bWVudHMgKHRvIHByb3Blcmx5IGNoZWNr
IGV2ZXJ5IHBhdGggaW4gQjNSZWR1Y2VTdHJlbmd0aCk6CisgICAgLy8gKChhICogYikgLSAoYSAq
IGMpKQorICAgIC8vICgoYSAqIGIpIC0gKGMgKiBhKSkKKyAgICAvLyAoKGIgKiBhKSAtIChhICog
YykpCisgICAgLy8gKChiICogYSkgLSAoYyAqIGEpKQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
NDsgKytpKSB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBWYWx1ZSogYXJnQSA9IHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKTsKKyAgICAgICAgVmFsdWUqIGFyZ0IgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIFZh
bHVlKiBhcmdDID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgICAgICBWYWx1ZSogbXVsQUIgPSBpICYg
MiA/IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgYXJnQSwgYXJn
QikKKyAgICAgICAgICAgIDogcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdp
bigpLCBhcmdCLCBhcmdBKTsKKyAgICAgICAgVmFsdWUqIG11bEFDID0gaSAmIDEgPyByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIGFyZ0EsIGFyZ0MpCisgICAgICAg
ICAgICA6IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgYXJnQywg
YXJnQSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmln
aW4oKSwKKyAgICAgICAgICAgICAgICBtdWxBQiwKKyAgICAgICAgICAgICAgICBtdWxBQykpOwor
CisgICAgICAgIENIRUNLX0VRKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYSwgYiwgYyks
ICgoYSAqIGIpIC0gKGEgKiBjKSkpOworICAgIH0KK30KKwordm9pZCB0ZXN0U3ViQXJnRG91Ymxl
KGRvdWJsZSBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwor
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdp
bigpLCB2YWx1ZSwgdmFsdWUpKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRS
dW48ZG91YmxlPihwcm9jLCBhKSwgYSAtIGEpKTsKK30KKwordm9pZCB0ZXN0U3ViQXJnc0RvdWJs
ZShkb3VibGUgYSwgZG91YmxlIGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogdmFsdWVBID0gcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1
bWVudEZQUjApOworICAgIFZhbHVlKiB2YWx1ZUIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7CisgICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIHZh
bHVlQSwgdmFsdWVCKSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRv
dWJsZT4ocHJvYywgYSwgYiksIGEgLSBiKSk7Cit9CisKK3ZvaWQgdGVzdFN1YkFyZ0ltbURvdWJs
ZShkb3VibGUgYSwgZG91YmxlIGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogdmFsdWVBID0gcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1
bWVudEZQUjApOworICAgIFZhbHVlKiB2YWx1ZUIgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3Vi
bGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCB2YWx1ZUEsIHZhbHVlQikpOworCisg
ICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEpLCBhIC0g
YikpOworfQorCit2b2lkIHRlc3RTdWJJbW1BcmdEb3VibGUoZG91YmxlIGEsIGRvdWJsZSBiKQor
eworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgVmFsdWUqIHZhbHVlQSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7CisgICAgVmFsdWUqIHZhbHVlQiA9IHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRG
UFIwKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3Vi
LCBPcmlnaW4oKSwgdmFsdWVBLCB2YWx1ZUIpKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNv
bXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBiKSwgYSAtIGIpKTsKK30KKwordm9pZCB0ZXN0U3Vi
SW1tc0RvdWJsZShkb3VibGUgYSwgZG91YmxlIGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogdmFsdWVB
ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsK
KyAgICBWYWx1ZSogdmFsdWVCID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBiKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgdmFsdWVBLCB2YWx1ZUIpKTsKKworICAgIENIRUNLKGlz
SWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jKSwgYSAtIGIpKTsKK30KKwordm9p
ZCB0ZXN0U3ViQXJnRmxvYXQoZmxvYXQgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDMy
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7CisgICAg
VmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4o
KSwgZmxvYXRWYWx1ZSwgZmxvYXRWYWx1ZSk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7Cisg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJl
c3VsdDMyKTsKKworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90
Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4o
YSAtIGEpKSk7Cit9CisKK3ZvaWQgdGVzdFN1YkFyZ3NGbG9hdChmbG9hdCBhLCBmbG9hdCBiKQor
eworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAg
VmFsdWUqIGFyZ3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVu
YywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgVmFsdWUqIGZsb2F0
VmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2lu
KCksIGFyZ3VtZW50MWludDMyKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZTIgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQyaW50MzIp
OworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1Yiwg
T3JpZ2luKCksIGZsb2F0VmFsdWUxLCBmbG9hdFZhbHVlMik7CisgICAgVmFsdWUqIHJlc3VsdDMy
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJl
c3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48
aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3aXNlX2Nhc3Q8aW50
MzJfdD4oYikpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAtIGIpKSk7Cit9CisKK3ZvaWQgdGVz
dFN1YkFyZ0ltbUZsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJn
dW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIp
OworICAgIFZhbHVlKiBjb25zdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIGIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIGZsb2F0VmFsdWUsIGNvbnN0VmFsdWUpOwor
ICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lz
ZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lkZW50
aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90Pihh
KSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhIC0gYikpKTsKK30KKwordm9pZCB0ZXN0U3ViSW1t
QXJnRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDMy
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7CisgICAg
VmFsdWUqIGNvbnN0VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgYSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgY29uc3RWYWx1ZSwgZmxvYXRWYWx1ZSk7CisgICAgVmFs
dWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwg
T3JpZ2luKCksIHJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2Ms
IFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNv
bXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpKSwgYml0
d2lzZV9jYXN0PGludDMyX3Q+KGEgLSBiKSkpOworfQorCit2b2lkIHRlc3RTdWJJbW1zRmxvYXQo
ZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBjb25zdFZhbHVlMSA9IHJvb3Qt
PmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKKyAgICBWYWx1
ZSogY29uc3RWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgYik7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgU3ViLCBPcmlnaW4oKSwgY29uc3RWYWx1ZTEsIGNvbnN0VmFsdWUyKTsKKyAgICBWYWx1
ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBP
cmlnaW4oKSwgcmVzdWx0KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29t
cGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgLSBiKSkp
OworfQorCit2b2lkIHRlc3RTdWJBcmdGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbihm
bG9hdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50SW50MzIgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
KTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
Qml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudEludDMyKTsKKyAgICBWYWx1ZSogYXNEb3Vi
bGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigp
LCBmbG9hdFZhbHVlKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBTdWIsIE9yaWdpbigpLCBhc0RvdWJsZSwgYXNEb3VibGUpOworICAgIFZhbHVlKiBm
bG9hdFJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwg
T3JpZ2luKCksIHJlc3VsdCk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGZsb2F0UmVzdWx0KTsKKyAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0
MzIpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9j
LCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAtIGEp
KSk7Cit9CisKK3ZvaWQgdGVzdFN1YkFyZ3NGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lv
bihmbG9hdCBhLCBmbG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIx
KSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MWludDMyKTsKKyAgICBWYWx1ZSogZmxv
YXRWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmln
aW4oKSwgYXJndW1lbnQyaW50MzIpOworICAgIFZhbHVlKiBhc0RvdWJsZTEgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlMSk7
CisgICAgVmFsdWUqIGFzRG91YmxlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxv
YXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUyKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBhc0RvdWJsZTEsIGFz
RG91YmxlMik7CisgICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICBWYWx1ZSogcmVz
dWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4o
KSwgZmxvYXRSZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21w
aWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYml0d2lz
ZV9jYXN0PGludDMyX3Q+KGIpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgLSBiKSkpOworfQor
Cit2b2lkIHRlc3RTdWJBcmdzRmxvYXRXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lvbihmbG9h
dCBhLCBmbG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Cisg
ICAgVmFsdWUqIGZsb2F0VmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3
aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MWludDMyKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1
ZTIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwg
YXJndW1lbnQyaW50MzIpOworICAgIFZhbHVlKiBhc0RvdWJsZTEgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlMSk7CisgICAg
VmFsdWUqIGFzRG91YmxlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0Rv
dWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUyKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBhc0RvdWJsZTEsIGFzRG91Ymxl
Mik7CisgICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICBWYWx1ZSogZG91YmxlU3Vi
cmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KHByb2MsIFN0b3JlLCBPcmlnaW4oKSwgcmVzdWx0LCBkb3VibGVTdWJyZXNzKTsKKyAgICBWYWx1
ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBP
cmlnaW4oKSwgZmxvYXRSZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBkb3VibGUgZWZmZWN0ID0g
MDsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJp
dHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpLCAmZWZmZWN0
KSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgLSBiKSkpOworICAgIENIRUNLKGlzSWRlbnRpY2Fs
KGVmZmVjdCwgc3RhdGljX2Nhc3Q8ZG91YmxlPihhKSAtIHN0YXRpY19jYXN0PGRvdWJsZT4oYikp
KTsKK30KKwordm9pZCB0ZXN0VGVybmFyeVN1Ykluc3RydWN0aW9uU2VsZWN0aW9uKEIzOjpPcGNv
ZGUgdmFsdWVNb2RpZmllciwgVHlwZSB2YWx1ZVR5cGUsIEFpcjo6T3Bjb2RlIGV4cGVjdGVkT3Bj
b2RlKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisKKyAgICBWYWx1ZSogbGVmdCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBW
YWx1ZSogcmlnaHQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisKKyAgICBpZiAodmFsdWVNb2RpZmllciA9
PSBUcnVuYykgeworICAgICAgICBsZWZ0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCB2
YWx1ZU1vZGlmaWVyLCB2YWx1ZVR5cGUsIE9yaWdpbigpLCBsZWZ0KTsKKyAgICAgICAgcmlnaHQg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIHZhbHVlTW9kaWZpZXIsIHZhbHVlVHlwZSwg
T3JpZ2luKCksIHJpZ2h0KTsKKyAgICB9CisKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgbGVmdCwgcmlnaHQpKTsKKworICAgIGxv
d2VyVG9BaXJGb3JUZXN0aW5nKHByb2MpOworCisgICAgYXV0byBibG9jayA9IHByb2MuY29kZSgp
WzBdOworICAgIHVuc2lnbmVkIG51bWJlck9mU3ViSW5zdHJ1Y3Rpb25zID0gMDsKKyAgICBmb3Ig
KGF1dG8gaW5zdHJ1Y3Rpb24gOiAqYmxvY2spIHsKKyAgICAgICAgaWYgKGluc3RydWN0aW9uLmtp
bmQub3Bjb2RlID09IGV4cGVjdGVkT3Bjb2RlKSB7CisgICAgICAgICAgICBDSEVDS19FUShpbnN0
cnVjdGlvbi5hcmdzLnNpemUoKSwgM3VsKTsKKyAgICAgICAgICAgIENIRUNLX0VRKGluc3RydWN0
aW9uLmFyZ3NbMF0ua2luZCgpLCBBaXI6OkFyZzo6VG1wKTsKKyAgICAgICAgICAgIENIRUNLX0VR
KGluc3RydWN0aW9uLmFyZ3NbMV0ua2luZCgpLCBBaXI6OkFyZzo6VG1wKTsKKyAgICAgICAgICAg
IENIRUNLX0VRKGluc3RydWN0aW9uLmFyZ3NbMl0ua2luZCgpLCBBaXI6OkFyZzo6VG1wKTsKKyAg
ICAgICAgICAgIG51bWJlck9mU3ViSW5zdHJ1Y3Rpb25zKys7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgQ0hFQ0tfRVEobnVtYmVyT2ZTdWJJbnN0cnVjdGlvbnMsIDF1bCk7Cit9CisKK3ZvaWQgdGVz
dE5lZ0RvdWJsZShkb3VibGUgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIE5lZywgT3JpZ2luKCksCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQ
UkluZm86OmFyZ3VtZW50RlBSMCkpKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVB
bmRSdW48ZG91YmxlPihwcm9jLCBhKSwgLWEpKTsKK30KKwordm9pZCB0ZXN0TmVnRmxvYXQoZmxv
YXQgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Cisg
ICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdp
c2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIE5lZywgT3JpZ2luKCksIGZsb2F0VmFsdWUpKTsKKworICAg
IENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZmxvYXQ+KHByb2MsIGJpdHdpc2VfY2Fz
dDxpbnQzMl90PihhKSksIC1hKSk7Cit9CisKK3ZvaWQgdGVzdE5lZ0Zsb2F0V2l0aFVzZWxlc3NE
b3VibGVDb252ZXJzaW9uKGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnRJbnQz
MiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50SW50MzIpOwor
ICAgIFZhbHVlKiBhc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRU
b0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE5lZywgT3JpZ2luKCksIGFzRG91YmxlKTsKKyAgICBW
YWx1ZSogZmxvYXRSZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRv
RmxvYXQsIE9yaWdpbigpLCByZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBmbG9hdFJlc3VsdCk7CisKKyAgICBDSEVDSyhpc0lk
ZW50aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4o
YSkpLCAtYSkpOworfQorCit2b2lkIHRlc3RCaXRBbmRBcmdzKGludDY0X3QgYSwgaW50NjRfdCBi
KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpOworCisgICAgQ0hFQ0soY29tcGls
ZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhLCBiKSA9PSAoYSAmIGIpKTsKK30KKwordm9pZCB0ZXN0
Qml0QW5kU2FtZUFyZyhpbnQ2NF90IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIGFyZ3Vt
ZW50LAorICAgICAgICAgICAgYXJndW1lbnQpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48
aW50NjRfdD4ocHJvYywgYSkgPT0gYSk7Cit9CisKK3ZvaWQgdGVzdEJpdEFuZE5vdE5vdChpbnQ2
NF90IGEsIGludDY0X3QgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmdBID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOworICAgIFZhbHVlKiBhcmdCID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgIFZhbHVlKiBub3RB
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLCBhcmdBLCBy
b290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTEpKTsKKyAgICBW
YWx1ZSogbm90QiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0WG9yLCBPcmlnaW4o
KSwgYXJnQiwgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0x
KSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIG5vdEEsCisgICAgICAgICAg
ICBub3RCKSk7CisKKyAgICBDSEVDS19FUShjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEs
IGIpLCAofmEgJiB+YikpOworfQorCit2b2lkIHRlc3RCaXRBbmROb3RJbW0oaW50NjRfdCBhLCBp
bnQ2NF90IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJnQSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAg
ICBWYWx1ZSogbm90QSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0WG9yLCBPcmln
aW4oKSwgYXJnQSwgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IC0xKSk7CisgICAgVmFsdWUqIGNzdEIgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgYik7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAg
ICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIG5v
dEEsCisgICAgICAgICAgICBjc3RCKSk7CisKKyAgICBDSEVDS19FUShjb21waWxlQW5kUnVuPGlu
dDY0X3Q+KHByb2MsIGEsIGIpLCAofmEgJiBiKSk7Cit9CisKK3ZvaWQgdGVzdEJpdEFuZEltbXMo
aW50NjRfdCBhLCBpbnQ2NF90IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEp
LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIGIpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MpID09IChh
ICYgYikpOworfQorCit2b2lkIHRlc3RCaXRBbmRBcmdJbW0oaW50NjRfdCBhLCBpbnQ2NF90IGIp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2Ms
IFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAg
ICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIGIpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEp
ID09IChhICYgYikpOworfQorCit2b2lkIHRlc3RCaXRBbmRJbW1BcmcoaW50NjRfdCBhLCBpbnQ2
NF90IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAg
IHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpLAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHBy
b2MsIGIpID09IChhICYgYikpOworfQorCit2b2lkIHRlc3RCaXRBbmRCaXRBbmRBcmdJbW1JbW0o
aW50NjRfdCBhLCBpbnQ2NF90IGIsIGludDY0X3QgYykKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBpbm5l
ckJpdEFuZCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIEJpdEFuZCwg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpKTsKKyAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdp
bigpLAorICAgICAgICAgICAgaW5uZXJCaXRBbmQsCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYykpKTsKKworICAgIENIRUNLKGNvbXBp
bGVBbmRSdW48aW50NjRfdD4ocHJvYywgYSkgPT0gKChhICYgYikgJiBjKSk7Cit9CisKK3ZvaWQg
dGVzdEJpdEFuZEltbUJpdEFuZEFyZ0ltbShpbnQ2NF90IGEsIGludDY0X3QgYiwgaW50NjRfdCBj
KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgVmFsdWUqIGlubmVyQml0QW5kID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgYykpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAg
ICAgICAgIHByb2MsIEJpdEFuZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSksCisgICAgICAgICAgICBpbm5lckJp
dEFuZCkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBiKSA9PSAo
YSAmIChiICYgYykpKTsKK30KKwordm9pZCB0ZXN0Qml0QW5kQXJnczMyKGludCBhLCBpbnQgYikK
K3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAg
ICAgICAgIHByb2MsIEJpdEFuZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxp
bnQ+KHByb2MsIGEsIGIpID09IChhICYgYikpOworfQorCit2b2lkIHRlc3RCaXRBbmRTYW1lQXJn
MzIoaW50IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsK
KyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBw
cm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAgICAgICAgICAgYXJndW1lbnQsCisgICAgICAgICAg
ICBhcmd1bWVudCkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEpID09
IGEpOworfQorCit2b2lkIHRlc3RCaXRBbmRJbW1zMzIoaW50IGEsIGludCBiKQoreworICAgIFBy
b2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJv
YywgQml0QW5kLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFu
ZFJ1bjxpbnQ+KHByb2MpID09IChhICYgYikpOworfQorCit2b2lkIHRlc3RCaXRBbmRBcmdJbW0z
MihpbnQgYSwgaW50IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
CisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywg
T3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSkpOworCisg
ICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEpID09IChhICYgYikpOworfQorCit2
b2lkIHRlc3RCaXRBbmRJbW1BcmczMihpbnQgYSwgaW50IGIpCit7CisgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRBbmQs
IE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIGEpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGIp
ID09IChhICYgYikpOworfQorCit2b2lkIHRlc3RCaXRBbmRCaXRBbmRBcmdJbW1JbW0zMihpbnQg
YSwgaW50IGIsIGludCBjKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGlubmVyQml0QW5kID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKKyAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmln
aW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSk7CisgICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQml0QW5kLCBPcmln
aW4oKSwKKyAgICAgICAgICAgIGlubmVyQml0QW5kLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGMpKSk7CisKKyAgICBDSEVDSyhjb21w
aWxlQW5kUnVuPGludD4ocHJvYywgYSkgPT0gKChhICYgYikgJiBjKSk7Cit9CisKK3ZvaWQgdGVz
dEJpdEFuZEltbUJpdEFuZEFyZ0ltbTMyKGludCBhLCBpbnQgYiwgaW50IGMpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBWYWx1ZSogaW5uZXJCaXRBbmQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBw
cm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIGMpKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpLAorICAgICAgICAgICAgaW5u
ZXJCaXRBbmQpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBiKSA9PSAo
YSAmIChiICYgYykpKTsKK30KKwordm9pZCB0ZXN0Qml0QW5kV2l0aE1hc2tSZXR1cm5zQm9vbGVh
bnMoaW50NjRfdCBhLCBpbnQ2NF90IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJnMCA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICBWYWx1
ZSogZXF1YWwgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEVxdWFsLCBPcmlnaW4oKSwg
YXJnMCwgYXJnMSk7CisgICAgVmFsdWUqIG1hc2tlZEVxdWFsID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMHg1KSwKKyAgICAgICAgZXF1YWwpOworICAgIFZh
bHVlKiBpbnZlcnRlZCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0WG9yLCBPcmln
aW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIDB4MSksCisgICAgICAgIG1hc2tlZEVxdWFsKTsKKyAgICBWYWx1ZSogc2VsZWN0ID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTZWxlY3QsIE9yaWdpbigpLCBpbnZlcnRlZCwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKSwK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC01
KSk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmln
aW4oKSwgc2VsZWN0KTsKKworICAgIGludDY0X3QgZXhwZWN0ZWQgPSAoYSA9PSBiKSA/IC01IDog
NDI7CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhLCBiKSA9PSBleHBl
Y3RlZCk7Cit9CisKK3N0YXRpYyBkb3VibGUgYml0QW5kRG91YmxlKGRvdWJsZSBhLCBkb3VibGUg
YikKK3sKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PGRvdWJsZT4oYml0d2lzZV9jYXN0PHVpbnQ2
NF90PihhKSAmIGJpdHdpc2VfY2FzdDx1aW50NjRfdD4oYikpOworfQorCit2b2lkIHRlc3RCaXRB
bmRBcmdEb3VibGUoZG91YmxlIGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFy
Z3VtZW50RlBSMCk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgQml0QW5kLCBPcmlnaW4oKSwgYXJndW1lbnQsIGFyZ3VtZW50KTsKKyAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKwor
ICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBhKSwgYml0
QW5kRG91YmxlKGEsIGEpKSk7Cit9CisKK3ZvaWQgdGVzdEJpdEFuZEFyZ3NEb3VibGUoZG91Ymxl
IGEsIGRvdWJsZSBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50QSA9IHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRG
UFIwKTsKKyAgICBWYWx1ZSogYXJndW1lbnRCID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOworICAgIFZhbHVl
KiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCks
IGFyZ3VtZW50QSwgYXJndW1lbnRCKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKworICAgIENIRUNLKGlzSWRlbnRpY2Fs
KGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBhLCBiKSwgYml0QW5kRG91YmxlKGEsIGIpKSk7
Cit9CisKK3ZvaWQgdGVzdEJpdEFuZEFyZ0ltbURvdWJsZShkb3VibGUgYSwgZG91YmxlIGIpCit7
CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnRBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgIFZhbHVl
KiBhcmd1bWVudEIgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIGIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEJpdEFuZCwgT3JpZ2luKCksIGFyZ3VtZW50QSwgYXJndW1lbnRCKTsKKyAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKwor
ICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBhLCBiKSwg
Yml0QW5kRG91YmxlKGEsIGIpKSk7Cit9CisKK3ZvaWQgdGVzdEJpdEFuZEltbXNEb3VibGUoZG91
YmxlIGEsIGRvdWJsZSBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50QSA9IHJvb3QtPmFw
cGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7CisgICAgVmFsdWUq
IGFyZ3VtZW50QiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmln
aW4oKSwgYik7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQml0QW5kLCBPcmlnaW4oKSwgYXJndW1lbnRBLCBhcmd1bWVudEIpOworICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOworCisg
ICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MpLCBiaXRBbmRE
b3VibGUoYSwgYikpKTsKK30KKworc3RhdGljIGZsb2F0IGJpdEFuZEZsb2F0KGZsb2F0IGEsIGZs
b2F0IGIpCit7CisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxmbG9hdD4oYml0d2lzZV9jYXN0PHVp
bnQzMl90PihhKSAmIGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oYikpOworfQorCit2b2lkIHRlc3RC
aXRBbmRBcmdGbG9hdChmbG9hdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApKSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwgYXJndW1lbnQsIGFyZ3VtZW50KTsKKyAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVz
dWx0KTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZmxvYXQ+KHByb2Ms
IGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGJpdEFuZEZsb2F0KGEsIGEpKSk7Cit9CisKK3Zv
aWQgdGVzdEJpdEFuZEFyZ3NGbG9hdChmbG9hdCBhLCBmbG9hdCBiKQoreworICAgIFByb2NlZHVy
ZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFs
dWUqIGFyZ3VtZW50QSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3Qs
IE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOworICAgIFZhbHVlKiBhcmd1
bWVudEIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4o
KSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCks
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBhcmd1bWVudEEsIGFy
Z3VtZW50Qik7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwg
T3JpZ2luKCksIHJlc3VsdCk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVu
PGZsb2F0Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSksIGJpdHdpc2VfY2FzdDxpbnQz
Ml90PihiKSksIGJpdEFuZEZsb2F0KGEsIGIpKSk7Cit9CisKK3ZvaWQgdGVzdEJpdEFuZEFyZ0lt
bUZsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnRBID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50QiA9IHJvb3QtPmFw
cGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKTsKKyAgICBWYWx1ZSog
cmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBh
cmd1bWVudEEsIGFyZ3VtZW50Qik7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHBy
b2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChj
b21waWxlQW5kUnVuPGZsb2F0Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSksIGJpdHdp
c2VfY2FzdDxpbnQzMl90PihiKSksIGJpdEFuZEZsb2F0KGEsIGIpKSk7Cit9CisKK3ZvaWQgdGVz
dEJpdEFuZEltbXNGbG9hdChmbG9hdCBhLCBmbG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9j
OworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFy
Z3VtZW50QSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+KHByb2MsIE9yaWdpbigp
LCBhKTsKKyAgICBWYWx1ZSogYXJndW1lbnRCID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCksIGFyZ3VtZW50QSwgYXJndW1lbnRC
KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwgcmVzdWx0KTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZmxvYXQ+
KHByb2MpLCBiaXRBbmRGbG9hdChhLCBiKSkpOworfQorCit2b2lkIHRlc3RCaXRBbmRBcmdzRmxv
YXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24oZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIFZhbHVlKiBhcmd1bWVudEEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdp
c2VDYXN0LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBU
cnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKTsKKyAgICBWYWx1
ZSogYXJndW1lbnRCID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9y
aWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSk7CisgICAgVmFsdWUqIGFyZ3Vt
ZW50QWFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91Ymxl
LCBPcmlnaW4oKSwgYXJndW1lbnRBKTsKKyAgICBWYWx1ZSogYXJndW1lbnRCYXNEb3VibGUgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBhcmd1
bWVudEIpOworICAgIFZhbHVlKiBkb3VibGVSZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEJpdEFuZCwgT3JpZ2luKCksIGFyZ3VtZW50QWFzRG91YmxlLCBhcmd1bWVudEJhc0Rv
dWJsZSk7CisgICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgZG91YmxlUmVzdWx0KTsKKyAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgZmxvYXRSZXN1bHQp
OworCisgICAgZG91YmxlIGRvdWJsZUEgPSBhOworICAgIGRvdWJsZSBkb3VibGVCID0gYjsKKyAg
ICBmbG9hdCBleHBlY3RlZCA9IHN0YXRpY19jYXN0PGZsb2F0PihiaXRBbmREb3VibGUoZG91Ymxl
QSwgZG91YmxlQikpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZmxvYXQ+
KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIp
KSwgZXhwZWN0ZWQpKTsKK30KKwordm9pZCB0ZXN0Qml0T3JBcmdzKGludDY0X3QgYSwgaW50NjRf
dCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICAgICAgcHJvYywgQml0T3IsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSk7CisKKyAgICBDSEVDSyhjb21w
aWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEsIGIpID09IChhIHwgYikpOworfQorCit2b2lkIHRl
c3RCaXRPclNhbWVBcmcoaW50NjRfdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0g
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgIHByb2MsIEJpdE9yLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIGFyZ3Vt
ZW50LAorICAgICAgICAgICAgYXJndW1lbnQpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48
aW50NjRfdD4ocHJvYywgYSkgPT0gYSk7Cit9CisKK3ZvaWQgdGVzdEJpdE9yQW5kQW5kQXJncyhp
bnQ2NF90IGEsIGludDY0X3QgYiwgaW50NjRfdCBjKQoreworICAgIC8vIFdlIHdhbnQgdG8gY2hl
Y2sgZXZlcnkgcG9zc2libGUgb3JkZXJpbmcgb2YgYXJndW1lbnRzICh0byBwcm9wZXJseSBjaGVj
ayBldmVyeSBwYXRoIGluIEIzUmVkdWNlU3RyZW5ndGgpOgorICAgIC8vICgoYSAmIGIpIHwgKGEg
JiBjKSkKKyAgICAvLyAoKGEgJiBiKSB8IChjICYgYSkpCisgICAgLy8gKChiICYgYSkgfCAoYSAm
IGMpKQorICAgIC8vICgoYiAmIGEpIHwgKGMgJiBhKSkKKyAgICBmb3IgKGludCBpID0gMDsgaSA8
IDQ7ICsraSkgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgVmFsdWUqIGFyZ0EgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7CisgICAgICAgIFZhbHVlKiBhcmdCID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBW
YWx1ZSogYXJnQyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgVmFsdWUqIGFuZEFCID0gaSAm
IDIgPyByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCksIGFyZ0Es
IGFyZ0IpCisgICAgICAgICAgICA6IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5k
LCBPcmlnaW4oKSwgYXJnQiwgYXJnQSk7CisgICAgICAgIFZhbHVlKiBhbmRBQyA9IGkgJiAxID8g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBhcmdBLCBhcmdD
KQorICAgICAgICAgICAgOiByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3Jp
Z2luKCksIGFyZ0MsIGFyZ0EpOworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
CisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBCaXRPciwgT3JpZ2luKCks
CisgICAgICAgICAgICAgICAgYW5kQUIsCisgICAgICAgICAgICAgICAgYW5kQUMpKTsKKworICAg
ICAgICBDSEVDS19FUShjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEsIGIsIGMpLCAoKGEg
JiBiKSB8IChhICYgYykpKTsKKyAgICB9Cit9CisKK3ZvaWQgdGVzdEJpdE9yQW5kU2FtZUFyZ3Mo
aW50NjRfdCBhLCBpbnQ2NF90IGIpCit7CisgICAgLy8gV2Ugd2FudCB0byBjaGVjayBldmVyeSBw
b3NzaWJsZSBvcmRlcmluZyBvZiBhcmd1bWVudHMgKHRvIHByb3Blcmx5IGNoZWNrIGV2ZXJ5IHBh
dGggaW4gQjNSZWR1Y2VTdHJlbmd0aCk6CisgICAgLy8gKChhICYgYikgfCBhKQorICAgIC8vICgo
YiAmIGEpIHwgYSkKKyAgICAvLyAoYSB8IChhICYgYikpCisgICAgLy8gKGEgfCAoYiAmIGEpKQor
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgKytpKSB7CisgICAgICAgIFByb2NlZHVyZSBwcm9j
OworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBW
YWx1ZSogYXJnQSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIGFyZ0IgPSByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMSk7CisgICAgICAgIFZhbHVlKiBhbmRBQiA9IGkgJiAxID8gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBhcmdBLCBhcmdCKQorICAgICAgICAg
ICAgOiByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCksIGFyZ0Is
IGFyZ0EpOworICAgICAgICBWYWx1ZSogcmVzdWx0ID0gaSAmIDIgPyByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEJpdE9yLCBPcmlnaW4oKSwgYW5kQUIsIGFyZ0EpCisgICAgICAgICAgICA6
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0T3IsIE9yaWdpbigpLCBhcmdBLCBhbmRB
Qik7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCByZXN1bHQpOworCisgICAgICAgIENIRUNLX0VRKGNvbXBpbGVBbmRSdW48aW50NjRf
dD4ocHJvYywgYSwgYiksICgoYSAmIGIpIHwgYSkpOworICAgIH0KK30KKwordm9pZCB0ZXN0Qml0
T3JOb3ROb3QoaW50NjRfdCBhLCBpbnQ2NF90IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJnQSA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogYXJnQiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAg
ICBWYWx1ZSogbm90QSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0WG9yLCBPcmln
aW4oKSwgYXJnQSwgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IC0xKSk7CisgICAgVmFsdWUqIG5vdEIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJp
dFhvciwgT3JpZ2luKCksIGFyZ0IsIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAtMSkpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgIHByb2MsIEJpdE9yLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIG5vdEEs
CisgICAgICAgICAgICBub3RCKSk7CisKKyAgICBDSEVDS19FUShjb21waWxlQW5kUnVuPGludDY0
X3Q+KHByb2MsIGEsIGIpLCAofmEgfCB+YikpOworfQorCit2b2lkIHRlc3RCaXRPck5vdEltbShp
bnQ2NF90IGEsIGludDY0X3QgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmdBID0gcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOworICAgIFZhbHVlKiBub3RBID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBC
aXRYb3IsIE9yaWdpbigpLCBhcmdBLCByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgLTEpKTsKKyAgICBWYWx1ZSogY3N0QiA9IHJvb3QtPmFwcGVuZE5ldzxDb25z
dDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRPciwgT3JpZ2luKCksCisgICAg
ICAgICAgICBub3RBLAorICAgICAgICAgICAgY3N0QikpOworCisgICAgQ0hFQ0tfRVEoY29tcGls
ZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhLCBiKSwgKH5hIHwgYikpOworfQorCit2b2lkIHRlc3RC
aXRPckltbXMoaW50NjRfdCBhLCBpbnQ2NF90IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRPciwgT3JpZ2lu
KCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmln
aW4oKSwgYSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgYikpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJv
YykgPT0gKGEgfCBiKSk7Cit9CisKK3ZvaWQgdGVzdEJpdE9yQXJnSW1tKGludDY0X3QgYSwgaW50
NjRfdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICAgICAgcHJvYywgQml0T3IsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIGIpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHBy
b2MsIGEpID09IChhIHwgYikpOworfQorCit2b2lkIHRlc3RCaXRPckltbUFyZyhpbnQ2NF90IGEs
IGludDY0X3QgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAg
ICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKKyAgICAgICAgICAgIHByb2MsIEJpdE9yLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKSwKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90
Pihwcm9jLCBiKSA9PSAoYSB8IGIpKTsKK30KKwordm9pZCB0ZXN0Qml0T3JCaXRPckFyZ0ltbUlt
bShpbnQ2NF90IGEsIGludDY0X3QgYiwgaW50NjRfdCBjKQoreworICAgIFByb2NlZHVyZSBwcm9j
OworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGlu
bmVyQml0T3IgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBCaXRPciwg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpKTsKKyAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRPciwgT3JpZ2lu
KCksCisgICAgICAgICAgICBpbm5lckJpdE9yLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGMpKSk7CisKKyAgICBDSEVDSyhjb21waWxl
QW5kUnVuPGludDY0X3Q+KHByb2MsIGEpID09ICgoYSB8IGIpIHwgYykpOworfQorCit2b2lkIHRl
c3RCaXRPckltbUJpdE9yQXJnSW1tKGludDY0X3QgYSwgaW50NjRfdCBiLCBpbnQ2NF90IGMpCit7
CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICBWYWx1ZSogaW5uZXJCaXRPciA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgIHByb2MsIEJpdE9yLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYykp
OworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
IHByb2MsIEJpdE9yLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25z
dDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKSwKKyAgICAgICAgICAgIGlubmVyQml0T3IpKTsK
KworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYikgPT0gKGEgfCAoYiB8
IGMpKSk7Cit9CisKK3ZvaWQgdGVzdEJpdE9yQXJnczMyKGludCBhLCBpbnQgYikKK3sKKyAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIEJpdE9yLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMSkpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywg
YSwgYikgPT0gKGEgfCBiKSk7Cit9CisKK3ZvaWQgdGVzdEJpdE9yU2FtZUFyZzMyKGludCBhKQor
eworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAg
ICBwcm9jLCBCaXRPciwgT3JpZ2luKCksCisgICAgICAgICAgICBhcmd1bWVudCwKKyAgICAgICAg
ICAgIGFyZ3VtZW50KSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYSkg
PT0gYSk7Cit9CisKK3ZvaWQgdGVzdEJpdE9ySW1tczMyKGludCBhLCBpbnQgYikKK3sKKyAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIEJpdE9yLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFu
ZFJ1bjxpbnQ+KHByb2MpID09IChhIHwgYikpOworfQorCit2b2lkIHRlc3RCaXRPckFyZ0ltbTMy
KGludCBhLCBpbnQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
KyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJpdE9yLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9y
aWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYikpKTsKKworICAg
IENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhKSA9PSAoYSB8IGIpKTsKK30KKwordm9p
ZCB0ZXN0Qml0T3JJbW1BcmczMihpbnQgYSwgaW50IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRPciwgT3Jp
Z2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgYSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAg
ICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCkpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYikgPT0g
KGEgfCBiKSk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy90ZXN0YjNfMy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzllMDI4NmE0MzliMDhlODE2ZTk1ZGY2YTE4
ZDIzOTYzYTZiNDQ1NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My90ZXN0YjNfMy5jcHAKQEAgLTAsMCArMSwzMDAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAidGVzdGIzLmgiCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCit2b2lkIHRlc3RCaXRPckJpdE9y
QXJnSW1tSW1tMzIoaW50IGEsIGludCBiLCBpbnQgYykKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBpbm5l
ckJpdE9yID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgQml0T3IsIE9y
aWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJv
YywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpKTsKKyAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3Jp
Z2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9j
LCBCaXRPciwgT3JpZ2luKCksCisgICAgICAgICAgICBpbm5lckJpdE9yLAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGMpKSk7CisKKyAg
ICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYSkgPT0gKChhIHwgYikgfCBjKSk7Cit9
CisKK3ZvaWQgdGVzdEJpdE9ySW1tQml0T3JBcmdJbW0zMihpbnQgYSwgaW50IGIsIGludCBjKQor
eworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgVmFsdWUqIGlubmVyQml0T3IgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICBwcm9jLCBCaXRPciwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgYykpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAg
ICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKKyAgICAgICAgICAgIHByb2MsIEJpdE9yLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKSwKKyAgICAgICAg
ICAgIGlubmVyQml0T3IpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBi
KSA9PSAoYSB8IChiIHwgYykpKTsKK30KKworZG91YmxlIGJpdE9yRG91YmxlKGRvdWJsZSBhLCBk
b3VibGUgYikKK3sKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PGRvdWJsZT4oYml0d2lzZV9jYXN0
PHVpbnQ2NF90PihhKSB8IGJpdHdpc2VfY2FzdDx1aW50NjRfdD4oYikpOworfQorCit2b2lkIHRl
c3RCaXRPckFyZ0RvdWJsZShkb3VibGUgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudCA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5m
bzo6YXJndW1lbnRGUFIwKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBCaXRPciwgT3JpZ2luKCksIGFyZ3VtZW50LCBhcmd1bWVudCk7CisgICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7
CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgYSks
IGJpdE9yRG91YmxlKGEsIGEpKSk7Cit9CisKK3ZvaWQgdGVzdEJpdE9yQXJnc0RvdWJsZShkb3Vi
bGUgYSwgZG91YmxlIGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnRBID0gcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVu
dEZQUjApOworICAgIFZhbHVlKiBhcmd1bWVudEIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7CisgICAgVmFs
dWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0T3IsIE9yaWdpbigp
LCBhcmd1bWVudEEsIGFyZ3VtZW50Qik7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNh
bChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgYSwgYiksIGJpdE9yRG91YmxlKGEsIGIpKSk7
Cit9CisKK3ZvaWQgdGVzdEJpdE9yQXJnSW1tRG91YmxlKGRvdWJsZSBhLCBkb3VibGUgYikKK3sK
KyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworICAgIFZhbHVlKiBhcmd1bWVudEEgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgVmFsdWUq
IGFyZ3VtZW50QiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmln
aW4oKSwgYik7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQml0T3IsIE9yaWdpbigpLCBhcmd1bWVudEEsIGFyZ3VtZW50Qik7CisgICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisKKyAg
ICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgYSwgYiksIGJp
dE9yRG91YmxlKGEsIGIpKSk7Cit9CisKK3ZvaWQgdGVzdEJpdE9ySW1tc0RvdWJsZShkb3VibGUg
YSwgZG91YmxlIGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnRBID0gcm9vdC0+YXBwZW5k
TmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKKyAgICBWYWx1ZSogYXJn
dW1lbnRCID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBiKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBC
aXRPciwgT3JpZ2luKCksIGFyZ3VtZW50QSwgYXJndW1lbnRCKTsKKyAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKworICAgIENI
RUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jKSwgYml0T3JEb3VibGUo
YSwgYikpKTsKK30KKworZmxvYXQgYml0T3JGbG9hdChmbG9hdCBhLCBmbG9hdCBiKQoreworICAg
IHJldHVybiBiaXR3aXNlX2Nhc3Q8ZmxvYXQ+KGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oYSkgfCBi
aXR3aXNlX2Nhc3Q8dWludDMyX3Q+KGIpKTsKK30KKwordm9pZCB0ZXN0Qml0T3JBcmdGbG9hdChm
bG9hdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApKSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
Qml0T3IsIE9yaWdpbigpLCBhcmd1bWVudCwgYXJndW1lbnQpOworICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOworCisgICAgQ0hF
Q0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxmbG9hdD4ocHJvYywgYml0d2lzZV9jYXN0PGlu
dDMyX3Q+KGEpKSwgYml0T3JGbG9hdChhLCBhKSkpOworfQorCit2b2lkIHRlc3RCaXRPckFyZ3NG
bG9hdChmbG9hdCBhLCBmbG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50QSA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLAorICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSkpOworICAgIFZhbHVlKiBhcmd1bWVudEIgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMSkpKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBCaXRPciwgT3JpZ2luKCksIGFyZ3VtZW50QSwgYXJndW1lbnRCKTsKKyAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsK
KworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZmxvYXQ+KHByb2MsIGJpdHdp
c2VfY2FzdDxpbnQzMl90PihhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpKSwgYml0T3JGbG9h
dChhLCBiKSkpOworfQorCit2b2lkIHRlc3RCaXRPckFyZ0ltbUZsb2F0KGZsb2F0IGEsIGZsb2F0
IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnRBID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
KSk7CisgICAgVmFsdWUqIGFyZ3VtZW50QiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFs
dWU+KHByb2MsIE9yaWdpbigpLCBiKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXRPciwgT3JpZ2luKCksIGFyZ3VtZW50QSwgYXJndW1lbnRCKTsK
KyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwg
cmVzdWx0KTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZmxvYXQ+KHBy
b2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpKSwg
Yml0T3JGbG9hdChhLCBiKSkpOworfQorCit2b2lkIHRlc3RCaXRPckltbXNGbG9hdChmbG9hdCBh
LCBmbG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50QSA9IHJvb3QtPmFwcGVuZE5l
dzxDb25zdEZsb2F0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKKyAgICBWYWx1ZSogYXJndW1l
bnRCID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIp
OworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdE9y
LCBPcmlnaW4oKSwgYXJndW1lbnRBLCBhcmd1bWVudEIpOworICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOworCisgICAgQ0hFQ0so
aXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxmbG9hdD4ocHJvYyksIGJpdE9yRmxvYXQoYSwgYikp
KTsKK30KKwordm9pZCB0ZXN0Qml0T3JBcmdzRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNp
b24oZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudEEgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCkpKTsKKyAgICBWYWx1ZSogYXJndW1lbnRCID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjEpKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50QWFzRG91YmxlID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgYXJndW1lbnRBKTsKKyAg
ICBWYWx1ZSogYXJndW1lbnRCYXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBhcmd1bWVudEIpOworICAgIFZhbHVlKiBkb3VibGVS
ZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdE9yLCBPcmlnaW4oKSwgYXJn
dW1lbnRBYXNEb3VibGUsIGFyZ3VtZW50QmFzRG91YmxlKTsKKyAgICBWYWx1ZSogZmxvYXRSZXN1
bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigp
LCBkb3VibGVSZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCBmbG9hdFJlc3VsdCk7CisKKyAgICBkb3VibGUgZG91YmxlQSA9IGE7
CisgICAgZG91YmxlIGRvdWJsZUIgPSBiOworICAgIGZsb2F0IGV4cGVjdGVkID0gc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGJpdE9yRG91YmxlKGRvdWJsZUEsIGRvdWJsZUIpKTsKKyAgICBDSEVDSyhpc0lk
ZW50aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4o
YSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihiKSksIGV4cGVjdGVkKSk7Cit9CisKK3ZvaWQgdGVz
dEJpdFhvckFyZ3MoaW50NjRfdCBhLCBpbnQ2NF90IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRYb3IsIE9y
aWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjEpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEs
IGIpID09IChhIF4gYikpOworfQorCit2b2lkIHRlc3RCaXRYb3JTYW1lQXJnKGludDY0X3QgYSkK
K3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRY
b3IsIE9yaWdpbigpLAorICAgICAgICAgICAgYXJndW1lbnQsCisgICAgICAgICAgICBhcmd1bWVu
dCkpOworCisgICAgQ0hFQ0soIWNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYSkpOworfQor
Cit2b2lkIHRlc3RCaXRYb3JBbmRBbmRBcmdzKGludDY0X3QgYSwgaW50NjRfdCBiLCBpbnQ2NF90
IGMpCit7CisgICAgLy8gV2Ugd2FudCB0byBjaGVjayBldmVyeSBwb3NzaWJsZSBvcmRlcmluZyBv
ZiBhcmd1bWVudHMgKHRvIHByb3Blcmx5IGNoZWNrIGV2ZXJ5IHBhdGggaW4gQjNSZWR1Y2VTdHJl
bmd0aCk6CisgICAgLy8gKChhICYgYikgXiAoYSAmIGMpKQorICAgIC8vICgoYSAmIGIpIF4gKGMg
JiBhKSkKKyAgICAvLyAoKGIgJiBhKSBeIChhICYgYykpCisgICAgLy8gKChiICYgYSkgXiAoYyAm
IGEpKQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgKytpKSB7CisgICAgICAgIFByb2NlZHVy
ZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
ICAgICBWYWx1ZSogYXJnQSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIGFyZ0Ig
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIFZhbHVlKiBhcmdDID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIp
OworICAgICAgICBWYWx1ZSogYW5kQUIgPSBpICYgMiA/IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgQml0QW5kLCBPcmlnaW4oKSwgYXJnQSwgYXJnQikKKyAgICAgICAgICAgIDogcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBhcmdCLCBhcmdBKTsKKyAg
ICAgICAgVmFsdWUqIGFuZEFDID0gaSAmIDEgPyByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEJpdEFuZCwgT3JpZ2luKCksIGFyZ0EsIGFyZ0MpCisgICAgICAgICAgICA6IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwgYXJnQywgYXJnQSk7CisgICAgICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwg
T3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgICAgIHByb2MsIEJpdFhvciwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgYW5kQUIsCisg
ICAgICAgICAgICAgICAgYW5kQUMpKTsKKworICAgICAgICBDSEVDS19FUShjb21waWxlQW5kUnVu
PGludDY0X3Q+KHByb2MsIGEsIGIsIGMpLCAoKGEgJiBiKSBeIChhICYgYykpKTsKKyAgICB9Cit9
CisKK3ZvaWQgdGVzdEJpdFhvckFuZFNhbWVBcmdzKGludDY0X3QgYSwgaW50NjRfdCBiKQorewor
ICAgIC8vIFdlIHdhbnQgdG8gY2hlY2sgZXZlcnkgcG9zc2libGUgb3JkZXJpbmcgb2YgYXJndW1l
bnRzICh0byBwcm9wZXJseSBjaGVjayBldmVyeSBwYXRoIGluIEIzUmVkdWNlU3RyZW5ndGgpOgor
ICAgIC8vICgoYSAmIGIpIF4gYSkKKyAgICAvLyAoKGIgJiBhKSBeIGEpCisgICAgLy8gKGEgXiAo
YSAmIGIpKQorICAgIC8vIChhIF4gKGIgJiBhKSkKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7
ICsraSkgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgVmFsdWUqIGFyZ0EgPSByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7CisgICAgICAgIFZhbHVlKiBhcmdCID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBWYWx1
ZSogYW5kQUIgPSBpICYgMSA/IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBP
cmlnaW4oKSwgYXJnQSwgYXJnQikKKyAgICAgICAgICAgIDogcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBhcmdCLCBhcmdBKTsKKyAgICAgICAgVmFsdWUqIHJl
c3VsdCA9IGkgJiAyID8gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRYb3IsIE9yaWdp
bigpLCBhbmRBQiwgYXJnQSkKKyAgICAgICAgICAgIDogcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBCaXRYb3IsIE9yaWdpbigpLCBhcmdBLCBhbmRBQik7CisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOworICAgIAor
ICAgICAgICBDSEVDS19FUShjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEsIGIpLCAoKGEg
JiBiKSBeIGEpKTsKKyAgICB9Cit9CisKK3ZvaWQgdGVzdEJpdFhvckltbXMoaW50NjRfdCBhLCBp
bnQ2NF90IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRYb3IsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpLAorICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpKSk7CisK
KyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MpID09IChhIF4gYikpOworfQor
Cit2b2lkIHRlc3RCaXRYb3JBcmdJbW0oaW50NjRfdCBhLCBpbnQ2NF90IGIpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3Jp
Z2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9j
LCBCaXRYb3IsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpKSk7
CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEpID09IChhIF4gYikp
OworfQorCit2b2lkIHRlc3RCaXRYb3JJbW1BcmcoaW50NjRfdCBhLCBpbnQ2NF90IGIpCit7Cisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAg
ICBwcm9jLCBCaXRYb3IsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENv
bnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGIpID09IChh
IF4gYikpOworfQorCit2b2lkIHRlc3RCaXRYb3JCaXRYb3JBcmdJbW1JbW0oaW50NjRfdCBhLCBp
bnQ2NF90IGIsIGludDY0X3QgYykKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBpbm5lckJpdFhvciA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIEJpdFhvciwgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRYb3IsIE9yaWdpbigpLAorICAgICAg
ICAgICAgaW5uZXJCaXRYb3IsCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYykpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50
NjRfdD4ocHJvYywgYSkgPT0gKChhIF4gYikgXiBjKSk7Cit9CisKK3ZvaWQgdGVzdEJpdFhvcklt
bUJpdFhvckFyZ0ltbShpbnQ2NF90IGEsIGludDY0X3QgYiwgaW50NjRfdCBjKQoreworICAgIFBy
b2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgVmFsdWUqIGlubmVyQml0WG9yID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAg
cHJvYywgQml0WG9yLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAorICAgICAg
ICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYykpOworICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2Ms
IEJpdFhvciwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYSksCisgICAgICAgICAgICBpbm5lckJpdFhvcikpOworCisg
ICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBiKSA9PSAoYSBeIChiIF4gYykp
KTsKK30KKwordm9pZCB0ZXN0Qml0WG9yQXJnczMyKGludCBhLCBpbnQgYikKK3sKKyAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2Ms
IEJpdFhvciwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjEpKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEs
IGIpID09IChhIF4gYikpOworfQorCit2b2lkIHRlc3RCaXRYb3JTYW1lQXJnMzIoaW50IGEpCit7
CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkp
OworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
IHByb2MsIEJpdFhvciwgT3JpZ2luKCksCisgICAgICAgICAgICBhcmd1bWVudCwKKyAgICAgICAg
ICAgIGFyZ3VtZW50KSk7CisKKyAgICBDSEVDSyghY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEp
KTsKK30KKwordm9pZCB0ZXN0Qml0WG9ySW1tczMyKGludCBhLCBpbnQgYikKK3sKKyAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2Ms
IEJpdFhvciwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYikpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRS
dW48aW50Pihwcm9jKSA9PSAoYSBeIGIpKTsKK30KKwordm9pZCB0ZXN0Qml0WG9yQXJnSW1tMzIo
aW50IGEsIGludCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAor
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQml0WG9yLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9y
aWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYikpKTsKKworICAg
IENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhKSA9PSAoYSBeIGIpKTsKK30KKwordm9p
ZCB0ZXN0Qml0WG9ySW1tQXJnMzIoaW50IGEsIGludCBiKQoreworICAgIFByb2NlZHVyZSBwcm9j
OworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQml0WG9yLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBhKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAg
ICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSkpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBiKSA9
PSAoYSBeIGIpKTsKK30KKwordm9pZCB0ZXN0Qml0WG9yQml0WG9yQXJnSW1tSW1tMzIoaW50IGEs
IGludCBiLCBpbnQgYykKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBpbm5lckJpdFhvciA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIEJpdFhvciwgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2lu
KCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYikpOworICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJpdFhvciwgT3JpZ2lu
KCksCisgICAgICAgICAgICBpbm5lckJpdFhvciwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBjKSkpOworCisgICAgQ0hFQ0soY29tcGls
ZUFuZFJ1bjxpbnQ+KHByb2MsIGEpID09ICgoYSBeIGIpIF4gYykpOworfQorCit2b2lkIHRlc3RC
aXRYb3JJbW1CaXRYb3JBcmdJbW0zMihpbnQgYSwgaW50IGIsIGludCBjKQoreworICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAg
VmFsdWUqIGlubmVyQml0WG9yID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJv
YywgQml0WG9yLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBjKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgcHJvYywgQml0WG9yLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKSwKKyAgICAgICAgICAgIGlubmVy
Qml0WG9yKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYikgPT0gKGEg
XiAoYiBeIGMpKSk7Cit9CisKK3ZvaWQgdGVzdEJpdE5vdEFyZyhpbnQ2NF90IGEpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBw
cm9jLCBCaXRYb3IsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0
NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSkpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9j
LCBhKSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oKHN0YXRpY19jYXN0PHVpbnQ2NF90PihhKSBeIDB4
ZmZmZmZmZmZmZmZmZmZmZikpKSk7Cit9CisKK3ZvaWQgdGVzdEJpdE5vdEltbShpbnQ2NF90IGEp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2Ms
IFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAg
ICAgICAgICBwcm9jLCBCaXRYb3IsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xKSwKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKSkpOworCisgICAgQ0hF
Q0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhKSwgc3RhdGljX2Nh
c3Q8aW50NjRfdD4oKHN0YXRpY19jYXN0PHVpbnQ2NF90PihhKSBeIDB4ZmZmZmZmZmZmZmZmZmZm
ZikpKSk7Cit9CisKK3ZvaWQgdGVzdEJpdE5vdE1lbShpbnQ2NF90IGEpCit7CisgICAgUHJvY2Vk
dXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBW
YWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBNZW1vcnlWYWx1ZSogbG9hZCA9
IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50NjQsIE9yaWdpbigp
LCBhZGRyZXNzKTsKKyAgICBWYWx1ZSogbm90TG9hZCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgQml0WG9yLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xKSwKKyAgICAgICAgbG9hZCk7CisgICAgcm9vdC0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIG5vdExvYWQsIGFkZHJl
c3MpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwor
CisgICAgaW50NjRfdCBpbnB1dCA9IGE7CisgICAgY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9j
LCAmaW5wdXQpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGlucHV0LCBzdGF0aWNfY2FzdDxpbnQ2
NF90Pigoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGEpIF4gMHhmZmZmZmZmZmZmZmZmZmZmKSkpKTsK
K30KKwordm9pZCB0ZXN0Qml0Tm90QXJnMzIoaW50MzJfdCBhKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUq
IGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCks
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdFhvciwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTEpLAorICAgICAgICAgICAg
YXJndW1lbnQpKTsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+
KHByb2MsIGEpLCBzdGF0aWNfY2FzdDxpbnQzMl90Pigoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGEp
IF4gMHhmZmZmZmZmZikpKSk7Cit9CisKK3ZvaWQgdGVzdEJpdE5vdEltbTMyKGludDMyX3QgYSkK
K3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAg
ICAgICAgIHByb2MsIEJpdFhvciwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTEpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpKSk7CisKKyAgICBDSEVD
Syhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGEpLCBzdGF0aWNfY2Fz
dDxpbnQzMl90Pigoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGEpIF4gMHhmZmZmZmZmZikpKSk7Cit9
CisKK3ZvaWQgdGVzdEJpdE5vdE1lbTMyKGludDMyX3QgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJv
YzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBh
ZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIE1lbW9yeVZhbHVlKiBsb2FkID0gcm9vdC0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksIGFkZHJl
c3MpOworICAgIFZhbHVlKiBub3RMb2FkID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBC
aXRYb3IsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgLTEpLAorICAgICAgICBsb2FkKTsKKyAgICByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlLCBPcmlnaW4oKSwgbm90TG9hZCwgYWRkcmVzcyk7Cisg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJv
b3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICBp
bnQzMl90IGlucHV0ID0gYTsKKyAgICBjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsICZpbnB1
dCk7CisgICAgQ0hFQ0soaXNJZGVudGljYWwoaW5wdXQsIHN0YXRpY19jYXN0PGludDMyX3Q+KChz
dGF0aWNfY2FzdDx1aW50MzJfdD4oYSkgXiAweGZmZmZmZmZmKSkpKTsKK30KKwordm9pZCB0ZXN0
Tm90T25Cb29sZWFuQW5kQnJhbmNoMzIoaW50NjRfdCBhLCBpbnQ2NF90IGIpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2Nr
KiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICBWYWx1ZSog
YXJnc0FyZUVxdWFsID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBFcXVhbCwgT3JpZ2lu
KCksIGFyZzEsIGFyZzIpOworICAgIFZhbHVlKiBhcmdzQXJlTm90RXF1YWwgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdFhvciwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSwKKyAgICAgICAgYXJnc0FyZUVx
dWFsKTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywg
QnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgYXJnc0FyZU5vdEVxdWFsLAorICAgICAgICBGcmVx
dWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKKworICAg
IHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwg
T3JpZ2luKCksCisgICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgNDIpKTsKKworICAgIGVsc2VDYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUo
CisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIGVsc2VDYXNlLT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTQyKSk7CisKKyAgICBpbnQzMl90
IGV4cGVjdGVkVmFsdWUgPSAoYSAhPSBiKSA/IDQyIDogLTQyOworICAgIENIRUNLKGNvbXBpbGVB
bmRSdW48aW50MzJfdD4ocHJvYywgYSwgYikgPT0gZXhwZWN0ZWRWYWx1ZSk7Cit9CisKK3ZvaWQg
dGVzdEJpdE5vdE9uQm9vbGVhbkFuZEJyYW5jaDMyKGludDY0X3QgYSwgaW50NjRfdCBiKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgQmFzaWNCbG9jayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFz
aWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBWYWx1ZSogYXJnMSA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAg
VmFsdWUqIGFyZ3NBcmVFcXVhbCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRXF1YWws
IE9yaWdpbigpLCBhcmcxLCBhcmcyKTsKKyAgICBWYWx1ZSogYml0Tm90QXJnc0FyZUVxdWFsID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLAorICAgICAgICBy
b290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTEpLAorICAgICAg
ICBhcmdzQXJlRXF1YWwpOworCisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2Ms
IEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgIGJpdE5vdEFyZ3NBcmVFcXVhbCwgRnJlcXVlbnRl
ZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNlKSk7CisKKyAgICB0aGVu
Q2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAg
ICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDIp
KTsKKworICAgIGVsc2VDYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKKyAgICAgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAtNDIpKTsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBleHBlY3Rl
ZFZhbHVlID0gNDI7CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBhLCBi
KSA9PSBleHBlY3RlZFZhbHVlKTsKK30KKwordm9pZCB0ZXN0U2hsQXJncyhpbnQ2NF90IGEsIGlu
dDY0X3QgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgIHByb2MsIFNobCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMSkpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEsIGIp
ID09IChhIDw8IGIpKTsKK30KKwordm9pZCB0ZXN0U2hsSW1tcyhpbnQ2NF90IGEsIGludDY0X3Qg
YikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIFNobCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSksCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYikpKTsKKworICAgIGIgPSBi
ICYgMHgzZjsgLy8gdG8gYXZvaWQgdW5kZWZpbmVkIGJlaGF2aW91ciBiZWxvdworICAgIENIRUNL
KGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYykgPT0gKGEgPDwgYikpOworfQorCit2b2lkIHRl
c3RTaGxBcmdJbW0oaW50NjRfdCBhLCBpbnQ2NF90IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdp
bigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpKSk7CisKKyAgICBiID0gYiAm
IDB4M2Y7IC8vIHRvIGF2b2lkIHVuZGVmaW5lZCBiZWhhdmlvdXIgYmVsb3cKKyAgICBDSEVDSyhj
b21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEpID09IChhIDw8IGIpKTsKK30KKwordm9pZCB0
ZXN0U2hsU1NockFyZ0ltbShpbnQ2NF90IGEsIGludDY0X3QgYikKK3sKKyAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVl
KiBhcmdBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVlKiBjb25zdEIgPSByb290LT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7CisgICAgVmFsdWUqIGlubmVy
U2hpZnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNTaHIsIE9yaWdpbigpLCBhcmdB
LCBjb25zdEIpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIFNobCwgT3JpZ2luKCksCisgICAgICAgICAgICBpbm5lclNoaWZ0LAor
ICAgICAgICAgICAgY29uc3RCKSk7CisKKyAgICBiID0gYiAmIDB4M2Y7IC8vIHRvIGF2b2lkIHVu
ZGVmaW5lZCBiZWhhdmlvdXIgYmVsb3cKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+
KHByb2MsIGEpID09ICgoYSA+PiBiKSA8PCBiKSk7Cit9CisKK3ZvaWQgdGVzdFNobEFyZzMyKGlu
dDMyX3QgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hs
LCBPcmlnaW4oKSwgdmFsdWUsIHZhbHVlKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGlu
dDMyX3Q+KHByb2MsIGEpID09IChhIDw8IGEpKTsKK30KKwordm9pZCB0ZXN0U2hsQXJnczMyKGlu
dDMyX3QgYSwgaW50MzJfdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgU2hsLCBPcmlnaW4oKSwKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMs
IE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKSk7CisKKyAgICBDSEVD
Syhjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGEsIGIpID09IChhIDw8IGIpKTsKK30KKwor
dm9pZCB0ZXN0U2hsSW1tczMyKGludDMyX3QgYSwgaW50MzJfdCBiKQoreworICAgIFByb2NlZHVy
ZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgU2hs
LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBhKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBiKSkpOworCisgICAgYiA9IGIgJiAweDFmOyAvLyB0byBhdm9p
ZCB1bmRlZmluZWQgYmVoYXZpb3VyIGJlbG93CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQz
Ml90Pihwcm9jKSA9PSAoYSA8PCBiKSk7Cit9CisKK3ZvaWQgdGVzdFNobEFyZ0ltbTMyKGludDMy
X3QgYSwgaW50MzJfdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgU2hsLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9y
aWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYikpKTsKKworICAg
IGIgPSBiICYgMHgxZjsgLy8gdG8gYXZvaWQgdW5kZWZpbmVkIGJlaGF2aW91ciBiZWxvdworICAg
IENIRUNLKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYSkgPT0gKGEgPDwgYikpOworfQor
Cit2b2lkIHRlc3RTaGxaU2hyQXJnSW1tMzIoaW50MzJfdCBhLCBpbnQzMl90IGIpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBWYWx1ZSogYXJnQSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSog
Y29uc3RCID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIp
OworICAgIFZhbHVlKiBpbm5lclNoaWZ0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBa
U2hyLCBPcmlnaW4oKSwgYXJnQSwgY29uc3RCKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdpbigpLAorICAgICAg
ICAgICAgaW5uZXJTaGlmdCwKKyAgICAgICAgICAgIGNvbnN0QikpOworCisgICAgYiA9IGIgJiAw
eDFmOyAvLyB0byBhdm9pZCB1bmRlZmluZWQgYmVoYXZpb3VyIGJlbG93CisgICAgQ0hFQ0soY29t
cGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBhKSA9PSBzdGF0aWNfY2FzdDxpbnQzMl90Pigoc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KGEpID4+IGIpIDw8IGIpKTsKK30KKwordm9pZCB0ZXN0U1NockFy
Z3MoaW50NjRfdCBhLCBpbnQ2NF90IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTU2hyLCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50
NjRfdD4ocHJvYywgYSwgYikgPT0gKGEgPj4gYikpOworfQorCit2b2lkIHRlc3RTU2hySW1tcyhp
bnQ2NF90IGEsIGludDY0X3QgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFNTaHIsIE9yaWdpbigpLAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpLAor
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IGIpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MpID09IChhID4+
IGIpKTsKK30KKwordm9pZCB0ZXN0U1NockFyZ0ltbShpbnQ2NF90IGEsIGludDY0X3QgYikKK3sK
KyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAg
ICAgIHByb2MsIFNTaHIsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAor
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IGIpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEpID09IChh
ID4+IGIpKTsKK30KKwordm9pZCB0ZXN0U1NockFyZzMyKGludDMyX3QgYSkKK3sKKyAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
IFZhbHVlKiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIFRy
dW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU1NociwgT3JpZ2luKCksIHZhbHVlLCB2
YWx1ZSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBhKSA9PSAo
YSA+PiAoYSAmIDMxKSkpOworfQorCit2b2lkIHRlc3RTU2hyQXJnczMyKGludDMyX3QgYSwgaW50
MzJfdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICAgICAgcHJvYywgU1NociwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwK
KyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisg
ICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFu
ZFJ1bjxpbnQzMl90Pihwcm9jLCBhLCBiKSA9PSAoYSA+PiBiKSk7Cit9CisKK3ZvaWQgdGVzdFNT
aHJJbW1zMzIoaW50MzJfdCBhLCBpbnQzMl90IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTU2hyLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBhKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBiKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9j
KSA9PSAoYSA+PiBiKSk7Cit9CisKK3ZvaWQgdGVzdFNTaHJBcmdJbW0zMihpbnQzMl90IGEsIGlu
dDMyX3QgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgIHByb2MsIFNTaHIsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCks
CisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSkpOworCisgICAgQ0hFQ0so
Y29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBhKSA9PSAoYSA+PiBiKSk7Cit9CisKK3ZvaWQg
dGVzdFpTaHJBcmdzKHVpbnQ2NF90IGEsIHVpbnQ2NF90IGIpCit7CisgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBaU2hyLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigp
LAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpKTsKKworICAgIENIRUNLKGNvbXBp
bGVBbmRSdW48dWludDY0X3Q+KHByb2MsIGEsIGIpID09IChhID4+IGIpKTsKK30KKwordm9pZCB0
ZXN0WlNockltbXModWludDY0X3QgYSwgdWludDY0X3QgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJv
YzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFpTaHIsIE9y
aWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIGEpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIGIpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPHVpbnQ2NF90
Pihwcm9jKSA9PSAoYSA+PiBiKSk7Cit9CisKK3ZvaWQgdGVzdFpTaHJBcmdJbW0odWludDY0X3Qg
YSwgdWludDY0X3QgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
KyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFpTaHIsIE9yaWdpbigpLAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIGIpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPHVpbnQ2
NF90Pihwcm9jLCBhKSA9PSAoYSA+PiBiKSk7Cit9CisKK3ZvaWQgdGVzdFpTaHJBcmczMih1aW50
MzJfdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBaU2hy
LCBPcmlnaW4oKSwgdmFsdWUsIHZhbHVlKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPHVp
bnQzMl90Pihwcm9jLCBhKSA9PSAoYSA+PiAoYSAmIDMxKSkpOworfQorCit2b2lkIHRlc3RaU2hy
QXJnczMyKHVpbnQzMl90IGEsIHVpbnQzMl90IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBaU2hyLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAg
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSks
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKSk7
CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPHVpbnQzMl90Pihwcm9jLCBhLCBiKSA9PSAoYSA+
PiBiKSk7Cit9CisKK3ZvaWQgdGVzdFpTaHJJbW1zMzIodWludDMyX3QgYSwgdWludDMyX3QgYikK
K3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAg
ICAgICAgIHByb2MsIFpTaHIsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpLAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpKSk7CisKKyAgICBDSEVDSyhj
b21waWxlQW5kUnVuPHVpbnQzMl90Pihwcm9jKSA9PSAoYSA+PiBiKSk7Cit9CisKK3ZvaWQgdGVz
dFpTaHJBcmdJbW0zMih1aW50MzJfdCBhLCB1aW50MzJfdCBiKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgWlNociwg
T3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCkpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIGIpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPHVpbnQzMl90Pihwcm9j
LCBhKSA9PSAoYSA+PiBiKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEludGVnZXJUeXBlPgor
c3RhdGljIHVuc2lnbmVkIGNvdW50TGVhZGluZ1plcm8oSW50ZWdlclR5cGUgdmFsdWUpCit7Cisg
ICAgdW5zaWduZWQgYml0Q291bnQgPSBzaXplb2YoSW50ZWdlclR5cGUpICogODsKKyAgICBpZiAo
IXZhbHVlKQorICAgICAgICByZXR1cm4gYml0Q291bnQ7CisKKyAgICB1bnNpZ25lZCBjb3VudGVy
ID0gMDsKKyAgICB3aGlsZSAoIShzdGF0aWNfY2FzdDx1aW50NjRfdD4odmFsdWUpICYgKDFsIDw8
IChiaXRDb3VudCAtIDEpKSkpIHsKKyAgICAgICAgdmFsdWUgPDw9IDE7CisgICAgICAgICsrY291
bnRlcjsKKyAgICB9CisgICAgcmV0dXJuIGNvdW50ZXI7Cit9CisKK3ZvaWQgdGVzdENsekFyZzY0
KGludDY0X3QgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKKyAgICBWYWx1ZSogY2x6VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIENs
eiwgT3JpZ2luKCksIGFyZ3VtZW50KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2x6VmFsdWUpOworICAgIENIRUNLKGNvbXBpbGVBbmRS
dW48dW5zaWduZWQ+KHByb2MsIGEpID09IGNvdW50TGVhZGluZ1plcm8oYSkpOworfQorCit2b2lk
IHRlc3RDbHpNZW02NChpbnQ2NF90IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYWRkcmVzcyA9IHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKKyAgICBNZW1vcnlWYWx1ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwgYWRkcmVzcyk7CisgICAg
VmFsdWUqIGNselZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBDbHosIE9yaWdp
bigpLCB2YWx1ZSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVy
biwgT3JpZ2luKCksIGNselZhbHVlKTsKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPHVuc2lnbmVk
Pihwcm9jLCAmYSkgPT0gY291bnRMZWFkaW5nWmVybyhhKSk7Cit9CisKK3ZvaWQgdGVzdENsekFy
ZzMyKGludDMyX3QgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpOworICAgIFZhbHVlKiBjbHpWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
Q2x6LCBPcmlnaW4oKSwgYXJndW1lbnQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBjbHpWYWx1ZSk7CisgICAgQ0hFQ0soY29tcGlsZUFu
ZFJ1bjx1bnNpZ25lZD4ocHJvYywgYSkgPT0gY291bnRMZWFkaW5nWmVybyhhKSk7Cit9CisKK3Zv
aWQgdGVzdENsek1lbTMyKGludDMyX3QgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhZGRyZXNzID0g
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOworICAgIE1lbW9yeVZhbHVlKiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBhZGRyZXNzKTsKKyAg
ICBWYWx1ZSogY2x6VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIENseiwgT3Jp
Z2luKCksIHZhbHVlKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwgY2x6VmFsdWUpOworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48dW5zaWdu
ZWQ+KHByb2MsICZhKSA9PSBjb3VudExlYWRpbmdaZXJvKGEpKTsKK30KKwordm9pZCB0ZXN0QWJz
QXJnKGRvdWJsZSBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAor
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWJzLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUklu
Zm86OmFyZ3VtZW50RlBSMCkpKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRS
dW48ZG91YmxlPihwcm9jLCBhKSwgZmFicyhhKSkpOworfQorCit2b2lkIHRlc3RBYnNJbW0oZG91
YmxlIGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8Q29u
c3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpOworICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBYnMsIE9yaWdpbigpLCBhcmd1bWVudCkpOworCisg
ICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MpLCBmYWJzKGEp
KSk7Cit9CisKK3ZvaWQgdGVzdEFic01lbShkb3VibGUgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJv
YzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBh
ZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIE1lbW9yeVZhbHVlKiBsb2FkRG91YmxlID0g
cm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBEb3VibGUsIE9yaWdpbigp
LCBhZGRyZXNzKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQWJzLCBPcmlnaW4oKSwgbG9hZERvdWJsZSkpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwo
Y29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsICZhKSwgZmFicyhhKSkpOworfQorCit2b2lkIHRl
c3RBYnNBYnNBcmcoZG91YmxlIGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogZmlyc3RBYnMgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFicywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1l
bnRGUFIwKSk7CisgICAgVmFsdWUqIHNlY29uZEFicyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgQWJzLCBPcmlnaW4oKSwgZmlyc3RBYnMpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBzZWNvbmRBYnMpOworCisgICAgQ0hFQ0so
aXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEpLCBmYWJzKGZhYnMoYSkp
KSk7Cit9CisKK3ZvaWQgdGVzdEFic05lZ0FyZyhkb3VibGUgYSkKK3sKKyAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVl
KiBuZWcgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE5lZywgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBS
SW5mbzo6YXJndW1lbnRGUFIwKSk7CisgICAgVmFsdWUqIGFicyA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgQWJzLCBPcmlnaW4oKSwgbmVnKTsKKyAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgYWJzKTsKKworICAgIENIRUNLKGlzSWRl
bnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBhKSwgZmFicygtIGEpKSk7Cit9CisK
K3ZvaWQgdGVzdEFic0JpdHdpc2VDYXN0QXJnKGRvdWJsZSBhKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUq
IGFyZ3VtZW50QXNJbnQ2NCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogYXJndW1lbnRB
c0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdp
bigpLCBhcmd1bWVudEFzSW50NjQpOworICAgIFZhbHVlKiBhYnNWYWx1ZSA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgQWJzLCBPcmlnaW4oKSwgYXJndW1lbnRBc0RvdWJsZSk7CisgICAg
cm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFic1Zh
bHVlKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9j
LCBiaXR3aXNlX2Nhc3Q8aW50NjRfdD4oYSkpLCBmYWJzKGEpKSk7Cit9CisKK3ZvaWQgdGVzdEJp
dHdpc2VDYXN0QWJzQml0d2lzZUNhc3RBcmcoZG91YmxlIGEpCit7CisgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSog
YXJndW1lbnRBc0ludDY0ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVlKiBhcmd1bWVudEFz
RG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2lu
KCksIGFyZ3VtZW50QXNJbnQ2NCk7CisgICAgVmFsdWUqIGFic1ZhbHVlID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBBYnMsIE9yaWdpbigpLCBhcmd1bWVudEFzRG91YmxlKTsKKyAgICBW
YWx1ZSogcmVzdWx0QXNJbnQ2NCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lz
ZUNhc3QsIE9yaWdpbigpLCBhYnNWYWx1ZSk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0QXNJbnQ2NCk7CisKKyAgICBpbnQ2
NF90IGV4cGVjdGVkUmVzdWx0ID0gYml0d2lzZV9jYXN0PGludDY0X3Q+KGZhYnMoYSkpOworICAg
IENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYml0d2lzZV9j
YXN0PGludDY0X3Q+KGEpKSwgZXhwZWN0ZWRSZXN1bHQpKTsKK30KKwordm9pZCB0ZXN0QWJzQXJn
KGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkp
OworICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0
d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDMyKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBYnMsIE9yaWdpbigpLCBhcmd1bWVudCk7CisgICAg
VmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2Fz
dCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHBy
b2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2Fs
KGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwg
Yml0d2lzZV9jYXN0PGludDMyX3Q+KHN0YXRpY19jYXN0PGZsb2F0PihmYWJzKGEpKSkpKTsKK30K
Kwordm9pZCB0ZXN0QWJzSW1tKGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQg
PSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7Cisg
ICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWJzLCBPcmln
aW4oKSwgYXJndW1lbnQpOworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOworICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisK
KyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdp
c2VfY2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihzdGF0aWNfY2FzdDxm
bG9hdD4oZmFicyhhKSkpKSk7Cit9CisKK3ZvaWQgdGVzdEFic01lbShmbG9hdCBhKQoreworICAg
IFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisgICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgTWVtb3J5VmFsdWUq
IGxvYWRGbG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgRmxv
YXQsIE9yaWdpbigpLCBhZGRyZXNzKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBBYnMsIE9yaWdpbigpLCBsb2FkRmxvYXQpOworICAgIFZhbHVlKiBy
ZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdp
bigpLCByZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxl
QW5kUnVuPGludDMyX3Q+KHByb2MsICZhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KHN0YXRpY19j
YXN0PGZsb2F0PihmYWJzKGEpKSkpKTsKK30KKwordm9pZCB0ZXN0QWJzQWJzQXJnKGZsb2F0IGEp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZh
bHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3Qs
IE9yaWdpbigpLCBhcmd1bWVudDMyKTsKKyAgICBWYWx1ZSogZmlyc3RBYnMgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEFicywgT3JpZ2luKCksIGFyZ3VtZW50KTsKKyAgICBWYWx1ZSog
c2Vjb25kQWJzID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBYnMsIE9yaWdpbigpLCBm
aXJzdEFicyk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwg
T3JpZ2luKCksIHNlY29uZEFicyk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5k
UnVuPGZsb2F0Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBzdGF0aWNfY2FzdDxm
bG9hdD4oZmFicyhmYWJzKGEpKSkpKTsKK30KKwordm9pZCB0ZXN0QWJzTmVnQXJnKGZsb2F0IGEp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZh
bHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3Qs
IE9yaWdpbigpLCBhcmd1bWVudDMyKTsKKyAgICBWYWx1ZSogbmVnID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBOZWcsIE9yaWdpbigpLCBhcmd1bWVudCk7CisgICAgVmFsdWUqIGFicyA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWJzLCBPcmlnaW4oKSwgbmVnKTsKKyAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgYWJzKTsK
KworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZmxvYXQ+KHByb2MsIGJpdHdp
c2VfY2FzdDxpbnQzMl90PihhKSksIHN0YXRpY19jYXN0PGZsb2F0PihmYWJzKC0gYSkpKSk7Cit9
CisKK3ZvaWQgdGVzdEFic0JpdHdpc2VDYXN0QXJnKGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1
ZSogYXJndW1lbnRBc0ludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50
QXNmbG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdp
bigpLCBhcmd1bWVudEFzSW50MzIpOworICAgIFZhbHVlKiBhYnNWYWx1ZSA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgQWJzLCBPcmlnaW4oKSwgYXJndW1lbnRBc2Zsb2F0KTsKKyAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgYWJzVmFs
dWUpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxmbG9hdD4ocHJvYywg
Yml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGZhYnMoYSkpKSk7
Cit9CisKK3ZvaWQgdGVzdEJpdHdpc2VDYXN0QWJzQml0d2lzZUNhc3RBcmcoZmxvYXQgYSkKK3sK
KyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworICAgIFZhbHVlKiBhcmd1bWVudEFzSW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBW
YWx1ZSogYXJndW1lbnRBc2Zsb2F0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3
aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50QXNJbnQzMik7CisgICAgVmFsdWUqIGFic1ZhbHVl
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBYnMsIE9yaWdpbigpLCBhcmd1bWVudEFz
ZmxvYXQpOworICAgIFZhbHVlKiByZXN1bHRBc0ludDY0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFic1ZhbHVlKTsKKworICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHRBc0ludDY0
KTsKKworICAgIGludDMyX3QgZXhwZWN0ZWRSZXN1bHQgPSBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4o
c3RhdGljX2Nhc3Q8ZmxvYXQ+KGZhYnMoYSkpKTsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21w
aWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGV4cGVj
dGVkUmVzdWx0KSk7Cit9CisKK3ZvaWQgdGVzdEFic0FyZ1dpdGhVc2VsZXNzRG91YmxlQ29udmVy
c2lvbihmbG9hdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MzIgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDMyKTsKKyAgICBWYWx1ZSogYXNEb3Vi
bGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigp
LCBmbG9hdFZhbHVlKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBBYnMsIE9yaWdpbigpLCBhc0RvdWJsZSk7CisgICAgVmFsdWUqIGZsb2F0UmVzdWx0
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwg
cmVzdWx0KTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1bHQpOworICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAg
ICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2Vf
Y2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihzdGF0aWNfY2FzdDxmbG9h
dD4oZmFicyhhKSkpKSk7Cit9CisKK3ZvaWQgdGVzdEFic0FyZ1dpdGhFZmZlY3RmdWxEb3VibGVD
b252ZXJzaW9uKGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOworICAgIFZhbHVlKiBh
c0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3Jp
Z2luKCksIGZsb2F0VmFsdWUpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEFicywgT3JpZ2luKCksIGFzRG91YmxlKTsKKyAgICBWYWx1ZSogZmxvYXRS
ZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdp
bigpLCByZXN1bHQpOworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBmbG9hdFJlc3VsdCk7CisgICAgVmFsdWUq
IGRvdWJsZUFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1l
bW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHJlc3VsdCwgZG91YmxlQWRkcmVzcyk7
CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCks
IHJlc3VsdDMyKTsKKworICAgIGRvdWJsZSBlZmZlY3QgPSAwOworICAgIGludDMyX3QgcmVzdWx0
VmFsdWUgPSBjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90
PihhKSwgJmVmZmVjdCk7CisgICAgQ0hFQ0soaXNJZGVudGljYWwocmVzdWx0VmFsdWUsIGJpdHdp
c2VfY2FzdDxpbnQzMl90PihzdGF0aWNfY2FzdDxmbG9hdD4oZmFicyhhKSkpKSk7CisgICAgQ0hF
Q0soaXNJZGVudGljYWwoZWZmZWN0LCBzdGF0aWNfY2FzdDxkb3VibGU+KGZhYnMoYSkpKSk7Cit9
CisKK3ZvaWQgdGVzdENlaWxBcmcoZG91YmxlIGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBDZWlsLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCkpKTsKKworICAgIENIRUNLKGlzSWRl
bnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBhKSwgY2VpbChhKSkpOworfQorCit2
b2lkIHRlc3RDZWlsSW1tKGRvdWJsZSBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0g
cm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKKyAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3Jp
Z2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQ2VpbCwgT3JpZ2lu
KCksIGFyZ3VtZW50KSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRv
dWJsZT4ocHJvYyksIGNlaWwoYSkpKTsKK30KKwordm9pZCB0ZXN0Q2VpbE1lbShkb3VibGUgYSkK
K3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIE1lbW9y
eVZhbHVlKiBsb2FkRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBM
b2FkLCBEb3VibGUsIE9yaWdpbigpLCBhZGRyZXNzKTsKKyAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQ2VpbCwgT3JpZ2luKCksIGxvYWREb3VibGUpKTsKKwor
ICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCAmYSksIGNl
aWwoYSkpKTsKK30KKwordm9pZCB0ZXN0Q2VpbENlaWxBcmcoZG91YmxlIGEpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBWYWx1ZSogZmlyc3RDZWlsID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBDZWlsLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApKTsKKyAgICBWYWx1ZSogc2Vjb25kQ2Vp
bCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQ2VpbCwgT3JpZ2luKCksIGZpcnN0Q2Vp
bCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2lu
KCksIHNlY29uZENlaWwpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxk
b3VibGU+KHByb2MsIGEpLCBjZWlsKGEpKSk7Cit9CisKK3ZvaWQgdGVzdEZsb29yQ2VpbEFyZyhk
b3VibGUgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBmaXJzdENlaWwgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIENlaWwsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCkpOwor
ICAgIFZhbHVlKiB3cmFwcGluZ0Zsb29yID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBG
bG9vciwgT3JpZ2luKCksIGZpcnN0Q2VpbCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHdyYXBwaW5nRmxvb3IpOworCisgICAgQ0hFQ0so
aXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEpLCBjZWlsKGEpKSk7Cit9
CisKK3ZvaWQgdGVzdENlaWxJVG9ENjQoaW50NjRfdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9j
OworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFy
Z3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVlKiBhcmd1bWVudEFzRG91YmxlID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJVG9ELCBPcmlnaW4oKSwgYXJndW1lbnQpOwor
CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIENlaWwsIE9y
aWdpbigpLCBhcmd1bWVudEFzRG91YmxlKSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21w
aWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgYSksIGNlaWwoc3RhdGljX2Nhc3Q8ZG91YmxlPihhKSkp
KTsKK30KKwordm9pZCB0ZXN0Q2VpbElUb0QzMihpbnQ2NF90IGEpCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1
ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4o
KSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogYXJndW1lbnRBc0RvdWJs
ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSVRvRCwgT3JpZ2luKCksIGFyZ3VtZW50
KTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBDZWls
LCBPcmlnaW4oKSwgYXJndW1lbnRBc0RvdWJsZSkpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwo
Y29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEpLCBjZWlsKHN0YXRpY19jYXN0PGRvdWJsZT4o
YSkpKSk7Cit9CisKK3ZvaWQgdGVzdENlaWxBcmcoZmxvYXQgYSkKK3sKKyAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVl
KiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2lu
KCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50
MzIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIENl
aWwsIE9yaWdpbigpLCBhcmd1bWVudCk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAg
cm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3Vs
dDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJv
YywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGNlaWxm
KGEpKSkpOworfQorCit2b2lkIHRlc3RDZWlsSW1tKGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1
ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmln
aW4oKSwgYSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQ2VpbCwgT3JpZ2luKCksIGFyZ3VtZW50KTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgcmVzdWx0KTsK
KyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwg
cmVzdWx0MzIpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90
Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4o
Y2VpbGYoYSkpKSk7Cit9CisKK3ZvaWQgdGVzdENlaWxNZW0oZmxvYXQgYSkKK3sKKyAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
IFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIE1lbW9yeVZhbHVlKiBsb2Fk
RmxvYXQgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEZsb2F0LCBP
cmlnaW4oKSwgYWRkcmVzcyk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgQ2VpbCwgT3JpZ2luKCksIGxvYWRGbG9hdCk7CisgICAgVmFsdWUqIHJlc3Vs
dDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCks
IHJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwg
T3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRS
dW48aW50MzJfdD4ocHJvYywgJmEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oY2VpbGYoYSkpKSk7
Cit9CisKK3ZvaWQgdGVzdENlaWxDZWlsQXJnKGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSog
YXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigp
LAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDMy
KTsKKyAgICBWYWx1ZSogZmlyc3RDZWlsID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBD
ZWlsLCBPcmlnaW4oKSwgYXJndW1lbnQpOworICAgIFZhbHVlKiBzZWNvbmRDZWlsID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBDZWlsLCBPcmlnaW4oKSwgZmlyc3RDZWlsKTsKKyAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgc2Vjb25k
Q2VpbCk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9j
LCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBjZWlsZihhKSkpOworfQorCit2b2lkIHRlc3RG
bG9vckNlaWxBcmcoZmxvYXQgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOworICAgIFZhbHVlKiBm
aXJzdENlaWwgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIENlaWwsIE9yaWdpbigpLCBh
cmd1bWVudCk7CisgICAgVmFsdWUqIHdyYXBwaW5nRmxvb3IgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEZsb29yLCBPcmlnaW4oKSwgZmlyc3RDZWlsKTsKKyAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgd3JhcHBpbmdGbG9vcik7CisK
KyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jLCBiaXR3aXNl
X2Nhc3Q8aW50MzJfdD4oYSkpLCBjZWlsZihhKSkpOworfQorCit2b2lkIHRlc3RDZWlsQXJnV2l0
aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uKGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJn
dW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIp
OworICAgIFZhbHVlKiBhc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxv
YXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUpOworICAgIFZhbHVlKiByZXN1bHQgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIENlaWwsIE9yaWdpbigpLCBhc0RvdWJsZSk7Cisg
ICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3Vi
bGVUb0Zsb2F0LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1
bHQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGlu
dDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2VfY2FzdDxpbnQz
Ml90PihjZWlsZihhKSkpKTsKK30KKwordm9pZCB0ZXN0Q2VpbEFyZ1dpdGhFZmZlY3RmdWxEb3Vi
bGVDb252ZXJzaW9uKGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOworICAgIFZhbHVl
KiBhc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwg
T3JpZ2luKCksIGZsb2F0VmFsdWUpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIENlaWwsIE9yaWdpbigpLCBhc0RvdWJsZSk7CisgICAgVmFsdWUqIGZs
b2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBP
cmlnaW4oKSwgcmVzdWx0KTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1bHQpOworICAgIFZh
bHVlKiBkb3VibGVBZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgIHJvb3QtPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmUsIE9yaWdpbigpLCByZXN1bHQsIGRvdWJsZUFkZHJl
c3MpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCByZXN1bHQzMik7CisKKyAgICBkb3VibGUgZWZmZWN0ID0gMDsKKyAgICBpbnQzMl90IHJl
c3VsdFZhbHVlID0gY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50
MzJfdD4oYSksICZlZmZlY3QpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKHJlc3VsdFZhbHVlLCBi
aXR3aXNlX2Nhc3Q8aW50MzJfdD4oY2VpbGYoYSkpKSk7CisgICAgQ0hFQ0soaXNJZGVudGljYWwo
ZWZmZWN0LCBzdGF0aWNfY2FzdDxkb3VibGU+KGNlaWxmKGEpKSkpOworfQorCit2b2lkIHRlc3RG
bG9vckFyZyhkb3VibGUgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEZsb29yLCBPcmlnaW4oKSwKKyAgICAgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEZQUkluZm86OmFyZ3VtZW50RlBSMCkpKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBp
bGVBbmRSdW48ZG91YmxlPihwcm9jLCBhKSwgZmxvb3IoYSkpKTsKK30KKwordm9pZCB0ZXN0Rmxv
b3JJbW0oZG91YmxlIGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBl
bmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpOworICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9vciwgT3JpZ2luKCksIGFyZ3Vt
ZW50KSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJv
YyksIGZsb29yKGEpKSk7Cit9CisKK3ZvaWQgdGVzdEZsb29yTWVtKGRvdWJsZSBhKQoreworICAg
IFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisgICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgTWVtb3J5VmFsdWUq
IGxvYWREb3VibGUgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIERv
dWJsZSwgT3JpZ2luKCksIGFkZHJlc3MpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBGbG9vciwgT3JpZ2luKCksIGxvYWREb3VibGUpKTsKKworICAgIENI
RUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCAmYSksIGZsb29yKGEp
KSk7Cit9CisKK3ZvaWQgdGVzdEZsb29yRmxvb3JBcmcoZG91YmxlIGEpCit7CisgICAgUHJvY2Vk
dXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBW
YWx1ZSogZmlyc3RGbG9vciA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvb3IsIE9y
aWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCkpOworICAgIFZhbHVlKiBzZWNvbmRGbG9v
ciA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvb3IsIE9yaWdpbigpLCBmaXJzdEZs
b29yKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmln
aW4oKSwgc2Vjb25kRmxvb3IpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1
bjxkb3VibGU+KHByb2MsIGEpLCBmbG9vcihhKSkpOworfQorCit2b2lkIHRlc3RDZWlsRmxvb3JB
cmcoZG91YmxlIGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogZmlyc3RGbG9vciA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgRmxvb3IsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBS
MCkpOworICAgIFZhbHVlKiB3cmFwcGluZ0NlaWwgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIENlaWwsIE9yaWdpbigpLCBmaXJzdEZsb29yKTsKKyAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgd3JhcHBpbmdDZWlsKTsKKworICAgIENI
RUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBhKSwgZmxvb3IoYSkp
KTsKK30KKwordm9pZCB0ZXN0Rmxvb3JJVG9ENjQoaW50NjRfdCBhKQoreworICAgIFByb2NlZHVy
ZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFs
dWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVlKiBhcmd1bWVudEFzRG91
YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJVG9ELCBPcmlnaW4oKSwgYXJndW1l
bnQpOworCisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZs
b29yLCBPcmlnaW4oKSwgYXJndW1lbnRBc0RvdWJsZSkpOworCisgICAgQ0hFQ0soaXNJZGVudGlj
YWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEpLCBmbG9vcihzdGF0aWNfY2FzdDxkb3Vi
bGU+KGEpKSkpOworfQorCit2b2lkIHRlc3RGbG9vcklUb0QzMihpbnQ2NF90IGEpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5j
LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogYXJndW1l
bnRBc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSVRvRCwgT3JpZ2luKCks
IGFyZ3VtZW50KTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBGbG9vciwgT3JpZ2luKCksIGFyZ3VtZW50QXNEb3VibGUpKTsKKworICAgIENIRUNLKGlz
SWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBhKSwgZmxvb3Ioc3RhdGljX2Nh
c3Q8ZG91YmxlPihhKSkpKTsKK30KKwordm9pZCB0ZXN0Rmxvb3JBcmcoZmxvYXQgYSkKK3sKKyAg
ICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBU
cnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFy
Z3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2lu
KCksIGFyZ3VtZW50MzIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEZsb29yLCBPcmlnaW4oKSwgYXJndW1lbnQpOworICAgIFZhbHVlKiByZXN1bHQz
MiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBy
ZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVu
PGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2VfY2FzdDxp
bnQzMl90PihmbG9vcmYoYSkpKSk7Cit9CisKK3ZvaWQgdGVzdEZsb29ySW1tKGZsb2F0IGEpCit7
CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgRmxvb3IsIE9yaWdpbigpLCBhcmd1bWVudCk7CisgICAgVmFsdWUq
IHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3Jp
Z2luKCksIHJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJl
dHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBp
bGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgYml0d2lz
ZV9jYXN0PGludDMyX3Q+KGZsb29yZihhKSkpKTsKK30KKwordm9pZCB0ZXN0Rmxvb3JNZW0oZmxv
YXQgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAg
IE1lbW9yeVZhbHVlKiBsb2FkRmxvYXQgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHBy
b2MsIExvYWQsIEZsb2F0LCBPcmlnaW4oKSwgYWRkcmVzcyk7CisgICAgVmFsdWUqIHJlc3VsdCA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvb3IsIE9yaWdpbigpLCBsb2FkRmxvYXQp
OworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0
d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lk
ZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsICZhKSwgYml0d2lzZV9jYXN0PGlu
dDMyX3Q+KGZsb29yZihhKSkpKTsKK30KKwordm9pZCB0ZXN0Rmxvb3JGbG9vckFyZyhmbG9hdCBh
KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBW
YWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0
LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7CisgICAgVmFsdWUqIGZpcnN0Rmxvb3IgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb29yLCBPcmlnaW4oKSwgYXJndW1lbnQpOworICAgIFZh
bHVlKiBzZWNvbmRGbG9vciA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvb3IsIE9y
aWdpbigpLCBmaXJzdEZsb29yKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwgc2Vjb25kRmxvb3IpOworCisgICAgQ0hFQ0soaXNJZGVudGlj
YWwoY29tcGlsZUFuZFJ1bjxmbG9hdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwg
Zmxvb3JmKGEpKSk7Cit9CisKK3ZvaWQgdGVzdENlaWxGbG9vckFyZyhmbG9hdCBhKQoreworICAg
IFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisgICAgVmFsdWUqIGFyZ3VtZW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRy
dW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogYXJn
dW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4o
KSwgYXJndW1lbnQzMik7CisgICAgVmFsdWUqIGZpcnN0Rmxvb3IgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEZsb29yLCBPcmlnaW4oKSwgYXJndW1lbnQpOworICAgIFZhbHVlKiB3cmFw
cGluZ0NlaWwgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIENlaWwsIE9yaWdpbigpLCBm
aXJzdEZsb29yKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwgd3JhcHBpbmdDZWlsKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBp
bGVBbmRSdW48ZmxvYXQ+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGZsb29yZihh
KSkpOworfQorCit2b2lkIHRlc3RGbG9vckFyZ1dpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbihm
bG9hdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MzIgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsK
KyAgICBWYWx1ZSogZmxvYXRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0
d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDMyKTsKKyAgICBWYWx1ZSogYXNEb3VibGUgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9h
dFZhbHVlKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBGbG9vciwgT3JpZ2luKCksIGFzRG91YmxlKTsKKyAgICBWYWx1ZSogZmxvYXRSZXN1bHQgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCByZXN1
bHQpOworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
Qml0d2lzZUNhc3QsIE9yaWdpbigpLCBmbG9hdFJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIENI
RUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0
PGludDMyX3Q+KGEpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGZsb29yZihhKSkpKTsKK30KKwor
dm9pZCB0ZXN0Rmxvb3JBcmdXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lvbihmbG9hdCBhKQor
eworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1
ZSogZmxvYXRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3Qs
IE9yaWdpbigpLCBhcmd1bWVudDMyKTsKKyAgICBWYWx1ZSogYXNEb3VibGUgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlKTsK
KyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9vciwg
T3JpZ2luKCksIGFzRG91YmxlKTsKKyAgICBWYWx1ZSogZmxvYXRSZXN1bHQgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCByZXN1bHQpOworICAg
IFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNh
c3QsIE9yaWdpbigpLCBmbG9hdFJlc3VsdCk7CisgICAgVmFsdWUqIGRvdWJsZUFkZHJlc3MgPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMSk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBT
dG9yZSwgT3JpZ2luKCksIHJlc3VsdCwgZG91YmxlQWRkcmVzcyk7CisgICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAg
IGRvdWJsZSBlZmZlY3QgPSAwOworICAgIGludDMyX3QgcmVzdWx0VmFsdWUgPSBjb21waWxlQW5k
UnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgJmVmZmVjdCk7Cisg
ICAgQ0hFQ0soaXNJZGVudGljYWwocmVzdWx0VmFsdWUsIGJpdHdpc2VfY2FzdDxpbnQzMl90Pihm
bG9vcmYoYSkpKSk7CisgICAgQ0hFQ0soaXNJZGVudGljYWwoZWZmZWN0LCBzdGF0aWNfY2FzdDxk
b3VibGU+KGZsb29yZihhKSkpKTsKK30KKworZG91YmxlIGNvcnJlY3RTcXJ0KGRvdWJsZSB2YWx1
ZSkKK3sKKyNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQorICAgIGRvdWJsZSByZXN1bHQ7Cisg
ICAgYXNtICgic3FydHNkICUxLCAlMCIgOiAiPXgiKHJlc3VsdCkgOiAieCIodmFsdWUpKTsKKyAg
ICByZXR1cm4gcmVzdWx0OworI2Vsc2UgICAgCisgICAgcmV0dXJuIHNxcnQodmFsdWUpOworI2Vu
ZGlmCit9CisKK3ZvaWQgdGVzdFNxcnRBcmcoZG91YmxlIGEpCit7CisgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTcXJ0LCBP
cmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCkpKTsKKworICAgIENIRUNL
KGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBhKSwgY29ycmVjdFNxcnQo
YSkpKTsKK30KKwordm9pZCB0ZXN0U3FydEltbShkb3VibGUgYSkKK3sKKyAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVl
KiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmln
aW4oKSwgYSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFNxcnQsIE9yaWdpbigpLCBhcmd1bWVudCkpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29t
cGlsZUFuZFJ1bjxkb3VibGU+KHByb2MpLCBjb3JyZWN0U3FydChhKSkpOworfQorCit2b2lkIHRl
c3RTcXJ0TWVtKGRvdWJsZSBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7CisgICAgTWVtb3J5VmFsdWUqIGxvYWREb3VibGUgPSByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIERvdWJsZSwgT3JpZ2luKCksIGFkZHJlc3MpOworICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTcXJ0LCBPcmlnaW4o
KSwgbG9hZERvdWJsZSkpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxk
b3VibGU+KHByb2MsICZhKSwgY29ycmVjdFNxcnQoYSkpKTsKK30KKwordm9pZCB0ZXN0U3FydEFy
ZyhmbG9hdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MzIgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
KTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJp
dHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3FydCwgT3JpZ2luKCksIGFyZ3VtZW50KTsKKyAg
ICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VD
YXN0LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOworCisgICAgQ0hFQ0soaXNJZGVudGlj
YWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkp
LCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvcnJlY3RTcXJ0KGEp
KSkpKTsKK30KKwordm9pZCB0ZXN0U3FydEltbShmbG9hdCBhKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUq
IGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIGEpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFNxcnQsIE9yaWdpbigpLCBhcmd1bWVudCk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7Cisg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJl
c3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4o
cHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KHN0
YXRpY19jYXN0PGZsb2F0Pihjb3JyZWN0U3FydChhKSkpKSk7Cit9CisKK3ZvaWQgdGVzdFNxcnRN
ZW0oZmxvYXQgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OworICAgIE1lbW9yeVZhbHVlKiBsb2FkRmxvYXQgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFs
dWU+KHByb2MsIExvYWQsIEZsb2F0LCBPcmlnaW4oKSwgYWRkcmVzcyk7CisgICAgVmFsdWUqIHJl
c3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3FydCwgT3JpZ2luKCksIGxvYWRG
bG9hdCk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNL
KGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgJmEpLCBiaXR3aXNlX2Nh
c3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvcnJlY3RTcXJ0KGEpKSkpKTsKK30KKwor
dm9pZCB0ZXN0U3FydEFyZ1dpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbihmbG9hdCBhKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSog
ZmxvYXRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9y
aWdpbigpLCBhcmd1bWVudDMyKTsKKyAgICBWYWx1ZSogYXNEb3VibGUgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlKTsKKyAg
ICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTcXJ0LCBPcmln
aW4oKSwgYXNEb3VibGUpOworICAgIFZhbHVlKiBmbG9hdFJlc3VsdCA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgVmFs
dWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwg
T3JpZ2luKCksIGZsb2F0UmVzdWx0KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOworCisgICAgQ0hFQ0soaXNJZGVudGlj
YWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkp
LCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvcnJlY3RTcXJ0KGEp
KSkpKTsKK30KKwordm9pZCB0ZXN0U3FydEFyZ1dpdGhFZmZlY3RmdWxEb3VibGVDb252ZXJzaW9u
KGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkp
OworICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBC
aXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOworICAgIFZhbHVlKiBhc0RvdWJsZSA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZs
b2F0VmFsdWUpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFNxcnQsIE9yaWdpbigpLCBhc0RvdWJsZSk7CisgICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgcmVz
dWx0KTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1bHQpOworICAgIFZhbHVlKiBkb3VibGVB
ZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1
ZT4ocHJvYywgU3RvcmUsIE9yaWdpbigpLCByZXN1bHQsIGRvdWJsZUFkZHJlc3MpOworICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQz
Mik7CisKKyAgICBkb3VibGUgZWZmZWN0ID0gMDsKKyAgICBpbnQzMl90IHJlc3VsdFZhbHVlID0g
Y29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSksICZl
ZmZlY3QpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKHJlc3VsdFZhbHVlLCBiaXR3aXNlX2Nhc3Q8
aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvcnJlY3RTcXJ0KGEpKSkpKTsKKyAgICBkb3Vi
bGUgZXhwZWN0ZWQgPSBzdGF0aWNfY2FzdDxkb3VibGU+KGNvcnJlY3RTcXJ0KGEpKTsKKyAgICBD
SEVDSyhpc0lkZW50aWNhbChlZmZlY3QsIGV4cGVjdGVkKSk7Cit9CisKK3ZvaWQgdGVzdENvbXBh
cmVUd29GbG9hdFRvRG91YmxlKGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVl
KiBhcmcxQXMzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigp
LAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmcxRmxvYXQgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJnMUFzMzIp
OworICAgIFZhbHVlKiBhcmcxQXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBhcmcxRmxvYXQpOworCisgICAgVmFsdWUqIGFyZzJB
czMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgVmFsdWUqIGFyZzJGbG9hdCA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmcyQXMzMik7CisgICAg
VmFsdWUqIGFyZzJBc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRU
b0RvdWJsZSwgT3JpZ2luKCksIGFyZzJGbG9hdCk7CisgICAgVmFsdWUqIGVxdWFsID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBFcXVhbCwgT3JpZ2luKCksIGFyZzFBc0RvdWJsZSwgYXJn
MkFzRG91YmxlKTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCBlcXVhbCk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+
KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIp
KSA9PSAoYSA9PSBiKSk7Cit9CisKK3ZvaWQgdGVzdENvbXBhcmVPbmVGbG9hdFRvRG91YmxlKGZs
b2F0IGEsIGRvdWJsZSBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBWYWx1ZSogYXJnMUFzMzIgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApKTsKKyAgICBWYWx1ZSogYXJnMUZsb2F0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZzFBczMyKTsKKyAgICBWYWx1ZSogYXJnMUFz
RG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmln
aW4oKSwgYXJnMUZsb2F0KTsKKworICAgIFZhbHVlKiBhcmcyQXNEb3VibGUgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50
RlBSMCk7CisgICAgVmFsdWUqIGVxdWFsID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBF
cXVhbCwgT3JpZ2luKCksIGFyZzFBc0RvdWJsZSwgYXJnMkFzRG91YmxlKTsKKworICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBlcXVhbCk7CisK
KyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQz
Ml90PihhKSwgYikgPT0gKGEgPT0gYikpOworfQorCit2b2lkIHRlc3RDb21wYXJlRmxvYXRUb0Rv
dWJsZVRocm91Z2hQaGkoZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sq
IHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0g
cHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIHRhaWwgPSBwcm9jLmFkZEJsb2NrKCk7
CisKKyAgICBWYWx1ZSogY29uZGl0aW9uID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworCisgICAgVmFsdWUq
IGFyZzFBczMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCks
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgVmFsdWUqIGFyZzFGbG9hdCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmcxQXMzMik7
CisgICAgVmFsdWUqIGFyZzFBc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
RmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGFyZzFGbG9hdCk7CisKKyAgICBWYWx1ZSogYXJnMkFz
RG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgIFZhbHVlKiBhcmcyQXNGbG9hdCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIGFyZzJBc0Rv
dWJsZSk7CisgICAgVmFsdWUqIGFyZzJBc0ZSb3VuZGVkRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgYXJnMkFzRmxvYXQpOworCisg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBCcmFuY2gsIE9y
aWdpbigpLAorICAgICAgICBjb25kaXRpb24sCisgICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVu
Q2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOworCisgICAgVXBzaWxvblZhbHVlKiB0
aGVuVmFsdWUgPSB0aGVuQ2FzZS0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIGFyZzFBc0RvdWJsZSk7CisgICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShw
cm9jLCBKdW1wLCBPcmlnaW4oKSwgRnJlcXVlbnRlZEJsb2NrKHRhaWwpKTsKKworICAgIFZhbHVl
KiBlbHNlQ29uc3QgPSBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAwLik7CisgICAgVXBzaWxvblZhbHVlKiBlbHNlVmFsdWUgPSBlbHNlQ2FzZS0+
YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4ocHJvYywgT3JpZ2luKCksIGVsc2VDb25zdCk7CisgICAg
ZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4oKSwgRnJl
cXVlbnRlZEJsb2NrKHRhaWwpKTsKKworICAgIFZhbHVlKiBkb3VibGVJbnB1dCA9IHRhaWwtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgUGhpLCBEb3VibGUsIE9yaWdpbigpKTsKKyAgICB0aGVuVmFs
dWUtPnNldFBoaShkb3VibGVJbnB1dCk7CisgICAgZWxzZVZhbHVlLT5zZXRQaGkoZG91YmxlSW5w
dXQpOworICAgIFZhbHVlKiBlcXVhbCA9IHRhaWwtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRXF1
YWwsIE9yaWdpbigpLCBkb3VibGVJbnB1dCwgYXJnMkFzRlJvdW5kZWREb3VibGUpOworICAgIHRh
aWwtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBlcXVhbCk7
CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICBpbnQzMl90IGludGVn
ZXJBID0gYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpOworICAgIGRvdWJsZSBkb3VibGVCID0gYjsK
KyAgICBDSEVDSyhpbnZva2U8aW50NjRfdD4oKmNvZGUsIDEsIGludGVnZXJBLCBkb3VibGVCKSA9
PSAoYSA9PSBiKSk7CisgICAgQ0hFQ0soaW52b2tlPGludDY0X3Q+KCpjb2RlLCAwLCBpbnRlZ2Vy
QSwgZG91YmxlQikgPT0gKGIgPT0gMCkpOworfQorCit2b2lkIHRlc3REb3VibGVUb0Zsb2F0VGhy
b3VnaFBoaShmbG9hdCB2YWx1ZSkKK3sKKyAgICAvLyBTaW1wbGUgY2FzZSBvZjoKKyAgICAvLyAg
ICAgaWYgKGEpIHsKKyAgICAvLyAgICAgICAgIHggPSBEb3VibGVBZGQoYSwgYikKKyAgICAvLyAg
ICAgZWxzZQorICAgIC8vICAgICAgICAgeCA9IERvdWJsZUFkZChhLCBjKQorICAgIC8vICAgICBE
b3VibGVUb0Zsb2F0KHgpCisgICAgLy8KKyAgICAvLyBCb3RoIEFkZHMgY2FuIGJlIGNvbnZlcnRl
ZCB0byBmbG9hdCBhZGQuCisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBCYXNpY0Jsb2NrKiB0YWlsID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgVmFsdWUqIGNvbmRp
dGlvbiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMSkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOworICAgIFZhbHVlKiBhcmdB
c0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3Jp
Z2luKCksIGZsb2F0VmFsdWUpOworCisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAor
ICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICBjb25kaXRpb24sCisgICAg
ICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkp
OworCisgICAgVmFsdWUqIHBvc3RpdGl2ZUNvbnN0ID0gdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25z
dERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDIuNWYpOworICAgIFZhbHVlKiB0aGVuQWRk
ID0gdGhlbkNhc2UtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgYXJnQXNE
b3VibGUsIHBvc3RpdGl2ZUNvbnN0KTsKKyAgICBVcHNpbG9uVmFsdWUqIHRoZW5WYWx1ZSA9IHRo
ZW5DYXNlLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGhlbkFkZCk7
CisgICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4o
KSwgRnJlcXVlbnRlZEJsb2NrKHRhaWwpKTsKKworICAgIFZhbHVlKiBlbHNlQ29uc3QgPSBlbHNl
Q2FzZS0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBNX1BJKTsK
KyAgICBVcHNpbG9uVmFsdWUqIGVsc2VWYWx1ZSA9IGVsc2VDYXNlLT5hcHBlbmROZXc8VXBzaWxv
blZhbHVlPihwcm9jLCBPcmlnaW4oKSwgZWxzZUNvbnN0KTsKKyAgICBlbHNlQ2FzZS0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKHByb2MsIEp1bXAsIE9yaWdpbigpLCBGcmVxdWVudGVkQmxvY2sodGFp
bCkpOworCisgICAgVmFsdWUqIGRvdWJsZUlucHV0ID0gdGFpbC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBQaGksIERvdWJsZSwgT3JpZ2luKCkpOworICAgIHRoZW5WYWx1ZS0+c2V0UGhpKGRvdWJs
ZUlucHV0KTsKKyAgICBlbHNlVmFsdWUtPnNldFBoaShkb3VibGVJbnB1dCk7CisgICAgVmFsdWUq
IGZsb2F0UmVzdWx0ID0gdGFpbC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0
LCBPcmlnaW4oKSwgZG91YmxlSW5wdXQpOworICAgIHRhaWwtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBmbG9hdFJlc3VsdCk7CisKKyAgICBhdXRvIGNvZGUg
PSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChpbnZva2U8ZmxvYXQ+
KCpjb2RlLCAxLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4odmFsdWUpKSwgdmFsdWUgKyA0Mi41Zikp
OworICAgIENIRUNLKGlzSWRlbnRpY2FsKGludm9rZTxmbG9hdD4oKmNvZGUsIDAsIGJpdHdpc2Vf
Y2FzdDxpbnQzMl90Pih2YWx1ZSkpLCBzdGF0aWNfY2FzdDxmbG9hdD4oTV9QSSkpKTsKK30KKwor
dm9pZCB0ZXN0UmVkdWNlRmxvYXRUb0RvdWJsZVZhbGlkYXRlcygpCit7CisgICAgLy8gU2ltcGxl
IGNhc2Ugb2Y6CisgICAgLy8gICAgIGYgPSBEb3VibGVUb0Zsb2F0KEJpdGNhc3QoYXJnR1BSMCkp
CisgICAgLy8gICAgIGlmIChhKSB7CisgICAgLy8gICAgICAgICB4ID0gRmxvYXRDb25zdCgpCisg
ICAgLy8gICAgIGVsc2UKKyAgICAvLyAgICAgICAgIHggPSBGbG9hdENvbnN0KCkKKyAgICAvLyAg
ICAgcCA9IFBoaSh4KQorICAgIC8vICAgICBhID0gTXVsKHAsIHApCisgICAgLy8gICAgIGIgPSBB
ZGQoYSwgZikKKyAgICAvLyAgICAgYyA9IEFkZChwLCBiKQorICAgIC8vICAgICBSZXR1cm4oYykK
KyAgICAvLworICAgIC8vIFRoaXMgc2hvdWxkIG5vdCBjcmFzaCBpbiB0aGUgdmFsaWRhdG9yIGFm
dGVyIFJlZHVjZUZsb2F0VG9Eb3VibGUuCisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0YWlsID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgVmFs
dWUqIGNvbmRpdGlvbiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogdGhpbmd5ID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGNvbmRpdGlv
bik7CisgICAgdGhpbmd5ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zs
b2F0LCBPcmlnaW4oKSwgdGhpbmd5KTsgLy8gTWFrZSB0aGUgcGhhc2UgdGhpbmsgaXQgaGFzIHdv
cmsgdG8gZG8uCisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9j
LCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICBjb25kaXRpb24sCisgICAgICAgIEZyZXF1ZW50
ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOworCisgICAgVXBz
aWxvblZhbHVlKiB0aGVuVmFsdWUgPSB0aGVuQ2FzZS0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4o
cHJvYywgT3JpZ2luKCksCisgICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3RGbG9hdFZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgMTEuNSkpOworICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250
cm9sVmFsdWUocHJvYywgSnVtcCwgT3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayh0YWlsKSk7CisK
KyAgICBVcHNpbG9uVmFsdWUqIGVsc2VWYWx1ZSA9IGVsc2VDYXNlLT5hcHBlbmROZXc8VXBzaWxv
blZhbHVlPihwcm9jLCBPcmlnaW4oKSwgCisgICAgICAgIGVsc2VDYXNlLT5hcHBlbmROZXc8Q29u
c3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMTAuNSkpOworICAgIGVsc2VDYXNlLT5hcHBl
bmROZXdDb250cm9sVmFsdWUocHJvYywgSnVtcCwgT3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayh0
YWlsKSk7CisKKyAgICBWYWx1ZSogcGhpID0gIHRhaWwtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
UGhpLCBGbG9hdCwgT3JpZ2luKCkpOworICAgIHRoZW5WYWx1ZS0+c2V0UGhpKHBoaSk7CisgICAg
ZWxzZVZhbHVlLT5zZXRQaGkocGhpKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gdGFpbC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHBoaSwgcGhpKTsK
KyAgICByZXN1bHQgPSB0YWlsLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCks
IAorICAgICAgICAgICAgcmVzdWx0LAorICAgICAgICAgICAgdGhpbmd5KTsKKyAgICByZXN1bHQg
PSB0YWlsLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIAorICAgICAgICAg
ICAgcGhpLAorICAgICAgICAgICAgcmVzdWx0KTsKKyAgICB0YWlsLT5hcHBlbmROZXdDb250cm9s
VmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKworICAgIGF1dG8gY29kZSA9
IGNvbXBpbGVQcm9jKHByb2MpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGludm9rZTxmbG9hdD4o
KmNvZGUsIDEpLCAxMS41ZiAqIDExLjVmICsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGJpdHdpc2VfY2Fz
dDxkb3VibGU+KHN0YXRpY19jYXN0PHVpbnQ2NF90PigxKSkpICsgMTEuNWYpKTsKKyAgICBDSEVD
Syhpc0lkZW50aWNhbChpbnZva2U8ZmxvYXQ+KCpjb2RlLCAwKSwgMTAuNWYgKiAxMC41ZiArIHN0
YXRpY19jYXN0PGZsb2F0PihiaXR3aXNlX2Nhc3Q8ZG91YmxlPihzdGF0aWNfY2FzdDx1aW50NjRf
dD4oMCkpKSArIDEwLjVmKSk7Cit9CisKK3ZvaWQgdGVzdERvdWJsZVByb2R1Y2VyUGhpVG9GbG9h
dENvbnZlcnNpb24oZmxvYXQgdmFsdWUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2Fz
ZSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0YWlsID0gcHJvYy5hZGRCbG9jaygpOworCisgICAg
VmFsdWUqIGNvbmRpdGlvbiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogYXJndW1lbnQz
MiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOworCisg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBCcmFuY2gsIE9y
aWdpbigpLAorICAgICAgICBjb25kaXRpb24sCisgICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVu
Q2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOworCisgICAgVmFsdWUqIGFzRG91Ymxl
ID0gdGhlbkNhc2UtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2lu
KCksIGZsb2F0VmFsdWUpOworICAgIFVwc2lsb25WYWx1ZSogdGhlblZhbHVlID0gdGhlbkNhc2Ut
PmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhc0RvdWJsZSk7CisgICAg
dGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4oKSwgRnJl
cXVlbnRlZEJsb2NrKHRhaWwpKTsKKworICAgIFZhbHVlKiBjb25zdERvdWJsZSA9IGVsc2VDYXNl
LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyLjUpOworICAg
IFVwc2lsb25WYWx1ZSogZWxzZVZhbHVlID0gZWxzZUNhc2UtPmFwcGVuZE5ldzxVcHNpbG9uVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBjb25zdERvdWJsZSk7CisgICAgZWxzZUNhc2UtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4oKSwgRnJlcXVlbnRlZEJsb2NrKHRhaWwp
KTsKKworICAgIFZhbHVlKiBkb3VibGVJbnB1dCA9IHRhaWwtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgUGhpLCBEb3VibGUsIE9yaWdpbigpKTsKKyAgICB0aGVuVmFsdWUtPnNldFBoaShkb3VibGVJ
bnB1dCk7CisgICAgZWxzZVZhbHVlLT5zZXRQaGkoZG91YmxlSW5wdXQpOworCisgICAgVmFsdWUq
IGFyZ0FzRG91YmxlQWdhaW4gPSB0YWlsLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9E
b3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlKTsKKyAgICBWYWx1ZSogZmluYWxBZGQgPSB0YWls
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGRvdWJsZUlucHV0LCBhcmdB
c0RvdWJsZUFnYWluKTsKKyAgICBWYWx1ZSogZmxvYXRSZXN1bHQgPSB0YWlsLT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCBmaW5hbEFkZCk7CisgICAgdGFp
bC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGZsb2F0UmVz
dWx0KTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIENIRUNLKGlz
SWRlbnRpY2FsKGludm9rZTxmbG9hdD4oKmNvZGUsIDEsIGJpdHdpc2VfY2FzdDxpbnQzMl90Pih2
YWx1ZSkpLCB2YWx1ZSArIHZhbHVlKSk7CisgICAgQ0hFQ0soaXNJZGVudGljYWwoaW52b2tlPGZs
b2F0PigqY29kZSwgMCwgYml0d2lzZV9jYXN0PGludDMyX3Q+KHZhbHVlKSksIDQyLjVmICsgdmFs
dWUpKTsKK30KKwordm9pZCB0ZXN0RG91YmxlUHJvZHVjZXJQaGlUb0Zsb2F0Q29udmVyc2lvbldp
dGhEb3VibGVDb25zdW1lcihmbG9hdCB2YWx1ZSkKK3sKKyAgICAvLyBJbiB0aGlzIGNhc2UsIHRo
ZSBVcHNpbG9uLVBoaSBlZmZlY3RpdmVseSBjb250YWlucyBhIEZsb2F0IHZhbHVlLCBidXQgaXQg
aXMgdXNlZAorICAgIC8vIGFzIGEgRmxvYXQgYW5kIGFzIGEgRG91YmxlLgorICAgIFByb2NlZHVy
ZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFz
aWNCbG9jayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogZWxz
ZUNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogdGFpbCA9IHByb2MuYWRk
QmxvY2soKTsKKworICAgIFZhbHVlKiBjb25kaXRpb24gPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAg
VmFsdWUqIGFyZ3VtZW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1
ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBh
cmd1bWVudDMyKTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAg
cHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgY29uZGl0aW9uLAorICAgICAgICBGcmVx
dWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKKworICAg
IFZhbHVlKiBhc0RvdWJsZSA9IHRoZW5DYXNlLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0
VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlKTsKKyAgICBVcHNpbG9uVmFsdWUqIHRoZW5W
YWx1ZSA9IHRoZW5DYXNlLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
YXNEb3VibGUpOworICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgSnVt
cCwgT3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayh0YWlsKSk7CisKKyAgICBWYWx1ZSogY29uc3RE
b3VibGUgPSBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdp
bigpLCA0Mi41KTsKKyAgICBVcHNpbG9uVmFsdWUqIGVsc2VWYWx1ZSA9IGVsc2VDYXNlLT5hcHBl
bmROZXc8VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4oKSwgY29uc3REb3VibGUpOworICAgIGVs
c2VDYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgSnVtcCwgT3JpZ2luKCksIEZyZXF1
ZW50ZWRCbG9jayh0YWlsKSk7CisKKyAgICBWYWx1ZSogZG91YmxlSW5wdXQgPSB0YWlsLT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIFBoaSwgRG91YmxlLCBPcmlnaW4oKSk7CisgICAgdGhlblZhbHVl
LT5zZXRQaGkoZG91YmxlSW5wdXQpOworICAgIGVsc2VWYWx1ZS0+c2V0UGhpKGRvdWJsZUlucHV0
KTsKKworICAgIFZhbHVlKiBhcmdBc0RvdWJsZUFnYWluID0gdGFpbC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZSk7CisgICAgVmFsdWUq
IGZsb2F0QWRkID0gdGFpbC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBk
b3VibGVJbnB1dCwgYXJnQXNEb3VibGVBZ2Fpbik7CisKKyAgICAvLyBGUm91bmQuCisgICAgVmFs
dWUqIGZsb2F0UmVzdWx0ID0gdGFpbC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zs
b2F0LCBPcmlnaW4oKSwgZmxvYXRBZGQpOworICAgIFZhbHVlKiBkb3VibGVSZXN1bHQgPSB0YWls
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFJl
c3VsdCk7CisKKyAgICAvLyBUaGlzIG9uZSAqY2Fubm90KiBiZSBlbGltaW5hdGVkCisgICAgVmFs
dWUqIGRvdWJsZUFkZCA9IHRhaWwtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4o
KSwgZG91YmxlSW5wdXQsIGRvdWJsZVJlc3VsdCk7CisKKyAgICB0YWlsLT5hcHBlbmROZXdDb250
cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgZG91YmxlQWRkKTsKKworICAgIGF1dG8g
Y29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGludm9rZTxk
b3VibGU+KCpjb2RlLCAxLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4odmFsdWUpKSwgKHZhbHVlICsg
dmFsdWUpICsgc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSkpKTsKKyAgICBDSEVDSyhpc0lkZW50
aWNhbChpbnZva2U8ZG91YmxlPigqY29kZSwgMCwgYml0d2lzZV9jYXN0PGludDMyX3Q+KHZhbHVl
KSksIHN0YXRpY19jYXN0PGRvdWJsZT4oKDQyLjVmICsgdmFsdWUpICsgNDIuNWYpKSk7Cit9CisK
K3ZvaWQgdGVzdERvdWJsZVByb2R1Y2VyUGhpV2l0aE5vbkZsb2F0Q29uc3QoZmxvYXQgdmFsdWUs
IGRvdWJsZSBjb25zdFZhbHVlKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogdGhlbkNhc2UgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgQmFzaWNCbG9jayogdGFpbCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVl
KiBjb25kaXRpb24gPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MzIgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjEpKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDMyKTsKKworICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4o
KSwKKyAgICAgICAgY29uZGl0aW9uLAorICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2Up
LCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKKworICAgIFZhbHVlKiBhc0RvdWJsZSA9IHRo
ZW5DYXNlLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBm
bG9hdFZhbHVlKTsKKyAgICBVcHNpbG9uVmFsdWUqIHRoZW5WYWx1ZSA9IHRoZW5DYXNlLT5hcHBl
bmROZXc8VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYXNEb3VibGUpOworICAgIHRoZW5D
YXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgSnVtcCwgT3JpZ2luKCksIEZyZXF1ZW50
ZWRCbG9jayh0YWlsKSk7CisKKyAgICBWYWx1ZSogY29uc3REb3VibGUgPSBlbHNlQ2FzZS0+YXBw
ZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBjb25zdFZhbHVlKTsKKyAg
ICBVcHNpbG9uVmFsdWUqIGVsc2VWYWx1ZSA9IGVsc2VDYXNlLT5hcHBlbmROZXc8VXBzaWxvblZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgY29uc3REb3VibGUpOworICAgIGVsc2VDYXNlLT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUocHJvYywgSnVtcCwgT3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayh0YWls
KSk7CisKKyAgICBWYWx1ZSogZG91YmxlSW5wdXQgPSB0YWlsLT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFBoaSwgRG91YmxlLCBPcmlnaW4oKSk7CisgICAgdGhlblZhbHVlLT5zZXRQaGkoZG91Ymxl
SW5wdXQpOworICAgIGVsc2VWYWx1ZS0+c2V0UGhpKGRvdWJsZUlucHV0KTsKKworICAgIFZhbHVl
KiBhcmdBc0RvdWJsZUFnYWluID0gdGFpbC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRv
RG91YmxlLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZSk7CisgICAgVmFsdWUqIGZpbmFsQWRkID0gdGFp
bC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBkb3VibGVJbnB1dCwgYXJn
QXNEb3VibGVBZ2Fpbik7CisgICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gdGFpbC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgZmluYWxBZGQpOworICAgIHRh
aWwtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBmbG9hdFJl
c3VsdCk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICBDSEVDSyhp
c0lkZW50aWNhbChpbnZva2U8ZmxvYXQ+KCpjb2RlLCAxLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4o
dmFsdWUpKSwgdmFsdWUgKyB2YWx1ZSkpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGludm9rZTxm
bG9hdD4oKmNvZGUsIDAsIGJpdHdpc2VfY2FzdDxpbnQzMl90Pih2YWx1ZSkpLCBzdGF0aWNfY2Fz
dDxmbG9hdD4oY29uc3RWYWx1ZSArIHZhbHVlKSkpOworfQorCit2b2lkIHRlc3REb3VibGVBcmdU
b0ludDY0Qml0d2lzZUNhc3QoZG91YmxlIHZhbHVlKQoreworICAgIFByb2NlZHVyZSBwcm9jOwor
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3Vt
ZW50ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBG
UFJJbmZvOjphcmd1bWVudEZQUjApOworCisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1
bWVudCkpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihw
cm9jLCB2YWx1ZSksIGJpdHdpc2VfY2FzdDxpbnQ2NF90Pih2YWx1ZSkpKTsKK30KKwordm9pZCB0
ZXN0RG91YmxlSW1tVG9JbnQ2NEJpdHdpc2VDYXN0KGRvdWJsZSB2YWx1ZSkKK3sKKyAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
IFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgdmFsdWUpOworCisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAor
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVu
dCkpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9j
KSwgYml0d2lzZV9jYXN0PGludDY0X3Q+KHZhbHVlKSkpOworfQorCit2b2lkIHRlc3RUd29CaXR3
aXNlQ2FzdE9uRG91YmxlKGRvdWJsZSB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVu
dCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBS
SW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICBWYWx1ZSogZmlyc3QgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQpOworICAgIFZhbHVl
KiBzZWNvbmQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmln
aW4oKSwgZmlyc3QpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCBzZWNvbmQpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFu
ZFJ1bjxkb3VibGU+KHByb2MsIHZhbHVlKSwgdmFsdWUpKTsKK30KKwordm9pZCB0ZXN0Qml0d2lz
ZUNhc3RPbkRvdWJsZUluTWVtb3J5KGRvdWJsZSB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJv
YzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBh
ZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIE1lbW9yeVZhbHVlKiBsb2FkRG91YmxlID0g
cm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBEb3VibGUsIE9yaWdpbigp
LCBhZGRyZXNzKTsKKyAgICBWYWx1ZSogY2FzdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBsb2FkRG91YmxlKTsKKyAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2FzdCk7CisKKyAgICBDSEVD
Syhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsICZ2YWx1ZSksIGJpdHdp
c2VfY2FzdDxpbnQ2NF90Pih2YWx1ZSkpKTsKK30KKwordm9pZCB0ZXN0Qml0d2lzZUNhc3RPbkRv
dWJsZUluTWVtb3J5SW5kZXhlZChkb3VibGUgdmFsdWUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYmFz
ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogb2Zmc2V0ID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEp
OworICAgIFZhbHVlKiBzY2FsZWRPZmZzZXQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFNobCwgT3JpZ2luKCksCisgICAgICAgIG9mZnNldCwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDMpKTsKKyAgICBWYWx1ZSogYWRkcmVzcyA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgYmFzZSwgc2NhbGVk
T2Zmc2V0KTsKKyAgICBNZW1vcnlWYWx1ZSogbG9hZERvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxN
ZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgRG91YmxlLCBPcmlnaW4oKSwgYWRkcmVzcyk7CisgICAg
VmFsdWUqIGNhc3QgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBP
cmlnaW4oKSwgbG9hZERvdWJsZSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHBy
b2MsIFJldHVybiwgT3JpZ2luKCksIGNhc3QpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29t
cGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCAmdmFsdWUsIDApLCBiaXR3aXNlX2Nhc3Q8aW50NjRf
dD4odmFsdWUpKSk7Cit9CisKK3ZvaWQgdGVzdEludDY0QkFyZ1RvRG91YmxlQml0d2lzZUNhc3Qo
aW50NjRfdCB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAg
ICAgICAgIHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQpKTsKKworICAgIENI
RUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCB2YWx1ZSksIGJpdHdp
c2VfY2FzdDxkb3VibGU+KHZhbHVlKSkpOworfQorCit2b2lkIHRlc3RJbnQ2NEJJbW1Ub0RvdWJs
ZUJpdHdpc2VDYXN0KGludDY0X3QgdmFsdWUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQg
PSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdmFsdWUpOwor
CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAg
cHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudCkpOworCisgICAgQ0hFQ0soaXNJ
ZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MpLCBiaXR3aXNlX2Nhc3Q8ZG91Ymxl
Pih2YWx1ZSkpKTsKK30KKwordm9pZCB0ZXN0VHdvQml0d2lzZUNhc3RPbkludDY0KGludDY0X3Qg
dmFsdWUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Cisg
ICAgVmFsdWUqIGZpcnN0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2Fz
dCwgT3JpZ2luKCksIGFyZ3VtZW50KTsKKyAgICBWYWx1ZSogc2Vjb25kID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGZpcnN0KTsKKyAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgc2Vjb25kKTsK
KworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgdmFs
dWUpLCB2YWx1ZSkpOworfQorCit2b2lkIHRlc3RCaXR3aXNlQ2FzdE9uSW50NjRJbk1lbW9yeShp
bnQ2NF90IHZhbHVlKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7CisgICAgTWVtb3J5VmFsdWUqIGxvYWREb3VibGUgPSByb290LT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwgYWRkcmVzcyk7CisgICAgVmFsdWUq
IGNhc3QgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4o
KSwgbG9hZERvdWJsZSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJl
dHVybiwgT3JpZ2luKCksIGNhc3QpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFu
ZFJ1bjxkb3VibGU+KHByb2MsICZ2YWx1ZSksIGJpdHdpc2VfY2FzdDxkb3VibGU+KHZhbHVlKSkp
OworfQorCit2b2lkIHRlc3RCaXR3aXNlQ2FzdE9uSW50NjRJbk1lbW9yeUluZGV4ZWQoaW50NjRf
dCB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBiYXNlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAg
IFZhbHVlKiBvZmZzZXQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgVmFsdWUqIHNjYWxlZE9mZnNl
dCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hsLCBPcmlnaW4oKSwKKyAgICAgICAg
b2Zmc2V0LAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmln
aW4oKSwgMykpOworICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBBZGQsIE9yaWdpbigpLCBiYXNlLCBzY2FsZWRPZmZzZXQpOworICAgIE1lbW9yeVZhbHVl
KiBsb2FkRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJ
bnQ2NCwgT3JpZ2luKCksIGFkZHJlc3MpOworICAgIFZhbHVlKiBjYXN0ID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGxvYWREb3VibGUpOworICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBjYXN0
KTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCAm
dmFsdWUsIDApLCBiaXR3aXNlX2Nhc3Q8ZG91YmxlPih2YWx1ZSkpKTsKK30KKwordm9pZCB0ZXN0
RmxvYXRJbW1Ub0ludDMyQml0d2lzZUNhc3QoZmxvYXQgdmFsdWUpCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1
ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmln
aW4oKSwgdmFsdWUpOworCisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICAgICAgcHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudCkpOwor
CisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jKSwgYml0
d2lzZV9jYXN0PGludDMyX3Q+KHZhbHVlKSkpOworfQorCit2b2lkIHRlc3RCaXR3aXNlQ2FzdE9u
RmxvYXRJbk1lbW9yeShmbG9hdCB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhZGRyZXNzID0g
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOworICAgIE1lbW9yeVZhbHVlKiBsb2FkRmxvYXQgPSByb290LT5hcHBl
bmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEZsb2F0LCBPcmlnaW4oKSwgYWRkcmVzcyk7
CisgICAgVmFsdWUqIGNhc3QgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VD
YXN0LCBPcmlnaW4oKSwgbG9hZEZsb2F0KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2FzdCk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNh
bChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsICZ2YWx1ZSksIGJpdHdpc2VfY2FzdDxpbnQz
Ml90Pih2YWx1ZSkpKTsKK30KKwordm9pZCB0ZXN0SW50MzJCQXJnVG9GbG9hdEJpdHdpc2VDYXN0
KGludDMyX3QgdmFsdWUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2Ms
IFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAg
ICAgICAgICBwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50KSk7CisKKyAgICBD
SEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jLCB2YWx1ZSksIGJpdHdp
c2VfY2FzdDxmbG9hdD4odmFsdWUpKSk7Cit9CisKK3ZvaWQgdGVzdEludDMyQkltbVRvRmxvYXRC
aXR3aXNlQ2FzdChpbnQzMl90IHZhbHVlKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0g
cm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHZhbHVlKTsKKwor
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQpKTsKKworICAgIENIRUNLKGlzSWRl
bnRpY2FsKGNvbXBpbGVBbmRSdW48ZmxvYXQ+KHByb2MpLCBiaXR3aXNlX2Nhc3Q8ZmxvYXQ+KHZh
bHVlKSkpOworfQorCit2b2lkIHRlc3RUd29CaXR3aXNlQ2FzdE9uSW50MzIoaW50MzJfdCB2YWx1
ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBW
YWx1ZSogZmlyc3QgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBP
cmlnaW4oKSwgYXJndW1lbnQpOworICAgIFZhbHVlKiBzZWNvbmQgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmlyc3QpOworICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBzZWNvbmQpOworCisg
ICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCB2YWx1ZSks
IHZhbHVlKSk7Cit9CisKK3ZvaWQgdGVzdEJpdHdpc2VDYXN0T25JbnQzMkluTWVtb3J5KGludDMy
X3QgdmFsdWUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
KyAgICBNZW1vcnlWYWx1ZSogbG9hZEZsb2F0ID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVl
Pihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksIGFkZHJlc3MpOworICAgIFZhbHVlKiBjYXN0
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGxv
YWRGbG9hdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwg
T3JpZ2luKCksIGNhc3QpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxm
bG9hdD4ocHJvYywgJnZhbHVlKSwgYml0d2lzZV9jYXN0PGZsb2F0Pih2YWx1ZSkpKTsKK30KKwor
dm9pZCB0ZXN0Q29udmVydERvdWJsZVRvRmxvYXRBcmcoZG91YmxlIHZhbHVlKQoreworICAgIFBy
b2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgIFZhbHVlKiBhc0Zsb2F0
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwg
YXJndW1lbnQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCBhc0Zsb2F0KTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRS
dW48ZmxvYXQ+KHByb2MsIHZhbHVlKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSkpOworfQor
Cit2b2lkIHRlc3RDb252ZXJ0RG91YmxlVG9GbG9hdEltbShkb3VibGUgdmFsdWUpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIHZhbHVlKTsKKyAgICBWYWx1ZSogYXNGbG9hdCA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIGFyZ3VtZW50KTsKKyAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgYXNG
bG9hdCk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9j
KSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSkpOworfQorCit2b2lkIHRlc3RDb252ZXJ0RG91
YmxlVG9GbG9hdE1lbShkb3VibGUgdmFsdWUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYWRkcmVzcyA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKKyAgICBNZW1vcnlWYWx1ZSogbG9hZGVkRG91YmxlID0gcm9vdC0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBEb3VibGUsIE9yaWdpbigpLCBhZGRy
ZXNzKTsKKyAgICBWYWx1ZSogYXNGbG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
RG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIGxvYWRlZERvdWJsZSk7CisgICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFzRmxvYXQpOworCisgICAg
Q0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxmbG9hdD4ocHJvYywgJnZhbHVlKSwgc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSkpOworfQorCit2b2lkIHRlc3RDb252ZXJ0RmxvYXRUb0Rv
dWJsZUFyZyhmbG9hdCB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7CisgICAgVmFsdWUq
IGFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBP
cmlnaW4oKSwgZmxvYXRWYWx1ZSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHBy
b2MsIFJldHVybiwgT3JpZ2luKCksIGFzRG91YmxlKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2Fs
KGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4odmFsdWUp
KSwgc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSkpKTsKK30KKwordm9pZCB0ZXN0Q29udmVydEZs
b2F0VG9Eb3VibGVJbW0oZmxvYXQgdmFsdWUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQg
PSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdmFsdWUp
OworICAgIFZhbHVlKiBhc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxv
YXRUb0RvdWJsZSwgT3JpZ2luKCksIGFyZ3VtZW50KTsKKyAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgYXNEb3VibGUpOworCisgICAgQ0hFQ0so
aXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MpLCBzdGF0aWNfY2FzdDxkb3Vi
bGU+KHZhbHVlKSkpOworfQorCit2b2lkIHRlc3RDb252ZXJ0RmxvYXRUb0RvdWJsZU1lbShmbG9h
dCB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwor
ICAgIE1lbW9yeVZhbHVlKiBsb2FkZWRGbG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1
ZT4ocHJvYywgTG9hZCwgRmxvYXQsIE9yaWdpbigpLCBhZGRyZXNzKTsKKyAgICBWYWx1ZSogYXNE
b3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdp
bigpLCBsb2FkZWRGbG9hdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2Ms
IFJldHVybiwgT3JpZ2luKCksIGFzRG91YmxlKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNv
bXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCAmdmFsdWUpLCBzdGF0aWNfY2FzdDxkb3VibGU+KHZh
bHVlKSkpOworfQorCit2b2lkIHRlc3RDb252ZXJ0RG91YmxlVG9GbG9hdFRvRG91YmxlVG9GbG9h
dChkb3VibGUgdmFsdWUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50
RlBSMCk7CisgICAgVmFsdWUqIGFzRmxvYXQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCBhcmd1bWVudCk7CisgICAgVmFsdWUqIGFzRG91Ymxl
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwg
YXNGbG9hdCk7CisgICAgVmFsdWUqIGFzRmxvYXRBZ2FpbiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIGFzRG91YmxlKTsKKyAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgYXNGbG9hdEFnYWlu
KTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZmxvYXQ+KHByb2MsIHZh
bHVlKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSkpOworfQorCit2b2lkIHRlc3RMb2FkRmxv
YXRDb252ZXJ0RG91YmxlQ29udmVydEZsb2F0U3RvcmVGbG9hdChmbG9hdCB2YWx1ZSkKK3sKKyAg
ICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworICAgIFZhbHVlKiBzcmMgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgVmFsdWUqIGRzdCA9IHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIxKTsKKyAgICBNZW1vcnlWYWx1ZSogbG9hZGVkRmxvYXQgPSByb290LT5hcHBl
bmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEZsb2F0LCBPcmlnaW4oKSwgc3JjKTsKKyAg
ICBWYWx1ZSogYXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9E
b3VibGUsIE9yaWdpbigpLCBsb2FkZWRGbG9hdCk7CisgICAgVmFsdWUqIGFzRmxvYXRBZ2FpbiA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIGFz
RG91YmxlKTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlLCBP
cmlnaW4oKSwgYXNGbG9hdEFnYWluLCBkc3QpOworCisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICBmbG9hdCBpbnB1dCA9IHZhbHVlOworICAg
IGZsb2F0IG91dHB1dCA9IDAuOworICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludDY0X3Q+KHBy
b2MsICZpbnB1dCwgJm91dHB1dCkpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGlucHV0LCBvdXRw
dXQpKTsKK30KKwordm9pZCB0ZXN0RnJvdW5kQXJnKGRvdWJsZSB2YWx1ZSkKK3sKKyAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
IFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICBWYWx1ZSogYXNGbG9hdCA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIGFy
Z3VtZW50KTsKKyAgICBWYWx1ZSogYXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBhc0Zsb2F0KTsKKyAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgYXNEb3VibGUpOworCisgICAg
Q0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIHZhbHVlKSwgc3Rh
dGljX2Nhc3Q8ZG91YmxlPihzdGF0aWNfY2FzdDxmbG9hdD4odmFsdWUpKSkpOworfQorCit2b2lk
IHRlc3RGcm91bmRNZW0oZG91YmxlIHZhbHVlKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFkZHJlc3Mg
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7CisgICAgTWVtb3J5VmFsdWUqIGxvYWRlZERvdWJsZSA9IHJvb3Qt
PmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgRG91YmxlLCBPcmlnaW4oKSwgYWRk
cmVzcyk7CisgICAgVmFsdWUqIGFzRmxvYXQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCBsb2FkZWREb3VibGUpOworICAgIFZhbHVlKiBhc0Rv
dWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2lu
KCksIGFzRmxvYXQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCBhc0RvdWJsZSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxl
QW5kUnVuPGRvdWJsZT4ocHJvYywgJnZhbHVlKSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGF0aWNf
Y2FzdDxmbG9hdD4odmFsdWUpKSkpOworfQorCit2b2lkIHRlc3RJVG9ENjRBcmcoKQoreworICAg
IFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisgICAgVmFsdWUqIHNyYyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogc3JjQXNEb3Vi
bGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIElUb0QsIE9yaWdpbigpLCBzcmMpOwor
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBz
cmNBc0RvdWJsZSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICBm
b3IgKGF1dG8gdGVzdFZhbHVlIDogaW50NjRPcGVyYW5kcygpKQorICAgICAgICBDSEVDSyhpc0lk
ZW50aWNhbChpbnZva2U8ZG91YmxlPigqY29kZSwgdGVzdFZhbHVlLnZhbHVlKSwgc3RhdGljX2Nh
c3Q8ZG91YmxlPih0ZXN0VmFsdWUudmFsdWUpKSk7Cit9CisKK3ZvaWQgdGVzdElUb0Y2NEFyZygp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICBWYWx1ZSogc3JjID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVlKiBz
cmNBc0Zsb2F0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJVG9GLCBPcmlnaW4oKSwg
c3JjKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmln
aW4oKSwgc3JjQXNGbG9hdCk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsK
KyAgICBmb3IgKGF1dG8gdGVzdFZhbHVlIDogaW50NjRPcGVyYW5kcygpKQorICAgICAgICBDSEVD
Syhpc0lkZW50aWNhbChpbnZva2U8ZmxvYXQ+KCpjb2RlLCB0ZXN0VmFsdWUudmFsdWUpLCBzdGF0
aWNfY2FzdDxmbG9hdD4odGVzdFZhbHVlLnZhbHVlKSkpOworfQorCit2b2lkIHRlc3RJVG9EMzJB
cmcoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIHNyYyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVl
KiBzcmNBc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSVRvRCwgT3JpZ2lu
KCksIHNyYyk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwg
T3JpZ2luKCksIHNyY0FzRG91YmxlKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHBy
b2MpOworICAgIGZvciAoYXV0byB0ZXN0VmFsdWUgOiBpbnQzMk9wZXJhbmRzKCkpCisgICAgICAg
IENIRUNLKGlzSWRlbnRpY2FsKGludm9rZTxkb3VibGU+KCpjb2RlLCB0ZXN0VmFsdWUudmFsdWUp
LCBzdGF0aWNfY2FzdDxkb3VibGU+KHRlc3RWYWx1ZS52YWx1ZSkpKTsKK30KKwordm9pZCB0ZXN0
SVRvRjMyQXJnKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBzcmMgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAg
ICBWYWx1ZSogc3JjQXNGbG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSVRvRiwg
T3JpZ2luKCksIHNyYyk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJl
dHVybiwgT3JpZ2luKCksIHNyY0FzRmxvYXQpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVBy
b2MocHJvYyk7CisgICAgZm9yIChhdXRvIHRlc3RWYWx1ZSA6IGludDMyT3BlcmFuZHMoKSkKKyAg
ICAgICAgQ0hFQ0soaXNJZGVudGljYWwoaW52b2tlPGZsb2F0PigqY29kZSwgdGVzdFZhbHVlLnZh
bHVlKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHRlc3RWYWx1ZS52YWx1ZSkpKTsKK30KKwordm9pZCB0
ZXN0SVRvRDY0TWVtKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOworICAgIE1lbW9yeVZhbHVlKiBsb2FkZWRTcmMgPSByb290LT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwgYWRkcmVzcyk7CisgICAgVmFsdWUq
IHNyY0FzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJVG9ELCBPcmlnaW4o
KSwgbG9hZGVkU3JjKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwgc3JjQXNEb3VibGUpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVBy
b2MocHJvYyk7CisgICAgaW50NjRfdCBpbk1lbW9yeVZhbHVlOworICAgIGZvciAoYXV0byB0ZXN0
VmFsdWUgOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgaW5NZW1vcnlWYWx1ZSA9IHRlc3RW
YWx1ZS52YWx1ZTsKKyAgICAgICAgQ0hFQ0soaXNJZGVudGljYWwoaW52b2tlPGRvdWJsZT4oKmNv
ZGUsICZpbk1lbW9yeVZhbHVlKSwgc3RhdGljX2Nhc3Q8ZG91YmxlPih0ZXN0VmFsdWUudmFsdWUp
KSk7CisgICAgICAgIENIRUNLKGluTWVtb3J5VmFsdWUgPT0gdGVzdFZhbHVlLnZhbHVlKTsKKyAg
ICB9Cit9CisKK3ZvaWQgdGVzdElUb0Y2NE1lbSgpCit7CisgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYWRkcmVz
cyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBNZW1vcnlWYWx1ZSogbG9hZGVkU3JjID0gcm9vdC0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksIGFkZHJl
c3MpOworICAgIFZhbHVlKiBzcmNBc0Zsb2F0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBJVG9GLCBPcmlnaW4oKSwgbG9hZGVkU3JjKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgc3JjQXNGbG9hdCk7CisKKyAgICBhdXRvIGNv
ZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICBpbnQ2NF90IGluTWVtb3J5VmFsdWU7CisgICAg
Zm9yIChhdXRvIHRlc3RWYWx1ZSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICBpbk1lbW9y
eVZhbHVlID0gdGVzdFZhbHVlLnZhbHVlOworICAgICAgICBDSEVDSyhpc0lkZW50aWNhbChpbnZv
a2U8ZmxvYXQ+KCpjb2RlLCAmaW5NZW1vcnlWYWx1ZSksIHN0YXRpY19jYXN0PGZsb2F0Pih0ZXN0
VmFsdWUudmFsdWUpKSk7CisgICAgICAgIENIRUNLKGluTWVtb3J5VmFsdWUgPT0gdGVzdFZhbHVl
LnZhbHVlKTsKKyAgICB9Cit9CisKK3ZvaWQgdGVzdElUb0QzMk1lbSgpCit7CisgICAgUHJvY2Vk
dXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBW
YWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBNZW1vcnlWYWx1ZSogbG9hZGVk
U3JjID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQzMiwgT3Jp
Z2luKCksIGFkZHJlc3MpOworICAgIFZhbHVlKiBzcmNBc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgSVRvRCwgT3JpZ2luKCksIGxvYWRlZFNyYyk7CisgICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHNyY0FzRG91YmxlKTsK
KworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIGludDMyX3QgaW5NZW1v
cnlWYWx1ZTsKKyAgICBmb3IgKGF1dG8gdGVzdFZhbHVlIDogaW50MzJPcGVyYW5kcygpKSB7Cisg
ICAgICAgIGluTWVtb3J5VmFsdWUgPSB0ZXN0VmFsdWUudmFsdWU7CisgICAgICAgIENIRUNLKGlz
SWRlbnRpY2FsKGludm9rZTxkb3VibGU+KCpjb2RlLCAmaW5NZW1vcnlWYWx1ZSksIHN0YXRpY19j
YXN0PGRvdWJsZT4odGVzdFZhbHVlLnZhbHVlKSkpOworICAgICAgICBDSEVDSyhpbk1lbW9yeVZh
bHVlID09IHRlc3RWYWx1ZS52YWx1ZSk7CisgICAgfQorfQorCit2b2lkIHRlc3RJVG9GMzJNZW0o
KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgTWVt
b3J5VmFsdWUqIGxvYWRlZFNyYyA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywg
TG9hZCwgSW50MzIsIE9yaWdpbigpLCBhZGRyZXNzKTsKKyAgICBWYWx1ZSogc3JjQXNGbG9hdCA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSVRvRiwgT3JpZ2luKCksIGxvYWRlZFNyYyk7
CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCks
IHNyY0FzRmxvYXQpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAg
aW50MzJfdCBpbk1lbW9yeVZhbHVlOworICAgIGZvciAoYXV0byB0ZXN0VmFsdWUgOiBpbnQzMk9w
ZXJhbmRzKCkpIHsKKyAgICAgICAgaW5NZW1vcnlWYWx1ZSA9IHRlc3RWYWx1ZS52YWx1ZTsKKyAg
ICAgICAgQ0hFQ0soaXNJZGVudGljYWwoaW52b2tlPGZsb2F0PigqY29kZSwgJmluTWVtb3J5VmFs
dWUpLCBzdGF0aWNfY2FzdDxmbG9hdD4odGVzdFZhbHVlLnZhbHVlKSkpOworICAgICAgICBDSEVD
Syhpbk1lbW9yeVZhbHVlID09IHRlc3RWYWx1ZS52YWx1ZSk7CisgICAgfQorfQorCit2b2lkIHRl
c3RJVG9ENjRJbW0oaW50NjRfdCB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBzcmMgPSByb290
LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdmFsdWUpOworICAgIFZh
bHVlKiBzcmNBc0Zsb2F0aW5nUG9pbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIElU
b0QsIE9yaWdpbigpLCBzcmMpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLCBzcmNBc0Zsb2F0aW5nUG9pbnQpOworICAgIENIRUNLKGlzSWRl
bnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jKSwgc3RhdGljX2Nhc3Q8ZG91YmxlPih2
YWx1ZSkpKTsKK30KKwordm9pZCB0ZXN0SVRvRjY0SW1tKGludDY0X3QgdmFsdWUpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBWYWx1ZSogc3JjID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIHZhbHVlKTsKKyAgICBWYWx1ZSogc3JjQXNGbG9hdGluZ1BvaW50ID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBJVG9GLCBPcmlnaW4oKSwgc3JjKTsKKyAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgc3JjQXNGbG9hdGluZ1Bv
aW50KTsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jKSwg
c3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSkpOworfQorCit2b2lkIHRlc3RJVG9EMzJJbW0oaW50
MzJfdCB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBzcmMgPSByb290LT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdmFsdWUpOworICAgIFZhbHVlKiBzcmNBc0Zsb2F0
aW5nUG9pbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIElUb0QsIE9yaWdpbigpLCBz
cmMpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCBzcmNBc0Zsb2F0aW5nUG9pbnQpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVB
bmRSdW48ZG91YmxlPihwcm9jKSwgc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSkpKTsKK30KKwor
dm9pZCB0ZXN0SVRvRjMySW1tKGludDMyX3QgdmFsdWUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogc3Jj
ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHZhbHVlKTsK
KyAgICBWYWx1ZSogc3JjQXNGbG9hdGluZ1BvaW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBJVG9GLCBPcmlnaW4oKSwgc3JjKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgc3JjQXNGbG9hdGluZ1BvaW50KTsKKyAgICBDSEVD
Syhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jKSwgc3RhdGljX2Nhc3Q8Zmxv
YXQ+KHZhbHVlKSkpOworfQorCit2b2lkIHRlc3RJVG9EUmVkdWNlZFRvSVRvRjY0QXJnKCkKK3sK
KyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworICAgIFZhbHVlKiBzcmMgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgVmFsdWUqIHNyY0Fz
RG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJVG9ELCBPcmlnaW4oKSwgc3Jj
KTsKKyAgICBWYWx1ZSogZmxvYXRSZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCBzcmNBc0RvdWJsZSk7CisgICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGZsb2F0UmVzdWx0KTsKKwor
ICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIGZvciAoYXV0byB0ZXN0VmFs
dWUgOiBpbnQ2NE9wZXJhbmRzKCkpCisgICAgICAgIENIRUNLKGlzSWRlbnRpY2FsKGludm9rZTxm
bG9hdD4oKmNvZGUsIHRlc3RWYWx1ZS52YWx1ZSksIHN0YXRpY19jYXN0PGZsb2F0Pih0ZXN0VmFs
dWUudmFsdWUpKSk7Cit9CisKK3ZvaWQgdGVzdElUb0RSZWR1Y2VkVG9JVG9GMzJBcmcoKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgVmFsdWUqIHNyYyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMs
IE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBzcmNBc0Rv
dWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSVRvRCwgT3JpZ2luKCksIHNyYyk7
CisgICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBE
b3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgc3JjQXNEb3VibGUpOworICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBmbG9hdFJlc3VsdCk7CisKKyAg
ICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICBmb3IgKGF1dG8gdGVzdFZhbHVl
IDogaW50MzJPcGVyYW5kcygpKQorICAgICAgICBDSEVDSyhpc0lkZW50aWNhbChpbnZva2U8Zmxv
YXQ+KCpjb2RlLCB0ZXN0VmFsdWUudmFsdWUpLCBzdGF0aWNfY2FzdDxmbG9hdD4odGVzdFZhbHVl
LnZhbHVlKSkpOworfQorCit2b2lkIHRlc3RTdG9yZTMyKGludCB2YWx1ZSkKK3sKKyAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
IGludCBzbG90ID0gMHhiYWFkYmVlZjsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KAorICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1
ZT4ocHJvYywgT3JpZ2luKCksICZzbG90KSwgMCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgQ0hFQ0soIWNvbXBpbGVB
bmRSdW48aW50Pihwcm9jLCB2YWx1ZSkpOworICAgIENIRUNLKHNsb3QgPT0gdmFsdWUpOworfQor
Cit2b2lkIHRlc3RTdG9yZUNvbnN0YW50KGludCB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJv
YzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIGludCBzbG90
ID0gMHhiYWFkYmVlZjsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAg
ICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCB2YWx1ZSksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxD
b25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnNsb3QpLCAwKTsKKyAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICBDSEVD
SyghY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpKTsKKyAgICBDSEVDSyhzbG90ID09IHZhbHVlKTsK
K30KKwordm9pZCB0ZXN0U3RvcmVDb25zdGFudFB0cihpbnRwdHJfdCB2YWx1ZSkKK3sKKyAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIGludHB0cl90IHNsb3Q7CisjaWYgQ1BVKEFERFJFU1M2NCkKKyAgICBzbG90ID0gKHN0YXRp
Y19jYXN0PGludHB0cl90PigweGJhYWRiZWVmKSA8PCAzMikgKyBzdGF0aWNfY2FzdDxpbnRwdHJf
dD4oMHhiYWFkYmVlZik7CisjZWxzZQorICAgIHNsb3QgPSAweGJhYWRiZWVmOworI2VuZGlmCisg
ICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywgU3RvcmUsIE9y
aWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIHZhbHVlKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCAmc2xvdCksIDApOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kTmV3PENvbnN0
MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIENIRUNLKCFjb21waWxlQW5kUnVu
PGludD4ocHJvYykpOworICAgIENIRUNLKHNsb3QgPT0gdmFsdWUpOworfQorCit2b2lkIHRlc3RT
dG9yZThBcmcoKQoreworICAgIHsgLy8gRGlyZWN0IGFkZHJlc3NpbmcuCisgICAgICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
CisgICAgICAgIFZhbHVlKiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1
bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAgVmFs
dWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZTgsIE9yaWdpbigpLCB2YWx1ZSwgYWRkcmVzcyk7Cisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LCB2YWx1ZSk7CisKKyAgICAgICAgaW50OF90IHN0b3JhZ2UgPSAwOworICAgICAgICBDSEVDSyhj
b21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIDQyLCAmc3RvcmFnZSkgPT0gNDIpOworICAgICAg
ICBDSEVDSyhzdG9yYWdlID09IDQyKTsKKyAgICB9CisKKyAgICB7IC8vIEluZGV4ZWQgYWRkcmVz
c2luZy4KKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIHZhbHVlID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCkpOworICAgICAgICBWYWx1ZSogYmFzZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAg
VmFsdWUqIG9mZnNldCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgVmFsdWUqIGRpc3BsYWNl
bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMSk7
CisKKyAgICAgICAgVmFsdWUqIGJhc2VEaXNwbGFjZW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGRpc3BsYWNlbWVudCwgYmFzZSk7CisgICAgICAgIFZh
bHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigp
LCBiYXNlRGlzcGxhY2VtZW50LCBvZmZzZXQpOworCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxN
ZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmU4LCBPcmlnaW4oKSwgdmFsdWUsIGFkZHJlc3MpOworICAg
ICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwg
dmFsdWUpOworCisgICAgICAgIGludDhfdCBzdG9yYWdlID0gMDsKKyAgICAgICAgQ0hFQ0soY29t
cGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCA0MiwgJnN0b3JhZ2UsIDEpID09IDQyKTsKKyAgICAg
ICAgQ0hFQ0soc3RvcmFnZSA9PSA0Mik7CisgICAgfQorfQorCit2b2lkIHRlc3RTdG9yZThJbW0o
KQoreworICAgIHsgLy8gRGlyZWN0IGFkZHJlc3NpbmcuCisgICAgICAgIFByb2NlZHVyZSBwcm9j
OworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAg
IFZhbHVlKiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCA0Mik7CisgICAgICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmU4LCBPcmlnaW4o
KSwgdmFsdWUsIGFkZHJlc3MpOworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgdmFsdWUpOworCisgICAgICAgIGludDhfdCBzdG9yYWdl
ID0gMDsKKyAgICAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCAmc3RvcmFn
ZSkgPT0gNDIpOworICAgICAgICBDSEVDSyhzdG9yYWdlID09IDQyKTsKKyAgICB9CisKKyAgICB7
IC8vIEluZGV4ZWQgYWRkcmVzc2luZy4KKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIHZh
bHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKTsK
KyAgICAgICAgVmFsdWUqIGJhc2UgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBv
ZmZzZXQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIFZhbHVlKiBkaXNwbGFjZW1lbnQgPSBy
b290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTEpOworCisgICAg
ICAgIFZhbHVlKiBiYXNlRGlzcGxhY2VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBBZGQsIE9yaWdpbigpLCBkaXNwbGFjZW1lbnQsIGJhc2UpOworICAgICAgICBWYWx1ZSogYWRk
cmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgYmFzZURp
c3BsYWNlbWVudCwgb2Zmc2V0KTsKKworICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFs
dWU+KHByb2MsIFN0b3JlOCwgT3JpZ2luKCksIHZhbHVlLCBhZGRyZXNzKTsKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHZhbHVlKTsK
KworICAgICAgICBpbnQ4X3Qgc3RvcmFnZSA9IDA7CisgICAgICAgIENIRUNLKGNvbXBpbGVBbmRS
dW48aW50NjRfdD4ocHJvYywgJnN0b3JhZ2UsIDEpID09IDQyKTsKKyAgICAgICAgQ0hFQ0soc3Rv
cmFnZSA9PSA0Mik7CisgICAgfQorfQorCit2b2lkIHRlc3RTdG9yZVBhcnRpYWw4Qml0UmVnaXN0
ZXJPblg4NigpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKworICAgIC8vIFdlIHdhbnQgdG8gaGF2ZSB0aGlzIGluIEVDWC4K
KyAgICBWYWx1ZSogcmV0dXJuVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisKKyAgICAvLyBXZSB3
YW50IHRoaXMgc3VjayBpbiBFRFguCisgICAgVmFsdWUqIHdoZXJlVG9TdG9yZSA9IHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIxKTsKKworICAgIC8vIFRoZSBwYXRjaCBwb2ludCBpcyB0aGVyZSB0byBoZWxwIHVzIGZv
cmNlIHRoZSBoYW5kIG9mIHRoZSBjb21waWxlci4KKyAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNo
cG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBJbnQzMiwgT3Jp
Z2luKCkpOworCisgICAgLy8gRm9yIHRoZSB2YWx1ZSBhYm92ZSB0byBiZSBtYXRlcmlhbGl6ZWQg
YW5kIGdpdmUgdGhlIGFsbG9jYXRvcgorICAgIC8vIGEgc3Ryb25nZXIgaW5zZW50aXZlIHRvIG5h
bWUgdGhvc2UgcmVnaXN0ZXIgdGhlIHdheSB3ZSBuZWVkLgorICAgIHBhdGNocG9pbnQtPmFwcGVu
ZChDb25zdHJhaW5lZFZhbHVlKHJldHVyblZhbHVlLCBWYWx1ZVJlcChHUFJJbmZvOjpyZWdUMykp
KTsKKyAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZSh3aGVyZVRvU3RvcmUs
IFZhbHVlUmVwKEdQUkluZm86OnJlZ1QyKSkpOworCisgICAgLy8gV2UnbGwgcHJvZHVjZSBFREku
CisgICAgcGF0Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWludCA9IFZhbHVlUmVwOjpyZWcoR1BSSW5m
bzo6cmVnVDYpOworCisgICAgLy8gR2l2ZSB0aGUgYWxsb2NhdG9yIGEgZ29vZCByZWFzb24gbm90
IHRvIHVzZSBhbnkgb3RoZXIgcmVnaXN0ZXIuCisgICAgUmVnaXN0ZXJTZXQgY2xvYmJlclNldCA9
IFJlZ2lzdGVyU2V0OjphbGxHUFJzKCk7CisgICAgY2xvYmJlclNldC5leGNsdWRlKFJlZ2lzdGVy
U2V0OjpzdGFja1JlZ2lzdGVycygpKTsKKyAgICBjbG9iYmVyU2V0LmV4Y2x1ZGUoUmVnaXN0ZXJT
ZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSk7CisgICAgY2xvYmJlclNldC5jbGVhcihH
UFJJbmZvOjpyZWdUMyk7CisgICAgY2xvYmJlclNldC5jbGVhcihHUFJJbmZvOjpyZWdUMik7Cisg
ICAgY2xvYmJlclNldC5jbGVhcihHUFJJbmZvOjpyZWdUNik7CisgICAgcGF0Y2hwb2ludC0+Y2xv
YmJlckxhdGUoY2xvYmJlclNldCk7CisKKyAgICAvLyBTZXQgRURJLgorICAgIHBhdGNocG9pbnQt
PnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9T
Y3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAgICAgIGppdC54
b3I2NChwYXJhbXNbMF0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgIH0pOworCisg
ICAgLy8gSWYgZXZlcnl0aGluZyB3ZW50IHdlbGwsIHdlIHNob3VsZCBoYXZlIHRoZSBiaWcgbnVt
YmVyIGluIGVheCwKKyAgICAvLyBwYXRjaHBvaW50ID09IEVESSBhbmQgd2hlcmVUb1N0b3JlID0g
RURYLgorICAgIC8vIFNpbmNlIEVESSA9PSA1LCBhbmQgQUggPSA1IG9uIDggYml0IHN0b3JlLCB0
aGlzIHdvdWxkIGdvIHdyb25nCisgICAgLy8gaWYgd2UgdXNlIFg4NiBwYXJ0aWFsIHJlZ2lzdGVy
cy4KKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlOCwgT3JpZ2lu
KCksIHBhdGNocG9pbnQsIHdoZXJlVG9TdG9yZSk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmV0dXJuVmFsdWUpOworCisgICAgaW50
OF90IHN0b3JhZ2UgPSAweGZmOworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJv
YywgMHgxMjM0NTY3OGFiY2RlZjEyLCAmc3RvcmFnZSkgPT0gMHgxMjM0NTY3OGFiY2RlZjEyKTsK
KyAgICBDSEVDSyghc3RvcmFnZSk7Cit9CisKK3ZvaWQgdGVzdFN0b3JlMTZBcmcoKQoreworICAg
IHsgLy8gRGlyZWN0IGFkZHJlc3NpbmcuCisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiB2
YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAgVmFsdWUqIGFkZHJlc3MgPSByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMSk7CisKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9j
LCBTdG9yZTE2LCBPcmlnaW4oKSwgdmFsdWUsIGFkZHJlc3MpOworICAgICAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgdmFsdWUpOworCisgICAg
ICAgIGludDE2X3Qgc3RvcmFnZSA9IC0xOworICAgICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGlu
dDY0X3Q+KHByb2MsIDQyLCAmc3RvcmFnZSkgPT0gNDIpOworICAgICAgICBDSEVDSyhzdG9yYWdl
ID09IDQyKTsKKyAgICB9CisKKyAgICB7IC8vIEluZGV4ZWQgYWRkcmVzc2luZy4KKyAgICAgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisKKyAgICAgICAgVmFsdWUqIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgICAg
ICBWYWx1ZSogYmFzZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgVmFsdWUqIG9mZnNldCA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgVmFsdWUqIGRpc3BsYWNlbWVudCA9IHJvb3QtPmFw
cGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMSk7CisKKyAgICAgICAgVmFs
dWUqIGJhc2VEaXNwbGFjZW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwg
T3JpZ2luKCksIGRpc3BsYWNlbWVudCwgYmFzZSk7CisgICAgICAgIFZhbHVlKiBhZGRyZXNzID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBiYXNlRGlzcGxhY2Vt
ZW50LCBvZmZzZXQpOworCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJv
YywgU3RvcmUxNiwgT3JpZ2luKCksIHZhbHVlLCBhZGRyZXNzKTsKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHZhbHVlKTsKKworICAg
ICAgICBpbnQxNl90IHN0b3JhZ2UgPSAtMTsKKyAgICAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxp
bnQ2NF90Pihwcm9jLCA0MiwgJnN0b3JhZ2UsIDEpID09IDQyKTsKKyAgICAgICAgQ0hFQ0soc3Rv
cmFnZSA9PSA0Mik7CisgICAgfQorfQorCit2b2lkIHRlc3RTdG9yZTE2SW1tKCkKK3sKKyAgICB7
IC8vIERpcmVjdCBhZGRyZXNzaW5nLgorICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogdmFs
dWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDIpOwor
ICAgICAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKworICAgICAgICByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlMTYsIE9yaWdpbigpLCB2YWx1ZSwg
YWRkcmVzcyk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCB2YWx1ZSk7CisKKyAgICAgICAgaW50MTZfdCBzdG9yYWdlID0gLTE7Cisg
ICAgICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgJnN0b3JhZ2UpID09IDQy
KTsKKyAgICAgICAgQ0hFQ0soc3RvcmFnZSA9PSA0Mik7CisgICAgfQorCisgICAgeyAvLyBJbmRl
eGVkIGFkZHJlc3NpbmcuCisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiB2YWx1ZSA9IHJv
b3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0Mik7CisgICAgICAg
IFZhbHVlKiBiYXNlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSogb2Zmc2V0ID0g
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEpOworICAgICAgICBWYWx1ZSogZGlzcGxhY2VtZW50ID0gcm9vdC0+YXBw
ZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xKTsKKworICAgICAgICBWYWx1
ZSogYmFzZURpc3BsYWNlbWVudCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBP
cmlnaW4oKSwgZGlzcGxhY2VtZW50LCBiYXNlKTsKKyAgICAgICAgVmFsdWUqIGFkZHJlc3MgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGJhc2VEaXNwbGFjZW1l
bnQsIG9mZnNldCk7CisKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9j
LCBTdG9yZTE2LCBPcmlnaW4oKSwgdmFsdWUsIGFkZHJlc3MpOworICAgICAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgdmFsdWUpOworCisgICAg
ICAgIGludDE2X3Qgc3RvcmFnZSA9IC0xOworICAgICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGlu
dDY0X3Q+KHByb2MsICZzdG9yYWdlLCAxKSA9PSA0Mik7CisgICAgICAgIENIRUNLKHN0b3JhZ2Ug
PT0gNDIpOworICAgIH0KK30KKwordm9pZCB0ZXN0VHJ1bmMoaW50NjRfdCB2YWx1ZSkKK3sKKyAg
ICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
IHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOwor
CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIHZhbHVlKSA9PSBzdGF0aWNfY2Fz
dDxpbnQ+KHZhbHVlKSk7Cit9CisKK3ZvaWQgdGVzdEFkZDEoaW50IHZhbHVlKQoreworICAgIFBy
b2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJv
YywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgMSkpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihw
cm9jLCB2YWx1ZSkgPT0gdmFsdWUgKyAxKTsKK30KKwordm9pZCB0ZXN0QWRkMVB0cihpbnRwdHJf
dCB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIDEpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludHB0cl90Pihw
cm9jLCB2YWx1ZSkgPT0gdmFsdWUgKyAxKTsKK30KKwordm9pZCB0ZXN0TmVnMzIoaW50MzJfdCB2
YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgIHByb2MsIFN1YiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCksCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSk7CisKKyAgICBDSEVDSyhjb21w
aWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIHZhbHVlKSA9PSAtdmFsdWUpOworfQorCit2b2lkIHRl
c3ROZWdQdHIoaW50cHRyX3QgdmFsdWUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTdWIsIE9yaWdpbigpLAorICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAw
KSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFu
ZFJ1bjxpbnRwdHJfdD4ocHJvYywgdmFsdWUpID09IC12YWx1ZSk7Cit9CisKK3ZvaWQgdGVzdFN0
b3JlQWRkTG9hZDMyKGludCBhbW91bnQpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBpbnQgc2xvdCA9IDM3OworICAg
IENvbnN0UHRyVmFsdWUqIHNsb3RQdHIgPSByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksICZzbG90KTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KAorICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCks
IHNsb3RQdHIpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAg
ICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApKSksCisgICAgICAgIHNsb3RQdHIsIDApOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIENIRUNL
KCFjb21waWxlQW5kUnVuPGludD4ocHJvYywgYW1vdW50KSk7CisgICAgQ0hFQ0soc2xvdCA9PSAz
NyArIGFtb3VudCk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM180LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy90ZXN0YjNfNC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDMxOTg5YzQyOGU1M2IxNjg1NzQ4NzQ5
NmU1Mjg4ZWE3NDJlNzU4OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy90ZXN0YjNfNC5jcHAKQEAgLTAsMCArMSwyOTE1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAidGVzdGIzLmgiCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCit2b2lkIHRlc3RTdG9yZVJl
bEFkZExvYWRBY3EzMihpbnQgYW1vdW50KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgaW50IHNsb3QgPSAzNzsKKyAg
ICBDb25zdFB0clZhbHVlKiBzbG90UHRyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCAmc2xvdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVl
PigKKyAgICAgICAgcHJvYywgU3RvcmUsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgTG9h
ZCwgSW50MzIsIE9yaWdpbigpLCBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2Uo
NDIpKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAg
ICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSkpLAorICAgICAgICBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKTsK
KyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCAwKSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICBp
ZiAoaXNBUk02NCgpKSB7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibGRh
Iik7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAic3RsIik7CisgICAgfQor
ICAgIGlmIChpc1g4NigpKQorICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgInhj
aGciKTsKKyAgICBDSEVDSyghaW52b2tlPGludD4oKmNvZGUsIGFtb3VudCkpOworICAgIENIRUNL
KHNsb3QgPT0gMzcgKyBhbW91bnQpOworfQorCit2b2lkIHRlc3RTdG9yZUFkZExvYWRJbW0zMihp
bnQgYW1vdW50KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7CisgICAgaW50IHNsb3QgPSAzNzsKKyAgICBDb25zdFB0clZhbHVl
KiBzbG90UHRyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCAmc2xvdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJv
YywgU3RvcmUsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBzbG90UHRyKSwKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBh
bW91bnQpKSwKKyAgICAgICAgc2xvdFB0ciwgMCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgQ0hFQ0so
IWNvbXBpbGVBbmRSdW48aW50Pihwcm9jKSk7CisgICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3Vu
dCk7Cit9CisKK3ZvaWQgdGVzdFN0b3JlQWRkTG9hZDgoaW50IGFtb3VudCwgQjM6Ok9wY29kZSBs
b2FkT3Bjb2RlKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7CisgICAgaW50OF90IHNsb3QgPSAzNzsKKyAgICBDb25zdFB0clZh
bHVlKiBzbG90UHRyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCAmc2xvdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAg
cHJvYywgU3RvcmU4LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIGxvYWRPcGNvZGUsIE9yaWdpbigpLCBzbG90UHRyKSwK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJv
YywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpLAor
ICAgICAgICBzbG90UHRyLCAwKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisg
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICBDSEVDSyghY29tcGlsZUFu
ZFJ1bjxpbnQ+KHByb2MsIGFtb3VudCkpOworICAgIENIRUNLKHNsb3QgPT0gMzcgKyBhbW91bnQp
OworfQorCit2b2lkIHRlc3RTdG9yZVJlbEFkZExvYWRBY3E4KGludCBhbW91bnQsIEIzOjpPcGNv
ZGUgbG9hZE9wY29kZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIGludDhfdCBzbG90ID0gMzc7CisgICAgQ29uc3RQ
dHJWYWx1ZSogc2xvdFB0ciA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgJnNsb3QpOworICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAg
ICAgIHByb2MsIFN0b3JlOCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBsb2FkT3Bjb2Rl
LCBPcmlnaW4oKSwgc2xvdFB0ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQyKSksCisg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSwKKyAg
ICAgICAgc2xvdFB0ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQyKSk7CisgICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
MCkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgaWYgKGlzQVJN
NjQoKSkgeworICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxkYSIpOworICAg
ICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgInN0bCIpOworICAgIH0KKyAgICBpZiAo
aXNYODYoKSkKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJ4Y2hnIik7Cisg
ICAgQ0hFQ0soIWludm9rZTxpbnQ+KCpjb2RlLCBhbW91bnQpKTsKKyAgICBDSEVDSyhzbG90ID09
IDM3ICsgYW1vdW50KTsKK30KKwordm9pZCB0ZXN0U3RvcmVSZWxBZGRGZW5jZUxvYWRBY3E4KGlu
dCBhbW91bnQsIEIzOjpPcGNvZGUgbG9hZE9wY29kZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIGludDhfdCBzbG90
ID0gMzc7CisgICAgQ29uc3RQdHJWYWx1ZSogc2xvdFB0ciA9IHJvb3QtPmFwcGVuZE5ldzxDb25z
dFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnNsb3QpOworICAgIFZhbHVlKiBsb2FkZWRWYWx1
ZSA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIGxvYWRPcGNv
ZGUsIE9yaWdpbigpLCBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKTsK
KyAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hw
b2ludFZhbHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7CisgICAgcGF0Y2hwb2ludC0+Y2xvYmJl
cihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgIHBhdGNocG9pbnQt
PnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hS
ZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgaml0LnN0b3JlOChD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigweGJlZWYpLCAmc2xvdCk7CisgICAgICAgIH0pOwor
ICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgcGF0Y2hwb2lu
dC0+ZWZmZWN0cy5mZW5jZSA9IHRydWU7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVl
PigKKyAgICAgICAgcHJvYywgU3RvcmU4LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgICAg
ICBsb2FkZWRWYWx1ZSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAg
ICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSkpLAorICAgICAgICBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFu
Z2UoNDIpKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2Ms
IFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9j
KTsKKyAgICBpZiAoaXNBUk02NCgpKSB7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpj
b2RlLCAibGRhIik7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAic3RsIik7
CisgICAgfQorICAgIGlmIChpc1g4NigpKQorICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigq
Y29kZSwgInhjaGciKTsKKyAgICBDSEVDSyghaW52b2tlPGludD4oKmNvZGUsIGFtb3VudCkpOwor
ICAgIENIRUNLKHNsb3QgPT0gMzcgKyBhbW91bnQpOworfQorCit2b2lkIHRlc3RTdG9yZUFkZExv
YWRJbW04KGludCBhbW91bnQsIEIzOjpPcGNvZGUgbG9hZE9wY29kZSkKK3sKKyAgICBQcm9jZWR1
cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIGlu
dDhfdCBzbG90ID0gMzc7CisgICAgQ29uc3RQdHJWYWx1ZSogc2xvdFB0ciA9IHJvb3QtPmFwcGVu
ZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnNsb3QpOworICAgIHJvb3QtPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIFN0b3JlOCwgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9y
aWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBs
b2FkT3Bjb2RlLCBPcmlnaW4oKSwgc2xvdFB0ciksCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KSksCisgICAgICAgIHNsb3RQ
dHIsIDApOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludD4ocHJv
YykpOworICAgIENIRUNLKHNsb3QgPT0gMzcgKyBhbW91bnQpOworfQorCit2b2lkIHRlc3RTdG9y
ZUFkZExvYWQxNihpbnQgYW1vdW50LCBCMzo6T3Bjb2RlIGxvYWRPcGNvZGUpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBpbnQxNl90IHNsb3QgPSAzNzsKKyAgICBDb25zdFB0clZhbHVlKiBzbG90UHRyID0gcm9vdC0+
YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmc2xvdCk7CisgICAgcm9v
dC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywgU3RvcmUxNiwgT3JpZ2lu
KCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBB
ZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihw
cm9jLCBsb2FkT3Bjb2RlLCBPcmlnaW4oKSwgc2xvdFB0ciksCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwK
KyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSwKKyAgICAgICAgc2xvdFB0ciwgMCk7
CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgMCkpOworCisgICAgQ0hFQ0soIWNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhbW91
bnQpKTsKKyAgICBDSEVDSyhzbG90ID09IDM3ICsgYW1vdW50KTsKK30KKwordm9pZCB0ZXN0U3Rv
cmVSZWxBZGRMb2FkQWNxMTYoaW50IGFtb3VudCwgQjM6Ok9wY29kZSBsb2FkT3Bjb2RlKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgaW50MTZfdCBzbG90ID0gMzc7CisgICAgQ29uc3RQdHJWYWx1ZSogc2xvdFB0ciA9
IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnNsb3QpOwor
ICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIFN0b3JlMTYs
IE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAg
cHJvYywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlW
YWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgbG9hZE9wY29kZSwgT3JpZ2luKCksIHNsb3RQ
dHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSg0MikpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCks
CisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSksCisgICAgICAgIHNsb3RQdHIsIDAs
IEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSg0MikpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIGF1dG8g
Y29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIGlmIChpc0FSTTY0KCkpIHsKKyAgICAgICAg
Y2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJsZGEiKTsKKyAgICAgICAgY2hlY2tVc2VzSW5z
dHJ1Y3Rpb24oKmNvZGUsICJzdGwiKTsKKyAgICB9CisgICAgaWYgKGlzWDg2KCkpCisgICAgICAg
IGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAieGNoZyIpOworICAgIENIRUNLKCFpbnZva2U8
aW50PigqY29kZSwgYW1vdW50KSk7CisgICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7Cit9
CisKK3ZvaWQgdGVzdFN0b3JlQWRkTG9hZEltbTE2KGludCBhbW91bnQsIEIzOjpPcGNvZGUgbG9h
ZE9wY29kZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworICAgIGludDE2X3Qgc2xvdCA9IDM3OworICAgIENvbnN0UHRyVmFs
dWUqIHNsb3RQdHIgPSByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksICZzbG90KTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICBw
cm9jLCBTdG9yZTE2LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIGxvYWRPcGNvZGUsIE9yaWdpbigpLCBzbG90UHRyKSwK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBhbW91bnQpKSwKKyAgICAgICAgc2xvdFB0ciwgMCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgQ0hF
Q0soIWNvbXBpbGVBbmRSdW48aW50Pihwcm9jKSk7CisgICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFt
b3VudCk7Cit9CisKK3ZvaWQgdGVzdFN0b3JlQWRkTG9hZDY0KGludCBhbW91bnQpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBpbnQ2NF90IHNsb3QgPSAzNzAwMDAwMDAwMGxsOworICAgIENvbnN0UHRyVmFsdWUqIHNs
b3RQdHIgPSByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZz
bG90KTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICBwcm9jLCBT
dG9yZSwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
ICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1l
bW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksIHNsb3RQdHIpLAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAgICAgc2xvdFB0ciwgMCk7CisgICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkp
OworCisgICAgQ0hFQ0soIWNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhbW91bnQpKTsKKyAgICBD
SEVDSyhzbG90ID09IDM3MDAwMDAwMDAwbGwgKyBhbW91bnQpOworfQorCit2b2lkIHRlc3RTdG9y
ZVJlbEFkZExvYWRBY3E2NChpbnQgYW1vdW50KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgaW50NjRfdCBzbG90ID0g
MzcwMDAwMDAwMDBsbDsKKyAgICBDb25zdFB0clZhbHVlKiBzbG90UHRyID0gcm9vdC0+YXBwZW5k
TmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmc2xvdCk7CisgICAgcm9vdC0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywgU3RvcmUsIE9yaWdpbigpLAorICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmln
aW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAg
ICAgICAgICAgcHJvYywgTG9hZCwgSW50NjQsIE9yaWdpbigpLCBzbG90UHRyLCAwLCBIZWFwUmFu
Z2UoNDIpLCBIZWFwUmFuZ2UoNDIpKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisg
ICAgICAgIHNsb3RQdHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSg0MikpOworICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IDApKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIGlmIChpc0FS
TTY0KCkpIHsKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJsZGEiKTsKKyAg
ICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJzdGwiKTsKKyAgICB9CisgICAgaWYg
KGlzWDg2KCkpCisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAieGNoZyIpOwor
ICAgIENIRUNLKCFpbnZva2U8aW50PigqY29kZSwgYW1vdW50KSk7CisgICAgQ0hFQ0soc2xvdCA9
PSAzNzAwMDAwMDAwMGxsICsgYW1vdW50KTsKK30KKwordm9pZCB0ZXN0U3RvcmVBZGRMb2FkSW1t
NjQoaW50NjRfdCBhbW91bnQpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBpbnQ2NF90IHNsb3QgPSAzNzAwMDAwMDAw
MDBsbDsKKyAgICBDb25zdFB0clZhbHVlKiBzbG90UHRyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0
UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmc2xvdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1l
bW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywgU3RvcmUsIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50NjQs
IE9yaWdpbigpLCBzbG90UHRyKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpKSwKKyAgICAgICAgc2xvdFB0ciwgMCk7Cisg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmln
aW4oKSwgMCkpOworCisgICAgQ0hFQ0soIWNvbXBpbGVBbmRSdW48aW50Pihwcm9jKSk7CisgICAg
Q0hFQ0soc2xvdCA9PSAzNzAwMDAwMDAwMDBsbCArIGFtb3VudCk7Cit9CisKK3ZvaWQgdGVzdFN0
b3JlQWRkTG9hZDMySW5kZXgoaW50IGFtb3VudCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIGludCBzbG90ID0gMzc7
CisgICAgaW50KiBwdHIgPSAmc2xvdDsKKyAgICBpbnRwdHJfdCB6ZXJvID0gMDsKKyAgICBWYWx1
ZSogc2xvdFB0ciA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIEFkZCwg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAg
ICAgICBwcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnB0cikpLAorICAg
ICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTG9h
ZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZ6ZXJvKSkpOworICAgIHJvb3QtPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIFN0b3JlLCBPcmlnaW4oKSwKKyAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2lu
KCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQs
IEludDMyLCBPcmlnaW4oKSwgc2xvdFB0ciksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSwKKyAgICAgICAgc2xvdFB0ciwgMCk7CisgICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
MCkpOworCisgICAgQ0hFQ0soIWNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhbW91bnQpKTsKKyAg
ICBDSEVDSyhzbG90ID09IDM3ICsgYW1vdW50KTsKK30KKwordm9pZCB0ZXN0U3RvcmVBZGRMb2Fk
SW1tMzJJbmRleChpbnQgYW1vdW50KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgaW50IHNsb3QgPSAzNzsKKyAgICBp
bnQqIHB0ciA9ICZzbG90OworICAgIGludHB0cl90IHplcm8gPSAwOworICAgIFZhbHVlKiBzbG90
UHRyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4o
KSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmcHRyKSksCisgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBMb2FkLCBwb2lu
dGVyVHlwZSgpLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0
clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnplcm8pKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1l
bW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywgU3RvcmUsIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIs
IE9yaWdpbigpLCBzbG90UHRyKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpKSwKKyAgICAgICAgc2xvdFB0ciwgMCk7Cisg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmln
aW4oKSwgMCkpOworCisgICAgQ0hFQ0soIWNvbXBpbGVBbmRSdW48aW50Pihwcm9jKSk7CisgICAg
Q0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7Cit9CisKK3ZvaWQgdGVzdFN0b3JlQWRkTG9hZDhJ
bmRleChpbnQgYW1vdW50LCBCMzo6T3Bjb2RlIGxvYWRPcGNvZGUpCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBpbnQ4
X3Qgc2xvdCA9IDM3OworICAgIGludDhfdCogcHRyID0gJnNsb3Q7CisgICAgaW50cHRyX3QgemVy
byA9IDA7CisgICAgVmFsdWUqIHNsb3RQdHIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCks
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksICZwdHIpKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAg
ICAgICAgIHByb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigpLAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmemVybykpKTsK
KyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICBwcm9jLCBTdG9yZTgs
IE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAg
cHJvYywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlW
YWx1ZT4ocHJvYywgbG9hZE9wY29kZSwgT3JpZ2luKCksIHNsb3RQdHIpLAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3Jp
Z2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSksCisgICAgICAgIHNsb3RQ
dHIpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIDApKTsKKworICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludD4ocHJvYywg
YW1vdW50KSk7CisgICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7Cit9CisKK3ZvaWQgdGVz
dFN0b3JlQWRkTG9hZEltbThJbmRleChpbnQgYW1vdW50LCBCMzo6T3Bjb2RlIGxvYWRPcGNvZGUp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICBpbnQ4X3Qgc2xvdCA9IDM3OworICAgIGludDhfdCogcHRyID0gJnNsb3Q7
CisgICAgaW50cHRyX3QgemVybyA9IDA7CisgICAgVmFsdWUqIHNsb3RQdHIgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTG9hZCwgcG9pbnRl
clR5cGUoKSwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksICZwdHIpKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1l
bW9yeVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIE9yaWdp
bigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCAmemVybykpKTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAg
ICAgICBwcm9jLCBTdG9yZTgsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgbG9hZE9wY29kZSwgT3JpZ2luKCksIHNsb3RQ
dHIpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIGFtb3VudCkpLAorICAgICAgICBzbG90UHRyKTsKKyAgICByb290LT5hcHBlbmROZXdD
b250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICBD
SEVDSyghY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpKTsKKyAgICBDSEVDSyhzbG90ID09IDM3ICsg
YW1vdW50KTsKK30KKwordm9pZCB0ZXN0U3RvcmVBZGRMb2FkMTZJbmRleChpbnQgYW1vdW50LCBC
Mzo6T3Bjb2RlIGxvYWRPcGNvZGUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBpbnQxNl90IHNsb3QgPSAzNzsKKyAg
ICBpbnQxNl90KiBwdHIgPSAmc2xvdDsKKyAgICBpbnRwdHJfdCB6ZXJvID0gMDsKKyAgICBWYWx1
ZSogc2xvdFB0ciA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIEFkZCwg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAg
ICAgICBwcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnB0cikpLAorICAg
ICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTG9h
ZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZ6ZXJvKSkpOworICAgIHJvb3QtPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIFN0b3JlMTYsIE9yaWdpbigpLAorICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmln
aW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgbG9h
ZE9wY29kZSwgT3JpZ2luKCksIHNsb3RQdHIpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSksCisgICAgICAgIHNsb3RQdHIpOworICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDAp
KTsKKworICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludD4ocHJvYywgYW1vdW50KSk7CisgICAg
Q0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7Cit9CisKK3ZvaWQgdGVzdFN0b3JlQWRkTG9hZElt
bTE2SW5kZXgoaW50IGFtb3VudCwgQjM6Ok9wY29kZSBsb2FkT3Bjb2RlKQoreworICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAg
aW50MTZfdCBzbG90ID0gMzc7CisgICAgaW50MTZfdCogcHRyID0gJnNsb3Q7CisgICAgaW50cHRy
X3QgemVybyA9IDA7CisgICAgVmFsdWUqIHNsb3RQdHIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3Jp
Z2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksICZwdHIpKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigK
KyAgICAgICAgICAgIHByb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigpLAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmemVy
bykpKTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICBwcm9jLCBT
dG9yZTE2LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAg
ICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KHByb2MsIGxvYWRPcGNvZGUsIE9yaWdpbigpLCBzbG90UHRyKSwKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91
bnQpKSwKKyAgICAgICAgc2xvdFB0cik7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgQ0hFQ0soIWNvbXBp
bGVBbmRSdW48aW50Pihwcm9jKSk7CisgICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7Cit9
CisKK3ZvaWQgdGVzdFN0b3JlQWRkTG9hZDY0SW5kZXgoaW50IGFtb3VudCkKK3sKKyAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
IGludDY0X3Qgc2xvdCA9IDM3MDAwMDAwMDAwbGw7CisgICAgaW50NjRfdCogcHRyID0gJnNsb3Q7
CisgICAgaW50cHRyX3QgemVybyA9IDA7CisgICAgVmFsdWUqIHNsb3RQdHIgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTG9hZCwgcG9pbnRl
clR5cGUoKSwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksICZwdHIpKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1l
bW9yeVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIE9yaWdp
bigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCAmemVybykpKTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAg
ICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksIHNsb3RQ
dHIpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAgICAgc2xvdFB0ciwgMCk7
CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgMCkpOworCisgICAgQ0hFQ0soIWNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhbW91
bnQpKTsKKyAgICBDSEVDSyhzbG90ID09IDM3MDAwMDAwMDAwbGwgKyBhbW91bnQpOworfQorCit2
b2lkIHRlc3RTdG9yZUFkZExvYWRJbW02NEluZGV4KGludDY0X3QgYW1vdW50KQoreworICAgIFBy
b2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgaW50NjRfdCBzbG90ID0gMzcwMDAwMDAwMDAwbGw7CisgICAgaW50NjRfdCogcHRyID0gJnNs
b3Q7CisgICAgaW50cHRyX3QgemVybyA9IDA7CisgICAgVmFsdWUqIHNsb3RQdHIgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICBy
b290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTG9hZCwgcG9p
bnRlclR5cGUoKSwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQ
dHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZwdHIpKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIE9y
aWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAmemVybykpKTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAor
ICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksIHNs
b3RQdHIpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIGFtb3VudCkpLAorICAgICAgICBzbG90UHRyLCAwKTsKKyAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisK
KyAgICBDSEVDSyghY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpKTsKKyAgICBDSEVDSyhzbG90ID09
IDM3MDAwMDAwMDAwMGxsICsgYW1vdW50KTsKK30KKwordm9pZCB0ZXN0U3RvcmVTdWJMb2FkKGlu
dCBhbW91bnQpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICBpbnQzMl90IHN0YXJ0VmFsdWUgPSBzdGQ6Om51bWVyaWNf
bGltaXRzPGludDMyX3Q+OjptaW4oKTsKKyAgICBpbnQzMl90IHNsb3QgPSBzdGFydFZhbHVlOwor
ICAgIENvbnN0UHRyVmFsdWUqIHNsb3RQdHIgPSByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1
ZT4ocHJvYywgT3JpZ2luKCksICZzbG90KTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFs
dWU+KAorICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTdWIsIE9yaWdpbigpLAorICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2lu
KCksIHNsb3RQdHIpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAg
ICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKSksCisgICAgICAgIHNsb3RQdHIsIDApOworICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIENI
RUNLKCFjb21waWxlQW5kUnVuPGludD4ocHJvYywgYW1vdW50KSk7CisgICAgQ0hFQ0soc2xvdCA9
PSBzdGFydFZhbHVlIC0gYW1vdW50KTsKK30KKwordm9pZCB0ZXN0U3RvcmVBZGRMb2FkSW50ZXJm
ZXJlbmNlKGludCBhbW91bnQpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBpbnQgc2xvdCA9IDM3OworICAgIENvbnN0
UHRyVmFsdWUqIHNsb3RQdHIgPSByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksICZzbG90KTsKKyAgICBBcmd1bWVudFJlZ1ZhbHVlKiBvdGhlclNsb3RQdHIgPQor
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgTWVtb3J5VmFsdWUqIGxvYWQgPSByb290LT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgc2xvdFB0
cik7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywgU3Rv
cmUsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgNjY2KSwKKyAgICAgICAgb3RoZXJTbG90UHRyLCAwKTsKKyAgICByb290LT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9y
aWdpbigpLAorICAgICAgICAgICAgbG9hZCwgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIGFtb3VudCkpLAorICAgICAgICBzbG90UHRyLCAwKTsKKyAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAw
KSk7CisKKyAgICBDSEVDSyghY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsICZzbG90KSk7CisgICAg
Q0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7Cit9CisKK3ZvaWQgdGVzdFN0b3JlQWRkQW5kTG9h
ZChpbnQgYW1vdW50LCBpbnQgbWFzaykKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIGludCBzbG90ID0gMzc7CisgICAg
Q29uc3RQdHJWYWx1ZSogc2xvdFB0ciA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgJnNsb3QpOworICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
CisgICAgICAgIHByb2MsIFN0b3JlLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJpdEFuZCwgT3JpZ2luKCksCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEFkZCwgT3Jp
Z2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9j
LCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksIHNsb3RQdHIpLAorICAgICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpKSwKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBtYXNr
KSksCisgICAgICAgIHNsb3RQdHIsIDApOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIENIRUNLKCFjb21w
aWxlQW5kUnVuPGludD4ocHJvYykpOworICAgIENIRUNLKHNsb3QgPT0gKCgzNyArIGFtb3VudCkg
JiBtYXNrKSk7Cit9CisKK3ZvaWQgdGVzdFN0b3JlTmVnTG9hZDMyKGludDMyX3QgdmFsdWUpCit7
CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKworICAgIGludDMyX3Qgc2xvdCA9IHZhbHVlOworCisgICAgQ29uc3RQdHJWYWx1ZSog
c2xvdFB0ciA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
JnNsb3QpOworCisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJv
YywgU3RvcmUsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgcHJvYywgU3ViLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSwKKyAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBzbG90UHRy
KSksCisgICAgICAgIHNsb3RQdHIsIDApOworCisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgQ0hFQ0soIWNvbXBpbGVBbmRS
dW48aW50MzJfdD4ocHJvYykpOworICAgIENIRUNLKHNsb3QgPT0gLXZhbHVlKTsKK30KKwordm9p
ZCB0ZXN0U3RvcmVOZWdMb2FkUHRyKGludHB0cl90IHZhbHVlKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBpbnRw
dHJfdCBzbG90ID0gdmFsdWU7CisKKyAgICBDb25zdFB0clZhbHVlKiBzbG90UHRyID0gcm9vdC0+
YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmc2xvdCk7CisKKyAgICBy
b290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2lu
KCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBT
dWIsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCAwKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlW
YWx1ZT4ocHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCksIHNsb3RQdHIpKSwKKyAg
ICAgICAgc2xvdFB0ciwgMCk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisg
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICBDSEVDSyghY29tcGlsZUFuZFJ1bjxpbnQz
Ml90Pihwcm9jKSk7CisgICAgQ0hFQ0soc2xvdCA9PSAtdmFsdWUpOworfQorCit2b2lkIHRlc3RB
ZGQxVW5jb21tdXRlZChpbnQgdmFsdWUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEp
LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBw
cm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSkp
OworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIHZhbHVlKSA9PSB2YWx1ZSAr
IDEpOworfQorCit2b2lkIHRlc3RMb2FkT2Zmc2V0KCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIGludCBhcnJheVtd
ID0geyAxLCAyIH07CisgICAgQ29uc3RQdHJWYWx1ZSogYXJyYXlQdHIgPSByb290LT5hcHBlbmRO
ZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFycmF5KTsKKyAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdp
bigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2Fk
LCBJbnQzMiwgT3JpZ2luKCksIGFycmF5UHRyLCAwKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBhcnJheVB0ciwg
c3RhdGljX2Nhc3Q8aW50MzJfdD4oc2l6ZW9mKGludCkpKSkpOworCisgICAgQ0hFQ0soY29tcGls
ZUFuZFJ1bjxpbnQ+KHByb2MpID09IGFycmF5WzBdICsgYXJyYXlbMV0pOworfQorCit2b2lkIHRl
c3RMb2FkT2Zmc2V0Tm90Q29uc3RhbnQoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgaW50IGFycmF5W10gPSB7IDEs
IDIgfTsKKyAgICBWYWx1ZSogYXJyYXlQdHIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywg
TG9hZCwgSW50MzIsIE9yaWdpbigpLCBhcnJheVB0ciwgMCksCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgYXJyYXlQ
dHIsIHN0YXRpY19jYXN0PGludDMyX3Q+KHNpemVvZihpbnQpKSkpKTsKKworICAgIENIRUNLKGNv
bXBpbGVBbmRSdW48aW50Pihwcm9jLCAmYXJyYXlbMF0pID09IGFycmF5WzBdICsgYXJyYXlbMV0p
OworfQorCit2b2lkIHRlc3RMb2FkT2Zmc2V0VXNpbmdBZGQoKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgaW50IGFy
cmF5W10gPSB7IDEsIDIgfTsKKyAgICBDb25zdFB0clZhbHVlKiBhcnJheVB0ciA9IHJvb3QtPmFw
cGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYXJyYXkpOworICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwg
T3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAg
ICAgICAgICAgICAgIHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBBZGQs
IE9yaWdpbigpLCBhcnJheVB0ciwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSkpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBMb2FkLCBJbnQz
MiwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwgYXJyYXlQdHIsCisgICAgICAg
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgc3RhdGljX2Nhc3Q8aW50MzJfdD4oc2l6ZW9mKGludCkpKSkpKSk7CisKKyAgICBDSEVDSyhj
b21waWxlQW5kUnVuPGludD4ocHJvYykgPT0gYXJyYXlbMF0gKyBhcnJheVsxXSk7Cit9CisKK3Zv
aWQgdGVzdExvYWRPZmZzZXRVc2luZ0FkZEludGVyZmVyZW5jZSgpCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBpbnQg
YXJyYXlbXSA9IHsgMSwgMiB9OworICAgIENvbnN0UHRyVmFsdWUqIGFycmF5UHRyID0gcm9vdC0+
YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhcnJheSk7CisgICAgQXJn
dW1lbnRSZWdWYWx1ZSogb3RoZXJBcnJheVB0ciA9CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
KyAgICBDb25zdDMyVmFsdWUqIHRoZU51bWJlck9mVGhlQmVhc3QgPSByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNjY2KTsKKyAgICBNZW1vcnlWYWx1ZSogbGVm
dCA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIExvYWQsIElu
dDMyLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAg
ICAgIHByb2MsIEFkZCwgT3JpZ2luKCksIGFycmF5UHRyLAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSkpOworICAgIE1lbW9yeVZh
bHVlKiByaWdodCA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2Ms
IExvYWQsIEludDMyLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksIGFycmF5UHRyLAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBzdGF0aWNfY2Fz
dDxpbnQzMl90PihzaXplb2YoaW50KSkpKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZh
bHVlPigKKyAgICAgICAgcHJvYywgU3RvcmUsIE9yaWdpbigpLCB0aGVOdW1iZXJPZlRoZUJlYXN0
LCBvdGhlckFycmF5UHRyLCAwKTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAor
ICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHRoZU51bWJlck9mVGhlQmVhc3QsIG90aGVy
QXJyYXlQdHIsIHN0YXRpY19jYXN0PGludDMyX3Q+KHNpemVvZihpbnQpKSk7CisgICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBP
cmlnaW4oKSwgbGVmdCwgcmlnaHQpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihw
cm9jLCAmYXJyYXlbMF0pID09IDEgKyAyKTsKKyAgICBDSEVDSyhhcnJheVswXSA9PSA2NjYpOwor
ICAgIENIRUNLKGFycmF5WzFdID09IDY2Nik7Cit9CisKK3ZvaWQgdGVzdExvYWRPZmZzZXRVc2lu
Z0FkZE5vdENvbnN0YW50KCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIGludCBhcnJheVtdID0geyAxLCAyIH07Cisg
ICAgVmFsdWUqIGFycmF5UHRyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCks
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAg
ICAgIHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigp
LCBhcnJheVB0ciwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSkpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2lu
KCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
ICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwgYXJyYXlQdHIsCisgICAgICAgICAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oc2l6ZW9mKGludCkpKSkpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5k
UnVuPGludD4ocHJvYywgJmFycmF5WzBdKSA9PSBhcnJheVswXSArIGFycmF5WzFdKTsKK30KKwor
dm9pZCB0ZXN0TG9hZEFkZHJTaGlmdCh1bnNpZ25lZCBzaGlmdCkKK3sKKyAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIGludCBz
bG90c1syXTsKKworICAgIC8vIEZpZ3VyZSBvdXQgd2hpY2ggc2xvdCB0byB1c2Ugd2hpbGUgaGF2
aW5nIHByb3BlciBhbGlnbm1lbnQgZm9yIHRoZSBzaGlmdC4KKyAgICBpbnQqIHNsb3Q7CisgICAg
dWludHB0cl90IGFyZzsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBzaXplb2Yoc2xvdHMpL3NpemVv
ZihzbG90c1swXSk7IGktLTspIHsKKyAgICAgICAgc2xvdCA9IHNsb3RzICsgaTsKKyAgICAgICAg
YXJnID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oc2xvdCkgPj4gc2hpZnQ7CisgICAgICAgIGlm
IChiaXR3aXNlX2Nhc3Q8aW50Kj4oYXJnIDw8IHNoaWZ0KSA9PSBzbG90KQorICAgICAgICAgICAg
YnJlYWs7CisgICAgfQorCisgICAgKnNsb3QgPSA4Njc1MzA5OworCisgICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAg
ICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTG9hZCwg
SW50MzIsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgc2hpZnQpKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxp
bnQ+KHByb2MsIGFyZykgPT0gODY3NTMwOSk7Cit9CisKK3ZvaWQgdGVzdEZyYW1lUG9pbnRlcigp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2Ms
IFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
RnJhbWVQb2ludGVyLCBPcmlnaW4oKSkpOworCisgICAgdm9pZCogZnAgPSBjb21waWxlQW5kUnVu
PHZvaWQqPihwcm9jKTsKKyAgICBDSEVDSyhmcCA8ICZwcm9jKTsKKyAgICBDSEVDSyhmcCA+PSBi
aXR3aXNlX2Nhc3Q8Y2hhcio+KCZwcm9jKSAtIDEwMDAwKTsKK30KKwordm9pZCB0ZXN0T3ZlcnJp
ZGVGcmFtZVBvaW50ZXIoKQoreworICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgLy8gQWRk
IGEgc3RhY2sgc2xvdCB0byBtYWtlIHRoZSBmcmFtZSBub24gdHJpdmlhbC4KKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFNsb3RCYXNlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBwcm9jLmFkZFN0YWNr
U2xvdCg4KSk7CisKKyAgICAgICAgLy8gU3ViIG9uIHg4NiBVc2VEZWYgdGhlIHNvdXJjZS4gSWYg
RlAgaXMgbm90IHByb3RlY3RlZCBjb3JyZWN0bHksIGl0IHdpbGwgYmUgb3ZlcnJpZGRlbiBzaW5j
ZSBpdCBpcyB0aGUgbGFzdCB2aXNpYmxlIHVzZS4KKyAgICAgICAgVmFsdWUqIG9mZnNldCA9IHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIGZwID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBGcmFtZVBvaW50ZXIsIE9yaWdpbigpKTsKKyAgICAgICAgVmFsdWUqIHJlc3VsdCA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgZnAsIG9mZnNldCk7
CisKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIHJlc3VsdCk7CisgICAgICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJv
YywgMSkpOworICAgIH0KKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxTbG90QmFzZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgcHJvYy5hZGRTdGFja1Nsb3QoOCkp
OworCisgICAgICAgIFZhbHVlKiBvZmZzZXQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZh
bHVlKiBmcCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRnJhbWVQb2ludGVyLCBPcmln
aW4oKSk7CisgICAgICAgIFZhbHVlKiBvZmZzZXRGUCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgQml0QW5kLCBPcmlnaW4oKSwgb2Zmc2V0LCBmcCk7CisgICAgICAgIFZhbHVlKiBhcmcg
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIFZhbHVlKiBvZmZzZXRBcmcgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIG9mZnNldCwgYXJnKTsKKyAgICAgICAg
VmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4o
KSwgb2Zmc2V0QXJnLCBvZmZzZXRGUCk7CisKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgICAgIENIRUNLKGNv
bXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgMSwgMikpOworICAgIH0KK30KKwordm9pZCB0ZXN0
U3RhY2tTbG90KCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAg
ICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFNs
b3RCYXNlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBwcm9jLmFkZFN0YWNrU2xvdCgxKSkpOworCisg
ICAgdm9pZCogc3RhY2tTbG90ID0gY29tcGlsZUFuZFJ1bjx2b2lkKj4ocHJvYyk7CisgICAgQ0hF
Q0soc3RhY2tTbG90IDwgJnByb2MpOworICAgIENIRUNLKHN0YWNrU2xvdCA+PSBiaXR3aXNlX2Nh
c3Q8Y2hhcio+KCZwcm9jKSAtIDEwMDAwKTsKK30KKwordm9pZCB0ZXN0TG9hZEZyb21GcmFtZVBv
aW50ZXIoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCks
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZyYW1lUG9pbnRlciwg
T3JpZ2luKCkpKSk7CisKKyAgICB2b2lkKiBmcCA9IGNvbXBpbGVBbmRSdW48dm9pZCo+KHByb2Mp
OworICAgIHZvaWQqIG15RlAgPSBfX2J1aWx0aW5fZnJhbWVfYWRkcmVzcygwKTsKKyAgICBDSEVD
SyhmcCA8PSBteUZQKTsKKyAgICBDSEVDSyhmcCA+PSBiaXR3aXNlX2Nhc3Q8Y2hhcio+KG15RlAp
IC0gMTAwMDApOworfQorCit2b2lkIHRlc3RTdG9yZUxvYWRTdGFja1Nsb3QoaW50IHZhbHVlKQor
eworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisKKyAgICBTbG90QmFzZVZhbHVlKiBzdGFjayA9CisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxTbG90QmFzZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgcHJvYy5hZGRTdGFja1Nsb3Qoc2l6
ZW9mKGludCkpKTsKKworICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAg
IHByb2MsIFN0b3JlLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSksCisgICAgICAgIHN0YWNrLCAwKTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksIHN0YWNr
KSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgdmFsdWUpID09IHZhbHVl
KTsKK30KKwordm9pZCB0ZXN0U3RvcmVGbG9hdChkb3VibGUgaW5wdXQpCit7CisgICAgLy8gU2lt
cGxlIHN0b3JlIGZyb20gYW4gYWRkcmVzcyBpbiBhIHJlZ2lzdGVyLgorICAgIHsKKyAgICAgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICAgICAg
VmFsdWUqIGFyZ3VtZW50QXNGbG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91
YmxlVG9GbG9hdCwgT3JpZ2luKCksIGFyZ3VtZW50KTsKKworICAgICAgICBWYWx1ZSogZGVzdGlu
YXRpb25BZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlLCBPcmlnaW4oKSwgYXJndW1lbnRBc0Zsb2F0LCBkZXN0
aW5hdGlvbkFkZHJlc3MpOworCisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgMCkpOworCisgICAgICAgIGZsb2F0IG91dHB1dCA9IDAuOworICAgICAgICBD
SEVDSyghY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBpbnB1dCwgJm91dHB1dCkpOworICAg
ICAgICBDSEVDSyhpc0lkZW50aWNhbChzdGF0aWNfY2FzdDxmbG9hdD4oaW5wdXQpLCBvdXRwdXQp
KTsKKyAgICB9CisKKyAgICAvLyBTaW1wbGUgaW5kZXhlZCBzdG9yZS4KKyAgICB7CisgICAgICAg
IFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworICAgICAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgICAg
IFZhbHVlKiBhcmd1bWVudEFzRmxvYXQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERv
dWJsZVRvRmxvYXQsIE9yaWdpbigpLCBhcmd1bWVudCk7CisKKyAgICAgICAgVmFsdWUqIGRlc3Rp
bmF0aW9uQmFzZUFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBpbmRl
eCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgVmFsdWUqIHNjYWxlZEluZGV4ID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFNobCwgT3JpZ2luKCksCisgICAg
ICAgICAgICBpbmRleCwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCAyKSk7CisgICAgICAgIFZhbHVlKiBkZXN0aW5hdGlvbkFkZHJlc3Mg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIHNjYWxlZEluZGV4
LCBkZXN0aW5hdGlvbkJhc2VBZGRyZXNzKTsKKworICAgICAgICByb290LT5hcHBlbmROZXc8TWVt
b3J5VmFsdWU+KHByb2MsIFN0b3JlLCBPcmlnaW4oKSwgYXJndW1lbnRBc0Zsb2F0LCBkZXN0aW5h
dGlvbkFkZHJlc3MpOworCisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgMCkpOworCisgICAgICAgIGZsb2F0IG91dHB1dCA9IDAuOworICAgICAgICBDSEVD
SyghY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBpbnB1dCwgJm91dHB1dCAtIDEsIDEpKTsK
KyAgICAgICAgQ0hFQ0soaXNJZGVudGljYWwoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGlucHV0KSwgb3V0
cHV0KSk7CisgICAgfQorfQorCit2b2lkIHRlc3RTdG9yZURvdWJsZUNvbnN0YW50QXNGbG9hdChk
b3VibGUgaW5wdXQpCit7CisgICAgLy8gU2ltcGxlIHN0b3JlIGZyb20gYW4gYWRkcmVzcyBpbiBh
IHJlZ2lzdGVyLgorICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0
RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBpbnB1dCk7CisgICAgVmFsdWUqIHZhbHVlQXNG
bG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2lu
KCksIHZhbHVlKTsKKworICAgIFZhbHVlKiBkZXN0aW5hdGlvbkFkZHJlc3MgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7CisKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlLCBP
cmlnaW4oKSwgdmFsdWVBc0Zsb2F0LCBkZXN0aW5hdGlvbkFkZHJlc3MpOworCisgICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJvb3QtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICBmbG9hdCBvdXRw
dXQgPSAwLjsKKyAgICBDSEVDSyghY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBpbnB1dCwg
Jm91dHB1dCkpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKHN0YXRpY19jYXN0PGZsb2F0PihpbnB1
dCksIG91dHB1dCkpOworfQorCit2b2lkIHRlc3RTcGlsbEdQKCkKK3sKKyAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgVmVj
dG9yPFZhbHVlKj4gc291cmNlczsKKyAgICBzb3VyY2VzLmFwcGVuZChyb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkp
OworICAgIHNvdXJjZXMuYXBwZW5kKHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgMzA7ICsraSkgeworICAgICAgICBzb3VyY2VzLmFwcGVuZCgKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgc291cmNl
c1tzb3VyY2VzLnNpemUoKSAtIDFdLCBzb3VyY2VzW3NvdXJjZXMuc2l6ZSgpIC0gMl0pCisgICAg
ICAgICk7CisgICAgfQorCisgICAgVmFsdWUqIHRvdGFsID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0
NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApOworICAgIGZvciAoVmFsdWUqIHZhbHVlIDogc291
cmNlcykKKyAgICAgICAgdG90YWwgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwg
T3JpZ2luKCksIHRvdGFsLCB2YWx1ZSk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgdG90YWwpOworICAgIGNvbXBpbGVBbmRSdW48aW50
Pihwcm9jLCAxLCAyKTsKK30KKwordm9pZCB0ZXN0U3BpbGxGUCgpCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZl
Y3RvcjxWYWx1ZSo+IHNvdXJjZXM7CisgICAgc291cmNlcy5hcHBlbmQocm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjAp
KTsKKyAgICBzb3VyY2VzLmFwcGVuZChyb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMSkpOworCisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IDMwOyArK2kpIHsKKyAgICAgICAgc291cmNlcy5hcHBlbmQoCisgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIHNvdXJj
ZXNbc291cmNlcy5zaXplKCkgLSAxXSwgc291cmNlc1tzb3VyY2VzLnNpemUoKSAtIDJdKQorICAg
ICAgICApOworICAgIH0KKworICAgIFZhbHVlKiB0b3RhbCA9IHJvb3QtPmFwcGVuZE5ldzxDb25z
dERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMC4pOworICAgIGZvciAoVmFsdWUqIHZhbHVl
IDogc291cmNlcykKKyAgICAgICAgdG90YWwgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEFkZCwgT3JpZ2luKCksIHRvdGFsLCB2YWx1ZSk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgdG90YWwpOworICAgIGNvbXBpbGVBbmRS
dW48ZG91YmxlPihwcm9jLCAxLjEsIDIuNSk7Cit9CisKK3ZvaWQgdGVzdEludDMyVG9Eb3VibGVQ
YXJ0aWFsUmVnaXN0ZXJTdGFsbCgpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBsb29wID0gcHJv
Yy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIGRvbmUgPSBwcm9jLmFkZEJsb2NrKCk7CisK
KyAgICAvLyBIZWFkLgorICAgIFZhbHVlKiB0b3RhbCA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERv
dWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMC4pOworICAgIFZhbHVlKiBjb3VudGVyID0gcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOworICAgIFVwc2lsb25WYWx1ZSogb3JpZ2luYWxUb3RhbCA9IHJvb3QtPmFw
cGVuZE5ldzxVcHNpbG9uVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0b3RhbCk7CisgICAgVXBzaWxv
blZhbHVlKiBvcmlnaW5hbENvdW50ZXIgPSByb290LT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgY291bnRlcik7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KHByb2MsIEp1bXAsIE9yaWdpbigpLCBGcmVxdWVudGVkQmxvY2sobG9vcCkpOworCisgICAgLy8g
TG9vcC4KKyAgICBWYWx1ZSogbG9vcENvdW50ZXIgPSBsb29wLT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFBoaSwgSW50NjQsIE9yaWdpbigpKTsKKyAgICBWYWx1ZSogbG9vcFRvdGFsID0gbG9vcC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBQaGksIERvdWJsZSwgT3JpZ2luKCkpOworICAgIG9yaWdp
bmFsQ291bnRlci0+c2V0UGhpKGxvb3BDb3VudGVyKTsKKyAgICBvcmlnaW5hbFRvdGFsLT5zZXRQ
aGkobG9vcFRvdGFsKTsKKworICAgIFZhbHVlKiB0cnVuY2F0ZWRDb3VudGVyID0gbG9vcC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksIGxvb3BDb3VudGVyKTsKKyAgICBW
YWx1ZSogZG91YmxlQ291bnRlciA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSVRvRCwg
T3JpZ2luKCksIHRydW5jYXRlZENvdW50ZXIpOworICAgIFZhbHVlKiB1cGRhdGVkVG90YWwgPSBs
b29wLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGRvdWJsZUNvdW50ZXIs
IGxvb3BUb3RhbCk7CisgICAgVXBzaWxvblZhbHVlKiB1cGRhdGVkVG90YWxVcHNpbG9uID0gbG9v
cC0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4ocHJvYywgT3JpZ2luKCksIHVwZGF0ZWRUb3RhbCk7
CisgICAgdXBkYXRlZFRvdGFsVXBzaWxvbi0+c2V0UGhpKGxvb3BUb3RhbCk7CisKKyAgICBWYWx1
ZSogZGVjQ291bnRlciA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4o
KSwgbG9vcENvdW50ZXIsIGxvb3AtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdp
bigpLCAxKSk7CisgICAgVXBzaWxvblZhbHVlKiBkZWNDb3VudGVyVXBzaWxvbiA9IGxvb3AtPmFw
cGVuZE5ldzxVcHNpbG9uVmFsdWU+KHByb2MsIE9yaWdpbigpLCBkZWNDb3VudGVyKTsKKyAgICBk
ZWNDb3VudGVyVXBzaWxvbi0+c2V0UGhpKGxvb3BDb3VudGVyKTsKKyAgICBsb29wLT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAg
IGRlY0NvdW50ZXIsCisgICAgICAgIEZyZXF1ZW50ZWRCbG9jayhsb29wKSwgRnJlcXVlbnRlZEJs
b2NrKGRvbmUpKTsKKworICAgIC8vIFRhaWwuCisgICAgZG9uZS0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHVwZGF0ZWRUb3RhbCk7CisgICAgQ0hFQ0soaXNJ
ZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIDEwMDAwMCksIDUwMDAwNTAwMDAu
KSk7Cit9CisKK3ZvaWQgdGVzdEludDMyVG9Eb3VibGVQYXJ0aWFsUmVnaXN0ZXJXaXRob3V0U3Rh
bGwoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogbG9vcCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBCYXNpY0Jsb2NrKiBkb25lID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgLy8gSGVhZC4KKyAg
ICBWYWx1ZSogdG90YWwgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIDAuKTsKKyAgICBWYWx1ZSogY291bnRlciA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAg
ICBVcHNpbG9uVmFsdWUqIG9yaWdpbmFsVG90YWwgPSByb290LT5hcHBlbmROZXc8VXBzaWxvblZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgdG90YWwpOworICAgIFVwc2lsb25WYWx1ZSogb3JpZ2luYWxD
b3VudGVyID0gcm9vdC0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4ocHJvYywgT3JpZ2luKCksIGNv
dW50ZXIpOworICAgIHVpbnQ2NF90IGZvclBhZGRpbmdJbnB1dDsKKyAgICBWYWx1ZSogZm9yUGFk
ZGluZ0lucHV0QWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgJmZvclBhZGRpbmdJbnB1dCk7CisgICAgdWludDY0X3QgZm9yUGFkZGluZ091dHB1
dDsKKyAgICBWYWx1ZSogZm9yUGFkZGluZ091dHB1dEFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZmb3JQYWRkaW5nT3V0cHV0KTsKKyAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgSnVtcCwgT3JpZ2luKCksIEZyZXF1ZW50
ZWRCbG9jayhsb29wKSk7CisKKyAgICAvLyBMb29wLgorICAgIFZhbHVlKiBsb29wQ291bnRlciA9
IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUGhpLCBJbnQ2NCwgT3JpZ2luKCkpOworICAg
IFZhbHVlKiBsb29wVG90YWwgPSBsb29wLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFBoaSwgRG91
YmxlLCBPcmlnaW4oKSk7CisgICAgb3JpZ2luYWxDb3VudGVyLT5zZXRQaGkobG9vcENvdW50ZXIp
OworICAgIG9yaWdpbmFsVG90YWwtPnNldFBoaShsb29wVG90YWwpOworCisgICAgVmFsdWUqIHRy
dW5jYXRlZENvdW50ZXIgPSBsb29wLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmln
aW4oKSwgbG9vcENvdW50ZXIpOworICAgIFZhbHVlKiBkb3VibGVDb3VudGVyID0gbG9vcC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBJVG9ELCBPcmlnaW4oKSwgdHJ1bmNhdGVkQ291bnRlcik7Cisg
ICAgVmFsdWUqIHVwZGF0ZWRUb3RhbCA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRk
LCBPcmlnaW4oKSwgZG91YmxlQ291bnRlciwgbG9vcFRvdGFsKTsKKworICAgIC8vIEFkZCBlbm91
Z2ggcGFkZGluZyBpbnN0cnVjdGlvbnMgdG8gYXZvaWQgYSBzdGFsbC4KKyAgICBWYWx1ZSogbG9h
ZFBhZGRpbmcgPSBsb29wLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDY0
LCBPcmlnaW4oKSwgZm9yUGFkZGluZ0lucHV0QWRkcmVzcyk7CisgICAgVmFsdWUqIHBhZGRpbmcg
PSBsb29wLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdFhvciwgT3JpZ2luKCksIGxvYWRQYWRk
aW5nLCBsb29wQ291bnRlcik7CisgICAgcGFkZGluZyA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgQWRkLCBPcmlnaW4oKSwgcGFkZGluZywgbG9vcENvdW50ZXIpOworICAgIHBhZGRpbmcg
PSBsb29wLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdE9yLCBPcmlnaW4oKSwgcGFkZGluZywg
bG9vcENvdW50ZXIpOworICAgIHBhZGRpbmcgPSBsb29wLT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFN1YiwgT3JpZ2luKCksIHBhZGRpbmcsIGxvb3BDb3VudGVyKTsKKyAgICBwYWRkaW5nID0gbG9v
cC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLCBwYWRkaW5nLCBsb29w
Q291bnRlcik7CisgICAgcGFkZGluZyA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRk
LCBPcmlnaW4oKSwgcGFkZGluZywgbG9vcENvdW50ZXIpOworICAgIHBhZGRpbmcgPSBsb29wLT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdE9yLCBPcmlnaW4oKSwgcGFkZGluZywgbG9vcENvdW50
ZXIpOworICAgIHBhZGRpbmcgPSBsb29wLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3Jp
Z2luKCksIHBhZGRpbmcsIGxvb3BDb3VudGVyKTsKKyAgICBwYWRkaW5nID0gbG9vcC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLCBwYWRkaW5nLCBsb29wQ291bnRlcik7
CisgICAgcGFkZGluZyA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4o
KSwgcGFkZGluZywgbG9vcENvdW50ZXIpOworICAgIHBhZGRpbmcgPSBsb29wLT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEJpdE9yLCBPcmlnaW4oKSwgcGFkZGluZywgbG9vcENvdW50ZXIpOworICAg
IHBhZGRpbmcgPSBsb29wLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIHBh
ZGRpbmcsIGxvb3BDb3VudGVyKTsKKyAgICBsb29wLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHBy
b2MsIFN0b3JlLCBPcmlnaW4oKSwgcGFkZGluZywgZm9yUGFkZGluZ091dHB1dEFkZHJlc3MpOwor
CisgICAgVXBzaWxvblZhbHVlKiB1cGRhdGVkVG90YWxVcHNpbG9uID0gbG9vcC0+YXBwZW5kTmV3
PFVwc2lsb25WYWx1ZT4ocHJvYywgT3JpZ2luKCksIHVwZGF0ZWRUb3RhbCk7CisgICAgdXBkYXRl
ZFRvdGFsVXBzaWxvbi0+c2V0UGhpKGxvb3BUb3RhbCk7CisKKyAgICBWYWx1ZSogZGVjQ291bnRl
ciA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgbG9vcENvdW50
ZXIsIGxvb3AtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7Cisg
ICAgVXBzaWxvblZhbHVlKiBkZWNDb3VudGVyVXBzaWxvbiA9IGxvb3AtPmFwcGVuZE5ldzxVcHNp
bG9uVmFsdWU+KHByb2MsIE9yaWdpbigpLCBkZWNDb3VudGVyKTsKKyAgICBkZWNDb3VudGVyVXBz
aWxvbi0+c2V0UGhpKGxvb3BDb3VudGVyKTsKKyAgICBsb29wLT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCisgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgIGRlY0NvdW50ZXIs
CisgICAgICAgIEZyZXF1ZW50ZWRCbG9jayhsb29wKSwgRnJlcXVlbnRlZEJsb2NrKGRvbmUpKTsK
KworICAgIC8vIFRhaWwuCisgICAgZG9uZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJl
dHVybiwgT3JpZ2luKCksIHVwZGF0ZWRUb3RhbCk7CisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29t
cGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIDEwMDAwMCksIDUwMDAwNTAwMDAuKSk7Cit9CisKK3Zv
aWQgdGVzdEJyYW5jaCgpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsK
KworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgQnJhbmNo
LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
IHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisg
ICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2Fz
ZSkpOworCisgICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDMy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7CisKKyAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICBlbHNl
Q2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAg
IGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIENIRUNLKGludm9rZTxpbnQ+KCpj
b2RlLCA0MikgPT0gMSk7CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsIDApID09IDApOwor
fQorCit2b2lkIHRlc3RCcmFuY2hQdHIoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogdGhlbkNh
c2UgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFk
ZEJsb2NrKCk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHBy
b2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAg
RnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNlKSk7CisK
KyAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAorICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIDEpKTsKKworICAgIGVsc2VDYXNlLT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIGVsc2VDYXNlLT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgYXV0byBj
b2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsIHN0
YXRpY19jYXN0PGludHB0cl90Pig0MikpID09IDEpOworICAgIENIRUNLKGludm9rZTxpbnQ+KCpj
b2RlLCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMCkpID09IDApOworfQorCit2b2lkIHRlc3REaWFt
b25kKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygp
OworICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2lj
QmxvY2sqIGRvbmUgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCisgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhl
bkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKKworICAgIFVwc2lsb25WYWx1ZSog
dGhlblJlc3VsdCA9IHRoZW5DYXNlLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPigKKyAgICAgICAg
cHJvYywgT3JpZ2luKCksIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgMSkpOworICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywg
SnVtcCwgT3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayhkb25lKSk7CisKKyAgICBVcHNpbG9uVmFs
dWUqIGVsc2VSZXN1bHQgPSBlbHNlQ2FzZS0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4oCisgICAg
ICAgIHByb2MsIE9yaWdpbigpLCBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIDApKTsKKyAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHBy
b2MsIEp1bXAsIE9yaWdpbigpLCBGcmVxdWVudGVkQmxvY2soZG9uZSkpOworCisgICAgVmFsdWUq
IHBoaSA9IGRvbmUtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUGhpLCBJbnQzMiwgT3JpZ2luKCkp
OworICAgIHRoZW5SZXN1bHQtPnNldFBoaShwaGkpOworICAgIGVsc2VSZXN1bHQtPnNldFBoaShw
aGkpOworICAgIGRvbmUtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCBwaGkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgQ0hF
Q0soaW52b2tlPGludD4oKmNvZGUsIDQyKSA9PSAxKTsKKyAgICBDSEVDSyhpbnZva2U8aW50Pigq
Y29kZSwgMCkgPT0gMCk7Cit9CisKK3ZvaWQgdGVzdEJyYW5jaE5vdEVxdWFsKCkKK3sKKyAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxv
Y2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTm90RXF1YWwsIE9yaWdpbigp
LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBw
cm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCAwKSksCisgICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9j
ayhlbHNlQ2FzZSkpOworCisgICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAg
ICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5l
dzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7CisKKyAgICBlbHNlQ2FzZS0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAg
ICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDAp
KTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIENIRUNLKGludm9r
ZTxpbnQ+KCpjb2RlLCA0MikgPT0gMSk7CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsIDAp
ID09IDApOworfQorCit2b2lkIHRlc3RCcmFuY2hOb3RFcXVhbENvbW11dGUoKQoreworICAgIFBy
b2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgQmFzaWNCbG9jayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9j
ayogZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCisgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBOb3RFcXVhbCwgT3JpZ2luKCks
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgMCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAg
ICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpKSwKKyAgICAgICAgRnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2Nr
KGVsc2VDYXNlKSk7CisKKyAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAg
ICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKTsKKworICAgIGVsc2VDYXNlLT5hcHBl
bmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAg
ICAgIGVsc2VDYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkp
OworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgQ0hFQ0soaW52b2tl
PGludD4oKmNvZGUsIDQyKSA9PSAxKTsKKyAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgMCkg
PT0gMCk7Cit9CisKK3ZvaWQgdGVzdEJyYW5jaE5vdEVxdWFsTm90RXF1YWwoKQoreworICAgIFBy
b2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgQmFzaWNCbG9jayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9j
ayogZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCisgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBOb3RFcXVhbCwgT3JpZ2luKCks
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHBy
b2MsIE5vdEVxdWFsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAg
ICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKSwKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSksCisgICAg
ICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkp
OworCisgICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCAxKSk7CisKKyAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICBlbHNlQ2Fz
ZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIGF1
dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2Rl
LCA0MikgPT0gMSk7CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsIDApID09IDApOworfQor
Cit2b2lkIHRlc3RCcmFuY2hFcXVhbCgpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2Fz
ZSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRk
QmxvY2soKTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJv
YywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAg
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpLAorICAgICAgICBGcmVxdWVudGVk
QmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKKworICAgIHRoZW5D
YXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksCisgICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmln
aW4oKSwgMCkpOworCisgICAgZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21w
aWxlUHJvYyhwcm9jKTsKKyAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgNDIpID09IDEpOwor
ICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAwKSA9PSAwKTsKK30KKwordm9pZCB0ZXN0QnJh
bmNoRXF1YWxFcXVhbCgpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsK
KworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgQnJhbmNo
LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
IHByb2MsIEVxdWFsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAorICAgICAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgIHByb2MsIFRy
dW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgMCkpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIDApKSwKKyAgICAgICAgRnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVl
bnRlZEJsb2NrKGVsc2VDYXNlKSk7CisKKyAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICB0aGVuQ2FzZS0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKTsKKworICAgIGVsc2VD
YXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksCisgICAgICAgIGVsc2VDYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmln
aW4oKSwgMCkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgQ0hF
Q0soaW52b2tlPGludD4oKmNvZGUsIDQyKSA9PSAxKTsKKyAgICBDSEVDSyhpbnZva2U8aW50Pigq
Y29kZSwgMCkgPT0gMCk7Cit9CisKK3ZvaWQgdGVzdEJyYW5jaEVxdWFsQ29tbXV0ZSgpCit7Cisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNp
Y0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCAwKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAg
ICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSkpLAorICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxv
Y2soZWxzZUNhc2UpKTsKKworICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisg
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHRoZW5DYXNlLT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgZWxzZUNhc2UtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAg
ICAgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAx
KSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICBDSEVDSyhpbnZv
a2U8aW50PigqY29kZSwgNDIpID09IDEpOworICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAw
KSA9PSAwKTsKK30KKwordm9pZCB0ZXN0QnJhbmNoRXF1YWxFcXVhbDEoKQoreworICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAg
QmFzaWNCbG9jayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayog
ZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUoCisgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBFcXVhbCwgT3JpZ2luKCksCisgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEVx
dWFsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKSwKKyAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSksCisgICAgICAgIEZyZXF1
ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOworCisgICAg
dGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKKyAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAwKSk7CisKKyAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAor
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICBlbHNlQ2FzZS0+YXBwZW5k
TmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKTsKKworICAgIGF1dG8gY29kZSA9
IGNvbXBpbGVQcm9jKHByb2MpOworICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCA0MikgPT0g
MSk7CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsIDApID09IDApOworfQorCit2b2lkIHRl
c3RCcmFuY2hFcXVhbE9yVW5vcmRlcmVkQXJncyhkb3VibGUgYSwgZG91YmxlIGIpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Js
b2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBhcmd1bWVudEEg
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUklu
Zm86OmFyZ3VtZW50RlBSMCk7CisgICAgVmFsdWUqIGFyZ3VtZW50QiA9IHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIx
KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIEJyYW5j
aCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAg
ICBwcm9jLCBFcXVhbE9yVW5vcmRlcmVkLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIGFyZ3VtZW50
QSwKKyAgICAgICAgICAgIGFyZ3VtZW50QiksCisgICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVu
Q2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOworCisgICAgdGhlbkNhc2UtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAg
ICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0Mikp
OworCisgICAgZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCAtMTMpKTsKKworICAgIGludDY0X3QgZXhwZWN0ZWQgPSAoc3Rk
Ojppc3Vub3JkZXJlZChhLCBiKSB8fCBhID09IGIpID8gNDIgOiAtMTM7CisgICAgQ0hFQ0soY29t
cGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhLCBiKSA9PSBleHBlY3RlZCk7Cit9CisKK3ZvaWQg
dGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVyZWRBcmdzKGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Js
b2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBhcmd1bWVudEEg
PSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEZsb2F0LCBPcmlnaW4o
KSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogYXJndW1lbnRCID0gcm9v
dC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBGbG9hdCwgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCisgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBFcXVhbE9yVW5vcmRlcmVkLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIGFyZ3VtZW50QSwKKyAgICAgICAgICAgIGFyZ3VtZW50QiksCisgICAg
ICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkp
OworCisgICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCA0MikpOworCisgICAgZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgZWxzZUNh
c2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMTMpKTsKKworICAg
IGludDY0X3QgZXhwZWN0ZWQgPSAoc3RkOjppc3Vub3JkZXJlZChhLCBiKSB8fCBhID09IGIpID8g
NDIgOiAtMTM7CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCAmYSwgJmIp
ID09IGV4cGVjdGVkKTsKK30KKwordm9pZCB0ZXN0QnJhbmNoTm90RXF1YWxBbmRPcmRlcmVkQXJn
cyhkb3VibGUgYSwgZG91YmxlIGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxv
Y2soKTsKKworICAgIFZhbHVlKiBhcmd1bWVudEEgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgVmFs
dWUqIGFyZ3VtZW50QiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIxKTsKKyAgICBWYWx1ZSogZXF1YWxPclVub3Jk
ZXJlZCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIEVxdWFsT3JVbm9y
ZGVyZWQsIE9yaWdpbigpLAorICAgICAgICBhcmd1bWVudEEsCisgICAgICAgIGFyZ3VtZW50Qik7
CisgICAgVmFsdWUqIG5vdEVxdWFsQW5kT3JkZXJlZCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApLAorICAgICAgICBlcXVhbE9yVW5vcmRl
cmVkKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIEJy
YW5jaCwgT3JpZ2luKCksCisgICAgICAgIG5vdEVxdWFsQW5kT3JkZXJlZCwKKyAgICAgICAgRnJl
cXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNlKSk7CisKKyAg
ICB0aGVuQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAorICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIDQyKSk7CisKKyAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICBlbHNlQ2FzZS0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xMykpOworCisgICAgaW50NjRf
dCBleHBlY3RlZCA9ICghc3RkOjppc3Vub3JkZXJlZChhLCBiKSAmJiBhICE9IGIpID8gNDIgOiAt
MTM7CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhLCBiKSA9PSBleHBl
Y3RlZCk7Cit9CisKK3ZvaWQgdGVzdEJyYW5jaE5vdEVxdWFsQW5kT3JkZXJlZEFyZ3MoZmxvYXQg
YSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRC
bG9jaygpOworICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOworCisg
ICAgVmFsdWUqIGFyZ3VtZW50QSA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywg
TG9hZCwgRmxvYXQsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZh
bHVlKiBhcmd1bWVudEIgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQs
IEZsb2F0LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICBWYWx1ZSog
ZXF1YWxPclVub3JkZXJlZCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2Ms
IEVxdWFsT3JVbm9yZGVyZWQsIE9yaWdpbigpLAorICAgICAgICBhcmd1bWVudEEsCisgICAgICAg
IGFyZ3VtZW50Qik7CisgICAgVmFsdWUqIG5vdEVxdWFsQW5kT3JkZXJlZCA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4oKSwKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApLAorICAgICAgICBl
cXVhbE9yVW5vcmRlcmVkKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAg
ICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgIG5vdEVxdWFsQW5kT3JkZXJlZCwK
KyAgICAgICAgRnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VD
YXNlKSk7CisKKyAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnN0
MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKSk7CisKKyAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICBl
bHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xMykpOwor
CisgICAgaW50NjRfdCBleHBlY3RlZCA9ICghc3RkOjppc3Vub3JkZXJlZChhLCBiKSAmJiBhICE9
IGIpID8gNDIgOiAtMTM7CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCAm
YSwgJmIpID09IGV4cGVjdGVkKTsKK30KKwordm9pZCB0ZXN0QnJhbmNoRXF1YWxPclVub3JkZXJl
ZERvdWJsZUFyZ0ltbShkb3VibGUgYSwgZG91YmxlIGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2Nr
KiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9
IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBhcmd1bWVudEEgPSByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBS
MCk7CisgICAgVmFsdWUqIGFyZ3VtZW50QiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYik7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAorICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgRXF1YWxPclVub3JkZXJlZCwgT3JpZ2luKCks
CisgICAgICAgICAgICBhcmd1bWVudEEsCisgICAgICAgICAgICBhcmd1bWVudEIpLAorICAgICAg
ICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsK
KworICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCisgICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgNDIpKTsKKworICAgIGVsc2VDYXNlLT5hcHBlbmROZXdDb250cm9s
VmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIGVsc2VDYXNl
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTEzKSk7CisKKyAgICBp
bnQ2NF90IGV4cGVjdGVkID0gKHN0ZDo6aXN1bm9yZGVyZWQoYSwgYikgfHwgYSA9PSBiKSA/IDQy
IDogLTEzOworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYSkgPT0gZXhw
ZWN0ZWQpOworfQorCit2b2lkIHRlc3RCcmFuY2hFcXVhbE9yVW5vcmRlcmVkRmxvYXRBcmdJbW0o
ZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJv
Yy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygp
OworCisgICAgVmFsdWUqIGFyZ3VtZW50QSA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
cHJvYywgTG9hZCwgRmxvYXQsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwor
ICAgIFZhbHVlKiBhcmd1bWVudEIgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgYik7CisKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisg
ICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBFcXVhbE9yVW5vcmRlcmVkLCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgIGFyZ3VtZW50QSwKKyAgICAgICAgICAgIGFyZ3VtZW50QiksCisgICAgICAgIEZy
ZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOworCisg
ICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKKyAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCA0MikpOworCisgICAgZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgZWxzZUNhc2UtPmFw
cGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMTMpKTsKKworICAgIGludDY0
X3QgZXhwZWN0ZWQgPSAoc3RkOjppc3Vub3JkZXJlZChhLCBiKSB8fCBhID09IGIpID8gNDIgOiAt
MTM7CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCAmYSkgPT0gZXhwZWN0
ZWQpOworfQorCit2b2lkIHRlc3RCcmFuY2hFcXVhbE9yVW5vcmRlcmVkRG91YmxlSW1tcyhkb3Vi
bGUgYSwgZG91YmxlIGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsK
KworICAgIFZhbHVlKiBhcmd1bWVudEEgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIGEpOworICAgIFZhbHVlKiBhcmd1bWVudEIgPSByb290LT5hcHBl
bmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpOworICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEVxdWFsT3JV
bm9yZGVyZWQsIE9yaWdpbigpLAorICAgICAgICAgICAgYXJndW1lbnRBLAorICAgICAgICAgICAg
YXJndW1lbnRCKSwKKyAgICAgICAgRnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRl
ZEJsb2NrKGVsc2VDYXNlKSk7CisKKyAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICB0aGVuQ2FzZS0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKSk7CisKKyAgICBlbHNlQ2Fz
ZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LAorICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIC0xMykpOworCisgICAgaW50NjRfdCBleHBlY3RlZCA9IChzdGQ6OmlzdW5vcmRlcmVkKGEs
IGIpIHx8IGEgPT0gYikgPyA0MiA6IC0xMzsKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0
X3Q+KHByb2MpID09IGV4cGVjdGVkKTsKK30KKwordm9pZCB0ZXN0QnJhbmNoRXF1YWxPclVub3Jk
ZXJlZEZsb2F0SW1tcyhmbG9hdCBhLCBmbG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOwor
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayog
dGhlbkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogZWxzZUNhc2UgPSBw
cm9jLmFkZEJsb2NrKCk7CisKKyAgICBWYWx1ZSogYXJndW1lbnRBID0gcm9vdC0+YXBwZW5kTmV3
PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpOworICAgIFZhbHVlKiBhcmd1bWVu
dEIgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7
CisKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIEJyYW5j
aCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAg
ICBwcm9jLCBFcXVhbE9yVW5vcmRlcmVkLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIGFyZ3VtZW50
QSwKKyAgICAgICAgICAgIGFyZ3VtZW50QiksCisgICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVu
Q2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOworCisgICAgdGhlbkNhc2UtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAg
ICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0Mikp
OworCisgICAgZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCAtMTMpKTsKKworICAgIGludDY0X3QgZXhwZWN0ZWQgPSAoc3Rk
Ojppc3Vub3JkZXJlZChhLCBiKSB8fCBhID09IGIpID8gNDIgOiAtMTM7CisgICAgQ0hFQ0soY29t
cGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jKSA9PSBleHBlY3RlZCk7Cit9CisKK3ZvaWQgdGVzdEJy
YW5jaEVxdWFsT3JVbm9yZGVyZWRGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbihmbG9h
dCBhLCBmbG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogdGhlbkNhc2UgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisK
KyAgICBWYWx1ZSogYXJndW1lbnQxID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9j
LCBMb2FkLCBGbG9hdCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAg
VmFsdWUqIGFyZ3VtZW50MiA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9h
ZCwgRmxvYXQsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgIFZhbHVl
KiBhcmd1bWVudDFBc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRU
b0RvdWJsZSwgT3JpZ2luKCksIGFyZ3VtZW50MSk7CisgICAgVmFsdWUqIGFyZ3VtZW50MkFzRG91
YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4o
KSwgYXJndW1lbnQyKTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgIHByb2MsIEVxdWFsT3JVbm9yZGVyZWQsIE9yaWdpbigpLAorICAgICAg
ICAgICAgYXJndW1lbnQxQXNEb3VibGUsCisgICAgICAgICAgICBhcmd1bWVudDJBc0RvdWJsZSks
CisgICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNl
Q2FzZSkpOworCisgICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0MikpOworCisgICAgZWxzZUNhc2UtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAg
ZWxzZUNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMTMpKTsK
KworICAgIGludDY0X3QgZXhwZWN0ZWQgPSAoc3RkOjppc3Vub3JkZXJlZChhLCBiKSB8fCBhID09
IGIpID8gNDIgOiAtMTM7CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCAm
YSwgJmIpID09IGV4cGVjdGVkKTsKK30KKwordm9pZCB0ZXN0QnJhbmNoRm9sZChpbnQgdmFsdWUp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHZhbHVl
KSwKKyAgICAgICAgRnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVs
c2VDYXNlKSk7CisKKyAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENv
bnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKTsKKworICAgIGVsc2VDYXNlLT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAg
IGVsc2VDYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwor
CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpID09ICEhdmFsdWUpOworfQorCit2
b2lkIHRlc3REaWFtb25kRm9sZChpbnQgdmFsdWUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0
aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHBy
b2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBkb25lID0gcHJvYy5hZGRCbG9jaygpOwor
CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBCcmFuY2gs
IE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgdmFsdWUpLAorICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVx
dWVudGVkQmxvY2soZWxzZUNhc2UpKTsKKworICAgIFVwc2lsb25WYWx1ZSogdGhlblJlc3VsdCA9
IHRoZW5DYXNlLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPigKKyAgICAgICAgcHJvYywgT3JpZ2lu
KCksIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkp
OworICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgSnVtcCwgT3JpZ2lu
KCksIEZyZXF1ZW50ZWRCbG9jayhkb25lKSk7CisKKyAgICBVcHNpbG9uVmFsdWUqIGVsc2VSZXN1
bHQgPSBlbHNlQ2FzZS0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4oCisgICAgICAgIHByb2MsIE9y
aWdpbigpLCBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IDApKTsKKyAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIEp1bXAsIE9y
aWdpbigpLCBGcmVxdWVudGVkQmxvY2soZG9uZSkpOworCisgICAgVmFsdWUqIHBoaSA9IGRvbmUt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUGhpLCBJbnQzMiwgT3JpZ2luKCkpOworICAgIHRoZW5S
ZXN1bHQtPnNldFBoaShwaGkpOworICAgIGVsc2VSZXN1bHQtPnNldFBoaShwaGkpOworICAgIGRv
bmUtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBwaGkpOwor
CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpID09ICEhdmFsdWUpOworfQorCit2
b2lkIHRlc3RCcmFuY2hOb3RFcXVhbEZvbGRQdHIoaW50cHRyX3QgdmFsdWUpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2Nr
KiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZSgKKyAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIE5vdEVxdWFsLCBPcmlnaW4oKSwK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgdmFsdWUpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCAwKSksCisgICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZy
ZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOworCisgICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgdGhlbkNh
c2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7CisKKyAgICBl
bHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAorICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIDApKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jKSA9PSAh
IXZhbHVlKTsKK30KKwordm9pZCB0ZXN0QnJhbmNoRXF1YWxGb2xkUHRyKGludHB0cl90IHZhbHVl
KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgQmFzaWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBFcXVhbCwg
T3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIHZhbHVlKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0
clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpLAorICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhl
bkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKKworICAgIHRoZW5DYXNlLT5hcHBl
bmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAg
ICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkp
OworCisgICAgZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4o
cHJvYykgPT0gIXZhbHVlKTsKK30KKwordm9pZCB0ZXN0QnJhbmNoTG9hZFB0cigpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Js
b2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIExvYWQsIHBvaW50
ZXJUeXBlKCksIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAg
ICAgRnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNlKSk7
CisKKyAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLAorICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIDEpKTsKKworICAgIGVsc2VDYXNlLT5hcHBlbmROZXdDb250cm9s
VmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIGVsc2VDYXNl
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgYXV0
byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgaW50cHRyX3QgY29uZDsKKyAgICBjb25k
ID0gNDI7CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsICZjb25kKSA9PSAxKTsKKyAgICBj
b25kID0gMDsKKyAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgJmNvbmQpID09IDApOworfQor
Cit2b2lkIHRlc3RCcmFuY2hMb2FkMzIoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogdGhlbkNh
c2UgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFk
ZEJsb2NrKCk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHBy
b2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1
ZT4oCisgICAgICAgICAgICBwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBG
cmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKKworICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHRoZW5D
YXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpOworCisgICAg
ZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKKyAgICAgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAwKSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAg
ICBpbnQzMl90IGNvbmQ7CisgICAgY29uZCA9IDQyOworICAgIENIRUNLKGludm9rZTxpbnQ+KCpj
b2RlLCAmY29uZCkgPT0gMSk7CisgICAgY29uZCA9IDA7CisgICAgQ0hFQ0soaW52b2tlPGludD4o
KmNvZGUsICZjb25kKSA9PSAwKTsKK30KKwordm9pZCB0ZXN0QnJhbmNoTG9hZDhTKCkKK3sKKyAg
ICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2lj
QmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICBy
b290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTG9hZDhTLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisgICAgICAgIEZyZXF1ZW50
ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOworCisgICAgdGhl
bkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKKyAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCAxKSk7CisKKyAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAg
ICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIGF1dG8gY29kZSA9IGNv
bXBpbGVQcm9jKHByb2MpOworICAgIGludDhfdCBjb25kOworICAgIGNvbmQgPSAtMTsKKyAgICBD
SEVDSyhpbnZva2U8aW50PigqY29kZSwgJmNvbmQpID09IDEpOworICAgIGNvbmQgPSAwOworICAg
IENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAmY29uZCkgPT0gMCk7Cit9CisKK3ZvaWQgdGVzdEJy
YW5jaExvYWQ4WigpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKwor
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgQnJhbmNoLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAg
ICAgIHByb2MsIExvYWQ4WiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkp
LAorICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxz
ZUNhc2UpKTsKKworICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAg
IHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpOworCisgICAgZWxzZUNhc2UtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAg
ZWxzZUNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisK
KyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICB1aW50OF90IGNvbmQ7Cisg
ICAgY29uZCA9IDE7CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsICZjb25kKSA9PSAxKTsK
KyAgICBjb25kID0gMDsKKyAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgJmNvbmQpID09IDAp
OworfQorCit2b2lkIHRlc3RCcmFuY2hMb2FkMTZTKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sq
IHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0g
cHJvYy5hZGRCbG9jaygpOworCisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAg
ICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8TWVt
b3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTG9hZDE2UywgT3JpZ2luKCksCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2Up
LCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKKworICAgIHRoZW5DYXNlLT5hcHBlbmROZXdD
b250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHRo
ZW5DYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpOworCisg
ICAgZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKKyAgICAgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsK
KyAgICBpbnQxNl90IGNvbmQ7CisgICAgY29uZCA9IC0xOworICAgIENIRUNLKGludm9rZTxpbnQ+
KCpjb2RlLCAmY29uZCkgPT0gMSk7CisgICAgY29uZCA9IDA7CisgICAgQ0hFQ0soaW52b2tlPGlu
dD4oKmNvZGUsICZjb25kKSA9PSAwKTsKK30KKwordm9pZCB0ZXN0QnJhbmNoTG9hZDE2WigpCit7
CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBC
YXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIExvYWQx
NlosIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAgICAgRnJl
cXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNlKSk7CisKKyAg
ICB0aGVuQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAorICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIDEpKTsKKworICAgIGVsc2VDYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUo
CisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIGVsc2VDYXNlLT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgYXV0byBjb2Rl
ID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgdWludDE2X3QgY29uZDsKKyAgICBjb25kID0gMTsK
KyAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgJmNvbmQpID09IDEpOworICAgIGNvbmQgPSAw
OworICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAmY29uZCkgPT0gMCk7Cit9CisKK3ZvaWQg
dGVzdEJyYW5jaDhXaXRoTG9hZDhaSW5kZXgoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogdGhl
bkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogZWxzZUNhc2UgPSBwcm9j
LmFkZEJsb2NrKCk7CisKKyAgICBpbnQgbG9nU2NhbGUgPSAxOworICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFib3ZlLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAg
ICAgICAgcHJvYywgTG9hZDhaLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAor
ICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCisgICAgICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9jLCBT
aGwsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIGxvZ1NjYWxlKSkpKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAyNTApKSwKKyAgICAgICAgRnJlcXVlbnRlZEJs
b2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNlKSk7CisKKyAgICB0aGVuQ2Fz
ZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LAorICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIDEpKTsKKworICAgIGVsc2VDYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAg
IHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIGVsc2VDYXNlLT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgYXV0byBjb2RlID0gY29tcGls
ZVByb2MocHJvYyk7CisgICAgdWludDMyX3QgY29uZDsKKyAgICBjb25kID0gMHhmZmZmZmZmZlU7
IC8vIEFsbCBieXRlcyBhcmUgMHhmZi4KKyAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgJmNv
bmQgLSAyLCAoc2l6ZW9mKHVpbnQzMl90KSAqIDIpID4+IGxvZ1NjYWxlKSA9PSAxKTsKKyAgICBj
b25kID0gMHgwMDAwMDAwMFU7IC8vIEFsbCBieXRlcyBhcmUgMC4KKyAgICBDSEVDSyhpbnZva2U8
aW50PigqY29kZSwgJmNvbmQgLSAyLCAoc2l6ZW9mKHVpbnQzMl90KSAqIDIpID4+IGxvZ1NjYWxl
KSA9PSAwKTsKK30KKwordm9pZCB0ZXN0Q29tcGxleCh1bnNpZ25lZCBudW1WYXJzLCB1bnNpZ25l
ZCBudW1Db25zdHJ1Y3RzKQoreworICAgIE1vbm90b25pY1RpbWUgYmVmb3JlID0gTW9ub3Rvbmlj
VGltZTo6bm93KCk7CisKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiBjdXJy
ZW50ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgQ29uc3QzMlZhbHVlKiBvbmUgPSBjdXJyZW50
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSk7CisKKyAgICBWZWN0
b3I8aW50MzJfdD4gdmFyU2xvdHM7CisgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtVmFyczsgaS0t
OykKKyAgICAgICAgdmFyU2xvdHMuYXBwZW5kKGkpOworCisgICAgVmVjdG9yPFZhbHVlKj4gdmFy
czsKKyAgICBmb3IgKGludDMyX3QmIHZhclNsb3QgOiB2YXJTbG90cykgeworICAgICAgICBWYWx1
ZSogdmFyU2xvdFB0ciA9IGN1cnJlbnQtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgJnZhclNsb3QpOworICAgICAgICB2YXJzLmFwcGVuZChjdXJyZW50LT5hcHBlbmRO
ZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgdmFyU2xvdFB0cikp
OworICAgIH0KKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Db25zdHJ1Y3RzOyAr
K2kpIHsKKyAgICAgICAgaWYgKGkgJiAxKSB7CisgICAgICAgICAgICAvLyBDb250cm9sIGZsb3cg
ZGlhbW9uZC4KKyAgICAgICAgICAgIHVuc2lnbmVkIHByZWRpY2F0ZVZhckluZGV4ID0gKChpID4+
IDEpICsgMikgJSBudW1WYXJzOworICAgICAgICAgICAgdW5zaWduZWQgdGhlbkluY1ZhckluZGV4
ID0gKChpID4+IDEpICsgMCkgJSBudW1WYXJzOworICAgICAgICAgICAgdW5zaWduZWQgZWxzZUlu
Y1ZhckluZGV4ID0gKChpID4+IDEpICsgMSkgJSBudW1WYXJzOworCisgICAgICAgICAgICBCYXNp
Y0Jsb2NrKiB0aGVuQmxvY2sgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgICAgICBCYXNpY0Js
b2NrKiBlbHNlQmxvY2sgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgICAgICBCYXNpY0Jsb2Nr
KiBjb250aW51YXRpb24gPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgICAgIGN1cnJlbnQt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgICAgICBwcm9jLCBCcmFuY2gsIE9y
aWdpbigpLCB2YXJzW3ByZWRpY2F0ZVZhckluZGV4XSwKKyAgICAgICAgICAgICAgICBGcmVxdWVu
dGVkQmxvY2sodGhlbkJsb2NrKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VCbG9jaykpOworCisgICAg
ICAgICAgICBVcHNpbG9uVmFsdWUqIHRoZW5UaGVuUmVzdWx0ID0gdGhlbkJsb2NrLT5hcHBlbmRO
ZXc8VXBzaWxvblZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBPcmlnaW4oKSwKKyAgICAg
ICAgICAgICAgICB0aGVuQmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4o
KSwgdmFyc1t0aGVuSW5jVmFySW5kZXhdLCBvbmUpKTsKKyAgICAgICAgICAgIFVwc2lsb25WYWx1
ZSogdGhlbkVsc2VSZXN1bHQgPSB0aGVuQmxvY2stPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KAor
ICAgICAgICAgICAgICAgIHByb2MsIE9yaWdpbigpLCB2YXJzW2Vsc2VJbmNWYXJJbmRleF0pOwor
ICAgICAgICAgICAgdGhlbkJsb2NrLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgSnVtcCwg
T3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayhjb250aW51YXRpb24pKTsKKworICAgICAgICAgICAg
VXBzaWxvblZhbHVlKiBlbHNlRWxzZVJlc3VsdCA9IGVsc2VCbG9jay0+YXBwZW5kTmV3PFVwc2ls
b25WYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgT3JpZ2luKCksCisgICAgICAgICAgICAg
ICAgZWxzZUJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIHZhcnNb
ZWxzZUluY1ZhckluZGV4XSwgb25lKSk7CisgICAgICAgICAgICBVcHNpbG9uVmFsdWUqIGVsc2VU
aGVuUmVzdWx0ID0gZWxzZUJsb2NrLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPigKKyAgICAgICAg
ICAgICAgICBwcm9jLCBPcmlnaW4oKSwgdmFyc1t0aGVuSW5jVmFySW5kZXhdKTsKKyAgICAgICAg
ICAgIGVsc2VCbG9jay0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIEp1bXAsIE9yaWdpbigp
LCBGcmVxdWVudGVkQmxvY2soY29udGludWF0aW9uKSk7CisKKyAgICAgICAgICAgIFZhbHVlKiB0
aGVuUGhpID0gY29udGludWF0aW9uLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFBoaSwgSW50MzIs
IE9yaWdpbigpKTsKKyAgICAgICAgICAgIHRoZW5UaGVuUmVzdWx0LT5zZXRQaGkodGhlblBoaSk7
CisgICAgICAgICAgICBlbHNlVGhlblJlc3VsdC0+c2V0UGhpKHRoZW5QaGkpOworICAgICAgICAg
ICAgdmFyc1t0aGVuSW5jVmFySW5kZXhdID0gdGhlblBoaTsKKyAgICAgICAgCisgICAgICAgICAg
ICBWYWx1ZSogZWxzZVBoaSA9IGNvbnRpbnVhdGlvbi0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBQ
aGksIEludDMyLCBPcmlnaW4oKSk7CisgICAgICAgICAgICB0aGVuRWxzZVJlc3VsdC0+c2V0UGhp
KGVsc2VQaGkpOworICAgICAgICAgICAgZWxzZUVsc2VSZXN1bHQtPnNldFBoaShlbHNlUGhpKTsK
KyAgICAgICAgICAgIHZhcnNbZWxzZUluY1ZhckluZGV4XSA9IHRoZW5QaGk7CisgICAgICAgIAor
ICAgICAgICAgICAgY3VycmVudCA9IGNvbnRpbnVhdGlvbjsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIC8vIExvb3AuCisKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGxvb3BFbnRyeSA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGxvb3BSZWVudHJ5ID0g
cHJvYy5hZGRCbG9jaygpOworICAgICAgICAgICAgQmFzaWNCbG9jayogbG9vcEJvZHkgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBsb29wRXhpdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGxvb3BTa2lwID0gcHJvYy5hZGRCbG9j
aygpOworICAgICAgICAgICAgQmFzaWNCbG9jayogY29udGludWF0aW9uID0gcHJvYy5hZGRCbG9j
aygpOworICAgICAgICAKKyAgICAgICAgICAgIFZhbHVlKiBzdGFydEluZGV4ID0gdmFyc1soKGkg
Pj4gMSkgKyAxKSAlIG51bVZhcnNdOworICAgICAgICAgICAgVmFsdWUqIHN0YXJ0U3VtID0gY3Vy
cmVudC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApOworICAgICAg
ICAgICAgY3VycmVudC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgICAgIHBy
b2MsIEJyYW5jaCwgT3JpZ2luKCksIHN0YXJ0SW5kZXgsCisgICAgICAgICAgICAgICAgRnJlcXVl
bnRlZEJsb2NrKGxvb3BFbnRyeSksIEZyZXF1ZW50ZWRCbG9jayhsb29wU2tpcCkpOworCisgICAg
ICAgICAgICBVcHNpbG9uVmFsdWUqIHN0YXJ0SW5kZXhGb3JCb2R5ID0gbG9vcEVudHJ5LT5hcHBl
bmROZXc8VXBzaWxvblZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBPcmlnaW4oKSwgc3Rh
cnRJbmRleCk7CisgICAgICAgICAgICBVcHNpbG9uVmFsdWUqIHN0YXJ0U3VtRm9yQm9keSA9IGxv
b3BFbnRyeS0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywg
T3JpZ2luKCksIHN0YXJ0U3VtKTsKKyAgICAgICAgICAgIGxvb3BFbnRyeS0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKHByb2MsIEp1bXAsIE9yaWdpbigpLCBGcmVxdWVudGVkQmxvY2sobG9vcEJvZHkp
KTsKKworICAgICAgICAgICAgVmFsdWUqIGJvZHlJbmRleCA9IGxvb3BCb2R5LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFBoaSwgSW50MzIsIE9yaWdpbigpKTsKKyAgICAgICAgICAgIHN0YXJ0SW5k
ZXhGb3JCb2R5LT5zZXRQaGkoYm9keUluZGV4KTsKKyAgICAgICAgICAgIFZhbHVlKiBib2R5U3Vt
ID0gbG9vcEJvZHktPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUGhpLCBJbnQzMiwgT3JpZ2luKCkp
OworICAgICAgICAgICAgc3RhcnRTdW1Gb3JCb2R5LT5zZXRQaGkoYm9keVN1bSk7CisgICAgICAg
ICAgICBWYWx1ZSogbmV3Qm9keUluZGV4ID0gbG9vcEJvZHktPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgU3ViLCBPcmlnaW4oKSwgYm9keUluZGV4LCBvbmUpOworICAgICAgICAgICAgVmFsdWUqIG5l
d0JvZHlTdW0gPSBsb29wQm9keS0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBw
cm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIGJvZHlTdW0sCisgICAgICAgICAg
ICAgICAgbG9vcEJvZHktPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICAgICAg
ICAgIHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICAgICAgbG9v
cEJvZHktPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9jLCBB
ZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgbG9vcEJvZHktPmFwcGVuZE5l
dzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdmFyU2xvdHMuZGF0YSgpKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGxvb3BCb2R5LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHByb2MsIFNobCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbG9vcEJvZHktPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHByb2MsIFpFeHQzMiwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxvb3BCb2R5LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0JvZHlJbmRleCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxvb3BCb2R5LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPigK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jLCBPcmlnaW4oKSwg
bnVtVmFycyAtIDEpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcEJvZHktPmFw
cGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAyKSkpKSk7CisgICAgICAgICAg
ICBsb29wQm9keS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgICAgIHByb2Ms
IEJyYW5jaCwgT3JpZ2luKCksIG5ld0JvZHlJbmRleCwKKyAgICAgICAgICAgICAgICBGcmVxdWVu
dGVkQmxvY2sobG9vcFJlZW50cnkpLCBGcmVxdWVudGVkQmxvY2sobG9vcEV4aXQpKTsKKworICAg
ICAgICAgICAgbG9vcFJlZW50cnktPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBuZXdCb2R5SW5kZXgsIGJvZHlJbmRleCk7CisgICAgICAgICAgICBsb29wUmVlbnRyeS0+
YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4ocHJvYywgT3JpZ2luKCksIG5ld0JvZHlTdW0sIGJvZHlT
dW0pOworICAgICAgICAgICAgbG9vcFJlZW50cnktPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9j
LCBKdW1wLCBPcmlnaW4oKSwgRnJlcXVlbnRlZEJsb2NrKGxvb3BCb2R5KSk7CisKKyAgICAgICAg
ICAgIFVwc2lsb25WYWx1ZSogZXhpdFN1bSA9IGxvb3BFeGl0LT5hcHBlbmROZXc8VXBzaWxvblZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgbmV3Qm9keVN1bSk7CisgICAgICAgICAgICBsb29wRXhpdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIEp1bXAsIE9yaWdpbigpLCBGcmVxdWVudGVkQmxv
Y2soY29udGludWF0aW9uKSk7CisKKyAgICAgICAgICAgIFVwc2lsb25WYWx1ZSogc2tpcFN1bSA9
IGxvb3BTa2lwLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4oKSwgc3RhcnRT
dW0pOworICAgICAgICAgICAgbG9vcFNraXAtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBK
dW1wLCBPcmlnaW4oKSwgRnJlcXVlbnRlZEJsb2NrKGNvbnRpbnVhdGlvbikpOworCisgICAgICAg
ICAgICBWYWx1ZSogZmluYWxTdW0gPSBjb250aW51YXRpb24tPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgUGhpLCBJbnQzMiwgT3JpZ2luKCkpOworICAgICAgICAgICAgZXhpdFN1bS0+c2V0UGhpKGZp
bmFsU3VtKTsKKyAgICAgICAgICAgIHNraXBTdW0tPnNldFBoaShmaW5hbFN1bSk7CisKKyAgICAg
ICAgICAgIGN1cnJlbnQgPSBjb250aW51YXRpb247CisgICAgICAgICAgICB2YXJzWygoaSA+PiAx
KSArIDApICUgbnVtVmFyc10gPSBmaW5hbFN1bTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGN1
cnJlbnQtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCB2YXJz
WzBdKTsKKworICAgIGNvbXBpbGVQcm9jKHByb2MpOworCisgICAgTW9ub3RvbmljVGltZSBhZnRl
ciA9IE1vbm90b25pY1RpbWU6Om5vdygpOworICAgIGRhdGFMb2codG9DU3RyaW5nKCIgICAgVGhh
dCB0b29rICIsIChhZnRlciAtIGJlZm9yZSkubWlsbGlzZWNvbmRzKCksICIgbXMuXG4iKSk7Cit9
CisKK3ZvaWQgdGVzdEJyYW5jaEJpdFRlc3QzMlRtcEltbSh1aW50MzJfdCB2YWx1ZSwgdWludDMy
X3QgaW1tKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgQmFzaWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBW
YWx1ZSogdGVzdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywg
VHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBi
aXRPZmZzZXQgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
aW1tKTsKKworICAgIFZhbHVlKiBvbmUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgMSk7CisgICAgVmFsdWUqIGJpdFRlc3QgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KAorICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIFNTaHIsIE9yaWdpbigpLCB0ZXN0VmFsdWUsIGJpdE9mZnNl
dCksCisgICAgICAgIG9uZSk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisg
ICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgIGJpdFRlc3QsCisgICAgICAg
IEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOwor
CisgICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCAxKSk7CisKKyAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICBlbHNlQ2FzZS0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIGF1dG8g
Y29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIENIRUNLX0VRKGludm9rZTx1aW50MzJfdD4o
KmNvZGUsIHZhbHVlKSwgKHZhbHVlPj4oaW1tJTMyKSkmMSk7Cit9CisKK3ZvaWQgdGVzdEJyYW5j
aEJpdFRlc3QzMkFkZHJJbW0odWludDMyX3QgdmFsdWUsIHVpbnQzMl90IGltbSkKK3sKKyAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxv
Y2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgVmFsdWUqIHRlc3RWYWx1ZSA9
IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIExvYWQsIEludDMy
LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogYml0T2Zm
c2V0ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGltbSk7
CisKKyAgICBWYWx1ZSogb25lID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIDEpOworICAgIFZhbHVlKiBiaXRUZXN0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBTU2hyLCBPcmlnaW4oKSwgdGVzdFZhbHVlLCBiaXRPZmZzZXQpLAor
ICAgICAgICBvbmUpOworCisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAg
ICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICBiaXRUZXN0LAorICAgICAgICBGcmVx
dWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKKworICAg
IHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwg
T3JpZ2luKCksCisgICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgMSkpOworCisgICAgZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
KyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgZWxzZUNhc2UtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICBhdXRvIGNvZGUg
PSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICBDSEVDS19FUShpbnZva2U8dWludDMyX3Q+KCpjb2Rl
LCAmdmFsdWUpLCAodmFsdWU+PihpbW0lMzIpKSYxKTsKK30KKwordm9pZCB0ZXN0QnJhbmNoQml0
VGVzdDMyVG1wVG1wKHVpbnQzMl90IHZhbHVlLCB1aW50MzJfdCB2YWx1ZTIpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2Nr
KiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiB0ZXN0VmFsdWUgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGJpdE9mZnNldCA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEpKTsKKworICAgIFZhbHVlKiBvbmUgPSByb290LT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSk7CisgICAgVmFsdWUqIGJpdFRlc3QgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNTaHIsIE9yaWdpbigpLCB0ZXN0VmFs
dWUsIGJpdE9mZnNldCksCisgICAgICAgIG9uZSk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCisgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgIGJpdFRl
c3QsCisgICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhl
bHNlQ2FzZSkpOworCisgICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7CisKKyAgICBlbHNlQ2FzZS0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAg
ICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsK
KworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIENIRUNLX0VRKGludm9r
ZTx1aW50MzJfdD4oKmNvZGUsIHZhbHVlLCB2YWx1ZTIpLCAodmFsdWU+Pih2YWx1ZTIlMzIpKSYx
KTsKK30KKwordm9pZCB0ZXN0QnJhbmNoQml0VGVzdDY0VG1wVG1wKHVpbnQ2NF90IHZhbHVlLCB1
aW50NjRfdCB2YWx1ZTIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsK
KworICAgIFZhbHVlKiB0ZXN0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJp
dFhvciwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xbCkpOworICAgIFZhbHVl
KiBiaXRPZmZzZXQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBUcnVu
YywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisKKyAgICBWYWx1ZSogb25l
ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpOworICAg
IFZhbHVlKiBiaXRUZXN0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywg
Qml0QW5kLCBPcmlnaW4oKSwKKyAgICAgICAgdGVzdFZhbHVlLAorICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIFNobCwgT3JpZ2luKCksIG9uZSwgYml0T2Zmc2V0KSk7CisKKyAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIEJyYW5jaCwgT3Jp
Z2luKCksCisgICAgICAgIGJpdFRlc3QsCisgICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2Fz
ZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOworCisgICAgdGhlbkNhc2UtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAg
dGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisK
KyAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAorICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIDEpKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2Mp
OworICAgIENIRUNLX0VRKGludm9rZTx1aW50NjRfdD4oKmNvZGUsIHZhbHVlLCB2YWx1ZTIpLCAo
dmFsdWU+Pih2YWx1ZTIlNjQpKSYxKTsKK30KKwordm9pZCB0ZXN0QnJhbmNoQml0VGVzdDY0QWRk
clRtcCh1aW50NjRfdCB2YWx1ZSwgdWludDY0X3QgdmFsdWUyKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNC
bG9jayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogZWxzZUNh
c2UgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBWYWx1ZSogdGVzdFZhbHVlID0gcm9vdC0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywgTG9hZCwgSW50NjQsIE9yaWdpbigp
LAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBiaXRPZmZzZXQgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxKSk7CisKKyAgICBWYWx1ZSogb25lID0gcm9vdC0+YXBwZW5kTmV3
PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpOworICAgIFZhbHVlKiBiaXRUZXN0ID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwK
KyAgICAgICAgdGVzdFZhbHVlLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFNobCwgT3JpZ2luKCksIG9uZSwgYml0T2Zmc2V0KSk7CisKKyAgICByb290LT5hcHBlbmROZXdD
b250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgIGJp
dFRlc3QsCisgICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9j
ayhlbHNlQ2FzZSkpOworCisgICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAg
ICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5l
dzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7CisKKyAgICBlbHNlQ2FzZS0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAg
ICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDAp
KTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIENIRUNLX0VRKGlu
dm9rZTx1aW50NjRfdD4oKmNvZGUsICZ2YWx1ZSwgdmFsdWUyKSwgKHZhbHVlPj4odmFsdWUyJTY0
KSkmMSk7Cit9CisKK3ZvaWQgdGVzdEJyYW5jaEJpdFRlc3ROZWdhdGlvbih1aW50NjRfdCB2YWx1
ZSwgdWludDY0X3QgdmFsdWUyKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogdGhlbkNhc2UgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2Nr
KCk7CisKKyAgICBWYWx1ZSogdGVzdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVl
KiBiaXRPZmZzZXQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBUcnVu
YywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgVmFsdWUqIHNoaWZ0
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTU2hyLCBPcmlnaW4oKSwgdGVzdFZhbHVl
LCBiaXRPZmZzZXQpOworCisgICAgVmFsdWUqIG9uZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0
VmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKTsKKyAgICBWYWx1ZSogYml0VGVzdCA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIEJpdEFuZCwgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0WG9yLCBPcmlnaW4oKSwgc2hpZnQsIHJv
b3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMWwpKSwKKyAgICAg
ICAgb25lKTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJv
YywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgYml0VGVzdCwKKyAgICAgICAgRnJlcXVlbnRl
ZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNlKSk7CisKKyAgICB0aGVu
Q2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAorICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIDApKTsKKworICAgIGVsc2VDYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIGVsc2VDYXNlLT5hcHBlbmROZXc8
Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpOworCisgICAgYXV0byBjb2RlID0gY29t
cGlsZVByb2MocHJvYyk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPHVpbnQ2NF90PigqY29kZSwgdmFs
dWUsIHZhbHVlMiksICh2YWx1ZT4+KHZhbHVlMiU2NCkpJjEpOworfQorCit2b2lkIHRlc3RCcmFu
Y2hCaXRUZXN0TmVnYXRpb24yKHVpbnQ2NF90IHZhbHVlLCB1aW50NjRfdCB2YWx1ZTIpCit7Cisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNp
Y0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiB0ZXN0VmFs
dWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdFhvciwgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIC0xbCkpOworICAgIFZhbHVlKiBiaXRPZmZzZXQgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIxKSk7CisgICAgVmFsdWUqIHNoaWZ0ID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBTU2hyLCBPcmlnaW4oKSwgdGVzdFZhbHVlLCBiaXRPZmZzZXQpOworCisgICAg
VmFsdWUqIG9uZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigp
LCAxKTsKKyAgICBWYWx1ZSogYml0VGVzdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAg
ICAgIHByb2MsIEJpdEFuZCwgT3JpZ2luKCksCisgICAgICAgIHNoaWZ0LAorICAgICAgICBvbmUp
OworCisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBCcmFu
Y2gsIE9yaWdpbigpLAorICAgICAgICBiaXRUZXN0LAorICAgICAgICBGcmVxdWVudGVkQmxvY2so
dGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKKworICAgIHRoZW5DYXNlLT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisg
ICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
MCkpOworCisgICAgZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxDb25zdDY0
VmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJv
Yyhwcm9jKTsKKyAgICBDSEVDS19FUShpbnZva2U8dWludDY0X3Q+KCpjb2RlLCB2YWx1ZSwgdmFs
dWUyKSwgKHZhbHVlPj4odmFsdWUyJTY0KSkmMSk7Cit9CisKK3ZvaWQgdGVzdFNpbXBsZVBhdGNo
cG9pbnQoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAg
VmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRj
aHBvaW50ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgSW50MzIsIE9y
aWdpbigpKTsKKyAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmcxLCBW
YWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7CisgICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFp
bmVkVmFsdWUoYXJnMiwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOworICAgIHBhdGNocG9pbnQt
PnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9T
Y3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAgICAgIENIRUNL
KHBhcmFtcy5zaXplKCkgPT0gMyk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXNbMF0uaXNHUFIo
KSk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0uaXNHUFIoKSk7CisgICAgICAgICAgICBD
SEVDSyhwYXJhbXNbMl0uaXNHUFIoKSk7CisgICAgICAgICAgICBhZGQzMihqaXQsIHBhcmFtc1sx
XS5ncHIoKSwgcGFyYW1zWzJdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICB9KTsK
KyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwg
cGF0Y2hwb2ludCk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgMSwgMikg
PT0gMyk7Cit9CisKK3ZvaWQgdGVzdFNpbXBsZVBhdGNocG9pbnRXaXRob3V0T3VwdXRDbG9iYmVy
c0dQQXJncygpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAg
ICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICBWYWx1ZSogY29uc3QxID0gcm9v
dC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKTsKKyAgICBWYWx1
ZSogY29uc3QyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IDEzKTsKKworICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IHJvb3QtPmFwcGVuZE5l
dzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKKyAgICBwYXRjaHBvaW50
LT5jbG9iYmVyTGF0ZShSZWdpc3RlclNldChHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86
OmFyZ3VtZW50R1BSMSkpOworICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVl
KGNvbnN0MSwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOworICAgIHBhdGNocG9pbnQtPmFwcGVu
ZChDb25zdHJhaW5lZFZhbHVlKGNvbnN0MiwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOworICAg
IHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAg
IEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAg
ICAgICAgIENIRUNLKHBhcmFtcy5zaXplKCkgPT0gMik7CisgICAgICAgICAgICBDSEVDSyhwYXJh
bXNbMF0uaXNHUFIoKSk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0uaXNHUFIoKSk7Cisg
ICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigweDAwZmYwMGZm
KSwgcGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKDB4MDBmZjAwZmYpLCBwYXJhbXNbMV0uZ3ByKCkpOworICAgICAgICAgICAg
aml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMHgwMGZmMDBmZiksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7CisgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMigweDAwZmYwMGZmKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgfSk7
CisKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQs
IE9yaWdpbigpLCBhcmcxLCBhcmcyKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRS
dW48aW50Pihwcm9jLCAxLCAyKSA9PSAzKTsKK30KKwordm9pZCB0ZXN0U2ltcGxlUGF0Y2hwb2lu
dFdpdGhPdXB1dENsb2JiZXJzR1BBcmdzKCkKK3sKKyAgICAvLyBXZSBjYW4ndCBwcmVkaWN0IHdo
ZXJlIHRoZSBvdXRwdXQgd2lsbCBiZSBidXQgd2Ugd2FudCB0byBiZSBzdXJlIGl0IGlzIG5vdAor
ICAgIC8vIG9uZSBvZiB0aGUgY2xvYmJlcmVkIHJlZ2lzdGVycyB3aGljaCBpcyBhIGJpdCBoYXJk
IHRvIHRlc3QuCisgICAgLy8KKyAgICAvLyBXaGF0IHdlIGRvIGlzIGZvcmNlIHRoZSBoYW5kIG9m
IG91ciByZWdpc3RlciBhbGxvY2F0b3IgYnkgY2xvYmJlcmluZyBhYnNvbHV0ZWx5CisgICAgLy8g
ZXZlcnl0aGluZyBidXQgMS4gVGhlIG9ubHkgdmFsaWQgYWxsb2NhdGlvbiBpcyB0byBnaXZlIGl0
IHRvIHRoZSByZXN1bHQgYW5kCisgICAgLy8gc3BpbGwgZXZlcnl0aGluZyBlbHNlLgorCisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEpIHsKKyAgICAgICAg
Ly8gRklYTUU6IEFpciBPMCBhbGxvY2F0b3IgY2FuJ3QgaGFuZGxlIHN1Y2ggcHJvZ3JhbXMuIFdl
IHJlbHkgb24gV2FzbUFpcklSR2VuZXJhdG9yCisgICAgICAgIC8vIHRvIG5vdCB1c2UgYW55IHN1
Y2ggY29uc3RydWN0cyB3aGVyZSB0aGUgcmVnaXN0ZXIgYWxsb2NhdG9yIGlzIGNvcm5lcmVkIGlu
IHN1Y2gKKyAgICAgICAgLy8gYSB3YXkuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ2MzMKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmcxID0gcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOworICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgIFZh
bHVlKiBjb25zdDEgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgNDIpOworICAgIFZhbHVlKiBjb25zdDIgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgMTMpOworCisgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50
ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgSW50NjQsIE9yaWdpbigp
KTsKKworICAgIFJlZ2lzdGVyU2V0IGNsb2JiZXJBbGwgPSBSZWdpc3RlclNldDo6YWxsR1BScygp
OworICAgIGNsb2JiZXJBbGwuZXhjbHVkZShSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSk7
CisgICAgY2xvYmJlckFsbC5leGNsdWRlKFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVn
aXN0ZXJzKCkpOworICAgIGNsb2JiZXJBbGwuY2xlYXIoR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsK
KyAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShjbG9iYmVyQWxsKTsKKworICAgIHBhdGNocG9p
bnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGNvbnN0MSwgVmFsdWVSZXA6OlNvbWVSZWdpc3Rl
cikpOworICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGNvbnN0MiwgVmFs
dWVSZXA6OlNvbWVSZWdpc3RlcikpOworCisgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAor
ICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25Q
YXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVz
YWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9
PSAzKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtc1swXS5pc0dQUigpKTsKKyAgICAgICAgICAg
IENIRUNLKHBhcmFtc1sxXS5pc0dQUigpKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtc1syXS5p
c0dQUigpKTsKKyAgICAgICAgICAgIGppdC5tb3ZlKHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzBd
LmdwcigpKTsKKyAgICAgICAgICAgIGppdC5hZGQ2NChwYXJhbXNbMl0uZ3ByKCksIHBhcmFtc1sw
XS5ncHIoKSk7CisKKyAgICAgICAgICAgIGNsb2JiZXJBbGwuZm9yRWFjaChbJl0gKFJlZyByZWcp
IHsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigw
eDAwZmYwMGZmKSwgcmVnLmdwcigpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKwor
ICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3Jp
Z2luKCksIHBhdGNocG9pbnQsCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
QWRkLCBPcmlnaW4oKSwgYXJnMSwgYXJnMikpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOworCisgICAgQ0hFQ0soY29tcGls
ZUFuZFJ1bjxpbnQ+KHByb2MsIDEsIDIpID09IDU4KTsKK30KKwordm9pZCB0ZXN0U2ltcGxlUGF0
Y2hwb2ludFdpdGhvdXRPdXB1dENsb2JiZXJzRlBBcmdzKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJv
YzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBh
cmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBG
UFJJbmZvOjphcmd1bWVudEZQUjApOworICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjEp
OworICAgIFZhbHVlKiBjb25zdDEgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIDQyLjUpOworICAgIFZhbHVlKiBjb25zdDIgPSByb290LT5hcHBlbmRO
ZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEzLjEpOworCisgICAgUGF0Y2hw
b2ludFZhbHVlKiBwYXRjaHBvaW50ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4o
cHJvYywgVm9pZCwgT3JpZ2luKCkpOworICAgIHBhdGNocG9pbnQtPmNsb2JiZXJMYXRlKFJlZ2lz
dGVyU2V0KEZQUkluZm86OmFyZ3VtZW50RlBSMCwgRlBSSW5mbzo6YXJndW1lbnRGUFIxKSk7Cisg
ICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoY29uc3QxLCBWYWx1ZVJlcDo6
U29tZVJlZ2lzdGVyKSk7CisgICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUo
Y29uc3QyLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7CisgICAgcGF0Y2hwb2ludC0+c2V0R2Vu
ZXJhdG9yKAorICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdl
bmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hS
ZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1z
LnNpemUoKSA9PSAyKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtc1swXS5pc0ZQUigpKTsKKyAg
ICAgICAgICAgIENIRUNLKHBhcmFtc1sxXS5pc0ZQUigpKTsKKyAgICAgICAgICAgIGppdC5tb3Zl
WmVyb1RvRG91YmxlKHBhcmFtc1swXS5mcHIoKSk7CisgICAgICAgICAgICBqaXQubW92ZVplcm9U
b0RvdWJsZShwYXJhbXNbMV0uZnByKCkpOworICAgICAgICAgICAgaml0Lm1vdmVaZXJvVG9Eb3Vi
bGUoRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICAgICAgICAgIGppdC5tb3ZlWmVyb1RvRG91
YmxlKEZQUkluZm86OmFyZ3VtZW50RlBSMSk7CisgICAgICAgIH0pOworCisgICAgVmFsdWUqIHJl
c3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgYXJnMSwg
YXJnMik7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIHJlc3VsdCk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywg
MS41LCAyLjUpID09IDQpOworfQorCit2b2lkIHRlc3RTaW1wbGVQYXRjaHBvaW50V2l0aE91cHV0
Q2xvYmJlcnNGUEFyZ3MoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIGlmIChwcm9jLm9w
dExldmVsKCkgPCAxKSB7CisgICAgICAgIC8vIEZJWE1FOiBBaXIgTzAgYWxsb2NhdG9yIGNhbid0
IGhhbmRsZSBzdWNoIHByb2dyYW1zLiBXZSByZWx5IG9uIFdhc21BaXJJUkdlbmVyYXRvcgorICAg
ICAgICAvLyB0byBub3QgdXNlIGFueSBzdWNoIGNvbnN0cnVjdHMgd2hlcmUgdGhlIHJlZ2lzdGVy
IGFsbG9jYXRvciBpcyBjb3JuZXJlZCBpbiBzdWNoCisgICAgICAgIC8vIGEgd2F5LgorICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NjMzCisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICBWYWx1ZSogYXJnMiA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5m
bzo6YXJndW1lbnRGUFIxKTsKKyAgICBWYWx1ZSogY29uc3QxID0gcm9vdC0+YXBwZW5kTmV3PENv
bnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0Mi41KTsKKyAgICBWYWx1ZSogY29uc3Qy
ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxMy4x
KTsKKworICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IHJvb3QtPmFwcGVuZE5ldzxQ
YXRjaHBvaW50VmFsdWU+KHByb2MsIERvdWJsZSwgT3JpZ2luKCkpOworCisgICAgUmVnaXN0ZXJT
ZXQgY2xvYmJlckFsbCA9IFJlZ2lzdGVyU2V0OjphbGxGUFJzKCk7CisgICAgY2xvYmJlckFsbC5l
eGNsdWRlKFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKTsKKyAgICBjbG9iYmVyQWxsLmV4
Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSk7CisgICAgY2xv
YmJlckFsbC5jbGVhcihGUFJJbmZvOjphcmd1bWVudEZQUjIpOworICAgIHBhdGNocG9pbnQtPmNs
b2JiZXJMYXRlKGNsb2JiZXJBbGwpOworCisgICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFp
bmVkVmFsdWUoY29uc3QxLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7CisgICAgcGF0Y2hwb2lu
dC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoY29uc3QyLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVy
KSk7CisKKyAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0NhbGxI
ZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Cisg
ICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGpp
dCk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09IDMpOworICAgICAgICAgICAg
Q0hFQ0socGFyYW1zWzBdLmlzRlBSKCkpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzFdLmlz
RlBSKCkpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzJdLmlzRlBSKCkpOworICAgICAgICAg
ICAgaml0LmFkZERvdWJsZShwYXJhbXNbMV0uZnByKCksIHBhcmFtc1syXS5mcHIoKSwgcGFyYW1z
WzBdLmZwcigpKTsKKworICAgICAgICAgICAgY2xvYmJlckFsbC5mb3JFYWNoKFsmXSAoUmVnIHJl
ZykgeworICAgICAgICAgICAgICAgIGppdC5tb3ZlWmVyb1RvRG91YmxlKHJlZy5mcHIoKSk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBwYXRjaHBvaW50LAorICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGFyZzEsIGFyZzIp
KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwgcmVzdWx0KTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCAxLjUs
IDIuNSkgPT0gNTkuNik7Cit9CisKK3ZvaWQgdGVzdFBhdGNocG9pbnRXaXRoRWFybHlDbG9iYmVy
KCkKK3sKKyAgICBhdXRvIHRlc3QgPSBbXSAoR1BSUmVnIHJlZ2lzdGVyVG9DbG9iYmVyLCBib29s
IGFyZzFJbkFyZ0dQUiwgYm9vbCBhcmcySW5BcmdHUFIpIHsKKyAgICAgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAg
IFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSogYXJnMiA9IHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIxKTsKKyAgICAKKyAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50
ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgSW50MzIsIE9yaWdpbigp
KTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMSwgVmFs
dWVSZXA6OlNvbWVSZWdpc3RlcikpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3Ry
YWluZWRWYWx1ZShhcmcyLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7CisgICAgICAgIHBhdGNo
cG9pbnQtPmNsb2JiZXJFYXJseShSZWdpc3RlclNldChyZWdpc3RlclRvQ2xvYmJlcikpOworICAg
ICAgICB1bnNpZ25lZCBvcHRMZXZlbCA9IHByb2Mub3B0TGV2ZWwoKTsKKyAgICAgICAgcGF0Y2hw
b2ludC0+c2V0R2VuZXJhdG9yKAorICAgICAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwg
Y29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgICAg
ICBpZiAob3B0TGV2ZWwgPiAxKSB7CisgICAgICAgICAgICAgICAgICAgIENIRUNLKChwYXJhbXNb
MV0uZ3ByKCkgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIwKSA9PSBhcmcxSW5BcmdHUFIpOworICAg
ICAgICAgICAgICAgICAgICBDSEVDSygocGFyYW1zWzJdLmdwcigpID09IEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSkgPT0gYXJnMkluQXJnR1BSKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICBhZGQzMihqaXQsIHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzJd
LmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHBhdGNocG9p
bnQpOworCisgICAgICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCAxLCAyKSA9PSAz
KTsKKyAgICB9OworCisgICAgdGVzdChHUFJJbmZvOjpub25BcmdHUFIwLCB0cnVlLCB0cnVlKTsK
KyAgICB0ZXN0KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgZmFsc2UsIHRydWUpOworICAgIHRlc3Qo
R1BSSW5mbzo6YXJndW1lbnRHUFIxLCB0cnVlLCBmYWxzZSk7Cit9CisKK3ZvaWQgdGVzdFBhdGNo
cG9pbnRDYWxsQXJnKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OworICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgIFBhdGNocG9pbnRWYWx1
ZSogcGF0Y2hwb2ludCA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIElu
dDMyLCBPcmlnaW4oKSk7CisgICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUo
YXJnMSwgVmFsdWVSZXA6OnN0YWNrQXJndW1lbnQoMCkpKTsKKyAgICBwYXRjaHBvaW50LT5hcHBl
bmQoQ29uc3RyYWluZWRWYWx1ZShhcmcyLCBWYWx1ZVJlcDo6c3RhY2tBcmd1bWVudCg4KSkpOwor
ICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMm
IGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAg
ICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAg
ICAgICAgICAgIENIRUNLKHBhcmFtcy5zaXplKCkgPT0gMyk7CisgICAgICAgICAgICBDSEVDSyhw
YXJhbXNbMF0uaXNHUFIoKSk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0uaXNTdGFjaygp
KTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtc1syXS5pc1N0YWNrKCkpOworICAgICAgICAgICAg
aml0LmxvYWQzMigKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHBhcmFtc1sxXS5vZmZzZXRGcm9tRlAoKSksCisgICAgICAg
ICAgICAgICAgcGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgICAgIGppdC5hZGQzMigKKyAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0
ZXIsIHBhcmFtc1syXS5vZmZzZXRGcm9tRlAoKSksCisgICAgICAgICAgICAgICAgcGFyYW1zWzBd
LmdwcigpKTsKKyAgICAgICAgfSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHBy
b2MsIFJldHVybiwgT3JpZ2luKCksIHBhdGNocG9pbnQpOworCisgICAgQ0hFQ0soY29tcGlsZUFu
ZFJ1bjxpbnQ+KHByb2MsIDEsIDIpID09IDMpOworfQorCit2b2lkIHRlc3RQYXRjaHBvaW50Rml4
ZWRSZWdpc3RlcigpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
KyAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICBQYXRjaHBvaW50VmFsdWUq
IHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBJbnQz
MiwgT3JpZ2luKCkpOworICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFy
ZzEsIFZhbHVlUmVwKEdQUkluZm86OnJlZ1QwKSkpOworICAgIHBhdGNocG9pbnQtPmFwcGVuZChD
b25zdHJhaW5lZFZhbHVlKGFyZzIsIFZhbHVlUmVwKEdQUkluZm86OnJlZ1QxKSkpOworICAgIHBh
dGNocG9pbnQtPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwg
Y29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIEFs
bG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAg
ICAgIENIRUNLKHBhcmFtcy5zaXplKCkgPT0gMyk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXNb
MF0uaXNHUFIoKSk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0gPT0gVmFsdWVSZXAoR1BS
SW5mbzo6cmVnVDApKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtc1syXSA9PSBWYWx1ZVJlcChH
UFJJbmZvOjpyZWdUMSkpOworICAgICAgICAgICAgYWRkMzIoaml0LCBHUFJJbmZvOjpyZWdUMCwg
R1BSSW5mbzo6cmVnVDEsIHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgIH0pOworICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBwYXRjaHBvaW50
KTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCAxLCAyKSA9PSAzKTsKK30K
Kwordm9pZCB0ZXN0UGF0Y2hwb2ludEFueShWYWx1ZVJlcCByZXApCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1
ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIxKTsKKyAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8
UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBJbnQzMiwgT3JpZ2luKCkpOworICAgIHBhdGNocG9pbnQt
PmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzEsIHJlcCkpOworICAgIHBhdGNocG9pbnQtPmFw
cGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzIsIHJlcCkpOworICAgIHBhdGNocG9pbnQtPnNldEdl
bmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBH
ZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNo
UmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAgICAgIC8vIFdlIHNob3Vs
ZG4ndCBoYXZlIHNwaWxsZWQgdGhlIGlucHV0cywgc28gd2UgYXNzZXJ0IHRoYXQgdGhleSdyZSBp
biByZWdpc3RlcnMuCisgICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09IDMpOworICAg
ICAgICAgICAgQ0hFQ0socGFyYW1zWzBdLmlzR1BSKCkpOworICAgICAgICAgICAgQ0hFQ0socGFy
YW1zWzFdLmlzR1BSKCkpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzJdLmlzR1BSKCkpOwor
ICAgICAgICAgICAgYWRkMzIoaml0LCBwYXJhbXNbMV0uZ3ByKCksIHBhcmFtc1syXS5ncHIoKSwg
cGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgfSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHBhdGNocG9pbnQpOworCisgICAgQ0hFQ0so
Y29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIDEsIDIpID09IDMpOworfQorCit2b2lkIHRlc3RQYXRj
aHBvaW50R1BTY3JhdGNoKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOworICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgIFBhdGNocG9pbnRW
YWx1ZSogcGF0Y2hwb2ludCA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2Ms
IEludDMyLCBPcmlnaW4oKSk7CisgICAgcGF0Y2hwb2ludC0+YXBwZW5kKGFyZzEsIFZhbHVlUmVw
OjpTb21lUmVnaXN0ZXIpOworICAgIHBhdGNocG9pbnQtPmFwcGVuZChhcmcyLCBWYWx1ZVJlcDo6
U29tZVJlZ2lzdGVyKTsKKyAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAy
OworICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAg
ICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsK
KyAgICAgICAgICAgIC8vIFdlIHNob3VsZG4ndCBoYXZlIHNwaWxsZWQgdGhlIGlucHV0cywgc28g
d2UgYXNzZXJ0IHRoYXQgdGhleSdyZSBpbiByZWdpc3RlcnMuCisgICAgICAgICAgICBDSEVDSyhw
YXJhbXMuc2l6ZSgpID09IDMpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzBdLmlzR1BSKCkp
OworICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzFdLmlzR1BSKCkpOworICAgICAgICAgICAgQ0hF
Q0socGFyYW1zWzJdLmlzR1BSKCkpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zLmdwU2NyYXRj
aCgwKSAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtcy5ncFNjcmF0
Y2goMCkgIT0gcGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtcy5ncFNj
cmF0Y2goMCkgIT0gcGFyYW1zWzFdLmdwcigpKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtcy5n
cFNjcmF0Y2goMCkgIT0gcGFyYW1zWzJdLmdwcigpKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFt
cy5ncFNjcmF0Y2goMSkgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgICAgICBDSEVDSyhwYXJh
bXMuZ3BTY3JhdGNoKDEpICE9IHBhcmFtcy5ncFNjcmF0Y2goMCkpOworICAgICAgICAgICAgQ0hF
Q0socGFyYW1zLmdwU2NyYXRjaCgxKSAhPSBwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICAgICAg
Q0hFQ0socGFyYW1zLmdwU2NyYXRjaCgxKSAhPSBwYXJhbXNbMV0uZ3ByKCkpOworICAgICAgICAg
ICAgQ0hFQ0socGFyYW1zLmdwU2NyYXRjaCgxKSAhPSBwYXJhbXNbMl0uZ3ByKCkpOworICAgICAg
ICAgICAgQ0hFQ0soIXBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLmdldChwYXJhbXMuZ3BT
Y3JhdGNoKDApKSk7CisgICAgICAgICAgICBDSEVDSyghcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCkuZ2V0KHBhcmFtcy5ncFNjcmF0Y2goMSkpKTsKKyAgICAgICAgICAgIGFkZDMyKGppdCwg
cGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMl0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7CisgICAg
ICAgIH0pOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCBwYXRjaHBvaW50KTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9j
LCAxLCAyKSA9PSAzKTsKK30KKwordm9pZCB0ZXN0UGF0Y2hwb2ludEZQU2NyYXRjaCgpCit7Cisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogYXJnMiA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIxKTsKKyAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290
LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBJbnQzMiwgT3JpZ2luKCkpOworICAg
IHBhdGNocG9pbnQtPmFwcGVuZChhcmcxLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKTsKKyAgICBw
YXRjaHBvaW50LT5hcHBlbmQoYXJnMiwgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7CisgICAgcGF0
Y2hwb2ludC0+bnVtRlBTY3JhdGNoUmVnaXN0ZXJzID0gMjsKKyAgICBwYXRjaHBvaW50LT5zZXRH
ZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRj
aFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAgICAgICAgICAvLyBXZSBzaG91
bGRuJ3QgaGF2ZSBzcGlsbGVkIHRoZSBpbnB1dHMsIHNvIHdlIGFzc2VydCB0aGF0IHRoZXkncmUg
aW4gcmVnaXN0ZXJzLgorICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9PSAzKTsKKyAg
ICAgICAgICAgIENIRUNLKHBhcmFtc1swXS5pc0dQUigpKTsKKyAgICAgICAgICAgIENIRUNLKHBh
cmFtc1sxXS5pc0dQUigpKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtc1syXS5pc0dQUigpKTsK
KyAgICAgICAgICAgIENIRUNLKHBhcmFtcy5mcFNjcmF0Y2goMCkgIT0gSW52YWxpZEZQUlJlZyk7
CisgICAgICAgICAgICBDSEVDSyhwYXJhbXMuZnBTY3JhdGNoKDEpICE9IEludmFsaWRGUFJSZWcp
OworICAgICAgICAgICAgQ0hFQ0socGFyYW1zLmZwU2NyYXRjaCgxKSAhPSBwYXJhbXMuZnBTY3Jh
dGNoKDApKTsKKyAgICAgICAgICAgIENIRUNLKCFwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMo
KS5nZXQocGFyYW1zLmZwU2NyYXRjaCgwKSkpOworICAgICAgICAgICAgQ0hFQ0soIXBhcmFtcy51
bmF2YWlsYWJsZVJlZ2lzdGVycygpLmdldChwYXJhbXMuZnBTY3JhdGNoKDEpKSk7CisgICAgICAg
ICAgICBhZGQzMihqaXQsIHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzJdLmdwcigpLCBwYXJhbXNb
MF0uZ3ByKCkpOworICAgICAgICB9KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcGF0Y2hwb2ludCk7CisKKyAgICBDSEVDSyhjb21waWxl
QW5kUnVuPGludD4ocHJvYywgMSwgMikgPT0gMyk7Cit9CisKK3ZvaWQgdGVzdFBhdGNocG9pbnRM
b3RzT2ZMYXRlQW55cygpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWZWN0b3I8aW50PiB0aGluZ3M7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMjAwOyBpLS07KQorICAgICAgICB0aGluZ3MuYXBwZW5kKGkpOworCisg
ICAgVmVjdG9yPFZhbHVlKj4gdmFsdWVzOworICAgIGZvciAoaW50JiB0aGluZyA6IHRoaW5ncykg
eworICAgICAgICBWYWx1ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAor
ICAgICAgICAgICAgcHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmdGhpbmcpKTsKKyAg
ICAgICAgdmFsdWVzLmFwcGVuZCh2YWx1ZSk7CisgICAgfQorCisgICAgUGF0Y2hwb2ludFZhbHVl
KiBwYXRjaHBvaW50ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgSW50
MzIsIE9yaWdpbigpKTsKKyAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNy
b1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgZm9yIChWYWx1ZSogdmFsdWUgOiB2YWx1ZXMpCisg
ICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKHZhbHVlLCBWYWx1ZVJl
cDo6TGF0ZUNvbGRBbnkpKTsKKyAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCisgICAgICAg
IFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYg
cGFyYW1zKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxs
b3dTY3JhdGNoKGppdCk7CisgICAgICAgICAgICAvLyBXZSBzaG91bGRuJ3QgaGF2ZSBzcGlsbGVk
IHRoZSBpbnB1dHMsIHNvIHdlIGFzc2VydCB0aGF0IHRoZXkncmUgaW4gcmVnaXN0ZXJzLgorICAg
ICAgICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9PSB0aGluZ3Muc2l6ZSgpICsgMSk7CisgICAg
ICAgICAgICBDSEVDSyhwYXJhbXNbMF0uaXNHUFIoKSk7CisgICAgICAgICAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSwgcGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBwYXJhbXMuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgICAgICAgICBpZiAocGFyYW1zW2ldLmlzR1BSKCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
Q0hFQ0socGFyYW1zW2ldICE9IHBhcmFtc1swXSk7CisgICAgICAgICAgICAgICAgICAgIGppdC5h
ZGQzMihwYXJhbXNbaV0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgQ0hFQ0socGFyYW1zW2ldLmlzU3RhY2soKSk7
CisgICAgICAgICAgICAgICAgICAgIGppdC5hZGQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHBhcmFtc1tpXS5vZmZzZXRGcm9tRlAoKSksIHBhcmFt
c1swXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9
KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwgcGF0Y2hwb2ludCk7CisKKyAgICBDSEVDSyhzdGF0aWNfY2FzdDxzaXplX3Q+KGNvbXBpbGVB
bmRSdW48aW50Pihwcm9jKSkgPT0gKHRoaW5ncy5zaXplKCkgKiAodGhpbmdzLnNpemUoKSAtIDEp
KSAvIDIpOworfQorCit2b2lkIHRlc3RQYXRjaHBvaW50QW55SW1tKFZhbHVlUmVwIHJlcCkKK3sK
KyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAg
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZh
bHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IDQyKTsKKyAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8
UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBJbnQzMiwgT3JpZ2luKCkpOworICAgIHBhdGNocG9pbnQt
PmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzEsIHJlcCkpOworICAgIHBhdGNocG9pbnQtPmFw
cGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzIsIHJlcCkpOworICAgIHBhdGNocG9pbnQtPnNldEdl
bmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBH
ZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNo
UmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFt
cy5zaXplKCkgPT0gMyk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXNbMF0uaXNHUFIoKSk7Cisg
ICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0uaXNHUFIoKSk7CisgICAgICAgICAgICBDSEVDSyhw
YXJhbXNbMl0uaXNDb25zdGFudCgpKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtc1syXS52YWx1
ZSgpID09IDQyKTsKKyAgICAgICAgICAgIGppdC5hZGQzMigKKyAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90PihwYXJhbXNbMl0udmFs
dWUoKSkpLAorICAgICAgICAgICAgICAgIHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigp
KTsKKyAgICAgICAgfSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJl
dHVybiwgT3JpZ2luKCksIHBhdGNocG9pbnQpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxp
bnQ+KHByb2MsIDEpID09IDQzKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL3Rlc3RiM181LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOTY5MDliZmRmNjM1MWUy
YWI2NmVlNzRkZDZjYzUwNGMwYTA4NGMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL3Rlc3RiM181LmNwcApAQCAtMCwwICsxLDI5NDQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJ0ZXN0YjMuaCIKKworI2lmIEVOQUJMRShCM19KSVQpCisKK3ZvaWQgdGVz
dFBhdGNocG9pbnRNYW55SW1tcygpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFw
cGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0Mik7CisgICAgVmFsdWUqIGFy
ZzIgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDMpOwor
ICAgIFZhbHVlKiBhcmczID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIDQzMDAwMDAwMDAwMDAwbGwpOworICAgIFZhbHVlKiBhcmc0ID0gcm9vdC0+YXBwZW5k
TmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0Mi41KTsKKyAgICBQYXRjaHBv
aW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihw
cm9jLCBWb2lkLCBPcmlnaW4oKSk7CisgICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVk
VmFsdWUoYXJnMSwgVmFsdWVSZXA6Oldhcm1BbnkpKTsKKyAgICBwYXRjaHBvaW50LT5hcHBlbmQo
Q29uc3RyYWluZWRWYWx1ZShhcmcyLCBWYWx1ZVJlcDo6V2FybUFueSkpOworICAgIHBhdGNocG9p
bnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzMsIFZhbHVlUmVwOjpXYXJtQW55KSk7Cisg
ICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnNCwgVmFsdWVSZXA6Oldh
cm1BbnkpKTsKKyAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0Nh
bGxIZWxwZXJzJiwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAg
ICAgICAgICAgIENIRUNLKHBhcmFtcy5zaXplKCkgPT0gNCk7CisgICAgICAgICAgICBDSEVDSyhw
YXJhbXNbMF0gPT0gVmFsdWVSZXA6OmNvbnN0YW50KDQyKSk7CisgICAgICAgICAgICBDSEVDSyhw
YXJhbXNbMV0gPT0gVmFsdWVSZXA6OmNvbnN0YW50KDQzKSk7CisgICAgICAgICAgICBDSEVDSyhw
YXJhbXNbMl0gPT0gVmFsdWVSZXA6OmNvbnN0YW50KDQzMDAwMDAwMDAwMDAwbGwpKTsKKyAgICAg
ICAgICAgIENIRUNLKHBhcmFtc1szXSA9PSBWYWx1ZVJlcDo6Y29uc3RhbnQoYml0d2lzZV9jYXN0
PGludDY0X3Q+KDQyLjUpKSk7CisgICAgICAgIH0pOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIENIRUNL
KCFjb21waWxlQW5kUnVuPGludD4ocHJvYykpOworfQorCit2b2lkIHRlc3RQYXRjaHBvaW50V2l0
aFJlZ2lzdGVyUmVzdWx0KCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOworICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgIFBhdGNocG9pbnRW
YWx1ZSogcGF0Y2hwb2ludCA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2Ms
IEludDMyLCBPcmlnaW4oKSk7CisgICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFs
dWUoYXJnMSwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOworICAgIHBhdGNocG9pbnQtPmFwcGVu
ZChDb25zdHJhaW5lZFZhbHVlKGFyZzIsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICBw
YXRjaHBvaW50LT5yZXN1bHRDb25zdHJhaW50ID0gVmFsdWVSZXA6OnJlZyhHUFJJbmZvOjpub25B
cmdHUFIwKTsKKyAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7
CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNo
KGppdCk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09IDMpOworICAgICAgICAg
ICAgQ0hFQ0socGFyYW1zWzBdID09IFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6bm9uQXJnR1BSMCkp
OworICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzFdLmlzR1BSKCkpOworICAgICAgICAgICAgQ0hF
Q0socGFyYW1zWzJdLmlzR1BSKCkpOworICAgICAgICAgICAgYWRkMzIoaml0LCBwYXJhbXNbMV0u
Z3ByKCksIHBhcmFtc1syXS5ncHIoKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIH0p
OworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LCBwYXRjaHBvaW50KTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCAxLCAy
KSA9PSAzKTsKK30KKwordm9pZCB0ZXN0UGF0Y2hwb2ludFdpdGhTdGFja0FyZ3VtZW50UmVzdWx0
KCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVl
KiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2lu
dCA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIEludDMyLCBPcmlnaW4o
KSk7CisgICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMSwgVmFsdWVS
ZXA6OlNvbWVSZWdpc3RlcikpOworICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZh
bHVlKGFyZzIsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICBwYXRjaHBvaW50LT5yZXN1
bHRDb25zdHJhaW50ID0gVmFsdWVSZXA6OnN0YWNrQXJndW1lbnQoMCk7CisgICAgcGF0Y2hwb2lu
dC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgIHBh
dGNocG9pbnQtPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwg
Y29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIEFs
bG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAg
ICAgIENIRUNLKHBhcmFtcy5zaXplKCkgPT0gMyk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXNb
MF0gPT0gVmFsdWVSZXA6OnN0YWNrKC1zdGF0aWNfY2FzdDxpbnRwdHJfdD4ocHJvYy5mcmFtZVNp
emUoKSkpKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtc1sxXS5pc0dQUigpKTsKKyAgICAgICAg
ICAgIENIRUNLKHBhcmFtc1syXS5pc0dQUigpKTsKKyAgICAgICAgICAgIGppdC5hZGQzMihwYXJh
bXNbMV0uZ3ByKCksIHBhcmFtc1syXS5ncHIoKSwgaml0LnNjcmF0Y2hSZWdpc3RlcigpKTsKKyAg
ICAgICAgICAgIGppdC5zdG9yZTMyKGppdC5zY3JhdGNoUmVnaXN0ZXIoKSwgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIDApKTsKKyAgICAg
ICAgfSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIHBhdGNocG9pbnQpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2Ms
IDEsIDIpID09IDMpOworfQorCit2b2lkIHRlc3RQYXRjaHBvaW50V2l0aEFueVJlc3VsdCgpCit7
CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogYXJn
MiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBy
b290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBEb3VibGUsIE9yaWdpbigpKTsK
KyAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmcxLCBWYWx1ZVJlcDo6
U29tZVJlZ2lzdGVyKSk7CisgICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUo
YXJnMiwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOworICAgIHBhdGNocG9pbnQtPnJlc3VsdENv
bnN0cmFpbnQgPSBWYWx1ZVJlcDo6V2FybUFueTsKKyAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0
ZShSZWdpc3RlclNldDo6YWxsRlBScygpKTsKKyAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lz
dGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgcGF0Y2hwb2ludC0+Y2xvYmJl
cihSZWdpc3RlclNldChHUFJJbmZvOjpyZWdUMCkpOworICAgIHBhdGNocG9pbnQtPnNldEdlbmVy
YXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5l
cmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVn
aXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtcy5z
aXplKCkgPT0gMyk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXNbMF0uaXNTdGFjaygpKTsKKyAg
ICAgICAgICAgIENIRUNLKHBhcmFtc1sxXS5pc0dQUigpKTsKKyAgICAgICAgICAgIENIRUNLKHBh
cmFtc1syXS5pc0dQUigpKTsKKyAgICAgICAgICAgIGFkZDMyKGppdCwgcGFyYW1zWzFdLmdwcigp
LCBwYXJhbXNbMl0uZ3ByKCksIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5jb252
ZXJ0SW50MzJUb0RvdWJsZShHUFJJbmZvOjpyZWdUMCwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAg
ICAgICAgICBqaXQuc3RvcmVEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBwYXJhbXNbMF0ub2Zmc2V0RnJvbUZQ
KCkpKTsKKyAgICAgICAgfSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2Ms
IFJldHVybiwgT3JpZ2luKCksIHBhdGNocG9pbnQpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1
bjxkb3VibGU+KHByb2MsIDEsIDIpID09IDMpOworfQorCit2b2lkIHRlc3RTaW1wbGVDaGVjaygp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEpCisg
ICAgICAgIHJldHVybjsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIFZhbHVlKiBhcmcgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgQ2hlY2tWYWx1ZSogY2hlY2sg
PSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2ssIE9yaWdpbigpLCBhcmcp
OworICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAg
ICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAg
ICAgICAgICBDSEVDSyghcGFyYW1zLnNpemUoKSk7CisKKyAgICAgICAgICAgIC8vIFRoaXMgc2hv
dWxkIGFsd2F5cyB3b3JrIGJlY2F1c2UgYSBmdW5jdGlvbiB0aGlzIHNpbXBsZSBzaG91bGQgbmV2
ZXIgaGF2ZSBjYWxsZWUKKyAgICAgICAgICAgIC8vIHNhdmVzLgorICAgICAgICAgICAgaml0Lm1v
dmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoNDIpLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQ
Uik7CisgICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAgICAgICAg
IGppdC5yZXQoKTsKKyAgICAgICAgfSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8Q29uc3Qz
MlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVBy
b2MocHJvYyk7CisKKyAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgMCkgPT0gMCk7CisgICAg
Q0hFQ0soaW52b2tlPGludD4oKmNvZGUsIDEpID09IDQyKTsKK30KKwordm9pZCB0ZXN0Q2hlY2tG
YWxzZSgpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKyAgICBDaGVja1ZhbHVlKiBjaGVjayA9IHJvb3QtPmFwcGVuZE5ldzxD
aGVja1ZhbHVlPigKKyAgICAgICAgcHJvYywgQ2hlY2ssIE9yaWdpbigpLCByb290LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworICAgIHVuc2lnbmVkIG9wdExl
dmVsID0gcHJvYy5vcHRMZXZlbCgpOworICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoCisgICAgICAg
IFsmXSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewor
ICAgICAgICAgICAgaWYgKG9wdExldmVsID4gMSkKKyAgICAgICAgICAgICAgICBDSEVDSyghIlRo
aXMgc2hvdWxkIG5vdCBoYXZlIGV4ZWN1dGVkIik7CisgICAgICAgIH0pOworICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9v
dC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIGF1
dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworCisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNv
ZGUpID09IDApOworfQorCit2b2lkIHRlc3RDaGVja1RydWUoKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAxKQorICAgICAgICByZXR1cm47CisgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBDaGVja1ZhbHVlKiBjaGVj
ayA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPigKKyAgICAgICAgcHJvYywgQ2hlY2ssIE9y
aWdpbigpLCByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkp
OworICAgIHVuc2lnbmVkIG9wdExldmVsID0gcHJvYy5vcHRMZXZlbCgpOworICAgIGNoZWNrLT5z
ZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2Ny
YXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAgICAgICAgICBpZiAob3B0
TGV2ZWwgPiAxKQorICAgICAgICAgICAgICAgIENIRUNLKHBhcmFtcy52YWx1ZSgpLT5vcGNvZGUo
KSA9PSBQYXRjaHBvaW50KTsKKyAgICAgICAgICAgIENIRUNLKCFwYXJhbXMuc2l6ZSgpKTsKKwor
ICAgICAgICAgICAgLy8gVGhpcyBzaG91bGQgYWx3YXlzIHdvcmsgYmVjYXVzZSBhIGZ1bmN0aW9u
IHRoaXMgc2ltcGxlIHNob3VsZCBuZXZlciBoYXZlIGNhbGxlZQorICAgICAgICAgICAgLy8gc2F2
ZXMuCisgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMig0Miks
IEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25F
cGlsb2d1ZSgpOworICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICB9KTsKKyAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAg
ICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKworICAgIENIRUNLKGludm9rZTxpbnQ+
KCpjb2RlKSA9PSA0Mik7Cit9CisKK3ZvaWQgdGVzdENoZWNrTGVzc1RoYW4oKQoreworICAgIFBy
b2NlZHVyZSBwcm9jOworICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAxKQorICAgICAgICByZXR1
cm47CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSog
YXJnID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIENoZWNrVmFsdWUqIGNoZWNrID0g
cm9vdC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KAorICAgICAgICBwcm9jLCBDaGVjaywgT3JpZ2lu
KCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBM
ZXNzVGhhbiwgT3JpZ2luKCksIGFyZywKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0MikpKTsKKyAgICBjaGVjay0+c2V0R2VuZXJhdG9y
KAorICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRp
b25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3Rl
clVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgQ0hFQ0soIXBhcmFtcy5zaXpl
KCkpOworCisgICAgICAgICAgICAvLyBUaGlzIHNob3VsZCBhbHdheXMgd29yayBiZWNhdXNlIGEg
ZnVuY3Rpb24gdGhpcyBzaW1wbGUgc2hvdWxkIG5ldmVyIGhhdmUgY2FsbGVlCisgICAgICAgICAg
ICAvLyBzYXZlcy4KKyAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKDQyKSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworICAgICAgICAgICAgaml0LmVtaXRG
dW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgIH0pOwor
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDAp
KTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworCisgICAgQ0hFQ0soaW52
b2tlPGludD4oKmNvZGUsIDQyKSA9PSAwKTsKKyAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwg
MTAwMCkgPT0gMCk7CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsIDQxKSA9PSA0Mik7Cisg
ICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsIDApID09IDQyKTsKKyAgICBDSEVDSyhpbnZva2U8
aW50PigqY29kZSwgLTEpID09IDQyKTsKK30KKwordm9pZCB0ZXN0Q2hlY2tNZWdhQ29tYm8oKQor
eworICAgIFByb2NlZHVyZSBwcm9jOworICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAxKQorICAg
ICAgICByZXR1cm47CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBWYWx1ZSogYmFzZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogaW5kZXggPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBaRXh0MzIsIE9yaWdpbigpLAorICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9y
aWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSk7CisKKyAgICBWYWx1ZSogcHRy
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwg
YmFzZSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2Ms
IFNobCwgT3JpZ2luKCksIGluZGV4LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0
MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKSk7CisKKyAgICBDaGVja1ZhbHVlKiBjaGVjayA9
IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPigKKyAgICAgICAgcHJvYywgQ2hlY2ssIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywg
TGVzc1RoYW4sIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZh
bHVlPihwcm9jLCBMb2FkOFMsIE9yaWdpbigpLCBwdHIpLAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKSkpOworICAgIGNoZWNrLT5z
ZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2Ny
YXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAgICAgICAgICBDSEVDSygh
cGFyYW1zLnNpemUoKSk7CisKKyAgICAgICAgICAgIC8vIFRoaXMgc2hvdWxkIGFsd2F5cyB3b3Jr
IGJlY2F1c2UgYSBmdW5jdGlvbiB0aGlzIHNpbXBsZSBzaG91bGQgbmV2ZXIgaGF2ZSBjYWxsZWUK
KyAgICAgICAgICAgIC8vIHNhdmVzLgorICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoNDIpLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisgICAgICAgICAg
ICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAgICAgICAgIGppdC5yZXQoKTsKKyAg
ICAgICAgfSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgMCkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAg
ICBpbnQ4X3QgdmFsdWU7CisgICAgdmFsdWUgPSA0MjsKKyAgICBDSEVDSyhpbnZva2U8aW50Pigq
Y29kZSwgJnZhbHVlIC0gMiwgMSkgPT0gMCk7CisgICAgdmFsdWUgPSAxMjc7CisgICAgQ0hFQ0so
aW52b2tlPGludD4oKmNvZGUsICZ2YWx1ZSAtIDIsIDEpID09IDApOworICAgIHZhbHVlID0gNDE7
CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsICZ2YWx1ZSAtIDIsIDEpID09IDQyKTsKKyAg
ICB2YWx1ZSA9IDA7CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsICZ2YWx1ZSAtIDIsIDEp
ID09IDQyKTsKKyAgICB2YWx1ZSA9IC0xOworICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAm
dmFsdWUgLSAyLCAxKSA9PSA0Mik7Cit9CisKK3ZvaWQgdGVzdENoZWNrVHJpY2t5TWVnYUNvbWJv
KCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBpZiAocHJvYy5vcHRMZXZlbCgpIDwgMSkK
KyAgICAgICAgcmV0dXJuOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisgICAgVmFsdWUqIGJhc2UgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgVmFsdWUqIGluZGV4ID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgWkV4dDMyLCBPcmlnaW4oKSwK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwg
T3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMSkpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIDEpKSk7CisKKyAgICBWYWx1ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwgYmFzZSwKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFNobCwgT3JpZ2luKCksIGluZGV4LAor
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IDEpKSk7CisKKyAgICBDaGVja1ZhbHVlKiBjaGVjayA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1Zh
bHVlPigKKyAgICAgICAgcHJvYywgQ2hlY2ssIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTGVzc1RoYW4sIE9yaWdpbigpLAorICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkOFMsIE9yaWdp
bigpLCBwdHIpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIDQyKSkpOworICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoCisgICAgICAgIFsm
XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFy
YW1zKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dT
Y3JhdGNoKGppdCk7CisgICAgICAgICAgICBDSEVDSyghcGFyYW1zLnNpemUoKSk7CisKKyAgICAg
ICAgICAgIC8vIFRoaXMgc2hvdWxkIGFsd2F5cyB3b3JrIGJlY2F1c2UgYSBmdW5jdGlvbiB0aGlz
IHNpbXBsZSBzaG91bGQgbmV2ZXIgaGF2ZSBjYWxsZWUKKyAgICAgICAgICAgIC8vIHNhdmVzLgor
ICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoNDIpLCBHUFJJ
bmZvOjpyZXR1cm5WYWx1ZUdQUik7CisgICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9n
dWUoKTsKKyAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgfSk7CisgICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByb290
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgYXV0
byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICBpbnQ4X3QgdmFsdWU7CisgICAgdmFs
dWUgPSA0MjsKKyAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgJnZhbHVlIC0gMiwgMCkgPT0g
MCk7CisgICAgdmFsdWUgPSAxMjc7CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsICZ2YWx1
ZSAtIDIsIDApID09IDApOworICAgIHZhbHVlID0gNDE7CisgICAgQ0hFQ0soaW52b2tlPGludD4o
KmNvZGUsICZ2YWx1ZSAtIDIsIDApID09IDQyKTsKKyAgICB2YWx1ZSA9IDA7CisgICAgQ0hFQ0so
aW52b2tlPGludD4oKmNvZGUsICZ2YWx1ZSAtIDIsIDApID09IDQyKTsKKyAgICB2YWx1ZSA9IC0x
OworICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAmdmFsdWUgLSAyLCAwKSA9PSA0Mik7Cit9
CisKK3ZvaWQgdGVzdENoZWNrVHdvTWVnYUNvbWJvcygpCit7CisgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEpCisgICAgICAgIHJldHVybjsKKyAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBiYXNlID0gcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApOworICAgIFZhbHVlKiBpbmRleCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgIHByb2MsIFpFeHQzMiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMSkpKTsKKworICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLCBiYXNlLAorICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgU2hsLCBPcmlnaW4oKSwgaW5kZXgs
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgMSkpKTsKKworICAgIFZhbHVlKiBwcmVkaWNhdGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICBwcm9jLCBMZXNzVGhhbiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZDhTLCBPcmlnaW4oKSwgcHRyKSwKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKSk7CisKKyAg
ICBDaGVja1ZhbHVlKiBjaGVjayA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBD
aGVjaywgT3JpZ2luKCksIHByZWRpY2F0ZSk7CisgICAgY2hlY2stPnNldEdlbmVyYXRvcigKKyAg
ICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2Fn
ZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAgICAgIENIRUNLKCFwYXJhbXMuc2l6ZSgpKTsK
KworICAgICAgICAgICAgLy8gVGhpcyBzaG91bGQgYWx3YXlzIHdvcmsgYmVjYXVzZSBhIGZ1bmN0
aW9uIHRoaXMgc2ltcGxlIHNob3VsZCBuZXZlciBoYXZlIGNhbGxlZQorICAgICAgICAgICAgLy8g
c2F2ZXMuCisgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMig0
MiksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rp
b25FcGlsb2d1ZSgpOworICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICB9KTsKKyAgICBD
aGVja1ZhbHVlKiBjaGVjazIgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hl
Y2ssIE9yaWdpbigpLCBwcmVkaWNhdGUpOworICAgIGNoZWNrMi0+c2V0R2VuZXJhdG9yKAorICAg
ICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJh
bXMmIHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdl
IGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgQ0hFQ0soIXBhcmFtcy5zaXplKCkpOwor
CisgICAgICAgICAgICAvLyBUaGlzIHNob3VsZCBhbHdheXMgd29yayBiZWNhdXNlIGEgZnVuY3Rp
b24gdGhpcyBzaW1wbGUgc2hvdWxkIG5ldmVyIGhhdmUgY2FsbGVlCisgICAgICAgICAgICAvLyBz
YXZlcy4KKyAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDQz
KSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlv
bkVwaWxvZ3VlKCk7CisgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgIH0pOworICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKwor
ICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworCisgICAgaW50OF90IHZhbHVlOwor
ICAgIHZhbHVlID0gNDI7CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsICZ2YWx1ZSAtIDIs
IDEpID09IDApOworICAgIHZhbHVlID0gMTI3OworICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2Rl
LCAmdmFsdWUgLSAyLCAxKSA9PSAwKTsKKyAgICB2YWx1ZSA9IDQxOworICAgIENIRUNLKGludm9r
ZTxpbnQ+KCpjb2RlLCAmdmFsdWUgLSAyLCAxKSA9PSA0Mik7CisgICAgdmFsdWUgPSAwOworICAg
IENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAmdmFsdWUgLSAyLCAxKSA9PSA0Mik7CisgICAgdmFs
dWUgPSAtMTsKKyAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgJnZhbHVlIC0gMiwgMSkgPT0g
NDIpOworfQorCit2b2lkIHRlc3RDaGVja1R3b05vblJlZHVuZGFudE1lZ2FDb21ib3MoKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAxKQorICAgICAg
ICByZXR1cm47CisKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
IEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sq
IGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgVmFsdWUqIGJhc2UgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7CisgICAgVmFsdWUqIGluZGV4ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgcHJvYywgWkV4dDMyLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIxKSkpOworICAgIFZhbHVlKiBicmFuY2hQcmVkaWNhdGUgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigp
LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDB4ZmYpKTsKKworICAgIFZhbHVlKiBwdHIg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLCBi
YXNlLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywg
U2hsLCBPcmlnaW4oKSwgaW5kZXgsCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Qz
MlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpKTsKKworICAgIFZhbHVlKiBjaGVja1ByZWRpY2F0
ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIExlc3NUaGFuLCBPcmln
aW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkOFMs
IE9yaWdpbigpLCBwdHIpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgNDIpKTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
KyAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwgYnJhbmNoUHJlZGljYXRlLAorICAgICAg
ICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsK
KworICAgIENoZWNrVmFsdWUqIGNoZWNrID0gdGhlbkNhc2UtPmFwcGVuZE5ldzxDaGVja1ZhbHVl
Pihwcm9jLCBDaGVjaywgT3JpZ2luKCksIGNoZWNrUHJlZGljYXRlKTsKKyAgICBjaGVjay0+c2V0
R2VuZXJhdG9yKAorICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21h
cEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0
Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgQ0hFQ0soIXBh
cmFtcy5zaXplKCkpOworCisgICAgICAgICAgICAvLyBUaGlzIHNob3VsZCBhbHdheXMgd29yayBi
ZWNhdXNlIGEgZnVuY3Rpb24gdGhpcyBzaW1wbGUgc2hvdWxkIG5ldmVyIGhhdmUgY2FsbGVlCisg
ICAgICAgICAgICAvLyBzYXZlcy4KKyAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKDQyKSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworICAgICAgICAgICAg
aml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAgICAgICBqaXQucmV0KCk7CisgICAg
ICAgIH0pOworICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgNDMpKTsKKworICAgIENoZWNrVmFsdWUqIGNoZWNrMiA9IGVsc2VDYXNl
LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2ssIE9yaWdpbigpLCBjaGVja1ByZWRp
Y2F0ZSk7CisgICAgY2hlY2syLT5zZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0NhbGxIZWxw
ZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAg
ICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7
CisgICAgICAgICAgICBDSEVDSyghcGFyYW1zLnNpemUoKSk7CisKKyAgICAgICAgICAgIC8vIFRo
aXMgc2hvdWxkIGFsd2F5cyB3b3JrIGJlY2F1c2UgYSBmdW5jdGlvbiB0aGlzIHNpbXBsZSBzaG91
bGQgbmV2ZXIgaGF2ZSBjYWxsZWUKKyAgICAgICAgICAgIC8vIHNhdmVzLgorICAgICAgICAgICAg
aml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoNDQpLCBHUFJJbmZvOjpyZXR1cm5W
YWx1ZUdQUik7CisgICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAg
ICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgfSk7CisgICAgZWxzZUNhc2UtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgZWxzZUNhc2UtPmFw
cGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0NSkpOworCisgICAgYXV0byBj
b2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICBpbnQ4X3QgdmFsdWU7CisKKyAgICB2YWx1
ZSA9IDQyOworICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAmdmFsdWUgLSAyLCAxLCB0cnVl
KSA9PSA0Myk7CisgICAgdmFsdWUgPSAxMjc7CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUs
ICZ2YWx1ZSAtIDIsIDEsIHRydWUpID09IDQzKTsKKyAgICB2YWx1ZSA9IDQxOworICAgIENIRUNL
KGludm9rZTxpbnQ+KCpjb2RlLCAmdmFsdWUgLSAyLCAxLCB0cnVlKSA9PSA0Mik7CisgICAgdmFs
dWUgPSAwOworICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAmdmFsdWUgLSAyLCAxLCB0cnVl
KSA9PSA0Mik7CisgICAgdmFsdWUgPSAtMTsKKyAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwg
JnZhbHVlIC0gMiwgMSwgdHJ1ZSkgPT0gNDIpOworCisgICAgdmFsdWUgPSA0MjsKKyAgICBDSEVD
SyhpbnZva2U8aW50PigqY29kZSwgJnZhbHVlIC0gMiwgMSwgZmFsc2UpID09IDQ1KTsKKyAgICB2
YWx1ZSA9IDEyNzsKKyAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgJnZhbHVlIC0gMiwgMSwg
ZmFsc2UpID09IDQ1KTsKKyAgICB2YWx1ZSA9IDQxOworICAgIENIRUNLKGludm9rZTxpbnQ+KCpj
b2RlLCAmdmFsdWUgLSAyLCAxLCBmYWxzZSkgPT0gNDQpOworICAgIHZhbHVlID0gMDsKKyAgICBD
SEVDSyhpbnZva2U8aW50PigqY29kZSwgJnZhbHVlIC0gMiwgMSwgZmFsc2UpID09IDQ0KTsKKyAg
ICB2YWx1ZSA9IC0xOworICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAmdmFsdWUgLSAyLCAx
LCBmYWxzZSkgPT0gNDQpOworfQorCit2b2lkIHRlc3RDaGVja0FkZEltbSgpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEpCisgICAgICAgIHJldHVy
bjsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBh
cmcxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKTsKKyAgICBDaGVja1Zh
bHVlKiBjaGVja0FkZCA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja0Fk
ZCwgT3JpZ2luKCksIGFyZzEsIGFyZzIpOworICAgIGNoZWNrQWRkLT5hcHBlbmQoYXJnMSk7Cisg
ICAgY2hlY2tBZGQtPmFwcGVuZChhcmcyKTsKKyAgICBjaGVja0FkZC0+c2V0R2VuZXJhdG9yKAor
ICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25Q
YXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVz
YWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9
PSAyKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtc1swXS5pc0dQUigpKTsKKyAgICAgICAgICAg
IENIRUNLKHBhcmFtc1sxXS5pc0NvbnN0YW50KCkpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1z
WzFdLnZhbHVlKCkgPT0gNDIpOworICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91Ymxl
KHBhcmFtc1swXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBqaXQuY29u
dmVydEludDMyVG9Eb3VibGUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoNDIpLCBGUFJJbmZv
OjpmcFJlZ1QxKTsKKyAgICAgICAgICAgIGppdC5hZGREb3VibGUoRlBSSW5mbzo6ZnBSZWdUMSwg
RlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUo
KTsKKyAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgfSk7CisgICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIElUb0QsIE9yaWdpbigpLCBjaGVja0FkZCkp
OworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICBDSEVDSyhpbnZv
a2U8ZG91YmxlPigqY29kZSwgMCkgPT0gNDIuMCk7CisgICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4o
KmNvZGUsIDEpID09IDQzLjApOworICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCA0Mikg
PT0gODQuMCk7CisgICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDIxNDc0ODM2NDcpID09
IDIxNDc0ODM2ODkuMCk7Cit9CisKK3ZvaWQgdGVzdENoZWNrQWRkSW1tQ29tbXV0ZSgpCit7Cisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEpCisgICAgICAg
IHJldHVybjsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZh
bHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgVHJ1bmMs
IE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmcyID0g
cm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKTsKKyAgICBD
aGVja1ZhbHVlKiBjaGVja0FkZCA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBD
aGVja0FkZCwgT3JpZ2luKCksIGFyZzIsIGFyZzEpOworICAgIGNoZWNrQWRkLT5hcHBlbmQoYXJn
MSk7CisgICAgY2hlY2tBZGQtPmFwcGVuZChhcmcyKTsKKyAgICBjaGVja0FkZC0+c2V0R2VuZXJh
dG9yKAorICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdp
c3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnNp
emUoKSA9PSAyKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtc1swXS5pc0dQUigpKTsKKyAgICAg
ICAgICAgIENIRUNLKHBhcmFtc1sxXS5pc0NvbnN0YW50KCkpOworICAgICAgICAgICAgQ0hFQ0so
cGFyYW1zWzFdLnZhbHVlKCkgPT0gNDIpOworICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRv
RG91YmxlKHBhcmFtc1swXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBq
aXQuY29udmVydEludDMyVG9Eb3VibGUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoNDIpLCBG
UFJJbmZvOjpmcFJlZ1QxKTsKKyAgICAgICAgICAgIGppdC5hZGREb3VibGUoRlBSSW5mbzo6ZnBS
ZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBp
bG9ndWUoKTsKKyAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgfSk7CisgICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIElUb0QsIE9yaWdpbigpLCBjaGVj
a0FkZCkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICBDSEVD
SyhpbnZva2U8ZG91YmxlPigqY29kZSwgMCkgPT0gNDIuMCk7CisgICAgQ0hFQ0soaW52b2tlPGRv
dWJsZT4oKmNvZGUsIDEpID09IDQzLjApOworICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2Rl
LCA0MikgPT0gODQuMCk7CisgICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDIxNDc0ODM2
NDcpID09IDIxNDc0ODM2ODkuMCk7Cit9CisKK3ZvaWQgdGVzdENoZWNrQWRkSW1tU29tZVJlZ2lz
dGVyKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBpZiAocHJvYy5vcHRMZXZlbCgpIDwg
MSkKKyAgICAgICAgcmV0dXJuOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBw
cm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFs
dWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
NDIpOworICAgIENoZWNrVmFsdWUqIGNoZWNrQWRkID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFs
dWU+KHByb2MsIENoZWNrQWRkLCBPcmlnaW4oKSwgYXJnMSwgYXJnMik7CisgICAgY2hlY2tBZGQt
PmFwcGVuZFNvbWVSZWdpc3RlcihhcmcxKTsKKyAgICBjaGVja0FkZC0+YXBwZW5kU29tZVJlZ2lz
dGVyKGFyZzIpOworICAgIGNoZWNrQWRkLT5zZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7
CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNo
KGppdCk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09IDIpOworICAgICAgICAg
ICAgQ0hFQ0socGFyYW1zWzBdLmlzR1BSKCkpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzFd
LmlzR1BSKCkpOworICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKHBhcmFtc1sw
XS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBqaXQuY29udmVydEludDMy
VG9Eb3VibGUocGFyYW1zWzFdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QxKTsKKyAgICAgICAgICAg
IGppdC5hZGREb3VibGUoRlBSSW5mbzo6ZnBSZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAg
ICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAgICAgICAgIGppdC5yZXQo
KTsKKyAgICAgICAgfSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIElUb0QsIE9yaWdpbigpLCBjaGVja0FkZCkpOworCisgICAgYXV0byBjb2RlID0gY29t
cGlsZVByb2MocHJvYyk7CisKKyAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgMCkgPT0g
NDIuMCk7CisgICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDEpID09IDQzLjApOworICAg
IENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCA0MikgPT0gODQuMCk7CisgICAgQ0hFQ0soaW52
b2tlPGRvdWJsZT4oKmNvZGUsIDIxNDc0ODM2NDcpID09IDIxNDc0ODM2ODkuMCk7Cit9CisKK3Zv
aWQgdGVzdENoZWNrQWRkKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBpZiAocHJvYy5v
cHRMZXZlbCgpIDwgMSkKKyAgICAgICAgcmV0dXJuOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSk7CisgICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBw
cm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgQ2hl
Y2tWYWx1ZSogY2hlY2tBZGQgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hl
Y2tBZGQsIE9yaWdpbigpLCBhcmcxLCBhcmcyKTsKKyAgICBjaGVja0FkZC0+YXBwZW5kU29tZVJl
Z2lzdGVyKGFyZzEpOworICAgIGNoZWNrQWRkLT5hcHBlbmRTb21lUmVnaXN0ZXIoYXJnMik7Cisg
ICAgY2hlY2tBZGQtPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAg
IEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAg
ICAgICAgIENIRUNLKHBhcmFtcy5zaXplKCkgPT0gMik7CisgICAgICAgICAgICBDSEVDSyhwYXJh
bXNbMF0uaXNHUFIoKSk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0uaXNHUFIoKSk7Cisg
ICAgICAgICAgICBqaXQuY29udmVydEludDMyVG9Eb3VibGUocGFyYW1zWzBdLmdwcigpLCBGUFJJ
bmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShwYXJh
bXNbMV0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDEpOworICAgICAgICAgICAgaml0LmFkZERvdWJs
ZShGUFJJbmZvOjpmcFJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5l
bWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICB9
KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSVRvRCwg
T3JpZ2luKCksIGNoZWNrQWRkKSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9j
KTsKKworICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAwLCA0MikgPT0gNDIuMCk7Cisg
ICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDEsIDQyKSA9PSA0My4wKTsKKyAgICBDSEVD
SyhpbnZva2U8ZG91YmxlPigqY29kZSwgNDIsIDQyKSA9PSA4NC4wKTsKKyAgICBDSEVDSyhpbnZv
a2U8ZG91YmxlPigqY29kZSwgMjE0NzQ4MzY0NywgNDIpID09IDIxNDc0ODM2ODkuMCk7Cit9CisK
K3ZvaWQgdGVzdENoZWNrQWRkNjQoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIGlmIChw
cm9jLm9wdExldmVsKCkgPCAxKQorICAgICAgICByZXR1cm47CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
KyAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICBDaGVja1ZhbHVlKiBjaGVj
a0FkZCA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja0FkZCwgT3JpZ2lu
KCksIGFyZzEsIGFyZzIpOworICAgIGNoZWNrQWRkLT5hcHBlbmRTb21lUmVnaXN0ZXIoYXJnMSk7
CisgICAgY2hlY2tBZGQtPmFwcGVuZFNvbWVSZWdpc3RlcihhcmcyKTsKKyAgICBjaGVja0FkZC0+
c2V0R2VuZXJhdG9yKAorICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1Nj
cmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgQ0hFQ0so
cGFyYW1zLnNpemUoKSA9PSAyKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtc1swXS5pc0dQUigp
KTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtc1sxXS5pc0dQUigpKTsKKyAgICAgICAgICAgIGpp
dC5jb252ZXJ0SW50NjRUb0RvdWJsZShwYXJhbXNbMF0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDAp
OworICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQ2NFRvRG91YmxlKHBhcmFtc1sxXS5ncHIoKSwg
RlBSSW5mbzo6ZnBSZWdUMSk7CisgICAgICAgICAgICBqaXQuYWRkRG91YmxlKEZQUkluZm86OmZw
UmVnVDEsIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVw
aWxvZ3VlKCk7CisgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgIH0pOworICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJVG9ELCBPcmlnaW4oKSwgY2hl
Y2tBZGQpKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworCisgICAgQ0hF
Q0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDBsbCwgNDJsbCkgPT0gNDIuMCk7CisgICAgQ0hFQ0so
aW52b2tlPGRvdWJsZT4oKmNvZGUsIDFsbCwgNDJsbCkgPT0gNDMuMCk7CisgICAgQ0hFQ0soaW52
b2tlPGRvdWJsZT4oKmNvZGUsIDQybGwsIDQybGwpID09IDg0LjApOworICAgIENIRUNLKGludm9r
ZTxkb3VibGU+KCpjb2RlLCA5MjIzMzcyMDM2ODU0Nzc1ODA3bGwsIDQybGwpID09IHN0YXRpY19j
YXN0PGRvdWJsZT4oOTIyMzM3MjAzNjg1NDc3NTgwN2xsKSArIDQyLjApOworfQorCit2b2lkIHRl
c3RDaGVja0FkZEZvbGQoaW50IGEsIGludCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZzEgPSBy
b290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7CisgICAgVmFs
dWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
Yik7CisgICAgQ2hlY2tWYWx1ZSogY2hlY2tBZGQgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1
ZT4ocHJvYywgQ2hlY2tBZGQsIE9yaWdpbigpLCBhcmcxLCBhcmcyKTsKKyAgICB1bnNpZ25lZCBv
cHRMZXZlbCA9IHByb2Mub3B0TGV2ZWwoKTsKKyAgICBjaGVja0FkZC0+c2V0R2VuZXJhdG9yKAor
ICAgICAgICBbJl0gKENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFt
cyYpIHsKKyAgICAgICAgICAgIGlmIChvcHRMZXZlbCA+IDEpCisgICAgICAgICAgICAgICAgQ0hF
Q0soISJTaG91bGQgaGF2ZSBiZWVuIGZvbGRlZCIpOworICAgICAgICB9KTsKKyAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2hlY2tBZGQpOwor
CisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICBDSEVDSyhpbnZva2U8
aW50PigqY29kZSkgPT0gYSArIGIpOworfQorCit2b2lkIHRlc3RDaGVja0FkZEZvbGRGYWlsKGlu
dCBhLCBpbnQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBpZiAocHJvYy5vcHRMZXZl
bCgpIDwgMSkKKyAgICAgICAgcmV0dXJuOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgYSk7CisgICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7CisgICAgQ2hlY2tWYWx1ZSogY2hlY2tB
ZGQgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2tBZGQsIE9yaWdpbigp
LCBhcmcxLCBhcmcyKTsKKyAgICBjaGVja0FkZC0+c2V0R2VuZXJhdG9yKAorICAgICAgICBbJl0g
KENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7Cisg
ICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGpp
dCk7CisgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMig0Miks
IEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25F
cGlsb2d1ZSgpOworICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICB9KTsKKyAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2hlY2tBZGQp
OworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICBDSEVDSyhpbnZv
a2U8aW50PigqY29kZSkgPT0gNDIpOworfQorCit2b2lkIHRlc3RDaGVja0FkZEFyZ3VtZW50QWxp
YXNpbmc2NCgpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAg
ICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICBWYWx1ZSogYXJnMyA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIyKTsKKworICAgIC8vIFByZXRlbmQgdG8gdXNlIGFsbCB0aGUgYXJncy4KKyAgICBQ
YXRjaHBvaW50VmFsdWUqIHVzZUFyZ3MgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVl
Pihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7CisgICAgdXNlQXJncy0+YXBwZW5kKENvbnN0cmFpbmVk
VmFsdWUoYXJnMSwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOworICAgIHVzZUFyZ3MtPmFwcGVu
ZChDb25zdHJhaW5lZFZhbHVlKGFyZzIsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICB1
c2VBcmdzLT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmczLCBWYWx1ZVJlcDo6U29tZVJlZ2lz
dGVyKSk7CisgICAgdXNlQXJncy0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxwZXJzJiwgY29u
c3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKKworICAgIC8vIExhc3QgdXNlIG9m
IGZpcnN0IGFyZyAoaGVyZSwgYXJnMSkuCisgICAgQ2hlY2tWYWx1ZSogY2hlY2tBZGQxID0gcm9v
dC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrQWRkLCBPcmlnaW4oKSwgYXJnMSwg
YXJnMik7CisgICAgY2hlY2tBZGQxLT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyBqaXQub29wcygpOyB9KTsKKwor
ICAgIC8vIExhc3QgdXNlIG9mIHNlY29uZCBhcmcgKGhlcmUsIGFyZzIpLgorICAgIENoZWNrVmFs
dWUqIGNoZWNrQWRkMiA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja0Fk
ZCwgT3JpZ2luKCksIGFyZzMsIGFyZzIpOworICAgIGNoZWNrQWRkMi0+c2V0R2VuZXJhdG9yKFsm
XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsg
aml0Lm9vcHMoKTsgfSk7CisKKyAgICAvLyBLZWVwIGFyZzMgbGl2ZS4KKyAgICBQYXRjaHBvaW50
VmFsdWUqIGtlZXBBcmcyTGl2ZSA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHBy
b2MsIFZvaWQsIE9yaWdpbigpKTsKKyAgICBrZWVwQXJnMkxpdmUtPmFwcGVuZChDb25zdHJhaW5l
ZFZhbHVlKGFyZzIsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICBrZWVwQXJnMkxpdmUt
PnNldEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlv
blBhcmFtcyYpIHsgfSk7CisKKyAgICAvLyBPbmx5IHVzZSBvZiBjaGVja0FkZDEgYW5kIGNoZWNr
QWRkMi4KKyAgICBDaGVja1ZhbHVlKiBjaGVja0FkZDMgPSByb290LT5hcHBlbmROZXc8Q2hlY2tW
YWx1ZT4ocHJvYywgQ2hlY2tBZGQsIE9yaWdpbigpLCBjaGVja0FkZDEsIGNoZWNrQWRkMik7Cisg
ICAgY2hlY2tBZGQzLT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3Qg
U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyBqaXQub29wcygpOyB9KTsKKworICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBjaGVja0FkZDMp
OworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCAxLCAyLCAzKSA9PSA4
KTsKK30KKwordm9pZCB0ZXN0Q2hlY2tBZGRBcmd1bWVudEFsaWFzaW5nMzIoKQoreworICAgIFBy
b2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBU
cnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFy
ZzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2lu
KCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgVmFsdWUqIGFyZzMgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIyKSk7CisKKyAgICAvLyBQcmV0ZW5kIHRvIHVzZSBhbGwgdGhlIGFyZ3Mu
CisgICAgUGF0Y2hwb2ludFZhbHVlKiB1c2VBcmdzID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9p
bnRWYWx1ZT4ocHJvYywgVm9pZCwgT3JpZ2luKCkpOworICAgIHVzZUFyZ3MtPmFwcGVuZChDb25z
dHJhaW5lZFZhbHVlKGFyZzEsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICB1c2VBcmdz
LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmcyLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7
CisgICAgdXNlQXJncy0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMywgVmFsdWVSZXA6OlNv
bWVSZWdpc3RlcikpOworICAgIHVzZUFyZ3MtPnNldEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVy
cyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsgfSk7CisKKyAgICAvLyBMYXN0
IHVzZSBvZiBmaXJzdCBhcmcgKGhlcmUsIGFyZzEpLgorICAgIENoZWNrVmFsdWUqIGNoZWNrQWRk
MSA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja0FkZCwgT3JpZ2luKCks
IGFyZzEsIGFyZzIpOworICAgIGNoZWNrQWRkMS0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxw
ZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsgaml0Lm9vcHMoKTsg
fSk7CisKKyAgICAvLyBMYXN0IHVzZSBvZiBzZWNvbmQgYXJnIChoZXJlLCBhcmczKS4KKyAgICBD
aGVja1ZhbHVlKiBjaGVja0FkZDIgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywg
Q2hlY2tBZGQsIE9yaWdpbigpLCBhcmcyLCBhcmczKTsKKyAgICBjaGVja0FkZDItPnNldEdlbmVy
YXRvcihbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJh
bXMmKSB7IGppdC5vb3BzKCk7IH0pOworCisgICAgLy8gS2VlcCBhcmczIGxpdmUuCisgICAgUGF0
Y2hwb2ludFZhbHVlKiBrZWVwQXJnMkxpdmUgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZh
bHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7CisgICAga2VlcEFyZzJMaXZlLT5hcHBlbmQoQ29u
c3RyYWluZWRWYWx1ZShhcmcyLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7CisgICAga2VlcEFy
ZzJMaXZlLT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMmLCBjb25zdCBTdGFja21hcEdl
bmVyYXRpb25QYXJhbXMmKSB7IH0pOworCisgICAgLy8gT25seSB1c2Ugb2YgY2hlY2tBZGQxIGFu
ZCBjaGVja0FkZDIuCisgICAgQ2hlY2tWYWx1ZSogY2hlY2tBZGQzID0gcm9vdC0+YXBwZW5kTmV3
PENoZWNrVmFsdWU+KHByb2MsIENoZWNrQWRkLCBPcmlnaW4oKSwgY2hlY2tBZGQxLCBjaGVja0Fk
ZDIpOworICAgIGNoZWNrQWRkMy0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQs
IGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsgaml0Lm9vcHMoKTsgfSk7CisKKyAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2hl
Y2tBZGQzKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgMSwgMiwg
MykgPT0gOCk7Cit9CisKK3ZvaWQgdGVzdENoZWNrQWRkU2VsZk92ZXJmbG93NjQoKQoreworICAg
IFByb2NlZHVyZSBwcm9jOworICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAxKQorICAgICAgICBy
ZXR1cm47CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1
ZSogYXJnID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIENoZWNrVmFsdWUqIGNoZWNrQWRkID0gcm9v
dC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrQWRkLCBPcmlnaW4oKSwgYXJnLCBh
cmcpOworICAgIGNoZWNrQWRkLT5hcHBlbmQoYXJnKTsKKyAgICBjaGVja0FkZC0+c2V0R2VuZXJh
dG9yKAorICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdp
c3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgaml0Lm1vdmUocGFyYW1z
WzBdLmdwcigpLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisgICAgICAgICAgICBqaXQuZW1p
dEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgfSk7
CisKKyAgICAvLyBNYWtlIHN1cmUgdGhlIGFyZyBpcyBub3QgdGhlIGRlc3RpbmF0aW9uIG9mIHRo
ZSBvcGVyYXRpb24uCisgICAgUGF0Y2hwb2ludFZhbHVlKiBvcGFxdWVVc2UgPSByb290LT5hcHBl
bmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7CisgICAgb3BhcXVl
VXNlLT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmcsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIp
KTsKKyAgICBvcGFxdWVVc2UtPnNldEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVycyYsIGNvbnN0
IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsgfSk7CisKKyAgICByb290LT5hcHBlbmROZXdD
b250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2hlY2tBZGQpOworCisgICAgYXV0
byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICBDSEVDSyhpbnZva2U8aW50NjRfdD4o
KmNvZGUsIDBsbCkgPT0gMCk7CisgICAgQ0hFQ0soaW52b2tlPGludDY0X3Q+KCpjb2RlLCAxbGwp
ID09IDIpOworICAgIENIRUNLKGludm9rZTxpbnQ2NF90PigqY29kZSwgc3RkOjpudW1lcmljX2xp
bWl0czxpbnQ2NF90Pjo6bWF4KCkpID09IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1h
eCgpKTsKK30KKwordm9pZCB0ZXN0Q2hlY2tBZGRTZWxmT3ZlcmZsb3czMigpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEpCisgICAgICAgIHJldHVy
bjsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBh
cmcgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2lu
KCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgQ2hlY2tWYWx1ZSogY2hlY2tBZGQg
PSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2tBZGQsIE9yaWdpbigpLCBh
cmcsIGFyZyk7CisgICAgY2hlY2tBZGQtPmFwcGVuZChhcmcpOworICAgIGNoZWNrQWRkLT5zZXRH
ZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRj
aFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAgICAgICAgICBqaXQubW92ZShw
YXJhbXNbMF0uZ3ByKCksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAgICAgICAgIGpp
dC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAgICAgICAgaml0LnJldCgpOworICAgICAg
ICB9KTsKKworICAgIC8vIE1ha2Ugc3VyZSB0aGUgYXJnIGlzIG5vdCB0aGUgZGVzdGluYXRpb24g
b2YgdGhlIG9wZXJhdGlvbi4KKyAgICBQYXRjaHBvaW50VmFsdWUqIG9wYXF1ZVVzZSA9IHJvb3Qt
PmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKKyAgICBv
cGFxdWVVc2UtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZywgVmFsdWVSZXA6OlNvbWVSZWdp
c3RlcikpOworICAgIG9wYXF1ZVVzZS0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxwZXJzJiwg
Y29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKKworICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBjaGVja0FkZCk7CisKKyAg
ICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKworICAgIENIRUNLKGludm9rZTxpbnQz
Ml90PigqY29kZSwgMGxsKSA9PSAwKTsKKyAgICBDSEVDSyhpbnZva2U8aW50MzJfdD4oKmNvZGUs
IDFsbCkgPT0gMik7CisgICAgQ0hFQ0soaW52b2tlPGludDMyX3Q+KCpjb2RlLCBzdGQ6Om51bWVy
aWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkgPT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90
Pjo6bWF4KCkpOworfQorCit2b2lkIHRlc3RDaGVja1N1YkltbSgpCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEpCisgICAgICAgIHJldHVybjsKKyAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmcxID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5k
TmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKTsKKyAgICBDaGVja1ZhbHVlKiBj
aGVja1N1YiA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja1N1YiwgT3Jp
Z2luKCksIGFyZzEsIGFyZzIpOworICAgIGNoZWNrU3ViLT5hcHBlbmQoYXJnMSk7CisgICAgY2hl
Y2tTdWItPmFwcGVuZChhcmcyKTsKKyAgICBjaGVja1N1Yi0+c2V0R2VuZXJhdG9yKAorICAgICAg
ICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMm
IHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFs
bG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9PSAyKTsK
KyAgICAgICAgICAgIENIRUNLKHBhcmFtc1swXS5pc0dQUigpKTsKKyAgICAgICAgICAgIENIRUNL
KHBhcmFtc1sxXS5pc0NvbnN0YW50KCkpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzFdLnZh
bHVlKCkgPT0gNDIpOworICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKHBhcmFt
c1swXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBqaXQuY29udmVydElu
dDMyVG9Eb3VibGUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoNDIpLCBGUFJJbmZvOjpmcFJl
Z1QxKTsKKyAgICAgICAgICAgIGppdC5zdWJEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMSwgRlBSSW5m
bzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAg
ICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgfSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIElUb0QsIE9yaWdpbigpLCBjaGVja1N1YikpOworCisg
ICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICBDSEVDSyhpbnZva2U8ZG91
YmxlPigqY29kZSwgMCkgPT0gLTQyLjApOworICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2Rl
LCAxKSA9PSAtNDEuMCk7CisgICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDQyKSA9PSAw
LjApOworICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAtMjE0NzQ4MzY0NykgPT0gLTIx
NDc0ODM2ODkuMCk7Cit9CisKK3ZvaWQgdGVzdENoZWNrU3ViQmFkSW1tKCkKK3sKKyAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICBpZiAocHJvYy5vcHRMZXZlbCgpIDwgMSkKKyAgICAgICAgcmV0dXJu
OworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFy
ZzEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2lu
KCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgaW50MzJfdCBiYWRJbW0gPSBzdGQ6
Om51bWVyaWNfbGltaXRzPGludD46Om1pbigpOworICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGJhZEltbSk7CisgICAgQ2hlY2tW
YWx1ZSogY2hlY2tTdWIgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2tT
dWIsIE9yaWdpbigpLCBhcmcxLCBhcmcyKTsKKyAgICBjaGVja1N1Yi0+YXBwZW5kKGFyZzEpOwor
ICAgIGNoZWNrU3ViLT5hcHBlbmQoYXJnMik7CisgICAgY2hlY2tTdWItPnNldEdlbmVyYXRvcigK
KyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9u
UGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJV
c2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtcy5zaXplKCkg
PT0gMik7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXNbMF0uaXNHUFIoKSk7CisgICAgICAgICAg
ICBqaXQuY29udmVydEludDMyVG9Eb3VibGUocGFyYW1zWzBdLmdwcigpLCBGUFJJbmZvOjpmcFJl
Z1QwKTsKKworICAgICAgICAgICAgaWYgKHBhcmFtc1sxXS5pc0NvbnN0YW50KCkpIHsKKyAgICAg
ICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0udmFsdWUoKSA9PSBiYWRJbW0pOworICAgICAgICAg
ICAgICAgIGppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihiYWRJbW0pLCBGUFJJbmZvOjpmcFJlZ1QxKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzFdLmlzR1BSKCkpOworICAgICAgICAgICAgICAgIGpp
dC5jb252ZXJ0SW50MzJUb0RvdWJsZShwYXJhbXNbMV0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDEp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaml0LnN1YkRvdWJsZShGUFJJbmZvOjpmcFJl
Z1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGls
b2d1ZSgpOworICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICB9KTsKKyAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSVRvRCwgT3JpZ2luKCksIGNoZWNr
U3ViKSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKworICAgIENIRUNL
KGludm9rZTxkb3VibGU+KCpjb2RlLCAwKSA9PSAtc3RhdGljX2Nhc3Q8ZG91YmxlPihiYWRJbW0p
KTsKKyAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgLTEpID09IC1zdGF0aWNfY2FzdDxk
b3VibGU+KGJhZEltbSkgLSAxKTsKKyAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgMSkg
PT0gLXN0YXRpY19jYXN0PGRvdWJsZT4oYmFkSW1tKSArIDEpOworICAgIENIRUNLKGludm9rZTxk
b3VibGU+KCpjb2RlLCA0MikgPT0gLXN0YXRpY19jYXN0PGRvdWJsZT4oYmFkSW1tKSArIDQyKTsK
K30KKwordm9pZCB0ZXN0Q2hlY2tTdWIoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIGlm
IChwcm9jLm9wdExldmVsKCkgPCAxKQorICAgICAgICByZXR1cm47CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKTsKKyAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsK
KyAgICBDaGVja1ZhbHVlKiBjaGVja1N1YiA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihw
cm9jLCBDaGVja1N1YiwgT3JpZ2luKCksIGFyZzEsIGFyZzIpOworICAgIGNoZWNrU3ViLT5hcHBl
bmQoYXJnMSk7CisgICAgY2hlY2tTdWItPmFwcGVuZChhcmcyKTsKKyAgICBjaGVja1N1Yi0+c2V0
R2VuZXJhdG9yKAorICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21h
cEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0
Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgQ0hFQ0socGFy
YW1zLnNpemUoKSA9PSAyKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtc1swXS5pc0dQUigpKTsK
KyAgICAgICAgICAgIENIRUNLKHBhcmFtc1sxXS5pc0dQUigpKTsKKyAgICAgICAgICAgIGppdC5j
b252ZXJ0SW50MzJUb0RvdWJsZShwYXJhbXNbMF0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDApOwor
ICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKHBhcmFtc1sxXS5ncHIoKSwgRlBS
SW5mbzo6ZnBSZWdUMSk7CisgICAgICAgICAgICBqaXQuc3ViRG91YmxlKEZQUkluZm86OmZwUmVn
VDEsIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxv
Z3VlKCk7CisgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgIH0pOworICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJVG9ELCBPcmlnaW4oKSwgY2hlY2tT
dWIpKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworCisgICAgQ0hFQ0so
aW52b2tlPGRvdWJsZT4oKmNvZGUsIDAsIDQyKSA9PSAtNDIuMCk7CisgICAgQ0hFQ0soaW52b2tl
PGRvdWJsZT4oKmNvZGUsIDEsIDQyKSA9PSAtNDEuMCk7CisgICAgQ0hFQ0soaW52b2tlPGRvdWJs
ZT4oKmNvZGUsIDQyLCA0MikgPT0gMC4wKTsKKyAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29k
ZSwgLTIxNDc0ODM2NDcsIDQyKSA9PSAtMjE0NzQ4MzY4OS4wKTsKK30KKworTkVWRVJfSU5MSU5F
IGRvdWJsZSBkb3VibGVTdWIoZG91YmxlIGEsIGRvdWJsZSBiKQoreworICAgIHJldHVybiBhIC0g
YjsKK30KKwordm9pZCB0ZXN0Q2hlY2tTdWI2NCgpCit7CisgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEpCisgICAgICAgIHJldHVybjsKKyAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOworICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgIENoZWNrVmFs
dWUqIGNoZWNrU3ViID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrU3Vi
LCBPcmlnaW4oKSwgYXJnMSwgYXJnMik7CisgICAgY2hlY2tTdWItPmFwcGVuZChhcmcxKTsKKyAg
ICBjaGVja1N1Yi0+YXBwZW5kKGFyZzIpOworICAgIGNoZWNrU3ViLT5zZXRHZW5lcmF0b3IoCisg
ICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNh
Z2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09
IDIpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzBdLmlzR1BSKCkpOworICAgICAgICAgICAg
Q0hFQ0socGFyYW1zWzFdLmlzR1BSKCkpOworICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQ2NFRv
RG91YmxlKHBhcmFtc1swXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBq
aXQuY29udmVydEludDY0VG9Eb3VibGUocGFyYW1zWzFdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1Qx
KTsKKyAgICAgICAgICAgIGppdC5zdWJEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMSwgRlBSSW5mbzo6
ZnBSZWdUMCk7CisgICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAg
ICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgfSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIElUb0QsIE9yaWdpbigpLCBjaGVja1N1YikpOworCisgICAg
YXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICBDSEVDSyhpbnZva2U8ZG91Ymxl
PigqY29kZSwgMGxsLCA0MmxsKSA9PSAtNDIuMCk7CisgICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4o
KmNvZGUsIDFsbCwgNDJsbCkgPT0gLTQxLjApOworICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpj
b2RlLCA0MmxsLCA0MmxsKSA9PSAwLjApOworICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2Rl
LCAtOTIyMzM3MjAzNjg1NDc3NTgwN2xsLCA0MmxsKSA9PSBkb3VibGVTdWIoc3RhdGljX2Nhc3Q8
ZG91YmxlPigtOTIyMzM3MjAzNjg1NDc3NTgwN2xsKSwgNDIuMCkpOworfQorCit2b2lkIHRlc3RD
aGVja1N1YkZvbGQoaW50IGEsIGludCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZzEgPSByb290
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7CisgICAgVmFsdWUq
IGFyZzIgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7
CisgICAgQ2hlY2tWYWx1ZSogY2hlY2tTdWIgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4o
cHJvYywgQ2hlY2tTdWIsIE9yaWdpbigpLCBhcmcxLCBhcmcyKTsKKyAgICB1bnNpZ25lZCBvcHRM
ZXZlbCA9IHByb2Mub3B0TGV2ZWwoKTsKKyAgICBjaGVja1N1Yi0+c2V0R2VuZXJhdG9yKAorICAg
ICAgICBbJl0gKENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYp
IHsKKyAgICAgICAgICAgIGlmIChvcHRMZXZlbCA+IDEpCisgICAgICAgICAgICAgICAgQ0hFQ0so
ISJTaG91bGQgaGF2ZSBiZWVuIGZvbGRlZCIpOworICAgICAgICB9KTsKKyAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2hlY2tTdWIpOworCisg
ICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICBDSEVDSyhpbnZva2U8aW50
PigqY29kZSkgPT0gYSAtIGIpOworfQorCit2b2lkIHRlc3RDaGVja1N1YkZvbGRGYWlsKGludCBh
LCBpbnQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBpZiAocHJvYy5vcHRMZXZlbCgp
IDwgMSkKKyAgICAgICAgcmV0dXJuOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgYSk7CisgICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7CisgICAgQ2hlY2tWYWx1ZSogY2hlY2tTdWIg
PSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2tTdWIsIE9yaWdpbigpLCBh
cmcxLCBhcmcyKTsKKyAgICBjaGVja1N1Yi0+c2V0R2VuZXJhdG9yKAorICAgICAgICBbJl0gKEND
YWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAg
ICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7
CisgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMig0MiksIEdQ
UkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGls
b2d1ZSgpOworICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICB9KTsKKyAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2hlY2tTdWIpOwor
CisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICBDSEVDSyhpbnZva2U8
aW50PigqY29kZSkgPT0gNDIpOworfQorCit2b2lkIHRlc3RDaGVja05lZygpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEpCisgICAgICAgIHJldHVy
bjsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBh
cmcxID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApOwor
ICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywg
VHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIENoZWNrVmFs
dWUqIGNoZWNrTmVnID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrU3Vi
LCBPcmlnaW4oKSwgYXJnMSwgYXJnMik7CisgICAgY2hlY2tOZWctPmFwcGVuZChhcmcyKTsKKyAg
ICBjaGVja05lZy0+c2V0R2VuZXJhdG9yKAorICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0
LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAg
QWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAg
ICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9PSAxKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFt
c1swXS5pc0dQUigpKTsKKyAgICAgICAgICAgIGppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShwYXJh
bXNbMF0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDEpOworICAgICAgICAgICAgaml0Lm5lZ2F0ZURv
dWJsZShGUFJJbmZvOjpmcFJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIGpp
dC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAgICAgICAgaml0LnJldCgpOworICAgICAg
ICB9KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSVRv
RCwgT3JpZ2luKCksIGNoZWNrTmVnKSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhw
cm9jKTsKKworICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAwKSA9PSAwLjApOworICAg
IENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAxKSA9PSAtMS4wKTsKKyAgICBDSEVDSyhpbnZv
a2U8ZG91YmxlPigqY29kZSwgNDIpID09IC00Mi4wKTsKKyAgICBDSEVDSyhpbnZva2U8ZG91Ymxl
PigqY29kZSwgLTIxNDc0ODM2NDcgLSAxKSA9PSAyMTQ3NDgzNjQ4LjApOworfQorCit2b2lkIHRl
c3RDaGVja05lZzY0KCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBpZiAocHJvYy5vcHRM
ZXZlbCgpIDwgMSkKKyAgICAgICAgcmV0dXJuOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgMCk7CisgICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7CisgICAgQ2hlY2tWYWx1ZSogY2hlY2tOZWcgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1
ZT4ocHJvYywgQ2hlY2tTdWIsIE9yaWdpbigpLCBhcmcxLCBhcmcyKTsKKyAgICBjaGVja05lZy0+
YXBwZW5kKGFyZzIpOworICAgIGNoZWNrTmVnLT5zZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAo
Q0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1z
KSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3Jh
dGNoKGppdCk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09IDEpOworICAgICAg
ICAgICAgQ0hFQ0socGFyYW1zWzBdLmlzR1BSKCkpOworICAgICAgICAgICAgaml0LmNvbnZlcnRJ
bnQ2NFRvRG91YmxlKHBhcmFtc1swXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMSk7CisgICAgICAg
ICAgICBqaXQubmVnYXRlRG91YmxlKEZQUkluZm86OmZwUmVnVDEsIEZQUkluZm86OmZwUmVnVDAp
OworICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAgICAgICBq
aXQucmV0KCk7CisgICAgICAgIH0pOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
KyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBJVG9ELCBPcmlnaW4oKSwgY2hlY2tOZWcpKTsKKworICAgIGF1dG8gY29k
ZSA9IGNvbXBpbGVQcm9jKHByb2MpOworCisgICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUs
IDBsbCkgPT0gMC4wKTsKKyAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgMWxsKSA9PSAt
MS4wKTsKKyAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgNDJsbCkgPT0gLTQyLjApOwor
ICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAtOTIyMzM3MjAzNjg1NDc3NTgwN2xsIC0g
MSkgPT0gOTIyMzM3MjAzNjg1NDc3NTgwOC4wKTsKK30KKwordm9pZCB0ZXN0Q2hlY2tNdWwoKQor
eworICAgIFByb2NlZHVyZSBwcm9jOworICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAxKQorICAg
ICAgICByZXR1cm47CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIFRy
dW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogYXJn
MiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4o
KSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICBDaGVja1ZhbHVlKiBjaGVja011bCA9
IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja011bCwgT3JpZ2luKCksIGFy
ZzEsIGFyZzIpOworICAgIGNoZWNrTXVsLT5hcHBlbmQoYXJnMSk7CisgICAgY2hlY2tNdWwtPmFw
cGVuZChhcmcyKTsKKyAgICBjaGVja011bC0+c2V0R2VuZXJhdG9yKAorICAgICAgICBbJl0gKEND
YWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykg
eworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRj
aChqaXQpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9PSAyKTsKKyAgICAgICAg
ICAgIENIRUNLKHBhcmFtc1swXS5pc0dQUigpKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtc1sx
XS5pc0dQUigpKTsKKyAgICAgICAgICAgIGppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShwYXJhbXNb
MF0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQz
MlRvRG91YmxlKHBhcmFtc1sxXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMSk7CisgICAgICAgICAg
ICBqaXQubXVsRG91YmxlKEZQUkluZm86OmZwUmVnVDEsIEZQUkluZm86OmZwUmVnVDApOworICAg
ICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAgICAgICBqaXQucmV0
KCk7CisgICAgICAgIH0pOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBJVG9ELCBPcmlnaW4oKSwgY2hlY2tNdWwpKTsKKworICAgIGF1dG8gY29kZSA9IGNv
bXBpbGVQcm9jKHByb2MpOworCisgICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDAsIDQy
KSA9PSAwLjApOworICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAxLCA0MikgPT0gNDIu
MCk7CisgICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDQyLCA0MikgPT0gNDIuMCAqIDQy
LjApOworICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAyMTQ3NDgzNjQ3LCA0MikgPT0g
MjE0NzQ4MzY0Ny4wICogNDIuMCk7Cit9CisKK3ZvaWQgdGVzdENoZWNrTXVsTWVtb3J5KCkKK3sK
KyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBpZiAocHJvYy5vcHRMZXZlbCgpIDwgMSkKKyAgICAg
ICAgcmV0dXJuOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAg
ICBpbnQgbGVmdDsKKyAgICBpbnQgcmlnaHQ7CisKKyAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4o
KSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCAmbGVmdCkpOworICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVl
PigKKyAgICAgICAgcHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLAorICAgICAgICByb290LT5h
cHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZyaWdodCkpOworICAgIENo
ZWNrVmFsdWUqIGNoZWNrTXVsID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENo
ZWNrTXVsLCBPcmlnaW4oKSwgYXJnMSwgYXJnMik7CisgICAgY2hlY2tNdWwtPmFwcGVuZChhcmcx
KTsKKyAgICBjaGVja011bC0+YXBwZW5kKGFyZzIpOworICAgIGNoZWNrTXVsLT5zZXRHZW5lcmF0
b3IoCisgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJh
dGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lz
dGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6
ZSgpID09IDIpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzBdLmlzR1BSKCkpOworICAgICAg
ICAgICAgQ0hFQ0socGFyYW1zWzFdLmlzR1BSKCkpOworICAgICAgICAgICAgaml0LmNvbnZlcnRJ
bnQzMlRvRG91YmxlKHBhcmFtc1swXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAg
ICAgICBqaXQuY29udmVydEludDMyVG9Eb3VibGUocGFyYW1zWzFdLmdwcigpLCBGUFJJbmZvOjpm
cFJlZ1QxKTsKKyAgICAgICAgICAgIGppdC5tdWxEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMSwgRlBS
SW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsK
KyAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgfSk7CisgICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIElUb0QsIE9yaWdpbigpLCBjaGVja011bCkpOwor
CisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICBsZWZ0ID0gMDsKKyAg
ICByaWdodCA9IDQyOworICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlKSA9PSAwLjApOwor
CisgICAgbGVmdCA9IDE7CisgICAgcmlnaHQgPSA0MjsKKyAgICBDSEVDSyhpbnZva2U8ZG91Ymxl
PigqY29kZSkgPT0gNDIuMCk7CisKKyAgICBsZWZ0ID0gNDI7CisgICAgcmlnaHQgPSA0MjsKKyAg
ICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSkgPT0gNDIuMCAqIDQyLjApOworCisgICAgbGVm
dCA9IDIxNDc0ODM2NDc7CisgICAgcmlnaHQgPSA0MjsKKyAgICBDSEVDSyhpbnZva2U8ZG91Ymxl
PigqY29kZSkgPT0gMjE0NzQ4MzY0Ny4wICogNDIuMCk7Cit9CisKK3ZvaWQgdGVzdENoZWNrTXVs
MigpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEp
CisgICAgICAgIHJldHVybjsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJv
YywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVl
KiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDIp
OworICAgIENoZWNrVmFsdWUqIGNoZWNrTXVsID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+
KHByb2MsIENoZWNrTXVsLCBPcmlnaW4oKSwgYXJnMSwgYXJnMik7CisgICAgY2hlY2tNdWwtPmFw
cGVuZChhcmcxKTsKKyAgICBjaGVja011bC0+YXBwZW5kKGFyZzIpOworICAgIGNoZWNrTXVsLT5z
ZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2Ny
YXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAgICAgICAgICBDSEVDSyhw
YXJhbXMuc2l6ZSgpID09IDIpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzBdLmlzR1BSKCkp
OworICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzFdLmlzQ29uc3RhbnQoKSk7CisgICAgICAgICAg
ICBDSEVDSyhwYXJhbXNbMV0udmFsdWUoKSA9PSAyKTsKKyAgICAgICAgICAgIGppdC5jb252ZXJ0
SW50MzJUb0RvdWJsZShwYXJhbXNbMF0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDApOworICAgICAg
ICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KDIpLCBGUFJJbmZvOjpmcFJlZ1QxKTsKKyAgICAgICAgICAgIGppdC5tdWxEb3VibGUoRlBSSW5m
bzo6ZnBSZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBqaXQuZW1pdEZ1bmN0
aW9uRXBpbG9ndWUoKTsKKyAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgfSk7CisgICAg
cm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIElUb0QsIE9yaWdpbigp
LCBjaGVja011bCkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAg
ICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgMCkgPT0gMC4wKTsKKyAgICBDSEVDSyhpbnZv
a2U8ZG91YmxlPigqY29kZSwgMSkgPT0gMi4wKTsKKyAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigq
Y29kZSwgNDIpID09IDQyLjAgKiAyLjApOworICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2Rl
LCAyMTQ3NDgzNjQ3KSA9PSAyMTQ3NDgzNjQ3LjAgKiAyLjApOworfQorCit2b2lkIHRlc3RDaGVj
a011bDY0KCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBpZiAocHJvYy5vcHRMZXZlbCgp
IDwgMSkKKyAgICAgICAgcmV0dXJuOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgVmFsdWUqIGFy
ZzIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgQ2hlY2tWYWx1ZSogY2hlY2tNdWwgPSByb290LT5h
cHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2tNdWwsIE9yaWdpbigpLCBhcmcxLCBhcmcy
KTsKKyAgICBjaGVja011bC0+YXBwZW5kKGFyZzEpOworICAgIGNoZWNrTXVsLT5hcHBlbmQoYXJn
Mik7CisgICAgY2hlY2tNdWwtPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAg
ICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsK
KyAgICAgICAgICAgIENIRUNLKHBhcmFtcy5zaXplKCkgPT0gMik7CisgICAgICAgICAgICBDSEVD
SyhwYXJhbXNbMF0uaXNHUFIoKSk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0uaXNHUFIo
KSk7CisgICAgICAgICAgICBqaXQuY29udmVydEludDY0VG9Eb3VibGUocGFyYW1zWzBdLmdwcigp
LCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5jb252ZXJ0SW50NjRUb0RvdWJs
ZShwYXJhbXNbMV0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDEpOworICAgICAgICAgICAgaml0Lm11
bERvdWJsZShGUFJJbmZvOjpmcFJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAg
IGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAgICAgICAgaml0LnJldCgpOworICAg
ICAgICB9KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2Ms
IFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
SVRvRCwgT3JpZ2luKCksIGNoZWNrTXVsKSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJv
Yyhwcm9jKTsKKworICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAwLCA0MikgPT0gMC4w
KTsKKyAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgMSwgNDIpID09IDQyLjApOworICAg
IENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCA0MiwgNDIpID09IDQyLjAgKiA0Mi4wKTsKKyAg
ICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgOTIyMzM3MjAzNjg1NDc3NTgwN2xsLCA0Mikg
PT0gc3RhdGljX2Nhc3Q8ZG91YmxlPig5MjIzMzcyMDM2ODU0Nzc1ODA3bGwpICogNDIuMCk7Cit9
CisKK3ZvaWQgdGVzdENoZWNrTXVsRm9sZChpbnQgYSwgaW50IGIpCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1
ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBh
KTsKKyAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBiKTsKKyAgICBDaGVja1ZhbHVlKiBjaGVja011bCA9IHJvb3QtPmFwcGVuZE5l
dzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja011bCwgT3JpZ2luKCksIGFyZzEsIGFyZzIpOworICAg
IHVuc2lnbmVkIG9wdExldmVsID0gcHJvYy5vcHRMZXZlbCgpOworICAgIGNoZWNrTXVsLT5zZXRH
ZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3RhY2ttYXBHZW5l
cmF0aW9uUGFyYW1zJikgeworICAgICAgICAgICAgaWYgKG9wdExldmVsID4gMSkKKyAgICAgICAg
ICAgICAgICBDSEVDSyghIlNob3VsZCBoYXZlIGJlZW4gZm9sZGVkIik7CisgICAgICAgIH0pOwor
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBj
aGVja011bCk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKworICAgIENI
RUNLKGludm9rZTxpbnQ+KCpjb2RlKSA9PSBhICogYik7Cit9CisKK3ZvaWQgdGVzdENoZWNrTXVs
Rm9sZEZhaWwoaW50IGEsIGludCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIGlmIChw
cm9jLm9wdExldmVsKCkgPCAxKQorICAgICAgICByZXR1cm47CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKKyAgICBWYWx1ZSogYXJnMiA9IHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKTsKKyAgICBDaGVja1Zh
bHVlKiBjaGVja011bCA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja011
bCwgT3JpZ2luKCksIGFyZzEsIGFyZzIpOworICAgIGNoZWNrTXVsLT5zZXRHZW5lcmF0b3IoCisg
ICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcyYpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxv
d1NjcmF0Y2goaml0KTsKKyAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKDQyKSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworICAgICAgICAgICAgaml0LmVt
aXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgIH0p
OworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LCBjaGVja011bCk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKworICAg
IENIRUNLKGludm9rZTxpbnQ+KCpjb2RlKSA9PSA0Mik7Cit9CisKK3ZvaWQgdGVzdENoZWNrTXVs
QXJndW1lbnRBbGlhc2luZzY0KCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOworICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgIFZhbHVlKiBh
cmczID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjIpOworCisgICAgLy8gUHJldGVuZCB0byB1c2UgYWxsIHRoZSBh
cmdzLgorICAgIFBhdGNocG9pbnRWYWx1ZSogdXNlQXJncyA9IHJvb3QtPmFwcGVuZE5ldzxQYXRj
aHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKKyAgICB1c2VBcmdzLT5hcHBlbmQo
Q29uc3RyYWluZWRWYWx1ZShhcmcxLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7CisgICAgdXNl
QXJncy0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMiwgVmFsdWVSZXA6OlNvbWVSZWdpc3Rl
cikpOworICAgIHVzZUFyZ3MtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzMsIFZhbHVlUmVw
OjpTb21lUmVnaXN0ZXIpKTsKKyAgICB1c2VBcmdzLT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhl
bHBlcnMmLCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7IH0pOworCisgICAgLy8g
TGFzdCB1c2Ugb2YgZmlyc3QgYXJnIChoZXJlLCBhcmcxKS4KKyAgICBDaGVja1ZhbHVlKiBjaGVj
a011bDEgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2tNdWwsIE9yaWdp
bigpLCBhcmcxLCBhcmcyKTsKKyAgICBjaGVja011bDEtPnNldEdlbmVyYXRvcihbJl0gKENDYWxs
SGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7IGppdC5vb3Bz
KCk7IH0pOworCisgICAgLy8gTGFzdCB1c2Ugb2Ygc2Vjb25kIGFyZyAoaGVyZSwgYXJnMikuCisg
ICAgQ2hlY2tWYWx1ZSogY2hlY2tNdWwyID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHBy
b2MsIENoZWNrTXVsLCBPcmlnaW4oKSwgYXJnMywgYXJnMik7CisgICAgY2hlY2tNdWwyLT5zZXRH
ZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9u
UGFyYW1zJikgeyBqaXQub29wcygpOyB9KTsKKworICAgIC8vIEtlZXAgYXJnMyBsaXZlLgorICAg
IFBhdGNocG9pbnRWYWx1ZSoga2VlcEFyZzJMaXZlID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9p
bnRWYWx1ZT4ocHJvYywgVm9pZCwgT3JpZ2luKCkpOworICAgIGtlZXBBcmcyTGl2ZS0+YXBwZW5k
KENvbnN0cmFpbmVkVmFsdWUoYXJnMiwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOworICAgIGtl
ZXBBcmcyTGl2ZS0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3RhY2tt
YXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKKworICAgIC8vIE9ubHkgdXNlIG9mIGNoZWNrTXVs
MSBhbmQgY2hlY2tNdWwyLgorICAgIENoZWNrVmFsdWUqIGNoZWNrTXVsMyA9IHJvb3QtPmFwcGVu
ZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja011bCwgT3JpZ2luKCksIGNoZWNrTXVsMSwgY2hl
Y2tNdWwyKTsKKyAgICBjaGVja011bDMtPnNldEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVycyYg
aml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7IGppdC5vb3BzKCk7IH0pOwor
CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCks
IGNoZWNrTXVsMyk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIDIs
IDMsIDQpID09IDcyKTsKK30KKwordm9pZCB0ZXN0Q2hlY2tNdWxBcmd1bWVudEFsaWFzaW5nMzIo
KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Cisg
ICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBU
cnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgVmFsdWUqIGFy
ZzMgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2lu
KCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKSk7CisKKyAgICAvLyBQcmV0ZW5kIHRvIHVzZSBh
bGwgdGhlIGFyZ3MuCisgICAgUGF0Y2hwb2ludFZhbHVlKiB1c2VBcmdzID0gcm9vdC0+YXBwZW5k
TmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgVm9pZCwgT3JpZ2luKCkpOworICAgIHVzZUFyZ3Mt
PmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzEsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsK
KyAgICB1c2VBcmdzLT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmcyLCBWYWx1ZVJlcDo6U29t
ZVJlZ2lzdGVyKSk7CisgICAgdXNlQXJncy0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMywg
VmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOworICAgIHVzZUFyZ3MtPnNldEdlbmVyYXRvcihbJl0g
KENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsgfSk7CisK
KyAgICAvLyBMYXN0IHVzZSBvZiBmaXJzdCBhcmcgKGhlcmUsIGFyZzEpLgorICAgIENoZWNrVmFs
dWUqIGNoZWNrTXVsMSA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja011
bCwgT3JpZ2luKCksIGFyZzEsIGFyZzIpOworICAgIGNoZWNrTXVsMS0+c2V0R2VuZXJhdG9yKFsm
XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsg
aml0Lm9vcHMoKTsgfSk7CisKKyAgICAvLyBMYXN0IHVzZSBvZiBzZWNvbmQgYXJnIChoZXJlLCBh
cmczKS4KKyAgICBDaGVja1ZhbHVlKiBjaGVja011bDIgPSByb290LT5hcHBlbmROZXc8Q2hlY2tW
YWx1ZT4ocHJvYywgQ2hlY2tNdWwsIE9yaWdpbigpLCBhcmcyLCBhcmczKTsKKyAgICBjaGVja011
bDItPnNldEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdl
bmVyYXRpb25QYXJhbXMmKSB7IGppdC5vb3BzKCk7IH0pOworCisgICAgLy8gS2VlcCBhcmczIGxp
dmUuCisgICAgUGF0Y2hwb2ludFZhbHVlKiBrZWVwQXJnMkxpdmUgPSByb290LT5hcHBlbmROZXc8
UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7CisgICAga2VlcEFyZzJMaXZl
LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmcyLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7
CisgICAga2VlcEFyZzJMaXZlLT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMmLCBjb25z
dCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7IH0pOworCisgICAgLy8gT25seSB1c2Ugb2Yg
Y2hlY2tNdWwxIGFuZCBjaGVja011bDIuCisgICAgQ2hlY2tWYWx1ZSogY2hlY2tNdWwzID0gcm9v
dC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrTXVsLCBPcmlnaW4oKSwgY2hlY2tN
dWwxLCBjaGVja011bDIpOworICAgIGNoZWNrTXVsMy0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxI
ZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsgaml0Lm9vcHMo
KTsgfSk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgY2hlY2tNdWwzKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50MzJfdD4o
cHJvYywgMiwgMywgNCkgPT0gNzIpOworfQorCit2b2lkIHRlc3RDaGVja011bDY0U1NocigpCit7
CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEpCisgICAg
ICAgIHJldHVybjsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
IFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgU1No
ciwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKTsKKyAgICBWYWx1ZSogYXJn
MiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIFNTaHIsIE9yaWdpbigp
LAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7CisgICAgQ2hlY2tWYWx1ZSogY2hlY2tNdWwg
PSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2tNdWwsIE9yaWdpbigpLCBh
cmcxLCBhcmcyKTsKKyAgICBjaGVja011bC0+YXBwZW5kKGFyZzEpOworICAgIGNoZWNrTXVsLT5h
cHBlbmQoYXJnMik7CisgICAgY2hlY2tNdWwtPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMp
IHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0
Y2goaml0KTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtcy5zaXplKCkgPT0gMik7CisgICAgICAg
ICAgICBDSEVDSyhwYXJhbXNbMF0uaXNHUFIoKSk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXNb
MV0uaXNHUFIoKSk7CisgICAgICAgICAgICBqaXQuY29udmVydEludDY0VG9Eb3VibGUocGFyYW1z
WzBdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5jb252ZXJ0SW50
NjRUb0RvdWJsZShwYXJhbXNbMV0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDEpOworICAgICAgICAg
ICAgaml0Lm11bERvdWJsZShGUFJJbmZvOjpmcFJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAg
ICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAgICAgICAgaml0LnJl
dCgpOworICAgICAgICB9KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgSVRvRCwgT3JpZ2luKCksIGNoZWNrTXVsKSk7CisKKyAgICBhdXRvIGNvZGUgPSBj
b21waWxlUHJvYyhwcm9jKTsKKworICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAwbGws
IDQybGwpID09IDAuMCk7CisgICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDFsbCwgNDJs
bCkgPT0gMC4wKTsKKyAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgNDJsbCwgNDJsbCkg
PT0gKDQyLjAgLyAyLjApICogKDQyLjAgLyAyLjApKTsKKyAgICBDSEVDSyhpbnZva2U8ZG91Ymxl
PigqY29kZSwgMTAwMDAwMDAwMDBsbCwgMTAwMDAwMDAwMDBsbCkgPT0gMjUwMDAwMDAwMDAwMDAw
MDAwMDAuMCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIExlZnRGdW5jdG9yLCB0eXBlbmFtZSBS
aWdodEZ1bmN0b3IsIHR5cGVuYW1lIElucHV0VHlwZT4KK3ZvaWQgZ2VuZXJpY1Rlc3RDb21wYXJl
KAorICAgIEIzOjpPcGNvZGUgb3Bjb2RlLCBjb25zdCBMZWZ0RnVuY3RvciYgbGVmdEZ1bmN0b3Is
IGNvbnN0IFJpZ2h0RnVuY3RvciYgcmlnaHRGdW5jdG9yLAorICAgIElucHV0VHlwZSBsZWZ0LCBJ
bnB1dFR5cGUgcmlnaHQsIGludCByZXN1bHQpCit7CisgICAgLy8gVXNpbmcgYSBjb21wYXJlLgor
ICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIGxlZnRWYWx1ZSA9IGxlZnRGdW5j
dG9yKHJvb3QsIHByb2MpOworICAgICAgICBWYWx1ZSogcmlnaHRWYWx1ZSA9IHJpZ2h0RnVuY3Rv
cihyb290LCBwcm9jKTsKKyAgICAgICAgVmFsdWUqIGNvbXBhcmlzb25SZXN1bHQgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIG9wY29kZSwgT3JpZ2luKCksIGxlZnRWYWx1ZSwgcmlnaHRW
YWx1ZSk7CisgICAgCisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIE5vdEVxdWFsLCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgICAgICBjb21wYXJpc29uUmVzdWx0LAorICAgICAgICAgICAgICAgIHJvb3QtPmFw
cGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCBjb21wYXJpc29uUmVzdWx0LT50eXBlKCks
IDApKSk7CisKKyAgICAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGxlZnQsIHJp
Z2h0KSA9PSByZXN1bHQpOworICAgIH0KKworICAgIC8vIFVzaW5nIGEgYnJhbmNoLgorICAgIHsK
KyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRCbG9j
aygpOworICAgICAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKwor
ICAgICAgICBWYWx1ZSogbGVmdFZhbHVlID0gbGVmdEZ1bmN0b3Iocm9vdCwgcHJvYyk7CisgICAg
ICAgIFZhbHVlKiByaWdodFZhbHVlID0gcmlnaHRGdW5jdG9yKHJvb3QsIHByb2MpOworCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIEJyYW5j
aCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIG9w
Y29kZSwgT3JpZ2luKCksIGxlZnRWYWx1ZSwgcmlnaHRWYWx1ZSksCisgICAgICAgICAgICBGcmVx
dWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKKworICAg
ICAgICAvLyBXZSB1c2UgYSBwYXRjaHBvaW50IG9uIHRoZSB0aGVuIGNhc2UgdG8gZW5zdXJlIHRo
YXQgdGhpcyBkb2Vzbid0IGdldCBpZi1jb252ZXJ0ZWQuCisgICAgICAgIFBhdGNocG9pbnRWYWx1
ZSogcGF0Y2hwb2ludCA9IHRoZW5DYXNlLT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9j
LCBJbnQzMiwgT3JpZ2luKCkpOworICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCisg
ICAgICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRp
b25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVn
aXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAgICAgICAgICBDSEVDSyhwYXJh
bXMuc2l6ZSgpID09IDEpOworICAgICAgICAgICAgICAgIENIRUNLKHBhcmFtc1swXS5pc0dQUigp
KTsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigx
KSwgcGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB0aGVuQ2FzZS0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHBhdGNocG9pbnQp
OworCisgICAgICAgIGVsc2VDYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgZWxzZUNhc2UtPmFwcGVuZE5l
dzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICAgICAgQ0hFQ0soY29t
cGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGxlZnQsIHJpZ2h0KSA9PSByZXN1bHQpOworICAgIH0KK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgSW5wdXRUeXBlPgorSW5wdXRUeXBlIG1vZGVsQ29tcGFyZShC
Mzo6T3Bjb2RlIG9wY29kZSwgSW5wdXRUeXBlIGxlZnQsIElucHV0VHlwZSByaWdodCkKK3sKKyAg
ICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2UgRXF1YWw6CisgICAgICAgIHJldHVybiBsZWZ0
ID09IHJpZ2h0OworICAgIGNhc2UgTm90RXF1YWw6CisgICAgICAgIHJldHVybiBsZWZ0ICE9IHJp
Z2h0OworICAgIGNhc2UgTGVzc1RoYW46CisgICAgICAgIHJldHVybiBsZWZ0IDwgcmlnaHQ7Cisg
ICAgY2FzZSBHcmVhdGVyVGhhbjoKKyAgICAgICAgcmV0dXJuIGxlZnQgPiByaWdodDsKKyAgICBj
YXNlIExlc3NFcXVhbDoKKyAgICAgICAgcmV0dXJuIGxlZnQgPD0gcmlnaHQ7CisgICAgY2FzZSBH
cmVhdGVyRXF1YWw6CisgICAgICAgIHJldHVybiBsZWZ0ID49IHJpZ2h0OworICAgIGNhc2UgQWJv
dmU6CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6Om1ha2VfdW5zaWdu
ZWQ8SW5wdXRUeXBlPjo6dHlwZT4obGVmdCkgPgorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dHlw
ZW5hbWUgc3RkOjptYWtlX3Vuc2lnbmVkPElucHV0VHlwZT46OnR5cGU+KHJpZ2h0KTsKKyAgICBj
YXNlIEJlbG93OgorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjptYWtl
X3Vuc2lnbmVkPElucHV0VHlwZT46OnR5cGU+KGxlZnQpIDwKKyAgICAgICAgICAgIHN0YXRpY19j
YXN0PHR5cGVuYW1lIHN0ZDo6bWFrZV91bnNpZ25lZDxJbnB1dFR5cGU+Ojp0eXBlPihyaWdodCk7
CisgICAgY2FzZSBBYm92ZUVxdWFsOgorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5h
bWUgc3RkOjptYWtlX3Vuc2lnbmVkPElucHV0VHlwZT46OnR5cGU+KGxlZnQpID49CisgICAgICAg
ICAgICBzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6Om1ha2VfdW5zaWduZWQ8SW5wdXRUeXBlPjo6
dHlwZT4ocmlnaHQpOworICAgIGNhc2UgQmVsb3dFcXVhbDoKKyAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PHR5cGVuYW1lIHN0ZDo6bWFrZV91bnNpZ25lZDxJbnB1dFR5cGU+Ojp0eXBlPihsZWZ0
KSA8PQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjptYWtlX3Vuc2lnbmVk
PElucHV0VHlwZT46OnR5cGU+KHJpZ2h0KTsKKyAgICBjYXNlIEJpdEFuZDoKKyAgICAgICAgcmV0
dXJuICEhKGxlZnQgJiByaWdodCk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgordm9pZCB0ZXN0Q29tcGFyZUxvYWQoQjM6Ok9wY29kZSBvcGNvZGUsIEIz
OjpPcGNvZGUgbG9hZE9wY29kZSwgaW50IGxlZnQsIGludCByaWdodCkKK3sKKyAgICBpbnQgcmVz
dWx0ID0gbW9kZWxDb21wYXJlKG9wY29kZSwgbW9kZWxMb2FkPFQ+KGxlZnQpLCByaWdodCk7CisK
KyAgICAvLyBUZXN0IGFkZHItdG8tdG1wCisgICAgaW50IHNsb3QgPSBsZWZ0OworICAgIGdlbmVy
aWNUZXN0Q29tcGFyZSgKKyAgICAgICAgb3Bjb2RlLAorICAgICAgICBbJl0gKEJhc2ljQmxvY2sq
IGJsb2NrLCBQcm9jZWR1cmUmIHByb2MpIHsKKyAgICAgICAgICAgIHJldHVybiBibG9jay0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBsb2FkT3Bjb2RlLCBJ
bnQzMiwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgYmxvY2stPmFwcGVuZE5ldzxDb25zdFB0
clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnNsb3QpKTsKKyAgICAgICAgfSwKKyAgICAgICAgWyZd
IChCYXNpY0Jsb2NrKiBibG9jaywgUHJvY2VkdXJlJiBwcm9jKSB7CisgICAgICAgICAgICByZXR1
cm4gYmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMs
IE9yaWdpbigpLAorICAgICAgICAgICAgICAgIGJsb2NrLT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgICAgICB9
LAorICAgICAgICBsZWZ0LCByaWdodCwgcmVzdWx0KTsKKworICAgIC8vIFRlc3QgYWRkci10by1p
bW0KKyAgICBzbG90ID0gbGVmdDsKKyAgICBnZW5lcmljVGVzdENvbXBhcmUoCisgICAgICAgIG9w
Y29kZSwKKyAgICAgICAgWyZdIChCYXNpY0Jsb2NrKiBibG9jaywgUHJvY2VkdXJlJiBwcm9jKSB7
CisgICAgICAgICAgICByZXR1cm4gYmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAg
ICAgICAgICAgICAgcHJvYywgbG9hZE9wY29kZSwgSW50MzIsIE9yaWdpbigpLAorICAgICAgICAg
ICAgICAgIGJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZz
bG90KSk7CisgICAgICAgIH0sCisgICAgICAgIFsmXSAoQmFzaWNCbG9jayogYmxvY2ssIFByb2Nl
ZHVyZSYgcHJvYykgeworICAgICAgICAgICAgcmV0dXJuIGJsb2NrLT5hcHBlbmROZXc8Q29uc3Qz
MlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgcmlnaHQpOworICAgICAgICB9LAorICAgICAgICBsZWZ0
LCByaWdodCwgcmVzdWx0KTsKKworICAgIHJlc3VsdCA9IG1vZGVsQ29tcGFyZShvcGNvZGUsIGxl
ZnQsIG1vZGVsTG9hZDxUPihyaWdodCkpOworCisgICAgLy8gVGVzdCB0bXAtdG8tYWRkcgorICAg
IHNsb3QgPSByaWdodDsKKyAgICBnZW5lcmljVGVzdENvbXBhcmUoCisgICAgICAgIG9wY29kZSwK
KyAgICAgICAgWyZdIChCYXNpY0Jsb2NrKiBibG9jaywgUHJvY2VkdXJlJiBwcm9jKSB7CisgICAg
ICAgICAgICByZXR1cm4gYmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAg
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIGJsb2NrLT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkp
OworICAgICAgICB9LAorICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrLCBQcm9jZWR1cmUm
IHByb2MpIHsKKyAgICAgICAgICAgIHJldHVybiBibG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVl
PigKKyAgICAgICAgICAgICAgICBwcm9jLCBsb2FkT3Bjb2RlLCBJbnQzMiwgT3JpZ2luKCksCisg
ICAgICAgICAgICAgICAgYmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmln
aW4oKSwgJnNsb3QpKTsKKyAgICAgICAgfSwKKyAgICAgICAgbGVmdCwgcmlnaHQsIHJlc3VsdCk7
CisKKyAgICAvLyBUZXN0IGltbS10by1hZGRyCisgICAgc2xvdCA9IHJpZ2h0OworICAgIGdlbmVy
aWNUZXN0Q29tcGFyZSgKKyAgICAgICAgb3Bjb2RlLAorICAgICAgICBbJl0gKEJhc2ljQmxvY2sq
IGJsb2NrLCBQcm9jZWR1cmUmIHByb2MpIHsKKyAgICAgICAgICAgIHJldHVybiBibG9jay0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGxlZnQpOworICAgICAgICB9LAor
ICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrLCBQcm9jZWR1cmUmIHByb2MpIHsKKyAgICAg
ICAgICAgIHJldHVybiBibG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAg
ICAgICBwcm9jLCBsb2FkT3Bjb2RlLCBJbnQzMiwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAg
YmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnNsb3QpKTsK
KyAgICAgICAgfSwKKyAgICAgICAgbGVmdCwgcmlnaHQsIHJlc3VsdCk7CisKKyAgICAvLyBUZXN0
IGFkZHItdG8tYWRkciwgd2l0aCB0aGUgc2FtZSBhZGRyLgorICAgIHNsb3QgPSBsZWZ0OworICAg
IFZhbHVlKiB2YWx1ZTsKKyAgICBnZW5lcmljVGVzdENvbXBhcmUoCisgICAgICAgIG9wY29kZSwK
KyAgICAgICAgWyZdIChCYXNpY0Jsb2NrKiBibG9jaywgUHJvY2VkdXJlJiBwcm9jKSB7CisgICAg
ICAgICAgICB2YWx1ZSA9IGJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAg
ICAgICAgIHByb2MsIGxvYWRPcGNvZGUsIEludDMyLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAg
ICBibG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmc2xvdCkp
OworICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICB9LAorICAgICAgICBbJl0gKEJh
c2ljQmxvY2sqLCBQcm9jZWR1cmUmKSB7CisgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAg
ICAgIH0sCisgICAgICAgIGxlZnQsIGxlZnQsIG1vZGVsQ29tcGFyZShvcGNvZGUsIG1vZGVsTG9h
ZDxUPihsZWZ0KSwgbW9kZWxMb2FkPFQ+KGxlZnQpKSk7Cit9CisKK3ZvaWQgdGVzdENvbXBhcmVJ
bXBsKEIzOjpPcGNvZGUgb3Bjb2RlLCBpbnQ2NF90IGxlZnQsIGludDY0X3QgcmlnaHQpCit7Cisg
ICAgaW50NjRfdCByZXN1bHQgPSBtb2RlbENvbXBhcmUob3Bjb2RlLCBsZWZ0LCByaWdodCk7Cisg
ICAgaW50MzJfdCBpbnQzMlJlc3VsdCA9IG1vZGVsQ29tcGFyZShvcGNvZGUsIHN0YXRpY19jYXN0
PGludDMyX3Q+KGxlZnQpLCBzdGF0aWNfY2FzdDxpbnQzMl90PihyaWdodCkpOworCisgICAgLy8g
VGVzdCB0bXAtdG8tdG1wLgorICAgIGdlbmVyaWNUZXN0Q29tcGFyZSgKKyAgICAgICAgb3Bjb2Rl
LAorICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrLCBQcm9jZWR1cmUmIHByb2MpIHsKKyAg
ICAgICAgICAgIHJldHVybiBibG9jay0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICB9LAorICAgICAgICBb
Jl0gKEJhc2ljQmxvY2sqIGJsb2NrLCBQcm9jZWR1cmUmIHByb2MpIHsKKyAgICAgICAgICAgIHJl
dHVybiBibG9jay0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICB9LAorICAgICAgICBsZWZ0LCByaWdodCwg
cmVzdWx0KTsKKyAgICBnZW5lcmljVGVzdENvbXBhcmUoCisgICAgICAgIG9wY29kZSwKKyAgICAg
ICAgWyZdIChCYXNpY0Jsb2NrKiBibG9jaywgUHJvY2VkdXJlJiBwcm9jKSB7CisgICAgICAgICAg
ICByZXR1cm4gYmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywg
VHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIGJsb2NrLT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAg
ICAgICB9LAorICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrLCBQcm9jZWR1cmUmIHByb2Mp
IHsKKyAgICAgICAgICAgIHJldHVybiBibG9jay0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAg
ICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgYmxvY2stPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIxKSk7CisgICAgICAgIH0sCisgICAgICAgIGxlZnQsIHJpZ2h0LCBpbnQzMlJlc3VsdCk7
CisKKyAgICAvLyBUZXN0IGltbS10by10bXAuCisgICAgZ2VuZXJpY1Rlc3RDb21wYXJlKAorICAg
ICAgICBvcGNvZGUsCisgICAgICAgIFsmXSAoQmFzaWNCbG9jayogYmxvY2ssIFByb2NlZHVyZSYg
cHJvYykgeworICAgICAgICAgICAgcmV0dXJuIGJsb2NrLT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgbGVmdCk7CisgICAgICAgIH0sCisgICAgICAgIFsmXSAoQmFzaWNC
bG9jayogYmxvY2ssIFByb2NlZHVyZSYgcHJvYykgeworICAgICAgICAgICAgcmV0dXJuIGJsb2Nr
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMSk7CisgICAgICAgIH0sCisgICAgICAgIGxlZnQsIHJpZ2h0LCByZXN1bHQpOwor
ICAgIGdlbmVyaWNUZXN0Q29tcGFyZSgKKyAgICAgICAgb3Bjb2RlLAorICAgICAgICBbJl0gKEJh
c2ljQmxvY2sqIGJsb2NrLCBQcm9jZWR1cmUmIHByb2MpIHsKKyAgICAgICAgICAgIHJldHVybiBi
bG9jay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGxlZnQpOworICAg
ICAgICB9LAorICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrLCBQcm9jZWR1cmUmIHByb2Mp
IHsKKyAgICAgICAgICAgIHJldHVybiBibG9jay0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAg
ICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgYmxvY2stPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIxKSk7CisgICAgICAgIH0sCisgICAgICAgIGxlZnQsIHJpZ2h0LCBpbnQzMlJlc3VsdCk7
CisKKyAgICAvLyBUZXN0IHRtcC10by1pbW0uCisgICAgZ2VuZXJpY1Rlc3RDb21wYXJlKAorICAg
ICAgICBvcGNvZGUsCisgICAgICAgIFsmXSAoQmFzaWNCbG9jayogYmxvY2ssIFByb2NlZHVyZSYg
cHJvYykgeworICAgICAgICAgICAgcmV0dXJuIGJsb2NrLT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIH0s
CisgICAgICAgIFsmXSAoQmFzaWNCbG9jayogYmxvY2ssIFByb2NlZHVyZSYgcHJvYykgeworICAg
ICAgICAgICAgcmV0dXJuIGJsb2NrLT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmln
aW4oKSwgcmlnaHQpOworICAgICAgICB9LAorICAgICAgICBsZWZ0LCByaWdodCwgcmVzdWx0KTsK
KyAgICBnZW5lcmljVGVzdENvbXBhcmUoCisgICAgICAgIG9wY29kZSwKKyAgICAgICAgWyZdIChC
YXNpY0Jsb2NrKiBibG9jaywgUHJvY2VkdXJlJiBwcm9jKSB7CisgICAgICAgICAgICByZXR1cm4g
YmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9y
aWdpbigpLAorICAgICAgICAgICAgICAgIGJsb2NrLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICB9LAor
ICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrLCBQcm9jZWR1cmUmIHByb2MpIHsKKyAgICAg
ICAgICAgIHJldHVybiBibG9jay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIHJpZ2h0KTsKKyAgICAgICAgfSwKKyAgICAgICAgbGVmdCwgcmlnaHQsIGludDMyUmVzdWx0
KTsKKworICAgIC8vIFRlc3QgaW1tLXRvLWltbS4KKyAgICBnZW5lcmljVGVzdENvbXBhcmUoCisg
ICAgICAgIG9wY29kZSwKKyAgICAgICAgWyZdIChCYXNpY0Jsb2NrKiBibG9jaywgUHJvY2VkdXJl
JiBwcm9jKSB7CisgICAgICAgICAgICByZXR1cm4gYmxvY2stPmFwcGVuZE5ldzxDb25zdDY0VmFs
dWU+KHByb2MsIE9yaWdpbigpLCBsZWZ0KTsKKyAgICAgICAgfSwKKyAgICAgICAgWyZdIChCYXNp
Y0Jsb2NrKiBibG9jaywgUHJvY2VkdXJlJiBwcm9jKSB7CisgICAgICAgICAgICByZXR1cm4gYmxv
Y2stPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCByaWdodCk7CisgICAg
ICAgIH0sCisgICAgICAgIGxlZnQsIHJpZ2h0LCByZXN1bHQpOworICAgIGdlbmVyaWNUZXN0Q29t
cGFyZSgKKyAgICAgICAgb3Bjb2RlLAorICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrLCBQ
cm9jZWR1cmUmIHByb2MpIHsKKyAgICAgICAgICAgIHJldHVybiBibG9jay0+YXBwZW5kTmV3PENv
bnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGxlZnQpOworICAgICAgICB9LAorICAgICAgICBb
Jl0gKEJhc2ljQmxvY2sqIGJsb2NrLCBQcm9jZWR1cmUmIHByb2MpIHsKKyAgICAgICAgICAgIHJl
dHVybiBibG9jay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHJpZ2h0
KTsKKyAgICAgICAgfSwKKyAgICAgICAgbGVmdCwgcmlnaHQsIGludDMyUmVzdWx0KTsKKworICAg
IHRlc3RDb21wYXJlTG9hZDxpbnQzMl90PihvcGNvZGUsIExvYWQsIGxlZnQsIHJpZ2h0KTsKKyAg
ICB0ZXN0Q29tcGFyZUxvYWQ8aW50OF90PihvcGNvZGUsIExvYWQ4UywgbGVmdCwgcmlnaHQpOwor
ICAgIHRlc3RDb21wYXJlTG9hZDx1aW50OF90PihvcGNvZGUsIExvYWQ4WiwgbGVmdCwgcmlnaHQp
OworICAgIHRlc3RDb21wYXJlTG9hZDxpbnQxNl90PihvcGNvZGUsIExvYWQxNlMsIGxlZnQsIHJp
Z2h0KTsKKyAgICB0ZXN0Q29tcGFyZUxvYWQ8dWludDE2X3Q+KG9wY29kZSwgTG9hZDE2WiwgbGVm
dCwgcmlnaHQpOworfQorCit2b2lkIHRlc3RDb21wYXJlKEIzOjpPcGNvZGUgb3Bjb2RlLCBpbnQ2
NF90IGxlZnQsIGludDY0X3QgcmlnaHQpCit7CisgICAgdGVzdENvbXBhcmVJbXBsKG9wY29kZSwg
bGVmdCwgcmlnaHQpOworICAgIHRlc3RDb21wYXJlSW1wbChvcGNvZGUsIGxlZnQsIHJpZ2h0ICsg
MSk7CisgICAgdGVzdENvbXBhcmVJbXBsKG9wY29kZSwgbGVmdCwgcmlnaHQgLSAxKTsKK30KKwor
dm9pZCB0ZXN0RXF1YWxEb3VibGUoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdodCwgYm9vbCByZXN1
bHQpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgICAgICBwcm9jLCBFcXVhbCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50
RlBSMCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMSkpKTsKKworICAgIENIRUNLKGNvbXBp
bGVBbmRSdW48Ym9vbD4ocHJvYywgbGVmdCwgcmlnaHQpID09IHJlc3VsdCk7Cit9CisKK3N0YXRp
YyBpbnQgc2ltcGxlRnVuY3Rpb24oaW50IGEsIGludCBiKQoreworICAgIHJldHVybiBhICsgYjsK
K30KKwordm9pZCB0ZXN0Q2FsbFNpbXBsZShpbnQgYSwgaW50IGIpCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKKyAgICAgICAgICAgIHByb2Ms
IEludDMyLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihzaW1wbGVGdW5jdGlv
biwgQjNDQ2FsbFB0clRhZykpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4o
cHJvYywgYSwgYikgPT0gYSArIGIpOworfQorCit2b2lkIHRlc3RDYWxsUmFyZShpbnQgYSwgaW50
IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBjb21tb24gPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgQmFzaWNCbG9jayogcmFyZSA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApLAorICAgICAgICBGcmVxdWVudGVkQmxvY2socmFyZSwgRnJlcXVl
bmN5Q2xhc3M6OlJhcmUpLAorICAgICAgICBGcmVxdWVudGVkQmxvY2soY29tbW9uKSk7CisKKyAg
ICBjb21tb24tPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgY29tbW9uLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
MCkpOworCisgICAgcmFyZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByYXJlLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCisg
ICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksCisgICAgICAgICAgICByYXJlLT5hcHBl
bmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lk
Kj4oc2ltcGxlRnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSwKKyAgICAgICAgICAgIHJhcmUtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIxKSwKKyAgICAgICAgICAgIHJhcmUtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKSkpOworCisgICAgQ0hFQ0soY29t
cGlsZUFuZFJ1bjxpbnQ+KHByb2MsIHRydWUsIGEsIGIpID09IGEgKyBiKTsKK30KKwordm9pZCB0
ZXN0Q2FsbFJhcmVMaXZlKGludCBhLCBpbnQgYiwgaW50IGMpCit7CisgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Js
b2NrKiBjb21tb24gPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogcmFyZSA9IHBy
b2MuYWRkQmxvY2soKTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAorICAg
ICAgICBGcmVxdWVudGVkQmxvY2socmFyZSwgRnJlcXVlbmN5Q2xhc3M6OlJhcmUpLAorICAgICAg
ICBGcmVxdWVudGVkQmxvY2soY29tbW9uKSk7CisKKyAgICBjb21tb24tPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY29tbW9uLT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgcmFyZS0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAg
ICByYXJlLT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIHJhcmUtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKKyAgICAgICAgICAg
ICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcmFyZS0+YXBwZW5k
TmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+
KHNpbXBsZUZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSksCisgICAgICAgICAgICAgICAgcmFyZS0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjEpLAorICAgICAgICAgICAgICAgIHJhcmUtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKSksCisgICAgICAgICAg
ICByYXJlLT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgICAgICByYXJlLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMykpKSk7CisKKyAgICBDSEVD
Syhjb21waWxlQW5kUnVuPGludD4ocHJvYywgdHJ1ZSwgYSwgYiwgYykgPT0gYSArIGIgKyBjKTsK
K30KKwordm9pZCB0ZXN0Q2FsbFNpbXBsZVB1cmUoaW50IGEsIGludCBiKQoreworICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAg
cm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCisgICAgICAgICAgICBw
cm9jLCBJbnQzMiwgT3JpZ2luKCksIEVmZmVjdHM6Om5vbmUoKSwKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRy
PHZvaWQqPihzaW1wbGVGdW5jdGlvbiwgQjNDQ2FsbFB0clRhZykpLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSk7CisKKyAgICBDSEVD
Syhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYSwgYikgPT0gYSArIGIpOworfQorCitzdGF0aWMg
aW50IGZ1bmN0aW9uV2l0aEhlbGxhQXJndW1lbnRzKGludCBhLCBpbnQgYiwgaW50IGMsIGludCBk
LCBpbnQgZSwgaW50IGYsIGludCBnLCBpbnQgaCwgaW50IGksIGludCBqLCBpbnQgaywgaW50IGws
IGludCBtLCBpbnQgbiwgaW50IG8sIGludCBwLCBpbnQgcSwgaW50IHIsIGludCBzLCBpbnQgdCwg
aW50IHUsIGludCB2LCBpbnQgdywgaW50IHgsIGludCB5LCBpbnQgeikKK3sKKyAgICByZXR1cm4g
KGEgPDwgMCkgKyAoYiA8PCAxKSArIChjIDw8IDIpICsgKGQgPDwgMykgKyAoZSA8PCA0KSArIChm
IDw8IDUpICsgKGcgPDwgNikgKyAoaCA8PCA3KSArIChpIDw8IDgpICsgKGogPDwgOSkgKyAoayA8
PCAxMCkgKyAobCA8PCAxMSkgKyAobSA8PCAxMikgKyAobiA8PCAxMykgKyAobyA8PCAxNCkgKyAo
cCA8PCAxNSkgKyAocSA8PCAxNikgKyAociA8PCAxNykgKyAocyA8PCAxOCkgKyAodCA8PCAxOSkg
KyAodSA8PCAyMCkgKyAodiA8PCAyMSkgKyAodyA8PCAyMikgKyAoeCA8PCAyMykgKyAoeSA8PCAy
NCkgKyAoeiA8PCAyNSk7Cit9CisKK3ZvaWQgdGVzdENhbGxGdW5jdGlvbldpdGhIZWxsYUFyZ3Vt
ZW50cygpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKworICAgIFZlY3RvcjxWYWx1ZSo+IGFyZ3M7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IDI2OyArK2kpCisgICAgICAgIGFyZ3MuYXBwZW5kKHJvb3QtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBpICsgMSkpOworCisgICAgQ0NhbGxW
YWx1ZSogY2FsbCA9IHJvb3QtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKKyAgICAgICAgcHJvYywg
SW50MzIsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4oZnVuY3Rpb25XaXRoSGVsbGFB
cmd1bWVudHMsIEIzQ0NhbGxQdHJUYWcpKSk7CisgICAgY2FsbC0+YXBwZW5kQXJncyhhcmdzKTsK
KworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LCBjYWxsKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jKSA9PSBmdW5jdGlv
bldpdGhIZWxsYUFyZ3VtZW50cygxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEy
LCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjYp
KTsKK30KKworc3RhdGljIHVpbnQ2NF90IGZ1bmN0aW9uV2l0aEhlbGxhQXJndW1lbnRzMih1aW50
NjRfdCBhLCB1aW50NjRfdCBiLCB1aW50NjRfdCBjLCB1aW50NjRfdCBkLCB1aW50NjRfdCBlLCB1
aW50NjRfdCBmLCB1aW50NjRfdCBnLCB1aW50NjRfdCBoLCB1aW50NjRfdCBpLCB1aW50NjRfdCBq
LCB1aW50NjRfdCBrLCB1aW50NjRfdCBsLCB1aW50NjRfdCBtLCB1aW50NjRfdCBuLCB1aW50NjRf
dCBvLCB1aW50NjRfdCBwLCB1aW50NjRfdCBxLCB1aW50NjRfdCByLCB1aW50NjRfdCBzLCB1aW50
NjRfdCB0LCB1aW50NjRfdCB1LCB1aW50NjRfdCB2LCB1aW50NjRfdCB3LCB1aW50NjRfdCB4LCB1
aW50NjRfdCB5LCB1aW50NjRfdCB6KQoreworICAgIHJldHVybiAoYSA8PCAwKSArIChiIDw8IDEp
ICsgKGMgPDwgMikgKyAoZCA8PCAzKSArIChlIDw8IDQpICsgKGYgPDwgNSkgKyAoZyA8PCA2KSAr
IChoIDw8IDcpICsgKGkgPDwgOCkgKyAoaiA8PCA5KSArIChrIDw8IDEwKSArIChsIDw8IDExKSAr
IChtIDw8IDEyKSArIChuIDw8IDEzKSArIChvIDw8IDE0KSArIChwIDw8IDE1KSArIChxIDw8IDE2
KSArIChyIDw8IDE3KSArIChzIDw8IDE4KSArICh0IDw8IDE5KSArICh1IDw8IDIwKSArICh2IDw8
IDIxKSArICh3IDw8IDIyKSArICh4IDw8IDIzKSArICh5IDw8IDI0KSArICh6IDw8IDI1KTsKK30K
Kwordm9pZCB0ZXN0Q2FsbEZ1bmN0aW9uV2l0aEhlbGxhQXJndW1lbnRzMigpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKwor
ICAgIHVpbnQ2NF90IGxpbWl0ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KCgxIDw8IDEyKSAtIDEp
OyAvLyBVSU5UMTJfTUFYLCBmb3IgYXJtNjQgdGVzdGluZy4KKworICAgIFZlY3RvcjxWYWx1ZSo+
IGFyZ3M7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI2OyArK2kpCisgICAgICAgIGFy
Z3MuYXBwZW5kKHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBs
aW1pdCAtIGkpKTsKKworICAgIENDYWxsVmFsdWUqIGNhbGwgPSByb290LT5hcHBlbmROZXc8Q0Nh
bGxWYWx1ZT4oCisgICAgICAgIHByb2MsIEludDY0LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8
dm9pZCo+KGZ1bmN0aW9uV2l0aEhlbGxhQXJndW1lbnRzMiwgQjNDQ2FsbFB0clRhZykpKTsKKyAg
ICBjYWxsLT5hcHBlbmRBcmdzKGFyZ3MpOworCisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGNhbGwpOworCisgICAgYXV0byBhID0gY29tcGls
ZUFuZFJ1bjx1aW50NjRfdD4ocHJvYyk7CisgICAgYXV0byBiID0gZnVuY3Rpb25XaXRoSGVsbGFB
cmd1bWVudHMyKGxpbWl0LCBsaW1pdC0xLCBsaW1pdC0yLCBsaW1pdC0zLCBsaW1pdC00LCBsaW1p
dC01LCBsaW1pdC02LCBsaW1pdC03LCBsaW1pdC04LCBsaW1pdC05LCBsaW1pdC0xMCwgbGltaXQt
MTEsIGxpbWl0LTEyLCBsaW1pdC0xMywgbGltaXQtMTQsIGxpbWl0LTE1LCBsaW1pdC0xNiwgbGlt
aXQtMTcsIGxpbWl0LTE4LCBsaW1pdC0xOSwgbGltaXQtMjAsIGxpbWl0LTIxLCBsaW1pdC0yMiwg
bGltaXQtMjMsIGxpbWl0LTI0LCBsaW1pdC0yNSk7CisgICAgQ0hFQ0soYSA9PSBiKTsKK30KKwor
c3RhdGljIGludCBmdW5jdGlvbldpdGhIZWxsYUFyZ3VtZW50czMoaW50IGFyZzAsaW50IGFyZzEs
aW50IGFyZzIsaW50IGFyZzMsaW50IGFyZzQsaW50IGFyZzUsaW50IGFyZzYsaW50IGFyZzcsaW50
IGFyZzgsaW50IGFyZzksaW50IGFyZzEwLGludCBhcmcxMSxpbnQgYXJnMTIsaW50IGFyZzEzLGlu
dCBhcmcxNCxpbnQgYXJnMTUsaW50IGFyZzE2LGludCBhcmcxNyxpbnQgYXJnMTgsaW50IGFyZzE5
LGludCBhcmcyMCxpbnQgYXJnMjEsaW50IGFyZzIyLGludCBhcmcyMyxpbnQgYXJnMjQsaW50IGFy
ZzI1LGludCBhcmcyNixpbnQgYXJnMjcsaW50IGFyZzI4LGludCBhcmcyOSxpbnQgYXJnMzAsaW50
IGFyZzMxLGludCBhcmczMixpbnQgYXJnMzMsaW50IGFyZzM0LGludCBhcmczNSxpbnQgYXJnMzYs
aW50IGFyZzM3LGludCBhcmczOCxpbnQgYXJnMzksaW50IGFyZzQwLGludCBhcmc0MSxpbnQgYXJn
NDIsaW50IGFyZzQzLGludCBhcmc0NCxpbnQgYXJnNDUsaW50IGFyZzQ2LGludCBhcmc0NyxpbnQg
YXJnNDgsaW50IGFyZzQ5LGludCBhcmc1MCxpbnQgYXJnNTEsaW50IGFyZzUyLGludCBhcmc1Myxp
bnQgYXJnNTQsaW50IGFyZzU1LGludCBhcmc1NixpbnQgYXJnNTcsaW50IGFyZzU4LGludCBhcmc1
OSxpbnQgYXJnNjAsaW50IGFyZzYxLGludCBhcmc2MixpbnQgYXJnNjMsaW50IGFyZzY0LGludCBh
cmc2NSxpbnQgYXJnNjYsaW50IGFyZzY3LGludCBhcmc2OCxpbnQgYXJnNjksaW50IGFyZzcwLGlu
dCBhcmc3MSxpbnQgYXJnNzIsaW50IGFyZzczLGludCBhcmc3NCxpbnQgYXJnNzUsaW50IGFyZzc2
LGludCBhcmc3NyxpbnQgYXJnNzgsaW50IGFyZzc5LGludCBhcmc4MCxpbnQgYXJnODEsaW50IGFy
ZzgyLGludCBhcmc4MyxpbnQgYXJnODQsaW50IGFyZzg1LGludCBhcmc4NixpbnQgYXJnODcsaW50
IGFyZzg4LGludCBhcmc4OSxpbnQgYXJnOTAsaW50IGFyZzkxLGludCBhcmc5MixpbnQgYXJnOTMs
aW50IGFyZzk0LGludCBhcmc5NSxpbnQgYXJnOTYsaW50IGFyZzk3LGludCBhcmc5OCxpbnQgYXJn
OTksaW50IGFyZzEwMCxpbnQgYXJnMTAxLGludCBhcmcxMDIsaW50IGFyZzEwMyxpbnQgYXJnMTA0
LGludCBhcmcxMDUsaW50IGFyZzEwNixpbnQgYXJnMTA3LGludCBhcmcxMDgsaW50IGFyZzEwOSxp
bnQgYXJnMTEwLGludCBhcmcxMTEsaW50IGFyZzExMixpbnQgYXJnMTEzLGludCBhcmcxMTQsaW50
IGFyZzExNSxpbnQgYXJnMTE2LGludCBhcmcxMTcsaW50IGFyZzExOCxpbnQgYXJnMTE5LGludCBh
cmcxMjAsaW50IGFyZzEyMSxpbnQgYXJnMTIyLGludCBhcmcxMjMsaW50IGFyZzEyNCxpbnQgYXJn
MTI1LGludCBhcmcxMjYsaW50IGFyZzEyNyxpbnQgYXJnMTI4LGludCBhcmcxMjksaW50IGFyZzEz
MCxpbnQgYXJnMTMxLGludCBhcmcxMzIsaW50IGFyZzEzMyxpbnQgYXJnMTM0LGludCBhcmcxMzUs
aW50IGFyZzEzNixpbnQgYXJnMTM3LGludCBhcmcxMzgsaW50IGFyZzEzOSxpbnQgYXJnMTQwLGlu
dCBhcmcxNDEsaW50IGFyZzE0MixpbnQgYXJnMTQzLGludCBhcmcxNDQsaW50IGFyZzE0NSxpbnQg
YXJnMTQ2LGludCBhcmcxNDcsaW50IGFyZzE0OCxpbnQgYXJnMTQ5LGludCBhcmcxNTAsaW50IGFy
ZzE1MSxpbnQgYXJnMTUyLGludCBhcmcxNTMsaW50IGFyZzE1NCxpbnQgYXJnMTU1LGludCBhcmcx
NTYsaW50IGFyZzE1NyxpbnQgYXJnMTU4LGludCBhcmcxNTksaW50IGFyZzE2MCxpbnQgYXJnMTYx
LGludCBhcmcxNjIsaW50IGFyZzE2MyxpbnQgYXJnMTY0LGludCBhcmcxNjUsaW50IGFyZzE2Nixp
bnQgYXJnMTY3LGludCBhcmcxNjgsaW50IGFyZzE2OSxpbnQgYXJnMTcwLGludCBhcmcxNzEsaW50
IGFyZzE3MixpbnQgYXJnMTczLGludCBhcmcxNzQsaW50IGFyZzE3NSxpbnQgYXJnMTc2LGludCBh
cmcxNzcsaW50IGFyZzE3OCxpbnQgYXJnMTc5LGludCBhcmcxODAsaW50IGFyZzE4MSxpbnQgYXJn
MTgyLGludCBhcmcxODMsaW50IGFyZzE4NCxpbnQgYXJnMTg1LGludCBhcmcxODYsaW50IGFyZzE4
NyxpbnQgYXJnMTg4LGludCBhcmcxODksaW50IGFyZzE5MCxpbnQgYXJnMTkxLGludCBhcmcxOTIs
aW50IGFyZzE5MyxpbnQgYXJnMTk0LGludCBhcmcxOTUsaW50IGFyZzE5NixpbnQgYXJnMTk3LGlu
dCBhcmcxOTgsaW50IGFyZzE5OSxpbnQgYXJnMjAwLGludCBhcmcyMDEsaW50IGFyZzIwMixpbnQg
YXJnMjAzLGludCBhcmcyMDQsaW50IGFyZzIwNSxpbnQgYXJnMjA2LGludCBhcmcyMDcsaW50IGFy
ZzIwOCxpbnQgYXJnMjA5LGludCBhcmcyMTAsaW50IGFyZzIxMSxpbnQgYXJnMjEyLGludCBhcmcy
MTMsaW50IGFyZzIxNCxpbnQgYXJnMjE1LGludCBhcmcyMTYsaW50IGFyZzIxNyxpbnQgYXJnMjE4
LGludCBhcmcyMTksaW50IGFyZzIyMCxpbnQgYXJnMjIxLGludCBhcmcyMjIsaW50IGFyZzIyMyxp
bnQgYXJnMjI0LGludCBhcmcyMjUsaW50IGFyZzIyNixpbnQgYXJnMjI3LGludCBhcmcyMjgsaW50
IGFyZzIyOSxpbnQgYXJnMjMwLGludCBhcmcyMzEsaW50IGFyZzIzMixpbnQgYXJnMjMzLGludCBh
cmcyMzQsaW50IGFyZzIzNSxpbnQgYXJnMjM2LGludCBhcmcyMzcsaW50IGFyZzIzOCxpbnQgYXJn
MjM5LGludCBhcmcyNDAsaW50IGFyZzI0MSxpbnQgYXJnMjQyLGludCBhcmcyNDMsaW50IGFyZzI0
NCxpbnQgYXJnMjQ1LGludCBhcmcyNDYsaW50IGFyZzI0NyxpbnQgYXJnMjQ4LGludCBhcmcyNDks
aW50IGFyZzI1MCxpbnQgYXJnMjUxLGludCBhcmcyNTIsaW50IGFyZzI1MyxpbnQgYXJnMjU0LGlu
dCBhcmcyNTUsaW50IGFyZzI1NixpbnQgYXJnMjU3LGludCBhcmcyNTgsaW50IGFyZzI1OSxpbnQg
YXJnMjYwLGludCBhcmcyNjEsaW50IGFyZzI2MixpbnQgYXJnMjYzLGludCBhcmcyNjQsaW50IGFy
ZzI2NSxpbnQgYXJnMjY2LGludCBhcmcyNjcsaW50IGFyZzI2OCxpbnQgYXJnMjY5LGludCBhcmcy
NzAsaW50IGFyZzI3MSxpbnQgYXJnMjcyLGludCBhcmcyNzMsaW50IGFyZzI3NCxpbnQgYXJnMjc1
LGludCBhcmcyNzYsaW50IGFyZzI3NyxpbnQgYXJnMjc4LGludCBhcmcyNzksaW50IGFyZzI4MCxp
bnQgYXJnMjgxLGludCBhcmcyODIsaW50IGFyZzI4MyxpbnQgYXJnMjg0LGludCBhcmcyODUsaW50
IGFyZzI4NixpbnQgYXJnMjg3LGludCBhcmcyODgsaW50IGFyZzI4OSxpbnQgYXJnMjkwLGludCBh
cmcyOTEsaW50IGFyZzI5MixpbnQgYXJnMjkzLGludCBhcmcyOTQsaW50IGFyZzI5NSxpbnQgYXJn
Mjk2LGludCBhcmcyOTcsaW50IGFyZzI5OCxpbnQgYXJnMjk5LGludCBhcmczMDAsaW50IGFyZzMw
MSxpbnQgYXJnMzAyLGludCBhcmczMDMsaW50IGFyZzMwNCxpbnQgYXJnMzA1LGludCBhcmczMDYs
aW50IGFyZzMwNyxpbnQgYXJnMzA4LGludCBhcmczMDksaW50IGFyZzMxMCxpbnQgYXJnMzExLGlu
dCBhcmczMTIsaW50IGFyZzMxMyxpbnQgYXJnMzE0LGludCBhcmczMTUsaW50IGFyZzMxNixpbnQg
YXJnMzE3LGludCBhcmczMTgsaW50IGFyZzMxOSxpbnQgYXJnMzIwLGludCBhcmczMjEsaW50IGFy
ZzMyMixpbnQgYXJnMzIzLGludCBhcmczMjQsaW50IGFyZzMyNSxpbnQgYXJnMzI2LGludCBhcmcz
MjcsaW50IGFyZzMyOCxpbnQgYXJnMzI5LGludCBhcmczMzAsaW50IGFyZzMzMSxpbnQgYXJnMzMy
LGludCBhcmczMzMsaW50IGFyZzMzNCxpbnQgYXJnMzM1LGludCBhcmczMzYsaW50IGFyZzMzNyxp
bnQgYXJnMzM4LGludCBhcmczMzksaW50IGFyZzM0MCxpbnQgYXJnMzQxLGludCBhcmczNDIsaW50
IGFyZzM0MyxpbnQgYXJnMzQ0LGludCBhcmczNDUsaW50IGFyZzM0NixpbnQgYXJnMzQ3LGludCBh
cmczNDgsaW50IGFyZzM0OSxpbnQgYXJnMzUwLGludCBhcmczNTEsaW50IGFyZzM1MixpbnQgYXJn
MzUzLGludCBhcmczNTQsaW50IGFyZzM1NSxpbnQgYXJnMzU2LGludCBhcmczNTcsaW50IGFyZzM1
OCxpbnQgYXJnMzU5LGludCBhcmczNjAsaW50IGFyZzM2MSxpbnQgYXJnMzYyLGludCBhcmczNjMs
aW50IGFyZzM2NCxpbnQgYXJnMzY1LGludCBhcmczNjYsaW50IGFyZzM2NyxpbnQgYXJnMzY4LGlu
dCBhcmczNjksaW50IGFyZzM3MCxpbnQgYXJnMzcxLGludCBhcmczNzIsaW50IGFyZzM3MyxpbnQg
YXJnMzc0LGludCBhcmczNzUsaW50IGFyZzM3NixpbnQgYXJnMzc3LGludCBhcmczNzgsaW50IGFy
ZzM3OSxpbnQgYXJnMzgwLGludCBhcmczODEsaW50IGFyZzM4MixpbnQgYXJnMzgzLGludCBhcmcz
ODQsaW50IGFyZzM4NSxpbnQgYXJnMzg2LGludCBhcmczODcsaW50IGFyZzM4OCxpbnQgYXJnMzg5
LGludCBhcmczOTAsaW50IGFyZzM5MSxpbnQgYXJnMzkyLGludCBhcmczOTMsaW50IGFyZzM5NCxp
bnQgYXJnMzk1LGludCBhcmczOTYsaW50IGFyZzM5NyxpbnQgYXJnMzk4LGludCBhcmczOTksaW50
IGFyZzQwMCxpbnQgYXJnNDAxLGludCBhcmc0MDIsaW50IGFyZzQwMyxpbnQgYXJnNDA0LGludCBh
cmc0MDUsaW50IGFyZzQwNixpbnQgYXJnNDA3LGludCBhcmc0MDgsaW50IGFyZzQwOSxpbnQgYXJn
NDEwLGludCBhcmc0MTEsaW50IGFyZzQxMixpbnQgYXJnNDEzLGludCBhcmc0MTQsaW50IGFyZzQx
NSxpbnQgYXJnNDE2LGludCBhcmc0MTcsaW50IGFyZzQxOCxpbnQgYXJnNDE5LGludCBhcmc0MjAs
aW50IGFyZzQyMSxpbnQgYXJnNDIyLGludCBhcmc0MjMsaW50IGFyZzQyNCxpbnQgYXJnNDI1LGlu
dCBhcmc0MjYsaW50IGFyZzQyNyxpbnQgYXJnNDI4LGludCBhcmc0MjksaW50IGFyZzQzMCxpbnQg
YXJnNDMxLGludCBhcmc0MzIsaW50IGFyZzQzMyxpbnQgYXJnNDM0LGludCBhcmc0MzUsaW50IGFy
ZzQzNixpbnQgYXJnNDM3LGludCBhcmc0MzgsaW50IGFyZzQzOSxpbnQgYXJnNDQwLGludCBhcmc0
NDEsaW50IGFyZzQ0MixpbnQgYXJnNDQzLGludCBhcmc0NDQsaW50IGFyZzQ0NSxpbnQgYXJnNDQ2
LGludCBhcmc0NDcsaW50IGFyZzQ0OCxpbnQgYXJnNDQ5LGludCBhcmc0NTAsaW50IGFyZzQ1MSxp
bnQgYXJnNDUyLGludCBhcmc0NTMsaW50IGFyZzQ1NCxpbnQgYXJnNDU1LGludCBhcmc0NTYsaW50
IGFyZzQ1NyxpbnQgYXJnNDU4LGludCBhcmc0NTksaW50IGFyZzQ2MCxpbnQgYXJnNDYxLGludCBh
cmc0NjIsaW50IGFyZzQ2MyxpbnQgYXJnNDY0LGludCBhcmc0NjUsaW50IGFyZzQ2NixpbnQgYXJn
NDY3LGludCBhcmc0NjgsaW50IGFyZzQ2OSxpbnQgYXJnNDcwLGludCBhcmc0NzEsaW50IGFyZzQ3
MixpbnQgYXJnNDczLGludCBhcmc0NzQsaW50IGFyZzQ3NSxpbnQgYXJnNDc2LGludCBhcmc0Nzcs
aW50IGFyZzQ3OCxpbnQgYXJnNDc5LGludCBhcmc0ODAsaW50IGFyZzQ4MSxpbnQgYXJnNDgyLGlu
dCBhcmc0ODMsaW50IGFyZzQ4NCxpbnQgYXJnNDg1LGludCBhcmc0ODYsaW50IGFyZzQ4NyxpbnQg
YXJnNDg4LGludCBhcmc0ODksaW50IGFyZzQ5MCxpbnQgYXJnNDkxLGludCBhcmc0OTIsaW50IGFy
ZzQ5MyxpbnQgYXJnNDk0LGludCBhcmc0OTUsaW50IGFyZzQ5NixpbnQgYXJnNDk3LGludCBhcmc0
OTgsaW50IGFyZzQ5OSxpbnQgYXJnNTAwLGludCBhcmc1MDEsaW50IGFyZzUwMixpbnQgYXJnNTAz
LGludCBhcmc1MDQsaW50IGFyZzUwNSxpbnQgYXJnNTA2LGludCBhcmc1MDcsaW50IGFyZzUwOCxp
bnQgYXJnNTA5LGludCBhcmc1MTAsaW50IGFyZzUxMSxpbnQgYXJnNTEyLGludCBhcmc1MTMsaW50
IGFyZzUxNCxpbnQgYXJnNTE1LGludCBhcmc1MTYsaW50IGFyZzUxNyxpbnQgYXJnNTE4LGludCBh
cmc1MTksaW50IGFyZzUyMCxpbnQgYXJnNTIxLGludCBhcmc1MjIsaW50IGFyZzUyMyxpbnQgYXJn
NTI0LGludCBhcmc1MjUsaW50IGFyZzUyNixpbnQgYXJnNTI3LGludCBhcmc1MjgsaW50IGFyZzUy
OSxpbnQgYXJnNTMwLGludCBhcmc1MzEsaW50IGFyZzUzMixpbnQgYXJnNTMzLGludCBhcmc1MzQs
aW50IGFyZzUzNSxpbnQgYXJnNTM2LGludCBhcmc1MzcsaW50IGFyZzUzOCxpbnQgYXJnNTM5LGlu
dCBhcmc1NDAsaW50IGFyZzU0MSxpbnQgYXJnNTQyLGludCBhcmc1NDMsaW50IGFyZzU0NCxpbnQg
YXJnNTQ1LGludCBhcmc1NDYsaW50IGFyZzU0NyxpbnQgYXJnNTQ4LGludCBhcmc1NDksaW50IGFy
ZzU1MCxpbnQgYXJnNTUxLGludCBhcmc1NTIsaW50IGFyZzU1MyxpbnQgYXJnNTU0LGludCBhcmc1
NTUsaW50IGFyZzU1NixpbnQgYXJnNTU3LGludCBhcmc1NTgsaW50IGFyZzU1OSxpbnQgYXJnNTYw
LGludCBhcmc1NjEsaW50IGFyZzU2MixpbnQgYXJnNTYzLGludCBhcmc1NjQsaW50IGFyZzU2NSxp
bnQgYXJnNTY2LGludCBhcmc1NjcsaW50IGFyZzU2OCxpbnQgYXJnNTY5LGludCBhcmc1NzAsaW50
IGFyZzU3MSxpbnQgYXJnNTcyLGludCBhcmc1NzMsaW50IGFyZzU3NCxpbnQgYXJnNTc1LGludCBh
cmc1NzYsaW50IGFyZzU3NyxpbnQgYXJnNTc4LGludCBhcmc1NzksaW50IGFyZzU4MCxpbnQgYXJn
NTgxLGludCBhcmc1ODIsaW50IGFyZzU4MyxpbnQgYXJnNTg0LGludCBhcmc1ODUsaW50IGFyZzU4
NixpbnQgYXJnNTg3LGludCBhcmc1ODgsaW50IGFyZzU4OSxpbnQgYXJnNTkwLGludCBhcmc1OTEs
aW50IGFyZzU5MixpbnQgYXJnNTkzLGludCBhcmc1OTQsaW50IGFyZzU5NSxpbnQgYXJnNTk2LGlu
dCBhcmc1OTcsaW50IGFyZzU5OCxpbnQgYXJnNTk5LGludCBhcmc2MDAsaW50IGFyZzYwMSxpbnQg
YXJnNjAyLGludCBhcmc2MDMsaW50IGFyZzYwNCxpbnQgYXJnNjA1LGludCBhcmc2MDYsaW50IGFy
ZzYwNyxpbnQgYXJnNjA4LGludCBhcmc2MDksaW50IGFyZzYxMCxpbnQgYXJnNjExLGludCBhcmc2
MTIsaW50IGFyZzYxMyxpbnQgYXJnNjE0LGludCBhcmc2MTUsaW50IGFyZzYxNixpbnQgYXJnNjE3
LGludCBhcmc2MTgsaW50IGFyZzYxOSxpbnQgYXJnNjIwLGludCBhcmc2MjEsaW50IGFyZzYyMixp
bnQgYXJnNjIzLGludCBhcmc2MjQsaW50IGFyZzYyNSxpbnQgYXJnNjI2LGludCBhcmc2MjcsaW50
IGFyZzYyOCxpbnQgYXJnNjI5LGludCBhcmc2MzAsaW50IGFyZzYzMSxpbnQgYXJnNjMyLGludCBh
cmc2MzMsaW50IGFyZzYzNCxpbnQgYXJnNjM1LGludCBhcmc2MzYsaW50IGFyZzYzNyxpbnQgYXJn
NjM4LGludCBhcmc2MzksaW50IGFyZzY0MCxpbnQgYXJnNjQxLGludCBhcmc2NDIsaW50IGFyZzY0
MyxpbnQgYXJnNjQ0LGludCBhcmc2NDUsaW50IGFyZzY0NixpbnQgYXJnNjQ3LGludCBhcmc2NDgs
aW50IGFyZzY0OSxpbnQgYXJnNjUwLGludCBhcmc2NTEsaW50IGFyZzY1MixpbnQgYXJnNjUzLGlu
dCBhcmc2NTQsaW50IGFyZzY1NSxpbnQgYXJnNjU2LGludCBhcmc2NTcsaW50IGFyZzY1OCxpbnQg
YXJnNjU5LGludCBhcmc2NjAsaW50IGFyZzY2MSxpbnQgYXJnNjYyLGludCBhcmc2NjMsaW50IGFy
ZzY2NCxpbnQgYXJnNjY1LGludCBhcmc2NjYsaW50IGFyZzY2NyxpbnQgYXJnNjY4LGludCBhcmc2
NjksaW50IGFyZzY3MCxpbnQgYXJnNjcxLGludCBhcmc2NzIsaW50IGFyZzY3MyxpbnQgYXJnNjc0
LGludCBhcmc2NzUsaW50IGFyZzY3NixpbnQgYXJnNjc3LGludCBhcmc2NzgsaW50IGFyZzY3OSxp
bnQgYXJnNjgwLGludCBhcmc2ODEsaW50IGFyZzY4MixpbnQgYXJnNjgzLGludCBhcmc2ODQsaW50
IGFyZzY4NSxpbnQgYXJnNjg2LGludCBhcmc2ODcsaW50IGFyZzY4OCxpbnQgYXJnNjg5LGludCBh
cmc2OTAsaW50IGFyZzY5MSxpbnQgYXJnNjkyLGludCBhcmc2OTMsaW50IGFyZzY5NCxpbnQgYXJn
Njk1LGludCBhcmc2OTYsaW50IGFyZzY5NyxpbnQgYXJnNjk4LGludCBhcmc2OTksaW50IGFyZzcw
MCxpbnQgYXJnNzAxLGludCBhcmc3MDIsaW50IGFyZzcwMyxpbnQgYXJnNzA0LGludCBhcmc3MDUs
aW50IGFyZzcwNixpbnQgYXJnNzA3LGludCBhcmc3MDgsaW50IGFyZzcwOSxpbnQgYXJnNzEwLGlu
dCBhcmc3MTEsaW50IGFyZzcxMixpbnQgYXJnNzEzLGludCBhcmc3MTQsaW50IGFyZzcxNSxpbnQg
YXJnNzE2LGludCBhcmc3MTcsaW50IGFyZzcxOCxpbnQgYXJnNzE5LGludCBhcmc3MjAsaW50IGFy
ZzcyMSxpbnQgYXJnNzIyLGludCBhcmc3MjMsaW50IGFyZzcyNCxpbnQgYXJnNzI1LGludCBhcmc3
MjYsaW50IGFyZzcyNyxpbnQgYXJnNzI4LGludCBhcmc3MjksaW50IGFyZzczMCxpbnQgYXJnNzMx
LGludCBhcmc3MzIsaW50IGFyZzczMyxpbnQgYXJnNzM0LGludCBhcmc3MzUsaW50IGFyZzczNixp
bnQgYXJnNzM3LGludCBhcmc3MzgsaW50IGFyZzczOSxpbnQgYXJnNzQwLGludCBhcmc3NDEsaW50
IGFyZzc0MixpbnQgYXJnNzQzLGludCBhcmc3NDQsaW50IGFyZzc0NSxpbnQgYXJnNzQ2LGludCBh
cmc3NDcsaW50IGFyZzc0OCxpbnQgYXJnNzQ5LGludCBhcmc3NTAsaW50IGFyZzc1MSxpbnQgYXJn
NzUyLGludCBhcmc3NTMsaW50IGFyZzc1NCxpbnQgYXJnNzU1LGludCBhcmc3NTYsaW50IGFyZzc1
NyxpbnQgYXJnNzU4LGludCBhcmc3NTksaW50IGFyZzc2MCxpbnQgYXJnNzYxLGludCBhcmc3NjIs
aW50IGFyZzc2MyxpbnQgYXJnNzY0LGludCBhcmc3NjUsaW50IGFyZzc2NixpbnQgYXJnNzY3LGlu
dCBhcmc3NjgsaW50IGFyZzc2OSxpbnQgYXJnNzcwLGludCBhcmc3NzEsaW50IGFyZzc3MixpbnQg
YXJnNzczLGludCBhcmc3NzQsaW50IGFyZzc3NSxpbnQgYXJnNzc2LGludCBhcmc3NzcsaW50IGFy
Zzc3OCxpbnQgYXJnNzc5LGludCBhcmc3ODAsaW50IGFyZzc4MSxpbnQgYXJnNzgyLGludCBhcmc3
ODMsaW50IGFyZzc4NCxpbnQgYXJnNzg1LGludCBhcmc3ODYsaW50IGFyZzc4NyxpbnQgYXJnNzg4
LGludCBhcmc3ODksaW50IGFyZzc5MCxpbnQgYXJnNzkxLGludCBhcmc3OTIsaW50IGFyZzc5Myxp
bnQgYXJnNzk0LGludCBhcmc3OTUsaW50IGFyZzc5NixpbnQgYXJnNzk3LGludCBhcmc3OTgsaW50
IGFyZzc5OSxpbnQgYXJnODAwLGludCBhcmc4MDEsaW50IGFyZzgwMixpbnQgYXJnODAzLGludCBh
cmc4MDQsaW50IGFyZzgwNSxpbnQgYXJnODA2LGludCBhcmc4MDcsaW50IGFyZzgwOCxpbnQgYXJn
ODA5LGludCBhcmc4MTAsaW50IGFyZzgxMSxpbnQgYXJnODEyLGludCBhcmc4MTMsaW50IGFyZzgx
NCxpbnQgYXJnODE1LGludCBhcmc4MTYsaW50IGFyZzgxNyxpbnQgYXJnODE4LGludCBhcmc4MTks
aW50IGFyZzgyMCxpbnQgYXJnODIxLGludCBhcmc4MjIsaW50IGFyZzgyMyxpbnQgYXJnODI0LGlu
dCBhcmc4MjUsaW50IGFyZzgyNixpbnQgYXJnODI3LGludCBhcmc4MjgsaW50IGFyZzgyOSxpbnQg
YXJnODMwLGludCBhcmc4MzEsaW50IGFyZzgzMixpbnQgYXJnODMzLGludCBhcmc4MzQsaW50IGFy
ZzgzNSxpbnQgYXJnODM2LGludCBhcmc4MzcsaW50IGFyZzgzOCxpbnQgYXJnODM5LGludCBhcmc4
NDAsaW50IGFyZzg0MSxpbnQgYXJnODQyLGludCBhcmc4NDMsaW50IGFyZzg0NCxpbnQgYXJnODQ1
LGludCBhcmc4NDYsaW50IGFyZzg0NyxpbnQgYXJnODQ4LGludCBhcmc4NDksaW50IGFyZzg1MCxp
bnQgYXJnODUxLGludCBhcmc4NTIsaW50IGFyZzg1MyxpbnQgYXJnODU0LGludCBhcmc4NTUsaW50
IGFyZzg1NixpbnQgYXJnODU3LGludCBhcmc4NTgsaW50IGFyZzg1OSxpbnQgYXJnODYwLGludCBh
cmc4NjEsaW50IGFyZzg2MixpbnQgYXJnODYzLGludCBhcmc4NjQsaW50IGFyZzg2NSxpbnQgYXJn
ODY2LGludCBhcmc4NjcsaW50IGFyZzg2OCxpbnQgYXJnODY5LGludCBhcmc4NzAsaW50IGFyZzg3
MSxpbnQgYXJnODcyLGludCBhcmc4NzMsaW50IGFyZzg3NCxpbnQgYXJnODc1LGludCBhcmc4NzYs
aW50IGFyZzg3NyxpbnQgYXJnODc4LGludCBhcmc4NzksaW50IGFyZzg4MCxpbnQgYXJnODgxLGlu
dCBhcmc4ODIsaW50IGFyZzg4MyxpbnQgYXJnODg0LGludCBhcmc4ODUsaW50IGFyZzg4NixpbnQg
YXJnODg3LGludCBhcmc4ODgsaW50IGFyZzg4OSxpbnQgYXJnODkwLGludCBhcmc4OTEsaW50IGFy
Zzg5MixpbnQgYXJnODkzLGludCBhcmc4OTQsaW50IGFyZzg5NSxpbnQgYXJnODk2LGludCBhcmc4
OTcsaW50IGFyZzg5OCxpbnQgYXJnODk5LGludCBhcmc5MDAsaW50IGFyZzkwMSxpbnQgYXJnOTAy
LGludCBhcmc5MDMsaW50IGFyZzkwNCxpbnQgYXJnOTA1LGludCBhcmc5MDYsaW50IGFyZzkwNyxp
bnQgYXJnOTA4LGludCBhcmc5MDksaW50IGFyZzkxMCxpbnQgYXJnOTExLGludCBhcmc5MTIsaW50
IGFyZzkxMyxpbnQgYXJnOTE0LGludCBhcmc5MTUsaW50IGFyZzkxNixpbnQgYXJnOTE3LGludCBh
cmc5MTgsaW50IGFyZzkxOSxpbnQgYXJnOTIwLGludCBhcmc5MjEsaW50IGFyZzkyMixpbnQgYXJn
OTIzLGludCBhcmc5MjQsaW50IGFyZzkyNSxpbnQgYXJnOTI2LGludCBhcmc5MjcsaW50IGFyZzky
OCxpbnQgYXJnOTI5LGludCBhcmc5MzAsaW50IGFyZzkzMSxpbnQgYXJnOTMyLGludCBhcmc5MzMs
aW50IGFyZzkzNCxpbnQgYXJnOTM1LGludCBhcmc5MzYsaW50IGFyZzkzNyxpbnQgYXJnOTM4LGlu
dCBhcmc5MzksaW50IGFyZzk0MCxpbnQgYXJnOTQxLGludCBhcmc5NDIsaW50IGFyZzk0MyxpbnQg
YXJnOTQ0LGludCBhcmc5NDUsaW50IGFyZzk0NixpbnQgYXJnOTQ3LGludCBhcmc5NDgsaW50IGFy
Zzk0OSxpbnQgYXJnOTUwLGludCBhcmc5NTEsaW50IGFyZzk1MixpbnQgYXJnOTUzLGludCBhcmc5
NTQsaW50IGFyZzk1NSxpbnQgYXJnOTU2LGludCBhcmc5NTcsaW50IGFyZzk1OCxpbnQgYXJnOTU5
LGludCBhcmc5NjAsaW50IGFyZzk2MSxpbnQgYXJnOTYyLGludCBhcmc5NjMsaW50IGFyZzk2NCxp
bnQgYXJnOTY1LGludCBhcmc5NjYsaW50IGFyZzk2NyxpbnQgYXJnOTY4LGludCBhcmc5NjksaW50
IGFyZzk3MCxpbnQgYXJnOTcxLGludCBhcmc5NzIsaW50IGFyZzk3MyxpbnQgYXJnOTc0LGludCBh
cmc5NzUsaW50IGFyZzk3NixpbnQgYXJnOTc3LGludCBhcmc5NzgsaW50IGFyZzk3OSxpbnQgYXJn
OTgwLGludCBhcmc5ODEsaW50IGFyZzk4MixpbnQgYXJnOTgzLGludCBhcmc5ODQsaW50IGFyZzk4
NSxpbnQgYXJnOTg2LGludCBhcmc5ODcsaW50IGFyZzk4OCxpbnQgYXJnOTg5LGludCBhcmc5OTAs
aW50IGFyZzk5MSxpbnQgYXJnOTkyLGludCBhcmc5OTMsaW50IGFyZzk5NCxpbnQgYXJnOTk1LGlu
dCBhcmc5OTYsaW50IGFyZzk5NyxpbnQgYXJnOTk4LGludCBhcmc5OTksaW50IGFyZzEwMDAsaW50
IGFyZzEwMDEsaW50IGFyZzEwMDIsaW50IGFyZzEwMDMsaW50IGFyZzEwMDQsaW50IGFyZzEwMDUs
aW50IGFyZzEwMDYsaW50IGFyZzEwMDcsaW50IGFyZzEwMDgsaW50IGFyZzEwMDksaW50IGFyZzEw
MTAsaW50IGFyZzEwMTEsaW50IGFyZzEwMTIsaW50IGFyZzEwMTMsaW50IGFyZzEwMTQsaW50IGFy
ZzEwMTUsaW50IGFyZzEwMTYsaW50IGFyZzEwMTcsaW50IGFyZzEwMTgsaW50IGFyZzEwMTksaW50
IGFyZzEwMjAsaW50IGFyZzEwMjEsaW50IGFyZzEwMjIsaW50IGFyZzEwMjMsaW50IGFyZzEwMjQs
aW50IGFyZzEwMjUsaW50IGFyZzEwMjYsaW50IGFyZzEwMjcsaW50IGFyZzEwMjgsaW50IGFyZzEw
MjksaW50IGFyZzEwMzAsaW50IGFyZzEwMzEsaW50IGFyZzEwMzIsaW50IGFyZzEwMzMsaW50IGFy
ZzEwMzQsaW50IGFyZzEwMzUsaW50IGFyZzEwMzYsaW50IGFyZzEwMzcsaW50IGFyZzEwMzgsaW50
IGFyZzEwMzksaW50IGFyZzEwNDAsaW50IGFyZzEwNDEsaW50IGFyZzEwNDIsaW50IGFyZzEwNDMs
aW50IGFyZzEwNDQsaW50IGFyZzEwNDUsaW50IGFyZzEwNDYsaW50IGFyZzEwNDcsaW50IGFyZzEw
NDgsaW50IGFyZzEwNDksaW50IGFyZzEwNTAsaW50IGFyZzEwNTEsaW50IGFyZzEwNTIsaW50IGFy
ZzEwNTMsaW50IGFyZzEwNTQsaW50IGFyZzEwNTUsaW50IGFyZzEwNTYsaW50IGFyZzEwNTcsaW50
IGFyZzEwNTgsaW50IGFyZzEwNTksaW50IGFyZzEwNjAsaW50IGFyZzEwNjEsaW50IGFyZzEwNjIs
aW50IGFyZzEwNjMsaW50IGFyZzEwNjQsaW50IGFyZzEwNjUsaW50IGFyZzEwNjYsaW50IGFyZzEw
NjcsaW50IGFyZzEwNjgsaW50IGFyZzEwNjksaW50IGFyZzEwNzAsaW50IGFyZzEwNzEsaW50IGFy
ZzEwNzIsaW50IGFyZzEwNzMsaW50IGFyZzEwNzQsaW50IGFyZzEwNzUsaW50IGFyZzEwNzYsaW50
IGFyZzEwNzcsaW50IGFyZzEwNzgsaW50IGFyZzEwNzksaW50IGFyZzEwODAsaW50IGFyZzEwODEs
aW50IGFyZzEwODIsaW50IGFyZzEwODMsaW50IGFyZzEwODQsaW50IGFyZzEwODUsaW50IGFyZzEw
ODYsaW50IGFyZzEwODcsaW50IGFyZzEwODgsaW50IGFyZzEwODksaW50IGFyZzEwOTAsaW50IGFy
ZzEwOTEsaW50IGFyZzEwOTIsaW50IGFyZzEwOTMsaW50IGFyZzEwOTQsaW50IGFyZzEwOTUsaW50
IGFyZzEwOTYsaW50IGFyZzEwOTcsaW50IGFyZzEwOTgsaW50IGFyZzEwOTksaW50IGFyZzExMDAs
aW50IGFyZzExMDEsaW50IGFyZzExMDIsaW50IGFyZzExMDMsaW50IGFyZzExMDQsaW50IGFyZzEx
MDUsaW50IGFyZzExMDYsaW50IGFyZzExMDcsaW50IGFyZzExMDgsaW50IGFyZzExMDksaW50IGFy
ZzExMTAsaW50IGFyZzExMTEsaW50IGFyZzExMTIsaW50IGFyZzExMTMsaW50IGFyZzExMTQsaW50
IGFyZzExMTUsaW50IGFyZzExMTYsaW50IGFyZzExMTcsaW50IGFyZzExMTgsaW50IGFyZzExMTks
aW50IGFyZzExMjAsaW50IGFyZzExMjEsaW50IGFyZzExMjIsaW50IGFyZzExMjMsaW50IGFyZzEx
MjQsaW50IGFyZzExMjUsaW50IGFyZzExMjYsaW50IGFyZzExMjcsaW50IGFyZzExMjgsaW50IGFy
ZzExMjksaW50IGFyZzExMzAsaW50IGFyZzExMzEsaW50IGFyZzExMzIsaW50IGFyZzExMzMsaW50
IGFyZzExMzQsaW50IGFyZzExMzUsaW50IGFyZzExMzYsaW50IGFyZzExMzcsaW50IGFyZzExMzgs
aW50IGFyZzExMzksaW50IGFyZzExNDAsaW50IGFyZzExNDEsaW50IGFyZzExNDIsaW50IGFyZzEx
NDMsaW50IGFyZzExNDQsaW50IGFyZzExNDUsaW50IGFyZzExNDYsaW50IGFyZzExNDcsaW50IGFy
ZzExNDgsaW50IGFyZzExNDksaW50IGFyZzExNTAsaW50IGFyZzExNTEsaW50IGFyZzExNTIsaW50
IGFyZzExNTMsaW50IGFyZzExNTQsaW50IGFyZzExNTUsaW50IGFyZzExNTYsaW50IGFyZzExNTcs
aW50IGFyZzExNTgsaW50IGFyZzExNTksaW50IGFyZzExNjAsaW50IGFyZzExNjEsaW50IGFyZzEx
NjIsaW50IGFyZzExNjMsaW50IGFyZzExNjQsaW50IGFyZzExNjUsaW50IGFyZzExNjYsaW50IGFy
ZzExNjcsaW50IGFyZzExNjgsaW50IGFyZzExNjksaW50IGFyZzExNzAsaW50IGFyZzExNzEsaW50
IGFyZzExNzIsaW50IGFyZzExNzMsaW50IGFyZzExNzQsaW50IGFyZzExNzUsaW50IGFyZzExNzYs
aW50IGFyZzExNzcsaW50IGFyZzExNzgsaW50IGFyZzExNzksaW50IGFyZzExODAsaW50IGFyZzEx
ODEsaW50IGFyZzExODIsaW50IGFyZzExODMsaW50IGFyZzExODQsaW50IGFyZzExODUsaW50IGFy
ZzExODYsaW50IGFyZzExODcsaW50IGFyZzExODgsaW50IGFyZzExODksaW50IGFyZzExOTAsaW50
IGFyZzExOTEsaW50IGFyZzExOTIsaW50IGFyZzExOTMsaW50IGFyZzExOTQsaW50IGFyZzExOTUs
aW50IGFyZzExOTYsaW50IGFyZzExOTcsaW50IGFyZzExOTgsaW50IGFyZzExOTksaW50IGFyZzEy
MDAsaW50IGFyZzEyMDEsaW50IGFyZzEyMDIsaW50IGFyZzEyMDMsaW50IGFyZzEyMDQsaW50IGFy
ZzEyMDUsaW50IGFyZzEyMDYsaW50IGFyZzEyMDcsaW50IGFyZzEyMDgsaW50IGFyZzEyMDksaW50
IGFyZzEyMTAsaW50IGFyZzEyMTEsaW50IGFyZzEyMTIsaW50IGFyZzEyMTMsaW50IGFyZzEyMTQs
aW50IGFyZzEyMTUsaW50IGFyZzEyMTYsaW50IGFyZzEyMTcsaW50IGFyZzEyMTgsaW50IGFyZzEy
MTksaW50IGFyZzEyMjAsaW50IGFyZzEyMjEsaW50IGFyZzEyMjIsaW50IGFyZzEyMjMsaW50IGFy
ZzEyMjQsaW50IGFyZzEyMjUsaW50IGFyZzEyMjYsaW50IGFyZzEyMjcsaW50IGFyZzEyMjgsaW50
IGFyZzEyMjksaW50IGFyZzEyMzAsaW50IGFyZzEyMzEsaW50IGFyZzEyMzIsaW50IGFyZzEyMzMs
aW50IGFyZzEyMzQsaW50IGFyZzEyMzUsaW50IGFyZzEyMzYsaW50IGFyZzEyMzcsaW50IGFyZzEy
MzgsaW50IGFyZzEyMzksaW50IGFyZzEyNDAsaW50IGFyZzEyNDEsaW50IGFyZzEyNDIsaW50IGFy
ZzEyNDMsaW50IGFyZzEyNDQsaW50IGFyZzEyNDUsaW50IGFyZzEyNDYsaW50IGFyZzEyNDcsaW50
IGFyZzEyNDgsaW50IGFyZzEyNDksaW50IGFyZzEyNTAsaW50IGFyZzEyNTEsaW50IGFyZzEyNTIs
aW50IGFyZzEyNTMsaW50IGFyZzEyNTQsaW50IGFyZzEyNTUsaW50IGFyZzEyNTYsaW50IGFyZzEy
NTcsaW50IGFyZzEyNTgsaW50IGFyZzEyNTksaW50IGFyZzEyNjAsaW50IGFyZzEyNjEsaW50IGFy
ZzEyNjIsaW50IGFyZzEyNjMsaW50IGFyZzEyNjQsaW50IGFyZzEyNjUsaW50IGFyZzEyNjYsaW50
IGFyZzEyNjcsaW50IGFyZzEyNjgsaW50IGFyZzEyNjksaW50IGFyZzEyNzAsaW50IGFyZzEyNzEs
aW50IGFyZzEyNzIsaW50IGFyZzEyNzMsaW50IGFyZzEyNzQsaW50IGFyZzEyNzUsaW50IGFyZzEy
NzYsaW50IGFyZzEyNzcsaW50IGFyZzEyNzgsaW50IGFyZzEyNzksaW50IGFyZzEyODAsaW50IGFy
ZzEyODEsaW50IGFyZzEyODIsaW50IGFyZzEyODMsaW50IGFyZzEyODQsaW50IGFyZzEyODUsaW50
IGFyZzEyODYsaW50IGFyZzEyODcsaW50IGFyZzEyODgsaW50IGFyZzEyODksaW50IGFyZzEyOTAs
aW50IGFyZzEyOTEsaW50IGFyZzEyOTIsaW50IGFyZzEyOTMsaW50IGFyZzEyOTQsaW50IGFyZzEy
OTUsaW50IGFyZzEyOTYsaW50IGFyZzEyOTcsaW50IGFyZzEyOTgsaW50IGFyZzEyOTksaW50IGFy
ZzEzMDAsaW50IGFyZzEzMDEsaW50IGFyZzEzMDIsaW50IGFyZzEzMDMsaW50IGFyZzEzMDQsaW50
IGFyZzEzMDUsaW50IGFyZzEzMDYsaW50IGFyZzEzMDcsaW50IGFyZzEzMDgsaW50IGFyZzEzMDks
aW50IGFyZzEzMTAsaW50IGFyZzEzMTEsaW50IGFyZzEzMTIsaW50IGFyZzEzMTMsaW50IGFyZzEz
MTQsaW50IGFyZzEzMTUsaW50IGFyZzEzMTYsaW50IGFyZzEzMTcsaW50IGFyZzEzMTgsaW50IGFy
ZzEzMTksaW50IGFyZzEzMjAsaW50IGFyZzEzMjEsaW50IGFyZzEzMjIsaW50IGFyZzEzMjMsaW50
IGFyZzEzMjQsaW50IGFyZzEzMjUsaW50IGFyZzEzMjYsaW50IGFyZzEzMjcsaW50IGFyZzEzMjgs
aW50IGFyZzEzMjksaW50IGFyZzEzMzAsaW50IGFyZzEzMzEsaW50IGFyZzEzMzIsaW50IGFyZzEz
MzMsaW50IGFyZzEzMzQsaW50IGFyZzEzMzUsaW50IGFyZzEzMzYsaW50IGFyZzEzMzcsaW50IGFy
ZzEzMzgsaW50IGFyZzEzMzksaW50IGFyZzEzNDAsaW50IGFyZzEzNDEsaW50IGFyZzEzNDIsaW50
IGFyZzEzNDMsaW50IGFyZzEzNDQsaW50IGFyZzEzNDUsaW50IGFyZzEzNDYsaW50IGFyZzEzNDcs
aW50IGFyZzEzNDgsaW50IGFyZzEzNDksaW50IGFyZzEzNTAsaW50IGFyZzEzNTEsaW50IGFyZzEz
NTIsaW50IGFyZzEzNTMsaW50IGFyZzEzNTQsaW50IGFyZzEzNTUsaW50IGFyZzEzNTYsaW50IGFy
ZzEzNTcsaW50IGFyZzEzNTgsaW50IGFyZzEzNTksaW50IGFyZzEzNjAsaW50IGFyZzEzNjEsaW50
IGFyZzEzNjIsaW50IGFyZzEzNjMsaW50IGFyZzEzNjQsaW50IGFyZzEzNjUsaW50IGFyZzEzNjYs
aW50IGFyZzEzNjcsaW50IGFyZzEzNjgsaW50IGFyZzEzNjksaW50IGFyZzEzNzAsaW50IGFyZzEz
NzEsaW50IGFyZzEzNzIsaW50IGFyZzEzNzMsaW50IGFyZzEzNzQsaW50IGFyZzEzNzUsaW50IGFy
ZzEzNzYsaW50IGFyZzEzNzcsaW50IGFyZzEzNzgsaW50IGFyZzEzNzksaW50IGFyZzEzODAsaW50
IGFyZzEzODEsaW50IGFyZzEzODIsaW50IGFyZzEzODMsaW50IGFyZzEzODQsaW50IGFyZzEzODUs
aW50IGFyZzEzODYsaW50IGFyZzEzODcsaW50IGFyZzEzODgsaW50IGFyZzEzODksaW50IGFyZzEz
OTAsaW50IGFyZzEzOTEsaW50IGFyZzEzOTIsaW50IGFyZzEzOTMsaW50IGFyZzEzOTQsaW50IGFy
ZzEzOTUsaW50IGFyZzEzOTYsaW50IGFyZzEzOTcsaW50IGFyZzEzOTgsaW50IGFyZzEzOTksaW50
IGFyZzE0MDAsaW50IGFyZzE0MDEsaW50IGFyZzE0MDIsaW50IGFyZzE0MDMsaW50IGFyZzE0MDQs
aW50IGFyZzE0MDUsaW50IGFyZzE0MDYsaW50IGFyZzE0MDcsaW50IGFyZzE0MDgsaW50IGFyZzE0
MDksaW50IGFyZzE0MTAsaW50IGFyZzE0MTEsaW50IGFyZzE0MTIsaW50IGFyZzE0MTMsaW50IGFy
ZzE0MTQsaW50IGFyZzE0MTUsaW50IGFyZzE0MTYsaW50IGFyZzE0MTcsaW50IGFyZzE0MTgsaW50
IGFyZzE0MTksaW50IGFyZzE0MjAsaW50IGFyZzE0MjEsaW50IGFyZzE0MjIsaW50IGFyZzE0MjMs
aW50IGFyZzE0MjQsaW50IGFyZzE0MjUsaW50IGFyZzE0MjYsaW50IGFyZzE0MjcsaW50IGFyZzE0
MjgsaW50IGFyZzE0MjksaW50IGFyZzE0MzAsaW50IGFyZzE0MzEsaW50IGFyZzE0MzIsaW50IGFy
ZzE0MzMsaW50IGFyZzE0MzQsaW50IGFyZzE0MzUsaW50IGFyZzE0MzYsaW50IGFyZzE0MzcsaW50
IGFyZzE0MzgsaW50IGFyZzE0MzksaW50IGFyZzE0NDAsaW50IGFyZzE0NDEsaW50IGFyZzE0NDIs
aW50IGFyZzE0NDMsaW50IGFyZzE0NDQsaW50IGFyZzE0NDUsaW50IGFyZzE0NDYsaW50IGFyZzE0
NDcsaW50IGFyZzE0NDgsaW50IGFyZzE0NDksaW50IGFyZzE0NTAsaW50IGFyZzE0NTEsaW50IGFy
ZzE0NTIsaW50IGFyZzE0NTMsaW50IGFyZzE0NTQsaW50IGFyZzE0NTUsaW50IGFyZzE0NTYsaW50
IGFyZzE0NTcsaW50IGFyZzE0NTgsaW50IGFyZzE0NTksaW50IGFyZzE0NjAsaW50IGFyZzE0NjEs
aW50IGFyZzE0NjIsaW50IGFyZzE0NjMsaW50IGFyZzE0NjQsaW50IGFyZzE0NjUsaW50IGFyZzE0
NjYsaW50IGFyZzE0NjcsaW50IGFyZzE0NjgsaW50IGFyZzE0NjksaW50IGFyZzE0NzAsaW50IGFy
ZzE0NzEsaW50IGFyZzE0NzIsaW50IGFyZzE0NzMsaW50IGFyZzE0NzQsaW50IGFyZzE0NzUsaW50
IGFyZzE0NzYsaW50IGFyZzE0NzcsaW50IGFyZzE0NzgsaW50IGFyZzE0NzksaW50IGFyZzE0ODAs
aW50IGFyZzE0ODEsaW50IGFyZzE0ODIsaW50IGFyZzE0ODMsaW50IGFyZzE0ODQsaW50IGFyZzE0
ODUsaW50IGFyZzE0ODYsaW50IGFyZzE0ODcsaW50IGFyZzE0ODgsaW50IGFyZzE0ODksaW50IGFy
ZzE0OTAsaW50IGFyZzE0OTEsaW50IGFyZzE0OTIsaW50IGFyZzE0OTMsaW50IGFyZzE0OTQsaW50
IGFyZzE0OTUsaW50IGFyZzE0OTYsaW50IGFyZzE0OTcsaW50IGFyZzE0OTgsaW50IGFyZzE0OTks
aW50IGFyZzE1MDAsaW50IGFyZzE1MDEsaW50IGFyZzE1MDIsaW50IGFyZzE1MDMsaW50IGFyZzE1
MDQsaW50IGFyZzE1MDUsaW50IGFyZzE1MDYsaW50IGFyZzE1MDcsaW50IGFyZzE1MDgsaW50IGFy
ZzE1MDksaW50IGFyZzE1MTAsaW50IGFyZzE1MTEsaW50IGFyZzE1MTIsaW50IGFyZzE1MTMsaW50
IGFyZzE1MTQsaW50IGFyZzE1MTUsaW50IGFyZzE1MTYsaW50IGFyZzE1MTcsaW50IGFyZzE1MTgs
aW50IGFyZzE1MTksaW50IGFyZzE1MjAsaW50IGFyZzE1MjEsaW50IGFyZzE1MjIsaW50IGFyZzE1
MjMsaW50IGFyZzE1MjQsaW50IGFyZzE1MjUsaW50IGFyZzE1MjYsaW50IGFyZzE1MjcsaW50IGFy
ZzE1MjgsaW50IGFyZzE1MjksaW50IGFyZzE1MzAsaW50IGFyZzE1MzEsaW50IGFyZzE1MzIsaW50
IGFyZzE1MzMsaW50IGFyZzE1MzQsaW50IGFyZzE1MzUsaW50IGFyZzE1MzYsaW50IGFyZzE1Mzcs
aW50IGFyZzE1MzgsaW50IGFyZzE1MzksaW50IGFyZzE1NDAsaW50IGFyZzE1NDEsaW50IGFyZzE1
NDIsaW50IGFyZzE1NDMsaW50IGFyZzE1NDQsaW50IGFyZzE1NDUsaW50IGFyZzE1NDYsaW50IGFy
ZzE1NDcsaW50IGFyZzE1NDgsaW50IGFyZzE1NDksaW50IGFyZzE1NTAsaW50IGFyZzE1NTEsaW50
IGFyZzE1NTIsaW50IGFyZzE1NTMsaW50IGFyZzE1NTQsaW50IGFyZzE1NTUsaW50IGFyZzE1NTYs
aW50IGFyZzE1NTcsaW50IGFyZzE1NTgsaW50IGFyZzE1NTksaW50IGFyZzE1NjAsaW50IGFyZzE1
NjEsaW50IGFyZzE1NjIsaW50IGFyZzE1NjMsaW50IGFyZzE1NjQsaW50IGFyZzE1NjUsaW50IGFy
ZzE1NjYsaW50IGFyZzE1NjcsaW50IGFyZzE1NjgsaW50IGFyZzE1NjksaW50IGFyZzE1NzAsaW50
IGFyZzE1NzEsaW50IGFyZzE1NzIsaW50IGFyZzE1NzMsaW50IGFyZzE1NzQsaW50IGFyZzE1NzUs
aW50IGFyZzE1NzYsaW50IGFyZzE1NzcsaW50IGFyZzE1NzgsaW50IGFyZzE1NzksaW50IGFyZzE1
ODAsaW50IGFyZzE1ODEsaW50IGFyZzE1ODIsaW50IGFyZzE1ODMsaW50IGFyZzE1ODQsaW50IGFy
ZzE1ODUsaW50IGFyZzE1ODYsaW50IGFyZzE1ODcsaW50IGFyZzE1ODgsaW50IGFyZzE1ODksaW50
IGFyZzE1OTAsaW50IGFyZzE1OTEsaW50IGFyZzE1OTIsaW50IGFyZzE1OTMsaW50IGFyZzE1OTQs
aW50IGFyZzE1OTUsaW50IGFyZzE1OTYsaW50IGFyZzE1OTcsaW50IGFyZzE1OTgsaW50IGFyZzE1
OTksaW50IGFyZzE2MDAsaW50IGFyZzE2MDEsaW50IGFyZzE2MDIsaW50IGFyZzE2MDMsaW50IGFy
ZzE2MDQsaW50IGFyZzE2MDUsaW50IGFyZzE2MDYsaW50IGFyZzE2MDcsaW50IGFyZzE2MDgsaW50
IGFyZzE2MDksaW50IGFyZzE2MTAsaW50IGFyZzE2MTEsaW50IGFyZzE2MTIsaW50IGFyZzE2MTMs
aW50IGFyZzE2MTQsaW50IGFyZzE2MTUsaW50IGFyZzE2MTYsaW50IGFyZzE2MTcsaW50IGFyZzE2
MTgsaW50IGFyZzE2MTksaW50IGFyZzE2MjAsaW50IGFyZzE2MjEsaW50IGFyZzE2MjIsaW50IGFy
ZzE2MjMsaW50IGFyZzE2MjQsaW50IGFyZzE2MjUsaW50IGFyZzE2MjYsaW50IGFyZzE2MjcsaW50
IGFyZzE2MjgsaW50IGFyZzE2MjksaW50IGFyZzE2MzAsaW50IGFyZzE2MzEsaW50IGFyZzE2MzIs
aW50IGFyZzE2MzMsaW50IGFyZzE2MzQsaW50IGFyZzE2MzUsaW50IGFyZzE2MzYsaW50IGFyZzE2
MzcsaW50IGFyZzE2MzgsaW50IGFyZzE2MzksaW50IGFyZzE2NDAsaW50IGFyZzE2NDEsaW50IGFy
ZzE2NDIsaW50IGFyZzE2NDMsaW50IGFyZzE2NDQsaW50IGFyZzE2NDUsaW50IGFyZzE2NDYsaW50
IGFyZzE2NDcsaW50IGFyZzE2NDgsaW50IGFyZzE2NDksaW50IGFyZzE2NTAsaW50IGFyZzE2NTEs
aW50IGFyZzE2NTIsaW50IGFyZzE2NTMsaW50IGFyZzE2NTQsaW50IGFyZzE2NTUsaW50IGFyZzE2
NTYsaW50IGFyZzE2NTcsaW50IGFyZzE2NTgsaW50IGFyZzE2NTksaW50IGFyZzE2NjAsaW50IGFy
ZzE2NjEsaW50IGFyZzE2NjIsaW50IGFyZzE2NjMsaW50IGFyZzE2NjQsaW50IGFyZzE2NjUsaW50
IGFyZzE2NjYsaW50IGFyZzE2NjcsaW50IGFyZzE2NjgsaW50IGFyZzE2NjksaW50IGFyZzE2NzAs
aW50IGFyZzE2NzEsaW50IGFyZzE2NzIsaW50IGFyZzE2NzMsaW50IGFyZzE2NzQsaW50IGFyZzE2
NzUsaW50IGFyZzE2NzYsaW50IGFyZzE2NzcsaW50IGFyZzE2NzgsaW50IGFyZzE2NzksaW50IGFy
ZzE2ODAsaW50IGFyZzE2ODEsaW50IGFyZzE2ODIsaW50IGFyZzE2ODMsaW50IGFyZzE2ODQsaW50
IGFyZzE2ODUsaW50IGFyZzE2ODYsaW50IGFyZzE2ODcsaW50IGFyZzE2ODgsaW50IGFyZzE2ODks
aW50IGFyZzE2OTAsaW50IGFyZzE2OTEsaW50IGFyZzE2OTIsaW50IGFyZzE2OTMsaW50IGFyZzE2
OTQsaW50IGFyZzE2OTUsaW50IGFyZzE2OTYsaW50IGFyZzE2OTcsaW50IGFyZzE2OTgsaW50IGFy
ZzE2OTksaW50IGFyZzE3MDAsaW50IGFyZzE3MDEsaW50IGFyZzE3MDIsaW50IGFyZzE3MDMsaW50
IGFyZzE3MDQsaW50IGFyZzE3MDUsaW50IGFyZzE3MDYsaW50IGFyZzE3MDcsaW50IGFyZzE3MDgs
aW50IGFyZzE3MDksaW50IGFyZzE3MTAsaW50IGFyZzE3MTEsaW50IGFyZzE3MTIsaW50IGFyZzE3
MTMsaW50IGFyZzE3MTQsaW50IGFyZzE3MTUsaW50IGFyZzE3MTYsaW50IGFyZzE3MTcsaW50IGFy
ZzE3MTgsaW50IGFyZzE3MTksaW50IGFyZzE3MjAsaW50IGFyZzE3MjEsaW50IGFyZzE3MjIsaW50
IGFyZzE3MjMsaW50IGFyZzE3MjQsaW50IGFyZzE3MjUsaW50IGFyZzE3MjYsaW50IGFyZzE3Mjcs
aW50IGFyZzE3MjgsaW50IGFyZzE3MjksaW50IGFyZzE3MzAsaW50IGFyZzE3MzEsaW50IGFyZzE3
MzIsaW50IGFyZzE3MzMsaW50IGFyZzE3MzQsaW50IGFyZzE3MzUsaW50IGFyZzE3MzYsaW50IGFy
ZzE3MzcsaW50IGFyZzE3MzgsaW50IGFyZzE3MzksaW50IGFyZzE3NDAsaW50IGFyZzE3NDEsaW50
IGFyZzE3NDIsaW50IGFyZzE3NDMsaW50IGFyZzE3NDQsaW50IGFyZzE3NDUsaW50IGFyZzE3NDYs
aW50IGFyZzE3NDcsaW50IGFyZzE3NDgsaW50IGFyZzE3NDksaW50IGFyZzE3NTAsaW50IGFyZzE3
NTEsaW50IGFyZzE3NTIsaW50IGFyZzE3NTMsaW50IGFyZzE3NTQsaW50IGFyZzE3NTUsaW50IGFy
ZzE3NTYsaW50IGFyZzE3NTcsaW50IGFyZzE3NTgsaW50IGFyZzE3NTksaW50IGFyZzE3NjAsaW50
IGFyZzE3NjEsaW50IGFyZzE3NjIsaW50IGFyZzE3NjMsaW50IGFyZzE3NjQsaW50IGFyZzE3NjUs
aW50IGFyZzE3NjYsaW50IGFyZzE3NjcsaW50IGFyZzE3NjgsaW50IGFyZzE3NjksaW50IGFyZzE3
NzAsaW50IGFyZzE3NzEsaW50IGFyZzE3NzIsaW50IGFyZzE3NzMsaW50IGFyZzE3NzQsaW50IGFy
ZzE3NzUsaW50IGFyZzE3NzYsaW50IGFyZzE3NzcsaW50IGFyZzE3NzgsaW50IGFyZzE3NzksaW50
IGFyZzE3ODAsaW50IGFyZzE3ODEsaW50IGFyZzE3ODIsaW50IGFyZzE3ODMsaW50IGFyZzE3ODQs
aW50IGFyZzE3ODUsaW50IGFyZzE3ODYsaW50IGFyZzE3ODcsaW50IGFyZzE3ODgsaW50IGFyZzE3
ODksaW50IGFyZzE3OTAsaW50IGFyZzE3OTEsaW50IGFyZzE3OTIsaW50IGFyZzE3OTMsaW50IGFy
ZzE3OTQsaW50IGFyZzE3OTUsaW50IGFyZzE3OTYsaW50IGFyZzE3OTcsaW50IGFyZzE3OTgsaW50
IGFyZzE3OTksaW50IGFyZzE4MDAsaW50IGFyZzE4MDEsaW50IGFyZzE4MDIsaW50IGFyZzE4MDMs
aW50IGFyZzE4MDQsaW50IGFyZzE4MDUsaW50IGFyZzE4MDYsaW50IGFyZzE4MDcsaW50IGFyZzE4
MDgsaW50IGFyZzE4MDksaW50IGFyZzE4MTAsaW50IGFyZzE4MTEsaW50IGFyZzE4MTIsaW50IGFy
ZzE4MTMsaW50IGFyZzE4MTQsaW50IGFyZzE4MTUsaW50IGFyZzE4MTYsaW50IGFyZzE4MTcsaW50
IGFyZzE4MTgsaW50IGFyZzE4MTksaW50IGFyZzE4MjAsaW50IGFyZzE4MjEsaW50IGFyZzE4MjIs
aW50IGFyZzE4MjMsaW50IGFyZzE4MjQsaW50IGFyZzE4MjUsaW50IGFyZzE4MjYsaW50IGFyZzE4
MjcsaW50IGFyZzE4MjgsaW50IGFyZzE4MjksaW50IGFyZzE4MzAsaW50IGFyZzE4MzEsaW50IGFy
ZzE4MzIsaW50IGFyZzE4MzMsaW50IGFyZzE4MzQsaW50IGFyZzE4MzUsaW50IGFyZzE4MzYsaW50
IGFyZzE4MzcsaW50IGFyZzE4MzgsaW50IGFyZzE4MzksaW50IGFyZzE4NDAsaW50IGFyZzE4NDEs
aW50IGFyZzE4NDIsaW50IGFyZzE4NDMsaW50IGFyZzE4NDQsaW50IGFyZzE4NDUsaW50IGFyZzE4
NDYsaW50IGFyZzE4NDcsaW50IGFyZzE4NDgsaW50IGFyZzE4NDksaW50IGFyZzE4NTAsaW50IGFy
ZzE4NTEsaW50IGFyZzE4NTIsaW50IGFyZzE4NTMsaW50IGFyZzE4NTQsaW50IGFyZzE4NTUsaW50
IGFyZzE4NTYsaW50IGFyZzE4NTcsaW50IGFyZzE4NTgsaW50IGFyZzE4NTksaW50IGFyZzE4NjAs
aW50IGFyZzE4NjEsaW50IGFyZzE4NjIsaW50IGFyZzE4NjMsaW50IGFyZzE4NjQsaW50IGFyZzE4
NjUsaW50IGFyZzE4NjYsaW50IGFyZzE4NjcsaW50IGFyZzE4NjgsaW50IGFyZzE4NjksaW50IGFy
ZzE4NzAsaW50IGFyZzE4NzEsaW50IGFyZzE4NzIsaW50IGFyZzE4NzMsaW50IGFyZzE4NzQsaW50
IGFyZzE4NzUsaW50IGFyZzE4NzYsaW50IGFyZzE4NzcsaW50IGFyZzE4NzgsaW50IGFyZzE4Nzks
aW50IGFyZzE4ODAsaW50IGFyZzE4ODEsaW50IGFyZzE4ODIsaW50IGFyZzE4ODMsaW50IGFyZzE4
ODQsaW50IGFyZzE4ODUsaW50IGFyZzE4ODYsaW50IGFyZzE4ODcsaW50IGFyZzE4ODgsaW50IGFy
ZzE4ODksaW50IGFyZzE4OTAsaW50IGFyZzE4OTEsaW50IGFyZzE4OTIsaW50IGFyZzE4OTMsaW50
IGFyZzE4OTQsaW50IGFyZzE4OTUsaW50IGFyZzE4OTYsaW50IGFyZzE4OTcsaW50IGFyZzE4OTgs
aW50IGFyZzE4OTksaW50IGFyZzE5MDAsaW50IGFyZzE5MDEsaW50IGFyZzE5MDIsaW50IGFyZzE5
MDMsaW50IGFyZzE5MDQsaW50IGFyZzE5MDUsaW50IGFyZzE5MDYsaW50IGFyZzE5MDcsaW50IGFy
ZzE5MDgsaW50IGFyZzE5MDksaW50IGFyZzE5MTAsaW50IGFyZzE5MTEsaW50IGFyZzE5MTIsaW50
IGFyZzE5MTMsaW50IGFyZzE5MTQsaW50IGFyZzE5MTUsaW50IGFyZzE5MTYsaW50IGFyZzE5MTcs
aW50IGFyZzE5MTgsaW50IGFyZzE5MTksaW50IGFyZzE5MjAsaW50IGFyZzE5MjEsaW50IGFyZzE5
MjIsaW50IGFyZzE5MjMsaW50IGFyZzE5MjQsaW50IGFyZzE5MjUsaW50IGFyZzE5MjYsaW50IGFy
ZzE5MjcsaW50IGFyZzE5MjgsaW50IGFyZzE5MjksaW50IGFyZzE5MzAsaW50IGFyZzE5MzEsaW50
IGFyZzE5MzIsaW50IGFyZzE5MzMsaW50IGFyZzE5MzQsaW50IGFyZzE5MzUsaW50IGFyZzE5MzYs
aW50IGFyZzE5MzcsaW50IGFyZzE5MzgsaW50IGFyZzE5MzksaW50IGFyZzE5NDAsaW50IGFyZzE5
NDEsaW50IGFyZzE5NDIsaW50IGFyZzE5NDMsaW50IGFyZzE5NDQsaW50IGFyZzE5NDUsaW50IGFy
ZzE5NDYsaW50IGFyZzE5NDcsaW50IGFyZzE5NDgsaW50IGFyZzE5NDksaW50IGFyZzE5NTAsaW50
IGFyZzE5NTEsaW50IGFyZzE5NTIsaW50IGFyZzE5NTMsaW50IGFyZzE5NTQsaW50IGFyZzE5NTUs
aW50IGFyZzE5NTYsaW50IGFyZzE5NTcsaW50IGFyZzE5NTgsaW50IGFyZzE5NTksaW50IGFyZzE5
NjAsaW50IGFyZzE5NjEsaW50IGFyZzE5NjIsaW50IGFyZzE5NjMsaW50IGFyZzE5NjQsaW50IGFy
ZzE5NjUsaW50IGFyZzE5NjYsaW50IGFyZzE5NjcsaW50IGFyZzE5NjgsaW50IGFyZzE5NjksaW50
IGFyZzE5NzAsaW50IGFyZzE5NzEsaW50IGFyZzE5NzIsaW50IGFyZzE5NzMsaW50IGFyZzE5NzQs
aW50IGFyZzE5NzUsaW50IGFyZzE5NzYsaW50IGFyZzE5NzcsaW50IGFyZzE5NzgsaW50IGFyZzE5
NzksaW50IGFyZzE5ODAsaW50IGFyZzE5ODEsaW50IGFyZzE5ODIsaW50IGFyZzE5ODMsaW50IGFy
ZzE5ODQsaW50IGFyZzE5ODUsaW50IGFyZzE5ODYsaW50IGFyZzE5ODcsaW50IGFyZzE5ODgsaW50
IGFyZzE5ODksaW50IGFyZzE5OTAsaW50IGFyZzE5OTEsaW50IGFyZzE5OTIsaW50IGFyZzE5OTMs
aW50IGFyZzE5OTQsaW50IGFyZzE5OTUsaW50IGFyZzE5OTYsaW50IGFyZzE5OTcsaW50IGFyZzE5
OTgsaW50IGFyZzE5OTksaW50IGFyZzIwMDAsaW50IGFyZzIwMDEsaW50IGFyZzIwMDIsaW50IGFy
ZzIwMDMsaW50IGFyZzIwMDQsaW50IGFyZzIwMDUsaW50IGFyZzIwMDYsaW50IGFyZzIwMDcsaW50
IGFyZzIwMDgsaW50IGFyZzIwMDksaW50IGFyZzIwMTAsaW50IGFyZzIwMTEsaW50IGFyZzIwMTIs
aW50IGFyZzIwMTMsaW50IGFyZzIwMTQsaW50IGFyZzIwMTUsaW50IGFyZzIwMTYsaW50IGFyZzIw
MTcsaW50IGFyZzIwMTgsaW50IGFyZzIwMTksaW50IGFyZzIwMjAsaW50IGFyZzIwMjEsaW50IGFy
ZzIwMjIsaW50IGFyZzIwMjMsaW50IGFyZzIwMjQsaW50IGFyZzIwMjUsaW50IGFyZzIwMjYsaW50
IGFyZzIwMjcsaW50IGFyZzIwMjgsaW50IGFyZzIwMjksaW50IGFyZzIwMzAsaW50IGFyZzIwMzEs
aW50IGFyZzIwMzIsaW50IGFyZzIwMzMsaW50IGFyZzIwMzQsaW50IGFyZzIwMzUsaW50IGFyZzIw
MzYsaW50IGFyZzIwMzcsaW50IGFyZzIwMzgsaW50IGFyZzIwMzksaW50IGFyZzIwNDAsaW50IGFy
ZzIwNDEsaW50IGFyZzIwNDIsaW50IGFyZzIwNDMsaW50IGFyZzIwNDQsaW50IGFyZzIwNDUsaW50
IGFyZzIwNDYsaW50IGFyZzIwNDcsaW50IGFyZzIwNDgsaW50IGFyZzIwNDksaW50IGFyZzIwNTAs
aW50IGFyZzIwNTEsaW50IGFyZzIwNTIsaW50IGFyZzIwNTMsaW50IGFyZzIwNTQsaW50IGFyZzIw
NTUsaW50IGFyZzIwNTYsaW50IGFyZzIwNTcsaW50IGFyZzIwNTgsaW50IGFyZzIwNTksaW50IGFy
ZzIwNjAsaW50IGFyZzIwNjEsaW50IGFyZzIwNjIsaW50IGFyZzIwNjMsaW50IGFyZzIwNjQsaW50
IGFyZzIwNjUsaW50IGFyZzIwNjYsaW50IGFyZzIwNjcsaW50IGFyZzIwNjgsaW50IGFyZzIwNjks
aW50IGFyZzIwNzAsaW50IGFyZzIwNzEsaW50IGFyZzIwNzIsaW50IGFyZzIwNzMsaW50IGFyZzIw
NzQsaW50IGFyZzIwNzUsaW50IGFyZzIwNzYsaW50IGFyZzIwNzcsaW50IGFyZzIwNzgsaW50IGFy
ZzIwNzksaW50IGFyZzIwODAsaW50IGFyZzIwODEsaW50IGFyZzIwODIsaW50IGFyZzIwODMsaW50
IGFyZzIwODQsaW50IGFyZzIwODUsaW50IGFyZzIwODYsaW50IGFyZzIwODcsaW50IGFyZzIwODgs
aW50IGFyZzIwODksaW50IGFyZzIwOTAsaW50IGFyZzIwOTEsaW50IGFyZzIwOTIsaW50IGFyZzIw
OTMsaW50IGFyZzIwOTQsaW50IGFyZzIwOTUsaW50IGFyZzIwOTYsaW50IGFyZzIwOTcsaW50IGFy
ZzIwOTgsaW50IGFyZzIwOTksaW50IGFyZzIxMDAsaW50IGFyZzIxMDEsaW50IGFyZzIxMDIsaW50
IGFyZzIxMDMsaW50IGFyZzIxMDQsaW50IGFyZzIxMDUsaW50IGFyZzIxMDYsaW50IGFyZzIxMDcs
aW50IGFyZzIxMDgsaW50IGFyZzIxMDksaW50IGFyZzIxMTAsaW50IGFyZzIxMTEsaW50IGFyZzIx
MTIsaW50IGFyZzIxMTMsaW50IGFyZzIxMTQsaW50IGFyZzIxMTUsaW50IGFyZzIxMTYsaW50IGFy
ZzIxMTcsaW50IGFyZzIxMTgsaW50IGFyZzIxMTksaW50IGFyZzIxMjAsaW50IGFyZzIxMjEsaW50
IGFyZzIxMjIsaW50IGFyZzIxMjMsaW50IGFyZzIxMjQsaW50IGFyZzIxMjUsaW50IGFyZzIxMjYs
aW50IGFyZzIxMjcsaW50IGFyZzIxMjgsaW50IGFyZzIxMjksaW50IGFyZzIxMzAsaW50IGFyZzIx
MzEsaW50IGFyZzIxMzIsaW50IGFyZzIxMzMsaW50IGFyZzIxMzQsaW50IGFyZzIxMzUsaW50IGFy
ZzIxMzYsaW50IGFyZzIxMzcsaW50IGFyZzIxMzgsaW50IGFyZzIxMzksaW50IGFyZzIxNDAsaW50
IGFyZzIxNDEsaW50IGFyZzIxNDIsaW50IGFyZzIxNDMsaW50IGFyZzIxNDQsaW50IGFyZzIxNDUs
aW50IGFyZzIxNDYsaW50IGFyZzIxNDcsaW50IGFyZzIxNDgsaW50IGFyZzIxNDksaW50IGFyZzIx
NTAsaW50IGFyZzIxNTEsaW50IGFyZzIxNTIsaW50IGFyZzIxNTMsaW50IGFyZzIxNTQsaW50IGFy
ZzIxNTUsaW50IGFyZzIxNTYsaW50IGFyZzIxNTcsaW50IGFyZzIxNTgsaW50IGFyZzIxNTksaW50
IGFyZzIxNjAsaW50IGFyZzIxNjEsaW50IGFyZzIxNjIsaW50IGFyZzIxNjMsaW50IGFyZzIxNjQs
aW50IGFyZzIxNjUsaW50IGFyZzIxNjYsaW50IGFyZzIxNjcsaW50IGFyZzIxNjgsaW50IGFyZzIx
NjksaW50IGFyZzIxNzAsaW50IGFyZzIxNzEsaW50IGFyZzIxNzIsaW50IGFyZzIxNzMsaW50IGFy
ZzIxNzQsaW50IGFyZzIxNzUsaW50IGFyZzIxNzYsaW50IGFyZzIxNzcsaW50IGFyZzIxNzgsaW50
IGFyZzIxNzksaW50IGFyZzIxODAsaW50IGFyZzIxODEsaW50IGFyZzIxODIsaW50IGFyZzIxODMs
aW50IGFyZzIxODQsaW50IGFyZzIxODUsaW50IGFyZzIxODYsaW50IGFyZzIxODcsaW50IGFyZzIx
ODgsaW50IGFyZzIxODksaW50IGFyZzIxOTAsaW50IGFyZzIxOTEsaW50IGFyZzIxOTIsaW50IGFy
ZzIxOTMsaW50IGFyZzIxOTQsaW50IGFyZzIxOTUsaW50IGFyZzIxOTYsaW50IGFyZzIxOTcsaW50
IGFyZzIxOTgsaW50IGFyZzIxOTksaW50IGFyZzIyMDAsaW50IGFyZzIyMDEsaW50IGFyZzIyMDIs
aW50IGFyZzIyMDMsaW50IGFyZzIyMDQsaW50IGFyZzIyMDUsaW50IGFyZzIyMDYsaW50IGFyZzIy
MDcsaW50IGFyZzIyMDgsaW50IGFyZzIyMDksaW50IGFyZzIyMTAsaW50IGFyZzIyMTEsaW50IGFy
ZzIyMTIsaW50IGFyZzIyMTMsaW50IGFyZzIyMTQsaW50IGFyZzIyMTUsaW50IGFyZzIyMTYsaW50
IGFyZzIyMTcsaW50IGFyZzIyMTgsaW50IGFyZzIyMTksaW50IGFyZzIyMjAsaW50IGFyZzIyMjEs
aW50IGFyZzIyMjIsaW50IGFyZzIyMjMsaW50IGFyZzIyMjQsaW50IGFyZzIyMjUsaW50IGFyZzIy
MjYsaW50IGFyZzIyMjcsaW50IGFyZzIyMjgsaW50IGFyZzIyMjksaW50IGFyZzIyMzAsaW50IGFy
ZzIyMzEsaW50IGFyZzIyMzIsaW50IGFyZzIyMzMsaW50IGFyZzIyMzQsaW50IGFyZzIyMzUsaW50
IGFyZzIyMzYsaW50IGFyZzIyMzcsaW50IGFyZzIyMzgsaW50IGFyZzIyMzksaW50IGFyZzIyNDAs
aW50IGFyZzIyNDEsaW50IGFyZzIyNDIsaW50IGFyZzIyNDMsaW50IGFyZzIyNDQsaW50IGFyZzIy
NDUsaW50IGFyZzIyNDYsaW50IGFyZzIyNDcsaW50IGFyZzIyNDgsaW50IGFyZzIyNDksaW50IGFy
ZzIyNTAsaW50IGFyZzIyNTEsaW50IGFyZzIyNTIsaW50IGFyZzIyNTMsaW50IGFyZzIyNTQsaW50
IGFyZzIyNTUsaW50IGFyZzIyNTYsaW50IGFyZzIyNTcsaW50IGFyZzIyNTgsaW50IGFyZzIyNTks
aW50IGFyZzIyNjAsaW50IGFyZzIyNjEsaW50IGFyZzIyNjIsaW50IGFyZzIyNjMsaW50IGFyZzIy
NjQsaW50IGFyZzIyNjUsaW50IGFyZzIyNjYsaW50IGFyZzIyNjcsaW50IGFyZzIyNjgsaW50IGFy
ZzIyNjksaW50IGFyZzIyNzAsaW50IGFyZzIyNzEsaW50IGFyZzIyNzIsaW50IGFyZzIyNzMsaW50
IGFyZzIyNzQsaW50IGFyZzIyNzUsaW50IGFyZzIyNzYsaW50IGFyZzIyNzcsaW50IGFyZzIyNzgs
aW50IGFyZzIyNzksaW50IGFyZzIyODAsaW50IGFyZzIyODEsaW50IGFyZzIyODIsaW50IGFyZzIy
ODMsaW50IGFyZzIyODQsaW50IGFyZzIyODUsaW50IGFyZzIyODYsaW50IGFyZzIyODcsaW50IGFy
ZzIyODgsaW50IGFyZzIyODksaW50IGFyZzIyOTAsaW50IGFyZzIyOTEsaW50IGFyZzIyOTIsaW50
IGFyZzIyOTMsaW50IGFyZzIyOTQsaW50IGFyZzIyOTUsaW50IGFyZzIyOTYsaW50IGFyZzIyOTcs
aW50IGFyZzIyOTgsaW50IGFyZzIyOTksaW50IGFyZzIzMDAsaW50IGFyZzIzMDEsaW50IGFyZzIz
MDIsaW50IGFyZzIzMDMsaW50IGFyZzIzMDQsaW50IGFyZzIzMDUsaW50IGFyZzIzMDYsaW50IGFy
ZzIzMDcsaW50IGFyZzIzMDgsaW50IGFyZzIzMDksaW50IGFyZzIzMTAsaW50IGFyZzIzMTEsaW50
IGFyZzIzMTIsaW50IGFyZzIzMTMsaW50IGFyZzIzMTQsaW50IGFyZzIzMTUsaW50IGFyZzIzMTYs
aW50IGFyZzIzMTcsaW50IGFyZzIzMTgsaW50IGFyZzIzMTksaW50IGFyZzIzMjAsaW50IGFyZzIz
MjEsaW50IGFyZzIzMjIsaW50IGFyZzIzMjMsaW50IGFyZzIzMjQsaW50IGFyZzIzMjUsaW50IGFy
ZzIzMjYsaW50IGFyZzIzMjcsaW50IGFyZzIzMjgsaW50IGFyZzIzMjksaW50IGFyZzIzMzAsaW50
IGFyZzIzMzEsaW50IGFyZzIzMzIsaW50IGFyZzIzMzMsaW50IGFyZzIzMzQsaW50IGFyZzIzMzUs
aW50IGFyZzIzMzYsaW50IGFyZzIzMzcsaW50IGFyZzIzMzgsaW50IGFyZzIzMzksaW50IGFyZzIz
NDAsaW50IGFyZzIzNDEsaW50IGFyZzIzNDIsaW50IGFyZzIzNDMsaW50IGFyZzIzNDQsaW50IGFy
ZzIzNDUsaW50IGFyZzIzNDYsaW50IGFyZzIzNDcsaW50IGFyZzIzNDgsaW50IGFyZzIzNDksaW50
IGFyZzIzNTAsaW50IGFyZzIzNTEsaW50IGFyZzIzNTIsaW50IGFyZzIzNTMsaW50IGFyZzIzNTQs
aW50IGFyZzIzNTUsaW50IGFyZzIzNTYsaW50IGFyZzIzNTcsaW50IGFyZzIzNTgsaW50IGFyZzIz
NTksaW50IGFyZzIzNjAsaW50IGFyZzIzNjEsaW50IGFyZzIzNjIsaW50IGFyZzIzNjMsaW50IGFy
ZzIzNjQsaW50IGFyZzIzNjUsaW50IGFyZzIzNjYsaW50IGFyZzIzNjcsaW50IGFyZzIzNjgsaW50
IGFyZzIzNjksaW50IGFyZzIzNzAsaW50IGFyZzIzNzEsaW50IGFyZzIzNzIsaW50IGFyZzIzNzMs
aW50IGFyZzIzNzQsaW50IGFyZzIzNzUsaW50IGFyZzIzNzYsaW50IGFyZzIzNzcsaW50IGFyZzIz
NzgsaW50IGFyZzIzNzksaW50IGFyZzIzODAsaW50IGFyZzIzODEsaW50IGFyZzIzODIsaW50IGFy
ZzIzODMsaW50IGFyZzIzODQsaW50IGFyZzIzODUsaW50IGFyZzIzODYsaW50IGFyZzIzODcsaW50
IGFyZzIzODgsaW50IGFyZzIzODksaW50IGFyZzIzOTAsaW50IGFyZzIzOTEsaW50IGFyZzIzOTIs
aW50IGFyZzIzOTMsaW50IGFyZzIzOTQsaW50IGFyZzIzOTUsaW50IGFyZzIzOTYsaW50IGFyZzIz
OTcsaW50IGFyZzIzOTgsaW50IGFyZzIzOTksaW50IGFyZzI0MDAsaW50IGFyZzI0MDEsaW50IGFy
ZzI0MDIsaW50IGFyZzI0MDMsaW50IGFyZzI0MDQsaW50IGFyZzI0MDUsaW50IGFyZzI0MDYsaW50
IGFyZzI0MDcsaW50IGFyZzI0MDgsaW50IGFyZzI0MDksaW50IGFyZzI0MTAsaW50IGFyZzI0MTEs
aW50IGFyZzI0MTIsaW50IGFyZzI0MTMsaW50IGFyZzI0MTQsaW50IGFyZzI0MTUsaW50IGFyZzI0
MTYsaW50IGFyZzI0MTcsaW50IGFyZzI0MTgsaW50IGFyZzI0MTksaW50IGFyZzI0MjAsaW50IGFy
ZzI0MjEsaW50IGFyZzI0MjIsaW50IGFyZzI0MjMsaW50IGFyZzI0MjQsaW50IGFyZzI0MjUsaW50
IGFyZzI0MjYsaW50IGFyZzI0MjcsaW50IGFyZzI0MjgsaW50IGFyZzI0MjksaW50IGFyZzI0MzAs
aW50IGFyZzI0MzEsaW50IGFyZzI0MzIsaW50IGFyZzI0MzMsaW50IGFyZzI0MzQsaW50IGFyZzI0
MzUsaW50IGFyZzI0MzYsaW50IGFyZzI0MzcsaW50IGFyZzI0MzgsaW50IGFyZzI0MzksaW50IGFy
ZzI0NDAsaW50IGFyZzI0NDEsaW50IGFyZzI0NDIsaW50IGFyZzI0NDMsaW50IGFyZzI0NDQsaW50
IGFyZzI0NDUsaW50IGFyZzI0NDYsaW50IGFyZzI0NDcsaW50IGFyZzI0NDgsaW50IGFyZzI0NDks
aW50IGFyZzI0NTAsaW50IGFyZzI0NTEsaW50IGFyZzI0NTIsaW50IGFyZzI0NTMsaW50IGFyZzI0
NTQsaW50IGFyZzI0NTUsaW50IGFyZzI0NTYsaW50IGFyZzI0NTcsaW50IGFyZzI0NTgsaW50IGFy
ZzI0NTksaW50IGFyZzI0NjAsaW50IGFyZzI0NjEsaW50IGFyZzI0NjIsaW50IGFyZzI0NjMsaW50
IGFyZzI0NjQsaW50IGFyZzI0NjUsaW50IGFyZzI0NjYsaW50IGFyZzI0NjcsaW50IGFyZzI0Njgs
aW50IGFyZzI0NjksaW50IGFyZzI0NzAsaW50IGFyZzI0NzEsaW50IGFyZzI0NzIsaW50IGFyZzI0
NzMsaW50IGFyZzI0NzQsaW50IGFyZzI0NzUsaW50IGFyZzI0NzYsaW50IGFyZzI0NzcsaW50IGFy
ZzI0NzgsaW50IGFyZzI0NzksaW50IGFyZzI0ODAsaW50IGFyZzI0ODEsaW50IGFyZzI0ODIsaW50
IGFyZzI0ODMsaW50IGFyZzI0ODQsaW50IGFyZzI0ODUsaW50IGFyZzI0ODYsaW50IGFyZzI0ODcs
aW50IGFyZzI0ODgsaW50IGFyZzI0ODksaW50IGFyZzI0OTAsaW50IGFyZzI0OTEsaW50IGFyZzI0
OTIsaW50IGFyZzI0OTMsaW50IGFyZzI0OTQsaW50IGFyZzI0OTUsaW50IGFyZzI0OTYsaW50IGFy
ZzI0OTcsaW50IGFyZzI0OTgsaW50IGFyZzI0OTksaW50IGFyZzI1MDAsaW50IGFyZzI1MDEsaW50
IGFyZzI1MDIsaW50IGFyZzI1MDMsaW50IGFyZzI1MDQsaW50IGFyZzI1MDUsaW50IGFyZzI1MDYs
aW50IGFyZzI1MDcsaW50IGFyZzI1MDgsaW50IGFyZzI1MDksaW50IGFyZzI1MTAsaW50IGFyZzI1
MTEsaW50IGFyZzI1MTIsaW50IGFyZzI1MTMsaW50IGFyZzI1MTQsaW50IGFyZzI1MTUsaW50IGFy
ZzI1MTYsaW50IGFyZzI1MTcsaW50IGFyZzI1MTgsaW50IGFyZzI1MTksaW50IGFyZzI1MjAsaW50
IGFyZzI1MjEsaW50IGFyZzI1MjIsaW50IGFyZzI1MjMsaW50IGFyZzI1MjQsaW50IGFyZzI1MjUs
aW50IGFyZzI1MjYsaW50IGFyZzI1MjcsaW50IGFyZzI1MjgsaW50IGFyZzI1MjksaW50IGFyZzI1
MzAsaW50IGFyZzI1MzEsaW50IGFyZzI1MzIsaW50IGFyZzI1MzMsaW50IGFyZzI1MzQsaW50IGFy
ZzI1MzUsaW50IGFyZzI1MzYsaW50IGFyZzI1MzcsaW50IGFyZzI1MzgsaW50IGFyZzI1MzksaW50
IGFyZzI1NDAsaW50IGFyZzI1NDEsaW50IGFyZzI1NDIsaW50IGFyZzI1NDMsaW50IGFyZzI1NDQs
aW50IGFyZzI1NDUsaW50IGFyZzI1NDYsaW50IGFyZzI1NDcsaW50IGFyZzI1NDgsaW50IGFyZzI1
NDksaW50IGFyZzI1NTAsaW50IGFyZzI1NTEsaW50IGFyZzI1NTIsaW50IGFyZzI1NTMsaW50IGFy
ZzI1NTQsaW50IGFyZzI1NTUsaW50IGFyZzI1NTYsaW50IGFyZzI1NTcsaW50IGFyZzI1NTgsaW50
IGFyZzI1NTksaW50IGFyZzI1NjAsaW50IGFyZzI1NjEsaW50IGFyZzI1NjIsaW50IGFyZzI1NjMs
aW50IGFyZzI1NjQsaW50IGFyZzI1NjUsaW50IGFyZzI1NjYsaW50IGFyZzI1NjcsaW50IGFyZzI1
NjgsaW50IGFyZzI1NjksaW50IGFyZzI1NzAsaW50IGFyZzI1NzEsaW50IGFyZzI1NzIsaW50IGFy
ZzI1NzMsaW50IGFyZzI1NzQsaW50IGFyZzI1NzUsaW50IGFyZzI1NzYsaW50IGFyZzI1NzcsaW50
IGFyZzI1NzgsaW50IGFyZzI1NzksaW50IGFyZzI1ODAsaW50IGFyZzI1ODEsaW50IGFyZzI1ODIs
aW50IGFyZzI1ODMsaW50IGFyZzI1ODQsaW50IGFyZzI1ODUsaW50IGFyZzI1ODYsaW50IGFyZzI1
ODcsaW50IGFyZzI1ODgsaW50IGFyZzI1ODksaW50IGFyZzI1OTAsaW50IGFyZzI1OTEsaW50IGFy
ZzI1OTIsaW50IGFyZzI1OTMsaW50IGFyZzI1OTQsaW50IGFyZzI1OTUsaW50IGFyZzI1OTYsaW50
IGFyZzI1OTcsaW50IGFyZzI1OTgsaW50IGFyZzI1OTksaW50IGFyZzI2MDAsaW50IGFyZzI2MDEs
aW50IGFyZzI2MDIsaW50IGFyZzI2MDMsaW50IGFyZzI2MDQsaW50IGFyZzI2MDUsaW50IGFyZzI2
MDYsaW50IGFyZzI2MDcsaW50IGFyZzI2MDgsaW50IGFyZzI2MDksaW50IGFyZzI2MTAsaW50IGFy
ZzI2MTEsaW50IGFyZzI2MTIsaW50IGFyZzI2MTMsaW50IGFyZzI2MTQsaW50IGFyZzI2MTUsaW50
IGFyZzI2MTYsaW50IGFyZzI2MTcsaW50IGFyZzI2MTgsaW50IGFyZzI2MTksaW50IGFyZzI2MjAs
aW50IGFyZzI2MjEsaW50IGFyZzI2MjIsaW50IGFyZzI2MjMsaW50IGFyZzI2MjQsaW50IGFyZzI2
MjUsaW50IGFyZzI2MjYsaW50IGFyZzI2MjcsaW50IGFyZzI2MjgsaW50IGFyZzI2MjksaW50IGFy
ZzI2MzAsaW50IGFyZzI2MzEsaW50IGFyZzI2MzIsaW50IGFyZzI2MzMsaW50IGFyZzI2MzQsaW50
IGFyZzI2MzUsaW50IGFyZzI2MzYsaW50IGFyZzI2MzcsaW50IGFyZzI2MzgsaW50IGFyZzI2Mzks
aW50IGFyZzI2NDAsaW50IGFyZzI2NDEsaW50IGFyZzI2NDIsaW50IGFyZzI2NDMsaW50IGFyZzI2
NDQsaW50IGFyZzI2NDUsaW50IGFyZzI2NDYsaW50IGFyZzI2NDcsaW50IGFyZzI2NDgsaW50IGFy
ZzI2NDksaW50IGFyZzI2NTAsaW50IGFyZzI2NTEsaW50IGFyZzI2NTIsaW50IGFyZzI2NTMsaW50
IGFyZzI2NTQsaW50IGFyZzI2NTUsaW50IGFyZzI2NTYsaW50IGFyZzI2NTcsaW50IGFyZzI2NTgs
aW50IGFyZzI2NTksaW50IGFyZzI2NjAsaW50IGFyZzI2NjEsaW50IGFyZzI2NjIsaW50IGFyZzI2
NjMsaW50IGFyZzI2NjQsaW50IGFyZzI2NjUsaW50IGFyZzI2NjYsaW50IGFyZzI2NjcsaW50IGFy
ZzI2NjgsaW50IGFyZzI2NjksaW50IGFyZzI2NzAsaW50IGFyZzI2NzEsaW50IGFyZzI2NzIsaW50
IGFyZzI2NzMsaW50IGFyZzI2NzQsaW50IGFyZzI2NzUsaW50IGFyZzI2NzYsaW50IGFyZzI2Nzcs
aW50IGFyZzI2NzgsaW50IGFyZzI2NzksaW50IGFyZzI2ODAsaW50IGFyZzI2ODEsaW50IGFyZzI2
ODIsaW50IGFyZzI2ODMsaW50IGFyZzI2ODQsaW50IGFyZzI2ODUsaW50IGFyZzI2ODYsaW50IGFy
ZzI2ODcsaW50IGFyZzI2ODgsaW50IGFyZzI2ODksaW50IGFyZzI2OTAsaW50IGFyZzI2OTEsaW50
IGFyZzI2OTIsaW50IGFyZzI2OTMsaW50IGFyZzI2OTQsaW50IGFyZzI2OTUsaW50IGFyZzI2OTYs
aW50IGFyZzI2OTcsaW50IGFyZzI2OTgsaW50IGFyZzI2OTksaW50IGFyZzI3MDAsaW50IGFyZzI3
MDEsaW50IGFyZzI3MDIsaW50IGFyZzI3MDMsaW50IGFyZzI3MDQsaW50IGFyZzI3MDUsaW50IGFy
ZzI3MDYsaW50IGFyZzI3MDcsaW50IGFyZzI3MDgsaW50IGFyZzI3MDksaW50IGFyZzI3MTAsaW50
IGFyZzI3MTEsaW50IGFyZzI3MTIsaW50IGFyZzI3MTMsaW50IGFyZzI3MTQsaW50IGFyZzI3MTUs
aW50IGFyZzI3MTYsaW50IGFyZzI3MTcsaW50IGFyZzI3MTgsaW50IGFyZzI3MTksaW50IGFyZzI3
MjAsaW50IGFyZzI3MjEsaW50IGFyZzI3MjIsaW50IGFyZzI3MjMsaW50IGFyZzI3MjQsaW50IGFy
ZzI3MjUsaW50IGFyZzI3MjYsaW50IGFyZzI3MjcsaW50IGFyZzI3MjgsaW50IGFyZzI3MjksaW50
IGFyZzI3MzAsaW50IGFyZzI3MzEsaW50IGFyZzI3MzIsaW50IGFyZzI3MzMsaW50IGFyZzI3MzQs
aW50IGFyZzI3MzUsaW50IGFyZzI3MzYsaW50IGFyZzI3MzcsaW50IGFyZzI3MzgsaW50IGFyZzI3
MzksaW50IGFyZzI3NDAsaW50IGFyZzI3NDEsaW50IGFyZzI3NDIsaW50IGFyZzI3NDMsaW50IGFy
ZzI3NDQsaW50IGFyZzI3NDUsaW50IGFyZzI3NDYsaW50IGFyZzI3NDcsaW50IGFyZzI3NDgsaW50
IGFyZzI3NDksaW50IGFyZzI3NTAsaW50IGFyZzI3NTEsaW50IGFyZzI3NTIsaW50IGFyZzI3NTMs
aW50IGFyZzI3NTQsaW50IGFyZzI3NTUsaW50IGFyZzI3NTYsaW50IGFyZzI3NTcsaW50IGFyZzI3
NTgsaW50IGFyZzI3NTksaW50IGFyZzI3NjAsaW50IGFyZzI3NjEsaW50IGFyZzI3NjIsaW50IGFy
ZzI3NjMsaW50IGFyZzI3NjQsaW50IGFyZzI3NjUsaW50IGFyZzI3NjYsaW50IGFyZzI3NjcsaW50
IGFyZzI3NjgsaW50IGFyZzI3NjksaW50IGFyZzI3NzAsaW50IGFyZzI3NzEsaW50IGFyZzI3NzIs
aW50IGFyZzI3NzMsaW50IGFyZzI3NzQsaW50IGFyZzI3NzUsaW50IGFyZzI3NzYsaW50IGFyZzI3
NzcsaW50IGFyZzI3NzgsaW50IGFyZzI3NzksaW50IGFyZzI3ODAsaW50IGFyZzI3ODEsaW50IGFy
ZzI3ODIsaW50IGFyZzI3ODMsaW50IGFyZzI3ODQsaW50IGFyZzI3ODUsaW50IGFyZzI3ODYsaW50
IGFyZzI3ODcsaW50IGFyZzI3ODgsaW50IGFyZzI3ODksaW50IGFyZzI3OTAsaW50IGFyZzI3OTEs
aW50IGFyZzI3OTIsaW50IGFyZzI3OTMsaW50IGFyZzI3OTQsaW50IGFyZzI3OTUsaW50IGFyZzI3
OTYsaW50IGFyZzI3OTcsaW50IGFyZzI3OTgsaW50IGFyZzI3OTksaW50IGFyZzI4MDAsaW50IGFy
ZzI4MDEsaW50IGFyZzI4MDIsaW50IGFyZzI4MDMsaW50IGFyZzI4MDQsaW50IGFyZzI4MDUsaW50
IGFyZzI4MDYsaW50IGFyZzI4MDcsaW50IGFyZzI4MDgsaW50IGFyZzI4MDksaW50IGFyZzI4MTAs
aW50IGFyZzI4MTEsaW50IGFyZzI4MTIsaW50IGFyZzI4MTMsaW50IGFyZzI4MTQsaW50IGFyZzI4
MTUsaW50IGFyZzI4MTYsaW50IGFyZzI4MTcsaW50IGFyZzI4MTgsaW50IGFyZzI4MTksaW50IGFy
ZzI4MjAsaW50IGFyZzI4MjEsaW50IGFyZzI4MjIsaW50IGFyZzI4MjMsaW50IGFyZzI4MjQsaW50
IGFyZzI4MjUsaW50IGFyZzI4MjYsaW50IGFyZzI4MjcsaW50IGFyZzI4MjgsaW50IGFyZzI4Mjks
aW50IGFyZzI4MzAsaW50IGFyZzI4MzEsaW50IGFyZzI4MzIsaW50IGFyZzI4MzMsaW50IGFyZzI4
MzQsaW50IGFyZzI4MzUsaW50IGFyZzI4MzYsaW50IGFyZzI4MzcsaW50IGFyZzI4MzgsaW50IGFy
ZzI4MzksaW50IGFyZzI4NDAsaW50IGFyZzI4NDEsaW50IGFyZzI4NDIsaW50IGFyZzI4NDMsaW50
IGFyZzI4NDQsaW50IGFyZzI4NDUsaW50IGFyZzI4NDYsaW50IGFyZzI4NDcsaW50IGFyZzI4NDgs
aW50IGFyZzI4NDksaW50IGFyZzI4NTAsaW50IGFyZzI4NTEsaW50IGFyZzI4NTIsaW50IGFyZzI4
NTMsaW50IGFyZzI4NTQsaW50IGFyZzI4NTUsaW50IGFyZzI4NTYsaW50IGFyZzI4NTcsaW50IGFy
ZzI4NTgsaW50IGFyZzI4NTksaW50IGFyZzI4NjAsaW50IGFyZzI4NjEsaW50IGFyZzI4NjIsaW50
IGFyZzI4NjMsaW50IGFyZzI4NjQsaW50IGFyZzI4NjUsaW50IGFyZzI4NjYsaW50IGFyZzI4Njcs
aW50IGFyZzI4NjgsaW50IGFyZzI4NjksaW50IGFyZzI4NzAsaW50IGFyZzI4NzEsaW50IGFyZzI4
NzIsaW50IGFyZzI4NzMsaW50IGFyZzI4NzQsaW50IGFyZzI4NzUsaW50IGFyZzI4NzYsaW50IGFy
ZzI4NzcsaW50IGFyZzI4NzgsaW50IGFyZzI4NzksaW50IGFyZzI4ODAsaW50IGFyZzI4ODEsaW50
IGFyZzI4ODIsaW50IGFyZzI4ODMsaW50IGFyZzI4ODQsaW50IGFyZzI4ODUsaW50IGFyZzI4ODYs
aW50IGFyZzI4ODcsaW50IGFyZzI4ODgsaW50IGFyZzI4ODksaW50IGFyZzI4OTAsaW50IGFyZzI4
OTEsaW50IGFyZzI4OTIsaW50IGFyZzI4OTMsaW50IGFyZzI4OTQsaW50IGFyZzI4OTUsaW50IGFy
ZzI4OTYsaW50IGFyZzI4OTcsaW50IGFyZzI4OTgsaW50IGFyZzI4OTksaW50IGFyZzI5MDAsaW50
IGFyZzI5MDEsaW50IGFyZzI5MDIsaW50IGFyZzI5MDMsaW50IGFyZzI5MDQsaW50IGFyZzI5MDUs
aW50IGFyZzI5MDYsaW50IGFyZzI5MDcsaW50IGFyZzI5MDgsaW50IGFyZzI5MDksaW50IGFyZzI5
MTAsaW50IGFyZzI5MTEsaW50IGFyZzI5MTIsaW50IGFyZzI5MTMsaW50IGFyZzI5MTQsaW50IGFy
ZzI5MTUsaW50IGFyZzI5MTYsaW50IGFyZzI5MTcsaW50IGFyZzI5MTgsaW50IGFyZzI5MTksaW50
IGFyZzI5MjAsaW50IGFyZzI5MjEsaW50IGFyZzI5MjIsaW50IGFyZzI5MjMsaW50IGFyZzI5MjQs
aW50IGFyZzI5MjUsaW50IGFyZzI5MjYsaW50IGFyZzI5MjcsaW50IGFyZzI5MjgsaW50IGFyZzI5
MjksaW50IGFyZzI5MzAsaW50IGFyZzI5MzEsaW50IGFyZzI5MzIsaW50IGFyZzI5MzMsaW50IGFy
ZzI5MzQsaW50IGFyZzI5MzUsaW50IGFyZzI5MzYsaW50IGFyZzI5MzcsaW50IGFyZzI5MzgsaW50
IGFyZzI5MzksaW50IGFyZzI5NDAsaW50IGFyZzI5NDEsaW50IGFyZzI5NDIsaW50IGFyZzI5NDMs
aW50IGFyZzI5NDQsaW50IGFyZzI5NDUsaW50IGFyZzI5NDYsaW50IGFyZzI5NDcsaW50IGFyZzI5
NDgsaW50IGFyZzI5NDksaW50IGFyZzI5NTAsaW50IGFyZzI5NTEsaW50IGFyZzI5NTIsaW50IGFy
ZzI5NTMsaW50IGFyZzI5NTQsaW50IGFyZzI5NTUsaW50IGFyZzI5NTYsaW50IGFyZzI5NTcsaW50
IGFyZzI5NTgsaW50IGFyZzI5NTksaW50IGFyZzI5NjAsaW50IGFyZzI5NjEsaW50IGFyZzI5NjIs
aW50IGFyZzI5NjMsaW50IGFyZzI5NjQsaW50IGFyZzI5NjUsaW50IGFyZzI5NjYsaW50IGFyZzI5
NjcsaW50IGFyZzI5NjgsaW50IGFyZzI5NjksaW50IGFyZzI5NzAsaW50IGFyZzI5NzEsaW50IGFy
ZzI5NzIsaW50IGFyZzI5NzMsaW50IGFyZzI5NzQsaW50IGFyZzI5NzUsaW50IGFyZzI5NzYsaW50
IGFyZzI5NzcsaW50IGFyZzI5NzgsaW50IGFyZzI5NzksaW50IGFyZzI5ODAsaW50IGFyZzI5ODEs
aW50IGFyZzI5ODIsaW50IGFyZzI5ODMsaW50IGFyZzI5ODQsaW50IGFyZzI5ODUsaW50IGFyZzI5
ODYsaW50IGFyZzI5ODcsaW50IGFyZzI5ODgsaW50IGFyZzI5ODksaW50IGFyZzI5OTAsaW50IGFy
ZzI5OTEsaW50IGFyZzI5OTIsaW50IGFyZzI5OTMsaW50IGFyZzI5OTQsaW50IGFyZzI5OTUsaW50
IGFyZzI5OTYsaW50IGFyZzI5OTcsaW50IGFyZzI5OTgsaW50IGFyZzI5OTksaW50IGFyZzMwMDAs
aW50IGFyZzMwMDEsaW50IGFyZzMwMDIsaW50IGFyZzMwMDMsaW50IGFyZzMwMDQsaW50IGFyZzMw
MDUsaW50IGFyZzMwMDYsaW50IGFyZzMwMDcsaW50IGFyZzMwMDgsaW50IGFyZzMwMDksaW50IGFy
ZzMwMTAsaW50IGFyZzMwMTEsaW50IGFyZzMwMTIsaW50IGFyZzMwMTMsaW50IGFyZzMwMTQsaW50
IGFyZzMwMTUsaW50IGFyZzMwMTYsaW50IGFyZzMwMTcsaW50IGFyZzMwMTgsaW50IGFyZzMwMTks
aW50IGFyZzMwMjAsaW50IGFyZzMwMjEsaW50IGFyZzMwMjIsaW50IGFyZzMwMjMsaW50IGFyZzMw
MjQsaW50IGFyZzMwMjUsaW50IGFyZzMwMjYsaW50IGFyZzMwMjcsaW50IGFyZzMwMjgsaW50IGFy
ZzMwMjksaW50IGFyZzMwMzAsaW50IGFyZzMwMzEsaW50IGFyZzMwMzIsaW50IGFyZzMwMzMsaW50
IGFyZzMwMzQsaW50IGFyZzMwMzUsaW50IGFyZzMwMzYsaW50IGFyZzMwMzcsaW50IGFyZzMwMzgs
aW50IGFyZzMwMzksaW50IGFyZzMwNDAsaW50IGFyZzMwNDEsaW50IGFyZzMwNDIsaW50IGFyZzMw
NDMsaW50IGFyZzMwNDQsaW50IGFyZzMwNDUsaW50IGFyZzMwNDYsaW50IGFyZzMwNDcsaW50IGFy
ZzMwNDgsaW50IGFyZzMwNDksaW50IGFyZzMwNTAsaW50IGFyZzMwNTEsaW50IGFyZzMwNTIsaW50
IGFyZzMwNTMsaW50IGFyZzMwNTQsaW50IGFyZzMwNTUsaW50IGFyZzMwNTYsaW50IGFyZzMwNTcs
aW50IGFyZzMwNTgsaW50IGFyZzMwNTksaW50IGFyZzMwNjAsaW50IGFyZzMwNjEsaW50IGFyZzMw
NjIsaW50IGFyZzMwNjMsaW50IGFyZzMwNjQsaW50IGFyZzMwNjUsaW50IGFyZzMwNjYsaW50IGFy
ZzMwNjcsaW50IGFyZzMwNjgsaW50IGFyZzMwNjksaW50IGFyZzMwNzAsaW50IGFyZzMwNzEsaW50
IGFyZzMwNzIsaW50IGFyZzMwNzMsaW50IGFyZzMwNzQsaW50IGFyZzMwNzUsaW50IGFyZzMwNzYs
aW50IGFyZzMwNzcsaW50IGFyZzMwNzgsaW50IGFyZzMwNzksaW50IGFyZzMwODAsaW50IGFyZzMw
ODEsaW50IGFyZzMwODIsaW50IGFyZzMwODMsaW50IGFyZzMwODQsaW50IGFyZzMwODUsaW50IGFy
ZzMwODYsaW50IGFyZzMwODcsaW50IGFyZzMwODgsaW50IGFyZzMwODksaW50IGFyZzMwOTAsaW50
IGFyZzMwOTEsaW50IGFyZzMwOTIsaW50IGFyZzMwOTMsaW50IGFyZzMwOTQsaW50IGFyZzMwOTUs
aW50IGFyZzMwOTYsaW50IGFyZzMwOTcsaW50IGFyZzMwOTgsaW50IGFyZzMwOTksaW50IGFyZzMx
MDAsaW50IGFyZzMxMDEsaW50IGFyZzMxMDIsaW50IGFyZzMxMDMsaW50IGFyZzMxMDQsaW50IGFy
ZzMxMDUsaW50IGFyZzMxMDYsaW50IGFyZzMxMDcsaW50IGFyZzMxMDgsaW50IGFyZzMxMDksaW50
IGFyZzMxMTAsaW50IGFyZzMxMTEsaW50IGFyZzMxMTIsaW50IGFyZzMxMTMsaW50IGFyZzMxMTQs
aW50IGFyZzMxMTUsaW50IGFyZzMxMTYsaW50IGFyZzMxMTcsaW50IGFyZzMxMTgsaW50IGFyZzMx
MTksaW50IGFyZzMxMjAsaW50IGFyZzMxMjEsaW50IGFyZzMxMjIsaW50IGFyZzMxMjMsaW50IGFy
ZzMxMjQsaW50IGFyZzMxMjUsaW50IGFyZzMxMjYsaW50IGFyZzMxMjcsaW50IGFyZzMxMjgsaW50
IGFyZzMxMjksaW50IGFyZzMxMzAsaW50IGFyZzMxMzEsaW50IGFyZzMxMzIsaW50IGFyZzMxMzMs
aW50IGFyZzMxMzQsaW50IGFyZzMxMzUsaW50IGFyZzMxMzYsaW50IGFyZzMxMzcsaW50IGFyZzMx
MzgsaW50IGFyZzMxMzksaW50IGFyZzMxNDAsaW50IGFyZzMxNDEsaW50IGFyZzMxNDIsaW50IGFy
ZzMxNDMsaW50IGFyZzMxNDQsaW50IGFyZzMxNDUsaW50IGFyZzMxNDYsaW50IGFyZzMxNDcsaW50
IGFyZzMxNDgsaW50IGFyZzMxNDksaW50IGFyZzMxNTAsaW50IGFyZzMxNTEsaW50IGFyZzMxNTIs
aW50IGFyZzMxNTMsaW50IGFyZzMxNTQsaW50IGFyZzMxNTUsaW50IGFyZzMxNTYsaW50IGFyZzMx
NTcsaW50IGFyZzMxNTgsaW50IGFyZzMxNTksaW50IGFyZzMxNjAsaW50IGFyZzMxNjEsaW50IGFy
ZzMxNjIsaW50IGFyZzMxNjMsaW50IGFyZzMxNjQsaW50IGFyZzMxNjUsaW50IGFyZzMxNjYsaW50
IGFyZzMxNjcsaW50IGFyZzMxNjgsaW50IGFyZzMxNjksaW50IGFyZzMxNzAsaW50IGFyZzMxNzEs
aW50IGFyZzMxNzIsaW50IGFyZzMxNzMsaW50IGFyZzMxNzQsaW50IGFyZzMxNzUsaW50IGFyZzMx
NzYsaW50IGFyZzMxNzcsaW50IGFyZzMxNzgsaW50IGFyZzMxNzksaW50IGFyZzMxODAsaW50IGFy
ZzMxODEsaW50IGFyZzMxODIsaW50IGFyZzMxODMsaW50IGFyZzMxODQsaW50IGFyZzMxODUsaW50
IGFyZzMxODYsaW50IGFyZzMxODcsaW50IGFyZzMxODgsaW50IGFyZzMxODksaW50IGFyZzMxOTAs
aW50IGFyZzMxOTEsaW50IGFyZzMxOTIsaW50IGFyZzMxOTMsaW50IGFyZzMxOTQsaW50IGFyZzMx
OTUsaW50IGFyZzMxOTYsaW50IGFyZzMxOTcsaW50IGFyZzMxOTgsaW50IGFyZzMxOTksaW50IGFy
ZzMyMDAsaW50IGFyZzMyMDEsaW50IGFyZzMyMDIsaW50IGFyZzMyMDMsaW50IGFyZzMyMDQsaW50
IGFyZzMyMDUsaW50IGFyZzMyMDYsaW50IGFyZzMyMDcsaW50IGFyZzMyMDgsaW50IGFyZzMyMDks
aW50IGFyZzMyMTAsaW50IGFyZzMyMTEsaW50IGFyZzMyMTIsaW50IGFyZzMyMTMsaW50IGFyZzMy
MTQsaW50IGFyZzMyMTUsaW50IGFyZzMyMTYsaW50IGFyZzMyMTcsaW50IGFyZzMyMTgsaW50IGFy
ZzMyMTksaW50IGFyZzMyMjAsaW50IGFyZzMyMjEsaW50IGFyZzMyMjIsaW50IGFyZzMyMjMsaW50
IGFyZzMyMjQsaW50IGFyZzMyMjUsaW50IGFyZzMyMjYsaW50IGFyZzMyMjcsaW50IGFyZzMyMjgs
aW50IGFyZzMyMjksaW50IGFyZzMyMzAsaW50IGFyZzMyMzEsaW50IGFyZzMyMzIsaW50IGFyZzMy
MzMsaW50IGFyZzMyMzQsaW50IGFyZzMyMzUsaW50IGFyZzMyMzYsaW50IGFyZzMyMzcsaW50IGFy
ZzMyMzgsaW50IGFyZzMyMzksaW50IGFyZzMyNDAsaW50IGFyZzMyNDEsaW50IGFyZzMyNDIsaW50
IGFyZzMyNDMsaW50IGFyZzMyNDQsaW50IGFyZzMyNDUsaW50IGFyZzMyNDYsaW50IGFyZzMyNDcs
aW50IGFyZzMyNDgsaW50IGFyZzMyNDksaW50IGFyZzMyNTAsaW50IGFyZzMyNTEsaW50IGFyZzMy
NTIsaW50IGFyZzMyNTMsaW50IGFyZzMyNTQsaW50IGFyZzMyNTUsaW50IGFyZzMyNTYsaW50IGFy
ZzMyNTcsaW50IGFyZzMyNTgsaW50IGFyZzMyNTksaW50IGFyZzMyNjAsaW50IGFyZzMyNjEsaW50
IGFyZzMyNjIsaW50IGFyZzMyNjMsaW50IGFyZzMyNjQsaW50IGFyZzMyNjUsaW50IGFyZzMyNjYs
aW50IGFyZzMyNjcsaW50IGFyZzMyNjgsaW50IGFyZzMyNjksaW50IGFyZzMyNzAsaW50IGFyZzMy
NzEsaW50IGFyZzMyNzIsaW50IGFyZzMyNzMsaW50IGFyZzMyNzQsaW50IGFyZzMyNzUsaW50IGFy
ZzMyNzYsaW50IGFyZzMyNzcsaW50IGFyZzMyNzgsaW50IGFyZzMyNzksaW50IGFyZzMyODAsaW50
IGFyZzMyODEsaW50IGFyZzMyODIsaW50IGFyZzMyODMsaW50IGFyZzMyODQsaW50IGFyZzMyODUs
aW50IGFyZzMyODYsaW50IGFyZzMyODcsaW50IGFyZzMyODgsaW50IGFyZzMyODksaW50IGFyZzMy
OTAsaW50IGFyZzMyOTEsaW50IGFyZzMyOTIsaW50IGFyZzMyOTMsaW50IGFyZzMyOTQsaW50IGFy
ZzMyOTUsaW50IGFyZzMyOTYsaW50IGFyZzMyOTcsaW50IGFyZzMyOTgsaW50IGFyZzMyOTksaW50
IGFyZzMzMDAsaW50IGFyZzMzMDEsaW50IGFyZzMzMDIsaW50IGFyZzMzMDMsaW50IGFyZzMzMDQs
aW50IGFyZzMzMDUsaW50IGFyZzMzMDYsaW50IGFyZzMzMDcsaW50IGFyZzMzMDgsaW50IGFyZzMz
MDksaW50IGFyZzMzMTAsaW50IGFyZzMzMTEsaW50IGFyZzMzMTIsaW50IGFyZzMzMTMsaW50IGFy
ZzMzMTQsaW50IGFyZzMzMTUsaW50IGFyZzMzMTYsaW50IGFyZzMzMTcsaW50IGFyZzMzMTgsaW50
IGFyZzMzMTksaW50IGFyZzMzMjAsaW50IGFyZzMzMjEsaW50IGFyZzMzMjIsaW50IGFyZzMzMjMs
aW50IGFyZzMzMjQsaW50IGFyZzMzMjUsaW50IGFyZzMzMjYsaW50IGFyZzMzMjcsaW50IGFyZzMz
MjgsaW50IGFyZzMzMjksaW50IGFyZzMzMzAsaW50IGFyZzMzMzEsaW50IGFyZzMzMzIsaW50IGFy
ZzMzMzMsaW50IGFyZzMzMzQsaW50IGFyZzMzMzUsaW50IGFyZzMzMzYsaW50IGFyZzMzMzcsaW50
IGFyZzMzMzgsaW50IGFyZzMzMzksaW50IGFyZzMzNDAsaW50IGFyZzMzNDEsaW50IGFyZzMzNDIs
aW50IGFyZzMzNDMsaW50IGFyZzMzNDQsaW50IGFyZzMzNDUsaW50IGFyZzMzNDYsaW50IGFyZzMz
NDcsaW50IGFyZzMzNDgsaW50IGFyZzMzNDksaW50IGFyZzMzNTAsaW50IGFyZzMzNTEsaW50IGFy
ZzMzNTIsaW50IGFyZzMzNTMsaW50IGFyZzMzNTQsaW50IGFyZzMzNTUsaW50IGFyZzMzNTYsaW50
IGFyZzMzNTcsaW50IGFyZzMzNTgsaW50IGFyZzMzNTksaW50IGFyZzMzNjAsaW50IGFyZzMzNjEs
aW50IGFyZzMzNjIsaW50IGFyZzMzNjMsaW50IGFyZzMzNjQsaW50IGFyZzMzNjUsaW50IGFyZzMz
NjYsaW50IGFyZzMzNjcsaW50IGFyZzMzNjgsaW50IGFyZzMzNjksaW50IGFyZzMzNzAsaW50IGFy
ZzMzNzEsaW50IGFyZzMzNzIsaW50IGFyZzMzNzMsaW50IGFyZzMzNzQsaW50IGFyZzMzNzUsaW50
IGFyZzMzNzYsaW50IGFyZzMzNzcsaW50IGFyZzMzNzgsaW50IGFyZzMzNzksaW50IGFyZzMzODAs
aW50IGFyZzMzODEsaW50IGFyZzMzODIsaW50IGFyZzMzODMsaW50IGFyZzMzODQsaW50IGFyZzMz
ODUsaW50IGFyZzMzODYsaW50IGFyZzMzODcsaW50IGFyZzMzODgsaW50IGFyZzMzODksaW50IGFy
ZzMzOTAsaW50IGFyZzMzOTEsaW50IGFyZzMzOTIsaW50IGFyZzMzOTMsaW50IGFyZzMzOTQsaW50
IGFyZzMzOTUsaW50IGFyZzMzOTYsaW50IGFyZzMzOTcsaW50IGFyZzMzOTgsaW50IGFyZzMzOTks
aW50IGFyZzM0MDAsaW50IGFyZzM0MDEsaW50IGFyZzM0MDIsaW50IGFyZzM0MDMsaW50IGFyZzM0
MDQsaW50IGFyZzM0MDUsaW50IGFyZzM0MDYsaW50IGFyZzM0MDcsaW50IGFyZzM0MDgsaW50IGFy
ZzM0MDksaW50IGFyZzM0MTAsaW50IGFyZzM0MTEsaW50IGFyZzM0MTIsaW50IGFyZzM0MTMsaW50
IGFyZzM0MTQsaW50IGFyZzM0MTUsaW50IGFyZzM0MTYsaW50IGFyZzM0MTcsaW50IGFyZzM0MTgs
aW50IGFyZzM0MTksaW50IGFyZzM0MjAsaW50IGFyZzM0MjEsaW50IGFyZzM0MjIsaW50IGFyZzM0
MjMsaW50IGFyZzM0MjQsaW50IGFyZzM0MjUsaW50IGFyZzM0MjYsaW50IGFyZzM0MjcsaW50IGFy
ZzM0MjgsaW50IGFyZzM0MjksaW50IGFyZzM0MzAsaW50IGFyZzM0MzEsaW50IGFyZzM0MzIsaW50
IGFyZzM0MzMsaW50IGFyZzM0MzQsaW50IGFyZzM0MzUsaW50IGFyZzM0MzYsaW50IGFyZzM0Mzcs
aW50IGFyZzM0MzgsaW50IGFyZzM0MzksaW50IGFyZzM0NDAsaW50IGFyZzM0NDEsaW50IGFyZzM0
NDIsaW50IGFyZzM0NDMsaW50IGFyZzM0NDQsaW50IGFyZzM0NDUsaW50IGFyZzM0NDYsaW50IGFy
ZzM0NDcsaW50IGFyZzM0NDgsaW50IGFyZzM0NDksaW50IGFyZzM0NTAsaW50IGFyZzM0NTEsaW50
IGFyZzM0NTIsaW50IGFyZzM0NTMsaW50IGFyZzM0NTQsaW50IGFyZzM0NTUsaW50IGFyZzM0NTYs
aW50IGFyZzM0NTcsaW50IGFyZzM0NTgsaW50IGFyZzM0NTksaW50IGFyZzM0NjAsaW50IGFyZzM0
NjEsaW50IGFyZzM0NjIsaW50IGFyZzM0NjMsaW50IGFyZzM0NjQsaW50IGFyZzM0NjUsaW50IGFy
ZzM0NjYsaW50IGFyZzM0NjcsaW50IGFyZzM0NjgsaW50IGFyZzM0NjksaW50IGFyZzM0NzAsaW50
IGFyZzM0NzEsaW50IGFyZzM0NzIsaW50IGFyZzM0NzMsaW50IGFyZzM0NzQsaW50IGFyZzM0NzUs
aW50IGFyZzM0NzYsaW50IGFyZzM0NzcsaW50IGFyZzM0NzgsaW50IGFyZzM0NzksaW50IGFyZzM0
ODAsaW50IGFyZzM0ODEsaW50IGFyZzM0ODIsaW50IGFyZzM0ODMsaW50IGFyZzM0ODQsaW50IGFy
ZzM0ODUsaW50IGFyZzM0ODYsaW50IGFyZzM0ODcsaW50IGFyZzM0ODgsaW50IGFyZzM0ODksaW50
IGFyZzM0OTAsaW50IGFyZzM0OTEsaW50IGFyZzM0OTIsaW50IGFyZzM0OTMsaW50IGFyZzM0OTQs
aW50IGFyZzM0OTUsaW50IGFyZzM0OTYsaW50IGFyZzM0OTcsaW50IGFyZzM0OTgsaW50IGFyZzM0
OTksaW50IGFyZzM1MDAsaW50IGFyZzM1MDEsaW50IGFyZzM1MDIsaW50IGFyZzM1MDMsaW50IGFy
ZzM1MDQsaW50IGFyZzM1MDUsaW50IGFyZzM1MDYsaW50IGFyZzM1MDcsaW50IGFyZzM1MDgsaW50
IGFyZzM1MDksaW50IGFyZzM1MTAsaW50IGFyZzM1MTEsaW50IGFyZzM1MTIsaW50IGFyZzM1MTMs
aW50IGFyZzM1MTQsaW50IGFyZzM1MTUsaW50IGFyZzM1MTYsaW50IGFyZzM1MTcsaW50IGFyZzM1
MTgsaW50IGFyZzM1MTksaW50IGFyZzM1MjAsaW50IGFyZzM1MjEsaW50IGFyZzM1MjIsaW50IGFy
ZzM1MjMsaW50IGFyZzM1MjQsaW50IGFyZzM1MjUsaW50IGFyZzM1MjYsaW50IGFyZzM1MjcsaW50
IGFyZzM1MjgsaW50IGFyZzM1MjksaW50IGFyZzM1MzAsaW50IGFyZzM1MzEsaW50IGFyZzM1MzIs
aW50IGFyZzM1MzMsaW50IGFyZzM1MzQsaW50IGFyZzM1MzUsaW50IGFyZzM1MzYsaW50IGFyZzM1
MzcsaW50IGFyZzM1MzgsaW50IGFyZzM1MzksaW50IGFyZzM1NDAsaW50IGFyZzM1NDEsaW50IGFy
ZzM1NDIsaW50IGFyZzM1NDMsaW50IGFyZzM1NDQsaW50IGFyZzM1NDUsaW50IGFyZzM1NDYsaW50
IGFyZzM1NDcsaW50IGFyZzM1NDgsaW50IGFyZzM1NDksaW50IGFyZzM1NTAsaW50IGFyZzM1NTEs
aW50IGFyZzM1NTIsaW50IGFyZzM1NTMsaW50IGFyZzM1NTQsaW50IGFyZzM1NTUsaW50IGFyZzM1
NTYsaW50IGFyZzM1NTcsaW50IGFyZzM1NTgsaW50IGFyZzM1NTksaW50IGFyZzM1NjAsaW50IGFy
ZzM1NjEsaW50IGFyZzM1NjIsaW50IGFyZzM1NjMsaW50IGFyZzM1NjQsaW50IGFyZzM1NjUsaW50
IGFyZzM1NjYsaW50IGFyZzM1NjcsaW50IGFyZzM1NjgsaW50IGFyZzM1NjksaW50IGFyZzM1NzAs
aW50IGFyZzM1NzEsaW50IGFyZzM1NzIsaW50IGFyZzM1NzMsaW50IGFyZzM1NzQsaW50IGFyZzM1
NzUsaW50IGFyZzM1NzYsaW50IGFyZzM1NzcsaW50IGFyZzM1NzgsaW50IGFyZzM1NzksaW50IGFy
ZzM1ODAsaW50IGFyZzM1ODEsaW50IGFyZzM1ODIsaW50IGFyZzM1ODMsaW50IGFyZzM1ODQsaW50
IGFyZzM1ODUsaW50IGFyZzM1ODYsaW50IGFyZzM1ODcsaW50IGFyZzM1ODgsaW50IGFyZzM1ODks
aW50IGFyZzM1OTAsaW50IGFyZzM1OTEsaW50IGFyZzM1OTIsaW50IGFyZzM1OTMsaW50IGFyZzM1
OTQsaW50IGFyZzM1OTUsaW50IGFyZzM1OTYsaW50IGFyZzM1OTcsaW50IGFyZzM1OTgsaW50IGFy
ZzM1OTksaW50IGFyZzM2MDAsaW50IGFyZzM2MDEsaW50IGFyZzM2MDIsaW50IGFyZzM2MDMsaW50
IGFyZzM2MDQsaW50IGFyZzM2MDUsaW50IGFyZzM2MDYsaW50IGFyZzM2MDcsaW50IGFyZzM2MDgs
aW50IGFyZzM2MDksaW50IGFyZzM2MTAsaW50IGFyZzM2MTEsaW50IGFyZzM2MTIsaW50IGFyZzM2
MTMsaW50IGFyZzM2MTQsaW50IGFyZzM2MTUsaW50IGFyZzM2MTYsaW50IGFyZzM2MTcsaW50IGFy
ZzM2MTgsaW50IGFyZzM2MTksaW50IGFyZzM2MjAsaW50IGFyZzM2MjEsaW50IGFyZzM2MjIsaW50
IGFyZzM2MjMsaW50IGFyZzM2MjQsaW50IGFyZzM2MjUsaW50IGFyZzM2MjYsaW50IGFyZzM2Mjcs
aW50IGFyZzM2MjgsaW50IGFyZzM2MjksaW50IGFyZzM2MzAsaW50IGFyZzM2MzEsaW50IGFyZzM2
MzIsaW50IGFyZzM2MzMsaW50IGFyZzM2MzQsaW50IGFyZzM2MzUsaW50IGFyZzM2MzYsaW50IGFy
ZzM2MzcsaW50IGFyZzM2MzgsaW50IGFyZzM2MzksaW50IGFyZzM2NDAsaW50IGFyZzM2NDEsaW50
IGFyZzM2NDIsaW50IGFyZzM2NDMsaW50IGFyZzM2NDQsaW50IGFyZzM2NDUsaW50IGFyZzM2NDYs
aW50IGFyZzM2NDcsaW50IGFyZzM2NDgsaW50IGFyZzM2NDksaW50IGFyZzM2NTAsaW50IGFyZzM2
NTEsaW50IGFyZzM2NTIsaW50IGFyZzM2NTMsaW50IGFyZzM2NTQsaW50IGFyZzM2NTUsaW50IGFy
ZzM2NTYsaW50IGFyZzM2NTcsaW50IGFyZzM2NTgsaW50IGFyZzM2NTksaW50IGFyZzM2NjAsaW50
IGFyZzM2NjEsaW50IGFyZzM2NjIsaW50IGFyZzM2NjMsaW50IGFyZzM2NjQsaW50IGFyZzM2NjUs
aW50IGFyZzM2NjYsaW50IGFyZzM2NjcsaW50IGFyZzM2NjgsaW50IGFyZzM2NjksaW50IGFyZzM2
NzAsaW50IGFyZzM2NzEsaW50IGFyZzM2NzIsaW50IGFyZzM2NzMsaW50IGFyZzM2NzQsaW50IGFy
ZzM2NzUsaW50IGFyZzM2NzYsaW50IGFyZzM2NzcsaW50IGFyZzM2NzgsaW50IGFyZzM2NzksaW50
IGFyZzM2ODAsaW50IGFyZzM2ODEsaW50IGFyZzM2ODIsaW50IGFyZzM2ODMsaW50IGFyZzM2ODQs
aW50IGFyZzM2ODUsaW50IGFyZzM2ODYsaW50IGFyZzM2ODcsaW50IGFyZzM2ODgsaW50IGFyZzM2
ODksaW50IGFyZzM2OTAsaW50IGFyZzM2OTEsaW50IGFyZzM2OTIsaW50IGFyZzM2OTMsaW50IGFy
ZzM2OTQsaW50IGFyZzM2OTUsaW50IGFyZzM2OTYsaW50IGFyZzM2OTcsaW50IGFyZzM2OTgsaW50
IGFyZzM2OTksaW50IGFyZzM3MDAsaW50IGFyZzM3MDEsaW50IGFyZzM3MDIsaW50IGFyZzM3MDMs
aW50IGFyZzM3MDQsaW50IGFyZzM3MDUsaW50IGFyZzM3MDYsaW50IGFyZzM3MDcsaW50IGFyZzM3
MDgsaW50IGFyZzM3MDksaW50IGFyZzM3MTAsaW50IGFyZzM3MTEsaW50IGFyZzM3MTIsaW50IGFy
ZzM3MTMsaW50IGFyZzM3MTQsaW50IGFyZzM3MTUsaW50IGFyZzM3MTYsaW50IGFyZzM3MTcsaW50
IGFyZzM3MTgsaW50IGFyZzM3MTksaW50IGFyZzM3MjAsaW50IGFyZzM3MjEsaW50IGFyZzM3MjIs
aW50IGFyZzM3MjMsaW50IGFyZzM3MjQsaW50IGFyZzM3MjUsaW50IGFyZzM3MjYsaW50IGFyZzM3
MjcsaW50IGFyZzM3MjgsaW50IGFyZzM3MjksaW50IGFyZzM3MzAsaW50IGFyZzM3MzEsaW50IGFy
ZzM3MzIsaW50IGFyZzM3MzMsaW50IGFyZzM3MzQsaW50IGFyZzM3MzUsaW50IGFyZzM3MzYsaW50
IGFyZzM3MzcsaW50IGFyZzM3MzgsaW50IGFyZzM3MzksaW50IGFyZzM3NDAsaW50IGFyZzM3NDEs
aW50IGFyZzM3NDIsaW50IGFyZzM3NDMsaW50IGFyZzM3NDQsaW50IGFyZzM3NDUsaW50IGFyZzM3
NDYsaW50IGFyZzM3NDcsaW50IGFyZzM3NDgsaW50IGFyZzM3NDksaW50IGFyZzM3NTAsaW50IGFy
ZzM3NTEsaW50IGFyZzM3NTIsaW50IGFyZzM3NTMsaW50IGFyZzM3NTQsaW50IGFyZzM3NTUsaW50
IGFyZzM3NTYsaW50IGFyZzM3NTcsaW50IGFyZzM3NTgsaW50IGFyZzM3NTksaW50IGFyZzM3NjAs
aW50IGFyZzM3NjEsaW50IGFyZzM3NjIsaW50IGFyZzM3NjMsaW50IGFyZzM3NjQsaW50IGFyZzM3
NjUsaW50IGFyZzM3NjYsaW50IGFyZzM3NjcsaW50IGFyZzM3NjgsaW50IGFyZzM3NjksaW50IGFy
ZzM3NzAsaW50IGFyZzM3NzEsaW50IGFyZzM3NzIsaW50IGFyZzM3NzMsaW50IGFyZzM3NzQsaW50
IGFyZzM3NzUsaW50IGFyZzM3NzYsaW50IGFyZzM3NzcsaW50IGFyZzM3NzgsaW50IGFyZzM3Nzks
aW50IGFyZzM3ODAsaW50IGFyZzM3ODEsaW50IGFyZzM3ODIsaW50IGFyZzM3ODMsaW50IGFyZzM3
ODQsaW50IGFyZzM3ODUsaW50IGFyZzM3ODYsaW50IGFyZzM3ODcsaW50IGFyZzM3ODgsaW50IGFy
ZzM3ODksaW50IGFyZzM3OTAsaW50IGFyZzM3OTEsaW50IGFyZzM3OTIsaW50IGFyZzM3OTMsaW50
IGFyZzM3OTQsaW50IGFyZzM3OTUsaW50IGFyZzM3OTYsaW50IGFyZzM3OTcsaW50IGFyZzM3OTgs
aW50IGFyZzM3OTksaW50IGFyZzM4MDAsaW50IGFyZzM4MDEsaW50IGFyZzM4MDIsaW50IGFyZzM4
MDMsaW50IGFyZzM4MDQsaW50IGFyZzM4MDUsaW50IGFyZzM4MDYsaW50IGFyZzM4MDcsaW50IGFy
ZzM4MDgsaW50IGFyZzM4MDksaW50IGFyZzM4MTAsaW50IGFyZzM4MTEsaW50IGFyZzM4MTIsaW50
IGFyZzM4MTMsaW50IGFyZzM4MTQsaW50IGFyZzM4MTUsaW50IGFyZzM4MTYsaW50IGFyZzM4MTcs
aW50IGFyZzM4MTgsaW50IGFyZzM4MTksaW50IGFyZzM4MjAsaW50IGFyZzM4MjEsaW50IGFyZzM4
MjIsaW50IGFyZzM4MjMsaW50IGFyZzM4MjQsaW50IGFyZzM4MjUsaW50IGFyZzM4MjYsaW50IGFy
ZzM4MjcsaW50IGFyZzM4MjgsaW50IGFyZzM4MjksaW50IGFyZzM4MzAsaW50IGFyZzM4MzEsaW50
IGFyZzM4MzIsaW50IGFyZzM4MzMsaW50IGFyZzM4MzQsaW50IGFyZzM4MzUsaW50IGFyZzM4MzYs
aW50IGFyZzM4MzcsaW50IGFyZzM4MzgsaW50IGFyZzM4MzksaW50IGFyZzM4NDAsaW50IGFyZzM4
NDEsaW50IGFyZzM4NDIsaW50IGFyZzM4NDMsaW50IGFyZzM4NDQsaW50IGFyZzM4NDUsaW50IGFy
ZzM4NDYsaW50IGFyZzM4NDcsaW50IGFyZzM4NDgsaW50IGFyZzM4NDksaW50IGFyZzM4NTAsaW50
IGFyZzM4NTEsaW50IGFyZzM4NTIsaW50IGFyZzM4NTMsaW50IGFyZzM4NTQsaW50IGFyZzM4NTUs
aW50IGFyZzM4NTYsaW50IGFyZzM4NTcsaW50IGFyZzM4NTgsaW50IGFyZzM4NTksaW50IGFyZzM4
NjAsaW50IGFyZzM4NjEsaW50IGFyZzM4NjIsaW50IGFyZzM4NjMsaW50IGFyZzM4NjQsaW50IGFy
ZzM4NjUsaW50IGFyZzM4NjYsaW50IGFyZzM4NjcsaW50IGFyZzM4NjgsaW50IGFyZzM4NjksaW50
IGFyZzM4NzAsaW50IGFyZzM4NzEsaW50IGFyZzM4NzIsaW50IGFyZzM4NzMsaW50IGFyZzM4NzQs
aW50IGFyZzM4NzUsaW50IGFyZzM4NzYsaW50IGFyZzM4NzcsaW50IGFyZzM4NzgsaW50IGFyZzM4
NzksaW50IGFyZzM4ODAsaW50IGFyZzM4ODEsaW50IGFyZzM4ODIsaW50IGFyZzM4ODMsaW50IGFy
ZzM4ODQsaW50IGFyZzM4ODUsaW50IGFyZzM4ODYsaW50IGFyZzM4ODcsaW50IGFyZzM4ODgsaW50
IGFyZzM4ODksaW50IGFyZzM4OTAsaW50IGFyZzM4OTEsaW50IGFyZzM4OTIsaW50IGFyZzM4OTMs
aW50IGFyZzM4OTQsaW50IGFyZzM4OTUsaW50IGFyZzM4OTYsaW50IGFyZzM4OTcsaW50IGFyZzM4
OTgsaW50IGFyZzM4OTksaW50IGFyZzM5MDAsaW50IGFyZzM5MDEsaW50IGFyZzM5MDIsaW50IGFy
ZzM5MDMsaW50IGFyZzM5MDQsaW50IGFyZzM5MDUsaW50IGFyZzM5MDYsaW50IGFyZzM5MDcsaW50
IGFyZzM5MDgsaW50IGFyZzM5MDksaW50IGFyZzM5MTAsaW50IGFyZzM5MTEsaW50IGFyZzM5MTIs
aW50IGFyZzM5MTMsaW50IGFyZzM5MTQsaW50IGFyZzM5MTUsaW50IGFyZzM5MTYsaW50IGFyZzM5
MTcsaW50IGFyZzM5MTgsaW50IGFyZzM5MTksaW50IGFyZzM5MjAsaW50IGFyZzM5MjEsaW50IGFy
ZzM5MjIsaW50IGFyZzM5MjMsaW50IGFyZzM5MjQsaW50IGFyZzM5MjUsaW50IGFyZzM5MjYsaW50
IGFyZzM5MjcsaW50IGFyZzM5MjgsaW50IGFyZzM5MjksaW50IGFyZzM5MzAsaW50IGFyZzM5MzEs
aW50IGFyZzM5MzIsaW50IGFyZzM5MzMsaW50IGFyZzM5MzQsaW50IGFyZzM5MzUsaW50IGFyZzM5
MzYsaW50IGFyZzM5MzcsaW50IGFyZzM5MzgsaW50IGFyZzM5MzksaW50IGFyZzM5NDAsaW50IGFy
ZzM5NDEsaW50IGFyZzM5NDIsaW50IGFyZzM5NDMsaW50IGFyZzM5NDQsaW50IGFyZzM5NDUsaW50
IGFyZzM5NDYsaW50IGFyZzM5NDcsaW50IGFyZzM5NDgsaW50IGFyZzM5NDksaW50IGFyZzM5NTAs
aW50IGFyZzM5NTEsaW50IGFyZzM5NTIsaW50IGFyZzM5NTMsaW50IGFyZzM5NTQsaW50IGFyZzM5
NTUsaW50IGFyZzM5NTYsaW50IGFyZzM5NTcsaW50IGFyZzM5NTgsaW50IGFyZzM5NTksaW50IGFy
ZzM5NjAsaW50IGFyZzM5NjEsaW50IGFyZzM5NjIsaW50IGFyZzM5NjMsaW50IGFyZzM5NjQsaW50
IGFyZzM5NjUsaW50IGFyZzM5NjYsaW50IGFyZzM5NjcsaW50IGFyZzM5NjgsaW50IGFyZzM5Njks
aW50IGFyZzM5NzAsaW50IGFyZzM5NzEsaW50IGFyZzM5NzIsaW50IGFyZzM5NzMsaW50IGFyZzM5
NzQsaW50IGFyZzM5NzUsaW50IGFyZzM5NzYsaW50IGFyZzM5NzcsaW50IGFyZzM5NzgsaW50IGFy
ZzM5NzksaW50IGFyZzM5ODAsaW50IGFyZzM5ODEsaW50IGFyZzM5ODIsaW50IGFyZzM5ODMsaW50
IGFyZzM5ODQsaW50IGFyZzM5ODUsaW50IGFyZzM5ODYsaW50IGFyZzM5ODcsaW50IGFyZzM5ODgs
aW50IGFyZzM5ODksaW50IGFyZzM5OTAsaW50IGFyZzM5OTEsaW50IGFyZzM5OTIsaW50IGFyZzM5
OTMsaW50IGFyZzM5OTQsaW50IGFyZzM5OTUsaW50IGFyZzM5OTYsaW50IGFyZzM5OTcsaW50IGFy
ZzM5OTgsaW50IGFyZzM5OTksaW50IGFyZzQwMDAsaW50IGFyZzQwMDEsaW50IGFyZzQwMDIsaW50
IGFyZzQwMDMsaW50IGFyZzQwMDQsaW50IGFyZzQwMDUsaW50IGFyZzQwMDYsaW50IGFyZzQwMDcs
aW50IGFyZzQwMDgsaW50IGFyZzQwMDksaW50IGFyZzQwMTAsaW50IGFyZzQwMTEsaW50IGFyZzQw
MTIsaW50IGFyZzQwMTMsaW50IGFyZzQwMTQsaW50IGFyZzQwMTUsaW50IGFyZzQwMTYsaW50IGFy
ZzQwMTcsaW50IGFyZzQwMTgsaW50IGFyZzQwMTksaW50IGFyZzQwMjAsaW50IGFyZzQwMjEsaW50
IGFyZzQwMjIsaW50IGFyZzQwMjMsaW50IGFyZzQwMjQsaW50IGFyZzQwMjUsaW50IGFyZzQwMjYs
aW50IGFyZzQwMjcsaW50IGFyZzQwMjgsaW50IGFyZzQwMjksaW50IGFyZzQwMzAsaW50IGFyZzQw
MzEsaW50IGFyZzQwMzIsaW50IGFyZzQwMzMsaW50IGFyZzQwMzQsaW50IGFyZzQwMzUsaW50IGFy
ZzQwMzYsaW50IGFyZzQwMzcsaW50IGFyZzQwMzgsaW50IGFyZzQwMzksaW50IGFyZzQwNDAsaW50
IGFyZzQwNDEsaW50IGFyZzQwNDIsaW50IGFyZzQwNDMsaW50IGFyZzQwNDQsaW50IGFyZzQwNDUs
aW50IGFyZzQwNDYsaW50IGFyZzQwNDcsaW50IGFyZzQwNDgsaW50IGFyZzQwNDksaW50IGFyZzQw
NTAsaW50IGFyZzQwNTEsaW50IGFyZzQwNTIsaW50IGFyZzQwNTMsaW50IGFyZzQwNTQsaW50IGFy
ZzQwNTUsaW50IGFyZzQwNTYsaW50IGFyZzQwNTcsaW50IGFyZzQwNTgsaW50IGFyZzQwNTksaW50
IGFyZzQwNjAsaW50IGFyZzQwNjEsaW50IGFyZzQwNjIsaW50IGFyZzQwNjMsaW50IGFyZzQwNjQs
aW50IGFyZzQwNjUsaW50IGFyZzQwNjYsaW50IGFyZzQwNjcsaW50IGFyZzQwNjgsaW50IGFyZzQw
NjksaW50IGFyZzQwNzAsaW50IGFyZzQwNzEsaW50IGFyZzQwNzIsaW50IGFyZzQwNzMsaW50IGFy
ZzQwNzQsaW50IGFyZzQwNzUsaW50IGFyZzQwNzYsaW50IGFyZzQwNzcsaW50IGFyZzQwNzgsaW50
IGFyZzQwNzksaW50IGFyZzQwODAsaW50IGFyZzQwODEsaW50IGFyZzQwODIsaW50IGFyZzQwODMs
aW50IGFyZzQwODQsaW50IGFyZzQwODUsaW50IGFyZzQwODYsaW50IGFyZzQwODcsaW50IGFyZzQw
ODgsaW50IGFyZzQwODksaW50IGFyZzQwOTAsaW50IGFyZzQwOTEsaW50IGFyZzQwOTIsaW50IGFy
ZzQwOTMsaW50IGFyZzQwOTQsaW50IGFyZzQwOTUsaW50IGFyZzQwOTYsaW50IGFyZzQwOTcsaW50
IGFyZzQwOTgsaW50IGFyZzQwOTksaW50IGFyZzQxMDAsaW50IGFyZzQxMDEsaW50IGFyZzQxMDIs
aW50IGFyZzQxMDMsaW50IGFyZzQxMDQsaW50IGFyZzQxMDUsaW50IGFyZzQxMDYsaW50IGFyZzQx
MDcsaW50IGFyZzQxMDgsaW50IGFyZzQxMDksaW50IGFyZzQxMTAsaW50IGFyZzQxMTEsaW50IGFy
ZzQxMTIsaW50IGFyZzQxMTMsaW50IGFyZzQxMTQsaW50IGFyZzQxMTUsaW50IGFyZzQxMTYsaW50
IGFyZzQxMTcsaW50IGFyZzQxMTgsaW50IGFyZzQxMTksaW50IGFyZzQxMjAsaW50IGFyZzQxMjEs
aW50IGFyZzQxMjIsaW50IGFyZzQxMjMsaW50IGFyZzQxMjQsaW50IGFyZzQxMjUsaW50IGFyZzQx
MjYsaW50IGFyZzQxMjcsaW50IGFyZzQxMjgsaW50IGFyZzQxMjksaW50IGFyZzQxMzAsaW50IGFy
ZzQxMzEsaW50IGFyZzQxMzIsaW50IGFyZzQxMzMsaW50IGFyZzQxMzQsaW50IGFyZzQxMzUsaW50
IGFyZzQxMzYsaW50IGFyZzQxMzcsaW50IGFyZzQxMzgsaW50IGFyZzQxMzksaW50IGFyZzQxNDAs
aW50IGFyZzQxNDEsaW50IGFyZzQxNDIsaW50IGFyZzQxNDMsaW50IGFyZzQxNDQsaW50IGFyZzQx
NDUsaW50IGFyZzQxNDYsaW50IGFyZzQxNDcsaW50IGFyZzQxNDgsaW50IGFyZzQxNDksaW50IGFy
ZzQxNTAsaW50IGFyZzQxNTEsaW50IGFyZzQxNTIsaW50IGFyZzQxNTMsaW50IGFyZzQxNTQsaW50
IGFyZzQxNTUsaW50IGFyZzQxNTYsaW50IGFyZzQxNTcsaW50IGFyZzQxNTgsaW50IGFyZzQxNTks
aW50IGFyZzQxNjAsaW50IGFyZzQxNjEsaW50IGFyZzQxNjIsaW50IGFyZzQxNjMsaW50IGFyZzQx
NjQsaW50IGFyZzQxNjUsaW50IGFyZzQxNjYsaW50IGFyZzQxNjcsaW50IGFyZzQxNjgsaW50IGFy
ZzQxNjksaW50IGFyZzQxNzAsaW50IGFyZzQxNzEsaW50IGFyZzQxNzIsaW50IGFyZzQxNzMsaW50
IGFyZzQxNzQsaW50IGFyZzQxNzUsaW50IGFyZzQxNzYsaW50IGFyZzQxNzcsaW50IGFyZzQxNzgs
aW50IGFyZzQxNzksaW50IGFyZzQxODAsaW50IGFyZzQxODEsaW50IGFyZzQxODIsaW50IGFyZzQx
ODMsaW50IGFyZzQxODQsaW50IGFyZzQxODUsaW50IGFyZzQxODYsaW50IGFyZzQxODcsaW50IGFy
ZzQxODgsaW50IGFyZzQxODksaW50IGFyZzQxOTAsaW50IGFyZzQxOTEsaW50IGFyZzQxOTIsaW50
IGFyZzQxOTMsaW50IGFyZzQxOTQsaW50IGFyZzQxOTUsaW50IGFyZzQxOTYsaW50IGFyZzQxOTcs
aW50IGFyZzQxOTgsaW50IGFyZzQxOTksaW50IGFyZzQyMDAsaW50IGFyZzQyMDEsaW50IGFyZzQy
MDIsaW50IGFyZzQyMDMsaW50IGFyZzQyMDQsaW50IGFyZzQyMDUsaW50IGFyZzQyMDYsaW50IGFy
ZzQyMDcsaW50IGFyZzQyMDgsaW50IGFyZzQyMDksaW50IGFyZzQyMTAsaW50IGFyZzQyMTEsaW50
IGFyZzQyMTIsaW50IGFyZzQyMTMsaW50IGFyZzQyMTQsaW50IGFyZzQyMTUsaW50IGFyZzQyMTYs
aW50IGFyZzQyMTcsaW50IGFyZzQyMTgsaW50IGFyZzQyMTksaW50IGFyZzQyMjAsaW50IGFyZzQy
MjEsaW50IGFyZzQyMjIsaW50IGFyZzQyMjMsaW50IGFyZzQyMjQsaW50IGFyZzQyMjUsaW50IGFy
ZzQyMjYsaW50IGFyZzQyMjcsaW50IGFyZzQyMjgsaW50IGFyZzQyMjksaW50IGFyZzQyMzAsaW50
IGFyZzQyMzEsaW50IGFyZzQyMzIsaW50IGFyZzQyMzMsaW50IGFyZzQyMzQsaW50IGFyZzQyMzUs
aW50IGFyZzQyMzYsaW50IGFyZzQyMzcsaW50IGFyZzQyMzgsaW50IGFyZzQyMzksaW50IGFyZzQy
NDAsaW50IGFyZzQyNDEsaW50IGFyZzQyNDIsaW50IGFyZzQyNDMsaW50IGFyZzQyNDQsaW50IGFy
ZzQyNDUsaW50IGFyZzQyNDYsaW50IGFyZzQyNDcsaW50IGFyZzQyNDgsaW50IGFyZzQyNDksaW50
IGFyZzQyNTAsaW50IGFyZzQyNTEsaW50IGFyZzQyNTIsaW50IGFyZzQyNTMsaW50IGFyZzQyNTQs
aW50IGFyZzQyNTUsaW50IGFyZzQyNTYsaW50IGFyZzQyNTcsaW50IGFyZzQyNTgsaW50IGFyZzQy
NTksaW50IGFyZzQyNjAsaW50IGFyZzQyNjEsaW50IGFyZzQyNjIsaW50IGFyZzQyNjMsaW50IGFy
ZzQyNjQsaW50IGFyZzQyNjUsaW50IGFyZzQyNjYsaW50IGFyZzQyNjcsaW50IGFyZzQyNjgsaW50
IGFyZzQyNjksaW50IGFyZzQyNzAsaW50IGFyZzQyNzEsaW50IGFyZzQyNzIsaW50IGFyZzQyNzMs
aW50IGFyZzQyNzQsaW50IGFyZzQyNzUsaW50IGFyZzQyNzYsaW50IGFyZzQyNzcsaW50IGFyZzQy
NzgsaW50IGFyZzQyNzksaW50IGFyZzQyODAsaW50IGFyZzQyODEsaW50IGFyZzQyODIsaW50IGFy
ZzQyODMsaW50IGFyZzQyODQsaW50IGFyZzQyODUsaW50IGFyZzQyODYsaW50IGFyZzQyODcsaW50
IGFyZzQyODgsaW50IGFyZzQyODksaW50IGFyZzQyOTAsaW50IGFyZzQyOTEsaW50IGFyZzQyOTIs
aW50IGFyZzQyOTMsaW50IGFyZzQyOTQsaW50IGFyZzQyOTUsaW50IGFyZzQyOTYsaW50IGFyZzQy
OTcsaW50IGFyZzQyOTgsaW50IGFyZzQyOTksaW50IGFyZzQzMDAsaW50IGFyZzQzMDEsaW50IGFy
ZzQzMDIsaW50IGFyZzQzMDMsaW50IGFyZzQzMDQsaW50IGFyZzQzMDUsaW50IGFyZzQzMDYsaW50
IGFyZzQzMDcsaW50IGFyZzQzMDgsaW50IGFyZzQzMDksaW50IGFyZzQzMTAsaW50IGFyZzQzMTEs
aW50IGFyZzQzMTIsaW50IGFyZzQzMTMsaW50IGFyZzQzMTQsaW50IGFyZzQzMTUsaW50IGFyZzQz
MTYsaW50IGFyZzQzMTcsaW50IGFyZzQzMTgsaW50IGFyZzQzMTksaW50IGFyZzQzMjAsaW50IGFy
ZzQzMjEsaW50IGFyZzQzMjIsaW50IGFyZzQzMjMsaW50IGFyZzQzMjQsaW50IGFyZzQzMjUsaW50
IGFyZzQzMjYsaW50IGFyZzQzMjcsaW50IGFyZzQzMjgsaW50IGFyZzQzMjksaW50IGFyZzQzMzAs
aW50IGFyZzQzMzEsaW50IGFyZzQzMzIsaW50IGFyZzQzMzMsaW50IGFyZzQzMzQsaW50IGFyZzQz
MzUsaW50IGFyZzQzMzYsaW50IGFyZzQzMzcsaW50IGFyZzQzMzgsaW50IGFyZzQzMzksaW50IGFy
ZzQzNDAsaW50IGFyZzQzNDEsaW50IGFyZzQzNDIsaW50IGFyZzQzNDMsaW50IGFyZzQzNDQsaW50
IGFyZzQzNDUsaW50IGFyZzQzNDYsaW50IGFyZzQzNDcsaW50IGFyZzQzNDgsaW50IGFyZzQzNDks
aW50IGFyZzQzNTAsaW50IGFyZzQzNTEsaW50IGFyZzQzNTIsaW50IGFyZzQzNTMsaW50IGFyZzQz
NTQsaW50IGFyZzQzNTUsaW50IGFyZzQzNTYsaW50IGFyZzQzNTcsaW50IGFyZzQzNTgsaW50IGFy
ZzQzNTksaW50IGFyZzQzNjAsaW50IGFyZzQzNjEsaW50IGFyZzQzNjIsaW50IGFyZzQzNjMsaW50
IGFyZzQzNjQsaW50IGFyZzQzNjUsaW50IGFyZzQzNjYsaW50IGFyZzQzNjcsaW50IGFyZzQzNjgs
aW50IGFyZzQzNjksaW50IGFyZzQzNzAsaW50IGFyZzQzNzEsaW50IGFyZzQzNzIsaW50IGFyZzQz
NzMsaW50IGFyZzQzNzQsaW50IGFyZzQzNzUsaW50IGFyZzQzNzYsaW50IGFyZzQzNzcsaW50IGFy
ZzQzNzgsaW50IGFyZzQzNzksaW50IGFyZzQzODAsaW50IGFyZzQzODEsaW50IGFyZzQzODIsaW50
IGFyZzQzODMsaW50IGFyZzQzODQsaW50IGFyZzQzODUsaW50IGFyZzQzODYsaW50IGFyZzQzODcs
aW50IGFyZzQzODgsaW50IGFyZzQzODksaW50IGFyZzQzOTAsaW50IGFyZzQzOTEsaW50IGFyZzQz
OTIsaW50IGFyZzQzOTMsaW50IGFyZzQzOTQsaW50IGFyZzQzOTUsaW50IGFyZzQzOTYsaW50IGFy
ZzQzOTcsaW50IGFyZzQzOTgsaW50IGFyZzQzOTksaW50IGFyZzQ0MDAsaW50IGFyZzQ0MDEsaW50
IGFyZzQ0MDIsaW50IGFyZzQ0MDMsaW50IGFyZzQ0MDQsaW50IGFyZzQ0MDUsaW50IGFyZzQ0MDYs
aW50IGFyZzQ0MDcsaW50IGFyZzQ0MDgsaW50IGFyZzQ0MDksaW50IGFyZzQ0MTAsaW50IGFyZzQ0
MTEsaW50IGFyZzQ0MTIsaW50IGFyZzQ0MTMsaW50IGFyZzQ0MTQsaW50IGFyZzQ0MTUsaW50IGFy
ZzQ0MTYsaW50IGFyZzQ0MTcsaW50IGFyZzQ0MTgsaW50IGFyZzQ0MTksaW50IGFyZzQ0MjAsaW50
IGFyZzQ0MjEsaW50IGFyZzQ0MjIsaW50IGFyZzQ0MjMsaW50IGFyZzQ0MjQsaW50IGFyZzQ0MjUs
aW50IGFyZzQ0MjYsaW50IGFyZzQ0MjcsaW50IGFyZzQ0MjgsaW50IGFyZzQ0MjksaW50IGFyZzQ0
MzAsaW50IGFyZzQ0MzEsaW50IGFyZzQ0MzIsaW50IGFyZzQ0MzMsaW50IGFyZzQ0MzQsaW50IGFy
ZzQ0MzUsaW50IGFyZzQ0MzYsaW50IGFyZzQ0MzcsaW50IGFyZzQ0MzgsaW50IGFyZzQ0MzksaW50
IGFyZzQ0NDAsaW50IGFyZzQ0NDEsaW50IGFyZzQ0NDIsaW50IGFyZzQ0NDMsaW50IGFyZzQ0NDQs
aW50IGFyZzQ0NDUsaW50IGFyZzQ0NDYsaW50IGFyZzQ0NDcsaW50IGFyZzQ0NDgsaW50IGFyZzQ0
NDksaW50IGFyZzQ0NTAsaW50IGFyZzQ0NTEsaW50IGFyZzQ0NTIsaW50IGFyZzQ0NTMsaW50IGFy
ZzQ0NTQsaW50IGFyZzQ0NTUsaW50IGFyZzQ0NTYsaW50IGFyZzQ0NTcsaW50IGFyZzQ0NTgsaW50
IGFyZzQ0NTksaW50IGFyZzQ0NjAsaW50IGFyZzQ0NjEsaW50IGFyZzQ0NjIsaW50IGFyZzQ0NjMs
aW50IGFyZzQ0NjQsaW50IGFyZzQ0NjUsaW50IGFyZzQ0NjYsaW50IGFyZzQ0NjcsaW50IGFyZzQ0
NjgsaW50IGFyZzQ0NjksaW50IGFyZzQ0NzAsaW50IGFyZzQ0NzEsaW50IGFyZzQ0NzIsaW50IGFy
ZzQ0NzMsaW50IGFyZzQ0NzQsaW50IGFyZzQ0NzUsaW50IGFyZzQ0NzYsaW50IGFyZzQ0NzcsaW50
IGFyZzQ0NzgsaW50IGFyZzQ0NzksaW50IGFyZzQ0ODAsaW50IGFyZzQ0ODEsaW50IGFyZzQ0ODIs
aW50IGFyZzQ0ODMsaW50IGFyZzQ0ODQsaW50IGFyZzQ0ODUsaW50IGFyZzQ0ODYsaW50IGFyZzQ0
ODcsaW50IGFyZzQ0ODgsaW50IGFyZzQ0ODksaW50IGFyZzQ0OTAsaW50IGFyZzQ0OTEsaW50IGFy
ZzQ0OTIsaW50IGFyZzQ0OTMsaW50IGFyZzQ0OTQsaW50IGFyZzQ0OTUsaW50IGFyZzQ0OTYsaW50
IGFyZzQ0OTcsaW50IGFyZzQ0OTgsaW50IGFyZzQ0OTksaW50IGFyZzQ1MDAsaW50IGFyZzQ1MDEs
aW50IGFyZzQ1MDIsaW50IGFyZzQ1MDMsaW50IGFyZzQ1MDQsaW50IGFyZzQ1MDUsaW50IGFyZzQ1
MDYsaW50IGFyZzQ1MDcsaW50IGFyZzQ1MDgsaW50IGFyZzQ1MDksaW50IGFyZzQ1MTAsaW50IGFy
ZzQ1MTEsaW50IGFyZzQ1MTIsaW50IGFyZzQ1MTMsaW50IGFyZzQ1MTQsaW50IGFyZzQ1MTUsaW50
IGFyZzQ1MTYsaW50IGFyZzQ1MTcsaW50IGFyZzQ1MTgsaW50IGFyZzQ1MTksaW50IGFyZzQ1MjAs
aW50IGFyZzQ1MjEsaW50IGFyZzQ1MjIsaW50IGFyZzQ1MjMsaW50IGFyZzQ1MjQsaW50IGFyZzQ1
MjUsaW50IGFyZzQ1MjYsaW50IGFyZzQ1MjcsaW50IGFyZzQ1MjgsaW50IGFyZzQ1MjksaW50IGFy
ZzQ1MzAsaW50IGFyZzQ1MzEsaW50IGFyZzQ1MzIsaW50IGFyZzQ1MzMsaW50IGFyZzQ1MzQsaW50
IGFyZzQ1MzUsaW50IGFyZzQ1MzYsaW50IGFyZzQ1MzcsaW50IGFyZzQ1MzgsaW50IGFyZzQ1Mzks
aW50IGFyZzQ1NDAsaW50IGFyZzQ1NDEsaW50IGFyZzQ1NDIsaW50IGFyZzQ1NDMsaW50IGFyZzQ1
NDQsaW50IGFyZzQ1NDUsaW50IGFyZzQ1NDYsaW50IGFyZzQ1NDcsaW50IGFyZzQ1NDgsaW50IGFy
ZzQ1NDksaW50IGFyZzQ1NTAsaW50IGFyZzQ1NTEsaW50IGFyZzQ1NTIsaW50IGFyZzQ1NTMsaW50
IGFyZzQ1NTQsaW50IGFyZzQ1NTUsaW50IGFyZzQ1NTYsaW50IGFyZzQ1NTcsaW50IGFyZzQ1NTgs
aW50IGFyZzQ1NTksaW50IGFyZzQ1NjAsaW50IGFyZzQ1NjEsaW50IGFyZzQ1NjIsaW50IGFyZzQ1
NjMsaW50IGFyZzQ1NjQsaW50IGFyZzQ1NjUsaW50IGFyZzQ1NjYsaW50IGFyZzQ1NjcsaW50IGFy
ZzQ1NjgsaW50IGFyZzQ1NjksaW50IGFyZzQ1NzAsaW50IGFyZzQ1NzEsaW50IGFyZzQ1NzIsaW50
IGFyZzQ1NzMsaW50IGFyZzQ1NzQsaW50IGFyZzQ1NzUsaW50IGFyZzQ1NzYsaW50IGFyZzQ1Nzcs
aW50IGFyZzQ1NzgsaW50IGFyZzQ1NzksaW50IGFyZzQ1ODAsaW50IGFyZzQ1ODEsaW50IGFyZzQ1
ODIsaW50IGFyZzQ1ODMsaW50IGFyZzQ1ODQsaW50IGFyZzQ1ODUsaW50IGFyZzQ1ODYsaW50IGFy
ZzQ1ODcsaW50IGFyZzQ1ODgsaW50IGFyZzQ1ODksaW50IGFyZzQ1OTAsaW50IGFyZzQ1OTEsaW50
IGFyZzQ1OTIsaW50IGFyZzQ1OTMsaW50IGFyZzQ1OTQsaW50IGFyZzQ1OTUsaW50IGFyZzQ1OTYs
aW50IGFyZzQ1OTcsaW50IGFyZzQ1OTgsaW50IGFyZzQ1OTksaW50IGFyZzQ2MDAsaW50IGFyZzQ2
MDEsaW50IGFyZzQ2MDIsaW50IGFyZzQ2MDMsaW50IGFyZzQ2MDQsaW50IGFyZzQ2MDUsaW50IGFy
ZzQ2MDYsaW50IGFyZzQ2MDcsaW50IGFyZzQ2MDgsaW50IGFyZzQ2MDksaW50IGFyZzQ2MTAsaW50
IGFyZzQ2MTEsaW50IGFyZzQ2MTIsaW50IGFyZzQ2MTMsaW50IGFyZzQ2MTQsaW50IGFyZzQ2MTUs
aW50IGFyZzQ2MTYsaW50IGFyZzQ2MTcsaW50IGFyZzQ2MTgsaW50IGFyZzQ2MTksaW50IGFyZzQ2
MjAsaW50IGFyZzQ2MjEsaW50IGFyZzQ2MjIsaW50IGFyZzQ2MjMsaW50IGFyZzQ2MjQsaW50IGFy
ZzQ2MjUsaW50IGFyZzQ2MjYsaW50IGFyZzQ2MjcsaW50IGFyZzQ2MjgsaW50IGFyZzQ2MjksaW50
IGFyZzQ2MzAsaW50IGFyZzQ2MzEsaW50IGFyZzQ2MzIsaW50IGFyZzQ2MzMsaW50IGFyZzQ2MzQs
aW50IGFyZzQ2MzUsaW50IGFyZzQ2MzYsaW50IGFyZzQ2MzcsaW50IGFyZzQ2MzgsaW50IGFyZzQ2
MzksaW50IGFyZzQ2NDAsaW50IGFyZzQ2NDEsaW50IGFyZzQ2NDIsaW50IGFyZzQ2NDMsaW50IGFy
ZzQ2NDQsaW50IGFyZzQ2NDUsaW50IGFyZzQ2NDYsaW50IGFyZzQ2NDcsaW50IGFyZzQ2NDgsaW50
IGFyZzQ2NDksaW50IGFyZzQ2NTAsaW50IGFyZzQ2NTEsaW50IGFyZzQ2NTIsaW50IGFyZzQ2NTMs
aW50IGFyZzQ2NTQsaW50IGFyZzQ2NTUsaW50IGFyZzQ2NTYsaW50IGFyZzQ2NTcsaW50IGFyZzQ2
NTgsaW50IGFyZzQ2NTksaW50IGFyZzQ2NjAsaW50IGFyZzQ2NjEsaW50IGFyZzQ2NjIsaW50IGFy
ZzQ2NjMsaW50IGFyZzQ2NjQsaW50IGFyZzQ2NjUsaW50IGFyZzQ2NjYsaW50IGFyZzQ2NjcsaW50
IGFyZzQ2NjgsaW50IGFyZzQ2NjksaW50IGFyZzQ2NzAsaW50IGFyZzQ2NzEsaW50IGFyZzQ2NzIs
aW50IGFyZzQ2NzMsaW50IGFyZzQ2NzQsaW50IGFyZzQ2NzUsaW50IGFyZzQ2NzYsaW50IGFyZzQ2
NzcsaW50IGFyZzQ2NzgsaW50IGFyZzQ2NzksaW50IGFyZzQ2ODAsaW50IGFyZzQ2ODEsaW50IGFy
ZzQ2ODIsaW50IGFyZzQ2ODMsaW50IGFyZzQ2ODQsaW50IGFyZzQ2ODUsaW50IGFyZzQ2ODYsaW50
IGFyZzQ2ODcsaW50IGFyZzQ2ODgsaW50IGFyZzQ2ODksaW50IGFyZzQ2OTAsaW50IGFyZzQ2OTEs
aW50IGFyZzQ2OTIsaW50IGFyZzQ2OTMsaW50IGFyZzQ2OTQsaW50IGFyZzQ2OTUsaW50IGFyZzQ2
OTYsaW50IGFyZzQ2OTcsaW50IGFyZzQ2OTgsaW50IGFyZzQ2OTksaW50IGFyZzQ3MDAsaW50IGFy
ZzQ3MDEsaW50IGFyZzQ3MDIsaW50IGFyZzQ3MDMsaW50IGFyZzQ3MDQsaW50IGFyZzQ3MDUsaW50
IGFyZzQ3MDYsaW50IGFyZzQ3MDcsaW50IGFyZzQ3MDgsaW50IGFyZzQ3MDksaW50IGFyZzQ3MTAs
aW50IGFyZzQ3MTEsaW50IGFyZzQ3MTIsaW50IGFyZzQ3MTMsaW50IGFyZzQ3MTQsaW50IGFyZzQ3
MTUsaW50IGFyZzQ3MTYsaW50IGFyZzQ3MTcsaW50IGFyZzQ3MTgsaW50IGFyZzQ3MTksaW50IGFy
ZzQ3MjAsaW50IGFyZzQ3MjEsaW50IGFyZzQ3MjIsaW50IGFyZzQ3MjMsaW50IGFyZzQ3MjQsaW50
IGFyZzQ3MjUsaW50IGFyZzQ3MjYsaW50IGFyZzQ3MjcsaW50IGFyZzQ3MjgsaW50IGFyZzQ3Mjks
aW50IGFyZzQ3MzAsaW50IGFyZzQ3MzEsaW50IGFyZzQ3MzIsaW50IGFyZzQ3MzMsaW50IGFyZzQ3
MzQsaW50IGFyZzQ3MzUsaW50IGFyZzQ3MzYsaW50IGFyZzQ3MzcsaW50IGFyZzQ3MzgsaW50IGFy
ZzQ3MzksaW50IGFyZzQ3NDAsaW50IGFyZzQ3NDEsaW50IGFyZzQ3NDIsaW50IGFyZzQ3NDMsaW50
IGFyZzQ3NDQsaW50IGFyZzQ3NDUsaW50IGFyZzQ3NDYsaW50IGFyZzQ3NDcsaW50IGFyZzQ3NDgs
aW50IGFyZzQ3NDksaW50IGFyZzQ3NTAsaW50IGFyZzQ3NTEsaW50IGFyZzQ3NTIsaW50IGFyZzQ3
NTMsaW50IGFyZzQ3NTQsaW50IGFyZzQ3NTUsaW50IGFyZzQ3NTYsaW50IGFyZzQ3NTcsaW50IGFy
ZzQ3NTgsaW50IGFyZzQ3NTksaW50IGFyZzQ3NjAsaW50IGFyZzQ3NjEsaW50IGFyZzQ3NjIsaW50
IGFyZzQ3NjMsaW50IGFyZzQ3NjQsaW50IGFyZzQ3NjUsaW50IGFyZzQ3NjYsaW50IGFyZzQ3Njcs
aW50IGFyZzQ3NjgsaW50IGFyZzQ3NjksaW50IGFyZzQ3NzAsaW50IGFyZzQ3NzEsaW50IGFyZzQ3
NzIsaW50IGFyZzQ3NzMsaW50IGFyZzQ3NzQsaW50IGFyZzQ3NzUsaW50IGFyZzQ3NzYsaW50IGFy
ZzQ3NzcsaW50IGFyZzQ3NzgsaW50IGFyZzQ3NzksaW50IGFyZzQ3ODAsaW50IGFyZzQ3ODEsaW50
IGFyZzQ3ODIsaW50IGFyZzQ3ODMsaW50IGFyZzQ3ODQsaW50IGFyZzQ3ODUsaW50IGFyZzQ3ODYs
aW50IGFyZzQ3ODcsaW50IGFyZzQ3ODgsaW50IGFyZzQ3ODksaW50IGFyZzQ3OTAsaW50IGFyZzQ3
OTEsaW50IGFyZzQ3OTIsaW50IGFyZzQ3OTMsaW50IGFyZzQ3OTQsaW50IGFyZzQ3OTUsaW50IGFy
ZzQ3OTYsaW50IGFyZzQ3OTcsaW50IGFyZzQ3OTgsaW50IGFyZzQ3OTksaW50IGFyZzQ4MDAsaW50
IGFyZzQ4MDEsaW50IGFyZzQ4MDIsaW50IGFyZzQ4MDMsaW50IGFyZzQ4MDQsaW50IGFyZzQ4MDUs
aW50IGFyZzQ4MDYsaW50IGFyZzQ4MDcsaW50IGFyZzQ4MDgsaW50IGFyZzQ4MDksaW50IGFyZzQ4
MTAsaW50IGFyZzQ4MTEsaW50IGFyZzQ4MTIsaW50IGFyZzQ4MTMsaW50IGFyZzQ4MTQsaW50IGFy
ZzQ4MTUsaW50IGFyZzQ4MTYsaW50IGFyZzQ4MTcsaW50IGFyZzQ4MTgsaW50IGFyZzQ4MTksaW50
IGFyZzQ4MjAsaW50IGFyZzQ4MjEsaW50IGFyZzQ4MjIsaW50IGFyZzQ4MjMsaW50IGFyZzQ4MjQs
aW50IGFyZzQ4MjUsaW50IGFyZzQ4MjYsaW50IGFyZzQ4MjcsaW50IGFyZzQ4MjgsaW50IGFyZzQ4
MjksaW50IGFyZzQ4MzAsaW50IGFyZzQ4MzEsaW50IGFyZzQ4MzIsaW50IGFyZzQ4MzMsaW50IGFy
ZzQ4MzQsaW50IGFyZzQ4MzUsaW50IGFyZzQ4MzYsaW50IGFyZzQ4MzcsaW50IGFyZzQ4MzgsaW50
IGFyZzQ4MzksaW50IGFyZzQ4NDAsaW50IGFyZzQ4NDEsaW50IGFyZzQ4NDIsaW50IGFyZzQ4NDMs
aW50IGFyZzQ4NDQsaW50IGFyZzQ4NDUsaW50IGFyZzQ4NDYsaW50IGFyZzQ4NDcsaW50IGFyZzQ4
NDgsaW50IGFyZzQ4NDksaW50IGFyZzQ4NTAsaW50IGFyZzQ4NTEsaW50IGFyZzQ4NTIsaW50IGFy
ZzQ4NTMsaW50IGFyZzQ4NTQsaW50IGFyZzQ4NTUsaW50IGFyZzQ4NTYsaW50IGFyZzQ4NTcsaW50
IGFyZzQ4NTgsaW50IGFyZzQ4NTksaW50IGFyZzQ4NjAsaW50IGFyZzQ4NjEsaW50IGFyZzQ4NjIs
aW50IGFyZzQ4NjMsaW50IGFyZzQ4NjQsaW50IGFyZzQ4NjUsaW50IGFyZzQ4NjYsaW50IGFyZzQ4
NjcsaW50IGFyZzQ4NjgsaW50IGFyZzQ4NjksaW50IGFyZzQ4NzAsaW50IGFyZzQ4NzEsaW50IGFy
ZzQ4NzIsaW50IGFyZzQ4NzMsaW50IGFyZzQ4NzQsaW50IGFyZzQ4NzUsaW50IGFyZzQ4NzYsaW50
IGFyZzQ4NzcsaW50IGFyZzQ4NzgsaW50IGFyZzQ4NzksaW50IGFyZzQ4ODAsaW50IGFyZzQ4ODEs
aW50IGFyZzQ4ODIsaW50IGFyZzQ4ODMsaW50IGFyZzQ4ODQsaW50IGFyZzQ4ODUsaW50IGFyZzQ4
ODYsaW50IGFyZzQ4ODcsaW50IGFyZzQ4ODgsaW50IGFyZzQ4ODksaW50IGFyZzQ4OTAsaW50IGFy
ZzQ4OTEsaW50IGFyZzQ4OTIsaW50IGFyZzQ4OTMsaW50IGFyZzQ4OTQsaW50IGFyZzQ4OTUsaW50
IGFyZzQ4OTYsaW50IGFyZzQ4OTcsaW50IGFyZzQ4OTgsaW50IGFyZzQ4OTksaW50IGFyZzQ5MDAs
aW50IGFyZzQ5MDEsaW50IGFyZzQ5MDIsaW50IGFyZzQ5MDMsaW50IGFyZzQ5MDQsaW50IGFyZzQ5
MDUsaW50IGFyZzQ5MDYsaW50IGFyZzQ5MDcsaW50IGFyZzQ5MDgsaW50IGFyZzQ5MDksaW50IGFy
ZzQ5MTAsaW50IGFyZzQ5MTEsaW50IGFyZzQ5MTIsaW50IGFyZzQ5MTMsaW50IGFyZzQ5MTQsaW50
IGFyZzQ5MTUsaW50IGFyZzQ5MTYsaW50IGFyZzQ5MTcsaW50IGFyZzQ5MTgsaW50IGFyZzQ5MTks
aW50IGFyZzQ5MjAsaW50IGFyZzQ5MjEsaW50IGFyZzQ5MjIsaW50IGFyZzQ5MjMsaW50IGFyZzQ5
MjQsaW50IGFyZzQ5MjUsaW50IGFyZzQ5MjYsaW50IGFyZzQ5MjcsaW50IGFyZzQ5MjgsaW50IGFy
ZzQ5MjksaW50IGFyZzQ5MzAsaW50IGFyZzQ5MzEsaW50IGFyZzQ5MzIsaW50IGFyZzQ5MzMsaW50
IGFyZzQ5MzQsaW50IGFyZzQ5MzUsaW50IGFyZzQ5MzYsaW50IGFyZzQ5MzcsaW50IGFyZzQ5Mzgs
aW50IGFyZzQ5MzksaW50IGFyZzQ5NDAsaW50IGFyZzQ5NDEsaW50IGFyZzQ5NDIsaW50IGFyZzQ5
NDMsaW50IGFyZzQ5NDQsaW50IGFyZzQ5NDUsaW50IGFyZzQ5NDYsaW50IGFyZzQ5NDcsaW50IGFy
ZzQ5NDgsaW50IGFyZzQ5NDksaW50IGFyZzQ5NTAsaW50IGFyZzQ5NTEsaW50IGFyZzQ5NTIsaW50
IGFyZzQ5NTMsaW50IGFyZzQ5NTQsaW50IGFyZzQ5NTUsaW50IGFyZzQ5NTYsaW50IGFyZzQ5NTcs
aW50IGFyZzQ5NTgsaW50IGFyZzQ5NTksaW50IGFyZzQ5NjAsaW50IGFyZzQ5NjEsaW50IGFyZzQ5
NjIsaW50IGFyZzQ5NjMsaW50IGFyZzQ5NjQsaW50IGFyZzQ5NjUsaW50IGFyZzQ5NjYsaW50IGFy
ZzQ5NjcsaW50IGFyZzQ5NjgsaW50IGFyZzQ5NjksaW50IGFyZzQ5NzAsaW50IGFyZzQ5NzEsaW50
IGFyZzQ5NzIsaW50IGFyZzQ5NzMsaW50IGFyZzQ5NzQsaW50IGFyZzQ5NzUsaW50IGFyZzQ5NzYs
aW50IGFyZzQ5NzcsaW50IGFyZzQ5NzgsaW50IGFyZzQ5NzksaW50IGFyZzQ5ODAsaW50IGFyZzQ5
ODEsaW50IGFyZzQ5ODIsaW50IGFyZzQ5ODMsaW50IGFyZzQ5ODQsaW50IGFyZzQ5ODUsaW50IGFy
ZzQ5ODYsaW50IGFyZzQ5ODcsaW50IGFyZzQ5ODgsaW50IGFyZzQ5ODksaW50IGFyZzQ5OTAsaW50
IGFyZzQ5OTEsaW50IGFyZzQ5OTIsaW50IGFyZzQ5OTMsaW50IGFyZzQ5OTQsaW50IGFyZzQ5OTUs
aW50IGFyZzQ5OTYsaW50IGFyZzQ5OTcsaW50IGFyZzQ5OTgsaW50IGFyZzQ5OTkpIHsgcmV0dXJu
IGFyZzArYXJnMSthcmcyK2FyZzMrYXJnNCthcmc1K2FyZzYrYXJnNythcmc4K2FyZzkrYXJnMTAr
YXJnMTErYXJnMTIrYXJnMTMrYXJnMTQrYXJnMTUrYXJnMTYrYXJnMTcrYXJnMTgrYXJnMTkrYXJn
MjArYXJnMjErYXJnMjIrYXJnMjMrYXJnMjQrYXJnMjUrYXJnMjYrYXJnMjcrYXJnMjgrYXJnMjkr
YXJnMzArYXJnMzErYXJnMzIrYXJnMzMrYXJnMzQrYXJnMzUrYXJnMzYrYXJnMzcrYXJnMzgrYXJn
MzkrYXJnNDArYXJnNDErYXJnNDIrYXJnNDMrYXJnNDQrYXJnNDUrYXJnNDYrYXJnNDcrYXJnNDgr
YXJnNDkrYXJnNTArYXJnNTErYXJnNTIrYXJnNTMrYXJnNTQrYXJnNTUrYXJnNTYrYXJnNTcrYXJn
NTgrYXJnNTkrYXJnNjArYXJnNjErYXJnNjIrYXJnNjMrYXJnNjQrYXJnNjUrYXJnNjYrYXJnNjcr
YXJnNjgrYXJnNjkrYXJnNzArYXJnNzErYXJnNzIrYXJnNzMrYXJnNzQrYXJnNzUrYXJnNzYrYXJn
NzcrYXJnNzgrYXJnNzkrYXJnODArYXJnODErYXJnODIrYXJnODMrYXJnODQrYXJnODUrYXJnODYr
YXJnODcrYXJnODgrYXJnODkrYXJnOTArYXJnOTErYXJnOTIrYXJnOTMrYXJnOTQrYXJnOTUrYXJn
OTYrYXJnOTcrYXJnOTgrYXJnOTkrYXJnMTAwK2FyZzEwMSthcmcxMDIrYXJnMTAzK2FyZzEwNCth
cmcxMDUrYXJnMTA2K2FyZzEwNythcmcxMDgrYXJnMTA5K2FyZzExMCthcmcxMTErYXJnMTEyK2Fy
ZzExMythcmcxMTQrYXJnMTE1K2FyZzExNithcmcxMTcrYXJnMTE4K2FyZzExOSthcmcxMjArYXJn
MTIxK2FyZzEyMithcmcxMjMrYXJnMTI0K2FyZzEyNSthcmcxMjYrYXJnMTI3K2FyZzEyOCthcmcx
MjkrYXJnMTMwK2FyZzEzMSthcmcxMzIrYXJnMTMzK2FyZzEzNCthcmcxMzUrYXJnMTM2K2FyZzEz
NythcmcxMzgrYXJnMTM5K2FyZzE0MCthcmcxNDErYXJnMTQyK2FyZzE0MythcmcxNDQrYXJnMTQ1
K2FyZzE0NithcmcxNDcrYXJnMTQ4K2FyZzE0OSthcmcxNTArYXJnMTUxK2FyZzE1MithcmcxNTMr
YXJnMTU0K2FyZzE1NSthcmcxNTYrYXJnMTU3K2FyZzE1OCthcmcxNTkrYXJnMTYwK2FyZzE2MSth
cmcxNjIrYXJnMTYzK2FyZzE2NCthcmcxNjUrYXJnMTY2K2FyZzE2NythcmcxNjgrYXJnMTY5K2Fy
ZzE3MCthcmcxNzErYXJnMTcyK2FyZzE3MythcmcxNzQrYXJnMTc1K2FyZzE3NithcmcxNzcrYXJn
MTc4K2FyZzE3OSthcmcxODArYXJnMTgxK2FyZzE4MithcmcxODMrYXJnMTg0K2FyZzE4NSthcmcx
ODYrYXJnMTg3K2FyZzE4OCthcmcxODkrYXJnMTkwK2FyZzE5MSthcmcxOTIrYXJnMTkzK2FyZzE5
NCthcmcxOTUrYXJnMTk2K2FyZzE5NythcmcxOTgrYXJnMTk5K2FyZzIwMCthcmcyMDErYXJnMjAy
K2FyZzIwMythcmcyMDQrYXJnMjA1K2FyZzIwNithcmcyMDcrYXJnMjA4K2FyZzIwOSthcmcyMTAr
YXJnMjExK2FyZzIxMithcmcyMTMrYXJnMjE0K2FyZzIxNSthcmcyMTYrYXJnMjE3K2FyZzIxOCth
cmcyMTkrYXJnMjIwK2FyZzIyMSthcmcyMjIrYXJnMjIzK2FyZzIyNCthcmcyMjUrYXJnMjI2K2Fy
ZzIyNythcmcyMjgrYXJnMjI5K2FyZzIzMCthcmcyMzErYXJnMjMyK2FyZzIzMythcmcyMzQrYXJn
MjM1K2FyZzIzNithcmcyMzcrYXJnMjM4K2FyZzIzOSthcmcyNDArYXJnMjQxK2FyZzI0Mithcmcy
NDMrYXJnMjQ0K2FyZzI0NSthcmcyNDYrYXJnMjQ3K2FyZzI0OCthcmcyNDkrYXJnMjUwK2FyZzI1
MSthcmcyNTIrYXJnMjUzK2FyZzI1NCthcmcyNTUrYXJnMjU2K2FyZzI1NythcmcyNTgrYXJnMjU5
K2FyZzI2MCthcmcyNjErYXJnMjYyK2FyZzI2MythcmcyNjQrYXJnMjY1K2FyZzI2NithcmcyNjcr
YXJnMjY4K2FyZzI2OSthcmcyNzArYXJnMjcxK2FyZzI3MithcmcyNzMrYXJnMjc0K2FyZzI3NSth
cmcyNzYrYXJnMjc3K2FyZzI3OCthcmcyNzkrYXJnMjgwK2FyZzI4MSthcmcyODIrYXJnMjgzK2Fy
ZzI4NCthcmcyODUrYXJnMjg2K2FyZzI4NythcmcyODgrYXJnMjg5K2FyZzI5MCthcmcyOTErYXJn
MjkyK2FyZzI5MythcmcyOTQrYXJnMjk1K2FyZzI5NithcmcyOTcrYXJnMjk4K2FyZzI5OSthcmcz
MDArYXJnMzAxK2FyZzMwMithcmczMDMrYXJnMzA0K2FyZzMwNSthcmczMDYrYXJnMzA3K2FyZzMw
OCthcmczMDkrYXJnMzEwK2FyZzMxMSthcmczMTIrYXJnMzEzK2FyZzMxNCthcmczMTUrYXJnMzE2
K2FyZzMxNythcmczMTgrYXJnMzE5K2FyZzMyMCthcmczMjErYXJnMzIyK2FyZzMyMythcmczMjQr
YXJnMzI1K2FyZzMyNithcmczMjcrYXJnMzI4K2FyZzMyOSthcmczMzArYXJnMzMxK2FyZzMzMith
cmczMzMrYXJnMzM0K2FyZzMzNSthcmczMzYrYXJnMzM3K2FyZzMzOCthcmczMzkrYXJnMzQwK2Fy
ZzM0MSthcmczNDIrYXJnMzQzK2FyZzM0NCthcmczNDUrYXJnMzQ2K2FyZzM0NythcmczNDgrYXJn
MzQ5K2FyZzM1MCthcmczNTErYXJnMzUyK2FyZzM1MythcmczNTQrYXJnMzU1K2FyZzM1Nithcmcz
NTcrYXJnMzU4K2FyZzM1OSthcmczNjArYXJnMzYxK2FyZzM2MithcmczNjMrYXJnMzY0K2FyZzM2
NSthcmczNjYrYXJnMzY3K2FyZzM2OCthcmczNjkrYXJnMzcwK2FyZzM3MSthcmczNzIrYXJnMzcz
K2FyZzM3NCthcmczNzUrYXJnMzc2K2FyZzM3NythcmczNzgrYXJnMzc5K2FyZzM4MCthcmczODEr
YXJnMzgyK2FyZzM4MythcmczODQrYXJnMzg1K2FyZzM4NithcmczODcrYXJnMzg4K2FyZzM4OSth
cmczOTArYXJnMzkxK2FyZzM5MithcmczOTMrYXJnMzk0K2FyZzM5NSthcmczOTYrYXJnMzk3K2Fy
ZzM5OCthcmczOTkrYXJnNDAwK2FyZzQwMSthcmc0MDIrYXJnNDAzK2FyZzQwNCthcmc0MDUrYXJn
NDA2K2FyZzQwNythcmc0MDgrYXJnNDA5K2FyZzQxMCthcmc0MTErYXJnNDEyK2FyZzQxMythcmc0
MTQrYXJnNDE1K2FyZzQxNithcmc0MTcrYXJnNDE4K2FyZzQxOSthcmc0MjArYXJnNDIxK2FyZzQy
Mithcmc0MjMrYXJnNDI0K2FyZzQyNSthcmc0MjYrYXJnNDI3K2FyZzQyOCthcmc0MjkrYXJnNDMw
K2FyZzQzMSthcmc0MzIrYXJnNDMzK2FyZzQzNCthcmc0MzUrYXJnNDM2K2FyZzQzNythcmc0Mzgr
YXJnNDM5K2FyZzQ0MCthcmc0NDErYXJnNDQyK2FyZzQ0Mythcmc0NDQrYXJnNDQ1K2FyZzQ0Nith
cmc0NDcrYXJnNDQ4K2FyZzQ0OSthcmc0NTArYXJnNDUxK2FyZzQ1Mithcmc0NTMrYXJnNDU0K2Fy
ZzQ1NSthcmc0NTYrYXJnNDU3K2FyZzQ1OCthcmc0NTkrYXJnNDYwK2FyZzQ2MSthcmc0NjIrYXJn
NDYzK2FyZzQ2NCthcmc0NjUrYXJnNDY2K2FyZzQ2Nythcmc0NjgrYXJnNDY5K2FyZzQ3MCthcmc0
NzErYXJnNDcyK2FyZzQ3Mythcmc0NzQrYXJnNDc1K2FyZzQ3Nithcmc0NzcrYXJnNDc4K2FyZzQ3
OSthcmc0ODArYXJnNDgxK2FyZzQ4Mithcmc0ODMrYXJnNDg0K2FyZzQ4NSthcmc0ODYrYXJnNDg3
K2FyZzQ4OCthcmc0ODkrYXJnNDkwK2FyZzQ5MSthcmc0OTIrYXJnNDkzK2FyZzQ5NCthcmc0OTUr
YXJnNDk2K2FyZzQ5Nythcmc0OTgrYXJnNDk5K2FyZzUwMCthcmc1MDErYXJnNTAyK2FyZzUwMyth
cmc1MDQrYXJnNTA1K2FyZzUwNithcmc1MDcrYXJnNTA4K2FyZzUwOSthcmc1MTArYXJnNTExK2Fy
ZzUxMithcmc1MTMrYXJnNTE0K2FyZzUxNSthcmc1MTYrYXJnNTE3K2FyZzUxOCthcmc1MTkrYXJn
NTIwK2FyZzUyMSthcmc1MjIrYXJnNTIzK2FyZzUyNCthcmc1MjUrYXJnNTI2K2FyZzUyNythcmc1
MjgrYXJnNTI5K2FyZzUzMCthcmc1MzErYXJnNTMyK2FyZzUzMythcmc1MzQrYXJnNTM1K2FyZzUz
Nithcmc1MzcrYXJnNTM4K2FyZzUzOSthcmc1NDArYXJnNTQxK2FyZzU0Mithcmc1NDMrYXJnNTQ0
K2FyZzU0NSthcmc1NDYrYXJnNTQ3K2FyZzU0OCthcmc1NDkrYXJnNTUwK2FyZzU1MSthcmc1NTIr
YXJnNTUzK2FyZzU1NCthcmc1NTUrYXJnNTU2K2FyZzU1Nythcmc1NTgrYXJnNTU5K2FyZzU2MCth
cmc1NjErYXJnNTYyK2FyZzU2Mythcmc1NjQrYXJnNTY1K2FyZzU2Nithcmc1NjcrYXJnNTY4K2Fy
ZzU2OSthcmc1NzArYXJnNTcxK2FyZzU3Mithcmc1NzMrYXJnNTc0K2FyZzU3NSthcmc1NzYrYXJn
NTc3K2FyZzU3OCthcmc1NzkrYXJnNTgwK2FyZzU4MSthcmc1ODIrYXJnNTgzK2FyZzU4NCthcmc1
ODUrYXJnNTg2K2FyZzU4Nythcmc1ODgrYXJnNTg5K2FyZzU5MCthcmc1OTErYXJnNTkyK2FyZzU5
Mythcmc1OTQrYXJnNTk1K2FyZzU5Nithcmc1OTcrYXJnNTk4K2FyZzU5OSthcmc2MDArYXJnNjAx
K2FyZzYwMithcmc2MDMrYXJnNjA0K2FyZzYwNSthcmc2MDYrYXJnNjA3K2FyZzYwOCthcmc2MDkr
YXJnNjEwK2FyZzYxMSthcmc2MTIrYXJnNjEzK2FyZzYxNCthcmc2MTUrYXJnNjE2K2FyZzYxNyth
cmc2MTgrYXJnNjE5K2FyZzYyMCthcmc2MjErYXJnNjIyK2FyZzYyMythcmc2MjQrYXJnNjI1K2Fy
ZzYyNithcmc2MjcrYXJnNjI4K2FyZzYyOSthcmc2MzArYXJnNjMxK2FyZzYzMithcmc2MzMrYXJn
NjM0K2FyZzYzNSthcmc2MzYrYXJnNjM3K2FyZzYzOCthcmc2MzkrYXJnNjQwK2FyZzY0MSthcmc2
NDIrYXJnNjQzK2FyZzY0NCthcmc2NDUrYXJnNjQ2K2FyZzY0Nythcmc2NDgrYXJnNjQ5K2FyZzY1
MCthcmc2NTErYXJnNjUyK2FyZzY1Mythcmc2NTQrYXJnNjU1K2FyZzY1Nithcmc2NTcrYXJnNjU4
K2FyZzY1OSthcmc2NjArYXJnNjYxK2FyZzY2Mithcmc2NjMrYXJnNjY0K2FyZzY2NSthcmc2NjYr
YXJnNjY3K2FyZzY2OCthcmc2NjkrYXJnNjcwK2FyZzY3MSthcmc2NzIrYXJnNjczK2FyZzY3NCth
cmc2NzUrYXJnNjc2K2FyZzY3Nythcmc2NzgrYXJnNjc5K2FyZzY4MCthcmc2ODErYXJnNjgyK2Fy
ZzY4Mythcmc2ODQrYXJnNjg1K2FyZzY4Nithcmc2ODcrYXJnNjg4K2FyZzY4OSthcmc2OTArYXJn
NjkxK2FyZzY5Mithcmc2OTMrYXJnNjk0K2FyZzY5NSthcmc2OTYrYXJnNjk3K2FyZzY5OCthcmc2
OTkrYXJnNzAwK2FyZzcwMSthcmc3MDIrYXJnNzAzK2FyZzcwNCthcmc3MDUrYXJnNzA2K2FyZzcw
Nythcmc3MDgrYXJnNzA5K2FyZzcxMCthcmc3MTErYXJnNzEyK2FyZzcxMythcmc3MTQrYXJnNzE1
K2FyZzcxNithcmc3MTcrYXJnNzE4K2FyZzcxOSthcmc3MjArYXJnNzIxK2FyZzcyMithcmc3MjMr
YXJnNzI0K2FyZzcyNSthcmc3MjYrYXJnNzI3K2FyZzcyOCthcmc3MjkrYXJnNzMwK2FyZzczMSth
cmc3MzIrYXJnNzMzK2FyZzczNCthcmc3MzUrYXJnNzM2K2FyZzczNythcmc3MzgrYXJnNzM5K2Fy
Zzc0MCthcmc3NDErYXJnNzQyK2FyZzc0Mythcmc3NDQrYXJnNzQ1K2FyZzc0Nithcmc3NDcrYXJn
NzQ4K2FyZzc0OSthcmc3NTArYXJnNzUxK2FyZzc1Mithcmc3NTMrYXJnNzU0K2FyZzc1NSthcmc3
NTYrYXJnNzU3K2FyZzc1OCthcmc3NTkrYXJnNzYwK2FyZzc2MSthcmc3NjIrYXJnNzYzK2FyZzc2
NCthcmc3NjUrYXJnNzY2K2FyZzc2Nythcmc3NjgrYXJnNzY5K2FyZzc3MCthcmc3NzErYXJnNzcy
K2FyZzc3Mythcmc3NzQrYXJnNzc1K2FyZzc3Nithcmc3NzcrYXJnNzc4K2FyZzc3OSthcmc3ODAr
YXJnNzgxK2FyZzc4Mithcmc3ODMrYXJnNzg0K2FyZzc4NSthcmc3ODYrYXJnNzg3K2FyZzc4OCth
cmc3ODkrYXJnNzkwK2FyZzc5MSthcmc3OTIrYXJnNzkzK2FyZzc5NCthcmc3OTUrYXJnNzk2K2Fy
Zzc5Nythcmc3OTgrYXJnNzk5K2FyZzgwMCthcmc4MDErYXJnODAyK2FyZzgwMythcmc4MDQrYXJn
ODA1K2FyZzgwNithcmc4MDcrYXJnODA4K2FyZzgwOSthcmc4MTArYXJnODExK2FyZzgxMithcmc4
MTMrYXJnODE0K2FyZzgxNSthcmc4MTYrYXJnODE3K2FyZzgxOCthcmc4MTkrYXJnODIwK2FyZzgy
MSthcmc4MjIrYXJnODIzK2FyZzgyNCthcmc4MjUrYXJnODI2K2FyZzgyNythcmc4MjgrYXJnODI5
K2FyZzgzMCthcmc4MzErYXJnODMyK2FyZzgzMythcmc4MzQrYXJnODM1K2FyZzgzNithcmc4Mzcr
YXJnODM4K2FyZzgzOSthcmc4NDArYXJnODQxK2FyZzg0Mithcmc4NDMrYXJnODQ0K2FyZzg0NSth
cmc4NDYrYXJnODQ3K2FyZzg0OCthcmc4NDkrYXJnODUwK2FyZzg1MSthcmc4NTIrYXJnODUzK2Fy
Zzg1NCthcmc4NTUrYXJnODU2K2FyZzg1Nythcmc4NTgrYXJnODU5K2FyZzg2MCthcmc4NjErYXJn
ODYyK2FyZzg2Mythcmc4NjQrYXJnODY1K2FyZzg2Nithcmc4NjcrYXJnODY4K2FyZzg2OSthcmc4
NzArYXJnODcxK2FyZzg3Mithcmc4NzMrYXJnODc0K2FyZzg3NSthcmc4NzYrYXJnODc3K2FyZzg3
OCthcmc4NzkrYXJnODgwK2FyZzg4MSthcmc4ODIrYXJnODgzK2FyZzg4NCthcmc4ODUrYXJnODg2
K2FyZzg4Nythcmc4ODgrYXJnODg5K2FyZzg5MCthcmc4OTErYXJnODkyK2FyZzg5Mythcmc4OTQr
YXJnODk1K2FyZzg5Nithcmc4OTcrYXJnODk4K2FyZzg5OSthcmc5MDArYXJnOTAxK2FyZzkwMith
cmc5MDMrYXJnOTA0K2FyZzkwNSthcmc5MDYrYXJnOTA3K2FyZzkwOCthcmc5MDkrYXJnOTEwK2Fy
ZzkxMSthcmc5MTIrYXJnOTEzK2FyZzkxNCthcmc5MTUrYXJnOTE2K2FyZzkxNythcmc5MTgrYXJn
OTE5K2FyZzkyMCthcmc5MjErYXJnOTIyK2FyZzkyMythcmc5MjQrYXJnOTI1K2FyZzkyNithcmc5
MjcrYXJnOTI4K2FyZzkyOSthcmc5MzArYXJnOTMxK2FyZzkzMithcmc5MzMrYXJnOTM0K2FyZzkz
NSthcmc5MzYrYXJnOTM3K2FyZzkzOCthcmc5MzkrYXJnOTQwK2FyZzk0MSthcmc5NDIrYXJnOTQz
K2FyZzk0NCthcmc5NDUrYXJnOTQ2K2FyZzk0Nythcmc5NDgrYXJnOTQ5K2FyZzk1MCthcmc5NTEr
YXJnOTUyK2FyZzk1Mythcmc5NTQrYXJnOTU1K2FyZzk1Nithcmc5NTcrYXJnOTU4K2FyZzk1OSth
cmc5NjArYXJnOTYxK2FyZzk2Mithcmc5NjMrYXJnOTY0K2FyZzk2NSthcmc5NjYrYXJnOTY3K2Fy
Zzk2OCthcmc5NjkrYXJnOTcwK2FyZzk3MSthcmc5NzIrYXJnOTczK2FyZzk3NCthcmc5NzUrYXJn
OTc2K2FyZzk3Nythcmc5NzgrYXJnOTc5K2FyZzk4MCthcmc5ODErYXJnOTgyK2FyZzk4Mythcmc5
ODQrYXJnOTg1K2FyZzk4Nithcmc5ODcrYXJnOTg4K2FyZzk4OSthcmc5OTArYXJnOTkxK2FyZzk5
Mithcmc5OTMrYXJnOTk0K2FyZzk5NSthcmc5OTYrYXJnOTk3K2FyZzk5OCthcmc5OTkrYXJnMTAw
MCthcmcxMDAxK2FyZzEwMDIrYXJnMTAwMythcmcxMDA0K2FyZzEwMDUrYXJnMTAwNithcmcxMDA3
K2FyZzEwMDgrYXJnMTAwOSthcmcxMDEwK2FyZzEwMTErYXJnMTAxMithcmcxMDEzK2FyZzEwMTQr
YXJnMTAxNSthcmcxMDE2K2FyZzEwMTcrYXJnMTAxOCthcmcxMDE5K2FyZzEwMjArYXJnMTAyMSth
cmcxMDIyK2FyZzEwMjMrYXJnMTAyNCthcmcxMDI1K2FyZzEwMjYrYXJnMTAyNythcmcxMDI4K2Fy
ZzEwMjkrYXJnMTAzMCthcmcxMDMxK2FyZzEwMzIrYXJnMTAzMythcmcxMDM0K2FyZzEwMzUrYXJn
MTAzNithcmcxMDM3K2FyZzEwMzgrYXJnMTAzOSthcmcxMDQwK2FyZzEwNDErYXJnMTA0Mithcmcx
MDQzK2FyZzEwNDQrYXJnMTA0NSthcmcxMDQ2K2FyZzEwNDcrYXJnMTA0OCthcmcxMDQ5K2FyZzEw
NTArYXJnMTA1MSthcmcxMDUyK2FyZzEwNTMrYXJnMTA1NCthcmcxMDU1K2FyZzEwNTYrYXJnMTA1
NythcmcxMDU4K2FyZzEwNTkrYXJnMTA2MCthcmcxMDYxK2FyZzEwNjIrYXJnMTA2MythcmcxMDY0
K2FyZzEwNjUrYXJnMTA2NithcmcxMDY3K2FyZzEwNjgrYXJnMTA2OSthcmcxMDcwK2FyZzEwNzEr
YXJnMTA3MithcmcxMDczK2FyZzEwNzQrYXJnMTA3NSthcmcxMDc2K2FyZzEwNzcrYXJnMTA3OCth
cmcxMDc5K2FyZzEwODArYXJnMTA4MSthcmcxMDgyK2FyZzEwODMrYXJnMTA4NCthcmcxMDg1K2Fy
ZzEwODYrYXJnMTA4NythcmcxMDg4K2FyZzEwODkrYXJnMTA5MCthcmcxMDkxK2FyZzEwOTIrYXJn
MTA5MythcmcxMDk0K2FyZzEwOTUrYXJnMTA5NithcmcxMDk3K2FyZzEwOTgrYXJnMTA5OSthcmcx
MTAwK2FyZzExMDErYXJnMTEwMithcmcxMTAzK2FyZzExMDQrYXJnMTEwNSthcmcxMTA2K2FyZzEx
MDcrYXJnMTEwOCthcmcxMTA5K2FyZzExMTArYXJnMTExMSthcmcxMTEyK2FyZzExMTMrYXJnMTEx
NCthcmcxMTE1K2FyZzExMTYrYXJnMTExNythcmcxMTE4K2FyZzExMTkrYXJnMTEyMCthcmcxMTIx
K2FyZzExMjIrYXJnMTEyMythcmcxMTI0K2FyZzExMjUrYXJnMTEyNithcmcxMTI3K2FyZzExMjgr
YXJnMTEyOSthcmcxMTMwK2FyZzExMzErYXJnMTEzMithcmcxMTMzK2FyZzExMzQrYXJnMTEzNSth
cmcxMTM2K2FyZzExMzcrYXJnMTEzOCthcmcxMTM5K2FyZzExNDArYXJnMTE0MSthcmcxMTQyK2Fy
ZzExNDMrYXJnMTE0NCthcmcxMTQ1K2FyZzExNDYrYXJnMTE0NythcmcxMTQ4K2FyZzExNDkrYXJn
MTE1MCthcmcxMTUxK2FyZzExNTIrYXJnMTE1MythcmcxMTU0K2FyZzExNTUrYXJnMTE1Nithcmcx
MTU3K2FyZzExNTgrYXJnMTE1OSthcmcxMTYwK2FyZzExNjErYXJnMTE2MithcmcxMTYzK2FyZzEx
NjQrYXJnMTE2NSthcmcxMTY2K2FyZzExNjcrYXJnMTE2OCthcmcxMTY5K2FyZzExNzArYXJnMTE3
MSthcmcxMTcyK2FyZzExNzMrYXJnMTE3NCthcmcxMTc1K2FyZzExNzYrYXJnMTE3NythcmcxMTc4
K2FyZzExNzkrYXJnMTE4MCthcmcxMTgxK2FyZzExODIrYXJnMTE4MythcmcxMTg0K2FyZzExODUr
YXJnMTE4NithcmcxMTg3K2FyZzExODgrYXJnMTE4OSthcmcxMTkwK2FyZzExOTErYXJnMTE5Mith
cmcxMTkzK2FyZzExOTQrYXJnMTE5NSthcmcxMTk2K2FyZzExOTcrYXJnMTE5OCthcmcxMTk5K2Fy
ZzEyMDArYXJnMTIwMSthcmcxMjAyK2FyZzEyMDMrYXJnMTIwNCthcmcxMjA1K2FyZzEyMDYrYXJn
MTIwNythcmcxMjA4K2FyZzEyMDkrYXJnMTIxMCthcmcxMjExK2FyZzEyMTIrYXJnMTIxMythcmcx
MjE0K2FyZzEyMTUrYXJnMTIxNithcmcxMjE3K2FyZzEyMTgrYXJnMTIxOSthcmcxMjIwK2FyZzEy
MjErYXJnMTIyMithcmcxMjIzK2FyZzEyMjQrYXJnMTIyNSthcmcxMjI2K2FyZzEyMjcrYXJnMTIy
OCthcmcxMjI5K2FyZzEyMzArYXJnMTIzMSthcmcxMjMyK2FyZzEyMzMrYXJnMTIzNCthcmcxMjM1
K2FyZzEyMzYrYXJnMTIzNythcmcxMjM4K2FyZzEyMzkrYXJnMTI0MCthcmcxMjQxK2FyZzEyNDIr
YXJnMTI0MythcmcxMjQ0K2FyZzEyNDUrYXJnMTI0NithcmcxMjQ3K2FyZzEyNDgrYXJnMTI0OSth
cmcxMjUwK2FyZzEyNTErYXJnMTI1MithcmcxMjUzK2FyZzEyNTQrYXJnMTI1NSthcmcxMjU2K2Fy
ZzEyNTcrYXJnMTI1OCthcmcxMjU5K2FyZzEyNjArYXJnMTI2MSthcmcxMjYyK2FyZzEyNjMrYXJn
MTI2NCthcmcxMjY1K2FyZzEyNjYrYXJnMTI2NythcmcxMjY4K2FyZzEyNjkrYXJnMTI3MCthcmcx
MjcxK2FyZzEyNzIrYXJnMTI3MythcmcxMjc0K2FyZzEyNzUrYXJnMTI3NithcmcxMjc3K2FyZzEy
NzgrYXJnMTI3OSthcmcxMjgwK2FyZzEyODErYXJnMTI4MithcmcxMjgzK2FyZzEyODQrYXJnMTI4
NSthcmcxMjg2K2FyZzEyODcrYXJnMTI4OCthcmcxMjg5K2FyZzEyOTArYXJnMTI5MSthcmcxMjky
K2FyZzEyOTMrYXJnMTI5NCthcmcxMjk1K2FyZzEyOTYrYXJnMTI5NythcmcxMjk4K2FyZzEyOTkr
YXJnMTMwMCthcmcxMzAxK2FyZzEzMDIrYXJnMTMwMythcmcxMzA0K2FyZzEzMDUrYXJnMTMwNith
cmcxMzA3K2FyZzEzMDgrYXJnMTMwOSthcmcxMzEwK2FyZzEzMTErYXJnMTMxMithcmcxMzEzK2Fy
ZzEzMTQrYXJnMTMxNSthcmcxMzE2K2FyZzEzMTcrYXJnMTMxOCthcmcxMzE5K2FyZzEzMjArYXJn
MTMyMSthcmcxMzIyK2FyZzEzMjMrYXJnMTMyNCthcmcxMzI1K2FyZzEzMjYrYXJnMTMyNythcmcx
MzI4K2FyZzEzMjkrYXJnMTMzMCthcmcxMzMxK2FyZzEzMzIrYXJnMTMzMythcmcxMzM0K2FyZzEz
MzUrYXJnMTMzNithcmcxMzM3K2FyZzEzMzgrYXJnMTMzOSthcmcxMzQwK2FyZzEzNDErYXJnMTM0
MithcmcxMzQzK2FyZzEzNDQrYXJnMTM0NSthcmcxMzQ2K2FyZzEzNDcrYXJnMTM0OCthcmcxMzQ5
K2FyZzEzNTArYXJnMTM1MSthcmcxMzUyK2FyZzEzNTMrYXJnMTM1NCthcmcxMzU1K2FyZzEzNTYr
YXJnMTM1NythcmcxMzU4K2FyZzEzNTkrYXJnMTM2MCthcmcxMzYxK2FyZzEzNjIrYXJnMTM2Myth
cmcxMzY0K2FyZzEzNjUrYXJnMTM2NithcmcxMzY3K2FyZzEzNjgrYXJnMTM2OSthcmcxMzcwK2Fy
ZzEzNzErYXJnMTM3MithcmcxMzczK2FyZzEzNzQrYXJnMTM3NSthcmcxMzc2K2FyZzEzNzcrYXJn
MTM3OCthcmcxMzc5K2FyZzEzODArYXJnMTM4MSthcmcxMzgyK2FyZzEzODMrYXJnMTM4NCthcmcx
Mzg1K2FyZzEzODYrYXJnMTM4NythcmcxMzg4K2FyZzEzODkrYXJnMTM5MCthcmcxMzkxK2FyZzEz
OTIrYXJnMTM5MythcmcxMzk0K2FyZzEzOTUrYXJnMTM5NithcmcxMzk3K2FyZzEzOTgrYXJnMTM5
OSthcmcxNDAwK2FyZzE0MDErYXJnMTQwMithcmcxNDAzK2FyZzE0MDQrYXJnMTQwNSthcmcxNDA2
K2FyZzE0MDcrYXJnMTQwOCthcmcxNDA5K2FyZzE0MTArYXJnMTQxMSthcmcxNDEyK2FyZzE0MTMr
YXJnMTQxNCthcmcxNDE1K2FyZzE0MTYrYXJnMTQxNythcmcxNDE4K2FyZzE0MTkrYXJnMTQyMCth
cmcxNDIxK2FyZzE0MjIrYXJnMTQyMythcmcxNDI0K2FyZzE0MjUrYXJnMTQyNithcmcxNDI3K2Fy
ZzE0MjgrYXJnMTQyOSthcmcxNDMwK2FyZzE0MzErYXJnMTQzMithcmcxNDMzK2FyZzE0MzQrYXJn
MTQzNSthcmcxNDM2K2FyZzE0MzcrYXJnMTQzOCthcmcxNDM5K2FyZzE0NDArYXJnMTQ0MSthcmcx
NDQyK2FyZzE0NDMrYXJnMTQ0NCthcmcxNDQ1K2FyZzE0NDYrYXJnMTQ0NythcmcxNDQ4K2FyZzE0
NDkrYXJnMTQ1MCthcmcxNDUxK2FyZzE0NTIrYXJnMTQ1MythcmcxNDU0K2FyZzE0NTUrYXJnMTQ1
NithcmcxNDU3K2FyZzE0NTgrYXJnMTQ1OSthcmcxNDYwK2FyZzE0NjErYXJnMTQ2MithcmcxNDYz
K2FyZzE0NjQrYXJnMTQ2NSthcmcxNDY2K2FyZzE0NjcrYXJnMTQ2OCthcmcxNDY5K2FyZzE0NzAr
YXJnMTQ3MSthcmcxNDcyK2FyZzE0NzMrYXJnMTQ3NCthcmcxNDc1K2FyZzE0NzYrYXJnMTQ3Nyth
cmcxNDc4K2FyZzE0NzkrYXJnMTQ4MCthcmcxNDgxK2FyZzE0ODIrYXJnMTQ4MythcmcxNDg0K2Fy
ZzE0ODUrYXJnMTQ4NithcmcxNDg3K2FyZzE0ODgrYXJnMTQ4OSthcmcxNDkwK2FyZzE0OTErYXJn
MTQ5MithcmcxNDkzK2FyZzE0OTQrYXJnMTQ5NSthcmcxNDk2K2FyZzE0OTcrYXJnMTQ5OCthcmcx
NDk5K2FyZzE1MDArYXJnMTUwMSthcmcxNTAyK2FyZzE1MDMrYXJnMTUwNCthcmcxNTA1K2FyZzE1
MDYrYXJnMTUwNythcmcxNTA4K2FyZzE1MDkrYXJnMTUxMCthcmcxNTExK2FyZzE1MTIrYXJnMTUx
MythcmcxNTE0K2FyZzE1MTUrYXJnMTUxNithcmcxNTE3K2FyZzE1MTgrYXJnMTUxOSthcmcxNTIw
K2FyZzE1MjErYXJnMTUyMithcmcxNTIzK2FyZzE1MjQrYXJnMTUyNSthcmcxNTI2K2FyZzE1Mjcr
YXJnMTUyOCthcmcxNTI5K2FyZzE1MzArYXJnMTUzMSthcmcxNTMyK2FyZzE1MzMrYXJnMTUzNCth
cmcxNTM1K2FyZzE1MzYrYXJnMTUzNythcmcxNTM4K2FyZzE1MzkrYXJnMTU0MCthcmcxNTQxK2Fy
ZzE1NDIrYXJnMTU0MythcmcxNTQ0K2FyZzE1NDUrYXJnMTU0NithcmcxNTQ3K2FyZzE1NDgrYXJn
MTU0OSthcmcxNTUwK2FyZzE1NTErYXJnMTU1MithcmcxNTUzK2FyZzE1NTQrYXJnMTU1NSthcmcx
NTU2K2FyZzE1NTcrYXJnMTU1OCthcmcxNTU5K2FyZzE1NjArYXJnMTU2MSthcmcxNTYyK2FyZzE1
NjMrYXJnMTU2NCthcmcxNTY1K2FyZzE1NjYrYXJnMTU2NythcmcxNTY4K2FyZzE1NjkrYXJnMTU3
MCthcmcxNTcxK2FyZzE1NzIrYXJnMTU3MythcmcxNTc0K2FyZzE1NzUrYXJnMTU3NithcmcxNTc3
K2FyZzE1NzgrYXJnMTU3OSthcmcxNTgwK2FyZzE1ODErYXJnMTU4MithcmcxNTgzK2FyZzE1ODQr
YXJnMTU4NSthcmcxNTg2K2FyZzE1ODcrYXJnMTU4OCthcmcxNTg5K2FyZzE1OTArYXJnMTU5MSth
cmcxNTkyK2FyZzE1OTMrYXJnMTU5NCthcmcxNTk1K2FyZzE1OTYrYXJnMTU5NythcmcxNTk4K2Fy
ZzE1OTkrYXJnMTYwMCthcmcxNjAxK2FyZzE2MDIrYXJnMTYwMythcmcxNjA0K2FyZzE2MDUrYXJn
MTYwNithcmcxNjA3K2FyZzE2MDgrYXJnMTYwOSthcmcxNjEwK2FyZzE2MTErYXJnMTYxMithcmcx
NjEzK2FyZzE2MTQrYXJnMTYxNSthcmcxNjE2K2FyZzE2MTcrYXJnMTYxOCthcmcxNjE5K2FyZzE2
MjArYXJnMTYyMSthcmcxNjIyK2FyZzE2MjMrYXJnMTYyNCthcmcxNjI1K2FyZzE2MjYrYXJnMTYy
NythcmcxNjI4K2FyZzE2MjkrYXJnMTYzMCthcmcxNjMxK2FyZzE2MzIrYXJnMTYzMythcmcxNjM0
K2FyZzE2MzUrYXJnMTYzNithcmcxNjM3K2FyZzE2MzgrYXJnMTYzOSthcmcxNjQwK2FyZzE2NDEr
YXJnMTY0MithcmcxNjQzK2FyZzE2NDQrYXJnMTY0NSthcmcxNjQ2K2FyZzE2NDcrYXJnMTY0OCth
cmcxNjQ5K2FyZzE2NTArYXJnMTY1MSthcmcxNjUyK2FyZzE2NTMrYXJnMTY1NCthcmcxNjU1K2Fy
ZzE2NTYrYXJnMTY1NythcmcxNjU4K2FyZzE2NTkrYXJnMTY2MCthcmcxNjYxK2FyZzE2NjIrYXJn
MTY2MythcmcxNjY0K2FyZzE2NjUrYXJnMTY2NithcmcxNjY3K2FyZzE2NjgrYXJnMTY2OSthcmcx
NjcwK2FyZzE2NzErYXJnMTY3MithcmcxNjczK2FyZzE2NzQrYXJnMTY3NSthcmcxNjc2K2FyZzE2
NzcrYXJnMTY3OCthcmcxNjc5K2FyZzE2ODArYXJnMTY4MSthcmcxNjgyK2FyZzE2ODMrYXJnMTY4
NCthcmcxNjg1K2FyZzE2ODYrYXJnMTY4NythcmcxNjg4K2FyZzE2ODkrYXJnMTY5MCthcmcxNjkx
K2FyZzE2OTIrYXJnMTY5MythcmcxNjk0K2FyZzE2OTUrYXJnMTY5NithcmcxNjk3K2FyZzE2OTgr
YXJnMTY5OSthcmcxNzAwK2FyZzE3MDErYXJnMTcwMithcmcxNzAzK2FyZzE3MDQrYXJnMTcwNSth
cmcxNzA2K2FyZzE3MDcrYXJnMTcwOCthcmcxNzA5K2FyZzE3MTArYXJnMTcxMSthcmcxNzEyK2Fy
ZzE3MTMrYXJnMTcxNCthcmcxNzE1K2FyZzE3MTYrYXJnMTcxNythcmcxNzE4K2FyZzE3MTkrYXJn
MTcyMCthcmcxNzIxK2FyZzE3MjIrYXJnMTcyMythcmcxNzI0K2FyZzE3MjUrYXJnMTcyNithcmcx
NzI3K2FyZzE3MjgrYXJnMTcyOSthcmcxNzMwK2FyZzE3MzErYXJnMTczMithcmcxNzMzK2FyZzE3
MzQrYXJnMTczNSthcmcxNzM2K2FyZzE3MzcrYXJnMTczOCthcmcxNzM5K2FyZzE3NDArYXJnMTc0
MSthcmcxNzQyK2FyZzE3NDMrYXJnMTc0NCthcmcxNzQ1K2FyZzE3NDYrYXJnMTc0NythcmcxNzQ4
K2FyZzE3NDkrYXJnMTc1MCthcmcxNzUxK2FyZzE3NTIrYXJnMTc1MythcmcxNzU0K2FyZzE3NTUr
YXJnMTc1NithcmcxNzU3K2FyZzE3NTgrYXJnMTc1OSthcmcxNzYwK2FyZzE3NjErYXJnMTc2Mith
cmcxNzYzK2FyZzE3NjQrYXJnMTc2NSthcmcxNzY2K2FyZzE3NjcrYXJnMTc2OCthcmcxNzY5K2Fy
ZzE3NzArYXJnMTc3MSthcmcxNzcyK2FyZzE3NzMrYXJnMTc3NCthcmcxNzc1K2FyZzE3NzYrYXJn
MTc3NythcmcxNzc4K2FyZzE3NzkrYXJnMTc4MCthcmcxNzgxK2FyZzE3ODIrYXJnMTc4Mythcmcx
Nzg0K2FyZzE3ODUrYXJnMTc4NithcmcxNzg3K2FyZzE3ODgrYXJnMTc4OSthcmcxNzkwK2FyZzE3
OTErYXJnMTc5MithcmcxNzkzK2FyZzE3OTQrYXJnMTc5NSthcmcxNzk2K2FyZzE3OTcrYXJnMTc5
OCthcmcxNzk5K2FyZzE4MDArYXJnMTgwMSthcmcxODAyK2FyZzE4MDMrYXJnMTgwNCthcmcxODA1
K2FyZzE4MDYrYXJnMTgwNythcmcxODA4K2FyZzE4MDkrYXJnMTgxMCthcmcxODExK2FyZzE4MTIr
YXJnMTgxMythcmcxODE0K2FyZzE4MTUrYXJnMTgxNithcmcxODE3K2FyZzE4MTgrYXJnMTgxOSth
cmcxODIwK2FyZzE4MjErYXJnMTgyMithcmcxODIzK2FyZzE4MjQrYXJnMTgyNSthcmcxODI2K2Fy
ZzE4MjcrYXJnMTgyOCthcmcxODI5K2FyZzE4MzArYXJnMTgzMSthcmcxODMyK2FyZzE4MzMrYXJn
MTgzNCthcmcxODM1K2FyZzE4MzYrYXJnMTgzNythcmcxODM4K2FyZzE4MzkrYXJnMTg0MCthcmcx
ODQxK2FyZzE4NDIrYXJnMTg0MythcmcxODQ0K2FyZzE4NDUrYXJnMTg0NithcmcxODQ3K2FyZzE4
NDgrYXJnMTg0OSthcmcxODUwK2FyZzE4NTErYXJnMTg1MithcmcxODUzK2FyZzE4NTQrYXJnMTg1
NSthcmcxODU2K2FyZzE4NTcrYXJnMTg1OCthcmcxODU5K2FyZzE4NjArYXJnMTg2MSthcmcxODYy
K2FyZzE4NjMrYXJnMTg2NCthcmcxODY1K2FyZzE4NjYrYXJnMTg2NythcmcxODY4K2FyZzE4Njkr
YXJnMTg3MCthcmcxODcxK2FyZzE4NzIrYXJnMTg3MythcmcxODc0K2FyZzE4NzUrYXJnMTg3Nith
cmcxODc3K2FyZzE4NzgrYXJnMTg3OSthcmcxODgwK2FyZzE4ODErYXJnMTg4MithcmcxODgzK2Fy
ZzE4ODQrYXJnMTg4NSthcmcxODg2K2FyZzE4ODcrYXJnMTg4OCthcmcxODg5K2FyZzE4OTArYXJn
MTg5MSthcmcxODkyK2FyZzE4OTMrYXJnMTg5NCthcmcxODk1K2FyZzE4OTYrYXJnMTg5Nythcmcx
ODk4K2FyZzE4OTkrYXJnMTkwMCthcmcxOTAxK2FyZzE5MDIrYXJnMTkwMythcmcxOTA0K2FyZzE5
MDUrYXJnMTkwNithcmcxOTA3K2FyZzE5MDgrYXJnMTkwOSthcmcxOTEwK2FyZzE5MTErYXJnMTkx
MithcmcxOTEzK2FyZzE5MTQrYXJnMTkxNSthcmcxOTE2K2FyZzE5MTcrYXJnMTkxOCthcmcxOTE5
K2FyZzE5MjArYXJnMTkyMSthcmcxOTIyK2FyZzE5MjMrYXJnMTkyNCthcmcxOTI1K2FyZzE5MjYr
YXJnMTkyNythcmcxOTI4K2FyZzE5MjkrYXJnMTkzMCthcmcxOTMxK2FyZzE5MzIrYXJnMTkzMyth
cmcxOTM0K2FyZzE5MzUrYXJnMTkzNithcmcxOTM3K2FyZzE5MzgrYXJnMTkzOSthcmcxOTQwK2Fy
ZzE5NDErYXJnMTk0MithcmcxOTQzK2FyZzE5NDQrYXJnMTk0NSthcmcxOTQ2K2FyZzE5NDcrYXJn
MTk0OCthcmcxOTQ5K2FyZzE5NTArYXJnMTk1MSthcmcxOTUyK2FyZzE5NTMrYXJnMTk1NCthcmcx
OTU1K2FyZzE5NTYrYXJnMTk1NythcmcxOTU4K2FyZzE5NTkrYXJnMTk2MCthcmcxOTYxK2FyZzE5
NjIrYXJnMTk2MythcmcxOTY0K2FyZzE5NjUrYXJnMTk2NithcmcxOTY3K2FyZzE5NjgrYXJnMTk2
OSthcmcxOTcwK2FyZzE5NzErYXJnMTk3MithcmcxOTczK2FyZzE5NzQrYXJnMTk3NSthcmcxOTc2
K2FyZzE5NzcrYXJnMTk3OCthcmcxOTc5K2FyZzE5ODArYXJnMTk4MSthcmcxOTgyK2FyZzE5ODMr
YXJnMTk4NCthcmcxOTg1K2FyZzE5ODYrYXJnMTk4NythcmcxOTg4K2FyZzE5ODkrYXJnMTk5MCth
cmcxOTkxK2FyZzE5OTIrYXJnMTk5MythcmcxOTk0K2FyZzE5OTUrYXJnMTk5NithcmcxOTk3K2Fy
ZzE5OTgrYXJnMTk5OSthcmcyMDAwK2FyZzIwMDErYXJnMjAwMithcmcyMDAzK2FyZzIwMDQrYXJn
MjAwNSthcmcyMDA2K2FyZzIwMDcrYXJnMjAwOCthcmcyMDA5K2FyZzIwMTArYXJnMjAxMSthcmcy
MDEyK2FyZzIwMTMrYXJnMjAxNCthcmcyMDE1K2FyZzIwMTYrYXJnMjAxNythcmcyMDE4K2FyZzIw
MTkrYXJnMjAyMCthcmcyMDIxK2FyZzIwMjIrYXJnMjAyMythcmcyMDI0K2FyZzIwMjUrYXJnMjAy
NithcmcyMDI3K2FyZzIwMjgrYXJnMjAyOSthcmcyMDMwK2FyZzIwMzErYXJnMjAzMithcmcyMDMz
K2FyZzIwMzQrYXJnMjAzNSthcmcyMDM2K2FyZzIwMzcrYXJnMjAzOCthcmcyMDM5K2FyZzIwNDAr
YXJnMjA0MSthcmcyMDQyK2FyZzIwNDMrYXJnMjA0NCthcmcyMDQ1K2FyZzIwNDYrYXJnMjA0Nyth
cmcyMDQ4K2FyZzIwNDkrYXJnMjA1MCthcmcyMDUxK2FyZzIwNTIrYXJnMjA1MythcmcyMDU0K2Fy
ZzIwNTUrYXJnMjA1NithcmcyMDU3K2FyZzIwNTgrYXJnMjA1OSthcmcyMDYwK2FyZzIwNjErYXJn
MjA2MithcmcyMDYzK2FyZzIwNjQrYXJnMjA2NSthcmcyMDY2K2FyZzIwNjcrYXJnMjA2OCthcmcy
MDY5K2FyZzIwNzArYXJnMjA3MSthcmcyMDcyK2FyZzIwNzMrYXJnMjA3NCthcmcyMDc1K2FyZzIw
NzYrYXJnMjA3NythcmcyMDc4K2FyZzIwNzkrYXJnMjA4MCthcmcyMDgxK2FyZzIwODIrYXJnMjA4
MythcmcyMDg0K2FyZzIwODUrYXJnMjA4NithcmcyMDg3K2FyZzIwODgrYXJnMjA4OSthcmcyMDkw
K2FyZzIwOTErYXJnMjA5MithcmcyMDkzK2FyZzIwOTQrYXJnMjA5NSthcmcyMDk2K2FyZzIwOTcr
YXJnMjA5OCthcmcyMDk5K2FyZzIxMDArYXJnMjEwMSthcmcyMTAyK2FyZzIxMDMrYXJnMjEwNCth
cmcyMTA1K2FyZzIxMDYrYXJnMjEwNythcmcyMTA4K2FyZzIxMDkrYXJnMjExMCthcmcyMTExK2Fy
ZzIxMTIrYXJnMjExMythcmcyMTE0K2FyZzIxMTUrYXJnMjExNithcmcyMTE3K2FyZzIxMTgrYXJn
MjExOSthcmcyMTIwK2FyZzIxMjErYXJnMjEyMithcmcyMTIzK2FyZzIxMjQrYXJnMjEyNSthcmcy
MTI2K2FyZzIxMjcrYXJnMjEyOCthcmcyMTI5K2FyZzIxMzArYXJnMjEzMSthcmcyMTMyK2FyZzIx
MzMrYXJnMjEzNCthcmcyMTM1K2FyZzIxMzYrYXJnMjEzNythcmcyMTM4K2FyZzIxMzkrYXJnMjE0
MCthcmcyMTQxK2FyZzIxNDIrYXJnMjE0MythcmcyMTQ0K2FyZzIxNDUrYXJnMjE0NithcmcyMTQ3
K2FyZzIxNDgrYXJnMjE0OSthcmcyMTUwK2FyZzIxNTErYXJnMjE1MithcmcyMTUzK2FyZzIxNTQr
YXJnMjE1NSthcmcyMTU2K2FyZzIxNTcrYXJnMjE1OCthcmcyMTU5K2FyZzIxNjArYXJnMjE2MSth
cmcyMTYyK2FyZzIxNjMrYXJnMjE2NCthcmcyMTY1K2FyZzIxNjYrYXJnMjE2NythcmcyMTY4K2Fy
ZzIxNjkrYXJnMjE3MCthcmcyMTcxK2FyZzIxNzIrYXJnMjE3MythcmcyMTc0K2FyZzIxNzUrYXJn
MjE3NithcmcyMTc3K2FyZzIxNzgrYXJnMjE3OSthcmcyMTgwK2FyZzIxODErYXJnMjE4Mithcmcy
MTgzK2FyZzIxODQrYXJnMjE4NSthcmcyMTg2K2FyZzIxODcrYXJnMjE4OCthcmcyMTg5K2FyZzIx
OTArYXJnMjE5MSthcmcyMTkyK2FyZzIxOTMrYXJnMjE5NCthcmcyMTk1K2FyZzIxOTYrYXJnMjE5
NythcmcyMTk4K2FyZzIxOTkrYXJnMjIwMCthcmcyMjAxK2FyZzIyMDIrYXJnMjIwMythcmcyMjA0
K2FyZzIyMDUrYXJnMjIwNithcmcyMjA3K2FyZzIyMDgrYXJnMjIwOSthcmcyMjEwK2FyZzIyMTEr
YXJnMjIxMithcmcyMjEzK2FyZzIyMTQrYXJnMjIxNSthcmcyMjE2K2FyZzIyMTcrYXJnMjIxOCth
cmcyMjE5K2FyZzIyMjArYXJnMjIyMSthcmcyMjIyK2FyZzIyMjMrYXJnMjIyNCthcmcyMjI1K2Fy
ZzIyMjYrYXJnMjIyNythcmcyMjI4K2FyZzIyMjkrYXJnMjIzMCthcmcyMjMxK2FyZzIyMzIrYXJn
MjIzMythcmcyMjM0K2FyZzIyMzUrYXJnMjIzNithcmcyMjM3K2FyZzIyMzgrYXJnMjIzOSthcmcy
MjQwK2FyZzIyNDErYXJnMjI0MithcmcyMjQzK2FyZzIyNDQrYXJnMjI0NSthcmcyMjQ2K2FyZzIy
NDcrYXJnMjI0OCthcmcyMjQ5K2FyZzIyNTArYXJnMjI1MSthcmcyMjUyK2FyZzIyNTMrYXJnMjI1
NCthcmcyMjU1K2FyZzIyNTYrYXJnMjI1NythcmcyMjU4K2FyZzIyNTkrYXJnMjI2MCthcmcyMjYx
K2FyZzIyNjIrYXJnMjI2MythcmcyMjY0K2FyZzIyNjUrYXJnMjI2NithcmcyMjY3K2FyZzIyNjgr
YXJnMjI2OSthcmcyMjcwK2FyZzIyNzErYXJnMjI3MithcmcyMjczK2FyZzIyNzQrYXJnMjI3NSth
cmcyMjc2K2FyZzIyNzcrYXJnMjI3OCthcmcyMjc5K2FyZzIyODArYXJnMjI4MSthcmcyMjgyK2Fy
ZzIyODMrYXJnMjI4NCthcmcyMjg1K2FyZzIyODYrYXJnMjI4NythcmcyMjg4K2FyZzIyODkrYXJn
MjI5MCthcmcyMjkxK2FyZzIyOTIrYXJnMjI5MythcmcyMjk0K2FyZzIyOTUrYXJnMjI5Nithcmcy
Mjk3K2FyZzIyOTgrYXJnMjI5OSthcmcyMzAwK2FyZzIzMDErYXJnMjMwMithcmcyMzAzK2FyZzIz
MDQrYXJnMjMwNSthcmcyMzA2K2FyZzIzMDcrYXJnMjMwOCthcmcyMzA5K2FyZzIzMTArYXJnMjMx
MSthcmcyMzEyK2FyZzIzMTMrYXJnMjMxNCthcmcyMzE1K2FyZzIzMTYrYXJnMjMxNythcmcyMzE4
K2FyZzIzMTkrYXJnMjMyMCthcmcyMzIxK2FyZzIzMjIrYXJnMjMyMythcmcyMzI0K2FyZzIzMjUr
YXJnMjMyNithcmcyMzI3K2FyZzIzMjgrYXJnMjMyOSthcmcyMzMwK2FyZzIzMzErYXJnMjMzMith
cmcyMzMzK2FyZzIzMzQrYXJnMjMzNSthcmcyMzM2K2FyZzIzMzcrYXJnMjMzOCthcmcyMzM5K2Fy
ZzIzNDArYXJnMjM0MSthcmcyMzQyK2FyZzIzNDMrYXJnMjM0NCthcmcyMzQ1K2FyZzIzNDYrYXJn
MjM0NythcmcyMzQ4K2FyZzIzNDkrYXJnMjM1MCthcmcyMzUxK2FyZzIzNTIrYXJnMjM1Mythcmcy
MzU0K2FyZzIzNTUrYXJnMjM1NithcmcyMzU3K2FyZzIzNTgrYXJnMjM1OSthcmcyMzYwK2FyZzIz
NjErYXJnMjM2MithcmcyMzYzK2FyZzIzNjQrYXJnMjM2NSthcmcyMzY2K2FyZzIzNjcrYXJnMjM2
OCthcmcyMzY5K2FyZzIzNzArYXJnMjM3MSthcmcyMzcyK2FyZzIzNzMrYXJnMjM3NCthcmcyMzc1
K2FyZzIzNzYrYXJnMjM3NythcmcyMzc4K2FyZzIzNzkrYXJnMjM4MCthcmcyMzgxK2FyZzIzODIr
YXJnMjM4MythcmcyMzg0K2FyZzIzODUrYXJnMjM4NithcmcyMzg3K2FyZzIzODgrYXJnMjM4OSth
cmcyMzkwK2FyZzIzOTErYXJnMjM5MithcmcyMzkzK2FyZzIzOTQrYXJnMjM5NSthcmcyMzk2K2Fy
ZzIzOTcrYXJnMjM5OCthcmcyMzk5K2FyZzI0MDArYXJnMjQwMSthcmcyNDAyK2FyZzI0MDMrYXJn
MjQwNCthcmcyNDA1K2FyZzI0MDYrYXJnMjQwNythcmcyNDA4K2FyZzI0MDkrYXJnMjQxMCthcmcy
NDExK2FyZzI0MTIrYXJnMjQxMythcmcyNDE0K2FyZzI0MTUrYXJnMjQxNithcmcyNDE3K2FyZzI0
MTgrYXJnMjQxOSthcmcyNDIwK2FyZzI0MjErYXJnMjQyMithcmcyNDIzK2FyZzI0MjQrYXJnMjQy
NSthcmcyNDI2K2FyZzI0MjcrYXJnMjQyOCthcmcyNDI5K2FyZzI0MzArYXJnMjQzMSthcmcyNDMy
K2FyZzI0MzMrYXJnMjQzNCthcmcyNDM1K2FyZzI0MzYrYXJnMjQzNythcmcyNDM4K2FyZzI0Mzkr
YXJnMjQ0MCthcmcyNDQxK2FyZzI0NDIrYXJnMjQ0MythcmcyNDQ0K2FyZzI0NDUrYXJnMjQ0Nith
cmcyNDQ3K2FyZzI0NDgrYXJnMjQ0OSthcmcyNDUwK2FyZzI0NTErYXJnMjQ1MithcmcyNDUzK2Fy
ZzI0NTQrYXJnMjQ1NSthcmcyNDU2K2FyZzI0NTcrYXJnMjQ1OCthcmcyNDU5K2FyZzI0NjArYXJn
MjQ2MSthcmcyNDYyK2FyZzI0NjMrYXJnMjQ2NCthcmcyNDY1K2FyZzI0NjYrYXJnMjQ2Nythcmcy
NDY4K2FyZzI0NjkrYXJnMjQ3MCthcmcyNDcxK2FyZzI0NzIrYXJnMjQ3MythcmcyNDc0K2FyZzI0
NzUrYXJnMjQ3NithcmcyNDc3K2FyZzI0NzgrYXJnMjQ3OSthcmcyNDgwK2FyZzI0ODErYXJnMjQ4
MithcmcyNDgzK2FyZzI0ODQrYXJnMjQ4NSthcmcyNDg2K2FyZzI0ODcrYXJnMjQ4OCthcmcyNDg5
K2FyZzI0OTArYXJnMjQ5MSthcmcyNDkyK2FyZzI0OTMrYXJnMjQ5NCthcmcyNDk1K2FyZzI0OTYr
YXJnMjQ5NythcmcyNDk4K2FyZzI0OTkrYXJnMjUwMCthcmcyNTAxK2FyZzI1MDIrYXJnMjUwMyth
cmcyNTA0K2FyZzI1MDUrYXJnMjUwNithcmcyNTA3K2FyZzI1MDgrYXJnMjUwOSthcmcyNTEwK2Fy
ZzI1MTErYXJnMjUxMithcmcyNTEzK2FyZzI1MTQrYXJnMjUxNSthcmcyNTE2K2FyZzI1MTcrYXJn
MjUxOCthcmcyNTE5K2FyZzI1MjArYXJnMjUyMSthcmcyNTIyK2FyZzI1MjMrYXJnMjUyNCthcmcy
NTI1K2FyZzI1MjYrYXJnMjUyNythcmcyNTI4K2FyZzI1MjkrYXJnMjUzMCthcmcyNTMxK2FyZzI1
MzIrYXJnMjUzMythcmcyNTM0K2FyZzI1MzUrYXJnMjUzNithcmcyNTM3K2FyZzI1MzgrYXJnMjUz
OSthcmcyNTQwK2FyZzI1NDErYXJnMjU0MithcmcyNTQzK2FyZzI1NDQrYXJnMjU0NSthcmcyNTQ2
K2FyZzI1NDcrYXJnMjU0OCthcmcyNTQ5K2FyZzI1NTArYXJnMjU1MSthcmcyNTUyK2FyZzI1NTMr
YXJnMjU1NCthcmcyNTU1K2FyZzI1NTYrYXJnMjU1NythcmcyNTU4K2FyZzI1NTkrYXJnMjU2MCth
cmcyNTYxK2FyZzI1NjIrYXJnMjU2MythcmcyNTY0K2FyZzI1NjUrYXJnMjU2NithcmcyNTY3K2Fy
ZzI1NjgrYXJnMjU2OSthcmcyNTcwK2FyZzI1NzErYXJnMjU3MithcmcyNTczK2FyZzI1NzQrYXJn
MjU3NSthcmcyNTc2K2FyZzI1NzcrYXJnMjU3OCthcmcyNTc5K2FyZzI1ODArYXJnMjU4MSthcmcy
NTgyK2FyZzI1ODMrYXJnMjU4NCthcmcyNTg1K2FyZzI1ODYrYXJnMjU4NythcmcyNTg4K2FyZzI1
ODkrYXJnMjU5MCthcmcyNTkxK2FyZzI1OTIrYXJnMjU5MythcmcyNTk0K2FyZzI1OTUrYXJnMjU5
NithcmcyNTk3K2FyZzI1OTgrYXJnMjU5OSthcmcyNjAwK2FyZzI2MDErYXJnMjYwMithcmcyNjAz
K2FyZzI2MDQrYXJnMjYwNSthcmcyNjA2K2FyZzI2MDcrYXJnMjYwOCthcmcyNjA5K2FyZzI2MTAr
YXJnMjYxMSthcmcyNjEyK2FyZzI2MTMrYXJnMjYxNCthcmcyNjE1K2FyZzI2MTYrYXJnMjYxNyth
cmcyNjE4K2FyZzI2MTkrYXJnMjYyMCthcmcyNjIxK2FyZzI2MjIrYXJnMjYyMythcmcyNjI0K2Fy
ZzI2MjUrYXJnMjYyNithcmcyNjI3K2FyZzI2MjgrYXJnMjYyOSthcmcyNjMwK2FyZzI2MzErYXJn
MjYzMithcmcyNjMzK2FyZzI2MzQrYXJnMjYzNSthcmcyNjM2K2FyZzI2MzcrYXJnMjYzOCthcmcy
NjM5K2FyZzI2NDArYXJnMjY0MSthcmcyNjQyK2FyZzI2NDMrYXJnMjY0NCthcmcyNjQ1K2FyZzI2
NDYrYXJnMjY0NythcmcyNjQ4K2FyZzI2NDkrYXJnMjY1MCthcmcyNjUxK2FyZzI2NTIrYXJnMjY1
MythcmcyNjU0K2FyZzI2NTUrYXJnMjY1NithcmcyNjU3K2FyZzI2NTgrYXJnMjY1OSthcmcyNjYw
K2FyZzI2NjErYXJnMjY2MithcmcyNjYzK2FyZzI2NjQrYXJnMjY2NSthcmcyNjY2K2FyZzI2Njcr
YXJnMjY2OCthcmcyNjY5K2FyZzI2NzArYXJnMjY3MSthcmcyNjcyK2FyZzI2NzMrYXJnMjY3NCth
cmcyNjc1K2FyZzI2NzYrYXJnMjY3NythcmcyNjc4K2FyZzI2NzkrYXJnMjY4MCthcmcyNjgxK2Fy
ZzI2ODIrYXJnMjY4MythcmcyNjg0K2FyZzI2ODUrYXJnMjY4NithcmcyNjg3K2FyZzI2ODgrYXJn
MjY4OSthcmcyNjkwK2FyZzI2OTErYXJnMjY5MithcmcyNjkzK2FyZzI2OTQrYXJnMjY5NSthcmcy
Njk2K2FyZzI2OTcrYXJnMjY5OCthcmcyNjk5K2FyZzI3MDArYXJnMjcwMSthcmcyNzAyK2FyZzI3
MDMrYXJnMjcwNCthcmcyNzA1K2FyZzI3MDYrYXJnMjcwNythcmcyNzA4K2FyZzI3MDkrYXJnMjcx
MCthcmcyNzExK2FyZzI3MTIrYXJnMjcxMythcmcyNzE0K2FyZzI3MTUrYXJnMjcxNithcmcyNzE3
K2FyZzI3MTgrYXJnMjcxOSthcmcyNzIwK2FyZzI3MjErYXJnMjcyMithcmcyNzIzK2FyZzI3MjQr
YXJnMjcyNSthcmcyNzI2K2FyZzI3MjcrYXJnMjcyOCthcmcyNzI5K2FyZzI3MzArYXJnMjczMSth
cmcyNzMyK2FyZzI3MzMrYXJnMjczNCthcmcyNzM1K2FyZzI3MzYrYXJnMjczNythcmcyNzM4K2Fy
ZzI3MzkrYXJnMjc0MCthcmcyNzQxK2FyZzI3NDIrYXJnMjc0MythcmcyNzQ0K2FyZzI3NDUrYXJn
Mjc0NithcmcyNzQ3K2FyZzI3NDgrYXJnMjc0OSthcmcyNzUwK2FyZzI3NTErYXJnMjc1Mithcmcy
NzUzK2FyZzI3NTQrYXJnMjc1NSthcmcyNzU2K2FyZzI3NTcrYXJnMjc1OCthcmcyNzU5K2FyZzI3
NjArYXJnMjc2MSthcmcyNzYyK2FyZzI3NjMrYXJnMjc2NCthcmcyNzY1K2FyZzI3NjYrYXJnMjc2
NythcmcyNzY4K2FyZzI3NjkrYXJnMjc3MCthcmcyNzcxK2FyZzI3NzIrYXJnMjc3MythcmcyNzc0
K2FyZzI3NzUrYXJnMjc3NithcmcyNzc3K2FyZzI3NzgrYXJnMjc3OSthcmcyNzgwK2FyZzI3ODEr
YXJnMjc4MithcmcyNzgzK2FyZzI3ODQrYXJnMjc4NSthcmcyNzg2K2FyZzI3ODcrYXJnMjc4OCth
cmcyNzg5K2FyZzI3OTArYXJnMjc5MSthcmcyNzkyK2FyZzI3OTMrYXJnMjc5NCthcmcyNzk1K2Fy
ZzI3OTYrYXJnMjc5NythcmcyNzk4K2FyZzI3OTkrYXJnMjgwMCthcmcyODAxK2FyZzI4MDIrYXJn
MjgwMythcmcyODA0K2FyZzI4MDUrYXJnMjgwNithcmcyODA3K2FyZzI4MDgrYXJnMjgwOSthcmcy
ODEwK2FyZzI4MTErYXJnMjgxMithcmcyODEzK2FyZzI4MTQrYXJnMjgxNSthcmcyODE2K2FyZzI4
MTcrYXJnMjgxOCthcmcyODE5K2FyZzI4MjArYXJnMjgyMSthcmcyODIyK2FyZzI4MjMrYXJnMjgy
NCthcmcyODI1K2FyZzI4MjYrYXJnMjgyNythcmcyODI4K2FyZzI4MjkrYXJnMjgzMCthcmcyODMx
K2FyZzI4MzIrYXJnMjgzMythcmcyODM0K2FyZzI4MzUrYXJnMjgzNithcmcyODM3K2FyZzI4Mzgr
YXJnMjgzOSthcmcyODQwK2FyZzI4NDErYXJnMjg0MithcmcyODQzK2FyZzI4NDQrYXJnMjg0NSth
cmcyODQ2K2FyZzI4NDcrYXJnMjg0OCthcmcyODQ5K2FyZzI4NTArYXJnMjg1MSthcmcyODUyK2Fy
ZzI4NTMrYXJnMjg1NCthcmcyODU1K2FyZzI4NTYrYXJnMjg1NythcmcyODU4K2FyZzI4NTkrYXJn
Mjg2MCthcmcyODYxK2FyZzI4NjIrYXJnMjg2MythcmcyODY0K2FyZzI4NjUrYXJnMjg2Nithcmcy
ODY3K2FyZzI4NjgrYXJnMjg2OSthcmcyODcwK2FyZzI4NzErYXJnMjg3MithcmcyODczK2FyZzI4
NzQrYXJnMjg3NSthcmcyODc2K2FyZzI4NzcrYXJnMjg3OCthcmcyODc5K2FyZzI4ODArYXJnMjg4
MSthcmcyODgyK2FyZzI4ODMrYXJnMjg4NCthcmcyODg1K2FyZzI4ODYrYXJnMjg4NythcmcyODg4
K2FyZzI4ODkrYXJnMjg5MCthcmcyODkxK2FyZzI4OTIrYXJnMjg5MythcmcyODk0K2FyZzI4OTUr
YXJnMjg5NithcmcyODk3K2FyZzI4OTgrYXJnMjg5OSthcmcyOTAwK2FyZzI5MDErYXJnMjkwMith
cmcyOTAzK2FyZzI5MDQrYXJnMjkwNSthcmcyOTA2K2FyZzI5MDcrYXJnMjkwOCthcmcyOTA5K2Fy
ZzI5MTArYXJnMjkxMSthcmcyOTEyK2FyZzI5MTMrYXJnMjkxNCthcmcyOTE1K2FyZzI5MTYrYXJn
MjkxNythcmcyOTE4K2FyZzI5MTkrYXJnMjkyMCthcmcyOTIxK2FyZzI5MjIrYXJnMjkyMythcmcy
OTI0K2FyZzI5MjUrYXJnMjkyNithcmcyOTI3K2FyZzI5MjgrYXJnMjkyOSthcmcyOTMwK2FyZzI5
MzErYXJnMjkzMithcmcyOTMzK2FyZzI5MzQrYXJnMjkzNSthcmcyOTM2K2FyZzI5MzcrYXJnMjkz
OCthcmcyOTM5K2FyZzI5NDArYXJnMjk0MSthcmcyOTQyK2FyZzI5NDMrYXJnMjk0NCthcmcyOTQ1
K2FyZzI5NDYrYXJnMjk0NythcmcyOTQ4K2FyZzI5NDkrYXJnMjk1MCthcmcyOTUxK2FyZzI5NTIr
YXJnMjk1MythcmcyOTU0K2FyZzI5NTUrYXJnMjk1NithcmcyOTU3K2FyZzI5NTgrYXJnMjk1OSth
cmcyOTYwK2FyZzI5NjErYXJnMjk2MithcmcyOTYzK2FyZzI5NjQrYXJnMjk2NSthcmcyOTY2K2Fy
ZzI5NjcrYXJnMjk2OCthcmcyOTY5K2FyZzI5NzArYXJnMjk3MSthcmcyOTcyK2FyZzI5NzMrYXJn
Mjk3NCthcmcyOTc1K2FyZzI5NzYrYXJnMjk3NythcmcyOTc4K2FyZzI5NzkrYXJnMjk4MCthcmcy
OTgxK2FyZzI5ODIrYXJnMjk4MythcmcyOTg0K2FyZzI5ODUrYXJnMjk4NithcmcyOTg3K2FyZzI5
ODgrYXJnMjk4OSthcmcyOTkwK2FyZzI5OTErYXJnMjk5MithcmcyOTkzK2FyZzI5OTQrYXJnMjk5
NSthcmcyOTk2K2FyZzI5OTcrYXJnMjk5OCthcmcyOTk5K2FyZzMwMDArYXJnMzAwMSthcmczMDAy
K2FyZzMwMDMrYXJnMzAwNCthcmczMDA1K2FyZzMwMDYrYXJnMzAwNythcmczMDA4K2FyZzMwMDkr
YXJnMzAxMCthcmczMDExK2FyZzMwMTIrYXJnMzAxMythcmczMDE0K2FyZzMwMTUrYXJnMzAxNith
cmczMDE3K2FyZzMwMTgrYXJnMzAxOSthcmczMDIwK2FyZzMwMjErYXJnMzAyMithcmczMDIzK2Fy
ZzMwMjQrYXJnMzAyNSthcmczMDI2K2FyZzMwMjcrYXJnMzAyOCthcmczMDI5K2FyZzMwMzArYXJn
MzAzMSthcmczMDMyK2FyZzMwMzMrYXJnMzAzNCthcmczMDM1K2FyZzMwMzYrYXJnMzAzNythcmcz
MDM4K2FyZzMwMzkrYXJnMzA0MCthcmczMDQxK2FyZzMwNDIrYXJnMzA0MythcmczMDQ0K2FyZzMw
NDUrYXJnMzA0NithcmczMDQ3K2FyZzMwNDgrYXJnMzA0OSthcmczMDUwK2FyZzMwNTErYXJnMzA1
MithcmczMDUzK2FyZzMwNTQrYXJnMzA1NSthcmczMDU2K2FyZzMwNTcrYXJnMzA1OCthcmczMDU5
K2FyZzMwNjArYXJnMzA2MSthcmczMDYyK2FyZzMwNjMrYXJnMzA2NCthcmczMDY1K2FyZzMwNjYr
YXJnMzA2NythcmczMDY4K2FyZzMwNjkrYXJnMzA3MCthcmczMDcxK2FyZzMwNzIrYXJnMzA3Myth
cmczMDc0K2FyZzMwNzUrYXJnMzA3NithcmczMDc3K2FyZzMwNzgrYXJnMzA3OSthcmczMDgwK2Fy
ZzMwODErYXJnMzA4MithcmczMDgzK2FyZzMwODQrYXJnMzA4NSthcmczMDg2K2FyZzMwODcrYXJn
MzA4OCthcmczMDg5K2FyZzMwOTArYXJnMzA5MSthcmczMDkyK2FyZzMwOTMrYXJnMzA5NCthcmcz
MDk1K2FyZzMwOTYrYXJnMzA5NythcmczMDk4K2FyZzMwOTkrYXJnMzEwMCthcmczMTAxK2FyZzMx
MDIrYXJnMzEwMythcmczMTA0K2FyZzMxMDUrYXJnMzEwNithcmczMTA3K2FyZzMxMDgrYXJnMzEw
OSthcmczMTEwK2FyZzMxMTErYXJnMzExMithcmczMTEzK2FyZzMxMTQrYXJnMzExNSthcmczMTE2
K2FyZzMxMTcrYXJnMzExOCthcmczMTE5K2FyZzMxMjArYXJnMzEyMSthcmczMTIyK2FyZzMxMjMr
YXJnMzEyNCthcmczMTI1K2FyZzMxMjYrYXJnMzEyNythcmczMTI4K2FyZzMxMjkrYXJnMzEzMCth
cmczMTMxK2FyZzMxMzIrYXJnMzEzMythcmczMTM0K2FyZzMxMzUrYXJnMzEzNithcmczMTM3K2Fy
ZzMxMzgrYXJnMzEzOSthcmczMTQwK2FyZzMxNDErYXJnMzE0MithcmczMTQzK2FyZzMxNDQrYXJn
MzE0NSthcmczMTQ2K2FyZzMxNDcrYXJnMzE0OCthcmczMTQ5K2FyZzMxNTArYXJnMzE1MSthcmcz
MTUyK2FyZzMxNTMrYXJnMzE1NCthcmczMTU1K2FyZzMxNTYrYXJnMzE1NythcmczMTU4K2FyZzMx
NTkrYXJnMzE2MCthcmczMTYxK2FyZzMxNjIrYXJnMzE2MythcmczMTY0K2FyZzMxNjUrYXJnMzE2
NithcmczMTY3K2FyZzMxNjgrYXJnMzE2OSthcmczMTcwK2FyZzMxNzErYXJnMzE3MithcmczMTcz
K2FyZzMxNzQrYXJnMzE3NSthcmczMTc2K2FyZzMxNzcrYXJnMzE3OCthcmczMTc5K2FyZzMxODAr
YXJnMzE4MSthcmczMTgyK2FyZzMxODMrYXJnMzE4NCthcmczMTg1K2FyZzMxODYrYXJnMzE4Nyth
cmczMTg4K2FyZzMxODkrYXJnMzE5MCthcmczMTkxK2FyZzMxOTIrYXJnMzE5MythcmczMTk0K2Fy
ZzMxOTUrYXJnMzE5NithcmczMTk3K2FyZzMxOTgrYXJnMzE5OSthcmczMjAwK2FyZzMyMDErYXJn
MzIwMithcmczMjAzK2FyZzMyMDQrYXJnMzIwNSthcmczMjA2K2FyZzMyMDcrYXJnMzIwOCthcmcz
MjA5K2FyZzMyMTArYXJnMzIxMSthcmczMjEyK2FyZzMyMTMrYXJnMzIxNCthcmczMjE1K2FyZzMy
MTYrYXJnMzIxNythcmczMjE4K2FyZzMyMTkrYXJnMzIyMCthcmczMjIxK2FyZzMyMjIrYXJnMzIy
MythcmczMjI0K2FyZzMyMjUrYXJnMzIyNithcmczMjI3K2FyZzMyMjgrYXJnMzIyOSthcmczMjMw
K2FyZzMyMzErYXJnMzIzMithcmczMjMzK2FyZzMyMzQrYXJnMzIzNSthcmczMjM2K2FyZzMyMzcr
YXJnMzIzOCthcmczMjM5K2FyZzMyNDArYXJnMzI0MSthcmczMjQyK2FyZzMyNDMrYXJnMzI0NCth
cmczMjQ1K2FyZzMyNDYrYXJnMzI0NythcmczMjQ4K2FyZzMyNDkrYXJnMzI1MCthcmczMjUxK2Fy
ZzMyNTIrYXJnMzI1MythcmczMjU0K2FyZzMyNTUrYXJnMzI1NithcmczMjU3K2FyZzMyNTgrYXJn
MzI1OSthcmczMjYwK2FyZzMyNjErYXJnMzI2MithcmczMjYzK2FyZzMyNjQrYXJnMzI2NSthcmcz
MjY2K2FyZzMyNjcrYXJnMzI2OCthcmczMjY5K2FyZzMyNzArYXJnMzI3MSthcmczMjcyK2FyZzMy
NzMrYXJnMzI3NCthcmczMjc1K2FyZzMyNzYrYXJnMzI3NythcmczMjc4K2FyZzMyNzkrYXJnMzI4
MCthcmczMjgxK2FyZzMyODIrYXJnMzI4MythcmczMjg0K2FyZzMyODUrYXJnMzI4NithcmczMjg3
K2FyZzMyODgrYXJnMzI4OSthcmczMjkwK2FyZzMyOTErYXJnMzI5MithcmczMjkzK2FyZzMyOTQr
YXJnMzI5NSthcmczMjk2K2FyZzMyOTcrYXJnMzI5OCthcmczMjk5K2FyZzMzMDArYXJnMzMwMSth
cmczMzAyK2FyZzMzMDMrYXJnMzMwNCthcmczMzA1K2FyZzMzMDYrYXJnMzMwNythcmczMzA4K2Fy
ZzMzMDkrYXJnMzMxMCthcmczMzExK2FyZzMzMTIrYXJnMzMxMythcmczMzE0K2FyZzMzMTUrYXJn
MzMxNithcmczMzE3K2FyZzMzMTgrYXJnMzMxOSthcmczMzIwK2FyZzMzMjErYXJnMzMyMithcmcz
MzIzK2FyZzMzMjQrYXJnMzMyNSthcmczMzI2K2FyZzMzMjcrYXJnMzMyOCthcmczMzI5K2FyZzMz
MzArYXJnMzMzMSthcmczMzMyK2FyZzMzMzMrYXJnMzMzNCthcmczMzM1K2FyZzMzMzYrYXJnMzMz
NythcmczMzM4K2FyZzMzMzkrYXJnMzM0MCthcmczMzQxK2FyZzMzNDIrYXJnMzM0MythcmczMzQ0
K2FyZzMzNDUrYXJnMzM0NithcmczMzQ3K2FyZzMzNDgrYXJnMzM0OSthcmczMzUwK2FyZzMzNTEr
YXJnMzM1MithcmczMzUzK2FyZzMzNTQrYXJnMzM1NSthcmczMzU2K2FyZzMzNTcrYXJnMzM1OCth
cmczMzU5K2FyZzMzNjArYXJnMzM2MSthcmczMzYyK2FyZzMzNjMrYXJnMzM2NCthcmczMzY1K2Fy
ZzMzNjYrYXJnMzM2NythcmczMzY4K2FyZzMzNjkrYXJnMzM3MCthcmczMzcxK2FyZzMzNzIrYXJn
MzM3MythcmczMzc0K2FyZzMzNzUrYXJnMzM3NithcmczMzc3K2FyZzMzNzgrYXJnMzM3OSthcmcz
MzgwK2FyZzMzODErYXJnMzM4MithcmczMzgzK2FyZzMzODQrYXJnMzM4NSthcmczMzg2K2FyZzMz
ODcrYXJnMzM4OCthcmczMzg5K2FyZzMzOTArYXJnMzM5MSthcmczMzkyK2FyZzMzOTMrYXJnMzM5
NCthcmczMzk1K2FyZzMzOTYrYXJnMzM5NythcmczMzk4K2FyZzMzOTkrYXJnMzQwMCthcmczNDAx
K2FyZzM0MDIrYXJnMzQwMythcmczNDA0K2FyZzM0MDUrYXJnMzQwNithcmczNDA3K2FyZzM0MDgr
YXJnMzQwOSthcmczNDEwK2FyZzM0MTErYXJnMzQxMithcmczNDEzK2FyZzM0MTQrYXJnMzQxNSth
cmczNDE2K2FyZzM0MTcrYXJnMzQxOCthcmczNDE5K2FyZzM0MjArYXJnMzQyMSthcmczNDIyK2Fy
ZzM0MjMrYXJnMzQyNCthcmczNDI1K2FyZzM0MjYrYXJnMzQyNythcmczNDI4K2FyZzM0MjkrYXJn
MzQzMCthcmczNDMxK2FyZzM0MzIrYXJnMzQzMythcmczNDM0K2FyZzM0MzUrYXJnMzQzNithcmcz
NDM3K2FyZzM0MzgrYXJnMzQzOSthcmczNDQwK2FyZzM0NDErYXJnMzQ0MithcmczNDQzK2FyZzM0
NDQrYXJnMzQ0NSthcmczNDQ2K2FyZzM0NDcrYXJnMzQ0OCthcmczNDQ5K2FyZzM0NTArYXJnMzQ1
MSthcmczNDUyK2FyZzM0NTMrYXJnMzQ1NCthcmczNDU1K2FyZzM0NTYrYXJnMzQ1NythcmczNDU4
K2FyZzM0NTkrYXJnMzQ2MCthcmczNDYxK2FyZzM0NjIrYXJnMzQ2MythcmczNDY0K2FyZzM0NjUr
YXJnMzQ2NithcmczNDY3K2FyZzM0NjgrYXJnMzQ2OSthcmczNDcwK2FyZzM0NzErYXJnMzQ3Mith
cmczNDczK2FyZzM0NzQrYXJnMzQ3NSthcmczNDc2K2FyZzM0NzcrYXJnMzQ3OCthcmczNDc5K2Fy
ZzM0ODArYXJnMzQ4MSthcmczNDgyK2FyZzM0ODMrYXJnMzQ4NCthcmczNDg1K2FyZzM0ODYrYXJn
MzQ4NythcmczNDg4K2FyZzM0ODkrYXJnMzQ5MCthcmczNDkxK2FyZzM0OTIrYXJnMzQ5Mythcmcz
NDk0K2FyZzM0OTUrYXJnMzQ5NithcmczNDk3K2FyZzM0OTgrYXJnMzQ5OSthcmczNTAwK2FyZzM1
MDErYXJnMzUwMithcmczNTAzK2FyZzM1MDQrYXJnMzUwNSthcmczNTA2K2FyZzM1MDcrYXJnMzUw
OCthcmczNTA5K2FyZzM1MTArYXJnMzUxMSthcmczNTEyK2FyZzM1MTMrYXJnMzUxNCthcmczNTE1
K2FyZzM1MTYrYXJnMzUxNythcmczNTE4K2FyZzM1MTkrYXJnMzUyMCthcmczNTIxK2FyZzM1MjIr
YXJnMzUyMythcmczNTI0K2FyZzM1MjUrYXJnMzUyNithcmczNTI3K2FyZzM1MjgrYXJnMzUyOSth
cmczNTMwK2FyZzM1MzErYXJnMzUzMithcmczNTMzK2FyZzM1MzQrYXJnMzUzNSthcmczNTM2K2Fy
ZzM1MzcrYXJnMzUzOCthcmczNTM5K2FyZzM1NDArYXJnMzU0MSthcmczNTQyK2FyZzM1NDMrYXJn
MzU0NCthcmczNTQ1K2FyZzM1NDYrYXJnMzU0NythcmczNTQ4K2FyZzM1NDkrYXJnMzU1MCthcmcz
NTUxK2FyZzM1NTIrYXJnMzU1MythcmczNTU0K2FyZzM1NTUrYXJnMzU1NithcmczNTU3K2FyZzM1
NTgrYXJnMzU1OSthcmczNTYwK2FyZzM1NjErYXJnMzU2MithcmczNTYzK2FyZzM1NjQrYXJnMzU2
NSthcmczNTY2K2FyZzM1NjcrYXJnMzU2OCthcmczNTY5K2FyZzM1NzArYXJnMzU3MSthcmczNTcy
K2FyZzM1NzMrYXJnMzU3NCthcmczNTc1K2FyZzM1NzYrYXJnMzU3NythcmczNTc4K2FyZzM1Nzkr
YXJnMzU4MCthcmczNTgxK2FyZzM1ODIrYXJnMzU4MythcmczNTg0K2FyZzM1ODUrYXJnMzU4Nith
cmczNTg3K2FyZzM1ODgrYXJnMzU4OSthcmczNTkwK2FyZzM1OTErYXJnMzU5MithcmczNTkzK2Fy
ZzM1OTQrYXJnMzU5NSthcmczNTk2K2FyZzM1OTcrYXJnMzU5OCthcmczNTk5K2FyZzM2MDArYXJn
MzYwMSthcmczNjAyK2FyZzM2MDMrYXJnMzYwNCthcmczNjA1K2FyZzM2MDYrYXJnMzYwNythcmcz
NjA4K2FyZzM2MDkrYXJnMzYxMCthcmczNjExK2FyZzM2MTIrYXJnMzYxMythcmczNjE0K2FyZzM2
MTUrYXJnMzYxNithcmczNjE3K2FyZzM2MTgrYXJnMzYxOSthcmczNjIwK2FyZzM2MjErYXJnMzYy
MithcmczNjIzK2FyZzM2MjQrYXJnMzYyNSthcmczNjI2K2FyZzM2MjcrYXJnMzYyOCthcmczNjI5
K2FyZzM2MzArYXJnMzYzMSthcmczNjMyK2FyZzM2MzMrYXJnMzYzNCthcmczNjM1K2FyZzM2MzYr
YXJnMzYzNythcmczNjM4K2FyZzM2MzkrYXJnMzY0MCthcmczNjQxK2FyZzM2NDIrYXJnMzY0Myth
cmczNjQ0K2FyZzM2NDUrYXJnMzY0NithcmczNjQ3K2FyZzM2NDgrYXJnMzY0OSthcmczNjUwK2Fy
ZzM2NTErYXJnMzY1MithcmczNjUzK2FyZzM2NTQrYXJnMzY1NSthcmczNjU2K2FyZzM2NTcrYXJn
MzY1OCthcmczNjU5K2FyZzM2NjArYXJnMzY2MSthcmczNjYyK2FyZzM2NjMrYXJnMzY2NCthcmcz
NjY1K2FyZzM2NjYrYXJnMzY2NythcmczNjY4K2FyZzM2NjkrYXJnMzY3MCthcmczNjcxK2FyZzM2
NzIrYXJnMzY3MythcmczNjc0K2FyZzM2NzUrYXJnMzY3NithcmczNjc3K2FyZzM2NzgrYXJnMzY3
OSthcmczNjgwK2FyZzM2ODErYXJnMzY4MithcmczNjgzK2FyZzM2ODQrYXJnMzY4NSthcmczNjg2
K2FyZzM2ODcrYXJnMzY4OCthcmczNjg5K2FyZzM2OTArYXJnMzY5MSthcmczNjkyK2FyZzM2OTMr
YXJnMzY5NCthcmczNjk1K2FyZzM2OTYrYXJnMzY5NythcmczNjk4K2FyZzM2OTkrYXJnMzcwMCth
cmczNzAxK2FyZzM3MDIrYXJnMzcwMythcmczNzA0K2FyZzM3MDUrYXJnMzcwNithcmczNzA3K2Fy
ZzM3MDgrYXJnMzcwOSthcmczNzEwK2FyZzM3MTErYXJnMzcxMithcmczNzEzK2FyZzM3MTQrYXJn
MzcxNSthcmczNzE2K2FyZzM3MTcrYXJnMzcxOCthcmczNzE5K2FyZzM3MjArYXJnMzcyMSthcmcz
NzIyK2FyZzM3MjMrYXJnMzcyNCthcmczNzI1K2FyZzM3MjYrYXJnMzcyNythcmczNzI4K2FyZzM3
MjkrYXJnMzczMCthcmczNzMxK2FyZzM3MzIrYXJnMzczMythcmczNzM0K2FyZzM3MzUrYXJnMzcz
NithcmczNzM3K2FyZzM3MzgrYXJnMzczOSthcmczNzQwK2FyZzM3NDErYXJnMzc0MithcmczNzQz
K2FyZzM3NDQrYXJnMzc0NSthcmczNzQ2K2FyZzM3NDcrYXJnMzc0OCthcmczNzQ5K2FyZzM3NTAr
YXJnMzc1MSthcmczNzUyK2FyZzM3NTMrYXJnMzc1NCthcmczNzU1K2FyZzM3NTYrYXJnMzc1Nyth
cmczNzU4K2FyZzM3NTkrYXJnMzc2MCthcmczNzYxK2FyZzM3NjIrYXJnMzc2MythcmczNzY0K2Fy
ZzM3NjUrYXJnMzc2NithcmczNzY3K2FyZzM3NjgrYXJnMzc2OSthcmczNzcwK2FyZzM3NzErYXJn
Mzc3MithcmczNzczK2FyZzM3NzQrYXJnMzc3NSthcmczNzc2K2FyZzM3NzcrYXJnMzc3OCthcmcz
Nzc5K2FyZzM3ODArYXJnMzc4MSthcmczNzgyK2FyZzM3ODMrYXJnMzc4NCthcmczNzg1K2FyZzM3
ODYrYXJnMzc4NythcmczNzg4K2FyZzM3ODkrYXJnMzc5MCthcmczNzkxK2FyZzM3OTIrYXJnMzc5
MythcmczNzk0K2FyZzM3OTUrYXJnMzc5NithcmczNzk3K2FyZzM3OTgrYXJnMzc5OSthcmczODAw
K2FyZzM4MDErYXJnMzgwMithcmczODAzK2FyZzM4MDQrYXJnMzgwNSthcmczODA2K2FyZzM4MDcr
YXJnMzgwOCthcmczODA5K2FyZzM4MTArYXJnMzgxMSthcmczODEyK2FyZzM4MTMrYXJnMzgxNCth
cmczODE1K2FyZzM4MTYrYXJnMzgxNythcmczODE4K2FyZzM4MTkrYXJnMzgyMCthcmczODIxK2Fy
ZzM4MjIrYXJnMzgyMythcmczODI0K2FyZzM4MjUrYXJnMzgyNithcmczODI3K2FyZzM4MjgrYXJn
MzgyOSthcmczODMwK2FyZzM4MzErYXJnMzgzMithcmczODMzK2FyZzM4MzQrYXJnMzgzNSthcmcz
ODM2K2FyZzM4MzcrYXJnMzgzOCthcmczODM5K2FyZzM4NDArYXJnMzg0MSthcmczODQyK2FyZzM4
NDMrYXJnMzg0NCthcmczODQ1K2FyZzM4NDYrYXJnMzg0NythcmczODQ4K2FyZzM4NDkrYXJnMzg1
MCthcmczODUxK2FyZzM4NTIrYXJnMzg1MythcmczODU0K2FyZzM4NTUrYXJnMzg1NithcmczODU3
K2FyZzM4NTgrYXJnMzg1OSthcmczODYwK2FyZzM4NjErYXJnMzg2MithcmczODYzK2FyZzM4NjQr
YXJnMzg2NSthcmczODY2K2FyZzM4NjcrYXJnMzg2OCthcmczODY5K2FyZzM4NzArYXJnMzg3MSth
cmczODcyK2FyZzM4NzMrYXJnMzg3NCthcmczODc1K2FyZzM4NzYrYXJnMzg3NythcmczODc4K2Fy
ZzM4NzkrYXJnMzg4MCthcmczODgxK2FyZzM4ODIrYXJnMzg4MythcmczODg0K2FyZzM4ODUrYXJn
Mzg4NithcmczODg3K2FyZzM4ODgrYXJnMzg4OSthcmczODkwK2FyZzM4OTErYXJnMzg5Mithcmcz
ODkzK2FyZzM4OTQrYXJnMzg5NSthcmczODk2K2FyZzM4OTcrYXJnMzg5OCthcmczODk5K2FyZzM5
MDArYXJnMzkwMSthcmczOTAyK2FyZzM5MDMrYXJnMzkwNCthcmczOTA1K2FyZzM5MDYrYXJnMzkw
NythcmczOTA4K2FyZzM5MDkrYXJnMzkxMCthcmczOTExK2FyZzM5MTIrYXJnMzkxMythcmczOTE0
K2FyZzM5MTUrYXJnMzkxNithcmczOTE3K2FyZzM5MTgrYXJnMzkxOSthcmczOTIwK2FyZzM5MjEr
YXJnMzkyMithcmczOTIzK2FyZzM5MjQrYXJnMzkyNSthcmczOTI2K2FyZzM5MjcrYXJnMzkyOCth
cmczOTI5K2FyZzM5MzArYXJnMzkzMSthcmczOTMyK2FyZzM5MzMrYXJnMzkzNCthcmczOTM1K2Fy
ZzM5MzYrYXJnMzkzNythcmczOTM4K2FyZzM5MzkrYXJnMzk0MCthcmczOTQxK2FyZzM5NDIrYXJn
Mzk0MythcmczOTQ0K2FyZzM5NDUrYXJnMzk0NithcmczOTQ3K2FyZzM5NDgrYXJnMzk0OSthcmcz
OTUwK2FyZzM5NTErYXJnMzk1MithcmczOTUzK2FyZzM5NTQrYXJnMzk1NSthcmczOTU2K2FyZzM5
NTcrYXJnMzk1OCthcmczOTU5K2FyZzM5NjArYXJnMzk2MSthcmczOTYyK2FyZzM5NjMrYXJnMzk2
NCthcmczOTY1K2FyZzM5NjYrYXJnMzk2NythcmczOTY4K2FyZzM5NjkrYXJnMzk3MCthcmczOTcx
K2FyZzM5NzIrYXJnMzk3MythcmczOTc0K2FyZzM5NzUrYXJnMzk3NithcmczOTc3K2FyZzM5Nzgr
YXJnMzk3OSthcmczOTgwK2FyZzM5ODErYXJnMzk4MithcmczOTgzK2FyZzM5ODQrYXJnMzk4NSth
cmczOTg2K2FyZzM5ODcrYXJnMzk4OCthcmczOTg5K2FyZzM5OTArYXJnMzk5MSthcmczOTkyK2Fy
ZzM5OTMrYXJnMzk5NCthcmczOTk1K2FyZzM5OTYrYXJnMzk5NythcmczOTk4K2FyZzM5OTkrYXJn
NDAwMCthcmc0MDAxK2FyZzQwMDIrYXJnNDAwMythcmc0MDA0K2FyZzQwMDUrYXJnNDAwNithcmc0
MDA3K2FyZzQwMDgrYXJnNDAwOSthcmc0MDEwK2FyZzQwMTErYXJnNDAxMithcmc0MDEzK2FyZzQw
MTQrYXJnNDAxNSthcmc0MDE2K2FyZzQwMTcrYXJnNDAxOCthcmc0MDE5K2FyZzQwMjArYXJnNDAy
MSthcmc0MDIyK2FyZzQwMjMrYXJnNDAyNCthcmc0MDI1K2FyZzQwMjYrYXJnNDAyNythcmc0MDI4
K2FyZzQwMjkrYXJnNDAzMCthcmc0MDMxK2FyZzQwMzIrYXJnNDAzMythcmc0MDM0K2FyZzQwMzUr
YXJnNDAzNithcmc0MDM3K2FyZzQwMzgrYXJnNDAzOSthcmc0MDQwK2FyZzQwNDErYXJnNDA0Mith
cmc0MDQzK2FyZzQwNDQrYXJnNDA0NSthcmc0MDQ2K2FyZzQwNDcrYXJnNDA0OCthcmc0MDQ5K2Fy
ZzQwNTArYXJnNDA1MSthcmc0MDUyK2FyZzQwNTMrYXJnNDA1NCthcmc0MDU1K2FyZzQwNTYrYXJn
NDA1Nythcmc0MDU4K2FyZzQwNTkrYXJnNDA2MCthcmc0MDYxK2FyZzQwNjIrYXJnNDA2Mythcmc0
MDY0K2FyZzQwNjUrYXJnNDA2Nithcmc0MDY3K2FyZzQwNjgrYXJnNDA2OSthcmc0MDcwK2FyZzQw
NzErYXJnNDA3Mithcmc0MDczK2FyZzQwNzQrYXJnNDA3NSthcmc0MDc2K2FyZzQwNzcrYXJnNDA3
OCthcmc0MDc5K2FyZzQwODArYXJnNDA4MSthcmc0MDgyK2FyZzQwODMrYXJnNDA4NCthcmc0MDg1
K2FyZzQwODYrYXJnNDA4Nythcmc0MDg4K2FyZzQwODkrYXJnNDA5MCthcmc0MDkxK2FyZzQwOTIr
YXJnNDA5Mythcmc0MDk0K2FyZzQwOTUrYXJnNDA5Nithcmc0MDk3K2FyZzQwOTgrYXJnNDA5OSth
cmc0MTAwK2FyZzQxMDErYXJnNDEwMithcmc0MTAzK2FyZzQxMDQrYXJnNDEwNSthcmc0MTA2K2Fy
ZzQxMDcrYXJnNDEwOCthcmc0MTA5K2FyZzQxMTArYXJnNDExMSthcmc0MTEyK2FyZzQxMTMrYXJn
NDExNCthcmc0MTE1K2FyZzQxMTYrYXJnNDExNythcmc0MTE4K2FyZzQxMTkrYXJnNDEyMCthcmc0
MTIxK2FyZzQxMjIrYXJnNDEyMythcmc0MTI0K2FyZzQxMjUrYXJnNDEyNithcmc0MTI3K2FyZzQx
MjgrYXJnNDEyOSthcmc0MTMwK2FyZzQxMzErYXJnNDEzMithcmc0MTMzK2FyZzQxMzQrYXJnNDEz
NSthcmc0MTM2K2FyZzQxMzcrYXJnNDEzOCthcmc0MTM5K2FyZzQxNDArYXJnNDE0MSthcmc0MTQy
K2FyZzQxNDMrYXJnNDE0NCthcmc0MTQ1K2FyZzQxNDYrYXJnNDE0Nythcmc0MTQ4K2FyZzQxNDkr
YXJnNDE1MCthcmc0MTUxK2FyZzQxNTIrYXJnNDE1Mythcmc0MTU0K2FyZzQxNTUrYXJnNDE1Nith
cmc0MTU3K2FyZzQxNTgrYXJnNDE1OSthcmc0MTYwK2FyZzQxNjErYXJnNDE2Mithcmc0MTYzK2Fy
ZzQxNjQrYXJnNDE2NSthcmc0MTY2K2FyZzQxNjcrYXJnNDE2OCthcmc0MTY5K2FyZzQxNzArYXJn
NDE3MSthcmc0MTcyK2FyZzQxNzMrYXJnNDE3NCthcmc0MTc1K2FyZzQxNzYrYXJnNDE3Nythcmc0
MTc4K2FyZzQxNzkrYXJnNDE4MCthcmc0MTgxK2FyZzQxODIrYXJnNDE4Mythcmc0MTg0K2FyZzQx
ODUrYXJnNDE4Nithcmc0MTg3K2FyZzQxODgrYXJnNDE4OSthcmc0MTkwK2FyZzQxOTErYXJnNDE5
Mithcmc0MTkzK2FyZzQxOTQrYXJnNDE5NSthcmc0MTk2K2FyZzQxOTcrYXJnNDE5OCthcmc0MTk5
K2FyZzQyMDArYXJnNDIwMSthcmc0MjAyK2FyZzQyMDMrYXJnNDIwNCthcmc0MjA1K2FyZzQyMDYr
YXJnNDIwNythcmc0MjA4K2FyZzQyMDkrYXJnNDIxMCthcmc0MjExK2FyZzQyMTIrYXJnNDIxMyth
cmc0MjE0K2FyZzQyMTUrYXJnNDIxNithcmc0MjE3K2FyZzQyMTgrYXJnNDIxOSthcmc0MjIwK2Fy
ZzQyMjErYXJnNDIyMithcmc0MjIzK2FyZzQyMjQrYXJnNDIyNSthcmc0MjI2K2FyZzQyMjcrYXJn
NDIyOCthcmc0MjI5K2FyZzQyMzArYXJnNDIzMSthcmc0MjMyK2FyZzQyMzMrYXJnNDIzNCthcmc0
MjM1K2FyZzQyMzYrYXJnNDIzNythcmc0MjM4K2FyZzQyMzkrYXJnNDI0MCthcmc0MjQxK2FyZzQy
NDIrYXJnNDI0Mythcmc0MjQ0K2FyZzQyNDUrYXJnNDI0Nithcmc0MjQ3K2FyZzQyNDgrYXJnNDI0
OSthcmc0MjUwK2FyZzQyNTErYXJnNDI1Mithcmc0MjUzK2FyZzQyNTQrYXJnNDI1NSthcmc0MjU2
K2FyZzQyNTcrYXJnNDI1OCthcmc0MjU5K2FyZzQyNjArYXJnNDI2MSthcmc0MjYyK2FyZzQyNjMr
YXJnNDI2NCthcmc0MjY1K2FyZzQyNjYrYXJnNDI2Nythcmc0MjY4K2FyZzQyNjkrYXJnNDI3MCth
cmc0MjcxK2FyZzQyNzIrYXJnNDI3Mythcmc0Mjc0K2FyZzQyNzUrYXJnNDI3Nithcmc0Mjc3K2Fy
ZzQyNzgrYXJnNDI3OSthcmc0MjgwK2FyZzQyODErYXJnNDI4Mithcmc0MjgzK2FyZzQyODQrYXJn
NDI4NSthcmc0Mjg2K2FyZzQyODcrYXJnNDI4OCthcmc0Mjg5K2FyZzQyOTArYXJnNDI5MSthcmc0
MjkyK2FyZzQyOTMrYXJnNDI5NCthcmc0Mjk1K2FyZzQyOTYrYXJnNDI5Nythcmc0Mjk4K2FyZzQy
OTkrYXJnNDMwMCthcmc0MzAxK2FyZzQzMDIrYXJnNDMwMythcmc0MzA0K2FyZzQzMDUrYXJnNDMw
Nithcmc0MzA3K2FyZzQzMDgrYXJnNDMwOSthcmc0MzEwK2FyZzQzMTErYXJnNDMxMithcmc0MzEz
K2FyZzQzMTQrYXJnNDMxNSthcmc0MzE2K2FyZzQzMTcrYXJnNDMxOCthcmc0MzE5K2FyZzQzMjAr
YXJnNDMyMSthcmc0MzIyK2FyZzQzMjMrYXJnNDMyNCthcmc0MzI1K2FyZzQzMjYrYXJnNDMyNyth
cmc0MzI4K2FyZzQzMjkrYXJnNDMzMCthcmc0MzMxK2FyZzQzMzIrYXJnNDMzMythcmc0MzM0K2Fy
ZzQzMzUrYXJnNDMzNithcmc0MzM3K2FyZzQzMzgrYXJnNDMzOSthcmc0MzQwK2FyZzQzNDErYXJn
NDM0Mithcmc0MzQzK2FyZzQzNDQrYXJnNDM0NSthcmc0MzQ2K2FyZzQzNDcrYXJnNDM0OCthcmc0
MzQ5K2FyZzQzNTArYXJnNDM1MSthcmc0MzUyK2FyZzQzNTMrYXJnNDM1NCthcmc0MzU1K2FyZzQz
NTYrYXJnNDM1Nythcmc0MzU4K2FyZzQzNTkrYXJnNDM2MCthcmc0MzYxK2FyZzQzNjIrYXJnNDM2
Mythcmc0MzY0K2FyZzQzNjUrYXJnNDM2Nithcmc0MzY3K2FyZzQzNjgrYXJnNDM2OSthcmc0Mzcw
K2FyZzQzNzErYXJnNDM3Mithcmc0MzczK2FyZzQzNzQrYXJnNDM3NSthcmc0Mzc2K2FyZzQzNzcr
YXJnNDM3OCthcmc0Mzc5K2FyZzQzODArYXJnNDM4MSthcmc0MzgyK2FyZzQzODMrYXJnNDM4NCth
cmc0Mzg1K2FyZzQzODYrYXJnNDM4Nythcmc0Mzg4K2FyZzQzODkrYXJnNDM5MCthcmc0MzkxK2Fy
ZzQzOTIrYXJnNDM5Mythcmc0Mzk0K2FyZzQzOTUrYXJnNDM5Nithcmc0Mzk3K2FyZzQzOTgrYXJn
NDM5OSthcmc0NDAwK2FyZzQ0MDErYXJnNDQwMithcmc0NDAzK2FyZzQ0MDQrYXJnNDQwNSthcmc0
NDA2K2FyZzQ0MDcrYXJnNDQwOCthcmc0NDA5K2FyZzQ0MTArYXJnNDQxMSthcmc0NDEyK2FyZzQ0
MTMrYXJnNDQxNCthcmc0NDE1K2FyZzQ0MTYrYXJnNDQxNythcmc0NDE4K2FyZzQ0MTkrYXJnNDQy
MCthcmc0NDIxK2FyZzQ0MjIrYXJnNDQyMythcmc0NDI0K2FyZzQ0MjUrYXJnNDQyNithcmc0NDI3
K2FyZzQ0MjgrYXJnNDQyOSthcmc0NDMwK2FyZzQ0MzErYXJnNDQzMithcmc0NDMzK2FyZzQ0MzQr
YXJnNDQzNSthcmc0NDM2K2FyZzQ0MzcrYXJnNDQzOCthcmc0NDM5K2FyZzQ0NDArYXJnNDQ0MSth
cmc0NDQyK2FyZzQ0NDMrYXJnNDQ0NCthcmc0NDQ1K2FyZzQ0NDYrYXJnNDQ0Nythcmc0NDQ4K2Fy
ZzQ0NDkrYXJnNDQ1MCthcmc0NDUxK2FyZzQ0NTIrYXJnNDQ1Mythcmc0NDU0K2FyZzQ0NTUrYXJn
NDQ1Nithcmc0NDU3K2FyZzQ0NTgrYXJnNDQ1OSthcmc0NDYwK2FyZzQ0NjErYXJnNDQ2Mithcmc0
NDYzK2FyZzQ0NjQrYXJnNDQ2NSthcmc0NDY2K2FyZzQ0NjcrYXJnNDQ2OCthcmc0NDY5K2FyZzQ0
NzArYXJnNDQ3MSthcmc0NDcyK2FyZzQ0NzMrYXJnNDQ3NCthcmc0NDc1K2FyZzQ0NzYrYXJnNDQ3
Nythcmc0NDc4K2FyZzQ0NzkrYXJnNDQ4MCthcmc0NDgxK2FyZzQ0ODIrYXJnNDQ4Mythcmc0NDg0
K2FyZzQ0ODUrYXJnNDQ4Nithcmc0NDg3K2FyZzQ0ODgrYXJnNDQ4OSthcmc0NDkwK2FyZzQ0OTEr
YXJnNDQ5Mithcmc0NDkzK2FyZzQ0OTQrYXJnNDQ5NSthcmc0NDk2K2FyZzQ0OTcrYXJnNDQ5OCth
cmc0NDk5K2FyZzQ1MDArYXJnNDUwMSthcmc0NTAyK2FyZzQ1MDMrYXJnNDUwNCthcmc0NTA1K2Fy
ZzQ1MDYrYXJnNDUwNythcmc0NTA4K2FyZzQ1MDkrYXJnNDUxMCthcmc0NTExK2FyZzQ1MTIrYXJn
NDUxMythcmc0NTE0K2FyZzQ1MTUrYXJnNDUxNithcmc0NTE3K2FyZzQ1MTgrYXJnNDUxOSthcmc0
NTIwK2FyZzQ1MjErYXJnNDUyMithcmc0NTIzK2FyZzQ1MjQrYXJnNDUyNSthcmc0NTI2K2FyZzQ1
MjcrYXJnNDUyOCthcmc0NTI5K2FyZzQ1MzArYXJnNDUzMSthcmc0NTMyK2FyZzQ1MzMrYXJnNDUz
NCthcmc0NTM1K2FyZzQ1MzYrYXJnNDUzNythcmc0NTM4K2FyZzQ1MzkrYXJnNDU0MCthcmc0NTQx
K2FyZzQ1NDIrYXJnNDU0Mythcmc0NTQ0K2FyZzQ1NDUrYXJnNDU0Nithcmc0NTQ3K2FyZzQ1NDgr
YXJnNDU0OSthcmc0NTUwK2FyZzQ1NTErYXJnNDU1Mithcmc0NTUzK2FyZzQ1NTQrYXJnNDU1NSth
cmc0NTU2K2FyZzQ1NTcrYXJnNDU1OCthcmc0NTU5K2FyZzQ1NjArYXJnNDU2MSthcmc0NTYyK2Fy
ZzQ1NjMrYXJnNDU2NCthcmc0NTY1K2FyZzQ1NjYrYXJnNDU2Nythcmc0NTY4K2FyZzQ1NjkrYXJn
NDU3MCthcmc0NTcxK2FyZzQ1NzIrYXJnNDU3Mythcmc0NTc0K2FyZzQ1NzUrYXJnNDU3Nithcmc0
NTc3K2FyZzQ1NzgrYXJnNDU3OSthcmc0NTgwK2FyZzQ1ODErYXJnNDU4Mithcmc0NTgzK2FyZzQ1
ODQrYXJnNDU4NSthcmc0NTg2K2FyZzQ1ODcrYXJnNDU4OCthcmc0NTg5K2FyZzQ1OTArYXJnNDU5
MSthcmc0NTkyK2FyZzQ1OTMrYXJnNDU5NCthcmc0NTk1K2FyZzQ1OTYrYXJnNDU5Nythcmc0NTk4
K2FyZzQ1OTkrYXJnNDYwMCthcmc0NjAxK2FyZzQ2MDIrYXJnNDYwMythcmc0NjA0K2FyZzQ2MDUr
YXJnNDYwNithcmc0NjA3K2FyZzQ2MDgrYXJnNDYwOSthcmc0NjEwK2FyZzQ2MTErYXJnNDYxMith
cmc0NjEzK2FyZzQ2MTQrYXJnNDYxNSthcmc0NjE2K2FyZzQ2MTcrYXJnNDYxOCthcmc0NjE5K2Fy
ZzQ2MjArYXJnNDYyMSthcmc0NjIyK2FyZzQ2MjMrYXJnNDYyNCthcmc0NjI1K2FyZzQ2MjYrYXJn
NDYyNythcmc0NjI4K2FyZzQ2MjkrYXJnNDYzMCthcmc0NjMxK2FyZzQ2MzIrYXJnNDYzMythcmc0
NjM0K2FyZzQ2MzUrYXJnNDYzNithcmc0NjM3K2FyZzQ2MzgrYXJnNDYzOSthcmc0NjQwK2FyZzQ2
NDErYXJnNDY0Mithcmc0NjQzK2FyZzQ2NDQrYXJnNDY0NSthcmc0NjQ2K2FyZzQ2NDcrYXJnNDY0
OCthcmc0NjQ5K2FyZzQ2NTArYXJnNDY1MSthcmc0NjUyK2FyZzQ2NTMrYXJnNDY1NCthcmc0NjU1
K2FyZzQ2NTYrYXJnNDY1Nythcmc0NjU4K2FyZzQ2NTkrYXJnNDY2MCthcmc0NjYxK2FyZzQ2NjIr
YXJnNDY2Mythcmc0NjY0K2FyZzQ2NjUrYXJnNDY2Nithcmc0NjY3K2FyZzQ2NjgrYXJnNDY2OSth
cmc0NjcwK2FyZzQ2NzErYXJnNDY3Mithcmc0NjczK2FyZzQ2NzQrYXJnNDY3NSthcmc0Njc2K2Fy
ZzQ2NzcrYXJnNDY3OCthcmc0Njc5K2FyZzQ2ODArYXJnNDY4MSthcmc0NjgyK2FyZzQ2ODMrYXJn
NDY4NCthcmc0Njg1K2FyZzQ2ODYrYXJnNDY4Nythcmc0Njg4K2FyZzQ2ODkrYXJnNDY5MCthcmc0
NjkxK2FyZzQ2OTIrYXJnNDY5Mythcmc0Njk0K2FyZzQ2OTUrYXJnNDY5Nithcmc0Njk3K2FyZzQ2
OTgrYXJnNDY5OSthcmc0NzAwK2FyZzQ3MDErYXJnNDcwMithcmc0NzAzK2FyZzQ3MDQrYXJnNDcw
NSthcmc0NzA2K2FyZzQ3MDcrYXJnNDcwOCthcmc0NzA5K2FyZzQ3MTArYXJnNDcxMSthcmc0NzEy
K2FyZzQ3MTMrYXJnNDcxNCthcmc0NzE1K2FyZzQ3MTYrYXJnNDcxNythcmc0NzE4K2FyZzQ3MTkr
YXJnNDcyMCthcmc0NzIxK2FyZzQ3MjIrYXJnNDcyMythcmc0NzI0K2FyZzQ3MjUrYXJnNDcyNith
cmc0NzI3K2FyZzQ3MjgrYXJnNDcyOSthcmc0NzMwK2FyZzQ3MzErYXJnNDczMithcmc0NzMzK2Fy
ZzQ3MzQrYXJnNDczNSthcmc0NzM2K2FyZzQ3MzcrYXJnNDczOCthcmc0NzM5K2FyZzQ3NDArYXJn
NDc0MSthcmc0NzQyK2FyZzQ3NDMrYXJnNDc0NCthcmc0NzQ1K2FyZzQ3NDYrYXJnNDc0Nythcmc0
NzQ4K2FyZzQ3NDkrYXJnNDc1MCthcmc0NzUxK2FyZzQ3NTIrYXJnNDc1Mythcmc0NzU0K2FyZzQ3
NTUrYXJnNDc1Nithcmc0NzU3K2FyZzQ3NTgrYXJnNDc1OSthcmc0NzYwK2FyZzQ3NjErYXJnNDc2
Mithcmc0NzYzK2FyZzQ3NjQrYXJnNDc2NSthcmc0NzY2K2FyZzQ3NjcrYXJnNDc2OCthcmc0NzY5
K2FyZzQ3NzArYXJnNDc3MSthcmc0NzcyK2FyZzQ3NzMrYXJnNDc3NCthcmc0Nzc1K2FyZzQ3NzYr
YXJnNDc3Nythcmc0Nzc4K2FyZzQ3NzkrYXJnNDc4MCthcmc0NzgxK2FyZzQ3ODIrYXJnNDc4Myth
cmc0Nzg0K2FyZzQ3ODUrYXJnNDc4Nithcmc0Nzg3K2FyZzQ3ODgrYXJnNDc4OSthcmc0NzkwK2Fy
ZzQ3OTErYXJnNDc5Mithcmc0NzkzK2FyZzQ3OTQrYXJnNDc5NSthcmc0Nzk2K2FyZzQ3OTcrYXJn
NDc5OCthcmc0Nzk5K2FyZzQ4MDArYXJnNDgwMSthcmc0ODAyK2FyZzQ4MDMrYXJnNDgwNCthcmc0
ODA1K2FyZzQ4MDYrYXJnNDgwNythcmc0ODA4K2FyZzQ4MDkrYXJnNDgxMCthcmc0ODExK2FyZzQ4
MTIrYXJnNDgxMythcmc0ODE0K2FyZzQ4MTUrYXJnNDgxNithcmc0ODE3K2FyZzQ4MTgrYXJnNDgx
OSthcmc0ODIwK2FyZzQ4MjErYXJnNDgyMithcmc0ODIzK2FyZzQ4MjQrYXJnNDgyNSthcmc0ODI2
K2FyZzQ4MjcrYXJnNDgyOCthcmc0ODI5K2FyZzQ4MzArYXJnNDgzMSthcmc0ODMyK2FyZzQ4MzMr
YXJnNDgzNCthcmc0ODM1K2FyZzQ4MzYrYXJnNDgzNythcmc0ODM4K2FyZzQ4MzkrYXJnNDg0MCth
cmc0ODQxK2FyZzQ4NDIrYXJnNDg0Mythcmc0ODQ0K2FyZzQ4NDUrYXJnNDg0Nithcmc0ODQ3K2Fy
ZzQ4NDgrYXJnNDg0OSthcmc0ODUwK2FyZzQ4NTErYXJnNDg1Mithcmc0ODUzK2FyZzQ4NTQrYXJn
NDg1NSthcmc0ODU2K2FyZzQ4NTcrYXJnNDg1OCthcmc0ODU5K2FyZzQ4NjArYXJnNDg2MSthcmc0
ODYyK2FyZzQ4NjMrYXJnNDg2NCthcmc0ODY1K2FyZzQ4NjYrYXJnNDg2Nythcmc0ODY4K2FyZzQ4
NjkrYXJnNDg3MCthcmc0ODcxK2FyZzQ4NzIrYXJnNDg3Mythcmc0ODc0K2FyZzQ4NzUrYXJnNDg3
Nithcmc0ODc3K2FyZzQ4NzgrYXJnNDg3OSthcmc0ODgwK2FyZzQ4ODErYXJnNDg4Mithcmc0ODgz
K2FyZzQ4ODQrYXJnNDg4NSthcmc0ODg2K2FyZzQ4ODcrYXJnNDg4OCthcmc0ODg5K2FyZzQ4OTAr
YXJnNDg5MSthcmc0ODkyK2FyZzQ4OTMrYXJnNDg5NCthcmc0ODk1K2FyZzQ4OTYrYXJnNDg5Nyth
cmc0ODk4K2FyZzQ4OTkrYXJnNDkwMCthcmc0OTAxK2FyZzQ5MDIrYXJnNDkwMythcmc0OTA0K2Fy
ZzQ5MDUrYXJnNDkwNithcmc0OTA3K2FyZzQ5MDgrYXJnNDkwOSthcmc0OTEwK2FyZzQ5MTErYXJn
NDkxMithcmc0OTEzK2FyZzQ5MTQrYXJnNDkxNSthcmc0OTE2K2FyZzQ5MTcrYXJnNDkxOCthcmc0
OTE5K2FyZzQ5MjArYXJnNDkyMSthcmc0OTIyK2FyZzQ5MjMrYXJnNDkyNCthcmc0OTI1K2FyZzQ5
MjYrYXJnNDkyNythcmc0OTI4K2FyZzQ5MjkrYXJnNDkzMCthcmc0OTMxK2FyZzQ5MzIrYXJnNDkz
Mythcmc0OTM0K2FyZzQ5MzUrYXJnNDkzNithcmc0OTM3K2FyZzQ5MzgrYXJnNDkzOSthcmc0OTQw
K2FyZzQ5NDErYXJnNDk0Mithcmc0OTQzK2FyZzQ5NDQrYXJnNDk0NSthcmc0OTQ2K2FyZzQ5NDcr
YXJnNDk0OCthcmc0OTQ5K2FyZzQ5NTArYXJnNDk1MSthcmc0OTUyK2FyZzQ5NTMrYXJnNDk1NCth
cmc0OTU1K2FyZzQ5NTYrYXJnNDk1Nythcmc0OTU4K2FyZzQ5NTkrYXJnNDk2MCthcmc0OTYxK2Fy
ZzQ5NjIrYXJnNDk2Mythcmc0OTY0K2FyZzQ5NjUrYXJnNDk2Nithcmc0OTY3K2FyZzQ5NjgrYXJn
NDk2OSthcmc0OTcwK2FyZzQ5NzErYXJnNDk3Mithcmc0OTczK2FyZzQ5NzQrYXJnNDk3NSthcmc0
OTc2K2FyZzQ5NzcrYXJnNDk3OCthcmc0OTc5K2FyZzQ5ODArYXJnNDk4MSthcmc0OTgyK2FyZzQ5
ODMrYXJnNDk4NCthcmc0OTg1K2FyZzQ5ODYrYXJnNDk4Nythcmc0OTg4K2FyZzQ5ODkrYXJnNDk5
MCthcmc0OTkxK2FyZzQ5OTIrYXJnNDk5Mythcmc0OTk0K2FyZzQ5OTUrYXJnNDk5Nithcmc0OTk3
K2FyZzQ5OTgrYXJnNDk5OTt9Cit2b2lkIHRlc3RDYWxsRnVuY3Rpb25XaXRoSGVsbGFBcmd1bWVu
dHMzKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOworCisgICAgVmVjdG9yPFZhbHVlKj4gYXJnczsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgNTAwMDsgKytpKQorICAgICAgICBhcmdzLmFwcGVuZChyb290LT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDA5NSAtIDUwMDAgKyBpIC0gMSkp
OworCisgICAgQ0NhbGxWYWx1ZSogY2FsbCA9IHJvb3QtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigK
KyAgICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4oZnVu
Y3Rpb25XaXRoSGVsbGFBcmd1bWVudHMzLCBCM0NDYWxsUHRyVGFnKSkpOworICAgIGNhbGwtPmFw
cGVuZEFyZ3MoYXJncyk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgY2FsbCk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29tcGlsYXRp
b24+IGNvbXBpbGF0aW9uID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgQ0hFQ0soaW52b2tlPGlu
dD4oKmNvbXBpbGF0aW9uKSA9PSBpbnZva2U8aW50PigqY29tcGlsYXRpb24pKTsKKyAgICBDSEVD
SyhpbnZva2U8aW50PigqY29tcGlsYXRpb24pID09IDc5Njc1MDApOworICAgIENIRUNLKGludm9r
ZTxpbnQ+KCpjb21waWxhdGlvbikgPT0gaW52b2tlPGludD4oKmNvbXBpbGF0aW9uKSk7CisgICAg
Q0hFQ0soaW52b2tlPGludD4oKmNvbXBpbGF0aW9uKSA9PSA3OTY3NTAwKTsKKyAgICBDSEVDSyhp
bnZva2U8aW50PigqY29tcGlsYXRpb24pID09IGludm9rZTxpbnQ+KCpjb21waWxhdGlvbikpOwor
ICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb21waWxhdGlvbikgPT0gNzk2NzUwMCk7CisgICAgQ0hF
Q0soaW52b2tlPGludD4oKmNvbXBpbGF0aW9uKSA9PSBpbnZva2U8aW50PigqY29tcGlsYXRpb24p
KTsKKyAgICBDSEVDSyhpbnZva2U8aW50PigqY29tcGlsYXRpb24pID09IDc5Njc1MDApOworfQor
Cit2b2lkIHRlc3RSZXR1cm5Eb3VibGUoZG91YmxlIHZhbHVlKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IHZhbHVlKSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4o
cHJvYyksIHZhbHVlKSk7Cit9CisKK3ZvaWQgdGVzdFJldHVybkZsb2F0KGZsb2F0IHZhbHVlKQor
eworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgdmFsdWUpKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBp
bGVBbmRSdW48ZmxvYXQ+KHByb2MpLCB2YWx1ZSkpOworfQorCitzdGF0aWMgZG91YmxlIHNpbXBs
ZUZ1bmN0aW9uRG91YmxlKGRvdWJsZSBhLCBkb3VibGUgYikKK3sKKyAgICByZXR1cm4gYSArIGI7
Cit9CisKK3ZvaWQgdGVzdENhbGxTaW1wbGVEb3VibGUoZG91YmxlIGEsIGRvdWJsZSBiKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCisgICAg
ICAgICAgICBwcm9jLCBEb3VibGUsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+
KHNpbXBsZUZ1bmN0aW9uRG91YmxlLCBCM0NDYWxsUHRyVGFnKSksCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFy
Z3VtZW50RlBSMCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMSkpKTsKKworICAgIENIRUNL
KGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBhLCBiKSA9PSBhICsgYik7Cit9CisKK3N0YXRp
YyBmbG9hdCBzaW1wbGVGdW5jdGlvbkZsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAgcmV0
dXJuIGEgKyBiOworfQorCit2b2lkIHRlc3RDYWxsU2ltcGxlRmxvYXQoZmxvYXQgYSwgZmxvYXQg
YikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDFpbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwor
ICAgIFZhbHVlKiBhcmd1bWVudDJpbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
VHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgIFZhbHVlKiBm
bG9hdFZhbHVlMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9y
aWdpbigpLCBhcmd1bWVudDFpbnQzMik7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUyID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50Mmlu
dDMyKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIEZsb2F0LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQq
PihzaW1wbGVGdW5jdGlvbkZsb2F0LCBCM0NDYWxsUHRyVGFnKSksCisgICAgICAgICAgICBmbG9h
dFZhbHVlMSwKKyAgICAgICAgICAgIGZsb2F0VmFsdWUyKSk7CisKKyAgICBDSEVDSyhpc0lkZW50
aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSks
IGJpdHdpc2VfY2FzdDxpbnQzMl90PihiKSksIGEgKyBiKSk7Cit9CisKK3N0YXRpYyBkb3VibGUg
ZnVuY3Rpb25XaXRoSGVsbGFEb3VibGVBcmd1bWVudHMoZG91YmxlIGEsIGRvdWJsZSBiLCBkb3Vi
bGUgYywgZG91YmxlIGQsIGRvdWJsZSBlLCBkb3VibGUgZiwgZG91YmxlIGcsIGRvdWJsZSBoLCBk
b3VibGUgaSwgZG91YmxlIGosIGRvdWJsZSBrLCBkb3VibGUgbCwgZG91YmxlIG0sIGRvdWJsZSBu
LCBkb3VibGUgbywgZG91YmxlIHAsIGRvdWJsZSBxLCBkb3VibGUgciwgZG91YmxlIHMsIGRvdWJs
ZSB0LCBkb3VibGUgdSwgZG91YmxlIHYsIGRvdWJsZSB3LCBkb3VibGUgeCwgZG91YmxlIHksIGRv
dWJsZSB6KQoreworICAgIHJldHVybiBhICogcG93KDIsIDApICsgYiAqIHBvdygyLCAxKSArIGMg
KiBwb3coMiwgMikgKyBkICogcG93KDIsIDMpICsgZSAqIHBvdygyLCA0KSArIGYgKiBwb3coMiwg
NSkgKyBnICogcG93KDIsIDYpICsgaCAqIHBvdygyLCA3KSArIGkgKiBwb3coMiwgOCkgKyBqICog
cG93KDIsIDkpICsgayAqIHBvdygyLCAxMCkgKyBsICogcG93KDIsIDExKSArIG0gKiBwb3coMiwg
MTIpICsgbiAqIHBvdygyLCAxMykgKyBvICogcG93KDIsIDE0KSArIHAgKiBwb3coMiwgMTUpICsg
cSAqIHBvdygyLCAxNikgKyByICogcG93KDIsIDE3KSArIHMgKiBwb3coMiwgMTgpICsgdCAqIHBv
dygyLCAxOSkgKyB1ICogcG93KDIsIDIwKSArIHYgKiBwb3coMiwgMjEpICsgdyAqIHBvdygyLCAy
MikgKyB4ICogcG93KDIsIDIzKSArIHkgKiBwb3coMiwgMjQpICsgeiAqIHBvdygyLCAyNSk7Cit9
CisKK3ZvaWQgdGVzdENhbGxGdW5jdGlvbldpdGhIZWxsYURvdWJsZUFyZ3VtZW50cygpCit7Cisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKworICAgIFZlY3RvcjxWYWx1ZSo+IGFyZ3M7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IDI2OyArK2kpCisgICAgICAgIGFyZ3MuYXBwZW5kKHJvb3QtPmFwcGVuZE5ldzxDb25zdERv
dWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgaSArIDEpKTsKKworICAgIENDYWxsVmFsdWUqIGNh
bGwgPSByb290LT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCisgICAgICAgIHByb2MsIERvdWJsZSwg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihmdW5jdGlvbldpdGhIZWxsYURvdWJsZUFy
Z3VtZW50cywgQjNDQ2FsbFB0clRhZykpKTsKKyAgICBjYWxsLT5hcHBlbmRBcmdzKGFyZ3MpOwor
CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCks
IGNhbGwpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MpID09IGZ1bmN0
aW9uV2l0aEhlbGxhRG91YmxlQXJndW1lbnRzKDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEw
LCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQs
IDI1LCAyNikpOworfQorCitzdGF0aWMgZmxvYXQgZnVuY3Rpb25XaXRoSGVsbGFGbG9hdEFyZ3Vt
ZW50cyhmbG9hdCBhLCBmbG9hdCBiLCBmbG9hdCBjLCBmbG9hdCBkLCBmbG9hdCBlLCBmbG9hdCBm
LCBmbG9hdCBnLCBmbG9hdCBoLCBmbG9hdCBpLCBmbG9hdCBqLCBmbG9hdCBrLCBmbG9hdCBsLCBm
bG9hdCBtLCBmbG9hdCBuLCBmbG9hdCBvLCBmbG9hdCBwLCBmbG9hdCBxLCBmbG9hdCByLCBmbG9h
dCBzLCBmbG9hdCB0LCBmbG9hdCB1LCBmbG9hdCB2LCBmbG9hdCB3LCBmbG9hdCB4LCBmbG9hdCB5
LCBmbG9hdCB6KQoreworICAgIHJldHVybiBhICogcG93KDIsIDApICsgYiAqIHBvdygyLCAxKSAr
IGMgKiBwb3coMiwgMikgKyBkICogcG93KDIsIDMpICsgZSAqIHBvdygyLCA0KSArIGYgKiBwb3co
MiwgNSkgKyBnICogcG93KDIsIDYpICsgaCAqIHBvdygyLCA3KSArIGkgKiBwb3coMiwgOCkgKyBq
ICogcG93KDIsIDkpICsgayAqIHBvdygyLCAxMCkgKyBsICogcG93KDIsIDExKSArIG0gKiBwb3co
MiwgMTIpICsgbiAqIHBvdygyLCAxMykgKyBvICogcG93KDIsIDE0KSArIHAgKiBwb3coMiwgMTUp
ICsgcSAqIHBvdygyLCAxNikgKyByICogcG93KDIsIDE3KSArIHMgKiBwb3coMiwgMTgpICsgdCAq
IHBvdygyLCAxOSkgKyB1ICogcG93KDIsIDIwKSArIHYgKiBwb3coMiwgMjEpICsgdyAqIHBvdygy
LCAyMikgKyB4ICogcG93KDIsIDIzKSArIHkgKiBwb3coMiwgMjQpICsgeiAqIHBvdygyLCAyNSk7
Cit9CisKK3ZvaWQgdGVzdENhbGxGdW5jdGlvbldpdGhIZWxsYUZsb2F0QXJndW1lbnRzKCkKK3sK
KyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworCisgICAgVmVjdG9yPFZhbHVlKj4gYXJnczsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgMjY7ICsraSkKKyAgICAgICAgYXJncy5hcHBlbmQocm9vdC0+YXBwZW5kTmV3PENvbnN0
RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGkgKyAxKSk7CisKKyAgICBDQ2FsbFZhbHVlKiBj
YWxsID0gcm9vdC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAorICAgICAgICBwcm9jLCBGbG9hdCwg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihmdW5jdGlvbldpdGhIZWxsYUZsb2F0QXJn
dW1lbnRzLCBCM0NDYWxsUHRyVGFnKSkpOworICAgIGNhbGwtPmFwcGVuZEFyZ3MoYXJncyk7CisK
KyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwg
Y2FsbCk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jKSA9PSBmdW5jdGlv
bldpdGhIZWxsYUZsb2F0QXJndW1lbnRzKDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAx
MSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1
LCAyNikpOworfQorCit2b2lkIHRlc3RMaW5lYXJTY2FuV2l0aENhbGxlZU9uU3RhY2soKQorewor
ICAgIC8vIFRoaXMgdGVzdHMgcHJvcGVyIENDYWxsIGdlbmVyYXRpb24gd2hlbiBjb21waWxpbmcg
d2l0aCBhIGxvd2VyIG9wdGltaXphdGlvbgorICAgIC8vIGxldmVsIGFuZCBvcGVyYXRpbmcgd2l0
aCBhIGNhbGxlZSBhcmd1bWVudCB0aGF0J3Mgc3BpbHQgb24gdGhlIHN0YWNrLgorICAgIC8vIE9u
IEFSTTY0LCB0aGlzIGNhdXNlZCBhbiBhc3NlcnQgaW4gTWFjcm9Bc3NlbWJsZXJBUk02NCBiZWNh
dXNlIG9mIGRpc2FsbG93ZWQKKyAgICAvLyB1c2Ugb2YgdGhlIHNjcmF0Y2ggcmVnaXN0ZXIuCisg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDY3MgorCisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAorICAg
ICAgICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+
KHNpbXBsZUZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSksCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKTsKKworICAgIC8vIEZvcmNlIHRo
ZSBsaW5lYXIgc2NhbiBhbGdvcml0aG0gdG8gc3BpbGwgZXZlcnl0aGluZy4KKyAgICBhdXRvIG9y
aWdpbmFsID0gT3B0aW9uczo6YWlyTGluZWFyU2NhblNwaWxsc0V2ZXJ5dGhpbmcoKTsKKyAgICBP
cHRpb25zOjphaXJMaW5lYXJTY2FuU3BpbGxzRXZlcnl0aGluZygpID0gdHJ1ZTsKKworICAgIC8v
IENvbXBpbGluZyB3aXRoIDEgYXMgdGhlIG9wdGltaXphdGlvbiBsZXZlbCBlbmZvcmNlcyB0aGUg
dXNlIG9mIGxpbmVhciBzY2FuCisgICAgLy8gZm9yIHJlZ2lzdGVyIGFsbG9jYXRpb24uCisgICAg
YXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4o
KmNvZGUsIDQxLCAxKSwgNDIpOworCisgICAgT3B0aW9uczo6YWlyTGluZWFyU2NhblNwaWxsc0V2
ZXJ5dGhpbmcoKSA9IG9yaWdpbmFsOworfQorCit2b2lkIHRlc3RDaGlsbERpdihpbnQgbnVtLCBp
bnQgZGVuLCBpbnQgcmVzKQoreworICAgIC8vIFRlc3Qgbm9uLWNvbnN0YW50LgorICAgIHsKKyAg
ICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgCisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAg
ICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIGNoaWxsKERpdiksIE9yaWdpbigp
LAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAg
ICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxKSkpKTsKKworICAgICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGlu
dD4ocHJvYywgbnVtLCBkZW4pID09IHJlcyk7CisgICAgfQorCisgICAgLy8gVGVzdCBjb25zdGFu
dC4KKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIAorICAgICAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBjaGlsbChE
aXYpLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgbnVtKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgZGVuKSkpOworICAgIAorICAgICAgICBD
SEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYykgPT0gcmVzKTsKKyAgICB9Cit9CisKK3ZvaWQg
dGVzdENoaWxsRGl2VHdpY2UoaW50IG51bTEsIGludCBkZW4xLCBpbnQgbnVtMiwgaW50IGRlbjIs
IGludCByZXMpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAg
ICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIGNoaWxsKERpdiksIE9y
aWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
ICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBjaGlsbChEaXYpLCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgICAg
ICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIyKSksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAg
ICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMykpKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2Ms
IG51bTEsIGRlbjEsIG51bTIsIGRlbjIpID09IHJlcyk7Cit9CisKK3ZvaWQgdGVzdENoaWxsRGl2
NjQoaW50NjRfdCBudW0sIGludDY0X3QgZGVuLCBpbnQ2NF90IHJlcykKK3sKKyAgICBpZiAoIWlz
NjRCaXQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGVzdCBub24tY29uc3RhbnQuCisg
ICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICAKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgY2hpbGwoRGl2KSwg
T3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAorICAgICAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxKSkpOworICAgIAorICAgICAgICBDSEVDSyhjb21waWxlQW5kUnVu
PGludDY0X3Q+KHByb2MsIG51bSwgZGVuKSA9PSByZXMpOworICAgIH0KKworICAgIC8vIFRlc3Qg
Y29uc3RhbnQuCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywg
Y2hpbGwoRGl2KSwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENv
bnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIG51bSksCisgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGRlbikpKTsKKyAgICAKKyAg
ICAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jKSA9PSByZXMpOworICAgIH0K
K30KKwordm9pZCB0ZXN0TW9kQXJnKGludDY0X3QgdmFsdWUpCit7CisgICAgaWYgKCF2YWx1ZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBNb2QsIE9yaWdpbigpLCBhcmd1bWVudCwgYXJndW1lbnQpOworICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOworCisgICAgQ0hF
Q0soIWNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgdmFsdWUpKTsKK30KKwordm9pZCB0ZXN0
TW9kQXJncyhpbnQ2NF90IG51bWVyYXRvciwgaW50NjRfdCBkZW5vbWluYXRvcikKK3sKKyAgICBp
ZiAoIWRlbm9taW5hdG9yKQorICAgICAgICByZXR1cm47CisgICAgaWYgKG51bWVyYXRvciA9PSBz
dGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSAmJiBkZW5vbWluYXRvciA9PSAtMSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBhcmd1bWVudDEgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICBW
YWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNb2QsIE9yaWdpbigp
LCBhcmd1bWVudDEsIGFyZ3VtZW50Mik7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisKKyAgICBDSEVDSyhjb21waWxlQW5k
UnVuPGludDY0X3Q+KHByb2MsIG51bWVyYXRvciwgZGVub21pbmF0b3IpID09IG51bWVyYXRvciAl
IGRlbm9taW5hdG9yKTsKK30KKwordm9pZCB0ZXN0TW9kSW1tcyhpbnQ2NF90IG51bWVyYXRvciwg
aW50NjRfdCBkZW5vbWluYXRvcikKK3sKKyAgICBpZiAoIWRlbm9taW5hdG9yKQorICAgICAgICBy
ZXR1cm47CisgICAgaWYgKG51bWVyYXRvciA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+
OjptaW4oKSAmJiBkZW5vbWluYXRvciA9PSAtMSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKwor
ICAgIFZhbHVlKiBhcmd1bWVudDEgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgbnVtZXJhdG9yKTsKKyAgICBWYWx1ZSogYXJndW1lbnQyID0gcm9vdC0+YXBw
ZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGRlbm9taW5hdG9yKTsKKyAgICBW
YWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNb2QsIE9yaWdpbigp
LCBhcmd1bWVudDEsIGFyZ3VtZW50Mik7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisKKyAgICBDSEVDSyhjb21waWxlQW5k
UnVuPGludDY0X3Q+KHByb2MsIG51bWVyYXRvciwgZGVub21pbmF0b3IpID09IG51bWVyYXRvciAl
IGRlbm9taW5hdG9yKTsKK30KKwordm9pZCB0ZXN0TW9kQXJnMzIoaW50MzJfdCB2YWx1ZSkKK3sK
KyAgICBpZiAoIXZhbHVlKQorICAgICAgICByZXR1cm47CisKKyAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgVmFsdWUqIGFy
Z3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgTW9kLCBPcmlnaW4oKSwgYXJndW1lbnQsIGFyZ3VtZW50KTsKKyAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVz
dWx0KTsKKworICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIHZhbHVlKSk7
Cit9CisKK3ZvaWQgdGVzdE1vZEFyZ3MzMihpbnQzMl90IG51bWVyYXRvciwgaW50MzJfdCBkZW5v
bWluYXRvcikKK3sKKyAgICBpZiAoIWRlbm9taW5hdG9yKQorICAgICAgICByZXR1cm47CisgICAg
aWYgKG51bWVyYXRvciA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSAmJiBk
ZW5vbWluYXRvciA9PSAtMSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBh
cmd1bWVudDEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogYXJndW1lbnQyID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIxKSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgTW9kLCBPcmlnaW4oKSwgYXJndW1lbnQxLCBhcmd1bWVudDIpOworICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOworCisgICAg
Q0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBudW1lcmF0b3IsIGRlbm9taW5hdG9y
KSA9PSBudW1lcmF0b3IgJSBkZW5vbWluYXRvcik7Cit9CisKK3ZvaWQgdGVzdE1vZEltbXMzMihp
bnQzMl90IG51bWVyYXRvciwgaW50MzJfdCBkZW5vbWluYXRvcikKK3sKKyAgICBpZiAoIWRlbm9t
aW5hdG9yKQorICAgICAgICByZXR1cm47CisgICAgaWYgKG51bWVyYXRvciA9PSBzdGQ6Om51bWVy
aWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSAmJiBkZW5vbWluYXRvciA9PSAtMSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBhcmd1bWVudDEgPSByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbnVtZXJhdG9yKTsKKyAgICBWYWx1ZSogYXJn
dW1lbnQyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGRl
bm9taW5hdG9yKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBNb2QsIE9yaWdpbigpLCBhcmd1bWVudDEsIGFyZ3VtZW50Mik7CisgICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisKKyAg
ICBDSEVDSyhjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIG51bWVyYXRvciwgZGVub21pbmF0
b3IpID09IG51bWVyYXRvciAlIGRlbm9taW5hdG9yKTsKK30KKwordm9pZCB0ZXN0Q2hpbGxNb2RB
cmcoaW50NjRfdCB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIGNoaWxsKE1vZCksIE9yaWdpbigpLCBhcmd1bWVudCwgYXJndW1lbnQpOworICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOwor
CisgICAgQ0hFQ0soIWNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgdmFsdWUpKTsKK30KKwor
dm9pZCB0ZXN0Q2hpbGxNb2RBcmdzKGludDY0X3QgbnVtZXJhdG9yLCBpbnQ2NF90IGRlbm9taW5h
dG9yKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisKKyAgICBWYWx1ZSogYXJndW1lbnQxID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwor
ICAgIFZhbHVlKiBhcmd1bWVudDIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgVmFsdWUqIHJlc3Vs
dCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgY2hpbGwoTW9kKSwgT3JpZ2luKCksIGFy
Z3VtZW50MSwgYXJndW1lbnQyKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48
aW50NjRfdD4ocHJvYywgbnVtZXJhdG9yLCBkZW5vbWluYXRvcikgPT0gY2hpbGxNb2QobnVtZXJh
dG9yLCBkZW5vbWluYXRvcikpOworfQorCit2b2lkIHRlc3RDaGlsbE1vZEltbXMoaW50NjRfdCBu
dW1lcmF0b3IsIGludDY0X3QgZGVub21pbmF0b3IpCit7CisgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBhcmd1
bWVudDEgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbnVt
ZXJhdG9yKTsKKyAgICBWYWx1ZSogYXJndW1lbnQyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIGRlbm9taW5hdG9yKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBjaGlsbChNb2QpLCBPcmlnaW4oKSwgYXJndW1l
bnQxLCBhcmd1bWVudDIpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2
NF90Pihwcm9jLCBudW1lcmF0b3IsIGRlbm9taW5hdG9yKSA9PSBjaGlsbE1vZChudW1lcmF0b3Is
IGRlbm9taW5hdG9yKSk7Cit9CisKK3ZvaWQgdGVzdENoaWxsTW9kQXJnMzIoaW50MzJfdCB2YWx1
ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOworCisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAg
VmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgY2hpbGwoTW9kKSwg
T3JpZ2luKCksIGFyZ3VtZW50LCBhcmd1bWVudCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisKKyAgICBDSEVDSyghY29t
cGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCB2YWx1ZSkpOworfQorCit2b2lkIHRlc3RDaGlsbE1v
ZEFyZ3MzMihpbnQzMl90IG51bWVyYXRvciwgaW50MzJfdCBkZW5vbWluYXRvcikKK3sKKyAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
CisgICAgVmFsdWUqIGFyZ3VtZW50MSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1
bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmd1
bWVudDIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBjaGlsbChNb2QpLCBPcmlnaW4oKSwgYXJndW1lbnQxLCBhcmd1bWVu
dDIpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCByZXN1bHQpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBu
dW1lcmF0b3IsIGRlbm9taW5hdG9yKSA9PSBjaGlsbE1vZChudW1lcmF0b3IsIGRlbm9taW5hdG9y
KSk7Cit9CisKK3ZvaWQgdGVzdENoaWxsTW9kSW1tczMyKGludDMyX3QgbnVtZXJhdG9yLCBpbnQz
Ml90IGRlbm9taW5hdG9yKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBWYWx1ZSogYXJndW1lbnQxID0gcm9vdC0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIG51bWVyYXRvcik7CisgICAg
VmFsdWUqIGFyZ3VtZW50MiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBkZW5vbWluYXRvcik7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgY2hpbGwoTW9kKSwgT3JpZ2luKCksIGFyZ3VtZW50MSwgYXJndW1lbnQy
KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwgcmVzdWx0KTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgbnVt
ZXJhdG9yLCBkZW5vbWluYXRvcikgPT0gY2hpbGxNb2QobnVtZXJhdG9yLCBkZW5vbWluYXRvcikp
OworfQorCit2b2lkIHRlc3RMb29wV2l0aE11bHRpcGxlSGVhZGVyRWRnZXMoKQoreworICAgIFBy
b2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgQmFzaWNCbG9jayogaW5uZXJIZWFkZXIgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNC
bG9jayogaW5uZXJFbmQgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogb3V0ZXJI
ZWFkZXIgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogb3V0ZXJFbmQgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogZW5kID0gcHJvYy5hZGRCbG9jaygpOworCisg
ICAgYXV0byogbmU0MiA9IG91dGVySGVhZGVyLT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBw
cm9jLCBOb3RFcXVhbCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0MikpOwor
ICAgIG91dGVySGVhZGVyLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIEJy
YW5jaCwgT3JpZ2luKCksCisgICAgICAgIG5lNDIsCisgICAgICAgIEZyZXF1ZW50ZWRCbG9jayhp
bm5lckhlYWRlciksIEZyZXF1ZW50ZWRCbG9jayhvdXRlckVuZCkpOworICAgIG91dGVyRW5kLT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywg
T3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICBGcmVxdWVu
dGVkQmxvY2sob3V0ZXJIZWFkZXIpLCBGcmVxdWVudGVkQmxvY2soZW5kKSk7CisKKyAgICBTd2l0
Y2hWYWx1ZSogc3dpdGNoVmFsdWUgPSBpbm5lckhlYWRlci0+YXBwZW5kTmV3PFN3aXRjaFZhbHVl
PigKKyAgICAgICAgcHJvYywgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgc3dpdGNo
VmFsdWUtPnNldEZhbGxUaHJvdWdoKEZyZXF1ZW50ZWRCbG9jayhpbm5lckVuZCkpOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCAyMDsgKytpKSB7CisgICAgICAgIHN3aXRjaFZhbHVlLT5h
cHBlbmRDYXNlKFN3aXRjaENhc2UoaSwgRnJlcXVlbnRlZEJsb2NrKGlubmVySGVhZGVyKSkpOwor
ICAgIH0KKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmln
aW4oKSwgRnJlcXVlbnRlZEJsb2NrKG91dGVySGVhZGVyKSk7CisKKyAgICBpbm5lckVuZC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIEp1bXAsIE9yaWdpbigpLCBGcmVxdWVudGVkQmxvY2so
b3V0ZXJFbmQpKTsKKyAgICBlbmQtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgZW5kLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgNTY3OCkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2Mo
cHJvYyk7IC8vIFRoaXMgc2hvdWxkbid0IGNyYXNoIGluIGNvbXB1dGluZyBOYXR1cmFsTG9vcHMu
CisgICAgQ0hFQ0soaW52b2tlPGludDMyX3Q+KCpjb2RlLCAwLCAxMjM0NSkgPT0gNTY3OCk7Cit9
CisKK3ZvaWQgdGVzdFN3aXRjaCh1bnNpZ25lZCBkZWdyZWUsIHVuc2lnbmVkIGdhcCkKK3sKKyAg
ICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworCisgICAgQmFzaWNCbG9jayogdGVybWluYXRlID0gcHJvYy5hZGRCbG9jaygpOworICAgIHRl
cm1pbmF0ZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAorICAgICAgICB0ZXJtaW5hdGUtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAwKSk7CisKKyAgICBTd2l0Y2hWYWx1ZSogc3dpdGNoVmFsdWUgPSByb290LT5h
cHBlbmROZXc8U3dpdGNoVmFsdWU+KAorICAgICAgICBwcm9jLCBPcmlnaW4oKSwgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApKTsKKyAgICBzd2l0Y2hWYWx1ZS0+c2V0RmFsbFRocm91Z2goRnJlcXVlbnRlZEJsb2Nr
KHRlcm1pbmF0ZSkpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRlZ3JlZTsgKytp
KSB7CisgICAgICAgIEJhc2ljQmxvY2sqIG5ld0Jsb2NrID0gcHJvYy5hZGRCbG9jaygpOworICAg
ICAgICBuZXdCbG9jay0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIG5ld0Jsb2NrLT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgT3JpZ2luKCksIChpICYgMSkgPyBH
UFJJbmZvOjphcmd1bWVudEdQUjIgOiBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICAgICAg
c3dpdGNoVmFsdWUtPmFwcGVuZENhc2UoU3dpdGNoQ2FzZShnYXAgKiBpLCBGcmVxdWVudGVkQmxv
Y2sobmV3QmxvY2spKSk7CisgICAgfQorCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJv
Yyk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGVncmVlOyArK2kpIHsKKyAgICAg
ICAgQ0hFQ0soaW52b2tlPGludDMyX3Q+KCpjb2RlLCBpICogZ2FwLCA0MiwgMTEpID09ICgoaSAm
IDEpID8gMTEgOiA0MikpOworICAgICAgICBpZiAoZ2FwID4gMSkgeworICAgICAgICAgICAgQ0hF
Q0soIWludm9rZTxpbnQzMl90PigqY29kZSwgaSAqIGdhcCArIDEsIDQyLCAxMSkpOworICAgICAg
ICAgICAgQ0hFQ0soIWludm9rZTxpbnQzMl90PigqY29kZSwgaSAqIGdhcCAtIDEsIDQyLCAxMSkp
OworICAgICAgICB9CisgICAgfQorCisgICAgQ0hFQ0soIWludm9rZTxpbnQzMl90PigqY29kZSwg
LTEsIDQyLCAxMSkpOworICAgIENIRUNLKCFpbnZva2U8aW50MzJfdD4oKmNvZGUsIGRlZ3JlZSAq
IGdhcCwgNDIsIDExKSk7CisgICAgQ0hFQ0soIWludm9rZTxpbnQzMl90PigqY29kZSwgZGVncmVl
ICogZ2FwICsgMSwgNDIsIDExKSk7Cit9CisKK3ZvaWQgdGVzdFN3aXRjaFNhbWVDYXNlQXNEZWZh
dWx0KCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOworCisgICAgQmFzaWNCbG9jayogcmV0dXJuMTAgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgcmV0dXJuMTAtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcmV0dXJuMTAtPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCAxMCkpOworCisgICAgVmFsdWUqIHN3aXRjaE9wZXJhbmQgPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7CisKKyAgICBCYXNpY0Jsb2NrKiBjYXNlQW5kRGVmYXVsdCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICBjYXNlQW5kRGVmYXVsdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAor
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAgIGNhc2VBbmREZWZh
dWx0LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEVxdWFsLCBPcmln
aW4oKSwKKyAgICAgICAgICAgICAgICBzd2l0Y2hPcGVyYW5kLCBjYXNlQW5kRGVmYXVsdC0+YXBw
ZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSkpOworCisgICAgU3dpdGNo
VmFsdWUqIHN3aXRjaFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFN3aXRjaFZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgc3dpdGNoT3BlcmFuZCk7CisKKyAgICBzd2l0Y2hWYWx1ZS0+YXBwZW5kQ2FzZShT
d2l0Y2hDYXNlKDEwMCwgRnJlcXVlbnRlZEJsb2NrKHJldHVybjEwKSkpOworCisgICAgLy8gQmVj
YXVzZSBjYXNlQW5kRGVmYXVsdCBpcyByZWFjaGVkIGJvdGggYXMgZGVmYXVsdCBjYXNlLCBhbmQg
d2hlbiBpdCdzIDAsCisgICAgLy8gd2Ugc2hvdWxkIG5vdCBpbmNvcnJlY3RseSBvcHRpbWl6ZSBh
bmQgYXNzdW1lIHRoYXQgc3dpdGNoT3BlcmFuZD09MC4KKyAgICBzd2l0Y2hWYWx1ZS0+YXBwZW5k
Q2FzZShTd2l0Y2hDYXNlKDAsIEZyZXF1ZW50ZWRCbG9jayhjYXNlQW5kRGVmYXVsdCkpKTsKKyAg
ICBzd2l0Y2hWYWx1ZS0+c2V0RmFsbFRocm91Z2goRnJlcXVlbnRlZEJsb2NrKGNhc2VBbmREZWZh
dWx0KSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKworICAgIENIRUNL
KGludm9rZTxpbnQzMl90PigqY29kZSwgMTAwKSA9PSAxMCk7CisgICAgQ0hFQ0soaW52b2tlPGlu
dDMyX3Q+KCpjb2RlLCAwKSA9PSAxKTsKKyAgICBDSEVDSyhpbnZva2U8aW50MzJfdD4oKmNvZGUs
IDEpID09IDApOworICAgIENIRUNLKGludm9rZTxpbnQzMl90PigqY29kZSwgMikgPT0gMCk7Cisg
ICAgQ0hFQ0soaW52b2tlPGludDMyX3Q+KCpjb2RlLCA5OSkgPT0gMCk7CisgICAgQ0hFQ0soaW52
b2tlPGludDMyX3Q+KCpjb2RlLCAweGJhYWRiZWVmKSA9PSAwKTsKK30KKwordm9pZCB0ZXN0U3dp
dGNoQ2hpbGxEaXYodW5zaWduZWQgZGVncmVlLCB1bnNpZ25lZCBnYXApCit7CisgICAgUHJvY2Vk
dXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAg
IFZhbHVlKiBsZWZ0ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgIFZhbHVlKiByaWdodCA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIyKTsKKworICAgIEJhc2ljQmxvY2sqIHRlcm1pbmF0ZSA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICB0ZXJtaW5hdGUtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgdGVybWluYXRlLT5hcHBlbmROZXc8Q29uc3QzMlZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgU3dpdGNoVmFsdWUqIHN3aXRjaFZhbHVl
ID0gcm9vdC0+YXBwZW5kTmV3PFN3aXRjaFZhbHVlPigKKyAgICAgICAgcHJvYywgT3JpZ2luKCks
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKSk7CisgICAgc3dpdGNoVmFsdWUtPnNldEZhbGxUaHJvdWdoKEZyZXF1
ZW50ZWRCbG9jayh0ZXJtaW5hdGUpKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBk
ZWdyZWU7ICsraSkgeworICAgICAgICBCYXNpY0Jsb2NrKiBuZXdCbG9jayA9IHByb2MuYWRkQmxv
Y2soKTsKKworICAgICAgICBuZXdCbG9jay0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAg
ICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIG5ld0Jsb2NrLT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIGNoaWxsKERpdiksIE9yaWdpbigp
LCAoaSAmIDEpID8gcmlnaHQgOiBsZWZ0LCAoaSAmIDEpID8gbGVmdCA6IHJpZ2h0KSk7CisgICAg
CisgICAgICAgIHN3aXRjaFZhbHVlLT5hcHBlbmRDYXNlKFN3aXRjaENhc2UoZ2FwICogaSwgRnJl
cXVlbnRlZEJsb2NrKG5ld0Jsb2NrKSkpOworICAgIH0KKworICAgIGF1dG8gY29kZSA9IGNvbXBp
bGVQcm9jKHByb2MpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRlZ3JlZTsgKytp
KSB7CisgICAgICAgIGRhdGFMb2coImkgPSAiLCBpLCAiXG4iKTsKKyAgICAgICAgaW50MzJfdCBy
ZXN1bHQgPSBpbnZva2U8aW50MzJfdD4oKmNvZGUsIGkgKiBnYXAsIDQyLCAxMSk7CisgICAgICAg
IGRhdGFMb2coInJlc3VsdCA9ICIsIHJlc3VsdCwgIlxuIik7CisgICAgICAgIENIRUNLKHJlc3Vs
dCA9PSAoKGkgJiAxKSA/IDExLzQyIDogNDIvMTEpKTsKKyAgICAgICAgaWYgKGdhcCA+IDEpIHsK
KyAgICAgICAgICAgIENIRUNLKCFpbnZva2U8aW50MzJfdD4oKmNvZGUsIGkgKiBnYXAgKyAxLCA0
MiwgMTEpKTsKKyAgICAgICAgICAgIENIRUNLKCFpbnZva2U8aW50MzJfdD4oKmNvZGUsIGkgKiBn
YXAgLSAxLCA0MiwgMTEpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIENIRUNLKCFpbnZva2U8
aW50MzJfdD4oKmNvZGUsIC0xLCA0MiwgMTEpKTsKKyAgICBDSEVDSyghaW52b2tlPGludDMyX3Q+
KCpjb2RlLCBkZWdyZWUgKiBnYXAsIDQyLCAxMSkpOworICAgIENIRUNLKCFpbnZva2U8aW50MzJf
dD4oKmNvZGUsIGRlZ3JlZSAqIGdhcCArIDEsIDQyLCAxMSkpOworfQorCit2b2lkIHRlc3RTd2l0
Y2hUYXJnZXR0aW5nU2FtZUJsb2NrKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgQmFzaWNCbG9jayogdGVybWlu
YXRlID0gcHJvYy5hZGRCbG9jaygpOworICAgIHRlcm1pbmF0ZS0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICB0ZXJtaW5hdGUt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA1KSk7CisKKyAgICBTd2l0
Y2hWYWx1ZSogc3dpdGNoVmFsdWUgPSByb290LT5hcHBlbmROZXc8U3dpdGNoVmFsdWU+KAorICAg
ICAgICBwcm9jLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBzd2l0Y2hWYWx1ZS0+
c2V0RmFsbFRocm91Z2goRnJlcXVlbnRlZEJsb2NrKHRlcm1pbmF0ZSkpOworCisgICAgQmFzaWNC
bG9jayogb3RoZXJUYXJnZXQgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgb3RoZXJUYXJnZXQtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAg
ICAgICAgb3RoZXJUYXJnZXQtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCA0MikpOworICAgIHN3aXRjaFZhbHVlLT5hcHBlbmRDYXNlKFN3aXRjaENhc2UoMywgRnJlcXVl
bnRlZEJsb2NrKG90aGVyVGFyZ2V0KSkpOworICAgIHN3aXRjaFZhbHVlLT5hcHBlbmRDYXNlKFN3
aXRjaENhc2UoMTMsIEZyZXF1ZW50ZWRCbG9jayhvdGhlclRhcmdldCkpKTsKKworICAgIGF1dG8g
Y29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IDIwOyArK2kpIHsKKyAgICAgICAgaW50MzJfdCBleHBlY3RlZCA9IChpID09IDMgfHwgaSA9PSAx
MykgPyA0MiA6IDU7CisgICAgICAgIENIRUNLKGludm9rZTxpbnQzMl90PigqY29kZSwgaSkgPT0g
ZXhwZWN0ZWQpOworICAgIH0KK30KKwordm9pZCB0ZXN0U3dpdGNoVGFyZ2V0dGluZ1NhbWVCbG9j
a0ZvbGRQYXRoQ29uc3RhbnQoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBCYXNpY0Jsb2NrKiB0ZXJtaW5hdGUg
PSBwcm9jLmFkZEJsb2NrKCk7CisgICAgdGVybWluYXRlLT5hcHBlbmROZXdDb250cm9sVmFsdWUo
CisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHRlcm1pbmF0ZS0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKSk7CisKKyAgICBWYWx1ZSog
YXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgU3dpdGNoVmFsdWUqIHN3aXRjaFZhbHVl
ID0gcm9vdC0+YXBwZW5kTmV3PFN3aXRjaFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYXJndW1lbnQp
OworICAgIHN3aXRjaFZhbHVlLT5zZXRGYWxsVGhyb3VnaChGcmVxdWVudGVkQmxvY2sodGVybWlu
YXRlKSk7CisKKyAgICBCYXNpY0Jsb2NrKiBvdGhlclRhcmdldCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBvdGhlclRhcmdldC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCBhcmd1bWVudCk7CisgICAgc3dpdGNoVmFsdWUtPmFwcGVuZENhc2Uo
U3dpdGNoQ2FzZSgzLCBGcmVxdWVudGVkQmxvY2sob3RoZXJUYXJnZXQpKSk7CisgICAgc3dpdGNo
VmFsdWUtPmFwcGVuZENhc2UoU3dpdGNoQ2FzZSgxMywgRnJlcXVlbnRlZEJsb2NrKG90aGVyVGFy
Z2V0KSkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgMjA7ICsraSkgeworICAgICAgICBpbnQzMl90IGV4cGVjdGVk
ID0gKGkgPT0gMyB8fCBpID09IDEzKSA/IGkgOiA0MjsKKyAgICAgICAgQ0hFQ0soaW52b2tlPGlu
dDMyX3Q+KCpjb2RlLCBpKSA9PSBleHBlY3RlZCk7CisgICAgfQorfQorCit2b2lkIHRlc3RUcnVu
Y0ZvbGQoaW50NjRfdCB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCB2YWx1
ZSkpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jKSA9PSBzdGF0aWNfY2Fz
dDxpbnQ+KHZhbHVlKSk7Cit9CisKK3ZvaWQgdGVzdFpFeHQzMihpbnQzMl90IHZhbHVlKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgcHJvYywgWkV4dDMyLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48dWlu
dDY0X3Q+KHByb2MsIHZhbHVlKSA9PSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KHZhbHVlKSkpOworfQorCit2b2lkIHRlc3RaRXh0MzJGb2xkKGludDMyX3QgdmFs
dWUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgICAgICBwcm9jLCBaRXh0MzIsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHZhbHVlKSkpOworCisgICAgQ0hF
Q0soY29tcGlsZUFuZFJ1bjx1aW50NjRfdD4ocHJvYywgdmFsdWUpID09IHN0YXRpY19jYXN0PHVp
bnQ2NF90PihzdGF0aWNfY2FzdDx1aW50MzJfdD4odmFsdWUpKSk7Cit9CisKK3ZvaWQgdGVzdFNF
eHQzMihpbnQzMl90IHZhbHVlKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgU0V4dDMyLCBPcmlnaW4oKSwKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1
bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpKTsKKworICAg
IENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgdmFsdWUpID09IHN0YXRpY19jYXN0
PGludDY0X3Q+KHZhbHVlKSk7Cit9CisKK3ZvaWQgdGVzdFNFeHQzMkZvbGQoaW50MzJfdCB2YWx1
ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIFNFeHQzMiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdmFsdWUpKSk7CisKKyAgICBDSEVD
Syhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIHZhbHVlKSA9PSBzdGF0aWNfY2FzdDxpbnQ2
NF90Pih2YWx1ZSkpOworfQorCit2b2lkIHRlc3RUcnVuY1pFeHQzMihpbnQzMl90IHZhbHVlKQor
eworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAg
ICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBaRXh0MzIsIE9yaWdpbigpLAorICAgICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgIHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
KSkpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgdmFsdWUpID09
IHZhbHVlKTsKK30KKwordm9pZCB0ZXN0VHJ1bmNTRXh0MzIoaW50MzJfdCB2YWx1ZSkKK3sKKyAg
ICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
IHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgU0V4dDMyLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBU
cnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpKSk7
CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIHZhbHVlKSA9PSB2YWx1
ZSk7Cit9CisKK3ZvaWQgdGVzdFNFeHQ4KGludDMyX3QgdmFsdWUpCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTRXh0
OCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAg
ICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCkpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIHZh
bHVlKSA9PSBzdGF0aWNfY2FzdDxpbnQzMl90PihzdGF0aWNfY2FzdDxpbnQ4X3Q+KHZhbHVlKSkp
OworfQorCit2b2lkIHRlc3RTRXh0OEZvbGQoaW50MzJfdCB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1
cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFNF
eHQ4LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCB2YWx1ZSkpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50
MzJfdD4ocHJvYykgPT0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8aW50OF90Pih2
YWx1ZSkpKTsKK30KKwordm9pZCB0ZXN0U0V4dDhTRXh0OChpbnQzMl90IHZhbHVlKQoreworICAg
IFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAg
cHJvYywgU0V4dDgsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgICAgICBwcm9jLCBTRXh0OCwgT3JpZ2luKCksCisgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywgVHJ1
bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSkpOwor
CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCB2YWx1ZSkgPT0gc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8aW50OF90Pih2YWx1ZSkpKTsKK30KKwordm9pZCB0
ZXN0U0V4dDhTRXh0MTYoaW50MzJfdCB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFNFeHQ4LCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAg
cHJvYywgU0V4dDE2LCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAg
ICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpKSk7CisKKyAgICBDSEVDSyhjb21waWxl
QW5kUnVuPGludDMyX3Q+KHByb2MsIHZhbHVlKSA9PSBzdGF0aWNfY2FzdDxpbnQzMl90PihzdGF0
aWNfY2FzdDxpbnQ4X3Q+KHZhbHVlKSkpOworfQorCit2b2lkIHRlc3RTRXh0OEJpdEFuZChpbnQz
Ml90IHZhbHVlLCBpbnQzMl90IG1hc2spCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTRXh0OCwgT3JpZ2luKCksCisg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2Ms
IEJpdEFuZCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBtYXNrKSkpKTsKKworICAgIENIRUNL
KGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgdmFsdWUpID09IHN0YXRpY19jYXN0PGludDMy
X3Q+KHN0YXRpY19jYXN0PGludDhfdD4odmFsdWUgJiBtYXNrKSkpOworfQorCit2b2lkIHRlc3RC
aXRBbmRTRXh0OChpbnQzMl90IHZhbHVlLCBpbnQzMl90IG1hc2spCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRB
bmQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAg
ICAgICAgICAgICBwcm9jLCBTRXh0OCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdp
bigpLAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSwKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBtYXNrKSkpOwor
CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCB2YWx1ZSkgPT0gKHN0YXRp
Y19jYXN0PGludDMyX3Q+KHN0YXRpY19jYXN0PGludDhfdD4odmFsdWUpKSAmIG1hc2spKTsKK30K
Kwordm9pZCB0ZXN0U0V4dDE2KGludDMyX3QgdmFsdWUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTRXh0MTYsIE9y
aWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
ICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCB2YWx1ZSkg
PT0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8aW50MTZfdD4odmFsdWUpKSk7Cit9
CisKK3ZvaWQgdGVzdFNFeHQxNkZvbGQoaW50MzJfdCB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFNFeHQx
NiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgdmFsdWUpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDMy
X3Q+KHByb2MpID09IHN0YXRpY19jYXN0PGludDMyX3Q+KHN0YXRpY19jYXN0PGludDE2X3Q+KHZh
bHVlKSkpOworfQorCit2b2lkIHRlc3RTRXh0MTZTRXh0MTYoaW50MzJfdCB2YWx1ZSkKK3sKKyAg
ICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
IHByb2MsIFNFeHQxNiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFNFeHQxNiwgT3JpZ2luKCksCisgICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywg
VHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSkp
OworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCB2YWx1ZSkgPT0gc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8aW50MTZfdD4odmFsdWUpKSk7Cit9CisKK3Zv
aWQgdGVzdFNFeHQxNlNFeHQ4KGludDMyX3QgdmFsdWUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTRXh0MTYsIE9y
aWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
ICAgICBwcm9jLCBTRXh0OCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAor
ICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSkpOworCisgICAgQ0hFQ0soY29t
cGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCB2YWx1ZSkgPT0gc3RhdGljX2Nhc3Q8aW50MzJfdD4o
c3RhdGljX2Nhc3Q8aW50OF90Pih2YWx1ZSkpKTsKK30KKwordm9pZCB0ZXN0U0V4dDE2Qml0QW5k
KGludDMyX3QgdmFsdWUsIGludDMyX3QgbWFzaykKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFNFeHQxNiwgT3JpZ2lu
KCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAg
IHByb2MsIEJpdEFuZCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAg
ICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBtYXNrKSkpKTsKKworICAg
IENIRUNLKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgdmFsdWUpID09IHN0YXRpY19jYXN0
PGludDMyX3Q+KHN0YXRpY19jYXN0PGludDE2X3Q+KHZhbHVlICYgbWFzaykpKTsKK30KKwordm9p
ZCB0ZXN0Qml0QW5kU0V4dDE2KGludDMyX3QgdmFsdWUsIGludDMyX3QgbWFzaykKK3sKKyAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIEJpdEFuZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICAgICAgICAgIHByb2MsIFNFeHQxNiwgT3JpZ2luKCksCisgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywgVHJ1
bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSwKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBt
YXNrKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCB2YWx1ZSkg
PT0gKHN0YXRpY19jYXN0PGludDMyX3Q+KHN0YXRpY19jYXN0PGludDE2X3Q+KHZhbHVlKSkgJiBt
YXNrKSk7Cit9CisKK3ZvaWQgdGVzdFNFeHQzMkJpdEFuZChpbnQzMl90IHZhbHVlLCBpbnQzMl90
IG1hc2spCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAg
IHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgICAgICBwcm9jLCBTRXh0MzIsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigp
LAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAg
ICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgbWFzaykpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGlu
dDY0X3Q+KHByb2MsIHZhbHVlKSA9PSBzdGF0aWNfY2FzdDxpbnQ2NF90Pih2YWx1ZSAmIG1hc2sp
KTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvdGVzdGIzXzYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rl
c3RiM182LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YTNkNDZlZTU3OTlhMWIwZjFmYmI3ZjIyMWUzMWE5MzA0
YmQzN2FkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3Ri
M182LmNwcApAQCAtMCwwICsxLDI4NjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJ0ZXN0
YjMuaCIKKworI2lmIEVOQUJMRShCM19KSVQpCisKK3ZvaWQgdGVzdEJpdEFuZFNFeHQzMihpbnQz
Ml90IHZhbHVlLCBpbnQ2NF90IG1hc2spCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAor
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9j
LCBTRXh0MzIsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAg
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSksCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbWFzaykpKTsKKworICAgIENIRUNLKGNv
bXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgdmFsdWUpID09IChzdGF0aWNfY2FzdDxpbnQ2NF90
Pih2YWx1ZSkgJiBtYXNrKSk7Cit9CisKK3ZvaWQgdGVzdEJhc2ljU2VsZWN0KCkKK3sKKyAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIFNlbGVjdCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICAgICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0
UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0MikpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjEpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpKSk7CisKKyAgICBhdXRvIGNvZGUgPSBj
b21waWxlUHJvYyhwcm9jKTsKKyAgICBDSEVDSyhpbnZva2U8aW50cHRyX3Q+KCpjb2RlLCA0Miwg
MSwgMikgPT0gMSk7CisgICAgQ0hFQ0soaW52b2tlPGludHB0cl90PigqY29kZSwgNDIsIDY0MjQ2
MiwgMzI1MzMpID09IDY0MjQ2Mik7CisgICAgQ0hFQ0soaW52b2tlPGludHB0cl90PigqY29kZSwg
NDMsIDEsIDIpID09IDIpOworICAgIENIRUNLKGludm9rZTxpbnRwdHJfdD4oKmNvZGUsIDQzLCA2
NDI0NjIsIDMyNTMzKSA9PSAzMjUzMyk7Cit9CisKK3ZvaWQgdGVzdFNlbGVjdFRlc3QoKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgcHJvYywgU2VsZWN0LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIy
KSkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgQ0hFQ0soaW52
b2tlPGludHB0cl90PigqY29kZSwgNDIsIDEsIDIpID09IDEpOworICAgIENIRUNLKGludm9rZTxp
bnRwdHJfdD4oKmNvZGUsIDQyLCA2NDI0NjIsIDMyNTMzKSA9PSA2NDI0NjIpOworICAgIENIRUNL
KGludm9rZTxpbnRwdHJfdD4oKmNvZGUsIDAsIDEsIDIpID09IDIpOworICAgIENIRUNLKGludm9r
ZTxpbnRwdHJfdD4oKmNvZGUsIDAsIDY0MjQ2MiwgMzI1MzMpID09IDMyNTMzKTsKK30KKwordm9p
ZCB0ZXN0U2VsZWN0Q29tcGFyZURvdWJsZSgpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXdD
b250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTZWxlY3QsIE9yaWdpbigp
LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBw
cm9jLCBMZXNzVGhhbiwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjAp
LAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIxKSksCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKTsKKworICAgIGF1dG8gY29k
ZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIENIRUNLKGludm9rZTxpbnRwdHJfdD4oKmNvZGUs
IC0xLjAsIDEuMCwgMSwgMikgPT0gMSk7CisgICAgQ0hFQ0soaW52b2tlPGludHB0cl90PigqY29k
ZSwgNDIuNSwgNDIuNTEsIDY0MjQ2MiwgMzI1MzMpID09IDY0MjQ2Mik7CisgICAgQ0hFQ0soaW52
b2tlPGludHB0cl90PigqY29kZSwgUE5hTiwgMC4wLCAxLCAyKSA9PSAyKTsKKyAgICBDSEVDSyhp
bnZva2U8aW50cHRyX3Q+KCpjb2RlLCA0Mi41MSwgNDIuNSwgNjQyNDYyLCAzMjUzMykgPT0gMzI1
MzMpOworICAgIENIRUNLKGludm9rZTxpbnRwdHJfdD4oKmNvZGUsIDQyLjUyLCA0Mi41MiwgNTI0
OTc4MjQ1LCAzNTIpID09IDM1Mik7Cit9CisKK3RlbXBsYXRlPEIzOjpPcGNvZGUgb3Bjb2RlPgor
dm9pZCB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0KGZsb2F0IGEsIGZsb2F0IGIsIGJvb2wgKCpvcGVy
YXRpb24pKGZsb2F0LCBmbG9hdCkpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQxaW50MzIg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogYXJndW1lbnQyaW50MzIgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjEpKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZTEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQxaW50MzIpOworICAgIFZhbHVlKiBm
bG9hdFZhbHVlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9y
aWdpbigpLCBhcmd1bWVudDJpbnQzMik7CisKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTZWxlY3QsIE9yaWdpbigpLAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBvcGNv
ZGUsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIGZsb2F0VmFsdWUxLAorICAgICAgICAgICAg
ICAgIGZsb2F0VmFsdWUyKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKSwKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIzKSkpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRS
dW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3aXNlX2Nhc3Q8
aW50MzJfdD4oYiksIDQyLCAtNSksIG9wZXJhdGlvbihhLCBiKSA/IDQyIDogLTUpKTsKK30KKwor
dm9pZCB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAgdGVz
dFNlbGVjdENvbXBhcmVGbG9hdDxFcXVhbD4oYSwgYiwgW10oZmxvYXQgYSwgZmxvYXQgYikgLT4g
Ym9vbCB7IHJldHVybiBhID09IGI7IH0pOworICAgIHRlc3RTZWxlY3RDb21wYXJlRmxvYXQ8Tm90
RXF1YWw+KGEsIGIsIFtdKGZsb2F0IGEsIGZsb2F0IGIpIC0+IGJvb2wgeyByZXR1cm4gYSAhPSBi
OyB9KTsKKyAgICB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0PExlc3NUaGFuPihhLCBiLCBbXShmbG9h
dCBhLCBmbG9hdCBiKSAtPiBib29sIHsgcmV0dXJuIGEgPCBiOyB9KTsKKyAgICB0ZXN0U2VsZWN0
Q29tcGFyZUZsb2F0PEdyZWF0ZXJUaGFuPihhLCBiLCBbXShmbG9hdCBhLCBmbG9hdCBiKSAtPiBi
b29sIHsgcmV0dXJuIGEgPiBiOyB9KTsKKyAgICB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0PExlc3NF
cXVhbD4oYSwgYiwgW10oZmxvYXQgYSwgZmxvYXQgYikgLT4gYm9vbCB7IHJldHVybiBhIDw9IGI7
IH0pOworICAgIHRlc3RTZWxlY3RDb21wYXJlRmxvYXQ8R3JlYXRlckVxdWFsPihhLCBiLCBbXShm
bG9hdCBhLCBmbG9hdCBiKSAtPiBib29sIHsgcmV0dXJuIGEgPj0gYjsgfSk7CisgICAgdGVzdFNl
bGVjdENvbXBhcmVGbG9hdDxFcXVhbE9yVW5vcmRlcmVkPihhLCBiLCBbXShmbG9hdCBhLCBmbG9h
dCBiKSAtPiBib29sIHsgcmV0dXJuIGEgIT0gYSB8fCBiICE9IGIgfHwgYSA9PSBiOyB9KTsKK30K
KwordGVtcGxhdGU8QjM6Ok9wY29kZSBvcGNvZGU+Cit2b2lkIHRlc3RTZWxlY3RDb21wYXJlRmxv
YXRUb0RvdWJsZShmbG9hdCBhLCBmbG9hdCBiLCBib29sICgqb3BlcmF0aW9uKShmbG9hdCwgZmxv
YXQpKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7
CisgICAgVmFsdWUqIGFyZ3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgVmFsdWUq
IGZsb2F0VmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwg
T3JpZ2luKCksIGFyZ3VtZW50MWludDMyKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZTIgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQy
aW50MzIpOworICAgIFZhbHVlKiBkb3VibGVWYWx1ZTEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlMSk7CisgICAgVmFsdWUq
IGRvdWJsZVZhbHVlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJs
ZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUyKTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFNlbGVjdCwgT3JpZ2luKCksCisgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIG9w
Y29kZSwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgZG91YmxlVmFsdWUxLAorICAgICAgICAg
ICAgICAgIGRvdWJsZVZhbHVlMiksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMiksCisgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMykpKTsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxl
QW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYml0d2lzZV9j
YXN0PGludDMyX3Q+KGIpLCA0MiwgLTUpLCBvcGVyYXRpb24oYSwgYikgPyA0MiA6IC01KSk7Cit9
CisKK3ZvaWQgdGVzdFNlbGVjdENvbXBhcmVGbG9hdFRvRG91YmxlKGZsb2F0IGEsIGZsb2F0IGIp
Cit7CisgICAgdGVzdFNlbGVjdENvbXBhcmVGbG9hdFRvRG91YmxlPEVxdWFsPihhLCBiLCBbXShm
bG9hdCBhLCBmbG9hdCBiKSAtPiBib29sIHsgcmV0dXJuIGEgPT0gYjsgfSk7CisgICAgdGVzdFNl
bGVjdENvbXBhcmVGbG9hdFRvRG91YmxlPE5vdEVxdWFsPihhLCBiLCBbXShmbG9hdCBhLCBmbG9h
dCBiKSAtPiBib29sIHsgcmV0dXJuIGEgIT0gYjsgfSk7CisgICAgdGVzdFNlbGVjdENvbXBhcmVG
bG9hdFRvRG91YmxlPExlc3NUaGFuPihhLCBiLCBbXShmbG9hdCBhLCBmbG9hdCBiKSAtPiBib29s
IHsgcmV0dXJuIGEgPCBiOyB9KTsKKyAgICB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0VG9Eb3VibGU8
R3JlYXRlclRoYW4+KGEsIGIsIFtdKGZsb2F0IGEsIGZsb2F0IGIpIC0+IGJvb2wgeyByZXR1cm4g
YSA+IGI7IH0pOworICAgIHRlc3RTZWxlY3RDb21wYXJlRmxvYXRUb0RvdWJsZTxMZXNzRXF1YWw+
KGEsIGIsIFtdKGZsb2F0IGEsIGZsb2F0IGIpIC0+IGJvb2wgeyByZXR1cm4gYSA8PSBiOyB9KTsK
KyAgICB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0VG9Eb3VibGU8R3JlYXRlckVxdWFsPihhLCBiLCBb
XShmbG9hdCBhLCBmbG9hdCBiKSAtPiBib29sIHsgcmV0dXJuIGEgPj0gYjsgfSk7CisgICAgdGVz
dFNlbGVjdENvbXBhcmVGbG9hdFRvRG91YmxlPEVxdWFsT3JVbm9yZGVyZWQ+KGEsIGIsIFtdKGZs
b2F0IGEsIGZsb2F0IGIpIC0+IGJvb2wgeyByZXR1cm4gYSAhPSBhIHx8IGIgIT0gYiB8fCBhID09
IGI7IH0pOworfQorCit2b2lkIHRlc3RTZWxlY3REb3VibGUoKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgU2VsZWN0
LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
ICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIDQyKSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCksCisgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEZQUkluZm86OmFyZ3VtZW50RlBSMSkpKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9j
KHByb2MpOworICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCA0MiwgMS41LCAyLjYpID09
IDEuNSk7CisgICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDQyLCA2NDI0NjIuNywgMzI1
MzMuOCkgPT0gNjQyNDYyLjcpOworICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCA0Mywg
MS45LCAyLjApID09IDIuMCk7CisgICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDQzLCA2
NDI0NjIuMSwgMzI1MzMuMikgPT0gMzI1MzMuMik7Cit9CisKK3ZvaWQgdGVzdFNlbGVjdERvdWJs
ZVRlc3QoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICAgICAgcHJvYywgU2VsZWN0LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6
YXJndW1lbnRGUFIxKSkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Cisg
ICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDQyLCAxLjUsIDIuNikgPT0gMS41KTsKKyAg
ICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgNDIsIDY0MjQ2Mi43LCAzMjUzMy44KSA9PSA2
NDI0NjIuNyk7CisgICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDAsIDEuOSwgMi4wKSA9
PSAyLjApOworICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAwLCA2NDI0NjIuMSwgMzI1
MzMuMikgPT0gMzI1MzMuMik7Cit9CisKK3ZvaWQgdGVzdFNlbGVjdERvdWJsZUNvbXBhcmVEb3Vi
bGUoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICAgICAgcHJvYywgU2VsZWN0LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgTGVzc1RoYW4sIE9yaWdpbigp
LAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKSwKKyAgICAgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFy
Z3VtZW50RlBSMSkpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjIpLAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZv
Ojphcmd1bWVudEZQUjMpKSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsK
KyAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgLTEuMCwgMS4wLCAxLjEsIDIuMikgPT0g
MS4xKTsKKyAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgNDIuNSwgNDIuNTEsIDY0MjQ2
Mi4zLCAzMjUzMy40KSA9PSA2NDI0NjIuMyk7CisgICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNv
ZGUsIFBOYU4sIDAuMCwgMS41LCAyLjYpID09IDIuNik7CisgICAgQ0hFQ0soaW52b2tlPGRvdWJs
ZT4oKmNvZGUsIDQyLjUxLCA0Mi41LCA2NDI0NjIuNywgMzI1MzMuOCkgPT0gMzI1MzMuOCk7Cisg
ICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDQyLjUyLCA0Mi41MiwgNTI0OTc4MjQ1Ljks
IDM1Mi4wKSA9PSAzNTIuMCk7Cit9CisKK3ZvaWQgdGVzdFNlbGVjdERvdWJsZUNvbXBhcmVGbG9h
dChmbG9hdCBhLCBmbG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIx
KSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MWludDMyKTsKKyAgICBWYWx1ZSogZmxv
YXRWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmln
aW4oKSwgYXJndW1lbnQyaW50MzIpOworCisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgU2VsZWN0LCBPcmlnaW4oKSwKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgTGVzc1Ro
YW4sIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIGZsb2F0VmFsdWUxLAorICAgICAgICAgICAg
ICAgIGZsb2F0VmFsdWUyKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKSwKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBS
SW5mbzo6YXJndW1lbnRGUFIxKSkpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFu
ZFJ1bjxkb3VibGU+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYml0d2lzZV9jYXN0
PGludDMyX3Q+KGIpLCA0Mi4xLCAtTV9QSSksIGEgPCBiID8gNDIuMSA6IC1NX1BJKSk7Cit9CisK
K3ZvaWQgdGVzdFNlbGVjdEZsb2F0Q29tcGFyZUZsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCit7Cisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICBWYWx1ZSogYXJndW1lbnQxaW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1
ZSogYXJndW1lbnQyaW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICBWYWx1ZSogYXJndW1lbnQz
aW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjIpKTsKKyAgICBWYWx1ZSogYXJndW1lbnQ0aW50MzIgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjMpKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZTEgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQxaW50MzIpOworICAgIFZh
bHVlKiBmbG9hdFZhbHVlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNh
c3QsIE9yaWdpbigpLCBhcmd1bWVudDJpbnQzMik7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUzID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3Vt
ZW50M2ludDMyKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZTQgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQ0aW50MzIpOworCisgICAg
cm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywg
U2VsZWN0LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgICAgICAgICAgcHJvYywgTGVzc1RoYW4sIE9yaWdpbigpLAorICAgICAgICAgICAgICAg
IGZsb2F0VmFsdWUxLAorICAgICAgICAgICAgICAgIGZsb2F0VmFsdWUyKSwKKyAgICAgICAgICAg
IGZsb2F0VmFsdWUzLAorICAgICAgICAgICAgZmxvYXRWYWx1ZTQpKTsKKworICAgIENIRUNLKGlz
SWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZmxvYXQ+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90
PihhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oMS4x
ZiksIGJpdHdpc2VfY2FzdDxpbnQzMl90PigtNDIuZikpLCBhIDwgYiA/IDEuMWYgOiAtNDIuZikp
OworfQorCisKK3RlbXBsYXRlPEIzOjpPcGNvZGUgb3Bjb2RlPgordm9pZCB0ZXN0U2VsZWN0RG91
YmxlQ29tcGFyZURvdWJsZShib29sICgqb3BlcmF0aW9uKShkb3VibGUsIGRvdWJsZSkpCit7Cisg
ICAgeyAvLyBDb21wYXJlIGFyZ3VtZW50cyBhbmQgc2VsZWN0ZWQgYXJndW1lbnRzIGFyZSBhbGwg
ZGlmZmVyZW50LgorICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgVmFsdWUqIGFyZzAgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50
RlBSMCk7CisgICAgICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOworICAgICAgICBW
YWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIyKTsKKyAgICAgICAgVmFsdWUqIGFyZzMgPSByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFy
Z3VtZW50RlBSMyk7CisKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAg
ICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgU2VsZWN0LCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgICAg
ICBwcm9jLCBvcGNvZGUsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgICAgICBhcmcwLAorICAg
ICAgICAgICAgICAgICAgICBhcmcxKSwKKyAgICAgICAgICAgICAgICBhcmcyLAorICAgICAgICAg
ICAgICAgIGFyZzMpKTsKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisK
KyAgICAgICAgZm9yIChhdXRvJiBsZWZ0IDogZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4o
KSkgeworICAgICAgICAgICAgZm9yIChhdXRvJiByaWdodCA6IGZsb2F0aW5nUG9pbnRPcGVyYW5k
czxkb3VibGU+KCkpIHsKKyAgICAgICAgICAgICAgICBkb3VibGUgZXhwZWN0ZWQgPSBvcGVyYXRp
b24obGVmdC52YWx1ZSwgcmlnaHQudmFsdWUpID8gNDIuNSA6IC02Ni41OworICAgICAgICAgICAg
ICAgIENIRUNLKGlzSWRlbnRpY2FsKGludm9rZTxkb3VibGU+KCpjb2RlLCBsZWZ0LnZhbHVlLCBy
aWdodC52YWx1ZSwgNDIuNSwgLTY2LjUpLCBleHBlY3RlZCkpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorICAgIHsgLy8gQ29tcGFyZSBhcmd1bWVudHMgYW5kIHNlbGVjdGVkIGFy
Z3VtZW50cyBhcmUgYWxsIGRpZmZlcmVudC4gInRoZW5DYXNlIiBpcyBsaXZlIGFmdGVyIG9wZXJh
dGlvbi4KKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIFZhbHVlKiBhcmcwID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjAp
OworICAgICAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIxKTsKKyAgICAgICAgVmFsdWUq
IGFyZzIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEZQUkluZm86OmFyZ3VtZW50RlBSMik7CisgICAgICAgIFZhbHVlKiBhcmczID0gcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVu
dEZQUjMpOworCisgICAgICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFNlbGVjdCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIG9wY29kZSwgT3JpZ2luKCksIGFyZzAsIGFyZzEpLAorICAgICAgICAgICAgYXJn
MiwKKyAgICAgICAgICAgIGFyZzMpOworCisgICAgICAgIFBhdGNocG9pbnRWYWx1ZSoga2VlcFZh
bHVlc0xpdmUgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBWb2lkLCBP
cmlnaW4oKSk7CisgICAgICAgIGtlZXBWYWx1ZXNMaXZlLT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1
ZShhcmcyLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7CisgICAgICAgIGtlZXBWYWx1ZXNMaXZl
LT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMmLCBjb25zdCBTdGFja21hcEdlbmVyYXRp
b25QYXJhbXMmKSB7IH0pOworCisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOworICAgICAgICBhdXRvIGNvZGUgPSBjb21w
aWxlUHJvYyhwcm9jKTsKKworICAgICAgICBmb3IgKGF1dG8mIGxlZnQgOiBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZG91YmxlPigpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHJpZ2h0IDogZmxv
YXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSkgeworICAgICAgICAgICAgICAgIGRvdWJsZSBl
eHBlY3RlZCA9IG9wZXJhdGlvbihsZWZ0LnZhbHVlLCByaWdodC52YWx1ZSkgPyA0Mi41IDogLTY2
LjU7CisgICAgICAgICAgICAgICAgQ0hFQ0soaXNJZGVudGljYWwoaW52b2tlPGRvdWJsZT4oKmNv
ZGUsIGxlZnQudmFsdWUsIHJpZ2h0LnZhbHVlLCA0Mi41LCAtNjYuNSksIGV4cGVjdGVkKSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgeyAvLyBDb21wYXJlIGFyZ3VtZW50
cyBhbmQgc2VsZWN0ZWQgYXJndW1lbnRzIGFyZSBhbGwgZGlmZmVyZW50LiAiZWxzZUNhc2UiIGlz
IGxpdmUgYWZ0ZXIgb3BlcmF0aW9uLgorICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgVmFsdWUqIGFyZzAg
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUklu
Zm86OmFyZ3VtZW50RlBSMCk7CisgICAgICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjEp
OworICAgICAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIyKTsKKyAgICAgICAgVmFsdWUq
IGFyZzMgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEZQUkluZm86OmFyZ3VtZW50RlBSMyk7CisKKyAgICAgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2VsZWN0LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgb3Bjb2RlLCBPcmlnaW4oKSwgYXJnMCwgYXJnMSks
CisgICAgICAgICAgICBhcmcyLAorICAgICAgICAgICAgYXJnMyk7CisKKyAgICAgICAgUGF0Y2hw
b2ludFZhbHVlKiBrZWVwVmFsdWVzTGl2ZSA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFs
dWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKKyAgICAgICAga2VlcFZhbHVlc0xpdmUtPmFwcGVu
ZChDb25zdHJhaW5lZFZhbHVlKGFyZzMsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICAg
ICAga2VlcFZhbHVlc0xpdmUtPnNldEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVycyYsIGNvbnN0
IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsgfSk7CisKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgICAg
IGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworCisgICAgICAgIGZvciAoYXV0byYgbGVm
dCA6IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpIHsKKyAgICAgICAgICAgIGZvciAo
YXV0byYgcmlnaHQgOiBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKSB7CisgICAgICAg
ICAgICAgICAgZG91YmxlIGV4cGVjdGVkID0gb3BlcmF0aW9uKGxlZnQudmFsdWUsIHJpZ2h0LnZh
bHVlKSA/IDQyLjUgOiAtNjYuNTsKKyAgICAgICAgICAgICAgICBDSEVDSyhpc0lkZW50aWNhbChp
bnZva2U8ZG91YmxlPigqY29kZSwgbGVmdC52YWx1ZSwgcmlnaHQudmFsdWUsIDQyLjUsIC02Ni41
KSwgZXhwZWN0ZWQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICB7IC8v
IENvbXBhcmUgYXJndW1lbnRzIGFuZCBzZWxlY3RlZCBhcmd1bWVudHMgYXJlIGFsbCBkaWZmZXJl
bnQuIEJvdGggY2FzZXMgYXJlIGxpdmUgYWZ0ZXIgb3BlcmF0aW9uLgorICAgICAgICBQcm9jZWR1
cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICAgICAgVmFsdWUqIGFyZzAgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgICAgIFZhbHVlKiBhcmcx
ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJ
bmZvOjphcmd1bWVudEZQUjEpOworICAgICAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIy
KTsKKyAgICAgICAgVmFsdWUqIGFyZzMgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMyk7CisKKyAgICAgICAgVmFs
dWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2VsZWN0LCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgb3Bjb2RlLCBPcmln
aW4oKSwgYXJnMCwgYXJnMSksCisgICAgICAgICAgICBhcmcyLAorICAgICAgICAgICAgYXJnMyk7
CisKKyAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBrZWVwVmFsdWVzTGl2ZSA9IHJvb3QtPmFwcGVu
ZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKKyAgICAgICAga2Vl
cFZhbHVlc0xpdmUtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzIsIFZhbHVlUmVwOjpTb21l
UmVnaXN0ZXIpKTsKKyAgICAgICAga2VlcFZhbHVlc0xpdmUtPmFwcGVuZChDb25zdHJhaW5lZFZh
bHVlKGFyZzMsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICAgICAga2VlcFZhbHVlc0xp
dmUtPnNldEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJh
dGlvblBhcmFtcyYpIHsgfSk7CisKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgICAgIGF1dG8gY29kZSA9IGNv
bXBpbGVQcm9jKHByb2MpOworCisgICAgICAgIGZvciAoYXV0byYgbGVmdCA6IGZsb2F0aW5nUG9p
bnRPcGVyYW5kczxkb3VibGU+KCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcmlnaHQgOiBm
bG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKSB7CisgICAgICAgICAgICAgICAgZG91Ymxl
IGV4cGVjdGVkID0gb3BlcmF0aW9uKGxlZnQudmFsdWUsIHJpZ2h0LnZhbHVlKSA/IDQyLjUgOiAt
NjYuNTsKKyAgICAgICAgICAgICAgICBDSEVDSyhpc0lkZW50aWNhbChpbnZva2U8ZG91YmxlPigq
Y29kZSwgbGVmdC52YWx1ZSwgcmlnaHQudmFsdWUsIDQyLjUsIC02Ni41KSwgZXhwZWN0ZWQpKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICB7IC8vIFRoZSBsZWZ0IGFyZ3Vt
ZW50IGlzIHRoZSBzYW1lIGFzIHRoZSAiZWxzZUNhc2UiIGFyZ3VtZW50LgorICAgICAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICAgICAgVmFsdWUqIGFyZzAgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgICAgIFZhbHVlKiBh
cmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBG
UFJJbmZvOjphcmd1bWVudEZQUjEpOworICAgICAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRG
UFIyKTsKKworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBTZWxlY3QsIE9yaWdpbigpLAorICAgICAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgIHByb2Ms
IG9wY29kZSwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgICAgIGFyZzAsCisgICAgICAgICAg
ICAgICAgICAgIGFyZzEpLAorICAgICAgICAgICAgICAgIGFyZzIsCisgICAgICAgICAgICAgICAg
YXJnMCkpOworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKworICAgICAg
ICBmb3IgKGF1dG8mIGxlZnQgOiBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKSB7Cisg
ICAgICAgICAgICBmb3IgKGF1dG8mIHJpZ2h0IDogZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJs
ZT4oKSkgeworICAgICAgICAgICAgICAgIGRvdWJsZSBleHBlY3RlZCA9IG9wZXJhdGlvbihsZWZ0
LnZhbHVlLCByaWdodC52YWx1ZSkgPyA0Mi41IDogbGVmdC52YWx1ZTsKKyAgICAgICAgICAgICAg
ICBDSEVDSyhpc0lkZW50aWNhbChpbnZva2U8ZG91YmxlPigqY29kZSwgbGVmdC52YWx1ZSwgcmln
aHQudmFsdWUsIDQyLjUsIGxlZnQudmFsdWUpLCBleHBlY3RlZCkpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorICAgIHsgLy8gVGhlIGxlZnQgYXJndW1lbnQgaXMgdGhlIHNhbWUg
YXMgdGhlICJlbHNlQ2FzZSIgYXJndW1lbnQuICJ0aGVuQ2FzZSIgaXMgbGl2ZSBhZnRlciBvcGVy
YXRpb24uCisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBWYWx1ZSogYXJnMCA9IHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIw
KTsKKyAgICAgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7CisgICAgICAgIFZhbHVl
KiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBGUFJJbmZvOjphcmd1bWVudEZQUjIpOworCisgICAgICAgIFZhbHVlKiByZXN1bHQgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNlbGVjdCwgT3JpZ2luKCksCisgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIG9wY29kZSwgT3JpZ2luKCksIGFyZzAsIGFyZzEp
LAorICAgICAgICAgICAgYXJnMiwKKyAgICAgICAgICAgIGFyZzApOworCisgICAgICAgIFBhdGNo
cG9pbnRWYWx1ZSoga2VlcFZhbHVlc0xpdmUgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZh
bHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7CisgICAgICAgIGtlZXBWYWx1ZXNMaXZlLT5hcHBl
bmQoQ29uc3RyYWluZWRWYWx1ZShhcmcyLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7CisgICAg
ICAgIGtlZXBWYWx1ZXNMaXZlLT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMmLCBjb25z
dCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7IH0pOworCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOworICAgICAg
ICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKworICAgICAgICBmb3IgKGF1dG8mIGxl
ZnQgOiBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKSB7CisgICAgICAgICAgICBmb3Ig
KGF1dG8mIHJpZ2h0IDogZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSkgeworICAgICAg
ICAgICAgICAgIGRvdWJsZSBleHBlY3RlZCA9IG9wZXJhdGlvbihsZWZ0LnZhbHVlLCByaWdodC52
YWx1ZSkgPyA0Mi41IDogbGVmdC52YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVDSyhpc0lkZW50
aWNhbChpbnZva2U8ZG91YmxlPigqY29kZSwgbGVmdC52YWx1ZSwgcmlnaHQudmFsdWUsIDQyLjUs
IGxlZnQudmFsdWUpLCBleHBlY3RlZCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorfQorCit2b2lkIHRlc3RTZWxlY3REb3VibGVDb21wYXJlRG91YmxlV2l0aEFsaWFzaW5nKCkK
K3sKKyAgICB0ZXN0U2VsZWN0RG91YmxlQ29tcGFyZURvdWJsZTxFcXVhbD4oW10oZG91YmxlIGEs
IGRvdWJsZSBiKSAtPiBib29sIHsgcmV0dXJuIGEgPT0gYjsgfSk7CisgICAgdGVzdFNlbGVjdERv
dWJsZUNvbXBhcmVEb3VibGU8Tm90RXF1YWw+KFtdKGRvdWJsZSBhLCBkb3VibGUgYikgLT4gYm9v
bCB7IHJldHVybiBhICE9IGI7IH0pOworICAgIHRlc3RTZWxlY3REb3VibGVDb21wYXJlRG91Ymxl
PExlc3NUaGFuPihbXShkb3VibGUgYSwgZG91YmxlIGIpIC0+IGJvb2wgeyByZXR1cm4gYSA8IGI7
IH0pOworICAgIHRlc3RTZWxlY3REb3VibGVDb21wYXJlRG91YmxlPEdyZWF0ZXJUaGFuPihbXShk
b3VibGUgYSwgZG91YmxlIGIpIC0+IGJvb2wgeyByZXR1cm4gYSA+IGI7IH0pOworICAgIHRlc3RT
ZWxlY3REb3VibGVDb21wYXJlRG91YmxlPExlc3NFcXVhbD4oW10oZG91YmxlIGEsIGRvdWJsZSBi
KSAtPiBib29sIHsgcmV0dXJuIGEgPD0gYjsgfSk7CisgICAgdGVzdFNlbGVjdERvdWJsZUNvbXBh
cmVEb3VibGU8R3JlYXRlckVxdWFsPihbXShkb3VibGUgYSwgZG91YmxlIGIpIC0+IGJvb2wgeyBy
ZXR1cm4gYSA+PSBiOyB9KTsKKyAgICB0ZXN0U2VsZWN0RG91YmxlQ29tcGFyZURvdWJsZTxFcXVh
bE9yVW5vcmRlcmVkPihbXShkb3VibGUgYSwgZG91YmxlIGIpIC0+IGJvb2wgeyByZXR1cm4gYSAh
PSBhIHx8IGIgIT0gYiB8fCBhID09IGI7IH0pOworfQorCit0ZW1wbGF0ZTxCMzo6T3Bjb2RlIG9w
Y29kZT4KK3ZvaWQgdGVzdFNlbGVjdEZsb2F0Q29tcGFyZUZsb2F0KGJvb2wgKCpvcGVyYXRpb24p
KGZsb2F0LCBmbG9hdCkpCit7CisgICAgeyAvLyBDb21wYXJlIGFyZ3VtZW50cyBhbmQgc2VsZWN0
ZWQgYXJndW1lbnRzIGFyZSBhbGwgZGlmZmVyZW50LgorICAgICAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBW
YWx1ZSogYXJnMCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9y
aWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywg
T3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSk7CisgICAgICAgIFZh
bHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3Jp
Z2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKTsKKyAgICAgICAgVmFs
dWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmln
aW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9y
aWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKSkpOworICAgICAgICBWYWx1
ZSogYXJnMyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdp
bigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3Jp
Z2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpKSk7CisKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAg
ICAgcHJvYywgU2VsZWN0LCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBvcGNvZGUsIE9yaWdpbigpLAor
ICAgICAgICAgICAgICAgICAgICBhcmcwLAorICAgICAgICAgICAgICAgICAgICBhcmcxKSwKKyAg
ICAgICAgICAgICAgICBhcmcyLAorICAgICAgICAgICAgICAgIGFyZzMpKTsKKyAgICAgICAgYXV0
byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICAgICAgZm9yIChhdXRvJiBsZWZ0IDog
ZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8m
IHJpZ2h0IDogZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKSB7CisgICAgICAgICAgICAg
ICAgZmxvYXQgZXhwZWN0ZWQgPSBvcGVyYXRpb24obGVmdC52YWx1ZSwgcmlnaHQudmFsdWUpID8g
NDIuNSA6IC02Ni41OworICAgICAgICAgICAgICAgIENIRUNLKGlzSWRlbnRpY2FsKGludm9rZTxm
bG9hdD4oKmNvZGUsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihsZWZ0LnZhbHVlKSwgYml0d2lzZV9j
YXN0PGludDMyX3Q+KHJpZ2h0LnZhbHVlKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KDQyLjVmKSwg
Yml0d2lzZV9jYXN0PGludDMyX3Q+KC02Ni41ZikpLCBleHBlY3RlZCkpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorICAgIHsgLy8gQ29tcGFyZSBhcmd1bWVudHMgYW5kIHNlbGVj
dGVkIGFyZ3VtZW50cyBhcmUgYWxsIGRpZmZlcmVudC4gInRoZW5DYXNlIiBpcyBsaXZlIGFmdGVy
IG9wZXJhdGlvbi4KKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIFZhbHVlKiBhcmcwID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCisgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCkpKTsKKyAgICAgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxKSkpOworICAgICAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjIpKSk7CisgICAgICAgIFZhbHVlKiBhcmczID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMykpKTsKKworICAgICAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBTZWxlY3QsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBvcGNvZGUsIE9yaWdpbigpLCBhcmcwLCBhcmcxKSwKKyAg
ICAgICAgICAgIGFyZzIsCisgICAgICAgICAgICBhcmczKTsKKworICAgICAgICBQYXRjaHBvaW50
VmFsdWUqIGtlZXBWYWx1ZXNMaXZlID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4o
cHJvYywgVm9pZCwgT3JpZ2luKCkpOworICAgICAgICBrZWVwVmFsdWVzTGl2ZS0+YXBwZW5kKENv
bnN0cmFpbmVkVmFsdWUoYXJnMiwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOworICAgICAgICBr
ZWVwVmFsdWVzTGl2ZS0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKKworICAgICAgICByb290LT5hcHBlbmROZXdD
b250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICAgICAgYXV0
byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICAgICAgZm9yIChhdXRvJiBsZWZ0IDog
ZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8m
IHJpZ2h0IDogZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKSB7CisgICAgICAgICAgICAg
ICAgZmxvYXQgZXhwZWN0ZWQgPSBvcGVyYXRpb24obGVmdC52YWx1ZSwgcmlnaHQudmFsdWUpID8g
NDIuNSA6IC02Ni41OworICAgICAgICAgICAgICAgIENIRUNLKGlzSWRlbnRpY2FsKGludm9rZTxm
bG9hdD4oKmNvZGUsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihsZWZ0LnZhbHVlKSwgYml0d2lzZV9j
YXN0PGludDMyX3Q+KHJpZ2h0LnZhbHVlKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KDQyLjVmKSwg
Yml0d2lzZV9jYXN0PGludDMyX3Q+KC02Ni41ZikpLCBleHBlY3RlZCkpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorICAgIHsgLy8gQ29tcGFyZSBhcmd1bWVudHMgYW5kIHNlbGVj
dGVkIGFyZ3VtZW50cyBhcmUgYWxsIGRpZmZlcmVudC4gImVsc2VDYXNlIiBpcyBsaXZlIGFmdGVy
IG9wZXJhdGlvbi4KKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIFZhbHVlKiBhcmcwID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCisgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCkpKTsKKyAgICAgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxKSkpOworICAgICAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjIpKSk7CisgICAgICAgIFZhbHVlKiBhcmczID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMykpKTsKKworICAgICAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBTZWxlY3QsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBvcGNvZGUsIE9yaWdpbigpLCBhcmcwLCBhcmcxKSwKKyAg
ICAgICAgICAgIGFyZzIsCisgICAgICAgICAgICBhcmczKTsKKworICAgICAgICBQYXRjaHBvaW50
VmFsdWUqIGtlZXBWYWx1ZXNMaXZlID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4o
cHJvYywgVm9pZCwgT3JpZ2luKCkpOworICAgICAgICBrZWVwVmFsdWVzTGl2ZS0+YXBwZW5kKENv
bnN0cmFpbmVkVmFsdWUoYXJnMywgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOworICAgICAgICBr
ZWVwVmFsdWVzTGl2ZS0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKKworICAgICAgICByb290LT5hcHBlbmROZXdD
b250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICAgICAgYXV0
byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICAgICAgZm9yIChhdXRvJiBsZWZ0IDog
ZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8m
IHJpZ2h0IDogZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKSB7CisgICAgICAgICAgICAg
ICAgZmxvYXQgZXhwZWN0ZWQgPSBvcGVyYXRpb24obGVmdC52YWx1ZSwgcmlnaHQudmFsdWUpID8g
NDIuNSA6IC02Ni41OworICAgICAgICAgICAgICAgIENIRUNLKGlzSWRlbnRpY2FsKGludm9rZTxm
bG9hdD4oKmNvZGUsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihsZWZ0LnZhbHVlKSwgYml0d2lzZV9j
YXN0PGludDMyX3Q+KHJpZ2h0LnZhbHVlKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KDQyLjVmKSwg
Yml0d2lzZV9jYXN0PGludDMyX3Q+KC02Ni41ZikpLCBleHBlY3RlZCkpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorICAgIHsgLy8gQ29tcGFyZSBhcmd1bWVudHMgYW5kIHNlbGVj
dGVkIGFyZ3VtZW50cyBhcmUgYWxsIGRpZmZlcmVudC4gQm90aCBjYXNlcyBhcmUgbGl2ZSBhZnRl
ciBvcGVyYXRpb24uCisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBWYWx1ZSogYXJnMCA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApKSk7CisgICAgICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCisgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSkpKTsKKyAgICAgICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIyKSkpOworICAgICAgICBWYWx1ZSogYXJnMyA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjMpKSk7CisKKyAgICAgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgU2VsZWN0LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgb3Bjb2RlLCBPcmlnaW4oKSwgYXJnMCwgYXJnMSksCisg
ICAgICAgICAgICBhcmcyLAorICAgICAgICAgICAgYXJnMyk7CisKKyAgICAgICAgUGF0Y2hwb2lu
dFZhbHVlKiBrZWVwVmFsdWVzTGl2ZSA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+
KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKKyAgICAgICAga2VlcFZhbHVlc0xpdmUtPmFwcGVuZChD
b25zdHJhaW5lZFZhbHVlKGFyZzIsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICAgICAg
a2VlcFZhbHVlc0xpdmUtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzMsIFZhbHVlUmVwOjpT
b21lUmVnaXN0ZXIpKTsKKyAgICAgICAga2VlcFZhbHVlc0xpdmUtPnNldEdlbmVyYXRvcihbJl0g
KENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsgfSk7CisK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2lu
KCksIHJlc3VsdCk7CisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworCisg
ICAgICAgIGZvciAoYXV0byYgbGVmdCA6IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSkg
eworICAgICAgICAgICAgZm9yIChhdXRvJiByaWdodCA6IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxm
bG9hdD4oKSkgeworICAgICAgICAgICAgICAgIGZsb2F0IGV4cGVjdGVkID0gb3BlcmF0aW9uKGxl
ZnQudmFsdWUsIHJpZ2h0LnZhbHVlKSA/IDQyLjUgOiAtNjYuNTsKKyAgICAgICAgICAgICAgICBD
SEVDSyhpc0lkZW50aWNhbChpbnZva2U8ZmxvYXQ+KCpjb2RlLCBiaXR3aXNlX2Nhc3Q8aW50MzJf
dD4obGVmdC52YWx1ZSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihyaWdodC52YWx1ZSksIGJpdHdp
c2VfY2FzdDxpbnQzMl90Pig0Mi41ZiksIGJpdHdpc2VfY2FzdDxpbnQzMl90PigtNjYuNWYpKSwg
ZXhwZWN0ZWQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICB7IC8vIFRo
ZSBsZWZ0IGFyZ3VtZW50IGlzIHRoZSBzYW1lIGFzIHRoZSAiZWxzZUNhc2UiIGFyZ3VtZW50Lgor
ICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICAgICAgVmFsdWUqIGFyZzAgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSkpOworICAgICAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjEpKSk7CisgICAgICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMikpKTsKKworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAg
ICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBTZWxlY3QsIE9yaWdpbigpLAorICAgICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgIHBy
b2MsIG9wY29kZSwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgICAgIGFyZzAsCisgICAgICAg
ICAgICAgICAgICAgIGFyZzEpLAorICAgICAgICAgICAgICAgIGFyZzIsCisgICAgICAgICAgICAg
ICAgYXJnMCkpOworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKworICAg
ICAgICBmb3IgKGF1dG8mIGxlZnQgOiBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpIHsK
KyAgICAgICAgICAgIGZvciAoYXV0byYgcmlnaHQgOiBmbG9hdGluZ1BvaW50T3BlcmFuZHM8Zmxv
YXQ+KCkpIHsKKyAgICAgICAgICAgICAgICBmbG9hdCBleHBlY3RlZCA9IG9wZXJhdGlvbihsZWZ0
LnZhbHVlLCByaWdodC52YWx1ZSkgPyA0Mi41IDogbGVmdC52YWx1ZTsKKyAgICAgICAgICAgICAg
ICBDSEVDSyhpc0lkZW50aWNhbChpbnZva2U8ZmxvYXQ+KCpjb2RlLCBiaXR3aXNlX2Nhc3Q8aW50
MzJfdD4obGVmdC52YWx1ZSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihyaWdodC52YWx1ZSksIGJp
dHdpc2VfY2FzdDxpbnQzMl90Pig0Mi41ZiksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihsZWZ0LnZh
bHVlKSksIGV4cGVjdGVkKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAg
eyAvLyBUaGUgbGVmdCBhcmd1bWVudCBpcyB0aGUgc2FtZSBhcyB0aGUgImVsc2VDYXNlIiBhcmd1
bWVudC4gInRoZW5DYXNlIiBpcyBsaXZlIGFmdGVyIG9wZXJhdGlvbi4KKyAgICAgICAgUHJvY2Vk
dXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgICAgIFZhbHVlKiBhcmcwID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNl
Q2FzdCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKTsKKyAg
ICAgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VD
YXN0LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
VHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpOworICAg
ICAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNh
c3QsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBU
cnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpKSk7CisKKyAg
ICAgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2VsZWN0
LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgb3Bj
b2RlLCBPcmlnaW4oKSwgYXJnMCwgYXJnMSksCisgICAgICAgICAgICBhcmcyLAorICAgICAgICAg
ICAgYXJnMCk7CisKKyAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBrZWVwVmFsdWVzTGl2ZSA9IHJv
b3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKKyAg
ICAgICAga2VlcFZhbHVlc0xpdmUtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzIsIFZhbHVl
UmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICAgICAga2VlcFZhbHVlc0xpdmUtPnNldEdlbmVyYXRv
cihbJl0gKENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsg
fSk7CisKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwg
T3JpZ2luKCksIHJlc3VsdCk7CisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2Mp
OworCisgICAgICAgIGZvciAoYXV0byYgbGVmdCA6IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9h
dD4oKSkgeworICAgICAgICAgICAgZm9yIChhdXRvJiByaWdodCA6IGZsb2F0aW5nUG9pbnRPcGVy
YW5kczxmbG9hdD4oKSkgeworICAgICAgICAgICAgICAgIGZsb2F0IGV4cGVjdGVkID0gb3BlcmF0
aW9uKGxlZnQudmFsdWUsIHJpZ2h0LnZhbHVlKSA/IDQyLjUgOiBsZWZ0LnZhbHVlOworICAgICAg
ICAgICAgICAgIENIRUNLKGlzSWRlbnRpY2FsKGludm9rZTxmbG9hdD4oKmNvZGUsIGJpdHdpc2Vf
Y2FzdDxpbnQzMl90PihsZWZ0LnZhbHVlKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KHJpZ2h0LnZh
bHVlKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KDQyLjVmKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+
KGxlZnQudmFsdWUpKSwgZXhwZWN0ZWQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KK30KKwordm9pZCB0ZXN0U2VsZWN0RmxvYXRDb21wYXJlRmxvYXRXaXRoQWxpYXNpbmcoKQor
eworICAgIHRlc3RTZWxlY3RGbG9hdENvbXBhcmVGbG9hdDxFcXVhbD4oW10oZmxvYXQgYSwgZmxv
YXQgYikgLT4gYm9vbCB7IHJldHVybiBhID09IGI7IH0pOworICAgIHRlc3RTZWxlY3RGbG9hdENv
bXBhcmVGbG9hdDxOb3RFcXVhbD4oW10oZmxvYXQgYSwgZmxvYXQgYikgLT4gYm9vbCB7IHJldHVy
biBhICE9IGI7IH0pOworICAgIHRlc3RTZWxlY3RGbG9hdENvbXBhcmVGbG9hdDxMZXNzVGhhbj4o
W10oZmxvYXQgYSwgZmxvYXQgYikgLT4gYm9vbCB7IHJldHVybiBhIDwgYjsgfSk7CisgICAgdGVz
dFNlbGVjdEZsb2F0Q29tcGFyZUZsb2F0PEdyZWF0ZXJUaGFuPihbXShmbG9hdCBhLCBmbG9hdCBi
KSAtPiBib29sIHsgcmV0dXJuIGEgPiBiOyB9KTsKKyAgICB0ZXN0U2VsZWN0RmxvYXRDb21wYXJl
RmxvYXQ8TGVzc0VxdWFsPihbXShmbG9hdCBhLCBmbG9hdCBiKSAtPiBib29sIHsgcmV0dXJuIGEg
PD0gYjsgfSk7CisgICAgdGVzdFNlbGVjdEZsb2F0Q29tcGFyZUZsb2F0PEdyZWF0ZXJFcXVhbD4o
W10oZmxvYXQgYSwgZmxvYXQgYikgLT4gYm9vbCB7IHJldHVybiBhID49IGI7IH0pOworICAgIHRl
c3RTZWxlY3RGbG9hdENvbXBhcmVGbG9hdDxFcXVhbE9yVW5vcmRlcmVkPihbXShmbG9hdCBhLCBm
bG9hdCBiKSAtPiBib29sIHsgcmV0dXJuIGEgIT0gYSB8fCBiICE9IGIgfHwgYSA9PSBiOyB9KTsK
K30KKwordm9pZCB0ZXN0U2VsZWN0Rm9sZChpbnRwdHJfdCB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1
cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFNl
bGVjdCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHZhbHVlKSwKKyAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IDQyKSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSkpKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIENI
RUNLKGludm9rZTxpbnRwdHJfdD4oKmNvZGUsIDEsIDIpID09ICh2YWx1ZSA9PSA0MiA/IDEgOiAy
KSk7CisgICAgQ0hFQ0soaW52b2tlPGludHB0cl90PigqY29kZSwgNjQyNDYyLCAzMjUzMykgPT0g
KHZhbHVlID09IDQyID8gNjQyNDYyIDogMzI1MzMpKTsKK30KKwordm9pZCB0ZXN0U2VsZWN0SW52
ZXJ0KCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgIHByb2MsIFNlbGVjdCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4oKSwK
KyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAg
ICAgICBwcm9jLCBOb3RFcXVhbCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCA0MikpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSksCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMikpKTsKKworICAgIGF1dG8g
Y29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIENIRUNLKGludm9rZTxpbnRwdHJfdD4oKmNv
ZGUsIDQyLCAxLCAyKSA9PSAxKTsKKyAgICBDSEVDSyhpbnZva2U8aW50cHRyX3Q+KCpjb2RlLCA0
MiwgNjQyNDYyLCAzMjUzMykgPT0gNjQyNDYyKTsKKyAgICBDSEVDSyhpbnZva2U8aW50cHRyX3Q+
KCpjb2RlLCA0MywgMSwgMikgPT0gMik7CisgICAgQ0hFQ0soaW52b2tlPGludHB0cl90PigqY29k
ZSwgNDMsIDY0MjQ2MiwgMzI1MzMpID09IDMyNTMzKTsKK30KKwordm9pZCB0ZXN0Q2hlY2tTZWxl
Y3QoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAx
KQorICAgICAgICByZXR1cm47CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKworICAgIENoZWNrVmFsdWUqIGNoZWNrID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+
KAorICAgICAgICBwcm9jLCBDaGVjaywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBTZWxlY3QsIE9y
aWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
ICAgICAgICAgICAgIHByb2MsIEJpdEFuZCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9jLCBU
cnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICAgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMHhmZikpLAorICAgICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
LTQyKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIDM1KSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKSkpOworICAgIHVuc2lnbmVkIGdlbmVyYXRpb25Db3Vu
dCA9IDA7CisgICAgY2hlY2stPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICAgICAg
QWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworCisgICAg
ICAgICAgICBnZW5lcmF0aW9uQ291bnQrKzsKKyAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKDY2NiksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAg
ICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAgICAgICAgaml0LnJldCgp
OworICAgICAgICB9KTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0
MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQ
cm9jKHByb2MpOworICAgIENIRUNLKGdlbmVyYXRpb25Db3VudCA9PSAxKTsKKyAgICBDSEVDSyhp
bnZva2U8aW50PigqY29kZSwgdHJ1ZSkgPT0gMCk7CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNv
ZGUsIGZhbHNlKSA9PSA2NjYpOworfQorCit2b2lkIHRlc3RDaGVja1NlbGVjdENoZWNrU2VsZWN0
KCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBpZiAocHJvYy5vcHRMZXZlbCgpIDwgMSkK
KyAgICAgICAgcmV0dXJuOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisKKyAgICBDaGVja1ZhbHVlKiBjaGVjayA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPigK
KyAgICAgICAgcHJvYywgQ2hlY2ssIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgU2VsZWN0LCBPcmln
aW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICAgICAgcHJvYywgVHJ1
bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDB4ZmYpKSwKKyAgICAgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC00
MiksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAzNSkpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCA0MikpKTsKKworICAgIHVuc2lnbmVkIGdlbmVyYXRpb25Db3Vu
dCA9IDA7CisgICAgY2hlY2stPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICAgICAg
QWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworCisgICAg
ICAgICAgICBnZW5lcmF0aW9uQ291bnQrKzsKKyAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKDY2NiksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAg
ICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAgICAgICAgaml0LnJldCgp
OworICAgICAgICB9KTsKKworICAgIENoZWNrVmFsdWUqIGNoZWNrMiA9IHJvb3QtPmFwcGVuZE5l
dzxDaGVja1ZhbHVlPigKKyAgICAgICAgcHJvYywgQ2hlY2ssIE9yaWdpbigpLAorICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJv
YywgU2VsZWN0LCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAgICAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgICAg
ICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSwKKyAgICAgICAgICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDB4
ZmYpKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIC00MyksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0
UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAzNikpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0MykpKTsKKworICAgIHVuc2lnbmVk
IGdlbmVyYXRpb25Db3VudDIgPSAwOworICAgIGNoZWNrMi0+c2V0R2VuZXJhdG9yKAorICAgICAg
ICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMm
KSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3Jh
dGNoKGppdCk7CisKKyAgICAgICAgICAgIGdlbmVyYXRpb25Db3VudDIrKzsKKyAgICAgICAgICAg
IGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDY2NyksIEdQUkluZm86OnJldHVy
blZhbHVlR1BSKTsKKyAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAg
ICAgICAgICAgaml0LnJldCgpOworICAgICAgICB9KTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIGF1
dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIENIRUNLKGdlbmVyYXRpb25Db3VudCA9
PSAxKTsKKyAgICBDSEVDSyhnZW5lcmF0aW9uQ291bnQyID09IDEpOworICAgIENIRUNLKGludm9r
ZTxpbnQ+KCpjb2RlLCB0cnVlLCB0cnVlKSA9PSAwKTsKKyAgICBDSEVDSyhpbnZva2U8aW50Pigq
Y29kZSwgZmFsc2UsIHRydWUpID09IDY2Nik7CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUs
IHRydWUsIGZhbHNlKSA9PSA2NjcpOworfQorCit2b2lkIHRlc3RDaGVja1NlbGVjdEFuZENTRSgp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEpCisg
ICAgICAgIHJldHVybjsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
CisgICAgYXV0byogc2VsZWN0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAg
ICBwcm9jLCBTZWxlY3QsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigp
LAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPigKKyAg
ICAgICAgICAgICAgICAgICAgcHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkp
LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIDB4ZmYpKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAtNDIpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIDM1KSk7CisKKyAgICBhdXRvKiBjb25zdGFudCA9IHJvb3QtPmFwcGVu
ZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDIpOworICAgIGF1dG8qIGFkZFZh
bHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBzZWxlY3RW
YWx1ZSwgY29uc3RhbnQpOworCisgICAgQ2hlY2tWYWx1ZSogY2hlY2sgPSByb290LT5hcHBlbmRO
ZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2ssIE9yaWdpbigpLCBhZGRWYWx1ZSk7CisgICAgdW5z
aWduZWQgZ2VuZXJhdGlvbkNvdW50ID0gMDsKKyAgICBjaGVjay0+c2V0R2VuZXJhdG9yKAorICAg
ICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJh
bXMmKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dT
Y3JhdGNoKGppdCk7CisKKyAgICAgICAgICAgIGdlbmVyYXRpb25Db3VudCsrOworICAgICAgICAg
ICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoNjY2KSwgR1BSSW5mbzo6cmV0
dXJuVmFsdWVHUFIpOworICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7Cisg
ICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgIH0pOworCisgICAgYXV0byogYWRkVmFsdWUy
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBzZWxlY3RWYWx1
ZSwgY29uc3RhbnQpOworCisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEFkZCwgT3JpZ2luKCksIGFkZFZhbHVlLCBhZGRWYWx1ZTIpKTsKKworICAgIGF1dG8g
Y29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIENIRUNLKGdlbmVyYXRpb25Db3VudCA9PSAx
KTsKKyAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgdHJ1ZSkgPT0gMCk7CisgICAgQ0hFQ0so
aW52b2tlPGludD4oKmNvZGUsIGZhbHNlKSA9PSA2NjYpOworfQorCitkb3VibGUgYjNQb3coZG91
YmxlIHgsIGludCB5KQoreworICAgIGlmICh5IDwgMCB8fCB5ID4gMTAwMCkKKyAgICAgICAgcmV0
dXJuIHBvdyh4LCB5KTsKKyAgICBkb3VibGUgcmVzdWx0ID0gMTsKKyAgICB3aGlsZSAoeSkgewor
ICAgICAgICBpZiAoeSAmIDEpCisgICAgICAgICAgICByZXN1bHQgKj0geDsKKyAgICAgICAgeCAq
PSB4OworICAgICAgICB5ID4+PSAxOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2
b2lkIHRlc3RQb3dEb3VibGVCeUludGVnZXJMb29wKGRvdWJsZSB4T3BlcmFuZCwgaW50MzJfdCB5
T3BlcmFuZCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworCisgICAgVmFsdWUqIHggPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAg
VmFsdWUqIHkgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBhdXRvIHJlc3VsdCA9IHBvd0RvdWJsZUlu
dDMyKHByb2MsIHJvb3QsIE9yaWdpbigpLCB4LCB5KTsKKyAgICBCYXNpY0Jsb2NrKiBjb250aW51
YXRpb24gPSByZXN1bHQuZmlyc3Q7CisgICAgY29udGludWF0aW9uLT5hcHBlbmROZXdDb250cm9s
VmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0LnNlY29uZCk7CisKKyAgICBDSEVD
Syhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgeE9wZXJhbmQsIHlPcGVy
YW5kKSwgYjNQb3coeE9wZXJhbmQsIHlPcGVyYW5kKSkpOworfQorCit2b2lkIHRlc3RUcnVuY09y
SGlnaCgpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgQml0T3IsIE9yaWdpbigp
LAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMHgxMDAwMDAwMDApKSkp
OworCisgICAgaW50NjRfdCB2YWx1ZSA9IDB4MTIzNDU2NzgxMjM0OworICAgIENIRUNLKGNvbXBp
bGVBbmRSdW48aW50Pihwcm9jLCB2YWx1ZSkgPT0gMHg1Njc4MTIzNCk7Cit9CisKK3ZvaWQgdGVz
dFRydW5jT3JMb3coKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
CisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEJpdE9yLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCisgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDB4MTAwMDAw
MCkpKSk7CisKKyAgICBpbnQ2NF90IHZhbHVlID0gMHgxMjM0NTY3ODEyMzQ7CisgICAgQ0hFQ0so
Y29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIHZhbHVlKSA9PSAweDU3NzgxMjM0KTsKK30KKwordm9p
ZCB0ZXN0Qml0QW5kT3JIaWdoKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywg
Qml0T3IsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
MHg4KSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgMHg3Nzc3Nzc3Nzc3NzcpKSk7CisKKyAgICBpbnQ2NF90IHZhbHVlID0gMHgxMjM0
NTY3ODEyMzQ7CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCB2YWx1ZSkg
PT0gMHgxMjM0NTY3MDEyMzRsbCk7Cit9CisKK3ZvaWQgdGVzdEJpdEFuZE9yTG93KCkKK3sKKyAg
ICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworCisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgQml0T3IsIE9yaWdpbigpLAorICAgICAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMHgxKSksCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMHg3Nzc3Nzc3Nzc3NzcpKSk7
CisKKyAgICBpbnQ2NF90IHZhbHVlID0gMHgxMjM0NTY3ODEyMzQ7CisgICAgQ0hFQ0soY29tcGls
ZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCB2YWx1ZSkgPT0gMHgxMjM0NTY3MDEyMzVsbCk7Cit9CisK
K3ZvaWQgdGVzdEJyYW5jaDY0RXF1YWwoaW50NjRfdCBsZWZ0LCBpbnQ2NF90IHJpZ2h0KQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgQmFzaWNCbG9jayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFz
aWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBWYWx1ZSogYXJnMSA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIEJyYW5jaCwgT3Jp
Z2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRXF1YWwsIE9yaWdp
bigpLCBhcmcxLCBhcmcyKSwKKyAgICAgICAgRnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJl
cXVlbnRlZEJsb2NrKGVsc2VDYXNlKSk7CisKKyAgICBib29sIHRydWVSZXN1bHQgPSB0cnVlOwor
ICAgIHRoZW5DYXNlLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCisgICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAor
ICAgICAgICAgICAgcHJvYywgTG9hZDhaLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHRoZW5DYXNl
LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZ0cnVlUmVzdWx0KSkp
OworCisgICAgYm9vbCBlbHNlUmVzdWx0ID0gZmFsc2U7CisgICAgZWxzZUNhc2UtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAg
ZWxzZUNhc2UtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBMb2Fk
OFosIE9yaWdpbigpLAorICAgICAgICAgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxDb25zdFB0clZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgJmVsc2VSZXN1bHQpKSk7CisKKyAgICBDSEVDSyhjb21waWxl
QW5kUnVuPGJvb2w+KHByb2MsIGxlZnQsIHJpZ2h0KSA9PSAobGVmdCA9PSByaWdodCkpOworfQor
Cit2b2lkIHRlc3RCcmFuY2g2NEVxdWFsSW1tKGludDY0X3QgbGVmdCwgaW50NjRfdCByaWdodCkK
K3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOworICAg
IEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgVmFsdWUqIGFy
ZzEgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHJpZ2h0KTsKKyAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRXF1YWwsIE9yaWdpbigpLCBhcmcxLCBhcmcy
KSwKKyAgICAgICAgRnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVs
c2VDYXNlKSk7CisKKyAgICBib29sIHRydWVSZXN1bHQgPSB0cnVlOworICAgIHRoZW5DYXNlLT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisg
ICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJv
YywgTG9hZDhaLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29u
c3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZ0cnVlUmVzdWx0KSkpOworCisgICAgYm9vbCBl
bHNlUmVzdWx0ID0gZmFsc2U7CisgICAgZWxzZUNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
KyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgZWxzZUNhc2UtPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBMb2FkOFosIE9yaWdpbigpLAor
ICAgICAgICAgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmln
aW4oKSwgJmVsc2VSZXN1bHQpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGJvb2w+KHBy
b2MsIGxlZnQpID09IChsZWZ0ID09IHJpZ2h0KSk7Cit9CisKK3ZvaWQgdGVzdEJyYW5jaDY0RXF1
YWxNZW0oaW50NjRfdCBsZWZ0LCBpbnQ2NF90IHJpZ2h0KQoreworICAgIFByb2NlZHVyZSBwcm9j
OworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9j
ayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogZWxzZUNhc2Ug
PSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxN
ZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigp
LAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjEpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywg
QnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBF
cXVhbCwgT3JpZ2luKCksIGFyZzEsIGFyZzIpLAorICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhl
bkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKKworICAgIGJvb2wgdHJ1ZVJlc3Vs
dCA9IHRydWU7CisgICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxNZW1v
cnlWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBMb2FkOFosIE9yaWdpbigpLAorICAgICAgICAg
ICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnRy
dWVSZXN1bHQpKSk7CisKKyAgICBib29sIGVsc2VSZXN1bHQgPSBmYWxzZTsKKyAgICBlbHNlQ2Fz
ZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LAorICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAg
IHByb2MsIExvYWQ4WiwgT3JpZ2luKCksCisgICAgICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3
PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmZWxzZVJlc3VsdCkpKTsKKworICAgIENI
RUNLKGNvbXBpbGVBbmRSdW48Ym9vbD4ocHJvYywgJmxlZnQsIHJpZ2h0KSA9PSAobGVmdCA9PSBy
aWdodCkpOworfQorCit2b2lkIHRlc3RCcmFuY2g2NEVxdWFsTWVtSW1tKGludDY0X3QgbGVmdCwg
aW50NjRfdCByaWdodCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5h
ZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOwor
CisgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAg
ICBwcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApKTsKKyAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgcmlnaHQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZSgKKyAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBFcXVhbCwgT3JpZ2luKCksIGFyZzEsIGFyZzIpLAorICAgICAgICBG
cmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKKwor
ICAgIGJvb2wgdHJ1ZVJlc3VsdCA9IHRydWU7CisgICAgdGhlbkNhc2UtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgdGhlbkNh
c2UtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBMb2FkOFosIE9y
aWdpbigpLAorICAgICAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgJnRydWVSZXN1bHQpKSk7CisKKyAgICBib29sIGVsc2VSZXN1bHQgPSBm
YWxzZTsKKyAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PE1lbW9yeVZh
bHVlPigKKyAgICAgICAgICAgIHByb2MsIExvYWQ4WiwgT3JpZ2luKCksCisgICAgICAgICAgICBl
bHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmZWxzZVJl
c3VsdCkpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48Ym9vbD4ocHJvYywgJmxlZnQpID09
IChsZWZ0ID09IHJpZ2h0KSk7Cit9CisKK3ZvaWQgdGVzdFN0b3JlOExvYWQ4WihpbnQzMl90IHZh
bHVlKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisKKyAgICBpbnQ4X3QgYnl0ZTsKKyAgICBWYWx1ZSogcHRyID0gcm9vdC0+
YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmYnl0ZSk7CisKKyAgICBy
b290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICBwcm9jLCBTdG9yZTgsIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywg
VHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAgICAg
cHRyKTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihw
cm9jLCBMb2FkOFosIE9yaWdpbigpLCBwdHIpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48
aW50MzJfdD4ocHJvYywgdmFsdWUpID09IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHZhbHVlKSk7Cit9
CisKK3ZvaWQgdGVzdFN0b3JlMTZMb2FkMTZaKGludDMyX3QgdmFsdWUpCit7CisgICAgUHJvY2Vk
dXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAg
IGludDE2X3QgYnl0ZTsKKyAgICBWYWx1ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCAmYnl0ZSk7CisKKyAgICByb290LT5hcHBlbmROZXc8TWVt
b3J5VmFsdWU+KAorICAgICAgICBwcm9jLCBTdG9yZTE2LCBPcmlnaW4oKSwKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisgICAgICAgIHB0cik7CisKKyAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZDE2WiwgT3Jp
Z2luKCksIHB0cikpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCB2
YWx1ZSkgPT0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHZhbHVlKSk7Cit9CisKK3ZvaWQgdGVzdFNT
aHJTaGwzMihpbnQzMl90IHZhbHVlLCBpbnQzMl90IHNzaHJBbW91bnQsIGludDMyX3Qgc2hsQW1v
dW50KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAg
IHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgICAgICBwcm9jLCBTU2hyLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgU2hsLCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgICAg
ICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIHNobEFtb3VudCkpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENv
bnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHNzaHJBbW91bnQpKSk7CisKKyAgICBDSEVDSygK
KyAgICAgICAgY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCB2YWx1ZSkKKyAgICAgICAgPT0g
KCh2YWx1ZSA8PCAoc2hsQW1vdW50ICYgMzEpKSA+PiAoc3NockFtb3VudCAmIDMxKSkpOworfQor
Cit2b2lkIHRlc3RTU2hyU2hsNjQoaW50NjRfdCB2YWx1ZSwgaW50MzJfdCBzc2hyQW1vdW50LCBp
bnQzMl90IHNobEFtb3VudCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgU1NociwgT3JpZ2luKCksCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFNobCwg
T3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAorICAgICAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBzaGxBbW91
bnQpKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBzc2hyQW1vdW50KSkpOworCisgICAgQ0hFQ0soCisgICAgICAgIGNvbXBpbGVBbmRS
dW48aW50NjRfdD4ocHJvYywgdmFsdWUpCisgICAgICAgID09ICgodmFsdWUgPDwgKHNobEFtb3Vu
dCAmIDYzKSkgPj4gKHNzaHJBbW91bnQgJiA2MykpKTsKK30KKwordm9pZCB0ZXN0VHJpdmlhbElu
ZmluaXRlTG9vcCgpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBsb29wID0gcHJvYy5hZGRCbG9j
aygpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4o
KSwgRnJlcXVlbnRlZEJsb2NrKGxvb3ApKTsKKyAgICBsb29wLT5hcHBlbmROZXdDb250cm9sVmFs
dWUocHJvYywgSnVtcCwgT3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayhsb29wKSk7CisKKyAgICBj
b21waWxlUHJvYyhwcm9jKTsKK30KKwordm9pZCB0ZXN0Rm9sZFBhdGhFcXVhbCgpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBCYXNpY0Jsb2NrKiB0aGVuQmxvY2sgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNC
bG9jayogZWxzZUJsb2NrID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgVmFsdWUqIGFyZyA9IHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwgYXJnLCBGcmVxdWVudGVkQmxvY2sodGhlbkJsb2Nr
KSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VCbG9jaykpOworCisgICAgdGhlbkJsb2NrLT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAg
IHRoZW5CbG9jay0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEVxdWFsLCBP
cmlnaW4oKSwgYXJnLCB0aGVuQmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgMCkpKTsKKworICAgIGVsc2VCbG9jay0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAor
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICBlbHNlQmxvY2stPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBFcXVhbCwgT3JpZ2luKCksIGFyZywgZWxz
ZUJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKSk7CisK
KyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICBDSEVDSyhpbnZva2U8aW50
cHRyX3Q+KCpjb2RlLCAwKSA9PSAxKTsKKyAgICBDSEVDSyhpbnZva2U8aW50cHRyX3Q+KCpjb2Rl
LCAxKSA9PSAwKTsKKyAgICBDSEVDSyhpbnZva2U8aW50cHRyX3Q+KCpjb2RlLCA0MikgPT0gMCk7
Cit9CisKK3ZvaWQgdGVzdExTaGlmdFNlbGYzMigpCit7CisgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJnID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBTaGwsIE9yaWdpbigpLCBhcmcsIGFyZykpOworCisgICAgYXV0byBj
b2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICBhdXRvIGNoZWNrID0gWyZdIChpbnQzMl90
IHZhbHVlKSB7CisgICAgICAgIENIRUNLKGludm9rZTxpbnQzMl90PigqY29kZSwgdmFsdWUpID09
IHZhbHVlIDw8ICh2YWx1ZSAmIDMxKSk7CisgICAgfTsKKworICAgIGNoZWNrKDApOworICAgIGNo
ZWNrKDEpOworICAgIGNoZWNrKDMxKTsKKyAgICBjaGVjaygzMik7Cit9CisKK3ZvaWQgdGVzdFJT
aGlmdFNlbGYzMigpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJnID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKKyAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCkpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBT
U2hyLCBPcmlnaW4oKSwgYXJnLCBhcmcpKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9j
KHByb2MpOworCisgICAgYXV0byBjaGVjayA9IFsmXSAoaW50MzJfdCB2YWx1ZSkgeworICAgICAg
ICBDSEVDSyhpbnZva2U8aW50MzJfdD4oKmNvZGUsIHZhbHVlKSA9PSB2YWx1ZSA+PiAodmFsdWUg
JiAzMSkpOworICAgIH07CisKKyAgICBjaGVjaygwKTsKKyAgICBjaGVjaygxKTsKKyAgICBjaGVj
aygzMSk7CisgICAgY2hlY2soMzIpOworfQorCit2b2lkIHRlc3RVUlNoaWZ0U2VsZjMyKCkKK3sK
KyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworICAgIFZhbHVlKiBhcmcgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBw
cm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFpTaHIsIE9yaWdpbigpLCBh
cmcsIGFyZykpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICBh
dXRvIGNoZWNrID0gWyZdICh1aW50MzJfdCB2YWx1ZSkgeworICAgICAgICBDSEVDSyhpbnZva2U8
dWludDMyX3Q+KCpjb2RlLCB2YWx1ZSkgPT0gdmFsdWUgPj4gKHZhbHVlICYgMzEpKTsKKyAgICB9
OworCisgICAgY2hlY2soMCk7CisgICAgY2hlY2soMSk7CisgICAgY2hlY2soMzEpOworICAgIGNo
ZWNrKDMyKTsKK30KKwordm9pZCB0ZXN0TFNoaWZ0U2VsZjY0KCkKK3sKKyAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVl
KiBhcmcgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgU2hsLCBPcmlnaW4oKSwgYXJnLCByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwgYXJnKSkpOworCisgICAgYXV0
byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICBhdXRvIGNoZWNrID0gWyZdIChpbnQ2
NF90IHZhbHVlKSB7CisgICAgICAgIENIRUNLKGludm9rZTxpbnQ2NF90PigqY29kZSwgdmFsdWUp
ID09IHZhbHVlIDw8ICh2YWx1ZSAmIDYzKSk7CisgICAgfTsKKworICAgIGNoZWNrKDApOworICAg
IGNoZWNrKDEpOworICAgIGNoZWNrKDMxKTsKKyAgICBjaGVjaygzMik7CisgICAgY2hlY2soNjMp
OworICAgIGNoZWNrKDY0KTsKK30KKwordm9pZCB0ZXN0UlNoaWZ0U2VsZjY0KCkKK3sKKyAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIFZhbHVlKiBhcmcgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgU1NociwgT3JpZ2luKCksIGFy
Zywgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksIGFyZykpKTsK
KworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworCisgICAgYXV0byBjaGVjayA9
IFsmXSAoaW50NjRfdCB2YWx1ZSkgeworICAgICAgICBDSEVDSyhpbnZva2U8aW50NjRfdD4oKmNv
ZGUsIHZhbHVlKSA9PSB2YWx1ZSA+PiAodmFsdWUgJiA2MykpOworICAgIH07CisKKyAgICBjaGVj
aygwKTsKKyAgICBjaGVjaygxKTsKKyAgICBjaGVjaygzMSk7CisgICAgY2hlY2soMzIpOworICAg
IGNoZWNrKDYzKTsKKyAgICBjaGVjayg2NCk7Cit9CisKK3ZvaWQgdGVzdFVSU2hpZnRTZWxmNjQo
KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBaU2hyLCBP
cmlnaW4oKSwgYXJnLCByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4o
KSwgYXJnKSkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICBh
dXRvIGNoZWNrID0gWyZdICh1aW50NjRfdCB2YWx1ZSkgeworICAgICAgICBDSEVDSyhpbnZva2U8
dWludDY0X3Q+KCpjb2RlLCB2YWx1ZSkgPT0gdmFsdWUgPj4gKHZhbHVlICYgNjMpKTsKKyAgICB9
OworCisgICAgY2hlY2soMCk7CisgICAgY2hlY2soMSk7CisgICAgY2hlY2soMzEpOworICAgIGNo
ZWNrKDMyKTsKKyAgICBjaGVjayg2Myk7CisgICAgY2hlY2soNjQpOworfQorCit2b2lkIHRlc3RQ
YXRjaHBvaW50RG91YmxlUmVncygpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBhcmcgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3Vt
ZW50RlBSMCk7CisKKyAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBl
bmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBEb3VibGUsIE9yaWdpbigpKTsKKyAgICBwYXRj
aHBvaW50LT5hcHBlbmQoYXJnLCBWYWx1ZVJlcChGUFJJbmZvOjpmcFJlZ1QwKSk7CisgICAgcGF0
Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWludCA9IFZhbHVlUmVwKEZQUkluZm86OmZwUmVnVDApOwor
CisgICAgdW5zaWduZWQgbnVtQ2FsbHMgPSAwOworICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRv
cigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmLCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25Q
YXJhbXMmKSB7CisgICAgICAgICAgICBudW1DYWxscysrOworICAgICAgICB9KTsKKworICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBwYXRjaHBv
aW50KTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIENIRUNLKG51
bUNhbGxzID09IDEpOworICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCA0Mi41KSA9PSA0
Mi41KTsKK30KKwordm9pZCB0ZXN0U3BpbGxEZWZTbWFsbGVyVGhhblVzZSgpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKwor
ICAgIC8vIE1vdmUzMi4KKyAgICBWYWx1ZSogYXJnMzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSk7CisgICAgVmFsdWUqIGFyZzY0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBaRXh0
MzIsIE9yaWdpbigpLCBhcmczMik7CisKKyAgICAvLyBNYWtlIHN1cmUgYXJnNjQgaXMgb24gdGhl
IHN0YWNrLgorICAgIFBhdGNocG9pbnRWYWx1ZSogZm9yY2VTcGlsbCA9IHJvb3QtPmFwcGVuZE5l
dzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIEludDY0LCBPcmlnaW4oKSk7CisgICAgUmVnaXN0ZXJT
ZXQgY2xvYmJlclNldCA9IFJlZ2lzdGVyU2V0OjphbGxHUFJzKCk7CisgICAgY2xvYmJlclNldC5l
eGNsdWRlKFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKTsKKyAgICBjbG9iYmVyU2V0LmV4
Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSk7CisgICAgY2xv
YmJlclNldC5jbGVhcihHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7IC8vIEZvcmNlIHRoZSByZXR1
cm4gdmFsdWUgZm9yIGFsaWFzaW5nIGJlbG93LgorICAgIGZvcmNlU3BpbGwtPmNsb2JiZXJMYXRl
KGNsb2JiZXJTZXQpOworICAgIGZvcmNlU3BpbGwtPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZd
IChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJh
bXMpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1Nj
cmF0Y2goaml0KTsKKyAgICAgICAgICAgIGppdC54b3I2NChwYXJhbXNbMF0uZ3ByKCksIHBhcmFt
c1swXS5ncHIoKSk7CisgICAgICAgIH0pOworCisgICAgLy8gT24geDg2LCBTdWIgYWRtaXQgYW4g
YWRkcmVzcyBmb3IgYW55IG9wZXJhbmQuIElmIGl0IHVzZXMgdGhlIHN0YWNrLCB0aGUgdG9wIGJp
dHMgbXVzdCBiZSB6ZXJvLgorICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIGZvcmNlU3BpbGwsIGFyZzY0KTsKKyAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKwor
ICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIENIRUNLKGludm9rZTxpbnQ2
NF90PigqY29kZSwgMHhmZmZmZmZmZjAwMDAwMDAwKSA9PSAwKTsKK30KKwordm9pZCB0ZXN0U3Bp
bGxVc2VMYXJnZXJUaGFuRGVmKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0g
cHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9j
aygpOworICAgIEJhc2ljQmxvY2sqIHRhaWwgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBSZWdp
c3RlclNldCBjbG9iYmVyU2V0ID0gUmVnaXN0ZXJTZXQ6OmFsbEdQUnMoKTsKKyAgICBjbG9iYmVy
U2V0LmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkpOworICAgIGNsb2JiZXJT
ZXQuZXhjbHVkZShSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycygpKTsKKwor
ICAgIFZhbHVlKiBjb25kaXRpb24gPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgVmFsdWUqIGFyZ3Vt
ZW50ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
KyAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
IGNvbmRpdGlvbiksCisgICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50
ZWRCbG9jayhlbHNlQ2FzZSkpOworCisgICAgVmFsdWUqIHRydW5jYXRlZCA9IHRoZW5DYXNlLT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIFpFeHQzMiwgT3JpZ2luKCksCisgICAgICAgIHRoZW5DYXNl
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwgYXJndW1lbnQpKTsKKyAg
ICBVcHNpbG9uVmFsdWUqIHRoZW5SZXN1bHQgPSB0aGVuQ2FzZS0+YXBwZW5kTmV3PFVwc2lsb25W
YWx1ZT4ocHJvYywgT3JpZ2luKCksIHRydW5jYXRlZCk7CisgICAgdGhlbkNhc2UtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4oKSwgRnJlcXVlbnRlZEJsb2NrKHRhaWwp
KTsKKworICAgIFVwc2lsb25WYWx1ZSogZWxzZVJlc3VsdCA9IGVsc2VDYXNlLT5hcHBlbmROZXc8
VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYXJndW1lbnQpOworICAgIGVsc2VDYXNlLT5h
cHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgSnVtcCwgT3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9j
ayh0YWlsKSk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAg
ICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwcmV2ZW50VGFpbER1cGxpY2F0aW9uID0gdGFpbC0+YXBw
ZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgVm9pZCwgT3JpZ2luKCkpOworICAgICAgICBw
cmV2ZW50VGFpbER1cGxpY2F0aW9uLT5jbG9iYmVyTGF0ZShjbG9iYmVyU2V0KTsKKyAgICAgICAg
cHJldmVudFRhaWxEdXBsaWNhdGlvbi0+c2V0R2VuZXJhdG9yKFtdIChDQ2FsbEhlbHBlcnMmLCBj
b25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7IH0pOworICAgIH0KKworICAgIFBhdGNo
cG9pbnRWYWx1ZSogZm9yY2VTcGlsbCA9IHRhaWwtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+
KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKKyAgICBmb3JjZVNwaWxsLT5jbG9iYmVyTGF0ZShjbG9i
YmVyU2V0KTsKKyAgICBmb3JjZVNwaWxsLT5zZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAg
ICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsK
KyAgICAgICAgICAgIGNsb2JiZXJTZXQuZm9yRWFjaChbJl0gKFJlZyByZWcpIHsKKyAgICAgICAg
ICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NCgweGZmZmZmZmZmZmZm
ZmZmZmYpLCByZWcuZ3ByKCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAg
VmFsdWUqIHBoaSA9IHRhaWwtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUGhpLCBJbnQ2NCwgT3Jp
Z2luKCkpOworICAgIHRoZW5SZXN1bHQtPnNldFBoaShwaGkpOworICAgIGVsc2VSZXN1bHQtPnNl
dFBoaShwaGkpOworICAgIHRhaWwtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCBwaGkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Cisg
ICAgQ0hFQ0soaW52b2tlPHVpbnQ2NF90PigqY29kZSwgMSwgMHhmZmZmZmZmZjAwMDAwMDAwKSA9
PSAwKTsKKyAgICBDSEVDSyhpbnZva2U8dWludDY0X3Q+KCpjb2RlLCAwLCAweGZmZmZmZmZmMDAw
MDAwMDApID09IDB4ZmZmZmZmZmYwMDAwMDAwMCk7CisKKyAgICAvLyBBIHNlY29uZCB0aW1lIHNp
bmNlIHRoZSBwcmV2aW91cyBydW4gaXMgc3RpbGwgb24gdGhlIHN0YWNrLgorICAgIENIRUNLKGlu
dm9rZTx1aW50NjRfdD4oKmNvZGUsIDEsIDB4ZmZmZmZmZmYwMDAwMDAwMCkgPT0gMCk7CisKK30K
Kwordm9pZCB0ZXN0TGF0ZVJlZ2lzdGVyKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKworICAg
IGlmICghcHJvYy5vcHRMZXZlbCgpKSB7CisgICAgICAgIC8vIEZJWE1FOiBNYWtlIE8wIGhhbmRs
ZSBzdWNoIHNpdHVhdGlvbnM6CisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTQ2MzMKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAvLyBUaGlzIHdvcmtzIGJ5IG1h
a2luZyBhbGwgYnV0IDEgcmVnaXN0ZXIgYmUgaW5wdXQgdG8gdGhlIGZpcnN0IHBhdGNocG9pbnQg
YXMgTGF0ZVJlZ2lzdGVyLgorICAgIC8vIFRoZSBvdGhlciAxIHJlZ2lzdGVyIGlzIGp1c3QgYSBy
ZWd1bGFyIFJlZ2lzdGVyIGlucHV0LiBXZSBhc3NlcnQgb3VyIHJlc3VsdCBpcyB0aGUgcmVndWxh
cgorICAgIC8vIHJlZ2lzdGVyIGlucHV0LiBUaGVyZSB3b3VsZCBiZSBubyBvdGhlciB3YXkgZm9y
IHRoZSByZWdpc3RlciBhbGxvY2F0b3IgdG8gYXJyYW5nZSB0aGluZ3MKKyAgICAvLyBiZWNhdXNl
IExhdGVSZWdpc3RlciBpbnRlcmZlcmVzIHdpdGggdGhlIHJlc3VsdC4KKyAgICAvLyBUaGVuLCB0
aGUgc2Vjb25kIHBhdGNocG9pbnQgdGFrZXMgdGhlIHJlc3VsdCBvZiB0aGUgZmlyc3QgYXMgYW4g
YXJndW1lbnQgYW5kIGFza3MgZm9yCisgICAgLy8gaXQgaW4gYSByZWdpc3RlciB0aGF0IHdhcyBh
IExhdGVSZWdpc3Rlci4gVGhpcyBpcyB0byBpbmNlbnRpdml6ZSB0aGUgcmVnaXN0ZXIgYWxsb2Nh
dG9yCisgICAgLy8gdG8gdXNlIHRoYXQgTGF0ZVJlZ2lzdGVyIGFzIHRoZSByZXN1bHQgZm9yIHRo
ZSBmaXJzdCBwYXRjaHBvaW50LiBCdXQgb2YgY291cnNlIGl0IGNhbiBub3QgZG8gdGhhdC4KKyAg
ICAvLyBTbyBpdCBtdXN0IGlzc3VlIGEgbW92IGFmdGVyIHRoZSBmaXJzdCBwYXRjaHBvaW50IGZy
b20gdGhlIGZpcnN0J3MgcmVzdWx0IGludG8gdGhlIHNlY29uZCdzIGlucHV0LgorCisgICAgUmVn
aXN0ZXJTZXQgcmVncyA9IFJlZ2lzdGVyU2V0OjphbGxHUFJzKCk7CisgICAgcmVncy5leGNsdWRl
KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKTsKKyAgICByZWdzLmV4Y2x1ZGUoUmVnaXN0
ZXJTZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSk7CisgICAgVmVjdG9yPFZhbHVlKj4g
bGF0ZVVzZUFyZ3M7CisgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKKyAgICBmb3IgKEdQUlJlZyBy
ZWcgPSBDQ2FsbEhlbHBlcnM6OmZpcnN0UmVnaXN0ZXIoKTsgcmVnIDw9IENDYWxsSGVscGVyczo6
bGFzdFJlZ2lzdGVyKCk7IHJlZyA9IENDYWxsSGVscGVyczo6bmV4dFJlZ2lzdGVyKHJlZykpIHsK
KyAgICAgICAgaWYgKCFyZWdzLmdldChyZWcpKQorICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIHJlc3VsdCsrOworICAgICAgICBpZiAocmVnID09IEdQUkluZm86OnJlZ1QwKQorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIFZhbHVlKiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxD
b25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKTsKKyAgICAgICAgbGF0ZVVzZUFyZ3MuYXBw
ZW5kKHZhbHVlKTsKKyAgICB9CisgICAgVmFsdWUqIHJlZ3VsYXJVc2UgPSByb290LT5hcHBlbmRO
ZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSk7CisgICAgUGF0Y2hwb2ludFZhbHVl
KiBmaXJzdFBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9j
LCBJbnQ2NCwgT3JpZ2luKCkpOworICAgIHsKKyAgICAgICAgdW5zaWduZWQgaSA9IDA7CisgICAg
ICAgIGZvciAoR1BSUmVnIHJlZyA9IENDYWxsSGVscGVyczo6Zmlyc3RSZWdpc3RlcigpOyByZWcg
PD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIoKTsgcmVnID0gQ0NhbGxIZWxwZXJzOjpuZXh0
UmVnaXN0ZXIocmVnKSkgeworICAgICAgICAgICAgaWYgKCFyZWdzLmdldChyZWcpKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKHJlZyA9PSBHUFJJbmZvOjpyZWdU
MCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIFZhbHVlKiB2YWx1ZSA9
IGxhdGVVc2VBcmdzW2krK107CisgICAgICAgICAgICBmaXJzdFBhdGNocG9pbnQtPmFwcGVuZCh2
YWx1ZSwgVmFsdWVSZXA6OmxhdGVSZWcocmVnKSk7CisgICAgICAgIH0KKyAgICAgICAgZmlyc3RQ
YXRjaHBvaW50LT5hcHBlbmQocmVndWxhclVzZSwgVmFsdWVSZXA6OnJlZyhHUFJJbmZvOjpyZWdU
MCkpOworICAgIH0KKworICAgIGZpcnN0UGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAorICAgICAg
ICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMm
IHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFs
bG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzBdLmdwcigpID09IEdQ
UkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIC8vIE5vdGUgdGhhdCByZWdUMCBzaG91bGQgYWxz
byBzdGFydCBvZmYgYXMgMSwgc28gd2UncmUgaW1wbGljaXRseSBzdGFydGluZyBvdXIgYWRkIHdp
dGggMSwgd2hpY2ggaXMgYWxzbyBhbiBhcmd1bWVudC4KKyAgICAgICAgICAgIHVuc2lnbmVkIHNr
aXBwZWQgPSAwOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IHBhcmFtcy5z
aXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgIGlmIChwYXJhbXNbaV0uZ3ByKCkgPT0gcGFy
YW1zWzBdLmdwcigpKSB7CisgICAgICAgICAgICAgICAgICAgIHNraXBwZWQgPSBpOworICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgaml0LmFkZDY0KHBhcmFtc1tpXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIENIRUNLKCEhc2tpcHBlZCk7CisgICAgICAgIH0pOworCisgICAg
UGF0Y2hwb2ludFZhbHVlKiBzZWNvbmRQYXRjaHBvaW50ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNo
cG9pbnRWYWx1ZT4ocHJvYywgSW50NjQsIE9yaWdpbigpKTsKKyAgICBzZWNvbmRQYXRjaHBvaW50
LT5hcHBlbmQoZmlyc3RQYXRjaHBvaW50LCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86OnJlZ1QxKSk7
CisgICAgc2Vjb25kUGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAorICAgICAgICBbJl0gKENDYWxs
SGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewor
ICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChq
aXQpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzFdLmdwcigpID09IEdQUkluZm86OnJlZ1Qx
KTsKKyAgICAgICAgICAgIGppdC5ub3AoKTsKKyAgICAgICAgICAgIGppdC5ub3AoKTsKKyAgICAg
ICAgICAgIGppdC5tb3ZlKHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKKyAgICAg
ICAgICAgIGppdC5ub3AoKTsKKyAgICAgICAgICAgIGppdC5ub3AoKTsKKyAgICAgICAgfSk7Cisg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHNl
Y29uZFBhdGNocG9pbnQpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Cisg
ICAgQ0hFQ0soaW52b2tlPHVpbnQ2NF90PigqY29kZSkgPT0gcmVzdWx0KTsKK30KKwordm9pZCBp
bnRlcnByZXRlclByaW50KFZlY3RvcjxpbnRwdHJfdD4qIHN0cmVhbSwgaW50cHRyX3QgdmFsdWUp
Cit7CisgICAgc3RyZWFtLT5hcHBlbmQodmFsdWUpOworfQorCit2b2lkIHRlc3RJbnRlcnByZXRl
cigpCit7CisgICAgLy8gVGhpcyBpbXBsZW1lbnRzIGEgc2lsbHkgaW50ZXJwcmV0ZXIgdG8gdGVz
dCBidWlsZGluZyBjdXN0b20gc3dpdGNoIHN0YXRlbWVudHMgdXNpbmcKKyAgICAvLyBQYXRjaHBv
aW50LgorCisgICAgUHJvY2VkdXJlIHByb2M7CisKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIGRpc3BhdGNoID0gcHJvYy5hZGRCbG9jaygp
OworICAgIEJhc2ljQmxvY2sqIGFkZFRvRGF0YVBvaW50ZXIgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgQmFzaWNCbG9jayogYWRkVG9Db2RlUG9pbnRlciA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBC
YXNpY0Jsb2NrKiBhZGRUb0NvZGVQb2ludGVyVGFrZW4gPSBwcm9jLmFkZEJsb2NrKCk7CisgICAg
QmFzaWNCbG9jayogYWRkVG9Db2RlUG9pbnRlck5vdFRha2VuID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIEJhc2ljQmxvY2sqIGFkZFRvRGF0YSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Js
b2NrKiBwcmludCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBzdG9wID0gcHJv
Yy5hZGRCbG9jaygpOworCisgICAgVmFyaWFibGUqIGRhdGFQb2ludGVyID0gcHJvYy5hZGRWYXJp
YWJsZShwb2ludGVyVHlwZSgpKTsKKyAgICBWYXJpYWJsZSogY29kZVBvaW50ZXIgPSBwcm9jLmFk
ZFZhcmlhYmxlKHBvaW50ZXJUeXBlKCkpOworCisgICAgcm9vdC0+YXBwZW5kTmV3PFZhcmlhYmxl
VmFsdWU+KAorICAgICAgICBwcm9jLCBTZXQsIE9yaWdpbigpLCBkYXRhUG9pbnRlciwKKyAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApKTsKKyAgICByb290LT5hcHBlbmROZXc8VmFyaWFibGVWYWx1ZT4o
CisgICAgICAgIHByb2MsIFNldCwgT3JpZ2luKCksIGNvZGVQb2ludGVyLAorICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMSkpOworICAgIFZhbHVlKiBjb250ZXh0ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4oKSwgRnJlcXVl
bnRlZEJsb2NrKGRpc3BhdGNoKSk7CisKKyAgICAvLyBOT1RFOiBJdCdzIHRvdGFsbHkgdmFsaWQg
Zm9yIHRoaXMgcGF0Y2hwb2ludCB0byBiZSB0YWlsLWR1cGxpY2F0ZWQuCisgICAgVmFsdWUqIGNv
ZGVQb2ludGVyVmFsdWUgPQorICAgICAgICBkaXNwYXRjaC0+YXBwZW5kTmV3PFZhcmlhYmxlVmFs
dWU+KHByb2MsIEIzOjpHZXQsIE9yaWdpbigpLCBjb2RlUG9pbnRlcik7CisgICAgVmFsdWUqIG9w
Y29kZSA9IGRpc3BhdGNoLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICBwcm9jLCBM
b2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSwgY29kZVBvaW50ZXJWYWx1ZSk7CisgICAgUGF0
Y2hwb2ludFZhbHVlKiBwb2x5SnVtcCA9IGRpc3BhdGNoLT5hcHBlbmROZXc8UGF0Y2hwb2ludFZh
bHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7CisgICAgcG9seUp1bXAtPmVmZmVjdHMgPSBFZmZl
Y3RzKCk7CisgICAgcG9seUp1bXAtPmVmZmVjdHMudGVybWluYWwgPSB0cnVlOworICAgIHBvbHlK
dW1wLT5hcHBlbmRTb21lUmVnaXN0ZXIob3Bjb2RlKTsKKyAgICBwb2x5SnVtcC0+Y2xvYmJlcihS
ZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgIHBvbHlKdW1wLT5udW1H
UFNjcmF0Y2hSZWdpc3RlcnMgPSAyOworICAgIGRpc3BhdGNoLT5hcHBlbmRTdWNjZXNzb3IoRnJl
cXVlbnRlZEJsb2NrKGFkZFRvRGF0YVBvaW50ZXIpKTsKKyAgICBkaXNwYXRjaC0+YXBwZW5kU3Vj
Y2Vzc29yKEZyZXF1ZW50ZWRCbG9jayhhZGRUb0NvZGVQb2ludGVyKSk7CisgICAgZGlzcGF0Y2gt
PmFwcGVuZFN1Y2Nlc3NvcihGcmVxdWVudGVkQmxvY2soYWRkVG9EYXRhKSk7CisgICAgZGlzcGF0
Y2gtPmFwcGVuZFN1Y2Nlc3NvcihGcmVxdWVudGVkQmxvY2socHJpbnQpKTsKKyAgICBkaXNwYXRj
aC0+YXBwZW5kU3VjY2Vzc29yKEZyZXF1ZW50ZWRCbG9jayhzdG9wKSk7CisKKyAgICAvLyBPdXIg
Im9wY29kZXMiLgorICAgIHN0YXRpYyBjb25zdCBpbnRwdHJfdCBBZGREUCA9IDA7CisgICAgc3Rh
dGljIGNvbnN0IGludHB0cl90IEFkZENQID0gMTsKKyAgICBzdGF0aWMgY29uc3QgaW50cHRyX3Qg
QWRkID0gMjsKKyAgICBzdGF0aWMgY29uc3QgaW50cHRyX3QgUHJpbnQgPSAzOworICAgIHN0YXRp
YyBjb25zdCBpbnRwdHJfdCBTdG9wID0gNDsKKworICAgIHBvbHlKdW1wLT5zZXRHZW5lcmF0b3Io
CisgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlv
blBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVy
VXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAgICAgICAgICBWZWN0b3I8Qm94PENDYWxsSGVs
cGVyczo6TGFiZWw+PiBsYWJlbHMgPSBwYXJhbXMuc3VjY2Vzc29yTGFiZWxzKCk7CisKKyAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxCM0NvbXBpbGF0aW9uUHRyVGFnPioganVtcFRh
YmxlID0gYml0d2lzZV9jYXN0PE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxCM0NvbXBpbGF0aW9uUHRy
VGFnPio+KAorICAgICAgICAgICAgICAgIHBhcmFtcy5wcm9jKCkuYWRkRGF0YVNlY3Rpb24oc2l6
ZW9mKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxCM0NvbXBpbGF0aW9uUHRyVGFnPikgKiBsYWJlbHMu
c2l6ZSgpKSk7CisKKyAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoID0gcGFyYW1zLmdwU2NyYXRj
aCgwKTsKKworICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KGp1bXBUYWJsZSksIHNjcmF0Y2gpOworICAgICAgICAgICAgaml0LmxvYWQ2NChDQ2FsbEhlbHBl
cnM6OkJhc2VJbmRleChzY3JhdGNoLCBwYXJhbXNbMF0uZ3ByKCksIENDYWxsSGVscGVyczo6dGlt
ZXNQdHIoKSksIHNjcmF0Y2gpOworICAgICAgICAgICAgaml0Lmp1bXAoc2NyYXRjaCwgQjNDb21w
aWxhdGlvblB0clRhZyk7CisKKyAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzaygKKyAgICAgICAg
ICAgICAgICBbJiwganVtcFRhYmxlLCBsYWJlbHNdIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7
CisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGxhYmVscy5zaXplKCk7IGkt
LTspCisgICAgICAgICAgICAgICAgICAgICAgICBqdW1wVGFibGVbaV0gPSBsaW5rQnVmZmVyLmxv
Y2F0aW9uT2Y8QjNDb21waWxhdGlvblB0clRhZz4oKmxhYmVsc1tpXSk7CisgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0pOworCisgICAgLy8gQWRkRFAgPG9wZXJhbmQ+OiBhZGRzIDxvcGVy
YW5kPiB0byBEUC4KKyAgICBjb2RlUG9pbnRlclZhbHVlID0KKyAgICAgICAgYWRkVG9EYXRhUG9p
bnRlci0+YXBwZW5kTmV3PFZhcmlhYmxlVmFsdWU+KHByb2MsIEIzOjpHZXQsIE9yaWdpbigpLCBj
b2RlUG9pbnRlcik7CisgICAgYWRkVG9EYXRhUG9pbnRlci0+YXBwZW5kTmV3PFZhcmlhYmxlVmFs
dWU+KAorICAgICAgICBwcm9jLCBTZXQsIE9yaWdpbigpLCBkYXRhUG9pbnRlciwKKyAgICAgICAg
YWRkVG9EYXRhUG9pbnRlci0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEIz
OjpBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgYWRkVG9EYXRhUG9pbnRlci0+YXBwZW5kTmV3
PFZhcmlhYmxlVmFsdWU+KHByb2MsIEIzOjpHZXQsIE9yaWdpbigpLCBkYXRhUG9pbnRlciksCisg
ICAgICAgICAgICBhZGRUb0RhdGFQb2ludGVyLT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgICAgIHByb2MsIE11bCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgYWRkVG9EYXRhUG9p
bnRlci0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywg
TG9hZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCksIGNvZGVQb2ludGVyVmFsdWUsIHN0YXRpY19j
YXN0PGludDMyX3Q+KHNpemVvZihpbnRwdHJfdCkpKSwKKyAgICAgICAgICAgICAgICBhZGRUb0Rh
dGFQb2ludGVyLT5hcHBlbmRJbnRDb25zdGFudCgKKyAgICAgICAgICAgICAgICAgICAgcHJvYywg
T3JpZ2luKCksIHBvaW50ZXJUeXBlKCksIHNpemVvZihpbnRwdHJfdCkpKSkpOworICAgIGFkZFRv
RGF0YVBvaW50ZXItPmFwcGVuZE5ldzxWYXJpYWJsZVZhbHVlPigKKyAgICAgICAgcHJvYywgU2V0
LCBPcmlnaW4oKSwgY29kZVBvaW50ZXIsCisgICAgICAgIGFkZFRvRGF0YVBvaW50ZXItPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCMzo6QWRkLCBPcmlnaW4oKSwgY29kZVBv
aW50ZXJWYWx1ZSwKKyAgICAgICAgICAgIGFkZFRvRGF0YVBvaW50ZXItPmFwcGVuZEludENvbnN0
YW50KAorICAgICAgICAgICAgICAgIHByb2MsIE9yaWdpbigpLCBwb2ludGVyVHlwZSgpLCBzaXpl
b2YoaW50cHRyX3QpICogMikpKTsKKyAgICBhZGRUb0RhdGFQb2ludGVyLT5hcHBlbmROZXdDb250
cm9sVmFsdWUocHJvYywgSnVtcCwgT3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayhkaXNwYXRjaCkp
OworCisgICAgLy8gQWRkQ1AgPG9wZXJhbmQ+OiBhZGRzIDxvcGVyYW5kPiB0byBDUCBpZiB0aGUg
Y3VycmVudCB2YWx1ZSBhdCBEUCBpcyBub24temVybywgb3RoZXJ3aXNlCisgICAgLy8gZmFsbHMg
dGhyb3VnaCBub3JtYWxseS4KKyAgICBjb2RlUG9pbnRlclZhbHVlID0KKyAgICAgICAgYWRkVG9D
b2RlUG9pbnRlci0+YXBwZW5kTmV3PFZhcmlhYmxlVmFsdWU+KHByb2MsIEIzOjpHZXQsIE9yaWdp
bigpLCBjb2RlUG9pbnRlcik7CisgICAgVmFsdWUqIGRhdGFQb2ludGVyVmFsdWUgPQorICAgICAg
ICBhZGRUb0NvZGVQb2ludGVyLT5hcHBlbmROZXc8VmFyaWFibGVWYWx1ZT4ocHJvYywgQjM6Okdl
dCwgT3JpZ2luKCksIGRhdGFQb2ludGVyKTsKKyAgICBhZGRUb0NvZGVQb2ludGVyLT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAg
IGFkZFRvQ29kZVBvaW50ZXItPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICBw
cm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSwgZGF0YVBvaW50ZXJWYWx1ZSksCisg
ICAgICAgIEZyZXF1ZW50ZWRCbG9jayhhZGRUb0NvZGVQb2ludGVyVGFrZW4pLCBGcmVxdWVudGVk
QmxvY2soYWRkVG9Db2RlUG9pbnRlck5vdFRha2VuKSk7CisgICAgYWRkVG9Db2RlUG9pbnRlclRh
a2VuLT5hcHBlbmROZXc8VmFyaWFibGVWYWx1ZT4oCisgICAgICAgIHByb2MsIFNldCwgT3JpZ2lu
KCksIGNvZGVQb2ludGVyLAorICAgICAgICBhZGRUb0NvZGVQb2ludGVyVGFrZW4tPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCMzo6QWRkLCBPcmlnaW4oKSwgY29kZVBvaW50
ZXJWYWx1ZSwKKyAgICAgICAgICAgIGFkZFRvQ29kZVBvaW50ZXJUYWtlbi0+YXBwZW5kTmV3PFZh
bHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBNdWwsIE9yaWdpbigpLAorICAgICAgICAgICAg
ICAgIGFkZFRvQ29kZVBvaW50ZXJUYWtlbi0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAg
ICAgICAgICAgICAgICAgcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCksIGNvZGVQ
b2ludGVyVmFsdWUsIHN0YXRpY19jYXN0PGludDMyX3Q+KHNpemVvZihpbnRwdHJfdCkpKSwKKyAg
ICAgICAgICAgICAgICBhZGRUb0NvZGVQb2ludGVyVGFrZW4tPmFwcGVuZEludENvbnN0YW50KAor
ICAgICAgICAgICAgICAgICAgICBwcm9jLCBPcmlnaW4oKSwgcG9pbnRlclR5cGUoKSwgc2l6ZW9m
KGludHB0cl90KSkpKSk7CisgICAgYWRkVG9Db2RlUG9pbnRlclRha2VuLT5hcHBlbmROZXdDb250
cm9sVmFsdWUocHJvYywgSnVtcCwgT3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayhkaXNwYXRjaCkp
OworICAgIGFkZFRvQ29kZVBvaW50ZXJOb3RUYWtlbi0+YXBwZW5kTmV3PFZhcmlhYmxlVmFsdWU+
KAorICAgICAgICBwcm9jLCBTZXQsIE9yaWdpbigpLCBjb2RlUG9pbnRlciwKKyAgICAgICAgYWRk
VG9Db2RlUG9pbnRlck5vdFRha2VuLT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJv
YywgQjM6OkFkZCwgT3JpZ2luKCksIGNvZGVQb2ludGVyVmFsdWUsCisgICAgICAgICAgICBhZGRU
b0NvZGVQb2ludGVyTm90VGFrZW4tPmFwcGVuZEludENvbnN0YW50KAorICAgICAgICAgICAgICAg
IHByb2MsIE9yaWdpbigpLCBwb2ludGVyVHlwZSgpLCBzaXplb2YoaW50cHRyX3QpICogMikpKTsK
KyAgICBhZGRUb0NvZGVQb2ludGVyTm90VGFrZW4tPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAg
ICAgICAgcHJvYywgSnVtcCwgT3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayhkaXNwYXRjaCkpOwor
CisgICAgLy8gQWRkIDxvcGVyYW5kPjogYWRkcyA8b3BlcmFuZD4gdG8gdGhlIHNsb3QgcG9pbnRl
ZCB0byBieSBEUC4KKyAgICBjb2RlUG9pbnRlclZhbHVlID0gYWRkVG9EYXRhLT5hcHBlbmROZXc8
VmFyaWFibGVWYWx1ZT4ocHJvYywgQjM6OkdldCwgT3JpZ2luKCksIGNvZGVQb2ludGVyKTsKKyAg
ICBkYXRhUG9pbnRlclZhbHVlID0gYWRkVG9EYXRhLT5hcHBlbmROZXc8VmFyaWFibGVWYWx1ZT4o
cHJvYywgQjM6OkdldCwgT3JpZ2luKCksIGRhdGFQb2ludGVyKTsKKyAgICBhZGRUb0RhdGEtPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIFN0b3JlLCBPcmlnaW4oKSwKKyAg
ICAgICAgYWRkVG9EYXRhLT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQjM6
OkFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICBhZGRUb0RhdGEtPmFwcGVuZE5ldzxNZW1vcnlW
YWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2lu
KCksIGRhdGFQb2ludGVyVmFsdWUpLAorICAgICAgICAgICAgYWRkVG9EYXRhLT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIExvYWQsIHBvaW50ZXJUeXBlKCks
IE9yaWdpbigpLCBjb2RlUG9pbnRlclZhbHVlLCBzdGF0aWNfY2FzdDxpbnQzMl90PihzaXplb2Yo
aW50cHRyX3QpKSkpLAorICAgICAgICBkYXRhUG9pbnRlclZhbHVlKTsKKyAgICBhZGRUb0RhdGEt
PmFwcGVuZE5ldzxWYXJpYWJsZVZhbHVlPigKKyAgICAgICAgcHJvYywgU2V0LCBPcmlnaW4oKSwg
Y29kZVBvaW50ZXIsCisgICAgICAgIGFkZFRvRGF0YS0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAg
ICAgICAgIHByb2MsIEIzOjpBZGQsIE9yaWdpbigpLCBjb2RlUG9pbnRlclZhbHVlLAorICAgICAg
ICAgICAgYWRkVG9EYXRhLT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgcG9pbnRl
clR5cGUoKSwgc2l6ZW9mKGludHB0cl90KSAqIDIpKSk7CisgICAgYWRkVG9EYXRhLT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUocHJvYywgSnVtcCwgT3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayhkaXNw
YXRjaCkpOworCisgICAgLy8gUHJpbnQ6ICJwcmludHMiIHRoZSB2YWx1ZSBwb2ludGVkIHRvIGJ5
IERQLiBXaGF0IHRoaXMgYWN0dWFsbHkgbWVhbnMgaXMgdGhhdCB0aGUgdmFsdWUgaXMKKyAgICAv
LyBhcHBlbmRlZCB0byB0aGUgc3RyZWFtIHZlY3RvciBieSB0aGUgaW50ZXJwcmV0ZXJQcmludCBm
dW5jdGlvbi4KKyAgICBjb2RlUG9pbnRlclZhbHVlID0gcHJpbnQtPmFwcGVuZE5ldzxWYXJpYWJs
ZVZhbHVlPihwcm9jLCBCMzo6R2V0LCBPcmlnaW4oKSwgY29kZVBvaW50ZXIpOworICAgIGRhdGFQ
b2ludGVyVmFsdWUgPSBwcmludC0+YXBwZW5kTmV3PFZhcmlhYmxlVmFsdWU+KHByb2MsIEIzOjpH
ZXQsIE9yaWdpbigpLCBkYXRhUG9pbnRlcik7CisgICAgcHJpbnQtPmFwcGVuZE5ldzxDQ2FsbFZh
bHVlPigKKyAgICAgICAgcHJvYywgVm9pZCwgT3JpZ2luKCksCisgICAgICAgIHByaW50LT5hcHBl
bmROZXc8Q29uc3RQdHJWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1
bmN0aW9uUHRyPHZvaWQqPihpbnRlcnByZXRlclByaW50LCBCM0NDYWxsUHRyVGFnKSksCisgICAg
ICAgIGNvbnRleHQsCisgICAgICAgIHByaW50LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2Ms
IExvYWQsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigpLCBkYXRhUG9pbnRlclZhbHVlKSk7CisgICAg
cHJpbnQtPmFwcGVuZE5ldzxWYXJpYWJsZVZhbHVlPigKKyAgICAgICAgcHJvYywgU2V0LCBPcmln
aW4oKSwgY29kZVBvaW50ZXIsCisgICAgICAgIHByaW50LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgcHJvYywgQjM6OkFkZCwgT3JpZ2luKCksIGNvZGVQb2ludGVyVmFsdWUsCisgICAg
ICAgICAgICBwcmludC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHBvaW50ZXJU
eXBlKCksIHNpemVvZihpbnRwdHJfdCkpKSk7CisgICAgcHJpbnQtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4oKSwgRnJlcXVlbnRlZEJsb2NrKGRpc3BhdGNoKSk7CisK
KyAgICAvLyBTdG9wOiByZXR1cm5zLgorICAgIHN0b3AtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
KyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgc3RvcC0+YXBwZW5kSW50
Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHBvaW50ZXJUeXBlKCksIDApKTsKKworICAgIGF1dG8g
aW50ZXJwcmV0ZXIgPSBjb21waWxlUHJvYyhwcm9jKTsKKworICAgIFZlY3Rvcjx1aW50cHRyX3Q+
IGRhdGE7CisgICAgVmVjdG9yPHVpbnRwdHJfdD4gY29kZTsKKyAgICBWZWN0b3I8dWludHB0cl90
PiBzdHJlYW07CisKKyAgICBkYXRhLmFwcGVuZCgxKTsKKyAgICBkYXRhLmFwcGVuZCgwKTsKKwor
ICAgIGlmIChzaG91bGRCZVZlcmJvc2UoKSkKKyAgICAgICAgZGF0YUxvZygiZGF0YSA9ICIsIGxp
c3REdW1wKGRhdGEpLCAiXG4iKTsKKworICAgIC8vIFdlJ2xsIHdyaXRlIGEgcHJvZ3JhbSB0aGF0
IHByaW50cyB0aGUgbnVtYmVycyAxLi4xMDAuCisgICAgLy8gV2UgZXhwZWN0IERQIHRvIHBvaW50
IGF0ICMwLgorICAgIGNvZGUuYXBwZW5kKEFkZENQKTsKKyAgICBjb2RlLmFwcGVuZCg2KTsgLy8g
Z28gdG8gbG9vcCBib2R5CisKKyAgICAvLyBMb29wIHJlLWVudHJ5OgorICAgIC8vIFdlIGV4cGVj
dCBEUCB0byBwb2ludCBhdCAjMSBhbmQgZm9yICMxIHRvIGJlIG9mZnNldCBieSAtMTAwLgorICAg
IGNvZGUuYXBwZW5kKEFkZCk7CisgICAgY29kZS5hcHBlbmQoMTAwKTsKKworICAgIGNvZGUuYXBw
ZW5kKEFkZERQKTsKKyAgICBjb2RlLmFwcGVuZCgtMSk7CisKKyAgICAvLyBMb29wIGhlYWRlcjoK
KyAgICAvLyBXZSBleHBlY3QgRFAgdG8gcG9pbnQgYXQgIzAuCisgICAgY29kZS5hcHBlbmQoQWRk
RFApOworICAgIGNvZGUuYXBwZW5kKDEpOworCisgICAgY29kZS5hcHBlbmQoQWRkKTsKKyAgICBj
b2RlLmFwcGVuZCgxKTsKKworICAgIGNvZGUuYXBwZW5kKFByaW50KTsKKworICAgIGNvZGUuYXBw
ZW5kKEFkZCk7CisgICAgY29kZS5hcHBlbmQoLTEwMCk7CisKKyAgICAvLyBXZSB3YW50IHRvIHN0
b3AgaWYgaXQncyB6ZXJvIGFuZCBjb250aW51ZSBpZiBpdCdzIG5vbi16ZXJvLiBBZGRDUCB0YWtl
cyB0aGUgYnJhbmNoIGlmIGl0J3MKKyAgICAvLyBub24temVyby4KKyAgICBjb2RlLmFwcGVuZChB
ZGRDUCk7CisgICAgY29kZS5hcHBlbmQoLTExKTsgLy8gZ28gdG8gbG9vcCByZS1lbnRyeS4KKwor
ICAgIGNvZGUuYXBwZW5kKFN0b3ApOworCisgICAgaWYgKHNob3VsZEJlVmVyYm9zZSgpKQorICAg
ICAgICBkYXRhTG9nKCJjb2RlID0gIiwgbGlzdER1bXAoY29kZSksICJcbiIpOworCisgICAgQ0hF
Q0soIWludm9rZTxpbnRwdHJfdD4oKmludGVycHJldGVyLCBkYXRhLmRhdGEoKSwgY29kZS5kYXRh
KCksICZzdHJlYW0pKTsKKworICAgIENIRUNLKHN0cmVhbS5zaXplKCkgPT0gMTAwKTsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMTAwOyArK2kpCisgICAgICAgIENIRUNLKHN0cmVhbVtp
XSA9PSBpICsgMSk7CisKKyAgICBpZiAoc2hvdWxkQmVWZXJib3NlKCkpCisgICAgICAgIGRhdGFM
b2coInN0cmVhbSA9ICIsIGxpc3REdW1wKHN0cmVhbSksICJcbiIpOworfQorCit2b2lkIHRlc3RS
ZWR1Y2VTdHJlbmd0aENoZWNrQm90dG9tVXNlSW5Bbm90aGVyQmxvY2soKQoreworICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAxKQorICAgICAgICByZXR1cm47
CisKKyAgICBCYXNpY0Jsb2NrKiBvbmUgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9j
ayogdHdvID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgQ2hlY2tWYWx1ZSogY2hlY2sgPSBvbmUt
PmFwcGVuZE5ldzxDaGVja1ZhbHVlPigKKyAgICAgICAgcHJvYywgQ2hlY2ssIE9yaWdpbigpLCBv
bmUtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7CisgICAgY2hl
Y2stPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3Qg
U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0
Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworCisgICAgICAgICAgICBqaXQubW92
ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMig2NjYpLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQ
Uik7CisgICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAgICAgICAg
IGppdC5yZXQoKTsKKyAgICAgICAgfSk7CisgICAgVmFsdWUqIGFyZyA9IG9uZS0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OworICAgIG9uZS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIEp1bXAsIE9yaWdpbigpLCBG
cmVxdWVudGVkQmxvY2sodHdvKSk7CisKKyAgICBjaGVjayA9IHR3by0+YXBwZW5kTmV3PENoZWNr
VmFsdWU+KAorICAgICAgICBwcm9jLCBDaGVja0FkZCwgT3JpZ2luKCksIGFyZywKKyAgICAgICAg
dHdvLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKTsKKyAgICBj
aGVjay0+c2V0R2VuZXJhdG9yKAorICAgICAgICBbJl0gKENDYWxsSGVscGVycyYsIGNvbnN0IFN0
YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAgICAgICAgIENIRUNLKCEiU2hvdWxkIG5v
dCBleGVjdXRlIik7CisgICAgICAgIH0pOworICAgIHR3by0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KHByb2MsIFJldHVybiwgT3JpZ2luKCksIGNoZWNrKTsKKworICAgIHByb2MucmVzZXRSZWFjaGFi
aWxpdHkoKTsKKyAgICByZWR1Y2VTdHJlbmd0aChwcm9jKTsKK30KKwordm9pZCB0ZXN0UmVzZXRS
ZWFjaGFiaWxpdHlEYW5nbGluZ1JlZmVyZW5jZSgpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisK
KyAgICBCYXNpY0Jsb2NrKiBvbmUgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayog
dHdvID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgVXBzaWxvblZhbHVlKiB1cHNpbG9uID0gb25l
LT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPigKKyAgICAgICAgcHJvYywgT3JpZ2luKCksIG9uZS0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKSk7CisgICAgb25lLT5h
cHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgT29wcywgT3JpZ2luKCkpOworCisgICAgVmFsdWUq
IHBoaSA9IHR3by0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBQaGksIEludDMyLCBPcmlnaW4oKSk7
CisgICAgdXBzaWxvbi0+c2V0UGhpKHBoaSk7CisgICAgdHdvLT5hcHBlbmROZXdDb250cm9sVmFs
dWUocHJvYywgT29wcywgT3JpZ2luKCkpOworCisgICAgcHJvYy5yZXNldFJlYWNoYWJpbGl0eSgp
OworICAgIHZhbGlkYXRlKHByb2MpOworfQorCit2b2lkIHRlc3RFbnRyeVN3aXRjaFNpbXBsZSgp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgcHJvYy5zZXROdW1FbnRyeXBvaW50cygzKTsK
KworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9j
ayogb25lID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIHR3byA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0aHJlZSA9IHByb2MuYWRkQmxvY2soKTsKKworICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRW50cnlTd2l0Y2gsIE9yaWdpbigpKTsKKyAg
ICByb290LT5hcHBlbmRTdWNjZXNzb3IoRnJlcXVlbnRlZEJsb2NrKG9uZSkpOworICAgIHJvb3Qt
PmFwcGVuZFN1Y2Nlc3NvcihGcmVxdWVudGVkQmxvY2sodHdvKSk7CisgICAgcm9vdC0+YXBwZW5k
U3VjY2Vzc29yKEZyZXF1ZW50ZWRCbG9jayh0aHJlZSkpOworCisgICAgb25lLT5hcHBlbmROZXc8
VmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICBvbmUtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAg
ICAgICAgb25lLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCksCisgICAgICAgICAgICBvbmUtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpOworCisg
ICAgdHdvLT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LAorICAgICAgICB0d28tPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTdWIs
IE9yaWdpbigpLAorICAgICAgICAgICAgdHdvLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCisgICAgICAgICAgICB0d28t
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKSkpOworCisgICAgdGhyZWUtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHRocmVlLT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICAgICAgcHJvYywgTXVsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHRocmVlLT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCksCisgICAgICAgICAgICB0aHJlZS0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSk7CisKKyAgICBwcmVwYXJlRm9y
R2VuZXJhdGlvbihwcm9jKTsKKworICAgIENDYWxsSGVscGVycyBqaXQ7CisgICAgZ2VuZXJhdGUo
cHJvYywgaml0KTsKKyAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBudWxscHRyKTsKKyAg
ICBDb2RlTG9jYXRpb25MYWJlbDxCM0NvbXBpbGF0aW9uUHRyVGFnPiBsYWJlbE9uZSA9IGxpbmtC
dWZmZXIubG9jYXRpb25PZjxCM0NvbXBpbGF0aW9uUHRyVGFnPihwcm9jLmVudHJ5cG9pbnRMYWJl
bCgwKSk7CisgICAgQ29kZUxvY2F0aW9uTGFiZWw8QjNDb21waWxhdGlvblB0clRhZz4gbGFiZWxU
d28gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8QjNDb21waWxhdGlvblB0clRhZz4ocHJvYy5lbnRy
eXBvaW50TGFiZWwoMSkpOworICAgIENvZGVMb2NhdGlvbkxhYmVsPEIzQ29tcGlsYXRpb25QdHJU
YWc+IGxhYmVsVGhyZWUgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8QjNDb21waWxhdGlvblB0clRh
Zz4ocHJvYy5lbnRyeXBvaW50TGFiZWwoMikpOworCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEIzQ29tcGlsYXRpb25QdHJUYWc+IGNvZGVSZWYgPSBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIs
IEIzQ29tcGlsYXRpb25QdHJUYWcsICJ0ZXN0YjMgY29tcGlsYXRpb24iKTsKKworICAgIENIRUNL
KGludm9rZTxpbnQ+KGxhYmVsT25lLCAxLCAyKSA9PSAzKTsKKyAgICBDSEVDSyhpbnZva2U8aW50
PihsYWJlbFR3bywgMSwgMikgPT0gLTEpOworICAgIENIRUNLKGludm9rZTxpbnQ+KGxhYmVsVGhy
ZWUsIDEsIDIpID09IDIpOworICAgIENIRUNLKGludm9rZTxpbnQ+KGxhYmVsT25lLCAtMSwgMikg
PT0gMSk7CisgICAgQ0hFQ0soaW52b2tlPGludD4obGFiZWxUd28sIC0xLCAyKSA9PSAtMyk7Cisg
ICAgQ0hFQ0soaW52b2tlPGludD4obGFiZWxUaHJlZSwgLTEsIDIpID09IC0yKTsKK30KKwordm9p
ZCB0ZXN0RW50cnlTd2l0Y2hOb0VudHJ5U3dpdGNoKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICBwcm9jLnNldE51bUVudHJ5cG9pbnRzKDMpOworCisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKworICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
IHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSk7CisKKyAgICBwcmVwYXJlRm9y
R2VuZXJhdGlvbihwcm9jKTsKKworICAgIENDYWxsSGVscGVycyBqaXQ7CisgICAgZ2VuZXJhdGUo
cHJvYywgaml0KTsKKyAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBudWxscHRyKTsKKyAg
ICBDb2RlTG9jYXRpb25MYWJlbDxCM0NvbXBpbGF0aW9uUHRyVGFnPiBsYWJlbE9uZSA9IGxpbmtC
dWZmZXIubG9jYXRpb25PZjxCM0NvbXBpbGF0aW9uUHRyVGFnPihwcm9jLmVudHJ5cG9pbnRMYWJl
bCgwKSk7CisgICAgQ29kZUxvY2F0aW9uTGFiZWw8QjNDb21waWxhdGlvblB0clRhZz4gbGFiZWxU
d28gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8QjNDb21waWxhdGlvblB0clRhZz4ocHJvYy5lbnRy
eXBvaW50TGFiZWwoMSkpOworICAgIENvZGVMb2NhdGlvbkxhYmVsPEIzQ29tcGlsYXRpb25QdHJU
YWc+IGxhYmVsVGhyZWUgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8QjNDb21waWxhdGlvblB0clRh
Zz4ocHJvYy5lbnRyeXBvaW50TGFiZWwoMikpOworCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEIzQ29tcGlsYXRpb25QdHJUYWc+IGNvZGVSZWYgPSBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIs
IEIzQ29tcGlsYXRpb25QdHJUYWcsICJ0ZXN0YjMgY29tcGlsYXRpb24iKTsKKworICAgIENIRUNL
X0VRKGludm9rZTxpbnQ+KGxhYmVsT25lLCAxLCAyKSwgMyk7CisgICAgQ0hFQ0tfRVEoaW52b2tl
PGludD4obGFiZWxUd28sIDEsIDIpLCAzKTsKKyAgICBDSEVDS19FUShpbnZva2U8aW50PihsYWJl
bFRocmVlLCAxLCAyKSwgMyk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxPbmUsIC0x
LCAyKSwgMSk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUd28sIC0xLCAyKSwgMSk7
CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUaHJlZSwgLTEsIDIpLCAxKTsKK30KKwor
dm9pZCB0ZXN0RW50cnlTd2l0Y2hXaXRoQ29tbW9uUGF0aHMoKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIHByb2Muc2V0TnVtRW50cnlwb2ludHMoMyk7CisKKyAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIG9uZSA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0d28gPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNC
bG9jayogdGhyZWUgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogZW5kID0gcHJv
Yy5hZGRCbG9jaygpOworCisgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBFbnRyeVN3
aXRjaCwgT3JpZ2luKCkpOworICAgIHJvb3QtPmFwcGVuZFN1Y2Nlc3NvcihGcmVxdWVudGVkQmxv
Y2sob25lKSk7CisgICAgcm9vdC0+YXBwZW5kU3VjY2Vzc29yKEZyZXF1ZW50ZWRCbG9jayh0d28p
KTsKKyAgICByb290LT5hcHBlbmRTdWNjZXNzb3IoRnJlcXVlbnRlZEJsb2NrKHRocmVlKSk7CisK
KyAgICBVcHNpbG9uVmFsdWUqIHVwc2lsb25PbmUgPSBvbmUtPmFwcGVuZE5ldzxVcHNpbG9uVmFs
dWU+KAorICAgICAgICBwcm9jLCBPcmlnaW4oKSwKKyAgICAgICAgb25lLT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIG9uZS0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCks
CisgICAgICAgICAgICAgICAgb25lLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICAgICAgb25lLT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgICAgICBvbmUtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpKTsKKyAgICBvbmUtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgSnVtcCwgT3JpZ2luKCkpOworICAgIG9uZS0+c2V0U3VjY2Vzc29ycyhGcmVxdWVu
dGVkQmxvY2soZW5kKSk7CisKKyAgICBVcHNpbG9uVmFsdWUqIHVwc2lsb25Ud28gPSB0d28tPmFw
cGVuZE5ldzxVcHNpbG9uVmFsdWU+KAorICAgICAgICBwcm9jLCBPcmlnaW4oKSwKKyAgICAgICAg
dHdvLT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgU3ViLCBPcmlnaW4oKSwK
KyAgICAgICAgICAgIHR3by0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9j
LCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgdHdvLT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAg
ICAgICAgICAgdHdvLT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRy
dW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICB0d28tPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpKTsKKyAgICB0
d28tPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSnVtcCwgT3JpZ2luKCkpOworICAgIHR3by0+c2V0
U3VjY2Vzc29ycyhGcmVxdWVudGVkQmxvY2soZW5kKSk7CisKKyAgICBVcHNpbG9uVmFsdWUqIHVw
c2lsb25UaHJlZSA9IHRocmVlLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPigKKyAgICAgICAgcHJv
YywgT3JpZ2luKCksCisgICAgICAgIHRocmVlLT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgcHJvYywgTXVsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHRocmVlLT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
ICAgICB0aHJlZS0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAgICAgICAgIHRocmVlLT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
ICAgICB0aHJlZS0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpKSkpOworICAgIHRocmVlLT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEp1bXAsIE9yaWdpbigpKTsKKyAgICB0aHJlZS0+c2V0U3VjY2Vzc29ycyhGcmVxdWVudGVk
QmxvY2soZW5kKSk7CisKKyAgICBWYWx1ZSogcGhpID0gZW5kLT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFBoaSwgSW50MzIsIE9yaWdpbigpKTsKKyAgICB1cHNpbG9uT25lLT5zZXRQaGkocGhpKTsK
KyAgICB1cHNpbG9uVHdvLT5zZXRQaGkocGhpKTsKKyAgICB1cHNpbG9uVGhyZWUtPnNldFBoaShw
aGkpOworCisgICAgZW5kLT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAorICAgICAgICBlbmQtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBw
cm9jLCBjaGlsbChNb2QpLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHBoaSwgZW5kLT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAg
ICAgICAgICAgICBlbmQtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKSkpKTsKKworICAgIHByZXBhcmVGb3JHZW5lcmF0aW9u
KHByb2MpOworCisgICAgQ0NhbGxIZWxwZXJzIGppdDsKKyAgICBnZW5lcmF0ZShwcm9jLCBqaXQp
OworICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcihqaXQsIG51bGxwdHIpOworICAgIENvZGVMb2Nh
dGlvbkxhYmVsPEIzQ29tcGlsYXRpb25QdHJUYWc+IGxhYmVsT25lID0gbGlua0J1ZmZlci5sb2Nh
dGlvbk9mPEIzQ29tcGlsYXRpb25QdHJUYWc+KHByb2MuZW50cnlwb2ludExhYmVsKDApKTsKKyAg
ICBDb2RlTG9jYXRpb25MYWJlbDxCM0NvbXBpbGF0aW9uUHRyVGFnPiBsYWJlbFR3byA9IGxpbmtC
dWZmZXIubG9jYXRpb25PZjxCM0NvbXBpbGF0aW9uUHRyVGFnPihwcm9jLmVudHJ5cG9pbnRMYWJl
bCgxKSk7CisgICAgQ29kZUxvY2F0aW9uTGFiZWw8QjNDb21waWxhdGlvblB0clRhZz4gbGFiZWxU
aHJlZSA9IGxpbmtCdWZmZXIubG9jYXRpb25PZjxCM0NvbXBpbGF0aW9uUHRyVGFnPihwcm9jLmVu
dHJ5cG9pbnRMYWJlbCgyKSk7CisKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8QjNDb21waWxh
dGlvblB0clRhZz4gY29kZVJlZiA9IEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgQjNDb21waWxh
dGlvblB0clRhZywgInRlc3RiMyBjb21waWxhdGlvbiIpOworCisgICAgQ0hFQ0tfRVEoaW52b2tl
PGludD4obGFiZWxPbmUsIDEsIDIsIDEwKSwgMyk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4o
bGFiZWxUd28sIDEsIDIsIDEwKSwgLTEpOworICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KGxhYmVs
VGhyZWUsIDEsIDIsIDEwKSwgMik7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxPbmUs
IC0xLCAyLCAxMCksIDEpOworICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KGxhYmVsVHdvLCAtMSwg
MiwgMTApLCAtMyk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUaHJlZSwgLTEsIDIs
IDEwKSwgLTIpOworICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KGxhYmVsT25lLCAxLCAyLCAyKSwg
MSk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUd28sIDEsIDIsIDIpLCAtMSk7Cisg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUaHJlZSwgMSwgMiwgMiksIDApOworICAgIENI
RUNLX0VRKGludm9rZTxpbnQ+KGxhYmVsT25lLCAtMSwgMiwgMiksIDEpOworICAgIENIRUNLX0VR
KGludm9rZTxpbnQ+KGxhYmVsVHdvLCAtMSwgMiwgMiksIC0xKTsKKyAgICBDSEVDS19FUShpbnZv
a2U8aW50PihsYWJlbFRocmVlLCAtMSwgMiwgMiksIDApOworICAgIENIRUNLX0VRKGludm9rZTxp
bnQ+KGxhYmVsT25lLCAxLCAyLCAwKSwgMCk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFi
ZWxUd28sIDEsIDIsIDApLCAwKTsKKyAgICBDSEVDS19FUShpbnZva2U8aW50PihsYWJlbFRocmVl
LCAxLCAyLCAwKSwgMCk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxPbmUsIC0xLCAy
LCAwKSwgMCk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUd28sIC0xLCAyLCAwKSwg
MCk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUaHJlZSwgLTEsIDIsIDApLCAwKTsK
K30KKwordm9pZCB0ZXN0RW50cnlTd2l0Y2hXaXRoQ29tbW9uUGF0aHNBbmROb25Ucml2aWFsRW50
cnlwb2ludCgpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgcHJvYy5zZXROdW1FbnRyeXBv
aW50cygzKTsKKworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAg
QmFzaWNCbG9jayogbmVnYXRlID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIGRp
c3BhdGNoID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIG9uZSA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0d28gPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFz
aWNCbG9jayogdGhyZWUgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogZW5kID0g
cHJvYy5hZGRCbG9jaygpOworCisgICAgVXBzaWxvblZhbHVlKiB1cHNpbG9uQmFzZSA9IHJvb3Qt
PmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KAorICAgICAgICBwcm9jLCBPcmlnaW4oKSwgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOworICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjMpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCAweGZmKSkpOworICAgIHJvb3QtPnNldFN1Y2Nlc3NvcnMo
RnJlcXVlbnRlZEJsb2NrKG5lZ2F0ZSksIEZyZXF1ZW50ZWRCbG9jayhkaXNwYXRjaCkpOworCisg
ICAgVXBzaWxvblZhbHVlKiB1cHNpbG9uTmVnYXRlID0gbmVnYXRlLT5hcHBlbmROZXc8VXBzaWxv
blZhbHVlPigKKyAgICAgICAgcHJvYywgT3JpZ2luKCksCisgICAgICAgIG5lZ2F0ZS0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIE5lZywgT3JpZ2luKCksCisgICAgICAgICAg
ICBuZWdhdGUtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMs
IE9yaWdpbigpLAorICAgICAgICAgICAgICAgIG5lZ2F0ZS0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSkpOworICAgIG5l
Z2F0ZS0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBKdW1wLCBPcmlnaW4oKSk7CisgICAgbmVnYXRl
LT5zZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9jayhkaXNwYXRjaCkpOworCisgICAgVmFsdWUq
IGFyZzAgPSBkaXNwYXRjaC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBQaGksIEludDMyLCBPcmln
aW4oKSk7CisgICAgdXBzaWxvbkJhc2UtPnNldFBoaShhcmcwKTsKKyAgICB1cHNpbG9uTmVnYXRl
LT5zZXRQaGkoYXJnMCk7CisgICAgZGlzcGF0Y2gtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRW50
cnlTd2l0Y2gsIE9yaWdpbigpKTsKKyAgICBkaXNwYXRjaC0+YXBwZW5kU3VjY2Vzc29yKEZyZXF1
ZW50ZWRCbG9jayhvbmUpKTsKKyAgICBkaXNwYXRjaC0+YXBwZW5kU3VjY2Vzc29yKEZyZXF1ZW50
ZWRCbG9jayh0d28pKTsKKyAgICBkaXNwYXRjaC0+YXBwZW5kU3VjY2Vzc29yKEZyZXF1ZW50ZWRC
bG9jayh0aHJlZSkpOworCisgICAgVXBzaWxvblZhbHVlKiB1cHNpbG9uT25lID0gb25lLT5hcHBl
bmROZXc8VXBzaWxvblZhbHVlPigKKyAgICAgICAgcHJvYywgT3JpZ2luKCksCisgICAgICAgIG9u
ZS0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCisg
ICAgICAgICAgICBhcmcwLCBvbmUtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAg
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIG9uZS0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSkp
OworICAgIG9uZS0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBKdW1wLCBPcmlnaW4oKSk7CisgICAg
b25lLT5zZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9jayhlbmQpKTsKKworICAgIFVwc2lsb25W
YWx1ZSogdXBzaWxvblR3byA9IHR3by0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4oCisgICAgICAg
IHByb2MsIE9yaWdpbigpLAorICAgICAgICB0d28tPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
ICAgICBwcm9jLCBTdWIsIE9yaWdpbigpLAorICAgICAgICAgICAgYXJnMCwgdHdvLT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAg
ICAgICAgICAgICB0d28tPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpKTsKKyAgICB0d28tPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgSnVtcCwgT3JpZ2luKCkpOworICAgIHR3by0+c2V0U3VjY2Vzc29ycyhGcmVxdWVudGVk
QmxvY2soZW5kKSk7CisKKyAgICBVcHNpbG9uVmFsdWUqIHVwc2lsb25UaHJlZSA9IHRocmVlLT5h
cHBlbmROZXc8VXBzaWxvblZhbHVlPigKKyAgICAgICAgcHJvYywgT3JpZ2luKCksCisgICAgICAg
IHRocmVlLT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTXVsLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIGFyZzAsIHRocmVlLT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICB0aHJlZS0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjEpKSkpOworICAgIHRocmVlLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEp1bXAsIE9yaWdp
bigpKTsKKyAgICB0aHJlZS0+c2V0U3VjY2Vzc29ycyhGcmVxdWVudGVkQmxvY2soZW5kKSk7CisK
KyAgICBWYWx1ZSogcGhpID0gZW5kLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFBoaSwgSW50MzIs
IE9yaWdpbigpKTsKKyAgICB1cHNpbG9uT25lLT5zZXRQaGkocGhpKTsKKyAgICB1cHNpbG9uVHdv
LT5zZXRQaGkocGhpKTsKKyAgICB1cHNpbG9uVGhyZWUtPnNldFBoaShwaGkpOworCisgICAgZW5k
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAg
ICAgICBlbmQtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBjaGlsbChNb2Qp
LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHBoaSwgZW5kLT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICBlbmQt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIyKSkpKTsKKworICAgIHByZXBhcmVGb3JHZW5lcmF0aW9uKHByb2MpOworCisgICAg
Q0NhbGxIZWxwZXJzIGppdDsKKyAgICBnZW5lcmF0ZShwcm9jLCBqaXQpOworICAgIExpbmtCdWZm
ZXIgbGlua0J1ZmZlcihqaXQsIG51bGxwdHIpOworICAgIENvZGVMb2NhdGlvbkxhYmVsPEIzQ29t
cGlsYXRpb25QdHJUYWc+IGxhYmVsT25lID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEIzQ29tcGls
YXRpb25QdHJUYWc+KHByb2MuZW50cnlwb2ludExhYmVsKDApKTsKKyAgICBDb2RlTG9jYXRpb25M
YWJlbDxCM0NvbXBpbGF0aW9uUHRyVGFnPiBsYWJlbFR3byA9IGxpbmtCdWZmZXIubG9jYXRpb25P
ZjxCM0NvbXBpbGF0aW9uUHRyVGFnPihwcm9jLmVudHJ5cG9pbnRMYWJlbCgxKSk7CisgICAgQ29k
ZUxvY2F0aW9uTGFiZWw8QjNDb21waWxhdGlvblB0clRhZz4gbGFiZWxUaHJlZSA9IGxpbmtCdWZm
ZXIubG9jYXRpb25PZjxCM0NvbXBpbGF0aW9uUHRyVGFnPihwcm9jLmVudHJ5cG9pbnRMYWJlbCgy
KSk7CisKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8QjNDb21waWxhdGlvblB0clRhZz4gY29k
ZVJlZiA9IEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgQjNDb21waWxhdGlvblB0clRhZywgInRl
c3RiMyBjb21waWxhdGlvbiIpOworCisgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxPbmUs
IDEsIDIsIDEwLCBmYWxzZSksIDMpOworICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KGxhYmVsVHdv
LCAxLCAyLCAxMCwgZmFsc2UpLCAtMSk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxU
aHJlZSwgMSwgMiwgMTAsIGZhbHNlKSwgMik7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFi
ZWxPbmUsIC0xLCAyLCAxMCwgZmFsc2UpLCAxKTsKKyAgICBDSEVDS19FUShpbnZva2U8aW50Pihs
YWJlbFR3bywgLTEsIDIsIDEwLCBmYWxzZSksIC0zKTsKKyAgICBDSEVDS19FUShpbnZva2U8aW50
PihsYWJlbFRocmVlLCAtMSwgMiwgMTAsIGZhbHNlKSwgLTIpOworICAgIENIRUNLX0VRKGludm9r
ZTxpbnQ+KGxhYmVsT25lLCAxLCAyLCAxMCwgdHJ1ZSksIDEpOworICAgIENIRUNLX0VRKGludm9r
ZTxpbnQ+KGxhYmVsVHdvLCAxLCAyLCAxMCwgdHJ1ZSksIC0zKTsKKyAgICBDSEVDS19FUShpbnZv
a2U8aW50PihsYWJlbFRocmVlLCAxLCAyLCAxMCwgdHJ1ZSksIC0yKTsKKyAgICBDSEVDS19FUShp
bnZva2U8aW50PihsYWJlbE9uZSwgLTEsIDIsIDEwLCB0cnVlKSwgMyk7CisgICAgQ0hFQ0tfRVEo
aW52b2tlPGludD4obGFiZWxUd28sIC0xLCAyLCAxMCwgdHJ1ZSksIC0xKTsKKyAgICBDSEVDS19F
UShpbnZva2U8aW50PihsYWJlbFRocmVlLCAtMSwgMiwgMTAsIHRydWUpLCAyKTsKKyAgICBDSEVD
S19FUShpbnZva2U8aW50PihsYWJlbE9uZSwgMSwgMiwgMiwgZmFsc2UpLCAxKTsKKyAgICBDSEVD
S19FUShpbnZva2U8aW50PihsYWJlbFR3bywgMSwgMiwgMiwgZmFsc2UpLCAtMSk7CisgICAgQ0hF
Q0tfRVEoaW52b2tlPGludD4obGFiZWxUaHJlZSwgMSwgMiwgMiwgZmFsc2UpLCAwKTsKKyAgICBD
SEVDS19FUShpbnZva2U8aW50PihsYWJlbE9uZSwgLTEsIDIsIDIsIGZhbHNlKSwgMSk7CisgICAg
Q0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUd28sIC0xLCAyLCAyLCBmYWxzZSksIC0xKTsKKyAg
ICBDSEVDS19FUShpbnZva2U8aW50PihsYWJlbFRocmVlLCAtMSwgMiwgMiwgZmFsc2UpLCAwKTsK
KyAgICBDSEVDS19FUShpbnZva2U8aW50PihsYWJlbE9uZSwgMSwgMiwgMCwgZmFsc2UpLCAwKTsK
KyAgICBDSEVDS19FUShpbnZva2U8aW50PihsYWJlbFR3bywgMSwgMiwgMCwgZmFsc2UpLCAwKTsK
KyAgICBDSEVDS19FUShpbnZva2U8aW50PihsYWJlbFRocmVlLCAxLCAyLCAwLCBmYWxzZSksIDAp
OworICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KGxhYmVsT25lLCAtMSwgMiwgMCwgZmFsc2UpLCAw
KTsKKyAgICBDSEVDS19FUShpbnZva2U8aW50PihsYWJlbFR3bywgLTEsIDIsIDAsIGZhbHNlKSwg
MCk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxUaHJlZSwgLTEsIDIsIDAsIGZhbHNl
KSwgMCk7Cit9CisKK3ZvaWQgdGVzdEVudHJ5U3dpdGNoTG9vcCgpCit7CisgICAgLy8gVGhpcyBp
cyBhIGNvbXBsZXRlbHkgYWJzdXJkIHVzZSBvZiBFbnRyeVN3aXRjaCwgd2hlcmUgaXQgaW1wYWN0
cyB0aGUgbG9vcCBjb25kaXRpb24uIFRoaXMKKyAgICAvLyBzaG91bGQgY2F1c2UgZHVwbGljYXRp
b24gb2YgZWl0aGVyIG5lYXJseSB0aGUgZW50aXJlIFByb2NlZHVyZS4gQXQgdGltZSBvZiB3cml0
aW5nLCB3ZSBlbmRlZAorICAgIC8vIHVwIGR1cGxpY2F0aW5nIGFsbCBvZiBpdCwgd2hpY2ggaXMg
ZmluZS4gSXQncyBpbXBvcnRhbnQgdG8gdGVzdCB0aGlzIGNhc2UsIHRvIG1ha2Ugc3VyZSB0aGF0
CisgICAgLy8gdGhlIGR1cGxpY2F0aW9uIGFsZ29yaXRobSBjYW4gaGFuZGxlIGludGVyZXN0aW5n
IGNvbnRyb2wgZmxvdy4KKworICAgIFByb2NlZHVyZSBwcm9jOworICAgIHByb2Muc2V0TnVtRW50
cnlwb2ludHMoMik7CisKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIEJhc2ljQmxvY2sqIGxvb3BIZWFkZXIgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNC
bG9jayogbG9vcEZvb3RlciA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBlbmQg
PSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBVcHNpbG9uVmFsdWUqIGluaXRpYWxWYWx1ZSA9IHJv
b3QtPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KAorICAgICAgICBwcm9jLCBPcmlnaW4oKSwgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOworICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgSnVtcCwgT3JpZ2luKCkpOworICAgIHJvb3QtPnNldFN1Y2Nlc3NvcnMobG9vcEhl
YWRlcik7CisKKyAgICBWYWx1ZSogdmFsdWVJbkxvb3AgPSBsb29wSGVhZGVyLT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFBoaSwgSW50MzIsIE9yaWdpbigpKTsKKyAgICBpbml0aWFsVmFsdWUtPnNl
dFBoaSh2YWx1ZUluTG9vcCk7CisgICAgVmFsdWUqIG5ld1ZhbHVlID0gbG9vcEhlYWRlci0+YXBw
ZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwgdmFsdWVJbkxvb3As
CisgICAgICAgIGxvb3BIZWFkZXItPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCAxKSk7CisgICAgbG9vcEhlYWRlci0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBFbnRyeVN3
aXRjaCwgT3JpZ2luKCkpOworICAgIGxvb3BIZWFkZXItPmFwcGVuZFN1Y2Nlc3NvcihlbmQpOwor
ICAgIGxvb3BIZWFkZXItPmFwcGVuZFN1Y2Nlc3Nvcihsb29wRm9vdGVyKTsKKworICAgIGxvb3BG
b290ZXItPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KHByb2MsIE9yaWdpbigpLCBuZXdWYWx1ZSwg
dmFsdWVJbkxvb3ApOworICAgIGxvb3BGb290ZXItPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
IHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgIGxvb3BGb290ZXItPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBMZXNzVGhhbiwgT3JpZ2luKCksIG5ld1ZhbHVlLAor
ICAgICAgICAgICAgbG9vcEZvb3Rlci0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIDEwMCkpKTsKKyAgICBsb29wRm9vdGVyLT5zZXRTdWNjZXNzb3JzKGxvb3BIZWFkZXIs
IGVuZCk7CisKKyAgICBlbmQtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwgbmV3VmFsdWUpOworCisgICAgcHJlcGFyZUZvckdlbmVyYXRpb24ocHJvYyk7CisKKyAgICBD
Q2FsbEhlbHBlcnMgaml0OworICAgIGdlbmVyYXRlKHByb2MsIGppdCk7CisgICAgTGlua0J1ZmZl
ciBsaW5rQnVmZmVyKGppdCwgbnVsbHB0cik7CisgICAgQ29kZUxvY2F0aW9uTGFiZWw8QjNDb21w
aWxhdGlvblB0clRhZz4gbGFiZWxPbmUgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8QjNDb21waWxh
dGlvblB0clRhZz4ocHJvYy5lbnRyeXBvaW50TGFiZWwoMCkpOworICAgIENvZGVMb2NhdGlvbkxh
YmVsPEIzQ29tcGlsYXRpb25QdHJUYWc+IGxhYmVsVHdvID0gbGlua0J1ZmZlci5sb2NhdGlvbk9m
PEIzQ29tcGlsYXRpb25QdHJUYWc+KHByb2MuZW50cnlwb2ludExhYmVsKDEpKTsKKworICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxCM0NvbXBpbGF0aW9uUHRyVGFnPiBjb2RlUmVmID0gRklOQUxJ
WkVfQ09ERShsaW5rQnVmZmVyLCBCM0NvbXBpbGF0aW9uUHRyVGFnLCAidGVzdGIzIGNvbXBpbGF0
aW9uIik7CisKKyAgICBDSEVDSyhpbnZva2U8aW50PihsYWJlbE9uZSwgMCkgPT0gMSk7CisgICAg
Q0hFQ0soaW52b2tlPGludD4obGFiZWxPbmUsIDQyKSA9PSA0Myk7CisgICAgQ0hFQ0soaW52b2tl
PGludD4obGFiZWxPbmUsIDEwMDApID09IDEwMDEpOworCisgICAgQ0hFQ0soaW52b2tlPGludD4o
bGFiZWxUd28sIDApID09IDEwMCk7CisgICAgQ0hFQ0soaW52b2tlPGludD4obGFiZWxUd28sIDQy
KSA9PSAxMDApOworICAgIENIRUNLKGludm9rZTxpbnQ+KGxhYmVsVHdvLCAxMDAwKSA9PSAxMDAx
KTsKK30KKwordm9pZCB0ZXN0U29tZUVhcmx5UmVnaXN0ZXIoKQoreworICAgIGF1dG8gcnVuID0g
WyZdIChib29sIHN1Y2NlZWQpIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgCisgICAg
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgCisgICAgICAgIFBh
dGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFs
dWU+KHByb2MsIEludDMyLCBPcmlnaW4oKSk7CisgICAgICAgIHBhdGNocG9pbnQtPnJlc3VsdENv
bnN0cmFpbnQgPSBWYWx1ZVJlcDo6cmVnKEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAg
ICAgYm9vbCByYW5GaXJzdFBhdGNocG9pbnQgPSBmYWxzZTsKKyAgICAgICAgcGF0Y2hwb2ludC0+
c2V0R2VuZXJhdG9yKAorICAgICAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmLCBjb25zdCBTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIENIRUNLKHBh
cmFtc1swXS5ncHIoKSA9PSBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisgICAgICAgICAgICAg
ICAgcmFuRmlyc3RQYXRjaHBvaW50ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0pOworICAgIAorICAg
ICAgICBWYWx1ZSogYXJnID0gcGF0Y2hwb2ludDsKKyAgICAKKyAgICAgICAgcGF0Y2hwb2ludCA9
IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIEludDMyLCBPcmlnaW4oKSk7
CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihhcmcpOworICAgICAgICBp
ZiAoc3VjY2VlZCkKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPnJlc3VsdENvbnN0cmFpbnQgPSBW
YWx1ZVJlcDo6U29tZUVhcmx5UmVnaXN0ZXI7CisgICAgICAgIGJvb2wgcmFuU2Vjb25kUGF0Y2hw
b2ludCA9IGZhbHNlOworICAgICAgICB1bnNpZ25lZCBvcHRMZXZlbCA9IHByb2Mub3B0TGV2ZWwo
KTsKKyAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAorICAgICAgICAgICAgWyZdIChD
Q2FsbEhlbHBlcnMmLCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewor
ICAgICAgICAgICAgICAgIGlmIChzdWNjZWVkKQorICAgICAgICAgICAgICAgICAgICBDSEVDSyhw
YXJhbXNbMF0uZ3ByKCkgIT0gcGFyYW1zWzFdLmdwcigpKTsKKyAgICAgICAgICAgICAgICBlbHNl
IGlmIChvcHRMZXZlbCA+IDEpCisgICAgICAgICAgICAgICAgICAgIENIRUNLKHBhcmFtc1swXS5n
cHIoKSA9PSBwYXJhbXNbMV0uZ3ByKCkpOworICAgICAgICAgICAgICAgIHJhblNlY29uZFBhdGNo
cG9pbnQgPSB0cnVlOworICAgICAgICAgICAgfSk7CisgICAgCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcGF0Y2hwb2ludCk7CisgICAgCisg
ICAgICAgIGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBDSEVDSyhyYW5GaXJzdFBhdGNocG9p
bnQpOworICAgICAgICBDSEVDSyhyYW5TZWNvbmRQYXRjaHBvaW50KTsKKyAgICB9OworCisgICAg
cnVuKHRydWUpOworICAgIHJ1bihmYWxzZSk7Cit9CisKK3ZvaWQgdGVzdEJyYW5jaEJpdEFuZElt
bUZ1c2lvbigKKyAgICBCMzo6T3Bjb2RlIHZhbHVlTW9kaWZpZXIsIFR5cGUgdmFsdWVUeXBlLCBp
bnQ2NF90IGNvbnN0YW50LAorICAgIEFpcjo6T3Bjb2RlIGV4cGVjdGVkT3Bjb2RlLCBBaXI6OkFy
Zzo6S2luZCBmaXJzdEtpbmQpCit7CisgICAgLy8gQ3VycmVudGx5IHRoaXMgdGVzdCBzaG91bGQg
cGFzcyBvbiBhbGwgQ1BVcy4gQnV0IHNvbWUgQ1BVcyBtYXkgbm90IHN1cHBvcnQgdGhpcyBmdXNl
ZAorICAgIC8vIGluc3RydWN0aW9uLiBJdCdzIE9LIHRvIHNraXAgdGhpcyB0ZXN0IG9uIHRob3Nl
IENQVXMuCisKKyAgICBQcm9jZWR1cmUgcHJvYzsKKworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogb25lID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIEJhc2ljQmxvY2sqIHR3byA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBsZWZ0
ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOworCisgICAgaWYgKHZhbHVlTW9kaWZpZXIgIT0gSWRlbnRpdHkp
IHsKKyAgICAgICAgaWYgKE1lbW9yeVZhbHVlOjphY2NlcHRzKHZhbHVlTW9kaWZpZXIpKQorICAg
ICAgICAgICAgbGVmdCA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgdmFsdWVN
b2RpZmllciwgdmFsdWVUeXBlLCBPcmlnaW4oKSwgbGVmdCk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGxlZnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIHZhbHVlTW9kaWZpZXIs
IHZhbHVlVHlwZSwgT3JpZ2luKCksIGxlZnQpOworICAgIH0KKworICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBs
ZWZ0LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCks
IHZhbHVlVHlwZSwgY29uc3RhbnQpKSk7CisgICAgcm9vdC0+c2V0U3VjY2Vzc29ycyhGcmVxdWVu
dGVkQmxvY2sob25lKSwgRnJlcXVlbnRlZEJsb2NrKHR3bykpOworCisgICAgb25lLT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIE9vcHMsIE9yaWdpbigpKTsKKyAgICB0d28tPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgT29wcywgT3JpZ2luKCkpOworCisgICAgbG93ZXJUb0FpckZvclRlc3RpbmcocHJv
Yyk7CisKKyAgICAvLyBUaGUgZmlyc3QgYmFzaWMgYmxvY2sgbXVzdCBlbmQgaW4gYSBCcmFuY2hU
ZXN0NjQocmVzQ29uZCwgdG1wLCBiaXRJbW0pLgorICAgIEFpcjo6SW5zdCB0ZXJtaW5hbCA9IHBy
b2MuY29kZSgpWzBdLT5sYXN0KCk7CisgICAgQ0hFQ0tfRVEodGVybWluYWwua2luZC5vcGNvZGUs
IGV4cGVjdGVkT3Bjb2RlKTsKKyAgICBDSEVDS19FUSh0ZXJtaW5hbC5hcmdzWzBdLmtpbmQoKSwg
QWlyOjpBcmc6OlJlc0NvbmQpOworICAgIENIRUNLX0VRKHRlcm1pbmFsLmFyZ3NbMV0ua2luZCgp
LCBmaXJzdEtpbmQpOworICAgIENIRUNLKHRlcm1pbmFsLmFyZ3NbMl0ua2luZCgpID09IEFpcjo6
QXJnOjpCaXRJbW0gfHwgdGVybWluYWwuYXJnc1syXS5raW5kKCkgPT0gQWlyOjpBcmc6OkJpdElt
bTY0KTsKK30KKwordm9pZCB0ZXN0VGVybWluYWxQYXRjaHBvaW50VGhhdE5lZWRzVG9CZVNwaWxs
ZWQoKQoreworICAgIC8vIFRoaXMgaXMgYSB1bml0IHRlc3QgZm9yIGhvdyBGVEwncyBoZWFwIGFs
bG9jYXRpb24gZmFzdCBwYXRocyBiZWhhdmUuCisgICAgUHJvY2VkdXJlIHByb2M7CisKKyAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIHN1Y2Nl
c3MgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogc2xvd1BhdGggPSBwcm9jLmFk
ZEJsb2NrKCk7CisKKyAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBl
bmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBJbnQzMiwgT3JpZ2luKCkpOworICAgIHBhdGNo
cG9pbnQtPmVmZmVjdHMudGVybWluYWwgPSB0cnVlOworICAgIHBhdGNocG9pbnQtPmNsb2JiZXIo
UmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKworICAgIHJvb3QtPmFwcGVu
ZFN1Y2Nlc3NvcihzdWNjZXNzKTsKKyAgICByb290LT5hcHBlbmRTdWNjZXNzb3IoRnJlcXVlbnRl
ZEJsb2NrKHNsb3dQYXRoLCBGcmVxdWVuY3lDbGFzczo6UmFyZSkpOworCisgICAgcGF0Y2hwb2lu
dC0+c2V0R2VuZXJhdG9yKAorICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBT
dGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNy
b1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgaml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoNDIpLCBwYXJhbXNbMF0uZ3ByKCkpOwor
ICAgICAgICAKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBqdW1wVG9TdWNjZXNzOwor
ICAgICAgICAgICAgaWYgKCFwYXJhbXMuZmFsbHNUaHJvdWdoVG9TdWNjZXNzb3IoMCkpCisgICAg
ICAgICAgICAgICAganVtcFRvU3VjY2VzcyA9IGppdC5qdW1wKCk7CisgICAgICAgIAorICAgICAg
ICAgICAgVmVjdG9yPEJveDxDQ2FsbEhlbHBlcnM6OkxhYmVsPj4gbGFiZWxzID0gcGFyYW1zLnN1
Y2Nlc3NvckxhYmVscygpOworICAgICAgICAKKyAgICAgICAgICAgIHBhcmFtcy5hZGRMYXRlUGF0
aCgKKyAgICAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChqdW1wVG9TdWNjZXNzLmlzU2V0KCkpCisgICAgICAgICAgICAgICAgICAg
ICAgICBqdW1wVG9TdWNjZXNzLmxpbmtUbygqbGFiZWxzWzBdLCAmaml0KTsKKyAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICBWZWN0b3I8VmFsdWUqPiBhcmdzOworICAgIHsK
KyAgICAgICAgUmVnaXN0ZXJTZXQgZmlsbEFsbEdQUnNTZXQgPSBwcm9jLm11dGFibGVHUFJzKCk7
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmaWxsQWxsR1BSc1NldC5udW1iZXJP
ZlNldFJlZ2lzdGVycygpOyBpKyspCisgICAgICAgICAgICBhcmdzLmFwcGVuZChzdWNjZXNzLT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgaSkpOworICAgIH0KKworICAg
IHsKKyAgICAgICAgLy8gTm93IGZvcmNlIGFsbCB2YWx1ZXMgaW50byBldmVyeSBhdmFpbGFibGUg
cmVnaXN0ZXIuCisgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcCA9IHN1Y2Nlc3MtPmFwcGVuZE5l
dzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKKyAgICAgICAgZm9yIChW
YWx1ZSogdiA6IGFyZ3MpCisgICAgICAgICAgICBwLT5hcHBlbmQodiwgVmFsdWVSZXA6OlNvbWVS
ZWdpc3Rlcik7CisgICAgICAgIHAtPnNldEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVycyYsIGNv
bnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsgfSk7CisgICAgfQorCisgICAgeworICAg
ICAgICAvLyBOb3cgcmVxdWlyZSB0aGUgb3JpZ2luYWwgcGF0Y2hwb2ludCB0byBiZSBtYXRlcmlh
bGl6ZWQgaW50byBhIHJlZ2lzdGVyLgorICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHAgPSBzdWNj
ZXNzLT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7Cisg
ICAgICAgIHAtPmFwcGVuZChwYXRjaHBvaW50LCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKTsKKyAg
ICAgICAgcC0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3RhY2ttYXBH
ZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKKyAgICB9CisKKyAgICBzdWNjZXNzLT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHN1Y2Nlc3MtPmFwcGVuZE5ldzxDb25zdDMy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCAxMCkpOworCisgICAgc2xvd1BhdGgtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgc2xvd1BhdGgtPmFwcGVuZE5ldzxDb25zdDMy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCAyMCkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVBy
b2MocHJvYyk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKmNvZGUpLCAxMCk7Cit9CisKK3Zv
aWQgdGVzdFRlcm1pbmFsUGF0Y2hwb2ludFRoYXROZWVkc1RvQmVTcGlsbGVkMigpCit7CisgICAg
Ly8gVGhpcyBpcyBhIHVuaXQgdGVzdCBmb3IgaG93IEZUTCdzIGhlYXAgYWxsb2NhdGlvbiBmYXN0
IHBhdGhzIGJlaGF2ZS4KKyAgICBQcm9jZWR1cmUgcHJvYzsKKworICAgIC8vIEZJWE1FOiBBaXIg
TzAvTzEgYWxsb2NhdG9yIGNhbid0IGhhbmRsZSBzdWNoIHByb2dyYW1zLiBXZSByZWx5IG9uIFdh
c21BaXJJUkdlbmVyYXRvcgorICAgIC8vIHRvIG5vdCB1c2UgYW55IHN1Y2ggY29uc3RydWN0cyB3
aGVyZSB0aGUgcmVnaXN0ZXIgYWxsb2NhdG9yIGlzIGNvcm5lcmVkIGluIHN1Y2gKKyAgICAvLyBh
IHdheS4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0
NjMzCisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDIpCisgICAgICAgIHJldHVybjsKKworICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogb25l
ID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIHN1Y2Nlc3MgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgQmFzaWNCbG9jayogc2xvd1BhdGggPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAg
ICBWYWx1ZSogYXJnID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgVHJ1
bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworCisgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwgYXJnKTsKKyAg
ICByb290LT5hcHBlbmRTdWNjZXNzb3Iob25lKTsKKyAgICByb290LT5hcHBlbmRTdWNjZXNzb3Io
RnJlcXVlbnRlZEJsb2NrKHNsb3dQYXRoLCBGcmVxdWVuY3lDbGFzczo6UmFyZSkpOworCisgICAg
UGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gb25lLT5hcHBlbmROZXc8UGF0Y2hwb2ludFZh
bHVlPihwcm9jLCBJbnQzMiwgT3JpZ2luKCkpOworICAgIHBhdGNocG9pbnQtPmVmZmVjdHMudGVy
bWluYWwgPSB0cnVlOworICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3Jv
U2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICBwYXRjaHBvaW50LT5hcHBlbmQoYXJnLCBWYWx1ZVJl
cDo6U29tZVJlZ2lzdGVyKTsKKworICAgIG9uZS0+YXBwZW5kU3VjY2Vzc29yKHN1Y2Nlc3MpOwor
ICAgIG9uZS0+YXBwZW5kU3VjY2Vzc29yKEZyZXF1ZW50ZWRCbG9jayhzbG93UGF0aCwgRnJlcXVl
bmN5Q2xhc3M6OlJhcmUpKTsKKworICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKKyAgICAg
ICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1z
JiBwYXJhbXMpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBh
bGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKDY2NiksIHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgICAgICBhdXRvIGdvVG9G
YXN0UGF0aCA9IGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkVxdWFsLCBwYXJhbXNbMV0uZ3By
KCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDQyKSk7CisgICAgICAgICAgICBhdXRvIGp1
bXBUb1Nsb3cgPSBqaXQuanVtcCgpOworICAgICAgICAKKyAgICAgICAgICAgIC8vIE1ha2Ugc3Vy
ZSB0aGUgYXNzZXJ0cyBoZXJlIHBhc3MuCisgICAgICAgICAgICBwYXJhbXMuZmFsbHNUaHJvdWdo
VG9TdWNjZXNzb3IoMCk7CisgICAgICAgICAgICBwYXJhbXMuZmFsbHNUaHJvdWdoVG9TdWNjZXNz
b3IoMSk7CisKKyAgICAgICAgICAgIFZlY3RvcjxCb3g8Q0NhbGxIZWxwZXJzOjpMYWJlbD4+IGxh
YmVscyA9IHBhcmFtcy5zdWNjZXNzb3JMYWJlbHMoKTsKKyAgICAgICAgCisgICAgICAgICAgICBw
YXJhbXMuYWRkTGF0ZVBhdGgoCisgICAgICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGpp
dCkgeworICAgICAgICAgICAgICAgICAgICBnb1RvRmFzdFBhdGgubGlua1RvKCpsYWJlbHNbMF0s
ICZqaXQpOworICAgICAgICAgICAgICAgICAgICBqdW1wVG9TbG93LmxpbmtUbygqbGFiZWxzWzFd
LCAmaml0KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICBWZWN0b3I8
VmFsdWUqPiBhcmdzOworICAgIHsKKyAgICAgICAgUmVnaXN0ZXJTZXQgZmlsbEFsbEdQUnNTZXQg
PSBwcm9jLm11dGFibGVHUFJzKCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBm
aWxsQWxsR1BSc1NldC5udW1iZXJPZlNldFJlZ2lzdGVycygpOyBpKyspCisgICAgICAgICAgICBh
cmdzLmFwcGVuZChzdWNjZXNzLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgaSkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgLy8gTm93IGZvcmNlIGFsbCB2YWx1ZXMg
aW50byBldmVyeSBhdmFpbGFibGUgcmVnaXN0ZXIuCisgICAgICAgIFBhdGNocG9pbnRWYWx1ZSog
cCA9IHN1Y2Nlc3MtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdp
bigpKTsKKyAgICAgICAgZm9yIChWYWx1ZSogdiA6IGFyZ3MpCisgICAgICAgICAgICBwLT5hcHBl
bmQodiwgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7CisgICAgICAgIHAtPnNldEdlbmVyYXRvcihb
Jl0gKENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsgfSk7
CisgICAgfQorCisgICAgeworICAgICAgICAvLyBOb3cgcmVxdWlyZSB0aGUgb3JpZ2luYWwgcGF0
Y2hwb2ludCB0byBiZSBtYXRlcmlhbGl6ZWQgaW50byBhIHJlZ2lzdGVyLgorICAgICAgICBQYXRj
aHBvaW50VmFsdWUqIHAgPSBzdWNjZXNzLT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9j
LCBWb2lkLCBPcmlnaW4oKSk7CisgICAgICAgIHAtPmFwcGVuZChwYXRjaHBvaW50LCBWYWx1ZVJl
cDo6U29tZVJlZ2lzdGVyKTsKKyAgICAgICAgcC0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxw
ZXJzJiwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKKyAgICB9CisKKyAg
ICBzdWNjZXNzLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHBhdGNo
cG9pbnQpOworCisgICAgc2xvd1BhdGgtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgYXJnKTsKKworICAgIGF1dG8gb3JpZ2luYWwxID0gT3B0aW9uczo6bWF4QjNUYWls
RHVwQmxvY2tTaXplKCk7CisgICAgYXV0byBvcmlnaW5hbDIgPSBPcHRpb25zOjptYXhCM1RhaWxE
dXBCbG9ja1N1Y2Nlc3NvcnMoKTsKKworICAgIC8vIFRhaWwgZHVwbGljYXRpb24gd2lsbCBicmVh
ayB0aGUgY3JpdGljYWwgZWRnZSB3ZSdyZSB0cnlpbmcgdG8gdGVzdCBiZWNhdXNlIGl0CisgICAg
Ly8gd2lsbCBjbG9uZSB0aGUgc2xvd1BhdGggYmxvY2sgZm9yIGJvdGggZWRnZXMgdG8gaXQhCisg
ICAgT3B0aW9uczo6bWF4QjNUYWlsRHVwQmxvY2tTaXplKCkgPSAwOworICAgIE9wdGlvbnM6Om1h
eEIzVGFpbER1cEJsb2NrU3VjY2Vzc29ycygpID0gMDsKKworICAgIGF1dG8gY29kZSA9IGNvbXBp
bGVQcm9jKHByb2MpOworICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpjb2RlLCAxKSwgMSk7Cisg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKmNvZGUsIDApLCAwKTsKKyAgICBDSEVDS19FUShpbnZv
a2U8aW50PigqY29kZSwgNDIpLCA2NjYpOworCisgICAgT3B0aW9uczo6bWF4QjNUYWlsRHVwQmxv
Y2tTaXplKCkgPSBvcmlnaW5hbDE7CisgICAgT3B0aW9uczo6bWF4QjNUYWlsRHVwQmxvY2tTdWNj
ZXNzb3JzKCkgPSBvcmlnaW5hbDI7Cit9CisKK3ZvaWQgdGVzdFBhdGNocG9pbnRUZXJtaW5hbFJl
dHVyblZhbHVlKGJvb2wgc3VjY2Vzc0lzUmFyZSkKK3sKKyAgICAvLyBUaGlzIGlzIGEgdW5pdCB0
ZXN0IGZvciBob3cgRlRMJ3MgaGVhcCBhbGxvY2F0aW9uIGZhc3QgcGF0aHMgYmVoYXZlLgorICAg
IFByb2NlZHVyZSBwcm9jOworCisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICBCYXNpY0Jsb2NrKiBzdWNjZXNzID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2lj
QmxvY2sqIHNsb3dQYXRoID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIGNvbnRp
bnVhdGlvbiA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBhcmcgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKSk7CisKKyAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290
LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBJbnQzMiwgT3JpZ2luKCkpOworICAg
IHBhdGNocG9pbnQtPmVmZmVjdHMudGVybWluYWwgPSB0cnVlOworICAgIHBhdGNocG9pbnQtPmNs
b2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKworICAgIGlmIChz
dWNjZXNzSXNSYXJlKSB7CisgICAgICAgIHJvb3QtPmFwcGVuZFN1Y2Nlc3NvcihGcmVxdWVudGVk
QmxvY2soc3VjY2VzcywgRnJlcXVlbmN5Q2xhc3M6OlJhcmUpKTsKKyAgICAgICAgcm9vdC0+YXBw
ZW5kU3VjY2Vzc29yKHNsb3dQYXRoKTsKKyAgICB9IGVsc2UgeworICAgICAgICByb290LT5hcHBl
bmRTdWNjZXNzb3Ioc3VjY2Vzcyk7CisgICAgICAgIHJvb3QtPmFwcGVuZFN1Y2Nlc3NvcihGcmVx
dWVudGVkQmxvY2soc2xvd1BhdGgsIEZyZXF1ZW5jeUNsYXNzOjpSYXJlKSk7CisgICAgfQorCisg
ICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGFyZyk7CisKKyAgICBwYXRjaHBvaW50
LT5zZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0
YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBBbGxvd01hY3Jv
U2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAgICAgIAorICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGp1bXBUb1Nsb3cgPQorICAgICAgICAgICAgICAgIGpp
dC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkFib3ZlLCBwYXJhbXNbMV0uZ3ByKCksIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKDQyKSk7CisgICAgICAgIAorICAgICAgICAgICAgaml0LmFkZDMy
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDMxKSwgcGFyYW1zWzFdLmdwcigpLCBwYXJhbXNb
MF0uZ3ByKCkpOworICAgICAgICAKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBqdW1w
VG9TdWNjZXNzOworICAgICAgICAgICAgaWYgKCFwYXJhbXMuZmFsbHNUaHJvdWdoVG9TdWNjZXNz
b3IoMCkpCisgICAgICAgICAgICAgICAganVtcFRvU3VjY2VzcyA9IGppdC5qdW1wKCk7CisgICAg
ICAgIAorICAgICAgICAgICAgVmVjdG9yPEJveDxDQ2FsbEhlbHBlcnM6OkxhYmVsPj4gbGFiZWxz
ID0gcGFyYW1zLnN1Y2Nlc3NvckxhYmVscygpOworICAgICAgICAKKyAgICAgICAgICAgIHBhcmFt
cy5hZGRMYXRlUGF0aCgKKyAgICAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0KSB7
CisgICAgICAgICAgICAgICAgICAgIGp1bXBUb1Nsb3cubGlua1RvKCpsYWJlbHNbMV0sICZqaXQp
OworICAgICAgICAgICAgICAgICAgICBpZiAoanVtcFRvU3VjY2Vzcy5pc1NldCgpKQorICAgICAg
ICAgICAgICAgICAgICAgICAganVtcFRvU3VjY2Vzcy5saW5rVG8oKmxhYmVsc1swXSwgJmppdCk7
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgVXBzaWxvblZhbHVlKiBz
dWNjZXNzVXBzaWxvbiA9IHN1Y2Nlc3MtPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBwYXRjaHBvaW50KTsKKyAgICBzdWNjZXNzLT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEp1bXAsIE9yaWdpbigpKTsKKyAgICBzdWNjZXNzLT5zZXRTdWNjZXNzb3JzKGNvbnRpbnVhdGlv
bik7CisKKyAgICBVcHNpbG9uVmFsdWUqIHNsb3dQYXRoVXBzaWxvbiA9IHNsb3dQYXRoLT5hcHBl
bmROZXc8VXBzaWxvblZhbHVlPigKKyAgICAgICAgcHJvYywgT3JpZ2luKCksIHNsb3dQYXRoLT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNjY2KSk7CisgICAgc2xvd1Bh
dGgtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSnVtcCwgT3JpZ2luKCkpOworICAgIHNsb3dQYXRo
LT5zZXRTdWNjZXNzb3JzKGNvbnRpbnVhdGlvbik7CisKKyAgICBWYWx1ZSogcGhpID0gY29udGlu
dWF0aW9uLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFBoaSwgSW50MzIsIE9yaWdpbigpKTsKKyAg
ICBzdWNjZXNzVXBzaWxvbi0+c2V0UGhpKHBoaSk7CisgICAgc2xvd1BhdGhVcHNpbG9uLT5zZXRQ
aGkocGhpKTsKKyAgICBjb250aW51YXRpb24tPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwgcGhpKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwor
ICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpjb2RlLCAwKSwgMzEpOworICAgIENIRUNLX0VRKGlu
dm9rZTxpbnQ+KCpjb2RlLCAxKSwgMzIpOworICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpjb2Rl
LCA0MSksIDcyKTsKKyAgICBDSEVDS19FUShpbnZva2U8aW50PigqY29kZSwgNDIpLCA3Myk7Cisg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKmNvZGUsIDQzKSwgNjY2KTsKKyAgICBDSEVDS19FUShp
bnZva2U8aW50PigqY29kZSwgLTEpLCA2NjYpOworfQorCit2b2lkIHRlc3RNZW1vcnlGZW5jZSgp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOworCisgICAgcm9vdC0+YXBwZW5kTmV3PEZlbmNlVmFsdWU+KHByb2MsIE9yaWdp
bigpKTsKKyAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCks
IHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCBJbnQzMiwgNDIpKTsKKwor
ICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIENIRUNLX0VRKGludm9rZTxp
bnQ+KCpjb2RlKSwgNDIpOworICAgIGlmIChpc1g4NigpKQorICAgICAgICBjaGVja1VzZXNJbnN0
cnVjdGlvbigqY29kZSwgImxvY2sgb3IgJDB4MCwgKCVyc3ApIik7CisgICAgaWYgKGlzQVJNNjQo
KSkKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJkbWIgICAgIGlzaCIpOwor
ICAgIGNoZWNrRG9lc05vdFVzZUluc3RydWN0aW9uKCpjb2RlLCAibWZlbmNlIik7CisgICAgY2hl
Y2tEb2VzTm90VXNlSW5zdHJ1Y3Rpb24oKmNvZGUsICJkbWIgICAgIGlzaHN0Iik7Cit9CisKK3Zv
aWQgdGVzdFN0b3JlRmVuY2UoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworCisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIHJvb3QtPmFwcGVuZE5ldzxGZW5j
ZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgSGVhcFJhbmdlOjp0b3AoKSwgSGVhcFJhbmdlKCkpOwor
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+
YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIEludDMyLCA0MikpOworCisgICAgYXV0
byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKmNv
ZGUpLCA0Mik7CisgICAgY2hlY2tEb2VzTm90VXNlSW5zdHJ1Y3Rpb24oKmNvZGUsICJsb2NrIik7
CisgICAgY2hlY2tEb2VzTm90VXNlSW5zdHJ1Y3Rpb24oKmNvZGUsICJtZmVuY2UiKTsKKyAgICBp
ZiAoaXNBUk02NCgpKQorICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImRtYiAg
ICAgaXNoc3QiKTsKK30KKwordm9pZCB0ZXN0TG9hZEZlbmNlKCkKK3sKKyAgICBQcm9jZWR1cmUg
cHJvYzsKKworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBy
b290LT5hcHBlbmROZXc8RmVuY2VWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEhlYXBSYW5nZSgpLCBI
ZWFwUmFuZ2U6OnRvcCgpKTsKKyAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVy
biwgT3JpZ2luKCksIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCBJbnQz
MiwgNDIpKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIENIRUNL
X0VRKGludm9rZTxpbnQ+KCpjb2RlKSwgNDIpOworICAgIGNoZWNrRG9lc05vdFVzZUluc3RydWN0
aW9uKCpjb2RlLCAibG9jayIpOworICAgIGNoZWNrRG9lc05vdFVzZUluc3RydWN0aW9uKCpjb2Rl
LCAibWZlbmNlIik7CisgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1
Y3Rpb24oKmNvZGUsICJkbWIgICAgIGlzaCIpOworICAgIGNoZWNrRG9lc05vdFVzZUluc3RydWN0
aW9uKCpjb2RlLCAiZG1iICAgICBpc2hzdCIpOworfQorCit2b2lkIHRlc3RUcmFwcGluZ0xvYWQo
KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgaW50IHggPSA0MjsKKyAgICBNZW1vcnlWYWx1ZSogdmFsdWUgPSByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICBwcm9jLCB0cmFwcGluZyhMb2FkKSwg
SW50MzIsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksICZ4KSk7CisgICAgRWZmZWN0cyBleHBlY3RlZEVmZmVjdHM7CisgICAg
ZXhwZWN0ZWRFZmZlY3RzLmV4aXRzU2lkZXdheXMgPSB0cnVlOworICAgIGV4cGVjdGVkRWZmZWN0
cy5jb250cm9sRGVwZW5kZW50PSB0cnVlOworICAgIGV4cGVjdGVkRWZmZWN0cy5yZWFkcyA9IEhl
YXBSYW5nZTo6dG9wKCk7CisgICAgQ0hFQ0tfRVEodmFsdWUtPnJhbmdlKCksIEhlYXBSYW5nZTo6
dG9wKCkpOworICAgIENIRUNLX0VRKHZhbHVlLT5lZmZlY3RzKCksIGV4cGVjdGVkRWZmZWN0cyk7
CisgICAgdmFsdWUtPnNldFJhbmdlKEhlYXBSYW5nZSgwKSk7CisgICAgQ0hFQ0tfRVEodmFsdWUt
PnJhbmdlKCksIEhlYXBSYW5nZSgwKSk7CisgICAgQ0hFQ0tfRVEodmFsdWUtPmVmZmVjdHMoKSwg
ZXhwZWN0ZWRFZmZlY3RzKTsgLy8gV2Ugc3RpbGwgcmVhZHMgdG9wIQorICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgdmFsdWUpOworICAgIENIRUNLX0VR
KGNvbXBpbGVBbmRSdW48aW50Pihwcm9jKSwgNDIpOworICAgIHVuc2lnbmVkIHRyYXBzQ291bnQg
PSAwOworICAgIGZvciAoQWlyOjpCYXNpY0Jsb2NrKiBibG9jayA6IHByb2MuY29kZSgpKSB7Cisg
ICAgICAgIGZvciAoQWlyOjpJbnN0JiBpbnN0IDogKmJsb2NrKSB7CisgICAgICAgICAgICBpZiAo
aW5zdC5raW5kLmVmZmVjdHMpCisgICAgICAgICAgICAgICAgdHJhcHNDb3VudCsrOworICAgICAg
ICB9CisgICAgfQorICAgIENIRUNLX0VRKHRyYXBzQ291bnQsIDF1KTsKK30KKwordm9pZCB0ZXN0
VHJhcHBpbmdTdG9yZSgpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBpbnQgeCA9IDQyOworICAgIE1lbW9yeVZhbHVl
KiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIHRy
YXBwaW5nKFN0b3JlKSwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCAxMTEpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29u
c3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZ4KSwgMCk7CisgICAgRWZmZWN0cyBleHBlY3Rl
ZEVmZmVjdHM7CisgICAgZXhwZWN0ZWRFZmZlY3RzLmV4aXRzU2lkZXdheXMgPSB0cnVlOworICAg
IGV4cGVjdGVkRWZmZWN0cy5jb250cm9sRGVwZW5kZW50PSB0cnVlOworICAgIGV4cGVjdGVkRWZm
ZWN0cy5yZWFkcyA9IEhlYXBSYW5nZTo6dG9wKCk7CisgICAgZXhwZWN0ZWRFZmZlY3RzLndyaXRl
cyA9IEhlYXBSYW5nZTo6dG9wKCk7CisgICAgQ0hFQ0tfRVEodmFsdWUtPnJhbmdlKCksIEhlYXBS
YW5nZTo6dG9wKCkpOworICAgIENIRUNLX0VRKHZhbHVlLT5lZmZlY3RzKCksIGV4cGVjdGVkRWZm
ZWN0cyk7CisgICAgdmFsdWUtPnNldFJhbmdlKEhlYXBSYW5nZSgwKSk7CisgICAgQ0hFQ0tfRVEo
dmFsdWUtPnJhbmdlKCksIEhlYXBSYW5nZSgwKSk7CisgICAgZXhwZWN0ZWRFZmZlY3RzLndyaXRl
cyA9IEhlYXBSYW5nZSgwKTsKKyAgICBDSEVDS19FUSh2YWx1ZS0+ZWZmZWN0cygpLCBleHBlY3Rl
ZEVmZmVjdHMpOyAvLyBXZSBzdGlsbCByZWFkcyB0b3AhCisgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICBjb21waWxlQW5kUnVuPGludD4ocHJv
Yyk7CisgICAgQ0hFQ0tfRVEoeCwgMTExKTsKKyAgICB1bnNpZ25lZCB0cmFwc0NvdW50ID0gMDsK
KyAgICBmb3IgKEFpcjo6QmFzaWNCbG9jayogYmxvY2sgOiBwcm9jLmNvZGUoKSkgeworICAgICAg
ICBmb3IgKEFpcjo6SW5zdCYgaW5zdCA6ICpibG9jaykgeworICAgICAgICAgICAgaWYgKGluc3Qu
a2luZC5lZmZlY3RzKQorICAgICAgICAgICAgICAgIHRyYXBzQ291bnQrKzsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBDSEVDS19FUSh0cmFwc0NvdW50LCAxdSk7Cit9CisKK3ZvaWQgdGVzdFRyYXBw
aW5nTG9hZEFkZFN0b3JlKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIGludCB4ID0gNDI7CisgICAgQ29uc3RQdHJW
YWx1ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCAmeCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywg
dHJhcHBpbmcoU3RvcmUpLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIHRyYXBwaW5nKExvYWQpLCBJbnQzMiwgT3JpZ2lu
KCksIHB0ciksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgMykpLAorICAgICAgICBwdHIsIDApOworICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAgY29tcGlsZUFuZFJ1bjxpbnQ+KHBy
b2MpOworICAgIENIRUNLX0VRKHgsIDQ1KTsKKyAgICBib29sIHRyYXBzID0gZmFsc2U7CisgICAg
Zm9yIChBaXI6OkJhc2ljQmxvY2sqIGJsb2NrIDogcHJvYy5jb2RlKCkpIHsKKyAgICAgICAgZm9y
IChBaXI6Okluc3QmIGluc3QgOiAqYmxvY2spIHsKKyAgICAgICAgICAgIGlmIChpbnN0LmtpbmQu
ZWZmZWN0cykKKyAgICAgICAgICAgICAgICB0cmFwcyA9IHRydWU7CisgICAgICAgIH0KKyAgICB9
CisgICAgQ0hFQ0sodHJhcHMpOworfQorCit2b2lkIHRlc3RUcmFwcGluZ0xvYWREQ0UoKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgaW50IHggPSA0MjsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAor
ICAgICAgICBwcm9jLCB0cmFwcGluZyhMb2FkKSwgSW50MzIsIE9yaWdpbigpLAorICAgICAgICBy
b290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZ4KSk7CisgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICBjb21w
aWxlQW5kUnVuPGludD4ocHJvYyk7CisgICAgdW5zaWduZWQgdHJhcHNDb3VudCA9IDA7CisgICAg
Zm9yIChBaXI6OkJhc2ljQmxvY2sqIGJsb2NrIDogcHJvYy5jb2RlKCkpIHsKKyAgICAgICAgZm9y
IChBaXI6Okluc3QmIGluc3QgOiAqYmxvY2spIHsKKyAgICAgICAgICAgIGlmIChpbnN0LmtpbmQu
ZWZmZWN0cykKKyAgICAgICAgICAgICAgICB0cmFwc0NvdW50Kys7CisgICAgICAgIH0KKyAgICB9
CisgICAgQ0hFQ0tfRVEodHJhcHNDb3VudCwgMXUpOworfQorCit2b2lkIHRlc3RUcmFwcGluZ1N0
b3JlRWxpbWluYXRpb24oKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgaW50IHggPSA0MjsKKyAgICBWYWx1ZSogcHRy
ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmeCk7Cisg
ICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywgdHJhcHBpbmco
U3RvcmUpLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIDQzKSwKKyAgICAgICAgcHRyKTsKKyAgICByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KAorICAgICAgICBwcm9jLCB0cmFwcGluZyhTdG9yZSksIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDQp
LAorICAgICAgICBwdHIpOworICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJu
LCBPcmlnaW4oKSk7CisgICAgY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpOworICAgIHVuc2lnbmVk
IHN0b3JlQ291bnQgPSAwOworICAgIGZvciAoVmFsdWUqIHZhbHVlIDogcHJvYy52YWx1ZXMoKSkg
eworICAgICAgICBpZiAoaXNTdG9yZSh2YWx1ZS0+b3Bjb2RlKCkpKQorICAgICAgICAgICAgc3Rv
cmVDb3VudCsrOworICAgIH0KKyAgICBDSEVDS19FUShzdG9yZUNvdW50LCAydSk7Cit9CisKK3Zv
aWQgdGVzdE1vdmVDb25zdGFudHMoKQoreworICAgIGF1dG8gY2hlY2sgPSBbXSAoUHJvY2VkdXJl
JiBwcm9jKSB7CisgICAgICAgIHByb2MucmVzZXRSZWFjaGFiaWxpdHkoKTsKKyAgICAKKyAgICAg
ICAgaWYgKHNob3VsZEJlVmVyYm9zZSgpKSB7CisgICAgICAgICAgICBkYXRhTG9nKCJJUiBiZWZv
cmU6XG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2cocHJvYyk7CisgICAgICAgIH0KKyAgICAKKyAg
ICAgICAgbW92ZUNvbnN0YW50cyhwcm9jKTsKKyAgICAKKyAgICAgICAgaWYgKHNob3VsZEJlVmVy
Ym9zZSgpKSB7CisgICAgICAgICAgICBkYXRhTG9nKCJJUiBhZnRlcjpcbiIpOworICAgICAgICAg
ICAgZGF0YUxvZyhwcm9jKTsKKyAgICAgICAgfQorICAgIAorICAgICAgICBVc2VDb3VudHMgdXNl
Q291bnRzKHByb2MpOworICAgICAgICB1bnNpZ25lZCBjb3VudCA9IDA7CisgICAgICAgIGZvciAo
VmFsdWUqIHZhbHVlIDogcHJvYy52YWx1ZXMoKSkgeworICAgICAgICAgICAgaWYgKHVzZUNvdW50
cy5udW1Vc2VzKHZhbHVlKSAmJiB2YWx1ZS0+aGFzSW50NjQoKSkKKyAgICAgICAgICAgICAgICBj
b3VudCsrOworICAgICAgICB9CisgICAgCisgICAgICAgIGlmIChjb3VudCA9PSAxKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgIAorICAgICAgICBjcmFzaExvY2subG9jaygpOworICAgICAgICBk
YXRhTG9nKCJGYWlsIGluIHRlc3RNb3ZlQ29uc3RhbnRzOiBnb3QgbW9yZSB0aGFuIG9uZSBDb25z
dDY0OlxuIik7CisgICAgICAgIGRhdGFMb2cocHJvYyk7CisgICAgICAgIENSQVNIKCk7CisgICAg
fTsKKworICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIFZhbHVlKiBhID0gcm9vdC0+YXBwZW5k
TmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIExvYWQsIHBvaW50ZXJUeXBlKCks
IE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgMHgxMjM0MTIzNDEyMzQpKTsKKyAgICAgICAgVmFsdWUqIGIgPSByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTG9hZCwgcG9pbnRl
clR5cGUoKSwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIDB4MTIzNDEyMzQxMzM0KSk7CisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxDQ2FsbFZhbHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSwgYSwgYik7CisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAgICAg
IGNoZWNrKHByb2MpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIFZhbHVl
KiB4ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSogYSA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLCB4LCByb290LT5hcHBl
bmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDB4MTIzNDEyMzQxMjM0KSk7Cisg
ICAgICAgIFZhbHVlKiBiID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIEFkZCwgT3JpZ2luKCksIHgsIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgLTB4MTIzNDEyMzQxMjM0KSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxD
Q2FsbFZhbHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSwgYSwgYik7CisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAgICAgIGNoZWNrKHBy
b2MpOworICAgIH0KK30KKwordm9pZCB0ZXN0UENPcmlnaW5NYXBEb2VzbnRJbnNlcnROb3BzKCkK
K3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworCisgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCB3YXRjaHBvaW50TGFiZWw7CisKKyAg
ICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2lu
dFZhbHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7CisgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJh
dG9yKAorICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMmKSB7CisgICAgICAgICAgICB3YXRjaHBvaW50TGFiZWwgPSBqaXQud2F0Y2hw
b2ludExhYmVsKCk7CisgICAgICAgIH0pOworCisgICAgcGF0Y2hwb2ludCA9IHJvb3QtPmFwcGVu
ZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKKyAgICBwYXRjaHBv
aW50LT5zZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0
IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6
TGFiZWwgbGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzID0gaml0LmxhYmVsSWdub3JpbmdXYXRjaHBv
aW50cygpOworCisgICAgICAgICAgICBDSEVDSyh3YXRjaHBvaW50TGFiZWwgPT0gbGFiZWxJZ25v
cmluZ1dhdGNocG9pbnRzKTsKKyAgICAgICAgfSk7CisKKyAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworCisgICAgY29tcGlsZVByb2MocHJvYyk7Cit9
CisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL3Rlc3RiM183LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNf
Ny5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uN2RlY2UwZDY5NTNlYTgzZGZlOWY3MWVlNWI3YzY0NDJmN2FmYWY3
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfNy5j
cHAKQEAgLTAsMCArMSwxNTUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAidGVzdGIzLmgi
CisKKyNpZiBFTkFCTEUoQjNfSklUKQorCit2b2lkIHRlc3RQaW5SZWdpc3RlcnMoKQoreworICAg
IGF1dG8gZ28gPSBbJl0gKGJvb2wgcGluKSB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAg
ICAgICBSZWdpc3RlclNldCBjc3JzOworICAgICAgICBjc3JzLm1lcmdlKFJlZ2lzdGVyU2V0Ojpj
YWxsZWVTYXZlUmVnaXN0ZXJzKCkpOworICAgICAgICBjc3JzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6
OnN0YWNrUmVnaXN0ZXJzKCkpOworICAgICAgICBpZiAocGluKSB7CisgICAgICAgICAgICBjc3Jz
LmZvckVhY2goCisgICAgICAgICAgICAgICAgWyZdIChSZWcgcmVnKSB7CisgICAgICAgICAgICAg
ICAgICAgIHByb2MucGluUmVnaXN0ZXIocmVnKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfQorICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAg
ICBWYWx1ZSogYSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIGIgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSk7CisgICAgICAgIFZhbHVlKiBjID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgICAgICBW
YWx1ZSogZCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6cmVnQ1MwKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+
KAorICAgICAgICAgICAgcHJvYywgVm9pZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHN0YXRpY19jYXN0PGludHB0
cl90PigweDEyMzQpKSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIFZvaWQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4o
MHgxMjM1KSksCisgICAgICAgICAgICBhLCBiLCBjKTsKKyAgICAgICAgUGF0Y2hwb2ludFZhbHVl
KiBwYXRjaHBvaW50ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgVm9p
ZCwgT3JpZ2luKCkpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoZCk7
CisgICAgICAgIHVuc2lnbmVkIG9wdExldmVsID0gcHJvYy5vcHRMZXZlbCgpOworICAgICAgICBw
YXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCisgICAgICAgICAgICBbJl0gKENDYWxsSGVscGVycyYs
IGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAg
ICAgaWYgKG9wdExldmVsID4gMSkKKyAgICAgICAgICAgICAgICAgICAgQ0hFQ0tfRVEocGFyYW1z
WzBdLmdwcigpLCBHUFJJbmZvOjpyZWdDUzApOworICAgICAgICAgICAgfSk7CisgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAgICAgIGF1
dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBib29sIHVzZXNDU1JzID0gZmFs
c2U7CisgICAgICAgIGZvciAoQWlyOjpCYXNpY0Jsb2NrKiBibG9jayA6IHByb2MuY29kZSgpKSB7
CisgICAgICAgICAgICBmb3IgKEFpcjo6SW5zdCYgaW5zdCA6ICpibG9jaykgeworICAgICAgICAg
ICAgICAgIGlmIChpbnN0LmtpbmQub3Bjb2RlID09IEFpcjo6UGF0Y2ggJiYgaW5zdC5vcmlnaW4g
PT0gcGF0Y2hwb2ludCkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICAgICAgaW5zdC5mb3JFYWNoVG1wRmFzdCgKKyAgICAgICAgICAgICAgICAgICAgWyZdIChBaXI6
OlRtcCB0bXApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAuaXNSZWcoKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VzQ1NScyB8PSBjc3JzLmdldCh0bXAucmVnKCkp
OworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBpZiAocHJvYy5vcHRMZXZlbCgpIDwgMikgeworICAgICAgICAgICAgLy8gT3VyIGxlc3Mg
Z29vZCByZWdpc3RlciBhbGxvY2F0b3JzIG1heSB1c2UgdGhlCisgICAgICAgICAgICAvLyBwaW5u
ZWQgQ1NScyBpbiBhIG1vdmUuCisgICAgICAgICAgICB1c2VzQ1NScyA9IGZhbHNlOworICAgICAg
ICB9CisgICAgICAgIGZvciAoY29uc3QgUmVnaXN0ZXJBdE9mZnNldCYgcmVnQXRPZmZzZXQgOiBw
cm9jLmNhbGxlZVNhdmVSZWdpc3RlckF0T2Zmc2V0TGlzdCgpKQorICAgICAgICAgICAgdXNlc0NT
UnMgfD0gY3Nycy5nZXQocmVnQXRPZmZzZXQucmVnKCkpOworICAgICAgICBDSEVDS19FUSh1c2Vz
Q1NScywgIXBpbik7CisgICAgfTsKKworICAgIGdvKHRydWUpOworICAgIGdvKGZhbHNlKTsKK30K
Kwordm9pZCB0ZXN0WDg2TGVhQWRkQWRkU2hsTGVmdCgpCit7CisgICAgLy8gQWRkKEFkZChTaGwo
QHgsICRjKSwgQHkpLCAkZCkKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgU2hs
LCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSksCisgICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDIpKSwK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxD
b25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMTAwKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOworCisgICAgYXV0byBjb2Rl
ID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA+IDEpCisgICAg
ICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibGVhIDB4NjQoJXJkaSwlcnNpLDQpLCAl
cmF4Iik7CisgICAgZWxzZQorICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxl
YSIpOworICAgIENIRUNLX0VRKGludm9rZTxpbnRwdHJfdD4oKmNvZGUsIDEsIDIpLCAoMSArICgy
IDw8IDIpKSArIDEwMCk7Cit9CisKK3ZvaWQgdGVzdFg4NkxlYUFkZEFkZFNobFJpZ2h0KCkKK3sK
KyAgICAvLyBBZGQoQWRkKEB4LCBTaGwoQHksICRjKSksICRkKQorICAgIFByb2NlZHVyZSBwcm9j
OworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIHJl
c3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIEFkZCwgT3JpZ2lu
KCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBB
ZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdp
bigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSwKKyAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMikpKSwKKyAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxMDApKTsK
KyAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3Vs
dCk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICBpZiAocHJvYy5v
cHRMZXZlbCgpID4gMSkKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJsZWEg
MHg2NCglcmRpLCVyc2ksNCksICVyYXgiKTsKKyAgICBlbHNlCisgICAgICAgIGNoZWNrVXNlc0lu
c3RydWN0aW9uKCpjb2RlLCAibGVhIik7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludHB0cl90Pigq
Y29kZSwgMSwgMiksICgxICsgKDIgPDwgMikpICsgMTAwKTsKK30KKwordm9pZCB0ZXN0WDg2TGVh
QWRkQWRkKCkKK3sKKyAgICAvLyBBZGQoQWRkKEB4LCBAeSksICRjKQorICAgIFByb2NlZHVyZSBw
cm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUq
IHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIEFkZCwgT3Jp
Z2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9j
LCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpLAorICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCAxMDApKTsKKyAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxl
UHJvYyhwcm9jKTsKKyAgICBDSEVDS19FUShpbnZva2U8aW50cHRyX3Q+KCpjb2RlLCAxLCAyKSwg
KDEgKyAyKSArIDEwMCk7CisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA+IDEpIHsKKyAgICAgICAg
Y2hlY2tEaXNhc3NlbWJseSgKKyAgICAgICAgICAgICpjb2RlLAorICAgICAgICAgICAgWyZdIChj
b25zdCBjaGFyKiBkaXNhc3NlbWJseSkgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHN0cnN0cihkaXNhc3NlbWJseSwgImxlYSAweDY0KCVyZGksJXJzaSksICVyYXgiKQorICAgICAg
ICAgICAgICAgICAgICB8fCBzdHJzdHIoZGlzYXNzZW1ibHksICJsZWEgMHg2NCglcnNpLCVyZGkp
LCAlcmF4Iik7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgIkV4cGVjdGVkIHRvIGZpbmQg
c29tZXRoaW5nIGxpa2UgbGVhIDB4NjQoJXJkaSwlcnNpKSwgJXJheCBidXQgZGlkbid0ISIpOwor
ICAgIH0KK30KKwordm9pZCB0ZXN0WDg2TGVhQWRkU2hsUmlnaHQoKQoreworICAgIC8vIEFkZChT
aGwoQHgsICRjKSwgQHkpCisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJv
YywgU2hsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSwKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAyKSkpOwor
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0
KTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIGlmIChwcm9jLm9w
dExldmVsKCkgPiAxKQorICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxlYSAo
JXJkaSwlcnNpLDQpLCAlcmF4Iik7CisgICAgZWxzZQorICAgICAgICBjaGVja1VzZXNJbnN0cnVj
dGlvbigqY29kZSwgImxlYSIpOworICAgIENIRUNLX0VRKGludm9rZTxpbnRwdHJfdD4oKmNvZGUs
IDEsIDIpLCAxICsgKDIgPDwgMikpOworfQorCit2b2lkIHRlc3RYODZMZWFBZGRTaGxMZWZ0U2Nh
bGUxKCkKK3sKKyAgICAvLyBBZGQoU2hsKEB4LCAkYyksIEB5KQorICAgIFByb2NlZHVyZSBwcm9j
OworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIHJl
c3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIEFkZCwgT3JpZ2lu
KCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKKyAgICAgICAgICAgIHByb2MsIFNobCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgMCkpKTsKKyAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJl
dHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhw
cm9jKTsKKyAgICBDSEVDS19FUShpbnZva2U8aW50cHRyX3Q+KCpjb2RlLCAxLCAyKSwgMSArIDIp
OworICAgIGlmIChwcm9jLm9wdExldmVsKCkgPiAxKSB7CisgICAgICAgIGNoZWNrRGlzYXNzZW1i
bHkoCisgICAgICAgICAgICAqY29kZSwKKyAgICAgICAgICAgIFsmXSAoY29uc3QgY2hhciogZGlz
YXNzZW1ibHkpIC0+IGJvb2wgeworICAgICAgICAgICAgICAgIHJldHVybiBzdHJzdHIoZGlzYXNz
ZW1ibHksICJsZWEgKCVyZGksJXJzaSksICVyYXgiKQorICAgICAgICAgICAgICAgICAgICB8fCBz
dHJzdHIoZGlzYXNzZW1ibHksICJsZWEgKCVyc2ksJXJkaSksICVyYXgiKTsKKyAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAiRXhwZWN0ZWQgdG8gZmluZCBzb21ldGhpbmcgbGlrZSBsZWEgKCVy
ZGksJXJzaSksICVyYXggYnV0IGRpZG4ndCEiKTsKKyAgICB9Cit9CisKK3ZvaWQgdGVzdFg4Nkxl
YUFkZFNobExlZnRTY2FsZTIoKQoreworICAgIC8vIEFkZChTaGwoQHgsICRjKSwgQHkpCisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJv
YywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAorICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgU2hsLCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSkpOworICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKworICAgIGF1dG8gY29kZSA9
IGNvbXBpbGVQcm9jKHByb2MpOworICAgIGlmIChwcm9jLm9wdExldmVsKCkgPiAxKQorICAgICAg
ICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxlYSAoJXJkaSwlcnNpLDIpLCAlcmF4Iik7
CisgICAgZWxzZQorICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxlYSIpOwor
ICAgIENIRUNLX0VRKGludm9rZTxpbnRwdHJfdD4oKmNvZGUsIDEsIDIpLCAxICsgKDIgPDwgMSkp
OworfQorCit2b2lkIHRlc3RYODZMZWFBZGRTaGxMZWZ0U2NhbGU0KCkKK3sKKyAgICAvLyBBZGQo
U2hsKEB4LCAkYyksIEB5KQorICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdpbigpLAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0
MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDIpKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsK
KyAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3Vs
dCk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICBpZiAocHJvYy5v
cHRMZXZlbCgpID4gMSkKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJsZWEg
KCVyZGksJXJzaSw0KSwgJXJheCIpOworICAgIGVsc2UKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1
Y3Rpb24oKmNvZGUsICJsZWEiKTsKKyAgICBDSEVDS19FUShpbnZva2U8aW50cHRyX3Q+KCpjb2Rl
LCAxLCAyKSwgMSArICgyIDw8IDIpKTsKK30KKwordm9pZCB0ZXN0WDg2TGVhQWRkU2hsTGVmdFNj
YWxlOCgpCit7CisgICAgLy8gQWRkKFNobChAeCwgJGMpLCBAeSkKKyAgICBQcm9jZWR1cmUgcHJv
YzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBy
ZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBBZGQsIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjEpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIDMpKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2Mo
cHJvYyk7CisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA+IDEpCisgICAgICAgIGNoZWNrVXNlc0lu
c3RydWN0aW9uKCpjb2RlLCAibGVhICglcmRpLCVyc2ksOCksICVyYXgiKTsKKyAgICBlbHNlCisg
ICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibGVhIik7CisgICAgQ0hFQ0tfRVEo
aW52b2tlPGludHB0cl90PigqY29kZSwgMSwgMiksIDEgKyAoMiA8PCAzKSk7Cit9CisKK3ZvaWQg
dGVzdEFkZFNobDMyKCkKK3sKKyAgICAvLyBBZGQoU2hsKEB4LCAkYyksIEB5KQorICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAg
VmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIEFk
ZCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFNobCwgT3JpZ2luKCksCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Qz
MlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMzIpKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOworCisgICAgYXV0byBjb2RlID0gY29t
cGlsZVByb2MocHJvYyk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludDY0X3Q+KCpjb2RlLCAxLCAy
KSwgMSArIChzdGF0aWNfY2FzdDxpbnQ2NF90PigyKSA8PCBzdGF0aWNfY2FzdDxpbnQ2NF90Pigz
MikpKTsKK30KKwordm9pZCB0ZXN0QWRkU2hsNjQoKQoreworICAgIC8vIEFkZChTaGwoQHgsICRj
KSwgQHkpCisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgU2hsLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSwKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA2NCkpKTsKKyAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisKKyAg
ICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICBDSEVDS19FUShpbnZva2U8aW50
cHRyX3Q+KCpjb2RlLCAxLCAyKSwgMSArIDIpOworfQorCit2b2lkIHRlc3RBZGRTaGw2NSgpCit7
CisgICAgLy8gQWRkKFNobChAeCwgJGMpLCBAeSkKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiByZXN1bHQgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjEpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIDY1KSkpOworICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgcmVzdWx0KTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwor
ICAgIENIRUNLX0VRKGludm9rZTxpbnRwdHJfdD4oKmNvZGUsIDEsIDIpLCAxICsgKDIgPDwgMSkp
OworfQorCit2b2lkIHRlc3RSZWR1Y2VTdHJlbmd0aFJlYXNzb2NpYXRpb24oYm9vbCBmbGlwKQor
eworICAgIC8vIEFkZChBZGQoQHgsICRjKSwgQHkpIC0+IEFkZChBZGQoQHgsIEB5KSwgJGMpCisg
ICAgLy8gYW5kCisgICAgLy8gQWRkKEB5LCBBZGQoQHgsICRjKSkgLT4gQWRkKEFkZChAeCwgQHkp
LCAkYykKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVl
KiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworCisgICAgVmFsdWUqIGlubmVyQWRkID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwgYXJnMSwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0Mikp
OworCisgICAgVmFsdWUqIG91dGVyQWRkOworICAgIGlmIChmbGlwKQorICAgICAgICBvdXRlckFk
ZCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgYXJnMiwgaW5u
ZXJBZGQpOworICAgIGVsc2UKKyAgICAgICAgb3V0ZXJBZGQgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGlubmVyQWRkLCBhcmcyKTsKKworICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgb3V0ZXJBZGQpOworCisgICAg
cHJvYy5yZXNldFJlYWNoYWJpbGl0eSgpOworCisgICAgaWYgKHNob3VsZEJlVmVyYm9zZSgpKSB7
CisgICAgICAgIGRhdGFMb2coIklSIGJlZm9yZSByZWR1Y2VTdHJlbmd0aDpcbiIpOworICAgICAg
ICBkYXRhTG9nKHByb2MpOworICAgIH0KKworICAgIHJlZHVjZVN0cmVuZ3RoKHByb2MpOworCisg
ICAgaWYgKHNob3VsZEJlVmVyYm9zZSgpKSB7CisgICAgICAgIGRhdGFMb2coIklSIGFmdGVyIHJl
ZHVjZVN0cmVuZ3RoOlxuIik7CisgICAgICAgIGRhdGFMb2cocHJvYyk7CisgICAgfQorCisgICAg
Q0hFQ0tfRVEocm9vdC0+bGFzdCgpLT5vcGNvZGUoKSwgUmV0dXJuKTsKKyAgICBDSEVDS19FUShy
b290LT5sYXN0KCktPmNoaWxkKDApLT5vcGNvZGUoKSwgQWRkKTsKKyAgICBDSEVDSyhyb290LT5s
YXN0KCktPmNoaWxkKDApLT5jaGlsZCgxKS0+aXNJbnRQdHIoNDIpKTsKKyAgICBDSEVDS19FUShy
b290LT5sYXN0KCktPmNoaWxkKDApLT5jaGlsZCgwKS0+b3Bjb2RlKCksIEFkZCk7CisgICAgQ0hF
Q0soCisgICAgICAgIChyb290LT5sYXN0KCktPmNoaWxkKDApLT5jaGlsZCgwKS0+Y2hpbGQoMCkg
PT0gYXJnMSAmJiByb290LT5sYXN0KCktPmNoaWxkKDApLT5jaGlsZCgwKS0+Y2hpbGQoMSkgPT0g
YXJnMikgfHwKKyAgICAgICAgKHJvb3QtPmxhc3QoKS0+Y2hpbGQoMCktPmNoaWxkKDApLT5jaGls
ZCgwKSA9PSBhcmcyICYmIHJvb3QtPmxhc3QoKS0+Y2hpbGQoMCktPmNoaWxkKDApLT5jaGlsZCgx
KSA9PSBhcmcxKSk7Cit9CisKK3ZvaWQgdGVzdExvYWRCYXNlSW5kZXhTaGlmdDIoKQoreworICAg
IFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAg
IHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywgU2hsLCBPcmlnaW4oKSwKKyAgICAg
ICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpLAorICAgICAgICAgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMikpKSkpOworICAgIGF1
dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIGlmIChpc1g4NigpICYmIHByb2Mub3B0
TGV2ZWwoKSA+IDEpCisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAiKCVyZGks
JXJzaSw0KSIpOworICAgIGludDMyX3QgdmFsdWUgPSAxMjM0MTIzNDsKKyAgICBjaGFyKiBwdHIg
PSBiaXR3aXNlX2Nhc3Q8Y2hhcio+KCZ2YWx1ZSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IDEwOyArK2kpCisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQzMl90PigqY29kZSwgcHRy
IC0gKHN0YXRpY19jYXN0PGludHB0cl90PigxKSA8PCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMikp
ICogaSwgaSksIDEyMzQxMjM0KTsKK30KKwordm9pZCB0ZXN0TG9hZEJhc2VJbmRleFNoaWZ0MzIo
KQoreworI2lmIENQVShBRERSRVNTNjQpCisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigp
LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBw
cm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgICAg
ICBwcm9jLCBTaGwsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MSksCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCAzMikpKSkpOworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2Mp
OworICAgIGludDMyX3QgdmFsdWUgPSAxMjM0MTIzNDsKKyAgICBjaGFyKiBwdHIgPSBiaXR3aXNl
X2Nhc3Q8Y2hhcio+KCZ2YWx1ZSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDEwOyAr
K2kpCisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQzMl90PigqY29kZSwgcHRyIC0gKHN0YXRp
Y19jYXN0PGludHB0cl90PigxKSA8PCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMzIpKSAqIGksIGkp
LCAxMjM0MTIzNCk7CisjZW5kaWYKK30KKwordm9pZCB0ZXN0T3B0aW1pemVNYXRlcmlhbGl6YXRp
b24oKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAy
KQorICAgICAgICByZXR1cm47CisKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKKyAgICAgICAgcHJvYywgVm9p
ZCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgMHgxMjM0MjM0NTM0NTZsbHUpLAorICAgICAgICByb290LT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDB4MTIzNDIzNDUzNDU2bGx1ICsgMzUpKTsK
KyAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworCisg
ICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgYm9vbCBmb3VuZCA9IGZhbHNl
OworICAgIGZvciAoQWlyOjpCYXNpY0Jsb2NrKiBibG9jayA6IHByb2MuY29kZSgpKSB7CisgICAg
ICAgIGZvciAoQWlyOjpJbnN0JiBpbnN0IDogKmJsb2NrKSB7CisgICAgICAgICAgICBpZiAoaW5z
dC5raW5kLm9wY29kZSAhPSBBaXI6OkFkZDY0KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgaWYgKGluc3QuYXJnc1swXSAhPSBBaXI6OkFyZzo6aW1tKDM1KSkKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgICAg
fQorICAgIH0KKyAgICBDSEVDSyhmb3VuZCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+
Cit2b2lkIGdlbmVyYXRlTG9vcChQcm9jZWR1cmUmIHByb2MsIGNvbnN0IEZ1bmMmIGZ1bmMpCit7
CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2Nr
KiBsb29wID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIGVuZCA9IHByb2MuYWRk
QmxvY2soKTsKKworICAgIFVwc2lsb25WYWx1ZSogaW5pdGlhbEluZGV4ID0gcm9vdC0+YXBwZW5k
TmV3PFVwc2lsb25WYWx1ZT4oCisgICAgICAgIHByb2MsIE9yaWdpbigpLCByb290LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgSnVtcCwgT3JpZ2luKCkpOworICAgIHJvb3QtPnNldFN1Y2Nlc3NvcnMo
bG9vcCk7CisKKyAgICBWYWx1ZSogaW5kZXggPSBsb29wLT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFBoaSwgSW50MzIsIE9yaWdpbigpKTsKKyAgICBpbml0aWFsSW5kZXgtPnNldFBoaShpbmRleCk7
CisKKyAgICBWYWx1ZSogb25lID0gZnVuYyhsb29wLCBpbmRleCk7CisKKyAgICBWYWx1ZSogbmV4
dEluZGV4ID0gbG9vcC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBpbmRl
eCwgb25lKTsKKyAgICBVcHNpbG9uVmFsdWUqIGxvb3BJbmRleCA9IGxvb3AtPmFwcGVuZE5ldzxV
cHNpbG9uVmFsdWU+KHByb2MsIE9yaWdpbigpLCBuZXh0SW5kZXgpOworICAgIGxvb3BJbmRleC0+
c2V0UGhpKGluZGV4KTsKKyAgICBsb29wLT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9j
LCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICBsb29wLT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgcHJvYywgTGVzc1RoYW4sIE9yaWdpbigpLCBuZXh0SW5kZXgsCisgICAgICAgICAg
ICBsb29wLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMTAwKSkpOwor
ICAgIGxvb3AtPnNldFN1Y2Nlc3NvcnMobG9vcCwgZW5kKTsKKworICAgIGVuZC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKK30KKworc3RhdGljIHN0ZDo6YXJyYXk8
aW50LCAxMDA+IG1ha2VBcnJheUZvckxvb3BzKCkKK3sKKyAgICBzdGQ6OmFycmF5PGludCwgMTAw
PiByZXN1bHQ7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlc3VsdC5zaXplKCk7ICsr
aSkKKyAgICAgICAgcmVzdWx0W2ldID0gaSAmIDE7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KK3ZvaWQgZ2VuZXJhdGVMb29wTm90QmFja3dhcmRzRG9t
aW5hbnQoUHJvY2VkdXJlJiBwcm9jLCBzdGQ6OmFycmF5PGludCwgMTAwPiYgYXJyYXksIGNvbnN0
IEZ1bmMmIGZ1bmMpCit7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBCYXNpY0Jsb2NrKiBsb29wSGVhZGVyID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2lj
QmxvY2sqIGxvb3BDYWxsID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIGxvb3BG
b290ZXIgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogZW5kID0gcHJvYy5hZGRC
bG9jaygpOworCisgICAgVXBzaWxvblZhbHVlKiBpbml0aWFsSW5kZXggPSByb290LT5hcHBlbmRO
ZXc8VXBzaWxvblZhbHVlPigKKyAgICAgICAgcHJvYywgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5l
dzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisgICAgLy8gSWYgeW91IGxvb2sg
Y2FyZWZ1bGx5LCB5b3UnbGwgbm90aWNlIHRoYXQgdGhpcyBpcyBhbiBleHRyZW1lbHkgc25lYWt5
IHVzZSBvZiBVcHNpbG9uIHRoYXQgZGVtb25zdHJhdGVzCisgICAgLy8gdGhlIGV4dGVudCB0byB3
aGljaCBvdXIgU1NBIGlzIGRpZmZlcmVudCBmcm9tIG5vcm1hbC1wZXJzb24gU1NBLgorICAgIFVw
c2lsb25WYWx1ZSogZGVmYXVsdE9uZSA9IHJvb3QtPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KAor
ICAgICAgICBwcm9jLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIDEpKTsKKyAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEp1bXAs
IE9yaWdpbigpKTsKKyAgICByb290LT5zZXRTdWNjZXNzb3JzKGxvb3BIZWFkZXIpOworCisgICAg
VmFsdWUqIGluZGV4ID0gbG9vcEhlYWRlci0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBQaGksIElu
dDMyLCBPcmlnaW4oKSk7CisgICAgaW5pdGlhbEluZGV4LT5zZXRQaGkoaW5kZXgpOworCisgICAg
Ly8gaWYgKGFycmF5W2luZGV4XSkKKyAgICBsb29wSGVhZGVyLT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICBsb29wSGVhZGVyLT5hcHBl
bmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTG9hZCwgSW50MzIsIE9yaWdp
bigpLAorICAgICAgICAgICAgbG9vcEhlYWRlci0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAg
ICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIGxvb3BIZWFkZXIt
PmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJmFycmF5KSwKKyAgICAg
ICAgICAgICAgICBsb29wSGVhZGVyLT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAg
ICAgICBwcm9jLCBNdWwsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgICAgICBsb29wSGVhZGVy
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFpFeHQzMiwgT3JpZ2luKCksIGluZGV4KSwKKyAgICAg
ICAgICAgICAgICAgICAgbG9vcEhlYWRlci0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBzaXplb2YoaW50KSkpKSkpOworICAgIGxvb3BIZWFkZXItPnNldFN1Y2Nlc3Nv
cnMobG9vcENhbGwsIGxvb3BGb290ZXIpOworCisgICAgVmFsdWUqIGZ1bmN0aW9uQ2FsbCA9IGZ1
bmMobG9vcENhbGwsIGluZGV4KTsKKyAgICBVcHNpbG9uVmFsdWUqIG9uZUZyb21GdW5jdGlvbiA9
IGxvb3BDYWxsLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4oKSwgZnVuY3Rp
b25DYWxsKTsKKyAgICBsb29wQ2FsbC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBKdW1wLCBPcmln
aW4oKSk7CisgICAgbG9vcENhbGwtPnNldFN1Y2Nlc3NvcnMobG9vcEZvb3Rlcik7CisKKyAgICBW
YWx1ZSogb25lID0gbG9vcEZvb3Rlci0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBQaGksIEludDMy
LCBPcmlnaW4oKSk7CisgICAgZGVmYXVsdE9uZS0+c2V0UGhpKG9uZSk7CisgICAgb25lRnJvbUZ1
bmN0aW9uLT5zZXRQaGkob25lKTsKKyAgICBWYWx1ZSogbmV4dEluZGV4ID0gbG9vcEZvb3Rlci0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBpbmRleCwgb25lKTsKKyAgICBV
cHNpbG9uVmFsdWUqIGxvb3BJbmRleCA9IGxvb3BGb290ZXItPmFwcGVuZE5ldzxVcHNpbG9uVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBuZXh0SW5kZXgpOworICAgIGxvb3BJbmRleC0+c2V0UGhpKGlu
ZGV4KTsKKyAgICBsb29wRm9vdGVyLT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBC
cmFuY2gsIE9yaWdpbigpLAorICAgICAgICBsb29wRm9vdGVyLT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICAgICAgcHJvYywgTGVzc1RoYW4sIE9yaWdpbigpLCBuZXh0SW5kZXgsCisgICAgICAg
ICAgICBsb29wRm9vdGVyLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
MTAwKSkpOworICAgIGxvb3BGb290ZXItPnNldFN1Y2Nlc3NvcnMobG9vcEhlYWRlciwgZW5kKTsK
KworICAgIGVuZC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKK30K
Kworc3RhdGljIGludCBvbmVGdW5jdGlvbihpbnQqIGNhbGxDb3VudCkKK3sKKyAgICAoKmNhbGxD
b3VudCkrKzsKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIHZvaWQgbm9PcEZ1bmN0aW9uKCkK
K3sKK30KKwordm9pZCB0ZXN0TElDTVB1cmUoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworCisg
ICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDIpCisgICAgICAgIHJldHVybjsKKworICAgIGdlbmVy
YXRlTG9vcCgKKyAgICAgICAgcHJvYywKKyAgICAgICAgWyZdIChCYXNpY0Jsb2NrKiBsb29wLCBW
YWx1ZSopIC0+IFZhbHVlKiB7CisgICAgICAgICAgICByZXR1cm4gbG9vcC0+YXBwZW5kTmV3PEND
YWxsVmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEludDMyLCBPcmlnaW4oKSwgRWZmZWN0
czo6bm9uZSgpLAorICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihvbmVGdW5jdGlvbiwgQjND
Q2FsbFB0clRhZykpLAorICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgICAg
IH0pOworCisgICAgdW5zaWduZWQgY2FsbENvdW50ID0gMDsKKyAgICBjb21waWxlQW5kUnVuPHZv
aWQ+KHByb2MsICZjYWxsQ291bnQpOworICAgIENIRUNLX0VRKGNhbGxDb3VudCwgMXUpOworfQor
Cit2b2lkIHRlc3RMSUNNUHVyZVNpZGVFeGl0cygpCit7CisgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDIpCisgICAgICAgIHJldHVybjsKKyAgICBnZW5lcmF0
ZUxvb3AoCisgICAgICAgIHByb2MsCisgICAgICAgIFsmXSAoQmFzaWNCbG9jayogbG9vcCwgVmFs
dWUqKSAtPiBWYWx1ZSogeworICAgICAgICAgICAgRWZmZWN0cyBlZmZlY3RzID0gRWZmZWN0czo6
bm9uZSgpOworICAgICAgICAgICAgZWZmZWN0cy5leGl0c1NpZGV3YXlzID0gdHJ1ZTsKKyAgICAg
ICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9j
LCBWb2lkLCBPcmlnaW4oKSwgZWZmZWN0cywKKyAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmRO
ZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4o
bm9PcEZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSkpOworCisgICAgICAgICAgICByZXR1cm4gbG9v
cC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEludDMyLCBP
cmlnaW4oKSwgRWZmZWN0czo6bm9uZSgpLAorICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5l
dzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihv
bmVGdW5jdGlvbiwgQjNDQ2FsbFB0clRhZykpLAorICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSk7CisgICAgICAgIH0pOworCisgICAgdW5zaWduZWQgY2FsbENvdW50ID0gMDsKKyAgICBj
b21waWxlQW5kUnVuPHZvaWQ+KHByb2MsICZjYWxsQ291bnQpOworICAgIENIRUNLX0VRKGNhbGxD
b3VudCwgMXUpOworfQorCit2b2lkIHRlc3RMSUNNUHVyZVdyaXRlc1Bpbm5lZCgpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDIpCisgICAgICAgIHJl
dHVybjsKKyAgICBnZW5lcmF0ZUxvb3AoCisgICAgICAgIHByb2MsCisgICAgICAgIFsmXSAoQmFz
aWNCbG9jayogbG9vcCwgVmFsdWUqKSAtPiBWYWx1ZSogeworICAgICAgICAgICAgRWZmZWN0cyBl
ZmZlY3RzID0gRWZmZWN0czo6bm9uZSgpOworICAgICAgICAgICAgZWZmZWN0cy53cml0ZXNQaW5u
ZWQgPSB0cnVlOworICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAorICAg
ICAgICAgICAgICAgIHByb2MsIFZvaWQsIE9yaWdpbigpLCBlZmZlY3RzLAorICAgICAgICAgICAg
ICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1
bmN0aW9uUHRyPHZvaWQqPihub09wRnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSk7CisKKyAgICAg
ICAgICAgIHJldHVybiBsb29wLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCisgICAgICAgICAgICAg
ICAgcHJvYywgSW50MzIsIE9yaWdpbigpLCBFZmZlY3RzOjpub25lKCksCisgICAgICAgICAgICAg
ICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVu
Y3Rpb25QdHI8dm9pZCo+KG9uZUZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSksCisgICAgICAgICAg
ICAgICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAgfSk7CisKKyAgICB1bnNpZ25lZCBjYWxs
Q291bnQgPSAwOworICAgIGNvbXBpbGVBbmRSdW48dm9pZD4ocHJvYywgJmNhbGxDb3VudCk7Cisg
ICAgQ0hFQ0tfRVEoY2FsbENvdW50LCAxdSk7Cit9CisKK3ZvaWQgdGVzdExJQ01QdXJlV3JpdGVz
KCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBpZiAocHJvYy5vcHRMZXZlbCgpIDwgMikK
KyAgICAgICAgcmV0dXJuOworICAgIGdlbmVyYXRlTG9vcCgKKyAgICAgICAgcHJvYywKKyAgICAg
ICAgWyZdIChCYXNpY0Jsb2NrKiBsb29wLCBWYWx1ZSopIC0+IFZhbHVlKiB7CisgICAgICAgICAg
ICBFZmZlY3RzIGVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgICAgICAgICBlZmZlY3Rz
LndyaXRlcyA9IEhlYXBSYW5nZSg2MzQ3OSk7CisgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8
Q0NhbGxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVm9pZCwgT3JpZ2luKCksIGVmZmVj
dHMsCisgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG5vT3BGdW5jdGlvbiwgQjNDQ2FsbFB0
clRhZykpKTsKKworICAgICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVl
PigKKyAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksIEVmZmVjdHM6Om5vbmUo
KSwKKyAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4ob25lRnVuY3Rpb24sIEIzQ0NhbGxQdHJU
YWcpKSwKKyAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICB9KTsKKwor
ICAgIHVuc2lnbmVkIGNhbGxDb3VudCA9IDA7CisgICAgY29tcGlsZUFuZFJ1bjx2b2lkPihwcm9j
LCAmY2FsbENvdW50KTsKKyAgICBDSEVDS19FUShjYWxsQ291bnQsIDF1KTsKK30KKwordm9pZCB0
ZXN0TElDTVJlYWRzTG9jYWxTdGF0ZSgpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgZ2Vu
ZXJhdGVMb29wKAorICAgICAgICBwcm9jLAorICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGxvb3As
IFZhbHVlKikgLT4gVmFsdWUqIHsKKyAgICAgICAgICAgIEVmZmVjdHMgZWZmZWN0cyA9IEVmZmVj
dHM6Om5vbmUoKTsKKyAgICAgICAgICAgIGVmZmVjdHMucmVhZHNMb2NhbFN0YXRlID0gdHJ1ZTsK
KyAgICAgICAgICAgIHJldHVybiBsb29wLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCisgICAgICAg
ICAgICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigpLCBlZmZlY3RzLAorICAgICAgICAgICAgICAg
IGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0
aW9uUHRyPHZvaWQqPihvbmVGdW5jdGlvbiwgQjNDQ2FsbFB0clRhZykpLAorICAgICAgICAgICAg
ICAgIGxvb3AtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgICAgIH0pOworCisgICAgdW5zaWduZWQgY2FsbENv
dW50ID0gMDsKKyAgICBjb21waWxlQW5kUnVuPHZvaWQ+KHByb2MsICZjYWxsQ291bnQpOworICAg
IENIRUNLX0VRKGNhbGxDb3VudCwgMTAwdSk7IC8vIFdlJ2xsIGZhaWwgdG8gaG9pc3QgYmVjYXVz
ZSB0aGUgbG9vcCBoYXMgVXBzaWxvbnMuCit9CisKK3ZvaWQgdGVzdExJQ01SZWFkc1Bpbm5lZCgp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDIpCisg
ICAgICAgIHJldHVybjsKKyAgICBnZW5lcmF0ZUxvb3AoCisgICAgICAgIHByb2MsCisgICAgICAg
IFsmXSAoQmFzaWNCbG9jayogbG9vcCwgVmFsdWUqKSAtPiBWYWx1ZSogeworICAgICAgICAgICAg
RWZmZWN0cyBlZmZlY3RzID0gRWZmZWN0czo6bm9uZSgpOworICAgICAgICAgICAgZWZmZWN0cy5y
ZWFkc1Bpbm5lZCA9IHRydWU7CisgICAgICAgICAgICByZXR1cm4gbG9vcC0+YXBwZW5kTmV3PEND
YWxsVmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEludDMyLCBPcmlnaW4oKSwgZWZmZWN0
cywKKyAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4ob25lRnVuY3Rpb24sIEIzQ0NhbGxQdHJU
YWcpKSwKKyAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICB9KTsKKwor
ICAgIHVuc2lnbmVkIGNhbGxDb3VudCA9IDA7CisgICAgY29tcGlsZUFuZFJ1bjx2b2lkPihwcm9j
LCAmY2FsbENvdW50KTsKKyAgICBDSEVDS19FUShjYWxsQ291bnQsIDF1KTsKK30KKwordm9pZCB0
ZXN0TElDTVJlYWRzKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBpZiAocHJvYy5vcHRM
ZXZlbCgpIDwgMikKKyAgICAgICAgcmV0dXJuOworICAgIGdlbmVyYXRlTG9vcCgKKyAgICAgICAg
cHJvYywKKyAgICAgICAgWyZdIChCYXNpY0Jsb2NrKiBsb29wLCBWYWx1ZSopIC0+IFZhbHVlKiB7
CisgICAgICAgICAgICBFZmZlY3RzIGVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgICAg
ICAgICBlZmZlY3RzLnJlYWRzID0gSGVhcFJhbmdlOjp0b3AoKTsKKyAgICAgICAgICAgIHJldHVy
biBsb29wLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgSW50
MzIsIE9yaWdpbigpLCBlZmZlY3RzLAorICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxD
b25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihvbmVG
dW5jdGlvbiwgQjNDQ2FsbFB0clRhZykpLAorICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSk7CisgICAgICAgIH0pOworCisgICAgdW5zaWduZWQgY2FsbENvdW50ID0gMDsKKyAgICBjb21w
aWxlQW5kUnVuPHZvaWQ+KHByb2MsICZjYWxsQ291bnQpOworICAgIENIRUNLX0VRKGNhbGxDb3Vu
dCwgMXUpOworfQorCit2b2lkIHRlc3RMSUNNUHVyZU5vdEJhY2t3YXJkc0RvbWluYW50KCkKK3sK
KyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBpZiAocHJvYy5vcHRMZXZlbCgpIDwgMikKKyAgICAg
ICAgcmV0dXJuOworICAgIGF1dG8gYXJyYXkgPSBtYWtlQXJyYXlGb3JMb29wcygpOworICAgIGdl
bmVyYXRlTG9vcE5vdEJhY2t3YXJkc0RvbWluYW50KAorICAgICAgICBwcm9jLCBhcnJheSwKKyAg
ICAgICAgWyZdIChCYXNpY0Jsb2NrKiBsb29wLCBWYWx1ZSopIC0+IFZhbHVlKiB7CisgICAgICAg
ICAgICByZXR1cm4gbG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAorICAgICAgICAgICAgICAg
IHByb2MsIEludDMyLCBPcmlnaW4oKSwgRWZmZWN0czo6bm9uZSgpLAorICAgICAgICAgICAgICAg
IGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0
aW9uUHRyPHZvaWQqPihvbmVGdW5jdGlvbiwgQjNDQ2FsbFB0clRhZykpLAorICAgICAgICAgICAg
ICAgIGxvb3AtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgICAgIH0pOworCisgICAgdW5zaWduZWQgY2FsbENv
dW50ID0gMDsKKyAgICBjb21waWxlQW5kUnVuPHZvaWQ+KHByb2MsICZjYWxsQ291bnQpOworICAg
IENIRUNLX0VRKGNhbGxDb3VudCwgMXUpOworfQorCit2b2lkIHRlc3RMSUNNUHVyZUZvaWxlZEJ5
Q2hpbGQoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIGdlbmVyYXRlTG9vcCgKKyAgICAg
ICAgcHJvYywKKyAgICAgICAgWyZdIChCYXNpY0Jsb2NrKiBsb29wLCBWYWx1ZSogaW5kZXgpIC0+
IFZhbHVlKiB7CisgICAgICAgICAgICByZXR1cm4gbG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+
KAorICAgICAgICAgICAgICAgIHByb2MsIEludDMyLCBPcmlnaW4oKSwgRWZmZWN0czo6bm9uZSgp
LAorICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihvbmVGdW5jdGlvbiwgQjNDQ2FsbFB0clRh
ZykpLAorICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgICAgICAgICBp
bmRleCk7CisgICAgICAgIH0pOworCisgICAgdW5zaWduZWQgY2FsbENvdW50ID0gMDsKKyAgICBj
b21waWxlQW5kUnVuPHZvaWQ+KHByb2MsICZjYWxsQ291bnQpOworICAgIENIRUNLX0VRKGNhbGxD
b3VudCwgMTAwdSk7Cit9CisKK3ZvaWQgdGVzdExJQ01QdXJlTm90QmFja3dhcmRzRG9taW5hbnRG
b2lsZWRCeUNoaWxkKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBpZiAocHJvYy5vcHRM
ZXZlbCgpIDwgMikKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gYXJyYXkgPSBtYWtlQXJyYXlG
b3JMb29wcygpOworICAgIGdlbmVyYXRlTG9vcE5vdEJhY2t3YXJkc0RvbWluYW50KAorICAgICAg
ICBwcm9jLCBhcnJheSwKKyAgICAgICAgWyZdIChCYXNpY0Jsb2NrKiBsb29wLCBWYWx1ZSogaW5k
ZXgpIC0+IFZhbHVlKiB7CisgICAgICAgICAgICByZXR1cm4gbG9vcC0+YXBwZW5kTmV3PENDYWxs
VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEludDMyLCBPcmlnaW4oKSwgRWZmZWN0czo6
bm9uZSgpLAorICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihvbmVGdW5jdGlvbiwgQjNDQ2Fs
bFB0clRhZykpLAorICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgICAg
ICAgICBpbmRleCk7CisgICAgICAgIH0pOworCisgICAgdW5zaWduZWQgY2FsbENvdW50ID0gMDsK
KyAgICBjb21waWxlQW5kUnVuPHZvaWQ+KHByb2MsICZjYWxsQ291bnQpOworICAgIENIRUNLX0VR
KGNhbGxDb3VudCwgNTB1KTsKK30KKwordm9pZCB0ZXN0TElDTUV4aXRzU2lkZXdheXMoKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIGdlbmVyYXRlTG9vcCgKKyAgICAgICAgcHJvYywKKyAg
ICAgICAgWyZdIChCYXNpY0Jsb2NrKiBsb29wLCBWYWx1ZSopIC0+IFZhbHVlKiB7CisgICAgICAg
ICAgICBFZmZlY3RzIGVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgICAgICAgICBlZmZl
Y3RzLmV4aXRzU2lkZXdheXMgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVu
ZE5ldzxDQ2FsbFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCks
IGVmZmVjdHMsCisgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG9uZUZ1bmN0aW9uLCBCM0ND
YWxsUHRyVGFnKSksCisgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAg
fSk7CisKKyAgICB1bnNpZ25lZCBjYWxsQ291bnQgPSAwOworICAgIGNvbXBpbGVBbmRSdW48dm9p
ZD4ocHJvYywgJmNhbGxDb3VudCk7CisgICAgQ0hFQ0tfRVEoY2FsbENvdW50LCAxMDB1KTsKK30K
Kwordm9pZCB0ZXN0TElDTVdyaXRlc0xvY2FsU3RhdGUoKQoreworICAgIFByb2NlZHVyZSBwcm9j
OworICAgIGdlbmVyYXRlTG9vcCgKKyAgICAgICAgcHJvYywKKyAgICAgICAgWyZdIChCYXNpY0Js
b2NrKiBsb29wLCBWYWx1ZSopIC0+IFZhbHVlKiB7CisgICAgICAgICAgICBFZmZlY3RzIGVmZmVj
dHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgICAgICAgICBlZmZlY3RzLndyaXRlc0xvY2FsU3Rh
dGUgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVl
PigKKyAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksIGVmZmVjdHMsCisgICAg
ICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG9uZUZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSksCisg
ICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAgfSk7CisKKyAgICB1bnNp
Z25lZCBjYWxsQ291bnQgPSAwOworICAgIGNvbXBpbGVBbmRSdW48dm9pZD4ocHJvYywgJmNhbGxD
b3VudCk7CisgICAgQ0hFQ0tfRVEoY2FsbENvdW50LCAxMDB1KTsKK30KKwordm9pZCB0ZXN0TElD
TVdyaXRlcygpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgZ2VuZXJhdGVMb29wKAorICAg
ICAgICBwcm9jLAorICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGxvb3AsIFZhbHVlKikgLT4gVmFs
dWUqIHsKKyAgICAgICAgICAgIEVmZmVjdHMgZWZmZWN0cyA9IEVmZmVjdHM6Om5vbmUoKTsKKyAg
ICAgICAgICAgIGVmZmVjdHMud3JpdGVzID0gSGVhcFJhbmdlKDY2Nik7CisgICAgICAgICAgICBy
ZXR1cm4gbG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2Ms
IEludDMyLCBPcmlnaW4oKSwgZWZmZWN0cywKKyAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmRO
ZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4o
b25lRnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSwKKyAgICAgICAgICAgICAgICBsb29wLT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCkpOworICAgICAgICB9KTsKKworICAgIHVuc2lnbmVkIGNhbGxDb3VudCA9IDA7CisgICAg
Y29tcGlsZUFuZFJ1bjx2b2lkPihwcm9jLCAmY2FsbENvdW50KTsKKyAgICBDSEVDS19FUShjYWxs
Q291bnQsIDEwMHUpOworfQorCit2b2lkIHRlc3RMSUNNRmVuY2UoKQoreworICAgIFByb2NlZHVy
ZSBwcm9jOworICAgIGdlbmVyYXRlTG9vcCgKKyAgICAgICAgcHJvYywKKyAgICAgICAgWyZdIChC
YXNpY0Jsb2NrKiBsb29wLCBWYWx1ZSopIC0+IFZhbHVlKiB7CisgICAgICAgICAgICBFZmZlY3Rz
IGVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgICAgICAgICBlZmZlY3RzLmZlbmNlID0g
dHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBsb29wLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCisg
ICAgICAgICAgICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigpLCBlZmZlY3RzLAorICAgICAgICAg
ICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdGFn
Q0Z1bmN0aW9uUHRyPHZvaWQqPihvbmVGdW5jdGlvbiwgQjNDQ2FsbFB0clRhZykpLAorICAgICAg
ICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgICAgIH0pOworCisgICAgdW5zaWduZWQg
Y2FsbENvdW50ID0gMDsKKyAgICBjb21waWxlQW5kUnVuPHZvaWQ+KHByb2MsICZjYWxsQ291bnQp
OworICAgIENIRUNLX0VRKGNhbGxDb3VudCwgMTAwdSk7Cit9CisKK3ZvaWQgdGVzdExJQ01Xcml0
ZXNQaW5uZWQoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIGdlbmVyYXRlTG9vcCgKKyAg
ICAgICAgcHJvYywKKyAgICAgICAgWyZdIChCYXNpY0Jsb2NrKiBsb29wLCBWYWx1ZSopIC0+IFZh
bHVlKiB7CisgICAgICAgICAgICBFZmZlY3RzIGVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7Cisg
ICAgICAgICAgICBlZmZlY3RzLndyaXRlc1Bpbm5lZCA9IHRydWU7CisgICAgICAgICAgICByZXR1
cm4gbG9vcC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIElu
dDMyLCBPcmlnaW4oKSwgZWZmZWN0cywKKyAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4ob25l
RnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSwKKyAgICAgICAgICAgICAgICBsb29wLT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpOworICAgICAgICB9KTsKKworICAgIHVuc2lnbmVkIGNhbGxDb3VudCA9IDA7CisgICAgY29t
cGlsZUFuZFJ1bjx2b2lkPihwcm9jLCAmY2FsbENvdW50KTsKKyAgICBDSEVDS19FUShjYWxsQ291
bnQsIDEwMHUpOworfQorCit2b2lkIHRlc3RMSUNNQ29udHJvbERlcGVuZGVudCgpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDIpCisgICAgICAgIHJl
dHVybjsKKyAgICBnZW5lcmF0ZUxvb3AoCisgICAgICAgIHByb2MsCisgICAgICAgIFsmXSAoQmFz
aWNCbG9jayogbG9vcCwgVmFsdWUqKSAtPiBWYWx1ZSogeworICAgICAgICAgICAgRWZmZWN0cyBl
ZmZlY3RzID0gRWZmZWN0czo6bm9uZSgpOworICAgICAgICAgICAgZWZmZWN0cy5jb250cm9sRGVw
ZW5kZW50ID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBsb29wLT5hcHBlbmROZXc8Q0NhbGxW
YWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigpLCBlZmZlY3RzLAor
ICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmln
aW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihvbmVGdW5jdGlvbiwgQjNDQ2FsbFB0clRhZykp
LAorICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgICAgIH0pOworCisgICAg
dW5zaWduZWQgY2FsbENvdW50ID0gMDsKKyAgICBjb21waWxlQW5kUnVuPHZvaWQ+KHByb2MsICZj
YWxsQ291bnQpOworICAgIENIRUNLX0VRKGNhbGxDb3VudCwgMXUpOworfQorCit2b2lkIHRlc3RM
SUNNQ29udHJvbERlcGVuZGVudE5vdEJhY2t3YXJkc0RvbWluYW50KCkKK3sKKyAgICBQcm9jZWR1
cmUgcHJvYzsKKyAgICBpZiAocHJvYy5vcHRMZXZlbCgpIDwgMikKKyAgICAgICAgcmV0dXJuOwor
ICAgIGF1dG8gYXJyYXkgPSBtYWtlQXJyYXlGb3JMb29wcygpOworICAgIGdlbmVyYXRlTG9vcE5v
dEJhY2t3YXJkc0RvbWluYW50KAorICAgICAgICBwcm9jLCBhcnJheSwKKyAgICAgICAgWyZdIChC
YXNpY0Jsb2NrKiBsb29wLCBWYWx1ZSopIC0+IFZhbHVlKiB7CisgICAgICAgICAgICBFZmZlY3Rz
IGVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgICAgICAgICBlZmZlY3RzLmNvbnRyb2xE
ZXBlbmRlbnQgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5ldzxDQ2Fs
bFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksIGVmZmVjdHMs
CisgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG9uZUZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFn
KSksCisgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAgfSk7CisKKyAg
ICB1bnNpZ25lZCBjYWxsQ291bnQgPSAwOworICAgIGNvbXBpbGVBbmRSdW48dm9pZD4ocHJvYywg
JmNhbGxDb3VudCk7CisgICAgQ0hFQ0tfRVEoY2FsbENvdW50LCA1MHUpOworfQorCit2b2lkIHRl
c3RMSUNNQ29udHJvbERlcGVuZGVudFNpZGVFeGl0cygpCit7CisgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgZ2VuZXJhdGVMb29wKAorICAgICAgICBwcm9jLAorICAgICAgICBbJl0gKEJhc2ljQmxv
Y2sqIGxvb3AsIFZhbHVlKikgLT4gVmFsdWUqIHsKKyAgICAgICAgICAgIEVmZmVjdHMgZWZmZWN0
cyA9IEVmZmVjdHM6Om5vbmUoKTsKKyAgICAgICAgICAgIGVmZmVjdHMuZXhpdHNTaWRld2F5cyA9
IHRydWU7CisgICAgICAgICAgICBsb29wLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCisgICAgICAg
ICAgICAgICAgcHJvYywgVm9pZCwgT3JpZ2luKCksIGVmZmVjdHMsCisgICAgICAgICAgICAgICAg
bG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rp
b25QdHI8dm9pZCo+KG5vT3BGdW5jdGlvbiwgQjNDQ2FsbFB0clRhZykpKTsKKyAgICAgICAgCisg
ICAgICAgICAgICBlZmZlY3RzID0gRWZmZWN0czo6bm9uZSgpOworICAgICAgICAgICAgZWZmZWN0
cy5jb250cm9sRGVwZW5kZW50ID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBsb29wLT5hcHBl
bmROZXc8Q0NhbGxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigp
LCBlZmZlY3RzLAorICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihvbmVGdW5jdGlvbiwgQjND
Q2FsbFB0clRhZykpLAorICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgICAg
IH0pOworCisgICAgdW5zaWduZWQgY2FsbENvdW50ID0gMDsKKyAgICBjb21waWxlQW5kUnVuPHZv
aWQ+KHByb2MsICZjYWxsQ291bnQpOworICAgIENIRUNLX0VRKGNhbGxDb3VudCwgMTAwdSk7Cit9
CisKK3ZvaWQgdGVzdExJQ01SZWFkc1Bpbm5lZFdyaXRlc1Bpbm5lZCgpCit7CisgICAgUHJvY2Vk
dXJlIHByb2M7CisgICAgZ2VuZXJhdGVMb29wKAorICAgICAgICBwcm9jLAorICAgICAgICBbJl0g
KEJhc2ljQmxvY2sqIGxvb3AsIFZhbHVlKikgLT4gVmFsdWUqIHsKKyAgICAgICAgICAgIEVmZmVj
dHMgZWZmZWN0cyA9IEVmZmVjdHM6Om5vbmUoKTsKKyAgICAgICAgICAgIGVmZmVjdHMud3JpdGVz
UGlubmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigK
KyAgICAgICAgICAgICAgICBwcm9jLCBWb2lkLCBPcmlnaW4oKSwgZWZmZWN0cywKKyAgICAgICAg
ICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRh
Z0NGdW5jdGlvblB0cjx2b2lkKj4obm9PcEZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSkpOworICAg
ICAgICAKKyAgICAgICAgICAgIGVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgICAgICAg
ICBlZmZlY3RzLnJlYWRzUGlubmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBsb29wLT5h
cHBlbmROZXc8Q0NhbGxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgSW50MzIsIE9yaWdp
bigpLCBlZmZlY3RzLAorICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDb25zdFB0clZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihvbmVGdW5jdGlvbiwg
QjNDQ2FsbFB0clRhZykpLAorICAgICAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAg
ICAgIH0pOworCisgICAgdW5zaWduZWQgY2FsbENvdW50ID0gMDsKKyAgICBjb21waWxlQW5kUnVu
PHZvaWQ+KHByb2MsICZjYWxsQ291bnQpOworICAgIENIRUNLX0VRKGNhbGxDb3VudCwgMTAwdSk7
Cit9CisKK3ZvaWQgdGVzdExJQ01SZWFkc1dyaXRlc0RpZmZlcmVudEhlYXBzKCkKK3sKKyAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICBpZiAocHJvYy5vcHRMZXZlbCgpIDwgMikKKyAgICAgICAgcmV0
dXJuOworICAgIGdlbmVyYXRlTG9vcCgKKyAgICAgICAgcHJvYywKKyAgICAgICAgWyZdIChCYXNp
Y0Jsb2NrKiBsb29wLCBWYWx1ZSopIC0+IFZhbHVlKiB7CisgICAgICAgICAgICBFZmZlY3RzIGVm
ZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgICAgICAgICBlZmZlY3RzLndyaXRlcyA9IEhl
YXBSYW5nZSg2NDM2KTsKKyAgICAgICAgICAgIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigK
KyAgICAgICAgICAgICAgICBwcm9jLCBWb2lkLCBPcmlnaW4oKSwgZWZmZWN0cywKKyAgICAgICAg
ICAgICAgICBsb29wLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRh
Z0NGdW5jdGlvblB0cjx2b2lkKj4obm9PcEZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSkpOworICAg
ICAgICAKKyAgICAgICAgICAgIGVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgICAgICAg
ICBlZmZlY3RzLnJlYWRzID0gSGVhcFJhbmdlKDQ4ODYpOworICAgICAgICAgICAgcmV0dXJuIGxv
b3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwg
T3JpZ2luKCksIGVmZmVjdHMsCisgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0
UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG9uZUZ1bmN0
aW9uLCBCM0NDYWxsUHRyVGFnKSksCisgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsK
KyAgICAgICAgfSk7CisKKyAgICB1bnNpZ25lZCBjYWxsQ291bnQgPSAwOworICAgIGNvbXBpbGVB
bmRSdW48dm9pZD4ocHJvYywgJmNhbGxDb3VudCk7CisgICAgQ0hFQ0tfRVEoY2FsbENvdW50LCAx
dSk7Cit9CisKK3ZvaWQgdGVzdExJQ01SZWFkc1dyaXRlc092ZXJsYXBwaW5nSGVhcHMoKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIGdlbmVyYXRlTG9vcCgKKyAgICAgICAgcHJvYywKKyAg
ICAgICAgWyZdIChCYXNpY0Jsb2NrKiBsb29wLCBWYWx1ZSopIC0+IFZhbHVlKiB7CisgICAgICAg
ICAgICBFZmZlY3RzIGVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgICAgICAgICBlZmZl
Y3RzLndyaXRlcyA9IEhlYXBSYW5nZSg2NDM2LCA3NDQ1OCk7CisgICAgICAgICAgICBsb29wLT5h
cHBlbmROZXc8Q0NhbGxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVm9pZCwgT3JpZ2lu
KCksIGVmZmVjdHMsCisgICAgICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG5vT3BGdW5jdGlvbiwg
QjNDQ2FsbFB0clRhZykpKTsKKyAgICAgICAgCisgICAgICAgICAgICBlZmZlY3RzID0gRWZmZWN0
czo6bm9uZSgpOworICAgICAgICAgICAgZWZmZWN0cy5yZWFkcyA9IEhlYXBSYW5nZSg0ODg2NCwg
NzgyMzkpOworICAgICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigK
KyAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksIGVmZmVjdHMsCisgICAgICAg
ICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0
YWdDRnVuY3Rpb25QdHI8dm9pZCo+KG9uZUZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSksCisgICAg
ICAgICAgICAgICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAgfSk7CisKKyAgICB1bnNpZ25l
ZCBjYWxsQ291bnQgPSAwOworICAgIGNvbXBpbGVBbmRSdW48dm9pZD4ocHJvYywgJmNhbGxDb3Vu
dCk7CisgICAgQ0hFQ0tfRVEoY2FsbENvdW50LCAxMDB1KTsKK30KKwordm9pZCB0ZXN0TElDTURl
ZmF1bHRDYWxsKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBnZW5lcmF0ZUxvb3AoCisg
ICAgICAgIHByb2MsCisgICAgICAgIFsmXSAoQmFzaWNCbG9jayogbG9vcCwgVmFsdWUqKSAtPiBW
YWx1ZSogeworICAgICAgICAgICAgcmV0dXJuIGxvb3AtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigK
KyAgICAgICAgICAgICAgICBwcm9jLCBJbnQzMiwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAg
bG9vcC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0YWdDRnVuY3Rp
b25QdHI8dm9pZCo+KG9uZUZ1bmN0aW9uLCBCM0NDYWxsUHRyVGFnKSksCisgICAgICAgICAgICAg
ICAgbG9vcC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAgfSk7CisKKyAgICB1bnNpZ25lZCBjYWxsQ291
bnQgPSAwOworICAgIGNvbXBpbGVBbmRSdW48dm9pZD4ocHJvYywgJmNhbGxDb3VudCk7CisgICAg
Q0hFQ0tfRVEoY2FsbENvdW50LCAxMDB1KTsKK30KKwordm9pZCB0ZXN0RGVwZW5kMzIoKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgVmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogZmlyc3Qg
PSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4o
KSwgcHRyLCAwKTsKKyAgICBWYWx1ZSogc2Vjb25kID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZh
bHVlPigKKyAgICAgICAgcHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwgcHRy
LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBw
cm9jLCBaRXh0MzIsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgRGVwZW5kLCBPcmlnaW4oKSwgZmlyc3QpKSksCisgICAgICAgIDQpOworICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgZmly
c3QsIHNlY29uZCkpOworCisgICAgaW50MzJfdCB2YWx1ZXNbMl07CisgICAgdmFsdWVzWzBdID0g
NDI7CisgICAgdmFsdWVzWzFdID0gMHhiZWVmOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVBy
b2MocHJvYyk7CisgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rp
b24oKmNvZGUsICJlb3IiKTsKKyAgICBlbHNlIGlmIChpc1g4NigpKSB7CisgICAgICAgIGNoZWNr
RG9lc05vdFVzZUluc3RydWN0aW9uKCpjb2RlLCAibWZlbmNlIik7CisgICAgICAgIGNoZWNrRG9l
c05vdFVzZUluc3RydWN0aW9uKCpjb2RlLCAibG9jayIpOworICAgIH0KKyAgICBDSEVDS19FUShp
bnZva2U8aW50MzJfdD4oKmNvZGUsIHZhbHVlcyksIDQyICsgMHhiZWVmKTsKK30KKwordm9pZCB0
ZXN0RGVwZW5kNjQoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
KyAgICBWYWx1ZSogZmlyc3QgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExv
YWQsIEludDY0LCBPcmlnaW4oKSwgcHRyLCAwKTsKKyAgICBWYWx1ZSogc2Vjb25kID0gcm9vdC0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywgTG9hZCwgSW50NjQsIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywg
QWRkLCBPcmlnaW4oKSwgcHRyLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBEZXBlbmQsIE9yaWdpbigpLCBmaXJzdCkpLAorICAgICAgICA4KTsKKyAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGZpcnN0LCBzZWNv
bmQpKTsKKworICAgIGludDY0X3QgdmFsdWVzWzJdOworICAgIHZhbHVlc1swXSA9IDQyOworICAg
IHZhbHVlc1sxXSA9IDB4YmVlZjsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2Mp
OworICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2Rl
LCAiZW9yIik7CisgICAgZWxzZSBpZiAoaXNYODYoKSkgeworICAgICAgICBjaGVja0RvZXNOb3RV
c2VJbnN0cnVjdGlvbigqY29kZSwgIm1mZW5jZSIpOworICAgICAgICBjaGVja0RvZXNOb3RVc2VJ
bnN0cnVjdGlvbigqY29kZSwgImxvY2siKTsKKyAgICB9CisgICAgQ0hFQ0tfRVEoaW52b2tlPGlu
dDY0X3Q+KCpjb2RlLCB2YWx1ZXMpLCA0MiArIDB4YmVlZik7Cit9CisKK3ZvaWQgdGVzdFdhc21C
b3VuZHNDaGVjayh1bnNpZ25lZCBvZmZzZXQpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
aWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEpCisgICAgICAgIHJldHVybjsKKyAgICBHUFJSZWcgcGlu
bmVkID0gR1BSSW5mbzo6YXJndW1lbnRHUFIxOworICAgIHByb2MucGluUmVnaXN0ZXIocGlubmVk
KTsKKworICAgIHByb2Muc2V0V2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxw
ZXJzJiBqaXQsIEdQUlJlZyBwaW5uZWRHUFIpIHsKKyAgICAgICAgQ0hFQ0tfRVEocGlubmVkR1BS
LCBwaW5uZWQpOworCisgICAgICAgIC8vIFRoaXMgc2hvdWxkIGFsd2F5cyB3b3JrIGJlY2F1c2Ug
YSBmdW5jdGlvbiB0aGlzIHNpbXBsZSBzaG91bGQgbmV2ZXIgaGF2ZSBjYWxsZWUKKyAgICAgICAg
Ly8gc2F2ZXMuCisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDQy
KSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBp
bG9ndWUoKTsKKyAgICAgICAgaml0LnJldCgpOworICAgIH0pOworCisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogbGVmdCA9IHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKKyAgICBpZiAocG9pbnRlclR5cGUoKSAhPSBJbnQzMikKKyAgICAgICAgbGVmdCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLCBsZWZ0KTsKKyAgICByb290
LT5hcHBlbmROZXc8V2FzbUJvdW5kc0NoZWNrVmFsdWU+KHByb2MsIE9yaWdpbigpLCBwaW5uZWQs
IGxlZnQsIG9mZnNldCk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAweDQyKTsKKyAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKworICAgIGF1dG8gY29k
ZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIHVpbnQzMl90IGJvdW5kID0gMiArIG9mZnNldDsK
KyAgICBhdXRvIGNvbXB1dGVSZXN1bHQgPSBbJl0gKHVpbnQzMl90IGlucHV0KSB7CisgICAgICAg
IHJldHVybiBpbnB1dCArIG9mZnNldCA8IGJvdW5kID8gMHg0MiA6IDQyOworICAgIH07CisKKyAg
ICBDSEVDS19FUShpbnZva2U8aW50MzJfdD4oKmNvZGUsIDEsIGJvdW5kKSwgY29tcHV0ZVJlc3Vs
dCgxKSk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludDMyX3Q+KCpjb2RlLCAzLCBib3VuZCksIGNv
bXB1dGVSZXN1bHQoMykpOworICAgIENIRUNLX0VRKGludm9rZTxpbnQzMl90PigqY29kZSwgMiwg
Ym91bmQpLCBjb21wdXRlUmVzdWx0KDIpKTsKK30KKwordm9pZCB0ZXN0V2FzbUFkZHJlc3MoKQor
eworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEdQUlJlZyBwaW5uZWRHUFIgPSBHUFJJbmZvOjph
cmd1bWVudEdQUjI7CisgICAgcHJvYy5waW5SZWdpc3RlcihwaW5uZWRHUFIpOworCisgICAgdW5z
aWduZWQgbG9vcENvdW50ID0gMTAwOworICAgIFZlY3Rvcjx1bnNpZ25lZD4gdmFsdWVzKGxvb3BD
b3VudCk7CisgICAgdW5zaWduZWQgbnVtVG9TdG9yZSA9IDQyOworCisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBoZWFkZXIgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogYm9keSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBC
YXNpY0Jsb2NrKiBjb250aW51YXRpb24gPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAvLyBSb290
CisgICAgVmFsdWUqIGxvb3BDb3VudFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBUcnVuYywgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIHZhbHVlVG9T
dG9yZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLCByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMSkpOworICAgIFVwc2lsb25WYWx1ZSogYmVnaW5VcHNpbG9uID0gcm9vdC0+YXBw
ZW5kTmV3PFVwc2lsb25WYWx1ZT4ocHJvYywgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKHByb2MsIEp1bXAsIE9yaWdpbigpLCBoZWFkZXIpOworCisgICAgLy8gSGVhZGVyCisg
ICAgVmFsdWUqIGluZGV4UGhpID0gaGVhZGVyLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFBoaSwg
SW50MzIsIE9yaWdpbigpKTsKKyAgICBoZWFkZXItPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9j
LCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICBoZWFkZXItPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQmVsb3csIE9yaWdpbigpLCBpbmRleFBoaSwgbG9vcENvdW50VmFsdWUpLAorICAgICAgICBi
b2R5LCBjb250aW51YXRpb24pOworCisgICAgLy8gQm9keQorICAgIFZhbHVlKiBwb2ludGVyID0g
Ym9keS0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBpbmRleFBoaSwKKyAg
ICAgICAgYm9keS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHNpemVv
Zih1bnNpZ25lZCkpKTsKKyAgICBwb2ludGVyID0gYm9keS0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBaRXh0MzIsIE9yaWdpbigpLCBwb2ludGVyKTsKKyAgICBib2R5LT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KHByb2MsIFN0b3JlLCBPcmlnaW4oKSwgdmFsdWVUb1N0b3JlLAorICAgICAgICBib2R5
LT5hcHBlbmROZXc8V2FzbUFkZHJlc3NWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHBvaW50ZXIsIHBp
bm5lZEdQUiksIDApOworICAgIFVwc2lsb25WYWx1ZSogaW5jVXBzaWxvbiA9IGJvZHktPmFwcGVu
ZE5ldzxVcHNpbG9uVmFsdWU+KHByb2MsIE9yaWdpbigpLAorICAgICAgICBib2R5LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGluZGV4UGhpLAorICAgICAgICAgICAgYm9k
eS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKSk7CisgICAgYm9k
eS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIEp1bXAsIE9yaWdpbigpLCBoZWFkZXIpOwor
CisgICAgLy8gQ29udGludWF0aW9uCisgICAgY29udGludWF0aW9uLT5hcHBlbmROZXdDb250cm9s
VmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisKKyAgICBiZWdpblVwc2lsb24tPnNldFBo
aShpbmRleFBoaSk7CisgICAgaW5jVXBzaWxvbi0+c2V0UGhpKGluZGV4UGhpKTsKKworCisgICAg
YXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCBs
b29wQ291bnQsIG51bVRvU3RvcmUsIHZhbHVlcy5kYXRhKCkpOworICAgIGZvciAodW5zaWduZWQg
dmFsdWUgOiB2YWx1ZXMpCisgICAgICAgIENIRUNLX0VRKG51bVRvU3RvcmUsIHZhbHVlKTsKK30K
Kwordm9pZCB0ZXN0RmFzdFRMU0xvYWQoKQoreworI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCisg
ICAgX3B0aHJlYWRfc2V0c3BlY2lmaWNfZGlyZWN0KFdURl9URVNUSU5HX0tFWSwgYml0d2lzZV9j
YXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDB4YmVlZikpKTsKKworICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAg
ICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2lu
dFZhbHVlPihwcm9jLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSk7CisgICAgcGF0Y2hwb2ludC0+
Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgIHBhdGNo
cG9pbnQtPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29u
c3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIEFsbG93
TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAgICAg
IGppdC5sb2FkRnJvbVRMU1B0cihmYXN0VExTT2Zmc2V0Rm9yS2V5KFdURl9URVNUSU5HX0tFWSks
IHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgIH0pOworCisgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBwYXRjaHBvaW50KTsKKworICAgIENIRUNLX0VR
KGNvbXBpbGVBbmRSdW48dWludHB0cl90Pihwcm9jKSwgc3RhdGljX2Nhc3Q8dWludHB0cl90Pigw
eGJlZWYpKTsKKyNlbmRpZgorfQorCit2b2lkIHRlc3RGYXN0VExTU3RvcmUoKQoreworI2lmIEVO
QUJMRShGQVNUX1RMU19KSVQpCisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2lu
dCA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigp
KTsKKyAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdp
c3RlcnMoKSk7CisgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMTsKKyAg
ICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAg
ICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAg
ICAgICAgICBHUFJSZWcgc2NyYXRjaCA9IHBhcmFtcy5ncFNjcmF0Y2goMCk7CisgICAgICAgICAg
ICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigweGRlYWQpLCBzY3JhdGNoKTsK
KyAgICAgICAgICAgIGppdC5zdG9yZVRvVExTUHRyKHNjcmF0Y2gsIGZhc3RUTFNPZmZzZXRGb3JL
ZXkoV1RGX1RFU1RJTkdfS0VZKSk7CisgICAgICAgIH0pOworCisgICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworCisgICAgY29tcGlsZUFuZFJ1
bjx2b2lkPihwcm9jKTsKKyAgICBDSEVDS19FUShiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihfcHRo
cmVhZF9nZXRzcGVjaWZpY19kaXJlY3QoV1RGX1RFU1RJTkdfS0VZKSksIHN0YXRpY19jYXN0PHVp
bnRwdHJfdD4oMHhkZWFkKSk7CisjZW5kaWYKK30KKworc3RhdGljIE5FVkVSX0lOTElORSBib29s
IGRvdWJsZUVxKGRvdWJsZSBhLCBkb3VibGUgYikgeyByZXR1cm4gYSA9PSBiOyB9CitzdGF0aWMg
TkVWRVJfSU5MSU5FIGJvb2wgZG91YmxlTmVxKGRvdWJsZSBhLCBkb3VibGUgYikgeyByZXR1cm4g
YSAhPSBiOyB9CitzdGF0aWMgTkVWRVJfSU5MSU5FIGJvb2wgZG91YmxlR3QoZG91YmxlIGEsIGRv
dWJsZSBiKSB7IHJldHVybiBhID4gYjsgfQorc3RhdGljIE5FVkVSX0lOTElORSBib29sIGRvdWJs
ZUd0ZShkb3VibGUgYSwgZG91YmxlIGIpIHsgcmV0dXJuIGEgPj0gYjsgfQorc3RhdGljIE5FVkVS
X0lOTElORSBib29sIGRvdWJsZUx0KGRvdWJsZSBhLCBkb3VibGUgYikgeyByZXR1cm4gYSA8IGI7
IH0KK3N0YXRpYyBORVZFUl9JTkxJTkUgYm9vbCBkb3VibGVMdGUoZG91YmxlIGEsIGRvdWJsZSBi
KSB7IHJldHVybiBhIDw9IGI7IH0KKwordm9pZCB0ZXN0RG91YmxlTGl0ZXJhbENvbXBhcmlzb24o
ZG91YmxlIGEsIGRvdWJsZSBiKQoreworICAgIHVzaW5nIFRlc3QgPSBzdGQ6OnR1cGxlPEIzOjpP
cGNvZGUsIGJvb2wgKCopKGRvdWJsZSwgZG91YmxlKT47CisgICAgU3RkTGlzdDxUZXN0PiB0ZXN0
cyA9IHsKKyAgICAgICAgVGVzdCB7IE5vdEVxdWFsLCBkb3VibGVOZXEgfSwKKyAgICAgICAgVGVz
dCB7IEVxdWFsLCBkb3VibGVFcSB9LAorICAgICAgICBUZXN0IHsgRXF1YWxPclVub3JkZXJlZCwg
ZG91YmxlRXEgfSwKKyAgICAgICAgVGVzdCB7IEdyZWF0ZXJUaGFuLCBkb3VibGVHdCB9LAorICAg
ICAgICBUZXN0IHsgR3JlYXRlckVxdWFsLCBkb3VibGVHdGUgfSwKKyAgICAgICAgVGVzdCB7IExl
c3NUaGFuLCBkb3VibGVMdCB9LAorICAgICAgICBUZXN0IHsgTGVzc0VxdWFsLCBkb3VibGVMdGUg
fSwKKyAgICB9OworCisgICAgZm9yIChjb25zdCBUZXN0JiB0ZXN0IDogdGVzdHMpIHsKKyAgICAg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgICAgIFZhbHVlKiB2YWx1ZUEgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3Vi
bGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpOworICAgICAgICBWYWx1ZSogdmFsdWVCID0gcm9v
dC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKTsKKworICAg
ICAgICAvLyBUaGlzIGlzIGhlcmUganVzdCB0byBtYWtlIHJlZHVjZURvdWJsZVRvRmxvYXQgZG8g
dGhpbmdzLgorICAgICAgICBWYWx1ZSogdmFsdWVDID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91
YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwLjApOworICAgICAgICBWYWx1ZSogdmFsdWVBc0Zs
b2F0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4o
KSwgdmFsdWVDKTsKKworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAg
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBzdGQ6OmdldDwwPih0ZXN0KSwgT3JpZ2lu
KCksIHZhbHVlQSwgdmFsdWVCKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBFcXVhbCwgT3JpZ2luKCksIHZhbHVlQXNGbG9hdCwgdmFsdWVBc0Zsb2F0
KSkpOworCisgICAgICAgIENIRUNLKCEhY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jKSA9PSBz
dGQ6OmdldDwxPih0ZXN0KShhLCBiKSk7CisgICAgfQorfQorCit2b2lkIHRlc3RGbG9hdEVxdWFs
T3JVbm9yZGVyZWRGb2xkaW5nKCkKK3sKKyAgICBmb3IgKGF1dG8mIGZpcnN0IDogZmxvYXRpbmdQ
b2ludE9wZXJhbmRzPGZsb2F0PigpKSB7CisgICAgICAgIGZvciAoYXV0byYgc2Vjb25kIDogZmxv
YXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKSB7CisgICAgICAgICAgICBmbG9hdCBhID0gZmly
c3QudmFsdWU7CisgICAgICAgICAgICBmbG9hdCBiID0gc2Vjb25kLnZhbHVlOworICAgICAgICAg
ICAgYm9vbCBleHBlY3RlZFJlc3VsdCA9IChhID09IGIpIHx8IHN0ZDo6aXN1bm9yZGVyZWQoYSwg
Yik7CisgICAgICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgICAgICBWYWx1ZSogY29uc3RBID0gcm9v
dC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpOworICAgICAg
ICAgICAgVmFsdWUqIGNvbnN0QiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBiKTsKKworICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywgRXF1YWxPclVub3JkZXJlZCwg
T3JpZ2luKCksCisgICAgICAgICAgICAgICAgICAgIGNvbnN0QSwKKyAgICAgICAgICAgICAgICAg
ICAgY29uc3RCKSk7CisgICAgICAgICAgICBDSEVDSyghIWNvbXBpbGVBbmRSdW48aW50MzJfdD4o
cHJvYykgPT0gZXhwZWN0ZWRSZXN1bHQpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRl
c3RGbG9hdEVxdWFsT3JVbm9yZGVyZWRGb2xkaW5nTmFOKCkKK3sKKyAgICBTdGRMaXN0PGZsb2F0
PiBuYW5zID0geworICAgICAgICBiaXR3aXNlX2Nhc3Q8ZmxvYXQ+KDB4ZmZmZmZmZmQpLAorICAg
ICAgICBiaXR3aXNlX2Nhc3Q8ZmxvYXQ+KDB4ZmZmZmZmZmUpLAorICAgICAgICBiaXR3aXNlX2Nh
c3Q8ZmxvYXQ+KDB4ZmZmZmZmZjApLAorICAgICAgICBzdGF0aWNfY2FzdDxmbG9hdD4oUE5hTiks
CisgICAgfTsKKworICAgIHVuc2lnbmVkIGkgPSAwOworICAgIGZvciAoZmxvYXQgbmFuIDogbmFu
cykgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChzdGQ6OmlzbmFuKG5hbikpOworICAgICAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICAgICAgVmFsdWUqIGEgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgbmFuKTsKKyAgICAgICAgVmFsdWUqIGIgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1
bWVudEZQUjApKTsKKworICAgICAgICBpZiAoaSAlIDIpCisgICAgICAgICAgICBzdGQ6OnN3YXAo
YSwgYik7CisgICAgICAgICsraTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEVxdWFsT3JVbm9yZGVyZWQsIE9yaWdpbigpLCBhLCBiKSk7CisgICAgICAgIENI
RUNLKCEhY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBzdGF0aWNfY2FzdDxkb3VibGU+KDEu
MCkpKTsKKyAgICB9Cit9CisKK3ZvaWQgdGVzdEZsb2F0RXF1YWxPclVub3JkZXJlZERvbnRGb2xk
KCkKK3sKKyAgICBmb3IgKGF1dG8mIGZpcnN0IDogZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0
PigpKSB7CisgICAgICAgIGZsb2F0IGEgPSBmaXJzdC52YWx1ZTsKKyAgICAgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAg
ICAgIFZhbHVlKiBjb25zdEEgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgYSk7CisgICAgICAgIFZhbHVlKiBiID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRG
UFIwKSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAg
ICAgICAgICBwcm9jLCBFcXVhbE9yVW5vcmRlcmVkLCBPcmlnaW4oKSwgY29uc3RBLCBiKSk7CisK
KyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisKKyAgICAgICAgZm9yIChh
dXRvJiBzZWNvbmQgOiBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpIHsKKyAgICAgICAg
ICAgIGZsb2F0IGIgPSBzZWNvbmQudmFsdWU7CisgICAgICAgICAgICBib29sIGV4cGVjdGVkUmVz
dWx0ID0gKGEgPT0gYikgfHwgc3RkOjppc3Vub3JkZXJlZChhLCBiKTsKKyAgICAgICAgICAgIENI
RUNLKCEhaW52b2tlPGludDMyX3Q+KCpjb2RlLCBzdGF0aWNfY2FzdDxkb3VibGU+KGIpKSA9PSBl
eHBlY3RlZFJlc3VsdCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGZ1bmN0
aW9uTmluZUFyZ3MoaW50MzJfdCwgdm9pZCosIHZvaWQqLCB2b2lkKiwgdm9pZCosIHZvaWQqLCB2
b2lkKiwgdm9pZCosIHZvaWQqKSB7IH0KKwordm9pZCB0ZXN0U2h1ZmZsZURvZXNudFRyYXNoQ2Fs
bGVlU2F2ZXMoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworCisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBsaWtlbHkgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgQmFzaWNCbG9jayogdW5saWtlbHkgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAg
ICBSZWdpc3RlclNldCByZWdzID0gUmVnaXN0ZXJTZXQ6OmFsbEdQUnMoKTsKKyAgICByZWdzLmV4
Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkpOworICAgIHJlZ3MuZXhjbHVkZShS
ZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycygpKTsKKyAgICByZWdzLmV4Y2x1
ZGUoUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CisgICAgcmVncy5leGNsdWRl
KFJlZ2lzdGVyU2V0Ojphcmd1bWVudEdQUlMoKSk7CisKKyAgICB1bnNpZ25lZCBpID0gMDsKKyAg
ICBWZWN0b3I8VmFsdWUqPiBwYXRjaGVzOworICAgIGZvciAoUmVnIHJlZyA6IHJlZ3MpIHsKKyAg
ICAgICAgKytpOworICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5h
cHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBJbnQzMiwgT3JpZ2luKCkpOworICAgICAg
ICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMo
KSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlZy5pc0dQUigpKTsKKyAgICAgICAgcGF0Y2hw
b2ludC0+cmVzdWx0Q29uc3RyYWludCA9IFZhbHVlUmVwOjpyZWcocmVnLmdwcigpKTsKKyAgICAg
ICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAorICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAg
ICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGpp
dCk7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
aSksIHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgcGF0Y2hlcy5h
cHBlbmQocGF0Y2hwb2ludCk7CisgICAgfQorCisgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OnRvQXJndW1l
bnRSZWdpc3RlcigwICUgR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycykpOworICAg
IFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIoMSAlIEdQUkluZm86Om51bWJlck9m
QXJndW1lbnRSZWdpc3RlcnMpKTsKKyAgICBWYWx1ZSogYXJnMyA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6dG9Bcmd1bWVudFJlZ2lz
dGVyKDIgJSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzKSk7CisgICAgVmFsdWUq
IGFyZzQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3RlcigzICUgR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVu
dFJlZ2lzdGVycykpOworICAgIFZhbHVlKiBhcmc1ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIoNCAl
IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMpKTsKKyAgICBWYWx1ZSogYXJnNiA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6dG9Bcmd1bWVudFJlZ2lzdGVyKDUgJSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0
ZXJzKSk7CisgICAgVmFsdWUqIGFyZzcgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3Rlcig2ICUgR1BSSW5m
bzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycykpOworICAgIFZhbHVlKiBhcmc4ID0gcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjp0b0Fy
Z3VtZW50UmVnaXN0ZXIoNyAlIEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMpKTsK
KworICAgIFBhdGNocG9pbnRWYWx1ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRW
YWx1ZT4ocHJvYywgSW50NjQsIE9yaWdpbigpKTsKKyAgICBwdHItPmNsb2JiZXIoUmVnaXN0ZXJT
ZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICBwdHItPnJlc3VsdENvbnN0cmFpbnQg
PSBWYWx1ZVJlcDo6cmVnKEdQUkluZm86OnJlZ0NTMCk7CisgICAgcHRyLT5hcHBlbmRTb21lUmVn
aXN0ZXIoYXJnMSk7CisgICAgcHRyLT5zZXRHZW5lcmF0b3IoCisgICAgICAgIFs9XSAoQ0NhbGxI
ZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Cisg
ICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGpp
dCk7CisgICAgICAgICAgICBqaXQubW92ZShwYXJhbXNbMV0uZ3ByKCksIHBhcmFtc1swXS5ncHIo
KSk7CisgICAgICAgIH0pOworCisgICAgVmFsdWUqIGNvbmRpdGlvbiA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4oKSwgCisgICAgICAgIHB0ciwK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDAp
KTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgQnJh
bmNoLCBPcmlnaW4oKSwKKyAgICAgICAgY29uZGl0aW9uLAorICAgICAgICBGcmVxdWVudGVkQmxv
Y2sobGlrZWx5LCBGcmVxdWVuY3lDbGFzczo6Tm9ybWFsKSwgRnJlcXVlbnRlZEJsb2NrKHVubGlr
ZWx5LCBGcmVxdWVuY3lDbGFzczo6UmFyZSkpOworCisgICAgLy8gTmV2ZXIgZXhlY3V0ZXMuCisg
ICAgVmFsdWUqIGNvbnN0NDIgPSBsaWtlbHktPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCA0Mik7CisgICAgbGlrZWx5LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgY29uc3Q0Mik7CisKKyAgICAvLyBBbHdheXMgZXhlY3V0ZXMuCisg
ICAgVmFsdWUqIGNvbnN0TnVtYmVyID0gdW5saWtlbHktPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCAweDEpOworCisgICAgdW5saWtlbHktPmFwcGVuZE5ldzxDQ2FsbFZh
bHVlPigKKyAgICAgICAgcHJvYywgVm9pZCwgT3JpZ2luKCksCisgICAgICAgIHVubGlrZWx5LT5h
cHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2
b2lkKj4oZnVuY3Rpb25OaW5lQXJncywgQjNDQ2FsbFB0clRhZykpLAorICAgICAgICBjb25zdE51
bWJlciwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSwgYXJnNiwgYXJnNywgYXJnOCk7CisK
KyAgICBQYXRjaHBvaW50VmFsdWUqIHZvaWRQYXRjaCA9IHVubGlrZWx5LT5hcHBlbmROZXc8UGF0
Y2hwb2ludFZhbHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7CisgICAgdm9pZFBhdGNoLT5jbG9i
YmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgZm9yIChWYWx1
ZSogdiA6IHBhdGNoZXMpCisgICAgICAgIHZvaWRQYXRjaC0+YXBwZW5kU29tZVJlZ2lzdGVyKHYp
OworICAgIHZvaWRQYXRjaC0+YXBwZW5kU29tZVJlZ2lzdGVyKGFyZzEpOworICAgIHZvaWRQYXRj
aC0+YXBwZW5kU29tZVJlZ2lzdGVyKGFyZzIpOworICAgIHZvaWRQYXRjaC0+YXBwZW5kU29tZVJl
Z2lzdGVyKGFyZzMpOworICAgIHZvaWRQYXRjaC0+YXBwZW5kU29tZVJlZ2lzdGVyKGFyZzQpOwor
ICAgIHZvaWRQYXRjaC0+YXBwZW5kU29tZVJlZ2lzdGVyKGFyZzUpOworICAgIHZvaWRQYXRjaC0+
YXBwZW5kU29tZVJlZ2lzdGVyKGFyZzYpOworICAgIHZvaWRQYXRjaC0+c2V0R2VuZXJhdG9yKFs9
XSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsK
KworICAgIHVubGlrZWx5LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKKyAgICAgICAgdW5saWtlbHktPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9h
ZCwgSW50MzIsIE9yaWdpbigpLCBwdHIpKTsKKworICAgIGludDMyX3QqIGlucHV0UHRyID0gc3Rh
dGljX2Nhc3Q8aW50MzJfdCo+KGZhc3RNYWxsb2Moc2l6ZW9mKGludDMyX3QpKSk7CisgICAgKmlu
cHV0UHRyID0gNDg7CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBpbnB1
dFB0cikgPT0gNDgpOworICAgIGZhc3RGcmVlKGlucHV0UHRyKTsKK30KKwordm9pZCB0ZXN0RGVt
b3RlUGF0Y2hwb2ludFRlcm1pbmFsKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKworICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogZG9uZSA9
IHByb2MuYWRkQmxvY2soKTsKKworICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IHJv
b3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIEludDMyLCBPcmlnaW4oKSk7Cisg
ICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy50ZXJtaW5hbCA9IHRydWU7CisgICAgcm9vdC0+c2V0U3Vj
Y2Vzc29ycyhkb25lKTsKKworICAgIGRvbmUtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwgcGF0Y2hwb2ludCk7CisKKyAgICBwcm9jLnJlc2V0UmVhY2hhYmlsaXR5KCk7
CisgICAgYnJlYWtDcml0aWNhbEVkZ2VzKHByb2MpOworICAgIEluZGV4U2V0PFZhbHVlKj4gdmFs
dWVzVG9EZW1vdGU7CisgICAgdmFsdWVzVG9EZW1vdGUuYWRkKHBhdGNocG9pbnQpOworICAgIGRl
bW90ZVZhbHVlcyhwcm9jLCB2YWx1ZXNUb0RlbW90ZSk7CisgICAgdmFsaWRhdGUocHJvYyk7Cit9
CisKK3ZvaWQgdGVzdFJlcG9ydFVzZWRSZWdpc3RlcnNMYXRlVXNlRm9sbG93ZWRCeUVhcmx5RGVm
RG9lc05vdE1hcmtVc2VBc0RlYWQoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIGlmIChw
cm9jLm9wdExldmVsKCkgPCAyKQorICAgICAgICByZXR1cm47CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFJlZ2lzdGVyU2V0IGFsbFJlZ3MgPSBSZWdpc3Rl
clNldDo6YWxsR1BScygpOworICAgIGFsbFJlZ3MuZXhjbHVkZShSZWdpc3RlclNldDo6c3RhY2tS
ZWdpc3RlcnMoKSk7CisgICAgYWxsUmVncy5leGNsdWRlKFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhh
cmR3YXJlUmVnaXN0ZXJzKCkpOworCisgICAgeworICAgICAgICAvLyBNYWtlIGV2ZXJ5IHJlZyA0
MiAoanVzdCBuZWVkcyB0byBiZSBhIHZhbHVlIG90aGVyIHRoYW4gMTApLgorICAgICAgICBQYXRj
aHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVl
Pihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7CisgICAgICAgIFZhbHVlKiBjb25zdDQyID0gcm9vdC0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKTsKKyAgICAgICAgZm9y
IChSZWcgcmVnIDogYWxsUmVncykKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChjb25z
dDQyLCBWYWx1ZVJlcDo6cmVnKHJlZykpOworICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0
b3IoWyZdIChDQ2FsbEhlbHBlcnMmLCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7
IH0pOworICAgIH0KKworICAgIHsKKyAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50
ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgVm9pZCwgT3JpZ2luKCkp
OworICAgICAgICBWYWx1ZSogY29uc3QxMCA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCAxMCk7CisgICAgICAgIGZvciAoUmVnIHJlZyA6IGFsbFJlZ3MpCisg
ICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoY29uc3QxMCwgVmFsdWVSZXA6OmxhdGVSZWco
cmVnKSk7CisgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVy
cyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgICAgICAgICBm
b3IgKFJlZyByZWcgOiBhbGxSZWdzKSB7CisgICAgICAgICAgICAgICAgYXV0byBkb25lID0gaml0
LmJyYW5jaDMyKENDYWxsSGVscGVyczo6RXF1YWwsIHJlZy5ncHIoKSwgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoMTApKTsKKyAgICAgICAgICAgICAgICBqaXQuYnJlYWtwb2ludCgpOworICAg
ICAgICAgICAgICAgIGRvbmUubGluaygmaml0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7
CisgICAgfQorCisgICAgeworICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBy
b290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBJbnQzMiwgT3JpZ2luKCkpOwor
ICAgICAgICBwYXRjaHBvaW50LT5yZXN1bHRDb25zdHJhaW50ID0gVmFsdWVSZXA6OlNvbWVFYXJs
eVJlZ2lzdGVyOworICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhl
bHBlcnMmLCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoYWxsUmVncy5jb250YWlucyhwYXJhbXNbMF0uZ3ByKCkpKTsK
KyAgICAgICAgfSk7CisgICAgfQorCisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHBy
b2MsIFJldHVybiwgT3JpZ2luKCkpOworCisgICAgY29tcGlsZUFuZFJ1bjx2b2lkPihwcm9jKTsK
K30KKwordm9pZCB0ZXN0SW5maW5pdGVMb29wRG9lc250Q2F1c2VCYWRIb2lzdGluZygpCit7Cisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDIpCisgICAgICAg
IHJldHVybjsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJh
c2ljQmxvY2sqIGhlYWRlciA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBsb2Fk
QmxvY2sgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogcG9zdExvYWRCbG9jayA9
IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBhcmcgPSByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Cisg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIEp1bXAsIE9yaWdpbigpLCBoZWFk
ZXIpOworCisgICAgaGVhZGVyLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2Ms
IEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgIGhlYWRlci0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBFcXVhbCwgT3JpZ2luKCksCisgICAgICAgICAgICBhcmcsCisgICAgICAgICAgICBoZWFkZXIt
PmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAxMCkpLCBoZWFkZXIsIGxv
YWRCbG9jayk7CisKKyAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBsb2FkQmxvY2st
PmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKKyAgICBw
YXRjaHBvaW50LT5lZmZlY3RzID0gRWZmZWN0czo6bm9uZSgpOworICAgIHBhdGNocG9pbnQtPmVm
ZmVjdHMud3JpdGVzTG9jYWxTdGF0ZSA9IHRydWU7IC8vIERvbid0IERDRSB0aGlzLgorICAgIHBh
dGNocG9pbnQtPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwg
Y29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICAgICAgLy8gVGhpcyB3
b3JrcyBiZWNhdXNlIHdlIGRvbid0IGhhdmUgY2FsbGVlIHNhdmVzLgorICAgICAgICAgICAgaml0
LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAg
IH0pOworCisgICAgVmFsdWUqIGJhZExvYWQgPSBsb2FkQmxvY2stPmFwcGVuZE5ldzxNZW1vcnlW
YWx1ZT4ocHJvYywgTG9hZCwgSW50NjQsIE9yaWdpbigpLCBhcmcsIDApOworCisgICAgbG9hZEJs
b2NrLT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2lu
KCksCisgICAgICAgIGxvYWRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBFcXVhbCwgT3Jp
Z2luKCksCisgICAgICAgICAgICBiYWRMb2FkLAorICAgICAgICAgICAgbG9hZEJsb2NrLT5hcHBl
bmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDUpKSwgaGVhZGVyLCBwb3N0TG9h
ZEJsb2NrKTsKKworICAgIHBvc3RMb2FkQmxvY2stPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLCBiYWRMb2FkKTsKKworICAgIC8vIFRoZSBwYXRjaHBvaW50IGVh
cmx5IHJldCgpIHdvcmtzIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBjYWxsZWUgc2F2ZXMuCisgICAg
YXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgUkVMRUFTRV9BU1NFUlQoIXByb2Mu
Y2FsbGVlU2F2ZVJlZ2lzdGVyQXRPZmZzZXRMaXN0KCkuc2l6ZSgpKTsgCisgICAgaW52b2tlPHZv
aWQ+KCpjb2RlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oNTUpKTsgLy8gU2hvdWxkbid0IGNyYXNo
IGRlcmVmZXJuY2luZyA1NS4KK30KKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzguY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL3Rlc3RiM184LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZjY3MjdjZTVhMGYwOWU4ZDVk
MzkxNjkwZTkxZDkwMjdiM2Q3NjBkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL3Rlc3RiM184LmNwcApAQCAtMCwwICsxLDg2OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgInRlc3RiMy5oIgorCisjaWYgRU5BQkxFKEIzX0pJVCkKKwordGVtcGxhdGU8dHlw
ZW5hbWUgVD4KK3ZvaWQgdGVzdEF0b21pY1dlYWtDQVMoKQoreworICAgIFR5cGUgdHlwZSA9IE5h
dGl2ZVRyYWl0czxUPjo6dHlwZTsKKyAgICBXaWR0aCB3aWR0aCA9IE5hdGl2ZVRyYWl0czxUPjo6
d2lkdGg7CisKKyAgICBhdXRvIGNoZWNrTXlEaXNhc3NlbWJseSA9IFsmXSAoQ29tcGlsYXRpb24m
IGNvbXBpbGF0aW9uLCBib29sIGZlbmNlZCkgeworICAgICAgICBpZiAoaXNYODYoKSkgeworICAg
ICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJsb2NrIik7CisgICAg
ICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImNtcHhjaGciKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChmZW5jZWQpIHsKKyAgICAgICAgICAgICAg
ICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImxkYXgiKTsKKyAgICAgICAgICAg
ICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgInN0bHgiKTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGls
YXRpb24sICJsZHgiKTsKKyAgICAgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21w
aWxhdGlvbiwgInN0eCIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKKworICAg
IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIHJlbG9vcCA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogZG9uZSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAK
KyAgICAgICAgVmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBKdW1wLCBPcmlnaW4oKSk7CisgICAgICAgIHJvb3QtPnNldFN1
Y2Nlc3NvcnMocmVsb29wKTsKKyAgICAKKyAgICAgICAgcmVsb29wLT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJlbG9v
cC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNX
ZWFrQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAgICAgICAgcmVsb29wLT5hcHBlbmRJ
bnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgIHJl
bG9vcC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisg
ICAgICAgICAgICAgICAgcHRyKSk7CisgICAgICAgIHJlbG9vcC0+c2V0U3VjY2Vzc29ycyhkb25l
LCByZWxvb3ApOworICAgIAorICAgICAgICBkb25lLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJl
dHVybiwgT3JpZ2luKCkpOworICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhw
cm9jKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA0MjsKKyAgICAg
ICAgdmFsdWVbMV0gPSAxMzsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7Cisg
ICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigweGJlZWYpKTsKKyAgICAg
ICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpj
b2RlLCB0cnVlKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAg
ICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Js
b2NrKiByZWxvb3AgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIGRvbmUg
PSBwcm9jLmFkZEJsb2NrKCk7CisgICAgCisgICAgICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSnVtcCwgT3JpZ2lu
KCkpOworICAgICAgICByb290LT5zZXRTdWNjZXNzb3JzKHJlbG9vcCk7CisgICAgCisgICAgICAg
IHJlbG9vcC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJyYW5jaCwgT3Jp
Z2luKCksCisgICAgICAgICAgICByZWxvb3AtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAg
ICAgICAgICAgICAgcHJvYywgQXRvbWljV2Vha0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAgICAg
ICAgICAgICAgIHJlbG9vcC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUs
IDQyKSwKKyAgICAgICAgICAgICAgICByZWxvb3AtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9y
aWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAgIHB0ciwgMCwgSGVhcFJhbmdl
KDQyKSwgSGVhcFJhbmdlKCkpKTsKKyAgICAgICAgcmVsb29wLT5zZXRTdWNjZXNzb3JzKGRvbmUs
IHJlbG9vcCk7CisgICAgCisgICAgICAgIGRvbmUtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0
dXJuLCBPcmlnaW4oKSk7CisgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHBy
b2MpOworICAgICAgICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAg
ICB2YWx1ZVsxXSA9IDEzOworICAgICAgICBpbnZva2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsKKyAg
ICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDB4YmVlZikpOworICAgICAg
ICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNv
ZGUsIGZhbHNlKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAg
ICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Js
b2NrKiBzdWNjID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBmYWlsID0g
cHJvYy5hZGRCbG9jaygpOworICAgIAorICAgICAgICBWYWx1ZSogcHRyID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywg
QnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1
ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgQXRvbWljV2Vha0NBUywgT3JpZ2luKCksIHdpZHRo
LAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigp
LCB0eXBlLCA0MiksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJv
YywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgcHRyKSk7CisgICAg
ICAgIHJvb3QtPnNldFN1Y2Nlc3NvcnMoc3VjYywgZmFpbCk7CisgICAgCisgICAgICAgIHN1Y2Mt
PmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBzdG9yZU9wY29kZShH
UCwgd2lkdGgpLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHN1Y2MtPmFwcGVuZEludENvbnN0YW50
KHByb2MsIE9yaWdpbigpLCB0eXBlLCAxMDApLAorICAgICAgICAgICAgcHRyKTsKKyAgICAgICAg
c3VjYy0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAKKyAg
ICAgICAgZmFpbC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAg
ICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIFQgdmFs
dWVbMl07CisgICAgICAgIHZhbHVlWzBdID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7Cisg
ICAgICAgIHdoaWxlICh2YWx1ZVswXSA9PSA0MikKKyAgICAgICAgICAgIGludm9rZTx2b2lkPigq
Y29kZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4o
MTAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIHZhbHVlWzBd
ID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1
ZSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigzMDApKTsKKyAg
ICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5
KCpjb2RlLCB0cnVlKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOwor
ICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNp
Y0Jsb2NrKiBzdWNjID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBmYWls
ID0gcHJvYy5hZGRCbG9jaygpOworICAgIAorICAgICAgICBWYWx1ZSogcHRyID0gcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJv
YywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAorICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgIHByb2Ms
IEF0b21pY1dlYWtDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgcm9v
dC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAg
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUs
IDB4YmVlZiksCisgICAgICAgICAgICAgICAgICAgIHB0ciksCisgICAgICAgICAgICAgICAgcm9v
dC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIEludDMyLCAwKSkpOworICAgICAg
ICByb290LT5zZXRTdWNjZXNzb3JzKGZhaWwsIHN1Y2MpOworICAgIAorICAgICAgICBzdWNjLT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgc3RvcmVPcGNvZGUoR1As
IHdpZHRoKSwgT3JpZ2luKCksCisgICAgICAgICAgICBzdWNjLT5hcHBlbmRJbnRDb25zdGFudChw
cm9jLCBPcmlnaW4oKSwgdHlwZSwgMTAwKSwKKyAgICAgICAgICAgIHB0cik7CisgICAgICAgIHN1
Y2MtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAgCisgICAg
ICAgIGZhaWwtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAg
CisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBUIHZhbHVl
WzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9IDEzOworICAg
ICAgICB3aGlsZSAodmFsdWVbMF0gPT0gNDIpCisgICAgICAgICAgICBpbnZva2U8dm9pZD4oKmNv
ZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDEw
MCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICB2YWx1ZVswXSA9
IHN0YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAgIGludm9rZTx2b2lkPigqY29kZSwgdmFsdWUp
OworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7CisgICAg
ICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgq
Y29kZSwgdHJ1ZSk7CisgICAgfQorCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAg
ICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAgICAg
IHByb2MsIEF0b21pY1dlYWtDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAw
eGJlZWYpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOworICAgIAorICAgICAg
ICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAg
ICAgICAgdmFsdWVbMF0gPSA0MjsKKyAgICAgICAgdmFsdWVbMV0gPSAxMzsKKyAgICAgICAgd2hp
bGUgKCFpbnZva2U8Ym9vbD4oKmNvZGUsIHZhbHVlKSkgeyB9CisgICAgICAgIENIRUNLX0VRKHZh
bHVlWzBdLCBzdGF0aWNfY2FzdDxUPigweGJlZWYpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVb
MV0sIDEzKTsKKyAgICAKKyAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxUPigzMDApOwor
ICAgICAgICBDSEVDSyghaW52b2tlPGJvb2w+KCpjb2RlLCB2YWx1ZSkpOworICAgICAgICBDSEVD
S19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENIRUNLX0VRKHZh
bHVlWzFdLCAxMyk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwgdHJ1ZSk7Cisg
ICAgfQorCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAg
ICAgICAgICAgICAgICBwcm9jLCBBdG9taWNXZWFrQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCisgICAg
ICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0
eXBlLCA0MiksCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHBy
b2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCkpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCAwKSkpOworICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxl
UHJvYyhwcm9jKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA0MjsK
KyAgICAgICAgdmFsdWVbMV0gPSAxMzsKKyAgICAgICAgd2hpbGUgKGludm9rZTxib29sPigqY29k
ZSwgdmFsdWUpKSB7IH0KKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+
KDB4YmVlZikpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgIAorICAgICAg
ICB2YWx1ZVswXSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAgIENIRUNLKGludm9rZTxi
b29sPigqY29kZSwgdmFsdWUpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19j
YXN0PFQ+KDMwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICBj
aGVja015RGlzYXNzZW1ibHkoKmNvZGUsIHRydWUpOworICAgIH0KKworICAgIHsKKyAgICAgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVl
PigKKyAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNXZWFrQ0FTLCBPcmlnaW4oKSwgd2lkdGgs
CisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCks
IHR5cGUsIDQyKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9j
LCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCksCisgICAgICAgICAgICAgICAgNDIpKTsKKyAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29t
cGlsZVByb2MocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBdID0g
NDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIHdoaWxlICghaW52b2tlPGJvb2w+
KCpjb2RlLCBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KHZhbHVlKSAtIDQyKSkgeyB9CisgICAgICAg
IENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigweGJlZWYpKTsKKyAgICAgICAgQ0hF
Q0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAKKyAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2Fz
dDxUPigzMDApOworICAgICAgICBDSEVDSyghaW52b2tlPGJvb2w+KCpjb2RlLCBiaXR3aXNlX2Nh
c3Q8aW50cHRyX3Q+KHZhbHVlKSAtIDQyKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBz
dGF0aWNfY2FzdDxUPigzMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAg
ICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlLCB0cnVlKTsKKyAgICB9Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+Cit2b2lkIHRlc3RBdG9taWNTdHJvbmdDQVMoKQoreworICAgIFR5cGUg
dHlwZSA9IE5hdGl2ZVRyYWl0czxUPjo6dHlwZTsKKyAgICBXaWR0aCB3aWR0aCA9IE5hdGl2ZVRy
YWl0czxUPjo6d2lkdGg7CisKKyAgICBhdXRvIGNoZWNrTXlEaXNhc3NlbWJseSA9IFsmXSAoQ29t
cGlsYXRpb24mIGNvbXBpbGF0aW9uLCBib29sIGZlbmNlZCkgeworICAgICAgICBpZiAoaXNYODYo
KSkgeworICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJsb2Nr
Iik7CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImNtcHhj
aGciKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChmZW5jZWQpIHsKKyAgICAg
ICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImxkYXgiKTsKKyAg
ICAgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgInN0bHgiKTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rp
b24oY29tcGlsYXRpb24sICJsZHgiKTsKKyAgICAgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVj
dGlvbihjb21waWxhdGlvbiwgInN0eCIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fTsKKworICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIHN1Y2MgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIGZhaWwgPSBwcm9jLmFkZEJsb2NrKCk7
CisgICAgCisgICAgICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigp
LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBw
cm9jLCBFcXVhbCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0
b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywgQXRvbWljU3Ryb25nQ0FTLCBP
cmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0
YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCisgICAgICAgICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAgICAg
ICAgICAgICAgICAgICBwdHIpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0
YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MikpKTsKKyAgICAgICAgcm9vdC0+c2V0U3VjY2Vz
c29ycyhzdWNjLCBmYWlsKTsKKyAgICAKKyAgICAgICAgc3VjYy0+YXBwZW5kTmV3PE1lbW9yeVZh
bHVlPigKKyAgICAgICAgICAgIHByb2MsIHN0b3JlT3Bjb2RlKEdQLCB3aWR0aCksIE9yaWdpbigp
LAorICAgICAgICAgICAgc3VjYy0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5
cGUsIDEwMCksCisgICAgICAgICAgICBwdHIpOworICAgICAgICBzdWNjLT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworICAgIAorICAgICAgICBmYWlsLT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworICAgIAorICAgICAgICBhdXRvIGNv
ZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFs
dWVbMF0gPSA0MjsKKyAgICAgICAgdmFsdWVbMV0gPSAxMzsKKyAgICAgICAgaW52b2tlPHZvaWQ+
KCpjb2RlLCB2YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxU
PigxMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgdmFsdWVb
MF0gPSBzdGF0aWNfY2FzdDxUPigzMDApOworICAgICAgICBpbnZva2U8dm9pZD4oKmNvZGUsIHZh
bHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDMwMCkpOwor
ICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICBjaGVja015RGlzYXNzZW1i
bHkoKmNvZGUsIHRydWUpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJh
c2ljQmxvY2sqIHN1Y2MgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIGZh
aWwgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgCisgICAgICAgIFZhbHVlKiBwdHIgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBw
cm9jLCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgICAgICBwcm9jLCBFcXVhbCwgT3JpZ2luKCksCisgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJv
YywgQXRvbWljU3Ryb25nQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCisgICAg
ICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0
eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAgICAgICBwdHIsIDAsIEhlYXBSYW5nZSg0Miks
IEhlYXBSYW5nZSgpKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChw
cm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpKSk7CisgICAgICAgIHJvb3QtPnNldFN1Y2Nlc3NvcnMo
c3VjYywgZmFpbCk7CisgICAgCisgICAgICAgIHN1Y2MtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
CisgICAgICAgICAgICBwcm9jLCBzdG9yZU9wY29kZShHUCwgd2lkdGgpLCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgIHN1Y2MtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAx
MDApLAorICAgICAgICAgICAgcHRyKTsKKyAgICAgICAgc3VjYy0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAKKyAgICAgICAgZmFpbC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAKKyAgICAgICAgYXV0byBjb2RlID0g
Y29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBd
ID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIGludm9rZTx2b2lkPigqY29k
ZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMTAw
KSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIHZhbHVlWzBdID0g
c3RhdGljX2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7
CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigzMDApKTsKKyAgICAg
ICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpj
b2RlLCBmYWxzZSk7CisgICAgfQorCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAg
ICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNC
bG9jayogc3VjYyA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogZmFpbCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICAKKyAgICAgICAgVmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2Ms
IEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICAgICAgICAgIHByb2MsIE5vdEVxdWFsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBwcm9j
LCBBdG9taWNTdHJvbmdDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAg
cm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAg
ICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5
cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgICAgIHB0ciksCisgICAgICAgICAgICAgICAg
cm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSkpOworICAg
ICAgICByb290LT5zZXRTdWNjZXNzb3JzKGZhaWwsIHN1Y2MpOworICAgIAorICAgICAgICBzdWNj
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgc3RvcmVPcGNvZGUo
R1AsIHdpZHRoKSwgT3JpZ2luKCksCisgICAgICAgICAgICBzdWNjLT5hcHBlbmRJbnRDb25zdGFu
dChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMTAwKSwKKyAgICAgICAgICAgIHB0cik7CisgICAgICAg
IHN1Y2MtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAgCisg
ICAgICAgIGZhaWwtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7Cisg
ICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBUIHZh
bHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9IDEzOwor
ICAgICAgICBpbnZva2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFs
dWVbMF0sIHN0YXRpY19jYXN0PFQ+KDEwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwg
MTMpOworICAgICAgICB2YWx1ZVswXSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAgIGlu
dm9rZTx2b2lkPigqY29kZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3Rh
dGljX2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAg
ICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwgdHJ1ZSk7CisgICAgfQorCisgICAgeworICAg
ICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWlj
VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEF0b21pY1N0cm9uZ0NBUywgT3JpZ2luKCks
IHdpZHRoLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9y
aWdpbigpLCB0eXBlLCA0MiksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3Rh
bnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKSk7CisgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2Mp
OworICAgICAgICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2
YWx1ZVsxXSA9IDEzOworICAgICAgICBDSEVDS19FUShpbnZva2U8dHlwZW5hbWUgTmF0aXZlVHJh
aXRzPFQ+OjpDYW5vbmljYWxUeXBlPigqY29kZSwgdmFsdWUpLCA0Mik7CisgICAgICAgIENIRUNL
X0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigweGJlZWYpKTsKKyAgICAgICAgQ0hFQ0tfRVEo
dmFsdWVbMV0sIDEzKTsKKyAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxUPigzMDApOwor
ICAgICAgICBDSEVDS19FUShpbnZva2U8dHlwZW5hbWUgTmF0aXZlVHJhaXRzPFQ+OjpDYW5vbmlj
YWxUeXBlPigqY29kZSwgdmFsdWUpLCBzdGF0aWNfY2FzdDx0eXBlbmFtZSBOYXRpdmVUcmFpdHM8
VD46OkNhbm9uaWNhbFR5cGU+KHN0YXRpY19jYXN0PFQ+KDMwMCkpKTsKKyAgICAgICAgQ0hFQ0tf
RVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDMwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1
ZVsxXSwgMTMpOworICAgICAgICB2YWx1ZVswXSA9IHN0YXRpY19jYXN0PFQ+KC0xKTsKKyAgICAg
ICAgQ0hFQ0tfRVEoaW52b2tlPHR5cGVuYW1lIE5hdGl2ZVRyYWl0czxUPjo6Q2Fub25pY2FsVHlw
ZT4oKmNvZGUsIHZhbHVlKSwgc3RhdGljX2Nhc3Q8dHlwZW5hbWUgTmF0aXZlVHJhaXRzPFQ+OjpD
YW5vbmljYWxUeXBlPihzdGF0aWNfY2FzdDxUPigtMSkpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFs
dWVbMF0sIHN0YXRpY19jYXN0PFQ+KC0xKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAx
Myk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwgdHJ1ZSk7CisgICAgfQorCisg
ICAgeworICAgICAgICAvLyBUZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY5ODY3LgorICAgIAorICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEJpdFhv
ciwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVl
PigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywgQXRvbWljU3Ryb25nQ0FTLCBPcmlnaW4oKSwg
d2lkdGgsCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2Ms
IE9yaWdpbigpLCB0eXBlLCA0MiksCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZElu
dENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENv
bnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAxKSkpOworICAgIAorICAgICAgICB0eXBlbmFt
ZSBOYXRpdmVUcmFpdHM8VD46OkNhbm9uaWNhbFR5cGUgb25lID0gMTsKKyAgICAKKyAgICAgICAg
YXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAg
ICAgIHZhbHVlWzBdID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIENIRUNL
X0VRKGludm9rZTx0eXBlbmFtZSBOYXRpdmVUcmFpdHM8VD46OkNhbm9uaWNhbFR5cGU+KCpjb2Rl
LCB2YWx1ZSksIDQyIF4gb25lKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19j
YXN0PFQ+KDB4YmVlZikpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAg
ICB2YWx1ZVswXSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAgIENIRUNLX0VRKGludm9r
ZTx0eXBlbmFtZSBOYXRpdmVUcmFpdHM8VD46OkNhbm9uaWNhbFR5cGU+KCpjb2RlLCB2YWx1ZSks
IHN0YXRpY19jYXN0PHR5cGVuYW1lIE5hdGl2ZVRyYWl0czxUPjo6Q2Fub25pY2FsVHlwZT4oc3Rh
dGljX2Nhc3Q8VD4oMzAwKSkgXiBvbmUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3Rh
dGljX2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAg
ICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oLTEpOworICAgICAgICBDSEVDS19FUShpbnZv
a2U8dHlwZW5hbWUgTmF0aXZlVHJhaXRzPFQ+OjpDYW5vbmljYWxUeXBlPigqY29kZSwgdmFsdWUp
LCBzdGF0aWNfY2FzdDx0eXBlbmFtZSBOYXRpdmVUcmFpdHM8VD46OkNhbm9uaWNhbFR5cGU+KHN0
YXRpY19jYXN0PFQ+KC0xKSkgXiBvbmUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3Rh
dGljX2Nhc3Q8VD4oLTEpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAg
ICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlLCB0cnVlKTsKKyAgICB9CisKKyAgICB7CisgICAg
ICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAorICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgIHByb2Ms
IEF0b21pY1N0cm9uZ0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlw
ZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwg
NDIpKSk7CisgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAg
ICAgICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsx
XSA9IDEzOworICAgICAgICBDSEVDSyhpbnZva2U8Ym9vbD4oKmNvZGUsIHZhbHVlKSk7CisgICAg
ICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigweGJlZWYpKTsKKyAgICAgICAg
Q0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxU
PigzMDApOworICAgICAgICBDSEVDSyghaW52b2tlPGJvb2w+KCpjb2RlLCB2YWx1ZSkpOworICAg
ICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENI
RUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwg
dHJ1ZSk7CisgICAgfQorCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEVxdWFs
LCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgICAgICAgICBwcm9jLCBOb3RFcXVhbCwgT3JpZ2luKCksCisgICAgICAgICAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAg
ICAgICBwcm9jLCBBdG9taWNTdHJvbmdDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBl
LCA0MiksCisgICAgICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChw
cm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKSksCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0
YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MikpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSkpOworICAgICAgICAKKyAg
ICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07
CisgICAgICAgIHZhbHVlWzBdID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAg
IENIRUNLKGludm9rZTxib29sPigqY29kZSwgdmFsdWUpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFs
dWVbMF0sIHN0YXRpY19jYXN0PFQ+KDB4YmVlZikpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsx
XSwgMTMpOworICAgICAgICB2YWx1ZVswXSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAg
IENIRUNLKCFpbnZva2U8Ym9vbD4oKmNvZGUsICZ2YWx1ZSkpOworICAgICAgICBDSEVDS19FUSh2
YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFd
LCAxMyk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwgdHJ1ZSk7CisgICAgfQor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordm9pZCB0ZXN0QXRvbWljWGNoZyhCMzo6T3Bjb2Rl
IG9wY29kZSkKK3sKKyAgICBUeXBlIHR5cGUgPSBOYXRpdmVUcmFpdHM8VD46OnR5cGU7CisgICAg
V2lkdGggd2lkdGggPSBOYXRpdmVUcmFpdHM8VD46OndpZHRoOworCisgICAgYXV0byBkb1RoZU1h
dGggPSBbJl0gKFQmIG1lbW9yeSwgVCBvcGVyYW5kKSAtPiBUIHsKKyAgICAgICAgVCBvbGRWYWx1
ZSA9IG1lbW9yeTsKKyAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICAgICAgY2FzZSBBdG9t
aWNYY2hnQWRkOgorICAgICAgICAgICAgbWVtb3J5ICs9IG9wZXJhbmQ7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgICAgICAgICAgbWVtb3J5ICY9
IG9wZXJhbmQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnT3I6
CisgICAgICAgICAgICBtZW1vcnkgfD0gb3BlcmFuZDsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgICAgICAgICBtZW1vcnkgLT0gb3BlcmFuZDsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgICAg
ICAgICBtZW1vcnkgXj0gb3BlcmFuZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEF0b21pY1hjaGc6CisgICAgICAgICAgICBtZW1vcnkgPSBvcGVyYW5kOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBvbGRWYWx1ZTsKKyAgICB9Owor
CisgICAgYXV0byBvbGRWYWx1ZSA9IFsmXSAoVCBtZW1vcnksIFQgb3BlcmFuZCkgLT4gVCB7Cisg
ICAgICAgIHJldHVybiBkb1RoZU1hdGgobWVtb3J5LCBvcGVyYW5kKTsKKyAgICB9OworCisgICAg
YXV0byBuZXdWYWx1ZSA9IFsmXSAoVCBtZW1vcnksIFQgb3BlcmFuZCkgLT4gVCB7CisgICAgICAg
IGRvVGhlTWF0aChtZW1vcnksIG9wZXJhbmQpOworICAgICAgICByZXR1cm4gbWVtb3J5OworICAg
IH07CisKKyAgICBhdXRvIGNoZWNrTXlEaXNhc3NlbWJseSA9IFsmXSAoQ29tcGlsYXRpb24mIGNv
bXBpbGF0aW9uLCBib29sIGZlbmNlZCkgeworICAgICAgICBpZiAoaXNYODYoKSkKKyAgICAgICAg
ICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAibG9jayIpOworICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIGlmIChmZW5jZWQpIHsKKyAgICAgICAgICAgICAgICBjaGVja1Vz
ZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImxkYXgiKTsKKyAgICAgICAgICAgICAgICBjaGVj
a1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgInN0bHgiKTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJs
ZHgiKTsKKyAgICAgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwg
InN0eCIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKKworICAgIHsKKyAgICAg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1Zh
bHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBvcGNvZGUsIE9yaWdpbigpLCB3aWR0aCwKKyAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlw
ZSwgMSksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSk7CisKKyAgICAgICAgYXV0
byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAg
IHZhbHVlWzBdID0gNTsKKyAgICAgICAgdmFsdWVbMV0gPSAxMDA7CisgICAgICAgIENIRUNLX0VR
KGludm9rZTxUPigqY29kZSwgdmFsdWUpLCBvbGRWYWx1ZSg1LCAxKSk7CisgICAgICAgIENIRUNL
X0VRKHZhbHVlWzBdLCBuZXdWYWx1ZSg1LCAxKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFd
LCAxMDApOworICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUsIHRydWUpOworICAgIH0K
KworICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBvcGNvZGUsIE9yaWdp
bigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9j
LCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkp
OworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBUIHZh
bHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDU7CisgICAgICAgIHZhbHVlWzFdID0gMTAwOwor
ICAgICAgICBDSEVDS19FUShpbnZva2U8VD4oKmNvZGUsIHZhbHVlKSwgb2xkVmFsdWUoNSwgNDIp
KTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIG5ld1ZhbHVlKDUsIDQyKSk7CisgICAgICAg
IENIRUNLX0VRKHZhbHVlWzFdLCAxMDApOworICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNv
ZGUsIHRydWUpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBvcGNvZGUsIE9yaWdpbigp
LCB3aWR0aCwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdp
bigpLCB0eXBlLCA0MiksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworCisgICAgICAg
IGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBUIHZhbHVlWzJdOworICAg
ICAgICB2YWx1ZVswXSA9IDU7CisgICAgICAgIHZhbHVlWzFdID0gMTAwOworICAgICAgICBpbnZv
a2U8VD4oKmNvZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIG5ld1ZhbHVl
KDUsIDQyKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMDApOworICAgICAgICBjaGVj
a015RGlzYXNzZW1ibHkoKmNvZGUsIHRydWUpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICBwcm9j
LCBvcGNvZGUsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENv
bnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCksCisgICAgICAgICAgICAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoKSk7CisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisKKyAg
ICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07
CisgICAgICAgIHZhbHVlWzBdID0gNTsKKyAgICAgICAgdmFsdWVbMV0gPSAxMDA7CisgICAgICAg
IGludm9rZTxUPigqY29kZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgbmV3
VmFsdWUoNSwgNDIpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEwMCk7CisgICAgICAg
IGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwgZmFsc2UpOworICAgIH0KK30KKwordm9pZCBhZGRB
dG9taWNUZXN0cyhjb25zdCBjaGFyKiBmaWx0ZXIsIERlcXVlPFJlZlB0cjxTaGFyZWRUYXNrPHZv
aWQoKT4+PiYgdGFza3MpCit7CisgICAgUlVOKHRlc3RBdG9taWNXZWFrQ0FTPGludDhfdD4oKSk7
CisgICAgUlVOKHRlc3RBdG9taWNXZWFrQ0FTPGludDE2X3Q+KCkpOworICAgIFJVTih0ZXN0QXRv
bWljV2Vha0NBUzxpbnQzMl90PigpKTsKKyAgICBSVU4odGVzdEF0b21pY1dlYWtDQVM8aW50NjRf
dD4oKSk7CisgICAgUlVOKHRlc3RBdG9taWNTdHJvbmdDQVM8aW50OF90PigpKTsKKyAgICBSVU4o
dGVzdEF0b21pY1N0cm9uZ0NBUzxpbnQxNl90PigpKTsKKyAgICBSVU4odGVzdEF0b21pY1N0cm9u
Z0NBUzxpbnQzMl90PigpKTsKKyAgICBSVU4odGVzdEF0b21pY1N0cm9uZ0NBUzxpbnQ2NF90Pigp
KTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50OF90PihBdG9taWNYY2hnQWRkKSk7CisgICAg
UlVOKHRlc3RBdG9taWNYY2hnPGludDE2X3Q+KEF0b21pY1hjaGdBZGQpKTsKKyAgICBSVU4odGVz
dEF0b21pY1hjaGc8aW50MzJfdD4oQXRvbWljWGNoZ0FkZCkpOworICAgIFJVTih0ZXN0QXRvbWlj
WGNoZzxpbnQ2NF90PihBdG9taWNYY2hnQWRkKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGlu
dDhfdD4oQXRvbWljWGNoZ0FuZCkpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQxNl90PihB
dG9taWNYY2hnQW5kKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDMyX3Q+KEF0b21pY1hj
aGdBbmQpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50NjRfdD4oQXRvbWljWGNoZ0FuZCkp
OworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ4X3Q+KEF0b21pY1hjaGdPcikpOworICAgIFJV
Tih0ZXN0QXRvbWljWGNoZzxpbnQxNl90PihBdG9taWNYY2hnT3IpKTsKKyAgICBSVU4odGVzdEF0
b21pY1hjaGc8aW50MzJfdD4oQXRvbWljWGNoZ09yKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hn
PGludDY0X3Q+KEF0b21pY1hjaGdPcikpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ4X3Q+
KEF0b21pY1hjaGdTdWIpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50MTZfdD4oQXRvbWlj
WGNoZ1N1YikpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQzMl90PihBdG9taWNYY2hnU3Vi
KSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDY0X3Q+KEF0b21pY1hjaGdTdWIpKTsKKyAg
ICBSVU4odGVzdEF0b21pY1hjaGc8aW50OF90PihBdG9taWNYY2hnWG9yKSk7CisgICAgUlVOKHRl
c3RBdG9taWNYY2hnPGludDE2X3Q+KEF0b21pY1hjaGdYb3IpKTsKKyAgICBSVU4odGVzdEF0b21p
Y1hjaGc8aW50MzJfdD4oQXRvbWljWGNoZ1hvcikpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxp
bnQ2NF90PihBdG9taWNYY2hnWG9yKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDhfdD4o
QXRvbWljWGNoZykpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQxNl90PihBdG9taWNYY2hn
KSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDMyX3Q+KEF0b21pY1hjaGcpKTsKKyAgICBS
VU4odGVzdEF0b21pY1hjaGc8aW50NjRfdD4oQXRvbWljWGNoZykpOworfQorCit0ZW1wbGF0ZTxC
Mzo6VHlwZSB0eXBlLCB0eXBlbmFtZSBDVHlwZSwgdHlwZW5hbWUgSW5wdXRUeXBlPgordm9pZCB0
ZXN0TG9hZChCMzo6T3Bjb2RlIG9wY29kZSwgSW5wdXRUeXBlIHZhbHVlKQoreworICAgIC8vIFNp
bXBsZSBsb2FkIGZyb20gYW4gYWJzb2x1dGUgYWRkcmVzcy4KKyAgICB7CisgICAgICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2Ms
IFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFs
dWU+KAorICAgICAgICAgICAgICAgIHByb2MsIG9wY29kZSwgdHlwZSwgT3JpZ2luKCksCisgICAg
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCAmdmFsdWUpKSk7CisKKyAgICAgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxD
VHlwZT4ocHJvYyksIG1vZGVsTG9hZDxDVHlwZT4odmFsdWUpKSk7CisgICAgfQorCisgICAgLy8g
U2ltcGxlIGxvYWQgZnJvbSBhbiBhZGRyZXNzIGluIGEgcmVnaXN0ZXIuCisgICAgeworICAgICAg
ICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1l
bW9yeVZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBvcGNvZGUsIHR5cGUsIE9yaWdpbigp
LAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOworCisgICAgICAgIENIRUNLKGlz
SWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48Q1R5cGU+KHByb2MsICZ2YWx1ZSksIG1vZGVsTG9hZDxD
VHlwZT4odmFsdWUpKSk7CisgICAgfQorCisgICAgLy8gU2ltcGxlIGxvYWQgZnJvbSBhbiBhZGRy
ZXNzIGluIGEgcmVnaXN0ZXIsIGF0IGFuIG9mZnNldC4KKyAgICB7CisgICAgICAgIFByb2NlZHVy
ZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KAorICAgICAgICAgICAgICAgIHByb2MsIG9wY29kZSwgdHlwZSwgT3JpZ2luKCksCisgICAgICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAorICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGlu
dDMyX3Q+KHNpemVvZihJbnB1dFR5cGUpKSkpOworCisgICAgICAgIENIRUNLKGlzSWRlbnRpY2Fs
KGNvbXBpbGVBbmRSdW48Q1R5cGU+KHByb2MsICZ2YWx1ZSAtIDEpLCBtb2RlbExvYWQ8Q1R5cGU+
KHZhbHVlKSkpOworICAgIH0KKworICAgIC8vIExvYWQgZnJvbSBhIHNpbXBsZSBiYXNlLWluZGV4
IHdpdGggdmFyaW91cyBzY2FsZXMuCisgICAgZm9yICh1bnNpZ25lZCBsb2dTY2FsZSA9IDA7IGxv
Z1NjYWxlIDw9IDM7ICsrbG9nU2NhbGUpIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAg
ICAgICAgcHJvYywgb3Bjb2RlLCB0eXBlLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdp
bigpLAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCisgICAgICAgICAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgICAgICBw
cm9jLCBTaGwsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjEpLAorICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIGxvZ1NjYWxlKSkpKSk7CisKKyAgICAgICAgQ0hFQ0soaXNJZGVu
dGljYWwoY29tcGlsZUFuZFJ1bjxDVHlwZT4ocHJvYywgJnZhbHVlIC0gMiwgKHNpemVvZihJbnB1
dFR5cGUpICogMikgPj4gbG9nU2NhbGUpLCBtb2RlbExvYWQ8Q1R5cGU+KHZhbHVlKSkpOworICAg
IH0KKworICAgIC8vIExvYWQgZnJvbSBhIHNpbXBsZSBiYXNlLWluZGV4IHdpdGggdmFyaW91cyBz
Y2FsZXMsIGJ1dCBjb21tdXRlZC4KKyAgICBmb3IgKHVuc2lnbmVkIGxvZ1NjYWxlID0gMDsgbG9n
U2NhbGUgPD0gMzsgKytsb2dTY2FsZSkgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAg
ICAgICBwcm9jLCBvcGNvZGUsIHR5cGUsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2lu
KCksCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
ICAgICAgICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpLAorICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGxvZ1NjYWxlKSksCisgICAgICAg
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpKTsKKworICAgICAgICBDSEVDSyhpc0lkZW50
aWNhbChjb21waWxlQW5kUnVuPENUeXBlPihwcm9jLCAmdmFsdWUgLSAyLCAoc2l6ZW9mKElucHV0
VHlwZSkgKiAyKSA+PiBsb2dTY2FsZSksIG1vZGVsTG9hZDxDVHlwZT4odmFsdWUpKSk7CisgICAg
fQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordm9pZCB0ZXN0TG9hZChCMzo6T3Bjb2RlIG9w
Y29kZSwgaW50MzJfdCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdGVzdExvYWQ8SW50MzIsIFQ+KG9w
Y29kZSwgdmFsdWUpOworfQorCit0ZW1wbGF0ZTxCMzo6VHlwZSB0eXBlLCB0eXBlbmFtZSBUPgor
dm9pZCB0ZXN0TG9hZChUIHZhbHVlKQoreworICAgIHJldHVybiB0ZXN0TG9hZDx0eXBlLCBUPihM
b2FkLCB2YWx1ZSk7Cit9CisKK3ZvaWQgYWRkTG9hZFRlc3RzKGNvbnN0IGNoYXIqIGZpbHRlciwg
RGVxdWU8UmVmUHRyPFNoYXJlZFRhc2s8dm9pZCgpPj4+JiB0YXNrcykKK3sKKyAgICBSVU4odGVz
dExvYWQ8SW50MzI+KDYwKSk7CisgICAgUlVOKHRlc3RMb2FkPEludDMyPigtNjApKTsKKyAgICBS
VU4odGVzdExvYWQ8SW50MzI+KDEwMDApKTsKKyAgICBSVU4odGVzdExvYWQ8SW50MzI+KC0xMDAw
KSk7CisgICAgUlVOKHRlc3RMb2FkPEludDMyPigxMDAwMDAwKSk7CisgICAgUlVOKHRlc3RMb2Fk
PEludDMyPigtMTAwMDAwMCkpOworICAgIFJVTih0ZXN0TG9hZDxJbnQzMj4oMTAwMDAwMDAwMCkp
OworICAgIFJVTih0ZXN0TG9hZDxJbnQzMj4oLTEwMDAwMDAwMDApKTsKKyAgICBSVU5fVU5BUlko
dGVzdExvYWQ8SW50NjQ+LCBpbnQ2NE9wZXJhbmRzKCkpOworICAgIFJVTl9VTkFSWSh0ZXN0TG9h
ZDxGbG9hdD4sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX1VOQVJZ
KHRlc3RMb2FkPERvdWJsZT4sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAg
IAorICAgIFJVTih0ZXN0TG9hZDxpbnQ4X3Q+KExvYWQ4UywgNjApKTsKKyAgICBSVU4odGVzdExv
YWQ8aW50OF90PihMb2FkOFMsIC02MCkpOworICAgIFJVTih0ZXN0TG9hZDxpbnQ4X3Q+KExvYWQ4
UywgMTAwMCkpOworICAgIFJVTih0ZXN0TG9hZDxpbnQ4X3Q+KExvYWQ4UywgLTEwMDApKTsKKyAg
ICBSVU4odGVzdExvYWQ8aW50OF90PihMb2FkOFMsIDEwMDAwMDApKTsKKyAgICBSVU4odGVzdExv
YWQ8aW50OF90PihMb2FkOFMsIC0xMDAwMDAwKSk7CisgICAgUlVOKHRlc3RMb2FkPGludDhfdD4o
TG9hZDhTLCAxMDAwMDAwMDAwKSk7CisgICAgUlVOKHRlc3RMb2FkPGludDhfdD4oTG9hZDhTLCAt
MTAwMDAwMDAwMCkpOworICAgIAorICAgIFJVTih0ZXN0TG9hZDx1aW50OF90PihMb2FkOFosIDYw
KSk7CisgICAgUlVOKHRlc3RMb2FkPHVpbnQ4X3Q+KExvYWQ4WiwgLTYwKSk7CisgICAgUlVOKHRl
c3RMb2FkPHVpbnQ4X3Q+KExvYWQ4WiwgMTAwMCkpOworICAgIFJVTih0ZXN0TG9hZDx1aW50OF90
PihMb2FkOFosIC0xMDAwKSk7CisgICAgUlVOKHRlc3RMb2FkPHVpbnQ4X3Q+KExvYWQ4WiwgMTAw
MDAwMCkpOworICAgIFJVTih0ZXN0TG9hZDx1aW50OF90PihMb2FkOFosIC0xMDAwMDAwKSk7Cisg
ICAgUlVOKHRlc3RMb2FkPHVpbnQ4X3Q+KExvYWQ4WiwgMTAwMDAwMDAwMCkpOworICAgIFJVTih0
ZXN0TG9hZDx1aW50OF90PihMb2FkOFosIC0xMDAwMDAwMDAwKSk7CisgICAgCisgICAgUlVOKHRl
c3RMb2FkPGludDE2X3Q+KExvYWQxNlMsIDYwKSk7CisgICAgUlVOKHRlc3RMb2FkPGludDE2X3Q+
KExvYWQxNlMsIC02MCkpOworICAgIFJVTih0ZXN0TG9hZDxpbnQxNl90PihMb2FkMTZTLCAxMDAw
KSk7CisgICAgUlVOKHRlc3RMb2FkPGludDE2X3Q+KExvYWQxNlMsIC0xMDAwKSk7CisgICAgUlVO
KHRlc3RMb2FkPGludDE2X3Q+KExvYWQxNlMsIDEwMDAwMDApKTsKKyAgICBSVU4odGVzdExvYWQ8
aW50MTZfdD4oTG9hZDE2UywgLTEwMDAwMDApKTsKKyAgICBSVU4odGVzdExvYWQ8aW50MTZfdD4o
TG9hZDE2UywgMTAwMDAwMDAwMCkpOworICAgIFJVTih0ZXN0TG9hZDxpbnQxNl90PihMb2FkMTZT
LCAtMTAwMDAwMDAwMCkpOworICAgIAorICAgIFJVTih0ZXN0TG9hZDx1aW50MTZfdD4oTG9hZDE2
WiwgNjApKTsKKyAgICBSVU4odGVzdExvYWQ8dWludDE2X3Q+KExvYWQxNlosIC02MCkpOworICAg
IFJVTih0ZXN0TG9hZDx1aW50MTZfdD4oTG9hZDE2WiwgMTAwMCkpOworICAgIFJVTih0ZXN0TG9h
ZDx1aW50MTZfdD4oTG9hZDE2WiwgLTEwMDApKTsKKyAgICBSVU4odGVzdExvYWQ8dWludDE2X3Q+
KExvYWQxNlosIDEwMDAwMDApKTsKKyAgICBSVU4odGVzdExvYWQ8dWludDE2X3Q+KExvYWQxNlos
IC0xMDAwMDAwKSk7CisgICAgUlVOKHRlc3RMb2FkPHVpbnQxNl90PihMb2FkMTZaLCAxMDAwMDAw
MDAwKSk7CisgICAgUlVOKHRlc3RMb2FkPHVpbnQxNl90PihMb2FkMTZaLCAtMTAwMDAwMDAwMCkp
OworfQorCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9zaGVsbC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9z
aGVsbC9DTWFrZUxpc3RzLnR4dAppbmRleCBmMWNhZTVmZmQ4Y2ZkMjBjYzZjNDY3YzMyZmE1NTdm
MTBlODA0MWUxLi5iOWMyMzMzNWE3MGVkZGI2MDBmZjViMjMzZWUzZTBlM2EzZDA3ZGRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvc2hlbGwvQ01ha2VMaXN0cy50eHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3NoZWxsL0NNYWtlTGlzdHMudHh0CkBAIC01Miw3ICs1Miwx
NiBAQCBpZiAoREVWRUxPUEVSX01PREUpCiAgICAgc2V0KHRlc3RSZWdFeHBfUFJJVkFURV9JTkNM
VURFX0RJUkVDVE9SSUVTICR7anNjX1BSSVZBVEVfSU5DTFVERV9ESVJFQ1RPUklFU30pCiAgICAg
c2V0KHRlc3RSZWdFeHBfTElCUkFSSUVTIFdlYktpdDo6SmF2YVNjcmlwdENvcmUpCiAKLSAgICBz
ZXQodGVzdGIzX1NPVVJDRVMgLi4vYjMvdGVzdGIzLmNwcCkKKyAgICBzZXQodGVzdGIzX1NPVVJD
RVMKKyAgICAgICAgLi4vYjMvdGVzdGIzXzEuY3BwCisgICAgICAgIC4uL2IzL3Rlc3RiM18yLmNw
cAorICAgICAgICAuLi9iMy90ZXN0YjNfMy5jcHAKKyAgICAgICAgLi4vYjMvdGVzdGIzXzQuY3Bw
CisgICAgICAgIC4uL2IzL3Rlc3RiM181LmNwcAorICAgICAgICAuLi9iMy90ZXN0YjNfNi5jcHAK
KyAgICAgICAgLi4vYjMvdGVzdGIzXzcuY3BwCisgICAgICAgIC4uL2IzL3Rlc3RiM184LmNwcAor
ICAgICkKICAgICBzZXQodGVzdGIzX0RFRklOSVRJT05TICR7anNjX1BSSVZBVEVfREVGSU5JVElP
TlN9KQogICAgIHNldCh0ZXN0YjNfUFJJVkFURV9JTkNMVURFX0RJUkVDVE9SSUVTICR7anNjX1BS
SVZBVEVfSU5DTFVERV9ESVJFQ1RPUklFU30pCiAgICAgc2V0KHRlc3RiM19MSUJSQVJJRVMgV2Vi
S2l0OjpKYXZhU2NyaXB0Q29yZSkK
</data>
<flag name="review"
          id="391063"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
      

    </bug>

</bugzilla>