<?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>117547</bug_id>
          
          <creation_ts>2013-06-12 08:34:11 -0700</creation_ts>
          <short_desc>Support byte and octet types in bindings generators</short_desc>
          <delta_ts>2013-06-13 11:13:41 -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>Bindings</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.khronos.org/registry/typedarray/specs/latest/#8</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ggaren</cc>
    
    <cc>haraken</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>mrobinson</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>899559</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-06-12 08:34:11 -0700</bug_when>
    <thetext>The JSC bindings generator does not currently support the &quot;byte&quot; and &quot;octet&quot; IDL types:
http://dev.w3.org/2006/webapi/WebIDL/#idl-byte
http://dev.w3.org/2006/webapi/WebIDL/#idl-octet

This forces us to use custom code for DataView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899570</commentid>
    <comment_count>1</comment_count>
      <attachid>204445</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-06-12 09:07:10 -0700</bug_when>
    <thetext>Created attachment 204445
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899571</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-12 09:09:39 -0700</bug_when>
    <thetext>Attachment 204445 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/bindings/js/JSDataViewCustom.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorCPP.pm&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorJS.pm&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorObjC.pm&apos;, u&apos;Source/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm&apos;, u&apos;Source/WebCore/bindings/scripts/test/TestObj.idl&apos;, u&apos;Source/WebCore/html/canvas/DataView.idl&apos;]&quot; exit_code: 1
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:613:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:615:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:616:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:617:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:620:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:622:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:624:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:625:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:626:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:629:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1812:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1814:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 12 in 14 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>899588</commentid>
    <comment_count>3</comment_count>
      <attachid>204452</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-06-12 09:55:06 -0700</bug_when>
    <thetext>Created attachment 204452
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899589</commentid>
    <comment_count>4</comment_count>
      <attachid>204453</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-06-12 09:55:36 -0700</bug_when>
    <thetext>Created attachment 204453
JSDataView.cpp diff</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899592</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-12 09:58:05 -0700</bug_when>
    <thetext>Attachment 204452 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/bindings/js/JSDataViewCustom.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorCPP.pm&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorJS.pm&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorObjC.pm&apos;, u&apos;Source/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm&apos;, u&apos;Source/WebCore/bindings/scripts/test/TestObj.idl&apos;, u&apos;Source/WebCore/html/canvas/DataView.idl&apos;]&quot; exit_code: 1
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:613:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:615:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:616:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:617:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:620:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:622:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:624:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:625:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:626:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:629:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 10 in 15 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>899879</commentid>
    <comment_count>6</comment_count>
      <attachid>204452</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-06-12 17:26:22 -0700</bug_when>
    <thetext>Comment on attachment 204452
Patch

I think you need to implement toInt8() and toUInt8() to JSDOMBinding.h. It would be wrong to use existing toInt32() and toUint32() for the &quot;byte&quot; and &quot;octet&quot; conversions.

Also I&apos;d like to see test cases (e.g. what happens when we pass -1, 0, 1, 127, 128, 255, 256, null, &quot;foo&quot; etc).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899910</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-06-12 22:37:42 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 204452 [details])
&gt; I think you need to implement toInt8() and toUInt8() to JSDOMBinding.h. It would be wrong to use existing toInt32() and toUint32() for the &quot;byte&quot; and &quot;octet&quot; conversions.

I see, I will look into it. For the record, this is currently identical to the custom code, meaning that there is no behavior change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899911</commentid>
    <comment_count>8</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-06-12 22:46:45 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (From update of attachment 204452 [details] [details])
&gt; &gt; I think you need to implement toInt8() and toUInt8() to JSDOMBinding.h. It would be wrong to use existing toInt32() and toUint32() for the &quot;byte&quot; and &quot;octet&quot; conversions.
&gt; 
&gt; I see, I will look into it. For the record, this is currently identical to the custom code, meaning that there is no behavior change.

Yeah, but we might want to implement the correct implementation described in the Web IDL spec. Custom code is always buggy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899914</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-06-12 23:09:33 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; (In reply to comment #6)
&gt; &gt; &gt; (From update of attachment 204452 [details] [details] [details])
&gt; &gt; &gt; I think you need to implement toInt8() and toUInt8() to JSDOMBinding.h. It would be wrong to use existing toInt32() and toUint32() for the &quot;byte&quot; and &quot;octet&quot; conversions.
&gt; &gt; 
&gt; &gt; I see, I will look into it. For the record, this is currently identical to the custom code, meaning that there is no behavior change.
&gt; 
&gt; Yeah, but we might want to implement the correct implementation described in the Web IDL spec. Custom code is always buggy.

Ok, I will implemented to following algorithms:
http://dev.w3.org/2006/webapi/WebIDL/#es-byte
http://dev.w3.org/2006/webapi/WebIDL/#es-octet</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899921</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-06-13 00:41:10 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 204452 [details])
&gt; I think you need to implement toInt8() and toUInt8() to JSDOMBinding.h. It would be wrong to use existing toInt32() and toUint32() for the &quot;byte&quot; and &quot;octet&quot; conversions.
&gt; 
&gt; Also I&apos;d like to see test cases (e.g. what happens when we pass -1, 0, 1, 127, 128, 255, 256, null, &quot;foo&quot; etc).

Existing fast/canvas/webgl/data-view-test.html test seems to check several of those cases already.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899923</commentid>
    <comment_count>11</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-06-13 00:43:26 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; &gt; Also I&apos;d like to see test cases (e.g. what happens when we pass -1, 0, 1, 127, 128, 255, 256, null, &quot;foo&quot; etc).
&gt; 
&gt; Existing fast/canvas/webgl/data-view-test.html test seems to check several of those cases already.

Good. Thanks for working on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899925</commentid>
    <comment_count>12</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-06-13 00:45:32 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; &gt; Also I&apos;d like to see test cases (e.g. what happens when we pass -1, 0, 1, 127, 128, 255, 256, null, &quot;foo&quot; etc).
&gt; &gt; 
&gt; &gt; Existing fast/canvas/webgl/data-view-test.html test seems to check several of those cases already.

You might want to add tests to LayoutTests/fast/js/webidl-type-mapping.html as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899929</commentid>
    <comment_count>13</comment_count>
      <attachid>204559</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-06-13 01:02:02 -0700</bug_when>
    <thetext>Created attachment 204559
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899930</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-06-13 01:02:51 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; (In reply to comment #10)
&gt; &gt; &gt; &gt; Also I&apos;d like to see test cases (e.g. what happens when we pass -1, 0, 1, 127, 128, 255, 256, null, &quot;foo&quot; etc).
&gt; &gt; &gt; 
&gt; &gt; &gt; Existing fast/canvas/webgl/data-view-test.html test seems to check several of those cases already.
&gt; 
&gt; You might want to add tests to LayoutTests/fast/js/webidl-type-mapping.html as well.

Sorry, I saw that comment after uploading the patch. I&apos;ll take a look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899931</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-13 01:04:03 -0700</bug_when>
    <thetext>Attachment 204559 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast/canvas/webgl/data-view-test-expected.txt&apos;, u&apos;LayoutTests/fast/canvas/webgl/data-view-test.html&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/bindings/js/JSDOMBinding.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDOMBinding.h&apos;, u&apos;Source/WebCore/bindings/js/JSDataViewCustom.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorCPP.pm&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorJS.pm&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorObjC.pm&apos;, u&apos;Source/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm&apos;, u&apos;Source/WebCore/bindings/scripts/test/TestObj.idl&apos;, u&apos;Source/WebCore/html/canvas/DataView.idl&apos;]&quot; exit_code: 1
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:613:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:615:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:616:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:617:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:620:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:622:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:624:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:625:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:626:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:629:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 10 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899932</commentid>
    <comment_count>16</comment_count>
      <attachid>204559</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-06-13 01:04:28 -0700</bug_when>
    <thetext>Comment on attachment 204559
Patch

Clearing flags until I add checks to LayoutTests/fast/js/webidl-type-mapping.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899971</commentid>
    <comment_count>17</comment_count>
      <attachid>204567</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-06-13 03:39:22 -0700</bug_when>
    <thetext>Created attachment 204567
Patch

Add tests to fast/js/webidl-type-mapping.html. Much better indeed, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899972</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-13 03:41:41 -0700</bug_when>
    <thetext>Attachment 204567 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast/js/webidl-type-mapping-expected.txt&apos;, u&apos;LayoutTests/fast/js/webidl-type-mapping.html&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/bindings/js/JSDOMBinding.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDOMBinding.h&apos;, u&apos;Source/WebCore/bindings/js/JSDataViewCustom.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorCPP.pm&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorJS.pm&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorObjC.pm&apos;, u&apos;Source/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm&apos;, u&apos;Source/WebCore/bindings/scripts/test/TestObj.idl&apos;, u&apos;Source/WebCore/html/canvas/DataView.idl&apos;, u&apos;Source/WebCore/testing/TypeConversions.h&apos;, u&apos;Source/WebCore/testing/TypeConversions.idl&apos;]&quot; exit_code: 1
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:613:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:615:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:616:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:617:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:620:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:622:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:624:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:625:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:626:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:629:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 10 in 22 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>899974</commentid>
    <comment_count>19</comment_count>
      <attachid>204567</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-06-13 03:48:38 -0700</bug_when>
    <thetext>Comment on attachment 204567
Patch

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

&gt; Source/WebCore/bindings/js/JSDOMBinding.cpp:315
&gt; +    double x = value.toNumber(exec);

You might want to add a fast path just like toInt64() and toInt32EnforceRange(). The fast path will be something like:

if (value.isInt32()) {
  int32_t value = value.toInt32(exec);
  if (kMinInt8 &lt;= value &amp;&amp; value &lt;= kMaxInt8)
    return value;
}

&gt; Source/WebCore/bindings/js/JSDOMBinding.cpp:334
&gt; +    double x = value.toNumber(exec);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899978</commentid>
    <comment_count>20</comment_count>
      <attachid>204569</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-06-13 04:02:00 -0700</bug_when>
    <thetext>Created attachment 204569
Patch

Makes sense. I added the fast path for both methods, as suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899980</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-13 04:03:25 -0700</bug_when>
    <thetext>Attachment 204569 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast/js/webidl-type-mapping-expected.txt&apos;, u&apos;LayoutTests/fast/js/webidl-type-mapping.html&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/bindings/js/JSDOMBinding.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDOMBinding.h&apos;, u&apos;Source/WebCore/bindings/js/JSDataViewCustom.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorCPP.pm&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorJS.pm&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorObjC.pm&apos;, u&apos;Source/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm&apos;, u&apos;Source/WebCore/bindings/scripts/test/TestObj.idl&apos;, u&apos;Source/WebCore/html/canvas/DataView.idl&apos;, u&apos;Source/WebCore/testing/TypeConversions.h&apos;, u&apos;Source/WebCore/testing/TypeConversions.idl&apos;]&quot; exit_code: 1
Source/WebCore/bindings/js/JSDOMBinding.cpp:318:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/js/JSDOMBinding.cpp:343:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:613:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:615:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:616:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:617:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:620:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:622:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:624:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:625:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:626:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:629:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 12 in 22 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>899981</commentid>
    <comment_count>22</comment_count>
      <attachid>204569</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-06-13 04:05:36 -0700</bug_when>
    <thetext>Comment on attachment 204569
Patch

Looks OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899982</commentid>
    <comment_count>23</comment_count>
      <attachid>204570</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-06-13 04:08:33 -0700</bug_when>
    <thetext>Created attachment 204570
Patch for landing

Fixed style issue in JSDOMBinding.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899984</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-13 04:10:21 -0700</bug_when>
    <thetext>Attachment 204570 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast/js/webidl-type-mapping-expected.txt&apos;, u&apos;LayoutTests/fast/js/webidl-type-mapping.html&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/bindings/js/JSDOMBinding.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDOMBinding.h&apos;, u&apos;Source/WebCore/bindings/js/JSDataViewCustom.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorCPP.pm&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorJS.pm&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorObjC.pm&apos;, u&apos;Source/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm&apos;, u&apos;Source/WebCore/bindings/scripts/test/TestObj.idl&apos;, u&apos;Source/WebCore/html/canvas/DataView.idl&apos;, u&apos;Source/WebCore/testing/TypeConversions.h&apos;, u&apos;Source/WebCore/testing/TypeConversions.idl&apos;]&quot; exit_code: 1
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:613:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:615:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:616:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:617:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:620:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:622:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:624:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:625:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:626:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:629:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 10 in 22 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>899990</commentid>
    <comment_count>25</comment_count>
      <attachid>204570</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-06-13 04:57:31 -0700</bug_when>
    <thetext>Comment on attachment 204570
Patch for landing

Attachment 204570 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/847119</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900021</commentid>
    <comment_count>26</comment_count>
      <attachid>204584</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-06-13 07:24:13 -0700</bug_when>
    <thetext>Created attachment 204584
Patch

I have improved the fast code path for the toInt8 / toUInt8 methods:
- Use asInt32() / asUInt32() instead of toInt32() / toUInt32() to avoid double isInt32() / isUInt32() check.
- Handle cases where the value is an integer but not in the range to avoid falling back to the slow path and convert to a number again

I have also exported the symbols for mac.

Would you mind taking another look please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900022</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-13 07:25:30 -0700</bug_when>
    <thetext>Attachment 204584 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast/js/webidl-type-mapping-expected.txt&apos;, u&apos;LayoutTests/fast/js/webidl-type-mapping.html&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/bindings/js/JSDOMBinding.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDOMBinding.h&apos;, u&apos;Source/WebCore/bindings/js/JSDataViewCustom.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorCPP.pm&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorJS.pm&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorObjC.pm&apos;, u&apos;Source/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm&apos;, u&apos;Source/WebCore/bindings/scripts/test/TestObj.idl&apos;, u&apos;Source/WebCore/html/canvas/DataView.idl&apos;, u&apos;Source/WebCore/testing/TypeConversions.h&apos;, u&apos;Source/WebCore/testing/TypeConversions.idl&apos;]&quot; exit_code: 1
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:613:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:615:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:616:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:617:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:620:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:622:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:624:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:625:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:626:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:629:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 10 in 23 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>900025</commentid>
    <comment_count>28</comment_count>
      <attachid>204584</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-06-13 07:33:25 -0700</bug_when>
    <thetext>Comment on attachment 204584
Patch

Looks better!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900231</commentid>
    <comment_count>29</comment_count>
      <attachid>204584</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-13 11:13:36 -0700</bug_when>
    <thetext>Comment on attachment 204584
Patch

Clearing flags on attachment: 204584

Committed r151563: &lt;http://trac.webkit.org/changeset/151563&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900232</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-13 11:13:41 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204445</attachid>
            <date>2013-06-12 09:07:10 -0700</date>
            <delta_ts>2013-06-12 09:55:06 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>117547_byte_octet.patch</filename>
            <type>text/plain</type>
            <size>40362</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YVZpZXdDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhVmlld0N1c3RvbS5jcHAKaW5k
ZXggNjA0Y2IxMC4uMjM2NDFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNEYXRhVmlld0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNEYXRhVmlld0N1c3RvbS5jcHAKQEAgLTM2LDggKzM2LDYgQEAgdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBEYXRhVmlld0FjY2Vzc1R5cGUgewotICAg
IEFjY2Vzc0RhdGFWaWV3TWVtYmVyQXNJbnQ4LAotICAgIEFjY2Vzc0RhdGFWaWV3TWVtYmVyQXNV
aW50OCwKICAgICBBY2Nlc3NEYXRhVmlld01lbWJlckFzRmxvYXQzMiwKICAgICBBY2Nlc3NEYXRh
Vmlld01lbWJlckFzRmxvYXQ2NAogfTsKQEAgLTgwLDEyICs3OCw2IEBAIHN0YXRpYyBKU1ZhbHVl
IGdldERhdGFWaWV3TWVtYmVyKEV4ZWNTdGF0ZSogZXhlYywgRGF0YVZpZXcqIGltcCwgRGF0YVZp
ZXdBY2Nlc3NUCiAKICAgICBKU0M6OkpTVmFsdWUgcmVzdWx0OwogICAgIHN3aXRjaCAodHlwZSkg
ewotICAgIGNhc2UgQWNjZXNzRGF0YVZpZXdNZW1iZXJBc0ludDg6Ci0gICAgICAgIHJlc3VsdCA9
IGpzTnVtYmVyKGltcC0+Z2V0SW50OChieXRlT2Zmc2V0LCBlYykpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIEFjY2Vzc0RhdGFWaWV3TWVtYmVyQXNVaW50ODoKLSAgICAgICAgcmVzdWx0ID0g
anNOdW1iZXIoaW1wLT5nZXRVaW50OChieXRlT2Zmc2V0LCBlYykpOwotICAgICAgICBicmVhazsK
ICAgICBjYXNlIEFjY2Vzc0RhdGFWaWV3TWVtYmVyQXNGbG9hdDMyOgogICAgIGNhc2UgQWNjZXNz
RGF0YVZpZXdNZW1iZXJBc0Zsb2F0NjQ6IHsKICAgICAgICAgZG91YmxlIHZhbHVlID0gKHR5cGUg
PT0gQWNjZXNzRGF0YVZpZXdNZW1iZXJBc0Zsb2F0MzIpID8gaW1wLT5nZXRGbG9hdDMyKGJ5dGVP
ZmZzZXQsIGxpdHRsZUVuZGlhbiwgZWMpIDogaW1wLT5nZXRGbG9hdDY0KGJ5dGVPZmZzZXQsIGxp
dHRsZUVuZGlhbiwgZWMpOwpAQCAtOTksMTYgKzkxLDYgQEAgc3RhdGljIEpTVmFsdWUgZ2V0RGF0
YVZpZXdNZW1iZXIoRXhlY1N0YXRlKiBleGVjLCBEYXRhVmlldyogaW1wLCBEYXRhVmlld0FjY2Vz
c1QKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1KU1ZhbHVlIEpTRGF0YVZpZXc6OmdldEludDgo
RXhlY1N0YXRlKiBleGVjKQotewotICAgIHJldHVybiBnZXREYXRhVmlld01lbWJlcihleGVjLCBz
dGF0aWNfY2FzdDxEYXRhVmlldyo+KGltcGwoKSksIEFjY2Vzc0RhdGFWaWV3TWVtYmVyQXNJbnQ4
KTsKLX0KLQotSlNWYWx1ZSBKU0RhdGFWaWV3OjpnZXRVaW50OChFeGVjU3RhdGUqIGV4ZWMpCi17
Ci0gICAgcmV0dXJuIGdldERhdGFWaWV3TWVtYmVyKGV4ZWMsIHN0YXRpY19jYXN0PERhdGFWaWV3
Kj4oaW1wbCgpKSwgQWNjZXNzRGF0YVZpZXdNZW1iZXJBc1VpbnQ4KTsKLX0KLQogSlNWYWx1ZSBK
U0RhdGFWaWV3OjpnZXRGbG9hdDMyKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICByZXR1cm4gZ2V0
RGF0YVZpZXdNZW1iZXIoZXhlYywgc3RhdGljX2Nhc3Q8RGF0YVZpZXcqPihpbXBsKCkpLCBBY2Nl
c3NEYXRhVmlld01lbWJlckFzRmxvYXQzMik7CkBAIC0xMTksNDEgKzEwMSw0IEBAIEpTVmFsdWUg
SlNEYXRhVmlldzo6Z2V0RmxvYXQ2NChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIGdldERh
dGFWaWV3TWVtYmVyKGV4ZWMsIHN0YXRpY19jYXN0PERhdGFWaWV3Kj4oaW1wbCgpKSwgQWNjZXNz
RGF0YVZpZXdNZW1iZXJBc0Zsb2F0NjQpOwogfQogCi1zdGF0aWMgSlNWYWx1ZSBzZXREYXRhVmll
d01lbWJlcihFeGVjU3RhdGUqIGV4ZWMsIERhdGFWaWV3KiBpbXAsIERhdGFWaWV3QWNjZXNzVHlw
ZSB0eXBlKQotewotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQotICAgICAgICBy
ZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVj
KSk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCA9
IGV4ZWMtPmFyZ3VtZW50KDApLnRvVUludDMyKGV4ZWMpOwotICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgaW50IHZhbHVlID0g
ZXhlYy0+YXJndW1lbnQoMSkudG9JbnQzMihleGVjKTsKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgICAgICAKLSAgICBzd2l0
Y2ggKHR5cGUpIHsKLSAgICBjYXNlIEFjY2Vzc0RhdGFWaWV3TWVtYmVyQXNJbnQ4OgotICAgICAg
ICBpbXAtPnNldEludDgoYnl0ZU9mZnNldCwgc3RhdGljX2Nhc3Q8aW50OF90Pih2YWx1ZSksIGVj
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBY2Nlc3NEYXRhVmlld01lbWJlckFzVWludDg6
Ci0gICAgICAgIGltcC0+c2V0VWludDgoYnl0ZU9mZnNldCwgc3RhdGljX2Nhc3Q8dWludDhfdD4o
dmFsdWUpLCBlYyk7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgc2V0RE9NRXhjZXB0
aW9uKGV4ZWMsIGVjKTsKLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQotSlNWYWx1ZSBK
U0RhdGFWaWV3OjpzZXRJbnQ4KEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICByZXR1cm4gc2V0RGF0
YVZpZXdNZW1iZXIoZXhlYywgc3RhdGljX2Nhc3Q8RGF0YVZpZXcqPihpbXBsKCkpLCBBY2Nlc3NE
YXRhVmlld01lbWJlckFzSW50OCk7Ci19Ci0KLUpTVmFsdWUgSlNEYXRhVmlldzo6c2V0VWludDgo
RXhlY1N0YXRlKiBleGVjKQotewotICAgIHJldHVybiBzZXREYXRhVmlld01lbWJlcihleGVjLCBz
dGF0aWNfY2FzdDxEYXRhVmlldyo+KGltcGwoKSksIEFjY2Vzc0RhdGFWaWV3TWVtYmVyQXNVaW50
OCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckNQUC5wbSBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckNQUC5wbQppbmRleCAyM2Y4M2Q0Li5kZjFm
YzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JDUFAucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yQ1BQLnBtCkBAIC0yMzYsNiArMjM2LDggQEAgc3ViIEdldENQUFR5cGUKICAgICBteSAk
dXNlQ29uc3RSZWZlcmVuY2UgPSBzaGlmdDsKICAgICBteSAkbmFtZSA9IEdldENsYXNzTmFtZSgk
dHlwZSk7CiAKKyAgICByZXR1cm4gImNoYXIiIGlmICR0eXBlIGVxICJieXRlIjsKKyAgICByZXR1
cm4gInVuc2lnbmVkIGNoYXIiIGlmICR0eXBlIGVxICJvY3RldCI7CiAgICAgcmV0dXJuICJpbnQi
IGlmICR0eXBlIGVxICJsb25nIjsKICAgICByZXR1cm4gInVuc2lnbmVkIiBpZiAkbmFtZSBlcSAi
dW5zaWduZWQgbG9uZyI7CiAgICAgcmV0dXJuICJ1bnNpZ25lZCBzaG9ydCIgaWYgJHR5cGUgZXEg
IkNvbXBhcmVIb3ciOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0KaW5kZXggY2YwYjc0NC4uNTViMDVkMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVj
dC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JH
T2JqZWN0LnBtCkBAIC0zMjgsNiArMzI4LDggQEAgc3ViIEdldEdWYWx1ZVR5cGVOYW1lIHsKICAg
ICAgICAgICAgICAgICAgImNoYXIiLCAiY2hhciIsCiAgICAgICAgICAgICAgICAgICJsb25nIiwg
ImxvbmciLAogICAgICAgICAgICAgICAgICAibG9uZyBsb25nIiwgImludDY0IiwKKyAgICAgICAg
ICAgICAgICAgImJ5dGUiLCAiaW50OCIsCisgICAgICAgICAgICAgICAgICJvY3RldCIsICJ1aW50
OCIsCiAgICAgICAgICAgICAgICAgICJzaG9ydCIsICJpbnQiLAogICAgICAgICAgICAgICAgICAi
dWNoYXIiLCAidWNoYXIiLAogICAgICAgICAgICAgICAgICAidW5zaWduZWQiLCAidWludCIsCkBA
IC0zNTQsNiArMzU2LDggQEAgc3ViIEdldEdsaWJUeXBlTmFtZSB7CiAgICAgICAgICAgICAgICAg
ICJjaGFyIiwgImdjaGFyIiwKICAgICAgICAgICAgICAgICAgImxvbmciLCAiZ2xvbmciLAogICAg
ICAgICAgICAgICAgICAibG9uZyBsb25nIiwgImdpbnQ2NCIsCisgICAgICAgICAgICAgICAgICJi
eXRlIiwgImdpbnQ4IiwKKyAgICAgICAgICAgICAgICAgIm9jdGV0IiwgImd1aW50OCIsCiAgICAg
ICAgICAgICAgICAgICJzaG9ydCIsICJnc2hvcnQiLAogICAgICAgICAgICAgICAgICAidWNoYXIi
LCAiZ3VjaGFyIiwKICAgICAgICAgICAgICAgICAgInVuc2lnbmVkIiwgImd1aW50IiwKQEAgLTM5
Niw4ICs0MDAsOSBAQCBzdWIgR2V0V3JpdGVhYmxlUHJvcGVydGllcyB7CiAgICAgICAgIG15ICRn
dHlwZSA9IEdldEdWYWx1ZVR5cGVOYW1lKCRwcm9wZXJ0eS0+c2lnbmF0dXJlLT50eXBlKTsKICAg
ICAgICAgbXkgJGhhc0d0eXBlU2lnbmF0dXJlID0gKCRndHlwZSBlcSAiYm9vbGVhbiIgfHwgJGd0
eXBlIGVxICJmbG9hdCIgfHwgJGd0eXBlIGVxICJkb3VibGUiIHx8CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAkZ3R5cGUgZXEgInVpbnQ2NCIgfHwgJGd0eXBlIGVxICJ1bG9uZyIg
fHwgJGd0eXBlIGVxICJsb25nIiB8fCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICRndHlwZSBlcSAidWludCIgfHwgJGd0eXBlIGVxICJ1c2hvcnQiIHx8ICRndHlwZSBlcSAidWNo
YXIiIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZ3R5cGUgZXEgImNoYXIi
IHx8ICRndHlwZSBlcSAic3RyaW5nIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAkZ3R5cGUgZXEgInVpbnQiIHx8ICRndHlwZSBlcSAidXNob3J0IiB8fCAkZ3R5cGUgZXEgImlu
dDgiIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZ3R5cGUgZXEgInVpbnQ4
IiB8fCAkZ3R5cGUgZXEgInVjaGFyIiB8fCAkZ3R5cGUgZXEgImNoYXIiIHx8CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAkZ3R5cGUgZXEgInN0cmluZyIpOwogICAgICAgICAjIEZJ
WE1FOiBXZSBhcmUgbm90IGdlbmVyYXRpbmcgc2V0dGVycyBmb3IgJ1JlcGxhY2VhYmxlJwogICAg
ICAgICAjIGF0dHJpYnV0ZXMgbm93LCBidXQgd2Ugc2hvdWxkIHNvbWVob3cuCiAgICAgICAgIG15
ICRyZXBsYWNlYWJsZSA9ICRwcm9wZXJ0eS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiUmVwbGFjZWFibGUifTsKQEAgLTU2OCw2ICs1NzMsNyBAQCBzdWIgR2VuZXJhdGVQcm9wZXJ0
eSB7CiAgICAgcHVzaChAdHh0R2V0UHJvcHMsICIgICAgICAgIGJyZWFrO1xuICAgIH1cbiIpOwog
CiAgICAgbXkgJXBhcmFtX3NwZWNfb3B0aW9ucyA9ICgiaW50IiwgIkdfTUlOSU5ULCAvKiBtaW4g
Ki9cbkdfTUFYSU5ULCAvKiBtYXggKi9cbjAsIC8qIGRlZmF1bHQgKi8iLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImludDgiLCAiR19NSU5JTlQ4LCAvKiBtaW4gKi9cbkdfTUFYSU5U
OCwgLyogbWF4ICovXG4wLCAvKiBkZWZhdWx0ICovIiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJib29sZWFuIiwgIkZBTFNFLCAvKiBkZWZhdWx0ICovIiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJmbG9hdCIsICItR19NQVhGTE9BVCwgLyogbWluICovXG5HX01BWEZM
T0FULCAvKiBtYXggKi9cbjAuMCwgLyogZGVmYXVsdCAqLyIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiZG91YmxlIiwgIi1HX01BWERPVUJMRSwgLyogbWluICovXG5HX01BWERPVUJM
RSwgLyogbWF4ICovXG4wLjAsIC8qIGRlZmF1bHQgKi8iLApAQCAtNTc2LDYgKzU4Miw3IEBAIHN1
YiBHZW5lcmF0ZVByb3BlcnR5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnQ2
NCIsICJHX01JTklOVDY0LCAvKiBtaW4gKi9cbkdfTUFYSU5UNjQsIC8qIG1heCAqL1xuMCwgLyog
ZGVmYXVsdCAqLyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidWxvbmciLCAiMCwg
LyogbWluICovXG5HX01BWFVMT05HLCAvKiBtYXggKi9cbjAsIC8qIGRlZmF1bHQgKi8iLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInVpbnQiLCAiMCwgLyogbWluICovXG5HX01BWFVJ
TlQsIC8qIG1heCAqL1xuMCwgLyogZGVmYXVsdCAqLyIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAidWludDgiLCAiMCwgLyogbWluICovXG5HX01BWFVJTlQ4LCAvKiBtYXggKi9cbjAs
IC8qIGRlZmF1bHQgKi8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVzaG9ydCIs
ICIwLCAvKiBtaW4gKi9cbkdfTUFYVUlOVDE2LCAvKiBtYXggKi9cbjAsIC8qIGRlZmF1bHQgKi8i
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVjaGFyIiwgIkdfTUlOSU5UOCwgLyog
bWluICovXG5HX01BWElOVDgsIC8qIG1heCAqL1xuMCwgLyogZGVmYXVsdCAqLyIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiY2hhciIsICIwLCAvKiBtaW4gKi9cbkdfTUFYVUlOVDgs
IC8qIG1heCAqL1xuMCwgLyogZGVmYXVsdCAqLyIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDFmMzNjMjEuLjgzYTc5MDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCkBAIC0zMzc1LDYgKzMzNzUsOCBAQCBteSAlbmF0aXZlVHlwZSA9ICgKICAgICAidW5z
aWduZWQgc2hvcnQiID0+ICJ1bnNpZ25lZCBzaG9ydCIsCiAgICAgImxvbmcgbG9uZyIgPT4gImxv
bmcgbG9uZyIsCiAgICAgInVuc2lnbmVkIGxvbmcgbG9uZyIgPT4gInVuc2lnbmVkIGxvbmcgbG9u
ZyIsCisgICAgImJ5dGUiID0+ICJpbnQ4X3QiLAorICAgICJvY3RldCIgPT4gInVpbnQ4X3QiLAog
ICAgICJNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIiA9PiAiUmVmUHRyPE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXI+IiwKICAgICAiRE9NVGltZVN0YW1wIiA9PiAiRE9NVGltZVN0YW1wIiwgICAgCiApOwpA
QCAtMzQ3OSw2ICszNDgxLDggQEAgc3ViIEpTVmFsdWVUb05hdGl2ZQogICAgIHJldHVybiAiJHZh
bHVlLnRvRmxvYXQoZXhlYykiIGlmICR0eXBlIGVxICJmbG9hdCI7CiAKICAgICBteSAkaW50Q29u
dmVyc2lvbiA9ICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFbmZvcmNlUmFuZ2Ui
fSA/ICJFbmZvcmNlUmFuZ2UiIDogIk5vcm1hbENvbnZlcnNpb24iOworICAgIHJldHVybiAic3Rh
dGljX2Nhc3Q8aW50OF90Pih0b0ludDMyKGV4ZWMsICR2YWx1ZSwgJGludENvbnZlcnNpb24pKSIg
aWYgJHR5cGUgZXEgImJ5dGUiOworICAgIHJldHVybiAic3RhdGljX2Nhc3Q8dWludDhfdD4odG9J
bnQzMihleGVjLCAkdmFsdWUsICRpbnRDb252ZXJzaW9uKSkiIGlmICR0eXBlIGVxICJvY3RldCI7
CiAgICAgcmV0dXJuICJ0b0ludDMyKGV4ZWMsICR2YWx1ZSwgJGludENvbnZlcnNpb24pIiBpZiAk
dHlwZSBlcSAibG9uZyIgb3IgJHR5cGUgZXEgInNob3J0IjsKICAgICByZXR1cm4gInRvVUludDMy
KGV4ZWMsICR2YWx1ZSwgJGludENvbnZlcnNpb24pIiBpZiAkdHlwZSBlcSAidW5zaWduZWQgbG9u
ZyIgb3IgJHR5cGUgZXEgInVuc2lnbmVkIHNob3J0IjsKICAgICByZXR1cm4gInRvSW50NjQoZXhl
YywgJHZhbHVlLCAkaW50Q29udmVyc2lvbikiIGlmICR0eXBlIGVxICJsb25nIGxvbmciOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2Jq
Qy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMu
cG0KaW5kZXggNzhiN2M3My4uMjliMTM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCkBAIC0zMDIsNiArMzAyLDggQEAg
c3ViIEdldENsYXNzTmFtZQogICAgIHJldHVybiAiTlNTdHJpbmciIGlmICRjb2RlR2VuZXJhdG9y
LT5Jc1N0cmluZ1R5cGUoJG5hbWUpIG9yICRuYW1lIGVxICJTZXJpYWxpemVkU2NyaXB0VmFsdWUi
OwogICAgIHJldHVybiAiTlMkbmFtZSIgaWYgSXNOYXRpdmVPYmpDVHlwZSgkbmFtZSk7CiAgICAg
cmV0dXJuICJCT09MIiBpZiAkbmFtZSBlcSAiYm9vbGVhbiI7CisgICAgcmV0dXJuICJ1bnNpZ25l
ZCBjaGFyIiBpZiAkbmFtZSBlcSAib2N0ZXQiOworICAgIHJldHVybiAiY2hhciIgaWYgJG5hbWUg
ZXEgImJ5dGUiOwogICAgIHJldHVybiAidW5zaWduZWQiIGlmICRuYW1lIGVxICJ1bnNpZ25lZCBs
b25nIjsKICAgICByZXR1cm4gImludCIgaWYgJG5hbWUgZXEgImxvbmciOwogICAgIHJldHVybiAi
TlNUaW1lSW50ZXJ2YWwiIGlmICRuYW1lIGVxICJEYXRlIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwCmlu
ZGV4IDlkNjMwODMuLjNkNTY4ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcApAQCAtMTE2LDYgKzEx
NiwzOCBAQCBXZWJET01UZXN0T2JqIFdlYkRPTVRlc3RPYmo6OnJlYWRPbmx5VGVzdE9iakF0dHIo
KSBjb25zdAogICAgIHJldHVybiB0b1dlYktpdChXVEY6OmdldFB0cihpbXBsKCktPnJlYWRPbmx5
VGVzdE9iakF0dHIoKSkpOwogfQogCitjaGFyIFdlYkRPTVRlc3RPYmo6OmJ5dGVBdHRyKCkgY29u
c3QKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuIGNoYXIoKTsKKworICAgIHJl
dHVybiBpbXBsKCktPmJ5dGVBdHRyKCk7Cit9CisKK3ZvaWQgV2ViRE9NVGVzdE9iajo6c2V0Qnl0
ZUF0dHIoY2hhciBuZXdCeXRlQXR0cikKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaW1wbCgpLT5zZXRCeXRlQXR0cihuZXdCeXRlQXR0cik7Cit9CisKK3Vuc2ln
bmVkIGNoYXIgV2ViRE9NVGVzdE9iajo6b2N0ZXRBdHRyKCkgY29uc3QKK3sKKyAgICBpZiAoIWlt
cGwoKSkKKyAgICAgICAgcmV0dXJuIHVuc2lnbmVkIGNoYXIoKTsKKworICAgIHJldHVybiBpbXBs
KCktPm9jdGV0QXR0cigpOworfQorCit2b2lkIFdlYkRPTVRlc3RPYmo6OnNldE9jdGV0QXR0cih1
bnNpZ25lZCBjaGFyIG5ld09jdGV0QXR0cikKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgaW1wbCgpLT5zZXRPY3RldEF0dHIobmV3T2N0ZXRBdHRyKTsKK30KKwog
c2hvcnQgV2ViRE9NVGVzdE9iajo6c2hvcnRBdHRyKCkgY29uc3QKIHsKICAgICBpZiAoIWltcGwo
KSkKQEAgLTc0OSw2ICs3ODEsMzggQEAgdm9pZCBXZWJET01UZXN0T2JqOjp2b2lkTWV0aG9kV2l0
aEFyZ3MoaW50IGxvbmdBcmcsIGNvbnN0IFdlYkRPTVN0cmluZyYgc3RyQXJnLAogICAgIGltcGwo
KS0+dm9pZE1ldGhvZFdpdGhBcmdzKGxvbmdBcmcsIHN0ckFyZywgdG9XZWJDb3JlKG9iakFyZykp
OwogfQogCitjaGFyIFdlYkRPTVRlc3RPYmo6Om9jdGV0TWV0aG9kKCkKK3sKKyAgICBpZiAoIWlt
cGwoKSkKKyAgICAgICAgcmV0dXJuIGNoYXIoKTsKKworICAgIHJldHVybiBpbXBsKCktPm9jdGV0
TWV0aG9kKCk7Cit9CisKK2NoYXIgV2ViRE9NVGVzdE9iajo6b2N0ZXRNZXRob2RXaXRoQXJncyhj
aGFyIGJ5dGVBcmcsIGNvbnN0IFdlYkRPTVN0cmluZyYgc3RyQXJnLCBjb25zdCBXZWJET01UZXN0
T2JqJiBvYmpBcmcpCit7CisgICAgaWYgKCFpbXBsKCkpCisgICAgICAgIHJldHVybiBjaGFyKCk7
CisKKyAgICByZXR1cm4gaW1wbCgpLT5vY3RldE1ldGhvZFdpdGhBcmdzKGJ5dGVBcmcsIHN0ckFy
ZywgdG9XZWJDb3JlKG9iakFyZykpOworfQorCit1bnNpZ25lZCBjaGFyIFdlYkRPTVRlc3RPYmo6
Om9jdGV0TWV0aG9kKCkKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuIHVuc2ln
bmVkIGNoYXIoKTsKKworICAgIHJldHVybiBpbXBsKCktPm9jdGV0TWV0aG9kKCk7Cit9CisKK3Vu
c2lnbmVkIGNoYXIgV2ViRE9NVGVzdE9iajo6b2N0ZXRNZXRob2RXaXRoQXJncyh1bnNpZ25lZCBj
aGFyIG9jdGV0QXJnLCBjb25zdCBXZWJET01TdHJpbmcmIHN0ckFyZywgY29uc3QgV2ViRE9NVGVz
dE9iaiYgb2JqQXJnKQoreworICAgIGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm4gdW5zaWdu
ZWQgY2hhcigpOworCisgICAgcmV0dXJuIGltcGwoKS0+b2N0ZXRNZXRob2RXaXRoQXJncyhvY3Rl
dEFyZywgc3RyQXJnLCB0b1dlYkNvcmUob2JqQXJnKSk7Cit9CisKIGludCBXZWJET01UZXN0T2Jq
Ojpsb25nTWV0aG9kKCkKIHsKICAgICBpZiAoIWltcGwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmgKaW5kZXgg
YmJkMWRmYi4uNmI5MmU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmgKQEAgLTcxLDYgKzcxLDEwIEBAIHB1
YmxpYzoKICAgICBpbnQgcmVhZE9ubHlMb25nQXR0cigpIGNvbnN0OwogICAgIFdlYkRPTVN0cmlu
ZyByZWFkT25seVN0cmluZ0F0dHIoKSBjb25zdDsKICAgICBXZWJET01UZXN0T2JqIHJlYWRPbmx5
VGVzdE9iakF0dHIoKSBjb25zdDsKKyAgICBjaGFyIGJ5dGVBdHRyKCkgY29uc3Q7CisgICAgdm9p
ZCBzZXRCeXRlQXR0cihjaGFyKTsKKyAgICB1bnNpZ25lZCBjaGFyIG9jdGV0QXR0cigpIGNvbnN0
OworICAgIHZvaWQgc2V0T2N0ZXRBdHRyKHVuc2lnbmVkIGNoYXIpOwogICAgIHNob3J0IHNob3J0
QXR0cigpIGNvbnN0OwogICAgIHZvaWQgc2V0U2hvcnRBdHRyKHNob3J0KTsKICAgICB1bnNpZ25l
ZCBzaG9ydCB1bnNpZ25lZFNob3J0QXR0cigpIGNvbnN0OwpAQCAtMTU0LDYgKzE1OCwxMCBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHZvaWRNZXRob2QoKTsKICAgICB2b2lkIHZvaWRNZXRob2RXaXRo
QXJncyhpbnQgbG9uZ0FyZywgY29uc3QgV2ViRE9NU3RyaW5nJiBzdHJBcmcsIGNvbnN0IFdlYkRP
TVRlc3RPYmomIG9iakFyZyk7CisgICAgY2hhciBvY3RldE1ldGhvZCgpOworICAgIGNoYXIgb2N0
ZXRNZXRob2RXaXRoQXJncyhjaGFyIGJ5dGVBcmcsIGNvbnN0IFdlYkRPTVN0cmluZyYgc3RyQXJn
LCBjb25zdCBXZWJET01UZXN0T2JqJiBvYmpBcmcpOworICAgIHVuc2lnbmVkIGNoYXIgb2N0ZXRN
ZXRob2QoKTsKKyAgICB1bnNpZ25lZCBjaGFyIG9jdGV0TWV0aG9kV2l0aEFyZ3ModW5zaWduZWQg
Y2hhciBvY3RldEFyZywgY29uc3QgV2ViRE9NU3RyaW5nJiBzdHJBcmcsIGNvbnN0IFdlYkRPTVRl
c3RPYmomIG9iakFyZyk7CiAgICAgaW50IGxvbmdNZXRob2QoKTsKICAgICBpbnQgbG9uZ01ldGhv
ZFdpdGhBcmdzKGludCBsb25nQXJnLCBjb25zdCBXZWJET01TdHJpbmcmIHN0ckFyZywgY29uc3Qg
V2ViRE9NVGVzdE9iaiYgb2JqQXJnKTsKICAgICBXZWJET01UZXN0T2JqIG9iak1ldGhvZCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3Qv
V2ViS2l0RE9NVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcAppbmRleCAyM2RhNDFhLi4wY2YyNzE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9X
ZWJLaXRET01UZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcApAQCAtNzksNiArNzksOCBAQCBlbnVt
IHsKICAgICBQUk9QX1JFQURfT05MWV9MT05HX0FUVFIsCiAgICAgUFJPUF9SRUFEX09OTFlfU1RS
SU5HX0FUVFIsCiAgICAgUFJPUF9SRUFEX09OTFlfVEVTVF9PQkpfQVRUUiwKKyAgICBQUk9QX0JZ
VEVfQVRUUiwKKyAgICBQUk9QX09DVEVUX0FUVFIsCiAgICAgUFJPUF9TSE9SVF9BVFRSLAogICAg
IFBST1BfVU5TSUdORURfU0hPUlRfQVRUUiwKICAgICBQUk9QX0xPTkdfQVRUUiwKQEAgLTE0OCw2
ICsxNTAsMTQgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X29ial9zZXRfcHJvcGVydHko
R09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLAogICAgIFdlYkNvcmU6OlRlc3RPYmoq
IGNvcmVTZWxmID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogCiAgICAgc3dpdGNoIChwcm9wZXJ0eUlk
KSB7CisgICAgY2FzZSBQUk9QX0JZVEVfQVRUUjogeworICAgICAgICBjb3JlU2VsZi0+c2V0Qnl0
ZUF0dHIoKGdfdmFsdWVfZ2V0X2ludDgodmFsdWUpKSk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICBjYXNlIFBST1BfT0NURVRfQVRUUjogeworICAgICAgICBjb3JlU2VsZi0+c2V0T2N0ZXRB
dHRyKChnX3ZhbHVlX2dldF91aW50OCh2YWx1ZSkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQog
ICAgIGNhc2UgUFJPUF9VTlNJR05FRF9TSE9SVF9BVFRSOiB7CiAgICAgICAgIGNvcmVTZWxmLT5z
ZXRVbnNpZ25lZFNob3J0QXR0cigoZ192YWx1ZV9nZXRfdWludCh2YWx1ZSkpKTsKICAgICAgICAg
YnJlYWs7CkBAIC0zMDMsNiArMzEzLDE0IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9v
YmpfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwKICAgICAg
ICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCBXZWJLaXQ6OmtpdChwdHIuZ2V0KCkpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2UgUFJPUF9CWVRFX0FUVFI6IHsKKyAgICAgICAg
Z192YWx1ZV9zZXRfaW50OCh2YWx1ZSwgY29yZVNlbGYtPmJ5dGVBdHRyKCkpOworICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgY2FzZSBQUk9QX09DVEVUX0FUVFI6IHsKKyAgICAgICAgZ192YWx1
ZV9zZXRfdWludDgodmFsdWUsIGNvcmVTZWxmLT5vY3RldEF0dHIoKSk7CisgICAgICAgIGJyZWFr
OworICAgIH0KICAgICBjYXNlIFBST1BfU0hPUlRfQVRUUjogewogICAgICAgICBnX3ZhbHVlX3Nl
dF9pbnQodmFsdWUsIGNvcmVTZWxmLT5zaG9ydEF0dHIoKSk7CiAgICAgICAgIGJyZWFrOwpAQCAt
NTkyLDYgKzYxMCwyNCBAQCBHX01BWExPTkcsIC8qIG1heCAqLwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9ET01f
VEVTVF9PQkosIC8qIGdvYmplY3QgdHlwZSAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsK
ICAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RDbGFzcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfQllURV9BVFRSLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2ludDgoImJ5dGUtYXR0ciIs
IC8qIG5hbWUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInRlc3Rfb2JqX2J5dGUtYXR0ciIsIC8qIHNob3J0IGRlc2NyaXB0aW9u
ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJyZWFkLXdyaXRlICBnaW50OCBUZXN0T2JqLmJ5dGUtYXR0ciIsIC8qIGxvbmdlciAt
IGNvdWxkIGRvIHdpdGggc29tZSBleHRyYSBkb2Mgc3R1ZmYgaGVyZSAqLworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX01JTklOVDgs
IC8qIG1pbiAqLworR19NQVhJTlQ4LCAvKiBtYXggKi8KKzAsIC8qIGRlZmF1bHQgKi8KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VC
S0lUX1BBUkFNX1JFQURXUklURSkpOworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVy
dHkoZ29iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJP
UF9PQ1RFVF9BVFRSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJh
bV9zcGVjX3VpbnQ4KCJvY3RldC1hdHRyIiwgLyogbmFtZSAqLworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdF9vYmpfb2N0ZXQt
YXR0ciIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICovCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWFkLXdyaXRlICBndWludDggVGVz
dE9iai5vY3RldC1hdHRyIiwgLyogbG9uZ2VyIC0gY291bGQgZG8gd2l0aCBzb21lIGV4dHJhIGRv
YyBzdHVmZiBoZXJlICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDAsIC8qIG1pbiAqLworR19NQVhVSU5UOCwgLyogbWF4ICovCisw
LCAvKiBkZWZhdWx0ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKKyAgICBnX29iamVj
dF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RDbGFzcywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBST1BfU0hPUlRfQVRUUiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19pbnQoInNob3J0LWF0dHIiLCAvKiBuYW1lICov
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJ0ZXN0X29ial9zaG9ydC1hdHRyIiwgLyogc2hvcnQgZGVzY3JpcHRpb24gKi8KQEAgLTEw
MTAsNiArMTA0Niw1NCBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3ZvaWRfbWV0aG9kX3dpdGhfYXJn
cyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZyBsb25nQXJnLAogICAgIGl0ZW0tPnZvaWRN
ZXRob2RXaXRoQXJncyhsb25nQXJnLCBjb252ZXJ0ZWRTdHJBcmcsIGNvbnZlcnRlZE9iakFyZyk7
CiB9CiAKK2dpbnQ4Cit3ZWJraXRfZG9tX3Rlc3Rfb2JqX29jdGV0X21ldGhvZChXZWJLaXRET01U
ZXN0T2JqKiBzZWxmKQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYp
LCAwKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwor
ICAgIGdpbnQ4IHJlc3VsdCA9IGl0ZW0tPm9jdGV0TWV0aG9kKCk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworZ2ludDgKK3dlYmtpdF9kb21fdGVzdF9vYmpfb2N0ZXRfbWV0aG9kX3dpdGhfYXJn
cyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnaW50OCBieXRlQXJnLCBjb25zdCBnY2hhciogc3Ry
QXJnLCBXZWJLaXRET01UZXN0T2JqKiBvYmpBcmcpCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01f
SVNfVEVTVF9PQkooc2VsZiksIDApOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHN0ckFyZywg
MCk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihvYmpB
cmcpLCAwKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYp
OworICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFN0ckFyZyA9IFdURjo6U3RyaW5nOjpmcm9tVVRG
OChzdHJBcmcpOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGNvbnZlcnRlZE9iakFyZyA9IFdlYktp
dDo6Y29yZShvYmpBcmcpOworICAgIGdpbnQ4IHJlc3VsdCA9IGl0ZW0tPm9jdGV0TWV0aG9kV2l0
aEFyZ3MoYnl0ZUFyZywgY29udmVydGVkU3RyQXJnLCBjb252ZXJ0ZWRPYmpBcmcpOworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK2d1aW50OAord2Via2l0X2RvbV90ZXN0X29ial9vY3RldF9tZXRo
b2QoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19U
RVNUX09CSihzZWxmKSwgMCk7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6
Y29yZShzZWxmKTsKKyAgICBndWludDggcmVzdWx0ID0gaXRlbS0+b2N0ZXRNZXRob2QoKTsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitndWludDgKK3dlYmtpdF9kb21fdGVzdF9vYmpfb2N0ZXRf
bWV0aG9kX3dpdGhfYXJncyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBndWludDggb2N0ZXRBcmcs
IGNvbnN0IGdjaGFyKiBzdHJBcmcsIFdlYktpdERPTVRlc3RPYmoqIG9iakFyZykKK3sKKyAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxmKSwgMCk7CisgICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwoc3RyQXJnLCAwKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9N
X0lTX1RFU1RfT0JKKG9iakFyZyksIDApOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBX
ZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgV1RGOjpTdHJpbmcgY29udmVydGVkU3RyQXJnID0gV1RG
OjpTdHJpbmc6OmZyb21VVEY4KHN0ckFyZyk7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogY29udmVy
dGVkT2JqQXJnID0gV2ViS2l0Ojpjb3JlKG9iakFyZyk7CisgICAgZ3VpbnQ4IHJlc3VsdCA9IGl0
ZW0tPm9jdGV0TWV0aG9kV2l0aEFyZ3Mob2N0ZXRBcmcsIGNvbnZlcnRlZFN0ckFyZywgY29udmVy
dGVkT2JqQXJnKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBnbG9uZwogd2Via2l0X2RvbV90
ZXN0X29ial9sb25nX21ldGhvZChXZWJLaXRET01UZXN0T2JqKiBzZWxmKQogewpAQCAtMTUzMiw2
ICsxNjE2LDQ0IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3JlYWRfb25seV90ZXN0X29ial9h
dHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCiAgICAgcmV0dXJuIFdlYktpdDo6a2l0KGdvYmpl
Y3RSZXN1bHQuZ2V0KCkpOwogfQogCitnaW50OAord2Via2l0X2RvbV90ZXN0X29ial9nZXRfYnl0
ZV9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01f
SVNfVEVTVF9PQkooc2VsZiksIDApOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJL
aXQ6OmNvcmUoc2VsZik7CisgICAgZ2ludDggcmVzdWx0ID0gaXRlbS0+Ynl0ZUF0dHIoKTsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9ieXRl
X2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2ludDggdmFsdWUpCit7CisgICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VC
S0lUX0RPTV9JU19URVNUX09CSihzZWxmKSk7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBpdGVtLT5zZXRCeXRlQXR0cih2YWx1ZSk7Cit9CisK
K2d1aW50OAord2Via2l0X2RvbV90ZXN0X29ial9nZXRfb2N0ZXRfYXR0cihXZWJLaXRET01UZXN0
T2JqKiBzZWxmKQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
KyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpLCAw
KTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAg
IGd1aW50OCByZXN1bHQgPSBpdGVtLT5vY3RldEF0dHIoKTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCit2b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9vY3RldF9hdHRyKFdlYktpdERPTVRl
c3RPYmoqIHNlbGYsIGd1aW50OCB2YWx1ZSkKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1Rf
T0JKKHNlbGYpKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNl
bGYpOworICAgIGl0ZW0tPnNldE9jdGV0QXR0cih2YWx1ZSk7Cit9CisKIGdzaG9ydAogd2Via2l0
X2RvbV90ZXN0X29ial9nZXRfc2hvcnRfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3Qv
V2ViS2l0RE9NVGVzdE9iai5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oCmluZGV4IDdjOTkyYzMuLjViZGViNTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktp
dERPTVRlc3RPYmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
R09iamVjdC9XZWJLaXRET01UZXN0T2JqLmgKQEAgLTczLDYgKzczLDUyIEBAIFdFQktJVF9BUEkg
dm9pZAogd2Via2l0X2RvbV90ZXN0X29ial92b2lkX21ldGhvZF93aXRoX2FyZ3MoV2ViS2l0RE9N
VGVzdE9iaiogc2VsZiwgZ2xvbmcgbG9uZ0FyZywgY29uc3QgZ2NoYXIqIHN0ckFyZywgV2ViS2l0
RE9NVGVzdE9iaiogb2JqQXJnKTsKIAogLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX29jdGV0
X21ldGhvZDoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCisgKgorICogUmV0dXJuczoK
KyAqCisqKi8KK1dFQktJVF9BUEkgZ2ludDgKK3dlYmtpdF9kb21fdGVzdF9vYmpfb2N0ZXRfbWV0
aG9kKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpOworCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9v
Ympfb2N0ZXRfbWV0aG9kX3dpdGhfYXJnczoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2Jq
CisgKiBAYnl0ZUFyZzogQSAjZ2ludDgKKyAqIEBzdHJBcmc6IEEgI2djaGFyCisgKiBAb2JqQXJn
OiBBICNXZWJLaXRET01UZXN0T2JqCisgKgorICogUmV0dXJuczoKKyAqCisqKi8KK1dFQktJVF9B
UEkgZ2ludDgKK3dlYmtpdF9kb21fdGVzdF9vYmpfb2N0ZXRfbWV0aG9kX3dpdGhfYXJncyhXZWJL
aXRET01UZXN0T2JqKiBzZWxmLCBnaW50OCBieXRlQXJnLCBjb25zdCBnY2hhciogc3RyQXJnLCBX
ZWJLaXRET01UZXN0T2JqKiBvYmpBcmcpOworCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpf
b2N0ZXRfbWV0aG9kOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqCisgKiBSZXR1
cm5zOgorICoKKyoqLworV0VCS0lUX0FQSSBndWludDgKK3dlYmtpdF9kb21fdGVzdF9vYmpfb2N0
ZXRfbWV0aG9kKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpOworCisvKioKKyAqIHdlYmtpdF9kb21f
dGVzdF9vYmpfb2N0ZXRfbWV0aG9kX3dpdGhfYXJnczoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01U
ZXN0T2JqCisgKiBAb2N0ZXRBcmc6IEEgI2d1aW50OAorICogQHN0ckFyZzogQSAjZ2NoYXIKKyAq
IEBvYmpBcmc6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLwor
V0VCS0lUX0FQSSBndWludDgKK3dlYmtpdF9kb21fdGVzdF9vYmpfb2N0ZXRfbWV0aG9kX3dpdGhf
YXJncyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBndWludDggb2N0ZXRBcmcsIGNvbnN0IGdjaGFy
KiBzdHJBcmcsIFdlYktpdERPTVRlc3RPYmoqIG9iakFyZyk7CisKKy8qKgogICogd2Via2l0X2Rv
bV90ZXN0X29ial9sb25nX21ldGhvZDoKICAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCiAg
KgpAQCAtNTU2LDYgKzYwMiw0OCBAQCBXRUJLSVRfQVBJIFdlYktpdERPTVRlc3RPYmoqCiB3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX2dldF9yZWFkX29ubHlfdGVzdF9vYmpfYXR0cihXZWJLaXRET01UZXN0
T2JqKiBzZWxmKTsKIAogLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9ieXRlX2F0dHI6
CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICoKKyAqIFJldHVybnM6CisgKgorKiov
CitXRUJLSVRfQVBJIGdpbnQ4Cit3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9ieXRlX2F0dHIoV2Vi
S2l0RE9NVGVzdE9iaiogc2VsZik7CisKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial9zZXRf
Ynl0ZV9hdHRyOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqIEB2YWx1ZTogQSAj
Z2ludDgKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRf
ZG9tX3Rlc3Rfb2JqX3NldF9ieXRlX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2ludDgg
dmFsdWUpOworCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X29jdGV0X2F0dHI6Cisg
KiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICoKKyAqIFJldHVybnM6CisgKgorKiovCitX
RUJLSVRfQVBJIGd1aW50OAord2Via2l0X2RvbV90ZXN0X29ial9nZXRfb2N0ZXRfYXR0cihXZWJL
aXRET01UZXN0T2JqKiBzZWxmKTsKKworLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9v
Y3RldF9hdHRyOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqIEB2YWx1ZTogQSAj
Z3VpbnQ4CisgKgorICogUmV0dXJuczoKKyAqCisqKi8KK1dFQktJVF9BUEkgdm9pZAord2Via2l0
X2RvbV90ZXN0X29ial9zZXRfb2N0ZXRfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBndWlu
dDggdmFsdWUpOworCisvKioKICAqIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3Nob3J0X2F0dHI6
CiAgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagogICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggYTgyNDhj
Yi4uNmRhMGJiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTgwLDYgKzgwLDggQEAgc3RhdGljIGNvbnN0IEhh
c2hUYWJsZVZhbHVlIEpTVGVzdE9ialRhYmxlVmFsdWVzW10gPQogICAgIHsgInJlYWRPbmx5U3Ry
aW5nQXR0ciIsIERvbnREZWxldGUgfCBSZWFkT25seSwgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpSZWFkT25seVN0cmluZ0F0dHIpLCAo
aW50cHRyX3QpMCwgTm9JbnRyaW5zaWMgfSwKICAgICB7ICJyZWFkT25seVRlc3RPYmpBdHRyIiwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5LCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ialJlYWRPbmx5VGVzdE9iakF0dHIpLCAoaW50cHRyX3Qp
MCwgTm9JbnRyaW5zaWMgfSwKICAgICB7ICJlbnVtQXR0ciIsIERvbnREZWxldGUsIChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqRW51bUF0
dHIpLCAoaW50cHRyX3Qpc2V0SlNUZXN0T2JqRW51bUF0dHIsIE5vSW50cmluc2ljIH0sCisgICAg
eyAiYnl0ZUF0dHIiLCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakJ5dGVBdHRyKSwgKGludHB0cl90KXNldEpTVGVz
dE9iakJ5dGVBdHRyLCBOb0ludHJpbnNpYyB9LAorICAgIHsgIm9jdGV0QXR0ciIsIERvbnREZWxl
dGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNU
ZXN0T2JqT2N0ZXRBdHRyKSwgKGludHB0cl90KXNldEpTVGVzdE9iak9jdGV0QXR0ciwgTm9JbnRy
aW5zaWMgfSwKICAgICB7ICJzaG9ydEF0dHIiLCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ialNob3J0QXR0ciksIChp
bnRwdHJfdClzZXRKU1Rlc3RPYmpTaG9ydEF0dHIsIE5vSW50cmluc2ljIH0sCiAgICAgeyAidW5z
aWduZWRTaG9ydEF0dHIiLCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ialVuc2lnbmVkU2hvcnRBdHRyKSwgKGludHB0
cl90KXNldEpTVGVzdE9ialVuc2lnbmVkU2hvcnRBdHRyLCBOb0ludHJpbnNpYyB9LAogICAgIHsg
ImxvbmdBdHRyIiwgRG9udERlbGV0ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpMb25nQXR0ciksIChpbnRwdHJfdClzZXRKU1Rlc3RP
YmpMb25nQXR0ciwgTm9JbnRyaW5zaWMgfSwKQEAgLTE1Miw3ICsxNTQsNyBAQCBzdGF0aWMgY29u
c3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqVGFibGVWYWx1ZXNbXSA9CiAgICAgeyAwLCAwLCAw
LCAwLCBOb0ludHJpbnNpYyB9CiB9OwogCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdE9i
alRhYmxlID0geyAxNDUsIDEyNywgSlNUZXN0T2JqVGFibGVWYWx1ZXMsIDAgfTsKK3N0YXRpYyBj
b25zdCBIYXNoVGFibGUgSlNUZXN0T2JqVGFibGUgPSB7IDI2NSwgMjU1LCBKU1Rlc3RPYmpUYWJs
ZVZhbHVlcywgMCB9OwogLyogSGFzaCB0YWJsZSBmb3IgY29uc3RydWN0b3IgKi8KIAogc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9iakNvbnN0cnVjdG9yVGFibGVWYWx1ZXNbXSA9
CkBAIC0yNjgsNiArMjcwLDggQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9i
alByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogICAgIHsgIkNPTlNUX0pBVkFTQ1JJUFQiLCBEb250
RGVsZXRlIHwgUmVhZE9ubHksIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0T2JqQ09OU1RfSkFWQVNDUklQVCksIChpbnRwdHJfdCkwLCBOb0lu
dHJpbnNpYyB9LAogICAgIHsgInZvaWRNZXRob2QiLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlv
biwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblZvaWRNZXRob2QpLCAoaW50cHRyX3QpMCwgTm9JbnRyaW5zaWMgfSwKICAgICB7
ICJ2b2lkTWV0aG9kV2l0aEFyZ3MiLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGludHB0
cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blZvaWRNZXRob2RXaXRoQXJncyksIChpbnRwdHJfdCkzLCBOb0ludHJpbnNpYyB9LAorICAgIHsg
Im9jdGV0TWV0aG9kIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0
aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1l
dGhvZCksIChpbnRwdHJfdCkwLCBOb0ludHJpbnNpYyB9LAorICAgIHsgIm9jdGV0TWV0aG9kV2l0
aEFyZ3MiLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0
PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kV2l0
aEFyZ3MpLCAoaW50cHRyX3QpMywgTm9JbnRyaW5zaWMgfSwKICAgICB7ICJsb25nTWV0aG9kIiwg
RG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVG
dW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kKSwgKGludHB0cl90
KTAsIE5vSW50cmluc2ljIH0sCiAgICAgeyAibG9uZ01ldGhvZFdpdGhBcmdzIiwgRG9udERlbGV0
ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4o
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kV2l0aEFyZ3MpLCAoaW50cHRyX3Qp
MywgTm9JbnRyaW5zaWMgfSwKICAgICB7ICJvYmpNZXRob2QiLCBEb250RGVsZXRlIHwgSlNDOjpG
dW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZCksIChpbnRwdHJfdCkwLCBOb0ludHJpbnNpYyB9LApA
QCAtMzMwLDcgKzMzNCw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQ
cm90b3R5cGVUYWJsZVZhbHVlc1tdID0KICAgICB7IDAsIDAsIDAsIDAsIE5vSW50cmluc2ljIH0K
IH07CiAKLXN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0T2JqUHJvdG90eXBlVGFibGUgPSB7
IDI2NiwgMjU1LCBKU1Rlc3RPYmpQcm90b3R5cGVUYWJsZVZhbHVlcywgMCB9Oworc3RhdGljIGNv
bnN0IEhhc2hUYWJsZSBKU1Rlc3RPYmpQcm90b3R5cGVUYWJsZSA9IHsgMjY3LCAyNTUsIEpTVGVz
dE9ialByb3RvdHlwZVRhYmxlVmFsdWVzLCAwIH07CiBjb25zdCBDbGFzc0luZm8gSlNUZXN0T2Jq
UHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0T2JqZWN0UHJvdG90eXBlIiwgJkJhc2U6OnNfaW5m
bywgJkpTVGVzdE9ialByb3RvdHlwZVRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVz
dE9ialByb3RvdHlwZSkgfTsKIAogSlNPYmplY3QqIEpTVGVzdE9ialByb3RvdHlwZTo6c2VsZihF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCkBAIC00NTksNiAr
NDYzLDI2IEBAIEpTVmFsdWUganNUZXN0T2JqRW51bUF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB9CiAKIAorSlNWYWx1ZSBqc1Rlc3RPYmpCeXRl
QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKK3sK
KyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qo
c2xvdEJhc2UpKTsKKyAgICBVTlVTRURfUEFSQU0oZXhlYyk7CisgICAgVGVzdE9iaiogaW1wbCA9
IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNOdW1iZXIoaW1wbC0+Ynl0ZUF0dHIoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworCitKU1ZhbHVlIGpzVGVzdE9iak9jdGV0QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKK3sKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAgICBVTlVTRURfUEFS
QU0oZXhlYyk7CisgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0
ZWRUaGlzLT5pbXBsKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC0+b2N0
ZXRBdHRyKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKwogSlNWYWx1ZSBqc1Rlc3RPYmpT
aG9ydEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUp
CiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2Jq
ZWN0KHNsb3RCYXNlKSk7CkBAIC0xMDk0LDYgKzExMTgsMzAgQEAgdm9pZCBzZXRKU1Rlc3RPYmpF
bnVtQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQogfQogCiAKK3ZvaWQgc2V0SlNUZXN0T2JqQnl0ZUF0dHIoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBVTlVTRURfUEFSQU0o
ZXhlYyk7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KHRo
aXNPYmplY3QpOworICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2Fz
dGVkVGhpcy0+aW1wbCgpKTsKKyAgICBpbnQ4X3QgbmF0aXZlVmFsdWUoc3RhdGljX2Nhc3Q8aW50
OF90Pih0b0ludDMyKGV4ZWMsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKSkpOworICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuOworICAgIGltcGwtPnNldEJ5dGVB
dHRyKG5hdGl2ZVZhbHVlKTsKK30KKworCit2b2lkIHNldEpTVGVzdE9iak9jdGV0QXR0cihFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAg
IFVOVVNFRF9QQVJBTShleGVjKTsKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8
SlNUZXN0T2JqKj4odGhpc09iamVjdCk7CisgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0
PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIHVpbnQ4X3QgbmF0aXZlVmFsdWUo
c3RhdGljX2Nhc3Q8dWludDhfdD4odG9JbnQzMihleGVjLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lv
bikpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybjsKKyAg
ICBpbXBsLT5zZXRPY3RldEF0dHIobmF0aXZlVmFsdWUpOworfQorCisKIHZvaWQgc2V0SlNUZXN0
T2JqU2hvcnRBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwpAQCAtMTcwOCw2ICsxNzU2LDEw
MyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVm9pZE1ldGhvZFdpdGhBcmdzKEV4ZWNTdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2QxKEV4ZWNTdGF0ZSogZXhlYykK
K3sKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKKyAgICBp
ZiAoIXRoaXNWYWx1ZS5pbmhlcml0cygmSlNUZXN0T2JqOjpzX2luZm8pKQorICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBq
c0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CisgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAmSlNUZXN0T2JqOjpzX2luZm8pOworICAgIFRlc3RP
YmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKwor
ICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLT5vY3RldE1ldGhvZCgpKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRo
b2RXaXRoQXJnczEoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOworICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKCZKU1Rl
c3RPYmo6OnNfaW5mbykpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwor
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0
aGlzVmFsdWUpKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICZK
U1Rlc3RPYmo6OnNfaW5mbyk7CisgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RP
YmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkg
PCAzKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKGV4ZWMpKTsKKyAgICBpbnQ4X3QgYnl0ZUFyZyhzdGF0aWNfY2FzdDxpbnQ4
X3Q+KHRvSW50MzIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pKSk7
CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIGNvbnN0IFN0cmluZyYgc3RyQXJnKGV4ZWMtPmFy
Z3VtZW50KDEpLmlzRW1wdHkoKSA/IFN0cmluZygpIDogZXhlYy0+YXJndW1lbnQoMSkudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgVGVzdE9i
aiogb2JqQXJnKHRvVGVzdE9iaihleGVjLT5hcmd1bWVudCgyKSkpOworICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKKworICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLT5vY3RldE1l
dGhvZFdpdGhBcmdzKGJ5dGVBcmcsIHN0ckFyZywgb2JqQXJnKSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kMihFeGVjU3RhdGUqIGV4
ZWMpCit7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7Cisg
ICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkpTVGVzdE9iajo6c19pbmZvKSkKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOworICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJkpTVGVzdE9iajo6c19pbmZvKTsKKyAgICBU
ZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7
CisKKyAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC0+b2N0ZXRNZXRob2Qo
KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworfQorCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2Qo
RXhlY1N0YXRlKiBleGVjKQoreworICAgIHNpemVfdCBhcmdzQ291bnQgPSBleGVjLT5hcmd1bWVu
dENvdW50KCk7CisgICAgaWYgKGFyZ3NDb3VudCA9PSAwKQorICAgICAgICByZXR1cm4ganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZDEoZXhlYyk7CisgICAgaWYgKGFyZ3NDb3Vu
dCA9PSAwKQorICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1l
dGhvZDIoZXhlYyk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Cit9CisKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uT2N0ZXRNZXRob2RXaXRoQXJnczIoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOworICAgIGlmICghdGhpc1ZhbHVlLmlu
aGVyaXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoq
Pihhc09iamVjdCh0aGlzVmFsdWUpKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsICZKU1Rlc3RPYmo6OnNfaW5mbyk7CisgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRp
Y19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIGlmIChleGVjLT5hcmd1
bWVudENvdW50KCkgPCAzKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKKyAgICB1aW50OF90IG9jdGV0QXJnKHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KHRvSW50MzIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIE5vcm1h
bENvbnZlcnNpb24pKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIGNvbnN0IFN0cmluZyYg
c3RyQXJnKGV4ZWMtPmFyZ3VtZW50KDEpLmlzRW1wdHkoKSA/IFN0cmluZygpIDogZXhlYy0+YXJn
dW1lbnQoMSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CisgICAgVGVzdE9iaiogb2JqQXJnKHRvVGVzdE9iaihleGVjLT5hcmd1bWVudCgyKSkpOwor
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBqc051bWJl
cihpbXBsLT5vY3RldE1ldGhvZFdpdGhBcmdzKG9jdGV0QXJnLCBzdHJBcmcsIG9iakFyZykpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kV2l0aEFy
Z3MoRXhlY1N0YXRlKiBleGVjKQoreworICAgIHNpemVfdCBhcmdzQ291bnQgPSBleGVjLT5hcmd1
bWVudENvdW50KCk7CisgICAgSlNWYWx1ZSBhcmcyKGV4ZWMtPmFyZ3VtZW50KDIpKTsKKyAgICBp
ZiAoKGFyZ3NDb3VudCA9PSAzICYmIChhcmcyLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QoYXJnMikt
PmluaGVyaXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykpKSkKKyAgICAgICAgcmV0dXJuIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2RXaXRoQXJnczEoZXhlYyk7CisgICAgaWYgKChh
cmdzQ291bnQgPT0gMyAmJiAoYXJnMi5pc09iamVjdCgpICYmIGFzT2JqZWN0KGFyZzIpLT5pbmhl
cml0cygmSlNUZXN0T2JqOjpzX2luZm8pKSkpCisgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kV2l0aEFyZ3MyKGV4ZWMpOworICAgIGlmIChhcmdzQ291
bnQgPCAzKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKK30KKwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkxvbmdNZXRob2QoRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCmluZGV4IDdmZTUzYjMuLjk1MzE1OTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmgKQEAgLTE2MSw2ICsxNjEsOCBAQCBwcm90ZWN0ZWQ6CiAKIEpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2Qo
SlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2RXaXRoQXJncyhKU0M6OkV4ZWNTdGF0ZSop
OworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uT2N0ZXRNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kV2l0aEFy
Z3MoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKIEpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkxvbmdNZXRob2RXaXRoQXJncyhKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kKEpTQzo6
RXhlY1N0YXRlKik7CkBAIC0yMzksNiArMjQxLDEwIEBAIHZvaWQgc2V0SlNUZXN0T2JqQ29uc3Ry
dWN0b3JTdGF0aWNTdHJpbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpT
CiBKU0M6OkpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JUZXN0U3ViT2JqKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6OkpTVmFsdWUganNU
ZXN0T2JqRW51bUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVy
dHlOYW1lKTsKIHZvaWQgc2V0SlNUZXN0T2JqRW51bUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpCeXRlQXR0
cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwordm9p
ZCBzZXRKU1Rlc3RPYmpCeXRlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBK
U0M6OkpTVmFsdWUpOworSlNDOjpKU1ZhbHVlIGpzVGVzdE9iak9jdGV0QXR0cihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwordm9pZCBzZXRKU1Rlc3RP
YmpPY3RldEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVl
KTsKIEpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpTaG9ydEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIHZvaWQgc2V0SlNUZXN0T2JqU2hvcnRBdHRy
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6SlNWYWx1ZSk7CiBKU0M6OkpT
VmFsdWUganNUZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaAppbmRleCA3YTYzMDk4Li5lNzM4
ZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2Jq
Qy9ET01UZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L09iakMvRE9NVGVzdE9iai5oCkBAIC02Niw2ICs2Niw4IEBAIGVudW0gewogQHByb3BlcnR5KHJl
YWRvbmx5KSBpbnQgcmVhZE9ubHlMb25nQXR0cjsKIEBwcm9wZXJ0eShyZWFkb25seSwgY29weSkg
TlNTdHJpbmcgKnJlYWRPbmx5U3RyaW5nQXR0cjsKIEBwcm9wZXJ0eShyZWFkb25seSwgcmV0YWlu
KSBET01UZXN0T2JqICpyZWFkT25seVRlc3RPYmpBdHRyOworQHByb3BlcnR5IGNoYXIgYnl0ZUF0
dHI7CitAcHJvcGVydHkgdW5zaWduZWQgY2hhciBvY3RldEF0dHI7CiBAcHJvcGVydHkgc2hvcnQg
c2hvcnRBdHRyOwogQHByb3BlcnR5IHVuc2lnbmVkIHNob3J0IHVuc2lnbmVkU2hvcnRBdHRyOwog
QHByb3BlcnR5IGludCBsb25nQXR0cjsKQEAgLTEyMiw2ICsxMjQsMTAgQEAgZW51bSB7CiAKIC0g
KHZvaWQpdm9pZE1ldGhvZDsKIC0gKHZvaWQpdm9pZE1ldGhvZFdpdGhBcmdzOihpbnQpbG9uZ0Fy
ZyBzdHJBcmc6KE5TU3RyaW5nICopc3RyQXJnIG9iakFyZzooRE9NVGVzdE9iaiAqKW9iakFyZzsK
Ky0gKGNoYXIpb2N0ZXRNZXRob2Q7CistIChjaGFyKW9jdGV0TWV0aG9kV2l0aEFyZ3M6KGNoYXIp
Ynl0ZUFyZyBzdHJBcmc6KE5TU3RyaW5nICopc3RyQXJnIG9iakFyZzooRE9NVGVzdE9iaiAqKW9i
akFyZzsKKy0gKHVuc2lnbmVkIGNoYXIpb2N0ZXRNZXRob2Q7CistICh1bnNpZ25lZCBjaGFyKW9j
dGV0TWV0aG9kV2l0aEFyZ3M6KHVuc2lnbmVkIGNoYXIpb2N0ZXRBcmcgc3RyQXJnOihOU1N0cmlu
ZyAqKXN0ckFyZyBvYmpBcmc6KERPTVRlc3RPYmogKilvYmpBcmc7CiAtIChpbnQpbG9uZ01ldGhv
ZDsKIC0gKGludClsb25nTWV0aG9kV2l0aEFyZ3M6KGludClsb25nQXJnIHN0ckFyZzooTlNTdHJp
bmcgKilzdHJBcmcgb2JqQXJnOihET01UZXN0T2JqICopb2JqQXJnOwogLSAoRE9NVGVzdE9iaiAq
KW9iak1ldGhvZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9PYmpDL0RPTVRlc3RPYmoubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tCmluZGV4IDg5OTZmZTUuLjJlOWU5NjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmou
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVz
dE9iai5tbQpAQCAtMTExLDYgKzExMSwzMCBAQAogICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIo
SU1QTC0+cmVhZE9ubHlUZXN0T2JqQXR0cigpKSk7CiB9CiAKKy0gKGNoYXIpYnl0ZUF0dHIKK3sK
KyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElN
UEwtPmJ5dGVBdHRyKCk7Cit9CisKKy0gKHZvaWQpc2V0Qnl0ZUF0dHI6KGNoYXIpbmV3Qnl0ZUF0
dHIKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgSU1Q
TC0+c2V0Qnl0ZUF0dHIobmV3Qnl0ZUF0dHIpOworfQorCistICh1bnNpZ25lZCBjaGFyKW9jdGV0
QXR0cgoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBy
ZXR1cm4gSU1QTC0+b2N0ZXRBdHRyKCk7Cit9CisKKy0gKHZvaWQpc2V0T2N0ZXRBdHRyOih1bnNp
Z25lZCBjaGFyKW5ld09jdGV0QXR0cgoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKKyAgICBJTVBMLT5zZXRPY3RldEF0dHIobmV3T2N0ZXRBdHRyKTsKK30KKwog
LSAoc2hvcnQpc2hvcnRBdHRyCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwpAQCAtNzc1LDYgKzc5OSwzMCBAQAogICAgIElNUEwtPnZvaWRNZXRob2RXaXRoQXJn
cyhsb25nQXJnLCBzdHJBcmcsIGNvcmUob2JqQXJnKSk7CiB9CiAKKy0gKGNoYXIpb2N0ZXRNZXRo
b2QKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0
dXJuIElNUEwtPm9jdGV0TWV0aG9kKCk7Cit9CisKKy0gKGNoYXIpb2N0ZXRNZXRob2RXaXRoQXJn
czooY2hhcilieXRlQXJnIHN0ckFyZzooTlNTdHJpbmcgKilzdHJBcmcgb2JqQXJnOihET01UZXN0
T2JqICopb2JqQXJnCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OworICAgIHJldHVybiBJTVBMLT5vY3RldE1ldGhvZFdpdGhBcmdzKGJ5dGVBcmcsIHN0ckFyZywg
Y29yZShvYmpBcmcpKTsKK30KKworLSAodW5zaWduZWQgY2hhcilvY3RldE1ldGhvZAoreworICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+
b2N0ZXRNZXRob2QoKTsKK30KKworLSAodW5zaWduZWQgY2hhcilvY3RldE1ldGhvZFdpdGhBcmdz
Oih1bnNpZ25lZCBjaGFyKW9jdGV0QXJnIHN0ckFyZzooTlNTdHJpbmcgKilzdHJBcmcgb2JqQXJn
OihET01UZXN0T2JqICopb2JqQXJnCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT5vY3RldE1ldGhvZFdpdGhBcmdzKG9jdGV0QXJn
LCBzdHJBcmcsIGNvcmUob2JqQXJnKSk7Cit9CisKIC0gKGludClsb25nTWV0aG9kCiB7CiAgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCmluZGV4IGFmMzk0NWUuLjVmN2Rh
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
T2JqLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9i
ai5pZGwKQEAgLTQ0LDYgKzQ0LDggQEAgZW51bSBUZXN0RW51bVR5cGUgeyAiIiwgIkVudW1WYWx1
ZTEiLCAiRW51bVZhbHVlMiIsICJFbnVtVmFsdWUzIiB9OwogICAgIHN0YXRpYyBhdHRyaWJ1dGUg
RE9NU3RyaW5nICAgICAgICAgc3RhdGljU3RyaW5nQXR0cjsKICAgICBzdGF0aWMgcmVhZG9ubHkg
YXR0cmlidXRlIFRlc3RTdWJPYmpDb25zdHJ1Y3RvciBUZXN0U3ViT2JqOwogICAgIGF0dHJpYnV0
ZSBUZXN0RW51bVR5cGUgICAgICAgICAgICAgZW51bUF0dHI7CisgICAgYXR0cmlidXRlIGJ5dGUg
ICAgICAgICAgICAgICAgICAgICBieXRlQXR0cjsKKyAgICBhdHRyaWJ1dGUgb2N0ZXQgICAgICAg
ICAgICAgICAgICAgIG9jdGV0QXR0cjsKICAgICBhdHRyaWJ1dGUgc2hvcnQgICAgICAgICAgICAg
ICAgICAgIHNob3J0QXR0cjsKICAgICBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgICAgICAgICAg
IHVuc2lnbmVkU2hvcnRBdHRyOwogICAgIGF0dHJpYnV0ZSBsb25nICAgICAgICAgICAgICAgICAg
ICAgbG9uZ0F0dHI7CkBAIC03Myw2ICs3NSwxMCBAQCBlbnVtIFRlc3RFbnVtVHlwZSB7ICIiLCAi
RW51bVZhbHVlMSIsICJFbnVtVmFsdWUyIiwgIkVudW1WYWx1ZTMiIH07CiAgICAgLy8gTWV0aG9k
cwogICAgIHZvaWQgICAgdm9pZE1ldGhvZCgpOwogICAgIHZvaWQgICAgdm9pZE1ldGhvZFdpdGhB
cmdzKGxvbmcgbG9uZ0FyZywgRE9NU3RyaW5nIHN0ckFyZywgVGVzdE9iaiBvYmpBcmcpOworICAg
IGJ5dGUgICAgb2N0ZXRNZXRob2QoKTsKKyAgICBieXRlICAgIG9jdGV0TWV0aG9kV2l0aEFyZ3Mo
Ynl0ZSBieXRlQXJnLCBET01TdHJpbmcgc3RyQXJnLCBUZXN0T2JqIG9iakFyZyk7CisgICAgb2N0
ZXQgICBvY3RldE1ldGhvZCgpOworICAgIG9jdGV0ICAgb2N0ZXRNZXRob2RXaXRoQXJncyhvY3Rl
dCBvY3RldEFyZywgRE9NU3RyaW5nIHN0ckFyZywgVGVzdE9iaiBvYmpBcmcpOwogICAgIGxvbmcg
ICAgbG9uZ01ldGhvZCgpOwogICAgIGxvbmcgICAgbG9uZ01ldGhvZFdpdGhBcmdzKGxvbmcgbG9u
Z0FyZywgRE9NU3RyaW5nIHN0ckFyZywgVGVzdE9iaiBvYmpBcmcpOwogICAgIFRlc3RPYmogb2Jq
TWV0aG9kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9EYXRhVmll
dy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9EYXRhVmlldy5pZGwKaW5kZXggYzBh
NDJhMC4uNTA3YjBhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRGF0
YVZpZXcuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0RhdGFWaWV3LmlkbApA
QCAtMzEsMTEgKzMxLDggQEAKIF0gaW50ZXJmYWNlIERhdGFWaWV3IDogQXJyYXlCdWZmZXJWaWV3
IHsKICAgICAvLyBBbGwgdGhlc2UgbWV0aG9kcyByYWlzZSBhbiBleGNlcHRpb24gaWYgdGhleSB3
b3VsZCByZWFkIG9yIHdyaXRlIGJleW9uZCB0aGUgZW5kIG9mIHRoZSB2aWV3LgogCi0gICAgLy8g
V2UgaGF2ZSB0byB1c2UgY3VzdG9tIGNvZGUgYmVjYXVzZSBvdXIgY29kZSBnZW5lcmF0b3IgZG9l
cyBub3Qgc3VwcG9ydCBpbnQ4X3QgdHlwZS4KLSAgICAvLyBpbnQ4X3QgZ2V0SW50OCh1bnNpZ25l
ZCBsb25nIGJ5dGVPZmZzZXQpOwotICAgIC8vIHVpbnQ4X3QgZ2V0VWludDgodW5zaWduZWQgbG9u
ZyBieXRlT2Zmc2V0KTsKLSAgICBbQ3VzdG9tLCBSYWlzZXNFeGNlcHRpb25dIGFueSBnZXRJbnQ4
KCk7Ci0gICAgW0N1c3RvbSwgUmFpc2VzRXhjZXB0aW9uXSBhbnkgZ2V0VWludDgoKTsKKyAgICBb
UmFpc2VzRXhjZXB0aW9uXSBieXRlIGdldEludDgodW5zaWduZWQgbG9uZyBieXRlT2Zmc2V0KTsK
KyAgICBbUmFpc2VzRXhjZXB0aW9uXSBvY3RldCBnZXRVaW50OCh1bnNpZ25lZCBsb25nIGJ5dGVP
ZmZzZXQpOwogCiAgICAgW1N0cmljdFR5cGVDaGVja2luZywgUmFpc2VzRXhjZXB0aW9uXSBzaG9y
dCBnZXRJbnQxNih1bnNpZ25lZCBsb25nIGJ5dGVPZmZzZXQsIG9wdGlvbmFsIGJvb2xlYW4gbGl0
dGxlRW5kaWFuKTsKICAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBSYWlzZXNFeGNlcHRpb25dIHVu
c2lnbmVkIHNob3J0IGdldFVpbnQxNih1bnNpZ25lZCBsb25nIGJ5dGVPZmZzZXQsIG9wdGlvbmFs
IGJvb2xlYW4gbGl0dGxlRW5kaWFuKTsKQEAgLTQ2LDExICs0Myw4IEBACiAgICAgW0N1c3RvbSwg
U3RyaWN0VHlwZUNoZWNraW5nLCBSYWlzZXNFeGNlcHRpb25dIGZsb2F0IGdldEZsb2F0MzIodW5z
aWduZWQgbG9uZyBieXRlT2Zmc2V0LCBvcHRpb25hbCBib29sZWFuIGxpdHRsZUVuZGlhbik7CiAg
ICAgW0N1c3RvbSwgU3RyaWN0VHlwZUNoZWNraW5nLCBSYWlzZXNFeGNlcHRpb25dIGRvdWJsZSBn
ZXRGbG9hdDY0KHVuc2lnbmVkIGxvbmcgYnl0ZU9mZnNldCwgb3B0aW9uYWwgYm9vbGVhbiBsaXR0
bGVFbmRpYW4pOwogCi0gICAgLy8gV2UgaGF2ZSB0byB1c2UgY3VzdG9tIGNvZGUgYmVjYXVzZSBv
dXIgY29kZSBnZW5lcmF0b3IgZG9lcyBub3Qgc3VwcG9ydCB1aW50OF90IHR5cGUuCi0gICAgLy8g
dm9pZCBzZXRJbnQ4KHVuc2lnbmVkIGxvbmcgYnl0ZU9mZnNldCwgaW50OF90IHZhbHVlKTsKLSAg
ICAvLyB2b2lkIHNldFVpbnQ4KHVuc2lnbmVkIGxvbmcgYnl0ZU9mZnNldCwgdWludDhfdCB2YWx1
ZSk7Ci0gICAgW0N1c3RvbSwgUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHNldEludDgoKTsKLSAgICBb
Q3VzdG9tLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgc2V0VWludDgoKTsKKyAgICBbUmFpc2VzRXhj
ZXB0aW9uXSB2b2lkIHNldEludDgodW5zaWduZWQgbG9uZyBieXRlT2Zmc2V0LCBieXRlIHZhbHVl
KTsKKyAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHNldFVpbnQ4KHVuc2lnbmVkIGxvbmcgYnl0
ZU9mZnNldCwgb2N0ZXQgdmFsdWUpOwogCiAgICAgW1N0cmljdFR5cGVDaGVja2luZywgUmFpc2Vz
RXhjZXB0aW9uXSB2b2lkIHNldEludDE2KHVuc2lnbmVkIGxvbmcgYnl0ZU9mZnNldCwgc2hvcnQg
dmFsdWUsIG9wdGlvbmFsIGJvb2xlYW4gbGl0dGxlRW5kaWFuKTsKICAgICBbU3RyaWN0VHlwZUNo
ZWNraW5nLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgc2V0VWludDE2KHVuc2lnbmVkIGxvbmcgYnl0
ZU9mZnNldCwgdW5zaWduZWQgc2hvcnQgdmFsdWUsIG9wdGlvbmFsIGJvb2xlYW4gbGl0dGxlRW5k
aWFuKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204452</attachid>
            <date>2013-06-12 09:55:06 -0700</date>
            <delta_ts>2013-06-13 01:02:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>117547_byte_octet.patch</filename>
            <type>text/plain</type>
            <size>41970</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyODM4ZjJlLi5kMzU5OTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDcg
QEAKIDIwMTMtMDYtMTIgIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcu
Y29tPgogCisgICAgICAgIFN1cHBvcnQgYnl0ZSBhbmQgb2N0ZXQgdHlwZXMgaW4gYmluZGluZ3Mg
Z2VuZXJhdG9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTE3NTQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIHN1cHBvcnQgZm9yIGJ5dGUgYW5kIG9jdGV0IElETCB0eXBlcyB0byB0aGUgYmluZGlu
Z3MKKyAgICAgICAgZ2VuZXJhdG9yOgorICAgICAgICBodHRwOi8vZGV2LnczLm9yZy8yMDA2L3dl
YmFwaS9XZWJJREwvI2lkbC1ieXRlCisgICAgICAgIGh0dHA6Ly9kZXYudzMub3JnLzIwMDYvd2Vi
YXBpL1dlYklETC8jaWRsLW9jdGV0CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb3ZlcmVkIGJ5
IGV4aXN0aW5nIGxheW91dCB0ZXN0cyBhbmQgYnkgbmV3CisgICAgICAgIGJpbmRpbmdzIHRlc3Rz
LgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNEYXRhVmlld0N1c3RvbS5jcHA6IFJlbW92ZSBj
dXN0b20gY29kZSBmb3IKKyAgICAgICAgZ2V0SW50OCwgZ2V0VUludDgsIHNldEludDgsIHNldFVJ
bnQ4IG5vdyB0aGF0IGJ5dGUgYW5kIG9jdGV0CisgICAgICAgIHR5cGVzIGFyZSBzdXBwb3J0ZWQg
YnkgdGhlIGJpbmRpbmdzIGdlbmVyYXRvci4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JDUFAucG06CisgICAgICAgIChHZXRDUFBUeXBlKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtOgorICAgICAgICAoR2V0R1ZhbHVl
VHlwZU5hbWUpOgorICAgICAgICAoR2V0R2xpYlR5cGVOYW1lKToKKyAgICAgICAgKEdldFdyaXRl
YWJsZVByb3BlcnRpZXMpOgorICAgICAgICAoR2VuZXJhdGVQcm9wZXJ0eSk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChKU1ZhbHVlVG9O
YXRpdmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG06
CisgICAgICAgIChHZXRDbGFzc05hbWUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9DUFAvV2ViRE9NVGVzdE9iai5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0NQUC9XZWJET01UZXN0T2JqLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dP
YmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9E
T01UZXN0T2JqLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVz
dE9iai5tbToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGw6IEFk
ZCB0ZXN0cyBmb3IgYnl0ZSBhbmQgb2N0ZXQgdHlwZXMuCisgICAgICAgICogaHRtbC9jYW52YXMv
RGF0YVZpZXcuaWRsOiBSZW1vdmUgW0N1c3RvbV0gZXh0ZW5kZWQgYXR0cmlidXRlIGZvcgorICAg
ICAgICBnZXRJbnQ4LCBnZXRVSW50OCwgc2V0SW50OCwgc2V0VUludDggYW5kIHVzZSBuZXdseSBz
dXBwb3J0ZWQgYnl0ZSAvIG9jdGV0CisgICAgICAgIHR5cGVzLgorCisyMDEzLTA2LTEyICBDaHJp
c3RvcGhlIER1bWV6ICA8Y2guZHVtZXpAc2lzYS5zYW1zdW5nLmNvbT4KKwogICAgICAgICBTdXBw
b3J0IGxhdGVzdCBXZWIgSURMIGluZGV4ZWQgcHJvcGVydHkgZ2V0dGVycwogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE3NTA3CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YVZpZXdDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhVmlld0N1c3RvbS5jcHAKaW5kZXggNjA0Y2IxMC4u
MjM2NDFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhVmll
d0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhVmlld0N1
c3RvbS5jcHAKQEAgLTM2LDggKzM2LDYgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogZW51bSBEYXRhVmlld0FjY2Vzc1R5cGUgewotICAgIEFjY2Vzc0RhdGFW
aWV3TWVtYmVyQXNJbnQ4LAotICAgIEFjY2Vzc0RhdGFWaWV3TWVtYmVyQXNVaW50OCwKICAgICBB
Y2Nlc3NEYXRhVmlld01lbWJlckFzRmxvYXQzMiwKICAgICBBY2Nlc3NEYXRhVmlld01lbWJlckFz
RmxvYXQ2NAogfTsKQEAgLTgwLDEyICs3OCw2IEBAIHN0YXRpYyBKU1ZhbHVlIGdldERhdGFWaWV3
TWVtYmVyKEV4ZWNTdGF0ZSogZXhlYywgRGF0YVZpZXcqIGltcCwgRGF0YVZpZXdBY2Nlc3NUCiAK
ICAgICBKU0M6OkpTVmFsdWUgcmVzdWx0OwogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2Ug
QWNjZXNzRGF0YVZpZXdNZW1iZXJBc0ludDg6Ci0gICAgICAgIHJlc3VsdCA9IGpzTnVtYmVyKGlt
cC0+Z2V0SW50OChieXRlT2Zmc2V0LCBlYykpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFj
Y2Vzc0RhdGFWaWV3TWVtYmVyQXNVaW50ODoKLSAgICAgICAgcmVzdWx0ID0ganNOdW1iZXIoaW1w
LT5nZXRVaW50OChieXRlT2Zmc2V0LCBlYykpOwotICAgICAgICBicmVhazsKICAgICBjYXNlIEFj
Y2Vzc0RhdGFWaWV3TWVtYmVyQXNGbG9hdDMyOgogICAgIGNhc2UgQWNjZXNzRGF0YVZpZXdNZW1i
ZXJBc0Zsb2F0NjQ6IHsKICAgICAgICAgZG91YmxlIHZhbHVlID0gKHR5cGUgPT0gQWNjZXNzRGF0
YVZpZXdNZW1iZXJBc0Zsb2F0MzIpID8gaW1wLT5nZXRGbG9hdDMyKGJ5dGVPZmZzZXQsIGxpdHRs
ZUVuZGlhbiwgZWMpIDogaW1wLT5nZXRGbG9hdDY0KGJ5dGVPZmZzZXQsIGxpdHRsZUVuZGlhbiwg
ZWMpOwpAQCAtOTksMTYgKzkxLDYgQEAgc3RhdGljIEpTVmFsdWUgZ2V0RGF0YVZpZXdNZW1iZXIo
RXhlY1N0YXRlKiBleGVjLCBEYXRhVmlldyogaW1wLCBEYXRhVmlld0FjY2Vzc1QKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi1KU1ZhbHVlIEpTRGF0YVZpZXc6OmdldEludDgoRXhlY1N0YXRlKiBl
eGVjKQotewotICAgIHJldHVybiBnZXREYXRhVmlld01lbWJlcihleGVjLCBzdGF0aWNfY2FzdDxE
YXRhVmlldyo+KGltcGwoKSksIEFjY2Vzc0RhdGFWaWV3TWVtYmVyQXNJbnQ4KTsKLX0KLQotSlNW
YWx1ZSBKU0RhdGFWaWV3OjpnZXRVaW50OChFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgcmV0dXJu
IGdldERhdGFWaWV3TWVtYmVyKGV4ZWMsIHN0YXRpY19jYXN0PERhdGFWaWV3Kj4oaW1wbCgpKSwg
QWNjZXNzRGF0YVZpZXdNZW1iZXJBc1VpbnQ4KTsKLX0KLQogSlNWYWx1ZSBKU0RhdGFWaWV3Ojpn
ZXRGbG9hdDMyKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICByZXR1cm4gZ2V0RGF0YVZpZXdNZW1i
ZXIoZXhlYywgc3RhdGljX2Nhc3Q8RGF0YVZpZXcqPihpbXBsKCkpLCBBY2Nlc3NEYXRhVmlld01l
bWJlckFzRmxvYXQzMik7CkBAIC0xMTksNDEgKzEwMSw0IEBAIEpTVmFsdWUgSlNEYXRhVmlldzo6
Z2V0RmxvYXQ2NChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIGdldERhdGFWaWV3TWVtYmVy
KGV4ZWMsIHN0YXRpY19jYXN0PERhdGFWaWV3Kj4oaW1wbCgpKSwgQWNjZXNzRGF0YVZpZXdNZW1i
ZXJBc0Zsb2F0NjQpOwogfQogCi1zdGF0aWMgSlNWYWx1ZSBzZXREYXRhVmlld01lbWJlcihFeGVj
U3RhdGUqIGV4ZWMsIERhdGFWaWV3KiBpbXAsIERhdGFWaWV3QWNjZXNzVHlwZSB0eXBlKQotewot
ICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQotICAgICAgICByZXR1cm4gdGhyb3dF
cnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7Ci0gICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCA9IGV4ZWMtPmFyZ3Vt
ZW50KDApLnRvVUludDMyKGV4ZWMpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgaW50IHZhbHVlID0gZXhlYy0+YXJndW1l
bnQoMSkudG9JbnQzMihleGVjKTsKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgICAgICAKLSAgICBzd2l0Y2ggKHR5cGUpIHsK
LSAgICBjYXNlIEFjY2Vzc0RhdGFWaWV3TWVtYmVyQXNJbnQ4OgotICAgICAgICBpbXAtPnNldElu
dDgoYnl0ZU9mZnNldCwgc3RhdGljX2Nhc3Q8aW50OF90Pih2YWx1ZSksIGVjKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBBY2Nlc3NEYXRhVmlld01lbWJlckFzVWludDg6Ci0gICAgICAgIGlt
cC0+c2V0VWludDgoYnl0ZU9mZnNldCwgc3RhdGljX2Nhc3Q8dWludDhfdD4odmFsdWUpLCBlYyk7
Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVj
KTsKLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQotSlNWYWx1ZSBKU0RhdGFWaWV3Ojpz
ZXRJbnQ4KEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICByZXR1cm4gc2V0RGF0YVZpZXdNZW1iZXIo
ZXhlYywgc3RhdGljX2Nhc3Q8RGF0YVZpZXcqPihpbXBsKCkpLCBBY2Nlc3NEYXRhVmlld01lbWJl
ckFzSW50OCk7Ci19Ci0KLUpTVmFsdWUgSlNEYXRhVmlldzo6c2V0VWludDgoRXhlY1N0YXRlKiBl
eGVjKQotewotICAgIHJldHVybiBzZXREYXRhVmlld01lbWJlcihleGVjLCBzdGF0aWNfY2FzdDxE
YXRhVmlldyo+KGltcGwoKSksIEFjY2Vzc0RhdGFWaWV3TWVtYmVyQXNVaW50OCk7Ci19Ci0KIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckNQUC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckNQUC5wbQppbmRleCAyM2Y4M2Q0Li5kZjFmYzJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JDUFAucG0K
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yQ1BQLnBt
CkBAIC0yMzYsNiArMjM2LDggQEAgc3ViIEdldENQUFR5cGUKICAgICBteSAkdXNlQ29uc3RSZWZl
cmVuY2UgPSBzaGlmdDsKICAgICBteSAkbmFtZSA9IEdldENsYXNzTmFtZSgkdHlwZSk7CiAKKyAg
ICByZXR1cm4gImNoYXIiIGlmICR0eXBlIGVxICJieXRlIjsKKyAgICByZXR1cm4gInVuc2lnbmVk
IGNoYXIiIGlmICR0eXBlIGVxICJvY3RldCI7CiAgICAgcmV0dXJuICJpbnQiIGlmICR0eXBlIGVx
ICJsb25nIjsKICAgICByZXR1cm4gInVuc2lnbmVkIiBpZiAkbmFtZSBlcSAidW5zaWduZWQgbG9u
ZyI7CiAgICAgcmV0dXJuICJ1bnNpZ25lZCBzaG9ydCIgaWYgJHR5cGUgZXEgIkNvbXBhcmVIb3ci
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yR09iamVjdC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckdPYmplY3QucG0KaW5kZXggY2YwYjc0NC4uNTViMDVkMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtCkBA
IC0zMjgsNiArMzI4LDggQEAgc3ViIEdldEdWYWx1ZVR5cGVOYW1lIHsKICAgICAgICAgICAgICAg
ICAgImNoYXIiLCAiY2hhciIsCiAgICAgICAgICAgICAgICAgICJsb25nIiwgImxvbmciLAogICAg
ICAgICAgICAgICAgICAibG9uZyBsb25nIiwgImludDY0IiwKKyAgICAgICAgICAgICAgICAgImJ5
dGUiLCAiaW50OCIsCisgICAgICAgICAgICAgICAgICJvY3RldCIsICJ1aW50OCIsCiAgICAgICAg
ICAgICAgICAgICJzaG9ydCIsICJpbnQiLAogICAgICAgICAgICAgICAgICAidWNoYXIiLCAidWNo
YXIiLAogICAgICAgICAgICAgICAgICAidW5zaWduZWQiLCAidWludCIsCkBAIC0zNTQsNiArMzU2
LDggQEAgc3ViIEdldEdsaWJUeXBlTmFtZSB7CiAgICAgICAgICAgICAgICAgICJjaGFyIiwgImdj
aGFyIiwKICAgICAgICAgICAgICAgICAgImxvbmciLCAiZ2xvbmciLAogICAgICAgICAgICAgICAg
ICAibG9uZyBsb25nIiwgImdpbnQ2NCIsCisgICAgICAgICAgICAgICAgICJieXRlIiwgImdpbnQ4
IiwKKyAgICAgICAgICAgICAgICAgIm9jdGV0IiwgImd1aW50OCIsCiAgICAgICAgICAgICAgICAg
ICJzaG9ydCIsICJnc2hvcnQiLAogICAgICAgICAgICAgICAgICAidWNoYXIiLCAiZ3VjaGFyIiwK
ICAgICAgICAgICAgICAgICAgInVuc2lnbmVkIiwgImd1aW50IiwKQEAgLTM5Niw4ICs0MDAsOSBA
QCBzdWIgR2V0V3JpdGVhYmxlUHJvcGVydGllcyB7CiAgICAgICAgIG15ICRndHlwZSA9IEdldEdW
YWx1ZVR5cGVOYW1lKCRwcm9wZXJ0eS0+c2lnbmF0dXJlLT50eXBlKTsKICAgICAgICAgbXkgJGhh
c0d0eXBlU2lnbmF0dXJlID0gKCRndHlwZSBlcSAiYm9vbGVhbiIgfHwgJGd0eXBlIGVxICJmbG9h
dCIgfHwgJGd0eXBlIGVxICJkb3VibGUiIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAkZ3R5cGUgZXEgInVpbnQ2NCIgfHwgJGd0eXBlIGVxICJ1bG9uZyIgfHwgJGd0eXBlIGVx
ICJsb25nIiB8fCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRndHlwZSBlcSAi
dWludCIgfHwgJGd0eXBlIGVxICJ1c2hvcnQiIHx8ICRndHlwZSBlcSAidWNoYXIiIHx8Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZ3R5cGUgZXEgImNoYXIiIHx8ICRndHlwZSBl
cSAic3RyaW5nIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZ3R5cGUgZXEg
InVpbnQiIHx8ICRndHlwZSBlcSAidXNob3J0IiB8fCAkZ3R5cGUgZXEgImludDgiIHx8CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZ3R5cGUgZXEgInVpbnQ4IiB8fCAkZ3R5cGUg
ZXEgInVjaGFyIiB8fCAkZ3R5cGUgZXEgImNoYXIiIHx8CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAkZ3R5cGUgZXEgInN0cmluZyIpOwogICAgICAgICAjIEZJWE1FOiBXZSBhcmUg
bm90IGdlbmVyYXRpbmcgc2V0dGVycyBmb3IgJ1JlcGxhY2VhYmxlJwogICAgICAgICAjIGF0dHJp
YnV0ZXMgbm93LCBidXQgd2Ugc2hvdWxkIHNvbWVob3cuCiAgICAgICAgIG15ICRyZXBsYWNlYWJs
ZSA9ICRwcm9wZXJ0eS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmVwbGFjZWFi
bGUifTsKQEAgLTU2OCw2ICs1NzMsNyBAQCBzdWIgR2VuZXJhdGVQcm9wZXJ0eSB7CiAgICAgcHVz
aChAdHh0R2V0UHJvcHMsICIgICAgICAgIGJyZWFrO1xuICAgIH1cbiIpOwogCiAgICAgbXkgJXBh
cmFtX3NwZWNfb3B0aW9ucyA9ICgiaW50IiwgIkdfTUlOSU5ULCAvKiBtaW4gKi9cbkdfTUFYSU5U
LCAvKiBtYXggKi9cbjAsIC8qIGRlZmF1bHQgKi8iLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImludDgiLCAiR19NSU5JTlQ4LCAvKiBtaW4gKi9cbkdfTUFYSU5UOCwgLyogbWF4ICov
XG4wLCAvKiBkZWZhdWx0ICovIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJib29s
ZWFuIiwgIkZBTFNFLCAvKiBkZWZhdWx0ICovIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJmbG9hdCIsICItR19NQVhGTE9BVCwgLyogbWluICovXG5HX01BWEZMT0FULCAvKiBtYXgg
Ki9cbjAuMCwgLyogZGVmYXVsdCAqLyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
ZG91YmxlIiwgIi1HX01BWERPVUJMRSwgLyogbWluICovXG5HX01BWERPVUJMRSwgLyogbWF4ICov
XG4wLjAsIC8qIGRlZmF1bHQgKi8iLApAQCAtNTc2LDYgKzU4Miw3IEBAIHN1YiBHZW5lcmF0ZVBy
b3BlcnR5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnQ2NCIsICJHX01JTklO
VDY0LCAvKiBtaW4gKi9cbkdfTUFYSU5UNjQsIC8qIG1heCAqL1xuMCwgLyogZGVmYXVsdCAqLyIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidWxvbmciLCAiMCwgLyogbWluICovXG5H
X01BWFVMT05HLCAvKiBtYXggKi9cbjAsIC8qIGRlZmF1bHQgKi8iLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInVpbnQiLCAiMCwgLyogbWluICovXG5HX01BWFVJTlQsIC8qIG1heCAq
L1xuMCwgLyogZGVmYXVsdCAqLyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidWlu
dDgiLCAiMCwgLyogbWluICovXG5HX01BWFVJTlQ4LCAvKiBtYXggKi9cbjAsIC8qIGRlZmF1bHQg
Ki8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVzaG9ydCIsICIwLCAvKiBtaW4g
Ki9cbkdfTUFYVUlOVDE2LCAvKiBtYXggKi9cbjAsIC8qIGRlZmF1bHQgKi8iLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInVjaGFyIiwgIkdfTUlOSU5UOCwgLyogbWluICovXG5HX01B
WElOVDgsIC8qIG1heCAqL1xuMCwgLyogZGVmYXVsdCAqLyIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiY2hhciIsICIwLCAvKiBtaW4gKi9cbkdfTUFYVUlOVDgsIC8qIG1heCAqL1xu
MCwgLyogZGVmYXVsdCAqLyIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDFmMzNjMjEuLjgzYTc5MDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0z
Mzc1LDYgKzMzNzUsOCBAQCBteSAlbmF0aXZlVHlwZSA9ICgKICAgICAidW5zaWduZWQgc2hvcnQi
ID0+ICJ1bnNpZ25lZCBzaG9ydCIsCiAgICAgImxvbmcgbG9uZyIgPT4gImxvbmcgbG9uZyIsCiAg
ICAgInVuc2lnbmVkIGxvbmcgbG9uZyIgPT4gInVuc2lnbmVkIGxvbmcgbG9uZyIsCisgICAgImJ5
dGUiID0+ICJpbnQ4X3QiLAorICAgICJvY3RldCIgPT4gInVpbnQ4X3QiLAogICAgICJNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyIiA9PiAiUmVmUHRyPE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+IiwKICAg
ICAiRE9NVGltZVN0YW1wIiA9PiAiRE9NVGltZVN0YW1wIiwgICAgCiApOwpAQCAtMzQ3OSw2ICsz
NDgxLDggQEAgc3ViIEpTVmFsdWVUb05hdGl2ZQogICAgIHJldHVybiAiJHZhbHVlLnRvRmxvYXQo
ZXhlYykiIGlmICR0eXBlIGVxICJmbG9hdCI7CiAKICAgICBteSAkaW50Q29udmVyc2lvbiA9ICRz
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFbmZvcmNlUmFuZ2UifSA/ICJFbmZvcmNl
UmFuZ2UiIDogIk5vcm1hbENvbnZlcnNpb24iOworICAgIHJldHVybiAic3RhdGljX2Nhc3Q8aW50
OF90Pih0b0ludDMyKGV4ZWMsICR2YWx1ZSwgJGludENvbnZlcnNpb24pKSIgaWYgJHR5cGUgZXEg
ImJ5dGUiOworICAgIHJldHVybiAic3RhdGljX2Nhc3Q8dWludDhfdD4odG9JbnQzMihleGVjLCAk
dmFsdWUsICRpbnRDb252ZXJzaW9uKSkiIGlmICR0eXBlIGVxICJvY3RldCI7CiAgICAgcmV0dXJu
ICJ0b0ludDMyKGV4ZWMsICR2YWx1ZSwgJGludENvbnZlcnNpb24pIiBpZiAkdHlwZSBlcSAibG9u
ZyIgb3IgJHR5cGUgZXEgInNob3J0IjsKICAgICByZXR1cm4gInRvVUludDMyKGV4ZWMsICR2YWx1
ZSwgJGludENvbnZlcnNpb24pIiBpZiAkdHlwZSBlcSAidW5zaWduZWQgbG9uZyIgb3IgJHR5cGUg
ZXEgInVuc2lnbmVkIHNob3J0IjsKICAgICByZXR1cm4gInRvSW50NjQoZXhlYywgJHZhbHVlLCAk
aW50Q29udmVyc2lvbikiIGlmICR0eXBlIGVxICJsb25nIGxvbmciOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbSBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0KaW5kZXggNzhi
N2M3My4uMjliMTM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCkBAIC0zMDIsNiArMzAyLDggQEAgc3ViIEdldENsYXNz
TmFtZQogICAgIHJldHVybiAiTlNTdHJpbmciIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5
cGUoJG5hbWUpIG9yICRuYW1lIGVxICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiOwogICAgIHJldHVy
biAiTlMkbmFtZSIgaWYgSXNOYXRpdmVPYmpDVHlwZSgkbmFtZSk7CiAgICAgcmV0dXJuICJCT09M
IiBpZiAkbmFtZSBlcSAiYm9vbGVhbiI7CisgICAgcmV0dXJuICJ1bnNpZ25lZCBjaGFyIiBpZiAk
bmFtZSBlcSAib2N0ZXQiOworICAgIHJldHVybiAiY2hhciIgaWYgJG5hbWUgZXEgImJ5dGUiOwog
ICAgIHJldHVybiAidW5zaWduZWQiIGlmICRuYW1lIGVxICJ1bnNpZ25lZCBsb25nIjsKICAgICBy
ZXR1cm4gImludCIgaWYgJG5hbWUgZXEgImxvbmciOwogICAgIHJldHVybiAiTlNUaW1lSW50ZXJ2
YWwiIGlmICRuYW1lIGVxICJEYXRlIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwCmluZGV4IDlkNjMwODMu
LmZlNTU0NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9DUFAvV2ViRE9NVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcApAQCAtMTE2LDYgKzExNiwzOCBAQCBXZWJE
T01UZXN0T2JqIFdlYkRPTVRlc3RPYmo6OnJlYWRPbmx5VGVzdE9iakF0dHIoKSBjb25zdAogICAg
IHJldHVybiB0b1dlYktpdChXVEY6OmdldFB0cihpbXBsKCktPnJlYWRPbmx5VGVzdE9iakF0dHIo
KSkpOwogfQogCitjaGFyIFdlYkRPTVRlc3RPYmo6OmJ5dGVBdHRyKCkgY29uc3QKK3sKKyAgICBp
ZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuIGNoYXIoKTsKKworICAgIHJldHVybiBpbXBsKCkt
PmJ5dGVBdHRyKCk7Cit9CisKK3ZvaWQgV2ViRE9NVGVzdE9iajo6c2V0Qnl0ZUF0dHIoY2hhciBu
ZXdCeXRlQXR0cikKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aW1wbCgpLT5zZXRCeXRlQXR0cihuZXdCeXRlQXR0cik7Cit9CisKK3Vuc2lnbmVkIGNoYXIgV2Vi
RE9NVGVzdE9iajo6b2N0ZXRBdHRyKCkgY29uc3QKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAg
ICAgcmV0dXJuIHVuc2lnbmVkIGNoYXIoKTsKKworICAgIHJldHVybiBpbXBsKCktPm9jdGV0QXR0
cigpOworfQorCit2b2lkIFdlYkRPTVRlc3RPYmo6OnNldE9jdGV0QXR0cih1bnNpZ25lZCBjaGFy
IG5ld09jdGV0QXR0cikKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaW1wbCgpLT5zZXRPY3RldEF0dHIobmV3T2N0ZXRBdHRyKTsKK30KKwogc2hvcnQgV2ViRE9N
VGVzdE9iajo6c2hvcnRBdHRyKCkgY29uc3QKIHsKICAgICBpZiAoIWltcGwoKSkKQEAgLTc0OSw2
ICs3ODEsMzggQEAgdm9pZCBXZWJET01UZXN0T2JqOjp2b2lkTWV0aG9kV2l0aEFyZ3MoaW50IGxv
bmdBcmcsIGNvbnN0IFdlYkRPTVN0cmluZyYgc3RyQXJnLAogICAgIGltcGwoKS0+dm9pZE1ldGhv
ZFdpdGhBcmdzKGxvbmdBcmcsIHN0ckFyZywgdG9XZWJDb3JlKG9iakFyZykpOwogfQogCitjaGFy
IFdlYkRPTVRlc3RPYmo6OmJ5dGVNZXRob2QoKQoreworICAgIGlmICghaW1wbCgpKQorICAgICAg
ICByZXR1cm4gY2hhcigpOworCisgICAgcmV0dXJuIGltcGwoKS0+Ynl0ZU1ldGhvZCgpOworfQor
CitjaGFyIFdlYkRPTVRlc3RPYmo6OmJ5dGVNZXRob2RXaXRoQXJncyhjaGFyIGJ5dGVBcmcsIGNv
bnN0IFdlYkRPTVN0cmluZyYgc3RyQXJnLCBjb25zdCBXZWJET01UZXN0T2JqJiBvYmpBcmcpCit7
CisgICAgaWYgKCFpbXBsKCkpCisgICAgICAgIHJldHVybiBjaGFyKCk7CisKKyAgICByZXR1cm4g
aW1wbCgpLT5ieXRlTWV0aG9kV2l0aEFyZ3MoYnl0ZUFyZywgc3RyQXJnLCB0b1dlYkNvcmUob2Jq
QXJnKSk7Cit9CisKK3Vuc2lnbmVkIGNoYXIgV2ViRE9NVGVzdE9iajo6b2N0ZXRNZXRob2QoKQor
eworICAgIGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm4gdW5zaWduZWQgY2hhcigpOworCisg
ICAgcmV0dXJuIGltcGwoKS0+b2N0ZXRNZXRob2QoKTsKK30KKwordW5zaWduZWQgY2hhciBXZWJE
T01UZXN0T2JqOjpvY3RldE1ldGhvZFdpdGhBcmdzKHVuc2lnbmVkIGNoYXIgb2N0ZXRBcmcsIGNv
bnN0IFdlYkRPTVN0cmluZyYgc3RyQXJnLCBjb25zdCBXZWJET01UZXN0T2JqJiBvYmpBcmcpCit7
CisgICAgaWYgKCFpbXBsKCkpCisgICAgICAgIHJldHVybiB1bnNpZ25lZCBjaGFyKCk7CisKKyAg
ICByZXR1cm4gaW1wbCgpLT5vY3RldE1ldGhvZFdpdGhBcmdzKG9jdGV0QXJnLCBzdHJBcmcsIHRv
V2ViQ29yZShvYmpBcmcpKTsKK30KKwogaW50IFdlYkRPTVRlc3RPYmo6OmxvbmdNZXRob2QoKQog
ewogICAgIGlmICghaW1wbCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouaAppbmRleCBiYmQxZGZiLi41NWViNjk1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dl
YkRPTVRlc3RPYmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
Q1BQL1dlYkRPTVRlc3RPYmouaApAQCAtNzEsNiArNzEsMTAgQEAgcHVibGljOgogICAgIGludCBy
ZWFkT25seUxvbmdBdHRyKCkgY29uc3Q7CiAgICAgV2ViRE9NU3RyaW5nIHJlYWRPbmx5U3RyaW5n
QXR0cigpIGNvbnN0OwogICAgIFdlYkRPTVRlc3RPYmogcmVhZE9ubHlUZXN0T2JqQXR0cigpIGNv
bnN0OworICAgIGNoYXIgYnl0ZUF0dHIoKSBjb25zdDsKKyAgICB2b2lkIHNldEJ5dGVBdHRyKGNo
YXIpOworICAgIHVuc2lnbmVkIGNoYXIgb2N0ZXRBdHRyKCkgY29uc3Q7CisgICAgdm9pZCBzZXRP
Y3RldEF0dHIodW5zaWduZWQgY2hhcik7CiAgICAgc2hvcnQgc2hvcnRBdHRyKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRTaG9ydEF0dHIoc2hvcnQpOwogICAgIHVuc2lnbmVkIHNob3J0IHVuc2lnbmVk
U2hvcnRBdHRyKCkgY29uc3Q7CkBAIC0xNTQsNiArMTU4LDEwIEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgdm9pZE1ldGhvZCgpOwogICAgIHZvaWQgdm9pZE1ldGhvZFdpdGhBcmdzKGludCBsb25nQXJn
LCBjb25zdCBXZWJET01TdHJpbmcmIHN0ckFyZywgY29uc3QgV2ViRE9NVGVzdE9iaiYgb2JqQXJn
KTsKKyAgICBjaGFyIGJ5dGVNZXRob2QoKTsKKyAgICBjaGFyIGJ5dGVNZXRob2RXaXRoQXJncyhj
aGFyIGJ5dGVBcmcsIGNvbnN0IFdlYkRPTVN0cmluZyYgc3RyQXJnLCBjb25zdCBXZWJET01UZXN0
T2JqJiBvYmpBcmcpOworICAgIHVuc2lnbmVkIGNoYXIgb2N0ZXRNZXRob2QoKTsKKyAgICB1bnNp
Z25lZCBjaGFyIG9jdGV0TWV0aG9kV2l0aEFyZ3ModW5zaWduZWQgY2hhciBvY3RldEFyZywgY29u
c3QgV2ViRE9NU3RyaW5nJiBzdHJBcmcsIGNvbnN0IFdlYkRPTVRlc3RPYmomIG9iakFyZyk7CiAg
ICAgaW50IGxvbmdNZXRob2QoKTsKICAgICBpbnQgbG9uZ01ldGhvZFdpdGhBcmdzKGludCBsb25n
QXJnLCBjb25zdCBXZWJET01TdHJpbmcmIHN0ckFyZywgY29uc3QgV2ViRE9NVGVzdE9iaiYgb2Jq
QXJnKTsKICAgICBXZWJET01UZXN0T2JqIG9iak1ldGhvZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRE
T01UZXN0T2JqLmNwcAppbmRleCAyM2RhNDFhLi4wYzdlNTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJL
aXRET01UZXN0T2JqLmNwcApAQCAtNzksNiArNzksOCBAQCBlbnVtIHsKICAgICBQUk9QX1JFQURf
T05MWV9MT05HX0FUVFIsCiAgICAgUFJPUF9SRUFEX09OTFlfU1RSSU5HX0FUVFIsCiAgICAgUFJP
UF9SRUFEX09OTFlfVEVTVF9PQkpfQVRUUiwKKyAgICBQUk9QX0JZVEVfQVRUUiwKKyAgICBQUk9Q
X09DVEVUX0FUVFIsCiAgICAgUFJPUF9TSE9SVF9BVFRSLAogICAgIFBST1BfVU5TSUdORURfU0hP
UlRfQVRUUiwKICAgICBQUk9QX0xPTkdfQVRUUiwKQEAgLTE0OCw2ICsxNTAsMTQgQEAgc3RhdGlj
IHZvaWQgd2Via2l0X2RvbV90ZXN0X29ial9zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBn
dWludCBwcm9wZXJ0eUlkLAogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGNvcmVTZWxmID0gV2ViS2l0
Ojpjb3JlKHNlbGYpOwogCiAgICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7CisgICAgY2FzZSBQUk9Q
X0JZVEVfQVRUUjogeworICAgICAgICBjb3JlU2VsZi0+c2V0Qnl0ZUF0dHIoKGdfdmFsdWVfZ2V0
X2ludDgodmFsdWUpKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFBST1BfT0NU
RVRfQVRUUjogeworICAgICAgICBjb3JlU2VsZi0+c2V0T2N0ZXRBdHRyKChnX3ZhbHVlX2dldF91
aW50OCh2YWx1ZSkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgUFJPUF9VTlNJ
R05FRF9TSE9SVF9BVFRSOiB7CiAgICAgICAgIGNvcmVTZWxmLT5zZXRVbnNpZ25lZFNob3J0QXR0
cigoZ192YWx1ZV9nZXRfdWludCh2YWx1ZSkpKTsKICAgICAgICAgYnJlYWs7CkBAIC0zMDMsNiAr
MzEzLDE0IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3Byb3BlcnR5KEdP
YmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwKICAgICAgICAgZ192YWx1ZV9zZXRfb2Jq
ZWN0KHZhbHVlLCBXZWJLaXQ6OmtpdChwdHIuZ2V0KCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQorICAgIGNhc2UgUFJPUF9CWVRFX0FUVFI6IHsKKyAgICAgICAgZ192YWx1ZV9zZXRfaW50OCh2
YWx1ZSwgY29yZVNlbGYtPmJ5dGVBdHRyKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
Y2FzZSBQUk9QX09DVEVUX0FUVFI6IHsKKyAgICAgICAgZ192YWx1ZV9zZXRfdWludDgodmFsdWUs
IGNvcmVTZWxmLT5vY3RldEF0dHIoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNl
IFBST1BfU0hPUlRfQVRUUjogewogICAgICAgICBnX3ZhbHVlX3NldF9pbnQodmFsdWUsIGNvcmVT
ZWxmLT5zaG9ydEF0dHIoKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTkyLDYgKzYxMCwyNCBAQCBH
X01BWExPTkcsIC8qIG1heCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9ET01fVEVTVF9PQkosIC8qIGdvYmpl
Y3QgdHlwZSAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKICAgICBnX29iamVjdF9jbGFz
c19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBST1BfQllURV9BVFRSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ19wYXJhbV9zcGVjX2ludDgoImJ5dGUtYXR0ciIsIC8qIG5hbWUgKi8KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRl
c3Rfb2JqX2J5dGUtYXR0ciIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICovCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWFkLXdyaXRl
ICBnaW50OCBUZXN0T2JqLmJ5dGUtYXR0ciIsIC8qIGxvbmdlciAtIGNvdWxkIGRvIHdpdGggc29t
ZSBleHRyYSBkb2Mgc3R1ZmYgaGVyZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX01JTklOVDgsIC8qIG1pbiAqLworR19NQVhJ
TlQ4LCAvKiBtYXggKi8KKzAsIC8qIGRlZmF1bHQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklU
RSkpOworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdENsYXNzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9PQ1RFVF9BVFRSLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX3VpbnQ4KCJvY3Rl
dC1hdHRyIiwgLyogbmFtZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAidGVzdF9vYmpfb2N0ZXQtYXR0ciIsIC8qIHNob3J0IGRl
c2NyaXB0aW9uICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJyZWFkLXdyaXRlICBndWludDggVGVzdE9iai5vY3RldC1hdHRyIiwg
LyogbG9uZ2VyIC0gY291bGQgZG8gd2l0aCBzb21lIGV4dHJhIGRvYyBzdHVmZiBoZXJlICovCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDAsIC8qIG1pbiAqLworR19NQVhVSU5UOCwgLyogbWF4ICovCiswLCAvKiBkZWZhdWx0ICovCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3By
b3BlcnR5KGdvYmplY3RDbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFBST1BfU0hPUlRfQVRUUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdf
cGFyYW1fc3BlY19pbnQoInNob3J0LWF0dHIiLCAvKiBuYW1lICovCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0X29ial9zaG9y
dC1hdHRyIiwgLyogc2hvcnQgZGVzY3JpcHRpb24gKi8KQEAgLTEwMTAsNiArMTA0Niw1NCBAQCB3
ZWJraXRfZG9tX3Rlc3Rfb2JqX3ZvaWRfbWV0aG9kX3dpdGhfYXJncyhXZWJLaXRET01UZXN0T2Jq
KiBzZWxmLCBnbG9uZyBsb25nQXJnLAogICAgIGl0ZW0tPnZvaWRNZXRob2RXaXRoQXJncyhsb25n
QXJnLCBjb252ZXJ0ZWRTdHJBcmcsIGNvbnZlcnRlZE9iakFyZyk7CiB9CiAKK2dpbnQ4Cit3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX2J5dGVfbWV0aG9kKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCit7Cisg
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2VsZiksIDApOworICAgIFdlYkNvcmU6
OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgZ2ludDggcmVzdWx0ID0g
aXRlbS0+Ynl0ZU1ldGhvZCgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2dpbnQ4Cit3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX2J5dGVfbWV0aG9kX3dpdGhfYXJncyhXZWJLaXRET01UZXN0T2JqKiBz
ZWxmLCBnaW50OCBieXRlQXJnLCBjb25zdCBnY2hhciogc3RyQXJnLCBXZWJLaXRET01UZXN0T2Jq
KiBvYmpBcmcpCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwor
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2VsZiksIDAp
OworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHN0ckFyZywgMCk7CisgICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihvYmpBcmcpLCAwKTsKKyAgICBXZWJDb3Jl
OjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIFdURjo6U3RyaW5nIGNv
bnZlcnRlZFN0ckFyZyA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChzdHJBcmcpOworICAgIFdlYkNv
cmU6OlRlc3RPYmoqIGNvbnZlcnRlZE9iakFyZyA9IFdlYktpdDo6Y29yZShvYmpBcmcpOworICAg
IGdpbnQ4IHJlc3VsdCA9IGl0ZW0tPmJ5dGVNZXRob2RXaXRoQXJncyhieXRlQXJnLCBjb252ZXJ0
ZWRTdHJBcmcsIGNvbnZlcnRlZE9iakFyZyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworZ3Vp
bnQ4Cit3ZWJraXRfZG9tX3Rlc3Rfb2JqX29jdGV0X21ldGhvZChXZWJLaXRET01UZXN0T2JqKiBz
ZWxmKQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpLCAwKTsKKyAg
ICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGd1aW50
OCByZXN1bHQgPSBpdGVtLT5vY3RldE1ldGhvZCgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K2d1aW50OAord2Via2l0X2RvbV90ZXN0X29ial9vY3RldF9tZXRob2Rfd2l0aF9hcmdzKFdlYktp
dERPTVRlc3RPYmoqIHNlbGYsIGd1aW50OCBvY3RldEFyZywgY29uc3QgZ2NoYXIqIHN0ckFyZywg
V2ViS2l0RE9NVGVzdE9iaiogb2JqQXJnKQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RF
U1RfT0JKKHNlbGYpLCAwKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChzdHJBcmcsIDApOwor
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkoob2JqQXJnKSwg
MCk7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAg
ICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRTdHJBcmcgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgoc3Ry
QXJnKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBjb252ZXJ0ZWRPYmpBcmcgPSBXZWJLaXQ6OmNv
cmUob2JqQXJnKTsKKyAgICBndWludDggcmVzdWx0ID0gaXRlbS0+b2N0ZXRNZXRob2RXaXRoQXJn
cyhvY3RldEFyZywgY29udmVydGVkU3RyQXJnLCBjb252ZXJ0ZWRPYmpBcmcpOworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKIGdsb25nCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2xvbmdfbWV0aG9kKFdl
YktpdERPTVRlc3RPYmoqIHNlbGYpCiB7CkBAIC0xNTMyLDYgKzE2MTYsNDQgQEAgd2Via2l0X2Rv
bV90ZXN0X29ial9nZXRfcmVhZF9vbmx5X3Rlc3Rfb2JqX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiog
c2VsZikKICAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7CiB9CiAK
K2dpbnQ4Cit3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9ieXRlX2F0dHIoV2ViS2l0RE9NVGVzdE9i
aiogc2VsZikKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Cisg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxmKSwgMCk7
CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBn
aW50OCByZXN1bHQgPSBpdGVtLT5ieXRlQXR0cigpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K3ZvaWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfc2V0X2J5dGVfYXR0cihXZWJLaXRET01UZXN0T2Jq
KiBzZWxmLCBnaW50OCB2YWx1ZSkKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNl
bGYpKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwor
ICAgIGl0ZW0tPnNldEJ5dGVBdHRyKHZhbHVlKTsKK30KKworZ3VpbnQ4Cit3ZWJraXRfZG9tX3Rl
c3Rfb2JqX2dldF9vY3RldF9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCit7CisgICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2VsZiksIDApOworICAgIFdlYkNvcmU6OlRlc3RP
YmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgZ3VpbnQ4IHJlc3VsdCA9IGl0ZW0t
Pm9jdGV0QXR0cigpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQKK3dlYmtpdF9kb21f
dGVzdF9vYmpfc2V0X29jdGV0X2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ3VpbnQ4IHZh
bHVlKQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBn
X3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2VsZikpOworICAgIFdlYkNv
cmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgaXRlbS0+c2V0T2N0
ZXRBdHRyKHZhbHVlKTsKK30KKwogZ3Nob3J0CiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9zaG9y
dF9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0
T2JqLmgKaW5kZXggN2M5OTJjMy4uNmZlZTU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RP
YmouaApAQCAtNzMsNiArNzMsNTIgQEAgV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rf
b2JqX3ZvaWRfbWV0aG9kX3dpdGhfYXJncyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZyBs
b25nQXJnLCBjb25zdCBnY2hhciogc3RyQXJnLCBXZWJLaXRET01UZXN0T2JqKiBvYmpBcmcpOwog
CiAvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfYnl0ZV9tZXRob2Q6CisgKiBAc2VsZjogQSAj
V2ViS2l0RE9NVGVzdE9iagorICoKKyAqIFJldHVybnM6CisgKgorKiovCitXRUJLSVRfQVBJIGdp
bnQ4Cit3ZWJraXRfZG9tX3Rlc3Rfb2JqX2J5dGVfbWV0aG9kKFdlYktpdERPTVRlc3RPYmoqIHNl
bGYpOworCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfYnl0ZV9tZXRob2Rfd2l0aF9hcmdz
OgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqIEBieXRlQXJnOiBBICNnaW50OAor
ICogQHN0ckFyZzogQSAjZ2NoYXIKKyAqIEBvYmpBcmc6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAq
CisgKiBSZXR1cm5zOgorICoKKyoqLworV0VCS0lUX0FQSSBnaW50OAord2Via2l0X2RvbV90ZXN0
X29ial9ieXRlX21ldGhvZF93aXRoX2FyZ3MoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2ludDgg
Ynl0ZUFyZywgY29uc3QgZ2NoYXIqIHN0ckFyZywgV2ViS2l0RE9NVGVzdE9iaiogb2JqQXJnKTsK
KworLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX29jdGV0X21ldGhvZDoKKyAqIEBzZWxmOiBB
ICNXZWJLaXRET01UZXN0T2JqCisgKgorICogUmV0dXJuczoKKyAqCisqKi8KK1dFQktJVF9BUEkg
Z3VpbnQ4Cit3ZWJraXRfZG9tX3Rlc3Rfb2JqX29jdGV0X21ldGhvZChXZWJLaXRET01UZXN0T2Jq
KiBzZWxmKTsKKworLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX29jdGV0X21ldGhvZF93aXRo
X2FyZ3M6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICogQG9jdGV0QXJnOiBBICNn
dWludDgKKyAqIEBzdHJBcmc6IEEgI2djaGFyCisgKiBAb2JqQXJnOiBBICNXZWJLaXRET01UZXN0
T2JqCisgKgorICogUmV0dXJuczoKKyAqCisqKi8KK1dFQktJVF9BUEkgZ3VpbnQ4Cit3ZWJraXRf
ZG9tX3Rlc3Rfb2JqX29jdGV0X21ldGhvZF93aXRoX2FyZ3MoV2ViS2l0RE9NVGVzdE9iaiogc2Vs
ZiwgZ3VpbnQ4IG9jdGV0QXJnLCBjb25zdCBnY2hhciogc3RyQXJnLCBXZWJLaXRET01UZXN0T2Jq
KiBvYmpBcmcpOworCisvKioKICAqIHdlYmtpdF9kb21fdGVzdF9vYmpfbG9uZ19tZXRob2Q6CiAg
KiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagogICoKQEAgLTU1Niw2ICs2MDIsNDggQEAgV0VC
S0lUX0FQSSBXZWJLaXRET01UZXN0T2JqKgogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfcmVhZF9v
bmx5X3Rlc3Rfb2JqX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZik7CiAKIC8qKgorICogd2Vi
a2l0X2RvbV90ZXN0X29ial9nZXRfYnl0ZV9hdHRyOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRl
c3RPYmoKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLworV0VCS0lUX0FQSSBnaW50OAord2Via2l0
X2RvbV90ZXN0X29ial9nZXRfYnl0ZV9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpOworCisv
KioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X2J5dGVfYXR0cjoKKyAqIEBzZWxmOiBBICNX
ZWJLaXRET01UZXN0T2JqCisgKiBAdmFsdWU6IEEgI2dpbnQ4CisgKgorICogUmV0dXJuczoKKyAq
CisqKi8KK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2RvbV90ZXN0X29ial9zZXRfYnl0ZV9hdHRy
KFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdpbnQ4IHZhbHVlKTsKKworLyoqCisgKiB3ZWJraXRf
ZG9tX3Rlc3Rfb2JqX2dldF9vY3RldF9hdHRyOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RP
YmoKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLworV0VCS0lUX0FQSSBndWludDgKK3dlYmtpdF9k
b21fdGVzdF9vYmpfZ2V0X29jdGV0X2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZik7CisKKy8q
KgorICogd2Via2l0X2RvbV90ZXN0X29ial9zZXRfb2N0ZXRfYXR0cjoKKyAqIEBzZWxmOiBBICNX
ZWJLaXRET01UZXN0T2JqCisgKiBAdmFsdWU6IEEgI2d1aW50OAorICoKKyAqIFJldHVybnM6Cisg
KgorKiovCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfc2V0X29jdGV0X2F0
dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ3VpbnQ4IHZhbHVlKTsKKworLyoqCiAgKiB3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX2dldF9zaG9ydF9hdHRyOgogICogQHNlbGY6IEEgI1dlYktpdERPTVRl
c3RPYmoKICAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGE4MjQ4Y2IuLmZiYmFmNjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBA
IC04MCw2ICs4MCw4IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpUYWJs
ZVZhbHVlc1tdID0KICAgICB7ICJyZWFkT25seVN0cmluZ0F0dHIiLCBEb250RGVsZXRlIHwgUmVh
ZE9ubHksIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNUZXN0T2JqUmVhZE9ubHlTdHJpbmdBdHRyKSwgKGludHB0cl90KTAsIE5vSW50cmluc2ljIH0s
CiAgICAgeyAicmVhZE9ubHlUZXN0T2JqQXR0ciIsIERvbnREZWxldGUgfCBSZWFkT25seSwgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpS
ZWFkT25seVRlc3RPYmpBdHRyKSwgKGludHB0cl90KTAsIE5vSW50cmluc2ljIH0sCiAgICAgeyAi
ZW51bUF0dHIiLCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakVudW1BdHRyKSwgKGludHB0cl90KXNldEpTVGVzdE9i
akVudW1BdHRyLCBOb0ludHJpbnNpYyB9LAorICAgIHsgImJ5dGVBdHRyIiwgRG9udERlbGV0ZSwg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RP
YmpCeXRlQXR0ciksIChpbnRwdHJfdClzZXRKU1Rlc3RPYmpCeXRlQXR0ciwgTm9JbnRyaW5zaWMg
fSwKKyAgICB7ICJvY3RldEF0dHIiLCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iak9jdGV0QXR0ciksIChpbnRwdHJf
dClzZXRKU1Rlc3RPYmpPY3RldEF0dHIsIE5vSW50cmluc2ljIH0sCiAgICAgeyAic2hvcnRBdHRy
IiwgRG9udERlbGV0ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3RPYmpTaG9ydEF0dHIpLCAoaW50cHRyX3Qpc2V0SlNUZXN0T2JqU2hvcnRB
dHRyLCBOb0ludHJpbnNpYyB9LAogICAgIHsgInVuc2lnbmVkU2hvcnRBdHRyIiwgRG9udERlbGV0
ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RPYmpVbnNpZ25lZFNob3J0QXR0ciksIChpbnRwdHJfdClzZXRKU1Rlc3RPYmpVbnNpZ25lZFNo
b3J0QXR0ciwgTm9JbnRyaW5zaWMgfSwKICAgICB7ICJsb25nQXR0ciIsIERvbnREZWxldGUsIChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2Jq
TG9uZ0F0dHIpLCAoaW50cHRyX3Qpc2V0SlNUZXN0T2JqTG9uZ0F0dHIsIE5vSW50cmluc2ljIH0s
CkBAIC0xNTIsNyArMTU0LDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9i
alRhYmxlVmFsdWVzW10gPQogICAgIHsgMCwgMCwgMCwgMCwgTm9JbnRyaW5zaWMgfQogfTsKIAot
c3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RPYmpUYWJsZSA9IHsgMTQ1LCAxMjcsIEpTVGVz
dE9ialRhYmxlVmFsdWVzLCAwIH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdE9ialRh
YmxlID0geyAyNjUsIDI1NSwgSlNUZXN0T2JqVGFibGVWYWx1ZXMsIDAgfTsKIC8qIEhhc2ggdGFi
bGUgZm9yIGNvbnN0cnVjdG9yICovCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rl
c3RPYmpDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQpAQCAtMjY4LDYgKzI3MCwxMCBAQCBzdGF0
aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9
CiAgICAgeyAiQ09OU1RfSkFWQVNDUklQVCIsIERvbnREZWxldGUgfCBSZWFkT25seSwgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpDT05T
VF9KQVZBU0NSSVBUKSwgKGludHB0cl90KTAsIE5vSW50cmluc2ljIH0sCiAgICAgeyAidm9pZE1l
dGhvZCIsIERvbnREZWxldGUgfCBKU0M6OkZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZCksIChp
bnRwdHJfdCkwLCBOb0ludHJpbnNpYyB9LAogICAgIHsgInZvaWRNZXRob2RXaXRoQXJncyIsIERv
bnREZWxldGUgfCBKU0M6OkZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVu
Y3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZFdpdGhBcmdzKSwgKGlu
dHB0cl90KTMsIE5vSW50cmluc2ljIH0sCisgICAgeyAiYnl0ZU1ldGhvZCIsIERvbnREZWxldGUg
fCBKU0M6OkZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZCksIChpbnRwdHJfdCkwLCBOb0ludHJp
bnNpYyB9LAorICAgIHsgImJ5dGVNZXRob2RXaXRoQXJncyIsIERvbnREZWxldGUgfCBKU0M6OkZ1
bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZFdpdGhBcmdzKSwgKGludHB0cl90KTMsIE5vSW50cmlu
c2ljIH0sCisgICAgeyAib2N0ZXRNZXRob2QiLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwg
KGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk9jdGV0TWV0aG9kKSwgKGludHB0cl90KTAsIE5vSW50cmluc2ljIH0sCisgICAgeyAi
b2N0ZXRNZXRob2RXaXRoQXJncyIsIERvbnREZWxldGUgfCBKU0M6OkZ1bmN0aW9uLCAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T2N0ZXRNZXRob2RXaXRoQXJncyksIChpbnRwdHJfdCkzLCBOb0ludHJpbnNpYyB9LAogICAgIHsg
ImxvbmdNZXRob2QiLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRp
Y19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRo
b2QpLCAoaW50cHRyX3QpMCwgTm9JbnRyaW5zaWMgfSwKICAgICB7ICJsb25nTWV0aG9kV2l0aEFy
Z3MiLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5h
dGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRob2RXaXRoQXJn
cyksIChpbnRwdHJfdCkzLCBOb0ludHJpbnNpYyB9LAogICAgIHsgIm9iak1ldGhvZCIsIERvbnRE
ZWxldGUgfCBKU0M6OkZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rp
b24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kKSwgKGludHB0cl90KTAsIE5v
SW50cmluc2ljIH0sCkBAIC0zMzAsNyArMzM2LDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZh
bHVlIEpTVGVzdE9ialByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogICAgIHsgMCwgMCwgMCwgMCwg
Tm9JbnRyaW5zaWMgfQogfTsKIAotc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RPYmpQcm90
b3R5cGVUYWJsZSA9IHsgMjY2LCAyNTUsIEpTVGVzdE9ialByb3RvdHlwZVRhYmxlVmFsdWVzLCAw
IH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdE9ialByb3RvdHlwZVRhYmxlID0geyAy
NjcsIDI1NSwgSlNUZXN0T2JqUHJvdG90eXBlVGFibGVWYWx1ZXMsIDAgfTsKIGNvbnN0IENsYXNz
SW5mbyBKU1Rlc3RPYmpQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RPYmplY3RQcm90b3R5cGUi
LCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0T2JqUHJvdG90eXBlVGFibGUsIDAsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNUZXN0T2JqUHJvdG90eXBlKSB9OwogCiBKU09iamVjdCogSlNUZXN0T2JqUHJv
dG90eXBlOjpzZWxmKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKQEAgLTQ1OSw2ICs0NjUsMjYgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpFbnVtQXR0cihFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIH0KIAogCitKU1ZhbHVl
IGpzVGVzdE9iakJ5dGVBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJv
cGVydHlOYW1lKQoreworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RP
YmoqPihhc09iamVjdChzbG90QmFzZSkpOworICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyAgICBU
ZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7
CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLT5ieXRlQXR0cigpKTsKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCisKK0pTVmFsdWUganNUZXN0T2JqT2N0ZXRBdHRyKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQoreworICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOwor
ICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8
VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051
bWJlcihpbXBsLT5vY3RldEF0dHIoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCiBKU1Zh
bHVlIGpzVGVzdE9ialNob3J0QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2Us
IFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNU
ZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKQEAgLTEwOTQsNiArMTEyMCwzMCBAQCB2b2lk
IHNldEpTVGVzdE9iakVudW1BdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCiB9CiAKIAordm9pZCBzZXRKU1Rlc3RPYmpCeXRlQXR0cihFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAg
IFVOVVNFRF9QQVJBTShleGVjKTsKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8
SlNUZXN0T2JqKj4odGhpc09iamVjdCk7CisgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0
PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIGludDhfdCBuYXRpdmVWYWx1ZShz
dGF0aWNfY2FzdDxpbnQ4X3Q+KHRvSW50MzIoZXhlYywgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24p
KSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm47CisgICAg
aW1wbC0+c2V0Qnl0ZUF0dHIobmF0aXZlVmFsdWUpOworfQorCisKK3ZvaWQgc2V0SlNUZXN0T2Jq
T2N0ZXRBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCit7CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPih0aGlzT2JqZWN0KTsKKyAgICBUZXN0T2JqKiBpbXBs
ID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgdWludDhf
dCBuYXRpdmVWYWx1ZShzdGF0aWNfY2FzdDx1aW50OF90Pih0b0ludDMyKGV4ZWMsIHZhbHVlLCBO
b3JtYWxDb252ZXJzaW9uKSkpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIGltcGwtPnNldE9jdGV0QXR0cihuYXRpdmVWYWx1ZSk7Cit9CisKKwog
dm9pZCBzZXRKU1Rlc3RPYmpTaG9ydEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CkBAIC0x
NzA4LDYgKzE3NTgsODAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2RXaXRoQXJncyhFeGVjU3QKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZChFeGVjU3RhdGUqIGV4
ZWMpCit7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7Cisg
ICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkpTVGVzdE9iajo6c19pbmZvKSkKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOworICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJkpTVGVzdE9iajo6c19pbmZvKTsKKyAgICBU
ZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7
CisKKyAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC0+Ynl0ZU1ldGhvZCgp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0aG9kV2l0
aEFyZ3MoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
aG9zdFRoaXNWYWx1ZSgpOworICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKCZKU1Rlc3RPYmo6
OnNfaW5mbykpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFs
dWUpKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RP
Ymo6OnNfaW5mbyk7CisgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihj
YXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAzKQor
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKGV4ZWMpKTsKKyAgICBpbnQ4X3QgYnl0ZUFyZyhzdGF0aWNfY2FzdDxpbnQ4X3Q+KHRv
SW50MzIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pKSk7CisgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOworICAgIGNvbnN0IFN0cmluZyYgc3RyQXJnKGV4ZWMtPmFyZ3VtZW50
KDEpLmlzRW1wdHkoKSA/IFN0cmluZygpIDogZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgVGVzdE9iaiogb2Jq
QXJnKHRvVGVzdE9iaihleGVjLT5hcmd1bWVudCgyKSkpOworICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
KworICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLT5ieXRlTWV0aG9kV2l0
aEFyZ3MoYnl0ZUFyZywgc3RyQXJnLCBvYmpBcmcpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CisgICAgaWYgKCF0aGlzVmFs
dWUuaW5oZXJpdHMoJkpTVGVzdE9iajo6c19pbmZvKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYyk7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVz
dE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgJkpTVGVzdE9iajo6c19pbmZvKTsKKyAgICBUZXN0T2JqKiBpbXBsID0g
c3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisKKyAgICBKU0M6OkpT
VmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC0+b2N0ZXRNZXRob2QoKSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2RXaXRoQXJncyhFeGVjU3Rh
dGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVl
KCk7CisgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkpTVGVzdE9iajo6c19pbmZvKSkKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOworICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJkpTVGVzdE9iajo6c19pbmZvKTsK
KyAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmlt
cGwoKSk7CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDMpCisgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykp
OworICAgIHVpbnQ4X3Qgb2N0ZXRBcmcoc3RhdGljX2Nhc3Q8dWludDhfdD4odG9JbnQzMihleGVj
LCBleGVjLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbikpKTsKKyAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CisgICAgY29uc3QgU3RyaW5nJiBzdHJBcmcoZXhlYy0+YXJndW1lbnQoMSkuaXNFbXB0
eSgpID8gU3RyaW5nKCkgOiBleGVjLT5hcmd1bWVudCgxKS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYykpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBUZXN0T2JqKiBvYmpBcmcodG9UZXN0
T2JqKGV4ZWMtPmFyZ3VtZW50KDIpKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgSlND
OjpKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwtPm9jdGV0TWV0aG9kV2l0aEFyZ3Mob2N0
ZXRBcmcsIHN0ckFyZywgb2JqQXJnKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTG9uZ01ldGhvZChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKaW5kZXggN2ZlNTNiMy4uN2EyZDZl
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouaApAQCAtMTYxLDYgKzE2MSwxMCBAQCBwcm90ZWN0ZWQ6CiAKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRo
b2QoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2RXaXRoQXJncyhKU0M6OkV4ZWNTdGF0
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQnl0ZU1ldGhvZChKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZFdpdGhB
cmdzKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZChKU0M6OkV4ZWNTdGF0ZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uT2N0ZXRNZXRob2RXaXRoQXJncyhKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZChK
U0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZFdpdGhBcmdzKEpTQzo6RXhlY1N0YXRlKik7
CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PYmpNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKQEAgLTIzOSw2ICsyNDMsMTAgQEAgdm9p
ZCBzZXRKU1Rlc3RPYmpDb25zdHJ1Y3RvclN0YXRpY1N0cmluZ0F0dHIoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkpTT2JqZWN0KiwgSlMKIEpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvclRl
c3RTdWJPYmooSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1l
KTsKIEpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpFbnVtQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogdm9pZCBzZXRKU1Rlc3RPYmpFbnVtQXR0cihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUpOworSlNDOjpKU1Zh
bHVlIGpzVGVzdE9iakJ5dGVBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7Cit2b2lkIHNldEpTVGVzdE9iakJ5dGVBdHRyKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpKU09iamVjdCosIEpTQzo6SlNWYWx1ZSk7CitKU0M6OkpTVmFsdWUganNUZXN0T2Jq
T2N0ZXRBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFt
ZSk7Cit2b2lkIHNldEpTVGVzdE9iak9jdGV0QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNP
YmplY3QqLCBKU0M6OkpTVmFsdWUpOwogSlNDOjpKU1ZhbHVlIGpzVGVzdE9ialNob3J0QXR0cihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogdm9pZCBz
ZXRKU1Rlc3RPYmpTaG9ydEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlND
OjpKU1ZhbHVlKTsKIEpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpVbnNpZ25lZFNob3J0QXR0cihKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5o
CmluZGV4IDdhNjMwOTguLmUwM2QwMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLmgKQEAgLTY2LDYgKzY2LDggQEAg
ZW51bSB7CiBAcHJvcGVydHkocmVhZG9ubHkpIGludCByZWFkT25seUxvbmdBdHRyOwogQHByb3Bl
cnR5KHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqcmVhZE9ubHlTdHJpbmdBdHRyOwogQHByb3Bl
cnR5KHJlYWRvbmx5LCByZXRhaW4pIERPTVRlc3RPYmogKnJlYWRPbmx5VGVzdE9iakF0dHI7CitA
cHJvcGVydHkgY2hhciBieXRlQXR0cjsKK0Bwcm9wZXJ0eSB1bnNpZ25lZCBjaGFyIG9jdGV0QXR0
cjsKIEBwcm9wZXJ0eSBzaG9ydCBzaG9ydEF0dHI7CiBAcHJvcGVydHkgdW5zaWduZWQgc2hvcnQg
dW5zaWduZWRTaG9ydEF0dHI7CiBAcHJvcGVydHkgaW50IGxvbmdBdHRyOwpAQCAtMTIyLDYgKzEy
NCwxMCBAQCBlbnVtIHsKIAogLSAodm9pZCl2b2lkTWV0aG9kOwogLSAodm9pZCl2b2lkTWV0aG9k
V2l0aEFyZ3M6KGludClsb25nQXJnIHN0ckFyZzooTlNTdHJpbmcgKilzdHJBcmcgb2JqQXJnOihE
T01UZXN0T2JqICopb2JqQXJnOworLSAoY2hhcilieXRlTWV0aG9kOworLSAoY2hhcilieXRlTWV0
aG9kV2l0aEFyZ3M6KGNoYXIpYnl0ZUFyZyBzdHJBcmc6KE5TU3RyaW5nICopc3RyQXJnIG9iakFy
ZzooRE9NVGVzdE9iaiAqKW9iakFyZzsKKy0gKHVuc2lnbmVkIGNoYXIpb2N0ZXRNZXRob2Q7Cist
ICh1bnNpZ25lZCBjaGFyKW9jdGV0TWV0aG9kV2l0aEFyZ3M6KHVuc2lnbmVkIGNoYXIpb2N0ZXRB
cmcgc3RyQXJnOihOU1N0cmluZyAqKXN0ckFyZyBvYmpBcmc6KERPTVRlc3RPYmogKilvYmpBcmc7
CiAtIChpbnQpbG9uZ01ldGhvZDsKIC0gKGludClsb25nTWV0aG9kV2l0aEFyZ3M6KGludClsb25n
QXJnIHN0ckFyZzooTlNTdHJpbmcgKilzdHJBcmcgb2JqQXJnOihET01UZXN0T2JqICopb2JqQXJn
OwogLSAoRE9NVGVzdE9iaiAqKW9iak1ldGhvZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tCmluZGV4IDg5OTZmZTUu
LmZlODMxMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9PYmpDL0RPTVRlc3RPYmoubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQpAQCAtMTExLDYgKzExMSwzMCBAQAogICAgIHJldHVy
biBraXQoV1RGOjpnZXRQdHIoSU1QTC0+cmVhZE9ubHlUZXN0T2JqQXR0cigpKSk7CiB9CiAKKy0g
KGNoYXIpYnl0ZUF0dHIKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7CisgICAgcmV0dXJuIElNUEwtPmJ5dGVBdHRyKCk7Cit9CisKKy0gKHZvaWQpc2V0Qnl0ZUF0
dHI6KGNoYXIpbmV3Qnl0ZUF0dHIKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7CisgICAgSU1QTC0+c2V0Qnl0ZUF0dHIobmV3Qnl0ZUF0dHIpOworfQorCistICh1
bnNpZ25lZCBjaGFyKW9jdGV0QXR0cgoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+b2N0ZXRBdHRyKCk7Cit9CisKKy0gKHZvaWQp
c2V0T2N0ZXRBdHRyOih1bnNpZ25lZCBjaGFyKW5ld09jdGV0QXR0cgoreworICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBJTVBMLT5zZXRPY3RldEF0dHIobmV3
T2N0ZXRBdHRyKTsKK30KKwogLSAoc2hvcnQpc2hvcnRBdHRyCiB7CiAgICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwpAQCAtNzc1LDYgKzc5OSwzMCBAQAogICAgIElNUEwt
PnZvaWRNZXRob2RXaXRoQXJncyhsb25nQXJnLCBzdHJBcmcsIGNvcmUob2JqQXJnKSk7CiB9CiAK
Ky0gKGNoYXIpYnl0ZU1ldGhvZAoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+Ynl0ZU1ldGhvZCgpOworfQorCistIChjaGFyKWJ5
dGVNZXRob2RXaXRoQXJnczooY2hhcilieXRlQXJnIHN0ckFyZzooTlNTdHJpbmcgKilzdHJBcmcg
b2JqQXJnOihET01UZXN0T2JqICopb2JqQXJnCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT5ieXRlTWV0aG9kV2l0aEFyZ3MoYnl0
ZUFyZywgc3RyQXJnLCBjb3JlKG9iakFyZykpOworfQorCistICh1bnNpZ25lZCBjaGFyKW9jdGV0
TWV0aG9kCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAg
IHJldHVybiBJTVBMLT5vY3RldE1ldGhvZCgpOworfQorCistICh1bnNpZ25lZCBjaGFyKW9jdGV0
TWV0aG9kV2l0aEFyZ3M6KHVuc2lnbmVkIGNoYXIpb2N0ZXRBcmcgc3RyQXJnOihOU1N0cmluZyAq
KXN0ckFyZyBvYmpBcmc6KERPTVRlc3RPYmogKilvYmpBcmcKK3sKKyAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwtPm9jdGV0TWV0aG9kV2l0
aEFyZ3Mob2N0ZXRBcmcsIHN0ckFyZywgY29yZShvYmpBcmcpKTsKK30KKwogLSAoaW50KWxvbmdN
ZXRob2QKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKaW5kZXgg
YWYzOTQ1ZS4uMDY3OWYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtNDQsNiArNDQsOCBAQCBlbnVtIFRlc3RFbnVtVHlwZSB7
ICIiLCAiRW51bVZhbHVlMSIsICJFbnVtVmFsdWUyIiwgIkVudW1WYWx1ZTMiIH07CiAgICAgc3Rh
dGljIGF0dHJpYnV0ZSBET01TdHJpbmcgICAgICAgICBzdGF0aWNTdHJpbmdBdHRyOwogICAgIHN0
YXRpYyByZWFkb25seSBhdHRyaWJ1dGUgVGVzdFN1Yk9iakNvbnN0cnVjdG9yIFRlc3RTdWJPYmo7
CiAgICAgYXR0cmlidXRlIFRlc3RFbnVtVHlwZSAgICAgICAgICAgICBlbnVtQXR0cjsKKyAgICBh
dHRyaWJ1dGUgYnl0ZSAgICAgICAgICAgICAgICAgICAgIGJ5dGVBdHRyOworICAgIGF0dHJpYnV0
ZSBvY3RldCAgICAgICAgICAgICAgICAgICAgb2N0ZXRBdHRyOwogICAgIGF0dHJpYnV0ZSBzaG9y
dCAgICAgICAgICAgICAgICAgICAgc2hvcnRBdHRyOwogICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBz
aG9ydCAgICAgICAgICAgdW5zaWduZWRTaG9ydEF0dHI7CiAgICAgYXR0cmlidXRlIGxvbmcgICAg
ICAgICAgICAgICAgICAgICBsb25nQXR0cjsKQEAgLTczLDYgKzc1LDEwIEBAIGVudW0gVGVzdEVu
dW1UeXBlIHsgIiIsICJFbnVtVmFsdWUxIiwgIkVudW1WYWx1ZTIiLCAiRW51bVZhbHVlMyIgfTsK
ICAgICAvLyBNZXRob2RzCiAgICAgdm9pZCAgICB2b2lkTWV0aG9kKCk7CiAgICAgdm9pZCAgICB2
b2lkTWV0aG9kV2l0aEFyZ3MobG9uZyBsb25nQXJnLCBET01TdHJpbmcgc3RyQXJnLCBUZXN0T2Jq
IG9iakFyZyk7CisgICAgYnl0ZSAgICBieXRlTWV0aG9kKCk7CisgICAgYnl0ZSAgICBieXRlTWV0
aG9kV2l0aEFyZ3MoYnl0ZSBieXRlQXJnLCBET01TdHJpbmcgc3RyQXJnLCBUZXN0T2JqIG9iakFy
Zyk7CisgICAgb2N0ZXQgICBvY3RldE1ldGhvZCgpOworICAgIG9jdGV0ICAgb2N0ZXRNZXRob2RX
aXRoQXJncyhvY3RldCBvY3RldEFyZywgRE9NU3RyaW5nIHN0ckFyZywgVGVzdE9iaiBvYmpBcmcp
OwogICAgIGxvbmcgICAgbG9uZ01ldGhvZCgpOwogICAgIGxvbmcgICAgbG9uZ01ldGhvZFdpdGhB
cmdzKGxvbmcgbG9uZ0FyZywgRE9NU3RyaW5nIHN0ckFyZywgVGVzdE9iaiBvYmpBcmcpOwogICAg
IFRlc3RPYmogb2JqTWV0aG9kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9EYXRhVmlldy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9EYXRhVmlldy5p
ZGwKaW5kZXggYzBhNDJhMC4uNTA3YjBhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvRGF0YVZpZXcuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Rh
dGFWaWV3LmlkbApAQCAtMzEsMTEgKzMxLDggQEAKIF0gaW50ZXJmYWNlIERhdGFWaWV3IDogQXJy
YXlCdWZmZXJWaWV3IHsKICAgICAvLyBBbGwgdGhlc2UgbWV0aG9kcyByYWlzZSBhbiBleGNlcHRp
b24gaWYgdGhleSB3b3VsZCByZWFkIG9yIHdyaXRlIGJleW9uZCB0aGUgZW5kIG9mIHRoZSB2aWV3
LgogCi0gICAgLy8gV2UgaGF2ZSB0byB1c2UgY3VzdG9tIGNvZGUgYmVjYXVzZSBvdXIgY29kZSBn
ZW5lcmF0b3IgZG9lcyBub3Qgc3VwcG9ydCBpbnQ4X3QgdHlwZS4KLSAgICAvLyBpbnQ4X3QgZ2V0
SW50OCh1bnNpZ25lZCBsb25nIGJ5dGVPZmZzZXQpOwotICAgIC8vIHVpbnQ4X3QgZ2V0VWludDgo
dW5zaWduZWQgbG9uZyBieXRlT2Zmc2V0KTsKLSAgICBbQ3VzdG9tLCBSYWlzZXNFeGNlcHRpb25d
IGFueSBnZXRJbnQ4KCk7Ci0gICAgW0N1c3RvbSwgUmFpc2VzRXhjZXB0aW9uXSBhbnkgZ2V0VWlu
dDgoKTsKKyAgICBbUmFpc2VzRXhjZXB0aW9uXSBieXRlIGdldEludDgodW5zaWduZWQgbG9uZyBi
eXRlT2Zmc2V0KTsKKyAgICBbUmFpc2VzRXhjZXB0aW9uXSBvY3RldCBnZXRVaW50OCh1bnNpZ25l
ZCBsb25nIGJ5dGVPZmZzZXQpOwogCiAgICAgW1N0cmljdFR5cGVDaGVja2luZywgUmFpc2VzRXhj
ZXB0aW9uXSBzaG9ydCBnZXRJbnQxNih1bnNpZ25lZCBsb25nIGJ5dGVPZmZzZXQsIG9wdGlvbmFs
IGJvb2xlYW4gbGl0dGxlRW5kaWFuKTsKICAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBSYWlzZXNF
eGNlcHRpb25dIHVuc2lnbmVkIHNob3J0IGdldFVpbnQxNih1bnNpZ25lZCBsb25nIGJ5dGVPZmZz
ZXQsIG9wdGlvbmFsIGJvb2xlYW4gbGl0dGxlRW5kaWFuKTsKQEAgLTQ2LDExICs0Myw4IEBACiAg
ICAgW0N1c3RvbSwgU3RyaWN0VHlwZUNoZWNraW5nLCBSYWlzZXNFeGNlcHRpb25dIGZsb2F0IGdl
dEZsb2F0MzIodW5zaWduZWQgbG9uZyBieXRlT2Zmc2V0LCBvcHRpb25hbCBib29sZWFuIGxpdHRs
ZUVuZGlhbik7CiAgICAgW0N1c3RvbSwgU3RyaWN0VHlwZUNoZWNraW5nLCBSYWlzZXNFeGNlcHRp
b25dIGRvdWJsZSBnZXRGbG9hdDY0KHVuc2lnbmVkIGxvbmcgYnl0ZU9mZnNldCwgb3B0aW9uYWwg
Ym9vbGVhbiBsaXR0bGVFbmRpYW4pOwogCi0gICAgLy8gV2UgaGF2ZSB0byB1c2UgY3VzdG9tIGNv
ZGUgYmVjYXVzZSBvdXIgY29kZSBnZW5lcmF0b3IgZG9lcyBub3Qgc3VwcG9ydCB1aW50OF90IHR5
cGUuCi0gICAgLy8gdm9pZCBzZXRJbnQ4KHVuc2lnbmVkIGxvbmcgYnl0ZU9mZnNldCwgaW50OF90
IHZhbHVlKTsKLSAgICAvLyB2b2lkIHNldFVpbnQ4KHVuc2lnbmVkIGxvbmcgYnl0ZU9mZnNldCwg
dWludDhfdCB2YWx1ZSk7Ci0gICAgW0N1c3RvbSwgUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHNldElu
dDgoKTsKLSAgICBbQ3VzdG9tLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgc2V0VWludDgoKTsKKyAg
ICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHNldEludDgodW5zaWduZWQgbG9uZyBieXRlT2Zmc2V0
LCBieXRlIHZhbHVlKTsKKyAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHNldFVpbnQ4KHVuc2ln
bmVkIGxvbmcgYnl0ZU9mZnNldCwgb2N0ZXQgdmFsdWUpOwogCiAgICAgW1N0cmljdFR5cGVDaGVj
a2luZywgUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHNldEludDE2KHVuc2lnbmVkIGxvbmcgYnl0ZU9m
ZnNldCwgc2hvcnQgdmFsdWUsIG9wdGlvbmFsIGJvb2xlYW4gbGl0dGxlRW5kaWFuKTsKICAgICBb
U3RyaWN0VHlwZUNoZWNraW5nLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgc2V0VWludDE2KHVuc2ln
bmVkIGxvbmcgYnl0ZU9mZnNldCwgdW5zaWduZWQgc2hvcnQgdmFsdWUsIG9wdGlvbmFsIGJvb2xl
YW4gbGl0dGxlRW5kaWFuKTsK
</data>
<flag name="review"
          id="225900"
          type_id="1"
          status="-"
          setter="haraken"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204453</attachid>
            <date>2013-06-12 09:55:36 -0700</date>
            <delta_ts>2013-06-13 01:02:02 -0700</delta_ts>
            <desc>JSDataView.cpp diff</desc>
            <filename>JSDataView.cpp.diff</filename>
            <type>text/plain</type>
            <size>6508</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">LS0tIC9ob21lL2NocmlzL2RldmVsL1dlYktpdC9XZWJLaXRCdWlsZC9EZWJ1Zy9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTRGF0YVZpZXcuY3BwLmJhaworKysgL2hvbWUvY2hyaXMvZGV2ZWwvV2Vi
S2l0L1dlYktpdEJ1aWxkL0RlYnVnL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEYXRhVmlldy5j
cHAKQEAgLTg4LDE2ICs4OCwxNiBAQAogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNE
YXRhVmlld1Byb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewotICAgIHsgImdldEludDgiLCBEb250
RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0
aW9uPihqc0RhdGFWaWV3UHJvdG90eXBlRnVuY3Rpb25HZXRJbnQ4KSwgKGludHB0cl90KTAsIE5v
SW50cmluc2ljIH0sCi0gICAgeyAiZ2V0VWludDgiLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlv
biwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc0RhdGFWaWV3UHJvdG90
eXBlRnVuY3Rpb25HZXRVaW50OCksIChpbnRwdHJfdCkwLCBOb0ludHJpbnNpYyB9LAorICAgIHsg
ImdldEludDgiLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19j
YXN0PE5hdGl2ZUZ1bmN0aW9uPihqc0RhdGFWaWV3UHJvdG90eXBlRnVuY3Rpb25HZXRJbnQ4KSwg
KGludHB0cl90KTEsIE5vSW50cmluc2ljIH0sCisgICAgeyAiZ2V0VWludDgiLCBEb250RGVsZXRl
IHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihq
c0RhdGFWaWV3UHJvdG90eXBlRnVuY3Rpb25HZXRVaW50OCksIChpbnRwdHJfdCkxLCBOb0ludHJp
bnNpYyB9LAogICAgIHsgImdldEludDE2IiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChp
bnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNEYXRhVmlld1Byb3RvdHlwZUZ1
bmN0aW9uR2V0SW50MTYpLCAoaW50cHRyX3QpMSwgTm9JbnRyaW5zaWMgfSwKICAgICB7ICJnZXRV
aW50MTYiLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0
PE5hdGl2ZUZ1bmN0aW9uPihqc0RhdGFWaWV3UHJvdG90eXBlRnVuY3Rpb25HZXRVaW50MTYpLCAo
aW50cHRyX3QpMSwgTm9JbnRyaW5zaWMgfSwKICAgICB7ICJnZXRJbnQzMiIsIERvbnREZWxldGUg
fCBKU0M6OkZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpz
RGF0YVZpZXdQcm90b3R5cGVGdW5jdGlvbkdldEludDMyKSwgKGludHB0cl90KTEsIE5vSW50cmlu
c2ljIH0sCiAgICAgeyAiZ2V0VWludDMyIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChp
bnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNEYXRhVmlld1Byb3RvdHlwZUZ1
bmN0aW9uR2V0VWludDMyKSwgKGludHB0cl90KTEsIE5vSW50cmluc2ljIH0sCiAgICAgeyAiZ2V0
RmxvYXQzMiIsIERvbnREZWxldGUgfCBKU0M6OkZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8TmF0aXZlRnVuY3Rpb24+KGpzRGF0YVZpZXdQcm90b3R5cGVGdW5jdGlvbkdldEZsb2F0MzIp
LCAoaW50cHRyX3QpMSwgTm9JbnRyaW5zaWMgfSwKICAgICB7ICJnZXRGbG9hdDY0IiwgRG9udERl
bGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlv
bj4oanNEYXRhVmlld1Byb3RvdHlwZUZ1bmN0aW9uR2V0RmxvYXQ2NCksIChpbnRwdHJfdCkxLCBO
b0ludHJpbnNpYyB9LAotICAgIHsgInNldEludDgiLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlv
biwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc0RhdGFWaWV3UHJvdG90
eXBlRnVuY3Rpb25TZXRJbnQ4KSwgKGludHB0cl90KTAsIE5vSW50cmluc2ljIH0sCi0gICAgeyAi
c2V0VWludDgiLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19j
YXN0PE5hdGl2ZUZ1bmN0aW9uPihqc0RhdGFWaWV3UHJvdG90eXBlRnVuY3Rpb25TZXRVaW50OCks
IChpbnRwdHJfdCkwLCBOb0ludHJpbnNpYyB9LAorICAgIHsgInNldEludDgiLCBEb250RGVsZXRl
IHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihq
c0RhdGFWaWV3UHJvdG90eXBlRnVuY3Rpb25TZXRJbnQ4KSwgKGludHB0cl90KTIsIE5vSW50cmlu
c2ljIH0sCisgICAgeyAic2V0VWludDgiLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGlu
dHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc0RhdGFWaWV3UHJvdG90eXBlRnVu
Y3Rpb25TZXRVaW50OCksIChpbnRwdHJfdCkyLCBOb0ludHJpbnNpYyB9LAogICAgIHsgInNldElu
dDE2IiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxO
YXRpdmVGdW5jdGlvbj4oanNEYXRhVmlld1Byb3RvdHlwZUZ1bmN0aW9uU2V0SW50MTYpLCAoaW50
cHRyX3QpMiwgTm9JbnRyaW5zaWMgfSwKICAgICB7ICJzZXRVaW50MTYiLCBEb250RGVsZXRlIHwg
SlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc0Rh
dGFWaWV3UHJvdG90eXBlRnVuY3Rpb25TZXRVaW50MTYpLCAoaW50cHRyX3QpMiwgTm9JbnRyaW5z
aWMgfSwKICAgICB7ICJzZXRJbnQzMiIsIERvbnREZWxldGUgfCBKU0M6OkZ1bmN0aW9uLCAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzRGF0YVZpZXdQcm90b3R5cGVGdW5j
dGlvblNldEludDMyKSwgKGludHB0cl90KTIsIE5vSW50cmluc2ljIH0sCkBAIC0xODcsNyArMTg3
LDE3IEBACiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwogICAgIEpTRGF0
YVZpZXcqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNEYXRhVmlldyo+KGFzT2JqZWN0KHRoaXNWYWx1
ZSkpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJkpTRGF0YVZp
ZXc6OnNfaW5mbyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5nZXRJ
bnQ4KGV4ZWMpKTsKKyAgICBEYXRhVmlldyogaW1wbCA9IHN0YXRpY19jYXN0PERhdGFWaWV3Kj4o
Y2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihleGVjKSk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgdW5zaWduZWQg
Ynl0ZU9mZnNldCh0b1VJbnQzMihleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVy
c2lvbikpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQg
PSBqc051bWJlcihpbXBsLT5nZXRJbnQ4KGJ5dGVPZmZzZXQsIGVjKSk7CisgICAgc2V0RE9NRXhj
ZXB0aW9uKGV4ZWMsIGVjKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNEYXRhVmlld1Byb3RvdHlwZUZ1bmN0
aW9uR2V0VWludDgoRXhlY1N0YXRlKiBleGVjKQpAQCAtMTk3LDcgKzIwNywxNyBAQAogICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKICAgICBKU0RhdGFWaWV3KiBjYXN0ZWRU
aGlzID0ganNDYXN0PEpTRGF0YVZpZXcqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU0RhdGFWaWV3OjpzX2luZm8pOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+Z2V0VWludDgoZXhlYykpOwor
ICAgIERhdGFWaWV3KiBpbXBsID0gc3RhdGljX2Nhc3Q8RGF0YVZpZXcqPihjYXN0ZWRUaGlzLT5p
bXBsKCkpOworICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMp
KTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICB1bnNpZ25lZCBieXRlT2Zmc2V0KHRv
VUludDMyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKSk7CisgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOworCisgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGlt
cGwtPmdldFVpbnQ4KGJ5dGVPZmZzZXQsIGVjKSk7CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMs
IGVjKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNEYXRhVmlld1Byb3RvdHlwZUZ1bmN0aW9uR2V0SW50MTYo
RXhlY1N0YXRlKiBleGVjKQpAQCAtMzU1LDcgKzM3NSwxOSBAQAogICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjKTsKICAgICBKU0RhdGFWaWV3KiBjYXN0ZWRUaGlzID0ganNDYXN0
PEpTRGF0YVZpZXcqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU0RhdGFWaWV3OjpzX2luZm8pOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+c2V0SW50OChleGVjKSk7CisgICAgRGF0YVZpZXcq
IGltcGwgPSBzdGF0aWNfY2FzdDxEYXRhVmlldyo+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAg
aWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDIpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOworICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOworICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQodG9VSW50MzIoZXhlYywg
ZXhlYy0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pKTsKKyAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CisgICAgaW50OF90IHZhbHVlKHN0YXRpY19jYXN0PGludDhfdD4odG9JbnQzMihleGVjLCBl
eGVjLT5hcmd1bWVudCgxKSwgTm9ybWFsQ29udmVyc2lvbikpKTsKKyAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CisgICAgaW1wbC0+c2V0SW50OChieXRlT2Zmc2V0LCB2YWx1ZSwgZWMpOworICAgIHNldERP
TUV4Y2VwdGlvbihleGVjLCBlYyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0RhdGFWaWV3UHJv
dG90eXBlRnVuY3Rpb25TZXRVaW50OChFeGVjU3RhdGUqIGV4ZWMpCkBAIC0zNjUsNyArMzk3LDE5
IEBACiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwogICAgIEpTRGF0YVZp
ZXcqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNEYXRhVmlldyo+KGFzT2JqZWN0KHRoaXNWYWx1ZSkp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJkpTRGF0YVZpZXc6
OnNfaW5mbyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5zZXRVaW50
OChleGVjKSk7CisgICAgRGF0YVZpZXcqIGltcGwgPSBzdGF0aWNfY2FzdDxEYXRhVmlldyo+KGNh
c3RlZFRoaXMtPmltcGwoKSk7CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDIpCisg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoZXhlYykpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIHVuc2lnbmVkIGJ5
dGVPZmZzZXQodG9VSW50MzIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNp
b24pKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgdWludDhfdCB2YWx1ZShzdGF0aWNfY2Fz
dDx1aW50OF90Pih0b0ludDMyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDEpLCBOb3JtYWxDb252ZXJz
aW9uKSkpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBpbXBsLT5zZXRVaW50OChieXRlT2Zm
c2V0LCB2YWx1ZSwgZWMpOworICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc0RhdGFWaWV3UHJvdG90eXBlRnVuY3Rpb25TZXRJbnQxNihFeGVjU3Rh
dGUqIGV4ZWMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204559</attachid>
            <date>2013-06-13 01:02:02 -0700</date>
            <delta_ts>2013-06-13 03:39:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>117547_byte_octet.patch</filename>
            <type>text/plain</type>
            <size>50204</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0NWJkYmU4MC4uM2U2NDFlOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEzLTA2
LTEzICBDaHJpc3RvcGhlIER1bWV6ICA8Y2guZHVtZXpAc2lzYS5zYW1zdW5nLmNvbT4KKworICAg
ICAgICBTdXBwb3J0IGJ5dGUgYW5kIG9jdGV0IHR5cGVzIGluIGJpbmRpbmdzIGdlbmVyYXRvcnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzU0Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGZl
dyBtb3JlIGNoZWNrcyBmb3IgaW50OCBhbmQgdWludDggZ2V0dGVycyAvIHNldHRlcnMgaW4KKyAg
ICAgICAgRGF0YVZpZXcuCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9kYXRhLXZpZXct
dGVzdC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvZGF0YS12aWV3
LXRlc3QuaHRtbDoKKwogMjAxMy0wNi0xMiAgS3dhbmcgWXVsIFNlbyAgPHNreXVsQGNvbXBhbnkx
MDAubmV0PgogCiAgICAgICAgIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLiBVbnNraXBwaW5nIHBhc3Np
bmcgdGVzdHMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9kYXRh
LXZpZXctdGVzdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9k
YXRhLXZpZXctdGVzdC1leHBlY3RlZC50eHQKaW5kZXggNjZjODJmZi4uYmNlNGI0YSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZGF0YS12aWV3LXRlc3QtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2RhdGEtdmlldy10ZXN0
LWV4cGVjdGVkLnR4dApAQCAtMjgsMTAgKzI4LDE0IEBAIFBBU1MgdmlldyA9IG5ldyBEYXRhVmll
dyhhcmF5QnVmZmVyLCAyLCAxKSB0aHJldyBleGNlcHRpb24gUmFuZ2VFcnJvcjogU2l6ZSBpcyB0
CiAKIFRlc3QgZm9yIGdldCBtZXRob2RzIHRoYXQgd29yawogUEFTUyB2aWV3LmdldEludDgoMCkg
aXMgMAorUEFTUyB2aWV3LmdldEludDgoMSkgaXMgMQogUEFTUyB2aWV3LmdldEludDgoOCkgaXMg
LTEyOAorUEFTUyB2aWV3LmdldEludDgoMTIpIGlzIC00CiBQQVNTIHZpZXcuZ2V0SW50OCgxNSkg
aXMgLTEKIFBBU1Mgdmlldy5nZXRVaW50OCgwKSBpcyAwCitQQVNTIHZpZXcuZ2V0VWludDgoMSkg
aXMgMQogUEFTUyB2aWV3LmdldFVpbnQ4KDgpIGlzIDEyOAorUEFTUyB2aWV3LmdldFVpbnQ4KDEy
KSBpcyAyNTIKIFBBU1Mgdmlldy5nZXRVaW50OCgxNSkgaXMgMjU1CiBQQVNTIHZpZXcuZ2V0SW50
MTYoMCwgdHJ1ZSkgaXMgMjU2CiBQQVNTIHZpZXcuZ2V0SW50MTYoNSwgdHJ1ZSkgaXMgMjYyMTMK
QEAgLTE1MiwxMCArMTU2LDE0IEBAIFBBU1Mgdmlldy5nZXRGbG9hdDY0KDEwLCBmYWxzZSkgaXMg
LU5hTgogCiBUZXN0IGZvciBnZXQgbWV0aG9kcyB0aGF0IG1pZ2h0IHJlYWQgYmV5b25kIHJhbmdl
CiBQQVNTIHZpZXcuZ2V0SW50OCgwKSBpcyAwCitQQVNTIHZpZXcuZ2V0SW50OCgxKSBpcyAxCiBQ
QVNTIHZpZXcuZ2V0SW50OCg4KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IEluZGV4U2l6ZUVycm9y
OiBET00gRXhjZXB0aW9uIDEuCitQQVNTIHZpZXcuZ2V0SW50OCgxMikgdGhyZXcgZXhjZXB0aW9u
IEVycm9yOiBJbmRleFNpemVFcnJvcjogRE9NIEV4Y2VwdGlvbiAxLgogUEFTUyB2aWV3LmdldElu
dDgoMTUpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSW5kZXhTaXplRXJyb3I6IERPTSBFeGNlcHRp
b24gMS4KIFBBU1Mgdmlldy5nZXRVaW50OCgwKSBpcyAwCitQQVNTIHZpZXcuZ2V0VWludDgoMSkg
aXMgMQogUEFTUyB2aWV3LmdldFVpbnQ4KDgpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSW5kZXhT
aXplRXJyb3I6IERPTSBFeGNlcHRpb24gMS4KK1BBU1Mgdmlldy5nZXRVaW50OCgxMikgdGhyZXcg
ZXhjZXB0aW9uIEVycm9yOiBJbmRleFNpemVFcnJvcjogRE9NIEV4Y2VwdGlvbiAxLgogUEFTUyB2
aWV3LmdldFVpbnQ4KDE1KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IEluZGV4U2l6ZUVycm9yOiBE
T00gRXhjZXB0aW9uIDEuCiBQQVNTIHZpZXcuZ2V0SW50MTYoMCwgdHJ1ZSkgaXMgMjU2CiBQQVNT
IHZpZXcuZ2V0SW50MTYoNSwgdHJ1ZSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJbmRleFNpemVF
cnJvcjogRE9NIEV4Y2VwdGlvbiAxLgpAQCAtMzExLDE0ICszMTksMjIgQEAgUEFTUyB2aWV3Lmdl
dEZsb2F0NjQoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50
cy4KIFRlc3QgZm9yIHNldCBtZXRob2RzIHRoYXQgd29yawogUEFTUyB2aWV3LnNldEludDgoMCwg
MCkgaXMgdW5kZWZpbmVkLgogUEFTUyB2aWV3LmdldEludDgoMCkgaXMgMAorUEFTUyB2aWV3LnNl
dEludDgoMSwgMSkgaXMgdW5kZWZpbmVkLgorUEFTUyB2aWV3LmdldEludDgoMSkgaXMgMQogUEFT
UyB2aWV3LnNldEludDgoOCwgLTEyOCkgaXMgdW5kZWZpbmVkLgogUEFTUyB2aWV3LmdldEludDgo
OCkgaXMgLTEyOAorUEFTUyB2aWV3LnNldEludDgoMTIsIC00KSBpcyB1bmRlZmluZWQuCitQQVNT
IHZpZXcuZ2V0SW50OCgxMikgaXMgLTQKIFBBU1Mgdmlldy5zZXRJbnQ4KDE1LCAtMSkgaXMgdW5k
ZWZpbmVkLgogUEFTUyB2aWV3LmdldEludDgoMTUpIGlzIC0xCiBQQVNTIHZpZXcuc2V0VWludDgo
MCwgMCkgaXMgdW5kZWZpbmVkLgogUEFTUyB2aWV3LmdldFVpbnQ4KDApIGlzIDAKK1BBU1Mgdmll
dy5zZXRVaW50OCgxLCAxKSBpcyB1bmRlZmluZWQuCitQQVNTIHZpZXcuZ2V0VWludDgoMSkgaXMg
MQogUEFTUyB2aWV3LnNldFVpbnQ4KDgsIDEyOCkgaXMgdW5kZWZpbmVkLgogUEFTUyB2aWV3Lmdl
dFVpbnQ4KDgpIGlzIDEyOAorUEFTUyB2aWV3LnNldFVpbnQ4KDEyLCAyNTIpIGlzIHVuZGVmaW5l
ZC4KK1BBU1Mgdmlldy5nZXRVaW50OCgxMikgaXMgMjUyCiBQQVNTIHZpZXcuc2V0VWludDgoMTUs
IDI1NSkgaXMgdW5kZWZpbmVkLgogUEFTUyB2aWV3LmdldFVpbnQ4KDE1KSBpcyAyNTUKIFBBU1Mg
dmlldy5zZXRJbnQxNigwLCAyNTYsIHRydWUpIGlzIHVuZGVmaW5lZC4KQEAgLTU1NywxMSArNTcz
LDE3IEBAIFBBU1Mgdmlldy5nZXRGbG9hdDY0KDEwLCBmYWxzZSkgaXMgLU5hTgogVGVzdCBmb3Ig
c2V0IG1ldGhvZHMgdGhhdCBtaWdodCB3cml0ZSBiZXlvbmQgdGhlIHJhbmdlCiBQQVNTIHZpZXcu
c2V0SW50OCgwLCAwKSBpcyB1bmRlZmluZWQuCiBQQVNTIHZpZXcuZ2V0SW50OCgwKSBpcyAwCitQ
QVNTIHZpZXcuc2V0SW50OCgxLCAxKSBpcyB1bmRlZmluZWQuCitQQVNTIHZpZXcuZ2V0SW50OCgx
KSBpcyAxCiBQQVNTIHZpZXcuc2V0SW50OCg4LCAtMTI4KSB0aHJldyBleGNlcHRpb24gRXJyb3I6
IEluZGV4U2l6ZUVycm9yOiBET00gRXhjZXB0aW9uIDEuCitQQVNTIHZpZXcuc2V0SW50OCgxMiwg
LTQpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSW5kZXhTaXplRXJyb3I6IERPTSBFeGNlcHRpb24g
MS4KIFBBU1Mgdmlldy5zZXRJbnQ4KDE1LCAtMSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJbmRl
eFNpemVFcnJvcjogRE9NIEV4Y2VwdGlvbiAxLgogUEFTUyB2aWV3LnNldFVpbnQ4KDAsIDApIGlz
IHVuZGVmaW5lZC4KIFBBU1Mgdmlldy5nZXRVaW50OCgwKSBpcyAwCitQQVNTIHZpZXcuc2V0VWlu
dDgoMSwgMSkgaXMgdW5kZWZpbmVkLgorUEFTUyB2aWV3LmdldFVpbnQ4KDEpIGlzIDEKIFBBU1Mg
dmlldy5zZXRVaW50OCg4LCAxMjgpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSW5kZXhTaXplRXJy
b3I6IERPTSBFeGNlcHRpb24gMS4KK1BBU1Mgdmlldy5zZXRVaW50OCgxMiwgMjUyKSB0aHJldyBl
eGNlcHRpb24gRXJyb3I6IEluZGV4U2l6ZUVycm9yOiBET00gRXhjZXB0aW9uIDEuCiBQQVNTIHZp
ZXcuc2V0VWludDgoMTUsIDI1NSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJbmRleFNpemVFcnJv
cjogRE9NIEV4Y2VwdGlvbiAxLgogUEFTUyB2aWV3LnNldEludDE2KDAsIDI1NiwgdHJ1ZSkgaXMg
dW5kZWZpbmVkLgogUEFTUyB2aWV3LmdldEludDE2KDAsIHRydWUpIGlzIDI1NgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZGF0YS12aWV3LXRlc3QuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2RhdGEtdmlldy10ZXN0Lmh0bWwKaW5kZXggNTY5
NDBkZi4uZjMxMjljZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wv
ZGF0YS12aWV3LXRlc3QuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9k
YXRhLXZpZXctdGVzdC5odG1sCkBAIC0xMyw3ICsxMyw3IEBAIHZhciBpbnRBcnJheTEgPSBbMCwg
MSwgMiwgMywgMTAwLCAxMDEsIDEwMiwgMTAzLCAxMjgsIDEyOSwgMTMwLCAxMzEsIDI1MiwgMjUz
LCAyCiB2YXIgaW50QXJyYXkyID0gWzMxLCAzMiwgMzMsIDAsIDEsIDIsIDMsIDEwMCwgMTAxLCAx
MDIsIDEwMywgMTI4LCAxMjksIDEzMCwgMTMxLCAyNTIsIDI1MywgMjU0LCAyNTVdOwogdmFyIGVt
cHR5QXJyYXkgPSBbMjA0LCAyMDQsIDIwNCwgMjA0LCAyMDQsIDIwNCwgMjA0LCAyMDQsIDIwNCwg
MjA0LCAyMDQsIDIwNCwgMjA0LCAyMDQsIDIwNCwgMjA0XTsKIAotdmFyIGFyYXlCdWZmZXIgPSBu
dWxsOwordmFyIGFycmF5QnVmZmVyID0gbnVsbDsKIHZhciB2aWV3ID0gbnVsbDsKIHZhciB2aWV3
U3RhcnQgPSAwOwogdmFyIHZpZXdMZW5ndGggPSAwOwpAQCAtOTMsMTEgKzkzLDE1IEBAIGZ1bmN0
aW9uIHJ1bkludGVnZXJUZXN0Q2FzZXMoaXNUZXN0aW5nR2V0LCBhcnJheSwgc3RhcnQsIGxlbmd0
aCkKICAgICBjcmVhdGVEYXRhVmlldyhhcnJheSwgMCwgdHJ1ZSwgc3RhcnQsIGxlbmd0aCk7CiAK
ICAgICB0ZXN0KGlzVGVzdGluZ0dldCwgIkludDgiLCAwLCAiMCIpOworICAgIHRlc3QoaXNUZXN0
aW5nR2V0LCAiSW50OCIsIDEsICIxIik7CiAgICAgdGVzdChpc1Rlc3RpbmdHZXQsICJJbnQ4Iiwg
OCwgIi0xMjgiKTsKKyAgICB0ZXN0KGlzVGVzdGluZ0dldCwgIkludDgiLCAxMiwgIi00Iik7CiAg
ICAgdGVzdChpc1Rlc3RpbmdHZXQsICJJbnQ4IiwgMTUsICItMSIpOwogCiAgICAgdGVzdChpc1Rl
c3RpbmdHZXQsICJVaW50OCIsIDAsICIwIik7CisgICAgdGVzdChpc1Rlc3RpbmdHZXQsICJVaW50
OCIsIDEsICIxIik7CiAgICAgdGVzdChpc1Rlc3RpbmdHZXQsICJVaW50OCIsIDgsICIxMjgiKTsK
KyAgICB0ZXN0KGlzVGVzdGluZ0dldCwgIlVpbnQ4IiwgMTIsICIyNTIiKTsKICAgICB0ZXN0KGlz
VGVzdGluZ0dldCwgIlVpbnQ4IiwgMTUsICIyNTUiKTsKIAogICAgIC8vIExpdHRsZSBlbmRpYW4u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggMjgzOGYyZS4uZTMwZDE3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3
IEBACisyMDEzLTA2LTEzICBDaHJpc3RvcGhlIER1bWV6ICA8Y2guZHVtZXpAc2lzYS5zYW1zdW5n
LmNvbT4KKworICAgICAgICBTdXBwb3J0IGJ5dGUgYW5kIG9jdGV0IHR5cGVzIGluIGJpbmRpbmdz
IGdlbmVyYXRvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExNzU0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCBzdXBwb3J0IGZvciBieXRlIGFuZCBvY3RldCBJREwgdHlwZXMgdG8gdGhlIGJpbmRp
bmdzCisgICAgICAgIGdlbmVyYXRvcjoKKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvMjAwNi93
ZWJhcGkvV2ViSURMLyNpZGwtYnl0ZQorICAgICAgICBodHRwOi8vZGV2LnczLm9yZy8yMDA2L3dl
YmFwaS9XZWJJREwvI2lkbC1vY3RldAorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJlZCBi
eSBleGlzdGluZyBsYXlvdXQgdGVzdHMgYW5kIGJ5IG5ldworICAgICAgICBiaW5kaW5ncyB0ZXN0
cy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGFscmVhZHkgY292ZXJlZCBieToKKyAgICAgICAg
ZmFzdC9jYW52YXMvd2ViZ2wvZGF0YS12aWV3LXRlc3QuaHRtbAorCisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01CaW5kaW5nLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuaDogQWRkIHRvSW50OCgpIC8gdG9VSW50OCgpCisgICAgICAgIG1ldGhvZHMgdG8gY29udmVy
dCBmcm9tIEpTVmFsdWUgdG8gaW50OF90IC8gdWludDhfdCBhcworICAgICAgICBzcGVjaWZpZWQg
YnkgV2ViIElETC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGF0YVZpZXdDdXN0b20uY3Bw
OiBSZW1vdmUgY3VzdG9tIGNvZGUgZm9yCisgICAgICAgIGdldEludDgsIGdldFVJbnQ4LCBzZXRJ
bnQ4LCBzZXRVSW50OCBub3cgdGhhdCBieXRlIGFuZCBvY3RldAorICAgICAgICB0eXBlcyBhcmUg
c3VwcG9ydGVkIGJ5IHRoZSBiaW5kaW5ncyBnZW5lcmF0b3IuCisKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JDUFAucG06CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JPYmpDLnBtOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVz
dE9iai5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0
T2JqLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9N
VGVzdE9iai5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2Vi
S2l0RE9NVGVzdE9iai5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLmg6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGw6IEFkZCB0ZXN0cyBmb3IgYnl0
ZSBhbmQgb2N0ZXQgdHlwZXMuCisgICAgICAgICogaHRtbC9jYW52YXMvRGF0YVZpZXcuaWRsOiBS
ZW1vdmUgW0N1c3RvbV0gZXh0ZW5kZWQgYXR0cmlidXRlIGZvcgorICAgICAgICBnZXRJbnQ4LCBn
ZXRVSW50OCwgc2V0SW50OCwgc2V0VUludDggYW5kIHVzZSBuZXdseSBzdXBwb3J0ZWQgYnl0ZSAv
IG9jdGV0CisgICAgICAgIHR5cGVzLgorCiAyMDEzLTA2LTEyICBDaHJpc3RvcGhlIER1bWV6ICA8
Y2guZHVtZXpAc2lzYS5zYW1zdW5nLmNvbT4KIAogICAgICAgICBTdXBwb3J0IGxhdGVzdCBXZWIg
SURMIGluZGV4ZWQgcHJvcGVydHkgZ2V0dGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5jcHAKaW5kZXggNjcyNjdkMC4uNmM2ZThjYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5j
bHVkZSA8cnVudGltZS9FcnJvci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVy
cy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNGdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9NYXRo
RXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKQEAgLTI4Niw2ICsyODcsOSBAQCBT
dHJ1Y3R1cmUqIGNhY2hlRE9NU3RydWN0dXJlKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dQogICAgIHJldHVybiBzdHJ1Y3R1cmVzLnNldChjbGFzc0lu
Zm8sIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUpKS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9CiAKK3N0YXRpYyBjb25z
dCBpbnQ4X3Qga01heEludDggPSAxMjc7CitzdGF0aWMgY29uc3QgaW50OF90IGtNaW5JbnQ4ID0g
LTEyODsKK3N0YXRpYyBjb25zdCBpbnQ4X3Qga01heFVJbnQ4ID0gMjU1Owogc3RhdGljIGNvbnN0
IGludDMyX3Qga01heEludDMyID0gMHg3ZmZmZmZmZjsKIHN0YXRpYyBjb25zdCBpbnQzMl90IGtN
aW5JbnQzMiA9IC1rTWF4SW50MzIgLSAxOwogc3RhdGljIGNvbnN0IHVpbnQzMl90IGtNYXhVSW50
MzIgPSAweGZmZmZmZmZmVTsKQEAgLTMwNSw2ICszMDksNDIgQEAgc3RhdGljIGRvdWJsZSBlbmZv
cmNlUmFuZ2UoRXhlY1N0YXRlKiBleGVjLCBkb3VibGUgeCwgZG91YmxlIG1pbmltdW0sIGRvdWJs
ZSBtYXgKICAgICByZXR1cm4geDsKIH0KIAorLy8gaHR0cDovL3d3dy53My5vcmcvVFIvV2ViSURM
LyNlcy1ieXRlCitpbnQ4X3QgdG9JbnQ4KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwg
SW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pCit7CisgICAgZG91
YmxlIHggPSB2YWx1ZS50b051bWJlcihleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKGNvbmZpZ3VyYXRpb24gPT0gRW5mb3Jj
ZVJhbmdlKQorICAgICAgICByZXR1cm4gZW5mb3JjZVJhbmdlKGV4ZWMsIHgsIGtNaW5JbnQ4LCBr
TWF4SW50OCk7CisKKyAgICBpZiAoc3RkOjppc25hbih4KSB8fCBzdGQ6OmlzaW5mKHgpIHx8ICF4
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHggPSB4IDwgMCA/IC1mbG9vcihhYnMoeCkpIDog
Zmxvb3IoYWJzKHgpKTsKKyAgICB4ID0gZm1vZCh4LCAyNTYpOyAvLyAyXjguCisKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8aW50OF90Pih4ID4ga01heEludDggPyB4IC0gMjU2IDogeCk7Cit9CisK
Ky8vIGh0dHA6Ly93d3cudzMub3JnL1RSL1dlYklETC8jZXMtb2N0ZXQKK3VpbnQ4X3QgdG9VSW50
OChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIEludGVnZXJDb252ZXJzaW9uQ29uZmln
dXJhdGlvbiBjb25maWd1cmF0aW9uKQoreworICAgIGRvdWJsZSB4ID0gdmFsdWUudG9OdW1iZXIo
ZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gMDsK
KworICAgIGlmIChjb25maWd1cmF0aW9uID09IEVuZm9yY2VSYW5nZSkKKyAgICAgICAgcmV0dXJu
IGVuZm9yY2VSYW5nZShleGVjLCB4LCAwLCBrTWF4VUludDgpOworCisgICAgaWYgKHN0ZDo6aXNu
YW4oeCkgfHwgc3RkOjppc2luZih4KSB8fCAheCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICB4
ID0geCA8IDAgPyAtZmxvb3IoYWJzKHgpKSA6IGZsb29yKGFicyh4KSk7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KGZtb2QoeCwgMjU2KSk7IC8vIDJeOC4KK30KKwogLy8gaHR0cDov
L3d3dy53My5vcmcvVFIvV2ViSURMLyNlcy1sb25nCiBpbnQzMl90IHRvSW50MzJFbmZvcmNlUmFu
Z2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUJpbmRpbmcuaAppbmRleCA0NDg0NDA0Li45MmVjY2I0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAtMjY3LDYgKzI2Nyw5IEBAIGNs
YXNzIERPTVN0cmluZ0xpc3Q7CiAgICAgaW50MzJfdCB0b0ludDMyRW5mb3JjZVJhbmdlKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlKTsKICAgICB1aW50MzJfdCB0b1VJbnQzMkVuZm9yY2VS
YW5nZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSk7CiAKKyAgICBpbnQ4X3QgdG9JbnQ4
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3Vy
YXRpb24pOworICAgIHVpbnQ4X3QgdG9VSW50OChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1
ZSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uKTsKKwogICAgIC8qCiAgICAgICAgIENv
bnZlcnQgYSB2YWx1ZSB0byBhbiBpbnRlZ2VyIGFzIHBlciA8aHR0cDovL3d3dy53My5vcmcvVFIv
V2ViSURMLz4uCiAgICAgICAgIFRoZSBjb252ZXJzaW9uIGZhaWxzIGlmIHRoZSB2YWx1ZSBjYW5u
b3QgYmUgY29udmVydGVkIHRvIGEgbnVtYmVyIG9yLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNEYXRhVmlld0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RhdGFWaWV3Q3VzdG9tLmNwcAppbmRleCA2MDRjYjEwLi4yMzY0MWUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFWaWV3Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFWaWV3Q3VzdG9tLmNwcApAQCAt
MzYsOCArMzYsNiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBlbnVtIERhdGFWaWV3QWNjZXNzVHlwZSB7Ci0gICAgQWNjZXNzRGF0YVZpZXdNZW1iZXJBc0lu
dDgsCi0gICAgQWNjZXNzRGF0YVZpZXdNZW1iZXJBc1VpbnQ4LAogICAgIEFjY2Vzc0RhdGFWaWV3
TWVtYmVyQXNGbG9hdDMyLAogICAgIEFjY2Vzc0RhdGFWaWV3TWVtYmVyQXNGbG9hdDY0CiB9OwpA
QCAtODAsMTIgKzc4LDYgQEAgc3RhdGljIEpTVmFsdWUgZ2V0RGF0YVZpZXdNZW1iZXIoRXhlY1N0
YXRlKiBleGVjLCBEYXRhVmlldyogaW1wLCBEYXRhVmlld0FjY2Vzc1QKIAogICAgIEpTQzo6SlNW
YWx1ZSByZXN1bHQ7CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBBY2Nlc3NEYXRhVmll
d01lbWJlckFzSW50ODoKLSAgICAgICAgcmVzdWx0ID0ganNOdW1iZXIoaW1wLT5nZXRJbnQ4KGJ5
dGVPZmZzZXQsIGVjKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQWNjZXNzRGF0YVZpZXdN
ZW1iZXJBc1VpbnQ4OgotICAgICAgICByZXN1bHQgPSBqc051bWJlcihpbXAtPmdldFVpbnQ4KGJ5
dGVPZmZzZXQsIGVjKSk7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzRGF0YVZpZXdN
ZW1iZXJBc0Zsb2F0MzI6CiAgICAgY2FzZSBBY2Nlc3NEYXRhVmlld01lbWJlckFzRmxvYXQ2NDog
ewogICAgICAgICBkb3VibGUgdmFsdWUgPSAodHlwZSA9PSBBY2Nlc3NEYXRhVmlld01lbWJlckFz
RmxvYXQzMikgPyBpbXAtPmdldEZsb2F0MzIoYnl0ZU9mZnNldCwgbGl0dGxlRW5kaWFuLCBlYykg
OiBpbXAtPmdldEZsb2F0NjQoYnl0ZU9mZnNldCwgbGl0dGxlRW5kaWFuLCBlYyk7CkBAIC05OSwx
NiArOTEsNiBAQCBzdGF0aWMgSlNWYWx1ZSBnZXREYXRhVmlld01lbWJlcihFeGVjU3RhdGUqIGV4
ZWMsIERhdGFWaWV3KiBpbXAsIERhdGFWaWV3QWNjZXNzVAogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLUpTVmFsdWUgSlNEYXRhVmlldzo6Z2V0SW50OChFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAg
cmV0dXJuIGdldERhdGFWaWV3TWVtYmVyKGV4ZWMsIHN0YXRpY19jYXN0PERhdGFWaWV3Kj4oaW1w
bCgpKSwgQWNjZXNzRGF0YVZpZXdNZW1iZXJBc0ludDgpOwotfQotCi1KU1ZhbHVlIEpTRGF0YVZp
ZXc6OmdldFVpbnQ4KEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICByZXR1cm4gZ2V0RGF0YVZpZXdN
ZW1iZXIoZXhlYywgc3RhdGljX2Nhc3Q8RGF0YVZpZXcqPihpbXBsKCkpLCBBY2Nlc3NEYXRhVmll
d01lbWJlckFzVWludDgpOwotfQotCiBKU1ZhbHVlIEpTRGF0YVZpZXc6OmdldEZsb2F0MzIoRXhl
Y1N0YXRlKiBleGVjKQogewogICAgIHJldHVybiBnZXREYXRhVmlld01lbWJlcihleGVjLCBzdGF0
aWNfY2FzdDxEYXRhVmlldyo+KGltcGwoKSksIEFjY2Vzc0RhdGFWaWV3TWVtYmVyQXNGbG9hdDMy
KTsKQEAgLTExOSw0MSArMTAxLDQgQEAgSlNWYWx1ZSBKU0RhdGFWaWV3OjpnZXRGbG9hdDY0KEV4
ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gZ2V0RGF0YVZpZXdNZW1iZXIoZXhlYywgc3RhdGlj
X2Nhc3Q8RGF0YVZpZXcqPihpbXBsKCkpLCBBY2Nlc3NEYXRhVmlld01lbWJlckFzRmxvYXQ2NCk7
CiB9CiAKLXN0YXRpYyBKU1ZhbHVlIHNldERhdGFWaWV3TWVtYmVyKEV4ZWNTdGF0ZSogZXhlYywg
RGF0YVZpZXcqIGltcCwgRGF0YVZpZXdBY2Nlc3NUeXBlIHR5cGUpCi17Ci0gICAgaWYgKGV4ZWMt
PmFyZ3VtZW50Q291bnQoKSA8IDIpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKLSAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0ID0gZXhlYy0+YXJndW1lbnQoMCkudG9VSW50
MzIoZXhlYyk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKLSAgICBpbnQgdmFsdWUgPSBleGVjLT5hcmd1bWVudCgxKS50b0ludDMy
KGV4ZWMpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7Ci0gICAgICAgIAotICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgQWNj
ZXNzRGF0YVZpZXdNZW1iZXJBc0ludDg6Ci0gICAgICAgIGltcC0+c2V0SW50OChieXRlT2Zmc2V0
LCBzdGF0aWNfY2FzdDxpbnQ4X3Q+KHZhbHVlKSwgZWMpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEFjY2Vzc0RhdGFWaWV3TWVtYmVyQXNVaW50ODoKLSAgICAgICAgaW1wLT5zZXRVaW50OChi
eXRlT2Zmc2V0LCBzdGF0aWNfY2FzdDx1aW50OF90Pih2YWx1ZSksIGVjKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
IGJyZWFrOwotICAgIH0KLSAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwotICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwotfQotCi1KU1ZhbHVlIEpTRGF0YVZpZXc6OnNldEludDgoRXhlY1N0
YXRlKiBleGVjKQotewotICAgIHJldHVybiBzZXREYXRhVmlld01lbWJlcihleGVjLCBzdGF0aWNf
Y2FzdDxEYXRhVmlldyo+KGltcGwoKSksIEFjY2Vzc0RhdGFWaWV3TWVtYmVyQXNJbnQ4KTsKLX0K
LQotSlNWYWx1ZSBKU0RhdGFWaWV3OjpzZXRVaW50OChFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAg
cmV0dXJuIHNldERhdGFWaWV3TWVtYmVyKGV4ZWMsIHN0YXRpY19jYXN0PERhdGFWaWV3Kj4oaW1w
bCgpKSwgQWNjZXNzRGF0YVZpZXdNZW1iZXJBc1VpbnQ4KTsKLX0KLQogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yQ1BQLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yQ1BQLnBtCmluZGV4IDIzZjgzZDQuLmRmMWZjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckNQUC5wbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JDUFAucG0KQEAgLTIzNiw2ICsy
MzYsOCBAQCBzdWIgR2V0Q1BQVHlwZQogICAgIG15ICR1c2VDb25zdFJlZmVyZW5jZSA9IHNoaWZ0
OwogICAgIG15ICRuYW1lID0gR2V0Q2xhc3NOYW1lKCR0eXBlKTsKIAorICAgIHJldHVybiAiY2hh
ciIgaWYgJHR5cGUgZXEgImJ5dGUiOworICAgIHJldHVybiAidW5zaWduZWQgY2hhciIgaWYgJHR5
cGUgZXEgIm9jdGV0IjsKICAgICByZXR1cm4gImludCIgaWYgJHR5cGUgZXEgImxvbmciOwogICAg
IHJldHVybiAidW5zaWduZWQiIGlmICRuYW1lIGVxICJ1bnNpZ25lZCBsb25nIjsKICAgICByZXR1
cm4gInVuc2lnbmVkIHNob3J0IiBpZiAkdHlwZSBlcSAiQ29tcGFyZUhvdyI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBt
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5w
bQppbmRleCBjZjBiNzQ0Li41NWIwNWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0KQEAgLTMyOCw2ICszMjgs
OCBAQCBzdWIgR2V0R1ZhbHVlVHlwZU5hbWUgewogICAgICAgICAgICAgICAgICAiY2hhciIsICJj
aGFyIiwKICAgICAgICAgICAgICAgICAgImxvbmciLCAibG9uZyIsCiAgICAgICAgICAgICAgICAg
ICJsb25nIGxvbmciLCAiaW50NjQiLAorICAgICAgICAgICAgICAgICAiYnl0ZSIsICJpbnQ4IiwK
KyAgICAgICAgICAgICAgICAgIm9jdGV0IiwgInVpbnQ4IiwKICAgICAgICAgICAgICAgICAgInNo
b3J0IiwgImludCIsCiAgICAgICAgICAgICAgICAgICJ1Y2hhciIsICJ1Y2hhciIsCiAgICAgICAg
ICAgICAgICAgICJ1bnNpZ25lZCIsICJ1aW50IiwKQEAgLTM1NCw2ICszNTYsOCBAQCBzdWIgR2V0
R2xpYlR5cGVOYW1lIHsKICAgICAgICAgICAgICAgICAgImNoYXIiLCAiZ2NoYXIiLAogICAgICAg
ICAgICAgICAgICAibG9uZyIsICJnbG9uZyIsCiAgICAgICAgICAgICAgICAgICJsb25nIGxvbmci
LCAiZ2ludDY0IiwKKyAgICAgICAgICAgICAgICAgImJ5dGUiLCAiZ2ludDgiLAorICAgICAgICAg
ICAgICAgICAib2N0ZXQiLCAiZ3VpbnQ4IiwKICAgICAgICAgICAgICAgICAgInNob3J0IiwgImdz
aG9ydCIsCiAgICAgICAgICAgICAgICAgICJ1Y2hhciIsICJndWNoYXIiLAogICAgICAgICAgICAg
ICAgICAidW5zaWduZWQiLCAiZ3VpbnQiLApAQCAtMzk2LDggKzQwMCw5IEBAIHN1YiBHZXRXcml0
ZWFibGVQcm9wZXJ0aWVzIHsKICAgICAgICAgbXkgJGd0eXBlID0gR2V0R1ZhbHVlVHlwZU5hbWUo
JHByb3BlcnR5LT5zaWduYXR1cmUtPnR5cGUpOwogICAgICAgICBteSAkaGFzR3R5cGVTaWduYXR1
cmUgPSAoJGd0eXBlIGVxICJib29sZWFuIiB8fCAkZ3R5cGUgZXEgImZsb2F0IiB8fCAkZ3R5cGUg
ZXEgImRvdWJsZSIgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRndHlwZSBl
cSAidWludDY0IiB8fCAkZ3R5cGUgZXEgInVsb25nIiB8fCAkZ3R5cGUgZXEgImxvbmciIHx8IAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGd0eXBlIGVxICJ1aW50IiB8fCAkZ3R5
cGUgZXEgInVzaG9ydCIgfHwgJGd0eXBlIGVxICJ1Y2hhciIgfHwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICRndHlwZSBlcSAiY2hhciIgfHwgJGd0eXBlIGVxICJzdHJpbmciKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRndHlwZSBlcSAidWludCIgfHwgJGd0
eXBlIGVxICJ1c2hvcnQiIHx8ICRndHlwZSBlcSAiaW50OCIgfHwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICRndHlwZSBlcSAidWludDgiIHx8ICRndHlwZSBlcSAidWNoYXIiIHx8
ICRndHlwZSBlcSAiY2hhciIgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRn
dHlwZSBlcSAic3RyaW5nIik7CiAgICAgICAgICMgRklYTUU6IFdlIGFyZSBub3QgZ2VuZXJhdGlu
ZyBzZXR0ZXJzIGZvciAnUmVwbGFjZWFibGUnCiAgICAgICAgICMgYXR0cmlidXRlcyBub3csIGJ1
dCB3ZSBzaG91bGQgc29tZWhvdy4KICAgICAgICAgbXkgJHJlcGxhY2VhYmxlID0gJHByb3BlcnR5
LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZXBsYWNlYWJsZSJ9OwpAQCAtNTY4
LDYgKzU3Myw3IEBAIHN1YiBHZW5lcmF0ZVByb3BlcnR5IHsKICAgICBwdXNoKEB0eHRHZXRQcm9w
cywgIiAgICAgICAgYnJlYWs7XG4gICAgfVxuIik7CiAKICAgICBteSAlcGFyYW1fc3BlY19vcHRp
b25zID0gKCJpbnQiLCAiR19NSU5JTlQsIC8qIG1pbiAqL1xuR19NQVhJTlQsIC8qIG1heCAqL1xu
MCwgLyogZGVmYXVsdCAqLyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW50OCIs
ICJHX01JTklOVDgsIC8qIG1pbiAqL1xuR19NQVhJTlQ4LCAvKiBtYXggKi9cbjAsIC8qIGRlZmF1
bHQgKi8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJvb2xlYW4iLCAiRkFMU0Us
IC8qIGRlZmF1bHQgKi8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZsb2F0Iiwg
Ii1HX01BWEZMT0FULCAvKiBtaW4gKi9cbkdfTUFYRkxPQVQsIC8qIG1heCAqL1xuMC4wLCAvKiBk
ZWZhdWx0ICovIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkb3VibGUiLCAiLUdf
TUFYRE9VQkxFLCAvKiBtaW4gKi9cbkdfTUFYRE9VQkxFLCAvKiBtYXggKi9cbjAuMCwgLyogZGVm
YXVsdCAqLyIsCkBAIC01NzYsNiArNTgyLDcgQEAgc3ViIEdlbmVyYXRlUHJvcGVydHkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImludDY0IiwgIkdfTUlOSU5UNjQsIC8qIG1pbiAq
L1xuR19NQVhJTlQ2NCwgLyogbWF4ICovXG4wLCAvKiBkZWZhdWx0ICovIiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJ1bG9uZyIsICIwLCAvKiBtaW4gKi9cbkdfTUFYVUxPTkcsIC8q
IG1heCAqL1xuMCwgLyogZGVmYXVsdCAqLyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAidWludCIsICIwLCAvKiBtaW4gKi9cbkdfTUFYVUlOVCwgLyogbWF4ICovXG4wLCAvKiBkZWZh
dWx0ICovIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1aW50OCIsICIwLCAvKiBt
aW4gKi9cbkdfTUFYVUlOVDgsIC8qIG1heCAqL1xuMCwgLyogZGVmYXVsdCAqLyIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAidXNob3J0IiwgIjAsIC8qIG1pbiAqL1xuR19NQVhVSU5U
MTYsIC8qIG1heCAqL1xuMCwgLyogZGVmYXVsdCAqLyIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAidWNoYXIiLCAiR19NSU5JTlQ4LCAvKiBtaW4gKi9cbkdfTUFYSU5UOCwgLyogbWF4
ICovXG4wLCAvKiBkZWZhdWx0ICovIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJj
aGFyIiwgIjAsIC8qIG1pbiAqL1xuR19NQVhVSU5UOCwgLyogbWF4ICovXG4wLCAvKiBkZWZhdWx0
ICovIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0KaW5kZXggMWYzM2MyMS4uMzExYTBkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTMzNzUsNiArMzM3NSw4
IEBAIG15ICVuYXRpdmVUeXBlID0gKAogICAgICJ1bnNpZ25lZCBzaG9ydCIgPT4gInVuc2lnbmVk
IHNob3J0IiwKICAgICAibG9uZyBsb25nIiA9PiAibG9uZyBsb25nIiwKICAgICAidW5zaWduZWQg
bG9uZyBsb25nIiA9PiAidW5zaWduZWQgbG9uZyBsb25nIiwKKyAgICAiYnl0ZSIgPT4gImludDhf
dCIsCisgICAgIm9jdGV0IiA9PiAidWludDhfdCIsCiAgICAgIk1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXIiID0+ICJSZWZQdHI8TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4iLAogICAgICJET01UaW1lU3Rh
bXAiID0+ICJET01UaW1lU3RhbXAiLCAgICAKICk7CkBAIC0zNDc5LDYgKzM0ODEsOCBAQCBzdWIg
SlNWYWx1ZVRvTmF0aXZlCiAgICAgcmV0dXJuICIkdmFsdWUudG9GbG9hdChleGVjKSIgaWYgJHR5
cGUgZXEgImZsb2F0IjsKIAogICAgIG15ICRpbnRDb252ZXJzaW9uID0gJHNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkVuZm9yY2VSYW5nZSJ9ID8gIkVuZm9yY2VSYW5nZSIgOiAiTm9y
bWFsQ29udmVyc2lvbiI7CisgICAgcmV0dXJuICJ0b0ludDgoZXhlYywgJHZhbHVlLCAkaW50Q29u
dmVyc2lvbikiIGlmICR0eXBlIGVxICJieXRlIjsKKyAgICByZXR1cm4gInRvVUludDgoZXhlYywg
JHZhbHVlLCAkaW50Q29udmVyc2lvbikiIGlmICR0eXBlIGVxICJvY3RldCI7CiAgICAgcmV0dXJu
ICJ0b0ludDMyKGV4ZWMsICR2YWx1ZSwgJGludENvbnZlcnNpb24pIiBpZiAkdHlwZSBlcSAibG9u
ZyIgb3IgJHR5cGUgZXEgInNob3J0IjsKICAgICByZXR1cm4gInRvVUludDMyKGV4ZWMsICR2YWx1
ZSwgJGludENvbnZlcnNpb24pIiBpZiAkdHlwZSBlcSAidW5zaWduZWQgbG9uZyIgb3IgJHR5cGUg
ZXEgInVuc2lnbmVkIHNob3J0IjsKICAgICByZXR1cm4gInRvSW50NjQoZXhlYywgJHZhbHVlLCAk
aW50Q29udmVyc2lvbikiIGlmICR0eXBlIGVxICJsb25nIGxvbmciOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbSBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0KaW5kZXggNzhi
N2M3My4uMjliMTM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCkBAIC0zMDIsNiArMzAyLDggQEAgc3ViIEdldENsYXNz
TmFtZQogICAgIHJldHVybiAiTlNTdHJpbmciIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5
cGUoJG5hbWUpIG9yICRuYW1lIGVxICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiOwogICAgIHJldHVy
biAiTlMkbmFtZSIgaWYgSXNOYXRpdmVPYmpDVHlwZSgkbmFtZSk7CiAgICAgcmV0dXJuICJCT09M
IiBpZiAkbmFtZSBlcSAiYm9vbGVhbiI7CisgICAgcmV0dXJuICJ1bnNpZ25lZCBjaGFyIiBpZiAk
bmFtZSBlcSAib2N0ZXQiOworICAgIHJldHVybiAiY2hhciIgaWYgJG5hbWUgZXEgImJ5dGUiOwog
ICAgIHJldHVybiAidW5zaWduZWQiIGlmICRuYW1lIGVxICJ1bnNpZ25lZCBsb25nIjsKICAgICBy
ZXR1cm4gImludCIgaWYgJG5hbWUgZXEgImxvbmciOwogICAgIHJldHVybiAiTlNUaW1lSW50ZXJ2
YWwiIGlmICRuYW1lIGVxICJEYXRlIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwCmluZGV4IDlkNjMwODMu
LmZlNTU0NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9DUFAvV2ViRE9NVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcApAQCAtMTE2LDYgKzExNiwzOCBAQCBXZWJE
T01UZXN0T2JqIFdlYkRPTVRlc3RPYmo6OnJlYWRPbmx5VGVzdE9iakF0dHIoKSBjb25zdAogICAg
IHJldHVybiB0b1dlYktpdChXVEY6OmdldFB0cihpbXBsKCktPnJlYWRPbmx5VGVzdE9iakF0dHIo
KSkpOwogfQogCitjaGFyIFdlYkRPTVRlc3RPYmo6OmJ5dGVBdHRyKCkgY29uc3QKK3sKKyAgICBp
ZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuIGNoYXIoKTsKKworICAgIHJldHVybiBpbXBsKCkt
PmJ5dGVBdHRyKCk7Cit9CisKK3ZvaWQgV2ViRE9NVGVzdE9iajo6c2V0Qnl0ZUF0dHIoY2hhciBu
ZXdCeXRlQXR0cikKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aW1wbCgpLT5zZXRCeXRlQXR0cihuZXdCeXRlQXR0cik7Cit9CisKK3Vuc2lnbmVkIGNoYXIgV2Vi
RE9NVGVzdE9iajo6b2N0ZXRBdHRyKCkgY29uc3QKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAg
ICAgcmV0dXJuIHVuc2lnbmVkIGNoYXIoKTsKKworICAgIHJldHVybiBpbXBsKCktPm9jdGV0QXR0
cigpOworfQorCit2b2lkIFdlYkRPTVRlc3RPYmo6OnNldE9jdGV0QXR0cih1bnNpZ25lZCBjaGFy
IG5ld09jdGV0QXR0cikKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaW1wbCgpLT5zZXRPY3RldEF0dHIobmV3T2N0ZXRBdHRyKTsKK30KKwogc2hvcnQgV2ViRE9N
VGVzdE9iajo6c2hvcnRBdHRyKCkgY29uc3QKIHsKICAgICBpZiAoIWltcGwoKSkKQEAgLTc0OSw2
ICs3ODEsMzggQEAgdm9pZCBXZWJET01UZXN0T2JqOjp2b2lkTWV0aG9kV2l0aEFyZ3MoaW50IGxv
bmdBcmcsIGNvbnN0IFdlYkRPTVN0cmluZyYgc3RyQXJnLAogICAgIGltcGwoKS0+dm9pZE1ldGhv
ZFdpdGhBcmdzKGxvbmdBcmcsIHN0ckFyZywgdG9XZWJDb3JlKG9iakFyZykpOwogfQogCitjaGFy
IFdlYkRPTVRlc3RPYmo6OmJ5dGVNZXRob2QoKQoreworICAgIGlmICghaW1wbCgpKQorICAgICAg
ICByZXR1cm4gY2hhcigpOworCisgICAgcmV0dXJuIGltcGwoKS0+Ynl0ZU1ldGhvZCgpOworfQor
CitjaGFyIFdlYkRPTVRlc3RPYmo6OmJ5dGVNZXRob2RXaXRoQXJncyhjaGFyIGJ5dGVBcmcsIGNv
bnN0IFdlYkRPTVN0cmluZyYgc3RyQXJnLCBjb25zdCBXZWJET01UZXN0T2JqJiBvYmpBcmcpCit7
CisgICAgaWYgKCFpbXBsKCkpCisgICAgICAgIHJldHVybiBjaGFyKCk7CisKKyAgICByZXR1cm4g
aW1wbCgpLT5ieXRlTWV0aG9kV2l0aEFyZ3MoYnl0ZUFyZywgc3RyQXJnLCB0b1dlYkNvcmUob2Jq
QXJnKSk7Cit9CisKK3Vuc2lnbmVkIGNoYXIgV2ViRE9NVGVzdE9iajo6b2N0ZXRNZXRob2QoKQor
eworICAgIGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm4gdW5zaWduZWQgY2hhcigpOworCisg
ICAgcmV0dXJuIGltcGwoKS0+b2N0ZXRNZXRob2QoKTsKK30KKwordW5zaWduZWQgY2hhciBXZWJE
T01UZXN0T2JqOjpvY3RldE1ldGhvZFdpdGhBcmdzKHVuc2lnbmVkIGNoYXIgb2N0ZXRBcmcsIGNv
bnN0IFdlYkRPTVN0cmluZyYgc3RyQXJnLCBjb25zdCBXZWJET01UZXN0T2JqJiBvYmpBcmcpCit7
CisgICAgaWYgKCFpbXBsKCkpCisgICAgICAgIHJldHVybiB1bnNpZ25lZCBjaGFyKCk7CisKKyAg
ICByZXR1cm4gaW1wbCgpLT5vY3RldE1ldGhvZFdpdGhBcmdzKG9jdGV0QXJnLCBzdHJBcmcsIHRv
V2ViQ29yZShvYmpBcmcpKTsKK30KKwogaW50IFdlYkRPTVRlc3RPYmo6OmxvbmdNZXRob2QoKQog
ewogICAgIGlmICghaW1wbCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouaAppbmRleCBiYmQxZGZiLi41NWViNjk1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dl
YkRPTVRlc3RPYmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
Q1BQL1dlYkRPTVRlc3RPYmouaApAQCAtNzEsNiArNzEsMTAgQEAgcHVibGljOgogICAgIGludCBy
ZWFkT25seUxvbmdBdHRyKCkgY29uc3Q7CiAgICAgV2ViRE9NU3RyaW5nIHJlYWRPbmx5U3RyaW5n
QXR0cigpIGNvbnN0OwogICAgIFdlYkRPTVRlc3RPYmogcmVhZE9ubHlUZXN0T2JqQXR0cigpIGNv
bnN0OworICAgIGNoYXIgYnl0ZUF0dHIoKSBjb25zdDsKKyAgICB2b2lkIHNldEJ5dGVBdHRyKGNo
YXIpOworICAgIHVuc2lnbmVkIGNoYXIgb2N0ZXRBdHRyKCkgY29uc3Q7CisgICAgdm9pZCBzZXRP
Y3RldEF0dHIodW5zaWduZWQgY2hhcik7CiAgICAgc2hvcnQgc2hvcnRBdHRyKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRTaG9ydEF0dHIoc2hvcnQpOwogICAgIHVuc2lnbmVkIHNob3J0IHVuc2lnbmVk
U2hvcnRBdHRyKCkgY29uc3Q7CkBAIC0xNTQsNiArMTU4LDEwIEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgdm9pZE1ldGhvZCgpOwogICAgIHZvaWQgdm9pZE1ldGhvZFdpdGhBcmdzKGludCBsb25nQXJn
LCBjb25zdCBXZWJET01TdHJpbmcmIHN0ckFyZywgY29uc3QgV2ViRE9NVGVzdE9iaiYgb2JqQXJn
KTsKKyAgICBjaGFyIGJ5dGVNZXRob2QoKTsKKyAgICBjaGFyIGJ5dGVNZXRob2RXaXRoQXJncyhj
aGFyIGJ5dGVBcmcsIGNvbnN0IFdlYkRPTVN0cmluZyYgc3RyQXJnLCBjb25zdCBXZWJET01UZXN0
T2JqJiBvYmpBcmcpOworICAgIHVuc2lnbmVkIGNoYXIgb2N0ZXRNZXRob2QoKTsKKyAgICB1bnNp
Z25lZCBjaGFyIG9jdGV0TWV0aG9kV2l0aEFyZ3ModW5zaWduZWQgY2hhciBvY3RldEFyZywgY29u
c3QgV2ViRE9NU3RyaW5nJiBzdHJBcmcsIGNvbnN0IFdlYkRPTVRlc3RPYmomIG9iakFyZyk7CiAg
ICAgaW50IGxvbmdNZXRob2QoKTsKICAgICBpbnQgbG9uZ01ldGhvZFdpdGhBcmdzKGludCBsb25n
QXJnLCBjb25zdCBXZWJET01TdHJpbmcmIHN0ckFyZywgY29uc3QgV2ViRE9NVGVzdE9iaiYgb2Jq
QXJnKTsKICAgICBXZWJET01UZXN0T2JqIG9iak1ldGhvZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRE
T01UZXN0T2JqLmNwcAppbmRleCAyM2RhNDFhLi4wYzdlNTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJL
aXRET01UZXN0T2JqLmNwcApAQCAtNzksNiArNzksOCBAQCBlbnVtIHsKICAgICBQUk9QX1JFQURf
T05MWV9MT05HX0FUVFIsCiAgICAgUFJPUF9SRUFEX09OTFlfU1RSSU5HX0FUVFIsCiAgICAgUFJP
UF9SRUFEX09OTFlfVEVTVF9PQkpfQVRUUiwKKyAgICBQUk9QX0JZVEVfQVRUUiwKKyAgICBQUk9Q
X09DVEVUX0FUVFIsCiAgICAgUFJPUF9TSE9SVF9BVFRSLAogICAgIFBST1BfVU5TSUdORURfU0hP
UlRfQVRUUiwKICAgICBQUk9QX0xPTkdfQVRUUiwKQEAgLTE0OCw2ICsxNTAsMTQgQEAgc3RhdGlj
IHZvaWQgd2Via2l0X2RvbV90ZXN0X29ial9zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBn
dWludCBwcm9wZXJ0eUlkLAogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGNvcmVTZWxmID0gV2ViS2l0
Ojpjb3JlKHNlbGYpOwogCiAgICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7CisgICAgY2FzZSBQUk9Q
X0JZVEVfQVRUUjogeworICAgICAgICBjb3JlU2VsZi0+c2V0Qnl0ZUF0dHIoKGdfdmFsdWVfZ2V0
X2ludDgodmFsdWUpKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFBST1BfT0NU
RVRfQVRUUjogeworICAgICAgICBjb3JlU2VsZi0+c2V0T2N0ZXRBdHRyKChnX3ZhbHVlX2dldF91
aW50OCh2YWx1ZSkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgUFJPUF9VTlNJ
R05FRF9TSE9SVF9BVFRSOiB7CiAgICAgICAgIGNvcmVTZWxmLT5zZXRVbnNpZ25lZFNob3J0QXR0
cigoZ192YWx1ZV9nZXRfdWludCh2YWx1ZSkpKTsKICAgICAgICAgYnJlYWs7CkBAIC0zMDMsNiAr
MzEzLDE0IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3Byb3BlcnR5KEdP
YmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwKICAgICAgICAgZ192YWx1ZV9zZXRfb2Jq
ZWN0KHZhbHVlLCBXZWJLaXQ6OmtpdChwdHIuZ2V0KCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQorICAgIGNhc2UgUFJPUF9CWVRFX0FUVFI6IHsKKyAgICAgICAgZ192YWx1ZV9zZXRfaW50OCh2
YWx1ZSwgY29yZVNlbGYtPmJ5dGVBdHRyKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
Y2FzZSBQUk9QX09DVEVUX0FUVFI6IHsKKyAgICAgICAgZ192YWx1ZV9zZXRfdWludDgodmFsdWUs
IGNvcmVTZWxmLT5vY3RldEF0dHIoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNl
IFBST1BfU0hPUlRfQVRUUjogewogICAgICAgICBnX3ZhbHVlX3NldF9pbnQodmFsdWUsIGNvcmVT
ZWxmLT5zaG9ydEF0dHIoKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTkyLDYgKzYxMCwyNCBAQCBH
X01BWExPTkcsIC8qIG1heCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9ET01fVEVTVF9PQkosIC8qIGdvYmpl
Y3QgdHlwZSAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKICAgICBnX29iamVjdF9jbGFz
c19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBST1BfQllURV9BVFRSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ19wYXJhbV9zcGVjX2ludDgoImJ5dGUtYXR0ciIsIC8qIG5hbWUgKi8KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRl
c3Rfb2JqX2J5dGUtYXR0ciIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICovCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWFkLXdyaXRl
ICBnaW50OCBUZXN0T2JqLmJ5dGUtYXR0ciIsIC8qIGxvbmdlciAtIGNvdWxkIGRvIHdpdGggc29t
ZSBleHRyYSBkb2Mgc3R1ZmYgaGVyZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX01JTklOVDgsIC8qIG1pbiAqLworR19NQVhJ
TlQ4LCAvKiBtYXggKi8KKzAsIC8qIGRlZmF1bHQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklU
RSkpOworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdENsYXNzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9PQ1RFVF9BVFRSLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX3VpbnQ4KCJvY3Rl
dC1hdHRyIiwgLyogbmFtZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAidGVzdF9vYmpfb2N0ZXQtYXR0ciIsIC8qIHNob3J0IGRl
c2NyaXB0aW9uICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJyZWFkLXdyaXRlICBndWludDggVGVzdE9iai5vY3RldC1hdHRyIiwg
LyogbG9uZ2VyIC0gY291bGQgZG8gd2l0aCBzb21lIGV4dHJhIGRvYyBzdHVmZiBoZXJlICovCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDAsIC8qIG1pbiAqLworR19NQVhVSU5UOCwgLyogbWF4ICovCiswLCAvKiBkZWZhdWx0ICovCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3By
b3BlcnR5KGdvYmplY3RDbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFBST1BfU0hPUlRfQVRUUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdf
cGFyYW1fc3BlY19pbnQoInNob3J0LWF0dHIiLCAvKiBuYW1lICovCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0X29ial9zaG9y
dC1hdHRyIiwgLyogc2hvcnQgZGVzY3JpcHRpb24gKi8KQEAgLTEwMTAsNiArMTA0Niw1NCBAQCB3
ZWJraXRfZG9tX3Rlc3Rfb2JqX3ZvaWRfbWV0aG9kX3dpdGhfYXJncyhXZWJLaXRET01UZXN0T2Jq
KiBzZWxmLCBnbG9uZyBsb25nQXJnLAogICAgIGl0ZW0tPnZvaWRNZXRob2RXaXRoQXJncyhsb25n
QXJnLCBjb252ZXJ0ZWRTdHJBcmcsIGNvbnZlcnRlZE9iakFyZyk7CiB9CiAKK2dpbnQ4Cit3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX2J5dGVfbWV0aG9kKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCit7Cisg
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2VsZiksIDApOworICAgIFdlYkNvcmU6
OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgZ2ludDggcmVzdWx0ID0g
aXRlbS0+Ynl0ZU1ldGhvZCgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2dpbnQ4Cit3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX2J5dGVfbWV0aG9kX3dpdGhfYXJncyhXZWJLaXRET01UZXN0T2JqKiBz
ZWxmLCBnaW50OCBieXRlQXJnLCBjb25zdCBnY2hhciogc3RyQXJnLCBXZWJLaXRET01UZXN0T2Jq
KiBvYmpBcmcpCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwor
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2VsZiksIDAp
OworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHN0ckFyZywgMCk7CisgICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihvYmpBcmcpLCAwKTsKKyAgICBXZWJDb3Jl
OjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIFdURjo6U3RyaW5nIGNv
bnZlcnRlZFN0ckFyZyA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChzdHJBcmcpOworICAgIFdlYkNv
cmU6OlRlc3RPYmoqIGNvbnZlcnRlZE9iakFyZyA9IFdlYktpdDo6Y29yZShvYmpBcmcpOworICAg
IGdpbnQ4IHJlc3VsdCA9IGl0ZW0tPmJ5dGVNZXRob2RXaXRoQXJncyhieXRlQXJnLCBjb252ZXJ0
ZWRTdHJBcmcsIGNvbnZlcnRlZE9iakFyZyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworZ3Vp
bnQ4Cit3ZWJraXRfZG9tX3Rlc3Rfb2JqX29jdGV0X21ldGhvZChXZWJLaXRET01UZXN0T2JqKiBz
ZWxmKQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpLCAwKTsKKyAg
ICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGd1aW50
OCByZXN1bHQgPSBpdGVtLT5vY3RldE1ldGhvZCgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K2d1aW50OAord2Via2l0X2RvbV90ZXN0X29ial9vY3RldF9tZXRob2Rfd2l0aF9hcmdzKFdlYktp
dERPTVRlc3RPYmoqIHNlbGYsIGd1aW50OCBvY3RldEFyZywgY29uc3QgZ2NoYXIqIHN0ckFyZywg
V2ViS2l0RE9NVGVzdE9iaiogb2JqQXJnKQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RF
U1RfT0JKKHNlbGYpLCAwKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChzdHJBcmcsIDApOwor
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkoob2JqQXJnKSwg
MCk7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAg
ICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRTdHJBcmcgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgoc3Ry
QXJnKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBjb252ZXJ0ZWRPYmpBcmcgPSBXZWJLaXQ6OmNv
cmUob2JqQXJnKTsKKyAgICBndWludDggcmVzdWx0ID0gaXRlbS0+b2N0ZXRNZXRob2RXaXRoQXJn
cyhvY3RldEFyZywgY29udmVydGVkU3RyQXJnLCBjb252ZXJ0ZWRPYmpBcmcpOworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKIGdsb25nCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2xvbmdfbWV0aG9kKFdl
YktpdERPTVRlc3RPYmoqIHNlbGYpCiB7CkBAIC0xNTMyLDYgKzE2MTYsNDQgQEAgd2Via2l0X2Rv
bV90ZXN0X29ial9nZXRfcmVhZF9vbmx5X3Rlc3Rfb2JqX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiog
c2VsZikKICAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7CiB9CiAK
K2dpbnQ4Cit3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9ieXRlX2F0dHIoV2ViS2l0RE9NVGVzdE9i
aiogc2VsZikKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Cisg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxmKSwgMCk7
CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBn
aW50OCByZXN1bHQgPSBpdGVtLT5ieXRlQXR0cigpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K3ZvaWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfc2V0X2J5dGVfYXR0cihXZWJLaXRET01UZXN0T2Jq
KiBzZWxmLCBnaW50OCB2YWx1ZSkKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNl
bGYpKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwor
ICAgIGl0ZW0tPnNldEJ5dGVBdHRyKHZhbHVlKTsKK30KKworZ3VpbnQ4Cit3ZWJraXRfZG9tX3Rl
c3Rfb2JqX2dldF9vY3RldF9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCit7CisgICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2VsZiksIDApOworICAgIFdlYkNvcmU6OlRlc3RP
YmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgZ3VpbnQ4IHJlc3VsdCA9IGl0ZW0t
Pm9jdGV0QXR0cigpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQKK3dlYmtpdF9kb21f
dGVzdF9vYmpfc2V0X29jdGV0X2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ3VpbnQ4IHZh
bHVlKQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBn
X3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2VsZikpOworICAgIFdlYkNv
cmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgaXRlbS0+c2V0T2N0
ZXRBdHRyKHZhbHVlKTsKK30KKwogZ3Nob3J0CiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9zaG9y
dF9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0
T2JqLmgKaW5kZXggN2M5OTJjMy4uNmZlZTU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RP
YmouaApAQCAtNzMsNiArNzMsNTIgQEAgV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rf
b2JqX3ZvaWRfbWV0aG9kX3dpdGhfYXJncyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZyBs
b25nQXJnLCBjb25zdCBnY2hhciogc3RyQXJnLCBXZWJLaXRET01UZXN0T2JqKiBvYmpBcmcpOwog
CiAvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfYnl0ZV9tZXRob2Q6CisgKiBAc2VsZjogQSAj
V2ViS2l0RE9NVGVzdE9iagorICoKKyAqIFJldHVybnM6CisgKgorKiovCitXRUJLSVRfQVBJIGdp
bnQ4Cit3ZWJraXRfZG9tX3Rlc3Rfb2JqX2J5dGVfbWV0aG9kKFdlYktpdERPTVRlc3RPYmoqIHNl
bGYpOworCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfYnl0ZV9tZXRob2Rfd2l0aF9hcmdz
OgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqIEBieXRlQXJnOiBBICNnaW50OAor
ICogQHN0ckFyZzogQSAjZ2NoYXIKKyAqIEBvYmpBcmc6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAq
CisgKiBSZXR1cm5zOgorICoKKyoqLworV0VCS0lUX0FQSSBnaW50OAord2Via2l0X2RvbV90ZXN0
X29ial9ieXRlX21ldGhvZF93aXRoX2FyZ3MoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2ludDgg
Ynl0ZUFyZywgY29uc3QgZ2NoYXIqIHN0ckFyZywgV2ViS2l0RE9NVGVzdE9iaiogb2JqQXJnKTsK
KworLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX29jdGV0X21ldGhvZDoKKyAqIEBzZWxmOiBB
ICNXZWJLaXRET01UZXN0T2JqCisgKgorICogUmV0dXJuczoKKyAqCisqKi8KK1dFQktJVF9BUEkg
Z3VpbnQ4Cit3ZWJraXRfZG9tX3Rlc3Rfb2JqX29jdGV0X21ldGhvZChXZWJLaXRET01UZXN0T2Jq
KiBzZWxmKTsKKworLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX29jdGV0X21ldGhvZF93aXRo
X2FyZ3M6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICogQG9jdGV0QXJnOiBBICNn
dWludDgKKyAqIEBzdHJBcmc6IEEgI2djaGFyCisgKiBAb2JqQXJnOiBBICNXZWJLaXRET01UZXN0
T2JqCisgKgorICogUmV0dXJuczoKKyAqCisqKi8KK1dFQktJVF9BUEkgZ3VpbnQ4Cit3ZWJraXRf
ZG9tX3Rlc3Rfb2JqX29jdGV0X21ldGhvZF93aXRoX2FyZ3MoV2ViS2l0RE9NVGVzdE9iaiogc2Vs
ZiwgZ3VpbnQ4IG9jdGV0QXJnLCBjb25zdCBnY2hhciogc3RyQXJnLCBXZWJLaXRET01UZXN0T2Jq
KiBvYmpBcmcpOworCisvKioKICAqIHdlYmtpdF9kb21fdGVzdF9vYmpfbG9uZ19tZXRob2Q6CiAg
KiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagogICoKQEAgLTU1Niw2ICs2MDIsNDggQEAgV0VC
S0lUX0FQSSBXZWJLaXRET01UZXN0T2JqKgogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfcmVhZF9v
bmx5X3Rlc3Rfb2JqX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZik7CiAKIC8qKgorICogd2Vi
a2l0X2RvbV90ZXN0X29ial9nZXRfYnl0ZV9hdHRyOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRl
c3RPYmoKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLworV0VCS0lUX0FQSSBnaW50OAord2Via2l0
X2RvbV90ZXN0X29ial9nZXRfYnl0ZV9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpOworCisv
KioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X2J5dGVfYXR0cjoKKyAqIEBzZWxmOiBBICNX
ZWJLaXRET01UZXN0T2JqCisgKiBAdmFsdWU6IEEgI2dpbnQ4CisgKgorICogUmV0dXJuczoKKyAq
CisqKi8KK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2RvbV90ZXN0X29ial9zZXRfYnl0ZV9hdHRy
KFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdpbnQ4IHZhbHVlKTsKKworLyoqCisgKiB3ZWJraXRf
ZG9tX3Rlc3Rfb2JqX2dldF9vY3RldF9hdHRyOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RP
YmoKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLworV0VCS0lUX0FQSSBndWludDgKK3dlYmtpdF9k
b21fdGVzdF9vYmpfZ2V0X29jdGV0X2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZik7CisKKy8q
KgorICogd2Via2l0X2RvbV90ZXN0X29ial9zZXRfb2N0ZXRfYXR0cjoKKyAqIEBzZWxmOiBBICNX
ZWJLaXRET01UZXN0T2JqCisgKiBAdmFsdWU6IEEgI2d1aW50OAorICoKKyAqIFJldHVybnM6Cisg
KgorKiovCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfc2V0X29jdGV0X2F0
dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ3VpbnQ4IHZhbHVlKTsKKworLyoqCiAgKiB3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX2dldF9zaG9ydF9hdHRyOgogICogQHNlbGY6IEEgI1dlYktpdERPTVRl
c3RPYmoKICAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGE4MjQ4Y2IuLmEwNTZlMTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBA
IC04MCw2ICs4MCw4IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpUYWJs
ZVZhbHVlc1tdID0KICAgICB7ICJyZWFkT25seVN0cmluZ0F0dHIiLCBEb250RGVsZXRlIHwgUmVh
ZE9ubHksIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNUZXN0T2JqUmVhZE9ubHlTdHJpbmdBdHRyKSwgKGludHB0cl90KTAsIE5vSW50cmluc2ljIH0s
CiAgICAgeyAicmVhZE9ubHlUZXN0T2JqQXR0ciIsIERvbnREZWxldGUgfCBSZWFkT25seSwgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpS
ZWFkT25seVRlc3RPYmpBdHRyKSwgKGludHB0cl90KTAsIE5vSW50cmluc2ljIH0sCiAgICAgeyAi
ZW51bUF0dHIiLCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakVudW1BdHRyKSwgKGludHB0cl90KXNldEpTVGVzdE9i
akVudW1BdHRyLCBOb0ludHJpbnNpYyB9LAorICAgIHsgImJ5dGVBdHRyIiwgRG9udERlbGV0ZSwg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RP
YmpCeXRlQXR0ciksIChpbnRwdHJfdClzZXRKU1Rlc3RPYmpCeXRlQXR0ciwgTm9JbnRyaW5zaWMg
fSwKKyAgICB7ICJvY3RldEF0dHIiLCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iak9jdGV0QXR0ciksIChpbnRwdHJf
dClzZXRKU1Rlc3RPYmpPY3RldEF0dHIsIE5vSW50cmluc2ljIH0sCiAgICAgeyAic2hvcnRBdHRy
IiwgRG9udERlbGV0ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3RPYmpTaG9ydEF0dHIpLCAoaW50cHRyX3Qpc2V0SlNUZXN0T2JqU2hvcnRB
dHRyLCBOb0ludHJpbnNpYyB9LAogICAgIHsgInVuc2lnbmVkU2hvcnRBdHRyIiwgRG9udERlbGV0
ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RPYmpVbnNpZ25lZFNob3J0QXR0ciksIChpbnRwdHJfdClzZXRKU1Rlc3RPYmpVbnNpZ25lZFNo
b3J0QXR0ciwgTm9JbnRyaW5zaWMgfSwKICAgICB7ICJsb25nQXR0ciIsIERvbnREZWxldGUsIChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2Jq
TG9uZ0F0dHIpLCAoaW50cHRyX3Qpc2V0SlNUZXN0T2JqTG9uZ0F0dHIsIE5vSW50cmluc2ljIH0s
CkBAIC0xNTIsNyArMTU0LDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9i
alRhYmxlVmFsdWVzW10gPQogICAgIHsgMCwgMCwgMCwgMCwgTm9JbnRyaW5zaWMgfQogfTsKIAot
c3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RPYmpUYWJsZSA9IHsgMTQ1LCAxMjcsIEpTVGVz
dE9ialRhYmxlVmFsdWVzLCAwIH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdE9ialRh
YmxlID0geyAyNjUsIDI1NSwgSlNUZXN0T2JqVGFibGVWYWx1ZXMsIDAgfTsKIC8qIEhhc2ggdGFi
bGUgZm9yIGNvbnN0cnVjdG9yICovCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rl
c3RPYmpDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQpAQCAtMjY4LDYgKzI3MCwxMCBAQCBzdGF0
aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9
CiAgICAgeyAiQ09OU1RfSkFWQVNDUklQVCIsIERvbnREZWxldGUgfCBSZWFkT25seSwgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpDT05T
VF9KQVZBU0NSSVBUKSwgKGludHB0cl90KTAsIE5vSW50cmluc2ljIH0sCiAgICAgeyAidm9pZE1l
dGhvZCIsIERvbnREZWxldGUgfCBKU0M6OkZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZCksIChp
bnRwdHJfdCkwLCBOb0ludHJpbnNpYyB9LAogICAgIHsgInZvaWRNZXRob2RXaXRoQXJncyIsIERv
bnREZWxldGUgfCBKU0M6OkZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVu
Y3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZFdpdGhBcmdzKSwgKGlu
dHB0cl90KTMsIE5vSW50cmluc2ljIH0sCisgICAgeyAiYnl0ZU1ldGhvZCIsIERvbnREZWxldGUg
fCBKU0M6OkZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZCksIChpbnRwdHJfdCkwLCBOb0ludHJp
bnNpYyB9LAorICAgIHsgImJ5dGVNZXRob2RXaXRoQXJncyIsIERvbnREZWxldGUgfCBKU0M6OkZ1
bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZFdpdGhBcmdzKSwgKGludHB0cl90KTMsIE5vSW50cmlu
c2ljIH0sCisgICAgeyAib2N0ZXRNZXRob2QiLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwg
KGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk9jdGV0TWV0aG9kKSwgKGludHB0cl90KTAsIE5vSW50cmluc2ljIH0sCisgICAgeyAi
b2N0ZXRNZXRob2RXaXRoQXJncyIsIERvbnREZWxldGUgfCBKU0M6OkZ1bmN0aW9uLCAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T2N0ZXRNZXRob2RXaXRoQXJncyksIChpbnRwdHJfdCkzLCBOb0ludHJpbnNpYyB9LAogICAgIHsg
ImxvbmdNZXRob2QiLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRp
Y19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRo
b2QpLCAoaW50cHRyX3QpMCwgTm9JbnRyaW5zaWMgfSwKICAgICB7ICJsb25nTWV0aG9kV2l0aEFy
Z3MiLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5h
dGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRob2RXaXRoQXJn
cyksIChpbnRwdHJfdCkzLCBOb0ludHJpbnNpYyB9LAogICAgIHsgIm9iak1ldGhvZCIsIERvbnRE
ZWxldGUgfCBKU0M6OkZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rp
b24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kKSwgKGludHB0cl90KTAsIE5v
SW50cmluc2ljIH0sCkBAIC0zMzAsNyArMzM2LDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZh
bHVlIEpTVGVzdE9ialByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogICAgIHsgMCwgMCwgMCwgMCwg
Tm9JbnRyaW5zaWMgfQogfTsKIAotc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RPYmpQcm90
b3R5cGVUYWJsZSA9IHsgMjY2LCAyNTUsIEpTVGVzdE9ialByb3RvdHlwZVRhYmxlVmFsdWVzLCAw
IH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdE9ialByb3RvdHlwZVRhYmxlID0geyAy
NjcsIDI1NSwgSlNUZXN0T2JqUHJvdG90eXBlVGFibGVWYWx1ZXMsIDAgfTsKIGNvbnN0IENsYXNz
SW5mbyBKU1Rlc3RPYmpQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RPYmplY3RQcm90b3R5cGUi
LCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0T2JqUHJvdG90eXBlVGFibGUsIDAsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNUZXN0T2JqUHJvdG90eXBlKSB9OwogCiBKU09iamVjdCogSlNUZXN0T2JqUHJv
dG90eXBlOjpzZWxmKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKQEAgLTQ1OSw2ICs0NjUsMjYgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpFbnVtQXR0cihFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIH0KIAogCitKU1ZhbHVl
IGpzVGVzdE9iakJ5dGVBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJv
cGVydHlOYW1lKQoreworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RP
YmoqPihhc09iamVjdChzbG90QmFzZSkpOworICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyAgICBU
ZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7
CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLT5ieXRlQXR0cigpKTsKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCisKK0pTVmFsdWUganNUZXN0T2JqT2N0ZXRBdHRyKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQoreworICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOwor
ICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8
VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051
bWJlcihpbXBsLT5vY3RldEF0dHIoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCiBKU1Zh
bHVlIGpzVGVzdE9ialNob3J0QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2Us
IFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNU
ZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKQEAgLTEwOTQsNiArMTEyMCwzMCBAQCB2b2lk
IHNldEpTVGVzdE9iakVudW1BdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCiB9CiAKIAordm9pZCBzZXRKU1Rlc3RPYmpCeXRlQXR0cihFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAg
IFVOVVNFRF9QQVJBTShleGVjKTsKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8
SlNUZXN0T2JqKj4odGhpc09iamVjdCk7CisgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0
PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIGludDhfdCBuYXRpdmVWYWx1ZSh0
b0ludDgoZXhlYywgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pKTsKKyAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpbXBsLT5zZXRCeXRlQXR0cihuYXRp
dmVWYWx1ZSk7Cit9CisKKwordm9pZCBzZXRKU1Rlc3RPYmpPY3RldEF0dHIoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBVTlVTRURf
UEFSQU0oZXhlYyk7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9i
aio+KHRoaXNPYmplY3QpOworICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2Jq
Kj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICB1aW50OF90IG5hdGl2ZVZhbHVlKHRvVUludDgo
ZXhlYywgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpbXBsLT5zZXRPY3RldEF0dHIobmF0aXZlVmFs
dWUpOworfQorCisKIHZvaWQgc2V0SlNUZXN0T2JqU2hvcnRBdHRyKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KGV4ZWMpOwpAQCAtMTcwOCw2ICsxNzU4LDgwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kV2l0aEFyZ3MoRXhlY1N0CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2Qo
RXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRo
aXNWYWx1ZSgpOworICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKCZKU1Rlc3RPYmo6OnNfaW5m
bykpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsK
KyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RPYmo6OnNf
aW5mbyk7CisgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRU
aGlzLT5pbXBsKCkpOworCisgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwt
PmJ5dGVNZXRob2QoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworfQor
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Qnl0ZU1ldGhvZFdpdGhBcmdzKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKKyAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0
cygmSlNUZXN0T2JqOjpzX2luZm8pKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjKTsKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNP
YmplY3QodGhpc1ZhbHVlKSk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCAmSlNUZXN0T2JqOjpzX2luZm8pOworICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2Fz
dDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICBpZiAoZXhlYy0+YXJndW1lbnRD
b3VudCgpIDwgMykKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CisgICAgaW50OF90IGJ5dGVBcmcodG9JbnQ4KGV4
ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKSk7CisgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOworICAgIGNvbnN0IFN0cmluZyYgc3RyQXJnKGV4ZWMtPmFyZ3VtZW50KDEpLmlzRW1w
dHkoKSA/IFN0cmluZygpIDogZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgVGVzdE9iaiogb2JqQXJnKHRvVGVz
dE9iaihleGVjLT5hcmd1bWVudCgyKSkpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIEpT
Qzo6SlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLT5ieXRlTWV0aG9kV2l0aEFyZ3MoYnl0
ZUFyZywgc3RyQXJnLCBvYmpBcmcpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PY3RldE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CisgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJp
dHMoJkpTVGVzdE9iajo6c19pbmZvKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYyk7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGFz
T2JqZWN0KHRoaXNWYWx1ZSkpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgJkpTVGVzdE9iajo6c19pbmZvKTsKKyAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nh
c3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisKKyAgICBKU0M6OkpTVmFsdWUgcmVz
dWx0ID0ganNOdW1iZXIoaW1wbC0+b2N0ZXRNZXRob2QoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2RXaXRoQXJncyhFeGVjU3RhdGUqIGV4ZWMp
Cit7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CisgICAg
aWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkpTVGVzdE9iajo6c19pbmZvKSkKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNDYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOworICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJkpTVGVzdE9iajo6c19pbmZvKTsKKyAgICBUZXN0
T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7Cisg
ICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDMpCisgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOworICAgIHVp
bnQ4X3Qgb2N0ZXRBcmcodG9VSW50OChleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29u
dmVyc2lvbikpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBjb25zdCBTdHJpbmcmIHN0ckFy
ZyhleGVjLT5hcmd1bWVudCgxKS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IGV4ZWMtPmFyZ3VtZW50
KDEpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwor
ICAgIFRlc3RPYmoqIG9iakFyZyh0b1Rlc3RPYmooZXhlYy0+YXJndW1lbnQoMikpKTsKKyAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CisKKyAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1w
bC0+b2N0ZXRNZXRob2RXaXRoQXJncyhvY3RldEFyZywgc3RyQXJnLCBvYmpBcmcpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouaAppbmRleCA3ZmU1M2IzLi43YTJkNmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCkBAIC0xNjEsNiArMTYxLDEwIEBA
IHByb3RlY3RlZDoKIAogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZChKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1l
dGhvZFdpdGhBcmdzKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0aG9kKEpTQzo6RXhlY1N0
YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25CeXRlTWV0aG9kV2l0aEFyZ3MoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0
TWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZFdpdGhBcmdzKEpTQzo6RXhl
Y1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9k
V2l0aEFyZ3MoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZChKU0M6OkV4ZWNTdGF0ZSop
OwpAQCAtMjM5LDYgKzI0MywxMCBAQCB2b2lkIHNldEpTVGVzdE9iakNvbnN0cnVjdG9yU3RhdGlj
U3RyaW5nQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKUwogSlNDOjpKU1Zh
bHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yVGVzdFN1Yk9iaihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogSlNDOjpKU1ZhbHVlIGpzVGVzdE9iakVudW1B
dHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiB2
b2lkIHNldEpTVGVzdE9iakVudW1BdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCos
IEpTQzo6SlNWYWx1ZSk7CitKU0M6OkpTVmFsdWUganNUZXN0T2JqQnl0ZUF0dHIoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK3ZvaWQgc2V0SlNUZXN0
T2JqQnl0ZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVl
KTsKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpPY3RldEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK3ZvaWQgc2V0SlNUZXN0T2JqT2N0ZXRBdHRy
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6SlNWYWx1ZSk7CiBKU0M6OkpT
VmFsdWUganNUZXN0T2JqU2hvcnRBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7CiB2b2lkIHNldEpTVGVzdE9ialNob3J0QXR0cihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUpOwogSlNDOjpKU1ZhbHVlIGpzVGVz
dE9ialVuc2lnbmVkU2hvcnRBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLmgKaW5kZXggN2E2MzA5OC4uZTAzZDAyNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9i
ai5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRl
c3RPYmouaApAQCAtNjYsNiArNjYsOCBAQCBlbnVtIHsKIEBwcm9wZXJ0eShyZWFkb25seSkgaW50
IHJlYWRPbmx5TG9uZ0F0dHI7CiBAcHJvcGVydHkocmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpy
ZWFkT25seVN0cmluZ0F0dHI7CiBAcHJvcGVydHkocmVhZG9ubHksIHJldGFpbikgRE9NVGVzdE9i
aiAqcmVhZE9ubHlUZXN0T2JqQXR0cjsKK0Bwcm9wZXJ0eSBjaGFyIGJ5dGVBdHRyOworQHByb3Bl
cnR5IHVuc2lnbmVkIGNoYXIgb2N0ZXRBdHRyOwogQHByb3BlcnR5IHNob3J0IHNob3J0QXR0cjsK
IEBwcm9wZXJ0eSB1bnNpZ25lZCBzaG9ydCB1bnNpZ25lZFNob3J0QXR0cjsKIEBwcm9wZXJ0eSBp
bnQgbG9uZ0F0dHI7CkBAIC0xMjIsNiArMTI0LDEwIEBAIGVudW0gewogCiAtICh2b2lkKXZvaWRN
ZXRob2Q7CiAtICh2b2lkKXZvaWRNZXRob2RXaXRoQXJnczooaW50KWxvbmdBcmcgc3RyQXJnOihO
U1N0cmluZyAqKXN0ckFyZyBvYmpBcmc6KERPTVRlc3RPYmogKilvYmpBcmc7CistIChjaGFyKWJ5
dGVNZXRob2Q7CistIChjaGFyKWJ5dGVNZXRob2RXaXRoQXJnczooY2hhcilieXRlQXJnIHN0ckFy
ZzooTlNTdHJpbmcgKilzdHJBcmcgb2JqQXJnOihET01UZXN0T2JqICopb2JqQXJnOworLSAodW5z
aWduZWQgY2hhcilvY3RldE1ldGhvZDsKKy0gKHVuc2lnbmVkIGNoYXIpb2N0ZXRNZXRob2RXaXRo
QXJnczoodW5zaWduZWQgY2hhcilvY3RldEFyZyBzdHJBcmc6KE5TU3RyaW5nICopc3RyQXJnIG9i
akFyZzooRE9NVGVzdE9iaiAqKW9iakFyZzsKIC0gKGludClsb25nTWV0aG9kOwogLSAoaW50KWxv
bmdNZXRob2RXaXRoQXJnczooaW50KWxvbmdBcmcgc3RyQXJnOihOU1N0cmluZyAqKXN0ckFyZyBv
YmpBcmc6KERPTVRlc3RPYmogKilvYmpBcmc7CiAtIChET01UZXN0T2JqICopb2JqTWV0aG9kOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9N
VGVzdE9iai5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RP
TVRlc3RPYmoubW0KaW5kZXggODk5NmZlNS4uZmU4MzExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tCkBAIC0x
MTEsNiArMTExLDMwIEBACiAgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5yZWFkT25s
eVRlc3RPYmpBdHRyKCkpKTsKIH0KIAorLSAoY2hhcilieXRlQXR0cgoreworICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+Ynl0ZUF0dHIo
KTsKK30KKworLSAodm9pZClzZXRCeXRlQXR0cjooY2hhciluZXdCeXRlQXR0cgoreworICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBJTVBMLT5zZXRCeXRlQXR0
cihuZXdCeXRlQXR0cik7Cit9CisKKy0gKHVuc2lnbmVkIGNoYXIpb2N0ZXRBdHRyCit7CisgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT5v
Y3RldEF0dHIoKTsKK30KKworLSAodm9pZClzZXRPY3RldEF0dHI6KHVuc2lnbmVkIGNoYXIpbmV3
T2N0ZXRBdHRyCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwor
ICAgIElNUEwtPnNldE9jdGV0QXR0cihuZXdPY3RldEF0dHIpOworfQorCiAtIChzaG9ydClzaG9y
dEF0dHIKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CkBAIC03
NzUsNiArNzk5LDMwIEBACiAgICAgSU1QTC0+dm9pZE1ldGhvZFdpdGhBcmdzKGxvbmdBcmcsIHN0
ckFyZywgY29yZShvYmpBcmcpKTsKIH0KIAorLSAoY2hhcilieXRlTWV0aG9kCit7CisgICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT5ieXRl
TWV0aG9kKCk7Cit9CisKKy0gKGNoYXIpYnl0ZU1ldGhvZFdpdGhBcmdzOihjaGFyKWJ5dGVBcmcg
c3RyQXJnOihOU1N0cmluZyAqKXN0ckFyZyBvYmpBcmc6KERPTVRlc3RPYmogKilvYmpBcmcKK3sK
KyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElN
UEwtPmJ5dGVNZXRob2RXaXRoQXJncyhieXRlQXJnLCBzdHJBcmcsIGNvcmUob2JqQXJnKSk7Cit9
CisKKy0gKHVuc2lnbmVkIGNoYXIpb2N0ZXRNZXRob2QKK3sKKyAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwtPm9jdGV0TWV0aG9kKCk7Cit9
CisKKy0gKHVuc2lnbmVkIGNoYXIpb2N0ZXRNZXRob2RXaXRoQXJnczoodW5zaWduZWQgY2hhcilv
Y3RldEFyZyBzdHJBcmc6KE5TU3RyaW5nICopc3RyQXJnIG9iakFyZzooRE9NVGVzdE9iaiAqKW9i
akFyZworeworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBy
ZXR1cm4gSU1QTC0+b2N0ZXRNZXRob2RXaXRoQXJncyhvY3RldEFyZywgc3RyQXJnLCBjb3JlKG9i
akFyZykpOworfQorCiAtIChpbnQpbG9uZ01ldGhvZAogewogICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0T2JqLmlkbAppbmRleCBhZjM5NDVlLi4wNjc5ZjM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCkBAIC00NCw2ICs0
NCw4IEBAIGVudW0gVGVzdEVudW1UeXBlIHsgIiIsICJFbnVtVmFsdWUxIiwgIkVudW1WYWx1ZTIi
LCAiRW51bVZhbHVlMyIgfTsKICAgICBzdGF0aWMgYXR0cmlidXRlIERPTVN0cmluZyAgICAgICAg
IHN0YXRpY1N0cmluZ0F0dHI7CiAgICAgc3RhdGljIHJlYWRvbmx5IGF0dHJpYnV0ZSBUZXN0U3Vi
T2JqQ29uc3RydWN0b3IgVGVzdFN1Yk9iajsKICAgICBhdHRyaWJ1dGUgVGVzdEVudW1UeXBlICAg
ICAgICAgICAgIGVudW1BdHRyOworICAgIGF0dHJpYnV0ZSBieXRlICAgICAgICAgICAgICAgICAg
ICAgYnl0ZUF0dHI7CisgICAgYXR0cmlidXRlIG9jdGV0ICAgICAgICAgICAgICAgICAgICBvY3Rl
dEF0dHI7CiAgICAgYXR0cmlidXRlIHNob3J0ICAgICAgICAgICAgICAgICAgICBzaG9ydEF0dHI7
CiAgICAgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0ICAgICAgICAgICB1bnNpZ25lZFNob3J0QXR0
cjsKICAgICBhdHRyaWJ1dGUgbG9uZyAgICAgICAgICAgICAgICAgICAgIGxvbmdBdHRyOwpAQCAt
NzMsNiArNzUsMTAgQEAgZW51bSBUZXN0RW51bVR5cGUgeyAiIiwgIkVudW1WYWx1ZTEiLCAiRW51
bVZhbHVlMiIsICJFbnVtVmFsdWUzIiB9OwogICAgIC8vIE1ldGhvZHMKICAgICB2b2lkICAgIHZv
aWRNZXRob2QoKTsKICAgICB2b2lkICAgIHZvaWRNZXRob2RXaXRoQXJncyhsb25nIGxvbmdBcmcs
IERPTVN0cmluZyBzdHJBcmcsIFRlc3RPYmogb2JqQXJnKTsKKyAgICBieXRlICAgIGJ5dGVNZXRo
b2QoKTsKKyAgICBieXRlICAgIGJ5dGVNZXRob2RXaXRoQXJncyhieXRlIGJ5dGVBcmcsIERPTVN0
cmluZyBzdHJBcmcsIFRlc3RPYmogb2JqQXJnKTsKKyAgICBvY3RldCAgIG9jdGV0TWV0aG9kKCk7
CisgICAgb2N0ZXQgICBvY3RldE1ldGhvZFdpdGhBcmdzKG9jdGV0IG9jdGV0QXJnLCBET01TdHJp
bmcgc3RyQXJnLCBUZXN0T2JqIG9iakFyZyk7CiAgICAgbG9uZyAgICBsb25nTWV0aG9kKCk7CiAg
ICAgbG9uZyAgICBsb25nTWV0aG9kV2l0aEFyZ3MobG9uZyBsb25nQXJnLCBET01TdHJpbmcgc3Ry
QXJnLCBUZXN0T2JqIG9iakFyZyk7CiAgICAgVGVzdE9iaiBvYmpNZXRob2QoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0RhdGFWaWV3LmlkbCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0RhdGFWaWV3LmlkbAppbmRleCBjMGE0MmEwLi41MDdiMGE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9EYXRhVmlldy5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRGF0YVZpZXcuaWRsCkBAIC0zMSwxMSArMzEsOCBAQAog
XSBpbnRlcmZhY2UgRGF0YVZpZXcgOiBBcnJheUJ1ZmZlclZpZXcgewogICAgIC8vIEFsbCB0aGVz
ZSBtZXRob2RzIHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiB0aGV5IHdvdWxkIHJlYWQgb3Igd3JpdGUg
YmV5b25kIHRoZSBlbmQgb2YgdGhlIHZpZXcuCiAKLSAgICAvLyBXZSBoYXZlIHRvIHVzZSBjdXN0
b20gY29kZSBiZWNhdXNlIG91ciBjb2RlIGdlbmVyYXRvciBkb2VzIG5vdCBzdXBwb3J0IGludDhf
dCB0eXBlLgotICAgIC8vIGludDhfdCBnZXRJbnQ4KHVuc2lnbmVkIGxvbmcgYnl0ZU9mZnNldCk7
Ci0gICAgLy8gdWludDhfdCBnZXRVaW50OCh1bnNpZ25lZCBsb25nIGJ5dGVPZmZzZXQpOwotICAg
IFtDdXN0b20sIFJhaXNlc0V4Y2VwdGlvbl0gYW55IGdldEludDgoKTsKLSAgICBbQ3VzdG9tLCBS
YWlzZXNFeGNlcHRpb25dIGFueSBnZXRVaW50OCgpOworICAgIFtSYWlzZXNFeGNlcHRpb25dIGJ5
dGUgZ2V0SW50OCh1bnNpZ25lZCBsb25nIGJ5dGVPZmZzZXQpOworICAgIFtSYWlzZXNFeGNlcHRp
b25dIG9jdGV0IGdldFVpbnQ4KHVuc2lnbmVkIGxvbmcgYnl0ZU9mZnNldCk7CiAKICAgICBbU3Ry
aWN0VHlwZUNoZWNraW5nLCBSYWlzZXNFeGNlcHRpb25dIHNob3J0IGdldEludDE2KHVuc2lnbmVk
IGxvbmcgYnl0ZU9mZnNldCwgb3B0aW9uYWwgYm9vbGVhbiBsaXR0bGVFbmRpYW4pOwogICAgIFtT
dHJpY3RUeXBlQ2hlY2tpbmcsIFJhaXNlc0V4Y2VwdGlvbl0gdW5zaWduZWQgc2hvcnQgZ2V0VWlu
dDE2KHVuc2lnbmVkIGxvbmcgYnl0ZU9mZnNldCwgb3B0aW9uYWwgYm9vbGVhbiBsaXR0bGVFbmRp
YW4pOwpAQCAtNDYsMTEgKzQzLDggQEAKICAgICBbQ3VzdG9tLCBTdHJpY3RUeXBlQ2hlY2tpbmcs
IFJhaXNlc0V4Y2VwdGlvbl0gZmxvYXQgZ2V0RmxvYXQzMih1bnNpZ25lZCBsb25nIGJ5dGVPZmZz
ZXQsIG9wdGlvbmFsIGJvb2xlYW4gbGl0dGxlRW5kaWFuKTsKICAgICBbQ3VzdG9tLCBTdHJpY3RU
eXBlQ2hlY2tpbmcsIFJhaXNlc0V4Y2VwdGlvbl0gZG91YmxlIGdldEZsb2F0NjQodW5zaWduZWQg
bG9uZyBieXRlT2Zmc2V0LCBvcHRpb25hbCBib29sZWFuIGxpdHRsZUVuZGlhbik7CiAKLSAgICAv
LyBXZSBoYXZlIHRvIHVzZSBjdXN0b20gY29kZSBiZWNhdXNlIG91ciBjb2RlIGdlbmVyYXRvciBk
b2VzIG5vdCBzdXBwb3J0IHVpbnQ4X3QgdHlwZS4KLSAgICAvLyB2b2lkIHNldEludDgodW5zaWdu
ZWQgbG9uZyBieXRlT2Zmc2V0LCBpbnQ4X3QgdmFsdWUpOwotICAgIC8vIHZvaWQgc2V0VWludDgo
dW5zaWduZWQgbG9uZyBieXRlT2Zmc2V0LCB1aW50OF90IHZhbHVlKTsKLSAgICBbQ3VzdG9tLCBS
YWlzZXNFeGNlcHRpb25dIHZvaWQgc2V0SW50OCgpOwotICAgIFtDdXN0b20sIFJhaXNlc0V4Y2Vw
dGlvbl0gdm9pZCBzZXRVaW50OCgpOworICAgIFtSYWlzZXNFeGNlcHRpb25dIHZvaWQgc2V0SW50
OCh1bnNpZ25lZCBsb25nIGJ5dGVPZmZzZXQsIGJ5dGUgdmFsdWUpOworICAgIFtSYWlzZXNFeGNl
cHRpb25dIHZvaWQgc2V0VWludDgodW5zaWduZWQgbG9uZyBieXRlT2Zmc2V0LCBvY3RldCB2YWx1
ZSk7CiAKICAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgc2V0
SW50MTYodW5zaWduZWQgbG9uZyBieXRlT2Zmc2V0LCBzaG9ydCB2YWx1ZSwgb3B0aW9uYWwgYm9v
bGVhbiBsaXR0bGVFbmRpYW4pOwogICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmcsIFJhaXNlc0V4Y2Vw
dGlvbl0gdm9pZCBzZXRVaW50MTYodW5zaWduZWQgbG9uZyBieXRlT2Zmc2V0LCB1bnNpZ25lZCBz
aG9ydCB2YWx1ZSwgb3B0aW9uYWwgYm9vbGVhbiBsaXR0bGVFbmRpYW4pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204567</attachid>
            <date>2013-06-13 03:39:22 -0700</date>
            <delta_ts>2013-06-13 04:02:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>117547_byte_octet.patch</filename>
            <type>text/plain</type>
            <size>59528</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0NWJkYmU4MC4uNzU3N2YyMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEzLTA2
LTEzICBDaHJpc3RvcGhlIER1bWV6ICA8Y2guZHVtZXpAc2lzYS5zYW1zdW5nLmNvbT4KKworICAg
ICAgICBTdXBwb3J0IGJ5dGUgYW5kIG9jdGV0IHR5cGVzIGluIGJpbmRpbmdzIGdlbmVyYXRvcnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzU0Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBm
YXN0L2pzL3dlYmlkbC10eXBlLW1hcHBpbmcuaHRtbCB0byBjb3ZlciBieXRlIGFuZCBvY3RldAor
ICAgICAgICBXZWIgSURMIHR5cGVzIHdpdGggYW5kIHdpdGhvdXQgW0VuZm9yY2VSYW5nZV0uCisK
KyAgICAgICAgKiBmYXN0L2pzL3dlYmlkbC10eXBlLW1hcHBpbmctZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGZhc3QvanMvd2ViaWRsLXR5cGUtbWFwcGluZy5odG1sOgorCiAyMDEzLTA2LTEyICBL
d2FuZyBZdWwgU2VvICA8c2t5dWxAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCBnYXJkZW5pbmcuIFVuc2tpcHBpbmcgcGFzc2luZyB0ZXN0cy4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvanMvd2ViaWRsLXR5cGUtbWFwcGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2pzL3dlYmlkbC10eXBlLW1hcHBpbmctZXhwZWN0ZWQudHh0CmluZGV4IGFlYzBh
YzEuLmUxM2QxMTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvanMvd2ViaWRsLXR5cGUt
bWFwcGluZy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy93ZWJpZGwtdHlw
ZS1tYXBwaW5nLWV4cGVjdGVkLnR4dApAQCAtNTQ2LDYgKzU0NiwyMDAgQEAgUEFTUyBjb252ZXJ0
ZXIudGVzdEVuZm9yY2VSYW5nZVVuc2lnbmVkTG9uZ0xvbmcgaXMgMAogUEFTUyBjb252ZXJ0ZXIu
dGVzdEVuZm9yY2VSYW5nZVVuc2lnbmVkTG9uZ0xvbmcgPSB1bmRlZmluZWQgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KIFBBU1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFu
Z2VVbnNpZ25lZExvbmdMb25nID0ge3ZhbHVlT2Y6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3Io
J2N1c3RvbScpO319IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogY3VzdG9tLgogCitQQVNTICd0ZXN0
Qnl0ZScgaW4gY29udmVydGVyIGlzIHRydWUKK1BBU1MgdHlwZW9mIGNvbnZlcnRlci50ZXN0Qnl0
ZSA9PT0gJ251bWJlcicgaXMgdHJ1ZQorY29udmVydGVyLnRlc3RCeXRlID0gMAorUEFTUyBjb252
ZXJ0ZXIudGVzdEJ5dGUgaXMgMAorY29udmVydGVyLnRlc3RCeXRlID0gLTEKK1BBU1MgY29udmVy
dGVyLnRlc3RCeXRlIGlzIC0xCitjb252ZXJ0ZXIudGVzdEJ5dGUgPSAxCitQQVNTIGNvbnZlcnRl
ci50ZXN0Qnl0ZSBpcyAxCitjb252ZXJ0ZXIudGVzdEJ5dGUgPSAweDdGCitQQVNTIGNvbnZlcnRl
ci50ZXN0Qnl0ZSBpcyAweDdGCitjb252ZXJ0ZXIudGVzdEJ5dGUgPSAweDgwCitQQVNTIGNvbnZl
cnRlci50ZXN0Qnl0ZSBpcyAtMHg4MAorY29udmVydGVyLnRlc3RCeXRlID0gLTB4N0YKK1BBU1Mg
Y29udmVydGVyLnRlc3RCeXRlIGlzIC0weDdGCitjb252ZXJ0ZXIudGVzdEJ5dGUgPSAtMHg4MAor
UEFTUyBjb252ZXJ0ZXIudGVzdEJ5dGUgaXMgLTB4ODAKK2NvbnZlcnRlci50ZXN0Qnl0ZSA9IC0w
eDgxCitQQVNTIGNvbnZlcnRlci50ZXN0Qnl0ZSBpcyAweDdGCitjb252ZXJ0ZXIudGVzdEJ5dGUg
PSBOdW1iZXIuTUlOX1ZBTFVFCitQQVNTIGNvbnZlcnRlci50ZXN0Qnl0ZSBpcyAwCitjb252ZXJ0
ZXIudGVzdEJ5dGUgPSAtTnVtYmVyLk1JTl9WQUxVRQorUEFTUyBjb252ZXJ0ZXIudGVzdEJ5dGUg
aXMgMAorY29udmVydGVyLnRlc3RCeXRlID0gTnVtYmVyLk1BWF9WQUxVRQorUEFTUyBjb252ZXJ0
ZXIudGVzdEJ5dGUgaXMgMAorY29udmVydGVyLnRlc3RCeXRlID0gLU51bWJlci5NQVhfVkFMVUUK
K1BBU1MgY29udmVydGVyLnRlc3RCeXRlIGlzIDAKK2NvbnZlcnRlci50ZXN0Qnl0ZSA9IDEuOTkK
K1BBU1MgY29udmVydGVyLnRlc3RCeXRlIGlzIDEKK2NvbnZlcnRlci50ZXN0Qnl0ZSA9IC0xLjk5
CitQQVNTIGNvbnZlcnRlci50ZXN0Qnl0ZSBpcyAtMQorY29udmVydGVyLnRlc3RCeXRlID0gSW5m
aW5pdHkKK1BBU1MgY29udmVydGVyLnRlc3RCeXRlIGlzIDAKK2NvbnZlcnRlci50ZXN0Qnl0ZSA9
IC1JbmZpbml0eQorUEFTUyBjb252ZXJ0ZXIudGVzdEJ5dGUgaXMgMAorY29udmVydGVyLnRlc3RC
eXRlID0gTmFOCitQQVNTIGNvbnZlcnRlci50ZXN0Qnl0ZSBpcyAwCitjb252ZXJ0ZXIudGVzdEJ5
dGUgPSBmYWxzZQorUEFTUyBjb252ZXJ0ZXIudGVzdEJ5dGUgaXMgMAorY29udmVydGVyLnRlc3RC
eXRlID0gdHJ1ZQorUEFTUyBjb252ZXJ0ZXIudGVzdEJ5dGUgaXMgMQorY29udmVydGVyLnRlc3RC
eXRlID0gJycKK1BBU1MgY29udmVydGVyLnRlc3RCeXRlIGlzIDAKK2NvbnZlcnRlci50ZXN0Qnl0
ZSA9ICcxJworUEFTUyBjb252ZXJ0ZXIudGVzdEJ5dGUgaXMgMQorY29udmVydGVyLnRlc3RCeXRl
ID0gJ2FiYycKK1BBU1MgY29udmVydGVyLnRlc3RCeXRlIGlzIDAKK2NvbnZlcnRlci50ZXN0Qnl0
ZSA9IG51bGwKK1BBU1MgY29udmVydGVyLnRlc3RCeXRlIGlzIDAKK2NvbnZlcnRlci50ZXN0Qnl0
ZSA9IHVuZGVmaW5lZAorUEFTUyBjb252ZXJ0ZXIudGVzdEJ5dGUgaXMgMAorUEFTUyBjb252ZXJ0
ZXIudGVzdEJ5dGUgPSB7dmFsdWVPZjpmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcignY3VzdG9t
Jyk7fX0gdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBjdXN0b20uCisKK1BBU1MgJ3Rlc3RFbmZvcmNl
UmFuZ2VCeXRlJyBpbiBjb252ZXJ0ZXIgaXMgdHJ1ZQorUEFTUyB0eXBlb2YgY29udmVydGVyLnRl
c3RFbmZvcmNlUmFuZ2VCeXRlID09PSAnbnVtYmVyJyBpcyB0cnVlCitjb252ZXJ0ZXIudGVzdEVu
Zm9yY2VSYW5nZUJ5dGUgPSAwCitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlQnl0ZSBp
cyAwCitjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUgPSAtMQorUEFTUyBjb252ZXJ0ZXIu
dGVzdEVuZm9yY2VSYW5nZUJ5dGUgaXMgLTEKK2NvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlQnl0
ZSA9IDEKK1BBU1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRlIGlzIDEKK2NvbnZlcnRl
ci50ZXN0RW5mb3JjZVJhbmdlQnl0ZSA9IDB4N0YKK1BBU1MgY29udmVydGVyLnRlc3RFbmZvcmNl
UmFuZ2VCeXRlIGlzIDB4N0YKK1BBU1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRlID0g
MHg4MCB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorY29udmVydGVyLnRl
c3RFbmZvcmNlUmFuZ2VCeXRlID0gLTB4N0YKK1BBU1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFu
Z2VCeXRlIGlzIC0weDdGCitjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUgPSAtMHg4MAor
UEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUgaXMgLTB4ODAKK1BBU1MgY29udmVy
dGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRlID0gLTB4ODEgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogVHlwZSBlcnJvci4KK2NvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlQnl0ZSA9IE51bWJlci5N
SU5fVkFMVUUKK1BBU1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRlIGlzIDAKK2NvbnZl
cnRlci50ZXN0RW5mb3JjZVJhbmdlQnl0ZSA9IC1OdW1iZXIuTUlOX1ZBTFVFCitQQVNTIGNvbnZl
cnRlci50ZXN0RW5mb3JjZVJhbmdlQnl0ZSBpcyAwCitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3Jj
ZVJhbmdlQnl0ZSA9IE51bWJlci5NQVhfVkFMVUUgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
VHlwZSBlcnJvci4KK1BBU1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRlID0gLU51bWJl
ci5NQVhfVkFMVUUgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK2NvbnZl
cnRlci50ZXN0RW5mb3JjZVJhbmdlQnl0ZSA9IDEuOTkKK1BBU1MgY29udmVydGVyLnRlc3RFbmZv
cmNlUmFuZ2VCeXRlIGlzIDEKK2NvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlQnl0ZSA9IC0xLjk5
CitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlQnl0ZSBpcyAtMQorUEFTUyBjb252ZXJ0
ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUgPSBJbmZpbml0eSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBUeXBlIGVycm9yLgorUEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUgPSAt
SW5maW5pdHkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgY29u
dmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRlID0gTmFOIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IFR5cGUgZXJyb3IuCitjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUgPSBmYWxzZQor
UEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUgaXMgMAorY29udmVydGVyLnRlc3RF
bmZvcmNlUmFuZ2VCeXRlID0gdHJ1ZQorUEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZUJ5
dGUgaXMgMQorY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRlID0gJycKK1BBU1MgY29udmVy
dGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRlIGlzIDAKK2NvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdl
Qnl0ZSA9ICcxJworUEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUgaXMgMQorUEFT
UyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUgPSAnYWJjJyB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBUeXBlIGVycm9yLgorY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRlID0g
bnVsbAorUEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUgaXMgMAorUEFTUyBjb252
ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUgPSB1bmRlZmluZWQgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRl
ID0ge3ZhbHVlT2Y6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoJ2N1c3RvbScpO319IHRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogY3VzdG9tLgorCitQQVNTICd0ZXN0T2N0ZXQnIGluIGNvbnZlcnRl
ciBpcyB0cnVlCitQQVNTIHR5cGVvZiBjb252ZXJ0ZXIudGVzdE9jdGV0ID09PSAnbnVtYmVyJyBp
cyB0cnVlCitjb252ZXJ0ZXIudGVzdE9jdGV0ID0gMAorUEFTUyBjb252ZXJ0ZXIudGVzdE9jdGV0
IGlzIDAKK2NvbnZlcnRlci50ZXN0T2N0ZXQgPSAtMQorUEFTUyBjb252ZXJ0ZXIudGVzdE9jdGV0
IGlzIDB4RkYKK2NvbnZlcnRlci50ZXN0T2N0ZXQgPSAxCitQQVNTIGNvbnZlcnRlci50ZXN0T2N0
ZXQgaXMgMQorY29udmVydGVyLnRlc3RPY3RldCA9IDB4N0YKK1BBU1MgY29udmVydGVyLnRlc3RP
Y3RldCBpcyAweDdGCitjb252ZXJ0ZXIudGVzdE9jdGV0ID0gMHg4MAorUEFTUyBjb252ZXJ0ZXIu
dGVzdE9jdGV0IGlzIDB4ODAKK2NvbnZlcnRlci50ZXN0T2N0ZXQgPSAweEZGCitQQVNTIGNvbnZl
cnRlci50ZXN0T2N0ZXQgaXMgMHhGRgorY29udmVydGVyLnRlc3RPY3RldCA9IDB4MTAwCitQQVNT
IGNvbnZlcnRlci50ZXN0T2N0ZXQgaXMgMAorY29udmVydGVyLnRlc3RPY3RldCA9IDB4MTAxCitQ
QVNTIGNvbnZlcnRlci50ZXN0T2N0ZXQgaXMgMQorY29udmVydGVyLnRlc3RPY3RldCA9IC0weDgw
CitQQVNTIGNvbnZlcnRlci50ZXN0T2N0ZXQgaXMgMHg4MAorY29udmVydGVyLnRlc3RPY3RldCA9
IC0weDgxCitQQVNTIGNvbnZlcnRlci50ZXN0T2N0ZXQgaXMgMHg3RgorY29udmVydGVyLnRlc3RP
Y3RldCA9IE51bWJlci5NQVhfVkFMVUUKK1BBU1MgY29udmVydGVyLnRlc3RPY3RldCBpcyAwCitj
b252ZXJ0ZXIudGVzdE9jdGV0ID0gTnVtYmVyLk1JTl9WQUxVRQorUEFTUyBjb252ZXJ0ZXIudGVz
dE9jdGV0IGlzIDAKK2NvbnZlcnRlci50ZXN0T2N0ZXQgPSAtTnVtYmVyLk1BWF9WQUxVRQorUEFT
UyBjb252ZXJ0ZXIudGVzdE9jdGV0IGlzIDAKK2NvbnZlcnRlci50ZXN0T2N0ZXQgPSAtTnVtYmVy
Lk1JTl9WQUxVRQorUEFTUyBjb252ZXJ0ZXIudGVzdE9jdGV0IGlzIDAKK2NvbnZlcnRlci50ZXN0
T2N0ZXQgPSAxLjk5CitQQVNTIGNvbnZlcnRlci50ZXN0T2N0ZXQgaXMgMQorY29udmVydGVyLnRl
c3RPY3RldCA9IC0xLjk5CitQQVNTIGNvbnZlcnRlci50ZXN0T2N0ZXQgaXMgMHhGRgorY29udmVy
dGVyLnRlc3RPY3RldCA9IEluZmluaXR5CitQQVNTIGNvbnZlcnRlci50ZXN0T2N0ZXQgaXMgMAor
Y29udmVydGVyLnRlc3RPY3RldCA9IC1JbmZpbml0eQorUEFTUyBjb252ZXJ0ZXIudGVzdE9jdGV0
IGlzIDAKK2NvbnZlcnRlci50ZXN0T2N0ZXQgPSBOYU4KK1BBU1MgY29udmVydGVyLnRlc3RPY3Rl
dCBpcyAwCitjb252ZXJ0ZXIudGVzdE9jdGV0ID0gZmFsc2UKK1BBU1MgY29udmVydGVyLnRlc3RP
Y3RldCBpcyAwCitjb252ZXJ0ZXIudGVzdE9jdGV0ID0gdHJ1ZQorUEFTUyBjb252ZXJ0ZXIudGVz
dE9jdGV0IGlzIDEKK2NvbnZlcnRlci50ZXN0T2N0ZXQgPSAnJworUEFTUyBjb252ZXJ0ZXIudGVz
dE9jdGV0IGlzIDAKK2NvbnZlcnRlci50ZXN0T2N0ZXQgPSAnMScKK1BBU1MgY29udmVydGVyLnRl
c3RPY3RldCBpcyAxCitjb252ZXJ0ZXIudGVzdE9jdGV0ID0gJ2FiYycKK1BBU1MgY29udmVydGVy
LnRlc3RPY3RldCBpcyAwCitjb252ZXJ0ZXIudGVzdE9jdGV0ID0gbnVsbAorUEFTUyBjb252ZXJ0
ZXIudGVzdE9jdGV0IGlzIDAKK2NvbnZlcnRlci50ZXN0T2N0ZXQgPSB1bmRlZmluZWQKK1BBU1Mg
Y29udmVydGVyLnRlc3RPY3RldCBpcyAwCitQQVNTIGNvbnZlcnRlci50ZXN0T2N0ZXQgPSB7dmFs
dWVPZjpmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcignY3VzdG9tJyk7fX0gdGhyZXcgZXhjZXB0
aW9uIEVycm9yOiBjdXN0b20uCisKK1BBU1MgJ3Rlc3RFbmZvcmNlUmFuZ2VPY3RldCcgaW4gY29u
dmVydGVyIGlzIHRydWUKK1BBU1MgdHlwZW9mIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0
ZXQgPT09ICdudW1iZXInIGlzIHRydWUKK2NvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0ZXQg
PSAwCitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0ZXQgaXMgMAorUEFTUyBjb252
ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZU9jdGV0ID0gLTEgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogVHlwZSBlcnJvci4KK2NvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0ZXQgPSAxCitQQVNT
IGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0ZXQgaXMgMQorY29udmVydGVyLnRlc3RFbmZv
cmNlUmFuZ2VPY3RldCA9IDB4N0YKK1BBU1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VPY3Rl
dCBpcyAweDdGCitjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZU9jdGV0ID0gMHg4MAorUEFTUyBj
b252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZU9jdGV0IGlzIDB4ODAKK2NvbnZlcnRlci50ZXN0RW5m
b3JjZVJhbmdlT2N0ZXQgPSAweEZGCitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0
ZXQgaXMgMHhGRgorUEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZU9jdGV0ID0gMHgxMDAg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgY29udmVydGVyLnRl
c3RFbmZvcmNlUmFuZ2VPY3RldCA9IDB4MTAxIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5
cGUgZXJyb3IuCitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0ZXQgPSAtMHg4MCB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBjb252ZXJ0ZXIudGVz
dEVuZm9yY2VSYW5nZU9jdGV0ID0gLTB4ODEgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlw
ZSBlcnJvci4KK1BBU1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VPY3RldCA9IE51bWJlci5N
QVhfVkFMVUUgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK2NvbnZlcnRl
ci50ZXN0RW5mb3JjZVJhbmdlT2N0ZXQgPSBOdW1iZXIuTUlOX1ZBTFVFCitQQVNTIGNvbnZlcnRl
ci50ZXN0RW5mb3JjZVJhbmdlT2N0ZXQgaXMgMAorUEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VS
YW5nZU9jdGV0ID0gLU51bWJlci5NQVhfVkFMVUUgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
VHlwZSBlcnJvci4KK2NvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0ZXQgPSAtTnVtYmVyLk1J
Tl9WQUxVRQorUEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZU9jdGV0IGlzIDAKK2NvbnZl
cnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0ZXQgPSAxLjk5CitQQVNTIGNvbnZlcnRlci50ZXN0RW5m
b3JjZVJhbmdlT2N0ZXQgaXMgMQorUEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZU9jdGV0
ID0gLTEuOTkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgY29u
dmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VPY3RldCA9IEluZmluaXR5IHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0
ZXQgPSAtSW5maW5pdHkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BB
U1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VPY3RldCA9IE5hTiB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBUeXBlIGVycm9yLgorY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VPY3RldCA9
IGZhbHNlCitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0ZXQgaXMgMAorY29udmVy
dGVyLnRlc3RFbmZvcmNlUmFuZ2VPY3RldCA9IHRydWUKK1BBU1MgY29udmVydGVyLnRlc3RFbmZv
cmNlUmFuZ2VPY3RldCBpcyAxCitjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZU9jdGV0ID0gJycK
K1BBU1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VPY3RldCBpcyAwCitjb252ZXJ0ZXIudGVz
dEVuZm9yY2VSYW5nZU9jdGV0ID0gJzEnCitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdl
T2N0ZXQgaXMgMQorUEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZU9jdGV0ID0gJ2FiYycg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK2NvbnZlcnRlci50ZXN0RW5m
b3JjZVJhbmdlT2N0ZXQgPSBudWxsCitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0
ZXQgaXMgMAorUEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZU9jdGV0ID0gdW5kZWZpbmVk
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIGNvbnZlcnRlci50
ZXN0RW5mb3JjZVJhbmdlT2N0ZXQgPSB7dmFsdWVPZjpmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJv
cignY3VzdG9tJyk7fX0gdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBjdXN0b20uCisKIFBBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9qcy93ZWJpZGwtdHlwZS1tYXBwaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2pzL3dlYmlkbC10eXBlLW1hcHBpbmcuaHRtbAppbmRleCBkODExZTVjLi5mOTc4ZDM5IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3dlYmlkbC10eXBlLW1hcHBpbmcuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3dlYmlkbC10eXBlLW1hcHBpbmcuaHRtbApAQCAtMzI1
LDUgKzMyNSwxMDEgQEAgdGVzdE5vbk51bWVyaWNUb051bWVyaWNFbmZvcmNlUmFuZ2UodHlwZSk7
CiBjb252ZXJ0VGhyb3dzKHR5cGUsICJ7dmFsdWVPZjpmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJv
cignY3VzdG9tJyk7fX0iKTsKIGRlYnVnKCIiKTsKIAordHlwZSA9ICJ0ZXN0Qnl0ZSI7Cit2ZXJp
ZnlBdHRyaWJ1dGUodHlwZSk7Citjb252ZXJ0KHR5cGUsICIwIik7Citjb252ZXJ0KHR5cGUsICIt
MSIpOworY29udmVydCh0eXBlLCAiMSIpOworY29udmVydCh0eXBlLCAiMHg3RiIpOworY29udmVy
dCh0eXBlLCAiMHg4MCIsICItMHg4MCIpOworY29udmVydCh0eXBlLCAiLTB4N0YiKTsKK2NvbnZl
cnQodHlwZSwgIi0weDgwIik7Citjb252ZXJ0KHR5cGUsICItMHg4MSIsICIweDdGIik7Citjb252
ZXJ0KHR5cGUsICJOdW1iZXIuTUlOX1ZBTFVFIiwgIjAiKTsKK2NvbnZlcnQodHlwZSwgIi1OdW1i
ZXIuTUlOX1ZBTFVFIiwgIjAiKTsKK2NvbnZlcnQodHlwZSwgIk51bWJlci5NQVhfVkFMVUUiLCAi
MCIpOworY29udmVydCh0eXBlLCAiLU51bWJlci5NQVhfVkFMVUUiLCAiMCIpOworY29udmVydCh0
eXBlLCAiMS45OSIsICIxIik7Citjb252ZXJ0KHR5cGUsICItMS45OSIsICItMSIpOworY29udmVy
dCh0eXBlLCAiSW5maW5pdHkiLCAiMCIpOworY29udmVydCh0eXBlLCAiLUluZmluaXR5IiwgIjAi
KTsKK2NvbnZlcnQodHlwZSwgIk5hTiIsICIwIik7Cit0ZXN0Tm9uTnVtZXJpY1RvTnVtZXJpYyh0
eXBlKTsKK2NvbnZlcnRUaHJvd3ModHlwZSwgInt2YWx1ZU9mOmZ1bmN0aW9uKCl7dGhyb3cgbmV3
IEVycm9yKCdjdXN0b20nKTt9fSIpOworZGVidWcoIiIpOworCit0eXBlID0gInRlc3RFbmZvcmNl
UmFuZ2VCeXRlIjsKK3ZlcmlmeUF0dHJpYnV0ZSh0eXBlKTsKK2NvbnZlcnQodHlwZSwgIjAiKTsK
K2NvbnZlcnQodHlwZSwgIi0xIik7Citjb252ZXJ0KHR5cGUsICIxIik7Citjb252ZXJ0KHR5cGUs
ICIweDdGIik7Citjb252ZXJ0VGhyb3dzKHR5cGUsICIweDgwIik7Citjb252ZXJ0KHR5cGUsICIt
MHg3RiIpOworY29udmVydCh0eXBlLCAiLTB4ODAiKTsKK2NvbnZlcnRUaHJvd3ModHlwZSwgIi0w
eDgxIik7Citjb252ZXJ0KHR5cGUsICJOdW1iZXIuTUlOX1ZBTFVFIiwgIjAiKTsKK2NvbnZlcnQo
dHlwZSwgIi1OdW1iZXIuTUlOX1ZBTFVFIiwgIjAiKTsKK2NvbnZlcnRUaHJvd3ModHlwZSwgIk51
bWJlci5NQVhfVkFMVUUiKTsKK2NvbnZlcnRUaHJvd3ModHlwZSwgIi1OdW1iZXIuTUFYX1ZBTFVF
Iik7Citjb252ZXJ0KHR5cGUsICIxLjk5IiwgIjEiKTsKK2NvbnZlcnQodHlwZSwgIi0xLjk5Iiwg
Ii0xIik7Citjb252ZXJ0VGhyb3dzKHR5cGUsICJJbmZpbml0eSIpOworY29udmVydFRocm93cyh0
eXBlLCAiLUluZmluaXR5Iik7Citjb252ZXJ0VGhyb3dzKHR5cGUsICJOYU4iKTsKK3Rlc3ROb25O
dW1lcmljVG9OdW1lcmljRW5mb3JjZVJhbmdlKHR5cGUpOworY29udmVydFRocm93cyh0eXBlLCAi
e3ZhbHVlT2Y6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoJ2N1c3RvbScpO319Iik7CitkZWJ1
ZygiIik7CisKK3R5cGUgPSAidGVzdE9jdGV0IjsKK3ZlcmlmeUF0dHJpYnV0ZSh0eXBlKTsKK2Nv
bnZlcnQodHlwZSwgIjAiKTsKK2NvbnZlcnQodHlwZSwgIi0xIiwgIjB4RkYiKTsKK2NvbnZlcnQo
dHlwZSwgIjEiKTsKK2NvbnZlcnQodHlwZSwgIjB4N0YiKTsKK2NvbnZlcnQodHlwZSwgIjB4ODAi
KTsKK2NvbnZlcnQodHlwZSwgIjB4RkYiKTsKK2NvbnZlcnQodHlwZSwgIjB4MTAwIiwgIjAiKTsK
K2NvbnZlcnQodHlwZSwgIjB4MTAxIiwgIjEiKTsKK2NvbnZlcnQodHlwZSwgIi0weDgwIiwgIjB4
ODAiKTsKK2NvbnZlcnQodHlwZSwgIi0weDgxIiwgIjB4N0YiKTsKK2NvbnZlcnQodHlwZSwgIk51
bWJlci5NQVhfVkFMVUUiLCAiMCIpOworY29udmVydCh0eXBlLCAiTnVtYmVyLk1JTl9WQUxVRSIs
ICIwIik7Citjb252ZXJ0KHR5cGUsICItTnVtYmVyLk1BWF9WQUxVRSIsICIwIik7Citjb252ZXJ0
KHR5cGUsICItTnVtYmVyLk1JTl9WQUxVRSIsICIwIik7Citjb252ZXJ0KHR5cGUsICIxLjk5Iiwg
IjEiKTsKK2NvbnZlcnQodHlwZSwgIi0xLjk5IiwgIjB4RkYiKTsKK2NvbnZlcnQodHlwZSwgIklu
ZmluaXR5IiwgIjAiKTsKK2NvbnZlcnQodHlwZSwgIi1JbmZpbml0eSIsICIwIik7Citjb252ZXJ0
KHR5cGUsICJOYU4iLCAiMCIpOwordGVzdE5vbk51bWVyaWNUb051bWVyaWModHlwZSk7Citjb252
ZXJ0VGhyb3dzKHR5cGUsICJ7dmFsdWVPZjpmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcignY3Vz
dG9tJyk7fX0iKTsKK2RlYnVnKCIiKTsKKwordHlwZSA9ICJ0ZXN0RW5mb3JjZVJhbmdlT2N0ZXQi
OwordmVyaWZ5QXR0cmlidXRlKHR5cGUpOworY29udmVydCh0eXBlLCAiMCIpOworY29udmVydFRo
cm93cyh0eXBlLCAiLTEiKTsKK2NvbnZlcnQodHlwZSwgIjEiKTsKK2NvbnZlcnQodHlwZSwgIjB4
N0YiKTsKK2NvbnZlcnQodHlwZSwgIjB4ODAiKTsKK2NvbnZlcnQodHlwZSwgIjB4RkYiKTsKK2Nv
bnZlcnRUaHJvd3ModHlwZSwgIjB4MTAwIik7Citjb252ZXJ0VGhyb3dzKHR5cGUsICIweDEwMSIp
OworY29udmVydFRocm93cyh0eXBlLCAiLTB4ODAiKTsKK2NvbnZlcnRUaHJvd3ModHlwZSwgIi0w
eDgxIik7Citjb252ZXJ0VGhyb3dzKHR5cGUsICJOdW1iZXIuTUFYX1ZBTFVFIik7Citjb252ZXJ0
KHR5cGUsICJOdW1iZXIuTUlOX1ZBTFVFIiwgIjAiKTsKK2NvbnZlcnRUaHJvd3ModHlwZSwgIi1O
dW1iZXIuTUFYX1ZBTFVFIik7Citjb252ZXJ0KHR5cGUsICItTnVtYmVyLk1JTl9WQUxVRSIsICIw
Iik7Citjb252ZXJ0KHR5cGUsICIxLjk5IiwgIjEiKTsKK2NvbnZlcnRUaHJvd3ModHlwZSwgIi0x
Ljk5Iik7Citjb252ZXJ0VGhyb3dzKHR5cGUsICJJbmZpbml0eSIpOworY29udmVydFRocm93cyh0
eXBlLCAiLUluZmluaXR5Iik7Citjb252ZXJ0VGhyb3dzKHR5cGUsICJOYU4iKTsKK3Rlc3ROb25O
dW1lcmljVG9OdW1lcmljRW5mb3JjZVJhbmdlKHR5cGUpOworY29udmVydFRocm93cyh0eXBlLCAi
e3ZhbHVlT2Y6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoJ2N1c3RvbScpO319Iik7CitkZWJ1
ZygiIik7CisKIDwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDI4MzhmMmUuLmRiMGM5OTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw0NyBAQAorMjAxMy0wNi0xMyAgQ2hyaXN0b3BoZSBEdW1leiAgPGNoLmR1bWV6
QHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgU3VwcG9ydCBieXRlIGFuZCBvY3RldCB0eXBl
cyBpbiBiaW5kaW5ncyBnZW5lcmF0b3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTc1NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgYnl0ZSBhbmQgb2N0ZXQgSURMIHR5cGVz
IHRvIHRoZSBiaW5kaW5ncworICAgICAgICBnZW5lcmF0b3I6CisgICAgICAgIGh0dHA6Ly9kZXYu
dzMub3JnLzIwMDYvd2ViYXBpL1dlYklETC8jaWRsLWJ5dGUKKyAgICAgICAgaHR0cDovL2Rldi53
My5vcmcvMjAwNi93ZWJhcGkvV2ViSURMLyNpZGwtb2N0ZXQKKworICAgICAgICBObyBuZXcgdGVz
dHMsIGNvdmVyZWQgYnkgZXhpc3RpbmcgbGF5b3V0IHRlc3RzIGFuZCBieSBuZXcKKyAgICAgICAg
YmluZGluZ3MgdGVzdHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb3ZlcmVkIGJ5IGJpbmRp
bmdzIHRlc3RzIGFuZDoKKyAgICAgICAgZmFzdC9qcy93ZWJpZGwtdHlwZS1tYXBwaW5nLmh0bWwK
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHA6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01CaW5kaW5nLmg6IEFkZCB0b0ludDgoKSAvIHRvVUludDgoKQorICAgICAg
ICBtZXRob2RzIHRvIGNvbnZlcnQgZnJvbSBKU1ZhbHVlIHRvIGludDhfdCAvIHVpbnQ4X3QgYXMK
KyAgICAgICAgc3BlY2lmaWVkIGJ5IFdlYiBJREwuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RhdGFWaWV3Q3VzdG9tLmNwcDogUmVtb3ZlIGN1c3RvbSBjb2RlIGZvcgorICAgICAgICBnZXRJ
bnQ4LCBnZXRVSW50OCwgc2V0SW50OCwgc2V0VUludDggbm93IHRoYXQgYnl0ZSBhbmQgb2N0ZXQK
KyAgICAgICAgdHlwZXMgYXJlIHN1cHBvcnRlZCBieSB0aGUgYmluZGluZ3MgZ2VuZXJhdG9yLgor
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yQ1BQLnBtOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG06CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09i
akMvRE9NVGVzdE9iai5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RP
TVRlc3RPYmoubW06CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRs
OiBBZGQgdGVzdHMgZm9yIGJ5dGUgYW5kIG9jdGV0IHR5cGVzLgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL0RhdGFWaWV3LmlkbDogUmVtb3ZlIFtDdXN0b21dIGV4dGVuZGVkIGF0dHJpYnV0ZSBmb3IK
KyAgICAgICAgZ2V0SW50OCwgZ2V0VUludDgsIHNldEludDgsIHNldFVJbnQ4IGFuZCB1c2UgbmV3
bHkgc3VwcG9ydGVkIGJ5dGUgLyBvY3RldAorICAgICAgICB0eXBlcy4KKwogMjAxMy0wNi0xMiAg
Q2hyaXN0b3BoZSBEdW1leiAgPGNoLmR1bWV6QHNpc2Euc2Ftc3VuZy5jb20+CiAKICAgICAgICAg
U3VwcG9ydCBsYXRlc3QgV2ViIElETCBpbmRleGVkIHByb3BlcnR5IGdldHRlcnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCmluZGV4IDY3MjY3ZDAuLjcwNmNk
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcApAQCAt
MzksNiArMzksNyBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KICNpbmNsdWRlIDxydW50
aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTRnVuY3Rpb24uaD4K
KyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCkBA
IC0yODYsNiArMjg3LDkgQEAgU3RydWN0dXJlKiBjYWNoZURPTVN0cnVjdHVyZShKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHUKICAgICByZXR1cm4gc3Ry
dWN0dXJlcy5zZXQoY2xhc3NJbmZvLCBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPihnbG9iYWxPYmpl
Y3QtPnZtKCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKSkuaXRlcmF0b3ItPnZhbHVlLmdldCgp
OwogfQogCitzdGF0aWMgY29uc3QgaW50OF90IGtNYXhJbnQ4ID0gMTI3Oworc3RhdGljIGNvbnN0
IGludDhfdCBrTWluSW50OCA9IC0xMjg7CitzdGF0aWMgY29uc3QgdWludDhfdCBrTWF4VUludDgg
PSAyNTU7CiBzdGF0aWMgY29uc3QgaW50MzJfdCBrTWF4SW50MzIgPSAweDdmZmZmZmZmOwogc3Rh
dGljIGNvbnN0IGludDMyX3Qga01pbkludDMyID0gLWtNYXhJbnQzMiAtIDE7CiBzdGF0aWMgY29u
c3QgdWludDMyX3Qga01heFVJbnQzMiA9IDB4ZmZmZmZmZmZVOwpAQCAtMzA1LDYgKzMwOSw0MiBA
QCBzdGF0aWMgZG91YmxlIGVuZm9yY2VSYW5nZShFeGVjU3RhdGUqIGV4ZWMsIGRvdWJsZSB4LCBk
b3VibGUgbWluaW11bSwgZG91YmxlIG1heAogICAgIHJldHVybiB4OwogfQogCisvLyBodHRwOi8v
d3d3LnczLm9yZy9UUi9XZWJJREwvI2VzLWJ5dGUKK2ludDhfdCB0b0ludDgoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHZhbHVlLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24gY29uZmln
dXJhdGlvbikKK3sKKyAgICBkb3VibGUgeCA9IHZhbHVlLnRvTnVtYmVyKGV4ZWMpOworICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoY29u
ZmlndXJhdGlvbiA9PSBFbmZvcmNlUmFuZ2UpCisgICAgICAgIHJldHVybiBlbmZvcmNlUmFuZ2Uo
ZXhlYywgeCwga01pbkludDgsIGtNYXhJbnQ4KTsKKworICAgIGlmIChzdGQ6OmlzbmFuKHgpIHx8
IHN0ZDo6aXNpbmYoeCkgfHwgIXgpCisgICAgICAgIHJldHVybiAwOworCisgICAgeCA9IHggPCAw
ID8gLWZsb29yKGFicyh4KSkgOiBmbG9vcihhYnMoeCkpOworICAgIHggPSBmbW9kKHgsIDI1Nik7
IC8vIDJeOC4KKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ4X3Q+KHggPiBrTWF4SW50OCA/
IHggLSAyNTYgOiB4KTsKK30KKworLy8gaHR0cDovL3d3dy53My5vcmcvVFIvV2ViSURMLyNlcy1v
Y3RldAordWludDhfdCB0b1VJbnQ4KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgSW50
ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pCit7CisgICAgZG91Ymxl
IHggPSB2YWx1ZS50b051bWJlcihleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKGNvbmZpZ3VyYXRpb24gPT0gRW5mb3JjZVJh
bmdlKQorICAgICAgICByZXR1cm4gZW5mb3JjZVJhbmdlKGV4ZWMsIHgsIDAsIGtNYXhVSW50OCk7
CisKKyAgICBpZiAoc3RkOjppc25hbih4KSB8fCBzdGQ6OmlzaW5mKHgpIHx8ICF4KQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIHggPSB4IDwgMCA/IC1mbG9vcihhYnMoeCkpIDogZmxvb3IoYWJz
KHgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDhfdD4oZm1vZCh4LCAyNTYpKTsgLy8g
Ml44LgorfQorCiAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9XZWJJREwvI2VzLWxvbmcKIGludDMy
X3QgdG9JbnQzMkVuZm9yY2VSYW5nZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCmluZGV4IDQ0ODQ0MDQu
LjkyZWNjYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCkBA
IC0yNjcsNiArMjY3LDkgQEAgY2xhc3MgRE9NU3RyaW5nTGlzdDsKICAgICBpbnQzMl90IHRvSW50
MzJFbmZvcmNlUmFuZ2UoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUpOwogICAgIHVpbnQz
Ml90IHRvVUludDMyRW5mb3JjZVJhbmdlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlKTsK
IAorICAgIGludDhfdCB0b0ludDgoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEludGVn
ZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbik7CisgICAgdWludDhfdCB0b1VJbnQ4KEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24pOwor
CiAgICAgLyoKICAgICAgICAgQ29udmVydCBhIHZhbHVlIHRvIGFuIGludGVnZXIgYXMgcGVyIDxo
dHRwOi8vd3d3LnczLm9yZy9UUi9XZWJJREwvPi4KICAgICAgICAgVGhlIGNvbnZlcnNpb24gZmFp
bHMgaWYgdGhlIHZhbHVlIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gYSBudW1iZXIgb3IsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFWaWV3Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YVZpZXdDdXN0b20uY3BwCmluZGV4IDYw
NGNiMTAuLjIzNjQxZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RGF0YVZpZXdDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0
YVZpZXdDdXN0b20uY3BwCkBAIC0zNiw4ICszNiw2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gRGF0YVZpZXdBY2Nlc3NUeXBlIHsKLSAgICBBY2Nl
c3NEYXRhVmlld01lbWJlckFzSW50OCwKLSAgICBBY2Nlc3NEYXRhVmlld01lbWJlckFzVWludDgs
CiAgICAgQWNjZXNzRGF0YVZpZXdNZW1iZXJBc0Zsb2F0MzIsCiAgICAgQWNjZXNzRGF0YVZpZXdN
ZW1iZXJBc0Zsb2F0NjQKIH07CkBAIC04MCwxMiArNzgsNiBAQCBzdGF0aWMgSlNWYWx1ZSBnZXRE
YXRhVmlld01lbWJlcihFeGVjU3RhdGUqIGV4ZWMsIERhdGFWaWV3KiBpbXAsIERhdGFWaWV3QWNj
ZXNzVAogCiAgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdDsKICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAg
ICBjYXNlIEFjY2Vzc0RhdGFWaWV3TWVtYmVyQXNJbnQ4OgotICAgICAgICByZXN1bHQgPSBqc051
bWJlcihpbXAtPmdldEludDgoYnl0ZU9mZnNldCwgZWMpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBBY2Nlc3NEYXRhVmlld01lbWJlckFzVWludDg6Ci0gICAgICAgIHJlc3VsdCA9IGpzTnVt
YmVyKGltcC0+Z2V0VWludDgoYnl0ZU9mZnNldCwgZWMpKTsKLSAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBBY2Nlc3NEYXRhVmlld01lbWJlckFzRmxvYXQzMjoKICAgICBjYXNlIEFjY2Vzc0RhdGFW
aWV3TWVtYmVyQXNGbG9hdDY0OiB7CiAgICAgICAgIGRvdWJsZSB2YWx1ZSA9ICh0eXBlID09IEFj
Y2Vzc0RhdGFWaWV3TWVtYmVyQXNGbG9hdDMyKSA/IGltcC0+Z2V0RmxvYXQzMihieXRlT2Zmc2V0
LCBsaXR0bGVFbmRpYW4sIGVjKSA6IGltcC0+Z2V0RmxvYXQ2NChieXRlT2Zmc2V0LCBsaXR0bGVF
bmRpYW4sIGVjKTsKQEAgLTk5LDE2ICs5MSw2IEBAIHN0YXRpYyBKU1ZhbHVlIGdldERhdGFWaWV3
TWVtYmVyKEV4ZWNTdGF0ZSogZXhlYywgRGF0YVZpZXcqIGltcCwgRGF0YVZpZXdBY2Nlc3NUCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotSlNWYWx1ZSBKU0RhdGFWaWV3OjpnZXRJbnQ4KEV4ZWNT
dGF0ZSogZXhlYykKLXsKLSAgICByZXR1cm4gZ2V0RGF0YVZpZXdNZW1iZXIoZXhlYywgc3RhdGlj
X2Nhc3Q8RGF0YVZpZXcqPihpbXBsKCkpLCBBY2Nlc3NEYXRhVmlld01lbWJlckFzSW50OCk7Ci19
Ci0KLUpTVmFsdWUgSlNEYXRhVmlldzo6Z2V0VWludDgoRXhlY1N0YXRlKiBleGVjKQotewotICAg
IHJldHVybiBnZXREYXRhVmlld01lbWJlcihleGVjLCBzdGF0aWNfY2FzdDxEYXRhVmlldyo+KGlt
cGwoKSksIEFjY2Vzc0RhdGFWaWV3TWVtYmVyQXNVaW50OCk7Ci19Ci0KIEpTVmFsdWUgSlNEYXRh
Vmlldzo6Z2V0RmxvYXQzMihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgcmV0dXJuIGdldERhdGFW
aWV3TWVtYmVyKGV4ZWMsIHN0YXRpY19jYXN0PERhdGFWaWV3Kj4oaW1wbCgpKSwgQWNjZXNzRGF0
YVZpZXdNZW1iZXJBc0Zsb2F0MzIpOwpAQCAtMTE5LDQxICsxMDEsNCBAQCBKU1ZhbHVlIEpTRGF0
YVZpZXc6OmdldEZsb2F0NjQoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBnZXREYXRhVmll
d01lbWJlcihleGVjLCBzdGF0aWNfY2FzdDxEYXRhVmlldyo+KGltcGwoKSksIEFjY2Vzc0RhdGFW
aWV3TWVtYmVyQXNGbG9hdDY0KTsKIH0KIAotc3RhdGljIEpTVmFsdWUgc2V0RGF0YVZpZXdNZW1i
ZXIoRXhlY1N0YXRlKiBleGVjLCBEYXRhVmlldyogaW1wLCBEYXRhVmlld0FjY2Vzc1R5cGUgdHlw
ZSkKLXsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikKLSAgICAgICAgcmV0dXJu
IHRocm93RXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwot
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQgPSBleGVj
LT5hcmd1bWVudCgwKS50b1VJbnQzMihleGVjKTsKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIGludCB2YWx1ZSA9IGV4ZWMt
PmFyZ3VtZW50KDEpLnRvSW50MzIoZXhlYyk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICAgICAgCi0gICAgc3dpdGNoICh0
eXBlKSB7Ci0gICAgY2FzZSBBY2Nlc3NEYXRhVmlld01lbWJlckFzSW50ODoKLSAgICAgICAgaW1w
LT5zZXRJbnQ4KGJ5dGVPZmZzZXQsIHN0YXRpY19jYXN0PGludDhfdD4odmFsdWUpLCBlYyk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQWNjZXNzRGF0YVZpZXdNZW1iZXJBc1VpbnQ4OgotICAg
ICAgICBpbXAtPnNldFVpbnQ4KGJ5dGVPZmZzZXQsIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHZhbHVl
KSwgZWMpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHNldERPTUV4Y2VwdGlvbihl
eGVjLCBlYyk7Ci0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KLUpTVmFsdWUgSlNEYXRh
Vmlldzo6c2V0SW50OChFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgcmV0dXJuIHNldERhdGFWaWV3
TWVtYmVyKGV4ZWMsIHN0YXRpY19jYXN0PERhdGFWaWV3Kj4oaW1wbCgpKSwgQWNjZXNzRGF0YVZp
ZXdNZW1iZXJBc0ludDgpOwotfQotCi1KU1ZhbHVlIEpTRGF0YVZpZXc6OnNldFVpbnQ4KEV4ZWNT
dGF0ZSogZXhlYykKLXsKLSAgICByZXR1cm4gc2V0RGF0YVZpZXdNZW1iZXIoZXhlYywgc3RhdGlj
X2Nhc3Q8RGF0YVZpZXcqPihpbXBsKCkpLCBBY2Nlc3NEYXRhVmlld01lbWJlckFzVWludDgpOwot
fQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JDUFAucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JDUFAucG0KaW5kZXggMjNmODNkNC4uZGYxZmMyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
Q1BQLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckNQUC5wbQpAQCAtMjM2LDYgKzIzNiw4IEBAIHN1YiBHZXRDUFBUeXBlCiAgICAgbXkgJHVzZUNv
bnN0UmVmZXJlbmNlID0gc2hpZnQ7CiAgICAgbXkgJG5hbWUgPSBHZXRDbGFzc05hbWUoJHR5cGUp
OwogCisgICAgcmV0dXJuICJjaGFyIiBpZiAkdHlwZSBlcSAiYnl0ZSI7CisgICAgcmV0dXJuICJ1
bnNpZ25lZCBjaGFyIiBpZiAkdHlwZSBlcSAib2N0ZXQiOwogICAgIHJldHVybiAiaW50IiBpZiAk
dHlwZSBlcSAibG9uZyI7CiAgICAgcmV0dXJuICJ1bnNpZ25lZCIgaWYgJG5hbWUgZXEgInVuc2ln
bmVkIGxvbmciOwogICAgIHJldHVybiAidW5zaWduZWQgc2hvcnQiIGlmICR0eXBlIGVxICJDb21w
YXJlSG93IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckdPYmplY3QucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JHT2JqZWN0LnBtCmluZGV4IGNmMGI3NDQuLjU1YjA1ZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0K
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVj
dC5wbQpAQCAtMzI4LDYgKzMyOCw4IEBAIHN1YiBHZXRHVmFsdWVUeXBlTmFtZSB7CiAgICAgICAg
ICAgICAgICAgICJjaGFyIiwgImNoYXIiLAogICAgICAgICAgICAgICAgICAibG9uZyIsICJsb25n
IiwKICAgICAgICAgICAgICAgICAgImxvbmcgbG9uZyIsICJpbnQ2NCIsCisgICAgICAgICAgICAg
ICAgICJieXRlIiwgImludDgiLAorICAgICAgICAgICAgICAgICAib2N0ZXQiLCAidWludDgiLAog
ICAgICAgICAgICAgICAgICAic2hvcnQiLCAiaW50IiwKICAgICAgICAgICAgICAgICAgInVjaGFy
IiwgInVjaGFyIiwKICAgICAgICAgICAgICAgICAgInVuc2lnbmVkIiwgInVpbnQiLApAQCAtMzU0
LDYgKzM1Niw4IEBAIHN1YiBHZXRHbGliVHlwZU5hbWUgewogICAgICAgICAgICAgICAgICAiY2hh
ciIsICJnY2hhciIsCiAgICAgICAgICAgICAgICAgICJsb25nIiwgImdsb25nIiwKICAgICAgICAg
ICAgICAgICAgImxvbmcgbG9uZyIsICJnaW50NjQiLAorICAgICAgICAgICAgICAgICAiYnl0ZSIs
ICJnaW50OCIsCisgICAgICAgICAgICAgICAgICJvY3RldCIsICJndWludDgiLAogICAgICAgICAg
ICAgICAgICAic2hvcnQiLCAiZ3Nob3J0IiwKICAgICAgICAgICAgICAgICAgInVjaGFyIiwgImd1
Y2hhciIsCiAgICAgICAgICAgICAgICAgICJ1bnNpZ25lZCIsICJndWludCIsCkBAIC0zOTYsOCAr
NDAwLDkgQEAgc3ViIEdldFdyaXRlYWJsZVByb3BlcnRpZXMgewogICAgICAgICBteSAkZ3R5cGUg
PSBHZXRHVmFsdWVUeXBlTmFtZSgkcHJvcGVydHktPnNpZ25hdHVyZS0+dHlwZSk7CiAgICAgICAg
IG15ICRoYXNHdHlwZVNpZ25hdHVyZSA9ICgkZ3R5cGUgZXEgImJvb2xlYW4iIHx8ICRndHlwZSBl
cSAiZmxvYXQiIHx8ICRndHlwZSBlcSAiZG91YmxlIiB8fAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJGd0eXBlIGVxICJ1aW50NjQiIHx8ICRndHlwZSBlcSAidWxvbmciIHx8ICRn
dHlwZSBlcSAibG9uZyIgfHwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZ3R5
cGUgZXEgInVpbnQiIHx8ICRndHlwZSBlcSAidXNob3J0IiB8fCAkZ3R5cGUgZXEgInVjaGFyIiB8
fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGd0eXBlIGVxICJjaGFyIiB8fCAk
Z3R5cGUgZXEgInN0cmluZyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGd0
eXBlIGVxICJ1aW50IiB8fCAkZ3R5cGUgZXEgInVzaG9ydCIgfHwgJGd0eXBlIGVxICJpbnQ4IiB8
fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGd0eXBlIGVxICJ1aW50OCIgfHwg
JGd0eXBlIGVxICJ1Y2hhciIgfHwgJGd0eXBlIGVxICJjaGFyIiB8fAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJGd0eXBlIGVxICJzdHJpbmciKTsKICAgICAgICAgIyBGSVhNRTog
V2UgYXJlIG5vdCBnZW5lcmF0aW5nIHNldHRlcnMgZm9yICdSZXBsYWNlYWJsZScKICAgICAgICAg
IyBhdHRyaWJ1dGVzIG5vdywgYnV0IHdlIHNob3VsZCBzb21laG93LgogICAgICAgICBteSAkcmVw
bGFjZWFibGUgPSAkcHJvcGVydHktPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlJl
cGxhY2VhYmxlIn07CkBAIC01NjgsNiArNTczLDcgQEAgc3ViIEdlbmVyYXRlUHJvcGVydHkgewog
ICAgIHB1c2goQHR4dEdldFByb3BzLCAiICAgICAgICBicmVhaztcbiAgICB9XG4iKTsKIAogICAg
IG15ICVwYXJhbV9zcGVjX29wdGlvbnMgPSAoImludCIsICJHX01JTklOVCwgLyogbWluICovXG5H
X01BWElOVCwgLyogbWF4ICovXG4wLCAvKiBkZWZhdWx0ICovIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJpbnQ4IiwgIkdfTUlOSU5UOCwgLyogbWluICovXG5HX01BWElOVDgsIC8q
IG1heCAqL1xuMCwgLyogZGVmYXVsdCAqLyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiYm9vbGVhbiIsICJGQUxTRSwgLyogZGVmYXVsdCAqLyIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiZmxvYXQiLCAiLUdfTUFYRkxPQVQsIC8qIG1pbiAqL1xuR19NQVhGTE9BVCwg
LyogbWF4ICovXG4wLjAsIC8qIGRlZmF1bHQgKi8iLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImRvdWJsZSIsICItR19NQVhET1VCTEUsIC8qIG1pbiAqL1xuR19NQVhET1VCTEUsIC8q
IG1heCAqL1xuMC4wLCAvKiBkZWZhdWx0ICovIiwKQEAgLTU3Niw2ICs1ODIsNyBAQCBzdWIgR2Vu
ZXJhdGVQcm9wZXJ0eSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW50NjQiLCAi
R19NSU5JTlQ2NCwgLyogbWluICovXG5HX01BWElOVDY0LCAvKiBtYXggKi9cbjAsIC8qIGRlZmF1
bHQgKi8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVsb25nIiwgIjAsIC8qIG1p
biAqL1xuR19NQVhVTE9ORywgLyogbWF4ICovXG4wLCAvKiBkZWZhdWx0ICovIiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJ1aW50IiwgIjAsIC8qIG1pbiAqL1xuR19NQVhVSU5ULCAv
KiBtYXggKi9cbjAsIC8qIGRlZmF1bHQgKi8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInVpbnQ4IiwgIjAsIC8qIG1pbiAqL1xuR19NQVhVSU5UOCwgLyogbWF4ICovXG4wLCAvKiBk
ZWZhdWx0ICovIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2hvcnQiLCAiMCwg
LyogbWluICovXG5HX01BWFVJTlQxNiwgLyogbWF4ICovXG4wLCAvKiBkZWZhdWx0ICovIiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1Y2hhciIsICJHX01JTklOVDgsIC8qIG1pbiAq
L1xuR19NQVhJTlQ4LCAvKiBtYXggKi9cbjAsIC8qIGRlZmF1bHQgKi8iLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImNoYXIiLCAiMCwgLyogbWluICovXG5HX01BWFVJTlQ4LCAvKiBt
YXggKi9cbjAsIC8qIGRlZmF1bHQgKi8iLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAxZjMzYzIxLi4zMTFhMGQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQpAQCAtMzM3NSw2ICszMzc1LDggQEAgbXkgJW5hdGl2ZVR5cGUgPSAoCiAgICAgInVuc2lnbmVk
IHNob3J0IiA9PiAidW5zaWduZWQgc2hvcnQiLAogICAgICJsb25nIGxvbmciID0+ICJsb25nIGxv
bmciLAogICAgICJ1bnNpZ25lZCBsb25nIGxvbmciID0+ICJ1bnNpZ25lZCBsb25nIGxvbmciLAor
ICAgICJieXRlIiA9PiAiaW50OF90IiwKKyAgICAib2N0ZXQiID0+ICJ1aW50OF90IiwKICAgICAi
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciIgPT4gIlJlZlB0cjxNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
PiIsCiAgICAgIkRPTVRpbWVTdGFtcCIgPT4gIkRPTVRpbWVTdGFtcCIsICAgIAogKTsKQEAgLTM0
NzksNiArMzQ4MSw4IEBAIHN1YiBKU1ZhbHVlVG9OYXRpdmUKICAgICByZXR1cm4gIiR2YWx1ZS50
b0Zsb2F0KGV4ZWMpIiBpZiAkdHlwZSBlcSAiZmxvYXQiOwogCiAgICAgbXkgJGludENvbnZlcnNp
b24gPSAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRW5mb3JjZVJhbmdlIn0gPyAi
RW5mb3JjZVJhbmdlIiA6ICJOb3JtYWxDb252ZXJzaW9uIjsKKyAgICByZXR1cm4gInRvSW50OChl
eGVjLCAkdmFsdWUsICRpbnRDb252ZXJzaW9uKSIgaWYgJHR5cGUgZXEgImJ5dGUiOworICAgIHJl
dHVybiAidG9VSW50OChleGVjLCAkdmFsdWUsICRpbnRDb252ZXJzaW9uKSIgaWYgJHR5cGUgZXEg
Im9jdGV0IjsKICAgICByZXR1cm4gInRvSW50MzIoZXhlYywgJHZhbHVlLCAkaW50Q29udmVyc2lv
bikiIGlmICR0eXBlIGVxICJsb25nIiBvciAkdHlwZSBlcSAic2hvcnQiOwogICAgIHJldHVybiAi
dG9VSW50MzIoZXhlYywgJHZhbHVlLCAkaW50Q29udmVyc2lvbikiIGlmICR0eXBlIGVxICJ1bnNp
Z25lZCBsb25nIiBvciAkdHlwZSBlcSAidW5zaWduZWQgc2hvcnQiOwogICAgIHJldHVybiAidG9J
bnQ2NChleGVjLCAkdmFsdWUsICRpbnRDb252ZXJzaW9uKSIgaWYgJHR5cGUgZXEgImxvbmcgbG9u
ZyI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JPYmpDLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yT2JqQy5wbQppbmRleCA3OGI3YzczLi4yOWIxMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0KQEAgLTMwMiw2ICsz
MDIsOCBAQCBzdWIgR2V0Q2xhc3NOYW1lCiAgICAgcmV0dXJuICJOU1N0cmluZyIgaWYgJGNvZGVH
ZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgkbmFtZSkgb3IgJG5hbWUgZXEgIlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSI7CiAgICAgcmV0dXJuICJOUyRuYW1lIiBpZiBJc05hdGl2ZU9iakNUeXBlKCRuYW1l
KTsKICAgICByZXR1cm4gIkJPT0wiIGlmICRuYW1lIGVxICJib29sZWFuIjsKKyAgICByZXR1cm4g
InVuc2lnbmVkIGNoYXIiIGlmICRuYW1lIGVxICJvY3RldCI7CisgICAgcmV0dXJuICJjaGFyIiBp
ZiAkbmFtZSBlcSAiYnl0ZSI7CiAgICAgcmV0dXJuICJ1bnNpZ25lZCIgaWYgJG5hbWUgZXEgInVu
c2lnbmVkIGxvbmciOwogICAgIHJldHVybiAiaW50IiBpZiAkbmFtZSBlcSAibG9uZyI7CiAgICAg
cmV0dXJuICJOU1RpbWVJbnRlcnZhbCIgaWYgJG5hbWUgZXEgIkRhdGUiOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9i
ai5jcHAKaW5kZXggOWQ2MzA4My4uZmU1NTQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwCkBAIC0x
MTYsNiArMTE2LDM4IEBAIFdlYkRPTVRlc3RPYmogV2ViRE9NVGVzdE9iajo6cmVhZE9ubHlUZXN0
T2JqQXR0cigpIGNvbnN0CiAgICAgcmV0dXJuIHRvV2ViS2l0KFdURjo6Z2V0UHRyKGltcGwoKS0+
cmVhZE9ubHlUZXN0T2JqQXR0cigpKSk7CiB9CiAKK2NoYXIgV2ViRE9NVGVzdE9iajo6Ynl0ZUF0
dHIoKSBjb25zdAoreworICAgIGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm4gY2hhcigpOwor
CisgICAgcmV0dXJuIGltcGwoKS0+Ynl0ZUF0dHIoKTsKK30KKwordm9pZCBXZWJET01UZXN0T2Jq
OjpzZXRCeXRlQXR0cihjaGFyIG5ld0J5dGVBdHRyKQoreworICAgIGlmICghaW1wbCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpbXBsKCktPnNldEJ5dGVBdHRyKG5ld0J5dGVBdHRyKTsKK30K
KwordW5zaWduZWQgY2hhciBXZWJET01UZXN0T2JqOjpvY3RldEF0dHIoKSBjb25zdAoreworICAg
IGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm4gdW5zaWduZWQgY2hhcigpOworCisgICAgcmV0
dXJuIGltcGwoKS0+b2N0ZXRBdHRyKCk7Cit9CisKK3ZvaWQgV2ViRE9NVGVzdE9iajo6c2V0T2N0
ZXRBdHRyKHVuc2lnbmVkIGNoYXIgbmV3T2N0ZXRBdHRyKQoreworICAgIGlmICghaW1wbCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpbXBsKCktPnNldE9jdGV0QXR0cihuZXdPY3RldEF0dHIp
OworfQorCiBzaG9ydCBXZWJET01UZXN0T2JqOjpzaG9ydEF0dHIoKSBjb25zdAogewogICAgIGlm
ICghaW1wbCgpKQpAQCAtNzQ5LDYgKzc4MSwzOCBAQCB2b2lkIFdlYkRPTVRlc3RPYmo6OnZvaWRN
ZXRob2RXaXRoQXJncyhpbnQgbG9uZ0FyZywgY29uc3QgV2ViRE9NU3RyaW5nJiBzdHJBcmcsCiAg
ICAgaW1wbCgpLT52b2lkTWV0aG9kV2l0aEFyZ3MobG9uZ0FyZywgc3RyQXJnLCB0b1dlYkNvcmUo
b2JqQXJnKSk7CiB9CiAKK2NoYXIgV2ViRE9NVGVzdE9iajo6Ynl0ZU1ldGhvZCgpCit7CisgICAg
aWYgKCFpbXBsKCkpCisgICAgICAgIHJldHVybiBjaGFyKCk7CisKKyAgICByZXR1cm4gaW1wbCgp
LT5ieXRlTWV0aG9kKCk7Cit9CisKK2NoYXIgV2ViRE9NVGVzdE9iajo6Ynl0ZU1ldGhvZFdpdGhB
cmdzKGNoYXIgYnl0ZUFyZywgY29uc3QgV2ViRE9NU3RyaW5nJiBzdHJBcmcsIGNvbnN0IFdlYkRP
TVRlc3RPYmomIG9iakFyZykKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuIGNo
YXIoKTsKKworICAgIHJldHVybiBpbXBsKCktPmJ5dGVNZXRob2RXaXRoQXJncyhieXRlQXJnLCBz
dHJBcmcsIHRvV2ViQ29yZShvYmpBcmcpKTsKK30KKwordW5zaWduZWQgY2hhciBXZWJET01UZXN0
T2JqOjpvY3RldE1ldGhvZCgpCit7CisgICAgaWYgKCFpbXBsKCkpCisgICAgICAgIHJldHVybiB1
bnNpZ25lZCBjaGFyKCk7CisKKyAgICByZXR1cm4gaW1wbCgpLT5vY3RldE1ldGhvZCgpOworfQor
Cit1bnNpZ25lZCBjaGFyIFdlYkRPTVRlc3RPYmo6Om9jdGV0TWV0aG9kV2l0aEFyZ3ModW5zaWdu
ZWQgY2hhciBvY3RldEFyZywgY29uc3QgV2ViRE9NU3RyaW5nJiBzdHJBcmcsIGNvbnN0IFdlYkRP
TVRlc3RPYmomIG9iakFyZykKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuIHVu
c2lnbmVkIGNoYXIoKTsKKworICAgIHJldHVybiBpbXBsKCktPm9jdGV0TWV0aG9kV2l0aEFyZ3Mo
b2N0ZXRBcmcsIHN0ckFyZywgdG9XZWJDb3JlKG9iakFyZykpOworfQorCiBpbnQgV2ViRE9NVGVz
dE9iajo6bG9uZ01ldGhvZCgpCiB7CiAgICAgaWYgKCFpbXBsKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oCmlu
ZGV4IGJiZDFkZmIuLjU1ZWI2OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oCkBAIC03MSw2ICs3MSwxMCBA
QCBwdWJsaWM6CiAgICAgaW50IHJlYWRPbmx5TG9uZ0F0dHIoKSBjb25zdDsKICAgICBXZWJET01T
dHJpbmcgcmVhZE9ubHlTdHJpbmdBdHRyKCkgY29uc3Q7CiAgICAgV2ViRE9NVGVzdE9iaiByZWFk
T25seVRlc3RPYmpBdHRyKCkgY29uc3Q7CisgICAgY2hhciBieXRlQXR0cigpIGNvbnN0OworICAg
IHZvaWQgc2V0Qnl0ZUF0dHIoY2hhcik7CisgICAgdW5zaWduZWQgY2hhciBvY3RldEF0dHIoKSBj
b25zdDsKKyAgICB2b2lkIHNldE9jdGV0QXR0cih1bnNpZ25lZCBjaGFyKTsKICAgICBzaG9ydCBz
aG9ydEF0dHIoKSBjb25zdDsKICAgICB2b2lkIHNldFNob3J0QXR0cihzaG9ydCk7CiAgICAgdW5z
aWduZWQgc2hvcnQgdW5zaWduZWRTaG9ydEF0dHIoKSBjb25zdDsKQEAgLTE1NCw2ICsxNTgsMTAg
QEAgcHVibGljOgogCiAgICAgdm9pZCB2b2lkTWV0aG9kKCk7CiAgICAgdm9pZCB2b2lkTWV0aG9k
V2l0aEFyZ3MoaW50IGxvbmdBcmcsIGNvbnN0IFdlYkRPTVN0cmluZyYgc3RyQXJnLCBjb25zdCBX
ZWJET01UZXN0T2JqJiBvYmpBcmcpOworICAgIGNoYXIgYnl0ZU1ldGhvZCgpOworICAgIGNoYXIg
Ynl0ZU1ldGhvZFdpdGhBcmdzKGNoYXIgYnl0ZUFyZywgY29uc3QgV2ViRE9NU3RyaW5nJiBzdHJB
cmcsIGNvbnN0IFdlYkRPTVRlc3RPYmomIG9iakFyZyk7CisgICAgdW5zaWduZWQgY2hhciBvY3Rl
dE1ldGhvZCgpOworICAgIHVuc2lnbmVkIGNoYXIgb2N0ZXRNZXRob2RXaXRoQXJncyh1bnNpZ25l
ZCBjaGFyIG9jdGV0QXJnLCBjb25zdCBXZWJET01TdHJpbmcmIHN0ckFyZywgY29uc3QgV2ViRE9N
VGVzdE9iaiYgb2JqQXJnKTsKICAgICBpbnQgbG9uZ01ldGhvZCgpOwogICAgIGludCBsb25nTWV0
aG9kV2l0aEFyZ3MoaW50IGxvbmdBcmcsIGNvbnN0IFdlYkRPTVN0cmluZyYgc3RyQXJnLCBjb25z
dCBXZWJET01UZXN0T2JqJiBvYmpBcmcpOwogICAgIFdlYkRPTVRlc3RPYmogb2JqTWV0aG9kKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVj
dC9XZWJLaXRET01UZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCmluZGV4IDIzZGE0MWEuLjBjN2U1NDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0
L1dlYktpdERPTVRlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCkBAIC03OSw2ICs3OSw4IEBAIGVu
dW0gewogICAgIFBST1BfUkVBRF9PTkxZX0xPTkdfQVRUUiwKICAgICBQUk9QX1JFQURfT05MWV9T
VFJJTkdfQVRUUiwKICAgICBQUk9QX1JFQURfT05MWV9URVNUX09CSl9BVFRSLAorICAgIFBST1Bf
QllURV9BVFRSLAorICAgIFBST1BfT0NURVRfQVRUUiwKICAgICBQUk9QX1NIT1JUX0FUVFIsCiAg
ICAgUFJPUF9VTlNJR05FRF9TSE9SVF9BVFRSLAogICAgIFBST1BfTE9OR19BVFRSLApAQCAtMTQ4
LDYgKzE1MCwxNCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9wcm9wZXJ0
eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsCiAgICAgV2ViQ29yZTo6VGVzdE9i
aiogY29yZVNlbGYgPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAKICAgICBzd2l0Y2ggKHByb3BlcnR5
SWQpIHsKKyAgICBjYXNlIFBST1BfQllURV9BVFRSOiB7CisgICAgICAgIGNvcmVTZWxmLT5zZXRC
eXRlQXR0cigoZ192YWx1ZV9nZXRfaW50OCh2YWx1ZSkpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIGNhc2UgUFJPUF9PQ1RFVF9BVFRSOiB7CisgICAgICAgIGNvcmVTZWxmLT5zZXRPY3Rl
dEF0dHIoKGdfdmFsdWVfZ2V0X3VpbnQ4KHZhbHVlKSkpOworICAgICAgICBicmVhazsKKyAgICB9
CiAgICAgY2FzZSBQUk9QX1VOU0lHTkVEX1NIT1JUX0FUVFI6IHsKICAgICAgICAgY29yZVNlbGYt
PnNldFVuc2lnbmVkU2hvcnRBdHRyKChnX3ZhbHVlX2dldF91aW50KHZhbHVlKSkpOwogICAgICAg
ICBicmVhazsKQEAgLTMwMyw2ICszMTMsMTQgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0
X29ial9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLAogICAg
ICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIFdlYktpdDo6a2l0KHB0ci5nZXQoKSkpOwog
ICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBQUk9QX0JZVEVfQVRUUjogeworICAgICAg
ICBnX3ZhbHVlX3NldF9pbnQ4KHZhbHVlLCBjb3JlU2VsZi0+Ynl0ZUF0dHIoKSk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBjYXNlIFBST1BfT0NURVRfQVRUUjogeworICAgICAgICBnX3Zh
bHVlX3NldF91aW50OCh2YWx1ZSwgY29yZVNlbGYtPm9jdGV0QXR0cigpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQogICAgIGNhc2UgUFJPUF9TSE9SVF9BVFRSOiB7CiAgICAgICAgIGdfdmFsdWVf
c2V0X2ludCh2YWx1ZSwgY29yZVNlbGYtPnNob3J0QXR0cigpKTsKICAgICAgICAgYnJlYWs7CkBA
IC01OTIsNiArNjEwLDI0IEBAIEdfTUFYTE9ORywgLyogbWF4ICovCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX0RP
TV9URVNUX09CSiwgLyogZ29iamVjdCB0eXBlICovCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkp
OwogICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdENsYXNzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9CWVRFX0FUVFIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfaW50OCgiYnl0ZS1hdHRy
IiwgLyogbmFtZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAidGVzdF9vYmpfYnl0ZS1hdHRyIiwgLyogc2hvcnQgZGVzY3JpcHRp
b24gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgInJlYWQtd3JpdGUgIGdpbnQ4IFRlc3RPYmouYnl0ZS1hdHRyIiwgLyogbG9uZ2Vy
IC0gY291bGQgZG8gd2l0aCBzb21lIGV4dHJhIGRvYyBzdHVmZiBoZXJlICovCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfTUlOSU5U
OCwgLyogbWluICovCitHX01BWElOVDgsIC8qIG1heCAqLworMCwgLyogZGVmYXVsdCAqLworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
RUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7CisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9w
ZXJ0eShnb2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
Uk9QX09DVEVUX0FUVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3Bh
cmFtX3NwZWNfdWludDgoIm9jdGV0LWF0dHIiLCAvKiBuYW1lICovCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0X29ial9vY3Rl
dC1hdHRyIiwgLyogc2hvcnQgZGVzY3JpcHRpb24gKi8KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlYWQtd3JpdGUgIGd1aW50OCBU
ZXN0T2JqLm9jdGV0LWF0dHIiLCAvKiBsb25nZXIgLSBjb3VsZCBkbyB3aXRoIHNvbWUgZXh0cmEg
ZG9jIHN0dWZmIGhlcmUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMCwgLyogbWluICovCitHX01BWFVJTlQ4LCAvKiBtYXggKi8K
KzAsIC8qIGRlZmF1bHQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOworICAgIGdfb2Jq
ZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdENsYXNzLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUFJPUF9TSE9SVF9BVFRSLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2ludCgic2hvcnQtYXR0ciIsIC8qIG5hbWUg
Ki8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgInRlc3Rfb2JqX3Nob3J0LWF0dHIiLCAvKiBzaG9ydCBkZXNjcmlwdGlvbiAqLwpAQCAt
MTAxMCw2ICsxMDQ2LDU0IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfdm9pZF9tZXRob2Rfd2l0aF9h
cmdzKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdsb25nIGxvbmdBcmcsCiAgICAgaXRlbS0+dm9p
ZE1ldGhvZFdpdGhBcmdzKGxvbmdBcmcsIGNvbnZlcnRlZFN0ckFyZywgY29udmVydGVkT2JqQXJn
KTsKIH0KIAorZ2ludDgKK3dlYmtpdF9kb21fdGVzdF9vYmpfYnl0ZV9tZXRob2QoV2ViS2l0RE9N
VGVzdE9iaiogc2VsZikKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxm
KSwgMCk7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsK
KyAgICBnaW50OCByZXN1bHQgPSBpdGVtLT5ieXRlTWV0aG9kKCk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworZ2ludDgKK3dlYmtpdF9kb21fdGVzdF9vYmpfYnl0ZV9tZXRob2Rfd2l0aF9hcmdz
KFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdpbnQ4IGJ5dGVBcmcsIGNvbnN0IGdjaGFyKiBzdHJB
cmcsIFdlYktpdERPTVRlc3RPYmoqIG9iakFyZykKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9J
U19URVNUX09CSihzZWxmKSwgMCk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc3RyQXJnLCAw
KTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKG9iakFy
ZyksIDApOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7
CisgICAgV1RGOjpTdHJpbmcgY29udmVydGVkU3RyQXJnID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4
KHN0ckFyZyk7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogY29udmVydGVkT2JqQXJnID0gV2ViS2l0
Ojpjb3JlKG9iakFyZyk7CisgICAgZ2ludDggcmVzdWx0ID0gaXRlbS0+Ynl0ZU1ldGhvZFdpdGhB
cmdzKGJ5dGVBcmcsIGNvbnZlcnRlZFN0ckFyZywgY29udmVydGVkT2JqQXJnKTsKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCitndWludDgKK3dlYmtpdF9kb21fdGVzdF9vYmpfb2N0ZXRfbWV0aG9k
KFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVT
VF9PQkooc2VsZiksIDApOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNv
cmUoc2VsZik7CisgICAgZ3VpbnQ4IHJlc3VsdCA9IGl0ZW0tPm9jdGV0TWV0aG9kKCk7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworZ3VpbnQ4Cit3ZWJraXRfZG9tX3Rlc3Rfb2JqX29jdGV0X21l
dGhvZF93aXRoX2FyZ3MoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ3VpbnQ4IG9jdGV0QXJnLCBj
b25zdCBnY2hhciogc3RyQXJnLCBXZWJLaXRET01UZXN0T2JqKiBvYmpBcmcpCit7CisgICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2VsZiksIDApOworICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKHN0ckFyZywgMCk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9J
U19URVNUX09CSihvYmpBcmcpLCAwKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2Vi
S2l0Ojpjb3JlKHNlbGYpOworICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFN0ckFyZyA9IFdURjo6
U3RyaW5nOjpmcm9tVVRGOChzdHJBcmcpOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGNvbnZlcnRl
ZE9iakFyZyA9IFdlYktpdDo6Y29yZShvYmpBcmcpOworICAgIGd1aW50OCByZXN1bHQgPSBpdGVt
LT5vY3RldE1ldGhvZFdpdGhBcmdzKG9jdGV0QXJnLCBjb252ZXJ0ZWRTdHJBcmcsIGNvbnZlcnRl
ZE9iakFyZyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogZ2xvbmcKIHdlYmtpdF9kb21fdGVz
dF9vYmpfbG9uZ19tZXRob2QoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKIHsKQEAgLTE1MzIsNiAr
MTYxNiw0NCBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9yZWFkX29ubHlfdGVzdF9vYmpfYXR0
cihXZWJLaXRET01UZXN0T2JqKiBzZWxmKQogICAgIHJldHVybiBXZWJLaXQ6OmtpdChnb2JqZWN0
UmVzdWx0LmdldCgpKTsKIH0KIAorZ2ludDgKK3dlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X2J5dGVf
YXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmKQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lT
X1RFU1RfT0JKKHNlbGYpLCAwKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0
Ojpjb3JlKHNlbGYpOworICAgIGdpbnQ4IHJlc3VsdCA9IGl0ZW0tPmJ5dGVBdHRyKCk7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKwordm9pZAord2Via2l0X2RvbV90ZXN0X29ial9zZXRfYnl0ZV9h
dHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdpbnQ4IHZhbHVlKQoreworICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJ
VF9ET01fSVNfVEVTVF9PQkooc2VsZikpOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBX
ZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgaXRlbS0+c2V0Qnl0ZUF0dHIodmFsdWUpOworfQorCitn
dWludDgKK3dlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X29jdGV0X2F0dHIoV2ViS2l0RE9NVGVzdE9i
aiogc2VsZikKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Cisg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxmKSwgMCk7
CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBn
dWludDggcmVzdWx0ID0gaXRlbS0+b2N0ZXRBdHRyKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
Kwordm9pZAord2Via2l0X2RvbV90ZXN0X29ial9zZXRfb2N0ZXRfYXR0cihXZWJLaXRET01UZXN0
T2JqKiBzZWxmLCBndWludDggdmFsdWUpCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09C
SihzZWxmKSk7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxm
KTsKKyAgICBpdGVtLT5zZXRPY3RldEF0dHIodmFsdWUpOworfQorCiBnc2hvcnQKIHdlYmtpdF9k
b21fdGVzdF9vYmpfZ2V0X3Nob3J0X2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dl
YktpdERPTVRlc3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9H
T2JqZWN0L1dlYktpdERPTVRlc3RPYmouaAppbmRleCA3Yzk5MmMzLi42ZmVlNTYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRE
T01UZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dP
YmplY3QvV2ViS2l0RE9NVGVzdE9iai5oCkBAIC03Myw2ICs3Myw1MiBAQCBXRUJLSVRfQVBJIHZv
aWQKIHdlYmtpdF9kb21fdGVzdF9vYmpfdm9pZF9tZXRob2Rfd2l0aF9hcmdzKFdlYktpdERPTVRl
c3RPYmoqIHNlbGYsIGdsb25nIGxvbmdBcmcsIGNvbnN0IGdjaGFyKiBzdHJBcmcsIFdlYktpdERP
TVRlc3RPYmoqIG9iakFyZyk7CiAKIC8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial9ieXRlX21l
dGhvZDoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCisgKgorICogUmV0dXJuczoKKyAq
CisqKi8KK1dFQktJVF9BUEkgZ2ludDgKK3dlYmtpdF9kb21fdGVzdF9vYmpfYnl0ZV9tZXRob2Qo
V2ViS2l0RE9NVGVzdE9iaiogc2VsZik7CisKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial9i
eXRlX21ldGhvZF93aXRoX2FyZ3M6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICog
QGJ5dGVBcmc6IEEgI2dpbnQ4CisgKiBAc3RyQXJnOiBBICNnY2hhcgorICogQG9iakFyZzogQSAj
V2ViS2l0RE9NVGVzdE9iagorICoKKyAqIFJldHVybnM6CisgKgorKiovCitXRUJLSVRfQVBJIGdp
bnQ4Cit3ZWJraXRfZG9tX3Rlc3Rfb2JqX2J5dGVfbWV0aG9kX3dpdGhfYXJncyhXZWJLaXRET01U
ZXN0T2JqKiBzZWxmLCBnaW50OCBieXRlQXJnLCBjb25zdCBnY2hhciogc3RyQXJnLCBXZWJLaXRE
T01UZXN0T2JqKiBvYmpBcmcpOworCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfb2N0ZXRf
bWV0aG9kOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqCisgKiBSZXR1cm5zOgor
ICoKKyoqLworV0VCS0lUX0FQSSBndWludDgKK3dlYmtpdF9kb21fdGVzdF9vYmpfb2N0ZXRfbWV0
aG9kKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpOworCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9v
Ympfb2N0ZXRfbWV0aG9kX3dpdGhfYXJnczoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2Jq
CisgKiBAb2N0ZXRBcmc6IEEgI2d1aW50OAorICogQHN0ckFyZzogQSAjZ2NoYXIKKyAqIEBvYmpB
cmc6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLworV0VCS0lU
X0FQSSBndWludDgKK3dlYmtpdF9kb21fdGVzdF9vYmpfb2N0ZXRfbWV0aG9kX3dpdGhfYXJncyhX
ZWJLaXRET01UZXN0T2JqKiBzZWxmLCBndWludDggb2N0ZXRBcmcsIGNvbnN0IGdjaGFyKiBzdHJB
cmcsIFdlYktpdERPTVRlc3RPYmoqIG9iakFyZyk7CisKKy8qKgogICogd2Via2l0X2RvbV90ZXN0
X29ial9sb25nX21ldGhvZDoKICAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCiAgKgpAQCAt
NTU2LDYgKzYwMiw0OCBAQCBXRUJLSVRfQVBJIFdlYktpdERPTVRlc3RPYmoqCiB3ZWJraXRfZG9t
X3Rlc3Rfb2JqX2dldF9yZWFkX29ubHlfdGVzdF9vYmpfYXR0cihXZWJLaXRET01UZXN0T2JqKiBz
ZWxmKTsKIAogLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9ieXRlX2F0dHI6CisgKiBA
c2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICoKKyAqIFJldHVybnM6CisgKgorKiovCitXRUJL
SVRfQVBJIGdpbnQ4Cit3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9ieXRlX2F0dHIoV2ViS2l0RE9N
VGVzdE9iaiogc2VsZik7CisKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial9zZXRfYnl0ZV9h
dHRyOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqIEB2YWx1ZTogQSAjZ2ludDgK
KyAqCisgKiBSZXR1cm5zOgorICoKKyoqLworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfZG9tX3Rl
c3Rfb2JqX3NldF9ieXRlX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2ludDggdmFsdWUp
OworCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X29jdGV0X2F0dHI6CisgKiBAc2Vs
ZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICoKKyAqIFJldHVybnM6CisgKgorKiovCitXRUJLSVRf
QVBJIGd1aW50OAord2Via2l0X2RvbV90ZXN0X29ial9nZXRfb2N0ZXRfYXR0cihXZWJLaXRET01U
ZXN0T2JqKiBzZWxmKTsKKworLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9vY3RldF9h
dHRyOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqIEB2YWx1ZTogQSAjZ3VpbnQ4
CisgKgorICogUmV0dXJuczoKKyAqCisqKi8KK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2RvbV90
ZXN0X29ial9zZXRfb2N0ZXRfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBndWludDggdmFs
dWUpOworCisvKioKICAqIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3Nob3J0X2F0dHI6CiAgKiBA
c2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagogICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggYTgyNDhjYi4uYTA1
NmUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5jcHAKQEAgLTgwLDYgKzgwLDggQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJs
ZVZhbHVlIEpTVGVzdE9ialRhYmxlVmFsdWVzW10gPQogICAgIHsgInJlYWRPbmx5U3RyaW5nQXR0
ciIsIERvbnREZWxldGUgfCBSZWFkT25seSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpSZWFkT25seVN0cmluZ0F0dHIpLCAoaW50cHRy
X3QpMCwgTm9JbnRyaW5zaWMgfSwKICAgICB7ICJyZWFkT25seVRlc3RPYmpBdHRyIiwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5LCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzVGVzdE9ialJlYWRPbmx5VGVzdE9iakF0dHIpLCAoaW50cHRyX3QpMCwgTm9J
bnRyaW5zaWMgfSwKICAgICB7ICJlbnVtQXR0ciIsIERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqRW51bUF0dHIpLCAo
aW50cHRyX3Qpc2V0SlNUZXN0T2JqRW51bUF0dHIsIE5vSW50cmluc2ljIH0sCisgICAgeyAiYnl0
ZUF0dHIiLCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakJ5dGVBdHRyKSwgKGludHB0cl90KXNldEpTVGVzdE9iakJ5
dGVBdHRyLCBOb0ludHJpbnNpYyB9LAorICAgIHsgIm9jdGV0QXR0ciIsIERvbnREZWxldGUsIChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2Jq
T2N0ZXRBdHRyKSwgKGludHB0cl90KXNldEpTVGVzdE9iak9jdGV0QXR0ciwgTm9JbnRyaW5zaWMg
fSwKICAgICB7ICJzaG9ydEF0dHIiLCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ialNob3J0QXR0ciksIChpbnRwdHJf
dClzZXRKU1Rlc3RPYmpTaG9ydEF0dHIsIE5vSW50cmluc2ljIH0sCiAgICAgeyAidW5zaWduZWRT
aG9ydEF0dHIiLCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ialVuc2lnbmVkU2hvcnRBdHRyKSwgKGludHB0cl90KXNl
dEpTVGVzdE9ialVuc2lnbmVkU2hvcnRBdHRyLCBOb0ludHJpbnNpYyB9LAogICAgIHsgImxvbmdB
dHRyIiwgRG9udERlbGV0ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1Rlc3RPYmpMb25nQXR0ciksIChpbnRwdHJfdClzZXRKU1Rlc3RPYmpMb25n
QXR0ciwgTm9JbnRyaW5zaWMgfSwKQEAgLTE1Miw3ICsxNTQsNyBAQCBzdGF0aWMgY29uc3QgSGFz
aFRhYmxlVmFsdWUgSlNUZXN0T2JqVGFibGVWYWx1ZXNbXSA9CiAgICAgeyAwLCAwLCAwLCAwLCBO
b0ludHJpbnNpYyB9CiB9OwogCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdE9ialRhYmxl
ID0geyAxNDUsIDEyNywgSlNUZXN0T2JqVGFibGVWYWx1ZXMsIDAgfTsKK3N0YXRpYyBjb25zdCBI
YXNoVGFibGUgSlNUZXN0T2JqVGFibGUgPSB7IDI2NSwgMjU1LCBKU1Rlc3RPYmpUYWJsZVZhbHVl
cywgMCB9OwogLyogSGFzaCB0YWJsZSBmb3IgY29uc3RydWN0b3IgKi8KIAogc3RhdGljIGNvbnN0
IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9iakNvbnN0cnVjdG9yVGFibGVWYWx1ZXNbXSA9CkBAIC0y
NjgsNiArMjcwLDEwIEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm90
b3R5cGVUYWJsZVZhbHVlc1tdID0KICAgICB7ICJDT05TVF9KQVZBU0NSSVBUIiwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5LCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdE9iakNPTlNUX0pBVkFTQ1JJUFQpLCAoaW50cHRyX3QpMCwgTm9JbnRyaW5z
aWMgfSwKICAgICB7ICJ2b2lkTWV0aG9kIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChp
bnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25Wb2lkTWV0aG9kKSwgKGludHB0cl90KTAsIE5vSW50cmluc2ljIH0sCiAgICAgeyAidm9p
ZE1ldGhvZFdpdGhBcmdzIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClz
dGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lk
TWV0aG9kV2l0aEFyZ3MpLCAoaW50cHRyX3QpMywgTm9JbnRyaW5zaWMgfSwKKyAgICB7ICJieXRl
TWV0aG9kIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0aG9kKSwg
KGludHB0cl90KTAsIE5vSW50cmluc2ljIH0sCisgICAgeyAiYnl0ZU1ldGhvZFdpdGhBcmdzIiwg
RG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVG
dW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0aG9kV2l0aEFyZ3MpLCAo
aW50cHRyX3QpMywgTm9JbnRyaW5zaWMgfSwKKyAgICB7ICJvY3RldE1ldGhvZCIsIERvbnREZWxl
dGUgfCBKU0M6OkZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+
KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2QpLCAoaW50cHRyX3QpMCwgTm9J
bnRyaW5zaWMgfSwKKyAgICB7ICJvY3RldE1ldGhvZFdpdGhBcmdzIiwgRG9udERlbGV0ZSB8IEpT
Qzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZFdpdGhBcmdzKSwgKGludHB0cl90KTMsIE5v
SW50cmluc2ljIH0sCiAgICAgeyAibG9uZ01ldGhvZCIsIERvbnREZWxldGUgfCBKU0M6OkZ1bmN0
aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTG9uZ01ldGhvZCksIChpbnRwdHJfdCkwLCBOb0ludHJpbnNpYyB9LAogICAg
IHsgImxvbmdNZXRob2RXaXRoQXJncyIsIERvbnREZWxldGUgfCBKU0M6OkZ1bmN0aW9uLCAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTG9uZ01ldGhvZFdpdGhBcmdzKSwgKGludHB0cl90KTMsIE5vSW50cmluc2ljIH0sCiAgICAg
eyAib2JqTWV0aG9kIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0
aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRo
b2QpLCAoaW50cHRyX3QpMCwgTm9JbnRyaW5zaWMgfSwKQEAgLTMzMCw3ICszMzYsNyBAQCBzdGF0
aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9
CiAgICAgeyAwLCAwLCAwLCAwLCBOb0ludHJpbnNpYyB9CiB9OwogCi1zdGF0aWMgY29uc3QgSGFz
aFRhYmxlIEpTVGVzdE9ialByb3RvdHlwZVRhYmxlID0geyAyNjYsIDI1NSwgSlNUZXN0T2JqUHJv
dG90eXBlVGFibGVWYWx1ZXMsIDAgfTsKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0T2Jq
UHJvdG90eXBlVGFibGUgPSB7IDI2NywgMjU1LCBKU1Rlc3RPYmpQcm90b3R5cGVUYWJsZVZhbHVl
cywgMCB9OwogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE9ialByb3RvdHlwZTo6c19pbmZvID0geyAi
VGVzdE9iamVjdFByb3RvdHlwZSIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RPYmpQcm90b3R5cGVU
YWJsZSwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RPYmpQcm90b3R5cGUpIH07CiAKIEpT
T2JqZWN0KiBKU1Rlc3RPYmpQcm90b3R5cGU6OnNlbGYoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQpAQCAtNDU5LDYgKzQ2NSwyNiBAQCBKU1ZhbHVlIGpzVGVz
dE9iakVudW1BdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlO
YW1lKQogfQogCiAKK0pTVmFsdWUganNUZXN0T2JqQnl0ZUF0dHIoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CisgICAgVU5VU0VE
X1BBUkFNKGV4ZWMpOworICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4o
Y2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwt
PmJ5dGVBdHRyKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworSlNWYWx1ZSBqc1Rlc3RP
YmpPY3RldEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5h
bWUpCit7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGFz
T2JqZWN0KHNsb3RCYXNlKSk7CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworICAgIFRlc3RPYmoq
IGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwtPm9jdGV0QXR0cigpKTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCisKIEpTVmFsdWUganNUZXN0T2JqU2hvcnRBdHRyKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOwpAQCAtMTA5
NCw2ICsxMTIwLDMwIEBAIHZvaWQgc2V0SlNUZXN0T2JqRW51bUF0dHIoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIH0KIAogCit2b2lkIHNldEpT
VGVzdE9iakJ5dGVBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCit7CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPih0aGlzT2JqZWN0KTsKKyAgICBUZXN0T2Jq
KiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAg
aW50OF90IG5hdGl2ZVZhbHVlKHRvSW50OChleGVjLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbikp
OworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlt
cGwtPnNldEJ5dGVBdHRyKG5hdGl2ZVZhbHVlKTsKK30KKworCit2b2lkIHNldEpTVGVzdE9iak9j
dGV0QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQoreworICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4odGhpc09iamVjdCk7CisgICAgVGVzdE9iaiogaW1wbCA9
IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIHVpbnQ4X3Qg
bmF0aXZlVmFsdWUodG9VSW50OChleGVjLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbikpOworICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuOworICAgIGltcGwtPnNl
dE9jdGV0QXR0cihuYXRpdmVWYWx1ZSk7Cit9CisKKwogdm9pZCBzZXRKU1Rlc3RPYmpTaG9ydEF0
dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
IHsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CkBAIC0xNzA4LDYgKzE3NTgsODAgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRo
b2RXaXRoQXJncyhFeGVjU3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQnl0ZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CisgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJp
dHMoJkpTVGVzdE9iajo6c19pbmZvKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYyk7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGFz
T2JqZWN0KHRoaXNWYWx1ZSkpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgJkpTVGVzdE9iajo6c19pbmZvKTsKKyAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nh
c3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisKKyAgICBKU0M6OkpTVmFsdWUgcmVz
dWx0ID0ganNOdW1iZXIoaW1wbC0+Ynl0ZU1ldGhvZCgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0aG9kV2l0aEFyZ3MoRXhlY1N0YXRlKiBleGVjKQor
eworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOworICAgIGlm
ICghdGhpc1ZhbHVlLmluaGVyaXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykpCisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
Q2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKKyAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RPYmo6OnNfaW5mbyk7CisgICAgVGVzdE9i
aiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAg
IGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAzKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKKyAgICBpbnQ4
X3QgYnl0ZUFyZyh0b0ludDgoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNp
b24pKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgY29uc3QgU3RyaW5nJiBzdHJBcmcoZXhl
Yy0+YXJndW1lbnQoMSkuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBleGVjLT5hcmd1bWVudCgxKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBU
ZXN0T2JqKiBvYmpBcmcodG9UZXN0T2JqKGV4ZWMtPmFyZ3VtZW50KDIpKSk7CisgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOworCisgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwtPmJ5
dGVNZXRob2RXaXRoQXJncyhieXRlQXJnLCBzdHJBcmcsIG9iakFyZykpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kKEV4ZWNTdGF0ZSogZXhlYykK
K3sKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKKyAgICBp
ZiAoIXRoaXNWYWx1ZS5pbmhlcml0cygmSlNUZXN0T2JqOjpzX2luZm8pKQorICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBq
c0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CisgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAmSlNUZXN0T2JqOjpzX2luZm8pOworICAgIFRlc3RP
YmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKwor
ICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLT5vY3RldE1ldGhvZCgpKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZFdpdGhB
cmdzKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhv
c3RUaGlzVmFsdWUoKTsKKyAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cygmSlNUZXN0T2JqOjpz
X2luZm8pKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVl
KSk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAmSlNUZXN0T2Jq
OjpzX2luZm8pOworICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2Fz
dGVkVGhpcy0+aW1wbCgpKTsKKyAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMykKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihleGVjKSk7CisgICAgdWludDhfdCBvY3RldEFyZyh0b1VJbnQ4KGV4ZWMsIGV4ZWMtPmFy
Z3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAg
IGNvbnN0IFN0cmluZyYgc3RyQXJnKGV4ZWMtPmFyZ3VtZW50KDEpLmlzRW1wdHkoKSA/IFN0cmlu
ZygpIDogZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CisgICAgVGVzdE9iaiogb2JqQXJnKHRvVGVzdE9iaihleGVjLT5h
cmd1bWVudCgyKSkpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIEpTQzo6SlNWYWx1ZSBy
ZXN1bHQgPSBqc051bWJlcihpbXBsLT5vY3RldE1ldGhvZFdpdGhBcmdzKG9jdGV0QXJnLCBzdHJB
cmcsIG9iakFyZykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKwog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxv
bmdNZXRob2QoRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+aG9zdFRoaXNWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCmluZGV4IDdmZTUzYjMuLjdhMmQ2ZWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgK
QEAgLTE2MSw2ICsxNjEsMTAgQEAgcHJvdGVjdGVkOgogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kKEpTQzo6RXhl
Y1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kV2l0aEFyZ3MoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5
dGVNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2RXaXRoQXJncyhKU0M6OkV4
ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0
aG9kV2l0aEFyZ3MoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRob2QoSlNDOjpFeGVjU3Rh
dGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkxvbmdNZXRob2RXaXRoQXJncyhKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0
aG9kKEpTQzo6RXhlY1N0YXRlKik7CkBAIC0yMzksNiArMjQzLDEwIEBAIHZvaWQgc2V0SlNUZXN0
T2JqQ29uc3RydWN0b3JTdGF0aWNTdHJpbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09i
amVjdCosIEpTCiBKU0M6OkpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JUZXN0U3ViT2JqKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6OkpT
VmFsdWUganNUZXN0T2JqRW51bUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpT
Qzo6UHJvcGVydHlOYW1lKTsKIHZvaWQgc2V0SlNUZXN0T2JqRW51bUF0dHIoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RP
YmpCeXRlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5h
bWUpOwordm9pZCBzZXRKU1Rlc3RPYmpCeXRlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNP
YmplY3QqLCBKU0M6OkpTVmFsdWUpOworSlNDOjpKU1ZhbHVlIGpzVGVzdE9iak9jdGV0QXR0cihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwordm9pZCBz
ZXRKU1Rlc3RPYmpPY3RldEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlND
OjpKU1ZhbHVlKTsKIEpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpTaG9ydEF0dHIoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIHZvaWQgc2V0SlNUZXN0T2Jq
U2hvcnRBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6SlNWYWx1ZSk7
CiBKU0M6OkpTVmFsdWUganNUZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaAppbmRleCA3YTYz
MDk4Li5lMDNkMDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvT2JqQy9ET01UZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5oCkBAIC02Niw2ICs2Niw4IEBAIGVudW0gewogQHBy
b3BlcnR5KHJlYWRvbmx5KSBpbnQgcmVhZE9ubHlMb25nQXR0cjsKIEBwcm9wZXJ0eShyZWFkb25s
eSwgY29weSkgTlNTdHJpbmcgKnJlYWRPbmx5U3RyaW5nQXR0cjsKIEBwcm9wZXJ0eShyZWFkb25s
eSwgcmV0YWluKSBET01UZXN0T2JqICpyZWFkT25seVRlc3RPYmpBdHRyOworQHByb3BlcnR5IGNo
YXIgYnl0ZUF0dHI7CitAcHJvcGVydHkgdW5zaWduZWQgY2hhciBvY3RldEF0dHI7CiBAcHJvcGVy
dHkgc2hvcnQgc2hvcnRBdHRyOwogQHByb3BlcnR5IHVuc2lnbmVkIHNob3J0IHVuc2lnbmVkU2hv
cnRBdHRyOwogQHByb3BlcnR5IGludCBsb25nQXR0cjsKQEAgLTEyMiw2ICsxMjQsMTAgQEAgZW51
bSB7CiAKIC0gKHZvaWQpdm9pZE1ldGhvZDsKIC0gKHZvaWQpdm9pZE1ldGhvZFdpdGhBcmdzOihp
bnQpbG9uZ0FyZyBzdHJBcmc6KE5TU3RyaW5nICopc3RyQXJnIG9iakFyZzooRE9NVGVzdE9iaiAq
KW9iakFyZzsKKy0gKGNoYXIpYnl0ZU1ldGhvZDsKKy0gKGNoYXIpYnl0ZU1ldGhvZFdpdGhBcmdz
OihjaGFyKWJ5dGVBcmcgc3RyQXJnOihOU1N0cmluZyAqKXN0ckFyZyBvYmpBcmc6KERPTVRlc3RP
YmogKilvYmpBcmc7CistICh1bnNpZ25lZCBjaGFyKW9jdGV0TWV0aG9kOworLSAodW5zaWduZWQg
Y2hhcilvY3RldE1ldGhvZFdpdGhBcmdzOih1bnNpZ25lZCBjaGFyKW9jdGV0QXJnIHN0ckFyZzoo
TlNTdHJpbmcgKilzdHJBcmcgb2JqQXJnOihET01UZXN0T2JqICopb2JqQXJnOwogLSAoaW50KWxv
bmdNZXRob2Q7CiAtIChpbnQpbG9uZ01ldGhvZFdpdGhBcmdzOihpbnQpbG9uZ0FyZyBzdHJBcmc6
KE5TU3RyaW5nICopc3RyQXJnIG9iakFyZzooRE9NVGVzdE9iaiAqKW9iakFyZzsKIC0gKERPTVRl
c3RPYmogKilvYmpNZXRob2Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQppbmRleCA4OTk2ZmU1Li5mZTgzMTE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01U
ZXN0T2JqLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpD
L0RPTVRlc3RPYmoubW0KQEAgLTExMSw2ICsxMTEsMzAgQEAKICAgICByZXR1cm4ga2l0KFdURjo6
Z2V0UHRyKElNUEwtPnJlYWRPbmx5VGVzdE9iakF0dHIoKSkpOwogfQogCistIChjaGFyKWJ5dGVB
dHRyCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJl
dHVybiBJTVBMLT5ieXRlQXR0cigpOworfQorCistICh2b2lkKXNldEJ5dGVBdHRyOihjaGFyKW5l
d0J5dGVBdHRyCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwor
ICAgIElNUEwtPnNldEJ5dGVBdHRyKG5ld0J5dGVBdHRyKTsKK30KKworLSAodW5zaWduZWQgY2hh
cilvY3RldEF0dHIKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
CisgICAgcmV0dXJuIElNUEwtPm9jdGV0QXR0cigpOworfQorCistICh2b2lkKXNldE9jdGV0QXR0
cjoodW5zaWduZWQgY2hhciluZXdPY3RldEF0dHIKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7CisgICAgSU1QTC0+c2V0T2N0ZXRBdHRyKG5ld09jdGV0QXR0cik7
Cit9CisKIC0gKHNob3J0KXNob3J0QXR0cgogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKQEAgLTc3NSw2ICs3OTksMzAgQEAKICAgICBJTVBMLT52b2lkTWV0aG9k
V2l0aEFyZ3MobG9uZ0FyZywgc3RyQXJnLCBjb3JlKG9iakFyZykpOwogfQogCistIChjaGFyKWJ5
dGVNZXRob2QKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Cisg
ICAgcmV0dXJuIElNUEwtPmJ5dGVNZXRob2QoKTsKK30KKworLSAoY2hhcilieXRlTWV0aG9kV2l0
aEFyZ3M6KGNoYXIpYnl0ZUFyZyBzdHJBcmc6KE5TU3RyaW5nICopc3RyQXJnIG9iakFyZzooRE9N
VGVzdE9iaiAqKW9iakFyZworeworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+Ynl0ZU1ldGhvZFdpdGhBcmdzKGJ5dGVBcmcsIHN0ckFy
ZywgY29yZShvYmpBcmcpKTsKK30KKworLSAodW5zaWduZWQgY2hhcilvY3RldE1ldGhvZAorewor
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1Q
TC0+b2N0ZXRNZXRob2QoKTsKK30KKworLSAodW5zaWduZWQgY2hhcilvY3RldE1ldGhvZFdpdGhB
cmdzOih1bnNpZ25lZCBjaGFyKW9jdGV0QXJnIHN0ckFyZzooTlNTdHJpbmcgKilzdHJBcmcgb2Jq
QXJnOihET01UZXN0T2JqICopb2JqQXJnCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT5vY3RldE1ldGhvZFdpdGhBcmdzKG9jdGV0
QXJnLCBzdHJBcmcsIGNvcmUob2JqQXJnKSk7Cit9CisKIC0gKGludClsb25nTWV0aG9kCiB7CiAg
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCmluZGV4IGFmMzk0NWUuLjA2
NzlmMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9U
ZXN0T2JqLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dE9iai5pZGwKQEAgLTQ0LDYgKzQ0LDggQEAgZW51bSBUZXN0RW51bVR5cGUgeyAiIiwgIkVudW1W
YWx1ZTEiLCAiRW51bVZhbHVlMiIsICJFbnVtVmFsdWUzIiB9OwogICAgIHN0YXRpYyBhdHRyaWJ1
dGUgRE9NU3RyaW5nICAgICAgICAgc3RhdGljU3RyaW5nQXR0cjsKICAgICBzdGF0aWMgcmVhZG9u
bHkgYXR0cmlidXRlIFRlc3RTdWJPYmpDb25zdHJ1Y3RvciBUZXN0U3ViT2JqOwogICAgIGF0dHJp
YnV0ZSBUZXN0RW51bVR5cGUgICAgICAgICAgICAgZW51bUF0dHI7CisgICAgYXR0cmlidXRlIGJ5
dGUgICAgICAgICAgICAgICAgICAgICBieXRlQXR0cjsKKyAgICBhdHRyaWJ1dGUgb2N0ZXQgICAg
ICAgICAgICAgICAgICAgIG9jdGV0QXR0cjsKICAgICBhdHRyaWJ1dGUgc2hvcnQgICAgICAgICAg
ICAgICAgICAgIHNob3J0QXR0cjsKICAgICBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgICAgICAg
ICAgIHVuc2lnbmVkU2hvcnRBdHRyOwogICAgIGF0dHJpYnV0ZSBsb25nICAgICAgICAgICAgICAg
ICAgICAgbG9uZ0F0dHI7CkBAIC03Myw2ICs3NSwxMCBAQCBlbnVtIFRlc3RFbnVtVHlwZSB7ICIi
LCAiRW51bVZhbHVlMSIsICJFbnVtVmFsdWUyIiwgIkVudW1WYWx1ZTMiIH07CiAgICAgLy8gTWV0
aG9kcwogICAgIHZvaWQgICAgdm9pZE1ldGhvZCgpOwogICAgIHZvaWQgICAgdm9pZE1ldGhvZFdp
dGhBcmdzKGxvbmcgbG9uZ0FyZywgRE9NU3RyaW5nIHN0ckFyZywgVGVzdE9iaiBvYmpBcmcpOwor
ICAgIGJ5dGUgICAgYnl0ZU1ldGhvZCgpOworICAgIGJ5dGUgICAgYnl0ZU1ldGhvZFdpdGhBcmdz
KGJ5dGUgYnl0ZUFyZywgRE9NU3RyaW5nIHN0ckFyZywgVGVzdE9iaiBvYmpBcmcpOworICAgIG9j
dGV0ICAgb2N0ZXRNZXRob2QoKTsKKyAgICBvY3RldCAgIG9jdGV0TWV0aG9kV2l0aEFyZ3Mob2N0
ZXQgb2N0ZXRBcmcsIERPTVN0cmluZyBzdHJBcmcsIFRlc3RPYmogb2JqQXJnKTsKICAgICBsb25n
ICAgIGxvbmdNZXRob2QoKTsKICAgICBsb25nICAgIGxvbmdNZXRob2RXaXRoQXJncyhsb25nIGxv
bmdBcmcsIERPTVN0cmluZyBzdHJBcmcsIFRlc3RPYmogb2JqQXJnKTsKICAgICBUZXN0T2JqIG9i
ak1ldGhvZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRGF0YVZp
ZXcuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRGF0YVZpZXcuaWRsCmluZGV4IGMw
YTQyYTAuLjUwN2IwYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Rh
dGFWaWV3LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9EYXRhVmlldy5pZGwK
QEAgLTMxLDExICszMSw4IEBACiBdIGludGVyZmFjZSBEYXRhVmlldyA6IEFycmF5QnVmZmVyVmll
dyB7CiAgICAgLy8gQWxsIHRoZXNlIG1ldGhvZHMgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIHRoZXkg
d291bGQgcmVhZCBvciB3cml0ZSBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgdmlldy4KIAotICAgIC8v
IFdlIGhhdmUgdG8gdXNlIGN1c3RvbSBjb2RlIGJlY2F1c2Ugb3VyIGNvZGUgZ2VuZXJhdG9yIGRv
ZXMgbm90IHN1cHBvcnQgaW50OF90IHR5cGUuCi0gICAgLy8gaW50OF90IGdldEludDgodW5zaWdu
ZWQgbG9uZyBieXRlT2Zmc2V0KTsKLSAgICAvLyB1aW50OF90IGdldFVpbnQ4KHVuc2lnbmVkIGxv
bmcgYnl0ZU9mZnNldCk7Ci0gICAgW0N1c3RvbSwgUmFpc2VzRXhjZXB0aW9uXSBhbnkgZ2V0SW50
OCgpOwotICAgIFtDdXN0b20sIFJhaXNlc0V4Y2VwdGlvbl0gYW55IGdldFVpbnQ4KCk7CisgICAg
W1JhaXNlc0V4Y2VwdGlvbl0gYnl0ZSBnZXRJbnQ4KHVuc2lnbmVkIGxvbmcgYnl0ZU9mZnNldCk7
CisgICAgW1JhaXNlc0V4Y2VwdGlvbl0gb2N0ZXQgZ2V0VWludDgodW5zaWduZWQgbG9uZyBieXRl
T2Zmc2V0KTsKIAogICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmcsIFJhaXNlc0V4Y2VwdGlvbl0gc2hv
cnQgZ2V0SW50MTYodW5zaWduZWQgbG9uZyBieXRlT2Zmc2V0LCBvcHRpb25hbCBib29sZWFuIGxp
dHRsZUVuZGlhbik7CiAgICAgW1N0cmljdFR5cGVDaGVja2luZywgUmFpc2VzRXhjZXB0aW9uXSB1
bnNpZ25lZCBzaG9ydCBnZXRVaW50MTYodW5zaWduZWQgbG9uZyBieXRlT2Zmc2V0LCBvcHRpb25h
bCBib29sZWFuIGxpdHRsZUVuZGlhbik7CkBAIC00NiwxMSArNDMsOCBAQAogICAgIFtDdXN0b20s
IFN0cmljdFR5cGVDaGVja2luZywgUmFpc2VzRXhjZXB0aW9uXSBmbG9hdCBnZXRGbG9hdDMyKHVu
c2lnbmVkIGxvbmcgYnl0ZU9mZnNldCwgb3B0aW9uYWwgYm9vbGVhbiBsaXR0bGVFbmRpYW4pOwog
ICAgIFtDdXN0b20sIFN0cmljdFR5cGVDaGVja2luZywgUmFpc2VzRXhjZXB0aW9uXSBkb3VibGUg
Z2V0RmxvYXQ2NCh1bnNpZ25lZCBsb25nIGJ5dGVPZmZzZXQsIG9wdGlvbmFsIGJvb2xlYW4gbGl0
dGxlRW5kaWFuKTsKIAotICAgIC8vIFdlIGhhdmUgdG8gdXNlIGN1c3RvbSBjb2RlIGJlY2F1c2Ug
b3VyIGNvZGUgZ2VuZXJhdG9yIGRvZXMgbm90IHN1cHBvcnQgdWludDhfdCB0eXBlLgotICAgIC8v
IHZvaWQgc2V0SW50OCh1bnNpZ25lZCBsb25nIGJ5dGVPZmZzZXQsIGludDhfdCB2YWx1ZSk7Ci0g
ICAgLy8gdm9pZCBzZXRVaW50OCh1bnNpZ25lZCBsb25nIGJ5dGVPZmZzZXQsIHVpbnQ4X3QgdmFs
dWUpOwotICAgIFtDdXN0b20sIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCBzZXRJbnQ4KCk7Ci0gICAg
W0N1c3RvbSwgUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHNldFVpbnQ4KCk7CisgICAgW1JhaXNlc0V4
Y2VwdGlvbl0gdm9pZCBzZXRJbnQ4KHVuc2lnbmVkIGxvbmcgYnl0ZU9mZnNldCwgYnl0ZSB2YWx1
ZSk7CisgICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCBzZXRVaW50OCh1bnNpZ25lZCBsb25nIGJ5
dGVPZmZzZXQsIG9jdGV0IHZhbHVlKTsKIAogICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmcsIFJhaXNl
c0V4Y2VwdGlvbl0gdm9pZCBzZXRJbnQxNih1bnNpZ25lZCBsb25nIGJ5dGVPZmZzZXQsIHNob3J0
IHZhbHVlLCBvcHRpb25hbCBib29sZWFuIGxpdHRsZUVuZGlhbik7CiAgICAgW1N0cmljdFR5cGVD
aGVja2luZywgUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHNldFVpbnQxNih1bnNpZ25lZCBsb25nIGJ5
dGVPZmZzZXQsIHVuc2lnbmVkIHNob3J0IHZhbHVlLCBvcHRpb25hbCBib29sZWFuIGxpdHRsZUVu
ZGlhbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1R5cGVDb252ZXJzaW9u
cy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9UeXBlQ29udmVyc2lvbnMuaAppbmRleCA4ZGUx
MDJmLi4zNDBjODk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1R5cGVDb252
ZXJzaW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvVHlwZUNvbnZlcnNpb25zLmgK
QEAgLTU0LDYgKzU0LDE1IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdGVzdEVu
Zm9yY2VSYW5nZVVuc2lnbmVkTG9uZ0xvbmcoKSB7IHJldHVybiBtX3Vuc2lnbmVkTG9uZ0xvbmc7
IH0KICAgICB2b2lkIHNldFRlc3RFbmZvcmNlUmFuZ2VVbnNpZ25lZExvbmdMb25nKHVuc2lnbmVk
IGxvbmcgbG9uZyB2YWx1ZSkgeyBtX3Vuc2lnbmVkTG9uZ0xvbmcgPSB2YWx1ZTsgfQogCisgICAg
aW50OF90IHRlc3RCeXRlKCkgeyByZXR1cm4gbV9ieXRlOyB9CisgICAgdm9pZCBzZXRUZXN0Qnl0
ZShpbnQ4X3QgdmFsdWUpIHsgbV9ieXRlID0gdmFsdWU7IH0KKyAgICBpbnQ4X3QgdGVzdEVuZm9y
Y2VSYW5nZUJ5dGUoKSB7IHJldHVybiBtX2J5dGU7IH0KKyAgICB2b2lkIHNldFRlc3RFbmZvcmNl
UmFuZ2VCeXRlKGludDhfdCB2YWx1ZSkgeyBtX2J5dGUgPSB2YWx1ZTsgfQorCisgICAgdWludDhf
dCB0ZXN0T2N0ZXQoKSB7IHJldHVybiBtX29jdGV0OyB9CisgICAgdm9pZCBzZXRUZXN0T2N0ZXQo
dWludDhfdCB2YWx1ZSkgeyBtX29jdGV0ID0gdmFsdWU7IH0KKyAgICB1aW50OF90IHRlc3RFbmZv
cmNlUmFuZ2VPY3RldCgpIHsgcmV0dXJuIG1fb2N0ZXQ7IH0KKyAgICB2b2lkIHNldFRlc3RFbmZv
cmNlUmFuZ2VPY3RldCh1aW50OF90IHZhbHVlKSB7IG1fb2N0ZXQgPSB2YWx1ZTsgfQogcHJpdmF0
ZToKICAgICBUeXBlQ29udmVyc2lvbnMoKQogICAgIHsKQEAgLTYzLDYgKzcyLDggQEAgcHJpdmF0
ZToKICAgICB1bnNpZ25lZCBsb25nIG1fdW5zaWduZWRMb25nOwogICAgIGxvbmcgbG9uZyBtX2xv
bmdMb25nOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBtX3Vuc2lnbmVkTG9uZ0xvbmc7CisgICAg
aW50OF90IG1fYnl0ZTsKKyAgICB1aW50OF90IG1fb2N0ZXQ7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1R5cGVDb252ZXJz
aW9ucy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1R5cGVDb252ZXJzaW9ucy5pZGwKaW5k
ZXggZWRkNDAwNC4uZWJlOWI5MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
VHlwZUNvbnZlcnNpb25zLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1R5cGVDb252
ZXJzaW9ucy5pZGwKQEAgLTM2LDQgKzM2LDkgQEAKICAgICBhdHRyaWJ1dGUgW0VuZm9yY2VSYW5n
ZV0gbG9uZyBsb25nIHRlc3RFbmZvcmNlUmFuZ2VMb25nTG9uZzsKICAgICBhdHRyaWJ1dGUgdW5z
aWduZWQgbG9uZyBsb25nIHRlc3RVbnNpZ25lZExvbmdMb25nOwogICAgIGF0dHJpYnV0ZSBbRW5m
b3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIGxvbmcgdGVzdEVuZm9yY2VSYW5nZVVuc2lnbmVkTG9u
Z0xvbmc7CisKKyAgICBhdHRyaWJ1dGUgYnl0ZSB0ZXN0Qnl0ZTsKKyAgICBhdHRyaWJ1dGUgW0Vu
Zm9yY2VSYW5nZV0gYnl0ZSB0ZXN0RW5mb3JjZVJhbmdlQnl0ZTsKKyAgICBhdHRyaWJ1dGUgb2N0
ZXQgdGVzdE9jdGV0OworICAgIGF0dHJpYnV0ZSBbRW5mb3JjZVJhbmdlXSBvY3RldCB0ZXN0RW5m
b3JjZVJhbmdlT2N0ZXQ7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204569</attachid>
            <date>2013-06-13 04:02:00 -0700</date>
            <delta_ts>2013-06-13 04:08:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>117547_byte_octet.patch</filename>
            <type>text/plain</type>
            <size>59848</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0NWJkYmU4MC4uNzU3N2YyMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEzLTA2
LTEzICBDaHJpc3RvcGhlIER1bWV6ICA8Y2guZHVtZXpAc2lzYS5zYW1zdW5nLmNvbT4KKworICAg
ICAgICBTdXBwb3J0IGJ5dGUgYW5kIG9jdGV0IHR5cGVzIGluIGJpbmRpbmdzIGdlbmVyYXRvcnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzU0Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBm
YXN0L2pzL3dlYmlkbC10eXBlLW1hcHBpbmcuaHRtbCB0byBjb3ZlciBieXRlIGFuZCBvY3RldAor
ICAgICAgICBXZWIgSURMIHR5cGVzIHdpdGggYW5kIHdpdGhvdXQgW0VuZm9yY2VSYW5nZV0uCisK
KyAgICAgICAgKiBmYXN0L2pzL3dlYmlkbC10eXBlLW1hcHBpbmctZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGZhc3QvanMvd2ViaWRsLXR5cGUtbWFwcGluZy5odG1sOgorCiAyMDEzLTA2LTEyICBL
d2FuZyBZdWwgU2VvICA8c2t5dWxAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCBnYXJkZW5pbmcuIFVuc2tpcHBpbmcgcGFzc2luZyB0ZXN0cy4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvanMvd2ViaWRsLXR5cGUtbWFwcGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2pzL3dlYmlkbC10eXBlLW1hcHBpbmctZXhwZWN0ZWQudHh0CmluZGV4IGFlYzBh
YzEuLmUxM2QxMTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvanMvd2ViaWRsLXR5cGUt
bWFwcGluZy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy93ZWJpZGwtdHlw
ZS1tYXBwaW5nLWV4cGVjdGVkLnR4dApAQCAtNTQ2LDYgKzU0NiwyMDAgQEAgUEFTUyBjb252ZXJ0
ZXIudGVzdEVuZm9yY2VSYW5nZVVuc2lnbmVkTG9uZ0xvbmcgaXMgMAogUEFTUyBjb252ZXJ0ZXIu
dGVzdEVuZm9yY2VSYW5nZVVuc2lnbmVkTG9uZ0xvbmcgPSB1bmRlZmluZWQgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KIFBBU1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFu
Z2VVbnNpZ25lZExvbmdMb25nID0ge3ZhbHVlT2Y6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3Io
J2N1c3RvbScpO319IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogY3VzdG9tLgogCitQQVNTICd0ZXN0
Qnl0ZScgaW4gY29udmVydGVyIGlzIHRydWUKK1BBU1MgdHlwZW9mIGNvbnZlcnRlci50ZXN0Qnl0
ZSA9PT0gJ251bWJlcicgaXMgdHJ1ZQorY29udmVydGVyLnRlc3RCeXRlID0gMAorUEFTUyBjb252
ZXJ0ZXIudGVzdEJ5dGUgaXMgMAorY29udmVydGVyLnRlc3RCeXRlID0gLTEKK1BBU1MgY29udmVy
dGVyLnRlc3RCeXRlIGlzIC0xCitjb252ZXJ0ZXIudGVzdEJ5dGUgPSAxCitQQVNTIGNvbnZlcnRl
ci50ZXN0Qnl0ZSBpcyAxCitjb252ZXJ0ZXIudGVzdEJ5dGUgPSAweDdGCitQQVNTIGNvbnZlcnRl
ci50ZXN0Qnl0ZSBpcyAweDdGCitjb252ZXJ0ZXIudGVzdEJ5dGUgPSAweDgwCitQQVNTIGNvbnZl
cnRlci50ZXN0Qnl0ZSBpcyAtMHg4MAorY29udmVydGVyLnRlc3RCeXRlID0gLTB4N0YKK1BBU1Mg
Y29udmVydGVyLnRlc3RCeXRlIGlzIC0weDdGCitjb252ZXJ0ZXIudGVzdEJ5dGUgPSAtMHg4MAor
UEFTUyBjb252ZXJ0ZXIudGVzdEJ5dGUgaXMgLTB4ODAKK2NvbnZlcnRlci50ZXN0Qnl0ZSA9IC0w
eDgxCitQQVNTIGNvbnZlcnRlci50ZXN0Qnl0ZSBpcyAweDdGCitjb252ZXJ0ZXIudGVzdEJ5dGUg
PSBOdW1iZXIuTUlOX1ZBTFVFCitQQVNTIGNvbnZlcnRlci50ZXN0Qnl0ZSBpcyAwCitjb252ZXJ0
ZXIudGVzdEJ5dGUgPSAtTnVtYmVyLk1JTl9WQUxVRQorUEFTUyBjb252ZXJ0ZXIudGVzdEJ5dGUg
aXMgMAorY29udmVydGVyLnRlc3RCeXRlID0gTnVtYmVyLk1BWF9WQUxVRQorUEFTUyBjb252ZXJ0
ZXIudGVzdEJ5dGUgaXMgMAorY29udmVydGVyLnRlc3RCeXRlID0gLU51bWJlci5NQVhfVkFMVUUK
K1BBU1MgY29udmVydGVyLnRlc3RCeXRlIGlzIDAKK2NvbnZlcnRlci50ZXN0Qnl0ZSA9IDEuOTkK
K1BBU1MgY29udmVydGVyLnRlc3RCeXRlIGlzIDEKK2NvbnZlcnRlci50ZXN0Qnl0ZSA9IC0xLjk5
CitQQVNTIGNvbnZlcnRlci50ZXN0Qnl0ZSBpcyAtMQorY29udmVydGVyLnRlc3RCeXRlID0gSW5m
aW5pdHkKK1BBU1MgY29udmVydGVyLnRlc3RCeXRlIGlzIDAKK2NvbnZlcnRlci50ZXN0Qnl0ZSA9
IC1JbmZpbml0eQorUEFTUyBjb252ZXJ0ZXIudGVzdEJ5dGUgaXMgMAorY29udmVydGVyLnRlc3RC
eXRlID0gTmFOCitQQVNTIGNvbnZlcnRlci50ZXN0Qnl0ZSBpcyAwCitjb252ZXJ0ZXIudGVzdEJ5
dGUgPSBmYWxzZQorUEFTUyBjb252ZXJ0ZXIudGVzdEJ5dGUgaXMgMAorY29udmVydGVyLnRlc3RC
eXRlID0gdHJ1ZQorUEFTUyBjb252ZXJ0ZXIudGVzdEJ5dGUgaXMgMQorY29udmVydGVyLnRlc3RC
eXRlID0gJycKK1BBU1MgY29udmVydGVyLnRlc3RCeXRlIGlzIDAKK2NvbnZlcnRlci50ZXN0Qnl0
ZSA9ICcxJworUEFTUyBjb252ZXJ0ZXIudGVzdEJ5dGUgaXMgMQorY29udmVydGVyLnRlc3RCeXRl
ID0gJ2FiYycKK1BBU1MgY29udmVydGVyLnRlc3RCeXRlIGlzIDAKK2NvbnZlcnRlci50ZXN0Qnl0
ZSA9IG51bGwKK1BBU1MgY29udmVydGVyLnRlc3RCeXRlIGlzIDAKK2NvbnZlcnRlci50ZXN0Qnl0
ZSA9IHVuZGVmaW5lZAorUEFTUyBjb252ZXJ0ZXIudGVzdEJ5dGUgaXMgMAorUEFTUyBjb252ZXJ0
ZXIudGVzdEJ5dGUgPSB7dmFsdWVPZjpmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcignY3VzdG9t
Jyk7fX0gdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBjdXN0b20uCisKK1BBU1MgJ3Rlc3RFbmZvcmNl
UmFuZ2VCeXRlJyBpbiBjb252ZXJ0ZXIgaXMgdHJ1ZQorUEFTUyB0eXBlb2YgY29udmVydGVyLnRl
c3RFbmZvcmNlUmFuZ2VCeXRlID09PSAnbnVtYmVyJyBpcyB0cnVlCitjb252ZXJ0ZXIudGVzdEVu
Zm9yY2VSYW5nZUJ5dGUgPSAwCitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlQnl0ZSBp
cyAwCitjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUgPSAtMQorUEFTUyBjb252ZXJ0ZXIu
dGVzdEVuZm9yY2VSYW5nZUJ5dGUgaXMgLTEKK2NvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlQnl0
ZSA9IDEKK1BBU1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRlIGlzIDEKK2NvbnZlcnRl
ci50ZXN0RW5mb3JjZVJhbmdlQnl0ZSA9IDB4N0YKK1BBU1MgY29udmVydGVyLnRlc3RFbmZvcmNl
UmFuZ2VCeXRlIGlzIDB4N0YKK1BBU1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRlID0g
MHg4MCB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorY29udmVydGVyLnRl
c3RFbmZvcmNlUmFuZ2VCeXRlID0gLTB4N0YKK1BBU1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFu
Z2VCeXRlIGlzIC0weDdGCitjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUgPSAtMHg4MAor
UEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUgaXMgLTB4ODAKK1BBU1MgY29udmVy
dGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRlID0gLTB4ODEgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogVHlwZSBlcnJvci4KK2NvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlQnl0ZSA9IE51bWJlci5N
SU5fVkFMVUUKK1BBU1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRlIGlzIDAKK2NvbnZl
cnRlci50ZXN0RW5mb3JjZVJhbmdlQnl0ZSA9IC1OdW1iZXIuTUlOX1ZBTFVFCitQQVNTIGNvbnZl
cnRlci50ZXN0RW5mb3JjZVJhbmdlQnl0ZSBpcyAwCitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3Jj
ZVJhbmdlQnl0ZSA9IE51bWJlci5NQVhfVkFMVUUgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
VHlwZSBlcnJvci4KK1BBU1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRlID0gLU51bWJl
ci5NQVhfVkFMVUUgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK2NvbnZl
cnRlci50ZXN0RW5mb3JjZVJhbmdlQnl0ZSA9IDEuOTkKK1BBU1MgY29udmVydGVyLnRlc3RFbmZv
cmNlUmFuZ2VCeXRlIGlzIDEKK2NvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlQnl0ZSA9IC0xLjk5
CitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlQnl0ZSBpcyAtMQorUEFTUyBjb252ZXJ0
ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUgPSBJbmZpbml0eSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBUeXBlIGVycm9yLgorUEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUgPSAt
SW5maW5pdHkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgY29u
dmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRlID0gTmFOIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IFR5cGUgZXJyb3IuCitjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUgPSBmYWxzZQor
UEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUgaXMgMAorY29udmVydGVyLnRlc3RF
bmZvcmNlUmFuZ2VCeXRlID0gdHJ1ZQorUEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZUJ5
dGUgaXMgMQorY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRlID0gJycKK1BBU1MgY29udmVy
dGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRlIGlzIDAKK2NvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdl
Qnl0ZSA9ICcxJworUEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUgaXMgMQorUEFT
UyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUgPSAnYWJjJyB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBUeXBlIGVycm9yLgorY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRlID0g
bnVsbAorUEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUgaXMgMAorUEFTUyBjb252
ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUgPSB1bmRlZmluZWQgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRl
ID0ge3ZhbHVlT2Y6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoJ2N1c3RvbScpO319IHRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogY3VzdG9tLgorCitQQVNTICd0ZXN0T2N0ZXQnIGluIGNvbnZlcnRl
ciBpcyB0cnVlCitQQVNTIHR5cGVvZiBjb252ZXJ0ZXIudGVzdE9jdGV0ID09PSAnbnVtYmVyJyBp
cyB0cnVlCitjb252ZXJ0ZXIudGVzdE9jdGV0ID0gMAorUEFTUyBjb252ZXJ0ZXIudGVzdE9jdGV0
IGlzIDAKK2NvbnZlcnRlci50ZXN0T2N0ZXQgPSAtMQorUEFTUyBjb252ZXJ0ZXIudGVzdE9jdGV0
IGlzIDB4RkYKK2NvbnZlcnRlci50ZXN0T2N0ZXQgPSAxCitQQVNTIGNvbnZlcnRlci50ZXN0T2N0
ZXQgaXMgMQorY29udmVydGVyLnRlc3RPY3RldCA9IDB4N0YKK1BBU1MgY29udmVydGVyLnRlc3RP
Y3RldCBpcyAweDdGCitjb252ZXJ0ZXIudGVzdE9jdGV0ID0gMHg4MAorUEFTUyBjb252ZXJ0ZXIu
dGVzdE9jdGV0IGlzIDB4ODAKK2NvbnZlcnRlci50ZXN0T2N0ZXQgPSAweEZGCitQQVNTIGNvbnZl
cnRlci50ZXN0T2N0ZXQgaXMgMHhGRgorY29udmVydGVyLnRlc3RPY3RldCA9IDB4MTAwCitQQVNT
IGNvbnZlcnRlci50ZXN0T2N0ZXQgaXMgMAorY29udmVydGVyLnRlc3RPY3RldCA9IDB4MTAxCitQ
QVNTIGNvbnZlcnRlci50ZXN0T2N0ZXQgaXMgMQorY29udmVydGVyLnRlc3RPY3RldCA9IC0weDgw
CitQQVNTIGNvbnZlcnRlci50ZXN0T2N0ZXQgaXMgMHg4MAorY29udmVydGVyLnRlc3RPY3RldCA9
IC0weDgxCitQQVNTIGNvbnZlcnRlci50ZXN0T2N0ZXQgaXMgMHg3RgorY29udmVydGVyLnRlc3RP
Y3RldCA9IE51bWJlci5NQVhfVkFMVUUKK1BBU1MgY29udmVydGVyLnRlc3RPY3RldCBpcyAwCitj
b252ZXJ0ZXIudGVzdE9jdGV0ID0gTnVtYmVyLk1JTl9WQUxVRQorUEFTUyBjb252ZXJ0ZXIudGVz
dE9jdGV0IGlzIDAKK2NvbnZlcnRlci50ZXN0T2N0ZXQgPSAtTnVtYmVyLk1BWF9WQUxVRQorUEFT
UyBjb252ZXJ0ZXIudGVzdE9jdGV0IGlzIDAKK2NvbnZlcnRlci50ZXN0T2N0ZXQgPSAtTnVtYmVy
Lk1JTl9WQUxVRQorUEFTUyBjb252ZXJ0ZXIudGVzdE9jdGV0IGlzIDAKK2NvbnZlcnRlci50ZXN0
T2N0ZXQgPSAxLjk5CitQQVNTIGNvbnZlcnRlci50ZXN0T2N0ZXQgaXMgMQorY29udmVydGVyLnRl
c3RPY3RldCA9IC0xLjk5CitQQVNTIGNvbnZlcnRlci50ZXN0T2N0ZXQgaXMgMHhGRgorY29udmVy
dGVyLnRlc3RPY3RldCA9IEluZmluaXR5CitQQVNTIGNvbnZlcnRlci50ZXN0T2N0ZXQgaXMgMAor
Y29udmVydGVyLnRlc3RPY3RldCA9IC1JbmZpbml0eQorUEFTUyBjb252ZXJ0ZXIudGVzdE9jdGV0
IGlzIDAKK2NvbnZlcnRlci50ZXN0T2N0ZXQgPSBOYU4KK1BBU1MgY29udmVydGVyLnRlc3RPY3Rl
dCBpcyAwCitjb252ZXJ0ZXIudGVzdE9jdGV0ID0gZmFsc2UKK1BBU1MgY29udmVydGVyLnRlc3RP
Y3RldCBpcyAwCitjb252ZXJ0ZXIudGVzdE9jdGV0ID0gdHJ1ZQorUEFTUyBjb252ZXJ0ZXIudGVz
dE9jdGV0IGlzIDEKK2NvbnZlcnRlci50ZXN0T2N0ZXQgPSAnJworUEFTUyBjb252ZXJ0ZXIudGVz
dE9jdGV0IGlzIDAKK2NvbnZlcnRlci50ZXN0T2N0ZXQgPSAnMScKK1BBU1MgY29udmVydGVyLnRl
c3RPY3RldCBpcyAxCitjb252ZXJ0ZXIudGVzdE9jdGV0ID0gJ2FiYycKK1BBU1MgY29udmVydGVy
LnRlc3RPY3RldCBpcyAwCitjb252ZXJ0ZXIudGVzdE9jdGV0ID0gbnVsbAorUEFTUyBjb252ZXJ0
ZXIudGVzdE9jdGV0IGlzIDAKK2NvbnZlcnRlci50ZXN0T2N0ZXQgPSB1bmRlZmluZWQKK1BBU1Mg
Y29udmVydGVyLnRlc3RPY3RldCBpcyAwCitQQVNTIGNvbnZlcnRlci50ZXN0T2N0ZXQgPSB7dmFs
dWVPZjpmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcignY3VzdG9tJyk7fX0gdGhyZXcgZXhjZXB0
aW9uIEVycm9yOiBjdXN0b20uCisKK1BBU1MgJ3Rlc3RFbmZvcmNlUmFuZ2VPY3RldCcgaW4gY29u
dmVydGVyIGlzIHRydWUKK1BBU1MgdHlwZW9mIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0
ZXQgPT09ICdudW1iZXInIGlzIHRydWUKK2NvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0ZXQg
PSAwCitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0ZXQgaXMgMAorUEFTUyBjb252
ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZU9jdGV0ID0gLTEgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogVHlwZSBlcnJvci4KK2NvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0ZXQgPSAxCitQQVNT
IGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0ZXQgaXMgMQorY29udmVydGVyLnRlc3RFbmZv
cmNlUmFuZ2VPY3RldCA9IDB4N0YKK1BBU1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VPY3Rl
dCBpcyAweDdGCitjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZU9jdGV0ID0gMHg4MAorUEFTUyBj
b252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZU9jdGV0IGlzIDB4ODAKK2NvbnZlcnRlci50ZXN0RW5m
b3JjZVJhbmdlT2N0ZXQgPSAweEZGCitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0
ZXQgaXMgMHhGRgorUEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZU9jdGV0ID0gMHgxMDAg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgY29udmVydGVyLnRl
c3RFbmZvcmNlUmFuZ2VPY3RldCA9IDB4MTAxIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5
cGUgZXJyb3IuCitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0ZXQgPSAtMHg4MCB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBjb252ZXJ0ZXIudGVz
dEVuZm9yY2VSYW5nZU9jdGV0ID0gLTB4ODEgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlw
ZSBlcnJvci4KK1BBU1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VPY3RldCA9IE51bWJlci5N
QVhfVkFMVUUgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK2NvbnZlcnRl
ci50ZXN0RW5mb3JjZVJhbmdlT2N0ZXQgPSBOdW1iZXIuTUlOX1ZBTFVFCitQQVNTIGNvbnZlcnRl
ci50ZXN0RW5mb3JjZVJhbmdlT2N0ZXQgaXMgMAorUEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VS
YW5nZU9jdGV0ID0gLU51bWJlci5NQVhfVkFMVUUgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
VHlwZSBlcnJvci4KK2NvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0ZXQgPSAtTnVtYmVyLk1J
Tl9WQUxVRQorUEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZU9jdGV0IGlzIDAKK2NvbnZl
cnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0ZXQgPSAxLjk5CitQQVNTIGNvbnZlcnRlci50ZXN0RW5m
b3JjZVJhbmdlT2N0ZXQgaXMgMQorUEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZU9jdGV0
ID0gLTEuOTkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgY29u
dmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VPY3RldCA9IEluZmluaXR5IHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0
ZXQgPSAtSW5maW5pdHkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BB
U1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VPY3RldCA9IE5hTiB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBUeXBlIGVycm9yLgorY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VPY3RldCA9
IGZhbHNlCitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0ZXQgaXMgMAorY29udmVy
dGVyLnRlc3RFbmZvcmNlUmFuZ2VPY3RldCA9IHRydWUKK1BBU1MgY29udmVydGVyLnRlc3RFbmZv
cmNlUmFuZ2VPY3RldCBpcyAxCitjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZU9jdGV0ID0gJycK
K1BBU1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VPY3RldCBpcyAwCitjb252ZXJ0ZXIudGVz
dEVuZm9yY2VSYW5nZU9jdGV0ID0gJzEnCitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdl
T2N0ZXQgaXMgMQorUEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZU9jdGV0ID0gJ2FiYycg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK2NvbnZlcnRlci50ZXN0RW5m
b3JjZVJhbmdlT2N0ZXQgPSBudWxsCitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0
ZXQgaXMgMAorUEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZU9jdGV0ID0gdW5kZWZpbmVk
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIGNvbnZlcnRlci50
ZXN0RW5mb3JjZVJhbmdlT2N0ZXQgPSB7dmFsdWVPZjpmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJv
cignY3VzdG9tJyk7fX0gdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBjdXN0b20uCisKIFBBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9qcy93ZWJpZGwtdHlwZS1tYXBwaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2pzL3dlYmlkbC10eXBlLW1hcHBpbmcuaHRtbAppbmRleCBkODExZTVjLi5mOTc4ZDM5IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3dlYmlkbC10eXBlLW1hcHBpbmcuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3dlYmlkbC10eXBlLW1hcHBpbmcuaHRtbApAQCAtMzI1
LDUgKzMyNSwxMDEgQEAgdGVzdE5vbk51bWVyaWNUb051bWVyaWNFbmZvcmNlUmFuZ2UodHlwZSk7
CiBjb252ZXJ0VGhyb3dzKHR5cGUsICJ7dmFsdWVPZjpmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJv
cignY3VzdG9tJyk7fX0iKTsKIGRlYnVnKCIiKTsKIAordHlwZSA9ICJ0ZXN0Qnl0ZSI7Cit2ZXJp
ZnlBdHRyaWJ1dGUodHlwZSk7Citjb252ZXJ0KHR5cGUsICIwIik7Citjb252ZXJ0KHR5cGUsICIt
MSIpOworY29udmVydCh0eXBlLCAiMSIpOworY29udmVydCh0eXBlLCAiMHg3RiIpOworY29udmVy
dCh0eXBlLCAiMHg4MCIsICItMHg4MCIpOworY29udmVydCh0eXBlLCAiLTB4N0YiKTsKK2NvbnZl
cnQodHlwZSwgIi0weDgwIik7Citjb252ZXJ0KHR5cGUsICItMHg4MSIsICIweDdGIik7Citjb252
ZXJ0KHR5cGUsICJOdW1iZXIuTUlOX1ZBTFVFIiwgIjAiKTsKK2NvbnZlcnQodHlwZSwgIi1OdW1i
ZXIuTUlOX1ZBTFVFIiwgIjAiKTsKK2NvbnZlcnQodHlwZSwgIk51bWJlci5NQVhfVkFMVUUiLCAi
MCIpOworY29udmVydCh0eXBlLCAiLU51bWJlci5NQVhfVkFMVUUiLCAiMCIpOworY29udmVydCh0
eXBlLCAiMS45OSIsICIxIik7Citjb252ZXJ0KHR5cGUsICItMS45OSIsICItMSIpOworY29udmVy
dCh0eXBlLCAiSW5maW5pdHkiLCAiMCIpOworY29udmVydCh0eXBlLCAiLUluZmluaXR5IiwgIjAi
KTsKK2NvbnZlcnQodHlwZSwgIk5hTiIsICIwIik7Cit0ZXN0Tm9uTnVtZXJpY1RvTnVtZXJpYyh0
eXBlKTsKK2NvbnZlcnRUaHJvd3ModHlwZSwgInt2YWx1ZU9mOmZ1bmN0aW9uKCl7dGhyb3cgbmV3
IEVycm9yKCdjdXN0b20nKTt9fSIpOworZGVidWcoIiIpOworCit0eXBlID0gInRlc3RFbmZvcmNl
UmFuZ2VCeXRlIjsKK3ZlcmlmeUF0dHJpYnV0ZSh0eXBlKTsKK2NvbnZlcnQodHlwZSwgIjAiKTsK
K2NvbnZlcnQodHlwZSwgIi0xIik7Citjb252ZXJ0KHR5cGUsICIxIik7Citjb252ZXJ0KHR5cGUs
ICIweDdGIik7Citjb252ZXJ0VGhyb3dzKHR5cGUsICIweDgwIik7Citjb252ZXJ0KHR5cGUsICIt
MHg3RiIpOworY29udmVydCh0eXBlLCAiLTB4ODAiKTsKK2NvbnZlcnRUaHJvd3ModHlwZSwgIi0w
eDgxIik7Citjb252ZXJ0KHR5cGUsICJOdW1iZXIuTUlOX1ZBTFVFIiwgIjAiKTsKK2NvbnZlcnQo
dHlwZSwgIi1OdW1iZXIuTUlOX1ZBTFVFIiwgIjAiKTsKK2NvbnZlcnRUaHJvd3ModHlwZSwgIk51
bWJlci5NQVhfVkFMVUUiKTsKK2NvbnZlcnRUaHJvd3ModHlwZSwgIi1OdW1iZXIuTUFYX1ZBTFVF
Iik7Citjb252ZXJ0KHR5cGUsICIxLjk5IiwgIjEiKTsKK2NvbnZlcnQodHlwZSwgIi0xLjk5Iiwg
Ii0xIik7Citjb252ZXJ0VGhyb3dzKHR5cGUsICJJbmZpbml0eSIpOworY29udmVydFRocm93cyh0
eXBlLCAiLUluZmluaXR5Iik7Citjb252ZXJ0VGhyb3dzKHR5cGUsICJOYU4iKTsKK3Rlc3ROb25O
dW1lcmljVG9OdW1lcmljRW5mb3JjZVJhbmdlKHR5cGUpOworY29udmVydFRocm93cyh0eXBlLCAi
e3ZhbHVlT2Y6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoJ2N1c3RvbScpO319Iik7CitkZWJ1
ZygiIik7CisKK3R5cGUgPSAidGVzdE9jdGV0IjsKK3ZlcmlmeUF0dHJpYnV0ZSh0eXBlKTsKK2Nv
bnZlcnQodHlwZSwgIjAiKTsKK2NvbnZlcnQodHlwZSwgIi0xIiwgIjB4RkYiKTsKK2NvbnZlcnQo
dHlwZSwgIjEiKTsKK2NvbnZlcnQodHlwZSwgIjB4N0YiKTsKK2NvbnZlcnQodHlwZSwgIjB4ODAi
KTsKK2NvbnZlcnQodHlwZSwgIjB4RkYiKTsKK2NvbnZlcnQodHlwZSwgIjB4MTAwIiwgIjAiKTsK
K2NvbnZlcnQodHlwZSwgIjB4MTAxIiwgIjEiKTsKK2NvbnZlcnQodHlwZSwgIi0weDgwIiwgIjB4
ODAiKTsKK2NvbnZlcnQodHlwZSwgIi0weDgxIiwgIjB4N0YiKTsKK2NvbnZlcnQodHlwZSwgIk51
bWJlci5NQVhfVkFMVUUiLCAiMCIpOworY29udmVydCh0eXBlLCAiTnVtYmVyLk1JTl9WQUxVRSIs
ICIwIik7Citjb252ZXJ0KHR5cGUsICItTnVtYmVyLk1BWF9WQUxVRSIsICIwIik7Citjb252ZXJ0
KHR5cGUsICItTnVtYmVyLk1JTl9WQUxVRSIsICIwIik7Citjb252ZXJ0KHR5cGUsICIxLjk5Iiwg
IjEiKTsKK2NvbnZlcnQodHlwZSwgIi0xLjk5IiwgIjB4RkYiKTsKK2NvbnZlcnQodHlwZSwgIklu
ZmluaXR5IiwgIjAiKTsKK2NvbnZlcnQodHlwZSwgIi1JbmZpbml0eSIsICIwIik7Citjb252ZXJ0
KHR5cGUsICJOYU4iLCAiMCIpOwordGVzdE5vbk51bWVyaWNUb051bWVyaWModHlwZSk7Citjb252
ZXJ0VGhyb3dzKHR5cGUsICJ7dmFsdWVPZjpmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcignY3Vz
dG9tJyk7fX0iKTsKK2RlYnVnKCIiKTsKKwordHlwZSA9ICJ0ZXN0RW5mb3JjZVJhbmdlT2N0ZXQi
OwordmVyaWZ5QXR0cmlidXRlKHR5cGUpOworY29udmVydCh0eXBlLCAiMCIpOworY29udmVydFRo
cm93cyh0eXBlLCAiLTEiKTsKK2NvbnZlcnQodHlwZSwgIjEiKTsKK2NvbnZlcnQodHlwZSwgIjB4
N0YiKTsKK2NvbnZlcnQodHlwZSwgIjB4ODAiKTsKK2NvbnZlcnQodHlwZSwgIjB4RkYiKTsKK2Nv
bnZlcnRUaHJvd3ModHlwZSwgIjB4MTAwIik7Citjb252ZXJ0VGhyb3dzKHR5cGUsICIweDEwMSIp
OworY29udmVydFRocm93cyh0eXBlLCAiLTB4ODAiKTsKK2NvbnZlcnRUaHJvd3ModHlwZSwgIi0w
eDgxIik7Citjb252ZXJ0VGhyb3dzKHR5cGUsICJOdW1iZXIuTUFYX1ZBTFVFIik7Citjb252ZXJ0
KHR5cGUsICJOdW1iZXIuTUlOX1ZBTFVFIiwgIjAiKTsKK2NvbnZlcnRUaHJvd3ModHlwZSwgIi1O
dW1iZXIuTUFYX1ZBTFVFIik7Citjb252ZXJ0KHR5cGUsICItTnVtYmVyLk1JTl9WQUxVRSIsICIw
Iik7Citjb252ZXJ0KHR5cGUsICIxLjk5IiwgIjEiKTsKK2NvbnZlcnRUaHJvd3ModHlwZSwgIi0x
Ljk5Iik7Citjb252ZXJ0VGhyb3dzKHR5cGUsICJJbmZpbml0eSIpOworY29udmVydFRocm93cyh0
eXBlLCAiLUluZmluaXR5Iik7Citjb252ZXJ0VGhyb3dzKHR5cGUsICJOYU4iKTsKK3Rlc3ROb25O
dW1lcmljVG9OdW1lcmljRW5mb3JjZVJhbmdlKHR5cGUpOworY29udmVydFRocm93cyh0eXBlLCAi
e3ZhbHVlT2Y6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoJ2N1c3RvbScpO319Iik7CitkZWJ1
ZygiIik7CisKIDwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDI4MzhmMmUuLmRiMGM5OTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw0NyBAQAorMjAxMy0wNi0xMyAgQ2hyaXN0b3BoZSBEdW1leiAgPGNoLmR1bWV6
QHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgU3VwcG9ydCBieXRlIGFuZCBvY3RldCB0eXBl
cyBpbiBiaW5kaW5ncyBnZW5lcmF0b3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTc1NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgYnl0ZSBhbmQgb2N0ZXQgSURMIHR5cGVz
IHRvIHRoZSBiaW5kaW5ncworICAgICAgICBnZW5lcmF0b3I6CisgICAgICAgIGh0dHA6Ly9kZXYu
dzMub3JnLzIwMDYvd2ViYXBpL1dlYklETC8jaWRsLWJ5dGUKKyAgICAgICAgaHR0cDovL2Rldi53
My5vcmcvMjAwNi93ZWJhcGkvV2ViSURMLyNpZGwtb2N0ZXQKKworICAgICAgICBObyBuZXcgdGVz
dHMsIGNvdmVyZWQgYnkgZXhpc3RpbmcgbGF5b3V0IHRlc3RzIGFuZCBieSBuZXcKKyAgICAgICAg
YmluZGluZ3MgdGVzdHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb3ZlcmVkIGJ5IGJpbmRp
bmdzIHRlc3RzIGFuZDoKKyAgICAgICAgZmFzdC9qcy93ZWJpZGwtdHlwZS1tYXBwaW5nLmh0bWwK
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHA6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01CaW5kaW5nLmg6IEFkZCB0b0ludDgoKSAvIHRvVUludDgoKQorICAgICAg
ICBtZXRob2RzIHRvIGNvbnZlcnQgZnJvbSBKU1ZhbHVlIHRvIGludDhfdCAvIHVpbnQ4X3QgYXMK
KyAgICAgICAgc3BlY2lmaWVkIGJ5IFdlYiBJREwuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RhdGFWaWV3Q3VzdG9tLmNwcDogUmVtb3ZlIGN1c3RvbSBjb2RlIGZvcgorICAgICAgICBnZXRJ
bnQ4LCBnZXRVSW50OCwgc2V0SW50OCwgc2V0VUludDggbm93IHRoYXQgYnl0ZSBhbmQgb2N0ZXQK
KyAgICAgICAgdHlwZXMgYXJlIHN1cHBvcnRlZCBieSB0aGUgYmluZGluZ3MgZ2VuZXJhdG9yLgor
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yQ1BQLnBtOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG06CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09i
akMvRE9NVGVzdE9iai5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RP
TVRlc3RPYmoubW06CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRs
OiBBZGQgdGVzdHMgZm9yIGJ5dGUgYW5kIG9jdGV0IHR5cGVzLgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL0RhdGFWaWV3LmlkbDogUmVtb3ZlIFtDdXN0b21dIGV4dGVuZGVkIGF0dHJpYnV0ZSBmb3IK
KyAgICAgICAgZ2V0SW50OCwgZ2V0VUludDgsIHNldEludDgsIHNldFVJbnQ4IGFuZCB1c2UgbmV3
bHkgc3VwcG9ydGVkIGJ5dGUgLyBvY3RldAorICAgICAgICB0eXBlcy4KKwogMjAxMy0wNi0xMiAg
Q2hyaXN0b3BoZSBEdW1leiAgPGNoLmR1bWV6QHNpc2Euc2Ftc3VuZy5jb20+CiAKICAgICAgICAg
U3VwcG9ydCBsYXRlc3QgV2ViIElETCBpbmRleGVkIHByb3BlcnR5IGdldHRlcnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCmluZGV4IDY3MjY3ZDAuLmYzOTIx
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcApAQCAt
MzksNiArMzksNyBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KICNpbmNsdWRlIDxydW50
aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTRnVuY3Rpb24uaD4K
KyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCkBA
IC0yODYsNiArMjg3LDkgQEAgU3RydWN0dXJlKiBjYWNoZURPTVN0cnVjdHVyZShKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHUKICAgICByZXR1cm4gc3Ry
dWN0dXJlcy5zZXQoY2xhc3NJbmZvLCBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPihnbG9iYWxPYmpl
Y3QtPnZtKCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKSkuaXRlcmF0b3ItPnZhbHVlLmdldCgp
OwogfQogCitzdGF0aWMgY29uc3QgaW50OF90IGtNYXhJbnQ4ID0gMTI3Oworc3RhdGljIGNvbnN0
IGludDhfdCBrTWluSW50OCA9IC0xMjg7CitzdGF0aWMgY29uc3QgdWludDhfdCBrTWF4VUludDgg
PSAyNTU7CiBzdGF0aWMgY29uc3QgaW50MzJfdCBrTWF4SW50MzIgPSAweDdmZmZmZmZmOwogc3Rh
dGljIGNvbnN0IGludDMyX3Qga01pbkludDMyID0gLWtNYXhJbnQzMiAtIDE7CiBzdGF0aWMgY29u
c3QgdWludDMyX3Qga01heFVJbnQzMiA9IDB4ZmZmZmZmZmZVOwpAQCAtMzA1LDYgKzMwOSw1NCBA
QCBzdGF0aWMgZG91YmxlIGVuZm9yY2VSYW5nZShFeGVjU3RhdGUqIGV4ZWMsIGRvdWJsZSB4LCBk
b3VibGUgbWluaW11bSwgZG91YmxlIG1heAogICAgIHJldHVybiB4OwogfQogCisvLyBodHRwOi8v
d3d3LnczLm9yZy9UUi9XZWJJREwvI2VzLWJ5dGUKK2ludDhfdCB0b0ludDgoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHZhbHVlLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24gY29uZmln
dXJhdGlvbikKK3sKKyAgICBpZiAodmFsdWUuaXNJbnQzMigpKSB7CisgICAgICAgIGludDMyX3Qg
ZCA9IHZhbHVlLnRvSW50MzIoZXhlYyk7CisgICAgICAgIGlmIChkID49IGtNaW5JbnQ4ICYmIGQg
PD0ga01heEludDgpCisgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDhfdD4oZCk7Cisg
ICAgfQorCisgICAgZG91YmxlIHggPSB2YWx1ZS50b051bWJlcihleGVjKTsKKyAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKGNvbmZpZ3Vy
YXRpb24gPT0gRW5mb3JjZVJhbmdlKQorICAgICAgICByZXR1cm4gZW5mb3JjZVJhbmdlKGV4ZWMs
IHgsIGtNaW5JbnQ4LCBrTWF4SW50OCk7CisKKyAgICBpZiAoc3RkOjppc25hbih4KSB8fCBzdGQ6
OmlzaW5mKHgpIHx8ICF4KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHggPSB4IDwgMCA/IC1m
bG9vcihhYnMoeCkpIDogZmxvb3IoYWJzKHgpKTsKKyAgICB4ID0gZm1vZCh4LCAyNTYpOyAvLyAy
XjguCisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50OF90Pih4ID4ga01heEludDggPyB4IC0g
MjU2IDogeCk7Cit9CisKKy8vIGh0dHA6Ly93d3cudzMub3JnL1RSL1dlYklETC8jZXMtb2N0ZXQK
K3VpbnQ4X3QgdG9VSW50OChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIEludGVnZXJD
b252ZXJzaW9uQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQoreworICAgIGlmICh2YWx1ZS5p
c1VJbnQzMigpKSB7CisgICAgICAgIHVpbnQzMl90IGQgPSB2YWx1ZS50b1VJbnQzMihleGVjKTsK
KyAgICAgICAgaWYgKGQgPD0ga01heFVJbnQ4KQorICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDx1aW50OF90PihkKTsKKyAgICB9CisKKyAgICBkb3VibGUgeCA9IHZhbHVlLnRvTnVtYmVyKGV4
ZWMpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICBpZiAoY29uZmlndXJhdGlvbiA9PSBFbmZvcmNlUmFuZ2UpCisgICAgICAgIHJldHVybiBl
bmZvcmNlUmFuZ2UoZXhlYywgeCwgMCwga01heFVJbnQ4KTsKKworICAgIGlmIChzdGQ6OmlzbmFu
KHgpIHx8IHN0ZDo6aXNpbmYoeCkgfHwgIXgpCisgICAgICAgIHJldHVybiAwOworCisgICAgeCA9
IHggPCAwID8gLWZsb29yKGFicyh4KSkgOiBmbG9vcihhYnMoeCkpOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDx1aW50OF90PihmbW9kKHgsIDI1NikpOyAvLyAyXjguCit9CisKIC8vIGh0dHA6Ly93
d3cudzMub3JnL1RSL1dlYklETC8jZXMtbG9uZwogaW50MzJfdCB0b0ludDMyRW5mb3JjZVJhbmdl
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01CaW5kaW5nLmgKaW5kZXggNDQ4NDQwNC4uOTJlY2NiNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKQEAgLTI2Nyw2ICsyNjcsOSBAQCBjbGFz
cyBET01TdHJpbmdMaXN0OwogICAgIGludDMyX3QgdG9JbnQzMkVuZm9yY2VSYW5nZShKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSk7CiAgICAgdWludDMyX3QgdG9VSW50MzJFbmZvcmNlUmFu
Z2UoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUpOwogCisgICAgaW50OF90IHRvSW50OChK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0
aW9uKTsKKyAgICB1aW50OF90IHRvVUludDgoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUs
IEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbik7CisKICAgICAvKgogICAgICAgICBDb252
ZXJ0IGEgdmFsdWUgdG8gYW4gaW50ZWdlciBhcyBwZXIgPGh0dHA6Ly93d3cudzMub3JnL1RSL1dl
YklETC8+LgogICAgICAgICBUaGUgY29udmVyc2lvbiBmYWlscyBpZiB0aGUgdmFsdWUgY2Fubm90
IGJlIGNvbnZlcnRlZCB0byBhIG51bWJlciBvciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRGF0YVZpZXdDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNEYXRhVmlld0N1c3RvbS5jcHAKaW5kZXggNjA0Y2IxMC4uMjM2NDFlMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhVmlld0N1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhVmlld0N1c3RvbS5jcHAKQEAgLTM2
LDggKzM2LDYgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ZW51bSBEYXRhVmlld0FjY2Vzc1R5cGUgewotICAgIEFjY2Vzc0RhdGFWaWV3TWVtYmVyQXNJbnQ4
LAotICAgIEFjY2Vzc0RhdGFWaWV3TWVtYmVyQXNVaW50OCwKICAgICBBY2Nlc3NEYXRhVmlld01l
bWJlckFzRmxvYXQzMiwKICAgICBBY2Nlc3NEYXRhVmlld01lbWJlckFzRmxvYXQ2NAogfTsKQEAg
LTgwLDEyICs3OCw2IEBAIHN0YXRpYyBKU1ZhbHVlIGdldERhdGFWaWV3TWVtYmVyKEV4ZWNTdGF0
ZSogZXhlYywgRGF0YVZpZXcqIGltcCwgRGF0YVZpZXdBY2Nlc3NUCiAKICAgICBKU0M6OkpTVmFs
dWUgcmVzdWx0OwogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgQWNjZXNzRGF0YVZpZXdN
ZW1iZXJBc0ludDg6Ci0gICAgICAgIHJlc3VsdCA9IGpzTnVtYmVyKGltcC0+Z2V0SW50OChieXRl
T2Zmc2V0LCBlYykpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFjY2Vzc0RhdGFWaWV3TWVt
YmVyQXNVaW50ODoKLSAgICAgICAgcmVzdWx0ID0ganNOdW1iZXIoaW1wLT5nZXRVaW50OChieXRl
T2Zmc2V0LCBlYykpOwotICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc0RhdGFWaWV3TWVt
YmVyQXNGbG9hdDMyOgogICAgIGNhc2UgQWNjZXNzRGF0YVZpZXdNZW1iZXJBc0Zsb2F0NjQ6IHsK
ICAgICAgICAgZG91YmxlIHZhbHVlID0gKHR5cGUgPT0gQWNjZXNzRGF0YVZpZXdNZW1iZXJBc0Zs
b2F0MzIpID8gaW1wLT5nZXRGbG9hdDMyKGJ5dGVPZmZzZXQsIGxpdHRsZUVuZGlhbiwgZWMpIDog
aW1wLT5nZXRGbG9hdDY0KGJ5dGVPZmZzZXQsIGxpdHRsZUVuZGlhbiwgZWMpOwpAQCAtOTksMTYg
KzkxLDYgQEAgc3RhdGljIEpTVmFsdWUgZ2V0RGF0YVZpZXdNZW1iZXIoRXhlY1N0YXRlKiBleGVj
LCBEYXRhVmlldyogaW1wLCBEYXRhVmlld0FjY2Vzc1QKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci1KU1ZhbHVlIEpTRGF0YVZpZXc6OmdldEludDgoRXhlY1N0YXRlKiBleGVjKQotewotICAgIHJl
dHVybiBnZXREYXRhVmlld01lbWJlcihleGVjLCBzdGF0aWNfY2FzdDxEYXRhVmlldyo+KGltcGwo
KSksIEFjY2Vzc0RhdGFWaWV3TWVtYmVyQXNJbnQ4KTsKLX0KLQotSlNWYWx1ZSBKU0RhdGFWaWV3
OjpnZXRVaW50OChFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgcmV0dXJuIGdldERhdGFWaWV3TWVt
YmVyKGV4ZWMsIHN0YXRpY19jYXN0PERhdGFWaWV3Kj4oaW1wbCgpKSwgQWNjZXNzRGF0YVZpZXdN
ZW1iZXJBc1VpbnQ4KTsKLX0KLQogSlNWYWx1ZSBKU0RhdGFWaWV3OjpnZXRGbG9hdDMyKEV4ZWNT
dGF0ZSogZXhlYykKIHsKICAgICByZXR1cm4gZ2V0RGF0YVZpZXdNZW1iZXIoZXhlYywgc3RhdGlj
X2Nhc3Q8RGF0YVZpZXcqPihpbXBsKCkpLCBBY2Nlc3NEYXRhVmlld01lbWJlckFzRmxvYXQzMik7
CkBAIC0xMTksNDEgKzEwMSw0IEBAIEpTVmFsdWUgSlNEYXRhVmlldzo6Z2V0RmxvYXQ2NChFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIGdldERhdGFWaWV3TWVtYmVyKGV4ZWMsIHN0YXRpY19j
YXN0PERhdGFWaWV3Kj4oaW1wbCgpKSwgQWNjZXNzRGF0YVZpZXdNZW1iZXJBc0Zsb2F0NjQpOwog
fQogCi1zdGF0aWMgSlNWYWx1ZSBzZXREYXRhVmlld01lbWJlcihFeGVjU3RhdGUqIGV4ZWMsIERh
dGFWaWV3KiBpbXAsIERhdGFWaWV3QWNjZXNzVHlwZSB0eXBlKQotewotICAgIGlmIChleGVjLT5h
cmd1bWVudENvdW50KCkgPCAyKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvVUludDMy
KGV4ZWMpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7Ci0gICAgaW50IHZhbHVlID0gZXhlYy0+YXJndW1lbnQoMSkudG9JbnQzMihl
eGVjKTsKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwotICAgICAgICAKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIEFjY2Vz
c0RhdGFWaWV3TWVtYmVyQXNJbnQ4OgotICAgICAgICBpbXAtPnNldEludDgoYnl0ZU9mZnNldCwg
c3RhdGljX2Nhc3Q8aW50OF90Pih2YWx1ZSksIGVjKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBBY2Nlc3NEYXRhVmlld01lbWJlckFzVWludDg6Ci0gICAgICAgIGltcC0+c2V0VWludDgoYnl0
ZU9mZnNldCwgc3RhdGljX2Nhc3Q8dWludDhfdD4odmFsdWUpLCBlYyk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBi
cmVhazsKLSAgICB9Ci0gICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKLSAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKLX0KLQotSlNWYWx1ZSBKU0RhdGFWaWV3OjpzZXRJbnQ4KEV4ZWNTdGF0
ZSogZXhlYykKLXsKLSAgICByZXR1cm4gc2V0RGF0YVZpZXdNZW1iZXIoZXhlYywgc3RhdGljX2Nh
c3Q8RGF0YVZpZXcqPihpbXBsKCkpLCBBY2Nlc3NEYXRhVmlld01lbWJlckFzSW50OCk7Ci19Ci0K
LUpTVmFsdWUgSlNEYXRhVmlldzo6c2V0VWludDgoRXhlY1N0YXRlKiBleGVjKQotewotICAgIHJl
dHVybiBzZXREYXRhVmlld01lbWJlcihleGVjLCBzdGF0aWNfY2FzdDxEYXRhVmlldyo+KGltcGwo
KSksIEFjY2Vzc0RhdGFWaWV3TWVtYmVyQXNVaW50OCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckNQUC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckNQUC5wbQppbmRleCAyM2Y4M2Q0Li5kZjFmYzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JDUFAucG0KKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yQ1BQLnBtCkBAIC0yMzYsNiArMjM2
LDggQEAgc3ViIEdldENQUFR5cGUKICAgICBteSAkdXNlQ29uc3RSZWZlcmVuY2UgPSBzaGlmdDsK
ICAgICBteSAkbmFtZSA9IEdldENsYXNzTmFtZSgkdHlwZSk7CiAKKyAgICByZXR1cm4gImNoYXIi
IGlmICR0eXBlIGVxICJieXRlIjsKKyAgICByZXR1cm4gInVuc2lnbmVkIGNoYXIiIGlmICR0eXBl
IGVxICJvY3RldCI7CiAgICAgcmV0dXJuICJpbnQiIGlmICR0eXBlIGVxICJsb25nIjsKICAgICBy
ZXR1cm4gInVuc2lnbmVkIiBpZiAkbmFtZSBlcSAidW5zaWduZWQgbG9uZyI7CiAgICAgcmV0dXJu
ICJ1bnNpZ25lZCBzaG9ydCIgaWYgJHR5cGUgZXEgIkNvbXBhcmVIb3ciOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbSBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0K
aW5kZXggY2YwYjc0NC4uNTViMDVkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtCkBAIC0zMjgsNiArMzI4LDgg
QEAgc3ViIEdldEdWYWx1ZVR5cGVOYW1lIHsKICAgICAgICAgICAgICAgICAgImNoYXIiLCAiY2hh
ciIsCiAgICAgICAgICAgICAgICAgICJsb25nIiwgImxvbmciLAogICAgICAgICAgICAgICAgICAi
bG9uZyBsb25nIiwgImludDY0IiwKKyAgICAgICAgICAgICAgICAgImJ5dGUiLCAiaW50OCIsCisg
ICAgICAgICAgICAgICAgICJvY3RldCIsICJ1aW50OCIsCiAgICAgICAgICAgICAgICAgICJzaG9y
dCIsICJpbnQiLAogICAgICAgICAgICAgICAgICAidWNoYXIiLCAidWNoYXIiLAogICAgICAgICAg
ICAgICAgICAidW5zaWduZWQiLCAidWludCIsCkBAIC0zNTQsNiArMzU2LDggQEAgc3ViIEdldEds
aWJUeXBlTmFtZSB7CiAgICAgICAgICAgICAgICAgICJjaGFyIiwgImdjaGFyIiwKICAgICAgICAg
ICAgICAgICAgImxvbmciLCAiZ2xvbmciLAogICAgICAgICAgICAgICAgICAibG9uZyBsb25nIiwg
ImdpbnQ2NCIsCisgICAgICAgICAgICAgICAgICJieXRlIiwgImdpbnQ4IiwKKyAgICAgICAgICAg
ICAgICAgIm9jdGV0IiwgImd1aW50OCIsCiAgICAgICAgICAgICAgICAgICJzaG9ydCIsICJnc2hv
cnQiLAogICAgICAgICAgICAgICAgICAidWNoYXIiLCAiZ3VjaGFyIiwKICAgICAgICAgICAgICAg
ICAgInVuc2lnbmVkIiwgImd1aW50IiwKQEAgLTM5Niw4ICs0MDAsOSBAQCBzdWIgR2V0V3JpdGVh
YmxlUHJvcGVydGllcyB7CiAgICAgICAgIG15ICRndHlwZSA9IEdldEdWYWx1ZVR5cGVOYW1lKCRw
cm9wZXJ0eS0+c2lnbmF0dXJlLT50eXBlKTsKICAgICAgICAgbXkgJGhhc0d0eXBlU2lnbmF0dXJl
ID0gKCRndHlwZSBlcSAiYm9vbGVhbiIgfHwgJGd0eXBlIGVxICJmbG9hdCIgfHwgJGd0eXBlIGVx
ICJkb3VibGUiIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZ3R5cGUgZXEg
InVpbnQ2NCIgfHwgJGd0eXBlIGVxICJ1bG9uZyIgfHwgJGd0eXBlIGVxICJsb25nIiB8fCAKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRndHlwZSBlcSAidWludCIgfHwgJGd0eXBl
IGVxICJ1c2hvcnQiIHx8ICRndHlwZSBlcSAidWNoYXIiIHx8Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAkZ3R5cGUgZXEgImNoYXIiIHx8ICRndHlwZSBlcSAic3RyaW5nIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZ3R5cGUgZXEgInVpbnQiIHx8ICRndHlw
ZSBlcSAidXNob3J0IiB8fCAkZ3R5cGUgZXEgImludDgiIHx8CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAkZ3R5cGUgZXEgInVpbnQ4IiB8fCAkZ3R5cGUgZXEgInVjaGFyIiB8fCAk
Z3R5cGUgZXEgImNoYXIiIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZ3R5
cGUgZXEgInN0cmluZyIpOwogICAgICAgICAjIEZJWE1FOiBXZSBhcmUgbm90IGdlbmVyYXRpbmcg
c2V0dGVycyBmb3IgJ1JlcGxhY2VhYmxlJwogICAgICAgICAjIGF0dHJpYnV0ZXMgbm93LCBidXQg
d2Ugc2hvdWxkIHNvbWVob3cuCiAgICAgICAgIG15ICRyZXBsYWNlYWJsZSA9ICRwcm9wZXJ0eS0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmVwbGFjZWFibGUifTsKQEAgLTU2OCw2
ICs1NzMsNyBAQCBzdWIgR2VuZXJhdGVQcm9wZXJ0eSB7CiAgICAgcHVzaChAdHh0R2V0UHJvcHMs
ICIgICAgICAgIGJyZWFrO1xuICAgIH1cbiIpOwogCiAgICAgbXkgJXBhcmFtX3NwZWNfb3B0aW9u
cyA9ICgiaW50IiwgIkdfTUlOSU5ULCAvKiBtaW4gKi9cbkdfTUFYSU5ULCAvKiBtYXggKi9cbjAs
IC8qIGRlZmF1bHQgKi8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludDgiLCAi
R19NSU5JTlQ4LCAvKiBtaW4gKi9cbkdfTUFYSU5UOCwgLyogbWF4ICovXG4wLCAvKiBkZWZhdWx0
ICovIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJib29sZWFuIiwgIkZBTFNFLCAv
KiBkZWZhdWx0ICovIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmbG9hdCIsICIt
R19NQVhGTE9BVCwgLyogbWluICovXG5HX01BWEZMT0FULCAvKiBtYXggKi9cbjAuMCwgLyogZGVm
YXVsdCAqLyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZG91YmxlIiwgIi1HX01B
WERPVUJMRSwgLyogbWluICovXG5HX01BWERPVUJMRSwgLyogbWF4ICovXG4wLjAsIC8qIGRlZmF1
bHQgKi8iLApAQCAtNTc2LDYgKzU4Miw3IEBAIHN1YiBHZW5lcmF0ZVByb3BlcnR5IHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJpbnQ2NCIsICJHX01JTklOVDY0LCAvKiBtaW4gKi9c
bkdfTUFYSU5UNjQsIC8qIG1heCAqL1xuMCwgLyogZGVmYXVsdCAqLyIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAidWxvbmciLCAiMCwgLyogbWluICovXG5HX01BWFVMT05HLCAvKiBt
YXggKi9cbjAsIC8qIGRlZmF1bHQgKi8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InVpbnQiLCAiMCwgLyogbWluICovXG5HX01BWFVJTlQsIC8qIG1heCAqL1xuMCwgLyogZGVmYXVs
dCAqLyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidWludDgiLCAiMCwgLyogbWlu
ICovXG5HX01BWFVJTlQ4LCAvKiBtYXggKi9cbjAsIC8qIGRlZmF1bHQgKi8iLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInVzaG9ydCIsICIwLCAvKiBtaW4gKi9cbkdfTUFYVUlOVDE2
LCAvKiBtYXggKi9cbjAsIC8qIGRlZmF1bHQgKi8iLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgInVjaGFyIiwgIkdfTUlOSU5UOCwgLyogbWluICovXG5HX01BWElOVDgsIC8qIG1heCAq
L1xuMCwgLyogZGVmYXVsdCAqLyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hh
ciIsICIwLCAvKiBtaW4gKi9cbkdfTUFYVUlOVDgsIC8qIG1heCAqL1xuMCwgLyogZGVmYXVsdCAq
LyIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCmluZGV4IDFmMzNjMjEuLjMxMWEwZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0zMzc1LDYgKzMzNzUsOCBA
QCBteSAlbmF0aXZlVHlwZSA9ICgKICAgICAidW5zaWduZWQgc2hvcnQiID0+ICJ1bnNpZ25lZCBz
aG9ydCIsCiAgICAgImxvbmcgbG9uZyIgPT4gImxvbmcgbG9uZyIsCiAgICAgInVuc2lnbmVkIGxv
bmcgbG9uZyIgPT4gInVuc2lnbmVkIGxvbmcgbG9uZyIsCisgICAgImJ5dGUiID0+ICJpbnQ4X3Qi
LAorICAgICJvY3RldCIgPT4gInVpbnQ4X3QiLAogICAgICJNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
IiA9PiAiUmVmUHRyPE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+IiwKICAgICAiRE9NVGltZVN0YW1w
IiA9PiAiRE9NVGltZVN0YW1wIiwgICAgCiApOwpAQCAtMzQ3OSw2ICszNDgxLDggQEAgc3ViIEpT
VmFsdWVUb05hdGl2ZQogICAgIHJldHVybiAiJHZhbHVlLnRvRmxvYXQoZXhlYykiIGlmICR0eXBl
IGVxICJmbG9hdCI7CiAKICAgICBteSAkaW50Q29udmVyc2lvbiA9ICRzaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJFbmZvcmNlUmFuZ2UifSA/ICJFbmZvcmNlUmFuZ2UiIDogIk5vcm1h
bENvbnZlcnNpb24iOworICAgIHJldHVybiAidG9JbnQ4KGV4ZWMsICR2YWx1ZSwgJGludENvbnZl
cnNpb24pIiBpZiAkdHlwZSBlcSAiYnl0ZSI7CisgICAgcmV0dXJuICJ0b1VJbnQ4KGV4ZWMsICR2
YWx1ZSwgJGludENvbnZlcnNpb24pIiBpZiAkdHlwZSBlcSAib2N0ZXQiOwogICAgIHJldHVybiAi
dG9JbnQzMihleGVjLCAkdmFsdWUsICRpbnRDb252ZXJzaW9uKSIgaWYgJHR5cGUgZXEgImxvbmci
IG9yICR0eXBlIGVxICJzaG9ydCI7CiAgICAgcmV0dXJuICJ0b1VJbnQzMihleGVjLCAkdmFsdWUs
ICRpbnRDb252ZXJzaW9uKSIgaWYgJHR5cGUgZXEgInVuc2lnbmVkIGxvbmciIG9yICR0eXBlIGVx
ICJ1bnNpZ25lZCBzaG9ydCI7CiAgICAgcmV0dXJuICJ0b0ludDY0KGV4ZWMsICR2YWx1ZSwgJGlu
dENvbnZlcnNpb24pIiBpZiAkdHlwZSBlcSAibG9uZyBsb25nIjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0gYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCmluZGV4IDc4Yjdj
NzMuLjI5YjEzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvck9iakMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQpAQCAtMzAyLDYgKzMwMiw4IEBAIHN1YiBHZXRDbGFzc05h
bWUKICAgICByZXR1cm4gIk5TU3RyaW5nIiBpZiAkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBl
KCRuYW1lKSBvciAkbmFtZSBlcSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlIjsKICAgICByZXR1cm4g
Ik5TJG5hbWUiIGlmIElzTmF0aXZlT2JqQ1R5cGUoJG5hbWUpOwogICAgIHJldHVybiAiQk9PTCIg
aWYgJG5hbWUgZXEgImJvb2xlYW4iOworICAgIHJldHVybiAidW5zaWduZWQgY2hhciIgaWYgJG5h
bWUgZXEgIm9jdGV0IjsKKyAgICByZXR1cm4gImNoYXIiIGlmICRuYW1lIGVxICJieXRlIjsKICAg
ICByZXR1cm4gInVuc2lnbmVkIiBpZiAkbmFtZSBlcSAidW5zaWduZWQgbG9uZyI7CiAgICAgcmV0
dXJuICJpbnQiIGlmICRuYW1lIGVxICJsb25nIjsKICAgICByZXR1cm4gIk5TVGltZUludGVydmFs
IiBpZiAkbmFtZSBlcSAiRGF0ZSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcAppbmRleCA5ZDYzMDgzLi5m
ZTU1NDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
Q1BQL1dlYkRPTVRlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHAKQEAgLTExNiw2ICsxMTYsMzggQEAgV2ViRE9N
VGVzdE9iaiBXZWJET01UZXN0T2JqOjpyZWFkT25seVRlc3RPYmpBdHRyKCkgY29uc3QKICAgICBy
ZXR1cm4gdG9XZWJLaXQoV1RGOjpnZXRQdHIoaW1wbCgpLT5yZWFkT25seVRlc3RPYmpBdHRyKCkp
KTsKIH0KIAorY2hhciBXZWJET01UZXN0T2JqOjpieXRlQXR0cigpIGNvbnN0Cit7CisgICAgaWYg
KCFpbXBsKCkpCisgICAgICAgIHJldHVybiBjaGFyKCk7CisKKyAgICByZXR1cm4gaW1wbCgpLT5i
eXRlQXR0cigpOworfQorCit2b2lkIFdlYkRPTVRlc3RPYmo6OnNldEJ5dGVBdHRyKGNoYXIgbmV3
Qnl0ZUF0dHIpCit7CisgICAgaWYgKCFpbXBsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlt
cGwoKS0+c2V0Qnl0ZUF0dHIobmV3Qnl0ZUF0dHIpOworfQorCit1bnNpZ25lZCBjaGFyIFdlYkRP
TVRlc3RPYmo6Om9jdGV0QXR0cigpIGNvbnN0Cit7CisgICAgaWYgKCFpbXBsKCkpCisgICAgICAg
IHJldHVybiB1bnNpZ25lZCBjaGFyKCk7CisKKyAgICByZXR1cm4gaW1wbCgpLT5vY3RldEF0dHIo
KTsKK30KKwordm9pZCBXZWJET01UZXN0T2JqOjpzZXRPY3RldEF0dHIodW5zaWduZWQgY2hhciBu
ZXdPY3RldEF0dHIpCit7CisgICAgaWYgKCFpbXBsKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGltcGwoKS0+c2V0T2N0ZXRBdHRyKG5ld09jdGV0QXR0cik7Cit9CisKIHNob3J0IFdlYkRPTVRl
c3RPYmo6OnNob3J0QXR0cigpIGNvbnN0CiB7CiAgICAgaWYgKCFpbXBsKCkpCkBAIC03NDksNiAr
NzgxLDM4IEBAIHZvaWQgV2ViRE9NVGVzdE9iajo6dm9pZE1ldGhvZFdpdGhBcmdzKGludCBsb25n
QXJnLCBjb25zdCBXZWJET01TdHJpbmcmIHN0ckFyZywKICAgICBpbXBsKCktPnZvaWRNZXRob2RX
aXRoQXJncyhsb25nQXJnLCBzdHJBcmcsIHRvV2ViQ29yZShvYmpBcmcpKTsKIH0KIAorY2hhciBX
ZWJET01UZXN0T2JqOjpieXRlTWV0aG9kKCkKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAg
cmV0dXJuIGNoYXIoKTsKKworICAgIHJldHVybiBpbXBsKCktPmJ5dGVNZXRob2QoKTsKK30KKwor
Y2hhciBXZWJET01UZXN0T2JqOjpieXRlTWV0aG9kV2l0aEFyZ3MoY2hhciBieXRlQXJnLCBjb25z
dCBXZWJET01TdHJpbmcmIHN0ckFyZywgY29uc3QgV2ViRE9NVGVzdE9iaiYgb2JqQXJnKQorewor
ICAgIGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm4gY2hhcigpOworCisgICAgcmV0dXJuIGlt
cGwoKS0+Ynl0ZU1ldGhvZFdpdGhBcmdzKGJ5dGVBcmcsIHN0ckFyZywgdG9XZWJDb3JlKG9iakFy
ZykpOworfQorCit1bnNpZ25lZCBjaGFyIFdlYkRPTVRlc3RPYmo6Om9jdGV0TWV0aG9kKCkKK3sK
KyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuIHVuc2lnbmVkIGNoYXIoKTsKKworICAg
IHJldHVybiBpbXBsKCktPm9jdGV0TWV0aG9kKCk7Cit9CisKK3Vuc2lnbmVkIGNoYXIgV2ViRE9N
VGVzdE9iajo6b2N0ZXRNZXRob2RXaXRoQXJncyh1bnNpZ25lZCBjaGFyIG9jdGV0QXJnLCBjb25z
dCBXZWJET01TdHJpbmcmIHN0ckFyZywgY29uc3QgV2ViRE9NVGVzdE9iaiYgb2JqQXJnKQorewor
ICAgIGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm4gdW5zaWduZWQgY2hhcigpOworCisgICAg
cmV0dXJuIGltcGwoKS0+b2N0ZXRNZXRob2RXaXRoQXJncyhvY3RldEFyZywgc3RyQXJnLCB0b1dl
YkNvcmUob2JqQXJnKSk7Cit9CisKIGludCBXZWJET01UZXN0T2JqOjpsb25nTWV0aG9kKCkKIHsK
ICAgICBpZiAoIWltcGwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmgKaW5kZXggYmJkMWRmYi4uNTVlYjY5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJE
T01UZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQ
UC9XZWJET01UZXN0T2JqLmgKQEAgLTcxLDYgKzcxLDEwIEBAIHB1YmxpYzoKICAgICBpbnQgcmVh
ZE9ubHlMb25nQXR0cigpIGNvbnN0OwogICAgIFdlYkRPTVN0cmluZyByZWFkT25seVN0cmluZ0F0
dHIoKSBjb25zdDsKICAgICBXZWJET01UZXN0T2JqIHJlYWRPbmx5VGVzdE9iakF0dHIoKSBjb25z
dDsKKyAgICBjaGFyIGJ5dGVBdHRyKCkgY29uc3Q7CisgICAgdm9pZCBzZXRCeXRlQXR0cihjaGFy
KTsKKyAgICB1bnNpZ25lZCBjaGFyIG9jdGV0QXR0cigpIGNvbnN0OworICAgIHZvaWQgc2V0T2N0
ZXRBdHRyKHVuc2lnbmVkIGNoYXIpOwogICAgIHNob3J0IHNob3J0QXR0cigpIGNvbnN0OwogICAg
IHZvaWQgc2V0U2hvcnRBdHRyKHNob3J0KTsKICAgICB1bnNpZ25lZCBzaG9ydCB1bnNpZ25lZFNo
b3J0QXR0cigpIGNvbnN0OwpAQCAtMTU0LDYgKzE1OCwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHZvaWRNZXRob2QoKTsKICAgICB2b2lkIHZvaWRNZXRob2RXaXRoQXJncyhpbnQgbG9uZ0FyZywg
Y29uc3QgV2ViRE9NU3RyaW5nJiBzdHJBcmcsIGNvbnN0IFdlYkRPTVRlc3RPYmomIG9iakFyZyk7
CisgICAgY2hhciBieXRlTWV0aG9kKCk7CisgICAgY2hhciBieXRlTWV0aG9kV2l0aEFyZ3MoY2hh
ciBieXRlQXJnLCBjb25zdCBXZWJET01TdHJpbmcmIHN0ckFyZywgY29uc3QgV2ViRE9NVGVzdE9i
aiYgb2JqQXJnKTsKKyAgICB1bnNpZ25lZCBjaGFyIG9jdGV0TWV0aG9kKCk7CisgICAgdW5zaWdu
ZWQgY2hhciBvY3RldE1ldGhvZFdpdGhBcmdzKHVuc2lnbmVkIGNoYXIgb2N0ZXRBcmcsIGNvbnN0
IFdlYkRPTVN0cmluZyYgc3RyQXJnLCBjb25zdCBXZWJET01UZXN0T2JqJiBvYmpBcmcpOwogICAg
IGludCBsb25nTWV0aG9kKCk7CiAgICAgaW50IGxvbmdNZXRob2RXaXRoQXJncyhpbnQgbG9uZ0Fy
ZywgY29uc3QgV2ViRE9NU3RyaW5nJiBzdHJBcmcsIGNvbnN0IFdlYkRPTVRlc3RPYmomIG9iakFy
Zyk7CiAgICAgV2ViRE9NVGVzdE9iaiBvYmpNZXRob2QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9N
VGVzdE9iai5jcHAKaW5kZXggMjNkYTQxYS4uMGM3ZTU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0
RE9NVGVzdE9iai5jcHAKQEAgLTc5LDYgKzc5LDggQEAgZW51bSB7CiAgICAgUFJPUF9SRUFEX09O
TFlfTE9OR19BVFRSLAogICAgIFBST1BfUkVBRF9PTkxZX1NUUklOR19BVFRSLAogICAgIFBST1Bf
UkVBRF9PTkxZX1RFU1RfT0JKX0FUVFIsCisgICAgUFJPUF9CWVRFX0FUVFIsCisgICAgUFJPUF9P
Q1RFVF9BVFRSLAogICAgIFBST1BfU0hPUlRfQVRUUiwKICAgICBQUk9QX1VOU0lHTkVEX1NIT1JU
X0FUVFIsCiAgICAgUFJPUF9MT05HX0FUVFIsCkBAIC0xNDgsNiArMTUwLDE0IEBAIHN0YXRpYyB2
b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3Vp
bnQgcHJvcGVydHlJZCwKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBjb3JlU2VsZiA9IFdlYktpdDo6
Y29yZShzZWxmKTsKIAogICAgIHN3aXRjaCAocHJvcGVydHlJZCkgeworICAgIGNhc2UgUFJPUF9C
WVRFX0FUVFI6IHsKKyAgICAgICAgY29yZVNlbGYtPnNldEJ5dGVBdHRyKChnX3ZhbHVlX2dldF9p
bnQ4KHZhbHVlKSkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQUk9QX09DVEVU
X0FUVFI6IHsKKyAgICAgICAgY29yZVNlbGYtPnNldE9jdGV0QXR0cigoZ192YWx1ZV9nZXRfdWlu
dDgodmFsdWUpKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIFBST1BfVU5TSUdO
RURfU0hPUlRfQVRUUjogewogICAgICAgICBjb3JlU2VsZi0+c2V0VW5zaWduZWRTaG9ydEF0dHIo
KGdfdmFsdWVfZ2V0X3VpbnQodmFsdWUpKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzAzLDYgKzMx
MywxNCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9wcm9wZXJ0eShHT2Jq
ZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsCiAgICAgICAgIGdfdmFsdWVfc2V0X29iamVj
dCh2YWx1ZSwgV2ViS2l0OjpraXQocHRyLmdldCgpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
KyAgICBjYXNlIFBST1BfQllURV9BVFRSOiB7CisgICAgICAgIGdfdmFsdWVfc2V0X2ludDgodmFs
dWUsIGNvcmVTZWxmLT5ieXRlQXR0cigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNh
c2UgUFJPUF9PQ1RFVF9BVFRSOiB7CisgICAgICAgIGdfdmFsdWVfc2V0X3VpbnQ4KHZhbHVlLCBj
b3JlU2VsZi0+b2N0ZXRBdHRyKCkpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBQ
Uk9QX1NIT1JUX0FUVFI6IHsKICAgICAgICAgZ192YWx1ZV9zZXRfaW50KHZhbHVlLCBjb3JlU2Vs
Zi0+c2hvcnRBdHRyKCkpOwogICAgICAgICBicmVhazsKQEAgLTU5Miw2ICs2MTAsMjQgQEAgR19N
QVhMT05HLCAvKiBtYXggKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1RZUEVfRE9NX1RFU1RfT0JKLCAvKiBnb2JqZWN0
IHR5cGUgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7CiAgICAgZ19vYmplY3RfY2xhc3Nf
aW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQUk9QX0JZVEVfQVRUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdfcGFyYW1fc3BlY19pbnQ4KCJieXRlLWF0dHIiLCAvKiBuYW1lICovCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0
X29ial9ieXRlLWF0dHIiLCAvKiBzaG9ydCBkZXNjcmlwdGlvbiAqLworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVhZC13cml0ZSAg
Z2ludDggVGVzdE9iai5ieXRlLWF0dHIiLCAvKiBsb25nZXIgLSBjb3VsZCBkbyB3aXRoIHNvbWUg
ZXh0cmEgZG9jIHN0dWZmIGhlcmUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR19NSU5JTlQ4LCAvKiBtaW4gKi8KK0dfTUFYSU5U
OCwgLyogbWF4ICovCiswLCAvKiBkZWZhdWx0ICovCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUp
KTsKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RDbGFzcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfT0NURVRfQVRUUiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY191aW50OCgib2N0ZXQt
YXR0ciIsIC8qIG5hbWUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInRlc3Rfb2JqX29jdGV0LWF0dHIiLCAvKiBzaG9ydCBkZXNj
cmlwdGlvbiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAicmVhZC13cml0ZSAgZ3VpbnQ4IFRlc3RPYmoub2N0ZXQtYXR0ciIsIC8q
IGxvbmdlciAtIGNvdWxkIGRvIHdpdGggc29tZSBleHRyYSBkb2Mgc3R1ZmYgaGVyZSAqLworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
LCAvKiBtaW4gKi8KK0dfTUFYVUlOVDgsIC8qIG1heCAqLworMCwgLyogZGVmYXVsdCAqLworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
RUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7CisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9w
ZXJ0eShnb2JqZWN0Q2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
Uk9QX1NIT1JUX0FUVFIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3Bh
cmFtX3NwZWNfaW50KCJzaG9ydC1hdHRyIiwgLyogbmFtZSAqLwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdF9vYmpfc2hvcnQt
YXR0ciIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICovCkBAIC0xMDEwLDYgKzEwNDYsNTQgQEAgd2Vi
a2l0X2RvbV90ZXN0X29ial92b2lkX21ldGhvZF93aXRoX2FyZ3MoV2ViS2l0RE9NVGVzdE9iaiog
c2VsZiwgZ2xvbmcgbG9uZ0FyZywKICAgICBpdGVtLT52b2lkTWV0aG9kV2l0aEFyZ3MobG9uZ0Fy
ZywgY29udmVydGVkU3RyQXJnLCBjb252ZXJ0ZWRPYmpBcmcpOwogfQogCitnaW50OAord2Via2l0
X2RvbV90ZXN0X29ial9ieXRlX21ldGhvZChXZWJLaXRET01UZXN0T2JqKiBzZWxmKQoreworICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpLCAwKTsKKyAgICBXZWJDb3JlOjpU
ZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGdpbnQ4IHJlc3VsdCA9IGl0
ZW0tPmJ5dGVNZXRob2QoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitnaW50OAord2Via2l0
X2RvbV90ZXN0X29ial9ieXRlX21ldGhvZF93aXRoX2FyZ3MoV2ViS2l0RE9NVGVzdE9iaiogc2Vs
ZiwgZ2ludDggYnl0ZUFyZywgY29uc3QgZ2NoYXIqIHN0ckFyZywgV2ViS2l0RE9NVGVzdE9iaiog
b2JqQXJnKQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpLCAwKTsK
KyAgICBnX3JldHVybl92YWxfaWZfZmFpbChzdHJBcmcsIDApOworICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkoob2JqQXJnKSwgMCk7CisgICAgV2ViQ29yZTo6
VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBXVEY6OlN0cmluZyBjb252
ZXJ0ZWRTdHJBcmcgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgoc3RyQXJnKTsKKyAgICBXZWJDb3Jl
OjpUZXN0T2JqKiBjb252ZXJ0ZWRPYmpBcmcgPSBXZWJLaXQ6OmNvcmUob2JqQXJnKTsKKyAgICBn
aW50OCByZXN1bHQgPSBpdGVtLT5ieXRlTWV0aG9kV2l0aEFyZ3MoYnl0ZUFyZywgY29udmVydGVk
U3RyQXJnLCBjb252ZXJ0ZWRPYmpBcmcpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2d1aW50
OAord2Via2l0X2RvbV90ZXN0X29ial9vY3RldF9tZXRob2QoV2ViS2l0RE9NVGVzdE9iaiogc2Vs
ZikKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxmKSwgMCk7CisgICAg
V2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBndWludDgg
cmVzdWx0ID0gaXRlbS0+b2N0ZXRNZXRob2QoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitn
dWludDgKK3dlYmtpdF9kb21fdGVzdF9vYmpfb2N0ZXRfbWV0aG9kX3dpdGhfYXJncyhXZWJLaXRE
T01UZXN0T2JqKiBzZWxmLCBndWludDggb2N0ZXRBcmcsIGNvbnN0IGdjaGFyKiBzdHJBcmcsIFdl
YktpdERPTVRlc3RPYmoqIG9iakFyZykKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNU
X09CSihzZWxmKSwgMCk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc3RyQXJnLCAwKTsKKyAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKG9iakFyZyksIDAp
OworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAg
V1RGOjpTdHJpbmcgY29udmVydGVkU3RyQXJnID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHN0ckFy
Zyk7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogY29udmVydGVkT2JqQXJnID0gV2ViS2l0Ojpjb3Jl
KG9iakFyZyk7CisgICAgZ3VpbnQ4IHJlc3VsdCA9IGl0ZW0tPm9jdGV0TWV0aG9kV2l0aEFyZ3Mo
b2N0ZXRBcmcsIGNvbnZlcnRlZFN0ckFyZywgY29udmVydGVkT2JqQXJnKTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCiBnbG9uZwogd2Via2l0X2RvbV90ZXN0X29ial9sb25nX21ldGhvZChXZWJL
aXRET01UZXN0T2JqKiBzZWxmKQogewpAQCAtMTUzMiw2ICsxNjE2LDQ0IEBAIHdlYmtpdF9kb21f
dGVzdF9vYmpfZ2V0X3JlYWRfb25seV90ZXN0X29ial9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNl
bGYpCiAgICAgcmV0dXJuIFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOwogfQogCitn
aW50OAord2Via2l0X2RvbV90ZXN0X29ial9nZXRfYnl0ZV9hdHRyKFdlYktpdERPTVRlc3RPYmoq
IHNlbGYpCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2VsZiksIDApOwor
ICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgZ2lu
dDggcmVzdWx0ID0gaXRlbS0+Ynl0ZUF0dHIoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2
b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9ieXRlX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiog
c2VsZiwgZ2ludDggdmFsdWUpCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxm
KSk7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAg
ICBpdGVtLT5zZXRCeXRlQXR0cih2YWx1ZSk7Cit9CisKK2d1aW50OAord2Via2l0X2RvbV90ZXN0
X29ial9nZXRfb2N0ZXRfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmKQoreworICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpLCAwKTsKKyAgICBXZWJDb3JlOjpUZXN0T2Jq
KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGd1aW50OCByZXN1bHQgPSBpdGVtLT5v
Y3RldEF0dHIoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkCit3ZWJraXRfZG9tX3Rl
c3Rfb2JqX3NldF9vY3RldF9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGd1aW50OCB2YWx1
ZSkKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19y
ZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpKTsKKyAgICBXZWJDb3Jl
OjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGl0ZW0tPnNldE9jdGV0
QXR0cih2YWx1ZSk7Cit9CisKIGdzaG9ydAogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfc2hvcnRf
YXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9i
ai5oCmluZGV4IDdjOTkyYzMuLjZmZWU1NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2Jq
LmgKQEAgLTczLDYgKzczLDUyIEBAIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X2RvbV90ZXN0X29i
al92b2lkX21ldGhvZF93aXRoX2FyZ3MoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2xvbmcgbG9u
Z0FyZywgY29uc3QgZ2NoYXIqIHN0ckFyZywgV2ViS2l0RE9NVGVzdE9iaiogb2JqQXJnKTsKIAog
LyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2J5dGVfbWV0aG9kOgorICogQHNlbGY6IEEgI1dl
YktpdERPTVRlc3RPYmoKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLworV0VCS0lUX0FQSSBnaW50
OAord2Via2l0X2RvbV90ZXN0X29ial9ieXRlX21ldGhvZChXZWJLaXRET01UZXN0T2JqKiBzZWxm
KTsKKworLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2J5dGVfbWV0aG9kX3dpdGhfYXJnczoK
KyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCisgKiBAYnl0ZUFyZzogQSAjZ2ludDgKKyAq
IEBzdHJBcmc6IEEgI2djaGFyCisgKiBAb2JqQXJnOiBBICNXZWJLaXRET01UZXN0T2JqCisgKgor
ICogUmV0dXJuczoKKyAqCisqKi8KK1dFQktJVF9BUEkgZ2ludDgKK3dlYmtpdF9kb21fdGVzdF9v
YmpfYnl0ZV9tZXRob2Rfd2l0aF9hcmdzKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdpbnQ4IGJ5
dGVBcmcsIGNvbnN0IGdjaGFyKiBzdHJBcmcsIFdlYktpdERPTVRlc3RPYmoqIG9iakFyZyk7CisK
Ky8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial9vY3RldF9tZXRob2Q6CisgKiBAc2VsZjogQSAj
V2ViS2l0RE9NVGVzdE9iagorICoKKyAqIFJldHVybnM6CisgKgorKiovCitXRUJLSVRfQVBJIGd1
aW50OAord2Via2l0X2RvbV90ZXN0X29ial9vY3RldF9tZXRob2QoV2ViS2l0RE9NVGVzdE9iaiog
c2VsZik7CisKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial9vY3RldF9tZXRob2Rfd2l0aF9h
cmdzOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqIEBvY3RldEFyZzogQSAjZ3Vp
bnQ4CisgKiBAc3RyQXJnOiBBICNnY2hhcgorICogQG9iakFyZzogQSAjV2ViS2l0RE9NVGVzdE9i
agorICoKKyAqIFJldHVybnM6CisgKgorKiovCitXRUJLSVRfQVBJIGd1aW50OAord2Via2l0X2Rv
bV90ZXN0X29ial9vY3RldF9tZXRob2Rfd2l0aF9hcmdzKFdlYktpdERPTVRlc3RPYmoqIHNlbGYs
IGd1aW50OCBvY3RldEFyZywgY29uc3QgZ2NoYXIqIHN0ckFyZywgV2ViS2l0RE9NVGVzdE9iaiog
b2JqQXJnKTsKKworLyoqCiAgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2xvbmdfbWV0aG9kOgogICog
QHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKICAqCkBAIC01NTYsNiArNjAyLDQ4IEBAIFdFQktJ
VF9BUEkgV2ViS2l0RE9NVGVzdE9iaioKIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3JlYWRfb25s
eV90ZXN0X29ial9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpOwogCiAvKioKKyAqIHdlYmtp
dF9kb21fdGVzdF9vYmpfZ2V0X2J5dGVfYXR0cjoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0
T2JqCisgKgorICogUmV0dXJuczoKKyAqCisqKi8KK1dFQktJVF9BUEkgZ2ludDgKK3dlYmtpdF9k
b21fdGVzdF9vYmpfZ2V0X2J5dGVfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmKTsKKworLyoq
CisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9ieXRlX2F0dHI6CisgKiBAc2VsZjogQSAjV2Vi
S2l0RE9NVGVzdE9iagorICogQHZhbHVlOiBBICNnaW50OAorICoKKyAqIFJldHVybnM6CisgKgor
KiovCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfc2V0X2J5dGVfYXR0cihX
ZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnaW50OCB2YWx1ZSk7CisKKy8qKgorICogd2Via2l0X2Rv
bV90ZXN0X29ial9nZXRfb2N0ZXRfYXR0cjoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2Jq
CisgKgorICogUmV0dXJuczoKKyAqCisqKi8KK1dFQktJVF9BUEkgZ3VpbnQ4Cit3ZWJraXRfZG9t
X3Rlc3Rfb2JqX2dldF9vY3RldF9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpOworCisvKioK
KyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X29jdGV0X2F0dHI6CisgKiBAc2VsZjogQSAjV2Vi
S2l0RE9NVGVzdE9iagorICogQHZhbHVlOiBBICNndWludDgKKyAqCisgKiBSZXR1cm5zOgorICoK
KyoqLworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9vY3RldF9hdHRy
KFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGd1aW50OCB2YWx1ZSk7CisKKy8qKgogICogd2Via2l0
X2RvbV90ZXN0X29ial9nZXRfc2hvcnRfYXR0cjoKICAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0
T2JqCiAgKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmNwcAppbmRleCBhODI0OGNiLi5hMDU2ZTE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAt
ODAsNiArODAsOCBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqVGFibGVW
YWx1ZXNbXSA9CiAgICAgeyAicmVhZE9ubHlTdHJpbmdBdHRyIiwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5LCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdE9ialJlYWRPbmx5U3RyaW5nQXR0ciksIChpbnRwdHJfdCkwLCBOb0ludHJpbnNpYyB9LAog
ICAgIHsgInJlYWRPbmx5VGVzdE9iakF0dHIiLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqUmVh
ZE9ubHlUZXN0T2JqQXR0ciksIChpbnRwdHJfdCkwLCBOb0ludHJpbnNpYyB9LAogICAgIHsgImVu
dW1BdHRyIiwgRG9udERlbGV0ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpFbnVtQXR0ciksIChpbnRwdHJfdClzZXRKU1Rlc3RPYmpF
bnVtQXR0ciwgTm9JbnRyaW5zaWMgfSwKKyAgICB7ICJieXRlQXR0ciIsIERvbnREZWxldGUsIChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2Jq
Qnl0ZUF0dHIpLCAoaW50cHRyX3Qpc2V0SlNUZXN0T2JqQnl0ZUF0dHIsIE5vSW50cmluc2ljIH0s
CisgICAgeyAib2N0ZXRBdHRyIiwgRG9udERlbGV0ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpPY3RldEF0dHIpLCAoaW50cHRyX3Qp
c2V0SlNUZXN0T2JqT2N0ZXRBdHRyLCBOb0ludHJpbnNpYyB9LAogICAgIHsgInNob3J0QXR0ciIs
IERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0T2JqU2hvcnRBdHRyKSwgKGludHB0cl90KXNldEpTVGVzdE9ialNob3J0QXR0
ciwgTm9JbnRyaW5zaWMgfSwKICAgICB7ICJ1bnNpZ25lZFNob3J0QXR0ciIsIERvbnREZWxldGUs
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
T2JqVW5zaWduZWRTaG9ydEF0dHIpLCAoaW50cHRyX3Qpc2V0SlNUZXN0T2JqVW5zaWduZWRTaG9y
dEF0dHIsIE5vSW50cmluc2ljIH0sCiAgICAgeyAibG9uZ0F0dHIiLCBEb250RGVsZXRlLCAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakxv
bmdBdHRyKSwgKGludHB0cl90KXNldEpTVGVzdE9iakxvbmdBdHRyLCBOb0ludHJpbnNpYyB9LApA
QCAtMTUyLDcgKzE1NCw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpU
YWJsZVZhbHVlc1tdID0KICAgICB7IDAsIDAsIDAsIDAsIE5vSW50cmluc2ljIH0KIH07CiAKLXN0
YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0T2JqVGFibGUgPSB7IDE0NSwgMTI3LCBKU1Rlc3RP
YmpUYWJsZVZhbHVlcywgMCB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RPYmpUYWJs
ZSA9IHsgMjY1LCAyNTUsIEpTVGVzdE9ialRhYmxlVmFsdWVzLCAwIH07CiAvKiBIYXNoIHRhYmxl
IGZvciBjb25zdHJ1Y3RvciAqLwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0
T2JqQ29uc3RydWN0b3JUYWJsZVZhbHVlc1tdID0KQEAgLTI2OCw2ICsyNzAsMTAgQEAgc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQog
ICAgIHsgIkNPTlNUX0pBVkFTQ1JJUFQiLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqQ09OU1Rf
SkFWQVNDUklQVCksIChpbnRwdHJfdCkwLCBOb0ludHJpbnNpYyB9LAogICAgIHsgInZvaWRNZXRo
b2QiLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5h
dGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2QpLCAoaW50
cHRyX3QpMCwgTm9JbnRyaW5zaWMgfSwKICAgICB7ICJ2b2lkTWV0aG9kV2l0aEFyZ3MiLCBEb250
RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0
aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2RXaXRoQXJncyksIChpbnRw
dHJfdCkzLCBOb0ludHJpbnNpYyB9LAorICAgIHsgImJ5dGVNZXRob2QiLCBEb250RGVsZXRlIHwg
SlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2QpLCAoaW50cHRyX3QpMCwgTm9JbnRyaW5z
aWMgfSwKKyAgICB7ICJieXRlTWV0aG9kV2l0aEFyZ3MiLCBEb250RGVsZXRlIHwgSlNDOjpGdW5j
dGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2RXaXRoQXJncyksIChpbnRwdHJfdCkzLCBOb0ludHJpbnNp
YyB9LAorICAgIHsgIm9jdGV0TWV0aG9kIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChp
bnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PY3RldE1ldGhvZCksIChpbnRwdHJfdCkwLCBOb0ludHJpbnNpYyB9LAorICAgIHsgIm9j
dGV0TWV0aG9kV2l0aEFyZ3MiLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90
KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9j
dGV0TWV0aG9kV2l0aEFyZ3MpLCAoaW50cHRyX3QpMywgTm9JbnRyaW5zaWMgfSwKICAgICB7ICJs
b25nTWV0aG9kIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9k
KSwgKGludHB0cl90KTAsIE5vSW50cmluc2ljIH0sCiAgICAgeyAibG9uZ01ldGhvZFdpdGhBcmdz
IiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRp
dmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kV2l0aEFyZ3Mp
LCAoaW50cHRyX3QpMywgTm9JbnRyaW5zaWMgfSwKICAgICB7ICJvYmpNZXRob2QiLCBEb250RGVs
ZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9u
Pihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZCksIChpbnRwdHJfdCkwLCBOb0lu
dHJpbnNpYyB9LApAQCAtMzMwLDcgKzMzNiw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1
ZSBKU1Rlc3RPYmpQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KICAgICB7IDAsIDAsIDAsIDAsIE5v
SW50cmluc2ljIH0KIH07CiAKLXN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0T2JqUHJvdG90
eXBlVGFibGUgPSB7IDI2NiwgMjU1LCBKU1Rlc3RPYmpQcm90b3R5cGVUYWJsZVZhbHVlcywgMCB9
Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RPYmpQcm90b3R5cGVUYWJsZSA9IHsgMjY3
LCAyNTUsIEpTVGVzdE9ialByb3RvdHlwZVRhYmxlVmFsdWVzLCAwIH07CiBjb25zdCBDbGFzc0lu
Zm8gSlNUZXN0T2JqUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0T2JqZWN0UHJvdG90eXBlIiwg
JkJhc2U6OnNfaW5mbywgJkpTVGVzdE9ialByb3RvdHlwZVRhYmxlLCAwLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTVGVzdE9ialByb3RvdHlwZSkgfTsKIAogSlNPYmplY3QqIEpTVGVzdE9ialByb3Rv
dHlwZTo6c2VsZihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CkBAIC00NTksNiArNDY1LDI2IEBAIEpTVmFsdWUganNUZXN0T2JqRW51bUF0dHIoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB9CiAKIAorSlNWYWx1ZSBq
c1Rlc3RPYmpCeXRlQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3Bl
cnR5TmFtZSkKK3sKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2Jq
Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAgICBVTlVTRURfUEFSQU0oZXhlYyk7CisgICAgVGVz
dE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwor
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC0+Ynl0ZUF0dHIoKSk7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKworCitKU1ZhbHVlIGpzVGVzdE9iak9jdGV0QXR0cihFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKK3sKKyAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAg
ICBVTlVTRURfUEFSQU0oZXhlYyk7CisgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRl
c3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1i
ZXIoaW1wbC0+b2N0ZXRBdHRyKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKwogSlNWYWx1
ZSBqc1Rlc3RPYmpTaG9ydEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQ
cm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVz
dE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CkBAIC0xMDk0LDYgKzExMjAsMzAgQEAgdm9pZCBz
ZXRKU1Rlc3RPYmpFbnVtQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQogfQogCiAKK3ZvaWQgc2V0SlNUZXN0T2JqQnl0ZUF0dHIoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBV
TlVTRURfUEFSQU0oZXhlYyk7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpT
VGVzdE9iaio+KHRoaXNPYmplY3QpOworICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxU
ZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICBpbnQ4X3QgbmF0aXZlVmFsdWUodG9J
bnQ4KGV4ZWMsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQorICAgICAgICByZXR1cm47CisgICAgaW1wbC0+c2V0Qnl0ZUF0dHIobmF0aXZl
VmFsdWUpOworfQorCisKK3ZvaWQgc2V0SlNUZXN0T2JqT2N0ZXRBdHRyKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgVU5VU0VEX1BB
UkFNKGV4ZWMpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoq
Pih0aGlzT2JqZWN0KTsKKyAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+
KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgdWludDhfdCBuYXRpdmVWYWx1ZSh0b1VJbnQ4KGV4
ZWMsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQorICAgICAgICByZXR1cm47CisgICAgaW1wbC0+c2V0T2N0ZXRBdHRyKG5hdGl2ZVZhbHVl
KTsKK30KKworCiB2b2lkIHNldEpTVGVzdE9ialNob3J0QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIFVOVVNFRF9QQVJBTShl
eGVjKTsKQEAgLTE3MDgsNiArMTc1OCw4MCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZFdpdGhBcmdzKEV4ZWNTdAogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0aG9kKEV4
ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlz
VmFsdWUoKTsKKyAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cygmSlNUZXN0T2JqOjpzX2luZm8p
KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7Cisg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAmSlNUZXN0T2JqOjpzX2lu
Zm8pOworICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhp
cy0+aW1wbCgpKTsKKworICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLT5i
eXRlTWV0aG9kKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5
dGVNZXRob2RXaXRoQXJncyhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CisgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMo
JkpTVGVzdE9iajo6c19pbmZvKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yyk7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2Jq
ZWN0KHRoaXNWYWx1ZSkpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgJkpTVGVzdE9iajo6c19pbmZvKTsKKyAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8
VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291
bnQoKSA8IDMpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOworICAgIGludDhfdCBieXRlQXJnKHRvSW50OChleGVj
LCBleGVjLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbikpOworICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKKyAgICBjb25zdCBTdHJpbmcmIHN0ckFyZyhleGVjLT5hcmd1bWVudCgxKS5pc0VtcHR5
KCkgPyBTdHJpbmcoKSA6IGV4ZWMtPmFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFRlc3RPYmoqIG9iakFyZyh0b1Rlc3RP
YmooZXhlYy0+YXJndW1lbnQoMikpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICBKU0M6
OkpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC0+Ynl0ZU1ldGhvZFdpdGhBcmdzKGJ5dGVB
cmcsIHN0ckFyZywgb2JqQXJnKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uT2N0ZXRNZXRob2QoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOworICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRz
KCZKU1Rlc3RPYmo6OnNfaW5mbykpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09i
amVjdCh0aGlzVmFsdWUpKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsICZKU1Rlc3RPYmo6OnNfaW5mbyk7CisgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0
PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworCisgICAgSlNDOjpKU1ZhbHVlIHJlc3Vs
dCA9IGpzTnVtYmVyKGltcGwtPm9jdGV0TWV0aG9kKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kV2l0aEFyZ3MoRXhlY1N0YXRlKiBleGVjKQor
eworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOworICAgIGlm
ICghdGhpc1ZhbHVlLmluaGVyaXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykpCisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
Q2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKKyAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RPYmo6OnNfaW5mbyk7CisgICAgVGVzdE9i
aiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAg
IGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAzKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKKyAgICB1aW50
OF90IG9jdGV0QXJnKHRvVUludDgoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZl
cnNpb24pKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgY29uc3QgU3RyaW5nJiBzdHJBcmco
ZXhlYy0+YXJndW1lbnQoMSkuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBleGVjLT5hcmd1bWVudCgx
KS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAg
ICBUZXN0T2JqKiBvYmpBcmcodG9UZXN0T2JqKGV4ZWMtPmFyZ3VtZW50KDIpKSk7CisgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworCisgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwt
Pm9jdGV0TWV0aG9kV2l0aEFyZ3Mob2N0ZXRBcmcsIHN0ckFyZywgb2JqQXJnKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZChFeGVjU3RhdGUqIGV4
ZWMpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmgKaW5kZXggN2ZlNTNiMy4uN2EyZDZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaApAQCAtMTYxLDYgKzE2MSwxMCBAQCBw
cm90ZWN0ZWQ6CiAKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRo
b2RXaXRoQXJncyhKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZChKU0M6OkV4ZWNTdGF0
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQnl0ZU1ldGhvZFdpdGhBcmdzKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1l
dGhvZChKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2RXaXRoQXJncyhKU0M6OkV4ZWNT
dGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTG9uZ01ldGhvZChKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZFdp
dGhBcmdzKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsK
QEAgLTIzOSw2ICsyNDMsMTAgQEAgdm9pZCBzZXRKU1Rlc3RPYmpDb25zdHJ1Y3RvclN0YXRpY1N0
cmluZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlMKIEpTQzo6SlNWYWx1
ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvclRlc3RTdWJPYmooSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpFbnVtQXR0
cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogdm9p
ZCBzZXRKU1Rlc3RPYmpFbnVtQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBK
U0M6OkpTVmFsdWUpOworSlNDOjpKU1ZhbHVlIGpzVGVzdE9iakJ5dGVBdHRyKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Cit2b2lkIHNldEpTVGVzdE9i
akJ5dGVBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6SlNWYWx1ZSk7
CitKU0M6OkpTVmFsdWUganNUZXN0T2JqT2N0ZXRBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpK
U1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Cit2b2lkIHNldEpTVGVzdE9iak9jdGV0QXR0cihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUpOwogSlNDOjpKU1Zh
bHVlIGpzVGVzdE9ialNob3J0QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlND
OjpQcm9wZXJ0eU5hbWUpOwogdm9pZCBzZXRKU1Rlc3RPYmpTaG9ydEF0dHIoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKIEpTQzo6SlNWYWx1ZSBqc1Rlc3RP
YmpVbnNpZ25lZFNob3J0QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L09iakMvRE9NVGVzdE9iai5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L09iakMvRE9NVGVzdE9iai5oCmluZGV4IDdhNjMwOTguLmUwM2QwMjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmou
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0
T2JqLmgKQEAgLTY2LDYgKzY2LDggQEAgZW51bSB7CiBAcHJvcGVydHkocmVhZG9ubHkpIGludCBy
ZWFkT25seUxvbmdBdHRyOwogQHByb3BlcnR5KHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqcmVh
ZE9ubHlTdHJpbmdBdHRyOwogQHByb3BlcnR5KHJlYWRvbmx5LCByZXRhaW4pIERPTVRlc3RPYmog
KnJlYWRPbmx5VGVzdE9iakF0dHI7CitAcHJvcGVydHkgY2hhciBieXRlQXR0cjsKK0Bwcm9wZXJ0
eSB1bnNpZ25lZCBjaGFyIG9jdGV0QXR0cjsKIEBwcm9wZXJ0eSBzaG9ydCBzaG9ydEF0dHI7CiBA
cHJvcGVydHkgdW5zaWduZWQgc2hvcnQgdW5zaWduZWRTaG9ydEF0dHI7CiBAcHJvcGVydHkgaW50
IGxvbmdBdHRyOwpAQCAtMTIyLDYgKzEyNCwxMCBAQCBlbnVtIHsKIAogLSAodm9pZCl2b2lkTWV0
aG9kOwogLSAodm9pZCl2b2lkTWV0aG9kV2l0aEFyZ3M6KGludClsb25nQXJnIHN0ckFyZzooTlNT
dHJpbmcgKilzdHJBcmcgb2JqQXJnOihET01UZXN0T2JqICopb2JqQXJnOworLSAoY2hhcilieXRl
TWV0aG9kOworLSAoY2hhcilieXRlTWV0aG9kV2l0aEFyZ3M6KGNoYXIpYnl0ZUFyZyBzdHJBcmc6
KE5TU3RyaW5nICopc3RyQXJnIG9iakFyZzooRE9NVGVzdE9iaiAqKW9iakFyZzsKKy0gKHVuc2ln
bmVkIGNoYXIpb2N0ZXRNZXRob2Q7CistICh1bnNpZ25lZCBjaGFyKW9jdGV0TWV0aG9kV2l0aEFy
Z3M6KHVuc2lnbmVkIGNoYXIpb2N0ZXRBcmcgc3RyQXJnOihOU1N0cmluZyAqKXN0ckFyZyBvYmpB
cmc6KERPTVRlc3RPYmogKilvYmpBcmc7CiAtIChpbnQpbG9uZ01ldGhvZDsKIC0gKGludClsb25n
TWV0aG9kV2l0aEFyZ3M6KGludClsb25nQXJnIHN0ckFyZzooTlNTdHJpbmcgKilzdHJBcmcgb2Jq
QXJnOihET01UZXN0T2JqICopb2JqQXJnOwogLSAoRE9NVGVzdE9iaiAqKW9iak1ldGhvZDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRl
c3RPYmoubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01U
ZXN0T2JqLm1tCmluZGV4IDg5OTZmZTUuLmZlODMxMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQpAQCAtMTEx
LDYgKzExMSwzMCBAQAogICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+cmVhZE9ubHlU
ZXN0T2JqQXR0cigpKSk7CiB9CiAKKy0gKGNoYXIpYnl0ZUF0dHIKK3sKKyAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwtPmJ5dGVBdHRyKCk7
Cit9CisKKy0gKHZvaWQpc2V0Qnl0ZUF0dHI6KGNoYXIpbmV3Qnl0ZUF0dHIKK3sKKyAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgSU1QTC0+c2V0Qnl0ZUF0dHIo
bmV3Qnl0ZUF0dHIpOworfQorCistICh1bnNpZ25lZCBjaGFyKW9jdGV0QXR0cgoreworICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+b2N0
ZXRBdHRyKCk7Cit9CisKKy0gKHZvaWQpc2V0T2N0ZXRBdHRyOih1bnNpZ25lZCBjaGFyKW5ld09j
dGV0QXR0cgoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAg
ICBJTVBMLT5zZXRPY3RldEF0dHIobmV3T2N0ZXRBdHRyKTsKK30KKwogLSAoc2hvcnQpc2hvcnRB
dHRyCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwpAQCAtNzc1
LDYgKzc5OSwzMCBAQAogICAgIElNUEwtPnZvaWRNZXRob2RXaXRoQXJncyhsb25nQXJnLCBzdHJB
cmcsIGNvcmUob2JqQXJnKSk7CiB9CiAKKy0gKGNoYXIpYnl0ZU1ldGhvZAoreworICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+Ynl0ZU1l
dGhvZCgpOworfQorCistIChjaGFyKWJ5dGVNZXRob2RXaXRoQXJnczooY2hhcilieXRlQXJnIHN0
ckFyZzooTlNTdHJpbmcgKilzdHJBcmcgb2JqQXJnOihET01UZXN0T2JqICopb2JqQXJnCit7Cisg
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBM
LT5ieXRlTWV0aG9kV2l0aEFyZ3MoYnl0ZUFyZywgc3RyQXJnLCBjb3JlKG9iakFyZykpOworfQor
CistICh1bnNpZ25lZCBjaGFyKW9jdGV0TWV0aG9kCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT5vY3RldE1ldGhvZCgpOworfQor
CistICh1bnNpZ25lZCBjaGFyKW9jdGV0TWV0aG9kV2l0aEFyZ3M6KHVuc2lnbmVkIGNoYXIpb2N0
ZXRBcmcgc3RyQXJnOihOU1N0cmluZyAqKXN0ckFyZyBvYmpBcmc6KERPTVRlc3RPYmogKilvYmpB
cmcKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0
dXJuIElNUEwtPm9jdGV0TWV0aG9kV2l0aEFyZ3Mob2N0ZXRBcmcsIHN0ckFyZywgY29yZShvYmpB
cmcpKTsKK30KKwogLSAoaW50KWxvbmdNZXRob2QKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdE9iai5pZGwKaW5kZXggYWYzOTQ1ZS4uMDY3OWYzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtNDQsNiArNDQs
OCBAQCBlbnVtIFRlc3RFbnVtVHlwZSB7ICIiLCAiRW51bVZhbHVlMSIsICJFbnVtVmFsdWUyIiwg
IkVudW1WYWx1ZTMiIH07CiAgICAgc3RhdGljIGF0dHJpYnV0ZSBET01TdHJpbmcgICAgICAgICBz
dGF0aWNTdHJpbmdBdHRyOwogICAgIHN0YXRpYyByZWFkb25seSBhdHRyaWJ1dGUgVGVzdFN1Yk9i
akNvbnN0cnVjdG9yIFRlc3RTdWJPYmo7CiAgICAgYXR0cmlidXRlIFRlc3RFbnVtVHlwZSAgICAg
ICAgICAgICBlbnVtQXR0cjsKKyAgICBhdHRyaWJ1dGUgYnl0ZSAgICAgICAgICAgICAgICAgICAg
IGJ5dGVBdHRyOworICAgIGF0dHJpYnV0ZSBvY3RldCAgICAgICAgICAgICAgICAgICAgb2N0ZXRB
dHRyOwogICAgIGF0dHJpYnV0ZSBzaG9ydCAgICAgICAgICAgICAgICAgICAgc2hvcnRBdHRyOwog
ICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCAgICAgICAgICAgdW5zaWduZWRTaG9ydEF0dHI7
CiAgICAgYXR0cmlidXRlIGxvbmcgICAgICAgICAgICAgICAgICAgICBsb25nQXR0cjsKQEAgLTcz
LDYgKzc1LDEwIEBAIGVudW0gVGVzdEVudW1UeXBlIHsgIiIsICJFbnVtVmFsdWUxIiwgIkVudW1W
YWx1ZTIiLCAiRW51bVZhbHVlMyIgfTsKICAgICAvLyBNZXRob2RzCiAgICAgdm9pZCAgICB2b2lk
TWV0aG9kKCk7CiAgICAgdm9pZCAgICB2b2lkTWV0aG9kV2l0aEFyZ3MobG9uZyBsb25nQXJnLCBE
T01TdHJpbmcgc3RyQXJnLCBUZXN0T2JqIG9iakFyZyk7CisgICAgYnl0ZSAgICBieXRlTWV0aG9k
KCk7CisgICAgYnl0ZSAgICBieXRlTWV0aG9kV2l0aEFyZ3MoYnl0ZSBieXRlQXJnLCBET01TdHJp
bmcgc3RyQXJnLCBUZXN0T2JqIG9iakFyZyk7CisgICAgb2N0ZXQgICBvY3RldE1ldGhvZCgpOwor
ICAgIG9jdGV0ICAgb2N0ZXRNZXRob2RXaXRoQXJncyhvY3RldCBvY3RldEFyZywgRE9NU3RyaW5n
IHN0ckFyZywgVGVzdE9iaiBvYmpBcmcpOwogICAgIGxvbmcgICAgbG9uZ01ldGhvZCgpOwogICAg
IGxvbmcgICAgbG9uZ01ldGhvZFdpdGhBcmdzKGxvbmcgbG9uZ0FyZywgRE9NU3RyaW5nIHN0ckFy
ZywgVGVzdE9iaiBvYmpBcmcpOwogICAgIFRlc3RPYmogb2JqTWV0aG9kKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9EYXRhVmlldy5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9EYXRhVmlldy5pZGwKaW5kZXggYzBhNDJhMC4uNTA3YjBhNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRGF0YVZpZXcuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0RhdGFWaWV3LmlkbApAQCAtMzEsMTEgKzMxLDggQEAKIF0g
aW50ZXJmYWNlIERhdGFWaWV3IDogQXJyYXlCdWZmZXJWaWV3IHsKICAgICAvLyBBbGwgdGhlc2Ug
bWV0aG9kcyByYWlzZSBhbiBleGNlcHRpb24gaWYgdGhleSB3b3VsZCByZWFkIG9yIHdyaXRlIGJl
eW9uZCB0aGUgZW5kIG9mIHRoZSB2aWV3LgogCi0gICAgLy8gV2UgaGF2ZSB0byB1c2UgY3VzdG9t
IGNvZGUgYmVjYXVzZSBvdXIgY29kZSBnZW5lcmF0b3IgZG9lcyBub3Qgc3VwcG9ydCBpbnQ4X3Qg
dHlwZS4KLSAgICAvLyBpbnQ4X3QgZ2V0SW50OCh1bnNpZ25lZCBsb25nIGJ5dGVPZmZzZXQpOwot
ICAgIC8vIHVpbnQ4X3QgZ2V0VWludDgodW5zaWduZWQgbG9uZyBieXRlT2Zmc2V0KTsKLSAgICBb
Q3VzdG9tLCBSYWlzZXNFeGNlcHRpb25dIGFueSBnZXRJbnQ4KCk7Ci0gICAgW0N1c3RvbSwgUmFp
c2VzRXhjZXB0aW9uXSBhbnkgZ2V0VWludDgoKTsKKyAgICBbUmFpc2VzRXhjZXB0aW9uXSBieXRl
IGdldEludDgodW5zaWduZWQgbG9uZyBieXRlT2Zmc2V0KTsKKyAgICBbUmFpc2VzRXhjZXB0aW9u
XSBvY3RldCBnZXRVaW50OCh1bnNpZ25lZCBsb25nIGJ5dGVPZmZzZXQpOwogCiAgICAgW1N0cmlj
dFR5cGVDaGVja2luZywgUmFpc2VzRXhjZXB0aW9uXSBzaG9ydCBnZXRJbnQxNih1bnNpZ25lZCBs
b25nIGJ5dGVPZmZzZXQsIG9wdGlvbmFsIGJvb2xlYW4gbGl0dGxlRW5kaWFuKTsKICAgICBbU3Ry
aWN0VHlwZUNoZWNraW5nLCBSYWlzZXNFeGNlcHRpb25dIHVuc2lnbmVkIHNob3J0IGdldFVpbnQx
Nih1bnNpZ25lZCBsb25nIGJ5dGVPZmZzZXQsIG9wdGlvbmFsIGJvb2xlYW4gbGl0dGxlRW5kaWFu
KTsKQEAgLTQ2LDExICs0Myw4IEBACiAgICAgW0N1c3RvbSwgU3RyaWN0VHlwZUNoZWNraW5nLCBS
YWlzZXNFeGNlcHRpb25dIGZsb2F0IGdldEZsb2F0MzIodW5zaWduZWQgbG9uZyBieXRlT2Zmc2V0
LCBvcHRpb25hbCBib29sZWFuIGxpdHRsZUVuZGlhbik7CiAgICAgW0N1c3RvbSwgU3RyaWN0VHlw
ZUNoZWNraW5nLCBSYWlzZXNFeGNlcHRpb25dIGRvdWJsZSBnZXRGbG9hdDY0KHVuc2lnbmVkIGxv
bmcgYnl0ZU9mZnNldCwgb3B0aW9uYWwgYm9vbGVhbiBsaXR0bGVFbmRpYW4pOwogCi0gICAgLy8g
V2UgaGF2ZSB0byB1c2UgY3VzdG9tIGNvZGUgYmVjYXVzZSBvdXIgY29kZSBnZW5lcmF0b3IgZG9l
cyBub3Qgc3VwcG9ydCB1aW50OF90IHR5cGUuCi0gICAgLy8gdm9pZCBzZXRJbnQ4KHVuc2lnbmVk
IGxvbmcgYnl0ZU9mZnNldCwgaW50OF90IHZhbHVlKTsKLSAgICAvLyB2b2lkIHNldFVpbnQ4KHVu
c2lnbmVkIGxvbmcgYnl0ZU9mZnNldCwgdWludDhfdCB2YWx1ZSk7Ci0gICAgW0N1c3RvbSwgUmFp
c2VzRXhjZXB0aW9uXSB2b2lkIHNldEludDgoKTsKLSAgICBbQ3VzdG9tLCBSYWlzZXNFeGNlcHRp
b25dIHZvaWQgc2V0VWludDgoKTsKKyAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHNldEludDgo
dW5zaWduZWQgbG9uZyBieXRlT2Zmc2V0LCBieXRlIHZhbHVlKTsKKyAgICBbUmFpc2VzRXhjZXB0
aW9uXSB2b2lkIHNldFVpbnQ4KHVuc2lnbmVkIGxvbmcgYnl0ZU9mZnNldCwgb2N0ZXQgdmFsdWUp
OwogCiAgICAgW1N0cmljdFR5cGVDaGVja2luZywgUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHNldElu
dDE2KHVuc2lnbmVkIGxvbmcgYnl0ZU9mZnNldCwgc2hvcnQgdmFsdWUsIG9wdGlvbmFsIGJvb2xl
YW4gbGl0dGxlRW5kaWFuKTsKICAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBSYWlzZXNFeGNlcHRp
b25dIHZvaWQgc2V0VWludDE2KHVuc2lnbmVkIGxvbmcgYnl0ZU9mZnNldCwgdW5zaWduZWQgc2hv
cnQgdmFsdWUsIG9wdGlvbmFsIGJvb2xlYW4gbGl0dGxlRW5kaWFuKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvVHlwZUNvbnZlcnNpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL1R5cGVDb252ZXJzaW9ucy5oCmluZGV4IDhkZTEwMmYuLjM0MGM4OTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvVHlwZUNvbnZlcnNpb25zLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9UeXBlQ29udmVyc2lvbnMuaApAQCAtNTQsNiArNTQsMTUgQEAgcHVi
bGljOgogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB0ZXN0RW5mb3JjZVJhbmdlVW5zaWduZWRMb25n
TG9uZygpIHsgcmV0dXJuIG1fdW5zaWduZWRMb25nTG9uZzsgfQogICAgIHZvaWQgc2V0VGVzdEVu
Zm9yY2VSYW5nZVVuc2lnbmVkTG9uZ0xvbmcodW5zaWduZWQgbG9uZyBsb25nIHZhbHVlKSB7IG1f
dW5zaWduZWRMb25nTG9uZyA9IHZhbHVlOyB9CiAKKyAgICBpbnQ4X3QgdGVzdEJ5dGUoKSB7IHJl
dHVybiBtX2J5dGU7IH0KKyAgICB2b2lkIHNldFRlc3RCeXRlKGludDhfdCB2YWx1ZSkgeyBtX2J5
dGUgPSB2YWx1ZTsgfQorICAgIGludDhfdCB0ZXN0RW5mb3JjZVJhbmdlQnl0ZSgpIHsgcmV0dXJu
IG1fYnl0ZTsgfQorICAgIHZvaWQgc2V0VGVzdEVuZm9yY2VSYW5nZUJ5dGUoaW50OF90IHZhbHVl
KSB7IG1fYnl0ZSA9IHZhbHVlOyB9CisKKyAgICB1aW50OF90IHRlc3RPY3RldCgpIHsgcmV0dXJu
IG1fb2N0ZXQ7IH0KKyAgICB2b2lkIHNldFRlc3RPY3RldCh1aW50OF90IHZhbHVlKSB7IG1fb2N0
ZXQgPSB2YWx1ZTsgfQorICAgIHVpbnQ4X3QgdGVzdEVuZm9yY2VSYW5nZU9jdGV0KCkgeyByZXR1
cm4gbV9vY3RldDsgfQorICAgIHZvaWQgc2V0VGVzdEVuZm9yY2VSYW5nZU9jdGV0KHVpbnQ4X3Qg
dmFsdWUpIHsgbV9vY3RldCA9IHZhbHVlOyB9CiBwcml2YXRlOgogICAgIFR5cGVDb252ZXJzaW9u
cygpCiAgICAgewpAQCAtNjMsNiArNzIsOCBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIGxvbmcg
bV91bnNpZ25lZExvbmc7CiAgICAgbG9uZyBsb25nIG1fbG9uZ0xvbmc7CiAgICAgdW5zaWduZWQg
bG9uZyBsb25nIG1fdW5zaWduZWRMb25nTG9uZzsKKyAgICBpbnQ4X3QgbV9ieXRlOworICAgIHVp
bnQ4X3QgbV9vY3RldDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvVHlwZUNvbnZlcnNpb25zLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvVHlwZUNvbnZlcnNpb25zLmlkbAppbmRleCBlZGQ0MDA0Li5lYmU5YjkwYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9UeXBlQ29udmVyc2lvbnMuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvVHlwZUNvbnZlcnNpb25zLmlkbApAQCAtMzYsNCAr
MzYsOSBAQAogICAgIGF0dHJpYnV0ZSBbRW5mb3JjZVJhbmdlXSBsb25nIGxvbmcgdGVzdEVuZm9y
Y2VSYW5nZUxvbmdMb25nOwogICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxvbmcgdGVzdFVu
c2lnbmVkTG9uZ0xvbmc7CiAgICAgYXR0cmlidXRlIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxv
bmcgbG9uZyB0ZXN0RW5mb3JjZVJhbmdlVW5zaWduZWRMb25nTG9uZzsKKworICAgIGF0dHJpYnV0
ZSBieXRlIHRlc3RCeXRlOworICAgIGF0dHJpYnV0ZSBbRW5mb3JjZVJhbmdlXSBieXRlIHRlc3RF
bmZvcmNlUmFuZ2VCeXRlOworICAgIGF0dHJpYnV0ZSBvY3RldCB0ZXN0T2N0ZXQ7CisgICAgYXR0
cmlidXRlIFtFbmZvcmNlUmFuZ2VdIG9jdGV0IHRlc3RFbmZvcmNlUmFuZ2VPY3RldDsKIH07Cg==
</data>
<flag name="review"
          id="225970"
          type_id="1"
          status="+"
          setter="haraken"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204570</attachid>
            <date>2013-06-13 04:08:33 -0700</date>
            <delta_ts>2013-06-13 07:24:13 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>117547_byte_octet.patch</filename>
            <type>text/plain</type>
            <size>59848</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0NWJkYmU4MC4uMjA3NDE5OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEzLTA2
LTEzICBDaHJpc3RvcGhlIER1bWV6ICA8Y2guZHVtZXpAc2lzYS5zYW1zdW5nLmNvbT4KKworICAg
ICAgICBTdXBwb3J0IGJ5dGUgYW5kIG9jdGV0IHR5cGVzIGluIGJpbmRpbmdzIGdlbmVyYXRvcnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzU0Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IEtlbnRhcm8gSGFyYS4KKworICAgICAgICBVcGRhdGUgZmFz
dC9qcy93ZWJpZGwtdHlwZS1tYXBwaW5nLmh0bWwgdG8gY292ZXIgYnl0ZSBhbmQgb2N0ZXQKKyAg
ICAgICAgV2ViIElETCB0eXBlcyB3aXRoIGFuZCB3aXRob3V0IFtFbmZvcmNlUmFuZ2VdLgorCisg
ICAgICAgICogZmFzdC9qcy93ZWJpZGwtdHlwZS1tYXBwaW5nLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBmYXN0L2pzL3dlYmlkbC10eXBlLW1hcHBpbmcuaHRtbDoKKwogMjAxMy0wNi0xMiAgS3dh
bmcgWXVsIFNlbyAgPHNreXVsQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIFVucmV2aWV3ZWQg
Z2FyZGVuaW5nLiBVbnNraXBwaW5nIHBhc3NpbmcgdGVzdHMuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2pzL3dlYmlkbC10eXBlLW1hcHBpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9qcy93ZWJpZGwtdHlwZS1tYXBwaW5nLWV4cGVjdGVkLnR4dAppbmRleCBhZWMwYWMx
Li5lMTNkMTE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3dlYmlkbC10eXBlLW1h
cHBpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvd2ViaWRsLXR5cGUt
bWFwcGluZy1leHBlY3RlZC50eHQKQEAgLTU0Niw2ICs1NDYsMjAwIEBAIFBBU1MgY29udmVydGVy
LnRlc3RFbmZvcmNlUmFuZ2VVbnNpZ25lZExvbmdMb25nIGlzIDAKIFBBU1MgY29udmVydGVyLnRl
c3RFbmZvcmNlUmFuZ2VVbnNpZ25lZExvbmdMb25nID0gdW5kZWZpbmVkIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCiBQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdl
VW5zaWduZWRMb25nTG9uZyA9IHt2YWx1ZU9mOmZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCdj
dXN0b20nKTt9fSB0aHJldyBleGNlcHRpb24gRXJyb3I6IGN1c3RvbS4KIAorUEFTUyAndGVzdEJ5
dGUnIGluIGNvbnZlcnRlciBpcyB0cnVlCitQQVNTIHR5cGVvZiBjb252ZXJ0ZXIudGVzdEJ5dGUg
PT09ICdudW1iZXInIGlzIHRydWUKK2NvbnZlcnRlci50ZXN0Qnl0ZSA9IDAKK1BBU1MgY29udmVy
dGVyLnRlc3RCeXRlIGlzIDAKK2NvbnZlcnRlci50ZXN0Qnl0ZSA9IC0xCitQQVNTIGNvbnZlcnRl
ci50ZXN0Qnl0ZSBpcyAtMQorY29udmVydGVyLnRlc3RCeXRlID0gMQorUEFTUyBjb252ZXJ0ZXIu
dGVzdEJ5dGUgaXMgMQorY29udmVydGVyLnRlc3RCeXRlID0gMHg3RgorUEFTUyBjb252ZXJ0ZXIu
dGVzdEJ5dGUgaXMgMHg3RgorY29udmVydGVyLnRlc3RCeXRlID0gMHg4MAorUEFTUyBjb252ZXJ0
ZXIudGVzdEJ5dGUgaXMgLTB4ODAKK2NvbnZlcnRlci50ZXN0Qnl0ZSA9IC0weDdGCitQQVNTIGNv
bnZlcnRlci50ZXN0Qnl0ZSBpcyAtMHg3RgorY29udmVydGVyLnRlc3RCeXRlID0gLTB4ODAKK1BB
U1MgY29udmVydGVyLnRlc3RCeXRlIGlzIC0weDgwCitjb252ZXJ0ZXIudGVzdEJ5dGUgPSAtMHg4
MQorUEFTUyBjb252ZXJ0ZXIudGVzdEJ5dGUgaXMgMHg3RgorY29udmVydGVyLnRlc3RCeXRlID0g
TnVtYmVyLk1JTl9WQUxVRQorUEFTUyBjb252ZXJ0ZXIudGVzdEJ5dGUgaXMgMAorY29udmVydGVy
LnRlc3RCeXRlID0gLU51bWJlci5NSU5fVkFMVUUKK1BBU1MgY29udmVydGVyLnRlc3RCeXRlIGlz
IDAKK2NvbnZlcnRlci50ZXN0Qnl0ZSA9IE51bWJlci5NQVhfVkFMVUUKK1BBU1MgY29udmVydGVy
LnRlc3RCeXRlIGlzIDAKK2NvbnZlcnRlci50ZXN0Qnl0ZSA9IC1OdW1iZXIuTUFYX1ZBTFVFCitQ
QVNTIGNvbnZlcnRlci50ZXN0Qnl0ZSBpcyAwCitjb252ZXJ0ZXIudGVzdEJ5dGUgPSAxLjk5CitQ
QVNTIGNvbnZlcnRlci50ZXN0Qnl0ZSBpcyAxCitjb252ZXJ0ZXIudGVzdEJ5dGUgPSAtMS45OQor
UEFTUyBjb252ZXJ0ZXIudGVzdEJ5dGUgaXMgLTEKK2NvbnZlcnRlci50ZXN0Qnl0ZSA9IEluZmlu
aXR5CitQQVNTIGNvbnZlcnRlci50ZXN0Qnl0ZSBpcyAwCitjb252ZXJ0ZXIudGVzdEJ5dGUgPSAt
SW5maW5pdHkKK1BBU1MgY29udmVydGVyLnRlc3RCeXRlIGlzIDAKK2NvbnZlcnRlci50ZXN0Qnl0
ZSA9IE5hTgorUEFTUyBjb252ZXJ0ZXIudGVzdEJ5dGUgaXMgMAorY29udmVydGVyLnRlc3RCeXRl
ID0gZmFsc2UKK1BBU1MgY29udmVydGVyLnRlc3RCeXRlIGlzIDAKK2NvbnZlcnRlci50ZXN0Qnl0
ZSA9IHRydWUKK1BBU1MgY29udmVydGVyLnRlc3RCeXRlIGlzIDEKK2NvbnZlcnRlci50ZXN0Qnl0
ZSA9ICcnCitQQVNTIGNvbnZlcnRlci50ZXN0Qnl0ZSBpcyAwCitjb252ZXJ0ZXIudGVzdEJ5dGUg
PSAnMScKK1BBU1MgY29udmVydGVyLnRlc3RCeXRlIGlzIDEKK2NvbnZlcnRlci50ZXN0Qnl0ZSA9
ICdhYmMnCitQQVNTIGNvbnZlcnRlci50ZXN0Qnl0ZSBpcyAwCitjb252ZXJ0ZXIudGVzdEJ5dGUg
PSBudWxsCitQQVNTIGNvbnZlcnRlci50ZXN0Qnl0ZSBpcyAwCitjb252ZXJ0ZXIudGVzdEJ5dGUg
PSB1bmRlZmluZWQKK1BBU1MgY29udmVydGVyLnRlc3RCeXRlIGlzIDAKK1BBU1MgY29udmVydGVy
LnRlc3RCeXRlID0ge3ZhbHVlT2Y6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoJ2N1c3RvbScp
O319IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogY3VzdG9tLgorCitQQVNTICd0ZXN0RW5mb3JjZVJh
bmdlQnl0ZScgaW4gY29udmVydGVyIGlzIHRydWUKK1BBU1MgdHlwZW9mIGNvbnZlcnRlci50ZXN0
RW5mb3JjZVJhbmdlQnl0ZSA9PT0gJ251bWJlcicgaXMgdHJ1ZQorY29udmVydGVyLnRlc3RFbmZv
cmNlUmFuZ2VCeXRlID0gMAorUEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUgaXMg
MAorY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRlID0gLTEKK1BBU1MgY29udmVydGVyLnRl
c3RFbmZvcmNlUmFuZ2VCeXRlIGlzIC0xCitjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUg
PSAxCitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlQnl0ZSBpcyAxCitjb252ZXJ0ZXIu
dGVzdEVuZm9yY2VSYW5nZUJ5dGUgPSAweDdGCitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJh
bmdlQnl0ZSBpcyAweDdGCitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlQnl0ZSA9IDB4
ODAgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK2NvbnZlcnRlci50ZXN0
RW5mb3JjZVJhbmdlQnl0ZSA9IC0weDdGCitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdl
Qnl0ZSBpcyAtMHg3RgorY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRlID0gLTB4ODAKK1BB
U1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRlIGlzIC0weDgwCitQQVNTIGNvbnZlcnRl
ci50ZXN0RW5mb3JjZVJhbmdlQnl0ZSA9IC0weDgxIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IFR5cGUgZXJyb3IuCitjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUgPSBOdW1iZXIuTUlO
X1ZBTFVFCitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlQnl0ZSBpcyAwCitjb252ZXJ0
ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUgPSAtTnVtYmVyLk1JTl9WQUxVRQorUEFTUyBjb252ZXJ0
ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUgaXMgMAorUEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VS
YW5nZUJ5dGUgPSBOdW1iZXIuTUFYX1ZBTFVFIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5
cGUgZXJyb3IuCitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlQnl0ZSA9IC1OdW1iZXIu
TUFYX1ZBTFVFIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitjb252ZXJ0
ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUgPSAxLjk5CitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3Jj
ZVJhbmdlQnl0ZSBpcyAxCitjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUgPSAtMS45OQor
UEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUgaXMgLTEKK1BBU1MgY29udmVydGVy
LnRlc3RFbmZvcmNlUmFuZ2VCeXRlID0gSW5maW5pdHkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogVHlwZSBlcnJvci4KK1BBU1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRlID0gLUlu
ZmluaXR5IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIGNvbnZl
cnRlci50ZXN0RW5mb3JjZVJhbmdlQnl0ZSA9IE5hTiB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBUeXBlIGVycm9yLgorY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRlID0gZmFsc2UKK1BB
U1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRlIGlzIDAKK2NvbnZlcnRlci50ZXN0RW5m
b3JjZVJhbmdlQnl0ZSA9IHRydWUKK1BBU1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRl
IGlzIDEKK2NvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlQnl0ZSA9ICcnCitQQVNTIGNvbnZlcnRl
ci50ZXN0RW5mb3JjZVJhbmdlQnl0ZSBpcyAwCitjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZUJ5
dGUgPSAnMScKK1BBU1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRlIGlzIDEKK1BBU1Mg
Y29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRlID0gJ2FiYycgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogVHlwZSBlcnJvci4KK2NvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlQnl0ZSA9IG51
bGwKK1BBU1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRlIGlzIDAKK1BBU1MgY29udmVy
dGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRlID0gdW5kZWZpbmVkIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlQnl0ZSA9
IHt2YWx1ZU9mOmZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCdjdXN0b20nKTt9fSB0aHJldyBl
eGNlcHRpb24gRXJyb3I6IGN1c3RvbS4KKworUEFTUyAndGVzdE9jdGV0JyBpbiBjb252ZXJ0ZXIg
aXMgdHJ1ZQorUEFTUyB0eXBlb2YgY29udmVydGVyLnRlc3RPY3RldCA9PT0gJ251bWJlcicgaXMg
dHJ1ZQorY29udmVydGVyLnRlc3RPY3RldCA9IDAKK1BBU1MgY29udmVydGVyLnRlc3RPY3RldCBp
cyAwCitjb252ZXJ0ZXIudGVzdE9jdGV0ID0gLTEKK1BBU1MgY29udmVydGVyLnRlc3RPY3RldCBp
cyAweEZGCitjb252ZXJ0ZXIudGVzdE9jdGV0ID0gMQorUEFTUyBjb252ZXJ0ZXIudGVzdE9jdGV0
IGlzIDEKK2NvbnZlcnRlci50ZXN0T2N0ZXQgPSAweDdGCitQQVNTIGNvbnZlcnRlci50ZXN0T2N0
ZXQgaXMgMHg3RgorY29udmVydGVyLnRlc3RPY3RldCA9IDB4ODAKK1BBU1MgY29udmVydGVyLnRl
c3RPY3RldCBpcyAweDgwCitjb252ZXJ0ZXIudGVzdE9jdGV0ID0gMHhGRgorUEFTUyBjb252ZXJ0
ZXIudGVzdE9jdGV0IGlzIDB4RkYKK2NvbnZlcnRlci50ZXN0T2N0ZXQgPSAweDEwMAorUEFTUyBj
b252ZXJ0ZXIudGVzdE9jdGV0IGlzIDAKK2NvbnZlcnRlci50ZXN0T2N0ZXQgPSAweDEwMQorUEFT
UyBjb252ZXJ0ZXIudGVzdE9jdGV0IGlzIDEKK2NvbnZlcnRlci50ZXN0T2N0ZXQgPSAtMHg4MAor
UEFTUyBjb252ZXJ0ZXIudGVzdE9jdGV0IGlzIDB4ODAKK2NvbnZlcnRlci50ZXN0T2N0ZXQgPSAt
MHg4MQorUEFTUyBjb252ZXJ0ZXIudGVzdE9jdGV0IGlzIDB4N0YKK2NvbnZlcnRlci50ZXN0T2N0
ZXQgPSBOdW1iZXIuTUFYX1ZBTFVFCitQQVNTIGNvbnZlcnRlci50ZXN0T2N0ZXQgaXMgMAorY29u
dmVydGVyLnRlc3RPY3RldCA9IE51bWJlci5NSU5fVkFMVUUKK1BBU1MgY29udmVydGVyLnRlc3RP
Y3RldCBpcyAwCitjb252ZXJ0ZXIudGVzdE9jdGV0ID0gLU51bWJlci5NQVhfVkFMVUUKK1BBU1Mg
Y29udmVydGVyLnRlc3RPY3RldCBpcyAwCitjb252ZXJ0ZXIudGVzdE9jdGV0ID0gLU51bWJlci5N
SU5fVkFMVUUKK1BBU1MgY29udmVydGVyLnRlc3RPY3RldCBpcyAwCitjb252ZXJ0ZXIudGVzdE9j
dGV0ID0gMS45OQorUEFTUyBjb252ZXJ0ZXIudGVzdE9jdGV0IGlzIDEKK2NvbnZlcnRlci50ZXN0
T2N0ZXQgPSAtMS45OQorUEFTUyBjb252ZXJ0ZXIudGVzdE9jdGV0IGlzIDB4RkYKK2NvbnZlcnRl
ci50ZXN0T2N0ZXQgPSBJbmZpbml0eQorUEFTUyBjb252ZXJ0ZXIudGVzdE9jdGV0IGlzIDAKK2Nv
bnZlcnRlci50ZXN0T2N0ZXQgPSAtSW5maW5pdHkKK1BBU1MgY29udmVydGVyLnRlc3RPY3RldCBp
cyAwCitjb252ZXJ0ZXIudGVzdE9jdGV0ID0gTmFOCitQQVNTIGNvbnZlcnRlci50ZXN0T2N0ZXQg
aXMgMAorY29udmVydGVyLnRlc3RPY3RldCA9IGZhbHNlCitQQVNTIGNvbnZlcnRlci50ZXN0T2N0
ZXQgaXMgMAorY29udmVydGVyLnRlc3RPY3RldCA9IHRydWUKK1BBU1MgY29udmVydGVyLnRlc3RP
Y3RldCBpcyAxCitjb252ZXJ0ZXIudGVzdE9jdGV0ID0gJycKK1BBU1MgY29udmVydGVyLnRlc3RP
Y3RldCBpcyAwCitjb252ZXJ0ZXIudGVzdE9jdGV0ID0gJzEnCitQQVNTIGNvbnZlcnRlci50ZXN0
T2N0ZXQgaXMgMQorY29udmVydGVyLnRlc3RPY3RldCA9ICdhYmMnCitQQVNTIGNvbnZlcnRlci50
ZXN0T2N0ZXQgaXMgMAorY29udmVydGVyLnRlc3RPY3RldCA9IG51bGwKK1BBU1MgY29udmVydGVy
LnRlc3RPY3RldCBpcyAwCitjb252ZXJ0ZXIudGVzdE9jdGV0ID0gdW5kZWZpbmVkCitQQVNTIGNv
bnZlcnRlci50ZXN0T2N0ZXQgaXMgMAorUEFTUyBjb252ZXJ0ZXIudGVzdE9jdGV0ID0ge3ZhbHVl
T2Y6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoJ2N1c3RvbScpO319IHRocmV3IGV4Y2VwdGlv
biBFcnJvcjogY3VzdG9tLgorCitQQVNTICd0ZXN0RW5mb3JjZVJhbmdlT2N0ZXQnIGluIGNvbnZl
cnRlciBpcyB0cnVlCitQQVNTIHR5cGVvZiBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZU9jdGV0
ID09PSAnbnVtYmVyJyBpcyB0cnVlCitjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZU9jdGV0ID0g
MAorUEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZU9jdGV0IGlzIDAKK1BBU1MgY29udmVy
dGVyLnRlc3RFbmZvcmNlUmFuZ2VPY3RldCA9IC0xIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IFR5cGUgZXJyb3IuCitjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZU9jdGV0ID0gMQorUEFTUyBj
b252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZU9jdGV0IGlzIDEKK2NvbnZlcnRlci50ZXN0RW5mb3Jj
ZVJhbmdlT2N0ZXQgPSAweDdGCitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0ZXQg
aXMgMHg3RgorY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VPY3RldCA9IDB4ODAKK1BBU1MgY29u
dmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VPY3RldCBpcyAweDgwCitjb252ZXJ0ZXIudGVzdEVuZm9y
Y2VSYW5nZU9jdGV0ID0gMHhGRgorUEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZU9jdGV0
IGlzIDB4RkYKK1BBU1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VPY3RldCA9IDB4MTAwIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIGNvbnZlcnRlci50ZXN0
RW5mb3JjZVJhbmdlT2N0ZXQgPSAweDEwMSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBl
IGVycm9yLgorUEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZU9jdGV0ID0gLTB4ODAgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgY29udmVydGVyLnRlc3RF
bmZvcmNlUmFuZ2VPY3RldCA9IC0weDgxIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUg
ZXJyb3IuCitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0ZXQgPSBOdW1iZXIuTUFY
X1ZBTFVFIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitjb252ZXJ0ZXIu
dGVzdEVuZm9yY2VSYW5nZU9jdGV0ID0gTnVtYmVyLk1JTl9WQUxVRQorUEFTUyBjb252ZXJ0ZXIu
dGVzdEVuZm9yY2VSYW5nZU9jdGV0IGlzIDAKK1BBU1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFu
Z2VPY3RldCA9IC1OdW1iZXIuTUFYX1ZBTFVFIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5
cGUgZXJyb3IuCitjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZU9jdGV0ID0gLU51bWJlci5NSU5f
VkFMVUUKK1BBU1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VPY3RldCBpcyAwCitjb252ZXJ0
ZXIudGVzdEVuZm9yY2VSYW5nZU9jdGV0ID0gMS45OQorUEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9y
Y2VSYW5nZU9jdGV0IGlzIDEKK1BBU1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VPY3RldCA9
IC0xLjk5IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIGNvbnZl
cnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0ZXQgPSBJbmZpbml0eSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZU9jdGV0
ID0gLUluZmluaXR5IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNT
IGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0ZXQgPSBOYU4gdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogVHlwZSBlcnJvci4KK2NvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0ZXQgPSBm
YWxzZQorUEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZU9jdGV0IGlzIDAKK2NvbnZlcnRl
ci50ZXN0RW5mb3JjZVJhbmdlT2N0ZXQgPSB0cnVlCitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3Jj
ZVJhbmdlT2N0ZXQgaXMgMQorY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VPY3RldCA9ICcnCitQ
QVNTIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0ZXQgaXMgMAorY29udmVydGVyLnRlc3RF
bmZvcmNlUmFuZ2VPY3RldCA9ICcxJworUEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZU9j
dGV0IGlzIDEKK1BBU1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VPY3RldCA9ICdhYmMnIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitjb252ZXJ0ZXIudGVzdEVuZm9y
Y2VSYW5nZU9jdGV0ID0gbnVsbAorUEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZU9jdGV0
IGlzIDAKK1BBU1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VPY3RldCA9IHVuZGVmaW5lZCB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBjb252ZXJ0ZXIudGVz
dEVuZm9yY2VSYW5nZU9jdGV0ID0ge3ZhbHVlT2Y6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3Io
J2N1c3RvbScpO319IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogY3VzdG9tLgorCiBQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvanMvd2ViaWRsLXR5cGUtbWFwcGluZy5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9qcy93ZWJpZGwtdHlwZS1tYXBwaW5nLmh0bWwKaW5kZXggZDgxMWU1Yy4uZjk3OGQzOSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9qcy93ZWJpZGwtdHlwZS1tYXBwaW5nLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9qcy93ZWJpZGwtdHlwZS1tYXBwaW5nLmh0bWwKQEAgLTMyNSw1
ICszMjUsMTAxIEBAIHRlc3ROb25OdW1lcmljVG9OdW1lcmljRW5mb3JjZVJhbmdlKHR5cGUpOwog
Y29udmVydFRocm93cyh0eXBlLCAie3ZhbHVlT2Y6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3Io
J2N1c3RvbScpO319Iik7CiBkZWJ1ZygiIik7CiAKK3R5cGUgPSAidGVzdEJ5dGUiOwordmVyaWZ5
QXR0cmlidXRlKHR5cGUpOworY29udmVydCh0eXBlLCAiMCIpOworY29udmVydCh0eXBlLCAiLTEi
KTsKK2NvbnZlcnQodHlwZSwgIjEiKTsKK2NvbnZlcnQodHlwZSwgIjB4N0YiKTsKK2NvbnZlcnQo
dHlwZSwgIjB4ODAiLCAiLTB4ODAiKTsKK2NvbnZlcnQodHlwZSwgIi0weDdGIik7Citjb252ZXJ0
KHR5cGUsICItMHg4MCIpOworY29udmVydCh0eXBlLCAiLTB4ODEiLCAiMHg3RiIpOworY29udmVy
dCh0eXBlLCAiTnVtYmVyLk1JTl9WQUxVRSIsICIwIik7Citjb252ZXJ0KHR5cGUsICItTnVtYmVy
Lk1JTl9WQUxVRSIsICIwIik7Citjb252ZXJ0KHR5cGUsICJOdW1iZXIuTUFYX1ZBTFVFIiwgIjAi
KTsKK2NvbnZlcnQodHlwZSwgIi1OdW1iZXIuTUFYX1ZBTFVFIiwgIjAiKTsKK2NvbnZlcnQodHlw
ZSwgIjEuOTkiLCAiMSIpOworY29udmVydCh0eXBlLCAiLTEuOTkiLCAiLTEiKTsKK2NvbnZlcnQo
dHlwZSwgIkluZmluaXR5IiwgIjAiKTsKK2NvbnZlcnQodHlwZSwgIi1JbmZpbml0eSIsICIwIik7
Citjb252ZXJ0KHR5cGUsICJOYU4iLCAiMCIpOwordGVzdE5vbk51bWVyaWNUb051bWVyaWModHlw
ZSk7Citjb252ZXJ0VGhyb3dzKHR5cGUsICJ7dmFsdWVPZjpmdW5jdGlvbigpe3Rocm93IG5ldyBF
cnJvcignY3VzdG9tJyk7fX0iKTsKK2RlYnVnKCIiKTsKKwordHlwZSA9ICJ0ZXN0RW5mb3JjZVJh
bmdlQnl0ZSI7Cit2ZXJpZnlBdHRyaWJ1dGUodHlwZSk7Citjb252ZXJ0KHR5cGUsICIwIik7Citj
b252ZXJ0KHR5cGUsICItMSIpOworY29udmVydCh0eXBlLCAiMSIpOworY29udmVydCh0eXBlLCAi
MHg3RiIpOworY29udmVydFRocm93cyh0eXBlLCAiMHg4MCIpOworY29udmVydCh0eXBlLCAiLTB4
N0YiKTsKK2NvbnZlcnQodHlwZSwgIi0weDgwIik7Citjb252ZXJ0VGhyb3dzKHR5cGUsICItMHg4
MSIpOworY29udmVydCh0eXBlLCAiTnVtYmVyLk1JTl9WQUxVRSIsICIwIik7Citjb252ZXJ0KHR5
cGUsICItTnVtYmVyLk1JTl9WQUxVRSIsICIwIik7Citjb252ZXJ0VGhyb3dzKHR5cGUsICJOdW1i
ZXIuTUFYX1ZBTFVFIik7Citjb252ZXJ0VGhyb3dzKHR5cGUsICItTnVtYmVyLk1BWF9WQUxVRSIp
OworY29udmVydCh0eXBlLCAiMS45OSIsICIxIik7Citjb252ZXJ0KHR5cGUsICItMS45OSIsICIt
MSIpOworY29udmVydFRocm93cyh0eXBlLCAiSW5maW5pdHkiKTsKK2NvbnZlcnRUaHJvd3ModHlw
ZSwgIi1JbmZpbml0eSIpOworY29udmVydFRocm93cyh0eXBlLCAiTmFOIik7Cit0ZXN0Tm9uTnVt
ZXJpY1RvTnVtZXJpY0VuZm9yY2VSYW5nZSh0eXBlKTsKK2NvbnZlcnRUaHJvd3ModHlwZSwgInt2
YWx1ZU9mOmZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCdjdXN0b20nKTt9fSIpOworZGVidWco
IiIpOworCit0eXBlID0gInRlc3RPY3RldCI7Cit2ZXJpZnlBdHRyaWJ1dGUodHlwZSk7Citjb252
ZXJ0KHR5cGUsICIwIik7Citjb252ZXJ0KHR5cGUsICItMSIsICIweEZGIik7Citjb252ZXJ0KHR5
cGUsICIxIik7Citjb252ZXJ0KHR5cGUsICIweDdGIik7Citjb252ZXJ0KHR5cGUsICIweDgwIik7
Citjb252ZXJ0KHR5cGUsICIweEZGIik7Citjb252ZXJ0KHR5cGUsICIweDEwMCIsICIwIik7Citj
b252ZXJ0KHR5cGUsICIweDEwMSIsICIxIik7Citjb252ZXJ0KHR5cGUsICItMHg4MCIsICIweDgw
Iik7Citjb252ZXJ0KHR5cGUsICItMHg4MSIsICIweDdGIik7Citjb252ZXJ0KHR5cGUsICJOdW1i
ZXIuTUFYX1ZBTFVFIiwgIjAiKTsKK2NvbnZlcnQodHlwZSwgIk51bWJlci5NSU5fVkFMVUUiLCAi
MCIpOworY29udmVydCh0eXBlLCAiLU51bWJlci5NQVhfVkFMVUUiLCAiMCIpOworY29udmVydCh0
eXBlLCAiLU51bWJlci5NSU5fVkFMVUUiLCAiMCIpOworY29udmVydCh0eXBlLCAiMS45OSIsICIx
Iik7Citjb252ZXJ0KHR5cGUsICItMS45OSIsICIweEZGIik7Citjb252ZXJ0KHR5cGUsICJJbmZp
bml0eSIsICIwIik7Citjb252ZXJ0KHR5cGUsICItSW5maW5pdHkiLCAiMCIpOworY29udmVydCh0
eXBlLCAiTmFOIiwgIjAiKTsKK3Rlc3ROb25OdW1lcmljVG9OdW1lcmljKHR5cGUpOworY29udmVy
dFRocm93cyh0eXBlLCAie3ZhbHVlT2Y6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoJ2N1c3Rv
bScpO319Iik7CitkZWJ1ZygiIik7CisKK3R5cGUgPSAidGVzdEVuZm9yY2VSYW5nZU9jdGV0IjsK
K3ZlcmlmeUF0dHJpYnV0ZSh0eXBlKTsKK2NvbnZlcnQodHlwZSwgIjAiKTsKK2NvbnZlcnRUaHJv
d3ModHlwZSwgIi0xIik7Citjb252ZXJ0KHR5cGUsICIxIik7Citjb252ZXJ0KHR5cGUsICIweDdG
Iik7Citjb252ZXJ0KHR5cGUsICIweDgwIik7Citjb252ZXJ0KHR5cGUsICIweEZGIik7Citjb252
ZXJ0VGhyb3dzKHR5cGUsICIweDEwMCIpOworY29udmVydFRocm93cyh0eXBlLCAiMHgxMDEiKTsK
K2NvbnZlcnRUaHJvd3ModHlwZSwgIi0weDgwIik7Citjb252ZXJ0VGhyb3dzKHR5cGUsICItMHg4
MSIpOworY29udmVydFRocm93cyh0eXBlLCAiTnVtYmVyLk1BWF9WQUxVRSIpOworY29udmVydCh0
eXBlLCAiTnVtYmVyLk1JTl9WQUxVRSIsICIwIik7Citjb252ZXJ0VGhyb3dzKHR5cGUsICItTnVt
YmVyLk1BWF9WQUxVRSIpOworY29udmVydCh0eXBlLCAiLU51bWJlci5NSU5fVkFMVUUiLCAiMCIp
OworY29udmVydCh0eXBlLCAiMS45OSIsICIxIik7Citjb252ZXJ0VGhyb3dzKHR5cGUsICItMS45
OSIpOworY29udmVydFRocm93cyh0eXBlLCAiSW5maW5pdHkiKTsKK2NvbnZlcnRUaHJvd3ModHlw
ZSwgIi1JbmZpbml0eSIpOworY29udmVydFRocm93cyh0eXBlLCAiTmFOIik7Cit0ZXN0Tm9uTnVt
ZXJpY1RvTnVtZXJpY0VuZm9yY2VSYW5nZSh0eXBlKTsKK2NvbnZlcnRUaHJvd3ModHlwZSwgInt2
YWx1ZU9mOmZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCdjdXN0b20nKTt9fSIpOworZGVidWco
IiIpOworCiA8L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyODM4ZjJlLi4yOWZjYWQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDcgQEAKKzIwMTMtMDYtMTMgIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBz
aXNhLnNhbXN1bmcuY29tPgorCisgICAgICAgIFN1cHBvcnQgYnl0ZSBhbmQgb2N0ZXQgdHlwZXMg
aW4gYmluZGluZ3MgZ2VuZXJhdG9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTE3NTQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VudGFybyBIYXJh
LgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBieXRlIGFuZCBvY3RldCBJREwgdHlwZXMgdG8g
dGhlIGJpbmRpbmdzCisgICAgICAgIGdlbmVyYXRvcjoKKyAgICAgICAgaHR0cDovL2Rldi53My5v
cmcvMjAwNi93ZWJhcGkvV2ViSURMLyNpZGwtYnl0ZQorICAgICAgICBodHRwOi8vZGV2LnczLm9y
Zy8yMDA2L3dlYmFwaS9XZWJJREwvI2lkbC1vY3RldAorCisgICAgICAgIE5vIG5ldyB0ZXN0cywg
Y292ZXJlZCBieSBleGlzdGluZyBsYXlvdXQgdGVzdHMgYW5kIGJ5IG5ldworICAgICAgICBiaW5k
aW5ncyB0ZXN0cy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkgYmluZGluZ3Mg
dGVzdHMgYW5kOgorICAgICAgICBmYXN0L2pzL3dlYmlkbC10eXBlLW1hcHBpbmcuaHRtbAorCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0RPTUJpbmRpbmcuaDogQWRkIHRvSW50OCgpIC8gdG9VSW50OCgpCisgICAgICAgIG1l
dGhvZHMgdG8gY29udmVydCBmcm9tIEpTVmFsdWUgdG8gaW50OF90IC8gdWludDhfdCBhcworICAg
ICAgICBzcGVjaWZpZWQgYnkgV2ViIElETC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGF0
YVZpZXdDdXN0b20uY3BwOiBSZW1vdmUgY3VzdG9tIGNvZGUgZm9yCisgICAgICAgIGdldEludDgs
IGdldFVJbnQ4LCBzZXRJbnQ4LCBzZXRVSW50OCBub3cgdGhhdCBieXRlIGFuZCBvY3RldAorICAg
ICAgICB0eXBlcyBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBiaW5kaW5ncyBnZW5lcmF0b3IuCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JDUFAucG06CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9DUFAvV2ViRE9NVGVzdE9iai5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0NQUC9XZWJET01UZXN0T2JqLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dP
YmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9E
T01UZXN0T2JqLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVz
dE9iai5tbToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGw6IEFk
ZCB0ZXN0cyBmb3IgYnl0ZSBhbmQgb2N0ZXQgdHlwZXMuCisgICAgICAgICogaHRtbC9jYW52YXMv
RGF0YVZpZXcuaWRsOiBSZW1vdmUgW0N1c3RvbV0gZXh0ZW5kZWQgYXR0cmlidXRlIGZvcgorICAg
ICAgICBnZXRJbnQ4LCBnZXRVSW50OCwgc2V0SW50OCwgc2V0VUludDggYW5kIHVzZSBuZXdseSBz
dXBwb3J0ZWQgYnl0ZSAvIG9jdGV0CisgICAgICAgIHR5cGVzLgorCiAyMDEzLTA2LTEyICBDaHJp
c3RvcGhlIER1bWV6ICA8Y2guZHVtZXpAc2lzYS5zYW1zdW5nLmNvbT4KIAogICAgICAgICBTdXBw
b3J0IGxhdGVzdCBXZWIgSURMIGluZGV4ZWQgcHJvcGVydHkgZ2V0dGVycwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKaW5kZXggNjcyNjdkMC4uYTNhYzI4NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCkBAIC0zOSw2
ICszOSw3IEBACiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUv
RXhjZXB0aW9uSGVscGVycy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNGdW5jdGlvbi5oPgorI2lu
Y2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKQEAgLTI4
Niw2ICsyODcsOSBAQCBTdHJ1Y3R1cmUqIGNhY2hlRE9NU3RydWN0dXJlKEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dQogICAgIHJldHVybiBzdHJ1Y3R1
cmVzLnNldChjbGFzc0luZm8sIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KGdsb2JhbE9iamVjdC0+
dm0oKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpKS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9
CiAKK3N0YXRpYyBjb25zdCBpbnQ4X3Qga01heEludDggPSAxMjc7CitzdGF0aWMgY29uc3QgaW50
OF90IGtNaW5JbnQ4ID0gLTEyODsKK3N0YXRpYyBjb25zdCB1aW50OF90IGtNYXhVSW50OCA9IDI1
NTsKIHN0YXRpYyBjb25zdCBpbnQzMl90IGtNYXhJbnQzMiA9IDB4N2ZmZmZmZmY7CiBzdGF0aWMg
Y29uc3QgaW50MzJfdCBrTWluSW50MzIgPSAta01heEludDMyIC0gMTsKIHN0YXRpYyBjb25zdCB1
aW50MzJfdCBrTWF4VUludDMyID0gMHhmZmZmZmZmZlU7CkBAIC0zMDUsNiArMzA5LDU0IEBAIHN0
YXRpYyBkb3VibGUgZW5mb3JjZVJhbmdlKEV4ZWNTdGF0ZSogZXhlYywgZG91YmxlIHgsIGRvdWJs
ZSBtaW5pbXVtLCBkb3VibGUgbWF4CiAgICAgcmV0dXJuIHg7CiB9CiAKKy8vIGh0dHA6Ly93d3cu
dzMub3JnL1RSL1dlYklETC8jZXMtYnl0ZQoraW50OF90IHRvSW50OChFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgdmFsdWUsIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbiBjb25maWd1cmF0
aW9uKQoreworICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpIHsKKyAgICAgICAgaW50MzJfdCBkID0g
dmFsdWUudG9JbnQzMihleGVjKTsKKyAgICAgICAgaWYgKGQgPj0ga01pbkludDggJiYgZCA8PSBr
TWF4SW50OCkKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ4X3Q+KGQpOworICAg
IH0KKworICAgIGRvdWJsZSB4ID0gdmFsdWUudG9OdW1iZXIoZXhlYyk7CisgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChjb25maWd1cmF0
aW9uID09IEVuZm9yY2VSYW5nZSkKKyAgICAgICAgcmV0dXJuIGVuZm9yY2VSYW5nZShleGVjLCB4
LCBrTWluSW50OCwga01heEludDgpOworCisgICAgaWYgKHN0ZDo6aXNuYW4oeCkgfHwgc3RkOjpp
c2luZih4KSB8fCAheCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICB4ID0geCA8IDAgPyAtZmxv
b3IoYWJzKHgpKSA6IGZsb29yKGFicyh4KSk7CisgICAgeCA9IGZtb2QoeCwgMjU2KTsgLy8gMl44
LgorCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDhfdD4oeCA+IGtNYXhJbnQ4ID8geCAtIDI1
NiA6IHgpOworfQorCisvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9XZWJJREwvI2VzLW9jdGV0Cit1
aW50OF90IHRvVUludDgoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBJbnRlZ2VyQ29u
dmVyc2lvbkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikKK3sKKyAgICBpZiAodmFsdWUuaXNV
SW50MzIoKSkgeworICAgICAgICB1aW50MzJfdCBkID0gdmFsdWUudG9VSW50MzIoZXhlYyk7Cisg
ICAgICAgIGlmIChkIDw9IGtNYXhVSW50OCkKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDx1aW50OF90PihkKTsKKyAgICB9CisKKyAgICBkb3VibGUgeCA9IHZhbHVlLnRvTnVtYmVyKGV4
ZWMpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICBpZiAoY29uZmlndXJhdGlvbiA9PSBFbmZvcmNlUmFuZ2UpCisgICAgICAgIHJldHVybiBl
bmZvcmNlUmFuZ2UoZXhlYywgeCwgMCwga01heFVJbnQ4KTsKKworICAgIGlmIChzdGQ6OmlzbmFu
KHgpIHx8IHN0ZDo6aXNpbmYoeCkgfHwgIXgpCisgICAgICAgIHJldHVybiAwOworCisgICAgeCA9
IHggPCAwID8gLWZsb29yKGFicyh4KSkgOiBmbG9vcihhYnMoeCkpOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDx1aW50OF90PihmbW9kKHgsIDI1NikpOyAvLyAyXjguCit9CisKIC8vIGh0dHA6Ly93
d3cudzMub3JnL1RSL1dlYklETC8jZXMtbG9uZwogaW50MzJfdCB0b0ludDMyRW5mb3JjZVJhbmdl
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01CaW5kaW5nLmgKaW5kZXggNDQ4NDQwNC4uOTJlY2NiNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKQEAgLTI2Nyw2ICsyNjcsOSBAQCBjbGFz
cyBET01TdHJpbmdMaXN0OwogICAgIGludDMyX3QgdG9JbnQzMkVuZm9yY2VSYW5nZShKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSk7CiAgICAgdWludDMyX3QgdG9VSW50MzJFbmZvcmNlUmFu
Z2UoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUpOwogCisgICAgaW50OF90IHRvSW50OChK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0
aW9uKTsKKyAgICB1aW50OF90IHRvVUludDgoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUs
IEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbik7CisKICAgICAvKgogICAgICAgICBDb252
ZXJ0IGEgdmFsdWUgdG8gYW4gaW50ZWdlciBhcyBwZXIgPGh0dHA6Ly93d3cudzMub3JnL1RSL1dl
YklETC8+LgogICAgICAgICBUaGUgY29udmVyc2lvbiBmYWlscyBpZiB0aGUgdmFsdWUgY2Fubm90
IGJlIGNvbnZlcnRlZCB0byBhIG51bWJlciBvciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRGF0YVZpZXdDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNEYXRhVmlld0N1c3RvbS5jcHAKaW5kZXggNjA0Y2IxMC4uMjM2NDFlMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhVmlld0N1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhVmlld0N1c3RvbS5jcHAKQEAgLTM2
LDggKzM2LDYgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ZW51bSBEYXRhVmlld0FjY2Vzc1R5cGUgewotICAgIEFjY2Vzc0RhdGFWaWV3TWVtYmVyQXNJbnQ4
LAotICAgIEFjY2Vzc0RhdGFWaWV3TWVtYmVyQXNVaW50OCwKICAgICBBY2Nlc3NEYXRhVmlld01l
bWJlckFzRmxvYXQzMiwKICAgICBBY2Nlc3NEYXRhVmlld01lbWJlckFzRmxvYXQ2NAogfTsKQEAg
LTgwLDEyICs3OCw2IEBAIHN0YXRpYyBKU1ZhbHVlIGdldERhdGFWaWV3TWVtYmVyKEV4ZWNTdGF0
ZSogZXhlYywgRGF0YVZpZXcqIGltcCwgRGF0YVZpZXdBY2Nlc3NUCiAKICAgICBKU0M6OkpTVmFs
dWUgcmVzdWx0OwogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgQWNjZXNzRGF0YVZpZXdN
ZW1iZXJBc0ludDg6Ci0gICAgICAgIHJlc3VsdCA9IGpzTnVtYmVyKGltcC0+Z2V0SW50OChieXRl
T2Zmc2V0LCBlYykpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFjY2Vzc0RhdGFWaWV3TWVt
YmVyQXNVaW50ODoKLSAgICAgICAgcmVzdWx0ID0ganNOdW1iZXIoaW1wLT5nZXRVaW50OChieXRl
T2Zmc2V0LCBlYykpOwotICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc0RhdGFWaWV3TWVt
YmVyQXNGbG9hdDMyOgogICAgIGNhc2UgQWNjZXNzRGF0YVZpZXdNZW1iZXJBc0Zsb2F0NjQ6IHsK
ICAgICAgICAgZG91YmxlIHZhbHVlID0gKHR5cGUgPT0gQWNjZXNzRGF0YVZpZXdNZW1iZXJBc0Zs
b2F0MzIpID8gaW1wLT5nZXRGbG9hdDMyKGJ5dGVPZmZzZXQsIGxpdHRsZUVuZGlhbiwgZWMpIDog
aW1wLT5nZXRGbG9hdDY0KGJ5dGVPZmZzZXQsIGxpdHRsZUVuZGlhbiwgZWMpOwpAQCAtOTksMTYg
KzkxLDYgQEAgc3RhdGljIEpTVmFsdWUgZ2V0RGF0YVZpZXdNZW1iZXIoRXhlY1N0YXRlKiBleGVj
LCBEYXRhVmlldyogaW1wLCBEYXRhVmlld0FjY2Vzc1QKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci1KU1ZhbHVlIEpTRGF0YVZpZXc6OmdldEludDgoRXhlY1N0YXRlKiBleGVjKQotewotICAgIHJl
dHVybiBnZXREYXRhVmlld01lbWJlcihleGVjLCBzdGF0aWNfY2FzdDxEYXRhVmlldyo+KGltcGwo
KSksIEFjY2Vzc0RhdGFWaWV3TWVtYmVyQXNJbnQ4KTsKLX0KLQotSlNWYWx1ZSBKU0RhdGFWaWV3
OjpnZXRVaW50OChFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgcmV0dXJuIGdldERhdGFWaWV3TWVt
YmVyKGV4ZWMsIHN0YXRpY19jYXN0PERhdGFWaWV3Kj4oaW1wbCgpKSwgQWNjZXNzRGF0YVZpZXdN
ZW1iZXJBc1VpbnQ4KTsKLX0KLQogSlNWYWx1ZSBKU0RhdGFWaWV3OjpnZXRGbG9hdDMyKEV4ZWNT
dGF0ZSogZXhlYykKIHsKICAgICByZXR1cm4gZ2V0RGF0YVZpZXdNZW1iZXIoZXhlYywgc3RhdGlj
X2Nhc3Q8RGF0YVZpZXcqPihpbXBsKCkpLCBBY2Nlc3NEYXRhVmlld01lbWJlckFzRmxvYXQzMik7
CkBAIC0xMTksNDEgKzEwMSw0IEBAIEpTVmFsdWUgSlNEYXRhVmlldzo6Z2V0RmxvYXQ2NChFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIGdldERhdGFWaWV3TWVtYmVyKGV4ZWMsIHN0YXRpY19j
YXN0PERhdGFWaWV3Kj4oaW1wbCgpKSwgQWNjZXNzRGF0YVZpZXdNZW1iZXJBc0Zsb2F0NjQpOwog
fQogCi1zdGF0aWMgSlNWYWx1ZSBzZXREYXRhVmlld01lbWJlcihFeGVjU3RhdGUqIGV4ZWMsIERh
dGFWaWV3KiBpbXAsIERhdGFWaWV3QWNjZXNzVHlwZSB0eXBlKQotewotICAgIGlmIChleGVjLT5h
cmd1bWVudENvdW50KCkgPCAyKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgdW5zaWduZWQgYnl0ZU9mZnNldCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvVUludDMy
KGV4ZWMpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7Ci0gICAgaW50IHZhbHVlID0gZXhlYy0+YXJndW1lbnQoMSkudG9JbnQzMihl
eGVjKTsKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwotICAgICAgICAKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIEFjY2Vz
c0RhdGFWaWV3TWVtYmVyQXNJbnQ4OgotICAgICAgICBpbXAtPnNldEludDgoYnl0ZU9mZnNldCwg
c3RhdGljX2Nhc3Q8aW50OF90Pih2YWx1ZSksIGVjKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBBY2Nlc3NEYXRhVmlld01lbWJlckFzVWludDg6Ci0gICAgICAgIGltcC0+c2V0VWludDgoYnl0
ZU9mZnNldCwgc3RhdGljX2Nhc3Q8dWludDhfdD4odmFsdWUpLCBlYyk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBi
cmVhazsKLSAgICB9Ci0gICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKLSAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKLX0KLQotSlNWYWx1ZSBKU0RhdGFWaWV3OjpzZXRJbnQ4KEV4ZWNTdGF0
ZSogZXhlYykKLXsKLSAgICByZXR1cm4gc2V0RGF0YVZpZXdNZW1iZXIoZXhlYywgc3RhdGljX2Nh
c3Q8RGF0YVZpZXcqPihpbXBsKCkpLCBBY2Nlc3NEYXRhVmlld01lbWJlckFzSW50OCk7Ci19Ci0K
LUpTVmFsdWUgSlNEYXRhVmlldzo6c2V0VWludDgoRXhlY1N0YXRlKiBleGVjKQotewotICAgIHJl
dHVybiBzZXREYXRhVmlld01lbWJlcihleGVjLCBzdGF0aWNfY2FzdDxEYXRhVmlldyo+KGltcGwo
KSksIEFjY2Vzc0RhdGFWaWV3TWVtYmVyQXNVaW50OCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckNQUC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckNQUC5wbQppbmRleCAyM2Y4M2Q0Li5kZjFmYzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JDUFAucG0KKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yQ1BQLnBtCkBAIC0yMzYsNiArMjM2
LDggQEAgc3ViIEdldENQUFR5cGUKICAgICBteSAkdXNlQ29uc3RSZWZlcmVuY2UgPSBzaGlmdDsK
ICAgICBteSAkbmFtZSA9IEdldENsYXNzTmFtZSgkdHlwZSk7CiAKKyAgICByZXR1cm4gImNoYXIi
IGlmICR0eXBlIGVxICJieXRlIjsKKyAgICByZXR1cm4gInVuc2lnbmVkIGNoYXIiIGlmICR0eXBl
IGVxICJvY3RldCI7CiAgICAgcmV0dXJuICJpbnQiIGlmICR0eXBlIGVxICJsb25nIjsKICAgICBy
ZXR1cm4gInVuc2lnbmVkIiBpZiAkbmFtZSBlcSAidW5zaWduZWQgbG9uZyI7CiAgICAgcmV0dXJu
ICJ1bnNpZ25lZCBzaG9ydCIgaWYgJHR5cGUgZXEgIkNvbXBhcmVIb3ciOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbSBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0K
aW5kZXggY2YwYjc0NC4uNTViMDVkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtCkBAIC0zMjgsNiArMzI4LDgg
QEAgc3ViIEdldEdWYWx1ZVR5cGVOYW1lIHsKICAgICAgICAgICAgICAgICAgImNoYXIiLCAiY2hh
ciIsCiAgICAgICAgICAgICAgICAgICJsb25nIiwgImxvbmciLAogICAgICAgICAgICAgICAgICAi
bG9uZyBsb25nIiwgImludDY0IiwKKyAgICAgICAgICAgICAgICAgImJ5dGUiLCAiaW50OCIsCisg
ICAgICAgICAgICAgICAgICJvY3RldCIsICJ1aW50OCIsCiAgICAgICAgICAgICAgICAgICJzaG9y
dCIsICJpbnQiLAogICAgICAgICAgICAgICAgICAidWNoYXIiLCAidWNoYXIiLAogICAgICAgICAg
ICAgICAgICAidW5zaWduZWQiLCAidWludCIsCkBAIC0zNTQsNiArMzU2LDggQEAgc3ViIEdldEds
aWJUeXBlTmFtZSB7CiAgICAgICAgICAgICAgICAgICJjaGFyIiwgImdjaGFyIiwKICAgICAgICAg
ICAgICAgICAgImxvbmciLCAiZ2xvbmciLAogICAgICAgICAgICAgICAgICAibG9uZyBsb25nIiwg
ImdpbnQ2NCIsCisgICAgICAgICAgICAgICAgICJieXRlIiwgImdpbnQ4IiwKKyAgICAgICAgICAg
ICAgICAgIm9jdGV0IiwgImd1aW50OCIsCiAgICAgICAgICAgICAgICAgICJzaG9ydCIsICJnc2hv
cnQiLAogICAgICAgICAgICAgICAgICAidWNoYXIiLCAiZ3VjaGFyIiwKICAgICAgICAgICAgICAg
ICAgInVuc2lnbmVkIiwgImd1aW50IiwKQEAgLTM5Niw4ICs0MDAsOSBAQCBzdWIgR2V0V3JpdGVh
YmxlUHJvcGVydGllcyB7CiAgICAgICAgIG15ICRndHlwZSA9IEdldEdWYWx1ZVR5cGVOYW1lKCRw
cm9wZXJ0eS0+c2lnbmF0dXJlLT50eXBlKTsKICAgICAgICAgbXkgJGhhc0d0eXBlU2lnbmF0dXJl
ID0gKCRndHlwZSBlcSAiYm9vbGVhbiIgfHwgJGd0eXBlIGVxICJmbG9hdCIgfHwgJGd0eXBlIGVx
ICJkb3VibGUiIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZ3R5cGUgZXEg
InVpbnQ2NCIgfHwgJGd0eXBlIGVxICJ1bG9uZyIgfHwgJGd0eXBlIGVxICJsb25nIiB8fCAKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRndHlwZSBlcSAidWludCIgfHwgJGd0eXBl
IGVxICJ1c2hvcnQiIHx8ICRndHlwZSBlcSAidWNoYXIiIHx8Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAkZ3R5cGUgZXEgImNoYXIiIHx8ICRndHlwZSBlcSAic3RyaW5nIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZ3R5cGUgZXEgInVpbnQiIHx8ICRndHlw
ZSBlcSAidXNob3J0IiB8fCAkZ3R5cGUgZXEgImludDgiIHx8CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAkZ3R5cGUgZXEgInVpbnQ4IiB8fCAkZ3R5cGUgZXEgInVjaGFyIiB8fCAk
Z3R5cGUgZXEgImNoYXIiIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZ3R5
cGUgZXEgInN0cmluZyIpOwogICAgICAgICAjIEZJWE1FOiBXZSBhcmUgbm90IGdlbmVyYXRpbmcg
c2V0dGVycyBmb3IgJ1JlcGxhY2VhYmxlJwogICAgICAgICAjIGF0dHJpYnV0ZXMgbm93LCBidXQg
d2Ugc2hvdWxkIHNvbWVob3cuCiAgICAgICAgIG15ICRyZXBsYWNlYWJsZSA9ICRwcm9wZXJ0eS0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmVwbGFjZWFibGUifTsKQEAgLTU2OCw2
ICs1NzMsNyBAQCBzdWIgR2VuZXJhdGVQcm9wZXJ0eSB7CiAgICAgcHVzaChAdHh0R2V0UHJvcHMs
ICIgICAgICAgIGJyZWFrO1xuICAgIH1cbiIpOwogCiAgICAgbXkgJXBhcmFtX3NwZWNfb3B0aW9u
cyA9ICgiaW50IiwgIkdfTUlOSU5ULCAvKiBtaW4gKi9cbkdfTUFYSU5ULCAvKiBtYXggKi9cbjAs
IC8qIGRlZmF1bHQgKi8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludDgiLCAi
R19NSU5JTlQ4LCAvKiBtaW4gKi9cbkdfTUFYSU5UOCwgLyogbWF4ICovXG4wLCAvKiBkZWZhdWx0
ICovIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJib29sZWFuIiwgIkZBTFNFLCAv
KiBkZWZhdWx0ICovIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmbG9hdCIsICIt
R19NQVhGTE9BVCwgLyogbWluICovXG5HX01BWEZMT0FULCAvKiBtYXggKi9cbjAuMCwgLyogZGVm
YXVsdCAqLyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZG91YmxlIiwgIi1HX01B
WERPVUJMRSwgLyogbWluICovXG5HX01BWERPVUJMRSwgLyogbWF4ICovXG4wLjAsIC8qIGRlZmF1
bHQgKi8iLApAQCAtNTc2LDYgKzU4Miw3IEBAIHN1YiBHZW5lcmF0ZVByb3BlcnR5IHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJpbnQ2NCIsICJHX01JTklOVDY0LCAvKiBtaW4gKi9c
bkdfTUFYSU5UNjQsIC8qIG1heCAqL1xuMCwgLyogZGVmYXVsdCAqLyIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAidWxvbmciLCAiMCwgLyogbWluICovXG5HX01BWFVMT05HLCAvKiBt
YXggKi9cbjAsIC8qIGRlZmF1bHQgKi8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InVpbnQiLCAiMCwgLyogbWluICovXG5HX01BWFVJTlQsIC8qIG1heCAqL1xuMCwgLyogZGVmYXVs
dCAqLyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidWludDgiLCAiMCwgLyogbWlu
ICovXG5HX01BWFVJTlQ4LCAvKiBtYXggKi9cbjAsIC8qIGRlZmF1bHQgKi8iLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInVzaG9ydCIsICIwLCAvKiBtaW4gKi9cbkdfTUFYVUlOVDE2
LCAvKiBtYXggKi9cbjAsIC8qIGRlZmF1bHQgKi8iLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgInVjaGFyIiwgIkdfTUlOSU5UOCwgLyogbWluICovXG5HX01BWElOVDgsIC8qIG1heCAq
L1xuMCwgLyogZGVmYXVsdCAqLyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hh
ciIsICIwLCAvKiBtaW4gKi9cbkdfTUFYVUlOVDgsIC8qIG1heCAqL1xuMCwgLyogZGVmYXVsdCAq
LyIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCmluZGV4IDFmMzNjMjEuLjMxMWEwZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0zMzc1LDYgKzMzNzUsOCBA
QCBteSAlbmF0aXZlVHlwZSA9ICgKICAgICAidW5zaWduZWQgc2hvcnQiID0+ICJ1bnNpZ25lZCBz
aG9ydCIsCiAgICAgImxvbmcgbG9uZyIgPT4gImxvbmcgbG9uZyIsCiAgICAgInVuc2lnbmVkIGxv
bmcgbG9uZyIgPT4gInVuc2lnbmVkIGxvbmcgbG9uZyIsCisgICAgImJ5dGUiID0+ICJpbnQ4X3Qi
LAorICAgICJvY3RldCIgPT4gInVpbnQ4X3QiLAogICAgICJNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
IiA9PiAiUmVmUHRyPE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+IiwKICAgICAiRE9NVGltZVN0YW1w
IiA9PiAiRE9NVGltZVN0YW1wIiwgICAgCiApOwpAQCAtMzQ3OSw2ICszNDgxLDggQEAgc3ViIEpT
VmFsdWVUb05hdGl2ZQogICAgIHJldHVybiAiJHZhbHVlLnRvRmxvYXQoZXhlYykiIGlmICR0eXBl
IGVxICJmbG9hdCI7CiAKICAgICBteSAkaW50Q29udmVyc2lvbiA9ICRzaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJFbmZvcmNlUmFuZ2UifSA/ICJFbmZvcmNlUmFuZ2UiIDogIk5vcm1h
bENvbnZlcnNpb24iOworICAgIHJldHVybiAidG9JbnQ4KGV4ZWMsICR2YWx1ZSwgJGludENvbnZl
cnNpb24pIiBpZiAkdHlwZSBlcSAiYnl0ZSI7CisgICAgcmV0dXJuICJ0b1VJbnQ4KGV4ZWMsICR2
YWx1ZSwgJGludENvbnZlcnNpb24pIiBpZiAkdHlwZSBlcSAib2N0ZXQiOwogICAgIHJldHVybiAi
dG9JbnQzMihleGVjLCAkdmFsdWUsICRpbnRDb252ZXJzaW9uKSIgaWYgJHR5cGUgZXEgImxvbmci
IG9yICR0eXBlIGVxICJzaG9ydCI7CiAgICAgcmV0dXJuICJ0b1VJbnQzMihleGVjLCAkdmFsdWUs
ICRpbnRDb252ZXJzaW9uKSIgaWYgJHR5cGUgZXEgInVuc2lnbmVkIGxvbmciIG9yICR0eXBlIGVx
ICJ1bnNpZ25lZCBzaG9ydCI7CiAgICAgcmV0dXJuICJ0b0ludDY0KGV4ZWMsICR2YWx1ZSwgJGlu
dENvbnZlcnNpb24pIiBpZiAkdHlwZSBlcSAibG9uZyBsb25nIjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0gYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCmluZGV4IDc4Yjdj
NzMuLjI5YjEzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvck9iakMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQpAQCAtMzAyLDYgKzMwMiw4IEBAIHN1YiBHZXRDbGFzc05h
bWUKICAgICByZXR1cm4gIk5TU3RyaW5nIiBpZiAkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBl
KCRuYW1lKSBvciAkbmFtZSBlcSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlIjsKICAgICByZXR1cm4g
Ik5TJG5hbWUiIGlmIElzTmF0aXZlT2JqQ1R5cGUoJG5hbWUpOwogICAgIHJldHVybiAiQk9PTCIg
aWYgJG5hbWUgZXEgImJvb2xlYW4iOworICAgIHJldHVybiAidW5zaWduZWQgY2hhciIgaWYgJG5h
bWUgZXEgIm9jdGV0IjsKKyAgICByZXR1cm4gImNoYXIiIGlmICRuYW1lIGVxICJieXRlIjsKICAg
ICByZXR1cm4gInVuc2lnbmVkIiBpZiAkbmFtZSBlcSAidW5zaWduZWQgbG9uZyI7CiAgICAgcmV0
dXJuICJpbnQiIGlmICRuYW1lIGVxICJsb25nIjsKICAgICByZXR1cm4gIk5TVGltZUludGVydmFs
IiBpZiAkbmFtZSBlcSAiRGF0ZSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcAppbmRleCA5ZDYzMDgzLi5m
ZTU1NDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
Q1BQL1dlYkRPTVRlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHAKQEAgLTExNiw2ICsxMTYsMzggQEAgV2ViRE9N
VGVzdE9iaiBXZWJET01UZXN0T2JqOjpyZWFkT25seVRlc3RPYmpBdHRyKCkgY29uc3QKICAgICBy
ZXR1cm4gdG9XZWJLaXQoV1RGOjpnZXRQdHIoaW1wbCgpLT5yZWFkT25seVRlc3RPYmpBdHRyKCkp
KTsKIH0KIAorY2hhciBXZWJET01UZXN0T2JqOjpieXRlQXR0cigpIGNvbnN0Cit7CisgICAgaWYg
KCFpbXBsKCkpCisgICAgICAgIHJldHVybiBjaGFyKCk7CisKKyAgICByZXR1cm4gaW1wbCgpLT5i
eXRlQXR0cigpOworfQorCit2b2lkIFdlYkRPTVRlc3RPYmo6OnNldEJ5dGVBdHRyKGNoYXIgbmV3
Qnl0ZUF0dHIpCit7CisgICAgaWYgKCFpbXBsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlt
cGwoKS0+c2V0Qnl0ZUF0dHIobmV3Qnl0ZUF0dHIpOworfQorCit1bnNpZ25lZCBjaGFyIFdlYkRP
TVRlc3RPYmo6Om9jdGV0QXR0cigpIGNvbnN0Cit7CisgICAgaWYgKCFpbXBsKCkpCisgICAgICAg
IHJldHVybiB1bnNpZ25lZCBjaGFyKCk7CisKKyAgICByZXR1cm4gaW1wbCgpLT5vY3RldEF0dHIo
KTsKK30KKwordm9pZCBXZWJET01UZXN0T2JqOjpzZXRPY3RldEF0dHIodW5zaWduZWQgY2hhciBu
ZXdPY3RldEF0dHIpCit7CisgICAgaWYgKCFpbXBsKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGltcGwoKS0+c2V0T2N0ZXRBdHRyKG5ld09jdGV0QXR0cik7Cit9CisKIHNob3J0IFdlYkRPTVRl
c3RPYmo6OnNob3J0QXR0cigpIGNvbnN0CiB7CiAgICAgaWYgKCFpbXBsKCkpCkBAIC03NDksNiAr
NzgxLDM4IEBAIHZvaWQgV2ViRE9NVGVzdE9iajo6dm9pZE1ldGhvZFdpdGhBcmdzKGludCBsb25n
QXJnLCBjb25zdCBXZWJET01TdHJpbmcmIHN0ckFyZywKICAgICBpbXBsKCktPnZvaWRNZXRob2RX
aXRoQXJncyhsb25nQXJnLCBzdHJBcmcsIHRvV2ViQ29yZShvYmpBcmcpKTsKIH0KIAorY2hhciBX
ZWJET01UZXN0T2JqOjpieXRlTWV0aG9kKCkKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAg
cmV0dXJuIGNoYXIoKTsKKworICAgIHJldHVybiBpbXBsKCktPmJ5dGVNZXRob2QoKTsKK30KKwor
Y2hhciBXZWJET01UZXN0T2JqOjpieXRlTWV0aG9kV2l0aEFyZ3MoY2hhciBieXRlQXJnLCBjb25z
dCBXZWJET01TdHJpbmcmIHN0ckFyZywgY29uc3QgV2ViRE9NVGVzdE9iaiYgb2JqQXJnKQorewor
ICAgIGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm4gY2hhcigpOworCisgICAgcmV0dXJuIGlt
cGwoKS0+Ynl0ZU1ldGhvZFdpdGhBcmdzKGJ5dGVBcmcsIHN0ckFyZywgdG9XZWJDb3JlKG9iakFy
ZykpOworfQorCit1bnNpZ25lZCBjaGFyIFdlYkRPTVRlc3RPYmo6Om9jdGV0TWV0aG9kKCkKK3sK
KyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuIHVuc2lnbmVkIGNoYXIoKTsKKworICAg
IHJldHVybiBpbXBsKCktPm9jdGV0TWV0aG9kKCk7Cit9CisKK3Vuc2lnbmVkIGNoYXIgV2ViRE9N
VGVzdE9iajo6b2N0ZXRNZXRob2RXaXRoQXJncyh1bnNpZ25lZCBjaGFyIG9jdGV0QXJnLCBjb25z
dCBXZWJET01TdHJpbmcmIHN0ckFyZywgY29uc3QgV2ViRE9NVGVzdE9iaiYgb2JqQXJnKQorewor
ICAgIGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm4gdW5zaWduZWQgY2hhcigpOworCisgICAg
cmV0dXJuIGltcGwoKS0+b2N0ZXRNZXRob2RXaXRoQXJncyhvY3RldEFyZywgc3RyQXJnLCB0b1dl
YkNvcmUob2JqQXJnKSk7Cit9CisKIGludCBXZWJET01UZXN0T2JqOjpsb25nTWV0aG9kKCkKIHsK
ICAgICBpZiAoIWltcGwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmgKaW5kZXggYmJkMWRmYi4uNTVlYjY5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJE
T01UZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQ
UC9XZWJET01UZXN0T2JqLmgKQEAgLTcxLDYgKzcxLDEwIEBAIHB1YmxpYzoKICAgICBpbnQgcmVh
ZE9ubHlMb25nQXR0cigpIGNvbnN0OwogICAgIFdlYkRPTVN0cmluZyByZWFkT25seVN0cmluZ0F0
dHIoKSBjb25zdDsKICAgICBXZWJET01UZXN0T2JqIHJlYWRPbmx5VGVzdE9iakF0dHIoKSBjb25z
dDsKKyAgICBjaGFyIGJ5dGVBdHRyKCkgY29uc3Q7CisgICAgdm9pZCBzZXRCeXRlQXR0cihjaGFy
KTsKKyAgICB1bnNpZ25lZCBjaGFyIG9jdGV0QXR0cigpIGNvbnN0OworICAgIHZvaWQgc2V0T2N0
ZXRBdHRyKHVuc2lnbmVkIGNoYXIpOwogICAgIHNob3J0IHNob3J0QXR0cigpIGNvbnN0OwogICAg
IHZvaWQgc2V0U2hvcnRBdHRyKHNob3J0KTsKICAgICB1bnNpZ25lZCBzaG9ydCB1bnNpZ25lZFNo
b3J0QXR0cigpIGNvbnN0OwpAQCAtMTU0LDYgKzE1OCwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHZvaWRNZXRob2QoKTsKICAgICB2b2lkIHZvaWRNZXRob2RXaXRoQXJncyhpbnQgbG9uZ0FyZywg
Y29uc3QgV2ViRE9NU3RyaW5nJiBzdHJBcmcsIGNvbnN0IFdlYkRPTVRlc3RPYmomIG9iakFyZyk7
CisgICAgY2hhciBieXRlTWV0aG9kKCk7CisgICAgY2hhciBieXRlTWV0aG9kV2l0aEFyZ3MoY2hh
ciBieXRlQXJnLCBjb25zdCBXZWJET01TdHJpbmcmIHN0ckFyZywgY29uc3QgV2ViRE9NVGVzdE9i
aiYgb2JqQXJnKTsKKyAgICB1bnNpZ25lZCBjaGFyIG9jdGV0TWV0aG9kKCk7CisgICAgdW5zaWdu
ZWQgY2hhciBvY3RldE1ldGhvZFdpdGhBcmdzKHVuc2lnbmVkIGNoYXIgb2N0ZXRBcmcsIGNvbnN0
IFdlYkRPTVN0cmluZyYgc3RyQXJnLCBjb25zdCBXZWJET01UZXN0T2JqJiBvYmpBcmcpOwogICAg
IGludCBsb25nTWV0aG9kKCk7CiAgICAgaW50IGxvbmdNZXRob2RXaXRoQXJncyhpbnQgbG9uZ0Fy
ZywgY29uc3QgV2ViRE9NU3RyaW5nJiBzdHJBcmcsIGNvbnN0IFdlYkRPTVRlc3RPYmomIG9iakFy
Zyk7CiAgICAgV2ViRE9NVGVzdE9iaiBvYmpNZXRob2QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9N
VGVzdE9iai5jcHAKaW5kZXggMjNkYTQxYS4uMGM3ZTU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0
RE9NVGVzdE9iai5jcHAKQEAgLTc5LDYgKzc5LDggQEAgZW51bSB7CiAgICAgUFJPUF9SRUFEX09O
TFlfTE9OR19BVFRSLAogICAgIFBST1BfUkVBRF9PTkxZX1NUUklOR19BVFRSLAogICAgIFBST1Bf
UkVBRF9PTkxZX1RFU1RfT0JKX0FUVFIsCisgICAgUFJPUF9CWVRFX0FUVFIsCisgICAgUFJPUF9P
Q1RFVF9BVFRSLAogICAgIFBST1BfU0hPUlRfQVRUUiwKICAgICBQUk9QX1VOU0lHTkVEX1NIT1JU
X0FUVFIsCiAgICAgUFJPUF9MT05HX0FUVFIsCkBAIC0xNDgsNiArMTUwLDE0IEBAIHN0YXRpYyB2
b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3Vp
bnQgcHJvcGVydHlJZCwKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBjb3JlU2VsZiA9IFdlYktpdDo6
Y29yZShzZWxmKTsKIAogICAgIHN3aXRjaCAocHJvcGVydHlJZCkgeworICAgIGNhc2UgUFJPUF9C
WVRFX0FUVFI6IHsKKyAgICAgICAgY29yZVNlbGYtPnNldEJ5dGVBdHRyKChnX3ZhbHVlX2dldF9p
bnQ4KHZhbHVlKSkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQUk9QX09DVEVU
X0FUVFI6IHsKKyAgICAgICAgY29yZVNlbGYtPnNldE9jdGV0QXR0cigoZ192YWx1ZV9nZXRfdWlu
dDgodmFsdWUpKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIFBST1BfVU5TSUdO
RURfU0hPUlRfQVRUUjogewogICAgICAgICBjb3JlU2VsZi0+c2V0VW5zaWduZWRTaG9ydEF0dHIo
KGdfdmFsdWVfZ2V0X3VpbnQodmFsdWUpKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzAzLDYgKzMx
MywxNCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9wcm9wZXJ0eShHT2Jq
ZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsCiAgICAgICAgIGdfdmFsdWVfc2V0X29iamVj
dCh2YWx1ZSwgV2ViS2l0OjpraXQocHRyLmdldCgpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
KyAgICBjYXNlIFBST1BfQllURV9BVFRSOiB7CisgICAgICAgIGdfdmFsdWVfc2V0X2ludDgodmFs
dWUsIGNvcmVTZWxmLT5ieXRlQXR0cigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNh
c2UgUFJPUF9PQ1RFVF9BVFRSOiB7CisgICAgICAgIGdfdmFsdWVfc2V0X3VpbnQ4KHZhbHVlLCBj
b3JlU2VsZi0+b2N0ZXRBdHRyKCkpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBQ
Uk9QX1NIT1JUX0FUVFI6IHsKICAgICAgICAgZ192YWx1ZV9zZXRfaW50KHZhbHVlLCBjb3JlU2Vs
Zi0+c2hvcnRBdHRyKCkpOwogICAgICAgICBicmVhazsKQEAgLTU5Miw2ICs2MTAsMjQgQEAgR19N
QVhMT05HLCAvKiBtYXggKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1RZUEVfRE9NX1RFU1RfT0JKLCAvKiBnb2JqZWN0
IHR5cGUgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7CiAgICAgZ19vYmplY3RfY2xhc3Nf
aW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQUk9QX0JZVEVfQVRUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdfcGFyYW1fc3BlY19pbnQ4KCJieXRlLWF0dHIiLCAvKiBuYW1lICovCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0
X29ial9ieXRlLWF0dHIiLCAvKiBzaG9ydCBkZXNjcmlwdGlvbiAqLworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVhZC13cml0ZSAg
Z2ludDggVGVzdE9iai5ieXRlLWF0dHIiLCAvKiBsb25nZXIgLSBjb3VsZCBkbyB3aXRoIHNvbWUg
ZXh0cmEgZG9jIHN0dWZmIGhlcmUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR19NSU5JTlQ4LCAvKiBtaW4gKi8KK0dfTUFYSU5U
OCwgLyogbWF4ICovCiswLCAvKiBkZWZhdWx0ICovCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUp
KTsKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RDbGFzcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfT0NURVRfQVRUUiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY191aW50OCgib2N0ZXQt
YXR0ciIsIC8qIG5hbWUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInRlc3Rfb2JqX29jdGV0LWF0dHIiLCAvKiBzaG9ydCBkZXNj
cmlwdGlvbiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAicmVhZC13cml0ZSAgZ3VpbnQ4IFRlc3RPYmoub2N0ZXQtYXR0ciIsIC8q
IGxvbmdlciAtIGNvdWxkIGRvIHdpdGggc29tZSBleHRyYSBkb2Mgc3R1ZmYgaGVyZSAqLworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
LCAvKiBtaW4gKi8KK0dfTUFYVUlOVDgsIC8qIG1heCAqLworMCwgLyogZGVmYXVsdCAqLworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
RUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7CisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9w
ZXJ0eShnb2JqZWN0Q2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
Uk9QX1NIT1JUX0FUVFIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3Bh
cmFtX3NwZWNfaW50KCJzaG9ydC1hdHRyIiwgLyogbmFtZSAqLwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdF9vYmpfc2hvcnQt
YXR0ciIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICovCkBAIC0xMDEwLDYgKzEwNDYsNTQgQEAgd2Vi
a2l0X2RvbV90ZXN0X29ial92b2lkX21ldGhvZF93aXRoX2FyZ3MoV2ViS2l0RE9NVGVzdE9iaiog
c2VsZiwgZ2xvbmcgbG9uZ0FyZywKICAgICBpdGVtLT52b2lkTWV0aG9kV2l0aEFyZ3MobG9uZ0Fy
ZywgY29udmVydGVkU3RyQXJnLCBjb252ZXJ0ZWRPYmpBcmcpOwogfQogCitnaW50OAord2Via2l0
X2RvbV90ZXN0X29ial9ieXRlX21ldGhvZChXZWJLaXRET01UZXN0T2JqKiBzZWxmKQoreworICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpLCAwKTsKKyAgICBXZWJDb3JlOjpU
ZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGdpbnQ4IHJlc3VsdCA9IGl0
ZW0tPmJ5dGVNZXRob2QoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitnaW50OAord2Via2l0
X2RvbV90ZXN0X29ial9ieXRlX21ldGhvZF93aXRoX2FyZ3MoV2ViS2l0RE9NVGVzdE9iaiogc2Vs
ZiwgZ2ludDggYnl0ZUFyZywgY29uc3QgZ2NoYXIqIHN0ckFyZywgV2ViS2l0RE9NVGVzdE9iaiog
b2JqQXJnKQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpLCAwKTsK
KyAgICBnX3JldHVybl92YWxfaWZfZmFpbChzdHJBcmcsIDApOworICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkoob2JqQXJnKSwgMCk7CisgICAgV2ViQ29yZTo6
VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBXVEY6OlN0cmluZyBjb252
ZXJ0ZWRTdHJBcmcgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgoc3RyQXJnKTsKKyAgICBXZWJDb3Jl
OjpUZXN0T2JqKiBjb252ZXJ0ZWRPYmpBcmcgPSBXZWJLaXQ6OmNvcmUob2JqQXJnKTsKKyAgICBn
aW50OCByZXN1bHQgPSBpdGVtLT5ieXRlTWV0aG9kV2l0aEFyZ3MoYnl0ZUFyZywgY29udmVydGVk
U3RyQXJnLCBjb252ZXJ0ZWRPYmpBcmcpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2d1aW50
OAord2Via2l0X2RvbV90ZXN0X29ial9vY3RldF9tZXRob2QoV2ViS2l0RE9NVGVzdE9iaiogc2Vs
ZikKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxmKSwgMCk7CisgICAg
V2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBndWludDgg
cmVzdWx0ID0gaXRlbS0+b2N0ZXRNZXRob2QoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitn
dWludDgKK3dlYmtpdF9kb21fdGVzdF9vYmpfb2N0ZXRfbWV0aG9kX3dpdGhfYXJncyhXZWJLaXRE
T01UZXN0T2JqKiBzZWxmLCBndWludDggb2N0ZXRBcmcsIGNvbnN0IGdjaGFyKiBzdHJBcmcsIFdl
YktpdERPTVRlc3RPYmoqIG9iakFyZykKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNU
X09CSihzZWxmKSwgMCk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc3RyQXJnLCAwKTsKKyAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKG9iakFyZyksIDAp
OworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAg
V1RGOjpTdHJpbmcgY29udmVydGVkU3RyQXJnID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHN0ckFy
Zyk7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogY29udmVydGVkT2JqQXJnID0gV2ViS2l0Ojpjb3Jl
KG9iakFyZyk7CisgICAgZ3VpbnQ4IHJlc3VsdCA9IGl0ZW0tPm9jdGV0TWV0aG9kV2l0aEFyZ3Mo
b2N0ZXRBcmcsIGNvbnZlcnRlZFN0ckFyZywgY29udmVydGVkT2JqQXJnKTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCiBnbG9uZwogd2Via2l0X2RvbV90ZXN0X29ial9sb25nX21ldGhvZChXZWJL
aXRET01UZXN0T2JqKiBzZWxmKQogewpAQCAtMTUzMiw2ICsxNjE2LDQ0IEBAIHdlYmtpdF9kb21f
dGVzdF9vYmpfZ2V0X3JlYWRfb25seV90ZXN0X29ial9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNl
bGYpCiAgICAgcmV0dXJuIFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOwogfQogCitn
aW50OAord2Via2l0X2RvbV90ZXN0X29ial9nZXRfYnl0ZV9hdHRyKFdlYktpdERPTVRlc3RPYmoq
IHNlbGYpCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2VsZiksIDApOwor
ICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgZ2lu
dDggcmVzdWx0ID0gaXRlbS0+Ynl0ZUF0dHIoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2
b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9ieXRlX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiog
c2VsZiwgZ2ludDggdmFsdWUpCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxm
KSk7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAg
ICBpdGVtLT5zZXRCeXRlQXR0cih2YWx1ZSk7Cit9CisKK2d1aW50OAord2Via2l0X2RvbV90ZXN0
X29ial9nZXRfb2N0ZXRfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmKQoreworICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpLCAwKTsKKyAgICBXZWJDb3JlOjpUZXN0T2Jq
KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGd1aW50OCByZXN1bHQgPSBpdGVtLT5v
Y3RldEF0dHIoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkCit3ZWJraXRfZG9tX3Rl
c3Rfb2JqX3NldF9vY3RldF9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGd1aW50OCB2YWx1
ZSkKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19y
ZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpKTsKKyAgICBXZWJDb3Jl
OjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGl0ZW0tPnNldE9jdGV0
QXR0cih2YWx1ZSk7Cit9CisKIGdzaG9ydAogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfc2hvcnRf
YXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9i
ai5oCmluZGV4IDdjOTkyYzMuLjZmZWU1NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2Jq
LmgKQEAgLTczLDYgKzczLDUyIEBAIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X2RvbV90ZXN0X29i
al92b2lkX21ldGhvZF93aXRoX2FyZ3MoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2xvbmcgbG9u
Z0FyZywgY29uc3QgZ2NoYXIqIHN0ckFyZywgV2ViS2l0RE9NVGVzdE9iaiogb2JqQXJnKTsKIAog
LyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2J5dGVfbWV0aG9kOgorICogQHNlbGY6IEEgI1dl
YktpdERPTVRlc3RPYmoKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLworV0VCS0lUX0FQSSBnaW50
OAord2Via2l0X2RvbV90ZXN0X29ial9ieXRlX21ldGhvZChXZWJLaXRET01UZXN0T2JqKiBzZWxm
KTsKKworLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2J5dGVfbWV0aG9kX3dpdGhfYXJnczoK
KyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCisgKiBAYnl0ZUFyZzogQSAjZ2ludDgKKyAq
IEBzdHJBcmc6IEEgI2djaGFyCisgKiBAb2JqQXJnOiBBICNXZWJLaXRET01UZXN0T2JqCisgKgor
ICogUmV0dXJuczoKKyAqCisqKi8KK1dFQktJVF9BUEkgZ2ludDgKK3dlYmtpdF9kb21fdGVzdF9v
YmpfYnl0ZV9tZXRob2Rfd2l0aF9hcmdzKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdpbnQ4IGJ5
dGVBcmcsIGNvbnN0IGdjaGFyKiBzdHJBcmcsIFdlYktpdERPTVRlc3RPYmoqIG9iakFyZyk7CisK
Ky8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial9vY3RldF9tZXRob2Q6CisgKiBAc2VsZjogQSAj
V2ViS2l0RE9NVGVzdE9iagorICoKKyAqIFJldHVybnM6CisgKgorKiovCitXRUJLSVRfQVBJIGd1
aW50OAord2Via2l0X2RvbV90ZXN0X29ial9vY3RldF9tZXRob2QoV2ViS2l0RE9NVGVzdE9iaiog
c2VsZik7CisKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial9vY3RldF9tZXRob2Rfd2l0aF9h
cmdzOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqIEBvY3RldEFyZzogQSAjZ3Vp
bnQ4CisgKiBAc3RyQXJnOiBBICNnY2hhcgorICogQG9iakFyZzogQSAjV2ViS2l0RE9NVGVzdE9i
agorICoKKyAqIFJldHVybnM6CisgKgorKiovCitXRUJLSVRfQVBJIGd1aW50OAord2Via2l0X2Rv
bV90ZXN0X29ial9vY3RldF9tZXRob2Rfd2l0aF9hcmdzKFdlYktpdERPTVRlc3RPYmoqIHNlbGYs
IGd1aW50OCBvY3RldEFyZywgY29uc3QgZ2NoYXIqIHN0ckFyZywgV2ViS2l0RE9NVGVzdE9iaiog
b2JqQXJnKTsKKworLyoqCiAgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2xvbmdfbWV0aG9kOgogICog
QHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKICAqCkBAIC01NTYsNiArNjAyLDQ4IEBAIFdFQktJ
VF9BUEkgV2ViS2l0RE9NVGVzdE9iaioKIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3JlYWRfb25s
eV90ZXN0X29ial9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpOwogCiAvKioKKyAqIHdlYmtp
dF9kb21fdGVzdF9vYmpfZ2V0X2J5dGVfYXR0cjoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0
T2JqCisgKgorICogUmV0dXJuczoKKyAqCisqKi8KK1dFQktJVF9BUEkgZ2ludDgKK3dlYmtpdF9k
b21fdGVzdF9vYmpfZ2V0X2J5dGVfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmKTsKKworLyoq
CisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9ieXRlX2F0dHI6CisgKiBAc2VsZjogQSAjV2Vi
S2l0RE9NVGVzdE9iagorICogQHZhbHVlOiBBICNnaW50OAorICoKKyAqIFJldHVybnM6CisgKgor
KiovCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfc2V0X2J5dGVfYXR0cihX
ZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnaW50OCB2YWx1ZSk7CisKKy8qKgorICogd2Via2l0X2Rv
bV90ZXN0X29ial9nZXRfb2N0ZXRfYXR0cjoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2Jq
CisgKgorICogUmV0dXJuczoKKyAqCisqKi8KK1dFQktJVF9BUEkgZ3VpbnQ4Cit3ZWJraXRfZG9t
X3Rlc3Rfb2JqX2dldF9vY3RldF9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpOworCisvKioK
KyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X29jdGV0X2F0dHI6CisgKiBAc2VsZjogQSAjV2Vi
S2l0RE9NVGVzdE9iagorICogQHZhbHVlOiBBICNndWludDgKKyAqCisgKiBSZXR1cm5zOgorICoK
KyoqLworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9vY3RldF9hdHRy
KFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGd1aW50OCB2YWx1ZSk7CisKKy8qKgogICogd2Via2l0
X2RvbV90ZXN0X29ial9nZXRfc2hvcnRfYXR0cjoKICAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0
T2JqCiAgKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmNwcAppbmRleCBhODI0OGNiLi5hMDU2ZTE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAt
ODAsNiArODAsOCBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqVGFibGVW
YWx1ZXNbXSA9CiAgICAgeyAicmVhZE9ubHlTdHJpbmdBdHRyIiwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5LCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdE9ialJlYWRPbmx5U3RyaW5nQXR0ciksIChpbnRwdHJfdCkwLCBOb0ludHJpbnNpYyB9LAog
ICAgIHsgInJlYWRPbmx5VGVzdE9iakF0dHIiLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqUmVh
ZE9ubHlUZXN0T2JqQXR0ciksIChpbnRwdHJfdCkwLCBOb0ludHJpbnNpYyB9LAogICAgIHsgImVu
dW1BdHRyIiwgRG9udERlbGV0ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpFbnVtQXR0ciksIChpbnRwdHJfdClzZXRKU1Rlc3RPYmpF
bnVtQXR0ciwgTm9JbnRyaW5zaWMgfSwKKyAgICB7ICJieXRlQXR0ciIsIERvbnREZWxldGUsIChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2Jq
Qnl0ZUF0dHIpLCAoaW50cHRyX3Qpc2V0SlNUZXN0T2JqQnl0ZUF0dHIsIE5vSW50cmluc2ljIH0s
CisgICAgeyAib2N0ZXRBdHRyIiwgRG9udERlbGV0ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpPY3RldEF0dHIpLCAoaW50cHRyX3Qp
c2V0SlNUZXN0T2JqT2N0ZXRBdHRyLCBOb0ludHJpbnNpYyB9LAogICAgIHsgInNob3J0QXR0ciIs
IERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0T2JqU2hvcnRBdHRyKSwgKGludHB0cl90KXNldEpTVGVzdE9ialNob3J0QXR0
ciwgTm9JbnRyaW5zaWMgfSwKICAgICB7ICJ1bnNpZ25lZFNob3J0QXR0ciIsIERvbnREZWxldGUs
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
T2JqVW5zaWduZWRTaG9ydEF0dHIpLCAoaW50cHRyX3Qpc2V0SlNUZXN0T2JqVW5zaWduZWRTaG9y
dEF0dHIsIE5vSW50cmluc2ljIH0sCiAgICAgeyAibG9uZ0F0dHIiLCBEb250RGVsZXRlLCAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakxv
bmdBdHRyKSwgKGludHB0cl90KXNldEpTVGVzdE9iakxvbmdBdHRyLCBOb0ludHJpbnNpYyB9LApA
QCAtMTUyLDcgKzE1NCw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpU
YWJsZVZhbHVlc1tdID0KICAgICB7IDAsIDAsIDAsIDAsIE5vSW50cmluc2ljIH0KIH07CiAKLXN0
YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0T2JqVGFibGUgPSB7IDE0NSwgMTI3LCBKU1Rlc3RP
YmpUYWJsZVZhbHVlcywgMCB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RPYmpUYWJs
ZSA9IHsgMjY1LCAyNTUsIEpTVGVzdE9ialRhYmxlVmFsdWVzLCAwIH07CiAvKiBIYXNoIHRhYmxl
IGZvciBjb25zdHJ1Y3RvciAqLwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0
T2JqQ29uc3RydWN0b3JUYWJsZVZhbHVlc1tdID0KQEAgLTI2OCw2ICsyNzAsMTAgQEAgc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQog
ICAgIHsgIkNPTlNUX0pBVkFTQ1JJUFQiLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqQ09OU1Rf
SkFWQVNDUklQVCksIChpbnRwdHJfdCkwLCBOb0ludHJpbnNpYyB9LAogICAgIHsgInZvaWRNZXRo
b2QiLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5h
dGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2QpLCAoaW50
cHRyX3QpMCwgTm9JbnRyaW5zaWMgfSwKICAgICB7ICJ2b2lkTWV0aG9kV2l0aEFyZ3MiLCBEb250
RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0
aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2RXaXRoQXJncyksIChpbnRw
dHJfdCkzLCBOb0ludHJpbnNpYyB9LAorICAgIHsgImJ5dGVNZXRob2QiLCBEb250RGVsZXRlIHwg
SlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2QpLCAoaW50cHRyX3QpMCwgTm9JbnRyaW5z
aWMgfSwKKyAgICB7ICJieXRlTWV0aG9kV2l0aEFyZ3MiLCBEb250RGVsZXRlIHwgSlNDOjpGdW5j
dGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2RXaXRoQXJncyksIChpbnRwdHJfdCkzLCBOb0ludHJpbnNp
YyB9LAorICAgIHsgIm9jdGV0TWV0aG9kIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChp
bnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PY3RldE1ldGhvZCksIChpbnRwdHJfdCkwLCBOb0ludHJpbnNpYyB9LAorICAgIHsgIm9j
dGV0TWV0aG9kV2l0aEFyZ3MiLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90
KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9j
dGV0TWV0aG9kV2l0aEFyZ3MpLCAoaW50cHRyX3QpMywgTm9JbnRyaW5zaWMgfSwKICAgICB7ICJs
b25nTWV0aG9kIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9k
KSwgKGludHB0cl90KTAsIE5vSW50cmluc2ljIH0sCiAgICAgeyAibG9uZ01ldGhvZFdpdGhBcmdz
IiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRp
dmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kV2l0aEFyZ3Mp
LCAoaW50cHRyX3QpMywgTm9JbnRyaW5zaWMgfSwKICAgICB7ICJvYmpNZXRob2QiLCBEb250RGVs
ZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9u
Pihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZCksIChpbnRwdHJfdCkwLCBOb0lu
dHJpbnNpYyB9LApAQCAtMzMwLDcgKzMzNiw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1
ZSBKU1Rlc3RPYmpQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KICAgICB7IDAsIDAsIDAsIDAsIE5v
SW50cmluc2ljIH0KIH07CiAKLXN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0T2JqUHJvdG90
eXBlVGFibGUgPSB7IDI2NiwgMjU1LCBKU1Rlc3RPYmpQcm90b3R5cGVUYWJsZVZhbHVlcywgMCB9
Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RPYmpQcm90b3R5cGVUYWJsZSA9IHsgMjY3
LCAyNTUsIEpTVGVzdE9ialByb3RvdHlwZVRhYmxlVmFsdWVzLCAwIH07CiBjb25zdCBDbGFzc0lu
Zm8gSlNUZXN0T2JqUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0T2JqZWN0UHJvdG90eXBlIiwg
JkJhc2U6OnNfaW5mbywgJkpTVGVzdE9ialByb3RvdHlwZVRhYmxlLCAwLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTVGVzdE9ialByb3RvdHlwZSkgfTsKIAogSlNPYmplY3QqIEpTVGVzdE9ialByb3Rv
dHlwZTo6c2VsZihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CkBAIC00NTksNiArNDY1LDI2IEBAIEpTVmFsdWUganNUZXN0T2JqRW51bUF0dHIoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB9CiAKIAorSlNWYWx1ZSBq
c1Rlc3RPYmpCeXRlQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3Bl
cnR5TmFtZSkKK3sKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2Jq
Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAgICBVTlVTRURfUEFSQU0oZXhlYyk7CisgICAgVGVz
dE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwor
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC0+Ynl0ZUF0dHIoKSk7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKworCitKU1ZhbHVlIGpzVGVzdE9iak9jdGV0QXR0cihFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKK3sKKyAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAg
ICBVTlVTRURfUEFSQU0oZXhlYyk7CisgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRl
c3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1i
ZXIoaW1wbC0+b2N0ZXRBdHRyKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKwogSlNWYWx1
ZSBqc1Rlc3RPYmpTaG9ydEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQ
cm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVz
dE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CkBAIC0xMDk0LDYgKzExMjAsMzAgQEAgdm9pZCBz
ZXRKU1Rlc3RPYmpFbnVtQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQogfQogCiAKK3ZvaWQgc2V0SlNUZXN0T2JqQnl0ZUF0dHIoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBV
TlVTRURfUEFSQU0oZXhlYyk7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpT
VGVzdE9iaio+KHRoaXNPYmplY3QpOworICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxU
ZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICBpbnQ4X3QgbmF0aXZlVmFsdWUodG9J
bnQ4KGV4ZWMsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQorICAgICAgICByZXR1cm47CisgICAgaW1wbC0+c2V0Qnl0ZUF0dHIobmF0aXZl
VmFsdWUpOworfQorCisKK3ZvaWQgc2V0SlNUZXN0T2JqT2N0ZXRBdHRyKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgVU5VU0VEX1BB
UkFNKGV4ZWMpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoq
Pih0aGlzT2JqZWN0KTsKKyAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+
KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgdWludDhfdCBuYXRpdmVWYWx1ZSh0b1VJbnQ4KGV4
ZWMsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQorICAgICAgICByZXR1cm47CisgICAgaW1wbC0+c2V0T2N0ZXRBdHRyKG5hdGl2ZVZhbHVl
KTsKK30KKworCiB2b2lkIHNldEpTVGVzdE9ialNob3J0QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIFVOVVNFRF9QQVJBTShl
eGVjKTsKQEAgLTE3MDgsNiArMTc1OCw4MCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZFdpdGhBcmdzKEV4ZWNTdAogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0aG9kKEV4
ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlz
VmFsdWUoKTsKKyAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cygmSlNUZXN0T2JqOjpzX2luZm8p
KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7Cisg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAmSlNUZXN0T2JqOjpzX2lu
Zm8pOworICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhp
cy0+aW1wbCgpKTsKKworICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLT5i
eXRlTWV0aG9kKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5
dGVNZXRob2RXaXRoQXJncyhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CisgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMo
JkpTVGVzdE9iajo6c19pbmZvKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yyk7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2Jq
ZWN0KHRoaXNWYWx1ZSkpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgJkpTVGVzdE9iajo6c19pbmZvKTsKKyAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8
VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291
bnQoKSA8IDMpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOworICAgIGludDhfdCBieXRlQXJnKHRvSW50OChleGVj
LCBleGVjLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbikpOworICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKKyAgICBjb25zdCBTdHJpbmcmIHN0ckFyZyhleGVjLT5hcmd1bWVudCgxKS5pc0VtcHR5
KCkgPyBTdHJpbmcoKSA6IGV4ZWMtPmFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIFRlc3RPYmoqIG9iakFyZyh0b1Rlc3RP
YmooZXhlYy0+YXJndW1lbnQoMikpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICBKU0M6
OkpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC0+Ynl0ZU1ldGhvZFdpdGhBcmdzKGJ5dGVB
cmcsIHN0ckFyZywgb2JqQXJnKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uT2N0ZXRNZXRob2QoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOworICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRz
KCZKU1Rlc3RPYmo6OnNfaW5mbykpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09i
amVjdCh0aGlzVmFsdWUpKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsICZKU1Rlc3RPYmo6OnNfaW5mbyk7CisgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0
PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworCisgICAgSlNDOjpKU1ZhbHVlIHJlc3Vs
dCA9IGpzTnVtYmVyKGltcGwtPm9jdGV0TWV0aG9kKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kV2l0aEFyZ3MoRXhlY1N0YXRlKiBleGVjKQor
eworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOworICAgIGlm
ICghdGhpc1ZhbHVlLmluaGVyaXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykpCisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
Q2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKKyAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RPYmo6OnNfaW5mbyk7CisgICAgVGVzdE9i
aiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAg
IGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAzKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKKyAgICB1aW50
OF90IG9jdGV0QXJnKHRvVUludDgoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZl
cnNpb24pKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgY29uc3QgU3RyaW5nJiBzdHJBcmco
ZXhlYy0+YXJndW1lbnQoMSkuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBleGVjLT5hcmd1bWVudCgx
KS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAg
ICBUZXN0T2JqKiBvYmpBcmcodG9UZXN0T2JqKGV4ZWMtPmFyZ3VtZW50KDIpKSk7CisgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworCisgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwt
Pm9jdGV0TWV0aG9kV2l0aEFyZ3Mob2N0ZXRBcmcsIHN0ckFyZywgb2JqQXJnKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZChFeGVjU3RhdGUqIGV4
ZWMpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmgKaW5kZXggN2ZlNTNiMy4uN2EyZDZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaApAQCAtMTYxLDYgKzE2MSwxMCBAQCBw
cm90ZWN0ZWQ6CiAKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRo
b2RXaXRoQXJncyhKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZChKU0M6OkV4ZWNTdGF0
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQnl0ZU1ldGhvZFdpdGhBcmdzKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1l
dGhvZChKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2RXaXRoQXJncyhKU0M6OkV4ZWNT
dGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTG9uZ01ldGhvZChKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZFdp
dGhBcmdzKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsK
QEAgLTIzOSw2ICsyNDMsMTAgQEAgdm9pZCBzZXRKU1Rlc3RPYmpDb25zdHJ1Y3RvclN0YXRpY1N0
cmluZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlMKIEpTQzo6SlNWYWx1
ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvclRlc3RTdWJPYmooSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpFbnVtQXR0
cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogdm9p
ZCBzZXRKU1Rlc3RPYmpFbnVtQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBK
U0M6OkpTVmFsdWUpOworSlNDOjpKU1ZhbHVlIGpzVGVzdE9iakJ5dGVBdHRyKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Cit2b2lkIHNldEpTVGVzdE9i
akJ5dGVBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6SlNWYWx1ZSk7
CitKU0M6OkpTVmFsdWUganNUZXN0T2JqT2N0ZXRBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpK
U1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Cit2b2lkIHNldEpTVGVzdE9iak9jdGV0QXR0cihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUpOwogSlNDOjpKU1Zh
bHVlIGpzVGVzdE9ialNob3J0QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlND
OjpQcm9wZXJ0eU5hbWUpOwogdm9pZCBzZXRKU1Rlc3RPYmpTaG9ydEF0dHIoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKIEpTQzo6SlNWYWx1ZSBqc1Rlc3RP
YmpVbnNpZ25lZFNob3J0QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L09iakMvRE9NVGVzdE9iai5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L09iakMvRE9NVGVzdE9iai5oCmluZGV4IDdhNjMwOTguLmUwM2QwMjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmou
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0
T2JqLmgKQEAgLTY2LDYgKzY2LDggQEAgZW51bSB7CiBAcHJvcGVydHkocmVhZG9ubHkpIGludCBy
ZWFkT25seUxvbmdBdHRyOwogQHByb3BlcnR5KHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqcmVh
ZE9ubHlTdHJpbmdBdHRyOwogQHByb3BlcnR5KHJlYWRvbmx5LCByZXRhaW4pIERPTVRlc3RPYmog
KnJlYWRPbmx5VGVzdE9iakF0dHI7CitAcHJvcGVydHkgY2hhciBieXRlQXR0cjsKK0Bwcm9wZXJ0
eSB1bnNpZ25lZCBjaGFyIG9jdGV0QXR0cjsKIEBwcm9wZXJ0eSBzaG9ydCBzaG9ydEF0dHI7CiBA
cHJvcGVydHkgdW5zaWduZWQgc2hvcnQgdW5zaWduZWRTaG9ydEF0dHI7CiBAcHJvcGVydHkgaW50
IGxvbmdBdHRyOwpAQCAtMTIyLDYgKzEyNCwxMCBAQCBlbnVtIHsKIAogLSAodm9pZCl2b2lkTWV0
aG9kOwogLSAodm9pZCl2b2lkTWV0aG9kV2l0aEFyZ3M6KGludClsb25nQXJnIHN0ckFyZzooTlNT
dHJpbmcgKilzdHJBcmcgb2JqQXJnOihET01UZXN0T2JqICopb2JqQXJnOworLSAoY2hhcilieXRl
TWV0aG9kOworLSAoY2hhcilieXRlTWV0aG9kV2l0aEFyZ3M6KGNoYXIpYnl0ZUFyZyBzdHJBcmc6
KE5TU3RyaW5nICopc3RyQXJnIG9iakFyZzooRE9NVGVzdE9iaiAqKW9iakFyZzsKKy0gKHVuc2ln
bmVkIGNoYXIpb2N0ZXRNZXRob2Q7CistICh1bnNpZ25lZCBjaGFyKW9jdGV0TWV0aG9kV2l0aEFy
Z3M6KHVuc2lnbmVkIGNoYXIpb2N0ZXRBcmcgc3RyQXJnOihOU1N0cmluZyAqKXN0ckFyZyBvYmpB
cmc6KERPTVRlc3RPYmogKilvYmpBcmc7CiAtIChpbnQpbG9uZ01ldGhvZDsKIC0gKGludClsb25n
TWV0aG9kV2l0aEFyZ3M6KGludClsb25nQXJnIHN0ckFyZzooTlNTdHJpbmcgKilzdHJBcmcgb2Jq
QXJnOihET01UZXN0T2JqICopb2JqQXJnOwogLSAoRE9NVGVzdE9iaiAqKW9iak1ldGhvZDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRl
c3RPYmoubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01U
ZXN0T2JqLm1tCmluZGV4IDg5OTZmZTUuLmZlODMxMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQpAQCAtMTEx
LDYgKzExMSwzMCBAQAogICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+cmVhZE9ubHlU
ZXN0T2JqQXR0cigpKSk7CiB9CiAKKy0gKGNoYXIpYnl0ZUF0dHIKK3sKKyAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwtPmJ5dGVBdHRyKCk7
Cit9CisKKy0gKHZvaWQpc2V0Qnl0ZUF0dHI6KGNoYXIpbmV3Qnl0ZUF0dHIKK3sKKyAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgSU1QTC0+c2V0Qnl0ZUF0dHIo
bmV3Qnl0ZUF0dHIpOworfQorCistICh1bnNpZ25lZCBjaGFyKW9jdGV0QXR0cgoreworICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+b2N0
ZXRBdHRyKCk7Cit9CisKKy0gKHZvaWQpc2V0T2N0ZXRBdHRyOih1bnNpZ25lZCBjaGFyKW5ld09j
dGV0QXR0cgoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAg
ICBJTVBMLT5zZXRPY3RldEF0dHIobmV3T2N0ZXRBdHRyKTsKK30KKwogLSAoc2hvcnQpc2hvcnRB
dHRyCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwpAQCAtNzc1
LDYgKzc5OSwzMCBAQAogICAgIElNUEwtPnZvaWRNZXRob2RXaXRoQXJncyhsb25nQXJnLCBzdHJB
cmcsIGNvcmUob2JqQXJnKSk7CiB9CiAKKy0gKGNoYXIpYnl0ZU1ldGhvZAoreworICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+Ynl0ZU1l
dGhvZCgpOworfQorCistIChjaGFyKWJ5dGVNZXRob2RXaXRoQXJnczooY2hhcilieXRlQXJnIHN0
ckFyZzooTlNTdHJpbmcgKilzdHJBcmcgb2JqQXJnOihET01UZXN0T2JqICopb2JqQXJnCit7Cisg
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBM
LT5ieXRlTWV0aG9kV2l0aEFyZ3MoYnl0ZUFyZywgc3RyQXJnLCBjb3JlKG9iakFyZykpOworfQor
CistICh1bnNpZ25lZCBjaGFyKW9jdGV0TWV0aG9kCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT5vY3RldE1ldGhvZCgpOworfQor
CistICh1bnNpZ25lZCBjaGFyKW9jdGV0TWV0aG9kV2l0aEFyZ3M6KHVuc2lnbmVkIGNoYXIpb2N0
ZXRBcmcgc3RyQXJnOihOU1N0cmluZyAqKXN0ckFyZyBvYmpBcmc6KERPTVRlc3RPYmogKilvYmpB
cmcKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0
dXJuIElNUEwtPm9jdGV0TWV0aG9kV2l0aEFyZ3Mob2N0ZXRBcmcsIHN0ckFyZywgY29yZShvYmpB
cmcpKTsKK30KKwogLSAoaW50KWxvbmdNZXRob2QKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdE9iai5pZGwKaW5kZXggYWYzOTQ1ZS4uMDY3OWYzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtNDQsNiArNDQs
OCBAQCBlbnVtIFRlc3RFbnVtVHlwZSB7ICIiLCAiRW51bVZhbHVlMSIsICJFbnVtVmFsdWUyIiwg
IkVudW1WYWx1ZTMiIH07CiAgICAgc3RhdGljIGF0dHJpYnV0ZSBET01TdHJpbmcgICAgICAgICBz
dGF0aWNTdHJpbmdBdHRyOwogICAgIHN0YXRpYyByZWFkb25seSBhdHRyaWJ1dGUgVGVzdFN1Yk9i
akNvbnN0cnVjdG9yIFRlc3RTdWJPYmo7CiAgICAgYXR0cmlidXRlIFRlc3RFbnVtVHlwZSAgICAg
ICAgICAgICBlbnVtQXR0cjsKKyAgICBhdHRyaWJ1dGUgYnl0ZSAgICAgICAgICAgICAgICAgICAg
IGJ5dGVBdHRyOworICAgIGF0dHJpYnV0ZSBvY3RldCAgICAgICAgICAgICAgICAgICAgb2N0ZXRB
dHRyOwogICAgIGF0dHJpYnV0ZSBzaG9ydCAgICAgICAgICAgICAgICAgICAgc2hvcnRBdHRyOwog
ICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCAgICAgICAgICAgdW5zaWduZWRTaG9ydEF0dHI7
CiAgICAgYXR0cmlidXRlIGxvbmcgICAgICAgICAgICAgICAgICAgICBsb25nQXR0cjsKQEAgLTcz
LDYgKzc1LDEwIEBAIGVudW0gVGVzdEVudW1UeXBlIHsgIiIsICJFbnVtVmFsdWUxIiwgIkVudW1W
YWx1ZTIiLCAiRW51bVZhbHVlMyIgfTsKICAgICAvLyBNZXRob2RzCiAgICAgdm9pZCAgICB2b2lk
TWV0aG9kKCk7CiAgICAgdm9pZCAgICB2b2lkTWV0aG9kV2l0aEFyZ3MobG9uZyBsb25nQXJnLCBE
T01TdHJpbmcgc3RyQXJnLCBUZXN0T2JqIG9iakFyZyk7CisgICAgYnl0ZSAgICBieXRlTWV0aG9k
KCk7CisgICAgYnl0ZSAgICBieXRlTWV0aG9kV2l0aEFyZ3MoYnl0ZSBieXRlQXJnLCBET01TdHJp
bmcgc3RyQXJnLCBUZXN0T2JqIG9iakFyZyk7CisgICAgb2N0ZXQgICBvY3RldE1ldGhvZCgpOwor
ICAgIG9jdGV0ICAgb2N0ZXRNZXRob2RXaXRoQXJncyhvY3RldCBvY3RldEFyZywgRE9NU3RyaW5n
IHN0ckFyZywgVGVzdE9iaiBvYmpBcmcpOwogICAgIGxvbmcgICAgbG9uZ01ldGhvZCgpOwogICAg
IGxvbmcgICAgbG9uZ01ldGhvZFdpdGhBcmdzKGxvbmcgbG9uZ0FyZywgRE9NU3RyaW5nIHN0ckFy
ZywgVGVzdE9iaiBvYmpBcmcpOwogICAgIFRlc3RPYmogb2JqTWV0aG9kKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9EYXRhVmlldy5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9EYXRhVmlldy5pZGwKaW5kZXggYzBhNDJhMC4uNTA3YjBhNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRGF0YVZpZXcuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0RhdGFWaWV3LmlkbApAQCAtMzEsMTEgKzMxLDggQEAKIF0g
aW50ZXJmYWNlIERhdGFWaWV3IDogQXJyYXlCdWZmZXJWaWV3IHsKICAgICAvLyBBbGwgdGhlc2Ug
bWV0aG9kcyByYWlzZSBhbiBleGNlcHRpb24gaWYgdGhleSB3b3VsZCByZWFkIG9yIHdyaXRlIGJl
eW9uZCB0aGUgZW5kIG9mIHRoZSB2aWV3LgogCi0gICAgLy8gV2UgaGF2ZSB0byB1c2UgY3VzdG9t
IGNvZGUgYmVjYXVzZSBvdXIgY29kZSBnZW5lcmF0b3IgZG9lcyBub3Qgc3VwcG9ydCBpbnQ4X3Qg
dHlwZS4KLSAgICAvLyBpbnQ4X3QgZ2V0SW50OCh1bnNpZ25lZCBsb25nIGJ5dGVPZmZzZXQpOwot
ICAgIC8vIHVpbnQ4X3QgZ2V0VWludDgodW5zaWduZWQgbG9uZyBieXRlT2Zmc2V0KTsKLSAgICBb
Q3VzdG9tLCBSYWlzZXNFeGNlcHRpb25dIGFueSBnZXRJbnQ4KCk7Ci0gICAgW0N1c3RvbSwgUmFp
c2VzRXhjZXB0aW9uXSBhbnkgZ2V0VWludDgoKTsKKyAgICBbUmFpc2VzRXhjZXB0aW9uXSBieXRl
IGdldEludDgodW5zaWduZWQgbG9uZyBieXRlT2Zmc2V0KTsKKyAgICBbUmFpc2VzRXhjZXB0aW9u
XSBvY3RldCBnZXRVaW50OCh1bnNpZ25lZCBsb25nIGJ5dGVPZmZzZXQpOwogCiAgICAgW1N0cmlj
dFR5cGVDaGVja2luZywgUmFpc2VzRXhjZXB0aW9uXSBzaG9ydCBnZXRJbnQxNih1bnNpZ25lZCBs
b25nIGJ5dGVPZmZzZXQsIG9wdGlvbmFsIGJvb2xlYW4gbGl0dGxlRW5kaWFuKTsKICAgICBbU3Ry
aWN0VHlwZUNoZWNraW5nLCBSYWlzZXNFeGNlcHRpb25dIHVuc2lnbmVkIHNob3J0IGdldFVpbnQx
Nih1bnNpZ25lZCBsb25nIGJ5dGVPZmZzZXQsIG9wdGlvbmFsIGJvb2xlYW4gbGl0dGxlRW5kaWFu
KTsKQEAgLTQ2LDExICs0Myw4IEBACiAgICAgW0N1c3RvbSwgU3RyaWN0VHlwZUNoZWNraW5nLCBS
YWlzZXNFeGNlcHRpb25dIGZsb2F0IGdldEZsb2F0MzIodW5zaWduZWQgbG9uZyBieXRlT2Zmc2V0
LCBvcHRpb25hbCBib29sZWFuIGxpdHRsZUVuZGlhbik7CiAgICAgW0N1c3RvbSwgU3RyaWN0VHlw
ZUNoZWNraW5nLCBSYWlzZXNFeGNlcHRpb25dIGRvdWJsZSBnZXRGbG9hdDY0KHVuc2lnbmVkIGxv
bmcgYnl0ZU9mZnNldCwgb3B0aW9uYWwgYm9vbGVhbiBsaXR0bGVFbmRpYW4pOwogCi0gICAgLy8g
V2UgaGF2ZSB0byB1c2UgY3VzdG9tIGNvZGUgYmVjYXVzZSBvdXIgY29kZSBnZW5lcmF0b3IgZG9l
cyBub3Qgc3VwcG9ydCB1aW50OF90IHR5cGUuCi0gICAgLy8gdm9pZCBzZXRJbnQ4KHVuc2lnbmVk
IGxvbmcgYnl0ZU9mZnNldCwgaW50OF90IHZhbHVlKTsKLSAgICAvLyB2b2lkIHNldFVpbnQ4KHVu
c2lnbmVkIGxvbmcgYnl0ZU9mZnNldCwgdWludDhfdCB2YWx1ZSk7Ci0gICAgW0N1c3RvbSwgUmFp
c2VzRXhjZXB0aW9uXSB2b2lkIHNldEludDgoKTsKLSAgICBbQ3VzdG9tLCBSYWlzZXNFeGNlcHRp
b25dIHZvaWQgc2V0VWludDgoKTsKKyAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHNldEludDgo
dW5zaWduZWQgbG9uZyBieXRlT2Zmc2V0LCBieXRlIHZhbHVlKTsKKyAgICBbUmFpc2VzRXhjZXB0
aW9uXSB2b2lkIHNldFVpbnQ4KHVuc2lnbmVkIGxvbmcgYnl0ZU9mZnNldCwgb2N0ZXQgdmFsdWUp
OwogCiAgICAgW1N0cmljdFR5cGVDaGVja2luZywgUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHNldElu
dDE2KHVuc2lnbmVkIGxvbmcgYnl0ZU9mZnNldCwgc2hvcnQgdmFsdWUsIG9wdGlvbmFsIGJvb2xl
YW4gbGl0dGxlRW5kaWFuKTsKICAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBSYWlzZXNFeGNlcHRp
b25dIHZvaWQgc2V0VWludDE2KHVuc2lnbmVkIGxvbmcgYnl0ZU9mZnNldCwgdW5zaWduZWQgc2hv
cnQgdmFsdWUsIG9wdGlvbmFsIGJvb2xlYW4gbGl0dGxlRW5kaWFuKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvVHlwZUNvbnZlcnNpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL1R5cGVDb252ZXJzaW9ucy5oCmluZGV4IDhkZTEwMmYuLjM0MGM4OTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvVHlwZUNvbnZlcnNpb25zLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9UeXBlQ29udmVyc2lvbnMuaApAQCAtNTQsNiArNTQsMTUgQEAgcHVi
bGljOgogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB0ZXN0RW5mb3JjZVJhbmdlVW5zaWduZWRMb25n
TG9uZygpIHsgcmV0dXJuIG1fdW5zaWduZWRMb25nTG9uZzsgfQogICAgIHZvaWQgc2V0VGVzdEVu
Zm9yY2VSYW5nZVVuc2lnbmVkTG9uZ0xvbmcodW5zaWduZWQgbG9uZyBsb25nIHZhbHVlKSB7IG1f
dW5zaWduZWRMb25nTG9uZyA9IHZhbHVlOyB9CiAKKyAgICBpbnQ4X3QgdGVzdEJ5dGUoKSB7IHJl
dHVybiBtX2J5dGU7IH0KKyAgICB2b2lkIHNldFRlc3RCeXRlKGludDhfdCB2YWx1ZSkgeyBtX2J5
dGUgPSB2YWx1ZTsgfQorICAgIGludDhfdCB0ZXN0RW5mb3JjZVJhbmdlQnl0ZSgpIHsgcmV0dXJu
IG1fYnl0ZTsgfQorICAgIHZvaWQgc2V0VGVzdEVuZm9yY2VSYW5nZUJ5dGUoaW50OF90IHZhbHVl
KSB7IG1fYnl0ZSA9IHZhbHVlOyB9CisKKyAgICB1aW50OF90IHRlc3RPY3RldCgpIHsgcmV0dXJu
IG1fb2N0ZXQ7IH0KKyAgICB2b2lkIHNldFRlc3RPY3RldCh1aW50OF90IHZhbHVlKSB7IG1fb2N0
ZXQgPSB2YWx1ZTsgfQorICAgIHVpbnQ4X3QgdGVzdEVuZm9yY2VSYW5nZU9jdGV0KCkgeyByZXR1
cm4gbV9vY3RldDsgfQorICAgIHZvaWQgc2V0VGVzdEVuZm9yY2VSYW5nZU9jdGV0KHVpbnQ4X3Qg
dmFsdWUpIHsgbV9vY3RldCA9IHZhbHVlOyB9CiBwcml2YXRlOgogICAgIFR5cGVDb252ZXJzaW9u
cygpCiAgICAgewpAQCAtNjMsNiArNzIsOCBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIGxvbmcg
bV91bnNpZ25lZExvbmc7CiAgICAgbG9uZyBsb25nIG1fbG9uZ0xvbmc7CiAgICAgdW5zaWduZWQg
bG9uZyBsb25nIG1fdW5zaWduZWRMb25nTG9uZzsKKyAgICBpbnQ4X3QgbV9ieXRlOworICAgIHVp
bnQ4X3QgbV9vY3RldDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvVHlwZUNvbnZlcnNpb25zLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvVHlwZUNvbnZlcnNpb25zLmlkbAppbmRleCBlZGQ0MDA0Li5lYmU5YjkwYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9UeXBlQ29udmVyc2lvbnMuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvVHlwZUNvbnZlcnNpb25zLmlkbApAQCAtMzYsNCAr
MzYsOSBAQAogICAgIGF0dHJpYnV0ZSBbRW5mb3JjZVJhbmdlXSBsb25nIGxvbmcgdGVzdEVuZm9y
Y2VSYW5nZUxvbmdMb25nOwogICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxvbmcgdGVzdFVu
c2lnbmVkTG9uZ0xvbmc7CiAgICAgYXR0cmlidXRlIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxv
bmcgbG9uZyB0ZXN0RW5mb3JjZVJhbmdlVW5zaWduZWRMb25nTG9uZzsKKworICAgIGF0dHJpYnV0
ZSBieXRlIHRlc3RCeXRlOworICAgIGF0dHJpYnV0ZSBbRW5mb3JjZVJhbmdlXSBieXRlIHRlc3RF
bmZvcmNlUmFuZ2VCeXRlOworICAgIGF0dHJpYnV0ZSBvY3RldCB0ZXN0T2N0ZXQ7CisgICAgYXR0
cmlidXRlIFtFbmZvcmNlUmFuZ2VdIG9jdGV0IHRlc3RFbmZvcmNlUmFuZ2VPY3RldDsKIH07Cg==
</data>
<flag name="commit-queue"
          id="225976"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204584</attachid>
            <date>2013-06-13 07:24:13 -0700</date>
            <delta_ts>2013-06-13 11:13:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>117547_byte_octet.patch</filename>
            <type>text/plain</type>
            <size>61538</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0NWJkYmU4MC4uNzU3N2YyMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEzLTA2
LTEzICBDaHJpc3RvcGhlIER1bWV6ICA8Y2guZHVtZXpAc2lzYS5zYW1zdW5nLmNvbT4KKworICAg
ICAgICBTdXBwb3J0IGJ5dGUgYW5kIG9jdGV0IHR5cGVzIGluIGJpbmRpbmdzIGdlbmVyYXRvcnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzU0Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBm
YXN0L2pzL3dlYmlkbC10eXBlLW1hcHBpbmcuaHRtbCB0byBjb3ZlciBieXRlIGFuZCBvY3RldAor
ICAgICAgICBXZWIgSURMIHR5cGVzIHdpdGggYW5kIHdpdGhvdXQgW0VuZm9yY2VSYW5nZV0uCisK
KyAgICAgICAgKiBmYXN0L2pzL3dlYmlkbC10eXBlLW1hcHBpbmctZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGZhc3QvanMvd2ViaWRsLXR5cGUtbWFwcGluZy5odG1sOgorCiAyMDEzLTA2LTEyICBL
d2FuZyBZdWwgU2VvICA8c2t5dWxAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCBnYXJkZW5pbmcuIFVuc2tpcHBpbmcgcGFzc2luZyB0ZXN0cy4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvanMvd2ViaWRsLXR5cGUtbWFwcGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2pzL3dlYmlkbC10eXBlLW1hcHBpbmctZXhwZWN0ZWQudHh0CmluZGV4IGFlYzBh
YzEuLmUxM2QxMTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvanMvd2ViaWRsLXR5cGUt
bWFwcGluZy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy93ZWJpZGwtdHlw
ZS1tYXBwaW5nLWV4cGVjdGVkLnR4dApAQCAtNTQ2LDYgKzU0NiwyMDAgQEAgUEFTUyBjb252ZXJ0
ZXIudGVzdEVuZm9yY2VSYW5nZVVuc2lnbmVkTG9uZ0xvbmcgaXMgMAogUEFTUyBjb252ZXJ0ZXIu
dGVzdEVuZm9yY2VSYW5nZVVuc2lnbmVkTG9uZ0xvbmcgPSB1bmRlZmluZWQgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KIFBBU1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFu
Z2VVbnNpZ25lZExvbmdMb25nID0ge3ZhbHVlT2Y6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3Io
J2N1c3RvbScpO319IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogY3VzdG9tLgogCitQQVNTICd0ZXN0
Qnl0ZScgaW4gY29udmVydGVyIGlzIHRydWUKK1BBU1MgdHlwZW9mIGNvbnZlcnRlci50ZXN0Qnl0
ZSA9PT0gJ251bWJlcicgaXMgdHJ1ZQorY29udmVydGVyLnRlc3RCeXRlID0gMAorUEFTUyBjb252
ZXJ0ZXIudGVzdEJ5dGUgaXMgMAorY29udmVydGVyLnRlc3RCeXRlID0gLTEKK1BBU1MgY29udmVy
dGVyLnRlc3RCeXRlIGlzIC0xCitjb252ZXJ0ZXIudGVzdEJ5dGUgPSAxCitQQVNTIGNvbnZlcnRl
ci50ZXN0Qnl0ZSBpcyAxCitjb252ZXJ0ZXIudGVzdEJ5dGUgPSAweDdGCitQQVNTIGNvbnZlcnRl
ci50ZXN0Qnl0ZSBpcyAweDdGCitjb252ZXJ0ZXIudGVzdEJ5dGUgPSAweDgwCitQQVNTIGNvbnZl
cnRlci50ZXN0Qnl0ZSBpcyAtMHg4MAorY29udmVydGVyLnRlc3RCeXRlID0gLTB4N0YKK1BBU1Mg
Y29udmVydGVyLnRlc3RCeXRlIGlzIC0weDdGCitjb252ZXJ0ZXIudGVzdEJ5dGUgPSAtMHg4MAor
UEFTUyBjb252ZXJ0ZXIudGVzdEJ5dGUgaXMgLTB4ODAKK2NvbnZlcnRlci50ZXN0Qnl0ZSA9IC0w
eDgxCitQQVNTIGNvbnZlcnRlci50ZXN0Qnl0ZSBpcyAweDdGCitjb252ZXJ0ZXIudGVzdEJ5dGUg
PSBOdW1iZXIuTUlOX1ZBTFVFCitQQVNTIGNvbnZlcnRlci50ZXN0Qnl0ZSBpcyAwCitjb252ZXJ0
ZXIudGVzdEJ5dGUgPSAtTnVtYmVyLk1JTl9WQUxVRQorUEFTUyBjb252ZXJ0ZXIudGVzdEJ5dGUg
aXMgMAorY29udmVydGVyLnRlc3RCeXRlID0gTnVtYmVyLk1BWF9WQUxVRQorUEFTUyBjb252ZXJ0
ZXIudGVzdEJ5dGUgaXMgMAorY29udmVydGVyLnRlc3RCeXRlID0gLU51bWJlci5NQVhfVkFMVUUK
K1BBU1MgY29udmVydGVyLnRlc3RCeXRlIGlzIDAKK2NvbnZlcnRlci50ZXN0Qnl0ZSA9IDEuOTkK
K1BBU1MgY29udmVydGVyLnRlc3RCeXRlIGlzIDEKK2NvbnZlcnRlci50ZXN0Qnl0ZSA9IC0xLjk5
CitQQVNTIGNvbnZlcnRlci50ZXN0Qnl0ZSBpcyAtMQorY29udmVydGVyLnRlc3RCeXRlID0gSW5m
aW5pdHkKK1BBU1MgY29udmVydGVyLnRlc3RCeXRlIGlzIDAKK2NvbnZlcnRlci50ZXN0Qnl0ZSA9
IC1JbmZpbml0eQorUEFTUyBjb252ZXJ0ZXIudGVzdEJ5dGUgaXMgMAorY29udmVydGVyLnRlc3RC
eXRlID0gTmFOCitQQVNTIGNvbnZlcnRlci50ZXN0Qnl0ZSBpcyAwCitjb252ZXJ0ZXIudGVzdEJ5
dGUgPSBmYWxzZQorUEFTUyBjb252ZXJ0ZXIudGVzdEJ5dGUgaXMgMAorY29udmVydGVyLnRlc3RC
eXRlID0gdHJ1ZQorUEFTUyBjb252ZXJ0ZXIudGVzdEJ5dGUgaXMgMQorY29udmVydGVyLnRlc3RC
eXRlID0gJycKK1BBU1MgY29udmVydGVyLnRlc3RCeXRlIGlzIDAKK2NvbnZlcnRlci50ZXN0Qnl0
ZSA9ICcxJworUEFTUyBjb252ZXJ0ZXIudGVzdEJ5dGUgaXMgMQorY29udmVydGVyLnRlc3RCeXRl
ID0gJ2FiYycKK1BBU1MgY29udmVydGVyLnRlc3RCeXRlIGlzIDAKK2NvbnZlcnRlci50ZXN0Qnl0
ZSA9IG51bGwKK1BBU1MgY29udmVydGVyLnRlc3RCeXRlIGlzIDAKK2NvbnZlcnRlci50ZXN0Qnl0
ZSA9IHVuZGVmaW5lZAorUEFTUyBjb252ZXJ0ZXIudGVzdEJ5dGUgaXMgMAorUEFTUyBjb252ZXJ0
ZXIudGVzdEJ5dGUgPSB7dmFsdWVPZjpmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcignY3VzdG9t
Jyk7fX0gdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBjdXN0b20uCisKK1BBU1MgJ3Rlc3RFbmZvcmNl
UmFuZ2VCeXRlJyBpbiBjb252ZXJ0ZXIgaXMgdHJ1ZQorUEFTUyB0eXBlb2YgY29udmVydGVyLnRl
c3RFbmZvcmNlUmFuZ2VCeXRlID09PSAnbnVtYmVyJyBpcyB0cnVlCitjb252ZXJ0ZXIudGVzdEVu
Zm9yY2VSYW5nZUJ5dGUgPSAwCitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlQnl0ZSBp
cyAwCitjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUgPSAtMQorUEFTUyBjb252ZXJ0ZXIu
dGVzdEVuZm9yY2VSYW5nZUJ5dGUgaXMgLTEKK2NvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlQnl0
ZSA9IDEKK1BBU1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRlIGlzIDEKK2NvbnZlcnRl
ci50ZXN0RW5mb3JjZVJhbmdlQnl0ZSA9IDB4N0YKK1BBU1MgY29udmVydGVyLnRlc3RFbmZvcmNl
UmFuZ2VCeXRlIGlzIDB4N0YKK1BBU1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRlID0g
MHg4MCB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorY29udmVydGVyLnRl
c3RFbmZvcmNlUmFuZ2VCeXRlID0gLTB4N0YKK1BBU1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFu
Z2VCeXRlIGlzIC0weDdGCitjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUgPSAtMHg4MAor
UEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUgaXMgLTB4ODAKK1BBU1MgY29udmVy
dGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRlID0gLTB4ODEgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogVHlwZSBlcnJvci4KK2NvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlQnl0ZSA9IE51bWJlci5N
SU5fVkFMVUUKK1BBU1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRlIGlzIDAKK2NvbnZl
cnRlci50ZXN0RW5mb3JjZVJhbmdlQnl0ZSA9IC1OdW1iZXIuTUlOX1ZBTFVFCitQQVNTIGNvbnZl
cnRlci50ZXN0RW5mb3JjZVJhbmdlQnl0ZSBpcyAwCitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3Jj
ZVJhbmdlQnl0ZSA9IE51bWJlci5NQVhfVkFMVUUgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
VHlwZSBlcnJvci4KK1BBU1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRlID0gLU51bWJl
ci5NQVhfVkFMVUUgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK2NvbnZl
cnRlci50ZXN0RW5mb3JjZVJhbmdlQnl0ZSA9IDEuOTkKK1BBU1MgY29udmVydGVyLnRlc3RFbmZv
cmNlUmFuZ2VCeXRlIGlzIDEKK2NvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlQnl0ZSA9IC0xLjk5
CitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlQnl0ZSBpcyAtMQorUEFTUyBjb252ZXJ0
ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUgPSBJbmZpbml0eSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBUeXBlIGVycm9yLgorUEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUgPSAt
SW5maW5pdHkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgY29u
dmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRlID0gTmFOIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IFR5cGUgZXJyb3IuCitjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUgPSBmYWxzZQor
UEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUgaXMgMAorY29udmVydGVyLnRlc3RF
bmZvcmNlUmFuZ2VCeXRlID0gdHJ1ZQorUEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZUJ5
dGUgaXMgMQorY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRlID0gJycKK1BBU1MgY29udmVy
dGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRlIGlzIDAKK2NvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdl
Qnl0ZSA9ICcxJworUEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUgaXMgMQorUEFT
UyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUgPSAnYWJjJyB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBUeXBlIGVycm9yLgorY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRlID0g
bnVsbAorUEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUgaXMgMAorUEFTUyBjb252
ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZUJ5dGUgPSB1bmRlZmluZWQgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VCeXRl
ID0ge3ZhbHVlT2Y6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoJ2N1c3RvbScpO319IHRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogY3VzdG9tLgorCitQQVNTICd0ZXN0T2N0ZXQnIGluIGNvbnZlcnRl
ciBpcyB0cnVlCitQQVNTIHR5cGVvZiBjb252ZXJ0ZXIudGVzdE9jdGV0ID09PSAnbnVtYmVyJyBp
cyB0cnVlCitjb252ZXJ0ZXIudGVzdE9jdGV0ID0gMAorUEFTUyBjb252ZXJ0ZXIudGVzdE9jdGV0
IGlzIDAKK2NvbnZlcnRlci50ZXN0T2N0ZXQgPSAtMQorUEFTUyBjb252ZXJ0ZXIudGVzdE9jdGV0
IGlzIDB4RkYKK2NvbnZlcnRlci50ZXN0T2N0ZXQgPSAxCitQQVNTIGNvbnZlcnRlci50ZXN0T2N0
ZXQgaXMgMQorY29udmVydGVyLnRlc3RPY3RldCA9IDB4N0YKK1BBU1MgY29udmVydGVyLnRlc3RP
Y3RldCBpcyAweDdGCitjb252ZXJ0ZXIudGVzdE9jdGV0ID0gMHg4MAorUEFTUyBjb252ZXJ0ZXIu
dGVzdE9jdGV0IGlzIDB4ODAKK2NvbnZlcnRlci50ZXN0T2N0ZXQgPSAweEZGCitQQVNTIGNvbnZl
cnRlci50ZXN0T2N0ZXQgaXMgMHhGRgorY29udmVydGVyLnRlc3RPY3RldCA9IDB4MTAwCitQQVNT
IGNvbnZlcnRlci50ZXN0T2N0ZXQgaXMgMAorY29udmVydGVyLnRlc3RPY3RldCA9IDB4MTAxCitQ
QVNTIGNvbnZlcnRlci50ZXN0T2N0ZXQgaXMgMQorY29udmVydGVyLnRlc3RPY3RldCA9IC0weDgw
CitQQVNTIGNvbnZlcnRlci50ZXN0T2N0ZXQgaXMgMHg4MAorY29udmVydGVyLnRlc3RPY3RldCA9
IC0weDgxCitQQVNTIGNvbnZlcnRlci50ZXN0T2N0ZXQgaXMgMHg3RgorY29udmVydGVyLnRlc3RP
Y3RldCA9IE51bWJlci5NQVhfVkFMVUUKK1BBU1MgY29udmVydGVyLnRlc3RPY3RldCBpcyAwCitj
b252ZXJ0ZXIudGVzdE9jdGV0ID0gTnVtYmVyLk1JTl9WQUxVRQorUEFTUyBjb252ZXJ0ZXIudGVz
dE9jdGV0IGlzIDAKK2NvbnZlcnRlci50ZXN0T2N0ZXQgPSAtTnVtYmVyLk1BWF9WQUxVRQorUEFT
UyBjb252ZXJ0ZXIudGVzdE9jdGV0IGlzIDAKK2NvbnZlcnRlci50ZXN0T2N0ZXQgPSAtTnVtYmVy
Lk1JTl9WQUxVRQorUEFTUyBjb252ZXJ0ZXIudGVzdE9jdGV0IGlzIDAKK2NvbnZlcnRlci50ZXN0
T2N0ZXQgPSAxLjk5CitQQVNTIGNvbnZlcnRlci50ZXN0T2N0ZXQgaXMgMQorY29udmVydGVyLnRl
c3RPY3RldCA9IC0xLjk5CitQQVNTIGNvbnZlcnRlci50ZXN0T2N0ZXQgaXMgMHhGRgorY29udmVy
dGVyLnRlc3RPY3RldCA9IEluZmluaXR5CitQQVNTIGNvbnZlcnRlci50ZXN0T2N0ZXQgaXMgMAor
Y29udmVydGVyLnRlc3RPY3RldCA9IC1JbmZpbml0eQorUEFTUyBjb252ZXJ0ZXIudGVzdE9jdGV0
IGlzIDAKK2NvbnZlcnRlci50ZXN0T2N0ZXQgPSBOYU4KK1BBU1MgY29udmVydGVyLnRlc3RPY3Rl
dCBpcyAwCitjb252ZXJ0ZXIudGVzdE9jdGV0ID0gZmFsc2UKK1BBU1MgY29udmVydGVyLnRlc3RP
Y3RldCBpcyAwCitjb252ZXJ0ZXIudGVzdE9jdGV0ID0gdHJ1ZQorUEFTUyBjb252ZXJ0ZXIudGVz
dE9jdGV0IGlzIDEKK2NvbnZlcnRlci50ZXN0T2N0ZXQgPSAnJworUEFTUyBjb252ZXJ0ZXIudGVz
dE9jdGV0IGlzIDAKK2NvbnZlcnRlci50ZXN0T2N0ZXQgPSAnMScKK1BBU1MgY29udmVydGVyLnRl
c3RPY3RldCBpcyAxCitjb252ZXJ0ZXIudGVzdE9jdGV0ID0gJ2FiYycKK1BBU1MgY29udmVydGVy
LnRlc3RPY3RldCBpcyAwCitjb252ZXJ0ZXIudGVzdE9jdGV0ID0gbnVsbAorUEFTUyBjb252ZXJ0
ZXIudGVzdE9jdGV0IGlzIDAKK2NvbnZlcnRlci50ZXN0T2N0ZXQgPSB1bmRlZmluZWQKK1BBU1Mg
Y29udmVydGVyLnRlc3RPY3RldCBpcyAwCitQQVNTIGNvbnZlcnRlci50ZXN0T2N0ZXQgPSB7dmFs
dWVPZjpmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcignY3VzdG9tJyk7fX0gdGhyZXcgZXhjZXB0
aW9uIEVycm9yOiBjdXN0b20uCisKK1BBU1MgJ3Rlc3RFbmZvcmNlUmFuZ2VPY3RldCcgaW4gY29u
dmVydGVyIGlzIHRydWUKK1BBU1MgdHlwZW9mIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0
ZXQgPT09ICdudW1iZXInIGlzIHRydWUKK2NvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0ZXQg
PSAwCitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0ZXQgaXMgMAorUEFTUyBjb252
ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZU9jdGV0ID0gLTEgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogVHlwZSBlcnJvci4KK2NvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0ZXQgPSAxCitQQVNT
IGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0ZXQgaXMgMQorY29udmVydGVyLnRlc3RFbmZv
cmNlUmFuZ2VPY3RldCA9IDB4N0YKK1BBU1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VPY3Rl
dCBpcyAweDdGCitjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZU9jdGV0ID0gMHg4MAorUEFTUyBj
b252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZU9jdGV0IGlzIDB4ODAKK2NvbnZlcnRlci50ZXN0RW5m
b3JjZVJhbmdlT2N0ZXQgPSAweEZGCitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0
ZXQgaXMgMHhGRgorUEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZU9jdGV0ID0gMHgxMDAg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgY29udmVydGVyLnRl
c3RFbmZvcmNlUmFuZ2VPY3RldCA9IDB4MTAxIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5
cGUgZXJyb3IuCitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0ZXQgPSAtMHg4MCB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBjb252ZXJ0ZXIudGVz
dEVuZm9yY2VSYW5nZU9jdGV0ID0gLTB4ODEgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlw
ZSBlcnJvci4KK1BBU1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VPY3RldCA9IE51bWJlci5N
QVhfVkFMVUUgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK2NvbnZlcnRl
ci50ZXN0RW5mb3JjZVJhbmdlT2N0ZXQgPSBOdW1iZXIuTUlOX1ZBTFVFCitQQVNTIGNvbnZlcnRl
ci50ZXN0RW5mb3JjZVJhbmdlT2N0ZXQgaXMgMAorUEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VS
YW5nZU9jdGV0ID0gLU51bWJlci5NQVhfVkFMVUUgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
VHlwZSBlcnJvci4KK2NvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0ZXQgPSAtTnVtYmVyLk1J
Tl9WQUxVRQorUEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZU9jdGV0IGlzIDAKK2NvbnZl
cnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0ZXQgPSAxLjk5CitQQVNTIGNvbnZlcnRlci50ZXN0RW5m
b3JjZVJhbmdlT2N0ZXQgaXMgMQorUEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZU9jdGV0
ID0gLTEuOTkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgY29u
dmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VPY3RldCA9IEluZmluaXR5IHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0
ZXQgPSAtSW5maW5pdHkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BB
U1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VPY3RldCA9IE5hTiB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBUeXBlIGVycm9yLgorY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VPY3RldCA9
IGZhbHNlCitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0ZXQgaXMgMAorY29udmVy
dGVyLnRlc3RFbmZvcmNlUmFuZ2VPY3RldCA9IHRydWUKK1BBU1MgY29udmVydGVyLnRlc3RFbmZv
cmNlUmFuZ2VPY3RldCBpcyAxCitjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZU9jdGV0ID0gJycK
K1BBU1MgY29udmVydGVyLnRlc3RFbmZvcmNlUmFuZ2VPY3RldCBpcyAwCitjb252ZXJ0ZXIudGVz
dEVuZm9yY2VSYW5nZU9jdGV0ID0gJzEnCitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdl
T2N0ZXQgaXMgMQorUEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZU9jdGV0ID0gJ2FiYycg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK2NvbnZlcnRlci50ZXN0RW5m
b3JjZVJhbmdlT2N0ZXQgPSBudWxsCitQQVNTIGNvbnZlcnRlci50ZXN0RW5mb3JjZVJhbmdlT2N0
ZXQgaXMgMAorUEFTUyBjb252ZXJ0ZXIudGVzdEVuZm9yY2VSYW5nZU9jdGV0ID0gdW5kZWZpbmVk
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIGNvbnZlcnRlci50
ZXN0RW5mb3JjZVJhbmdlT2N0ZXQgPSB7dmFsdWVPZjpmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJv
cignY3VzdG9tJyk7fX0gdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBjdXN0b20uCisKIFBBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9qcy93ZWJpZGwtdHlwZS1tYXBwaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2pzL3dlYmlkbC10eXBlLW1hcHBpbmcuaHRtbAppbmRleCBkODExZTVjLi5mOTc4ZDM5IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3dlYmlkbC10eXBlLW1hcHBpbmcuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3dlYmlkbC10eXBlLW1hcHBpbmcuaHRtbApAQCAtMzI1
LDUgKzMyNSwxMDEgQEAgdGVzdE5vbk51bWVyaWNUb051bWVyaWNFbmZvcmNlUmFuZ2UodHlwZSk7
CiBjb252ZXJ0VGhyb3dzKHR5cGUsICJ7dmFsdWVPZjpmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJv
cignY3VzdG9tJyk7fX0iKTsKIGRlYnVnKCIiKTsKIAordHlwZSA9ICJ0ZXN0Qnl0ZSI7Cit2ZXJp
ZnlBdHRyaWJ1dGUodHlwZSk7Citjb252ZXJ0KHR5cGUsICIwIik7Citjb252ZXJ0KHR5cGUsICIt
MSIpOworY29udmVydCh0eXBlLCAiMSIpOworY29udmVydCh0eXBlLCAiMHg3RiIpOworY29udmVy
dCh0eXBlLCAiMHg4MCIsICItMHg4MCIpOworY29udmVydCh0eXBlLCAiLTB4N0YiKTsKK2NvbnZl
cnQodHlwZSwgIi0weDgwIik7Citjb252ZXJ0KHR5cGUsICItMHg4MSIsICIweDdGIik7Citjb252
ZXJ0KHR5cGUsICJOdW1iZXIuTUlOX1ZBTFVFIiwgIjAiKTsKK2NvbnZlcnQodHlwZSwgIi1OdW1i
ZXIuTUlOX1ZBTFVFIiwgIjAiKTsKK2NvbnZlcnQodHlwZSwgIk51bWJlci5NQVhfVkFMVUUiLCAi
MCIpOworY29udmVydCh0eXBlLCAiLU51bWJlci5NQVhfVkFMVUUiLCAiMCIpOworY29udmVydCh0
eXBlLCAiMS45OSIsICIxIik7Citjb252ZXJ0KHR5cGUsICItMS45OSIsICItMSIpOworY29udmVy
dCh0eXBlLCAiSW5maW5pdHkiLCAiMCIpOworY29udmVydCh0eXBlLCAiLUluZmluaXR5IiwgIjAi
KTsKK2NvbnZlcnQodHlwZSwgIk5hTiIsICIwIik7Cit0ZXN0Tm9uTnVtZXJpY1RvTnVtZXJpYyh0
eXBlKTsKK2NvbnZlcnRUaHJvd3ModHlwZSwgInt2YWx1ZU9mOmZ1bmN0aW9uKCl7dGhyb3cgbmV3
IEVycm9yKCdjdXN0b20nKTt9fSIpOworZGVidWcoIiIpOworCit0eXBlID0gInRlc3RFbmZvcmNl
UmFuZ2VCeXRlIjsKK3ZlcmlmeUF0dHJpYnV0ZSh0eXBlKTsKK2NvbnZlcnQodHlwZSwgIjAiKTsK
K2NvbnZlcnQodHlwZSwgIi0xIik7Citjb252ZXJ0KHR5cGUsICIxIik7Citjb252ZXJ0KHR5cGUs
ICIweDdGIik7Citjb252ZXJ0VGhyb3dzKHR5cGUsICIweDgwIik7Citjb252ZXJ0KHR5cGUsICIt
MHg3RiIpOworY29udmVydCh0eXBlLCAiLTB4ODAiKTsKK2NvbnZlcnRUaHJvd3ModHlwZSwgIi0w
eDgxIik7Citjb252ZXJ0KHR5cGUsICJOdW1iZXIuTUlOX1ZBTFVFIiwgIjAiKTsKK2NvbnZlcnQo
dHlwZSwgIi1OdW1iZXIuTUlOX1ZBTFVFIiwgIjAiKTsKK2NvbnZlcnRUaHJvd3ModHlwZSwgIk51
bWJlci5NQVhfVkFMVUUiKTsKK2NvbnZlcnRUaHJvd3ModHlwZSwgIi1OdW1iZXIuTUFYX1ZBTFVF
Iik7Citjb252ZXJ0KHR5cGUsICIxLjk5IiwgIjEiKTsKK2NvbnZlcnQodHlwZSwgIi0xLjk5Iiwg
Ii0xIik7Citjb252ZXJ0VGhyb3dzKHR5cGUsICJJbmZpbml0eSIpOworY29udmVydFRocm93cyh0
eXBlLCAiLUluZmluaXR5Iik7Citjb252ZXJ0VGhyb3dzKHR5cGUsICJOYU4iKTsKK3Rlc3ROb25O
dW1lcmljVG9OdW1lcmljRW5mb3JjZVJhbmdlKHR5cGUpOworY29udmVydFRocm93cyh0eXBlLCAi
e3ZhbHVlT2Y6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoJ2N1c3RvbScpO319Iik7CitkZWJ1
ZygiIik7CisKK3R5cGUgPSAidGVzdE9jdGV0IjsKK3ZlcmlmeUF0dHJpYnV0ZSh0eXBlKTsKK2Nv
bnZlcnQodHlwZSwgIjAiKTsKK2NvbnZlcnQodHlwZSwgIi0xIiwgIjB4RkYiKTsKK2NvbnZlcnQo
dHlwZSwgIjEiKTsKK2NvbnZlcnQodHlwZSwgIjB4N0YiKTsKK2NvbnZlcnQodHlwZSwgIjB4ODAi
KTsKK2NvbnZlcnQodHlwZSwgIjB4RkYiKTsKK2NvbnZlcnQodHlwZSwgIjB4MTAwIiwgIjAiKTsK
K2NvbnZlcnQodHlwZSwgIjB4MTAxIiwgIjEiKTsKK2NvbnZlcnQodHlwZSwgIi0weDgwIiwgIjB4
ODAiKTsKK2NvbnZlcnQodHlwZSwgIi0weDgxIiwgIjB4N0YiKTsKK2NvbnZlcnQodHlwZSwgIk51
bWJlci5NQVhfVkFMVUUiLCAiMCIpOworY29udmVydCh0eXBlLCAiTnVtYmVyLk1JTl9WQUxVRSIs
ICIwIik7Citjb252ZXJ0KHR5cGUsICItTnVtYmVyLk1BWF9WQUxVRSIsICIwIik7Citjb252ZXJ0
KHR5cGUsICItTnVtYmVyLk1JTl9WQUxVRSIsICIwIik7Citjb252ZXJ0KHR5cGUsICIxLjk5Iiwg
IjEiKTsKK2NvbnZlcnQodHlwZSwgIi0xLjk5IiwgIjB4RkYiKTsKK2NvbnZlcnQodHlwZSwgIklu
ZmluaXR5IiwgIjAiKTsKK2NvbnZlcnQodHlwZSwgIi1JbmZpbml0eSIsICIwIik7Citjb252ZXJ0
KHR5cGUsICJOYU4iLCAiMCIpOwordGVzdE5vbk51bWVyaWNUb051bWVyaWModHlwZSk7Citjb252
ZXJ0VGhyb3dzKHR5cGUsICJ7dmFsdWVPZjpmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcignY3Vz
dG9tJyk7fX0iKTsKK2RlYnVnKCIiKTsKKwordHlwZSA9ICJ0ZXN0RW5mb3JjZVJhbmdlT2N0ZXQi
OwordmVyaWZ5QXR0cmlidXRlKHR5cGUpOworY29udmVydCh0eXBlLCAiMCIpOworY29udmVydFRo
cm93cyh0eXBlLCAiLTEiKTsKK2NvbnZlcnQodHlwZSwgIjEiKTsKK2NvbnZlcnQodHlwZSwgIjB4
N0YiKTsKK2NvbnZlcnQodHlwZSwgIjB4ODAiKTsKK2NvbnZlcnQodHlwZSwgIjB4RkYiKTsKK2Nv
bnZlcnRUaHJvd3ModHlwZSwgIjB4MTAwIik7Citjb252ZXJ0VGhyb3dzKHR5cGUsICIweDEwMSIp
OworY29udmVydFRocm93cyh0eXBlLCAiLTB4ODAiKTsKK2NvbnZlcnRUaHJvd3ModHlwZSwgIi0w
eDgxIik7Citjb252ZXJ0VGhyb3dzKHR5cGUsICJOdW1iZXIuTUFYX1ZBTFVFIik7Citjb252ZXJ0
KHR5cGUsICJOdW1iZXIuTUlOX1ZBTFVFIiwgIjAiKTsKK2NvbnZlcnRUaHJvd3ModHlwZSwgIi1O
dW1iZXIuTUFYX1ZBTFVFIik7Citjb252ZXJ0KHR5cGUsICItTnVtYmVyLk1JTl9WQUxVRSIsICIw
Iik7Citjb252ZXJ0KHR5cGUsICIxLjk5IiwgIjEiKTsKK2NvbnZlcnRUaHJvd3ModHlwZSwgIi0x
Ljk5Iik7Citjb252ZXJ0VGhyb3dzKHR5cGUsICJJbmZpbml0eSIpOworY29udmVydFRocm93cyh0
eXBlLCAiLUluZmluaXR5Iik7Citjb252ZXJ0VGhyb3dzKHR5cGUsICJOYU4iKTsKK3Rlc3ROb25O
dW1lcmljVG9OdW1lcmljRW5mb3JjZVJhbmdlKHR5cGUpOworY29udmVydFRocm93cyh0eXBlLCAi
e3ZhbHVlT2Y6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoJ2N1c3RvbScpO319Iik7CitkZWJ1
ZygiIik7CisKIDwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDI4MzhmMmUuLmY5OGQ3OTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw0OCBAQAorMjAxMy0wNi0xMyAgQ2hyaXN0b3BoZSBEdW1leiAgPGNoLmR1bWV6
QHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgU3VwcG9ydCBieXRlIGFuZCBvY3RldCB0eXBl
cyBpbiBiaW5kaW5ncyBnZW5lcmF0b3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTc1NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgYnl0ZSBhbmQgb2N0ZXQgSURMIHR5cGVz
IHRvIHRoZSBiaW5kaW5ncworICAgICAgICBnZW5lcmF0b3I6CisgICAgICAgIGh0dHA6Ly9kZXYu
dzMub3JnLzIwMDYvd2ViYXBpL1dlYklETC8jaWRsLWJ5dGUKKyAgICAgICAgaHR0cDovL2Rldi53
My5vcmcvMjAwNi93ZWJhcGkvV2ViSURMLyNpZGwtb2N0ZXQKKworICAgICAgICBObyBuZXcgdGVz
dHMsIGNvdmVyZWQgYnkgZXhpc3RpbmcgbGF5b3V0IHRlc3RzIGFuZCBieSBuZXcKKyAgICAgICAg
YmluZGluZ3MgdGVzdHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb3ZlcmVkIGJ5IGJpbmRp
bmdzIHRlc3RzIGFuZDoKKyAgICAgICAgZmFzdC9qcy93ZWJpZGwtdHlwZS1tYXBwaW5nLmh0bWwK
KworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOiBFeHBvcnQgbmV3IHN5bWJvbHMgZm9yIG1hYyBw
b3J0LgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHA6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6IEFkZCB0b0ludDgoKSAvIHRvVUludDgoKQorICAg
ICAgICBtZXRob2RzIHRvIGNvbnZlcnQgZnJvbSBKU1ZhbHVlIHRvIGludDhfdCAvIHVpbnQ4X3Qg
YXMKKyAgICAgICAgc3BlY2lmaWVkIGJ5IFdlYiBJREwuCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RhdGFWaWV3Q3VzdG9tLmNwcDogUmVtb3ZlIGN1c3RvbSBjb2RlIGZvcgorICAgICAgICBn
ZXRJbnQ4LCBnZXRVSW50OCwgc2V0SW50OCwgc2V0VUludDggbm93IHRoYXQgYnl0ZSBhbmQgb2N0
ZXQKKyAgICAgICAgdHlwZXMgYXJlIHN1cHBvcnRlZCBieSB0aGUgYmluZGluZ3MgZ2VuZXJhdG9y
LgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yQ1BQLnBtOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG06CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L09iakMvRE9NVGVzdE9iai5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpD
L0RPTVRlc3RPYmoubW06CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmou
aWRsOiBBZGQgdGVzdHMgZm9yIGJ5dGUgYW5kIG9jdGV0IHR5cGVzLgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0RhdGFWaWV3LmlkbDogUmVtb3ZlIFtDdXN0b21dIGV4dGVuZGVkIGF0dHJpYnV0ZSBm
b3IKKyAgICAgICAgZ2V0SW50OCwgZ2V0VUludDgsIHNldEludDgsIHNldFVJbnQ4IGFuZCB1c2Ug
bmV3bHkgc3VwcG9ydGVkIGJ5dGUgLyBvY3RldAorICAgICAgICB0eXBlcy4KKwogMjAxMy0wNi0x
MiAgQ2hyaXN0b3BoZSBEdW1leiAgPGNoLmR1bWV6QHNpc2Euc2Ftc3VuZy5jb20+CiAKICAgICAg
ICAgU3VwcG9ydCBsYXRlc3QgV2ViIElETCBpbmRleGVkIHByb3BlcnR5IGdldHRlcnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4KaW5kZXggY2ViYzJkYy4uMjMyZGMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
QEAgLTEwMTIsNiArMTAxMiw3IEBAIF9fWk43V2ViQ29yZTZXaWRnZXQ1cGFpbnRFUE5TXzE1R3Jh
cGhpY3NDb250ZXh0RVJLTlNfN0ludFJlY3RFCiBfX1pON1dlYkNvcmU2V2lkZ2V0OHNldEZvY3Vz
RWIKIF9fWk43V2ViQ29yZTZXaWRnZXQ5c2V0UGFyZW50RVBOU18xMFNjcm9sbFZpZXdFCiBfX1pO
N1dlYkNvcmU2V2lkZ2V0RDJFdgorX19aTjdXZWJDb3JlNnRvSW50OEVQTjNKU0M5RXhlY1N0YXRl
RU5TMF83SlNWYWx1ZUVOU18zMEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbkUKIF9fWk43
V2ViQ29yZTZ0b05vZGVFTjNKU0M3SlNWYWx1ZUUKIF9fWk43V2ViQ29yZTdFbGVtZW50MTJzZXRB
dHRyaWJ1dGVFUktOM1dURjEyQXRvbWljU3RyaW5nRVM0X1JpCiBfX1pON1dlYkNvcmU3RWxlbWVu
dDEyc2V0QXR0cmlidXRlRVJLTlNfMTNRdWFsaWZpZWROYW1lRVJLTjNXVEYxMkF0b21pY1N0cmlu
Z0UKQEAgLTEwNDcsNiArMTA0OCw3IEBAIF9fWk43V2ViQ29yZTdtYWtlUkdCRWlpaQogX19aTjdX
ZWJDb3JlN3JlcGxhY2VFUk4zV1RGNlN0cmluZ0VSS05TXzE3UmVndWxhckV4cHJlc3Npb25FUktT
MV8KIF9fWk43V2ViQ29yZTd0b0ludDY0RVBOM0pTQzlFeGVjU3RhdGVFTlMwXzdKU1ZhbHVlRU5T
XzMwSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uRQogX19aTjdXZWJDb3JlN3RvUmFuZ2VF
TjNKU0M3SlNWYWx1ZUUKK19fWk43V2ViQ29yZTd0b1VJbnQ4RVBOM0pTQzlFeGVjU3RhdGVFTlMw
XzdKU1ZhbHVlRU5TXzMwSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uRQogX19aTjdXZWJD
b3JlOEJsb2JEYXRhMTRzZXRDb250ZW50VHlwZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29y
ZThDU1NWYWx1ZTdkZXN0cm95RXYKIF9fWk43V2ViQ29yZThEb2N1bWVudDExY3JlYXRlUmFuZ2VF
dgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKaW5kZXggNjcy
NjdkMC4uNzM0MjNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01CaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgogI2lu
Y2x1ZGUgPHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNG
dW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiAKQEAgLTI4Niw2ICsyODcsOSBAQCBTdHJ1Y3R1cmUqIGNhY2hlRE9NU3RydWN0dXJl
KEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dQogICAg
IHJldHVybiBzdHJ1Y3R1cmVzLnNldChjbGFzc0luZm8sIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
KGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpKS5pdGVyYXRvci0+
dmFsdWUuZ2V0KCk7CiB9CiAKK3N0YXRpYyBjb25zdCBpbnQ4X3Qga01heEludDggPSAxMjc7Citz
dGF0aWMgY29uc3QgaW50OF90IGtNaW5JbnQ4ID0gLTEyODsKK3N0YXRpYyBjb25zdCB1aW50OF90
IGtNYXhVSW50OCA9IDI1NTsKIHN0YXRpYyBjb25zdCBpbnQzMl90IGtNYXhJbnQzMiA9IDB4N2Zm
ZmZmZmY7CiBzdGF0aWMgY29uc3QgaW50MzJfdCBrTWluSW50MzIgPSAta01heEludDMyIC0gMTsK
IHN0YXRpYyBjb25zdCB1aW50MzJfdCBrTWF4VUludDMyID0gMHhmZmZmZmZmZlU7CkBAIC0zMDUs
NiArMzA5LDY3IEBAIHN0YXRpYyBkb3VibGUgZW5mb3JjZVJhbmdlKEV4ZWNTdGF0ZSogZXhlYywg
ZG91YmxlIHgsIGRvdWJsZSBtaW5pbXVtLCBkb3VibGUgbWF4CiAgICAgcmV0dXJuIHg7CiB9CiAK
Ky8vIGh0dHA6Ly93d3cudzMub3JnL1RSL1dlYklETC8jZXMtYnl0ZQoraW50OF90IHRvSW50OChF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJh
dGlvbiBjb25maWd1cmF0aW9uKQoreworICAgIC8vIEZhc3QgcGF0aCBpZiB0aGUgdmFsdWUgaXMg
YWxyZWFkeSBhIDMyLWJpdCBzaWduZWQgaW50ZWdlciBpbiB0aGUgcmlnaHQgcmFuZ2UuCisgICAg
aWYgKHZhbHVlLmlzSW50MzIoKSkgeworICAgICAgICBpbnQzMl90IGQgPSB2YWx1ZS5hc0ludDMy
KCk7CisgICAgICAgIGlmIChkID49IGtNaW5JbnQ4ICYmIGQgPD0ga01heEludDgpCisgICAgICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50OF90PihkKTsKKyAgICAgICAgaWYgKGNvbmZpZ3Vy
YXRpb24gPT0gRW5mb3JjZVJhbmdlKSB7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
KTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGQgJT0gMjU2Owor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50OF90PihkID4ga01heEludDggPyBkIC0gMjU2
IDogZCk7CisgICAgfQorCisgICAgZG91YmxlIHggPSB2YWx1ZS50b051bWJlcihleGVjKTsKKyAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYg
KGNvbmZpZ3VyYXRpb24gPT0gRW5mb3JjZVJhbmdlKQorICAgICAgICByZXR1cm4gZW5mb3JjZVJh
bmdlKGV4ZWMsIHgsIGtNaW5JbnQ4LCBrTWF4SW50OCk7CisKKyAgICBpZiAoc3RkOjppc25hbih4
KSB8fCBzdGQ6OmlzaW5mKHgpIHx8ICF4KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHggPSB4
IDwgMCA/IC1mbG9vcihhYnMoeCkpIDogZmxvb3IoYWJzKHgpKTsKKyAgICB4ID0gZm1vZCh4LCAy
NTYpOyAvLyAyXjguCisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50OF90Pih4ID4ga01heElu
dDggPyB4IC0gMjU2IDogeCk7Cit9CisKKy8vIGh0dHA6Ly93d3cudzMub3JnL1RSL1dlYklETC8j
ZXMtb2N0ZXQKK3VpbnQ4X3QgdG9VSW50OChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUs
IEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQoreworICAgIC8v
IEZhc3QgcGF0aCBpZiB0aGUgdmFsdWUgaXMgYWxyZWFkeSBhIDMyLWJpdCB1bnNpZ25lZCBpbnRl
Z2VyIGluIHRoZSByaWdodCByYW5nZS4KKyAgICBpZiAodmFsdWUuaXNVSW50MzIoKSkgeworICAg
ICAgICB1aW50MzJfdCBkID0gdmFsdWUuYXNVSW50MzIoKTsKKyAgICAgICAgaWYgKGQgPD0ga01h
eFVJbnQ4KQorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGQpOworICAg
ICAgICBpZiAoY29uZmlndXJhdGlvbiA9PSBFbmZvcmNlUmFuZ2UpIHsKKyAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGQgJSAyNTYpOyAvLyAyXjguCisgICAg
fQorCisgICAgZG91YmxlIHggPSB2YWx1ZS50b051bWJlcihleGVjKTsKKyAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKGNvbmZpZ3VyYXRp
b24gPT0gRW5mb3JjZVJhbmdlKQorICAgICAgICByZXR1cm4gZW5mb3JjZVJhbmdlKGV4ZWMsIHgs
IDAsIGtNYXhVSW50OCk7CisKKyAgICBpZiAoc3RkOjppc25hbih4KSB8fCBzdGQ6OmlzaW5mKHgp
IHx8ICF4KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHggPSB4IDwgMCA/IC1mbG9vcihhYnMo
eCkpIDogZmxvb3IoYWJzKHgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDhfdD4oZm1v
ZCh4LCAyNTYpKTsgLy8gMl44LgorfQorCiAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9XZWJJREwv
I2VzLWxvbmcKIGludDMyX3QgdG9JbnQzMkVuZm9yY2VSYW5nZShFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgdmFsdWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5o
CmluZGV4IDQ0ODQ0MDQuLjkyZWNjYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQmluZGluZy5oCkBAIC0yNjcsNiArMjY3LDkgQEAgY2xhc3MgRE9NU3RyaW5nTGlzdDsKICAg
ICBpbnQzMl90IHRvSW50MzJFbmZvcmNlUmFuZ2UoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFs
dWUpOwogICAgIHVpbnQzMl90IHRvVUludDMyRW5mb3JjZVJhbmdlKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpKU1ZhbHVlKTsKIAorICAgIGludDhfdCB0b0ludDgoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTVmFsdWUsIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbik7CisgICAgdWludDhfdCB0
b1VJbnQ4KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBJbnRlZ2VyQ29udmVyc2lvbkNv
bmZpZ3VyYXRpb24pOworCiAgICAgLyoKICAgICAgICAgQ29udmVydCBhIHZhbHVlIHRvIGFuIGlu
dGVnZXIgYXMgcGVyIDxodHRwOi8vd3d3LnczLm9yZy9UUi9XZWJJREwvPi4KICAgICAgICAgVGhl
IGNvbnZlcnNpb24gZmFpbHMgaWYgdGhlIHZhbHVlIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gYSBu
dW1iZXIgb3IsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFW
aWV3Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YVZpZXdDdXN0
b20uY3BwCmluZGV4IDYwNGNiMTAuLjIzNjQxZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRGF0YVZpZXdDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRGF0YVZpZXdDdXN0b20uY3BwCkBAIC0zNiw4ICszNiw2IEBAIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gRGF0YVZpZXdBY2Nlc3NU
eXBlIHsKLSAgICBBY2Nlc3NEYXRhVmlld01lbWJlckFzSW50OCwKLSAgICBBY2Nlc3NEYXRhVmll
d01lbWJlckFzVWludDgsCiAgICAgQWNjZXNzRGF0YVZpZXdNZW1iZXJBc0Zsb2F0MzIsCiAgICAg
QWNjZXNzRGF0YVZpZXdNZW1iZXJBc0Zsb2F0NjQKIH07CkBAIC04MCwxMiArNzgsNiBAQCBzdGF0
aWMgSlNWYWx1ZSBnZXREYXRhVmlld01lbWJlcihFeGVjU3RhdGUqIGV4ZWMsIERhdGFWaWV3KiBp
bXAsIERhdGFWaWV3QWNjZXNzVAogCiAgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdDsKICAgICBzd2l0
Y2ggKHR5cGUpIHsKLSAgICBjYXNlIEFjY2Vzc0RhdGFWaWV3TWVtYmVyQXNJbnQ4OgotICAgICAg
ICByZXN1bHQgPSBqc051bWJlcihpbXAtPmdldEludDgoYnl0ZU9mZnNldCwgZWMpKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBBY2Nlc3NEYXRhVmlld01lbWJlckFzVWludDg6Ci0gICAgICAg
IHJlc3VsdCA9IGpzTnVtYmVyKGltcC0+Z2V0VWludDgoYnl0ZU9mZnNldCwgZWMpKTsKLSAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NEYXRhVmlld01lbWJlckFzRmxvYXQzMjoKICAgICBj
YXNlIEFjY2Vzc0RhdGFWaWV3TWVtYmVyQXNGbG9hdDY0OiB7CiAgICAgICAgIGRvdWJsZSB2YWx1
ZSA9ICh0eXBlID09IEFjY2Vzc0RhdGFWaWV3TWVtYmVyQXNGbG9hdDMyKSA/IGltcC0+Z2V0Rmxv
YXQzMihieXRlT2Zmc2V0LCBsaXR0bGVFbmRpYW4sIGVjKSA6IGltcC0+Z2V0RmxvYXQ2NChieXRl
T2Zmc2V0LCBsaXR0bGVFbmRpYW4sIGVjKTsKQEAgLTk5LDE2ICs5MSw2IEBAIHN0YXRpYyBKU1Zh
bHVlIGdldERhdGFWaWV3TWVtYmVyKEV4ZWNTdGF0ZSogZXhlYywgRGF0YVZpZXcqIGltcCwgRGF0
YVZpZXdBY2Nlc3NUCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotSlNWYWx1ZSBKU0RhdGFWaWV3
OjpnZXRJbnQ4KEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICByZXR1cm4gZ2V0RGF0YVZpZXdNZW1i
ZXIoZXhlYywgc3RhdGljX2Nhc3Q8RGF0YVZpZXcqPihpbXBsKCkpLCBBY2Nlc3NEYXRhVmlld01l
bWJlckFzSW50OCk7Ci19Ci0KLUpTVmFsdWUgSlNEYXRhVmlldzo6Z2V0VWludDgoRXhlY1N0YXRl
KiBleGVjKQotewotICAgIHJldHVybiBnZXREYXRhVmlld01lbWJlcihleGVjLCBzdGF0aWNfY2Fz
dDxEYXRhVmlldyo+KGltcGwoKSksIEFjY2Vzc0RhdGFWaWV3TWVtYmVyQXNVaW50OCk7Ci19Ci0K
IEpTVmFsdWUgSlNEYXRhVmlldzo6Z2V0RmxvYXQzMihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAg
cmV0dXJuIGdldERhdGFWaWV3TWVtYmVyKGV4ZWMsIHN0YXRpY19jYXN0PERhdGFWaWV3Kj4oaW1w
bCgpKSwgQWNjZXNzRGF0YVZpZXdNZW1iZXJBc0Zsb2F0MzIpOwpAQCAtMTE5LDQxICsxMDEsNCBA
QCBKU1ZhbHVlIEpTRGF0YVZpZXc6OmdldEZsb2F0NjQoRXhlY1N0YXRlKiBleGVjKQogICAgIHJl
dHVybiBnZXREYXRhVmlld01lbWJlcihleGVjLCBzdGF0aWNfY2FzdDxEYXRhVmlldyo+KGltcGwo
KSksIEFjY2Vzc0RhdGFWaWV3TWVtYmVyQXNGbG9hdDY0KTsKIH0KIAotc3RhdGljIEpTVmFsdWUg
c2V0RGF0YVZpZXdNZW1iZXIoRXhlY1N0YXRlKiBleGVjLCBEYXRhVmlldyogaW1wLCBEYXRhVmll
d0FjY2Vzc1R5cGUgdHlwZSkKLXsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikK
LSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoZXhlYykpOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHVuc2lnbmVkIGJ5
dGVPZmZzZXQgPSBleGVjLT5hcmd1bWVudCgwKS50b1VJbnQzMihleGVjKTsKLSAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIGlu
dCB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvSW50MzIoZXhlYyk7Ci0gICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICAgICAg
Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBBY2Nlc3NEYXRhVmlld01lbWJlckFzSW50
ODoKLSAgICAgICAgaW1wLT5zZXRJbnQ4KGJ5dGVPZmZzZXQsIHN0YXRpY19jYXN0PGludDhfdD4o
dmFsdWUpLCBlYyk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQWNjZXNzRGF0YVZpZXdNZW1i
ZXJBc1VpbnQ4OgotICAgICAgICBpbXAtPnNldFVpbnQ4KGJ5dGVPZmZzZXQsIHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KHZhbHVlKSwgZWMpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHNl
dERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Ci0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0K
LUpTVmFsdWUgSlNEYXRhVmlldzo6c2V0SW50OChFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgcmV0
dXJuIHNldERhdGFWaWV3TWVtYmVyKGV4ZWMsIHN0YXRpY19jYXN0PERhdGFWaWV3Kj4oaW1wbCgp
KSwgQWNjZXNzRGF0YVZpZXdNZW1iZXJBc0ludDgpOwotfQotCi1KU1ZhbHVlIEpTRGF0YVZpZXc6
OnNldFVpbnQ4KEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICByZXR1cm4gc2V0RGF0YVZpZXdNZW1i
ZXIoZXhlYywgc3RhdGljX2Nhc3Q8RGF0YVZpZXcqPihpbXBsKCkpLCBBY2Nlc3NEYXRhVmlld01l
bWJlckFzVWludDgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JDUFAucG0gYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JDUFAucG0KaW5kZXggMjNm
ODNkNC4uZGYxZmMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yQ1BQLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckNQUC5wbQpAQCAtMjM2LDYgKzIzNiw4IEBAIHN1YiBHZXRDUFBUeXBl
CiAgICAgbXkgJHVzZUNvbnN0UmVmZXJlbmNlID0gc2hpZnQ7CiAgICAgbXkgJG5hbWUgPSBHZXRD
bGFzc05hbWUoJHR5cGUpOwogCisgICAgcmV0dXJuICJjaGFyIiBpZiAkdHlwZSBlcSAiYnl0ZSI7
CisgICAgcmV0dXJuICJ1bnNpZ25lZCBjaGFyIiBpZiAkdHlwZSBlcSAib2N0ZXQiOwogICAgIHJl
dHVybiAiaW50IiBpZiAkdHlwZSBlcSAibG9uZyI7CiAgICAgcmV0dXJuICJ1bnNpZ25lZCIgaWYg
JG5hbWUgZXEgInVuc2lnbmVkIGxvbmciOwogICAgIHJldHVybiAidW5zaWduZWQgc2hvcnQiIGlm
ICR0eXBlIGVxICJDb21wYXJlSG93IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtCmluZGV4IGNmMGI3NDQuLjU1YjA1
ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckdPYmplY3QucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yR09iamVjdC5wbQpAQCAtMzI4LDYgKzMyOCw4IEBAIHN1YiBHZXRHVmFsdWVUeXBl
TmFtZSB7CiAgICAgICAgICAgICAgICAgICJjaGFyIiwgImNoYXIiLAogICAgICAgICAgICAgICAg
ICAibG9uZyIsICJsb25nIiwKICAgICAgICAgICAgICAgICAgImxvbmcgbG9uZyIsICJpbnQ2NCIs
CisgICAgICAgICAgICAgICAgICJieXRlIiwgImludDgiLAorICAgICAgICAgICAgICAgICAib2N0
ZXQiLCAidWludDgiLAogICAgICAgICAgICAgICAgICAic2hvcnQiLCAiaW50IiwKICAgICAgICAg
ICAgICAgICAgInVjaGFyIiwgInVjaGFyIiwKICAgICAgICAgICAgICAgICAgInVuc2lnbmVkIiwg
InVpbnQiLApAQCAtMzU0LDYgKzM1Niw4IEBAIHN1YiBHZXRHbGliVHlwZU5hbWUgewogICAgICAg
ICAgICAgICAgICAiY2hhciIsICJnY2hhciIsCiAgICAgICAgICAgICAgICAgICJsb25nIiwgImds
b25nIiwKICAgICAgICAgICAgICAgICAgImxvbmcgbG9uZyIsICJnaW50NjQiLAorICAgICAgICAg
ICAgICAgICAiYnl0ZSIsICJnaW50OCIsCisgICAgICAgICAgICAgICAgICJvY3RldCIsICJndWlu
dDgiLAogICAgICAgICAgICAgICAgICAic2hvcnQiLCAiZ3Nob3J0IiwKICAgICAgICAgICAgICAg
ICAgInVjaGFyIiwgImd1Y2hhciIsCiAgICAgICAgICAgICAgICAgICJ1bnNpZ25lZCIsICJndWlu
dCIsCkBAIC0zOTYsOCArNDAwLDkgQEAgc3ViIEdldFdyaXRlYWJsZVByb3BlcnRpZXMgewogICAg
ICAgICBteSAkZ3R5cGUgPSBHZXRHVmFsdWVUeXBlTmFtZSgkcHJvcGVydHktPnNpZ25hdHVyZS0+
dHlwZSk7CiAgICAgICAgIG15ICRoYXNHdHlwZVNpZ25hdHVyZSA9ICgkZ3R5cGUgZXEgImJvb2xl
YW4iIHx8ICRndHlwZSBlcSAiZmxvYXQiIHx8ICRndHlwZSBlcSAiZG91YmxlIiB8fAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJGd0eXBlIGVxICJ1aW50NjQiIHx8ICRndHlwZSBl
cSAidWxvbmciIHx8ICRndHlwZSBlcSAibG9uZyIgfHwgCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAkZ3R5cGUgZXEgInVpbnQiIHx8ICRndHlwZSBlcSAidXNob3J0IiB8fCAkZ3R5
cGUgZXEgInVjaGFyIiB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGd0eXBl
IGVxICJjaGFyIiB8fCAkZ3R5cGUgZXEgInN0cmluZyIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJGd0eXBlIGVxICJ1aW50IiB8fCAkZ3R5cGUgZXEgInVzaG9ydCIgfHwgJGd0
eXBlIGVxICJpbnQ4IiB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGd0eXBl
IGVxICJ1aW50OCIgfHwgJGd0eXBlIGVxICJ1Y2hhciIgfHwgJGd0eXBlIGVxICJjaGFyIiB8fAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGd0eXBlIGVxICJzdHJpbmciKTsKICAg
ICAgICAgIyBGSVhNRTogV2UgYXJlIG5vdCBnZW5lcmF0aW5nIHNldHRlcnMgZm9yICdSZXBsYWNl
YWJsZScKICAgICAgICAgIyBhdHRyaWJ1dGVzIG5vdywgYnV0IHdlIHNob3VsZCBzb21laG93Lgog
ICAgICAgICBteSAkcmVwbGFjZWFibGUgPSAkcHJvcGVydHktPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IlJlcGxhY2VhYmxlIn07CkBAIC01NjgsNiArNTczLDcgQEAgc3ViIEdlbmVy
YXRlUHJvcGVydHkgewogICAgIHB1c2goQHR4dEdldFByb3BzLCAiICAgICAgICBicmVhaztcbiAg
ICB9XG4iKTsKIAogICAgIG15ICVwYXJhbV9zcGVjX29wdGlvbnMgPSAoImludCIsICJHX01JTklO
VCwgLyogbWluICovXG5HX01BWElOVCwgLyogbWF4ICovXG4wLCAvKiBkZWZhdWx0ICovIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnQ4IiwgIkdfTUlOSU5UOCwgLyogbWluICov
XG5HX01BWElOVDgsIC8qIG1heCAqL1xuMCwgLyogZGVmYXVsdCAqLyIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiYm9vbGVhbiIsICJGQUxTRSwgLyogZGVmYXVsdCAqLyIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiZmxvYXQiLCAiLUdfTUFYRkxPQVQsIC8qIG1pbiAq
L1xuR19NQVhGTE9BVCwgLyogbWF4ICovXG4wLjAsIC8qIGRlZmF1bHQgKi8iLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImRvdWJsZSIsICItR19NQVhET1VCTEUsIC8qIG1pbiAqL1xu
R19NQVhET1VCTEUsIC8qIG1heCAqL1xuMC4wLCAvKiBkZWZhdWx0ICovIiwKQEAgLTU3Niw2ICs1
ODIsNyBAQCBzdWIgR2VuZXJhdGVQcm9wZXJ0eSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiaW50NjQiLCAiR19NSU5JTlQ2NCwgLyogbWluICovXG5HX01BWElOVDY0LCAvKiBtYXgg
Ki9cbjAsIC8qIGRlZmF1bHQgKi8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVs
b25nIiwgIjAsIC8qIG1pbiAqL1xuR19NQVhVTE9ORywgLyogbWF4ICovXG4wLCAvKiBkZWZhdWx0
ICovIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1aW50IiwgIjAsIC8qIG1pbiAq
L1xuR19NQVhVSU5ULCAvKiBtYXggKi9cbjAsIC8qIGRlZmF1bHQgKi8iLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInVpbnQ4IiwgIjAsIC8qIG1pbiAqL1xuR19NQVhVSU5UOCwgLyog
bWF4ICovXG4wLCAvKiBkZWZhdWx0ICovIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJ1c2hvcnQiLCAiMCwgLyogbWluICovXG5HX01BWFVJTlQxNiwgLyogbWF4ICovXG4wLCAvKiBk
ZWZhdWx0ICovIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1Y2hhciIsICJHX01J
TklOVDgsIC8qIG1pbiAqL1xuR19NQVhJTlQ4LCAvKiBtYXggKi9cbjAsIC8qIGRlZmF1bHQgKi8i
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoYXIiLCAiMCwgLyogbWluICovXG5H
X01BWFVJTlQ4LCAvKiBtYXggKi9cbjAsIC8qIGRlZmF1bHQgKi8iLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAxZjMzYzIx
Li4zMTFhMGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQpAQCAtMzM3NSw2ICszMzc1LDggQEAgbXkgJW5hdGl2ZVR5cGUgPSAo
CiAgICAgInVuc2lnbmVkIHNob3J0IiA9PiAidW5zaWduZWQgc2hvcnQiLAogICAgICJsb25nIGxv
bmciID0+ICJsb25nIGxvbmciLAogICAgICJ1bnNpZ25lZCBsb25nIGxvbmciID0+ICJ1bnNpZ25l
ZCBsb25nIGxvbmciLAorICAgICJieXRlIiA9PiAiaW50OF90IiwKKyAgICAib2N0ZXQiID0+ICJ1
aW50OF90IiwKICAgICAiTWVkaWFRdWVyeUxpc3RMaXN0ZW5lciIgPT4gIlJlZlB0cjxNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyPiIsCiAgICAgIkRPTVRpbWVTdGFtcCIgPT4gIkRPTVRpbWVTdGFtcCIs
ICAgIAogKTsKQEAgLTM0NzksNiArMzQ4MSw4IEBAIHN1YiBKU1ZhbHVlVG9OYXRpdmUKICAgICBy
ZXR1cm4gIiR2YWx1ZS50b0Zsb2F0KGV4ZWMpIiBpZiAkdHlwZSBlcSAiZmxvYXQiOwogCiAgICAg
bXkgJGludENvbnZlcnNpb24gPSAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRW5m
b3JjZVJhbmdlIn0gPyAiRW5mb3JjZVJhbmdlIiA6ICJOb3JtYWxDb252ZXJzaW9uIjsKKyAgICBy
ZXR1cm4gInRvSW50OChleGVjLCAkdmFsdWUsICRpbnRDb252ZXJzaW9uKSIgaWYgJHR5cGUgZXEg
ImJ5dGUiOworICAgIHJldHVybiAidG9VSW50OChleGVjLCAkdmFsdWUsICRpbnRDb252ZXJzaW9u
KSIgaWYgJHR5cGUgZXEgIm9jdGV0IjsKICAgICByZXR1cm4gInRvSW50MzIoZXhlYywgJHZhbHVl
LCAkaW50Q29udmVyc2lvbikiIGlmICR0eXBlIGVxICJsb25nIiBvciAkdHlwZSBlcSAic2hvcnQi
OwogICAgIHJldHVybiAidG9VSW50MzIoZXhlYywgJHZhbHVlLCAkaW50Q29udmVyc2lvbikiIGlm
ICR0eXBlIGVxICJ1bnNpZ25lZCBsb25nIiBvciAkdHlwZSBlcSAidW5zaWduZWQgc2hvcnQiOwog
ICAgIHJldHVybiAidG9JbnQ2NChleGVjLCAkdmFsdWUsICRpbnRDb252ZXJzaW9uKSIgaWYgJHR5
cGUgZXEgImxvbmcgbG9uZyI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQppbmRleCA3OGI3YzczLi4yOWIxMzUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMu
cG0KQEAgLTMwMiw2ICszMDIsOCBAQCBzdWIgR2V0Q2xhc3NOYW1lCiAgICAgcmV0dXJuICJOU1N0
cmluZyIgaWYgJGNvZGVHZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgkbmFtZSkgb3IgJG5hbWUgZXEg
IlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSI7CiAgICAgcmV0dXJuICJOUyRuYW1lIiBpZiBJc05hdGl2
ZU9iakNUeXBlKCRuYW1lKTsKICAgICByZXR1cm4gIkJPT0wiIGlmICRuYW1lIGVxICJib29sZWFu
IjsKKyAgICByZXR1cm4gInVuc2lnbmVkIGNoYXIiIGlmICRuYW1lIGVxICJvY3RldCI7CisgICAg
cmV0dXJuICJjaGFyIiBpZiAkbmFtZSBlcSAiYnl0ZSI7CiAgICAgcmV0dXJuICJ1bnNpZ25lZCIg
aWYgJG5hbWUgZXEgInVuc2lnbmVkIGxvbmciOwogICAgIHJldHVybiAiaW50IiBpZiAkbmFtZSBl
cSAibG9uZyI7CiAgICAgcmV0dXJuICJOU1RpbWVJbnRlcnZhbCIgaWYgJG5hbWUgZXEgIkRhdGUi
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9X
ZWJET01UZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9D
UFAvV2ViRE9NVGVzdE9iai5jcHAKaW5kZXggOWQ2MzA4My4uZmU1NTQ0OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRl
c3RPYmouY3BwCkBAIC0xMTYsNiArMTE2LDM4IEBAIFdlYkRPTVRlc3RPYmogV2ViRE9NVGVzdE9i
ajo6cmVhZE9ubHlUZXN0T2JqQXR0cigpIGNvbnN0CiAgICAgcmV0dXJuIHRvV2ViS2l0KFdURjo6
Z2V0UHRyKGltcGwoKS0+cmVhZE9ubHlUZXN0T2JqQXR0cigpKSk7CiB9CiAKK2NoYXIgV2ViRE9N
VGVzdE9iajo6Ynl0ZUF0dHIoKSBjb25zdAoreworICAgIGlmICghaW1wbCgpKQorICAgICAgICBy
ZXR1cm4gY2hhcigpOworCisgICAgcmV0dXJuIGltcGwoKS0+Ynl0ZUF0dHIoKTsKK30KKwordm9p
ZCBXZWJET01UZXN0T2JqOjpzZXRCeXRlQXR0cihjaGFyIG5ld0J5dGVBdHRyKQoreworICAgIGlm
ICghaW1wbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpbXBsKCktPnNldEJ5dGVBdHRyKG5l
d0J5dGVBdHRyKTsKK30KKwordW5zaWduZWQgY2hhciBXZWJET01UZXN0T2JqOjpvY3RldEF0dHIo
KSBjb25zdAoreworICAgIGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm4gdW5zaWduZWQgY2hh
cigpOworCisgICAgcmV0dXJuIGltcGwoKS0+b2N0ZXRBdHRyKCk7Cit9CisKK3ZvaWQgV2ViRE9N
VGVzdE9iajo6c2V0T2N0ZXRBdHRyKHVuc2lnbmVkIGNoYXIgbmV3T2N0ZXRBdHRyKQoreworICAg
IGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpbXBsKCktPnNldE9jdGV0QXR0
cihuZXdPY3RldEF0dHIpOworfQorCiBzaG9ydCBXZWJET01UZXN0T2JqOjpzaG9ydEF0dHIoKSBj
b25zdAogewogICAgIGlmICghaW1wbCgpKQpAQCAtNzQ5LDYgKzc4MSwzOCBAQCB2b2lkIFdlYkRP
TVRlc3RPYmo6OnZvaWRNZXRob2RXaXRoQXJncyhpbnQgbG9uZ0FyZywgY29uc3QgV2ViRE9NU3Ry
aW5nJiBzdHJBcmcsCiAgICAgaW1wbCgpLT52b2lkTWV0aG9kV2l0aEFyZ3MobG9uZ0FyZywgc3Ry
QXJnLCB0b1dlYkNvcmUob2JqQXJnKSk7CiB9CiAKK2NoYXIgV2ViRE9NVGVzdE9iajo6Ynl0ZU1l
dGhvZCgpCit7CisgICAgaWYgKCFpbXBsKCkpCisgICAgICAgIHJldHVybiBjaGFyKCk7CisKKyAg
ICByZXR1cm4gaW1wbCgpLT5ieXRlTWV0aG9kKCk7Cit9CisKK2NoYXIgV2ViRE9NVGVzdE9iajo6
Ynl0ZU1ldGhvZFdpdGhBcmdzKGNoYXIgYnl0ZUFyZywgY29uc3QgV2ViRE9NU3RyaW5nJiBzdHJB
cmcsIGNvbnN0IFdlYkRPTVRlc3RPYmomIG9iakFyZykKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAg
ICAgICAgcmV0dXJuIGNoYXIoKTsKKworICAgIHJldHVybiBpbXBsKCktPmJ5dGVNZXRob2RXaXRo
QXJncyhieXRlQXJnLCBzdHJBcmcsIHRvV2ViQ29yZShvYmpBcmcpKTsKK30KKwordW5zaWduZWQg
Y2hhciBXZWJET01UZXN0T2JqOjpvY3RldE1ldGhvZCgpCit7CisgICAgaWYgKCFpbXBsKCkpCisg
ICAgICAgIHJldHVybiB1bnNpZ25lZCBjaGFyKCk7CisKKyAgICByZXR1cm4gaW1wbCgpLT5vY3Rl
dE1ldGhvZCgpOworfQorCit1bnNpZ25lZCBjaGFyIFdlYkRPTVRlc3RPYmo6Om9jdGV0TWV0aG9k
V2l0aEFyZ3ModW5zaWduZWQgY2hhciBvY3RldEFyZywgY29uc3QgV2ViRE9NU3RyaW5nJiBzdHJB
cmcsIGNvbnN0IFdlYkRPTVRlc3RPYmomIG9iakFyZykKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAg
ICAgICAgcmV0dXJuIHVuc2lnbmVkIGNoYXIoKTsKKworICAgIHJldHVybiBpbXBsKCktPm9jdGV0
TWV0aG9kV2l0aEFyZ3Mob2N0ZXRBcmcsIHN0ckFyZywgdG9XZWJDb3JlKG9iakFyZykpOworfQor
CiBpbnQgV2ViRE9NVGVzdE9iajo6bG9uZ01ldGhvZCgpCiB7CiAgICAgaWYgKCFpbXBsKCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRP
TVRlc3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2Vi
RE9NVGVzdE9iai5oCmluZGV4IGJiZDFkZmIuLjU1ZWI2OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oCkBA
IC03MSw2ICs3MSwxMCBAQCBwdWJsaWM6CiAgICAgaW50IHJlYWRPbmx5TG9uZ0F0dHIoKSBjb25z
dDsKICAgICBXZWJET01TdHJpbmcgcmVhZE9ubHlTdHJpbmdBdHRyKCkgY29uc3Q7CiAgICAgV2Vi
RE9NVGVzdE9iaiByZWFkT25seVRlc3RPYmpBdHRyKCkgY29uc3Q7CisgICAgY2hhciBieXRlQXR0
cigpIGNvbnN0OworICAgIHZvaWQgc2V0Qnl0ZUF0dHIoY2hhcik7CisgICAgdW5zaWduZWQgY2hh
ciBvY3RldEF0dHIoKSBjb25zdDsKKyAgICB2b2lkIHNldE9jdGV0QXR0cih1bnNpZ25lZCBjaGFy
KTsKICAgICBzaG9ydCBzaG9ydEF0dHIoKSBjb25zdDsKICAgICB2b2lkIHNldFNob3J0QXR0cihz
aG9ydCk7CiAgICAgdW5zaWduZWQgc2hvcnQgdW5zaWduZWRTaG9ydEF0dHIoKSBjb25zdDsKQEAg
LTE1NCw2ICsxNTgsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCB2b2lkTWV0aG9kKCk7CiAgICAg
dm9pZCB2b2lkTWV0aG9kV2l0aEFyZ3MoaW50IGxvbmdBcmcsIGNvbnN0IFdlYkRPTVN0cmluZyYg
c3RyQXJnLCBjb25zdCBXZWJET01UZXN0T2JqJiBvYmpBcmcpOworICAgIGNoYXIgYnl0ZU1ldGhv
ZCgpOworICAgIGNoYXIgYnl0ZU1ldGhvZFdpdGhBcmdzKGNoYXIgYnl0ZUFyZywgY29uc3QgV2Vi
RE9NU3RyaW5nJiBzdHJBcmcsIGNvbnN0IFdlYkRPTVRlc3RPYmomIG9iakFyZyk7CisgICAgdW5z
aWduZWQgY2hhciBvY3RldE1ldGhvZCgpOworICAgIHVuc2lnbmVkIGNoYXIgb2N0ZXRNZXRob2RX
aXRoQXJncyh1bnNpZ25lZCBjaGFyIG9jdGV0QXJnLCBjb25zdCBXZWJET01TdHJpbmcmIHN0ckFy
ZywgY29uc3QgV2ViRE9NVGVzdE9iaiYgb2JqQXJnKTsKICAgICBpbnQgbG9uZ01ldGhvZCgpOwog
ICAgIGludCBsb25nTWV0aG9kV2l0aEFyZ3MoaW50IGxvbmdBcmcsIGNvbnN0IFdlYkRPTVN0cmlu
ZyYgc3RyQXJnLCBjb25zdCBXZWJET01UZXN0T2JqJiBvYmpBcmcpOwogICAgIFdlYkRPTVRlc3RP
Ymogb2JqTWV0aG9kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCmluZGV4IDIz
ZGE0MWEuLjBjN2U1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCkBAIC03
OSw2ICs3OSw4IEBAIGVudW0gewogICAgIFBST1BfUkVBRF9PTkxZX0xPTkdfQVRUUiwKICAgICBQ
Uk9QX1JFQURfT05MWV9TVFJJTkdfQVRUUiwKICAgICBQUk9QX1JFQURfT05MWV9URVNUX09CSl9B
VFRSLAorICAgIFBST1BfQllURV9BVFRSLAorICAgIFBST1BfT0NURVRfQVRUUiwKICAgICBQUk9Q
X1NIT1JUX0FUVFIsCiAgICAgUFJPUF9VTlNJR05FRF9TSE9SVF9BVFRSLAogICAgIFBST1BfTE9O
R19BVFRSLApAQCAtMTQ4LDYgKzE1MCwxNCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rf
b2JqX3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsCiAgICAg
V2ViQ29yZTo6VGVzdE9iaiogY29yZVNlbGYgPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAKICAgICBz
d2l0Y2ggKHByb3BlcnR5SWQpIHsKKyAgICBjYXNlIFBST1BfQllURV9BVFRSOiB7CisgICAgICAg
IGNvcmVTZWxmLT5zZXRCeXRlQXR0cigoZ192YWx1ZV9nZXRfaW50OCh2YWx1ZSkpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUFJPUF9PQ1RFVF9BVFRSOiB7CisgICAgICAgIGNv
cmVTZWxmLT5zZXRPY3RldEF0dHIoKGdfdmFsdWVfZ2V0X3VpbnQ4KHZhbHVlKSkpOworICAgICAg
ICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBQUk9QX1VOU0lHTkVEX1NIT1JUX0FUVFI6IHsKICAg
ICAgICAgY29yZVNlbGYtPnNldFVuc2lnbmVkU2hvcnRBdHRyKChnX3ZhbHVlX2dldF91aW50KHZh
bHVlKSkpOwogICAgICAgICBicmVhazsKQEAgLTMwMyw2ICszMTMsMTQgQEAgc3RhdGljIHZvaWQg
d2Via2l0X2RvbV90ZXN0X29ial9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBw
cm9wZXJ0eUlkLAogICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIFdlYktpdDo6a2l0
KHB0ci5nZXQoKSkpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBQUk9QX0JZVEVf
QVRUUjogeworICAgICAgICBnX3ZhbHVlX3NldF9pbnQ4KHZhbHVlLCBjb3JlU2VsZi0+Ynl0ZUF0
dHIoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFBST1BfT0NURVRfQVRUUjog
eworICAgICAgICBnX3ZhbHVlX3NldF91aW50OCh2YWx1ZSwgY29yZVNlbGYtPm9jdGV0QXR0cigp
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgUFJPUF9TSE9SVF9BVFRSOiB7CiAg
ICAgICAgIGdfdmFsdWVfc2V0X2ludCh2YWx1ZSwgY29yZVNlbGYtPnNob3J0QXR0cigpKTsKICAg
ICAgICAgYnJlYWs7CkBAIC01OTIsNiArNjEwLDI0IEBAIEdfTUFYTE9ORywgLyogbWF4ICovCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFdFQktJVF9UWVBFX0RPTV9URVNUX09CSiwgLyogZ29iamVjdCB0eXBlICovCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9Q
QVJBTV9SRUFEQUJMRSkpOwogICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29i
amVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9CWVRF
X0FUVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNf
aW50OCgiYnl0ZS1hdHRyIiwgLyogbmFtZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdF9vYmpfYnl0ZS1hdHRyIiwgLyog
c2hvcnQgZGVzY3JpcHRpb24gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgInJlYWQtd3JpdGUgIGdpbnQ4IFRlc3RPYmouYnl0ZS1h
dHRyIiwgLyogbG9uZ2VyIC0gY291bGQgZG8gd2l0aCBzb21lIGV4dHJhIGRvYyBzdHVmZiBoZXJl
ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdfTUlOSU5UOCwgLyogbWluICovCitHX01BWElOVDgsIC8qIG1heCAqLworMCwgLyog
ZGVmYXVsdCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7CisgICAgZ19vYmplY3RfY2xh
c3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQUk9QX09DVEVUX0FUVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnX3BhcmFtX3NwZWNfdWludDgoIm9jdGV0LWF0dHIiLCAvKiBuYW1lICovCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJ0ZXN0X29ial9vY3RldC1hdHRyIiwgLyogc2hvcnQgZGVzY3JpcHRpb24gKi8KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlYWQt
d3JpdGUgIGd1aW50OCBUZXN0T2JqLm9jdGV0LWF0dHIiLCAvKiBsb25nZXIgLSBjb3VsZCBkbyB3
aXRoIHNvbWUgZXh0cmEgZG9jIHN0dWZmIGhlcmUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgLyogbWluICovCitHX01BWFVJ
TlQ4LCAvKiBtYXggKi8KKzAsIC8qIGRlZmF1bHQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklU
RSkpOworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdENsYXNzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9TSE9SVF9BVFRSLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2ludCgic2hvcnQt
YXR0ciIsIC8qIG5hbWUgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInRlc3Rfb2JqX3Nob3J0LWF0dHIiLCAvKiBzaG9ydCBkZXNj
cmlwdGlvbiAqLwpAQCAtMTAxMCw2ICsxMDQ2LDU0IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfdm9p
ZF9tZXRob2Rfd2l0aF9hcmdzKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdsb25nIGxvbmdBcmcs
CiAgICAgaXRlbS0+dm9pZE1ldGhvZFdpdGhBcmdzKGxvbmdBcmcsIGNvbnZlcnRlZFN0ckFyZywg
Y29udmVydGVkT2JqQXJnKTsKIH0KIAorZ2ludDgKK3dlYmtpdF9kb21fdGVzdF9vYmpfYnl0ZV9t
ZXRob2QoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9J
U19URVNUX09CSihzZWxmKSwgMCk7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktp
dDo6Y29yZShzZWxmKTsKKyAgICBnaW50OCByZXN1bHQgPSBpdGVtLT5ieXRlTWV0aG9kKCk7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworZ2ludDgKK3dlYmtpdF9kb21fdGVzdF9vYmpfYnl0ZV9t
ZXRob2Rfd2l0aF9hcmdzKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdpbnQ4IGJ5dGVBcmcsIGNv
bnN0IGdjaGFyKiBzdHJBcmcsIFdlYktpdERPTVRlc3RPYmoqIG9iakFyZykKK3sKKyAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxmKSwgMCk7CisgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoc3RyQXJnLCAwKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lT
X1RFU1RfT0JKKG9iakFyZyksIDApOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJL
aXQ6OmNvcmUoc2VsZik7CisgICAgV1RGOjpTdHJpbmcgY29udmVydGVkU3RyQXJnID0gV1RGOjpT
dHJpbmc6OmZyb21VVEY4KHN0ckFyZyk7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogY29udmVydGVk
T2JqQXJnID0gV2ViS2l0Ojpjb3JlKG9iakFyZyk7CisgICAgZ2ludDggcmVzdWx0ID0gaXRlbS0+
Ynl0ZU1ldGhvZFdpdGhBcmdzKGJ5dGVBcmcsIGNvbnZlcnRlZFN0ckFyZywgY29udmVydGVkT2Jq
QXJnKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitndWludDgKK3dlYmtpdF9kb21fdGVzdF9v
Ympfb2N0ZXRfbWV0aG9kKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCit7CisgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9ET01fSVNfVEVTVF9PQkooc2VsZiksIDApOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0
ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgZ3VpbnQ4IHJlc3VsdCA9IGl0ZW0tPm9jdGV0
TWV0aG9kKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworZ3VpbnQ4Cit3ZWJraXRfZG9tX3Rl
c3Rfb2JqX29jdGV0X21ldGhvZF93aXRoX2FyZ3MoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ3Vp
bnQ4IG9jdGV0QXJnLCBjb25zdCBnY2hhciogc3RyQXJnLCBXZWJLaXRET01UZXN0T2JqKiBvYmpB
cmcpCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2VsZiksIDApOworICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHN0ckFyZywgMCk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihvYmpBcmcpLCAwKTsKKyAgICBXZWJDb3JlOjpUZXN0
T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIFdURjo6U3RyaW5nIGNvbnZlcnRl
ZFN0ckFyZyA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChzdHJBcmcpOworICAgIFdlYkNvcmU6OlRl
c3RPYmoqIGNvbnZlcnRlZE9iakFyZyA9IFdlYktpdDo6Y29yZShvYmpBcmcpOworICAgIGd1aW50
OCByZXN1bHQgPSBpdGVtLT5vY3RldE1ldGhvZFdpdGhBcmdzKG9jdGV0QXJnLCBjb252ZXJ0ZWRT
dHJBcmcsIGNvbnZlcnRlZE9iakFyZyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogZ2xvbmcK
IHdlYmtpdF9kb21fdGVzdF9vYmpfbG9uZ19tZXRob2QoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikK
IHsKQEAgLTE1MzIsNiArMTYxNiw0NCBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9yZWFkX29u
bHlfdGVzdF9vYmpfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmKQogICAgIHJldHVybiBXZWJL
aXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKIH0KIAorZ2ludDgKK3dlYmtpdF9kb21fdGVz
dF9vYmpfZ2V0X2J5dGVfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmKQoreworICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpLCAwKTsKKyAgICBXZWJDb3JlOjpUZXN0T2Jq
KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGdpbnQ4IHJlc3VsdCA9IGl0ZW0tPmJ5
dGVBdHRyKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZAord2Via2l0X2RvbV90ZXN0
X29ial9zZXRfYnl0ZV9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdpbnQ4IHZhbHVlKQor
eworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVy
bl9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2VsZikpOworICAgIFdlYkNvcmU6OlRl
c3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgaXRlbS0+c2V0Qnl0ZUF0dHIo
dmFsdWUpOworfQorCitndWludDgKK3dlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X29jdGV0X2F0dHIo
V2ViS2l0RE9NVGVzdE9iaiogc2VsZikKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNU
X09CSihzZWxmKSwgMCk7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29y
ZShzZWxmKTsKKyAgICBndWludDggcmVzdWx0ID0gaXRlbS0+b2N0ZXRBdHRyKCk7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKwordm9pZAord2Via2l0X2RvbV90ZXN0X29ial9zZXRfb2N0ZXRfYXR0
cihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBndWludDggdmFsdWUpCit7CisgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lU
X0RPTV9JU19URVNUX09CSihzZWxmKSk7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdl
YktpdDo6Y29yZShzZWxmKTsKKyAgICBpdGVtLT5zZXRPY3RldEF0dHIodmFsdWUpOworfQorCiBn
c2hvcnQKIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3Nob3J0X2F0dHIoV2ViS2l0RE9NVGVzdE9i
aiogc2VsZikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaAppbmRleCA3Yzk5MmMzLi42
ZmVlNTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
R09iamVjdC9XZWJLaXRET01UZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oCkBAIC03Myw2ICs3Myw1MiBA
QCBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF9kb21fdGVzdF9vYmpfdm9pZF9tZXRob2Rfd2l0aF9h
cmdzKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdsb25nIGxvbmdBcmcsIGNvbnN0IGdjaGFyKiBz
dHJBcmcsIFdlYktpdERPTVRlc3RPYmoqIG9iakFyZyk7CiAKIC8qKgorICogd2Via2l0X2RvbV90
ZXN0X29ial9ieXRlX21ldGhvZDoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCisgKgor
ICogUmV0dXJuczoKKyAqCisqKi8KK1dFQktJVF9BUEkgZ2ludDgKK3dlYmtpdF9kb21fdGVzdF9v
YmpfYnl0ZV9tZXRob2QoV2ViS2l0RE9NVGVzdE9iaiogc2VsZik7CisKKy8qKgorICogd2Via2l0
X2RvbV90ZXN0X29ial9ieXRlX21ldGhvZF93aXRoX2FyZ3M6CisgKiBAc2VsZjogQSAjV2ViS2l0
RE9NVGVzdE9iagorICogQGJ5dGVBcmc6IEEgI2dpbnQ4CisgKiBAc3RyQXJnOiBBICNnY2hhcgor
ICogQG9iakFyZzogQSAjV2ViS2l0RE9NVGVzdE9iagorICoKKyAqIFJldHVybnM6CisgKgorKiov
CitXRUJLSVRfQVBJIGdpbnQ4Cit3ZWJraXRfZG9tX3Rlc3Rfb2JqX2J5dGVfbWV0aG9kX3dpdGhf
YXJncyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnaW50OCBieXRlQXJnLCBjb25zdCBnY2hhciog
c3RyQXJnLCBXZWJLaXRET01UZXN0T2JqKiBvYmpBcmcpOworCisvKioKKyAqIHdlYmtpdF9kb21f
dGVzdF9vYmpfb2N0ZXRfbWV0aG9kOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAq
CisgKiBSZXR1cm5zOgorICoKKyoqLworV0VCS0lUX0FQSSBndWludDgKK3dlYmtpdF9kb21fdGVz
dF9vYmpfb2N0ZXRfbWV0aG9kKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpOworCisvKioKKyAqIHdl
YmtpdF9kb21fdGVzdF9vYmpfb2N0ZXRfbWV0aG9kX3dpdGhfYXJnczoKKyAqIEBzZWxmOiBBICNX
ZWJLaXRET01UZXN0T2JqCisgKiBAb2N0ZXRBcmc6IEEgI2d1aW50OAorICogQHN0ckFyZzogQSAj
Z2NoYXIKKyAqIEBvYmpBcmc6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqCisgKiBSZXR1cm5zOgor
ICoKKyoqLworV0VCS0lUX0FQSSBndWludDgKK3dlYmtpdF9kb21fdGVzdF9vYmpfb2N0ZXRfbWV0
aG9kX3dpdGhfYXJncyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBndWludDggb2N0ZXRBcmcsIGNv
bnN0IGdjaGFyKiBzdHJBcmcsIFdlYktpdERPTVRlc3RPYmoqIG9iakFyZyk7CisKKy8qKgogICog
d2Via2l0X2RvbV90ZXN0X29ial9sb25nX21ldGhvZDoKICAqIEBzZWxmOiBBICNXZWJLaXRET01U
ZXN0T2JqCiAgKgpAQCAtNTU2LDYgKzYwMiw0OCBAQCBXRUJLSVRfQVBJIFdlYktpdERPTVRlc3RP
YmoqCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9yZWFkX29ubHlfdGVzdF9vYmpfYXR0cihXZWJL
aXRET01UZXN0T2JqKiBzZWxmKTsKIAogLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9i
eXRlX2F0dHI6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICoKKyAqIFJldHVybnM6
CisgKgorKiovCitXRUJLSVRfQVBJIGdpbnQ4Cit3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9ieXRl
X2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZik7CisKKy8qKgorICogd2Via2l0X2RvbV90ZXN0
X29ial9zZXRfYnl0ZV9hdHRyOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqIEB2
YWx1ZTogQSAjZ2ludDgKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLworV0VCS0lUX0FQSSB2b2lk
Cit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9ieXRlX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2Vs
ZiwgZ2ludDggdmFsdWUpOworCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X29jdGV0
X2F0dHI6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICoKKyAqIFJldHVybnM6Cisg
KgorKiovCitXRUJLSVRfQVBJIGd1aW50OAord2Via2l0X2RvbV90ZXN0X29ial9nZXRfb2N0ZXRf
YXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmKTsKKworLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rf
b2JqX3NldF9vY3RldF9hdHRyOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqIEB2
YWx1ZTogQSAjZ3VpbnQ4CisgKgorICogUmV0dXJuczoKKyAqCisqKi8KK1dFQktJVF9BUEkgdm9p
ZAord2Via2l0X2RvbV90ZXN0X29ial9zZXRfb2N0ZXRfYXR0cihXZWJLaXRET01UZXN0T2JqKiBz
ZWxmLCBndWludDggdmFsdWUpOworCisvKioKICAqIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3No
b3J0X2F0dHI6CiAgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagogICoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5k
ZXggYTgyNDhjYi4uYTA1NmUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTgwLDYgKzgwLDggQEAgc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialRhYmxlVmFsdWVzW10gPQogICAgIHsgInJl
YWRPbmx5U3RyaW5nQXR0ciIsIERvbnREZWxldGUgfCBSZWFkT25seSwgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpSZWFkT25seVN0cmlu
Z0F0dHIpLCAoaW50cHRyX3QpMCwgTm9JbnRyaW5zaWMgfSwKICAgICB7ICJyZWFkT25seVRlc3RP
YmpBdHRyIiwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ialJlYWRPbmx5VGVzdE9iakF0dHIpLCAo
aW50cHRyX3QpMCwgTm9JbnRyaW5zaWMgfSwKICAgICB7ICJlbnVtQXR0ciIsIERvbnREZWxldGUs
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
T2JqRW51bUF0dHIpLCAoaW50cHRyX3Qpc2V0SlNUZXN0T2JqRW51bUF0dHIsIE5vSW50cmluc2lj
IH0sCisgICAgeyAiYnl0ZUF0dHIiLCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakJ5dGVBdHRyKSwgKGludHB0cl90
KXNldEpTVGVzdE9iakJ5dGVBdHRyLCBOb0ludHJpbnNpYyB9LAorICAgIHsgIm9jdGV0QXR0ciIs
IERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0T2JqT2N0ZXRBdHRyKSwgKGludHB0cl90KXNldEpTVGVzdE9iak9jdGV0QXR0
ciwgTm9JbnRyaW5zaWMgfSwKICAgICB7ICJzaG9ydEF0dHIiLCBEb250RGVsZXRlLCAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ialNob3J0
QXR0ciksIChpbnRwdHJfdClzZXRKU1Rlc3RPYmpTaG9ydEF0dHIsIE5vSW50cmluc2ljIH0sCiAg
ICAgeyAidW5zaWduZWRTaG9ydEF0dHIiLCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ialVuc2lnbmVkU2hvcnRBdHRy
KSwgKGludHB0cl90KXNldEpTVGVzdE9ialVuc2lnbmVkU2hvcnRBdHRyLCBOb0ludHJpbnNpYyB9
LAogICAgIHsgImxvbmdBdHRyIiwgRG9udERlbGV0ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpMb25nQXR0ciksIChpbnRwdHJfdClz
ZXRKU1Rlc3RPYmpMb25nQXR0ciwgTm9JbnRyaW5zaWMgfSwKQEAgLTE1Miw3ICsxNTQsNyBAQCBz
dGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqVGFibGVWYWx1ZXNbXSA9CiAgICAg
eyAwLCAwLCAwLCAwLCBOb0ludHJpbnNpYyB9CiB9OwogCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxl
IEpTVGVzdE9ialRhYmxlID0geyAxNDUsIDEyNywgSlNUZXN0T2JqVGFibGVWYWx1ZXMsIDAgfTsK
K3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0T2JqVGFibGUgPSB7IDI2NSwgMjU1LCBKU1Rl
c3RPYmpUYWJsZVZhbHVlcywgMCB9OwogLyogSGFzaCB0YWJsZSBmb3IgY29uc3RydWN0b3IgKi8K
IAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9iakNvbnN0cnVjdG9yVGFibGVW
YWx1ZXNbXSA9CkBAIC0yNjgsNiArMjcwLDEwIEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1
ZSBKU1Rlc3RPYmpQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KICAgICB7ICJDT05TVF9KQVZBU0NS
SVBUIiwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakNPTlNUX0pBVkFTQ1JJUFQpLCAoaW50cHRy
X3QpMCwgTm9JbnRyaW5zaWMgfSwKICAgICB7ICJ2b2lkTWV0aG9kIiwgRG9udERlbGV0ZSB8IEpT
Qzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kKSwgKGludHB0cl90KTAsIE5vSW50cmluc2lj
IH0sCiAgICAgeyAidm9pZE1ldGhvZFdpdGhBcmdzIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rp
b24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25Wb2lkTWV0aG9kV2l0aEFyZ3MpLCAoaW50cHRyX3QpMywgTm9JbnRyaW5zaWMg
fSwKKyAgICB7ICJieXRlTWV0aG9kIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRw
dHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25CeXRlTWV0aG9kKSwgKGludHB0cl90KTAsIE5vSW50cmluc2ljIH0sCisgICAgeyAiYnl0ZU1l
dGhvZFdpdGhBcmdzIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0
aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0
aG9kV2l0aEFyZ3MpLCAoaW50cHRyX3QpMywgTm9JbnRyaW5zaWMgfSwKKyAgICB7ICJvY3RldE1l
dGhvZCIsIERvbnREZWxldGUgfCBKU0M6OkZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2QpLCAo
aW50cHRyX3QpMCwgTm9JbnRyaW5zaWMgfSwKKyAgICB7ICJvY3RldE1ldGhvZFdpdGhBcmdzIiwg
RG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVG
dW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZFdpdGhBcmdzKSwg
KGludHB0cl90KTMsIE5vSW50cmluc2ljIH0sCiAgICAgeyAibG9uZ01ldGhvZCIsIERvbnREZWxl
dGUgfCBKU0M6OkZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+
KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZCksIChpbnRwdHJfdCkwLCBOb0lu
dHJpbnNpYyB9LAogICAgIHsgImxvbmdNZXRob2RXaXRoQXJncyIsIERvbnREZWxldGUgfCBKU0M6
OkZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZFdpdGhBcmdzKSwgKGludHB0cl90KTMsIE5vSW50
cmluc2ljIH0sCiAgICAgeyAib2JqTWV0aG9kIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24s
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PYmpNZXRob2QpLCAoaW50cHRyX3QpMCwgTm9JbnRyaW5zaWMgfSwKQEAgLTMzMCw3
ICszMzYsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJvdG90eXBl
VGFibGVWYWx1ZXNbXSA9CiAgICAgeyAwLCAwLCAwLCAwLCBOb0ludHJpbnNpYyB9CiB9OwogCi1z
dGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdE9ialByb3RvdHlwZVRhYmxlID0geyAyNjYsIDI1
NSwgSlNUZXN0T2JqUHJvdG90eXBlVGFibGVWYWx1ZXMsIDAgfTsKK3N0YXRpYyBjb25zdCBIYXNo
VGFibGUgSlNUZXN0T2JqUHJvdG90eXBlVGFibGUgPSB7IDI2NywgMjU1LCBKU1Rlc3RPYmpQcm90
b3R5cGVUYWJsZVZhbHVlcywgMCB9OwogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE9ialByb3RvdHlw
ZTo6c19pbmZvID0geyAiVGVzdE9iamVjdFByb3RvdHlwZSIsICZCYXNlOjpzX2luZm8sICZKU1Rl
c3RPYmpQcm90b3R5cGVUYWJsZSwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RPYmpQcm90
b3R5cGUpIH07CiAKIEpTT2JqZWN0KiBKU1Rlc3RPYmpQcm90b3R5cGU6OnNlbGYoRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpAQCAtNDU5LDYgKzQ2NSwyNiBA
QCBKU1ZhbHVlIGpzVGVzdE9iakVudW1BdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90
QmFzZSwgUHJvcGVydHlOYW1lKQogfQogCiAKK0pTVmFsdWUganNUZXN0T2JqQnl0ZUF0dHIoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNl
KSk7CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNf
Y2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzTnVtYmVyKGltcGwtPmJ5dGVBdHRyKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKwor
SlNWYWx1ZSBqc1Rlc3RPYmpPY3RldEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RC
YXNlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0
PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMp
OworICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+
aW1wbCgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwtPm9jdGV0QXR0cigp
KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisKIEpTVmFsdWUganNUZXN0T2JqU2hvcnRBdHRy
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90
QmFzZSkpOwpAQCAtMTA5NCw2ICsxMTIwLDMwIEBAIHZvaWQgc2V0SlNUZXN0T2JqRW51bUF0dHIo
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIH0K
IAogCit2b2lkIHNldEpTVGVzdE9iakJ5dGVBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwor
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPih0aGlzT2JqZWN0
KTsKKyAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMt
PmltcGwoKSk7CisgICAgaW50OF90IG5hdGl2ZVZhbHVlKHRvSW50OChleGVjLCB2YWx1ZSwgTm9y
bWFsQ29udmVyc2lvbikpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAg
cmV0dXJuOworICAgIGltcGwtPnNldEJ5dGVBdHRyKG5hdGl2ZVZhbHVlKTsKK30KKworCit2b2lk
IHNldEpTVGVzdE9iak9jdGV0QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4odGhpc09iamVjdCk7CisgICAg
VGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkp
OworICAgIHVpbnQ4X3QgbmF0aXZlVmFsdWUodG9VSW50OChleGVjLCB2YWx1ZSwgTm9ybWFsQ29u
dmVyc2lvbikpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJu
OworICAgIGltcGwtPnNldE9jdGV0QXR0cihuYXRpdmVWYWx1ZSk7Cit9CisKKwogdm9pZCBzZXRK
U1Rlc3RPYmpTaG9ydEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CkBAIC0xNzA4LDYgKzE3
NTgsODAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblZvaWRNZXRob2RXaXRoQXJncyhFeGVjU3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMpCit7Cisg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CisgICAgaWYgKCF0
aGlzVmFsdWUuaW5oZXJpdHMoJkpTVGVzdE9iajo6c19pbmZvKSkKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0
PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOworICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgJkpTVGVzdE9iajo6c19pbmZvKTsKKyAgICBUZXN0T2JqKiBp
bXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisKKyAgICBK
U0M6OkpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC0+Ynl0ZU1ldGhvZCgpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0aG9kV2l0aEFyZ3MoRXhl
Y1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNW
YWx1ZSgpOworICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykp
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKKyAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RPYmo6OnNfaW5m
byk7CisgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlz
LT5pbXBsKCkpOworICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAzKQorICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4
ZWMpKTsKKyAgICBpbnQ4X3QgYnl0ZUFyZyh0b0ludDgoZXhlYywgZXhlYy0+YXJndW1lbnQoMCks
IE5vcm1hbENvbnZlcnNpb24pKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgY29uc3QgU3Ry
aW5nJiBzdHJBcmcoZXhlYy0+YXJndW1lbnQoMSkuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBleGVj
LT5hcmd1bWVudCgxKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKKyAgICBUZXN0T2JqKiBvYmpBcmcodG9UZXN0T2JqKGV4ZWMtPmFyZ3VtZW50KDIp
KSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGpz
TnVtYmVyKGltcGwtPmJ5dGVNZXRob2RXaXRoQXJncyhieXRlQXJnLCBzdHJBcmcsIG9iakFyZykp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kKEV4
ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlz
VmFsdWUoKTsKKyAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cygmSlNUZXN0T2JqOjpzX2luZm8p
KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7Cisg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAmSlNUZXN0T2JqOjpzX2lu
Zm8pOworICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhp
cy0+aW1wbCgpKTsKKworICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLT5v
Y3RldE1ldGhvZCgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
Y3RldE1ldGhvZFdpdGhBcmdzKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKKyAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0
cygmSlNUZXN0T2JqOjpzX2luZm8pKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjKTsKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNP
YmplY3QodGhpc1ZhbHVlKSk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCAmSlNUZXN0T2JqOjpzX2luZm8pOworICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2Fz
dDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICBpZiAoZXhlYy0+YXJndW1lbnRD
b3VudCgpIDwgMykKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CisgICAgdWludDhfdCBvY3RldEFyZyh0b1VJbnQ4
KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKSk7CisgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOworICAgIGNvbnN0IFN0cmluZyYgc3RyQXJnKGV4ZWMtPmFyZ3VtZW50KDEpLmlz
RW1wdHkoKSA/IFN0cmluZygpIDogZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgVGVzdE9iaiogb2JqQXJnKHRv
VGVzdE9iaihleGVjLT5hcmd1bWVudCgyKSkpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAg
IEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLT5vY3RldE1ldGhvZFdpdGhBcmdz
KG9jdGV0QXJnLCBzdHJBcmcsIG9iakFyZykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKK30KKwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkxvbmdNZXRob2QoRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCmluZGV4IDdmZTUzYjMuLjdh
MmQ2ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmgKQEAgLTE2MSw2ICsxNjEsMTAgQEAgcHJvdGVjdGVkOgogCiBKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lk
TWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kV2l0aEFyZ3MoSlNDOjpFeGVj
U3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2RX
aXRoQXJncyhKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2QoSlNDOjpFeGVjU3RhdGUq
KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk9jdGV0TWV0aG9kV2l0aEFyZ3MoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRo
b2QoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRob2RXaXRoQXJncyhKU0M6OkV4ZWNTdGF0
ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT2JqTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7CkBAIC0yMzksNiArMjQzLDEwIEBA
IHZvaWQgc2V0SlNUZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNTdHJpbmdBdHRyKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpKU09iamVjdCosIEpTCiBKU0M6OkpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0
b3JUZXN0U3ViT2JqKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5
TmFtZSk7CiBKU0M6OkpTVmFsdWUganNUZXN0T2JqRW51bUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIHZvaWQgc2V0SlNUZXN0T2JqRW51bUF0
dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKK0pTQzo6
SlNWYWx1ZSBqc1Rlc3RPYmpCeXRlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwg
SlNDOjpQcm9wZXJ0eU5hbWUpOwordm9pZCBzZXRKU1Rlc3RPYmpCeXRlQXR0cihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUpOworSlNDOjpKU1ZhbHVlIGpzVGVz
dE9iak9jdGV0QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0
eU5hbWUpOwordm9pZCBzZXRKU1Rlc3RPYmpPY3RldEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKIEpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpTaG9ydEF0
dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIHZv
aWQgc2V0SlNUZXN0T2JqU2hvcnRBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCos
IEpTQzo6SlNWYWx1ZSk7CiBKU0M6OkpTVmFsdWUganNUZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RP
YmouaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RP
YmouaAppbmRleCA3YTYzMDk4Li5lMDNkMDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5oCkBAIC02Niw2ICs2Niw4
IEBAIGVudW0gewogQHByb3BlcnR5KHJlYWRvbmx5KSBpbnQgcmVhZE9ubHlMb25nQXR0cjsKIEBw
cm9wZXJ0eShyZWFkb25seSwgY29weSkgTlNTdHJpbmcgKnJlYWRPbmx5U3RyaW5nQXR0cjsKIEBw
cm9wZXJ0eShyZWFkb25seSwgcmV0YWluKSBET01UZXN0T2JqICpyZWFkT25seVRlc3RPYmpBdHRy
OworQHByb3BlcnR5IGNoYXIgYnl0ZUF0dHI7CitAcHJvcGVydHkgdW5zaWduZWQgY2hhciBvY3Rl
dEF0dHI7CiBAcHJvcGVydHkgc2hvcnQgc2hvcnRBdHRyOwogQHByb3BlcnR5IHVuc2lnbmVkIHNo
b3J0IHVuc2lnbmVkU2hvcnRBdHRyOwogQHByb3BlcnR5IGludCBsb25nQXR0cjsKQEAgLTEyMiw2
ICsxMjQsMTAgQEAgZW51bSB7CiAKIC0gKHZvaWQpdm9pZE1ldGhvZDsKIC0gKHZvaWQpdm9pZE1l
dGhvZFdpdGhBcmdzOihpbnQpbG9uZ0FyZyBzdHJBcmc6KE5TU3RyaW5nICopc3RyQXJnIG9iakFy
ZzooRE9NVGVzdE9iaiAqKW9iakFyZzsKKy0gKGNoYXIpYnl0ZU1ldGhvZDsKKy0gKGNoYXIpYnl0
ZU1ldGhvZFdpdGhBcmdzOihjaGFyKWJ5dGVBcmcgc3RyQXJnOihOU1N0cmluZyAqKXN0ckFyZyBv
YmpBcmc6KERPTVRlc3RPYmogKilvYmpBcmc7CistICh1bnNpZ25lZCBjaGFyKW9jdGV0TWV0aG9k
OworLSAodW5zaWduZWQgY2hhcilvY3RldE1ldGhvZFdpdGhBcmdzOih1bnNpZ25lZCBjaGFyKW9j
dGV0QXJnIHN0ckFyZzooTlNTdHJpbmcgKilzdHJBcmcgb2JqQXJnOihET01UZXN0T2JqICopb2Jq
QXJnOwogLSAoaW50KWxvbmdNZXRob2Q7CiAtIChpbnQpbG9uZ01ldGhvZFdpdGhBcmdzOihpbnQp
bG9uZ0FyZyBzdHJBcmc6KE5TU3RyaW5nICopc3RyQXJnIG9iakFyZzooRE9NVGVzdE9iaiAqKW9i
akFyZzsKIC0gKERPTVRlc3RPYmogKilvYmpNZXRob2Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQppbmRleCA4OTk2
ZmU1Li5mZTgzMTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW0KQEAgLTExMSw2ICsxMTEsMzAgQEAKICAgICBy
ZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPnJlYWRPbmx5VGVzdE9iakF0dHIoKSkpOwogfQog
CistIChjaGFyKWJ5dGVBdHRyCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOworICAgIHJldHVybiBJTVBMLT5ieXRlQXR0cigpOworfQorCistICh2b2lkKXNldEJ5
dGVBdHRyOihjaGFyKW5ld0J5dGVBdHRyCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOworICAgIElNUEwtPnNldEJ5dGVBdHRyKG5ld0J5dGVBdHRyKTsKK30KKwor
LSAodW5zaWduZWQgY2hhcilvY3RldEF0dHIKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwtPm9jdGV0QXR0cigpOworfQorCistICh2
b2lkKXNldE9jdGV0QXR0cjoodW5zaWduZWQgY2hhciluZXdPY3RldEF0dHIKK3sKKyAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgSU1QTC0+c2V0T2N0ZXRBdHRy
KG5ld09jdGV0QXR0cik7Cit9CisKIC0gKHNob3J0KXNob3J0QXR0cgogewogICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKQEAgLTc3NSw2ICs3OTksMzAgQEAKICAgICBJ
TVBMLT52b2lkTWV0aG9kV2l0aEFyZ3MobG9uZ0FyZywgc3RyQXJnLCBjb3JlKG9iakFyZykpOwog
fQogCistIChjaGFyKWJ5dGVNZXRob2QKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwtPmJ5dGVNZXRob2QoKTsKK30KKworLSAoY2hh
cilieXRlTWV0aG9kV2l0aEFyZ3M6KGNoYXIpYnl0ZUFyZyBzdHJBcmc6KE5TU3RyaW5nICopc3Ry
QXJnIG9iakFyZzooRE9NVGVzdE9iaiAqKW9iakFyZworeworICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+Ynl0ZU1ldGhvZFdpdGhBcmdz
KGJ5dGVBcmcsIHN0ckFyZywgY29yZShvYmpBcmcpKTsKK30KKworLSAodW5zaWduZWQgY2hhcilv
Y3RldE1ldGhvZAoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
KyAgICByZXR1cm4gSU1QTC0+b2N0ZXRNZXRob2QoKTsKK30KKworLSAodW5zaWduZWQgY2hhcilv
Y3RldE1ldGhvZFdpdGhBcmdzOih1bnNpZ25lZCBjaGFyKW9jdGV0QXJnIHN0ckFyZzooTlNTdHJp
bmcgKilzdHJBcmcgb2JqQXJnOihET01UZXN0T2JqICopb2JqQXJnCit7CisgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT5vY3RldE1ldGhv
ZFdpdGhBcmdzKG9jdGV0QXJnLCBzdHJBcmcsIGNvcmUob2JqQXJnKSk7Cit9CisKIC0gKGludCls
b25nTWV0aG9kCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmou
aWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCmlu
ZGV4IGFmMzk0NWUuLjA2NzlmMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKQEAgLTQ0LDYgKzQ0LDggQEAgZW51bSBUZXN0RW51bVR5
cGUgeyAiIiwgIkVudW1WYWx1ZTEiLCAiRW51bVZhbHVlMiIsICJFbnVtVmFsdWUzIiB9OwogICAg
IHN0YXRpYyBhdHRyaWJ1dGUgRE9NU3RyaW5nICAgICAgICAgc3RhdGljU3RyaW5nQXR0cjsKICAg
ICBzdGF0aWMgcmVhZG9ubHkgYXR0cmlidXRlIFRlc3RTdWJPYmpDb25zdHJ1Y3RvciBUZXN0U3Vi
T2JqOwogICAgIGF0dHJpYnV0ZSBUZXN0RW51bVR5cGUgICAgICAgICAgICAgZW51bUF0dHI7Cisg
ICAgYXR0cmlidXRlIGJ5dGUgICAgICAgICAgICAgICAgICAgICBieXRlQXR0cjsKKyAgICBhdHRy
aWJ1dGUgb2N0ZXQgICAgICAgICAgICAgICAgICAgIG9jdGV0QXR0cjsKICAgICBhdHRyaWJ1dGUg
c2hvcnQgICAgICAgICAgICAgICAgICAgIHNob3J0QXR0cjsKICAgICBhdHRyaWJ1dGUgdW5zaWdu
ZWQgc2hvcnQgICAgICAgICAgIHVuc2lnbmVkU2hvcnRBdHRyOwogICAgIGF0dHJpYnV0ZSBsb25n
ICAgICAgICAgICAgICAgICAgICAgbG9uZ0F0dHI7CkBAIC03Myw2ICs3NSwxMCBAQCBlbnVtIFRl
c3RFbnVtVHlwZSB7ICIiLCAiRW51bVZhbHVlMSIsICJFbnVtVmFsdWUyIiwgIkVudW1WYWx1ZTMi
IH07CiAgICAgLy8gTWV0aG9kcwogICAgIHZvaWQgICAgdm9pZE1ldGhvZCgpOwogICAgIHZvaWQg
ICAgdm9pZE1ldGhvZFdpdGhBcmdzKGxvbmcgbG9uZ0FyZywgRE9NU3RyaW5nIHN0ckFyZywgVGVz
dE9iaiBvYmpBcmcpOworICAgIGJ5dGUgICAgYnl0ZU1ldGhvZCgpOworICAgIGJ5dGUgICAgYnl0
ZU1ldGhvZFdpdGhBcmdzKGJ5dGUgYnl0ZUFyZywgRE9NU3RyaW5nIHN0ckFyZywgVGVzdE9iaiBv
YmpBcmcpOworICAgIG9jdGV0ICAgb2N0ZXRNZXRob2QoKTsKKyAgICBvY3RldCAgIG9jdGV0TWV0
aG9kV2l0aEFyZ3Mob2N0ZXQgb2N0ZXRBcmcsIERPTVN0cmluZyBzdHJBcmcsIFRlc3RPYmogb2Jq
QXJnKTsKICAgICBsb25nICAgIGxvbmdNZXRob2QoKTsKICAgICBsb25nICAgIGxvbmdNZXRob2RX
aXRoQXJncyhsb25nIGxvbmdBcmcsIERPTVN0cmluZyBzdHJBcmcsIFRlc3RPYmogb2JqQXJnKTsK
ICAgICBUZXN0T2JqIG9iak1ldGhvZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvRGF0YVZpZXcuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRGF0YVZp
ZXcuaWRsCmluZGV4IGMwYTQyYTAuLjUwN2IwYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0RhdGFWaWV3LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9EYXRhVmlldy5pZGwKQEAgLTMxLDExICszMSw4IEBACiBdIGludGVyZmFjZSBEYXRhVmlldyA6
IEFycmF5QnVmZmVyVmlldyB7CiAgICAgLy8gQWxsIHRoZXNlIG1ldGhvZHMgcmFpc2UgYW4gZXhj
ZXB0aW9uIGlmIHRoZXkgd291bGQgcmVhZCBvciB3cml0ZSBiZXlvbmQgdGhlIGVuZCBvZiB0aGUg
dmlldy4KIAotICAgIC8vIFdlIGhhdmUgdG8gdXNlIGN1c3RvbSBjb2RlIGJlY2F1c2Ugb3VyIGNv
ZGUgZ2VuZXJhdG9yIGRvZXMgbm90IHN1cHBvcnQgaW50OF90IHR5cGUuCi0gICAgLy8gaW50OF90
IGdldEludDgodW5zaWduZWQgbG9uZyBieXRlT2Zmc2V0KTsKLSAgICAvLyB1aW50OF90IGdldFVp
bnQ4KHVuc2lnbmVkIGxvbmcgYnl0ZU9mZnNldCk7Ci0gICAgW0N1c3RvbSwgUmFpc2VzRXhjZXB0
aW9uXSBhbnkgZ2V0SW50OCgpOwotICAgIFtDdXN0b20sIFJhaXNlc0V4Y2VwdGlvbl0gYW55IGdl
dFVpbnQ4KCk7CisgICAgW1JhaXNlc0V4Y2VwdGlvbl0gYnl0ZSBnZXRJbnQ4KHVuc2lnbmVkIGxv
bmcgYnl0ZU9mZnNldCk7CisgICAgW1JhaXNlc0V4Y2VwdGlvbl0gb2N0ZXQgZ2V0VWludDgodW5z
aWduZWQgbG9uZyBieXRlT2Zmc2V0KTsKIAogICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmcsIFJhaXNl
c0V4Y2VwdGlvbl0gc2hvcnQgZ2V0SW50MTYodW5zaWduZWQgbG9uZyBieXRlT2Zmc2V0LCBvcHRp
b25hbCBib29sZWFuIGxpdHRsZUVuZGlhbik7CiAgICAgW1N0cmljdFR5cGVDaGVja2luZywgUmFp
c2VzRXhjZXB0aW9uXSB1bnNpZ25lZCBzaG9ydCBnZXRVaW50MTYodW5zaWduZWQgbG9uZyBieXRl
T2Zmc2V0LCBvcHRpb25hbCBib29sZWFuIGxpdHRsZUVuZGlhbik7CkBAIC00NiwxMSArNDMsOCBA
QAogICAgIFtDdXN0b20sIFN0cmljdFR5cGVDaGVja2luZywgUmFpc2VzRXhjZXB0aW9uXSBmbG9h
dCBnZXRGbG9hdDMyKHVuc2lnbmVkIGxvbmcgYnl0ZU9mZnNldCwgb3B0aW9uYWwgYm9vbGVhbiBs
aXR0bGVFbmRpYW4pOwogICAgIFtDdXN0b20sIFN0cmljdFR5cGVDaGVja2luZywgUmFpc2VzRXhj
ZXB0aW9uXSBkb3VibGUgZ2V0RmxvYXQ2NCh1bnNpZ25lZCBsb25nIGJ5dGVPZmZzZXQsIG9wdGlv
bmFsIGJvb2xlYW4gbGl0dGxlRW5kaWFuKTsKIAotICAgIC8vIFdlIGhhdmUgdG8gdXNlIGN1c3Rv
bSBjb2RlIGJlY2F1c2Ugb3VyIGNvZGUgZ2VuZXJhdG9yIGRvZXMgbm90IHN1cHBvcnQgdWludDhf
dCB0eXBlLgotICAgIC8vIHZvaWQgc2V0SW50OCh1bnNpZ25lZCBsb25nIGJ5dGVPZmZzZXQsIGlu
dDhfdCB2YWx1ZSk7Ci0gICAgLy8gdm9pZCBzZXRVaW50OCh1bnNpZ25lZCBsb25nIGJ5dGVPZmZz
ZXQsIHVpbnQ4X3QgdmFsdWUpOwotICAgIFtDdXN0b20sIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCBz
ZXRJbnQ4KCk7Ci0gICAgW0N1c3RvbSwgUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHNldFVpbnQ4KCk7
CisgICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCBzZXRJbnQ4KHVuc2lnbmVkIGxvbmcgYnl0ZU9m
ZnNldCwgYnl0ZSB2YWx1ZSk7CisgICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCBzZXRVaW50OCh1
bnNpZ25lZCBsb25nIGJ5dGVPZmZzZXQsIG9jdGV0IHZhbHVlKTsKIAogICAgIFtTdHJpY3RUeXBl
Q2hlY2tpbmcsIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCBzZXRJbnQxNih1bnNpZ25lZCBsb25nIGJ5
dGVPZmZzZXQsIHNob3J0IHZhbHVlLCBvcHRpb25hbCBib29sZWFuIGxpdHRsZUVuZGlhbik7CiAg
ICAgW1N0cmljdFR5cGVDaGVja2luZywgUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHNldFVpbnQxNih1
bnNpZ25lZCBsb25nIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIHNob3J0IHZhbHVlLCBvcHRpb25hbCBi
b29sZWFuIGxpdHRsZUVuZGlhbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L1R5cGVDb252ZXJzaW9ucy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9UeXBlQ29udmVyc2lv
bnMuaAppbmRleCA4ZGUxMDJmLi4zNDBjODk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL1R5cGVDb252ZXJzaW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvVHlw
ZUNvbnZlcnNpb25zLmgKQEAgLTU0LDYgKzU0LDE1IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBs
b25nIGxvbmcgdGVzdEVuZm9yY2VSYW5nZVVuc2lnbmVkTG9uZ0xvbmcoKSB7IHJldHVybiBtX3Vu
c2lnbmVkTG9uZ0xvbmc7IH0KICAgICB2b2lkIHNldFRlc3RFbmZvcmNlUmFuZ2VVbnNpZ25lZExv
bmdMb25nKHVuc2lnbmVkIGxvbmcgbG9uZyB2YWx1ZSkgeyBtX3Vuc2lnbmVkTG9uZ0xvbmcgPSB2
YWx1ZTsgfQogCisgICAgaW50OF90IHRlc3RCeXRlKCkgeyByZXR1cm4gbV9ieXRlOyB9CisgICAg
dm9pZCBzZXRUZXN0Qnl0ZShpbnQ4X3QgdmFsdWUpIHsgbV9ieXRlID0gdmFsdWU7IH0KKyAgICBp
bnQ4X3QgdGVzdEVuZm9yY2VSYW5nZUJ5dGUoKSB7IHJldHVybiBtX2J5dGU7IH0KKyAgICB2b2lk
IHNldFRlc3RFbmZvcmNlUmFuZ2VCeXRlKGludDhfdCB2YWx1ZSkgeyBtX2J5dGUgPSB2YWx1ZTsg
fQorCisgICAgdWludDhfdCB0ZXN0T2N0ZXQoKSB7IHJldHVybiBtX29jdGV0OyB9CisgICAgdm9p
ZCBzZXRUZXN0T2N0ZXQodWludDhfdCB2YWx1ZSkgeyBtX29jdGV0ID0gdmFsdWU7IH0KKyAgICB1
aW50OF90IHRlc3RFbmZvcmNlUmFuZ2VPY3RldCgpIHsgcmV0dXJuIG1fb2N0ZXQ7IH0KKyAgICB2
b2lkIHNldFRlc3RFbmZvcmNlUmFuZ2VPY3RldCh1aW50OF90IHZhbHVlKSB7IG1fb2N0ZXQgPSB2
YWx1ZTsgfQogcHJpdmF0ZToKICAgICBUeXBlQ29udmVyc2lvbnMoKQogICAgIHsKQEAgLTYzLDYg
KzcyLDggQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBsb25nIG1fdW5zaWduZWRMb25nOwogICAg
IGxvbmcgbG9uZyBtX2xvbmdMb25nOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBtX3Vuc2lnbmVk
TG9uZ0xvbmc7CisgICAgaW50OF90IG1fYnl0ZTsKKyAgICB1aW50OF90IG1fb2N0ZXQ7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL1R5cGVDb252ZXJzaW9ucy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1R5cGVDb252
ZXJzaW9ucy5pZGwKaW5kZXggZWRkNDAwNC4uZWJlOWI5MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvVHlwZUNvbnZlcnNpb25zLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL1R5cGVDb252ZXJzaW9ucy5pZGwKQEAgLTM2LDQgKzM2LDkgQEAKICAgICBhdHRyaWJ1
dGUgW0VuZm9yY2VSYW5nZV0gbG9uZyBsb25nIHRlc3RFbmZvcmNlUmFuZ2VMb25nTG9uZzsKICAg
ICBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsb25nIHRlc3RVbnNpZ25lZExvbmdMb25nOwogICAg
IGF0dHJpYnV0ZSBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIGxvbmcgdGVzdEVuZm9yY2VS
YW5nZVVuc2lnbmVkTG9uZ0xvbmc7CisKKyAgICBhdHRyaWJ1dGUgYnl0ZSB0ZXN0Qnl0ZTsKKyAg
ICBhdHRyaWJ1dGUgW0VuZm9yY2VSYW5nZV0gYnl0ZSB0ZXN0RW5mb3JjZVJhbmdlQnl0ZTsKKyAg
ICBhdHRyaWJ1dGUgb2N0ZXQgdGVzdE9jdGV0OworICAgIGF0dHJpYnV0ZSBbRW5mb3JjZVJhbmdl
XSBvY3RldCB0ZXN0RW5mb3JjZVJhbmdlT2N0ZXQ7CiB9Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>