<?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>72138</bug_id>
          
          <creation_ts>2011-11-11 09:07:01 -0800</creation_ts>
          <short_desc>[meta] Implement [Supplemental] IDL and modularize WebAudio and WebSocket</short_desc>
          <delta_ts>2012-02-24 10:18:53 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>73105</dependson>
    
    <dependson>73106</dependson>
    
    <dependson>73108</dependson>
    
    <dependson>73109</dependson>
    
    <dependson>73115</dependson>
    
    <dependson>73162</dependson>
    
    <dependson>73179</dependson>
    
    <dependson>73394</dependson>
    
    <dependson>74160</dependson>
    
    <dependson>74599</dependson>
    
    <dependson>74972</dependson>
    
    <dependson>75274</dependson>
    
    <dependson>75275</dependson>
    
    <dependson>75345</dependson>
    
    <dependson>75411</dependson>
    
    <dependson>75412</dependson>
    
    <dependson>75413</dependson>
    
    <dependson>75426</dependson>
    
    <dependson>75510</dependson>
    
    <dependson>75828</dependson>
    
    <dependson>75830</dependson>
    
    <dependson>75942</dependson>
    
    <dependson>75944</dependson>
    
    <dependson>76004</dependson>
    
    <dependson>76030</dependson>
    
    <dependson>76034</dependson>
    
    <dependson>76036</dependson>
    
    <dependson>76127</dependson>
    
    <dependson>77228</dependson>
          <blocked>79327</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dominicc</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>ojan</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>500826</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-11 09:07:01 -0800</bug_when>
    <thetext>Implement [Supplemental] IDL, and move the webaudio declarations from DOMWindow.idl into a new IDL file in the WebCore/webaudio directory, which helps make webaudio a self-contained feature (aka a module).

The spec for [Supplemental] IDL: http://dev.w3.org/2006/webapi/WebIDL/#dfn-supplemental-interface

Our goal: If we prepare the following IDL file in the WebCore/webaudio/ directory,

interface [
   Conditional=WEB_AUDIO,
   Supplemental=DOMWindow
] DOMWindowWebAudio {
   attribute [JSCCustomGetter,EnabledAtRuntime] AudioContextConstructor webkitAudioContext;
   attribute AudioPannerNodeConstructor webkitAudioPannerNode;
   attribute AudioProcessingEventConstructor AudioProcessingEvent;
   attribute OfflineAudioCompletionEventConstructor OfflineAudioCompletionEvent;
};

then CodeGenerator{JS,V8}.pm adds those attributes to DOMWindow.idl during code generation, which means that we do not need to touch WebCore code when we add/remove/edit webautio APIs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506740</commentid>
    <comment_count>1</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-20 23:48:58 -0800</bug_when>
    <thetext>Currently generate-bindings.pl reads an IDL file and then generates .h and .cpp files one by one, as follows:

foreach $idl (all IDL files) {
  generate-bindings.pl reads $idl;
  generate-bindings.pl generates .h and .cpp files for $idl;
}

On the other hand, in order to implement [Supplemental] IDL, somehow generate-bindings.pl needs to read all IDL files all at once, resolve Supplemental= dependencies and then generate .h and .cpp files, like this:

generate-bindings.pl reads all IDL files;
generate-bindings.pl resolves Supplemental=* dependencies;
generate-bindings.pl generates all .h and .cpp files;

It was easy to change generate-bindings.pl so that the above code works. However, I found that it is difficult to write build scripts so that the above code works. For example, in case of WebCore.gyp, we need to explicitly describe all output files of generate-bindings.pl (i.e. all .h and .cpp files) in WebCore.gyp, but I guess that there is no natural way to describe all the output files in the gyp file.


Then, the next approach I tried is as follows:

foreach $idl (all IDL files) {
  generate-bindings.pl reads all IDL files;
  generate-bindings.pl resolves Supplemental=$idl dependencies;
  generate-bindings.pl generates .h and .cpp files for $idl;
}

This approach requires no change in build scripts. However, in fact, reading all IDL files for __each__ IDL file was too heavy. While it takes 0.1 seconds to generate .h and .cpp files for one IDL file in the current trunk implementation, this approach takes 5 seconds. This is unacceptable.

So I am trying the next approach:

resolve-supplemental.pl (a new Perl script) reads all IDL files;
resolve-supplemental.pl resolves Supplemental=* dependencies;
resolve-supplemental.pl outputs the dependency graph to supplemental-dependency.graph;
foreach $idl (all IDL files) {
  generate-bindings.pl reads supplemental-dependency.graph;
  generate-bindings.pl generates .h and .cpp files for $idl;
}

In this approach, we need to change build scripts as follows; (1) introduce resolve-supplemental.pl, (2) resolve-supplemental.pl outputs supplemental-dependency.graph, and (3) generate-bindings.pl for each IDL file depends on supplemental-dependency.graph.

Any thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506781</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-21 01:00:04 -0800</bug_when>
    <thetext>Another consideration is whether touching one IDL will cause the build system to regenerate all the cpp and h files, which could lead to a larger incremental compile.

Maybe the way to handle that situation is instead of creating a single supplemental-dependency.graph, which would be a dependency of every IDL file, maybe resolve-supplemental.pl should create a separate output file for each IDL file.  That way each IDL file would just depend on it&apos;s supplemental information and not the entire graph.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506848</commentid>
    <comment_count>3</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-21 03:59:18 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Another consideration is whether touching one IDL will cause the build system to regenerate all the cpp and h files, which could lead to a larger incremental compile.
&gt; 
&gt; Maybe the way to handle that situation is instead of creating a single supplemental-dependency.graph, which would be a dependency of every IDL file, maybe resolve-supplemental.pl should create a separate output file for each IDL file.  That way each IDL file would just depend on it&apos;s supplemental information and not the entire graph.

Thank you, Adam!

Sorry for the confusion, but I noticed that, in the first place, we cannot make resolve-supplemental.pl depend on all IDLs because we should avoid listing all IDLs as gyp inputs for resolve-supplemental.pl.

Consequently, we need to _always_ (i.e. no matter if there is an update for any IDLs or not) run resolve-supplemental.pl and generate supplemental-dependency.graph. However, as you mentioned, this will cause the build system to regenerate all .h and .cpp files.

So my suggestion is as follows:

- resolve-supplemental.pl depends on nothing.
- resolve-supplemental.pl always runs.
- resolve-supplemental.pl reads all IDLs.
- resolve-supplemental.pl generates the dependency graph, and if and only if the graph is different from the current supplemental-dependency.graph, resolve-supplemental.pl updates supplemental-dependency.graph.
- generate-bindings.pl for each IDL depends on supplemental-dependency.graph.
- foreach $idl (all IDL files) {
      generate-bindings.pl reads supplemental-dependency.graph;
      generate-bindings.pl generates .h and .cpp files for $idl;
  }

In this case, I think that supplemental-dependency.graph can be a single file for simplicity. Any comments?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507082</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-21 11:02:07 -0800</bug_when>
    <thetext>&gt; In this case, I think that supplemental-dependency.graph can be a single file for simplicity. Any comments?

I see.  You&apos;re saying that the dependency graph itself won&apos;t change very often so it&apos;s ok to rebuild all the IDLs when it changes.  I think that&apos;s fair.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507214</commentid>
    <comment_count>5</comment_count>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-11-21 14:32:38 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; In this case, I think that supplemental-dependency.graph can be a single file for simplicity. Any comments?
&gt; 
&gt; I see.  You&apos;re saying that the dependency graph itself won&apos;t change very often so it&apos;s ok to rebuild all the IDLs when it changes.  I think that&apos;s fair.

We could create one dependency file per IDL later if excessive rebuilding proves to be a problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508929</commentid>
    <comment_count>6</comment_count>
      <attachid>116555</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-24 20:24:24 -0800</bug_when>
    <thetext>Created attachment 116555
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508930</commentid>
    <comment_count>7</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-24 20:24:52 -0800</bug_when>
    <thetext>&gt; Sorry for the confusion, but I noticed that, in the first place, 
&gt; we cannot make resolve-supplemental.pl depend on all IDLs 
&gt; because we should avoid listing all IDLs as gyp inputs for resolve-supplemental.pl.

Sorry for the confusion again:-) All IDL filies are already listed in gyp. In conclusion, the WIP patch implemented the following build flow:

resolve-supplemental.pl depends on all IDL files;
resolve-supplemental.pl reads all IDL files;
resolve-supplemental.pl resolves the dependency of [Supplemental=XXXX];
resolve-supplemental.pl outputs supplemental_dependency.tmp;
foreach $idl (all IDL files) {
    generate-bindings.pl depends on $idl and supplemental_dependency.tmp;
    generate-bindings.pl reads $idl;
    generate-bindings.pl reads supplemental_dependency.tmp;
    generate-bindings.pl generates .h and .cpp files for $idl, including all attributes in IDL files which are supplementing $idl;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508931</commentid>
    <comment_count>8</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-24 20:25:03 -0800</bug_when>
    <thetext>I uploaded a looong WIP patch. I am planning to commit it in the following sub-patches. I would be happy if you just take a rough look at ChangeLog of the WIP patch and detailed reviews on the upcoming sub-patches:

[1] Bug-fix: In run-bindings-tests, replace subprocess.call() with subprocess.Popen().
[2] Bug-fix: Change the current working directory of run-bindings-tests from WebCore/ to WebCore/Source/.
[3] Bug-fix: Let run-bindings-tests check the results for a newly added test IDL file.
[4] Refactoring: Make output messages of run-bindings-tests more readable.
[5] Refactoring: Refactor CodeGenerator*.pm to suppress style-check error messages for newly added test IDL files.
[6] In IDLParser.pm, move global variables&apos; initialization into InitializeGlobalData().
[7] Highlight: Make a change on resolve-supplemental.pl, generate-bindings.pl and run-bindings-tests to support the [Supplemental] IDL. Add TestSupplemental.idl.
[8] Remove rule_binding.py.
[9] Highlight: Add the [Supplemented] IDL to webaudio attributes in DOMWindow.idl. Add the [Supplemental=DOMWindow] to DOMWindowWebAudio.idl. Make a change on WebCore.gyp and action_derivedsourcesallinone.py.
[10-15?] Not yet investigated how to do it: Make a change on other build scripts. i.e. DerivedSources.make, DerivedSources.pri, GNUmakefile.am, PlatformBlackBerry.cmake, UseJSC.cmake, UseV8.cmake, WebCore.vcproj/MigrateScripts, WebCore.vcproj/WebCore.vcproj, bindings/gobject/GNUmakefile.am.
[16] Remove the [Supplemented] IDL completely.

Comments are appreciated!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508932</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-24 20:27:03 -0800</bug_when>
    <thetext>Attachment 116555 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/WebCor...&quot; exit_code: 1

Source/WebCore/bindings/scripts/test/V8/V8TestInterface.h:50:  The parameter name &quot;info&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp:127:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Source/WebCore/bindings/scripts/test/CPP/WebDOMTestInterface.cpp:31:  wtf includes should be &lt;wtf/file.h&gt; instead of &quot;wtf/file.h&quot;.  [build/include] [4]
Total errors found: 3 in 25 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>508933</commentid>
    <comment_count>10</comment_count>
      <attachid>116555</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-11-24 20:39:30 -0800</bug_when>
    <thetext>Comment on attachment 116555
WIP patch

Attachment 116555 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10642307</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508937</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-24 21:13:30 -0800</bug_when>
    <thetext>Thanks for the update.  I&apos;ll take a look in detail tomorrow afternoon.  In the meantime, please feel free to post your patches.  Your plan sounds reasonable on first glance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509042</commentid>
    <comment_count>12</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-25 01:54:56 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; I uploaded a looong WIP patch. I am planning to commit it in the following sub-patches. I would be happy if you just take a rough look at ChangeLog of the WIP patch and detailed reviews on the upcoming sub-patches:
&gt; 
&gt; [1] Bug-fix: In run-bindings-tests, replace subprocess.call() with subprocess.Popen().
&gt; [2] Bug-fix: Change the current working directory of run-bindings-tests from WebCore/ to WebCore/Source/.
&gt; [3] Bug-fix: Let run-bindings-tests check the results for a newly added test IDL file.
&gt; [4] Refactoring: Make output messages of run-bindings-tests more readable.
&gt; [5] Refactoring: Refactor CodeGenerator*.pm to suppress style-check error messages for newly added test IDL files.
&gt; [6] In IDLParser.pm, move global variables&apos; initialization into InitializeGlobalData().
&gt; [7] Highlight: Make a change on resolve-supplemental.pl, generate-bindings.pl and run-bindings-tests to support the [Supplemental] IDL. Add TestSupplemental.idl.
&gt; [8] Remove rule_binding.py.
&gt; [9] Highlight: Add the [Supplemented] IDL to webaudio attributes in DOMWindow.idl. Add the [Supplemental=DOMWindow] to DOMWindowWebAudio.idl. Make a change on WebCore.gyp and action_derivedsourcesallinone.py.
&gt; [10-15?] Not yet investigated how to do it: Make a change on other build scripts. i.e. DerivedSources.make, DerivedSources.pri, GNUmakefile.am, PlatformBlackBerry.cmake, UseJSC.cmake, UseV8.cmake, WebCore.vcproj/MigrateScripts, WebCore.vcproj/WebCore.vcproj, bindings/gobject/GNUmakefile.am.
&gt; [16] Remove the [Supplemented] IDL completely.
&gt; 
&gt; Comments are appreciated!

Thank you for the quick reviews, Adam.

Current status:
[1][2][4][6][8]: Fixed.
[5]: review? bug 73115
[3]: Please ignore this. I was wrong.

After [5] is landed, I will post [7], and then [9], and then [10-].</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511593</commentid>
    <comment_count>13</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-30 03:10:19 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #8)
&gt; &gt; [10-15?] Not yet investigated how to do it: Make a change on other build scripts. i.e. DerivedSources.make, DerivedSources.pri, GNUmakefile.am, PlatformBlackBerry.cmake, UseJSC.cmake, UseV8.cmake, WebCore.vcproj/MigrateScripts, WebCore.vcproj/WebCore.vcproj, bindings/gobject/GNUmakefile.am.
&gt; &gt; [16] Remove the [Supplemented] IDL completely.

Adam: I am not familiar with build scripts but my plan is as follows:

[10] Make a change on DerivedSources.make. (for Mac)
[11] Make a change on GNUmakefile.am and bindings/gobject/GNUmakefile.am. (for GTK)
[12] Make a change on DerivedSources.pri. (for Qt)
[13] Make a change on WebCore.vcproj/MigrateScripts and WebCore.vcproj/WebCore.vcproj. (for Win)
[14] Make a change on UseJSC.cmake, UseV8.cmake and PlatformBlackBerry.cmake. (for Efl, WinCE and BlackBerry)

However, before [10], if possible, I would like to add the [Supplemental] IDL to something (other than webaudio) which is being enabled by all platforms. This is because webaudio is disabled in platforms but Chromium, and thus we cannot confirm that the change to the build scripts works well or not. Any idea?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511851</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-30 10:18:01 -0800</bug_when>
    <thetext>&gt; However, before [10], if possible, I would like to add the [Supplemental] IDL to something (other than webaudio) which is being enabled by all platforms. This is because webaudio is disabled in platforms but Chromium, and thus we cannot confirm that the change to the build scripts works well or not. Any idea?

WebAudio is enabled on Mac, but I understand your point.  Here are some good candidates that should be widely enabled:

On DOMWindow:

attribute [Conditional=SQL_DATABASE] SQLExceptionConstructor SQLException;
[EnabledAtRuntime] Database openDatabase(in DOMString name, in DOMString version, in DOMString displayName, in unsigned long estimatedSize, in [Callback, Optional] DatabaseCallback creationCallback)
    raises(DOMException);

On Navigator:

readonly attribute [EnabledAtRuntime] Geolocation geolocation;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517355</commentid>
    <comment_count>15</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-12-08 06:14:40 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; &gt; However, before [10], if possible, I would like to add the [Supplemental] IDL to something (other than webaudio) which is being enabled by all platforms. This is because webaudio is disabled in platforms but Chromium, and thus we cannot confirm that the change to the build scripts works well or not. Any idea?
&gt; 
&gt; WebAudio is enabled on Mac, but I understand your point.  Here are some good candidates that should be widely enabled:
&gt; 
&gt; On DOMWindow:
&gt; 
&gt; attribute [Conditional=SQL_DATABASE] SQLExceptionConstructor SQLException;
&gt; [EnabledAtRuntime] Database openDatabase(in DOMString name, in DOMString version, in DOMString displayName, in unsigned long estimatedSize, in [Callback, Optional] DatabaseCallback creationCallback)
&gt;     raises(DOMException);
&gt; 
&gt; On Navigator:
&gt; 
&gt; readonly attribute [EnabledAtRuntime] Geolocation geolocation;

Adam: Thanks. I found that

- ENABLE_GEOLOCATION is enabled on Chromium, AppleWebKit, Gtk and BlackBerry only.
- ENABLE_SQL_DATABASE is enabled on all platforms, but it requires [Supplemental] IDL on methods (i.e. openDatabase()), which I&apos;ve not yet implemented.

Then, how about adding [Supplemental] IDL on window.WebSocket?

    attribute [JSCCustomGetter,EnabledAtRuntime] WebSocketConstructor WebSocket

ENABLE_WEB_SOCKETS is enabled on all platforms and it just requires [Supplemental] IDL on attributes, which I&apos;ve already implemented.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517428</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-12-08 08:18:18 -0800</bug_when>
    <thetext>Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518091</commentid>
    <comment_count>17</comment_count>
      <attachid>118525</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-12-08 21:10:45 -0800</bug_when>
    <thetext>Created attachment 118525
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528240</commentid>
    <comment_count>18</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-12-30 16:10:26 -0800</bug_when>
    <thetext>Adam: The current progress is as follows.

Done:
WebCore.gyp/WebCore.gyp (for Chromium)
DerivedSources.make (for Mac)
GNUmakefile.am (for GTK)
DerivedSources.pri (for Qt)
UseJSC.cmake and UseV8.cmake (for Efl and WinCE)

Not yet:
WebCore.vcproj/MigrateScripts (for Win)
WebCore.vcproj/WebCore.vcproj (for Win)
bindings/gobject/GNUmakefile.am (for GTK)
PlatformBlackBerry.cmake (for BlackBerry)

My concern is that I am not sure if I can make similar changes on the above four build scripts, since neither do they have build bots nor I have local build environments for them. It appears that bindings/gobject/GNUmakefile.am is not used for the gtk-ews build bot. The win-ews build bot appears to be using (not WebCore.vcproj/MigrateScripts and WebCore.vcproj/WebCore.vcproj but) DerivedSources.make.

Any idea? (May I ask for help in webkit-dev?)

Note: In order to remove the temporary [Supplemented] IDL from DOMWindow.idl, we need to enable the [Supplemental] IDL on *all* build systems which use generate-bindings.pl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528244</commentid>
    <comment_count>19</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-12-30 16:21:21 -0800</bug_when>
    <thetext>&gt; Any idea? (May I ask for help in webkit-dev?)

Asking for help on webkit-dev is probably a good idea.  We might want to include a bit of an explanation about [Supplemental] to give folks some more context.

I have an EC2 instance that I can boot up that can build the AppleWin port (or at least used to be able to).  It&apos;s a bit slow, but it might be helpful.  For AppleWin, specifically, we should talk with aroben.  He might be able to make this change fairly easily.  Emailing webkit-dev is likely to lead to useful contacts for the remaining build systems as well.

Generally, if ports don&apos;t have buildbots, it&apos;s hard for the project to keep them building.  We should certainly give folks some notice so they know that this change is going to happen, but at some point we need to move forward and make this a requirement.

Thanks for all your hard work so far.  We seem to be quite close.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528479</commentid>
    <comment_count>20</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-01-02 05:41:07 -0800</bug_when>
    <thetext>Adam: Let me update the current progress.

&gt; WebCore.vcproj/MigrateScripts (for AppleWin)
&gt; WebCore.vcproj/WebCore.vcproj (for AppleWin)

I first thought that we have not yet enabled the [Supplemental] IDL in AppleWin, but actually we have done it at the bug 74900. I uploaded a follow-up patch (bug 75412).

&gt; DerivedSources.make (for Mac)

I uploaded a follow-up patch (bug 75426).

&gt; bindings/gobject/GNUmakefile.am (for GTK)

I have learned that GTK/GObject is being built on the GTK build bot, i.e. we can confirm that my change is correct by watching the GTK build bot result. I uploaded a patch for enabling the [Supplemental] IDL on GTK/GObject (bug 75411).

&gt; PlatformBlackBerry.cmake (for BlackBerry)

I uploaded a patch for enabling the [Supplemental] IDL on BlackBerry (bug 75413). Since I have not yet confirmed that the BlackBerry build passes, we need to ask someone if the patch is correct or not.


After committing all these patches, I think

[1] we can remove all temporary code (e.g. [Supplemented] IDL) that I inserted to implement the [Supplemental] IDL incrementally.
[2] we can support the [Supplemental] IDL for methods.

Thanks for reviewing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528553</commentid>
    <comment_count>21</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-02 10:43:28 -0800</bug_when>
    <thetext>&gt; After committing all these patches, I think
&gt; 
&gt; [1] we can remove all temporary code (e.g. [Supplemented] IDL) that I inserted to implement the [Supplemental] IDL incrementally.
&gt; [2] we can support the [Supplemental] IDL for methods.

Fantastic!  Thanks for all your hard work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532845</commentid>
    <comment_count>22</comment_count>
      <attachid>121801</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-01-09 23:44:05 -0800</bug_when>
    <thetext>Created attachment 121801
WIP patch to see if build passes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532846</commentid>
    <comment_count>23</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-01-09 23:48:13 -0800</bug_when>
    <thetext>abarth: I uploaded a patch that implements the [Supplemental] IDL on methods and uses it in SQLDatabase. (ENABLE_SQL_DATABASE is enabled on all build systems.) After confirming that it works fine in all build systems, I&apos;ll commit the patch in the following steps:

[1] Make a change on generate-bindings.pl and TestSupplemental.idl
[2] Use the [Supplemental] IDL in SQLDatabase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532848</commentid>
    <comment_count>24</comment_count>
      <attachid>121802</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-01-09 23:53:24 -0800</bug_when>
    <thetext>Created attachment 121802
WIP patch to see if build passes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532849</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-09 23:55:58 -0800</bug_when>
    <thetext>Attachment 121802 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1

Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp:80:  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/GObject/WebKitDOMTestInterface.cpp:85:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Total errors found: 2 in 29 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>532884</commentid>
    <comment_count>26</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-01-10 01:26:23 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; abarth: I uploaded a patch that implements the [Supplemental] IDL on methods and uses it in SQLDatabase. (ENABLE_SQL_DATABASE is enabled on all build systems.) After confirming that it works fine in all build systems, I&apos;ll commit the patch in the following steps:
&gt; 
&gt; [1] Make a change on generate-bindings.pl and TestSupplemental.idl
&gt; [2] Use the [Supplemental] IDL in SQLDatabase

abarth: The patch for [1]: bug 75944</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564431</commentid>
    <comment_count>27</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-24 10:18:53 -0800</bug_when>
    <thetext>I think we can retire this meta bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116555</attachid>
            <date>2011-11-24 20:24:24 -0800</date>
            <delta_ts>2011-12-08 21:10:39 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-72138-20111125132423.patch</filename>
            <type>text/plain</type>
            <size>65609</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzk3YjFiZjY5MDUxNTU3
ZWM0MmVlNTdjN2QzOWJjYWNhNjdjNTc2Yy4uNWRmYzFlOTJiMWZkYjRhMzQ5ZTZjYTMzZjUwZGY2
MGRjZjAxNzNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNiBAQAorMjAxMS0xMS0yNCAgS2Vu
dGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV0lQOiBJbXBsZW1l
bnQgW1N1cHBsZW1lbnRhbF0gSURMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03MjEzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIC0gT3ZlcnZpZXc6IFRoaXMgcGF0Y2ggaW1wbGVtZW50cyB0aGUgW1N1cHBs
ZW1lbnRhbF0gSURMIG9uIENocm9taXVtIChpLmUuIFdlYkNvcmUuZ3lwKQorICAgICAgICBhbmQg
bW92ZXMgdGhlIHdlYmF1ZGlvIGRlY2xhcmF0aW9ucyBmcm9tIERPTVdpbmRvdy5pZGwgaW50byBh
IG5ldyBJREwgZmlsZQorICAgICAgICBpbiB0aGUgV2ViQ29yZS93ZWJhdWRpbyBkaXJlY3Rvcnks
IHdoaWNoIGhlbHBzIG1ha2Ugd2ViYXVkaW8gYSBzZWxmLWNvbnRhaW5lZAorICAgICAgICBmZWF0
dXJlIChha2EgYSBtb2R1bGUpLgorCisgICAgICAgIC0gVGhlIHNwZWMgZm9yIHRoZSBbU3VwcGxl
bWVudGFsXSBJREw6IGh0dHA6Ly9kZXYudzMub3JnLzIwMDYvd2ViYXBpL1dlYklETC8jZGZuLXN1
cHBsZW1lbnRhbC1pbnRlcmZhY2UKKworICAgICAgICAtIEluIG9yZGVyIHRvIHN1cHBvcnQgdGhl
IFtTdXBwbGVtZW50YWxdIElETCwgdGhpcyBwYXRjaCBjaGFuZ2VzIHRoZSBidWlsZCBmbG93IGFz
IGZvbGxvd3M6CisKKyAgICAgICAgICAgIFByZXZpb3VzIGJ1aWxkIGZsb3c6CisgICAgICAgICAg
ICAgICAgZm9yZWFjaCAkaWRsIChhbGwgSURMIGZpbGVzKSB7CisgICAgICAgICAgICAgICAgICAg
IGdlbmVyYXRlLWJpbmRpbmdzLnBsIGRlcGVuZHMgb24gJGlkbDsKKyAgICAgICAgICAgICAgICAg
ICAgZ2VuZXJhdGUtYmluZGluZ3MucGwgcmVhZHMgJGlkbDsKKyAgICAgICAgICAgICAgICAgICAg
Z2VuZXJhdGUtYmluZGluZ3MucGwgZ2VuZXJhdGVzIC5oIGFuZCAuY3BwIGZpbGVzIGZvciAkaWRs
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgTmV3IGJ1aWxkIGZsb3cgKFNlZSB0
aGUgZGlzY3Vzc2lvbnMgaW4gYnVnIDcyMTM4IGZvciBtb3JlIGRldGFpbHMpOgorICAgICAgICAg
ICAgICAgIHJlc29sdmUtc3VwcGxlbWVudGFsLnBsIGRlcGVuZHMgb24gYWxsIElETCBmaWxlczsK
KyAgICAgICAgICAgICAgICByZXNvbHZlLXN1cHBsZW1lbnRhbC5wbCByZWFkcyBhbGwgSURMIGZp
bGVzOworICAgICAgICAgICAgICAgIHJlc29sdmUtc3VwcGxlbWVudGFsLnBsIHJlc29sdmVzIHRo
ZSBkZXBlbmRlbmN5IG9mIFtTdXBwbGVtZW50YWw9WFhYWF07CisgICAgICAgICAgICAgICAgcmVz
b2x2ZS1zdXBwbGVtZW50YWwucGwgb3V0cHV0cyBzdXBwbGVtZW50YWxfZGVwZW5kZW5jeS50bXA7
CisgICAgICAgICAgICAgICAgZm9yZWFjaCAkaWRsIChhbGwgSURMIGZpbGVzKSB7CisgICAgICAg
ICAgICAgICAgICAgIGdlbmVyYXRlLWJpbmRpbmdzLnBsIGRlcGVuZHMgb24gJGlkbCBhbmQgc3Vw
cGxlbWVudGFsX2RlcGVuZGVuY3kudG1wOworICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZS1i
aW5kaW5ncy5wbCByZWFkcyAkaWRsOworICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZS1iaW5k
aW5ncy5wbCByZWFkcyBzdXBwbGVtZW50YWxfZGVwZW5kZW5jeS50bXA7CisgICAgICAgICAgICAg
ICAgICAgIGdlbmVyYXRlLWJpbmRpbmdzLnBsIGdlbmVyYXRlcyAuaCBhbmQgLmNwcCBmaWxlcyBm
b3IgJGlkbCwgaW5jbHVkaW5nIGFsbCBhdHRyaWJ1dGVzIGluIElETCBmaWxlcyB3aGljaCBhcmUg
c3VwcGxlbWVudGluZyAkaWRsOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAtIFRoaXMg
cGF0Y2ggaW50cm9kdWNlcyBhIHRlbXBvcmFyeSBJREwsIFtTdXBwbGVtZW50ZWRdLiBUaGUgW1N1
cHBsZW1lbnRlZF0gSURMCisgICAgICAgIHdpbGwgYmUgcmVtb3ZlZCBhZnRlciBidWlsZCBzY3Jp
cHRzIGZvciBhbGwgcGxhdGZvcm1zIHN1cHBvcnQgdGhlIFtTdXBwbGVtZW50YWxdIElETC4KKyAg
ICAgICAgVGhlIG1vdGl2YXRpb24gZm9yIHRoZSBbU3VwcGxlbWVudGVkXSBJREwgaXMgYXMgZm9s
bG93czoKKworICAgICAgICBJbiBvcmRlciB0byBzdXBwb3J0IHRoZSBbU3VwcGxlbWVudGFsXSBJ
REwsIHdlIG5lZWQgdG8KKyAgICAgICAgKDEpIHJ1biByZXNvbHZlLXN1cHBsZW1lbnRhbC5wbCBh
bmQgZ2VuZXJhdGUgc3VwcGxlbWVudGFsX2RlcGVuZGVuY3kudG1wCisgICAgICAgICgyKSBhbmQg
cnVuIGdlbmVyYXRlLWJpbmRpbmdzLnBsIHdpdGggdGhlIHN1cHBsZW1lbnRhbF9kZXBlbmRlbmN5
LnRtcC4KKworICAgICAgICBUaGlzIGJ1aWxkIGZsb3cgcmVxdWlyZXMgYSBjaGFuZ2Ugb24gdGhl
IGZvbGxvd2luZyBidWlsZCBzY3JpcHRzLAorICAgICAgICBidXQgY2hhbmdpbmcgYWxsIHRoZSBi
dWlsZCBzY3JpcHRzIGFsbCBhdCBvbmNlIHdpdGhvdXQgYW55IHJlZ3Jlc3Npb24gaXMgdG9vIGRp
ZmZpY3VsdDoKKworICAgICAgICAgICAgLSBEZXJpdmVkU291cmNlcy5tYWtlCisgICAgICAgICAg
ICAtIERlcml2ZWRTb3VyY2VzLnByaQorICAgICAgICAgICAgLSBHTlVtYWtlZmlsZS5hbQorICAg
ICAgICAgICAgLSBQbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKKyAgICAgICAgICAgIC0gVXNlSlND
LmNtYWtlCisgICAgICAgICAgICAtIFVzZVY4LmNtYWtlCisgICAgICAgICAgICAtIFdlYkNvcmUu
dmNwcm9qL01pZ3JhdGVTY3JpcHRzCisgICAgICAgICAgICAtIFdlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCisgICAgICAgICAgICAtIGJpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0K
KyAgICAgICAgICAgIC0gV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKKworICAgICAgICBUaHVzLCB3
ZSBhcmUgcGxhbm5pbmcgdG8gY2hhbmdlIHRoZSBidWlsZCBzY3JpcHRzIG9uZSBieSBvbmUsIHdo
aWNoIGltcGxpZXMgdGhhdAorICAgICAgICB3ZSBuZWVkIHRvIGFsbG93IHRoZSB0ZW1wb3Jhcnkg
c3RhdGUgaW4gd2hpY2ggc29tZSBidWlsZCBzY3JpcHRzIHN1cHBvcnQgW1N1cHBsZW1lbnRhbF0g
SURMCisgICAgICAgIGJ1dCBvdGhlcnMgZG8gbm90LiBUbyBhY2NvbXBsaXNoIHRoaXMsIHdlIGlu
dHJvZHVjZSBhIHRlbXBvcmFsIElETCwgW1N1cHBsZW1lbnRlZF0uCisgICAgICAgIFRoZSBbU3Vw
cGxlbWVudGVkXSBJREwgb24gYW4gYXR0cmlidXRlIG1lYW5zIHRoYXQgdGhlIGF0dHJpYnV0ZSBp
cyBtYXJrZWQgd2l0aCBbU3VwcGxlbWVudGFsXQorICAgICAgICBpbiBhbm90aGVyIElETCBmaWxl
IHNvbWV3aGVyZSwgbGlrZSB0aGlzOgorCisgICAgICAgICAgICBET01XaW5kb3dXZWJBdWRpby5p
ZGw6CisgICAgICAgICAgICAgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgICAgICAgICAgICAgU3Vw
cGxlbWVudGFsPURPTVdpbmRvdworICAgICAgICAgICAgICAgIF0gRE9NV2luZG93V2ViQXVkaW8g
eworICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgYXR0cjE7CisgICAgICAgICAgICAgICAg
ICAgIGF0dHJpYnV0ZSBhdHRyMjsKKyAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICBE
T01XaW5kb3cuaWRsOgorICAgICAgICAgICAgICAgIGludGVyZmFjZSBbCisgICAgICAgICAgICAg
ICAgXSBET01XaW5kb3cgeworICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW1N1cHBsZW1l
bnRlZF0gYXR0cjE7IC8vIFRoaXMgbGluZSB3aWxsIGJlIHJlbW92ZWQgYWZ0ZXIgYWxsIGJ1aWxk
IHNjcmlwdHMgc3VwcG9ydCB0aGUgW1N1cHBsZW1lbnRhbF0gSURMCisgICAgICAgICAgICAgICAg
ICAgIGF0dHJpYnV0ZSBbU3VwcGxlbWVudGVkXSBhdHRyMjsgLy8gVGhpcyBsaW5lIHdpbGwgYmUg
cmVtb3ZlZCBhZnRlciBhbGwgYnVpbGQgc2NyaXB0cyBzdXBwb3J0IHRoZSBbU3VwcGxlbWVudGFs
XSBJREwuCisgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBhdHRyMzsKKyAgICAgICAgICAg
ICAgICAgICAgYXR0cmlidXRlIGF0dHI0OworICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAg
QXNzdW1pbmcgdGhlc2UgSURMIGZpbGVzLCB0aGlzIHBhdGNoIGltcGxlbWVudHMgdGhlIGZvbGxv
d2luZyBsb2dpYyBpbiBnZW5lcmF0ZS1iaW5kaW5ncy5wbDoKKworICAgICAgICAgICAgLSBJZiBh
IGdpdmVuIGJ1aWxkIHNjcmlwdCBzdXBwb3J0cyB0aGUgW1N1cHBsZW1lbnRhbF0gSURMLAorICAg
ICAgICAgICAgZ2VuZXJhdGUtYmluZGluZ3MucGwgaWdub3JlcyBhbGwgYXR0cmlidXRlcyB3aXRo
IHRoZSBbU3VwcGxlbWVudGVkXSBJREwuCisgICAgICAgICAgICAtIE90aGVyd2lzZSwgZ2VuZXJh
dGUtYmluZGluZ3MucGwgdHJlYXRzIGFsbCBhdHRyaWJ1dGVzIHdpdGggdGhlIFtTdXBwbGVtZW50
ZWRdIElETAorICAgICAgICAgICAgYXMgbm9ybWFsIGF0dHJpYnV0ZXMgYW5kIGluc3RlYWQgaWdu
b3JlcyBhbGwgYXR0cmlidXRlcyB3aXRoIHRoZSBbU3VwcGxlbWVudGFsXSBJREwKKyAgICAgICAg
ICAgIChpLmUuIGdlbmVyYXRlLWJpbmRpbmdzLnBsIGdlbmVyYXRlcyBub3RoaW5nIGZyb20gdGhl
IElETCBmaWxlIHdpdGggdGhlIFtTdXBwbGVtZW50YWxdIElETCkuCisKKyAgICAgICAgVGVzdHM6
IHdlYmF1ZGlvLyoKKyAgICAgICAgICAgICAgIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0U3Vw
cGxlbWVudGFsLmlkbAorCisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOiBBZGRlZCB0aGUg
W1N1cHBsZW1lbnRlZF0gSURMIHRvIHdlYmF1ZGlvLXJlbGF0ZWQgYXR0cmlidXRlcy4gQXMgSSBk
ZXNjcmliZWQgYWJvdmUsIHRoZSBbU3VwcGxlbWVudGVkXSBJREwgd2lsbCBiZSByZW1vdmVkIGFm
dGVyIGFsbCBwbGF0Zm9ybXMgc3VwcG9ydCB0aGUgW1N1cHBsZW1lbnRhbF0gSURMLgorICAgICAg
ICAqIHdlYmF1ZGlvL0RPTVdpbmRvd1dlYkF1ZGlvLmlkbDogQWRkZWQuIERlc2NyaWJlcyB0aGUg
W1N1cHBsZW1lbnRhbD1ET01XaW5kb3ddIElETC4gVGhlIGF0dHJpYnV0ZXMgaW4gdGhpcyBJREwg
ZmlsZSBzaG91bGQgYmUgdHJlYXRlZCBhcyBpZiB0aGV5IGFyZSB3cml0dGVuIGluIERPTVdpbmRv
dy5pZGwuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cC9XZWJDb3JlLmd5cDogRGVzY3JpYmVzIHRo
ZSBidWlsZCBmbG93IHRoYXQgSSBkZXNjcmliZWQgYWJvdmUuCisgICAgICAgICogV2ViQ29yZS5n
eXAvc2NyaXB0cy9hY3Rpb25fZGVyaXZlZHNvdXJjZXNhbGxpbm9uZS5weToKKyAgICAgICAgKG1h
aW4pOiBSZWFkcyB0aGUgSURMIGZpbGUgbmFtZXMgZnJvbSB0aGUgaW5wdXQgZmlsZSAoaS5lLiBz
dXBwbGVtZW50YWxfZGVwZW5kZW5jeS50bXApLCB3aGljaCBhcmUgZGVzY3JpYmVkIGF0IHRoZSBm
aXJzdCBjb2x1bW4gb2YgZWFjaCBsaW5lIGluIHRoZSBpbnB1dCBmaWxlLgorICAgICAgICAqIFdl
YkNvcmUuZ3lwL3NjcmlwdHMvcnVsZV9iaW5kaW5nLnB5OiBSZW1vdmVkLiBUaGlzIHB5dGhvbiBz
Y3JpcHQgd2FzIGp1c3QgYSB3cmFwcGVyIGZvciBnZW5lcmF0ZS1iaW5kaW5ncy5wbCBhbmQgSSBj
b25jbHVkZWQgdGhhdCB0aGlzIGlzIGluIGZhY3QgdW5uZWNlc3NhcnkuCisgICAgICAgICogV2Vi
Q29yZS5neXBpOiBBZGRlZCBET01XaW5kb3dXZWJBdWRpby5pZGwuCisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbToKKyAgICAgICAgKCk6IEFkZGVkICIx
OyIgYXQgdGhlIGVuZCBhcyB0aGlzIHBlcmwgc2NyaXB0IGlzIGxvYWRlZCBhcyBhIHBhY2thZ2Uu
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAg
ICgpOiBEaXR0by4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbToKKyAg
ICAgICAgKEluaXRpYWxpemVHbG9iYWxEYXRhKTogUHJldmlvdXNseSwgZ2xvYmFsIHZhcmlhYmxl
cyBoYWQgYmVlbiBpbml0aWFsaXplZCBpbiBhIGdsb2JhbCBzY29wZSwgd2hpY2ggbWVhbnMgdGhh
dCB0aGUgZ2xvYmFsIHZhcmlhYmxlcyBhcmUgaW5pdGlhbGl6ZWQganVzdCBvbmNlIGF0IHRoZSBi
ZWdpbm5pbmcuIE9uIHRoZSBvdGhlciBoYW5kLCBub3cgZ2VuZXJhdGUtYmluZGluZ3MucGwgcmVx
dWlyZXMgdGhlIGdsb2JhbCB2YXJpYWJsZXMgdG8gYmUgaW5pdGlhbGl6ZWQgd2hlbmV2ZXIgYSBu
ZXcgUGFyc2VyIG9iamVjdCBpcyBjcmVhdGVkLiBUaHVzIHRoaXMgcGF0Y2ggbW92ZXMgdGhlIGlu
aXRpYWxpemF0aW9uIGNvZGUgaW50byBJbml0aWFsaXplR2xvYmFsRGF0YSgpIGFuZCBjYWxscyBp
dCB3aGVuZXZlciBhIG5ldyBQYXJzZXIgb2JqZWN0IGlzIGNyZWF0ZWQuCisgICAgICAgIChuZXcp
OiBDYWxscyBJbml0aWFsaXplR2xvYmFsRGF0YSgpLgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvcmVzb2x2ZS1zdXBwbGVtZW50YWwucGw6IEFkZGVkLiBUaGlzIHBlcmwgc2NyaXB0IHJlYWRz
IGFsbCBJREwgZmlsZXMsIHJlc29sdmVzIFtTdXBwbGVtZW50YWw9WFhYXSBkZXBlbmRlbmNpZXMs
IGFuZCB0aGVuIG91dHB1dHMgdGhlIGRlcGVuZGVuY3kgKGkuZS4gc3VwcGxlbWVudGFsX2RlcGVu
ZGVuY3kudG1wKS4gU2VlIHRoZSBjb21tZW50IGluIHRoZSBzY3JpcHQgZm9yIHRoZSBmb3JtYXQg
b2YgdGhlIG91dHB1dCBmaWxlLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUt
YmluZGluZ3MucGw6IFRoZSBpbnB1dCBpcyBhbiBJREwgZmlsZSB8eHwgYW5kIHRoZSBkZXBlbmRl
bmN5IGZpbGUgKGkuZS4gc3VwcGxlbWVudGFsX2RlcGVuZGVuY3kudG1wKS4gVGhpcyBwZXJsIHNj
cmlwdCBnZW5lcmF0ZXMgLmggYW5kIC5jcHAgZmlsZXMgZm9yIHRoZSBJREwgZmlsZSB8eHwsIGlu
Y2x1ZGluZyBhbGwgdGhlIGF0dHJpYnV0ZXMgaW4gdGhlIElETCBmaWxlcyB3aGljaCBhcmUgc3Vw
cGxlbWVudGluZyB0aGUgSURMIGZpbGUgfHh8LiBBcyBhIHRlbXBvcmFyeSBzb2x1dGlvbiwgaWYg
dGhlIHBsYXRmb3JtIGRvZXMgbm90IHN1cHBvcnQgdGhlIFtTdXBwbGVtZW50YWxdIElETCwgdGhl
IHBlcmwgc2NyaXB0IGlnbm9yZXMgdGhlIFtTdXBwbGVtZW50YWxdIElETCBhbmQgaW5zdGVhZCB1
c2VzIHRoZSBbU3VwcGxlbWVudGVkXSBJREwuIE90aGVyd2lzZSwgdGhlIHBlcmwgc2NyaXB0IGln
bm9yZXMgdGhlIFtTdXBwbGVtZW50ZWRdIElETCBhbmQgaW5zdGVhZCB1c2VzIHRoZSBbU3VwcGxl
bWVudGFsXSBJREwuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzb3IucG06
CisgICAgICAgIChhcHBseVByZXByb2Nlc3Nvcik6IFdoZW4gJyJFTkFCTEVfU09NRVRISU5HPTEi
ICJFTkFCTEVfT1RIRVJTPTAiJyBpcyBwYXNzZWQgYXMgYSBkZWZpbmUgbWFjcm8sIF9zb21ldGlt
ZXNfIHRoZSBzdHJpbmcgaXMgcGFzc2VkIHRvIG91ciBwZXJsIHNjcmlwdHMgd2l0aG91dCB0aGUg
ZG91YmxlLXF1b3RhdGlvbnMgKCIpIG9taXR0ZWQuIFRoaXMgbWF5IGJlIGEgYnVnIG9mIGd5cCBi
dXQgYW55d2F5IHdlIGV4cGxpY2l0bHkgb21pdCB0aGUgZG91YmxlIHF1YXRhdGlvbnMgaGVyZS4K
KworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0U3VwcGxlbWVudGFsLmlkbDog
QWRkZWQuIFRoZSB0ZXN0IGNhc2UgZm9yIHRoZSBbU3VwcGxlbWVudGFsXSBJREwuIFRoZSBhdHRy
aWJ1dGVzIGluIHRoaXMgSURMIGZpbGUgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgaWYgdGhleSBhcmUg
d3JpdHRlbiBpbiBUZXN0SW50ZXJmYWNlLmlkbC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvQ1BQL1dlYkRPTVRlc3RJbnRlcmZhY2UuY3BwOiBVcGRhdGVkIHRoZSBydW4tYmluZGlu
Z3MtdGVzdHMgcmVzdWx0LgorICAgICAgICAoV2ViRE9NVGVzdEludGVyZmFjZTo6c3RyMSk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0SW50ZXJmYWNlLmg6
IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERP
TVRlc3RJbnRlcmZhY2UuY3BwOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9pbnRl
cmZhY2VfZ2V0X3N0cjEpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9nZXRf
cHJvcGVydHkpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9jbGFzc19pbml0
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0
SW50ZXJmYWNlLmg6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJbnRlcmZhY2UuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVy
ZmFjZVN0cjEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlU3RyMik6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oOiBEaXR0by4K
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJmYWNlLmg6
IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRl
cmZhY2UubW06IERpdHRvLgorICAgICAgICAoLVtET01UZXN0SW50ZXJmYWNlIHN0cjFdKToKKyAg
ICAgICAgKC1bRE9NVGVzdEludGVyZmFjZSBzdHIyXSk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdEludGVyZmFjZUludGVybmFsOjpzdHIxQXR0ckdldHRlcik6CisgICAgICAgIChXZWJD
b3JlOjpDb25maWd1cmVWOFRlc3RJbnRlcmZhY2VUZW1wbGF0ZSk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oOiBEaXR0by4KKwogMjAxMS0xMS0y
NCAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBbQ01h
a2VdIEJ1aWxkIGZpeCBmb3IgTk9UIEVOQUJMRV9XRUJfU09DS0VUUy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXAvV2ViQ29yZS5neXAKaW5kZXggMGYwMzk0ZmM4ZWMwZDVkMTU1OTQwODA4NTEyMDc5
Mjk1MDQ3MWJmNi4uZWQxMTZmY2IyODJkNWJiNDViZWVhZjc5MGNkYzUwOTI3YTA4YmRlMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKQEAgLTQ0Niw2ICs0NDYsNDIgQEAK
ICAgICAgIF0KICAgICB9LAogICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICdnZW5lcmF0ZV9z
dXBwbGVtZW50YWxfZGVwZW5kZW5jeScsCisgICAgICAndHlwZSc6ICdub25lJywKKyAgICAgICdh
Y3Rpb25zJzogWworICAgICAgICAgeworICAgICAgICAgICdhY3Rpb25fbmFtZSc6ICdnZW5lcmF0
ZVN1cHBsZW1lbnRhbERlcGVuZGVuY3knLAorICAgICAgICAgICd2YXJpYWJsZXMnOiB7CisgICAg
ICAgICAgICAjIFdyaXRlIHNvdXJjZXMgaW50byBhIGZpbGUsIHNvIHRoYXQgdGhlIGFjdGlvbiBj
b21tYW5kIGxpbmUgd29uJ3QKKyAgICAgICAgICAgICMgZXhjZWVkIE9TIGxpbWl0ZXMuCisgICAg
ICAgICAgICAnaWRsX2ZpbGVzX2xpc3QnOiAnPHwoaWRsX2ZpbGVzX2xpc3QudG1wIDxAKGJpbmRp
bmdzX2lkbF9maWxlcykpJywKKyAgICAgICAgICB9LAorICAgICAgICAgICdpbnB1dHMnOiBbCisg
ICAgICAgICAgICAnLi4vYmluZGluZ3Mvc2NyaXB0cy9yZXNvbHZlLXN1cHBsZW1lbnRhbC5wbCcs
CisgICAgICAgICAgICAnLi4vYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0nLAorICAgICAg
ICAgICAgJzwoaWRsX2ZpbGVzX2xpc3QpJywKKyAgICAgICAgICAgICc8IUAoY2F0IDwoaWRsX2Zp
bGVzX2xpc3QpKScsCisgICAgICAgICAgXSwKKyAgICAgICAgICAnb3V0cHV0cyc6IFsKKyAgICAg
ICAgICAgICdzdXBwbGVtZW50YWxfZGVwZW5kZW5jeS50bXAnLAorICAgICAgICAgIF0sCisgICAg
ICAgICAgJ2FjdGlvbic6IFsKKyAgICAgICAgICAgICdwZXJsJywKKyAgICAgICAgICAgICctdycs
CisgICAgICAgICAgICAnLUkuLi9iaW5kaW5ncy9zY3JpcHRzJywKKyAgICAgICAgICAgICcuLi9i
aW5kaW5ncy9zY3JpcHRzL3Jlc29sdmUtc3VwcGxlbWVudGFsLnBsJywKKyAgICAgICAgICAgICct
LWRlZmluZXMnLAorICAgICAgICAgICAgJzwoZmVhdHVyZV9kZWZpbmVzKSBMQU5HVUFHRV9KQVZB
U0NSSVBUIFY4X0JJTkRJTkcnLAorICAgICAgICAgICAgJy0taWRsRmlsZXNMaXN0JywKKyAgICAg
ICAgICAgICc8KGlkbF9maWxlc19saXN0KScsCisgICAgICAgICAgICAnLS1zdXBwbGVtZW50YWxE
ZXBlbmRlbmN5RmlsZScsCisgICAgICAgICAgICAnc3VwcGxlbWVudGFsX2RlcGVuZGVuY3kudG1w
JywKKyAgICAgICAgICBdLAorICAgICAgICAgICdtZXNzYWdlJzogJ1Jlc29sdmluZyBbU3VwcGxl
bWVudGFsPVhYWF0gZGVwZW5kZW5jaWVzIGluIGFsbCBJREwgZmlsZXMnLAorICAgICAgICB9Cisg
ICAgICBdCisgICAgfSwKKyAgICB7CiAgICAgICAndGFyZ2V0X25hbWUnOiAnd2ViY29yZV9iaW5k
aW5nc19zb3VyY2VzJywKICAgICAgICd0eXBlJzogJ25vbmUnLAogICAgICAgJ2hhcmRfZGVwZW5k
ZW5jeSc6IDEsCkBAIC04NjEsMTUgKzg5Nyw5IEBACiAgICAgICAgIH0sCiAgICAgICAgIHsKICAg
ICAgICAgICAnYWN0aW9uX25hbWUnOiAnZGVyaXZlZF9zb3VyY2VzX2FsbF9pbl9vbmUnLAotICAg
ICAgICAgICd2YXJpYWJsZXMnOiB7Ci0gICAgICAgICAgICAjIFdyaXRlIHNvdXJjZXMgaW50byBh
IGZpbGUsIHNvIHRoYXQgdGhlIGFjdGlvbiBjb21tYW5kIGxpbmUgd29uJ3QKLSAgICAgICAgICAg
ICMgZXhjZWVkIE9TIGxpbWl0ZXMuCi0gICAgICAgICAgICAnaWRsc19saXN0X3RlbXBfZmlsZSc6
ICc8fChpZGxzX2xpc3RfdGVtcF9maWxlLnRtcCA8QChiaW5kaW5nc19pZGxfZmlsZXMpKScsCi0g
ICAgICAgICAgfSwKICAgICAgICAgICAnaW5wdXRzJzogWwogICAgICAgICAgICAgJ3NjcmlwdHMv
YWN0aW9uX2Rlcml2ZWRzb3VyY2VzYWxsaW5vbmUucHknLAotICAgICAgICAgICAgJzwoaWRsc19s
aXN0X3RlbXBfZmlsZSknLAotICAgICAgICAgICAgJzwhQChjYXQgPChpZGxzX2xpc3RfdGVtcF9m
aWxlKSknLAorICAgICAgICAgICAgJ3N1cHBsZW1lbnRhbF9kZXBlbmRlbmN5LnRtcCcsCiAgICAg
ICAgICAgXSwKICAgICAgICAgICAnb3V0cHV0cyc6IFsKICAgICAgICAgICAgICc8QChkZXJpdmVk
X3NvdXJjZXNfYWdncmVnYXRlX2ZpbGVzKScsCkBAIC04NzcsNyArOTA3LDcgQEAKICAgICAgICAg
ICAnYWN0aW9uJzogWwogICAgICAgICAgICAgJ3B5dGhvbicsCiAgICAgICAgICAgICAnc2NyaXB0
cy9hY3Rpb25fZGVyaXZlZHNvdXJjZXNhbGxpbm9uZS5weScsCi0gICAgICAgICAgICAnPChpZGxz
X2xpc3RfdGVtcF9maWxlKScsCisgICAgICAgICAgICAnc3VwcGxlbWVudGFsX2RlcGVuZGVuY3ku
dG1wJywKICAgICAgICAgICAgICctLScsCiAgICAgICAgICAgICAnPEAoZGVyaXZlZF9zb3VyY2Vz
X2FnZ3JlZ2F0ZV9maWxlcyknLAogICAgICAgICAgIF0sCkBAIC05MzAsNiArOTYwLDcgQEAKICAg
ICAgICAgICAgICcuLi9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbScsCiAgICAgICAgICAg
ICAnLi4vYmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1Y3R1cmUucG0nLAogICAgICAgICAgICAgJy4u
L2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzc29yLnBtJywKKyAgICAgICAgICAgICdzdXBwbGVt
ZW50YWxfZGVwZW5kZW5jeS50bXAnLAogICAgICAgICAgIF0sCiAgICAgICAgICAgJ291dHB1dHMn
OiBbCiAgICAgICAgICAgICAjIEZJWE1FOiAgVGhlIC5jcHAgZmlsZSBzaG91bGQgYmUgaW4gd2Vi
a2l0L2JpbmRpbmdzIG9uY2UKQEAgLTk2MiwxNyArOTkzLDIyIEBACiAgICAgICAgICAgIyBmcm9t
IGxpc3RzLiAgV2hlbiB3ZSBoYXZlIGEgYmV0dGVyIEdZUCB3YXkgdG8gc3VwcHJlc3MgdGhhdAog
ICAgICAgICAgICMgYmVoYXZpb3IsIGNoYW5nZSB0aGUgb3V0cHV0IGxvY2F0aW9uLgogICAgICAg
ICAgICdhY3Rpb24nOiBbCi0gICAgICAgICAgICAncHl0aG9uJywKLSAgICAgICAgICAgICdzY3Jp
cHRzL3J1bGVfYmluZGluZy5weScsCi0gICAgICAgICAgICAnPChSVUxFX0lOUFVUX1BBVEgpJywK
LSAgICAgICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJjb3JlL2JpbmRpbmdz
JywKKyAgICAgICAgICAgICdwZXJsJywKKyAgICAgICAgICAgICctdycsCisgICAgICAgICAgICAn
LUkuLi9iaW5kaW5ncy9zY3JpcHRzJywKKyAgICAgICAgICAgICcuLi9iaW5kaW5ncy9zY3JpcHRz
L2dlbmVyYXRlLWJpbmRpbmdzLnBsJywKKyAgICAgICAgICAgICctLW91dHB1dEhlYWRlcnNEaXIn
LAogICAgICAgICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmtpdC9iaW5kaW5n
cycsCi0gICAgICAgICAgICAnLS0nLAotICAgICAgICAgICAgJzxAKF9pbnB1dHMpJywKLSAgICAg
ICAgICAgICctLScsCi0gICAgICAgICAgICAnLS1kZWZpbmVzJywgJzwoZmVhdHVyZV9kZWZpbmVz
KSBMQU5HVUFHRV9KQVZBU0NSSVBUIFY4X0JJTkRJTkcnLAotICAgICAgICAgICAgJy0tZ2VuZXJh
dG9yJywgJ1Y4JywKLSAgICAgICAgICAgICc8QChnZW5lcmF0b3JfaW5jbHVkZV9kaXJzKScKKyAg
ICAgICAgICAgICctLW91dHB1dERpcicsCisgICAgICAgICAgICAnPChTSEFSRURfSU5URVJNRURJ
QVRFX0RJUikvd2ViY29yZS9iaW5kaW5ncycsCisgICAgICAgICAgICAnLS1kZWZpbmVzJywKKyAg
ICAgICAgICAgICc8KGZlYXR1cmVfZGVmaW5lcykgTEFOR1VBR0VfSkFWQVNDUklQVCBWOF9CSU5E
SU5HJywKKyAgICAgICAgICAgICctLWdlbmVyYXRvcicsCisgICAgICAgICAgICAnVjgnLAorICAg
ICAgICAgICAgJzxAKGdlbmVyYXRvcl9pbmNsdWRlX2RpcnMpJywKKyAgICAgICAgICAgICctLXN1
cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlJywKKyAgICAgICAgICAgICdzdXBwbGVtZW50YWxfZGVw
ZW5kZW5jeS50bXAnLAorICAgICAgICAgICAgJzwoUlVMRV9JTlBVVF9QQVRIKScsCiAgICAgICAg
ICAgXSwKICAgICAgICAgICAnbWVzc2FnZSc6ICdHZW5lcmF0aW5nIGJpbmRpbmcgZnJvbSA8KFJV
TEVfSU5QVVRfUEFUSCknLAogICAgICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXAvc2NyaXB0cy9hY3Rpb25fZGVyaXZlZHNvdXJjZXNhbGxpbm9uZS5weSBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL3NjcmlwdHMvYWN0aW9uX2Rlcml2ZWRzb3VyY2VzYWxs
aW5vbmUucHkKaW5kZXggNTg2MDcxYmZjMDgwMWQ0YzY0YjY4Yjc4NzMxMmYyMmM1YzI4ZjNhYS4u
NDJjNDVlNzE1MTNlZDk2YWNkZWI4YTgwZmJhYjNjYTNjM2YyNzhkZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvc2NyaXB0cy9hY3Rpb25fZGVyaXZlZHNvdXJjZXNhbGxp
bm9uZS5weQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9zY3JpcHRzL2FjdGlvbl9k
ZXJpdmVkc291cmNlc2FsbGlub25lLnB5CkBAIC0zMiwxMiArMzIsMTIgQEAKICMgVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQogIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogCi0jIGFjdGlvbl9kZXJpdmVkc291
cmNlc2xpc3QucHkgZ2VuZXJhdGVzIGEgc2luZ2xlIGNwcCBmaWxlIHRoYXQgaW5jbHVkZXMKKyMg
YWN0aW9uX2Rlcml2ZWRzb3VyY2VzYWxsaW5vbmUucHkgZ2VuZXJhdGVzIGEgc2luZ2xlIGNwcCBm
aWxlIHRoYXQgaW5jbHVkZXMKICMgYWxsIHY4IGJpbmRpbmdzIGNwcCBmaWxlcyBnZW5lcmF0ZWQg
ZnJvbSBpZGxzLiBGaWxlcyBjYW4gYmUgYXNzaWduZWQgaW50bwogIyBtdWx0aXBsZSBvdXRwdXQg
ZmlsZXMsIHRvIHJlZHVjZSBtYXhpbXVtIGNvbXBpbGF0aW9uIHVuaXQgc2l6ZSBhbmQgYWxsb3cK
ICMgcGFyYWxsZWwgY29tcGlsYXRpb24uCiAjCi0jIHVzYWdlOiBhY3Rpb25fZGVyaXZlZHNvdXJj
ZXNsaXN0LnB5IElETF9GSUxFU19MSVNUIC0tIE9VVFBVVF9GSUxFMSBPVVRQVVRfRklMRTIgLi4u
CisjIHVzYWdlOiBhY3Rpb25fZGVyaXZlZHNvdXJjZXNhbGxpbm9uZS5weSBJRExfRklMRVNfTElT
VCAtLSBPVVRQVVRfRklMRTEgT1VUUFVUX0ZJTEUyIC4uLgogIwogIyBOb3RlIHRoYXQgSURMX0ZJ
TEVTX0xJU1QgaXMgYSB0ZXh0IGZpbGUgY29udGFpbmluZyB0aGUgSURMIGZpbGUgcGF0aHMuCiAK
QEAgLTE4Niw3ICsxODYsOSBAQCBkZWYgbWFpbihhcmdzKToKICAgICBvdXRwdXRGaWxlTmFtZXMg
PSBhcmdzW2luT3V0QnJlYWtJbmRleCsxOl0KIAogICAgIGlucHV0RmlsZSA9IG9wZW4oaW5wdXRG
aWxlTmFtZSwgJ3InKQotICAgIGlkbEZpbGVOYW1lcyA9IGlucHV0RmlsZS5yZWFkKCkuc3BsaXQo
J1xuJykKKyAgICBpZGxGaWxlTmFtZXMgPSBbXQorICAgIGZvciBsaW5lIGluIGlucHV0RmlsZToK
KyAgICAgICAgaWRsRmlsZU5hbWVzLmFwcGVuZChsaW5lWzotMV0uc3BsaXQoJyAnKVswXSkKICAg
ICBpbnB1dEZpbGUuY2xvc2UoKQogCiAgICAgZmlsZXNNZXRhRGF0YSA9IGV4dHJhY3RNZXRhRGF0
YShpZGxGaWxlTmFtZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9z
Y3JpcHRzL3J1bGVfYmluZGluZy5weSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL3Njcmlw
dHMvcnVsZV9iaW5kaW5nLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NTU4NzZi
MTg5OTY2YmMyZDU1NjUxOGVhZjMyNTg4Y2ZmOWVmOWJjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL3Njcmlw
dHMvcnVsZV9iaW5kaW5nLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLSMhL3Vz
ci9iaW4vcHl0aG9uCi0jCi0jIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotIyAKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0Ogot
IyAKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMgCi0jIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSMKLSMgQ29weXJpZ2h0IChjKSAy
MDA5IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCi0jIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0KLSMgdXNhZ2U6IHJ1bGVfYmlu
ZGluZy5weSBJTlBVVCBDUFBESVIgSERJUiAtLSBJTlBVVFMgLS0gT1BUSU9OUwotIwotIyBJTlBV
VCBpcyBhbiBJREwgZmlsZSwgc3VjaCBhcyBXaGF0ZXZlci5pZGwuCi0jCi0jIENQUERJUiBpcyB0
aGUgZGlyZWN0b3J5IGludG8gd2hpY2ggVjhXaGF0ZXZlci5jcHAgd2lsbCBiZSBwbGFjZWQuIEhE
SVIgaXMKLSMgdGhlIGRpcmVjdG9yeSBpbnRvIHdoaWNoIFY4V2hhdGV2ZXIuaCB3aWxsIGJlIHBs
YWNlZC4KLSMKLSMgVGhlIGZpcnN0IGl0ZW0gaW4gSU5QVVRTIGlzIHRoZSBwYXRoIHRvIGdlbmVy
YXRlLWJpbmRpbmdzLnBsLiBSZW1haW5pbmcKLSMgaXRlbXMgaW4gSU5QVVRTIGFyZSB1c2VkIHRv
IGJ1aWxkIHRoZSBQZXJsIG1vZHVsZSBpbmNsdWRlIHBhdGguCi0jCi0jIE9QVElPTlMgYXJlIHBh
c3NlZCBhcy1pcyB0byBnZW5lcmF0ZS1iaW5kaW5ncy5wbCBhcyBhZGRpdGlvbmFsIGFyZ3VtZW50
cy4KLQotCi1pbXBvcnQgZXJybm8KLWltcG9ydCBvcwotaW1wb3J0IHNobGV4Ci1pbXBvcnQgc2h1
dGlsCi1pbXBvcnQgc3VicHJvY2VzcwotaW1wb3J0IHN5cwotCi0KLWRlZiBTcGxpdEFyZ3NJbnRv
U2VjdGlvbnMoYXJncyk6Ci0gICAgc2VjdGlvbnMgPSBbXQotICAgIHdoaWxlIGxlbihhcmdzKSA+
IDA6Ci0gICAgICAgIGlmIG5vdCAnLS0nIGluIGFyZ3M6Ci0gICAgICAgICAgICAjIElmIHRoZXJl
IGlzIG5vICctLScgbGVmdCwgZXZlcnl0aGluZyByZW1haW5pbmcgaXMgYW4gZW50aXJlIHNlY3Rp
b24uCi0gICAgICAgICAgICBkYXNoZXMgPSBsZW4oYXJncykKLSAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIGRhc2hlcyA9IGFyZ3MuaW5kZXgoJy0tJykKLQotICAgICAgICBzZWN0aW9ucy5hcHBl
bmQoYXJnc1s6ZGFzaGVzXSkKLQotICAgICAgICAjIE5leHQgdGltZSB0aHJvdWdoIHRoZSBsb29w
LCBsb29rIGF0IGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhpcyAnLS0nLgotICAgICAgICBpZiBkYXNoZXMg
KyAxID09IGxlbihhcmdzKToKLSAgICAgICAgICAgICMgSWYgdGhlICctLScgaXMgYXQgdGhlIGVu
ZCBvZiB0aGUgbGlzdCwgd2Ugd29uJ3QgY29tZSBiYWNrIHRocm91Z2ggdGhlCi0gICAgICAgICAg
ICAjIGxvb3AgYWdhaW4uIEFkZCBhbiBlbXB0eSBzZWN0aW9uIG5vdyBjb3JyZXNwb25kaW5nIHRv
IHRoZSBub3RoaW5nbmVzcwotICAgICAgICAgICAgIyBmb2xsb3dpbmcgdGhlIGZpbmFsICctLScu
Ci0gICAgICAgICAgICBhcmdzID0gW10KLSAgICAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChhcmdz
KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYXJncyA9IGFyZ3NbZGFzaGVzICsgMTpdCi0K
LSAgICByZXR1cm4gc2VjdGlvbnMKLQotCi1kZWYgbWFpbihhcmdzKToKLSAgICBzZWN0aW9ucyA9
IFNwbGl0QXJnc0ludG9TZWN0aW9ucyhhcmdzWzE6XSkKLSAgICBhc3NlcnQgbGVuKHNlY3Rpb25z
KSA9PSAzLCBzZWN0aW9ucwotICAgIChiYXNlLCBpbnB1dHMsIG9wdGlvbnMpID0gc2VjdGlvbnMK
LQotICAgIGFzc2VydCBsZW4oYmFzZSkgPT0gMywgYmFzZQotICAgIChpbnB1dCwgY3BwZGlyLCBo
ZGlyKSA9IGJhc2UKLQotICAgIGFzc2VydCBsZW4oaW5wdXRzKSA+IDEsIGlucHV0cwotICAgIGdl
bmVyYXRlQmluZGluZ3MgPSBpbnB1dHNbMF0KLSAgICBwZXJsTW9kdWxlcyA9IGlucHV0c1sxOl0K
LQotICAgIGluY2x1ZGVEaXJzID0gW10KLSAgICBmb3IgcGVybE1vZHVsZSBpbiBwZXJsTW9kdWxl
czoKLSAgICAgICAgaW5jbHVkZURpciA9IG9zLnBhdGguZGlybmFtZShwZXJsTW9kdWxlKQotICAg
ICAgICBpZiBub3QgaW5jbHVkZURpciBpbiBpbmNsdWRlRGlyczoKLSAgICAgICAgICAgIGluY2x1
ZGVEaXJzLmFwcGVuZChpbmNsdWRlRGlyKQotCi0gICAgaWYgJy0tcHJlZml4JyBpbiBvcHRpb25z
OgotICAgICAgICBwcmVmaXhJbmRleCA9IG9wdGlvbnMuaW5kZXgoJy0tcHJlZml4JykKLSAgICBl
bHNlOgotICAgICAgICBwcmVmaXhJbmRleCA9IG9wdGlvbnMuaW5kZXgoJy0tZ2VuZXJhdG9yJykK
LQotICAgIGZpbGVOYW1lID0gJycKLSAgICBpZiAnLS1maWxlbmFtZScgaW4gb3B0aW9uczoKLSAg
ICAgICAgZmlsZU5hbWUgPSBvcHRpb25zW29wdGlvbnMuaW5kZXgoJy0tZmlsZW5hbWUnKSArIDFd
Ci0KLSAgICBpZiBwcmVmaXhJbmRleCArIDEgPCBsZW4ob3B0aW9ucyk6Ci0gICAgICAgIHByZWZp
eCA9IG9wdGlvbnNbcHJlZml4SW5kZXggKyAxXQotCi0gICAgIyBUaGUgZGVmaW5lcyBjb21lIGlu
IGFzIG9uZSBmbGF0IHN0cmluZy4gU3BsaXQgaXQgdXAgaW50byBkaXN0aW5jdCBhcmd1bWVudHMu
Ci0gICAgaWYgJy0tZGVmaW5lcycgaW4gb3B0aW9uczoKLSAgICAgICAgZGVmaW5lc0luZGV4ID0g
b3B0aW9ucy5pbmRleCgnLS1kZWZpbmVzJykKLSAgICAgICAgaWYgZGVmaW5lc0luZGV4ICsgMSA8
IGxlbihvcHRpb25zKToKLSAgICAgICAgICAgIHNwbGl0T3B0aW9ucyA9IHNobGV4LnNwbGl0KG9w
dGlvbnNbZGVmaW5lc0luZGV4ICsgMV0pCi0gICAgICAgICAgICBpZiBzcGxpdE9wdGlvbnM6Ci0g
ICAgICAgICAgICAgICAgb3B0aW9uc1tkZWZpbmVzSW5kZXggKyAxXSA9ICcgJy5qb2luKHNwbGl0
T3B0aW9ucykKLQotICAgICMgQnVpbGQgdXAgdGhlIGNvbW1hbmQuCi0gICAgY29tbWFuZCA9IFsn
cGVybCcsICctdyddCi0gICAgZm9yIGluY2x1ZGVEaXIgaW4gaW5jbHVkZURpcnM6Ci0gICAgICAg
IGNvbW1hbmQuZXh0ZW5kKFsnLUknLCBpbmNsdWRlRGlyXSkKLSAgICBjb21tYW5kLmFwcGVuZChn
ZW5lcmF0ZUJpbmRpbmdzKQotICAgIGNvbW1hbmQuZXh0ZW5kKG9wdGlvbnMpCi0gICAgY29tbWFu
ZC5leHRlbmQoWyctLW91dHB1dEhlYWRlcnNEaXInLCBoZGlyXSkKLSAgICBjb21tYW5kLmV4dGVu
ZChbJy0tb3V0cHV0RGlyJywgY3BwZGlyLCBpbnB1dF0pCi0KLSAgICAjIERvIGl0LiBVc2Ugb3Mu
ZXhlY3ZwKCkgdG8gc2F2ZSBhIGNoaWxkIHByb2Nlc3Mgb24gcG9zaXguIE9uIHdpbjMyLAotICAg
ICMgZXhlY3ZwKCkgZG9lcyd0IGRvIHRoZSBlc2NhcGluZyBvZiBzcGFjZXMgdGhhdCBzdWJwcm9j
ZXNzLmNhbGwoKSBkb2VzLAotICAgICMgc28gdXNlIHN1YnByb2Nlc3MuY2FsbCgpIG9uIHdpbjMy
LgotICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAnd2luMzInOgotICAgICAgICBvcy5leGVjdnAoJ3Bl
cmwnLCBjb21tYW5kKSAgIyBEb2VzIG5vdCByZXR1cm4uCi0KLSAgICAjIGNoZWNrX2NhbGwgaXMg
bmV3IGluIDIuNSwgc28gc2ltdWxhdGUgaXRzIGJlaGF2aW9yIHdpdGggY2FsbCBhbmQgYXNzZXJ0
LgotICAgIHJldHVybkNvZGUgPSBzdWJwcm9jZXNzLmNhbGwoY29tbWFuZCkKLSAgICBhc3NlcnQg
cmV0dXJuQ29kZSA9PSAwCi0KLSAgICByZXR1cm4gcmV0dXJuQ29kZQotCi0KLWlmIF9fbmFtZV9f
ID09ICdfX21haW5fXyc6Ci0gICAgc3lzLmV4aXQobWFpbihzeXMuYXJndikpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKaW5kZXggZDcyNzE1MjRmODUzNmM3NGExYThjNmE5YjJjYzgzYTAwMjg2YjIzYi4uNDhlYjVj
MTQ3NzFhNzg3ODY1MTk1ODUxOTc5ODk4NDFhMjU1NzJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
MTQ4NSw2ICsxNDg1LDcgQEAKICAgICAgICAgICAgICd3ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2Rl
LmlkbCcsCiAgICAgICAgICAgICAnd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5pZGwnLAogICAgICAg
ICAgICAgJ3dlYmF1ZGlvL0RlbGF5Tm9kZS5pZGwnLAorICAgICAgICAgICAgJ3dlYmF1ZGlvL0RP
TVdpbmRvd1dlYkF1ZGlvLmlkbCcsCiAgICAgICAgICAgICAnd2ViYXVkaW8vRHluYW1pY3NDb21w
cmVzc29yTm9kZS5pZGwnLAogICAgICAgICAgICAgJ3dlYmF1ZGlvL0hpZ2hQYXNzMkZpbHRlck5v
ZGUuaWRsJywKICAgICAgICAgICAgICd3ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmlkbCcs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JHT2JqZWN0LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yR09iamVjdC5wbQppbmRleCBkNWM3MWExOGE1OTU2YjdmZWUxYjIzOGFjNzAxOGYyZWY5MjJm
NjVjLi43YWI4OWRlYTliNGI0MTQxMTAzNzczYjNhMzBmZjlmNDNjOGYzY2E5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmpl
Y3QucG0KQEAgLTEzODAsMyArMTM4MCw1IEBAIHN1YiBHZW5lcmF0ZUludGVyZmFjZSB7CiAgICAg
JGZuYW1lID1+IHMvXy8vZzsKICAgICAkb2JqZWN0LT5Xcml0ZURhdGEoJGZuYW1lKTsKIH0KKwor
MTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG0KaW5kZXggN2FiZTYzYjA3ODE1OTJjODhkMWQ3NWNlNDMyZDUyYzY5MjU2ZWFmMy4uMTky
NTRlZWFkZWU1ZDIxYTQ1Nzg0MGY3ZjVjOWYwZjdmYmNkMzExYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTM4MjMsMyAr
MzgyMyw1IEBAIHN1YiBEZWJ1Z1ByaW50CiAgICAgcHJpbnQgJG91dHB1dDsKICAgICBwcmludCAi
XG4iOwogfQorCisxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9JRExQYXJzZXIucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNl
ci5wbQppbmRleCA2NjExODMyYzM1ODhkZmVlOGM2NjU1NjAwNTQ0MGNkZjUxODg1NzA0Li5hYzg4
YWNkNzExODY1YmE0YWMzZGFlNDc5YzA1NzYzNzM3MmNhM2FmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQpAQCAtMzQsMTQgKzM0LDI1IEBAIHVzZSBj
b25zdGFudCBNT0RFX01PRFVMRSAgPT4gMTA7ICMgJ21vZHVsZScgc2VjdGlvbgogdXNlIGNvbnN0
YW50IE1PREVfSU5URVJGQUNFICA9PiAxMTsgIyAnaW50ZXJmYWNlJyBzZWN0aW9uCiAKICMgSGVs
cGVyIHZhcmlhYmxlcwotbXkgQHRlbXBvcmFyeUNvbnRlbnQgPSAiIjsKK215IEB0ZW1wb3JhcnlD
b250ZW50OwogCi1teSAkcGFyc2VNb2RlID0gTU9ERV9VTkRFRjsKLW15ICRwcmVzZXJ2ZWRQYXJz
ZU1vZGUgPSBNT0RFX1VOREVGOworbXkgJHBhcnNlTW9kZTsKK215ICRwcmVzZXJ2ZWRQYXJzZU1v
ZGU7CiAKLW15ICRiZVF1aWV0OyAjIFNob3VsZCBub3QgZGlzcGxheSBhbnl0aGluZyBvbiBTVERP
VVQ/Ci1teSAkZG9jdW1lbnQgPSAwOyAjIFdpbGwgaG9sZCB0aGUgcmVzdWx0aW5nICdpZGxEb2N1
bWVudCcKLW15ICRwYXJlbnRzT25seSA9IDA7ICMgSWYgMSwgcGFyc2Ugb25seSBlbm91Z2ggdG8g
cG9wdWxhdGUgcGFyZW50cyBsaXN0CitteSAkYmVRdWlldDsKK215ICRkb2N1bWVudDsKK215ICRw
YXJlbnRzT25seTsKKworc3ViIEluaXRpYWxpemVHbG9iYWxEYXRhCit7CisgICAgQHRlbXBvcmFy
eUNvbnRlbnQgPSAiIjsKKworICAgICRwYXJzZU1vZGUgPSBNT0RFX1VOREVGOworICAgICRwcmVz
ZXJ2ZWRQYXJzZU1vZGUgPSBNT0RFX1VOREVGOworCisgICAgJGRvY3VtZW50ID0gMDsgIyBXaWxs
IGhvbGQgdGhlIHJlc3VsdGluZyAnaWRsRG9jdW1lbnQnCisgICAgJHBhcmVudHNPbmx5ID0gMDsg
IyBJZiAxLCBwYXJzZSBvbmx5IGVub3VnaCB0byBwb3B1bGF0ZSBwYXJlbnRzIGxpc3QKK30KIAog
IyBEZWZhdWx0IENvbnN0cnVjdG9yCiBzdWIgbmV3CkBAIC00OSw3ICs2MCw4IEBAIHN1YiBuZXcK
ICAgICBteSAkb2JqZWN0ID0gc2hpZnQ7CiAgICAgbXkgJHJlZmVyZW5jZSA9IHsgfTsKIAotICAg
ICRkb2N1bWVudCA9IDA7CisgICAgSW5pdGlhbGl6ZUdsb2JhbERhdGEoKTsKKwogICAgICRiZVF1
aWV0ID0gc2hpZnQ7CiAKICAgICBibGVzcygkcmVmZXJlbmNlLCAkb2JqZWN0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsCmlu
ZGV4IDU3YTM5MjgzYzNkOGU1MTI3Yjg0NTIxZTdhODNhYjc5Y2EzMzI5ZGEuLjMxNDc5ZjllYTQ3
M2ZjMDMyYTg2Mzc5NTRhYmI2Y2JiMTA3MzFiYzYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbApAQCAtMzEsNiArMzEsNyBA
QAogdXNlIHN0cmljdDsKIAogdXNlIEZpbGU6OlBhdGg7Cit1c2UgRmlsZTo6QmFzZW5hbWU7CiB1
c2UgR2V0b3B0OjpMb25nOwogdXNlIEN3ZDsKIApAQCAtNDcsNiArNDgsNyBAQCBteSAkcHJlZml4
OwogbXkgJHByZXByb2Nlc3NvcjsKIG15ICR3cml0ZURlcGVuZGVuY2llczsKIG15ICR2ZXJib3Nl
OworbXkgJHN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlOwogCiBHZXRPcHRpb25zKCdpbmNsdWRl
PXNAJyA9PiBcQGlkbERpcmVjdG9yaWVzLAogICAgICAgICAgICAnb3V0cHV0RGlyPXMnID0+IFwk
b3V0cHV0RGlyZWN0b3J5LApAQCAtNTcsMjcgKzU5LDE2MyBAQCBHZXRPcHRpb25zKCdpbmNsdWRl
PXNAJyA9PiBcQGlkbERpcmVjdG9yaWVzLAogICAgICAgICAgICAncHJlZml4PXMnID0+IFwkcHJl
Zml4LAogICAgICAgICAgICAncHJlcHJvY2Vzc29yPXMnID0+IFwkcHJlcHJvY2Vzc29yLAogICAg
ICAgICAgICAndmVyYm9zZScgPT4gXCR2ZXJib3NlLAotICAgICAgICAgICAnd3JpdGUtZGVwZW5k
ZW5jaWVzJyA9PiBcJHdyaXRlRGVwZW5kZW5jaWVzKTsKKyAgICAgICAgICAgJ3dyaXRlLWRlcGVu
ZGVuY2llcycgPT4gXCR3cml0ZURlcGVuZGVuY2llcywKKyAgICAgICAgICAgJ3N1cHBsZW1lbnRh
bERlcGVuZGVuY3lGaWxlPXMnID0+IFwkc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGUpOwogCi1t
eSAkaWRsRmlsZSA9ICRBUkdWWzBdOworbXkgJHRhcmdldElkbEZpbGUgPSAkQVJHVlswXTsKIAot
ZGllKCdNdXN0IHNwZWNpZnkgaW5wdXQgZmlsZS4nKSB1bmxlc3MgZGVmaW5lZCgkaWRsRmlsZSk7
Ci1kaWUoJ011c3Qgc3BlY2lmeSBnZW5lcmF0b3InKSB1bmxlc3MgZGVmaW5lZCgkZ2VuZXJhdG9y
KTsKLWRpZSgnTXVzdCBzcGVjaWZ5IG91dHB1dCBkaXJlY3RvcnkuJykgdW5sZXNzIGRlZmluZWQo
JG91dHB1dERpcmVjdG9yeSk7Ci1kaWUoJ011c3Qgc3BlY2lmeSBkZWZpbmVzJykgdW5sZXNzIGRl
ZmluZWQoJGRlZmluZXMpOworZGllKCdNdXN0IHNwZWNpZnkgYW4gaW5wdXQgSURMIGZpbGUuJykg
dW5sZXNzIGRlZmluZWQoJHRhcmdldElkbEZpbGUpOworZGllKCdNdXN0IHNwZWNpZnkgYSBjb2Rl
IGdlbmVyYXRvciB1c2luZyAtLWdlbmVyYXRvci4nKSB1bmxlc3MgZGVmaW5lZCgkZ2VuZXJhdG9y
KTsKK2RpZSgnTXVzdCBzcGVjaWZ5IGFuIG91dHB1dCBkaXJlY3RvcnkgdXNpbmcgLS1vdXRwdXRE
aXIuJykgdW5sZXNzIGRlZmluZWQoJG91dHB1dERpcmVjdG9yeSk7CitkaWUoJ011c3Qgc3BlY2lm
eSAjZGVmaW5lIG1hY3JvcyB1c2luZyAtLWRlZmluZXMnKSB1bmxlc3MgZGVmaW5lZCgkZGVmaW5l
cyk7CisKK2lmICgkdmVyYm9zZSkgeworICAgIHByaW50ICIkZ2VuZXJhdG9yOiAkdGFyZ2V0SWRs
RmlsZVxuIjsKK30KIAogaWYgKCEkb3V0cHV0SGVhZGVyc0RpcmVjdG9yeSkgewogICAgICRvdXRw
dXRIZWFkZXJzRGlyZWN0b3J5ID0gJG91dHB1dERpcmVjdG9yeTsKIH0KLWlmICgkdmVyYm9zZSkg
ewotICAgIHByaW50ICIkZ2VuZXJhdG9yOiAkaWRsRmlsZVxuIjsKLX0KICRkZWZpbmVzID1+IHMv
XlxzK3xccyskLy9nOyAjIHRyaW0gd2hpdGVzcGFjZQorJHRhcmdldElkbEZpbGUgPSBDd2Q6OnJl
YWxwYXRoKCR0YXJnZXRJZGxGaWxlKTsKK215ICR0YXJnZXRJbnRlcmZhY2VOYW1lID0gZmlsZXBh
cnNlKGJhc2VuYW1lKCR0YXJnZXRJZGxGaWxlKSwgIi5pZGwiKTsKKworbXkgQHN1cHBsZW1lbnRl
ZElkbEZpbGVzOworaWYgKCRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSkgeworICAgICMgVGhl
IGZvcm1hdCBvZiBhIHN1cHBsZW1lbnRhbCBkZXBlbmRlbmN5IGZpbGU6CisgICAgIworICAgICMg
RE9NV2luZG93LmlkbCBQLmlkbCBRLmlkbCBSLmlkbAorICAgICMgRG9jdW1lbnQuaWRsIFMuaWRs
CisgICAgIyBFdmVudC5pZGwKKyAgICAjIC4uLgorICAgICMKKyAgICAjIFRoZSBhYm92ZSBpbmRp
Y2F0ZXMgdGhhdCBET01XaW5kb3cuaWRsIGlzIHN1cHBsZW1lbnRlZCBieSBQLmlkbCwgUS5pZGwg
YW5kIFIuaWRsLAorICAgICMgRG9jdW1lbnQuaWRsIGlzIHN1cHBsZW1lbnRlZCBieSBTLmlkbCwg
YW5kIEV2ZW50LmlkbCBpcyBzdXBwbGVtZW50ZWQgYnkgbm8gSURMcy4KKyAgICAjIFRoZSBJREwg
dGhhdCBzdXBwbGVtZW50cyBhbm90aGVyIElETCAoZS5nLiBQLmlkbCkgbmV2ZXIgYXBwZWFycyBp
biB0aGUgZGVwZW5kZW5jeSBmaWxlLgorICAgIG9wZW4gRkgsICI8ICRzdXBwbGVtZW50YWxEZXBl
bmRlbmN5RmlsZSIgb3IgZGllICJDYW5ub3Qgb3BlbiAkc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZp
bGVcbiI7CisgICAgbXkgJGlkbEZvdW5kID0gMDsKKyAgICB3aGlsZSAobXkgJGxpbmUgPSA8Rkg+
KSB7CisgICAgICAgIG15ICgkaWRsRmlsZSwgQGZvbGxvd2luZ0lkbEZpbGVzKSA9IHNwbGl0KC9c
cysvLCAkbGluZSk7CisgICAgICAgIGlmICgkaWRsRmlsZSBhbmQgJGlkbEZpbGUgZXEgJHRhcmdl
dElkbEZpbGUpIHsKKyAgICAgICAgICAgICRpZGxGb3VuZCA9IDE7CisgICAgICAgICAgICBAc3Vw
cGxlbWVudGVkSWRsRmlsZXMgPSBAZm9sbG93aW5nSWRsRmlsZXM7CisgICAgICAgIH0KKyAgICB9
CisgICAgY2xvc2UgRkg7CiAKLSMgUGFyc2UgdGhlIGdpdmVuIElETCBmaWxlLgorICAgIGlmICgh
JGlkbEZvdW5kKSB7CisgICAgICAgICMgVGhlIHRhcmdldCBJREwgZmlsZSBpcyBzdXBwbGVtZW50
aW5nIGFub3RoZXIgSURMIGZpbGUsCisgICAgICAgICMgYW5kIHRodXMgLmggYW5kIC5jcHAgZm9y
IHRoZSB0YXJnZXQgSURMIGZpbGUgc2hvdWxkIG5vdCBiZSBnZW5lcmF0ZWQuCisgICAgICAgIGV4
aXQgMDsKKyAgICB9Cit9CisKKyMgUGFyc2UgdGhlIHRhcmdldCBJREwgZmlsZS4KIG15ICRwYXJz
ZXIgPSBJRExQYXJzZXItPm5ldyghJHZlcmJvc2UpOwotbXkgJGRvY3VtZW50ID0gJHBhcnNlci0+
UGFyc2UoJGlkbEZpbGUsICRkZWZpbmVzLCAkcHJlcHJvY2Vzc29yKTsKK215ICR0YXJnZXREb2N1
bWVudCA9ICRwYXJzZXItPlBhcnNlKCR0YXJnZXRJZGxGaWxlLCAkZGVmaW5lcywgJHByZXByb2Nl
c3Nvcik7CisKKyMgRklYTUUoaGFyYWtlbik6IFJlbW92ZSB0aGlzIGlmLWVsc2Ugc3RhdGVtZW50
LgorIyBUaGlzIGlmLWVsc2Ugc3RhdGVtZW50IGlzIHRlbXBvcmFyeSBhbmQgd2lsbCBiZSByZW1v
dmVkCisjIGFmdGVyIGJ1aWxkIHNjcmlwdHMgZm9yIGFsbCBwbGF0Zm9ybXMgc3VwcG9ydCBbU3Vw
cGxlbWVudGFsXSBJREwuCisjIFRoZSBtb3RpdmF0aW9uIGZvciB0aGUgW1N1cHBsZW1lbnRlZF0g
SURMIGlzIGFzIGZvbGxvd3M6CisjCisjIEluIG9yZGVyIHRvIHN1cHBvcnQgdGhlIFtTdXBwbGVt
ZW50YWxdIElETCwgd2UgbmVlZCB0bworIyAoMSkgcnVuIHJlc29sdmUtc3VwcGxlbWVudGFsLnBs
IGFuZCBnZW5lcmF0ZSBzdXBwbGVtZW50YWxfZGVwZW5kZW5jeS50bXAKKyMgKDIpIGFuZCBydW4g
Z2VuZXJhdGUtYmluZGluZ3MucGwgd2l0aCB0aGUgc3VwcGxlbWVudGFsX2RlcGVuZGVuY3kudG1w
LgorIworIyBUaGlzIGJ1aWxkIGZsb3cgcmVxdWlyZXMgYSBjaGFuZ2Ugb24gdGhlIGZvbGxvd2lu
ZyBidWlsZCBzY3JpcHRzLAorIyBidXQgY2hhbmdpbmcgYWxsIHRoZSBidWlsZCBzY3JpcHRzIGFs
bCBhdCBvbmNlIHdpdGhvdXQgYW55IHJlZ3Jlc3Npb24gaXMgdG9vIGRpZmZpY3VsdDoKKyMKKyMg
ICAgIC0gRGVyaXZlZFNvdXJjZXMubWFrZQorIyAgICAgLSBEZXJpdmVkU291cmNlcy5wcmkKKyMg
ICAgIC0gR05VbWFrZWZpbGUuYW0KKyMgICAgIC0gUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCisj
ICAgICAtIFVzZUpTQy5jbWFrZQorIyAgICAgLSBVc2VWOC5jbWFrZQorIyAgICAgLSBXZWJDb3Jl
LnZjcHJvai9NaWdyYXRlU2NyaXB0cworIyAgICAgLSBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagorIyAgICAgLSBiaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCisjICAgICAtIFdl
YkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCisjCisjIFRodXMsIHdlIGFyZSBwbGFubmluZyB0byBjaGFu
Z2UgdGhlIGJ1aWxkIHNjcmlwdHMgb25lIGJ5IG9uZSwgd2hpY2ggaW1wbGllcyB0aGF0CisjIHdl
IG5lZWQgdG8gYWxsb3cgdGhlIHRlbXBvcmFyeSBzdGF0ZSBpbiB3aGljaCBzb21lIGJ1aWxkIHNj
cmlwdHMgc3VwcG9ydCBbU3VwcGxlbWVudGFsXSBJREwKKyMgYnV0IG90aGVycyBkbyBub3QuIFRv
IGFjY29tcGxpc2ggdGhpcywgd2UgaW50cm9kdWNlIGEgdGVtcG9yYWwgSURMLCBbU3VwcGxlbWVu
dGVkXS4KKyMgVGhlIFtTdXBwbGVtZW50ZWRdIElETCBvbiBhbiBhdHRyaWJ1dGUgbWVhbnMgdGhh
dCB0aGUgYXR0cmlidXRlIGlzIG1hcmtlZCB3aXRoIFtTdXBwbGVtZW50YWxdCisjIGluIGFub3Ro
ZXIgSURMIGZpbGUgc29tZXdoZXJlLCBsaWtlIHRoaXM6CisjCisjIERPTVdpbmRvd1dlYkF1ZGlv
LmlkbDoKKyMgICAgIGludGVyZmFjZSBbCisjICAgICAgICAgU3VwcGxlbWVudGFsPURPTVdpbmRv
dworIyAgICAgXSBET01XaW5kb3dXZWJBdWRpbyB7CisjICAgICAgICAgYXR0cmlidXRlIGF0dHIx
OworIyAgICAgICAgIGF0dHJpYnV0ZSBhdHRyMjsKKyMgICAgIH07CisjCisjIERPTVdpbmRvdy5p
ZGw6CisjICAgICBpbnRlcmZhY2UgWworIyAgICAgXSBET01XaW5kb3cgeworIyAgICAgICAgIGF0
dHJpYnV0ZSBbU3VwcGxlbWVudGVkXSBhdHRyMTsgLy8gVGhpcyBsaW5lIHdpbGwgYmUgcmVtb3Zl
ZCBhZnRlciBhbGwgYnVpbGQgc2NyaXB0cyBzdXBwb3J0IHRoZSBbU3VwcGxlbWVudGFsXSBJREwu
CisjICAgICAgICAgYXR0cmlidXRlIFtTdXBwbGVtZW50ZWRdIGF0dHIyOyAvLyBUaGlzIGxpbmUg
d2lsbCBiZSByZW1vdmVkIGFmdGVyIGFsbCBidWlsZCBzY3JpcHRzIHN1cHBvcnQgdGhlIFtTdXBw
bGVtZW50YWxdIElETC4KKyMgICAgICAgICBhdHRyaWJ1dGUgYXR0cjM7CisjICAgICAgICAgYXR0
cmlidXRlIGF0dHI0OworIyAgICAgfTsKKyMKKyMgQXNzdW1pbmcgdGhlc2UgSURMIGZpbGVzLCB0
aGUgYmVsb3cgY29kZSBpcyBkb2luZyB0aGUgZm9sbG93aW5nIGxvZ2ljOgorIworIyAgICAgLSBJ
ZiBhIGdpdmVuIGJ1aWxkIHNjcmlwdCBzdXBwb3J0cyB0aGUgW1N1cHBsZW1lbnRhbF0gSURMIChp
LmUuIC0tc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGUgaXMgc3BlY2lmaWVkKSwKKyMgICAgICAg
d2UgaWdub3JlIGFsbCBhdHRyaWJ1dGVzIHdpdGggdGhlIFtTdXBwbGVtZW50ZWRdIElETC4KKyMg
ICAgIC0gT3RoZXJ3aXNlIChpLmUuIC0tc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGUgaXMgbm90
IHNwZWNpZmllZCksCisjICAgICAgIHdlIHRyZWF0IGFsbCBhdHRyaWJ1dGVzIHdpdGggdGhlIFtT
dXBwbGVtZW50ZWRdIElETCBhcyBub3JtYWwgYXR0cmlidXRlcworIyAgICAgICBhbmQgaW5zdGVh
ZCBpZ25vcmUgYWxsIGF0dHJpYnV0ZXMgd2l0aCB0aGUgW1N1cHBsZW1lbnRhbF0gSURMCisjICAg
ICAgIChpLmUuIHdlIGdlbmVyYXRlIG5vdGhpbmcgZnJvbSB0aGUgaWRsIGZpbGUgd2l0aCB0aGUg
W1N1cHBsZW1lbnRhbF0gSURMKS4KK2lmICgkc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGUpIHsK
KyAgICBmb3JlYWNoIG15ICRkYXRhTm9kZSAoQHskdGFyZ2V0RG9jdW1lbnQtPmNsYXNzZXN9KSB7
CisgICAgICAgIG15IEBub25TdXBwbGVtZW50ZWRBdHRyaWJ1dGVzOworICAgICAgICBmb3JlYWNo
IG15ICRhdHRyaWJ1dGUgKEB7JGRhdGFOb2RlLT5hdHRyaWJ1dGVzfSkgeworICAgICAgICAgICAg
aWYgKCEkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJTdXBwbGVt
ZW50ZWQifSkgeworICAgICAgICAgICAgICAgIHB1c2goQG5vblN1cHBsZW1lbnRlZEF0dHJpYnV0
ZXMsICRhdHRyaWJ1dGUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgICRkYXRh
Tm9kZS0+YXR0cmlidXRlcyhcQG5vblN1cHBsZW1lbnRlZEF0dHJpYnV0ZXMpOworICAgIH0KK30g
ZWxzZSB7CisgICAgZm9yZWFjaCBteSAkZGF0YU5vZGUgKEB7JHRhcmdldERvY3VtZW50LT5jbGFz
c2VzfSkgeworICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiU3Vw
cGxlbWVudGFsIn0pIHsKKyAgICAgICAgICAgIGV4aXQgMDsKKyAgICAgICAgfQorICAgIH0KK30K
KyMgVGVtcG9yYXJ5IGlmLWVsc2Ugc3RhdGVtZW50IHVudGlsIGhlcmUuCisKK2ZvcmVhY2ggbXkg
JGlkbEZpbGUgKEBzdXBwbGVtZW50ZWRJZGxGaWxlcykgeworICAgIG5leHQgaWYgJGlkbEZpbGUg
ZXEgJHRhcmdldElkbEZpbGU7CisKKyAgICBteSAkcGFyc2VyID0gSURMUGFyc2VyLT5uZXcoISR2
ZXJib3NlKTsKKyAgICBteSAkZG9jdW1lbnQgPSAkcGFyc2VyLT5QYXJzZSgkaWRsRmlsZSwgJGRl
ZmluZXMsICRwcmVwcm9jZXNzb3IpOworCisgICAgZm9yZWFjaCBteSAkZGF0YU5vZGUgKEB7JGRv
Y3VtZW50LT5jbGFzc2VzfSkgeworICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiU3VwcGxlbWVudGFsIn0gYW5kICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IlN1cHBsZW1lbnRhbCJ9IGVxICR0YXJnZXRJbnRlcmZhY2VOYW1lKSB7CisgICAgICAgICAg
ICBteSAkdGFyZ2V0RGF0YU5vZGU7CisgICAgICAgICAgICBmb3JlYWNoIG15ICRjbGFzcyAoQHsk
dGFyZ2V0RG9jdW1lbnQtPmNsYXNzZXN9KSB7CisgICAgICAgICAgICAgICAgaWYgKCRjbGFzcy0+
bmFtZSBlcSAkdGFyZ2V0SW50ZXJmYWNlTmFtZSkgeworICAgICAgICAgICAgICAgICAgICAkdGFy
Z2V0RGF0YU5vZGUgPSAkY2xhc3M7CisgICAgICAgICAgICAgICAgICAgIGxhc3Q7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZGllICJOb3QgZm91bmQgYW4g
aW50ZXJmYWNlICR7dGFyZ2V0SW50ZXJmYWNlTmFtZX0gaW4gJHt0YXJnZXRJbnRlcmZhY2VOYW1l
fS5pZGwuIiB1bmxlc3MgZGVmaW5lZCAkdGFyZ2V0RGF0YU5vZGU7CisKKyAgICAgICAgICAgIGZv
cmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskZGF0YU5vZGUtPmF0dHJpYnV0ZXN9KSB7CisgICAgICAg
ICAgICAgICAgIyBBZGQgaW50ZXJmYWNlLXdpZGUgZXh0ZW5kZWQgYXR0cmlidXRlcyB0byBlYWNo
IGF0dHJpYnV0ZS4KKyAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICRleHRlbmRlZEF0dHJpYnV0
ZU5hbWUgKGtleXMgJXskZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlc30pIHsKKyAgICAgICAg
ICAgICAgICAgICAgbmV4dCBpZiAoJGV4dGVuZGVkQXR0cmlidXRlTmFtZSBlcSAiU3VwcGxlbWVu
dGFsIik7CisgICAgICAgICAgICAgICAgICAgICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57JGV4dGVuZGVkQXR0cmlidXRlTmFtZX0gPSAkZGF0YU5vZGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyRleHRlbmRlZEF0dHJpYnV0ZU5hbWV9OworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBwdXNoKEB7JHRhcmdldERhdGFOb2RlLT5hdHRyaWJ1dGVzfSwg
JGF0dHJpYnV0ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CiAKLSMgR2Vu
ZXJhdGUgZGVzaXJlZCBvdXRwdXQgZm9yIGdpdmVuIElETCBmaWxlLgorIyBHZW5lcmF0ZSBkZXNp
cmVkIG91dHB1dCBmb3IgdGhlIHRhcmdldCBJREwgZmlsZS4KIG15ICRjb2RlR2VuID0gQ29kZUdl
bmVyYXRvci0+bmV3KFxAaWRsRGlyZWN0b3JpZXMsICRnZW5lcmF0b3IsICRvdXRwdXREaXJlY3Rv
cnksICRvdXRwdXRIZWFkZXJzRGlyZWN0b3J5LCAwLCAkcHJlcHJvY2Vzc29yLCAkd3JpdGVEZXBl
bmRlbmNpZXMsICR2ZXJib3NlKTsKLSRjb2RlR2VuLT5Qcm9jZXNzRG9jdW1lbnQoJGRvY3VtZW50
LCAkZGVmaW5lcyk7CiskY29kZUdlbi0+UHJvY2Vzc0RvY3VtZW50KCR0YXJnZXREb2N1bWVudCwg
JGRlZmluZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9w
cmVwcm9jZXNzb3IucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nl
c3Nvci5wbQppbmRleCBkYzAyMTlmZGI1YWMyZTNkZGY5ODMyNTE5ZDA4YjQyMWYxMGYyMGU2Li5j
NmNiYWJiNTc1YzgxMWFhMTc0M2MwNzI1MGRjNmE1OWM5YmE1MWI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3Nvci5wbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3Nvci5wbQpAQCAtNTcsNyArNTcsNyBA
QCBzdWIgYXBwbHlQcmVwcm9jZXNzb3IKICAgICAgICAgJGRlZmluZXMgPSAiIjsKICAgICB9CiAK
LSAgICBteSAkcGlkID0gb3BlbjIoXCpQUF9PVVQsIFwqUFBfSU4sIHNwbGl0KCcgJywgJHByZXBy
b2Nlc3NvciksIChtYXAgeyAiLUQkXyIgfSBzcGxpdCgnICcsICRkZWZpbmVzKSksICRmaWxlTmFt
ZSk7CisgICAgbXkgJHBpZCA9IG9wZW4yKFwqUFBfT1VULCBcKlBQX0lOLCBzcGxpdCgnICcsICRw
cmVwcm9jZXNzb3IpLCAobWFwIHsgJF8gPX4gcy9eXCJ8XCIkLy9nOyAiLUQkXyIgfSBzcGxpdCgn
ICcsICRkZWZpbmVzKSksICRmaWxlTmFtZSk7CiAgICAgY2xvc2UgUFBfSU47CiAgICAgbXkgQGRv
Y3VtZW50Q29udGVudCA9IDxQUF9PVVQ+OwogICAgIGNsb3NlIFBQX09VVDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcmVzb2x2ZS1zdXBwbGVtZW50YWwucGwg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Jlc29sdmUtc3VwcGxlbWVudGFsLnBs
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQxODQzZDExYmZjZDM3ZjkzN2M1NDNlMDJhZmVkZGM5MTRlYjlkOTQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Jlc29sdmUt
c3VwcGxlbWVudGFsLnBsCkBAIC0wLDAgKzEsOTUgQEAKKyMhL3Vzci9iaW4vcGVybCAtdworIwor
IyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisjIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisj
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisjIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisjIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisjIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorIworCit1c2Ugc3RyaWN0OworCit1c2Ug
RmlsZTo6QmFzZW5hbWU7Cit1c2UgR2V0b3B0OjpMb25nOwordXNlIEN3ZDsKKwordXNlIElETFBh
cnNlcjsKKworbXkgJGRlZmluZXM7CitteSAkcHJlcHJvY2Vzc29yOworbXkgJHZlcmJvc2U7Citt
eSAkaWRsRmlsZXNMaXN0OworbXkgJHN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlOworCitHZXRP
cHRpb25zKCdkZWZpbmVzPXMnID0+IFwkZGVmaW5lcywKKyAgICAgICAgICAgJ3ByZXByb2Nlc3Nv
cj1zJyA9PiBcJHByZXByb2Nlc3NvciwKKyAgICAgICAgICAgJ3ZlcmJvc2UnID0+IFwkdmVyYm9z
ZSwKKyAgICAgICAgICAgJ2lkbEZpbGVzTGlzdD1zJyA9PiBcJGlkbEZpbGVzTGlzdCwKKyAgICAg
ICAgICAgJ3N1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlPXMnID0+IFwkc3VwcGxlbWVudGFsRGVw
ZW5kZW5jeUZpbGUpOworCitkaWUoJ011c3Qgc3BlY2lmeSAjZGVmaW5lIG1hY3JvcyB1c2luZyAt
LWRlZmluZXMnKSB1bmxlc3MgZGVmaW5lZCgkZGVmaW5lcyk7CitkaWUoJ011c3Qgc3BlY2lmeSBh
biBvdXRwdXQgZmlsZSB1c2luZyAtLXN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlJykgdW5sZXNz
IGRlZmluZWQoJHN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlKTsKK2RpZSgnTXVzdCBzcGVjaWZ5
IHRoZSBmaWxlIGxpc3RpbmcgYWxsIElETHMgdXNpbmcgLS1pZGxGaWxlc0xpc3QnKSB1bmxlc3Mg
ZGVmaW5lZCgkaWRsRmlsZXNMaXN0KTsKKworaWYgKCR2ZXJib3NlKSB7CisgICAgcHJpbnQgIlJl
c29sdmluZyBbU3VwcGxlbWVudGFsPVhYWF0gZGVwZW5kZW5jaWVzIGluIGFsbCBJREwgZmlsZXMu
XG4iOworfQorCiskZGVmaW5lcyA9fiBzL15ccyt8XHMrJC8vZzsgIyB0cmltIHdoaXRlc3BhY2UK
Kworb3BlbiBGSCwgIjwgJGlkbEZpbGVzTGlzdCIgb3IgZGllICJDYW5ub3Qgb3BlbiAkaWRsRmls
ZXNMaXN0XG4iOworbXkgQGlkbEZpbGVzID0gPEZIPjsKK2Nob21wKEBpZGxGaWxlcyk7CitjbG9z
ZSBGSDsKKworIyBQYXJzZSBhbGwgSURMIGZpbGVzLgorbXkgJWRvY3VtZW50czsKK215ICVpbnRl
cmZhY2VOYW1lVG9JZGxGaWxlOworZm9yZWFjaCBteSAkaWRsRmlsZSAoQGlkbEZpbGVzKSB7Cisg
ICAgbXkgJGZ1bGxQYXRoID0gQ3dkOjpyZWFscGF0aCgkaWRsRmlsZSk7CisgICAgbXkgJHBhcnNl
ciA9IElETFBhcnNlci0+bmV3KCEkdmVyYm9zZSk7CisgICAgJGRvY3VtZW50c3skZnVsbFBhdGh9
ID0gJHBhcnNlci0+UGFyc2UoJGlkbEZpbGUsICRkZWZpbmVzLCAkcHJlcHJvY2Vzc29yKTsKKyAg
ICAkaW50ZXJmYWNlTmFtZVRvSWRsRmlsZXtmaWxlcGFyc2UoYmFzZW5hbWUoJGlkbEZpbGUpLCAi
LmlkbCIpfSA9ICRmdWxsUGF0aDsKK30KKworIyBSZXNvbHZlcyBbU3VwcGxlbWVudGFsPVhYWF0g
ZGVwZW5kZW5jaWVzLgorbXkgJXN1cHBsZW1lbnRhbHM7Citmb3JlYWNoIG15ICRpZGxGaWxlIChr
ZXlzICVkb2N1bWVudHMpIHsKKyAgICAkc3VwcGxlbWVudGFsc3skaWRsRmlsZX0gPSBbXTsKKyAg
ICBmb3JlYWNoIG15ICRkYXRhTm9kZSAoQHskZG9jdW1lbnRzeyRpZGxGaWxlfS0+Y2xhc3Nlc30p
IHsKKyAgICAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlN1cHBsZW1l
bnRhbCJ9KSB7CisgICAgICAgICAgICBteSAkdGFyZ2V0SWRsRmlsZSA9ICRpbnRlcmZhY2VOYW1l
VG9JZGxGaWxleyRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlN1cHBsZW1lbnRhbCJ9
fTsKKyAgICAgICAgICAgIHB1c2goQHskc3VwcGxlbWVudGFsc3skdGFyZ2V0SWRsRmlsZX19LCAk
aWRsRmlsZSk7CisgICAgICAgICAgICAjIFRyZWF0cyBhcyBpZiB0aGlzIElETCBmaWxlIGRvZXMg
bm90IGV4aXN0LgorICAgICAgICAgICAgZGVsZXRlICRzdXBwbGVtZW50YWxzeyRpZGxGaWxlfTsK
KyAgICAgICAgfQorICAgIH0KK30KKworIyBPdXRwdXRzIHRoZSBkZXBlbmRlbmN5LgorIyBUaGUg
Zm9ybWF0IG9mIGEgc3VwcGxlbWVudGFsIGRlcGVuZGVuY3kgZmlsZToKKyMKKyMgRE9NV2luZG93
LmlkbCBQLmlkbCBRLmlkbCBSLmlkbAorIyBEb2N1bWVudC5pZGwgUy5pZGwKKyMgRXZlbnQuaWRs
CisjIC4uLgorIworIyBUaGUgYWJvdmUgaW5kaWNhdGVzIHRoYXQgRE9NV2luZG93LmlkbCBpcyBz
dXBwbGVtZW50ZWQgYnkgUC5pZGwsIFEuaWRsIGFuZCBSLmlkbCwKKyMgRG9jdW1lbnQuaWRsIGlz
IHN1cHBsZW1lbnRlZCBieSBTLmlkbCwgYW5kIEV2ZW50LmlkbCBpcyBzdXBwbGVtZW50ZWQgYnkg
bm8gSURMcy4KKyMgVGhlIElETCB0aGF0IHN1cHBsZW1lbnRzIGFub3RoZXIgSURMIChlLmcuIFAu
aWRsKSBuZXZlciBhcHBlYXJzIGluIHRoZSBkZXBlbmRlbmN5IGZpbGUuCitvcGVuIEZILCAiPiAk
c3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGUiIG9yIGRpZSAiQ2Fubm90IG9wZW4gJHN1cHBsZW1l
bnRhbERlcGVuZGVuY3lGaWxlXG4iOworZm9yZWFjaCBteSAkaWRsRmlsZSAoc29ydCBrZXlzICVz
dXBwbGVtZW50YWxzKSB7CisgICAgcHJpbnQgRkggJGlkbEZpbGUsICIgQHskc3VwcGxlbWVudGFs
c3skaWRsRmlsZX19XG4iOworfQorY2xvc2UgRkg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RJbnRlcmZhY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0SW50ZXJmYWNl
LmNwcAppbmRleCA3ZmE0YWYzNTI5MjY3YmE3MmIwYTk0MTAwNzhiNmY1MDBkNTc5YjNkLi4zY2Yy
OWI0ODdjZGU3NmUwYjRmYmRlNzkzYjMzNTMyMzQ3OGYxNWYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RJbnRlcmZhY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVz
dEludGVyZmFjZS5jcHAKQEAgLTI0LDggKzI0LDExIEBACiAKICNpbmNsdWRlICJXZWJET01UZXN0
SW50ZXJmYWNlLmgiCiAKKyNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiVGVzdEludGVyZmFj
ZS5oIgorI2luY2x1ZGUgIldlYkRPTVN0cmluZy5oIgogI2luY2x1ZGUgIldlYkV4Y2VwdGlvbkhh
bmRsZXIuaCIKKyNpbmNsdWRlICJ3dGYvdGV4dC9BdG9taWNTdHJpbmcuaCIKICNpbmNsdWRlIDx3
dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC03NCw2ICs3NywxNiBA
QCBXZWJET01UZXN0SW50ZXJmYWNlOjp+V2ViRE9NVGVzdEludGVyZmFjZSgpCiAgICAgbV9pbXBs
ID0gMDsKIH0KIAorI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEy
KQorV2ViRE9NU3RyaW5nIFdlYkRPTVRlc3RJbnRlcmZhY2U6OnN0cjEoKSBjb25zdAoreworICAg
IGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm4gV2ViRE9NU3RyaW5nKCk7CisKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Y29uc3QgV1RGOjpTdHJpbmcmPihpbXBsKCktPnN0cjEoKSk7Cit9CisK
KyNlbmRpZgogV2ViQ29yZTo6VGVzdEludGVyZmFjZSogdG9XZWJDb3JlKGNvbnN0IFdlYkRPTVRl
c3RJbnRlcmZhY2UmIHdyYXBwZXIpCiB7CiAgICAgcmV0dXJuIHdyYXBwZXIuaW1wbCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01U
ZXN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQ
L1dlYkRPTVRlc3RJbnRlcmZhY2UuaAppbmRleCA1ZGI1ZGI4YWUwOGU1YWVjYzkyYWNhZjdkNjcy
MDZmOWI4ZDM3YzlmLi5iNGU1NWViYjQzYmNhMGI4ZTFmYmRhMTlkMzdmNzIxYmEwYmFiY2MwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRP
TVRlc3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvQ1BQL1dlYkRPTVRlc3RJbnRlcmZhY2UuaApAQCAtNDEsNiArNDEsOSBAQCBwdWJsaWM6CiAg
ICAgV2ViRE9NVGVzdEludGVyZmFjZSYgb3BlcmF0b3I9KGNvbnN0IFdlYkRPTVRlc3RJbnRlcmZh
Y2UmKTsKICAgICB2aXJ0dWFsIH5XZWJET01UZXN0SW50ZXJmYWNlKCk7CiAKKyNpZiBFTkFCTEUo
Q29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKyAgICBXZWJET01TdHJpbmcgc3Ry
MSgpIGNvbnN0OworI2VuZGlmCiAKICAgICBXZWJDb3JlOjpUZXN0SW50ZXJmYWNlKiBpbXBsKCkg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZS5jcHAKaW5k
ZXggNzA4NmM4MGFmZTY3MWE0MjdjYjZhZTk4YzJiMWQxNzA5NjM1MTQ5YS4uN2EzNTU4ZTU0YzJi
YjllZGViNDBkZWEyMzUwMTRjNjFjZjAxODAwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0
RE9NVGVzdEludGVyZmFjZS5jcHAKQEAgLTUxLDYgKzUxLDIwIEBAIFdlYktpdERPTVRlc3RJbnRl
cmZhY2UqIGtpdChXZWJDb3JlOjpUZXN0SW50ZXJmYWNlKiBvYmopCiAgICAgCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQgLy8KIAorZ2NoYXIqCit3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2dldF9z
dHIxKFdlYktpdERPTVRlc3RJbnRlcmZhY2UqIHNlbGYpCit7CisjaWYgRU5BQkxFKENvbmRpdGlv
bjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2Vs
ZiwgMCk7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIFdl
YkNvcmU6OlRlc3RJbnRlcmZhY2UgKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGdj
aGFyKiByZXMgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPnN0cjEoKSk7CisgICAgcmV0dXJu
IHJlczsKKyNlbHNlCisgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYgLyogRU5BQkxFKENvbmRpdGlv
bjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpICovCit9CisKIAogR19ERUZJTkVfVFlQRShXZWJL
aXRET01UZXN0SW50ZXJmYWNlLCB3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlLCBXRUJLSVRfVFlQ
RV9ET01fT0JKRUNUKQogCkBAIC02OSw2ICs4Myw5IEBAIFdlYkNvcmU6OlRlc3RJbnRlcmZhY2Uq
IGNvcmUoV2ViS2l0RE9NVGVzdEludGVyZmFjZSogcmVxdWVzdCkKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAogZW51bSB7CiAgICAgUFJPUF8wLAorI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5B
QkxFKENvbmRpdGlvbjEyKQorICAgIFBST1BfU1RSMSwKKyNlbmRpZiAvKiBFTkFCTEUoQ29uZGl0
aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikgKi8KIH07CiAKIApAQCAtMTAyLDcgKzExOSwx
NiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX3NldF9wcm9wZXJ0eShH
T2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaQogc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0
X2ludGVyZmFjZV9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBH
VmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKIHsKICAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2ViS2l0RE9NVGVzdEludGVyZmFjZSogc2VsZiA9
IFdFQktJVF9ET01fVEVTVF9JTlRFUkZBQ0Uob2JqZWN0KTsKKyAgICBXZWJDb3JlOjpUZXN0SW50
ZXJmYWNlKiBjb3JlU2VsZiA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBzd2l0Y2ggKHByb3Bf
aWQpIHsKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKyAg
ICBjYXNlIFBST1BfU1RSMToKKyAgICB7CisgICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFs
dWUsIGNvbnZlcnRUb1VURjhTdHJpbmcoY29yZVNlbGYtPnN0cjEoKSkpOworICAgICAgICBicmVh
azsKKyAgICB9CisjZW5kaWYgLyogRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMTIpICovCiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BS
T1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwogICAgICAgICBicmVhazsKQEAgLTEy
NSw2ICsxNTEsMTUgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9jbGFz
c19pbml0KFdlYktpdERPTVRlc3RJbnRlcmZhY2VDbGFzcyogcmUKICAgICBnb2JqZWN0Q2xhc3Mt
PmdldF9wcm9wZXJ0eSA9IHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfZ2V0X3Byb3BlcnR5Owog
ICAgIGdvYmplY3RDbGFzcy0+Y29uc3RydWN0ZWQgPSB3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNl
X2NvbnN0cnVjdGVkOwogCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMTIpCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0Q2xhc3Ms
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX1NUUjEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKCJzdHIxIiwg
LyogbmFtZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAidGVzdF9pbnRlcmZhY2Vfc3RyMSIsIC8qIHNob3J0IGRlc2NyaXB0aW9u
ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJyZWFkLW9ubHkgIGdjaGFyKiBUZXN0SW50ZXJmYWNlLnN0cjEiLCAvKiBsb25nZXIg
LSBjb3VsZCBkbyB3aXRoIHNvbWUgZXh0cmEgZG9jIHN0dWZmIGhlcmUgKi8KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIsIC8qIGRl
ZmF1bHQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7CisjZW5kaWYgLyogRU5BQkxFKENv
bmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpICovCiAKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVz
dEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmpl
Y3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZS5oCmluZGV4IGY5YWY4NjZhYTAxZjhkY2UyMzQ5MzM4
MzNmMGFhYmNiN2EyZDJhNGQuLjEzZjY2Yjc1NmJhODM2MWE0MDI4OTJiNjAzOTM2ZWZiZTFhYjY5
NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2Jq
ZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0SW50ZXJmYWNlLmgKQEAgLTQ2LDYg
KzQ2LDE2IEBAIHN0cnVjdCBfV2ViS2l0RE9NVGVzdEludGVyZmFjZUNsYXNzIHsKIFdFQktJVF9B
UEkgR1R5cGUKIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfZ2V0X3R5cGUgKHZvaWQpOwogCisv
KioKKyAqIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfZ2V0X3N0cjE6CisgKiBAc2VsZjogQSAj
V2ViS2l0RE9NVGVzdEludGVyZmFjZQorICoKKyAqIFJldHVybnM6CisgKgorKiovCitXRUJLSVRf
QVBJIGdjaGFyKgord2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9nZXRfc3RyMShXZWJLaXRET01U
ZXN0SW50ZXJmYWNlKiBzZWxmKTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmIC8qIFdlYktpdERP
TVRlc3RJbnRlcmZhY2VfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAppbmRleCA4NWQ4MTAwZTI3
N2Y1YjAzMDNmMTQ0YWZkZGIzZWU4YjRiZjRiNmE0Li41MmRhYjQ3NzA1MWQ4Y2FjZTllOTlhOGJm
YWU0NDk5Y2Q1MDczYTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcApAQCAtMzAsNiArMzAsMTEg
QEAKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgog
CisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisjaW5jbHVk
ZSAiS1VSTC5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmcuaD4KKyNlbmRpZgorCiB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MCwxMiArNTUsMTgg
QEAgQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU1Rlc3RJbnRlcmZhY2UpOwogCiBzdGF0aWMg
Y29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0SW50ZXJmYWNlVGFibGVWYWx1ZXNbXSA9CiB7Cisj
aWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisgICAgeyAic3Ry
MSIsIERvbnREZWxldGUgfCBSZWFkT25seSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RJbnRlcmZhY2VTdHIxKSwgKGludHB0cl90KTAgVEhV
TktfR0VORVJBVE9SKDApIElOVFJJTlNJQyhERkc6Ok5vSW50cmluc2ljKSB9LAorI2VuZGlmCisj
aWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisgICAgeyAic3Ry
MiIsIERvbnREZWxldGUgfCBSZWFkT25seSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RJbnRlcmZhY2VTdHIyKSwgKGludHB0cl90KTAgVEhV
TktfR0VORVJBVE9SKDApIElOVFJJTlNJQyhERkc6Ok5vSW50cmluc2ljKSB9LAorI2VuZGlmCiAg
ICAgeyAiY29uc3RydWN0b3IiLCBEb250RW51bSB8IFJlYWRPbmx5LCAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEludGVyZmFjZUNvbnN0cnVj
dG9yKSwgKGludHB0cl90KTAgVEhVTktfR0VORVJBVE9SKDApIElOVFJJTlNJQyhERkc6Ok5vSW50
cmluc2ljKSB9LAogICAgIHsgMCwgMCwgMCwgMCBUSFVOS19HRU5FUkFUT1IoMCkgSU5UUklOU0lD
KERGRzo6Tm9JbnRyaW5zaWMpIH0KIH07CiAKICN1bmRlZiBUSFVOS19HRU5FUkFUT1IKLXN0YXRp
YyBjb25zdCBIYXNoVGFibGUgSlNUZXN0SW50ZXJmYWNlVGFibGUgPSB7IDIsIDEsIEpTVGVzdElu
dGVyZmFjZVRhYmxlVmFsdWVzLCAwIH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdElu
dGVyZmFjZVRhYmxlID0geyA4LCA3LCBKU1Rlc3RJbnRlcmZhY2VUYWJsZVZhbHVlcywgMCB9Owog
LyogSGFzaCB0YWJsZSBmb3IgY29uc3RydWN0b3IgKi8KICNpZiBFTkFCTEUoSklUKQogI2RlZmlu
ZSBUSFVOS19HRU5FUkFUT1IoZ2VuZXJhdG9yKSAsIGdlbmVyYXRvcgpAQCAtMTg3LDYgKzE5OCwy
NyBAQCBib29sIEpTVGVzdEludGVyZmFjZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYwogICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZURl
c2NyaXB0b3I8SlNUZXN0SW50ZXJmYWNlLCBCYXNlPihleGVjLCAmSlNUZXN0SW50ZXJmYWNlVGFi
bGUsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CiAKKyNpZiBFTkFC
TEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKK0pTVmFsdWUganNUZXN0SW50
ZXJmYWNlU3RyMShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50
aWZpZXImKQoreworICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0
PEpTVGVzdEludGVyZmFjZSo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CisgICAgVU5VU0VEX1BBUkFN
KGV4ZWMpOworICAgIFRlc3RJbnRlcmZhY2UqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RJbnRlcmZh
Y2UqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmco
ZXhlYywgaW1wLT5zdHIxKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNlbmRpZgorCisj
aWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCitKU1ZhbHVlIGpz
VGVzdEludGVyZmFjZVN0cjIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25z
dCBJZGVudGlmaWVyJikKK3sKKyAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBzdGF0
aWNfY2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihhc09iamVjdChzbG90QmFzZSkpOworICAgIHJldHVy
biBjYXN0ZWRUaGlzLT5zdHIyKGV4ZWMpOworfQorCisjZW5kaWYKKwogSlNWYWx1ZSBqc1Rlc3RJ
bnRlcmZhY2VDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNv
bnN0IElkZW50aWZpZXImKQogewogICAgIEpTVGVzdEludGVyZmFjZSogZG9tT2JqZWN0ID0gc3Rh
dGljX2Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZh
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRl
cmZhY2UuaAppbmRleCBiYzJiMDY3YWQzYTBmYzdiMWZhOGYxZjdiZGE5NzI1ZDFhMWQ4MjAzLi43
MGVlZmVkNTVjZTVmYTRhOGU2MmRiOTEzZDIxYTk5NTEwNTMwN2I3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFj
ZS5oCkBAIC01Miw2ICs1Miw5IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpK
U1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVj
dCopOworCisgICAgLy8gQ3VzdG9tIGF0dHJpYnV0ZXMKKyAgICBKU0M6OkpTVmFsdWUgc3RyMihK
U0M6OkV4ZWNTdGF0ZSopIGNvbnN0OwogICAgIFRlc3RJbnRlcmZhY2UqIGltcGwoKSBjb25zdCB7
IHJldHVybiBtX2ltcGw7IH0KICAgICB2b2lkIHJlbGVhc2VJbXBsKCkgeyBtX2ltcGwtPmRlcmVm
KCk7IG1faW1wbCA9IDA7IH0KIApAQCAtMTM0LDYgKzEzNyw4IEBAIHByb3RlY3RlZDoKIAogLy8g
QXR0cmlidXRlcwogCitKU0M6OkpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3RyMShKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7CitKU0M6OkpTVmFs
dWUganNUZXN0SW50ZXJmYWNlU3RyMihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29u
c3QgSlNDOjpJZGVudGlmaWVyJik7CiBKU0M6OkpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3Ry
dWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6SWRlbnRpZmll
ciYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJmYWNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJmYWNlLmgKaW5k
ZXggZGI3YmUyOGNiOWFkNDA4Y2Q1MmQ4OGY3MGIxODhkZGQ4MzgyNWY5Mi4uODdhYmFlYTczMmRm
NzgzN2QxZGY3OWU2M2Q1YzhhMzlmZTc5NWQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEludGVyZmFjZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZhY2UuaApA
QCAtMjgsNyArMjgsMTUgQEAKIAogI2lmIFdFQktJVF9WRVJTSU9OX01BWF9BTExPV0VEID49IFdF
QktJVF9WRVJTSU9OX0xBVEVTVAogCitAY2xhc3MgTlNTdHJpbmc7CisKIEBpbnRlcmZhY2UgRE9N
VGVzdEludGVyZmFjZSA6IERPTU9iamVjdAorI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5B
QkxFKENvbmRpdGlvbjEyKQorLSAoTlNTdHJpbmcgKilzdHIxOworI2VuZGlmCisjaWYgRU5BQkxF
KENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCistIChOU1N0cmluZyAqKXN0cjI7
CisjZW5kaWYKIEBlbmQKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEludGVyZmFjZS5tbQppbmRleCBh
YjU5MzMzMGM4NzIwY2FlOGUxZmJjNGExYmYxMzQ0M2M1OGI5MGU4Li4yYjVkZjkxODNkZTM3NWI5
OWRkMDE1MzM0OTJjMTVkMDQ4MzE5YWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZhY2UubW0KQEAg
LTQxLDYgKzQxLDcgQEAKICNpbXBvcnQgIkRPTVRlc3RJbnRlcmZhY2VJbnRlcm5hbC5oIgogI2lt
cG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgIkpTTWFpblRocmVhZEV4ZWNTdGF0
ZS5oIgorI2ltcG9ydCAiS1VSTC5oIgogI2ltcG9ydCAiVGVzdEludGVyZmFjZS5oIgogI2ltcG9y
dCAiVGhyZWFkQ2hlY2suaCIKICNpbXBvcnQgIldlYkNvcmVPYmpDRXh0cmFzLmgiCkBAIC02OCw2
ICs2OSwyMiBAQAogICAgIFtzdXBlciBmaW5hbGl6ZV07CiB9CiAKKyNpZiBFTkFCTEUoQ29uZGl0
aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKy0gKE5TU3RyaW5nICopc3RyMQoreworICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+
c3RyMSgpOworfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShD
b25kaXRpb24xMikKKy0gKE5TU3RyaW5nICopc3RyMgoreworICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+c3RyMigpOworfQorI2VuZGlm
CisKIEBlbmQKIAogV2ViQ29yZTo6VGVzdEludGVyZmFjZSogY29yZShET01UZXN0SW50ZXJmYWNl
ICp3cmFwcGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3RTdXBwbGVtZW50YWwuaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RTdXBwbGVtZW50YWwuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkMTQwNmJmYmQ5OTg4MTFi
NmRjYTYwNTA3NDc2ZThlYTZhOTY1MzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFN1cHBsZW1lbnRhbC5pZGwKQEAgLTAsMCArMSwz
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXN0ckFyZywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBv
ZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVzdHJBcmcsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisvLyBUaGlzIElETCBmaWxlIGlzIGZvciB0ZXN0aW5nIHRoZSBiaW5k
aW5ncyBjb2RlIGdlbmVyYXRvciBhbmQgZm9yIHRyYWNraW5nCisvLyBjaGFuZ2VzIGluIGl0cyBv
dXB1dC4KK21vZHVsZSB0ZXN0IHsKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25h
bD1Db25kaXRpb24xMXxDb25kaXRpb24xMiwKKyAgICAgICAgU3VwcGxlbWVudGFsPVRlc3RJbnRl
cmZhY2UKKyAgICBdIFRlc3RTdXBwbGVtZW50YWwgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIHN0cjE7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ3VzdG9tR2V0
dGVyLCBPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gRE9NU3RyaW5nIHN0cjI7CisgICAg
fTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAKaW5kZXggNWI0NWE2ZGYzM2MxNjkyYTNhZjdkNDUw
NTc2NTMyZWMxYTg2ZDNkOS4uMDFjY2NiNzMzNDZiNDVmZDZkN2VmYzVjMDY3NmJjMmRhMGFlNDU2
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAKQEAgLTQxLDggKzQxLDMwIEBAIG5hbWVzcGFjZSBU
ZXN0SW50ZXJmYWNlSW50ZXJuYWwgewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBWOF9V
U0UoVCkgeyB9CiAKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24x
MikKKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdHIxQXR0ckdldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAg
ICBJTkNfU1RBVFMoIkRPTS5UZXN0SW50ZXJmYWNlLnN0cjEuX2dldCIpOworICAgIFRlc3RJbnRl
cmZhY2UqIGltcCA9IFY4VGVzdEludGVyZmFjZTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Cisg
ICAgcmV0dXJuIHY4U3RyaW5nKGltcC0+c3RyMSgpKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShD
b25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0
SW50ZXJmYWNlSW50ZXJuYWwKIAorc3RhdGljIGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUgVGVzdElu
dGVyZmFjZUF0dHJzW10gPSB7CisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMTIpCisgICAgLy8gQXR0cmlidXRlICdzdHIxJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJp
YnV0ZScgRXh0QXR0cjogJ0NvbmRpdGlvbmFsJykKKyAgICB7InN0cjEiLCBUZXN0SW50ZXJmYWNl
SW50ZXJuYWw6OnN0cjFBdHRyR2V0dGVyLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0
PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0
eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyNlbmRpZiAvLyBF
TkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKyNpZiBFTkFCTEUoQ29u
ZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKyAgICAvLyBBdHRyaWJ1dGUgJ3N0cjIn
IChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnQ3VzdG9tR2V0dGVyIE9wdGlv
bmFsIENvbmRpdGlvbmFsJykKKyAgICB7InN0cjIiLCBWOFRlc3RJbnRlcmZhY2U6OnN0cjJBY2Nl
c3NvckdldHRlciwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29u
dHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4
OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlv
bjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCit9OworCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhUZXN0SW50ZXJmYWNlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdEludGVyZmFjZS5Db25zdHJ1Y3RvciIp
OwpAQCAtODEsNyArMTAzLDcgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBDb25maWd1cmVWOFRlc3RJbnRlcmZhY2VUZW1wbGF0ZSh2ODoKIAogICAgIHY4OjpM
b2NhbDx2ODo6U2lnbmF0dXJlPiBkZWZhdWx0U2lnbmF0dXJlOwogICAgIGRlZmF1bHRTaWduYXR1
cmUgPSBjb25maWd1cmVUZW1wbGF0ZShkZXNjLCAiVGVzdEludGVyZmFjZSIsIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RJbnRlcmZhY2U6OmludGVybmFsRmll
bGRDb3VudCwKLSAgICAgICAgMCwgMCwKKyAgICAgICAgVGVzdEludGVyZmFjZUF0dHJzLCBXVEZf
QVJSQVlfTEVOR1RIKFRlc3RJbnRlcmZhY2VBdHRycyksCiAgICAgICAgIDAsIDApOwogICAgIFVO
VVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJlKTsgLy8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBu
b3QgYmUgdXNlZC4KICAgICBkZXNjLT5TZXRDYWxsSGFuZGxlcihWOFRlc3RJbnRlcmZhY2U6OmNv
bnN0cnVjdG9yQ2FsbGJhY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oCmluZGV4IGEwNDhjODM0MTZiMDA5
MGUzZmIyYzIxODFiZTAyZjI3YTYyN2NhMGYuLjQ2NDMwZGNiM2FjMDA1YTQ4ZDllNjRlNTlmYjE4
MjdjZTlhMjliNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBXcmFwcGVyVHlwZUluZm8gaW5mbzsKICAgICBzdGF0aWMgQWN0aXZlRE9N
T2JqZWN0KiB0b0FjdGl2ZURPTU9iamVjdCh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KTsKICAgICBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYpOworICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3RyMkFjY2Vz
c29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKTsKICAgICBzdGF0aWMgY29uc3QgaW50IGludGVybmFsRmllbGRDb3VudCA9IHY4
RGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOwogICAgIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGV4aXN0aW5nV3JhcHBlcihUZXN0SW50ZXJmYWNlKik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmlkbAppbmRleCBjOWFjMjUxYzI2YmRlNDkzMDg3MjYyOTBkYzZhYTc4
NDMwMDE5MWE2Li5hYjMzZTI5ZmY2NTJjNjBlZGU4ZWQyNmNjNjMxNTljYzkwOWY0YWRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCkBAIC01MjIsOCArNTIyLDggQEAgbW9kdWxlIHdpbmRv
dyB7CiAgICAgICAgIGF0dHJpYnV0ZSBbSlNDQ3VzdG9tR2V0dGVyXSBGbG9hdDY0QXJyYXlDb25z
dHJ1Y3RvciBGbG9hdDY0QXJyYXk7IC8vIFVzYWJsZSB3aXRoIG5ldyBvcGVyYXRvcgogICAgICAg
ICBhdHRyaWJ1dGUgW0pTQ0N1c3RvbUdldHRlcl0gRGF0YVZpZXdDb25zdHJ1Y3RvciBEYXRhVmll
dzsgLy8gVXNhYmxlIHdpdGggbmV3IG9wZXJhdG9yCiAKLSAgICAgICAgYXR0cmlidXRlIFtKU0ND
dXN0b21HZXR0ZXIsQ29uZGl0aW9uYWw9V0VCX0FVRElPLEVuYWJsZWRBdFJ1bnRpbWVdIEF1ZGlv
Q29udGV4dENvbnN0cnVjdG9yIHdlYmtpdEF1ZGlvQ29udGV4dDsgLy8gVXNhYmxlIHdpdGggbmV3
IG9wZXJhdG9yCi0gICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9V0VCX0FVRElPXSBBdWRp
b1Bhbm5lck5vZGVDb25zdHJ1Y3RvciB3ZWJraXRBdWRpb1Bhbm5lck5vZGU7IC8vIE5lZWRlZCBm
b3IgcGFubmluZyBtb2RlbCBjb25zdGFudHMKKyAgICAgICAgYXR0cmlidXRlIFtTdXBwbGVtZW50
ZWQsIEpTQ0N1c3RvbUdldHRlcixDb25kaXRpb25hbD1XRUJfQVVESU8sRW5hYmxlZEF0UnVudGlt
ZV0gQXVkaW9Db250ZXh0Q29uc3RydWN0b3Igd2Via2l0QXVkaW9Db250ZXh0OyAvLyBUaGlzIGxp
bmUgd2lsbCBiZSByZW1vdmVkIGFmdGVyIGFsbCBwbGF0Zm9ybXMgc3VwcG9ydCB0aGUgW1N1cHBs
ZW1lbnRhbF0gSURMLgorICAgICAgICBhdHRyaWJ1dGUgW1N1cHBsZW1lbnRlZCwgQ29uZGl0aW9u
YWw9V0VCX0FVRElPXSBBdWRpb1Bhbm5lck5vZGVDb25zdHJ1Y3RvciB3ZWJraXRBdWRpb1Bhbm5l
ck5vZGU7IC8vIFRoaXMgbGluZSB3aWxsIGJlIHJlbW92ZWQgYWZ0ZXIgYWxsIHBsYXRmb3JtcyBz
dXBwb3J0IHRoZSBbU3VwcGxlbWVudGFsXSBJREwuCiAKICAgICAgICAgLy8gRXZlbnQgQ29uc3Ry
dWN0b3JzCiAgICAgICAgIGF0dHJpYnV0ZSBFdmVudENvbnN0cnVjdG9yIEV2ZW50OwpAQCAtNTUy
LDggKzU1Miw5IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlv
bmFsPVRPVUNIX0VWRU5UU10gVG91Y2hFdmVudENvbnN0cnVjdG9yIFRvdWNoRXZlbnQ7CiAgICAg
ICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9V0VCX1NPQ0tFVFNdIENsb3NlRXZlbnRDb25zdHJ1
Y3RvciBDbG9zZUV2ZW50OwogICAgICAgICBhdHRyaWJ1dGUgU3RvcmFnZUV2ZW50Q29uc3RydWN0
b3IgU3RvcmFnZUV2ZW50OwotICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPVdFQl9BVURJ
T10gQXVkaW9Qcm9jZXNzaW5nRXZlbnRDb25zdHJ1Y3RvciBBdWRpb1Byb2Nlc3NpbmdFdmVudDsK
LSAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1XRUJfQVVESU9dIE9mZmxpbmVBdWRpb0Nv
bXBsZXRpb25FdmVudENvbnN0cnVjdG9yIE9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudDsKKwor
ICAgICAgICBhdHRyaWJ1dGUgW1N1cHBsZW1lbnRlZCwgQ29uZGl0aW9uYWw9V0VCX0FVRElPXSBB
dWRpb1Byb2Nlc3NpbmdFdmVudENvbnN0cnVjdG9yIEF1ZGlvUHJvY2Vzc2luZ0V2ZW50OyAvLyBU
aGlzIGxpbmUgd2lsbCBiZSByZW1vdmVkIGFmdGVyIGFsbCBwbGF0Zm9ybXMgc3VwcG9ydCB0aGUg
W1N1cHBsZW1lbnRhbF0gSURMLgorICAgICAgICBhdHRyaWJ1dGUgW1N1cHBsZW1lbnRlZCwgQ29u
ZGl0aW9uYWw9V0VCX0FVRElPXSBPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnRDb25zdHJ1Y3Rv
ciBPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQ7IC8vIFRoaXMgbGluZSB3aWxsIGJlIHJlbW92
ZWQgYWZ0ZXIgYWxsIHBsYXRmb3JtcyBzdXBwb3J0IHRoZSBbU3VwcGxlbWVudGFsXSBJREwuCiAg
ICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9SU5QVVRfU1BFRUNIXSBTcGVlY2hJbnB1dEV2
ZW50Q29uc3RydWN0b3IgU3BlZWNoSW5wdXRFdmVudDsKICAgICAgICAgYXR0cmlidXRlIFtDb25k
aXRpb25hbD1NRURJQV9TVFJFQU1dIE1lZGlhU3RyZWFtRXZlbnRDb25zdHJ1Y3RvciBNZWRpYVN0
cmVhbUV2ZW50OwogICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPVdFQkdMXSBXZWJHTENv
bnRleHRFdmVudENvbnN0cnVjdG9yIFdlYkdMQ29udGV4dEV2ZW50OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd2ViYXVkaW8vRE9NV2luZG93V2ViQXVkaW8uaWRsIGIvU291cmNlL1dlYkNv
cmUvd2ViYXVkaW8vRE9NV2luZG93V2ViQXVkaW8uaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkMTA4ZWZiN2Iw
MzNlZmZiMWVlZWQ3YWM0MDUxYjE3MjBmN2ZhOTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93ZWJhdWRpby9ET01XaW5kb3dXZWJBdWRpby5pZGwKQEAgLTAsMCArMSwzMiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLwor
Cittb2R1bGUgd2luZG93IHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFs
PVdFQl9BVURJTywKKyAgICAgICAgU3VwcGxlbWVudGFsPURPTVdpbmRvdworICAgIF0gRE9NV2lu
ZG93V2ViQXVkaW8geworICAgICAgICBhdHRyaWJ1dGUgW0pTQ0N1c3RvbUdldHRlciwgRW5hYmxl
ZEF0UnVudGltZV0gQXVkaW9Db250ZXh0Q29uc3RydWN0b3Igd2Via2l0QXVkaW9Db250ZXh0Owor
ICAgICAgICBhdHRyaWJ1dGUgQXVkaW9QYW5uZXJOb2RlQ29uc3RydWN0b3Igd2Via2l0QXVkaW9Q
YW5uZXJOb2RlOworICAgICAgICBhdHRyaWJ1dGUgQXVkaW9Qcm9jZXNzaW5nRXZlbnRDb25zdHJ1
Y3RvciBBdWRpb1Byb2Nlc3NpbmdFdmVudDsKKyAgICAgICAgYXR0cmlidXRlIE9mZmxpbmVBdWRp
b0NvbXBsZXRpb25FdmVudENvbnN0cnVjdG9yIE9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudDsK
KyAgICB9OworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDY1YWJmOWRhZDcyMDJkMGFjZmZl
NWM0ZWQxYmZlM2M3MmU1MDVjMzkuLjQ2YmU1ZDliMmViYWZmZDY5OWRhNDljMGI1NGQ3MTIxY2U0
MGQwM2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzOCBAQAorMjAxMS0xMS0yNCAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgV0lQOiBJbXBsZW1lbnQgW1N1cHBsZW1lbnRhbF0gSURMCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjEzOAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gcnVuLWJpbmRp
bmdzLXRlc3RzIHN1cHBvcnRzIHRoZSBbU3VwcGxlbWVudGFsXSBJREwgaW4gdGhlIGZvbGxvd2lu
ZyB3YXkuCisgICAgICAgICAgICAoMSkgSXQgY3JlYXRlcyBhIGZpbGUgfHh8IGxpc3RpbmcgYWxs
IElETCBmaWxlcy4KKyAgICAgICAgICAgICgyKSBJdCBnZW5lcmF0ZXMgYSBzdXBwbGVtZW50YWwg
ZGVwZW5kZW5jeSBmaWxlIHx5fCB1c2luZyByZXNvbHZlLXN1cHBsZW1lbnRhbC5wbCBhbmQgfHh8
LgorICAgICAgICAgICAgKDMpIEZvciBlYWNoIElETCBmaWxlIHx6fCwgaXQgcnVucyBnZW5lcmF0
ZS1iaW5kaW5ncy5wbCB3aXRoIHx5fC4KKyAgICAgICAgICAgICAgICBUaGVuLCBnZW5lcmF0ZS1i
aW5kaW5ncy5wbCBnZW5lcmF0ZXMgLmggYW5kIC5jcHAgZmlsZXMgZm9yIHRoZSBJREwgZmlsZSB8
enwsCisgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGFsbCBhdHRyaWJ1dGVzIGluIElETCBmaWxl
cyB0aGF0IGFyZSBzdXBwbGVtZW50aW5nIHRoZSBJREwgZmlsZSB8enwuCisKKyAgICAgICAgLSBC
dWctZml4OiBQcmV2aW91c2x5LCBydW4tYmluZGluZ3MtdGVzdHMgZm9yIE9iakMgYXJlIGZhaWxp
bmcgYmVjYXVzZSBvZiB0aGUgd3JvbmcKKyAgICAgICAgc2V0dGluZyBvZiBhIGN1cnJlbnQgd29y
a2luZyBkaXJlY3RvcnkuIFRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUgY3VycmVudCB3b3JraW5nCisg
ICAgICAgIGRpcmVjdG9yeSBmcm9tIFdlYktpdC8gdG8gV2ViS2l0L1NvdXJjZS8uCisKKyAgICAg
ICAgLSBCdWctZml4OiBQcmV2aW91c2x5LCB0aGUgc3Rkb3V0IGFuZCBzdGRlcnIgb2YgdGhlIGNo
aWxkIHByb2Nlc3NlcyAoaS5lLiByZXNvbHZlLXN1cHBsZW1lbnRhbC5wbCwKKyAgICAgICAgZ2Vu
ZXJhdGUtYmluZGluZ3MucGwgYW5kIGRpZmYgY29tbWFuZCkgYXJlIG1peGVkIChvciBldmVuIGdv
bmUgYXdheSkgd2l0aCB0aGUgc3Rkb3V0IGFuZCBzdGRlcnIKKyAgICAgICAgb2YgdGhlIHBhcmVu
dCBwcm9jZXNzIChpLmUuIHJ1bi1iaW5kaW5ncy10ZXN0cykuIFRoaXMgaXMgdGhlIHByb2JsZW0g
b2Ygc3VicHJvY2Vzcy5jYWxsKCkuCisgICAgICAgIFRoaXMgcGF0Y2ggcmVwbGFjZXMgc3VicHJv
Y2Vzcy5jYWxsKCkgd2l0aCBzdWJwcm9jZXNzLlBvcGVuKCkgYW5kIC5jb21tdW5pY2F0ZSgpLgor
ICAgICAgICBUaGlzIG1ha2VzIGFsbCBzdGRvdXQgYW5kIHN0ZGVyciBvZiB0aGUgY2hpbGQgcHJv
Y2Vzc2VzIHN5bmNocm9uaXplIHdpdGggc3Rkb3V0IGFuZCBzdGRlcnIKKyAgICAgICAgb2YgdGhl
IHBhcmVudCBwcm9jZXNzLgorCisgICAgICAgIC0gUmVmYWN0b3Jpbmc6IFByZXZpb3VzbHksIHRo
ZSBvdXRwdXQgbWVzc2FnZXMgb2YgcnVuLWJpbmRpbmdzLXRlc3RzIHdlcmUgdmVyYm9zZSBhbmQK
KyAgICAgICAgZGlmZmljdWx0IHRvIHJlYWQuIFRoaXMgcGF0Y2ggcmVmaW5lcyB0aGUgb3V0cHV0
IG1lc3NhZ2VzLgorCisgICAgICAgICogU2NyaXB0cy9ydW4tYmluZGluZ3MtdGVzdHM6CisgICAg
ICAgIChnZW5lcmF0ZV9mcm9tX2lkbCk6CisgICAgICAgIChnZW5lcmF0ZV9zdXBwbGVtZW50YWxf
ZGVwZW5kZW5jeSk6CisgICAgICAgIChkZXRlY3RfY2hhbmdlcyk6CisgICAgICAgIChydW5fdGVz
dHMpOgorICAgICAgICAobWFpbik6CisKIDIwMTEtMTEtMjQgIFRvciBBcm5lIFZlc3Riw7ggIDx0
b3IuYXJuZS52ZXN0Ym9Abm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gR2V0IHJpZCBvZiB0aGUg
YnVpbGREaXJGb3JTb3VyY2UoKSBmdW5jdGlvbiBpbiB0aGUgYnVpbGQgc3lzdGVtCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3J1bi1iaW5kaW5ncy10ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvcnVu
LWJpbmRpbmdzLXRlc3RzCmluZGV4IDk4ODIyNzU5YWI0OTQ5ZTU2OTlhY2VmMjA1MWRlMmY2ZTNl
Yjk0MjEuLjRhNGM1ZGIyYzQwMTlkMzg2ZDRjZTUzZTVjOGQ4ZjNlYTNmZDgxNmEgMTAwNzU1Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvcnVuLWJpbmRpbmdzLXRlc3RzCisrKyBiL1Rvb2xzL1NjcmlwdHMv
cnVuLWJpbmRpbmdzLXRlc3RzCkBAIC0zOCw2OCArMzgsMTAwIEBAIGltcG9ydCB0ZW1wZmlsZQog
ZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtLmRldGVjdGlvbiBpbXBvcnQgZGV0ZWN0
X3NjbV9zeXN0ZW0KIAogCi1kZWYgZ2VuZXJhdGVfZnJvbV9pZGwoZ2VuZXJhdG9yLCBpZGxfZmls
ZSwgb3V0cHV0X2RpcmVjdG9yeSk6CitkZWYgZ2VuZXJhdGVfZnJvbV9pZGwoZ2VuZXJhdG9yLCBp
ZGxfZmlsZSwgb3V0cHV0X2RpcmVjdG9yeSwgc3VwcGxlbWVudGFsX2RlcGVuZGVuY3lfZmlsZSk6
CiAgICAgY21kID0gWydwZXJsJywgJy13JywKLSAgICAgICAgICAgJy1JU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cycsCi0gICAgICAgICAgICdTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsJywKLSAgICAgICAgICAgIyBpZGwgaW5jbHVkZSBk
aXJlY3RvcmllcyAocGF0aCByZWxhdGl2ZSB0byBnZW5lcmF0ZS1iaW5kaW5ncy5wbCkKKyAgICAg
ICAgICAgJy1JV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzJywKKyAgICAgICAgICAgJ1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbCcsCiAgICAgICAgICAgICctLWlu
Y2x1ZGUnLCAnLicsCiAgICAgICAgICAgICctLWRlZmluZXMnLCAnVEVTVElOR18lcycgJSBnZW5l
cmF0b3IsCiAgICAgICAgICAgICctLWdlbmVyYXRvcicsIGdlbmVyYXRvciwKICAgICAgICAgICAg
Jy0tb3V0cHV0RGlyJywgb3V0cHV0X2RpcmVjdG9yeSwKKyAgICAgICAgICAgJy0tc3VwcGxlbWVu
dGFsRGVwZW5kZW5jeUZpbGUnLCBzdXBwbGVtZW50YWxfZGVwZW5kZW5jeV9maWxlLAogICAgICAg
ICAgICBpZGxfZmlsZV0KLSAgICByZXR1cm4gc3VicHJvY2Vzcy5jYWxsKGNtZCkgPT0gMAorICAg
IHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwgc3Rkb3V0ID0gc3VicHJvY2Vzcy5QSVBF
LCBzdGRlcnIgPSBzdWJwcm9jZXNzLlNURE9VVCkKKyAgICBleGl0X2NvZGUgPSBwcm9jZXNzLndh
aXQoKQorICAgIG91dHB1dCA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKVswXQorICAgIGlmIG91dHB1
dDoKKyAgICAgICAgcHJpbnQgb3V0cHV0CisgICAgcmV0dXJuIGV4aXRfY29kZQogCiAKLWRlZiBk
ZXRlY3RfY2hhbmdlcyh3b3JrX2RpcmVjdG9yeSwgcmVmZXJlbmNlX2RpcmVjdG9yeSk6CitkZWYg
Z2VuZXJhdGVfc3VwcGxlbWVudGFsX2RlcGVuZGVuY3koaW5wdXRfZGlyZWN0b3J5LCBzdXBwbGVt
ZW50YWxfZGVwZW5kZW5jeV9maWxlKToKKyAgICBpZGxfZmlsZXNfbGlzdCA9IHRlbXBmaWxlLm1r
c3RlbXAoKQorICAgIGZvciBpbnB1dF9maWxlIGluIG9zLmxpc3RkaXIoaW5wdXRfZGlyZWN0b3J5
KToKKyAgICAgICAgKG5hbWUsIGV4dGVuc2lvbikgPSBvcy5wYXRoLnNwbGl0ZXh0KGlucHV0X2Zp
bGUpCisgICAgICAgIGlmIGV4dGVuc2lvbiAhPSAnLmlkbCc6CisgICAgICAgICAgICBjb250aW51
ZQorICAgICAgICBvcy53cml0ZShpZGxfZmlsZXNfbGlzdFswXSwgb3MucGF0aC5qb2luKGlucHV0
X2RpcmVjdG9yeSwgaW5wdXRfZmlsZSkgKyAiXG4iKQorICAgIG9zLmNsb3NlKGlkbF9maWxlc19s
aXN0WzBdKQorCisgICAgY21kID0gWydwZXJsJywgJy13JywKKyAgICAgICAgICAgJy1JV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzJywKKyAgICAgICAgICAgJ1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9yZXNvbHZlLXN1cHBsZW1lbnRhbC5wbCcsCisgICAgICAgICAgICctLWlkbEZpbGVzTGlzdCcs
IGlkbF9maWxlc19saXN0WzFdLAorICAgICAgICAgICAnLS1kZWZpbmVzJywgJycsCisgICAgICAg
ICAgICctLXN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlJywgc3VwcGxlbWVudGFsX2RlcGVuZGVu
Y3lfZmlsZV0KKyAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHN0ZG91dCA9IHN1
YnByb2Nlc3MuUElQRSwgc3RkZXJyID0gc3VicHJvY2Vzcy5TVERPVVQpCisgICAgZXhpdF9jb2Rl
ID0gcHJvY2Vzcy53YWl0KCkKKyAgICBvdXRwdXQgPSBwcm9jZXNzLmNvbW11bmljYXRlKClbMF0K
KyAgICBpZiBvdXRwdXQ6CisgICAgICAgIHByaW50IG91dHB1dAorICAgIG9zLnJlbW92ZShpZGxf
ZmlsZXNfbGlzdFsxXSkKKyAgICByZXR1cm4gZXhpdF9jb2RlCisKKworZGVmIGRldGVjdF9jaGFu
Z2VzKGdlbmVyYXRvciwgd29ya19kaXJlY3RvcnksIHJlZmVyZW5jZV9kaXJlY3RvcnkpOgogICAg
IGNoYW5nZXNfZm91bmQgPSBGYWxzZQogICAgIGZvciBvdXRwdXRfZmlsZSBpbiBvcy5saXN0ZGly
KHdvcmtfZGlyZWN0b3J5KToKLSAgICAgICAgcHJpbnQgJ0RldGVjdGluZyBjaGFuZ2VzIGluICVz
Li4uJyAlIG91dHB1dF9maWxlCiAgICAgICAgIGNtZCA9IFsnZGlmZicsCiAgICAgICAgICAgICAg
ICAnLXUnLAogICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHJlZmVyZW5jZV9kaXJlY3Rvcnks
IG91dHB1dF9maWxlKSwKICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbih3b3JrX2RpcmVjdG9y
eSwgb3V0cHV0X2ZpbGUpXQotICAgICAgICBpZiBzdWJwcm9jZXNzLmNhbGwoY21kKSAhPSAwOgot
ICAgICAgICAgICAgcHJpbnQgJ0RldGVjdGVkIGNoYW5nZXMgaW4gJXMgKHNlZSBhYm92ZSknICUg
b3V0cHV0X2ZpbGUKKyAgICAgICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzdGRv
dXQgPSBzdWJwcm9jZXNzLlBJUEUsIHN0ZGVyciA9IHN1YnByb2Nlc3MuU1RET1VUKQorICAgICAg
ICBwcm9jZXNzLndhaXQoKQorICAgICAgICBvdXRwdXQgPSBwcm9jZXNzLmNvbW11bmljYXRlKClb
MF0KKyAgICAgICAgaWYgb3V0cHV0OgorICAgICAgICAgICAgcHJpbnQgJ0ZBSUw6ICglcykgJXMn
ICUgKGdlbmVyYXRvciwgb3V0cHV0X2ZpbGUpCisgICAgICAgICAgICBwcmludCBvdXRwdXQKICAg
ICAgICAgICAgIGNoYW5nZXNfZm91bmQgPSBUcnVlCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICBwcmludCAnTm8gY2hhbmdlcyBmb3VuZC4nCisgICAgICAgICAgICBwcmludCAnUEFTUzogKCVz
KSAlcycgJSAoZ2VuZXJhdG9yLCBvdXRwdXRfZmlsZSkKIAogICAgIHJldHVybiBjaGFuZ2VzX2Zv
dW5kCiAKIAotZGVmIHJ1bl90ZXN0cyhnZW5lcmF0b3IsIGlucHV0X2RpcmVjdG9yeSwgcmVmZXJl
bmNlX2RpcmVjdG9yeSwgcmVzZXRfcmVzdWx0cyk6Ci0gICAgd29ya19kaXJlY3RvcnkgPSByZWZl
cmVuY2VfZGlyZWN0b3J5Ci0KK2RlZiBydW5fdGVzdHMoZ2VuZXJhdG9yLCBpbnB1dF9kaXJlY3Rv
cnksIHJlZmVyZW5jZV9kaXJlY3RvcnksIHJlc2V0X3Jlc3VsdHMsIHN1cHBsZW1lbnRhbF9kZXBl
bmRlbmN5X2ZpbGUpOgogICAgIHBhc3NlZCA9IFRydWUKICAgICBmb3IgaW5wdXRfZmlsZSBpbiBv
cy5saXN0ZGlyKGlucHV0X2RpcmVjdG9yeSk6CiAgICAgICAgIChuYW1lLCBleHRlbnNpb24pID0g
b3MucGF0aC5zcGxpdGV4dChpbnB1dF9maWxlKQogICAgICAgICBpZiBleHRlbnNpb24gIT0gJy5p
ZGwnOgogICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgcHJpbnQgJ1Rlc3RpbmcgdGhlICVz
IGdlbmVyYXRvciBvbiAlcycgJSAoZ2VuZXJhdG9yLCBpbnB1dF9maWxlKQotICAgICAgICAjIEdl
bmVyYXRlIG91dHB1dCBpbnRvIHRoZSB3b3JrIGRpcmVjdG9yeSAoZWl0aGVyIHRoZSBnaXZlbiBv
bmUgb3IgYSAKKworICAgICAgICAjIEdlbmVyYXRlIG91dHB1dCBpbnRvIHRoZSB3b3JrIGRpcmVj
dG9yeSAoZWl0aGVyIHRoZSBnaXZlbiBvbmUgb3IgYQogICAgICAgICAjIHRlbXAgb25lIGlmIG5v
dCByZXNldF9yZXN1bHRzIGlzIHBlcmZvcm1lZCkKKyAgICAgICAgd29ya19kaXJlY3RvcnkgPSBy
ZWZlcmVuY2VfZGlyZWN0b3J5CiAgICAgICAgIGlmIG5vdCByZXNldF9yZXN1bHRzOgogICAgICAg
ICAgICAgd29ya19kaXJlY3RvcnkgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKLSAgICAgICAgaWYgbm90
IGdlbmVyYXRlX2Zyb21faWRsKGdlbmVyYXRvciwgb3MucGF0aC5qb2luKGlucHV0X2RpcmVjdG9y
eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlucHV0X2ZpbGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya19k
aXJlY3RvcnkpOgorICAgICAgICBpZiBnZW5lcmF0ZV9mcm9tX2lkbChnZW5lcmF0b3IsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihpbnB1dF9kaXJlY3RvcnksIGlu
cHV0X2ZpbGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JrX2RpcmVjdG9yeSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcGxlbWVudGFsX2RlcGVuZGVuY3lfZmls
ZSk6CiAgICAgICAgICAgICBwYXNzZWQgPSBGYWxzZQorCiAgICAgICAgIGlmIHJlc2V0X3Jlc3Vs
dHM6Ci0gICAgICAgICAgICBwcmludCAiT3Zlcndyb3RlIHJlZmVyZW5jZSBmaWxlcyIKKyAgICAg
ICAgICAgIHByaW50ICJSZXNldHRpbmcgcmVzdWx0czogKCVzKSAlcyIgJSAoZ2VuZXJhdG9yLCBp
bnB1dF9maWxlKQogICAgICAgICAgICAgY29udGludWUKKwogICAgICAgICAjIERldGVjdCBjaGFu
Z2VzCi0gICAgICAgIGlmIGRldGVjdF9jaGFuZ2VzKHdvcmtfZGlyZWN0b3J5LCByZWZlcmVuY2Vf
ZGlyZWN0b3J5KToKKyAgICAgICAgaWYgZGV0ZWN0X2NoYW5nZXMoZ2VuZXJhdG9yLCB3b3JrX2Rp
cmVjdG9yeSwgcmVmZXJlbmNlX2RpcmVjdG9yeSk6CiAgICAgICAgICAgICBwYXNzZWQgPSBGYWxz
ZQogICAgICAgICBzaHV0aWwucm10cmVlKHdvcmtfZGlyZWN0b3J5KQogCi0gICAgaWYgbm90IHBh
c3NlZDoKLSAgICAgICAgcHJpbnQgJyVzIGdlbmVyYXRvciBmYWlsZWQuJyAlIGdlbmVyYXRvcgog
ICAgIHJldHVybiBwYXNzZWQKIAogCiBkZWYgbWFpbihhcmd2KToKLSAgICAiIiJSdW5zIFdlYkNv
cmUgYmluZGluZ3MgY29kZSBnZW5lcmF0b3JzIG9uIHRlc3QgSURMIGZpbGVzIGFuZCBjb21wYXJl
cyAKKyAgICAiIiJSdW5zIFdlYkNvcmUgYmluZGluZ3MgY29kZSBnZW5lcmF0b3JzIG9uIHRlc3Qg
SURMIGZpbGVzIGFuZCBjb21wYXJlcwogICAgIHRoZSByZXN1bHRzIHdpdGggcmVmZXJlbmNlIGZp
bGVzLgogCiAgICAgT3B0aW9uczoKQEAgLTEwOSw3ICsxNDEsNyBAQCBkZWYgbWFpbihhcmd2KToK
ICAgICByZXNldF9yZXN1bHRzID0gIi0tcmVzZXQtcmVzdWx0cyIgaW4gYXJndgogCiAgICAgY3Vy
cmVudF9zY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShvcy5jdXJkaXIpCi0gICAgb3MuY2hkaXIoY3Vy
cmVudF9zY20uY2hlY2tvdXRfcm9vdCkKKyAgICBvcy5jaGRpcihvcy5wYXRoLmpvaW4oY3VycmVu
dF9zY20uY2hlY2tvdXRfcm9vdCwgJ1NvdXJjZScpKQogCiAgICAgYWxsX3Rlc3RzX3Bhc3NlZCA9
IFRydWUKIApAQCAtMTIxLDE3ICsxNTMsMjUgQEAgZGVmIG1haW4oYXJndik6CiAgICAgICAgICdD
UFAnCiAgICAgXQogCisgICAgaW5wdXRfZGlyZWN0b3J5ID0gb3MucGF0aC5qb2luKCdXZWJDb3Jl
JywgJ2JpbmRpbmdzJywgJ3NjcmlwdHMnLCAndGVzdCcpCisgICAgc3VwcGxlbWVudGFsX2RlcGVu
ZGVuY3lfZmlsZSA9IHRlbXBmaWxlLm1rc3RlbXAoKVsxXQorICAgIGlmIGdlbmVyYXRlX3N1cHBs
ZW1lbnRhbF9kZXBlbmRlbmN5KGlucHV0X2RpcmVjdG9yeSwgc3VwcGxlbWVudGFsX2RlcGVuZGVu
Y3lfZmlsZSk6CisgICAgICAgIHByaW50ICdGYWlsZWQgdG8gZ2VuZXJhdGUgYSBzdXBwbGVtZW50
YWwgZGVwZW5kZW5jeSBmaWxlLicKKyAgICAgICAgb3MucmVtb3ZlKHN1cHBsZW1lbnRhbF9kZXBl
bmRlbmN5X2ZpbGUpCisgICAgICAgIHJldHVybiAtMQorCiAgICAgZm9yIGdlbmVyYXRvciBpbiBn
ZW5lcmF0b3JzOgotICAgICAgICBpbnB1dF9kaXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4oJ1NvdXJj
ZScsICdXZWJDb3JlJywgJ2JpbmRpbmdzJywgJ3NjcmlwdHMnLCAndGVzdCcpCi0gICAgICAgIHJl
ZmVyZW5jZV9kaXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4oJ1NvdXJjZScsICdXZWJDb3JlJywgJ2Jp
bmRpbmdzJywgJ3NjcmlwdHMnLCAndGVzdCcsIGdlbmVyYXRvcikKLSAgICAgICAgaWYgbm90IHJ1
bl90ZXN0cyhnZW5lcmF0b3IsIGlucHV0X2RpcmVjdG9yeSwgcmVmZXJlbmNlX2RpcmVjdG9yeSwg
cmVzZXRfcmVzdWx0cyk6CisgICAgICAgIHJlZmVyZW5jZV9kaXJlY3RvcnkgPSBvcy5wYXRoLmpv
aW4oJ1dlYkNvcmUnLCAnYmluZGluZ3MnLCAnc2NyaXB0cycsICd0ZXN0JywgZ2VuZXJhdG9yKQor
ICAgICAgICBpZiBub3QgcnVuX3Rlc3RzKGdlbmVyYXRvciwgaW5wdXRfZGlyZWN0b3J5LCByZWZl
cmVuY2VfZGlyZWN0b3J5LCByZXNldF9yZXN1bHRzLCBzdXBwbGVtZW50YWxfZGVwZW5kZW5jeV9m
aWxlKToKICAgICAgICAgICAgIGFsbF90ZXN0c19wYXNzZWQgPSBGYWxzZQogCisgICAgb3MucmVt
b3ZlKHN1cHBsZW1lbnRhbF9kZXBlbmRlbmN5X2ZpbGUpCisgICAgcHJpbnQgJycKICAgICBpZiBh
bGxfdGVzdHNfcGFzc2VkOgotICAgICAgICBwcmludCAnQWxsIHRlc3RzIHBhc3NlZCEnCisgICAg
ICAgIHByaW50ICdBbGwgdGVzdHMgUEFTUyEnCiAgICAgICAgIHJldHVybiAwCiAgICAgZWxzZToK
LSAgICAgICAgcHJpbnQgJyhUbyB1cGRhdGUgdGhlIHJlZmVyZW5jZSBmaWxlcywgZXhlY3V0ZSAi
cnVuLWJpbmRpbmdzLXRlc3RzIC0tcmVzZXQtcmVzdWx0cyIpJworICAgICAgICBwcmludCAnU29t
ZSB0ZXN0cyBGQUlMISAoVG8gdXBkYXRlIHRoZSByZWZlcmVuY2UgZmlsZXMsIGV4ZWN1dGUgInJ1
bi1iaW5kaW5ncy10ZXN0cyAtLXJlc2V0LXJlc3VsdHMiKScKICAgICAgICAgcmV0dXJuIC0xCiAK
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118525</attachid>
            <date>2011-12-08 21:10:45 -0800</date>
            <delta_ts>2012-01-09 23:43:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72138-20111209141043.patch</filename>
            <type>text/plain</type>
            <size>5680</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNDI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjM4OTU4Y2MxOTNjMzg2
ZDQxYjNlNzIyMWM4M2UwZWU5ODg0MWEwOS4uODE4OWYyY2VjZjJlOGI0MmRjNDUwYTVkZWM2YjY4
MGI4M2RhZTNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDExLTEyLTA4ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBVc2UgW1N1cHBsZW1l
bnRhbF0gSURMIGluIFdlYlNvY2tldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzIxMzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBCeSB1c2luZyB0aGUgW1N1cHBsZW1lbnRhbF0gSURMLCB0aGlzIHBhdGNo
IG1vdmVzIGRlY2xhcmF0aW9ucyBvZiBXZWJTb2NrZXQKKyAgICAgICAgYXR0cmlidXRlcyBmcm9t
IERPTVdpbmRvdy5pZGwgdG8gd2Vic29ja2V0L0RPTVdpbmRvd1dlYlNvY2tldC5pZGwsCisgICAg
ICAgIHdoaWNoIGhlbHBzIG1ha2UgV2ViU29ja2V0IGEgc2VsZi1jb250YWluZWQgbW9kdWxlLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gY2hhbmdlIGluIGJlaGF2aW9yLgorICAgICAgICBD
b25maXJtIHRoYXQgaHR0cC90ZXN0cy93ZWJzb2NrZXQvKiBwYXNzLgorCisgICAgICAgICogV2Vi
Q29yZS5neXBpOiBBZGRlZCBET01XaW5kb3dXZWJTb2NrZXQuaWRsLgorICAgICAgICAqIHBhZ2Uv
RE9NV2luZG93LmlkbDogQWRkZWQgdGhlIFtTdXBwbGVtZW50ZWRdIElETCB0byBXZWJTb2NrZXQt
cmVsYXRlZCBhdHRyaWJ1dGVzLiBUaGlzIFtTdXBwbGVtZW50ZWRdIElETCB3aWxsIGJlIHJlbW92
ZWQgYWZ0ZXIgYWxsIHBsYXRmb3JtcyBzdXBwb3J0IHRoZSBbU3VwcGxlbWVudGFsXSBJREwgKFNl
ZSBidWcgNzMzOTQgZm9yIG1vcmUgZGV0YWlscykuCisgICAgICAgICogd2Vic29ja2V0cy9ET01X
aW5kb3dXZWJTb2NrZXQuaWRsOiBBZGRlZC4gVXNlZCB0aGUgW1N1cHBsZW1lbnRhbD1ET01XaW5k
b3ddIElETC4gVGhlIGF0dHJpYnV0ZXMgaW4gdGhpcyBJREwgZmlsZSBhcmUgdHJlYXRlZCBhcyBp
ZiB0aGV5IGFyZSBkZXNjcmliZWQgaW4gRE9NV2luZG93LmlkbC4KKwogMjAxMS0xMi0wOCAgS2Vu
dCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQnVpbGQgZml4IGZvciBy
MTAyNDE5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGI4ZTM1N2FlOWE0ZDRjYzdlZmRhMGM1NjJiYzMx
ZjhkZWEwYTkyYjYuLjc2MDhjMzcwZTQ5MTM0YWUyNjdkZjdiN2I0ZmVkYWI1YmYzYTk1ZTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKQEAgLTE1MDUsNiArMTUwNSw3IEBACiAgICAgICAgICAgICAnd2ViYXVk
aW8vUmVhbHRpbWVBbmFseXNlck5vZGUuaWRsJywKICAgICAgICAgICAgICd3ZWJhdWRpby9XYXZl
U2hhcGVyTm9kZS5pZGwnLAogICAgICAgICAgICAgJ3dlYnNvY2tldHMvQ2xvc2VFdmVudC5pZGwn
LAorICAgICAgICAgICAgJ3dlYnNvY2tldHMvRE9NV2luZG93V2ViU29ja2V0LmlkbCcsCiAgICAg
ICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsJywKICAgICAgICAgICAgICd3b3JrZXJz
L0Fic3RyYWN0V29ya2VyLmlkbCcsCiAgICAgICAgICAgICAnd29ya2Vycy9EZWRpY2F0ZWRXb3Jr
ZXJDb250ZXh0LmlkbCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKaW5kZXggNWM4ZGUwZThl
OGRmZGE4YWM5NzA2NDFmZmJkZjhlMjlkNTYzYWIwOC4uZDk2NjQ5NzgxNzJhMWRkNzI4YzgzNzIy
OTI3Mjg5Y2ExMDllYzdlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbApAQCAtNTUwLDcg
KzU1MCw3IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFs
PURFVklDRV9PUklFTlRBVElPTiwgRW5hYmxlZEF0UnVudGltZV0gRGV2aWNlTW90aW9uRXZlbnRD
b25zdHJ1Y3RvciBEZXZpY2VNb3Rpb25FdmVudDsKICAgICAgICAgYXR0cmlidXRlIFtDb25kaXRp
b25hbD1ERVZJQ0VfT1JJRU5UQVRJT04sIEVuYWJsZWRBdFJ1bnRpbWVdIERldmljZU9yaWVudGF0
aW9uRXZlbnRDb25zdHJ1Y3RvciBEZXZpY2VPcmllbnRhdGlvbkV2ZW50OwogICAgICAgICBhdHRy
aWJ1dGUgW0NvbmRpdGlvbmFsPVRPVUNIX0VWRU5UU10gVG91Y2hFdmVudENvbnN0cnVjdG9yIFRv
dWNoRXZlbnQ7Ci0gICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9V0VCX1NPQ0tFVFNdIENs
b3NlRXZlbnRDb25zdHJ1Y3RvciBDbG9zZUV2ZW50OworICAgICAgICBhdHRyaWJ1dGUgW1N1cHBs
ZW1lbnRlZCwgQ29uZGl0aW9uYWw9V0VCX1NPQ0tFVFNdIENsb3NlRXZlbnRDb25zdHJ1Y3RvciBD
bG9zZUV2ZW50OwogICAgICAgICBhdHRyaWJ1dGUgU3RvcmFnZUV2ZW50Q29uc3RydWN0b3IgU3Rv
cmFnZUV2ZW50OwogICAgICAgICBhdHRyaWJ1dGUgW1N1cHBsZW1lbnRlZCwgQ29uZGl0aW9uYWw9
V0VCX0FVRElPXSBBdWRpb1Byb2Nlc3NpbmdFdmVudENvbnN0cnVjdG9yIEF1ZGlvUHJvY2Vzc2lu
Z0V2ZW50OwogICAgICAgICBhdHRyaWJ1dGUgW1N1cHBsZW1lbnRlZCwgQ29uZGl0aW9uYWw9V0VC
X0FVRElPXSBPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnRDb25zdHJ1Y3RvciBPZmZsaW5lQXVk
aW9Db21wbGV0aW9uRXZlbnQ7CkBAIC02MDYsNyArNjA2LDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAj
ZW5kaWYKIAogI2lmIGRlZmluZWQoRU5BQkxFX1dFQl9TT0NLRVRTKSAmJiBFTkFCTEVfV0VCX1NP
Q0tFVFMKLSAgICAgICAgYXR0cmlidXRlIFtKU0NDdXN0b21HZXR0ZXIsRW5hYmxlZEF0UnVudGlt
ZV0gV2ViU29ja2V0Q29uc3RydWN0b3IgV2ViU29ja2V0OyAvLyBVc2FibGUgd2l0aCB0aGUgbmV3
IG9wZXJhdG9yCisgICAgICAgIGF0dHJpYnV0ZSBbU3VwcGxlbWVudGVkLCBKU0NDdXN0b21HZXR0
ZXIsIEVuYWJsZWRBdFJ1bnRpbWVdIFdlYlNvY2tldENvbnN0cnVjdG9yIFdlYlNvY2tldDsgLy8g
VXNhYmxlIHdpdGggdGhlIG5ldyBvcGVyYXRvcgogI2VuZGlmCiAKICNpZiBkZWZpbmVkKEVOQUJM
RV9WSURFT19UUkFDSykgJiYgRU5BQkxFX1ZJREVPX1RSQUNLCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93ZWJzb2NrZXRzL0RPTVdpbmRvd1dlYlNvY2tldC5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS93ZWJzb2NrZXRzL0RPTVdpbmRvd1dlYlNvY2tldC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTUyNDg5ZjRi
NjcxYzI3ZDNiZjI5NGEzNDFmMWZiMzVjNjVhNzkxMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dlYnNvY2tldHMvRE9NV2luZG93V2ViU29ja2V0LmlkbApAQCAtMCwwICsxLDQy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCittb2R1bGUgd2luZG93IHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRp
dGlvbmFsPVdFQl9TT0NLRVRTLAorICAgICAgICBTdXBwbGVtZW50YWw9RE9NV2luZG93CisgICAg
XSBET01XaW5kb3dXZWJTb2NrZXQgeworICAgICAgICBhdHRyaWJ1dGUgQ2xvc2VFdmVudENvbnN0
cnVjdG9yIENsb3NlRXZlbnQ7CisgICAgICAgIGF0dHJpYnV0ZSBbSlNDQ3VzdG9tR2V0dGVyLCBF
bmFibGVkQXRSdW50aW1lXSBXZWJTb2NrZXRDb25zdHJ1Y3RvciBXZWJTb2NrZXQ7IC8vIFVzYWJs
ZSB3aXRoIHRoZSBuZXcgb3BlcmF0b3IKKyAgICB9OworCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121801</attachid>
            <date>2012-01-09 23:44:05 -0800</date>
            <delta_ts>2012-01-09 23:53:16 -0800</delta_ts>
            <desc>WIP patch to see if build passes</desc>
            <filename>bug-72138-20120110164404.patch</filename>
            <type>text/plain</type>
            <size>57525</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0NTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjEzYTg3YmVkZjQ4MTAw
ZDY3MmE2MzJkYTM2MGU4NzVhYWZkYTQ1NC4uZWZlZDk0NzY5MjM0ZDhjY2E1ZDBlZjIwZmFkMTI4
NDk1Njk1NTExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDEyLTAxLTA5ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBXSVA6IEltcGxlbWVu
dCB0aGUgW1N1cHBsZW1lbnRhbF0gSURMIG9uIG1ldGhvZHMgYW5kIHVzZSBpdCBpbiBTUUxEYXRh
YmFzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIx
MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJy
ZW50bHkgdGhlIFtTdXBwbGVtZW50YWxdIElETCBvbiBhdHRyaWJ1dGVzIGlzIHN1cHBvcnRlZCBi
dXQKKyAgICAgICAgdGhlIFtTdXBwbGVtZW50YWxdIElETCBvbiBtZXRob2RzIGlzIG5vdCB5ZXQg
c3VwcG9ydGVkLgorICAgICAgICBUaGlzIHBhdGNoIHN1cHBvcnRzIHRoZSBbU3VwcGxlbWVudGFs
XSBJREwgb24gbWV0aG9kcyBmb3IgSlNDLCBWOCwgT2JqQywKKyAgICAgICAgQ1BQIGFuZCBHT2Jq
ZWN0IGJpbmRpbmdzLgorCisgICAgICAgIFRvIGNvbmZpcm0gdGhlIGltcGxlbWVudGF0aW9uIGlz
IGNvcnJlY3QsIHRoaXMgcGF0Y2ggdXNlcyB0aGUgW1N1cHBsZW1lbnRhbF0gSURMCisgICAgICAg
IG9uIG1ldGhvZHMgaW4gU1FMRGF0YWJhc2UgYW5kIHNlZXMgaWYgYWxsIGJ1aWxkcyBwYXNzLgor
CisgICAgICAgIFRlc3RzOiBDb25maXJtIHRoYXQgYWxsIGJ1aWxkcyBwYXNzLgorICAgICAgICAg
ICAgICAgYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RTdXBwbGVtZW50YWwuaWRsCisgICAgICAg
ICAgICAgICBzdG9yYWdlL29wZW4tZGF0YWJhc2UtY3JlYXRpb24tY2FsbGJhY2staXNvbGF0ZWQt
d29ybGQuaHRtbAorICAgICAgICAgICAgICAgc3RvcmFnZS9vcGVuLWRhdGFiYXNlLWNyZWF0aW9u
LWNhbGxiYWNrLmh0bWwKKyAgICAgICAgICAgICAgIHN0b3JhZ2Uvb3Blbi1kYXRhYmFzZS1lbXB0
eS12ZXJzaW9uLmh0bWwKKyAgICAgICAgICAgICAgIHN0b3JhZ2Uvb3Blbi1kYXRhYmFzZS1vdmVy
LXF1b3RhLmh0bWwKKyAgICAgICAgICAgICAgIHN0b3JhZ2Uvb3Blbi1kYXRhYmFzZS1zZXQtZW1w
dHktdmVyc2lvbi5odG1sCisgICAgICAgICAgICAgICBzdG9yYWdlL29wZW4tZGF0YWJhc2Utd2hp
bGUtdHJhbnNhY3Rpb24taW4tcHJvZ3Jlc3MuaHRtbAorCisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbDogTW9kaWZpZWQgdG8gc3VwcG9ydCB0aGUgW1N1cHBs
ZW1lbnRhbF0gSURMCisgICAgICAgIGZvciBtZXRob2RzLgorCisgICAgICAgICogcGFnZS9ET01X
aW5kb3cuY3BwOiBSZW1vdmVkIFNRTERhdGFiYXNlIHJlbGF0ZWQgY29kZS4KKyAgICAgICAgKiBw
YWdlL0RPTVdpbmRvdy5oOiBEaXR0by4gTW92ZWQgaXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZyYW1l
KCkgZnJvbSBwcml2YXRlOiB0byBwdWJsaWM6CisgICAgICAgIHNvIHRoYXQgRE9NV2luZG93U1FM
RGF0YWJhc2U6Om9wZW5EYXRhYmFzZSgpIGNhbiBhY2Nlc3MgaXQuCisgICAgICAgICogcGFnZS9E
T01XaW5kb3cuaWRsOiBEaXR0by4KKworICAgICAgICAqIHN0b3JhZ2UvRE9NV2luZG93U1FMRGF0
YWJhc2UuY3BwOiBBZGRlZC4gTW92ZWQgb3BlbkRhdGFiYXNlKCkgZnJvbSBET01XaW5kb3cuY3Bw
IHRvIGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dTUUxEYXRhYmFzZTo6b3BlbkRh
dGFiYXNlKToKKyAgICAgICAgKiBzdG9yYWdlL0RPTVdpbmRvd1NRTERhdGFiYXNlLmg6IEFkZGVk
LiBNb3ZlZCBvcGVuRGF0YWJhc2UoKSBmcm9tIERPTVdpbmRvdy5oIHRvIGhlcmUuCisgICAgICAg
ICogc3RvcmFnZS9ET01XaW5kb3dTUUxEYXRhYmFzZS5pZGw6IEFkZGVkLiBVc2luZyB0aGUgW1N1
cHBsZW1lbnRhbF0gSURMLCBtb3ZlZCBvcGVuRGF0YWJhc2UoKQorICAgICAgICBhbmQgU1FMRXhj
ZXB0aW9uIGZyb20gRE9NV2luZG93LmlkbCB0byBoZXJlLgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6IEFkZGVkIERPTVdpbmRvd1NRTERhdGFiYXNlLntpZGwsaCxjcHB9IHRvIHRoZSBidWls
ZCBzY3JpcHQuCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZTogRGl0dG8uCisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMucHJpOiBEaXR0by4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0
LmFtOiBEaXR0by4KKyAgICAgICAgKiBUYXJnZXQucHJpOiBEaXR0by4KKyAgICAgICAgKiBXZWJD
b3JlLmd5cGk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
OiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERp
dHRvLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RTdXBwbGVtZW50YWwu
aWRsOiBBZGRlZCB0ZXN0IGNhc2VzIGZvciBtZXRob2RzIHdpdGggdGhlIFtTdXBwbGVtZW50YWxd
IElETC4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckNQUC5wbTog
VXBkYXRlZCB0aGUgdGVzdCByZXN1bHQuCisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9u
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtOiBE
aXR0by4KKyAgICAgICAgKEdlbmVyYXRlRnVuY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOiBEaXR0by4KKyAgICAgICAgKEdlbmVyYXRlUGFyYW1l
dGVyc0NoZWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpD
LnBtOiBEaXR0by4KKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOiBEaXR0by4KKyAgICAgICAgKEdl
bmVyYXRlRnVuY3Rpb25DYWxsU3RyaW5nKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvQ1BQL1dlYkRPTVRlc3RJbnRlcmZhY2UuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkRPTVRl
c3RJbnRlcmZhY2U6OnN1cHBsZW1lbnRhbE1ldGhvZDEpOgorICAgICAgICAoV2ViRE9NVGVzdElu
dGVyZmFjZTo6c3VwcGxlbWVudGFsTWV0aG9kMik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0NQUC9XZWJET01UZXN0SW50ZXJmYWNlLmg6IERpdHRvLgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2UuY3BwOiBEaXR0
by4KKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2Vfc3VwcGxlbWVudGFsX21ldGhv
ZDEpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9zdXBwbGVtZW50YWxfbWV0
aG9kMik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9N
VGVzdEludGVyZmFjZS5oOiBEaXR0by4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SW50ZXJmYWNlLmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJ
bnRlcmZhY2VQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1l
bnRhbE1ldGhvZDEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlUHJvdG90eXBl
RnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QyKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmg6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZhY2UuaDogRGl0dG8uCisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEludGVyZmFjZS5tbTogRGl0dG8uCisgICAg
ICAgICgtW0RPTVRlc3RJbnRlcmZhY2Ugc3VwcGxlbWVudGFsTWV0aG9kMV0pOgorICAgICAgICAo
LVtET01UZXN0SW50ZXJmYWNlIHN1cHBsZW1lbnRhbE1ldGhvZDI6b2JqQXJnOl0pOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VJbnRlcm5hbDo6c3VwcGxlbWVudGFsTWV0
aG9kMUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VJbnRlcm5hbDo6
c3VwcGxlbWVudGFsTWV0aG9kMkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3Vy
ZVY4VGVzdEludGVyZmFjZVRlbXBsYXRlKToKKwogMjAxMi0wMS0wOSAgSm9zaHVhIEJlbGwgIDxq
c2JlbGxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEluZGV4ZWREQjogVGhyb3cgZXhjZXB0aW9u
IGlmIElEQkN1cnNvci5jb250aW51ZSgpIGNhbGxlZCB3aXRoIGxvd2VyIGtleSB0aGFuIGN1cnJl
bnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNDk4ZGZhZDdmNTVkZTQ5NDFmYjk4YmM4Mzc1ZTFk
MjkzNGQ1NGQ0Yy4uMTVkZTRlZjBiMmE2N2QwMDc4MjdlM2I1ZmY4ZTcxOTU0MmJmZTk4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKQEAgLTEzNDcsNiArMTM0Nyw3IEBAIFNFVChXZWJDb3JlX1NPVVJD
RVMKIAogICAgIHN0b3JhZ2UvQWJzdHJhY3REYXRhYmFzZS5jcHAKICAgICBzdG9yYWdlL0NoYW5n
ZVZlcnNpb25XcmFwcGVyLmNwcAorICAgIHN0b3JhZ2UvRE9NV2luZG93U1FMRGF0YWJhc2UuY3Bw
CiAgICAgc3RvcmFnZS9EYXRhYmFzZS5jcHAKICAgICBzdG9yYWdlL0RhdGFiYXNlQXV0aG9yaXpl
ci5jcHAKICAgICBzdG9yYWdlL0RhdGFiYXNlU3luYy5jcHAKQEAgLTE0NjYsNiArMTQ2Nyw3IEBA
IEVORElGICgpCiAKIElGIChFTkFCTEVfU1FMX0RBVEFCQVNFKQogICAgIExJU1QoQVBQRU5EIFdl
YkNvcmVfSURMX0ZJTEVTCisgICAgICAgIHN0b3JhZ2UvRE9NV2luZG93U1FMRGF0YWJhc2UuaWRs
CiAgICAgICAgIHN0b3JhZ2UvRGF0YWJhc2UuaWRsCiAgICAgICAgIHN0b3JhZ2UvRGF0YWJhc2VD
YWxsYmFjay5pZGwKICAgICAgICAgc3RvcmFnZS9EYXRhYmFzZVN5bmMuaWRsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQppbmRleCA4NWNiMGJmYmZjZDU0YzgyZmViNzVkOTgzNWIzYzAyNDA1
ZjEzYjRlLi5mNzVhODkwNmIzMWU5NDU5ZGE1ZThmMDJjZWE0MDQyNjRhMzllM2M3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTMzNiw2ICszMzYsNyBAQCBCSU5ESU5HX0lETFMg
PSBcCiAgICAgJChXZWJDb3JlKS9wbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuaWRsIFwKICAgICAk
KFdlYkNvcmUpL3BsdWdpbnMvRE9NUGx1Z2luLmlkbCBcCiAgICAgJChXZWJDb3JlKS9wbHVnaW5z
L0RPTVBsdWdpbkFycmF5LmlkbCBcCisgICAgJChXZWJDb3JlKS9zdG9yYWdlL0RPTVdpbmRvd1NR
TERhdGFiYXNlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9zdG9yYWdlL0RhdGFiYXNlLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9zdG9yYWdlL0RhdGFiYXNlQ2FsbGJhY2suaWRsIFwKICAgICAkKFdlYkNv
cmUpL3N0b3JhZ2UvRGF0YWJhc2VTeW5jLmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkK
aW5kZXggYjY5Yjc0NGFkZWU0OTk0YTY2NjE4ZGQyZWEyY2M1MDVlOTQwYzAwZS4uMDMzNWIzODc4
N2Q5OTUyODgzMjNiMzU4ZmU2ZTNmMDFjMWVkY2VjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
LnByaQpAQCAtMzY1LDYgKzM2NSw3IEBAIElETF9CSU5ESU5HUyArPSBcCiAgICAgcGx1Z2lucy9E
T01NaW1lVHlwZS5pZGwgXAogICAgIHBsdWdpbnMvRE9NUGx1Z2luQXJyYXkuaWRsIFwKICAgICBw
bHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuaWRsIFwKKyAgICBzdG9yYWdlL0RPTVdpbmRvd1NRTERh
dGFiYXNlLmlkbCBcCiAgICAgc3RvcmFnZS9EYXRhYmFzZS5pZGwgXAogICAgIHN0b3JhZ2UvRGF0
YWJhc2VDYWxsYmFjay5pZGwgXAogICAgIHN0b3JhZ2UvRGF0YWJhc2VTeW5jLmlkbCBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAyM2M4YTQ2ODhhYjllMWQ3NDBiMjliOTc4ZjZl
Y2NlY2M0ZjE3Y2Y1Li5kNTA2NGNiMDU4MzdmODM0MTI0OGFkNDkxYzY3NzdhODkyODFkYzQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTM3NTAsNiArMzc1MCw4IEBAIHdlYmNv
cmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvc3RvcmFnZS9BYnN0cmFjdERhdGFiYXNl
LmggXAogCVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmggXAorCVNvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvRE9NV2luZG93U1FMRGF0YWJhc2UuY3BwIFwKKwlTb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0RPTVdpbmRvd1NRTERhdGFiYXNlLmggXAogCVNvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvRGF0YWJhc2VBdXRob3JpemVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvc3RvcmFnZS9E
YXRhYmFzZUF1dGhvcml6ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZUNh
bGxiYWNrLmggXApAQCAtNDU5Niw2ICs0NTk4LDcgQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9
IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2su
aAogCiBkb21fYmluZGluZ19pZGxzICs9IFwKKwkkKFdlYkNvcmUpL3N0b3JhZ2UvRE9NV2luZG93
U1FMRGF0YWJhc2UuaWRsIFwKIAkkKFdlYkNvcmUpL3N0b3JhZ2UvRGF0YWJhc2UuaWRsIFwKIAkk
KFdlYkNvcmUpL3N0b3JhZ2UvRGF0YWJhc2VDYWxsYmFjay5pZGwgXAogCSQoV2ViQ29yZSkvc3Rv
cmFnZS9EYXRhYmFzZVN5bmMuaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDRkMTY5ZDBiYjk2OGEyY2I2
NDhlZmJlZDVhNjEwMDdhYjQ0N2Q3Y2EuLjI3NmZjY2YyNWIwNjcwNGYyYmJlOGRkNWFlNjZiZDhm
MTM3MDNjZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMTI3Nyw2ICsxMjc3LDcgQEAgU09VUkNFUyArPSBc
CiAgICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxlVHJhbnNmb3JtRGF0YS5jcHAgXAogICAgIHJlbmRl
cmluZy9zdHlsZS9TdHlsZVZpc3VhbERhdGEuY3BwIFwKICAgICBzdG9yYWdlL0Fic3RyYWN0RGF0
YWJhc2UuY3BwIFwKKyAgICBzdG9yYWdlL0RPTVdpbmRvd1NRTERhdGFiYXNlLmNwcCBcCiAgICAg
c3RvcmFnZS9EYXRhYmFzZS5jcHAgXAogICAgIHN0b3JhZ2UvRGF0YWJhc2VBdXRob3JpemVyLmNw
cCBcCiAgICAgc3RvcmFnZS9EYXRhYmFzZVN5bmMuY3BwIFwKQEAgLTI0NjksNiArMjQ3MCw3IEBA
IEhFQURFUlMgKz0gXAogICAgIHJlbmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRl
eHQuaCBcCiAgICAgc3RvcmFnZS9BYnN0cmFjdERhdGFiYXNlLmggXAogICAgIHN0b3JhZ2UvQ2hh
bmdlVmVyc2lvbldyYXBwZXIuaCBcCisgICAgc3RvcmFnZS9ET01XaW5kb3dTUUxEYXRhYmFzZS5o
IFwKICAgICBzdG9yYWdlL0RhdGFiYXNlQXV0aG9yaXplci5oIFwKICAgICBzdG9yYWdlL0RhdGFi
YXNlLmggXAogICAgIHN0b3JhZ2UvRGF0YWJhc2VDYWxsYmFjay5oIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpp
bmRleCAzYmE0YjkxMjdlODliN2QxNGQyZDA4NWQ0NWU3NTE3NTFjYWM2YTdmLi45OGI4ODNhYjhl
NzcwMzdkNjE5MmU4NzYwMjI1Y2RjMjMwOTRlMTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xNDUw
LDYgKzE0NTAsNyBAQAogICAgICAgICAgICAgJ3BsdWdpbnMvRE9NTWltZVR5cGVBcnJheS5pZGwn
LAogICAgICAgICAgICAgJ3BsdWdpbnMvRE9NUGx1Z2luLmlkbCcsCiAgICAgICAgICAgICAncGx1
Z2lucy9ET01QbHVnaW5BcnJheS5pZGwnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvRE9NV2luZG93
U1FMRGF0YWJhc2UuaWRsJywKICAgICAgICAgICAgICdzdG9yYWdlL0RhdGFiYXNlLmlkbCcsCiAg
ICAgICAgICAgICAnc3RvcmFnZS9EYXRhYmFzZUNhbGxiYWNrLmlkbCcsCiAgICAgICAgICAgICAn
c3RvcmFnZS9EYXRhYmFzZVN5bmMuaWRsJywKQEAgLTQ5MDUsNiArNDkwNiw4IEBACiAgICAgICAg
ICAgICAnc3RvcmFnZS9BYnN0cmFjdERhdGFiYXNlLmNwcCcsCiAgICAgICAgICAgICAnc3RvcmFn
ZS9DaGFuZ2VWZXJzaW9uV3JhcHBlci5jcHAnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvQ2hhbmdl
VmVyc2lvbldyYXBwZXIuaCcsCisgICAgICAgICAgICAnc3RvcmFnZS9ET01XaW5kb3dTUUxEYXRh
YmFzZS5jcHAnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvRE9NV2luZG93U1FMRGF0YWJhc2UuaCcs
CiAgICAgICAgICAgICAnc3RvcmFnZS9EYXRhYmFzZS5jcHAnLAogICAgICAgICAgICAgJ3N0b3Jh
Z2UvRGF0YWJhc2VBdXRob3JpemVyLmNwcCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9EYXRhYmFz
ZUF1dGhvcml6ZXIuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCmluZGV4IDBhMDdkNjdkNTcyYmI2NzI1ZGRhZDZjZGIzZTVhODUxMzM4ZjM0MmEuLmZi
ZDRkODhkMWQ3MTk3NTAzYmUyYTVjZDUxZDY4OTI0ZTU1ZGIwMTAgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC03MDQ3MCw2ICs3MDQ3MCwxNCBA
QAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9y
YWdlXERPTVdpbmRvd1NRTERhdGFiYXNlLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8Rmls
ZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3RvcmFnZVxET01XaW5kb3dTUUxEYXRhYmFzZS5oIgor
CQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdl
XERhdGFiYXNlLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzQ2NmVjNmQ1ZmNiY2NkYzA3
YTljMWY5OGRjYTQ5YjUwZmZkODNhNS4uZWViNjdmNTY5NTkyMGRmZjMzMmViYjFiMDMzMjI5ZDcz
MmVhNzZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtNDA0NCw2ICs0MDQ0LDggQEAKIAkJQThFQTgwMEMwQTE5NTE2RTAwQThF
RjVGIC8qIFN0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE4RUE4MDA0MEExOTUxNkUwMEE4RUY1RiAvKiBTdHlsZVNoZWV0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQThFQTgwMEQwQTE5
NTE2RTAwQThFRjVGIC8qIFN0eWxlU2hlZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQThFQTgwMDUwQTE5NTE2RTAwQThFRjVGIC8qIFN0eWxlU2hl
ZXQuY3BwICovOyB9OwogCQlBOEVBODAwRTBBMTk1MTZFMDBBOEVGNUYgLyogTWVkaWFMaXN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEVBODAwNjBB
MTk1MTZFMDBBOEVGNUYgLyogTWVkaWFMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQThGNDU3QTAxNEJDMUE4ODAwMENFQTU5IC8qIERPTVdp
bmRvd1NRTERhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE4RjQ1NzlEMTRCQzEzRUMwMDBDRUE1OSAvKiBET01XaW5kb3dTUUxEYXRhYmFz
ZS5jcHAgKi87IH07CisJCUE4RjQ1N0ExMTRCQzFBOTQwMDBDRUE1OSAvKiBET01XaW5kb3dTUUxE
YXRhYmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QThGNDU3OUUxNEJDMTNFQzAwMENFQTU5IC8qIERPTVdpbmRvd1NRTERhdGFiYXNlLmggKi87IH07
CiAJCUE4RjQ2QTg0MENCMjBBOUQwMDNBOTY3MCAvKiBET01TVkdDbGlwUGF0aEVsZW1lbnQuaCBp
biBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg1MDM2MTJDMEFDRTAwN0IwMDFGM0Q5RSAvKiBET01TVkdDbGlwUGF0aEVsZW1lbnQuaCAq
LzsgfTsKIAkJQThGNDZBODgwQ0IyMEE5RDAwM0E5NjcwIC8qIERPTVNWR0dyYWRpZW50RWxlbWVu
dC5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODVDOUEyRUMwQUQ3RTkwMzAwRkJGRjFFIC8qIERPTVNWR0dyYWRpZW50RWxlbWVu
dC5oICovOyB9OwogCQlBOEY0NkE4OTBDQjIwQTlEMDAzQTk2NzAgLyogRE9NU1ZHQW5pbWF0ZUNv
bG9yRWxlbWVudC5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODUwMzYxMjgwQUNFMDA3QjAwMUYzRDlFIC8qIERPTVNWR0FuaW1h
dGVDb2xvckVsZW1lbnQuaCAqLzsgfTsKQEAgLTExMzEzLDYgKzExMzE1LDkgQEAKIAkJQThFQTgw
MDUwQTE5NTE2RTAwQThFRjVGIC8qIFN0eWxlU2hlZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFN0eWxlU2hlZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBOEVBODAwNjBBMTk1MTZFMDBBOEVGNUYgLyogTWVkaWFMaXN0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQThGNDU3OEYxNEIyQjAwNDAwMENFQTU5IC8qIHJlc29sdmUtc3VwcGxlbWVu
dGFsLnBsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgbmFtZSA9ICJyZXNvbHZlLXN1cHBs
ZW1lbnRhbC5wbCI7IHBhdGggPSAic2NyaXB0cy9yZXNvbHZlLXN1cHBsZW1lbnRhbC5wbCI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4RjQ1NzlEMTRCQzEzRUMwMDBDRUE1OSAvKiBE
T01XaW5kb3dTUUxEYXRhYmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBET01XaW5kb3dTUUxEYXRhYmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUE4RjQ1NzlFMTRCQzEzRUMwMDBDRUE1OSAvKiBET01XaW5kb3dTUUxEYXRhYmFzZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01XaW5kb3dTUUxEYXRhYmFzZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBOEY0NTc5RjE0QkMxM0VDMDAwQ0VBNTkgLyog
RE9NV2luZG93U1FMRGF0YWJhc2UuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERPTVdpbmRv
d1NRTERhdGFiYXNlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThGQTZFNUIw
RTRDRkRFRDAwRDVDRjQ5IC8qIFBhdHRlcm4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUGF0dGVybi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEZBNkU1QzBF
NENGREVEMDBENUNGNDkgLyogUGF0dGVybi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBQYXR0ZXJuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTlD
NkU0RTEwRDc0NUUwNTAwNjQ0MkU5IC8qIERPTU1pbWVUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01NaW1lVHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNDM4NCw2ICsxNDM4OSw5IEBACiAJCTFBRTgyRUM5MENBQUUxNzcwMDIy
MzdBRSAvKiBzdG9yYWdlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQlBOEY0NTc5RDE0QkMxM0VDMDAwQ0VBNTkgLyogRE9NV2luZG93U1FMRGF0YWJhc2Uu
Y3BwICovLAorCQkJCUE4RjQ1NzlFMTRCQzEzRUMwMDBDRUE1OSAvKiBET01XaW5kb3dTUUxEYXRh
YmFzZS5oICovLAorCQkJCUE4RjQ1NzlGMTRCQzEzRUMwMDBDRUE1OSAvKiBET01XaW5kb3dTUUxE
YXRhYmFzZS5pZGwgKi8sCiAJCQkJQjVCNURDNjcxMTlCQjNENTAwMkE4NzkwIC8qIEFic3RyYWN0
RGF0YWJhc2UuY3BwICovLAogCQkJCUI1QjVEQzY4MTE5QkIzRDUwMDJBODc5MCAvKiBBYnN0cmFj
dERhdGFiYXNlLmggKi8sCiAJCQkJNTE0MTg1RUQwQ0Q2NUYwNDAwNzYzQzk5IC8qIENoYW5nZVZl
cnNpb25XcmFwcGVyLmNwcCAqLywKQEAgLTI0ODkwLDYgKzI0ODk4LDcgQEAKIAkJCQlGRDUzNzM1
MzEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NEE4
NjIzMTRCN0FEQkIwMDNGREM3NiAvKiBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTk3RDJBRDA0MTRCODIzQTYwMDkzREYzMiAvKiBET01XaW5kb3dQcm9wZXJ0
eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQThGNDU3QTExNEJDMUE5NDAwMENFQTU5IC8qIERPTVdp
bmRvd1NRTERhdGFiYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI3Nzk1LDYgKzI3ODA0LDcgQEAK
IAkJCQlGRDUzNzM1MjEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTc0QTg2MjIxNEI3QURCQjAwM0ZEQzc2IC8qIEZyYW1lRGVzdHJ1Y3Rpb25PYnNl
cnZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0QyQUQwMzE0QjgyM0E2MDA5M0RGMzIgLyog
RE9NV2luZG93UHJvcGVydHkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQThGNDU3QTAxNEJDMUE4
ODAwMENFQTU5IC8qIERPTVdpbmRvd1NRTERhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yQ1BQ
LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yQ1BQLnBt
CmluZGV4IGU4NTlhNTY2ZTg4MWIwNzE3MDVkOTk2NGVkMDVhZGFjOWFiZTE5NDkuLmQzMTQ1OTI5
ZjA3MGIyZDI3MWE2OTE0NGRlYjYxZDgwZmYxMzhjZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckNQUC5wbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JDUFAucG0KQEAgLTg0OCw3ICs4NDgs
MTYgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICAgICAgbXkgQGZ1bmN0
aW9uQ29udGVudCA9ICgpOwogICAgICAgICAgICAgcHVzaChAcGFyYW1ldGVyTmFtZXMsICJlYyIp
IGlmICRyYWlzZXNFeGNlcHRpb25zOwotICAgICAgICAgICAgbXkgJGNvbnRlbnQgPSAiaW1wbCgp
LT4iIC4gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGZ1bmN0aW9uTmFtZSkgLiAiKCIgLiBq
b2luKCIsICIsIEBwYXJhbWV0ZXJOYW1lcykgLiAiKSI7IAorCisgICAgICAgICAgICBteSAkY29u
dGVudDsKKyAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSkgeworICAgICAgICAgICAgICAgIG15ICRpbXBsZW1l
bnRlZEJ5ID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBs
ZW1lbnRlZEJ5In07CisgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siJHtpbXBsZW1lbnRl
ZEJ5fS5oIn0gPSAxOworICAgICAgICAgICAgICAgIHVuc2hpZnQoQHBhcmFtZXRlck5hbWVzLCAi
aW1wbCgpIik7CisgICAgICAgICAgICAgICAgJGNvbnRlbnQgPSAiJHtpbXBsZW1lbnRlZEJ5fTo6
IiAuICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRmdW5jdGlvbk5hbWUpIC4gIigiIC4gam9p
bigiLCAiLCBAcGFyYW1ldGVyTmFtZXMpIC4gIikiOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAkY29udGVudCA9ICJpbXBsKCktPiIgLiAkY29kZUdlbmVyYXRvci0+V0tf
bGNmaXJzdCgkZnVuY3Rpb25OYW1lKSAuICIoIiAuIGpvaW4oIiwgIiwgQHBhcmFtZXRlck5hbWVz
KSAuICIpIjsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCRyZXR1cm5UeXBlIGVx
ICJ2b2lkIikgewogICAgICAgICAgICAgICAgICMgU3BlY2lhbCBjYXNlICd2b2lkJyByZXR1cm4g
dHlwZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckdPYmplY3QucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JHT2JqZWN0LnBtCmluZGV4IGE2ODVmMWYxNzliMzFlOWY2NmQ4ZTUxMTE4YWY2OGQ0
YzQyZGVkMTIuLjcwMmU4ZTZjODRiMzkyYjcyMDg3NDZlYmE3ZWE5NmM2ZjQ3ZjhiOTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmpl
Y3QucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
R09iamVjdC5wbQpAQCAtOTM3LDcgKzkzNywxNSBAQCBFT0YKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICRnZXR0ZXJDb250ZW50SGVhZCA9ICIke2Fzc2lnbn1jb252ZXJ0VG9VVEY4U3RyaW5n
KCR7ZnVuY3Rpb25OYW1lfSgiIC4gam9pbigiLCAiLCBAYXJndW1lbnRzKSAuICIpKTtcbiI7CiAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAkZ2V0dGVyQ29udGVudEhlYWQgPSAiJHthc3Np
Z259Y29udmVydFRvVVRGOFN0cmluZyhpdGVtLT4ke2Z1bmN0aW9uU2lnTmFtZX0oIiAuIGpvaW4o
IiwgIiwgQGNhbGxJbXBsUGFyYW1zKSAuICIpKTtcbiI7CisgICAgICAgICAgICBteSBAYXJndW1l
bnRzID0gQGNhbGxJbXBsUGFyYW1zOworICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9KSB7CisgICAgICAgICAg
ICAgICAgbXkgJGltcGxlbWVudGVkQnkgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifTsKKyAgICAgICAgICAgICAgICAkaW1wbEluY2x1
ZGVzeyIke2ltcGxlbWVudGVkQnl9LmgifSA9IDE7CisgICAgICAgICAgICAgICAgdW5zaGlmdChA
YXJndW1lbnRzLCAiaXRlbSIpOworICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50SGVhZCA9
ICIke2Fzc2lnbn1jb252ZXJ0VG9VVEY4U3RyaW5nKCR7aW1wbGVtZW50ZWRCeX06OiR7ZnVuY3Rp
b25TaWdOYW1lfSgiIC4gam9pbigiLCAiLCBAYXJndW1lbnRzKSAuICIpKTtcbiI7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50SGVhZCA9ICIke2Fz
c2lnbn1jb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPiR7ZnVuY3Rpb25TaWdOYW1lfSgiIC4gam9p
bigiLCAiLCBAYXJndW1lbnRzKSAuICIpKTtcbiI7CisgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICAgICAgcHVzaChAY0JvZHksICIgICAgJHtnZXR0ZXJDb250ZW50SGVhZH0iKTsKICAgICB9
IGVsc2UgewpAQCAtOTY4LDcgKzk3NiwxNSBAQCBFT0YKICAgICAgICAgICAgICAgICAkY29udGVu
dEhlYWQgPSAiJHthc3NpZ259JHthc3NpZ25QcmV9JHtmdW5jdGlvbk5hbWV9KCIgLiBqb2luKCIs
ICIsIEBhcmd1bWVudHMpIC4gIiR7YXNzaWduUG9zdH0pO1xuIjsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICRjb250ZW50SGVhZCA9ICIke2Fzc2lnbn0ke2Fz
c2lnblByZX1pdGVtLT4ke2Z1bmN0aW9uU2lnTmFtZX0oIiAuIGpvaW4oIiwgIiwgQGNhbGxJbXBs
UGFyYW1zKSAuICIke2Fzc2lnblBvc3R9KTtcbiI7CisgICAgICAgICAgICBteSBAYXJndW1lbnRz
ID0gQGNhbGxJbXBsUGFyYW1zOworICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9KSB7CisgICAgICAgICAgICAg
ICAgbXkgJGltcGxlbWVudGVkQnkgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkltcGxlbWVudGVkQnkifTsKKyAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVz
eyIke2ltcGxlbWVudGVkQnl9LmgifSA9IDE7CisgICAgICAgICAgICAgICAgdW5zaGlmdChAYXJn
dW1lbnRzLCAiaXRlbSIpOworICAgICAgICAgICAgICAgICRjb250ZW50SGVhZCA9ICIke2Fzc2ln
bn0ke2Fzc2lnblByZX0ke2ltcGxlbWVudGVkQnl9Ojoke2Z1bmN0aW9uU2lnTmFtZX0oIiAuIGpv
aW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiJHthc3NpZ25Qb3N0fSk7XG4iOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAkY29udGVudEhlYWQgPSAiJHthc3NpZ259JHthc3Np
Z25QcmV9aXRlbS0+JHtmdW5jdGlvblNpZ05hbWV9KCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMp
IC4gIiR7YXNzaWduUG9zdH0pO1xuIjsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAg
ICBwdXNoKEBjQm9keSwgIiAgICAke2NvbnRlbnRIZWFkfSIpOwogICAgICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXgg
M2NjNjgyZjdkMWVhNjI4YTk1N2EwODJjYjkwNmE2NjJkZmU4M2JkZS4uMTAxMDZlY2JlNjg2OTk2
MjRjNjgyY2I1MTkxYTM5ZTg0N2ViYTA5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTI0MjIsMTYgKzI0MjIsMjAgQEAg
c3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgbXkgJGFyZ3NJbmRleCA9IDA7CiAgICAg
bXkgJGhhc09wdGlvbmFsQXJndW1lbnRzID0gMDsKIAotICAgIG15ICRmdW5jdGlvbkJhc2UgPSAi
IjsKKyAgICBteSBAYXJndW1lbnRzOworICAgIG15ICRmdW5jdGlvbk5hbWU7CiAgICAgaWYgKCRm
dW5jdGlvbi0+aXNTdGF0aWMpIHsKLSAgICAgICAgJGZ1bmN0aW9uQmFzZSA9ICIke2ltcGxDbGFz
c05hbWV9OjoiOworICAgICAgICAkZnVuY3Rpb25OYW1lID0gIiR7aW1wbENsYXNzTmFtZX06OiR7
ZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWV9IjsKKyAgICB9IGVsc2lmICgkZnVuY3Rpb24tPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSkgeworICAgICAg
ICBteSAkaW1wbGVtZW50ZWRCeSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9OworICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiJHtp
bXBsZW1lbnRlZEJ5fS5oIik7CisgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50cywgImltcGwiKTsK
KyAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICIke2ltcGxlbWVudGVkQnl9Ojoke2Z1bmN0aW9uSW1w
bGVtZW50YXRpb25OYW1lfSI7CiAgICAgfSBlbHNpZiAoJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVy
dHlUeXBlIGFuZCAhJHN2Z0xpc3RQcm9wZXJ0eVR5cGUpIHsKLSAgICAgICAgJGZ1bmN0aW9uQmFz
ZSA9ICJwb2RJbXBsLiI7CisgICAgICAgICRmdW5jdGlvbk5hbWUgPSAicG9kSW1wbC4ke2Z1bmN0
aW9uSW1wbGVtZW50YXRpb25OYW1lfSI7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgJGZ1bmN0aW9u
QmFzZSA9ICJpbXBsLT4iOworICAgICAgICAkZnVuY3Rpb25OYW1lID0gImltcGwtPiR7ZnVuY3Rp
b25JbXBsZW1lbnRhdGlvbk5hbWV9IjsKICAgICB9Ci0gICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICIk
ZnVuY3Rpb25CYXNlJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lIjsKLSAgICBteSBAYXJndW1l
bnRzOwogCiAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ3VzdG9tQXJndW1lbnRIYW5kbGluZyJ9IGFuZCAhJGZ1bmN0aW9uLT5pc1N0YXRpYykgewog
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4g
c2NyaXB0QXJndW1lbnRzKGNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhleGVjLCAkbnVtUGFyYW1ldGVy
cykpO1xuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JPYmpDLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yT2JqQy5wbQppbmRleCAzNGFiODg3Y2ZkNDk0NGI1MzFkZWRhNTU0MjAyMDVlYTA2
MmUzODg2Li45MzczOWRhYTkwMWRmODA1NzUxNDdlZmNiOGZkNmQ5ZjdiMjgzZmU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMu
cG0KQEAgLTE2MDcsOSArMTYwNywxMyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAg
ICAgICAgICAgICAgIHNwbGljZShAcGFyYW1ldGVyTmFtZXMsICRjdXJyZW50UGFyYW1ldGVyLCAx
LCAiJHtwYXJhbU5hbWV9Q29yZS0+cHJvcGVydHlSZWZlcmVuY2UoKSIpOwogICAgICAgICAgICAg
fQogCi0gICAgICAgICAgICBteSAkY29udGVudCA9ICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0
KCRmdW5jdGlvbk5hbWUpIC4gIigiIC4gam9pbigiLCAiLCBAcGFyYW1ldGVyTmFtZXMpIC4gIiki
OyAKLQotICAgICAgICAgICAgaWYgKCRzdmdQcm9wZXJ0eVR5cGUpIHsKKyAgICAgICAgICAgIG15
ICRjb250ZW50OworICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9KSB7CisgICAgICAgICAgICAgICAgbXkgJGlt
cGxlbWVudGVkQnkgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkltcGxlbWVudGVkQnkifTsKKyAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyIke2ltcGxl
bWVudGVkQnl9LmgifSA9IDE7CisgICAgICAgICAgICAgICAgdW5zaGlmdChAcGFyYW1ldGVyTmFt
ZXMsICRjYWxsZXIpOworICAgICAgICAgICAgICAgICRjb250ZW50ID0gIiR7aW1wbGVtZW50ZWRC
eX06OiIgLiAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkZnVuY3Rpb25OYW1lKSAuICIoIiAu
IGpvaW4oIiwgIiwgQHBhcmFtZXRlck5hbWVzKSAuICIpIjsKKyAgICAgICAgICAgIH0gZWxzaWYg
KCRzdmdQcm9wZXJ0eVR5cGUpIHsKICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJFeGNl
cHRpb25Db2RlLmgifSA9IDE7CiAgICAgICAgICAgICAgICAgcHVzaChAZnVuY3Rpb25Db250ZW50
LCAiICAgIGlmIChJTVBMLT5yb2xlKCkgPT0gV2ViQ29yZTo6QW5pbVZhbFJvbGUpIHtcbiIpOwog
ICAgICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9uQ29udGVudCwgIiAgICAgICAgV2ViQ29yZTo6
cmFpc2VPbkRPTUVycm9yKFdlYkNvcmU6Ok5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUik7XG4i
KTsKQEAgLTE2MjAsOSArMTYyNCw5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9uQ29udGVudCwgIiAg
ICB9XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBmdW5jdGlvbkNvbnRlbnQsICIgICAgJHN2
Z1Byb3BlcnR5VHlwZSYgcG9kSW1wbCA9IElNUEwtPnByb3BlcnR5UmVmZXJlbmNlKCk7XG4iKTsK
LSAgICAgICAgICAgICAgICAkY29udGVudCA9ICJwb2RJbXBsLiRjb250ZW50IjsgCisgICAgICAg
ICAgICAgICAgJGNvbnRlbnQgPSAicG9kSW1wbC4iIC4gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmly
c3QoJGZ1bmN0aW9uTmFtZSkgLiAiKCIgLiBqb2luKCIsICIsIEBwYXJhbWV0ZXJOYW1lcykgLiAi
KSI7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICRjb250ZW50ID0gJGNh
bGxlciAuICItPiRjb250ZW50IjsKKyAgICAgICAgICAgICAgICAkY29udGVudCA9ICIkY2FsbGVy
LT4iIC4gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGZ1bmN0aW9uTmFtZSkgLiAiKCIgLiBq
b2luKCIsICIsIEBwYXJhbWV0ZXJOYW1lcykgLiAiKSI7CiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIGlmICgkcmV0dXJuVHlwZSBlcSAidm9pZCIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggMjVkNjk2MGMyZDky
YTUyNGVhYmM2ZWUwOGIxYTFlZTQ0NWE0MmYwYS4uYWJmZGI3YTJjNGIxMGEwMGZhZTk2MmFkN2Qw
Njk0NjVmMmI2ZGFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTMxODUsMTAgKzMxODUsMjIgQEAgc3ViIEdlbmVyYXRl
RnVuY3Rpb25DYWxsU3RyaW5nKCkKICAgICAgICAgJG5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGF0aW9uRnVuY3Rpb24ifTsKICAgICB9
CiAKLSAgICBteSBAYXJndW1lbnRzOwogICAgIG15ICRpbmRleCA9IDA7CiAgICAgbXkgJGhhc1Nj
cmlwdFN0YXRlID0gMDsKIAorICAgIG15IEBhcmd1bWVudHM7CisgICAgbXkgJGZ1bmN0aW9uTmFt
ZTsKKyAgICBpZiAoJGZ1bmN0aW9uLT5pc1N0YXRpYykgeworICAgICAgICAkZnVuY3Rpb25OYW1l
ID0gIiR7aW1wbENsYXNzTmFtZX06OiR7bmFtZX0iOworICAgIH0gZWxzaWYgKCRmdW5jdGlvbi0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9KSB7CisgICAg
ICAgIG15ICRpbXBsZW1lbnRlZEJ5ID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In07CisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCIk
e2ltcGxlbWVudGVkQnl9LmgiKTsKKyAgICAgICAgdW5zaGlmdChAYXJndW1lbnRzLCAiaW1wIik7
CisgICAgICAgICRmdW5jdGlvbk5hbWUgPSAiJHtpbXBsZW1lbnRlZEJ5fTo6JHtuYW1lfSI7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJpbXAtPiR7bmFtZX0iOworICAg
IH0KKwogICAgIG15ICRjYWxsV2l0aCA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifTsKICAgICBpZiAoJGNhbGxXaXRoKSB7CiAgICAgICAgIG15
ICRjYWxsV2l0aEFyZyA9ICJDT01QSUxFX0FTU0VSVChmYWxzZSkiOwpAQCAtMzIzOCw3ICszMjUw
LDcgQEAgc3ViIEdlbmVyYXRlRnVuY3Rpb25DYWxsU3RyaW5nKCkKICAgICAgICAgcHVzaCBAYXJn
dW1lbnRzLCAiZWMiOwogICAgIH0KIAotICAgIG15ICRmdW5jdGlvblN0cmluZyA9ICgkZnVuY3Rp
b24tPmlzU3RhdGljID8gIiR7aW1wbENsYXNzTmFtZX06OiR7bmFtZX0oIiA6ICJpbXAtPiR7bmFt
ZX0oIikgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiOworICAgIG15ICRmdW5jdGlvblN0
cmluZyA9ICIkZnVuY3Rpb25OYW1lKCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiOwog
CiAgICAgbXkgJHJldHVybiA9ICJyZXN1bHQiOwogICAgIG15ICRyZXR1cm5Jc1JlZiA9IElzUmVm
UHRyVHlwZSgkcmV0dXJuVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbAppbmRleCA0YThhOTU1ODRlNWEwYTcxZGViNTBk
YzI2MjMyNzZhZTcxZmIxYzcwLi5jYjUxZjJjNmQ3NTE3Mjg5ZTQ1MDg0MTk2MDk5ZDQ1ZDJjZGQ3
MjhmIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRl
LWJpbmRpbmdzLnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJh
dGUtYmluZGluZ3MucGwKQEAgLTE1OSw2ICsxNTksMTggQEAgZm9yZWFjaCBteSAkaWRsRmlsZSAo
QHN1cHBsZW1lbnRlZElkbEZpbGVzKSB7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIHB1c2goQHskdGFyZ2V0RGF0YU5vZGUtPmF0dHJpYnV0ZXN9LCAkYXR0cmlidXRlKTsKICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGRhdGFO
b2RlLT5mdW5jdGlvbnN9KSB7CisgICAgICAgICAgICAgICAgIyBSZWNvcmQgdGhhdCB0aGlzIGF0
dHJpYnV0ZSBpcyBpbXBsZW1lbnRlZCBieSAkaW50ZXJmYWNlTmFtZS4KKyAgICAgICAgICAgICAg
ICAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVk
QnkifSA9ICRpbnRlcmZhY2VOYW1lOworCisgICAgICAgICAgICAgICAgIyBBZGQgaW50ZXJmYWNl
LXdpZGUgZXh0ZW5kZWQgYXR0cmlidXRlcyB0byBlYWNoIGF0dHJpYnV0ZS4KKyAgICAgICAgICAg
ICAgICBmb3JlYWNoIG15ICRleHRlbmRlZEF0dHJpYnV0ZU5hbWUgKGtleXMgJXskZGF0YU5vZGUt
PmV4dGVuZGVkQXR0cmlidXRlc30pIHsKKyAgICAgICAgICAgICAgICAgICAgbmV4dCBpZiAoJGV4
dGVuZGVkQXR0cmlidXRlTmFtZSBlcSAiU3VwcGxlbWVudGFsIik7CisgICAgICAgICAgICAgICAg
ICAgICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnskZXh0ZW5kZWRB
dHRyaWJ1dGVOYW1lfSA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57JGV4dGVuZGVk
QXR0cmlidXRlTmFtZX07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHB1c2go
QHskdGFyZ2V0RGF0YU5vZGUtPmZ1bmN0aW9uc30sICRmdW5jdGlvbik7CisgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0SW50ZXJmYWNlLmNwcAppbmRl
eCBkNjEyMTIxMDk3ZTRjM2I1OGE3OGUyMDRhMjQ4Nzc0ZWNhNzE1ZWRjLi4yNDZhZTM2MmMyNzU0
MjZkOTFkNWZlMWFiMWFjZjYwMWEwZmIwZjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEludGVyZmFj
ZS5jcHAKQEAgLTI2LDggKzI2LDEwIEBACiAKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAi
VGVzdEludGVyZmFjZS5oIgorI2luY2x1ZGUgIlRlc3RPYmouaCIKICNpbmNsdWRlICJUZXN0U3Vw
cGxlbWVudGFsLmgiCiAjaW5jbHVkZSAiV2ViRE9NU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViRE9N
VGVzdE9iai5oIgogI2luY2x1ZGUgIldlYkV4Y2VwdGlvbkhhbmRsZXIuaCIKICNpbmNsdWRlICJ3
dGYvdGV4dC9BdG9taWNTdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CkBAIC0xMDYs
NiArMTA4LDMzIEBAIHZvaWQgV2ViRE9NVGVzdEludGVyZmFjZTo6c2V0U3RyMihjb25zdCBXZWJE
T01TdHJpbmcmIG5ld1N0cjIpCiB9CiAKICNlbmRpZgorCisjaWYgRU5BQkxFKENvbmRpdGlvbjEx
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCit2b2lkIFdlYkRPTVRlc3RJbnRlcmZhY2U6OnN1cHBs
ZW1lbnRhbE1ldGhvZDEoKQoreworICAgIGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxNZXRob2QxKGltcGwoKSk7Cit9CisK
KyNlbmRpZgorCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24x
MikKK1dlYkRPTVRlc3RPYmogV2ViRE9NVGVzdEludGVyZmFjZTo6c3VwcGxlbWVudGFsTWV0aG9k
Mihjb25zdCBXZWJET01TdHJpbmcmIHN0ckFyZywgY29uc3QgV2ViRE9NVGVzdE9iaiYgb2JqQXJn
KQoreworICAgIGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm4gV2ViRE9NVGVzdE9iaigpOwor
CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgV2ViRE9NVGVzdE9iaiBy
ZXN1bHQgPSB0b1dlYktpdChXVEY6OmdldFB0cihUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50
YWxNZXRob2QyKGltcGwoKSwgc3RyQXJnLCB0b1dlYkNvcmUob2JqQXJnKSwgZWMpKSk7CisgICAg
d2ViRE9NUmFpc2VFcnJvcihzdGF0aWNfY2FzdDxXZWJET01FeGNlcHRpb25Db2RlPihlYykpOwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNlbmRpZgorCiBXZWJDb3JlOjpUZXN0SW50ZXJmYWNl
KiB0b1dlYkNvcmUoY29uc3QgV2ViRE9NVGVzdEludGVyZmFjZSYgd3JhcHBlcikKIHsKICAgICBy
ZXR1cm4gd3JhcHBlci5pbXBsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEludGVyZmFjZS5oCmluZGV4IDVh
YTAzYzc5NTA5OGMyNzRhZjY3MGMzNDcwNTE4NzgyYmIxNmUxNmMuLjgzNDk3NjAwOTZlZDRjYzcx
ZWM1ZDczYzdjMjk5MmU0MzgxNzQzMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEludGVyZmFjZS5oCkBA
IC0zMiw2ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFRlc3RJbnRlcmZhY2U7
CiB9OwogCitjbGFzcyBXZWJET01UZXN0T2JqOwogCiBjbGFzcyBXZWJET01UZXN0SW50ZXJmYWNl
IDogcHVibGljIFdlYkRPTU9iamVjdCB7CiBwdWJsaWM6CkBAIC00OSw2ICs1MCw5IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFN0cjIoY29uc3QgV2ViRE9NU3RyaW5nJik7CiAjZW5kaWYKIAorICAg
IHZvaWQgc3VwcGxlbWVudGFsTWV0aG9kMSgpOworICAgIFdlYkRPTVRlc3RPYmogc3VwcGxlbWVu
dGFsTWV0aG9kMihjb25zdCBXZWJET01TdHJpbmcmIHN0ckFyZywgY29uc3QgV2ViRE9NVGVzdE9i
aiYgb2JqQXJnKTsKKwogICAgIFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UqIGltcGwoKSBjb25zdDsK
IAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0SW50ZXJmYWNlLmNw
cAppbmRleCA1ZjhmYWZlZDMxNjI1YmQyYWMwZGE2ZDFhNDZmZmQ2Mjg5ZjQ3MWMyLi42ZDVhZDZk
NGNiY2MzOWNiN2I2NWMyNGEzNTliYjRmYzc5OWQwMTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0SW50ZXJmYWNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9X
ZWJLaXRET01UZXN0SW50ZXJmYWNlLmNwcApAQCAtMjksMTEgKzI5LDE0IEBACiAjaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgogI2lu
Y2x1ZGUgIlRlc3RJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJUZXN0T2JqLmgiCiAjaW5jbHVkZSAi
VGVzdFN1cHBsZW1lbnRhbC5oIgogI2luY2x1ZGUgIldlYktpdERPTUJpbmRpbmcuaCIKICNpbmNs
dWRlICJnb2JqZWN0L0NvbnZlcnRUb1VURjhTdHJpbmcuaCIKICNpbmNsdWRlICJ3ZWJraXQvV2Vi
S2l0RE9NVGVzdEludGVyZmFjZS5oIgogI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01UZXN0SW50
ZXJmYWNlUHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01UZXN0T2JqLmgiCisj
aW5jbHVkZSAid2Via2l0L1dlYktpdERPTVRlc3RPYmpQcml2YXRlLmgiCiAjaW5jbHVkZSAid2Vi
a2l0ZGVmaW5lcy5oIgogI2luY2x1ZGUgIndlYmtpdGdsb2JhbHNwcml2YXRlLmgiCiAjaW5jbHVk
ZSAid2Via2l0bWFyc2hhbC5oIgpAQCAtNTIsNiArNTUsNDUgQEAgV2ViS2l0RE9NVGVzdEludGVy
ZmFjZSoga2l0KFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UqIG9iaikKICAgICAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdCAvLwogCit2b2lkCit3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX3N1cHBsZW1l
bnRhbF9tZXRob2QxKFdlYktpdERPTVRlc3RJbnRlcmZhY2UqIHNlbGYpCit7CisjaWYgRU5BQkxF
KENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisgICAgZ19yZXR1cm5faWZfZmFp
bChzZWxmKTsKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAg
V2ViQ29yZTo6VGVzdEludGVyZmFjZSAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAg
VGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsTWV0aG9kMShpdGVtKTsKKyNlbmRpZiAvKiBF
TkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikgKi8KK30KKworV2ViS2l0
RE9NVGVzdE9iaioKK3dlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2Vfc3VwcGxlbWVudGFsX21ldGhv
ZDIoV2ViS2l0RE9NVGVzdEludGVyZmFjZSogc2VsZiwgY29uc3QgZ2NoYXIqIHN0cl9hcmcsIFdl
YktpdERPTVRlc3RPYmoqIG9ial9hcmcsIEdFcnJvciAqKmVycm9yKQoreworI2lmIEVOQUJMRShD
b25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKHNlbGYsIDApOworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
KyAgICBXZWJDb3JlOjpUZXN0SW50ZXJmYWNlICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsK
KyAgICBnX3JldHVybl92YWxfaWZfZmFpbChzdHJfYXJnLCAwKTsKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChvYmpfYXJnLCAwKTsKKyAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRfc3RyX2FyZyA9
IFdURjo6U3RyaW5nOjpmcm9tVVRGOChzdHJfYXJnKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqICog
Y29udmVydGVkX29ial9hcmcgPSBOVUxMOworICAgIGlmIChvYmpfYXJnICE9IE5VTEwpIHsKKyAg
ICAgICAgY29udmVydGVkX29ial9hcmcgPSBXZWJLaXQ6OmNvcmUob2JqX2FyZyk7CisgICAgICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvbnZlcnRlZF9vYmpfYXJnLCAwKTsKKyAgICB9CisgICAg
V2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpU
ZXN0T2JqPiBnX3JlcyA9IFdURjo6Z2V0UHRyKFRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRh
bE1ldGhvZDIoaXRlbSwgY29udmVydGVkX3N0cl9hcmcsIGNvbnZlcnRlZF9vYmpfYXJnLCBlYykp
OworICAgIGlmIChlYykgeworICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRp
b24gZWNkZXNjKGVjKTsKKyAgICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFy
a19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIpLCBlY2Rlc2MuY29kZSwgZWNkZXNjLm5hbWUpOwor
ICAgIH0KKyAgICBXZWJLaXRET01UZXN0T2JqKiByZXMgPSBXZWJLaXQ6OmtpdChnX3Jlcy5nZXQo
KSk7CisgICAgcmV0dXJuIHJlczsKKyNlbHNlCisgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYgLyog
RU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpICovCit9CisKIGdjaGFy
Kgogd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9nZXRfc3RyMShXZWJLaXRET01UZXN0SW50ZXJm
YWNlKiBzZWxmKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZS5oCmlu
ZGV4IDdjMzY1MDU4YjliODQ0MTJiZWI3YmRiYzc1OGQ3MDU1YzQwZWFjZjEuLmE3MDZhN2ExYjQ5
YjFiOWZmNzBkMzUzMjFiNjllNDJkODBkZGM4Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRE
T01UZXN0SW50ZXJmYWNlLmgKQEAgLTQ3LDYgKzQ3LDI5IEBAIFdFQktJVF9BUEkgR1R5cGUKIHdl
YmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfZ2V0X3R5cGUgKHZvaWQpOwogCiAvKioKKyAqIHdlYmtp
dF9kb21fdGVzdF9pbnRlcmZhY2Vfc3VwcGxlbWVudGFsX21ldGhvZDE6CisgKiBAc2VsZjogQSAj
V2ViS2l0RE9NVGVzdEludGVyZmFjZQorICoKKyAqIFJldHVybnM6CisgKgorKiovCitXRUJLSVRf
QVBJIHZvaWQKK3dlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2Vfc3VwcGxlbWVudGFsX21ldGhvZDEo
V2ViS2l0RE9NVGVzdEludGVyZmFjZSogc2VsZik7CisKKy8qKgorICogd2Via2l0X2RvbV90ZXN0
X2ludGVyZmFjZV9zdXBwbGVtZW50YWxfbWV0aG9kMjoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01U
ZXN0SW50ZXJmYWNlCisgKiBAc3RyX2FyZzogQSAjZ2NoYXIKKyAqIEBvYmpfYXJnOiBBICNXZWJL
aXRET01UZXN0T2JqCisgKiBAZXJyb3I6ICNHRXJyb3IKKyAqCisgKiBSZXR1cm5zOiAodHJhbnNm
ZXIgbm9uZSk6CisgKgorKiovCitXRUJLSVRfQVBJIFdlYktpdERPTVRlc3RPYmoqCit3ZWJraXRf
ZG9tX3Rlc3RfaW50ZXJmYWNlX3N1cHBsZW1lbnRhbF9tZXRob2QyKFdlYktpdERPTVRlc3RJbnRl
cmZhY2UqIHNlbGYsIGNvbnN0IGdjaGFyKiBzdHJfYXJnLCBXZWJLaXRET01UZXN0T2JqKiBvYmpf
YXJnLCBHRXJyb3IgKiplcnJvcik7CisKKy8qKgogICogd2Via2l0X2RvbV90ZXN0X2ludGVyZmFj
ZV9nZXRfc3RyMToKICAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0SW50ZXJmYWNlCiAgKgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
dGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SW50ZXJmYWNlLmNwcAppbmRleCBiMjI2ZTU5ZDYzOTM2N2IxNzkwMmM1MTA5MWM0ZGVjNzkx
ZTk1OWQ4Li5iM2M3OTExMjZmMTQ5M2RiOTQ5MmVkZjA4MzgzZjg3MjVlNGJkYjI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJm
YWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SW50ZXJmYWNlLmNwcApAQCAtMjYsNyArMjYsOSBAQAogCiAjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIkpTVGVzdE9iai5o
IgogI2luY2x1ZGUgIlRlc3RJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJUZXN0T2JqLmgiCiAjaW5j
bHVkZSAiVGVzdFN1cHBsZW1lbnRhbC5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KICNp
bmNsdWRlIDx3dGYvR2V0UHRyLmg+CkBAIC0xMjgsMTAgKzEzMCwxNiBAQCBDb25zdHJ1Y3RUeXBl
IEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENv
bnN0cnVjdERhdAogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0SW50ZXJmYWNl
UHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7CisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMTIpCisgICAgeyAic3VwcGxlbWVudGFsTWV0aG9kMSIsIERvbnREZWxl
dGUgfCBKU0M6OkZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+
KGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMSksIChp
bnRwdHJfdCkwLCBOb0ludHJpbnNpYyB9LAorI2VuZGlmCisjaWYgRU5BQkxFKENvbmRpdGlvbjEx
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisgICAgeyAic3VwcGxlbWVudGFsTWV0aG9kMiIsIERv
bnREZWxldGUgfCBKU0M6OkZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVu
Y3Rpb24+KGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9k
MiksIChpbnRwdHJfdCkyLCBOb0ludHJpbnNpYyB9LAorI2VuZGlmCiAgICAgeyAwLCAwLCAwLCAw
LCBOb0ludHJpbnNpYyB9CiB9OwogCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdEludGVy
ZmFjZVByb3RvdHlwZVRhYmxlID0geyAxLCAwLCBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVUYWJs
ZVZhbHVlcywgMCB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RJbnRlcmZhY2VQcm90
b3R5cGVUYWJsZSA9IHsgNSwgMywgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlVGFibGVWYWx1ZXMs
IDAgfTsKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGU6OnNfaW5mbyA9
IHsgIlRlc3RJbnRlcmZhY2VQcm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0SW50ZXJm
YWNlUHJvdG90eXBlVGFibGUsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0SW50ZXJmYWNl
UHJvdG90eXBlKSB9OwogCiBKU09iamVjdCogSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlOjpzZWxm
KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKQEAgLTEzOSw2
ICsxNDcsMTggQEAgSlNPYmplY3QqIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZTo6c2VsZihFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKICAgICByZXR1cm4gZ2V0RE9NUHJv
dG90eXBlPEpTVGVzdEludGVyZmFjZT4oZXhlYywgZ2xvYmFsT2JqZWN0KTsKIH0KIAorYm9vbCBK
U1Rlc3RJbnRlcmZhY2VQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmIHNsb3QpCit7CisgICAgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSo+KGNlbGwpOworICAgIHJldHVybiBn
ZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMsICZKU1Rlc3RJbnRlcmZhY2VQcm90
b3R5cGVUYWJsZSwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworYm9vbCBK
U1Rlc3RJbnRlcmZhY2VQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQoreworICAgIEpTVGVzdEludGVyZmFj
ZVByb3RvdHlwZSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUq
PihvYmplY3QpOworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvbkRlc2NyaXB0b3I8SlNPYmpl
Y3Q+KGV4ZWMsICZKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVUYWJsZSwgdGhpc09iamVjdCwgcHJv
cGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKK30KKwogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEludGVy
ZmFjZTo6c19pbmZvID0geyAiVGVzdEludGVyZmFjZSIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RJ
bnRlcmZhY2VUYWJsZSwgMCAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0SW50ZXJmYWNlKSB9
OwogCiBKU1Rlc3RJbnRlcmZhY2U6OkpTVGVzdEludGVyZmFjZShTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxUZXN0SW50ZXJm
YWNlPiBpbXBsKQpAQCAtMjUwLDYgKzI3MCw1MCBAQCBKU1ZhbHVlIEpTVGVzdEludGVyZmFjZTo6
Z2V0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwog
ICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcj4o
ZXhlYywgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0K
IAorI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1
cHBsZW1lbnRhbE1ldGhvZDEoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOworICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRz
KCZKU1Rlc3RJbnRlcmZhY2U6OnNfaW5mbykpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMpOworICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0
PEpTVGVzdEludGVyZmFjZSo+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOworICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJkpTVGVzdEludGVyZmFjZTo6c19pbmZvKTsKKyAg
ICBUZXN0SW50ZXJmYWNlKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdEludGVyZmFjZSo+KGNhc3Rl
ZFRoaXMtPmltcGwoKSk7CisgICAgVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsTWV0aG9k
MShpbXBsKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQor
CisjZW5kaWYKKworI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEy
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVG
dW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDIoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOworICAgIGlmICghdGhpc1ZhbHVl
LmluaGVyaXRzKCZKU1Rlc3RJbnRlcmZhY2U6OnNfaW5mbykpCisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IHN0
YXRpY19jYXN0PEpTVGVzdEludGVyZmFjZSo+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOworICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJkpTVGVzdEludGVyZmFjZTo6c19p
bmZvKTsKKyAgICBUZXN0SW50ZXJmYWNlKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdEludGVyZmFj
ZSo+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8
IDIpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4
ZWMsICJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
KyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0gc3RhdGljX2Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFzY3JpcHRDb250ZXh0KQorICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIGNvbnN0IFN0cmluZyYgc3Ry
QXJnKHVzdHJpbmdUb1N0cmluZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBNaXNz
aW5nSXNVbmRlZmluZWQpLmlzRW1wdHkoKSA/IFVTdHJpbmcoKSA6IE1BWUJFX01JU1NJTkdfUEFS
QU1FVEVSKGV4ZWMsIDAsIE1pc3NpbmdJc1VuZGVmaW5lZCkudG9TdHJpbmcoZXhlYykpKTsKKyAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CisgICAgVGVzdE9iaiogb2JqQXJnKHRvVGVzdE9iaihNQVlCRV9N
SVNTSU5HX1BBUkFNRVRFUihleGVjLCAxLCBNaXNzaW5nSXNVbmRlZmluZWQpKSk7CisgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworCisgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgY2Fz
dGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKFRlc3RTdXBwbGVtZW50YWw6OnN1
cHBsZW1lbnRhbE1ldGhvZDIoaW1wbCwgc2NyaXB0Q29udGV4dCwgc3RyQXJnLCBvYmpBcmcsIGVj
KSkpOworICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOworfQorCisjZW5kaWYKKwogc3RhdGljIGlubGluZSBib29sIGlzT2Jz
ZXJ2YWJsZShKU1Rlc3RJbnRlcmZhY2UqIGpzVGVzdEludGVyZmFjZSkKIHsKICAgICBpZiAoanNU
ZXN0SW50ZXJmYWNlLT5oYXNDdXN0b21Qcm9wZXJ0aWVzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgKaW5k
ZXggZGMzOGFkN2VmODJkYWE1YjcyYjhjMmE5MzMwNWUzYzhiZDhlOWY3NC4uOWM5MWVhMDI0YTQw
ZTlkNWFmYmJkYTNhZTY0ODk0MTdkNGY4MTY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaApAQCAtMTAx
LDYgKzEwMSw4IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFz
c0luZm8gc19pbmZvOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpT
Q2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9w
ZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlND
OjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlND
OjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksICZzX2luZm8pOwpAQCAtMTA5LDcgKzExMSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgOiBKU0M6OkpT
Tm9uRmluYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKSB7IH0KIHByb3RlY3RlZDoKLSAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFnczsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92
ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogfTsKIAog
Y2xhc3MgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IgOiBwdWJsaWMgRE9NQ29uc3RydWN0b3JP
YmplY3QgewpAQCAtMTM5LDYgKzE0MSwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIEpTQzo6
Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDb25zdHJ1
Y3REYXRhJik7CiB9OwogCisvLyBGdW5jdGlvbnMKKworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0
aG9kMShKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMihKU0M6
OkV4ZWNTdGF0ZSopOwogLy8gQXR0cmlidXRlcwogCiBKU0M6OkpTVmFsdWUganNUZXN0SW50ZXJm
YWNlU3RyMShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlm
aWVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
T2JqQy9ET01UZXN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJmYWNlLmgKaW5kZXggMjM0MjU5YjQ1NDA5Y2EzM2U2YTcy
MmQ5MjczMTBhODZiNTU1NDMyYy4uN2NjZWQ1ZThmMTRmMmIxMTZiZDI0OGVhZTRiZWU4Y2I4NDBm
Y2FiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09i
akMvRE9NVGVzdEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZhY2UuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYg
V0VCS0lUX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gV0VCS0lUX1ZFUlNJT05fTEFURVNUCiAKK0Bj
bGFzcyBET01UZXN0T2JqOwogQGNsYXNzIE5TU3RyaW5nOwogCiBAaW50ZXJmYWNlIERPTVRlc3RJ
bnRlcmZhY2UgOiBET01PYmplY3QKQEAgLTQyLDYgKzQzLDggQEAKIC0gKE5TU3RyaW5nICopc3Ry
MzsKIC0gKHZvaWQpc2V0U3RyMzooTlNTdHJpbmcgKiluZXdTdHIzOwogI2VuZGlmCistICh2b2lk
KXN1cHBsZW1lbnRhbE1ldGhvZDE7CistIChET01UZXN0T2JqICopc3VwcGxlbWVudGFsTWV0aG9k
MjooTlNTdHJpbmcgKilzdHJBcmcgb2JqQXJnOihET01UZXN0T2JqICopb2JqQXJnOwogQGVuZAog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9PYmpDL0RPTVRlc3RJbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJmYWNlLm1tCmluZGV4IGY0NjljZjEwYWY4NGY1Yjli
MWEyYzY5OGIxMzIxMWM3OTc5MGUxNTIuLjI1ZWQ0OGQwYWZjMjgxN2I2NjViNDIwN2Y3ZThkNDM1
ZDE2MzlkMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9PYmpDL0RPTVRlc3RJbnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEludGVyZmFjZS5tbQpAQCAtMzksMTAgKzM5LDEyIEBA
CiAjaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVN0eWxlU2hlZXRJbnRl
cm5hbC5oIgogI2ltcG9ydCAiRE9NVGVzdEludGVyZmFjZUludGVybmFsLmgiCisjaW1wb3J0ICJE
T01UZXN0T2JqSW50ZXJuYWwuaCIKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1w
b3J0ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKICNpbXBvcnQgIktVUkwuaCIKICNpbXBvcnQg
IlRlc3RJbnRlcmZhY2UuaCIKKyNpbXBvcnQgIlRlc3RPYmouaCIKICNpbXBvcnQgIlRlc3RTdXBw
bGVtZW50YWwuaCIKICNpbXBvcnQgIlRocmVhZENoZWNrLmgiCiAjaW1wb3J0ICJXZWJDb3JlT2Jq
Q0V4dHJhcy5oIgpAQCAtMTA2LDYgKzEwOCwyOSBAQAogfQogI2VuZGlmCiAKKworI2lmIEVOQUJM
RShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorLSAodm9pZClzdXBwbGVtZW50
YWxNZXRob2QxCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwor
ICAgIFRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbE1ldGhvZDEoSU1QTCk7Cit9CisKKyNl
bmRpZgorCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikK
Ky0gKERPTVRlc3RPYmogKilzdXBwbGVtZW50YWxNZXRob2QyOihOU1N0cmluZyAqKXN0ckFyZyBv
YmpBcmc6KERPTVRlc3RPYmogKilvYmpBcmcKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAg
RE9NVGVzdE9iaiAqcmVzdWx0ID0ga2l0KFdURjo6Z2V0UHRyKFRlc3RTdXBwbGVtZW50YWw6OnN1
cHBsZW1lbnRhbE1ldGhvZDIoSU1QTCwgc3RyQXJnLCBjb3JlKG9iakFyZyksIGVjKSkpOworICAg
IFdlYkNvcmU6OnJhaXNlT25ET01FcnJvcihlYyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
I2VuZGlmCisKIEBlbmQKIAogV2ViQ29yZTo6VGVzdEludGVyZmFjZSogY29yZShET01UZXN0SW50
ZXJmYWNlICp3cmFwcGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RTdXBwbGVtZW50YWwuaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Rlc3RTdXBwbGVtZW50YWwuaWRsCmluZGV4IDQ2NmZkZDUxYThkNmU3OGNm
MzMyMGVhZWVmMTg2YjljZmIyNmZmMzIuLjBkN2JlMDJjZmM1ZDlhMDM3MjJhYTY4ZDI4YWM1NzFk
YTNhMmE4ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9UZXN0U3VwcGxlbWVudGFsLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVGVzdFN1cHBsZW1lbnRhbC5pZGwKQEAgLTM2LDUgKzM2LDggQEAgbW9kdWxlIHRl
c3QgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHN0cjE7CiAgICAgICAg
IGF0dHJpYnV0ZSBET01TdHJpbmcgc3RyMjsKICAgICAgICAgYXR0cmlidXRlIFtDdXN0b21HZXR0
ZXIsIEN1c3RvbVNldHRlcl0gRE9NU3RyaW5nIHN0cjM7CisKKyAgICAgICAgdm9pZCBzdXBwbGVt
ZW50YWxNZXRob2QxKCk7CisgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0
XSBUZXN0T2JqIHN1cHBsZW1lbnRhbE1ldGhvZDIoaW4gRE9NU3RyaW5nIHN0ckFyZywgaW4gVGVz
dE9iaiBvYmpBcmcpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgIH07CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRl
cmZhY2UuY3BwCmluZGV4IDUzNThiNWVjYjQ5MzFiNWNiODMwM2I3OTMxOTczNGFmYWM3NTg0YzUu
LjdjMDU4NTI1MzllMTNmMjkxNGRkZDY3OWE3YjhkZDcwMTQ3NGRjYWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRl
cmZhY2UuY3BwCkBAIC0zMiw3ICszMiwxMSBAQAogI2luY2x1ZGUgIlY4RE9NV3JhcHBlci5oIgog
I2luY2x1ZGUgIlY4SXNvbGF0ZWRDb250ZXh0LmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgorI2lu
Y2x1ZGUgIlY4VGVzdE9iai5oIgogI2luY2x1ZGUgIlY4VGVzdFN1cHBsZW1lbnRhbC5oIgorI2lu
Y2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNzgsNiArODIsNDUgQEAgc3RhdGljIHZvaWQgc3RyMkF0dHJTZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHUK
IAogI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQog
CisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisKK3N0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFsTWV0aG9kMUNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uVGVzdEludGVyZmFj
ZS5zdXBwbGVtZW50YWxNZXRob2QxIik7CisgICAgVGVzdEludGVyZmFjZSogaW1wID0gVjhUZXN0
SW50ZXJmYWNlOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKyAgICBUZXN0U3VwcGxlbWVudGFs
OjpzdXBwbGVtZW50YWxNZXRob2QxKGltcCk7CisgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZh
bHVlPigpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMTIpCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24x
MikKKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdXBwbGVtZW50YWxNZXRob2QyQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5U
ZXN0SW50ZXJmYWNlLnN1cHBsZW1lbnRhbE1ldGhvZDIiKTsKKyAgICBpZiAoYXJncy5MZW5ndGgo
KSA8IDIpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIs
IFY4UHJveHk6OlR5cGVFcnJvcik7CisgICAgVGVzdEludGVyZmFjZSogaW1wID0gVjhUZXN0SW50
ZXJmYWNlOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKKyAgICB7CisgICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFBh
cmFtZXRlcjw+LCBzdHJBcmcsIE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIE1pc3Np
bmdJc1VuZGVmaW5lZCkpOworICAgIEVYQ0VQVElPTl9CTE9DSyhUZXN0T2JqKiwgb2JqQXJnLCBW
OFRlc3RPYmo6Okhhc0luc3RhbmNlKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDEsIE1p
c3NpbmdJc1VuZGVmaW5lZCkpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+OjpDYXN0KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDEsIE1pc3NpbmdJc1Vu
ZGVmaW5lZCkpKSA6IDApOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRl
eHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFzY3JpcHRDb250ZXh0
KQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIFJlZlB0cjxUZXN0T2JqPiBy
ZXN1bHQgPSBUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxNZXRob2QyKGltcCwgc2NyaXB0
Q29udGV4dCwgc3RyQXJnLCBvYmpBcmcsIGVjKTsKKyAgICBpZiAoVU5MSUtFTFkoZWMpKQorICAg
ICAgICBnb3RvIGZhaWw7CisgICAgcmV0dXJuIHRvVjgocmVzdWx0LnJlbGVhc2UoKSk7CisgICAg
fQorICAgIGZhaWw6CisgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKGVjKTsKKyAgICByZXR1
cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0
aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKwogfSAvLyBuYW1lc3BhY2UgVGVzdEludGVy
ZmFjZUludGVybmFsCiAKIHN0YXRpYyBjb25zdCBCYXRjaGVkQXR0cmlidXRlIFRlc3RJbnRlcmZh
Y2VBdHRyc1tdID0gewpAQCAtOTUsNiArMTM4LDEyIEBAIHN0YXRpYyBjb25zdCBCYXRjaGVkQXR0
cmlidXRlIFRlc3RJbnRlcmZhY2VBdHRyc1tdID0gewogI2VuZGlmIC8vIEVOQUJMRShDb25kaXRp
b24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogfTsKIAorc3RhdGljIGNvbnN0IEJhdGNoZWRD
YWxsYmFjayBUZXN0SW50ZXJmYWNlQ2FsbGJhY2tzW10gPSB7CisjaWYgRU5BQkxFKENvbmRpdGlv
bjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisgICAgeyJzdXBwbGVtZW50YWxNZXRob2QxIiwg
VGVzdEludGVyZmFjZUludGVybmFsOjpzdXBwbGVtZW50YWxNZXRob2QxQ2FsbGJhY2t9LAorI2Vu
ZGlmCit9OworCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0SW50ZXJmYWNlOjpjb25zdHJ1
Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRT
KCJET00uVGVzdEludGVyZmFjZS5Db25zdHJ1Y3RvciIpOwpAQCAtMTM1LDExICsxODQsMjMgQEAg
c3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRl
c3RJbnRlcmZhY2VUZW1wbGF0ZSh2ODoKICAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVm
YXVsdFNpZ25hdHVyZTsKICAgICBkZWZhdWx0U2lnbmF0dXJlID0gY29uZmlndXJlVGVtcGxhdGUo
ZGVzYywgIlRlc3RJbnRlcmZhY2UiLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4oKSwgVjhUZXN0SW50ZXJmYWNlOjppbnRlcm5hbEZpZWxkQ291bnQsCiAgICAgICAgIFRlc3RJ
bnRlcmZhY2VBdHRycywgV1RGX0FSUkFZX0xFTkdUSChUZXN0SW50ZXJmYWNlQXR0cnMpLAotICAg
ICAgICAwLCAwKTsKKyAgICAgICAgVGVzdEludGVyZmFjZUNhbGxiYWNrcywgV1RGX0FSUkFZX0xF
TkdUSChUZXN0SW50ZXJmYWNlQ2FsbGJhY2tzKSk7CiAgICAgVU5VU0VEX1BBUkFNKGRlZmF1bHRT
aWduYXR1cmUpOyAvLyBJbiBzb21lIGNhc2VzLCBpdCB3aWxsIG5vdCBiZSB1c2VkLgogICAgIGRl
c2MtPlNldENhbGxIYW5kbGVyKFY4VGVzdEludGVyZmFjZTo6Y29uc3RydWN0b3JDYWxsYmFjayk7
CisgICAgdjg6OkxvY2FsPHY4OjpPYmplY3RUZW1wbGF0ZT4gaW5zdGFuY2UgPSBkZXNjLT5JbnN0
YW5jZVRlbXBsYXRlKCk7CisgICAgdjg6OkxvY2FsPHY4OjpPYmplY3RUZW1wbGF0ZT4gcHJvdG8g
PSBkZXNjLT5Qcm90b3R5cGVUZW1wbGF0ZSgpOworICAgIFVOVVNFRF9QQVJBTShpbnN0YW5jZSk7
IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdpbGwgbm90IGJlIHVzZWQuCisgICAgVU5VU0VEX1BBUkFN
KHByb3RvKTsgLy8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KICAgICAKIAor
ICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ3N1cHBsZW1lbnRhbE1ldGhvZDInCisgICAgY29uc3Qg
aW50IHN1cHBsZW1lbnRhbE1ldGhvZDJBcmdjID0gMjsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBzdXBwbGVtZW50YWxNZXRob2QyQXJndltzdXBwbGVtZW50YWxNZXRob2Qy
QXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4VGVzdE9iajo6
R2V0UmF3VGVtcGxhdGUoKSB9OworICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gc3VwcGxl
bWVudGFsTWV0aG9kMlNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBzdXBwbGVt
ZW50YWxNZXRob2QyQXJnYywgc3VwcGxlbWVudGFsTWV0aG9kMkFyZ3YpOworI2lmIEVOQUJMRShD
b25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorICAgIHByb3RvLT5TZXQodjg6OlN0
cmluZzo6TmV3KCJzdXBwbGVtZW50YWxNZXRob2QyIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpO
ZXcoVGVzdEludGVyZmFjZUludGVybmFsOjpzdXBwbGVtZW50YWxNZXRob2QyQ2FsbGJhY2ssIHY4
OjpIYW5kbGU8djg6OlZhbHVlPigpLCBzdXBwbGVtZW50YWxNZXRob2QyU2lnbmF0dXJlKSk7Cisj
ZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisKICAg
ICAvLyBDdXN0b20gdG9TdHJpbmcgdGVtcGxhdGUKICAgICBkZXNjLT5TZXQoZ2V0VG9TdHJpbmdO
YW1lKCksIGdldFRvU3RyaW5nVGVtcGxhdGUoKSk7CiAgICAgcmV0dXJuIGRlc2M7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggNWI3Yjk1MjAxMDcyOGM5OWJjODY4YzNjNzU1YThiOGNl
NjNmZWYwMS4uMDkzMjY2ZWNhNWQ5YWY4MjEzZmQzOTc4ZTI2ZjA5NmM2OGM0ZWVhNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMTM4MSwyMyArMTM4MSw2IEBAIGRvdWJsZSBET01X
aW5kb3c6OmRldmljZVBpeGVsUmF0aW8oKSBjb25zdAogICAgIHJldHVybiBwYWdlLT5kZXZpY2VT
Y2FsZUZhY3RvcigpOwogfQogCi0jaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLVBhc3NSZWZQdHI8
RGF0YWJhc2U+IERPTVdpbmRvdzo6b3BlbkRhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiB2ZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBs
b25nIGVzdGltYXRlZFNpemUsIFBhc3NSZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4gY3JlYXRpb25D
YWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYgKCFpc0N1cnJlbnRseURpc3Bs
YXllZEluRnJhbWUoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBSZWZQdHI8RGF0YWJhc2U+
IGRhdGFiYXNlID0gMDsKLSAgICBpZiAobV9mcmFtZSAmJiBBYnN0cmFjdERhdGFiYXNlOjppc0F2
YWlsYWJsZSgpICYmIG1fZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFj
Y2Vzc0RhdGFiYXNlKCkpCi0gICAgICAgIGRhdGFiYXNlID0gRGF0YWJhc2U6Om9wZW5EYXRhYmFz
ZShtX2ZyYW1lLT5kb2N1bWVudCgpLCBuYW1lLCB2ZXJzaW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1h
dGVkU2l6ZSwgY3JlYXRpb25DYWxsYmFjaywgZWMpOwotCi0gICAgaWYgKCFkYXRhYmFzZSAmJiAh
ZWMpCi0gICAgICAgIGVjID0gU0VDVVJJVFlfRVJSOwotCi0gICAgcmV0dXJuIGRhdGFiYXNlOwot
fQotI2VuZGlmCi0KIHZvaWQgRE9NV2luZG93OjpzY3JvbGxCeShpbnQgeCwgaW50IHkpIGNvbnN0
CiB7CiAgICAgaWYgKCFpc0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5oCmluZGV4IDZiZDJiNzBmZjMzMzE1YWVmN2Y5NjMxMDUxMjczYzM2NjEwMGVlNWUu
LmNjMjk3Zjc5N2NmNzUyYWY0OTQ1NDhmYzIyZGUwZGEwNzdlYTQ0YmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuaApAQCAtMzU1LDEwICszNTUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIERPTVVSTCogd2Via2l0VVJMKCkgY29uc3Q7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShTUUxf
REFUQUJBU0UpCi0gICAgICAgIFBhc3NSZWZQdHI8RGF0YWJhc2U+IG9wZW5EYXRhYmFzZShjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNw
bGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNl
Q2FsbGJhY2s+IGNyZWF0aW9uQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKLSNlbmRpZgotCiAj
aWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKICAgICAgICAgREVGSU5FX0FUVFJJQlVURV9F
VkVOVF9MSVNURU5FUihkZXZpY2Vtb3Rpb24pOwogICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VW
RU5UX0xJU1RFTkVSKGRldmljZW9yaWVudGF0aW9uKTsKQEAgLTQxOCwxNSArNDE0LDE1IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUGVyZm9ybWFuY2UqIHBlcmZvcm1hbmNlKCkgY29u
c3Q7CiAjZW5kaWYKIAotICAgIHByaXZhdGU6Ci0gICAgICAgIGV4cGxpY2l0IERPTVdpbmRvdyhG
cmFtZSopOwotCiAgICAgICAgIC8vIEZJWE1FOiBXaGVuIHRoaXMgRE9NV2luZG93IGlzIG5vIGxv
bmdlciB0aGUgYWN0aXZlIERPTVdpbmRvdyAoaS5lLiwKICAgICAgICAgLy8gd2hlbiBpdHMgZG9j
dW1lbnQgaXMgbm8gbG9uZ2VyIHRoZSBkb2N1bWVudCB0aGF0IGlzIGRpc3BsYXllZCBpbiBpdHMK
ICAgICAgICAgLy8gZnJhbWUpLCB3ZSB3b3VsZCBsaWtlIHRvIHplcm8gb3V0IG1fZnJhbWUgdG8g
YXZvaWQgYmVpbmcgY29uZnVzZWQKICAgICAgICAgLy8gYnkgdGhlIGRvY3VtZW50IHRoYXQgaXMg
Y3VycmVudGx5IGFjdGl2ZSBpbiBtX2ZyYW1lLgogICAgICAgICBib29sIGlzQ3VycmVudGx5RGlz
cGxheWVkSW5GcmFtZSgpIGNvbnN0OwogCisgICAgcHJpdmF0ZToKKyAgICAgICAgZXhwbGljaXQg
RE9NV2luZG93KEZyYW1lKik7CisKICAgICAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0
KCkgeyByZWYoKTsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsg
ZGVyZWYoKTsgfQogICAgICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXRE
YXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKaW5kZXggODQxNGY3NWYzZGJjOGI5NDM3
YTFhNjk4ZjVjMjFlNDE3N2IwZTYxYi4uOWNhOGJkM2NmNTlhMWFjM2UzOGZjZjEyNDI2MjQ0MmM1
ZDE1ZDA1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbApAQCAtMTYzLDEwICsxNjMsNiBA
QCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBXZWJLaXRQ
b2ludCBwKTsKIAogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0VuYWJsZWRBdFJ1bnRpbWVd
IERPTUFwcGxpY2F0aW9uQ2FjaGUgYXBwbGljYXRpb25DYWNoZTsKLSNpZiBkZWZpbmVkKEVOQUJM
RV9TUUxfREFUQUJBU0UpICYmIEVOQUJMRV9TUUxfREFUQUJBU0UKLSAgICAgICAgW0VuYWJsZWRB
dFJ1bnRpbWVdIERhdGFiYXNlIG9wZW5EYXRhYmFzZShpbiBET01TdHJpbmcgbmFtZSwgaW4gRE9N
U3RyaW5nIHZlcnNpb24sIGluIERPTVN0cmluZyBkaXNwbGF5TmFtZSwgaW4gdW5zaWduZWQgbG9u
ZyBlc3RpbWF0ZWRTaXplLCBpbiBbQ2FsbGJhY2ssIE9wdGlvbmFsXSBEYXRhYmFzZUNhbGxiYWNr
IGNyZWF0aW9uQ2FsbGJhY2spCi0gICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLSNl
bmRpZgogCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbRW5hYmxlZEF0UnVudGltZV0gU3Rv
cmFnZSBzZXNzaW9uU3RvcmFnZQogICAgICAgICAgICAgZ2V0dGVyIHJhaXNlcyhET01FeGNlcHRp
b24pOwpAQCAtNzk0LDkgKzc5MCw2IEBAIG1vZHVsZSB3aW5kb3cgewogI2VuZGlmCiAjZW5kaWYK
IAotICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPVNRTF9EQVRBQkFTRV0gU1FMRXhjZXB0
aW9uQ29uc3RydWN0b3IgU1FMRXhjZXB0aW9uOwotCi0KICAgICAgICAgYXR0cmlidXRlIERPTUZv
cm1EYXRhQ29uc3RydWN0b3IgRm9ybURhdGE7CiAKICAgICAgICAgYXR0cmlidXRlIFtDb25kaXRp
b25hbD1CTE9CfEZJTEVfU1lTVEVNXSBGaWxlRXJyb3JDb25zdHJ1Y3RvciBGaWxlRXJyb3I7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RPTVdpbmRvd1NRTERhdGFiYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRE9NV2luZG93U1FMRGF0YWJhc2UuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjc3MTA5NTk1YTgxNDBlYTc2MGU5OGMyNzBmNTA2OWE2YmQ2NjI3MDcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RPTVdpbmRvd1NRTERhdGFiYXNlLmNw
cApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJET01XaW5k
b3dTUUxEYXRhYmFzZS5oIgorCisjaW5jbHVkZSAiQWJzdHJhY3REYXRhYmFzZS5oIgorI2luY2x1
ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiRGF0YWJh
c2VDYWxsYmFjay5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIK
KyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorCisjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPERhdGFiYXNlPiBET01XaW5kb3dT
UUxEYXRhYmFzZTo6b3BlbkRhdGFiYXNlKERPTVdpbmRvdyogaW1wLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5z
aWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+IGNy
ZWF0aW9uQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghaW1wLT5pc0N1
cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQ
dHI8RGF0YWJhc2U+IGRhdGFiYXNlID0gMDsKKyAgICBpZiAoaW1wLT5mcmFtZSgpICYmIEFic3Ry
YWN0RGF0YWJhc2U6OmlzQXZhaWxhYmxlKCkgJiYgaW1wLT5mcmFtZSgpLT5kb2N1bWVudCgpLT5z
ZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NEYXRhYmFzZSgpKQorICAgICAgICBkYXRhYmFzZSA9
IERhdGFiYXNlOjpvcGVuRGF0YWJhc2UoaW1wLT5mcmFtZSgpLT5kb2N1bWVudCgpLCBuYW1lLCB2
ZXJzaW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSwgY3JlYXRpb25DYWxsYmFjaywgZWMp
OworCisgICAgaWYgKCFkYXRhYmFzZSAmJiAhZWMpCisgICAgICAgIGVjID0gU0VDVVJJVFlfRVJS
OworCisgICAgcmV0dXJuIGRhdGFiYXNlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoU1FMX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9ET01XaW5kb3dTUUxEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9ET01XaW5kb3dTUUxEYXRhYmFzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2YTg2MGI2MjRmY2YxMWE0Yzhh
MjZiYWZhZTQ0ZmJkZGU2NTE1ODIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0RPTVdpbmRvd1NRTERhdGFiYXNlLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIERP
TVdpbmRvd1NRTERhdGFiYXNlX2gKKyNkZWZpbmUgRE9NV2luZG93U1FMRGF0YWJhc2VfaAorCisj
aWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5j
bHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERPTVdpbmRvdzsKK2NsYXNzIERhdGFiYXNlOworY2xh
c3MgRGF0YWJhc2VDYWxsYmFjazsKK2NsYXNzIEZyYW1lOworCitjbGFzcyBET01XaW5kb3dTUUxE
YXRhYmFzZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RGF0YWJhc2U+IG9wZW5E
YXRhYmFzZShET01XaW5kb3cqIGltcCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IHZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1h
dGVkU2l6ZSwgUGFzc1JlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiBjcmVhdGlvbkNhbGxiYWNrLCBF
eGNlcHRpb25Db2RlJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoU1FMX0RBVEFCQVNFKQorCisjZW5kaWYgLy8gRE9NV2luZG93U1FMRGF0YWJhc2Vf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9ET01XaW5kb3dTUUxEYXRhYmFz
ZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RPTVdpbmRvd1NRTERhdGFiYXNlLmlkbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42NzgwMzU4NjdkNzA0MjVjYTc4YWI3ODJmYzQxZDlkZjM1OTlmM2UxCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9ET01XaW5kb3dTUUxEYXRhYmFz
ZS5pZGwKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgd2luZG93IHsKKworICAgIGludGVyZmFjZSBb
CisgICAgICAgIENvbmRpdGlvbmFsPVNRTF9EQVRBQkFTRSwKKyAgICAgICAgU3VwcGxlbWVudGFs
PURPTVdpbmRvdworICAgIF0gRE9NV2luZG93U1FMRGF0YWJhc2UgeworICAgICAgICBbRW5hYmxl
ZEF0UnVudGltZV0gRGF0YWJhc2Ugb3BlbkRhdGFiYXNlKGluIERPTVN0cmluZyBuYW1lLCBpbiBE
T01TdHJpbmcgdmVyc2lvbiwgaW4gRE9NU3RyaW5nIGRpc3BsYXlOYW1lLCBpbiB1bnNpZ25lZCBs
b25nIGVzdGltYXRlZFNpemUsIGluIFtDYWxsYmFjaywgT3B0aW9uYWxdIERhdGFiYXNlQ2FsbGJh
Y2sgY3JlYXRpb25DYWxsYmFjaykKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwor
ICAgICAgICBhdHRyaWJ1dGUgU1FMRXhjZXB0aW9uQ29uc3RydWN0b3IgU1FMRXhjZXB0aW9uOwor
ICAgIH07CisKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121802</attachid>
            <date>2012-01-09 23:53:24 -0800</date>
            <delta_ts>2012-01-09 23:53:24 -0800</delta_ts>
            <desc>WIP patch to see if build passes</desc>
            <filename>bug-72138-20120110165322.patch</filename>
            <type>text/plain</type>
            <size>57514</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0NTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTE3NzVlNTc4NTc0OWYy
NWNiMzljMTU1ZmY3NjE5ZGNhN2I1M2M4Ni4uNmRmZWRkZjQwNWJhZmYwMTYyNjdhODU5NDdlNDA0
NThlNzJhNTcxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDEyLTAxLTA5ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBXSVA6IEltcGxlbWVu
dCB0aGUgW1N1cHBsZW1lbnRhbF0gSURMIG9uIG1ldGhvZHMgYW5kIHVzZSBpdCBpbiBTUUxEYXRh
YmFzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIx
MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJy
ZW50bHkgdGhlIFtTdXBwbGVtZW50YWxdIElETCBvbiBhdHRyaWJ1dGVzIGlzIHN1cHBvcnRlZCBi
dXQKKyAgICAgICAgdGhlIFtTdXBwbGVtZW50YWxdIElETCBvbiBtZXRob2RzIGlzIG5vdCB5ZXQg
c3VwcG9ydGVkLgorICAgICAgICBUaGlzIHBhdGNoIHN1cHBvcnRzIHRoZSBbU3VwcGxlbWVudGFs
XSBJREwgb24gbWV0aG9kcyBmb3IgSlNDLCBWOCwgT2JqQywKKyAgICAgICAgQ1BQIGFuZCBHT2Jq
ZWN0IGJpbmRpbmdzLgorCisgICAgICAgIFRvIGNvbmZpcm0gdGhlIGltcGxlbWVudGF0aW9uIGlz
IGNvcnJlY3QsIHRoaXMgcGF0Y2ggdXNlcyB0aGUgW1N1cHBsZW1lbnRhbF0gSURMCisgICAgICAg
IG9uIG1ldGhvZHMgaW4gU1FMRGF0YWJhc2UgYW5kIHNlZXMgaWYgYWxsIGJ1aWxkcyBwYXNzLgor
CisgICAgICAgIFRlc3RzOiBDb25maXJtIHRoYXQgYWxsIGJ1aWxkcyBwYXNzLgorICAgICAgICAg
ICAgICAgYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RTdXBwbGVtZW50YWwuaWRsCisgICAgICAg
ICAgICAgICBzdG9yYWdlL29wZW4tZGF0YWJhc2UtY3JlYXRpb24tY2FsbGJhY2staXNvbGF0ZWQt
d29ybGQuaHRtbAorICAgICAgICAgICAgICAgc3RvcmFnZS9vcGVuLWRhdGFiYXNlLWNyZWF0aW9u
LWNhbGxiYWNrLmh0bWwKKyAgICAgICAgICAgICAgIHN0b3JhZ2Uvb3Blbi1kYXRhYmFzZS1lbXB0
eS12ZXJzaW9uLmh0bWwKKyAgICAgICAgICAgICAgIHN0b3JhZ2Uvb3Blbi1kYXRhYmFzZS1vdmVy
LXF1b3RhLmh0bWwKKyAgICAgICAgICAgICAgIHN0b3JhZ2Uvb3Blbi1kYXRhYmFzZS1zZXQtZW1w
dHktdmVyc2lvbi5odG1sCisgICAgICAgICAgICAgICBzdG9yYWdlL29wZW4tZGF0YWJhc2Utd2hp
bGUtdHJhbnNhY3Rpb24taW4tcHJvZ3Jlc3MuaHRtbAorCisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbDogTW9kaWZpZWQgdG8gc3VwcG9ydCB0aGUgW1N1cHBs
ZW1lbnRhbF0gSURMCisgICAgICAgIGZvciBtZXRob2RzLgorCisgICAgICAgICogcGFnZS9ET01X
aW5kb3cuY3BwOiBSZW1vdmVkIFNRTERhdGFiYXNlIHJlbGF0ZWQgY29kZS4KKyAgICAgICAgKiBw
YWdlL0RPTVdpbmRvdy5oOiBEaXR0by4gTW92ZWQgaXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZyYW1l
KCkgZnJvbSBwcml2YXRlOiB0byBwdWJsaWM6CisgICAgICAgIHNvIHRoYXQgRE9NV2luZG93U1FM
RGF0YWJhc2U6Om9wZW5EYXRhYmFzZSgpIGNhbiBhY2Nlc3MgaXQuCisgICAgICAgICogcGFnZS9E
T01XaW5kb3cuaWRsOiBEaXR0by4KKworICAgICAgICAqIHN0b3JhZ2UvRE9NV2luZG93U1FMRGF0
YWJhc2UuY3BwOiBBZGRlZC4gTW92ZWQgb3BlbkRhdGFiYXNlKCkgZnJvbSBET01XaW5kb3cuY3Bw
IHRvIGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dTUUxEYXRhYmFzZTo6b3BlbkRh
dGFiYXNlKToKKyAgICAgICAgKiBzdG9yYWdlL0RPTVdpbmRvd1NRTERhdGFiYXNlLmg6IEFkZGVk
LiBNb3ZlZCBvcGVuRGF0YWJhc2UoKSBmcm9tIERPTVdpbmRvdy5oIHRvIGhlcmUuCisgICAgICAg
ICogc3RvcmFnZS9ET01XaW5kb3dTUUxEYXRhYmFzZS5pZGw6IEFkZGVkLiBVc2luZyB0aGUgW1N1
cHBsZW1lbnRhbF0gSURMLCBtb3ZlZCBvcGVuRGF0YWJhc2UoKQorICAgICAgICBhbmQgU1FMRXhj
ZXB0aW9uIGZyb20gRE9NV2luZG93LmlkbCB0byBoZXJlLgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6IEFkZGVkIERPTVdpbmRvd1NRTERhdGFiYXNlLntpZGwsaCxjcHB9IHRvIHRoZSBidWls
ZCBzY3JpcHQuCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZTogRGl0dG8uCisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMucHJpOiBEaXR0by4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0
LmFtOiBEaXR0by4KKyAgICAgICAgKiBUYXJnZXQucHJpOiBEaXR0by4KKyAgICAgICAgKiBXZWJD
b3JlLmd5cGk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
OiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERp
dHRvLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RTdXBwbGVtZW50YWwu
aWRsOiBBZGRlZCB0ZXN0IGNhc2VzIGZvciBtZXRob2RzIHdpdGggdGhlIFtTdXBwbGVtZW50YWxd
IElETC4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckNQUC5wbTog
VXBkYXRlZCB0aGUgdGVzdCByZXN1bHQuCisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9u
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtOiBE
aXR0by4KKyAgICAgICAgKEdlbmVyYXRlRnVuY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOiBEaXR0by4KKyAgICAgICAgKEdlbmVyYXRlUGFyYW1l
dGVyc0NoZWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpD
LnBtOiBEaXR0by4KKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOiBEaXR0by4KKyAgICAgICAgKEdl
bmVyYXRlRnVuY3Rpb25DYWxsU3RyaW5nKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvQ1BQL1dlYkRPTVRlc3RJbnRlcmZhY2UuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkRPTVRl
c3RJbnRlcmZhY2U6OnN1cHBsZW1lbnRhbE1ldGhvZDEpOgorICAgICAgICAoV2ViRE9NVGVzdElu
dGVyZmFjZTo6c3VwcGxlbWVudGFsTWV0aG9kMik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0NQUC9XZWJET01UZXN0SW50ZXJmYWNlLmg6IERpdHRvLgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2UuY3BwOiBEaXR0
by4KKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2Vfc3VwcGxlbWVudGFsX21ldGhv
ZDEpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9zdXBwbGVtZW50YWxfbWV0
aG9kMik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9N
VGVzdEludGVyZmFjZS5oOiBEaXR0by4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SW50ZXJmYWNlLmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJ
bnRlcmZhY2VQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1l
bnRhbE1ldGhvZDEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlUHJvdG90eXBl
RnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QyKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmg6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZhY2UuaDogRGl0dG8uCisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEludGVyZmFjZS5tbTogRGl0dG8uCisgICAg
ICAgICgtW0RPTVRlc3RJbnRlcmZhY2Ugc3VwcGxlbWVudGFsTWV0aG9kMV0pOgorICAgICAgICAo
LVtET01UZXN0SW50ZXJmYWNlIHN1cHBsZW1lbnRhbE1ldGhvZDI6b2JqQXJnOl0pOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VJbnRlcm5hbDo6c3VwcGxlbWVudGFsTWV0
aG9kMUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VJbnRlcm5hbDo6
c3VwcGxlbWVudGFsTWV0aG9kMkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3Vy
ZVY4VGVzdEludGVyZmFjZVRlbXBsYXRlKToKKwogMjAxMi0wMS0wOSAgU2hlcmlmZiBCb3QgIDx3
ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjEwNDUwNy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZWZmZTZlM2YxNTZhMzI2MGZh
OTQxMjM5NWQzYmM5ZDdmY2RhNGJiMC4uYTU1MWQ3Njc4NjhlNzI4N2I5MTJlYjgyMzQzMmVjNjVk
M2Y5YjQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEzNDgsNiArMTM0OCw3IEBAIFNFVChX
ZWJDb3JlX1NPVVJDRVMKIAogICAgIHN0b3JhZ2UvQWJzdHJhY3REYXRhYmFzZS5jcHAKICAgICBz
dG9yYWdlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmNwcAorICAgIHN0b3JhZ2UvRE9NV2luZG93U1FM
RGF0YWJhc2UuY3BwCiAgICAgc3RvcmFnZS9EYXRhYmFzZS5jcHAKICAgICBzdG9yYWdlL0RhdGFi
YXNlQXV0aG9yaXplci5jcHAKICAgICBzdG9yYWdlL0RhdGFiYXNlU3luYy5jcHAKQEAgLTE0Njcs
NiArMTQ2OCw3IEBAIEVORElGICgpCiAKIElGIChFTkFCTEVfU1FMX0RBVEFCQVNFKQogICAgIExJ
U1QoQVBQRU5EIFdlYkNvcmVfSURMX0ZJTEVTCisgICAgICAgIHN0b3JhZ2UvRE9NV2luZG93U1FM
RGF0YWJhc2UuaWRsCiAgICAgICAgIHN0b3JhZ2UvRGF0YWJhc2UuaWRsCiAgICAgICAgIHN0b3Jh
Z2UvRGF0YWJhc2VDYWxsYmFjay5pZGwKICAgICAgICAgc3RvcmFnZS9EYXRhYmFzZVN5bmMuaWRs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA4NWNiMGJmYmZjZDU0YzgyZmViNzVk
OTgzNWIzYzAyNDA1ZjEzYjRlLi5mNzVhODkwNmIzMWU5NDU5ZGE1ZThmMDJjZWE0MDQyNjRhMzll
M2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTMzNiw2ICszMzYsNyBAQCBC
SU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9wbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXku
aWRsIFwKICAgICAkKFdlYkNvcmUpL3BsdWdpbnMvRE9NUGx1Z2luLmlkbCBcCiAgICAgJChXZWJD
b3JlKS9wbHVnaW5zL0RPTVBsdWdpbkFycmF5LmlkbCBcCisgICAgJChXZWJDb3JlKS9zdG9yYWdl
L0RPTVdpbmRvd1NRTERhdGFiYXNlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9zdG9yYWdlL0RhdGFi
YXNlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9zdG9yYWdlL0RhdGFiYXNlQ2FsbGJhY2suaWRsIFwK
ICAgICAkKFdlYkNvcmUpL3N0b3JhZ2UvRGF0YWJhc2VTeW5jLmlkbCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5wcmkKaW5kZXggYjY5Yjc0NGFkZWU0OTk0YTY2NjE4ZGQyZWEyY2M1MDVlOTQwYzAw
ZS4uMDMzNWIzODc4N2Q5OTUyODgzMjNiMzU4ZmU2ZTNmMDFjMWVkY2VjZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLnByaQpAQCAtMzY1LDYgKzM2NSw3IEBAIElETF9CSU5ESU5HUyArPSBcCiAg
ICAgcGx1Z2lucy9ET01NaW1lVHlwZS5pZGwgXAogICAgIHBsdWdpbnMvRE9NUGx1Z2luQXJyYXku
aWRsIFwKICAgICBwbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuaWRsIFwKKyAgICBzdG9yYWdlL0RP
TVdpbmRvd1NRTERhdGFiYXNlLmlkbCBcCiAgICAgc3RvcmFnZS9EYXRhYmFzZS5pZGwgXAogICAg
IHN0b3JhZ2UvRGF0YWJhc2VDYWxsYmFjay5pZGwgXAogICAgIHN0b3JhZ2UvRGF0YWJhc2VTeW5j
LmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAwNjcxYmQ3OWM2MjMyOTEz
YTZmM2NiM2IyY2I4Y2Q5NmVjZTc3NzlmLi5kZTYwNGIxMTRkY2NjMzgxODJjOTBiZTFkY2RiNWRk
ZDMxMGYxMDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTM3NTIsNiArMzc1
Miw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvc3RvcmFnZS9BYnN0
cmFjdERhdGFiYXNlLmggXAogCVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvQ2hhbmdlVmVyc2lvbldy
YXBwZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0NoYW5nZVZlcnNpb25XcmFwcGVy
LmggXAorCVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRE9NV2luZG93U1FMRGF0YWJhc2UuY3BwIFwK
KwlTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RPTVdpbmRvd1NRTERhdGFiYXNlLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VBdXRob3JpemVyLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9EYXRhYmFzZUF1dGhvcml6ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9EYXRhYmFzZUNhbGxiYWNrLmggXApAQCAtNDU5OCw2ICs0NjAwLDcgQEAgd2ViY29yZV9idWls
dF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTU1FMVHJhbnNhY3Rpb25T
eW5jQ2FsbGJhY2suaAogCiBkb21fYmluZGluZ19pZGxzICs9IFwKKwkkKFdlYkNvcmUpL3N0b3Jh
Z2UvRE9NV2luZG93U1FMRGF0YWJhc2UuaWRsIFwKIAkkKFdlYkNvcmUpL3N0b3JhZ2UvRGF0YWJh
c2UuaWRsIFwKIAkkKFdlYkNvcmUpL3N0b3JhZ2UvRGF0YWJhc2VDYWxsYmFjay5pZGwgXAogCSQo
V2ViQ29yZSkvc3RvcmFnZS9EYXRhYmFzZVN5bmMuaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDI3OGFj
OWIyMWUzNGNmM2RlNzg4OWQwNTVkOWNlMmEwNGUxMjhjZTAuLjdmMzVhZDExMGZlZmM2MmY5MDZh
ZTA1ZGU5MTE0M2U5MjE5ZjlkMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5w
cmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMTI3OCw2ICsxMjc4LDcgQEAg
U09VUkNFUyArPSBcCiAgICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxlVHJhbnNmb3JtRGF0YS5jcHAg
XAogICAgIHJlbmRlcmluZy9zdHlsZS9TdHlsZVZpc3VhbERhdGEuY3BwIFwKICAgICBzdG9yYWdl
L0Fic3RyYWN0RGF0YWJhc2UuY3BwIFwKKyAgICBzdG9yYWdlL0RPTVdpbmRvd1NRTERhdGFiYXNl
LmNwcCBcCiAgICAgc3RvcmFnZS9EYXRhYmFzZS5jcHAgXAogICAgIHN0b3JhZ2UvRGF0YWJhc2VB
dXRob3JpemVyLmNwcCBcCiAgICAgc3RvcmFnZS9EYXRhYmFzZVN5bmMuY3BwIFwKQEAgLTI0NzEs
NiArMjQ3Miw3IEBAIEhFQURFUlMgKz0gXAogICAgIHJlbmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJl
bmRlcmluZ0NvbnRleHQuaCBcCiAgICAgc3RvcmFnZS9BYnN0cmFjdERhdGFiYXNlLmggXAogICAg
IHN0b3JhZ2UvQ2hhbmdlVmVyc2lvbldyYXBwZXIuaCBcCisgICAgc3RvcmFnZS9ET01XaW5kb3dT
UUxEYXRhYmFzZS5oIFwKICAgICBzdG9yYWdlL0RhdGFiYXNlQXV0aG9yaXplci5oIFwKICAgICBz
dG9yYWdlL0RhdGFiYXNlLmggXAogICAgIHN0b3JhZ2UvRGF0YWJhc2VDYWxsYmFjay5oIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQppbmRleCA2Mjk1NjA4ZmY0MDRlOTZiOWFkZGVmZDlmNTU0YzExYTc3YTBkMjBi
Li4zMzkyYzJjYjQ1ZDcwYTlmZWQxMjgwOTUxOGE5MzY2NDIwZTE2OGYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCkBAIC0xNDUyLDYgKzE0NTIsNyBAQAogICAgICAgICAgICAgJ3BsdWdpbnMvRE9NTWltZVR5
cGVBcnJheS5pZGwnLAogICAgICAgICAgICAgJ3BsdWdpbnMvRE9NUGx1Z2luLmlkbCcsCiAgICAg
ICAgICAgICAncGx1Z2lucy9ET01QbHVnaW5BcnJheS5pZGwnLAorICAgICAgICAgICAgJ3N0b3Jh
Z2UvRE9NV2luZG93U1FMRGF0YWJhc2UuaWRsJywKICAgICAgICAgICAgICdzdG9yYWdlL0RhdGFi
YXNlLmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9EYXRhYmFzZUNhbGxiYWNrLmlkbCcsCiAg
ICAgICAgICAgICAnc3RvcmFnZS9EYXRhYmFzZVN5bmMuaWRsJywKQEAgLTQ5MTIsNiArNDkxMyw4
IEBACiAgICAgICAgICAgICAnc3RvcmFnZS9BYnN0cmFjdERhdGFiYXNlLmNwcCcsCiAgICAgICAg
ICAgICAnc3RvcmFnZS9DaGFuZ2VWZXJzaW9uV3JhcHBlci5jcHAnLAogICAgICAgICAgICAgJ3N0
b3JhZ2UvQ2hhbmdlVmVyc2lvbldyYXBwZXIuaCcsCisgICAgICAgICAgICAnc3RvcmFnZS9ET01X
aW5kb3dTUUxEYXRhYmFzZS5jcHAnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvRE9NV2luZG93U1FM
RGF0YWJhc2UuaCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9EYXRhYmFzZS5jcHAnLAogICAgICAg
ICAgICAgJ3N0b3JhZ2UvRGF0YWJhc2VBdXRob3JpemVyLmNwcCcsCiAgICAgICAgICAgICAnc3Rv
cmFnZS9EYXRhYmFzZUF1dGhvcml6ZXIuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDE1OTI4YjkxMmQwODVmZTY1NDEwYTE5ZjY0MTViZmU3
NTFiZmJkZWYuLjA3YjIzOGE5ZTE2YjIyZjE2MzllMjBiZTBkNWZhOTNiY2UxNDBjYjQgMTAwNzU1
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC03MDUyNiw2
ICs3MDUyNiwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxzdG9yYWdlXERPTVdpbmRvd1NRTERhdGFiYXNlLmNwcCIKKwkJCQk+CisJCQk8L0Zp
bGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3RvcmFnZVxET01XaW5kb3dTUUxE
YXRhYmFzZS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRo
PSIuLlxzdG9yYWdlXERhdGFiYXNlLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWFjNjA5
OWNmNzI4MDIxZWZmOWJmMzNkOTlmZDI2MDg1MGJhYjhmZC4uMTRiMWViMjUxYjUyOWM5NmJmZDVk
NmM2NzI5M2QxMDhiYzM4NWNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDA0Niw2ICs0MDQ2LDggQEAKIAkJQThFQTgwMEMw
QTE5NTE2RTAwQThFRjVGIC8qIFN0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4RUE4MDA0MEExOTUxNkUwMEE4RUY1RiAvKiBTdHlsZVNo
ZWV0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QThFQTgwMEQwQTE5NTE2RTAwQThFRjVGIC8qIFN0eWxlU2hlZXQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThFQTgwMDUwQTE5NTE2RTAwQThFRjVG
IC8qIFN0eWxlU2hlZXQuY3BwICovOyB9OwogCQlBOEVBODAwRTBBMTk1MTZFMDBBOEVGNUYgLyog
TWVkaWFMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBOEVBODAwNjBBMTk1MTZFMDBBOEVGNUYgLyogTWVkaWFMaXN0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQThGNDU3QTAxNEJDMUE4ODAwMENF
QTU5IC8qIERPTVdpbmRvd1NRTERhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4RjQ1NzlEMTRCQzEzRUMwMDBDRUE1OSAvKiBET01XaW5k
b3dTUUxEYXRhYmFzZS5jcHAgKi87IH07CisJCUE4RjQ1N0ExMTRCQzFBOTQwMDBDRUE1OSAvKiBE
T01XaW5kb3dTUUxEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQThGNDU3OUUxNEJDMTNFQzAwMENFQTU5IC8qIERPTVdpbmRvd1NRTERhdGFi
YXNlLmggKi87IH07CiAJCUE4RjQ2QTg0MENCMjBBOUQwMDNBOTY3MCAvKiBET01TVkdDbGlwUGF0
aEVsZW1lbnQuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg1MDM2MTJDMEFDRTAwN0IwMDFGM0Q5RSAvKiBET01TVkdDbGlwUGF0
aEVsZW1lbnQuaCAqLzsgfTsKIAkJQThGNDZBODgwQ0IyMEE5RDAwM0E5NjcwIC8qIERPTVNWR0dy
YWRpZW50RWxlbWVudC5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODVDOUEyRUMwQUQ3RTkwMzAwRkJGRjFFIC8qIERPTVNWR0dy
YWRpZW50RWxlbWVudC5oICovOyB9OwogCQlBOEY0NkE4OTBDQjIwQTlEMDAzQTk2NzAgLyogRE9N
U1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUwMzYxMjgwQUNFMDA3QjAwMUYzRDlFIC8q
IERPTVNWR0FuaW1hdGVDb2xvckVsZW1lbnQuaCAqLzsgfTsKQEAgLTExMzE3LDYgKzExMzE5LDkg
QEAKIAkJQThFQTgwMDUwQTE5NTE2RTAwQThFRjVGIC8qIFN0eWxlU2hlZXQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0eWxlU2hlZXQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBOEVBODAwNjBBMTk1MTZFMDBBOEVGNUYgLyogTWVkaWFMaXN0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUxpc3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThGNDU3OEYxNEIyQjAwNDAwMENFQTU5IC8qIHJlc29s
dmUtc3VwcGxlbWVudGFsLnBsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgbmFtZSA9ICJy
ZXNvbHZlLXN1cHBsZW1lbnRhbC5wbCI7IHBhdGggPSAic2NyaXB0cy9yZXNvbHZlLXN1cHBsZW1l
bnRhbC5wbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4RjQ1NzlEMTRCQzEzRUMw
MDBDRUE1OSAvKiBET01XaW5kb3dTUUxEYXRhYmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBET01XaW5kb3dTUUxEYXRhYmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUE4RjQ1NzlFMTRCQzEzRUMwMDBDRUE1OSAvKiBET01XaW5kb3dTUUxE
YXRhYmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01XaW5kb3dTUUxE
YXRhYmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBOEY0NTc5RjE0QkMxM0VD
MDAwQ0VBNTkgLyogRE9NV2luZG93U1FMRGF0YWJhc2UuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IERPTVdpbmRvd1NRTERhdGFiYXNlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQThGQTZFNUIwRTRDRkRFRDAwRDVDRjQ5IC8qIFBhdHRlcm4uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUGF0dGVybi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBOEZBNkU1QzBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXR0ZXJuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTlDNkU0RTEwRDc0NUUwNTAwNjQ0MkU5IC8qIERPTU1pbWVUeXBlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01NaW1lVHlwZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDM4OCw2ICsxNDM5Myw5IEBACiAJCTFBRTgyRUM5
MENBQUUxNzcwMDIyMzdBRSAvKiBzdG9yYWdlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQlBOEY0NTc5RDE0QkMxM0VDMDAwQ0VBNTkgLyogRE9NV2luZG93
U1FMRGF0YWJhc2UuY3BwICovLAorCQkJCUE4RjQ1NzlFMTRCQzEzRUMwMDBDRUE1OSAvKiBET01X
aW5kb3dTUUxEYXRhYmFzZS5oICovLAorCQkJCUE4RjQ1NzlGMTRCQzEzRUMwMDBDRUE1OSAvKiBE
T01XaW5kb3dTUUxEYXRhYmFzZS5pZGwgKi8sCiAJCQkJQjVCNURDNjcxMTlCQjNENTAwMkE4Nzkw
IC8qIEFic3RyYWN0RGF0YWJhc2UuY3BwICovLAogCQkJCUI1QjVEQzY4MTE5QkIzRDUwMDJBODc5
MCAvKiBBYnN0cmFjdERhdGFiYXNlLmggKi8sCiAJCQkJNTE0MTg1RUQwQ0Q2NUYwNDAwNzYzQzk5
IC8qIENoYW5nZVZlcnNpb25XcmFwcGVyLmNwcCAqLywKQEAgLTI0ODk3LDYgKzI0OTA1LDcgQEAK
IAkJCQlGRDUzNzM1MzEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTk3NEE4NjIzMTRCN0FEQkIwMDNGREM3NiAvKiBGcmFtZURlc3RydWN0aW9uT2JzZXJ2
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3RDJBRDA0MTRCODIzQTYwMDkzREYzMiAvKiBET01X
aW5kb3dQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQThGNDU3QTExNEJDMUE5NDAwMENF
QTU5IC8qIERPTVdpbmRvd1NRTERhdGFiYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI3ODAzLDYg
KzI3ODEyLDcgQEAKIAkJCQlGRDUzNzM1MjEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTc0QTg2MjIxNEI3QURCQjAwM0ZEQzc2IC8qIEZyYW1lRGVz
dHJ1Y3Rpb25PYnNlcnZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0QyQUQwMzE0QjgyM0E2
MDA5M0RGMzIgLyogRE9NV2luZG93UHJvcGVydHkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQThG
NDU3QTAxNEJDMUE4ODAwMENFQTU5IC8qIERPTVdpbmRvd1NRTERhdGFiYXNlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yQ1BQLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yQ1BQLnBtCmluZGV4IGU4NTlhNTY2ZTg4MWIwNzE3MDVkOTk2NGVkMDVhZGFjOWFiZTE5
NDkuLmQzMTQ1OTI5ZjA3MGIyZDI3MWE2OTE0NGRlYjYxZDgwZmYxMzhjZDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckNQUC5wbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JDUFAucG0KQEAg
LTg0OCw3ICs4NDgsMTYgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICAg
ICAgbXkgQGZ1bmN0aW9uQ29udGVudCA9ICgpOwogICAgICAgICAgICAgcHVzaChAcGFyYW1ldGVy
TmFtZXMsICJlYyIpIGlmICRyYWlzZXNFeGNlcHRpb25zOwotICAgICAgICAgICAgbXkgJGNvbnRl
bnQgPSAiaW1wbCgpLT4iIC4gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGZ1bmN0aW9uTmFt
ZSkgLiAiKCIgLiBqb2luKCIsICIsIEBwYXJhbWV0ZXJOYW1lcykgLiAiKSI7IAorCisgICAgICAg
ICAgICBteSAkY29udGVudDsKKyAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSkgeworICAgICAgICAgICAgICAg
IG15ICRpbXBsZW1lbnRlZEJ5ID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJJbXBsZW1lbnRlZEJ5In07CisgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3si
JHtpbXBsZW1lbnRlZEJ5fS5oIn0gPSAxOworICAgICAgICAgICAgICAgIHVuc2hpZnQoQHBhcmFt
ZXRlck5hbWVzLCAiaW1wbCgpIik7CisgICAgICAgICAgICAgICAgJGNvbnRlbnQgPSAiJHtpbXBs
ZW1lbnRlZEJ5fTo6IiAuICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRmdW5jdGlvbk5hbWUp
IC4gIigiIC4gam9pbigiLCAiLCBAcGFyYW1ldGVyTmFtZXMpIC4gIikiOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAkY29udGVudCA9ICJpbXBsKCktPiIgLiAkY29kZUdl
bmVyYXRvci0+V0tfbGNmaXJzdCgkZnVuY3Rpb25OYW1lKSAuICIoIiAuIGpvaW4oIiwgIiwgQHBh
cmFtZXRlck5hbWVzKSAuICIpIjsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCRy
ZXR1cm5UeXBlIGVxICJ2b2lkIikgewogICAgICAgICAgICAgICAgICMgU3BlY2lhbCBjYXNlICd2
b2lkJyByZXR1cm4gdHlwZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtCmluZGV4IGE2ODVmMWYxNzliMzFlOWY2NmQ4
ZTUxMTE4YWY2OGQ0YzQyZGVkMTIuLjcwMmU4ZTZjODRiMzkyYjcyMDg3NDZlYmE3ZWE5NmM2ZjQ3
ZjhiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckdPYmplY3QucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yR09iamVjdC5wbQpAQCAtOTM3LDcgKzkzNywxNSBAQCBFT0YKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50SGVhZCA9ICIke2Fzc2lnbn1jb252ZXJ0
VG9VVEY4U3RyaW5nKCR7ZnVuY3Rpb25OYW1lfSgiIC4gam9pbigiLCAiLCBAYXJndW1lbnRzKSAu
ICIpKTtcbiI7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAkZ2V0dGVyQ29udGVudEhl
YWQgPSAiJHthc3NpZ259Y29udmVydFRvVVRGOFN0cmluZyhpdGVtLT4ke2Z1bmN0aW9uU2lnTmFt
ZX0oIiAuIGpvaW4oIiwgIiwgQGNhbGxJbXBsUGFyYW1zKSAuICIpKTtcbiI7CisgICAgICAgICAg
ICBteSBAYXJndW1lbnRzID0gQGNhbGxJbXBsUGFyYW1zOworICAgICAgICAgICAgaWYgKCRmdW5j
dGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9KSB7
CisgICAgICAgICAgICAgICAgbXkgJGltcGxlbWVudGVkQnkgPSAkZnVuY3Rpb24tPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifTsKKyAgICAgICAgICAgICAg
ICAkaW1wbEluY2x1ZGVzeyIke2ltcGxlbWVudGVkQnl9LmgifSA9IDE7CisgICAgICAgICAgICAg
ICAgdW5zaGlmdChAYXJndW1lbnRzLCAiaXRlbSIpOworICAgICAgICAgICAgICAgICRnZXR0ZXJD
b250ZW50SGVhZCA9ICIke2Fzc2lnbn1jb252ZXJ0VG9VVEY4U3RyaW5nKCR7aW1wbGVtZW50ZWRC
eX06OiR7ZnVuY3Rpb25TaWdOYW1lfSgiIC4gam9pbigiLCAiLCBAYXJndW1lbnRzKSAuICIpKTtc
biI7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50
SGVhZCA9ICIke2Fzc2lnbn1jb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPiR7ZnVuY3Rpb25TaWdO
YW1lfSgiIC4gam9pbigiLCAiLCBAYXJndW1lbnRzKSAuICIpKTtcbiI7CisgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICAgICAgcHVzaChAY0JvZHksICIgICAgJHtnZXR0ZXJDb250ZW50SGVh
ZH0iKTsKICAgICB9IGVsc2UgewpAQCAtOTY4LDcgKzk3NiwxNSBAQCBFT0YKICAgICAgICAgICAg
ICAgICAkY29udGVudEhlYWQgPSAiJHthc3NpZ259JHthc3NpZ25QcmV9JHtmdW5jdGlvbk5hbWV9
KCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIiR7YXNzaWduUG9zdH0pO1xuIjsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICRjb250ZW50SGVhZCA9ICIk
e2Fzc2lnbn0ke2Fzc2lnblByZX1pdGVtLT4ke2Z1bmN0aW9uU2lnTmFtZX0oIiAuIGpvaW4oIiwg
IiwgQGNhbGxJbXBsUGFyYW1zKSAuICIke2Fzc2lnblBvc3R9KTtcbiI7CisgICAgICAgICAgICBt
eSBAYXJndW1lbnRzID0gQGNhbGxJbXBsUGFyYW1zOworICAgICAgICAgICAgaWYgKCRmdW5jdGlv
bi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9KSB7Cisg
ICAgICAgICAgICAgICAgbXkgJGltcGxlbWVudGVkQnkgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifTsKKyAgICAgICAgICAgICAgICAk
aW1wbEluY2x1ZGVzeyIke2ltcGxlbWVudGVkQnl9LmgifSA9IDE7CisgICAgICAgICAgICAgICAg
dW5zaGlmdChAYXJndW1lbnRzLCAiaXRlbSIpOworICAgICAgICAgICAgICAgICRjb250ZW50SGVh
ZCA9ICIke2Fzc2lnbn0ke2Fzc2lnblByZX0ke2ltcGxlbWVudGVkQnl9Ojoke2Z1bmN0aW9uU2ln
TmFtZX0oIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiJHthc3NpZ25Qb3N0fSk7XG4iOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAkY29udGVudEhlYWQgPSAiJHth
c3NpZ259JHthc3NpZ25QcmV9aXRlbS0+JHtmdW5jdGlvblNpZ05hbWV9KCIgLiBqb2luKCIsICIs
IEBhcmd1bWVudHMpIC4gIiR7YXNzaWduUG9zdH0pO1xuIjsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgICAgICBwdXNoKEBjQm9keSwgIiAgICAke2NvbnRlbnRIZWFkfSIpOwogICAgICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0KaW5kZXggM2NjNjgyZjdkMWVhNjI4YTk1N2EwODJjYjkwNmE2NjJkZmU4M2JkZS4uMTAx
MDZlY2JlNjg2OTk2MjRjNjgyY2I1MTkxYTM5ZTg0N2ViYTA5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTI0MjIsMTYg
KzI0MjIsMjAgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgbXkgJGFyZ3NJbmRl
eCA9IDA7CiAgICAgbXkgJGhhc09wdGlvbmFsQXJndW1lbnRzID0gMDsKIAotICAgIG15ICRmdW5j
dGlvbkJhc2UgPSAiIjsKKyAgICBteSBAYXJndW1lbnRzOworICAgIG15ICRmdW5jdGlvbk5hbWU7
CiAgICAgaWYgKCRmdW5jdGlvbi0+aXNTdGF0aWMpIHsKLSAgICAgICAgJGZ1bmN0aW9uQmFzZSA9
ICIke2ltcGxDbGFzc05hbWV9OjoiOworICAgICAgICAkZnVuY3Rpb25OYW1lID0gIiR7aW1wbENs
YXNzTmFtZX06OiR7ZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWV9IjsKKyAgICB9IGVsc2lmICgk
ZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnki
fSkgeworICAgICAgICBteSAkaW1wbGVtZW50ZWRCeSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9OworICAgICAgICBBZGRUb0ltcGxJ
bmNsdWRlcygiJHtpbXBsZW1lbnRlZEJ5fS5oIik7CisgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50
cywgImltcGwiKTsKKyAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICIke2ltcGxlbWVudGVkQnl9Ojok
e2Z1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lfSI7CiAgICAgfSBlbHNpZiAoJHN2Z1Byb3BlcnR5
T3JMaXN0UHJvcGVydHlUeXBlIGFuZCAhJHN2Z0xpc3RQcm9wZXJ0eVR5cGUpIHsKLSAgICAgICAg
JGZ1bmN0aW9uQmFzZSA9ICJwb2RJbXBsLiI7CisgICAgICAgICRmdW5jdGlvbk5hbWUgPSAicG9k
SW1wbC4ke2Z1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lfSI7CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgJGZ1bmN0aW9uQmFzZSA9ICJpbXBsLT4iOworICAgICAgICAkZnVuY3Rpb25OYW1lID0gImlt
cGwtPiR7ZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWV9IjsKICAgICB9Ci0gICAgbXkgJGZ1bmN0
aW9uTmFtZSA9ICIkZnVuY3Rpb25CYXNlJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lIjsKLSAg
ICBteSBAYXJndW1lbnRzOwogCiAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQXJndW1lbnRIYW5kbGluZyJ9IGFuZCAhJGZ1bmN0aW9uLT5p
c1N0YXRpYykgewogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUmVmUHRyPFNjcmlw
dEFyZ3VtZW50cz4gc2NyaXB0QXJndW1lbnRzKGNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhleGVjLCAk
bnVtUGFyYW1ldGVycykpO1xuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQppbmRleCAzNGFiODg3Y2ZkNDk0NGI1MzFkZWRh
NTU0MjAyMDVlYTA2MmUzODg2Li45MzczOWRhYTkwMWRmODA1NzUxNDdlZmNiOGZkNmQ5ZjdiMjgz
ZmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JPYmpDLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvck9iakMucG0KQEAgLTE2MDcsOSArMTYwNywxMyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbgogICAgICAgICAgICAgICAgIHNwbGljZShAcGFyYW1ldGVyTmFtZXMsICRjdXJyZW50
UGFyYW1ldGVyLCAxLCAiJHtwYXJhbU5hbWV9Q29yZS0+cHJvcGVydHlSZWZlcmVuY2UoKSIpOwog
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBteSAkY29udGVudCA9ICRjb2RlR2VuZXJhdG9y
LT5XS19sY2ZpcnN0KCRmdW5jdGlvbk5hbWUpIC4gIigiIC4gam9pbigiLCAiLCBAcGFyYW1ldGVy
TmFtZXMpIC4gIikiOyAKLQotICAgICAgICAgICAgaWYgKCRzdmdQcm9wZXJ0eVR5cGUpIHsKKyAg
ICAgICAgICAgIG15ICRjb250ZW50OworICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9KSB7CisgICAgICAgICAg
ICAgICAgbXkgJGltcGxlbWVudGVkQnkgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifTsKKyAgICAgICAgICAgICAgICAkaW1wbEluY2x1
ZGVzeyIke2ltcGxlbWVudGVkQnl9LmgifSA9IDE7CisgICAgICAgICAgICAgICAgdW5zaGlmdChA
cGFyYW1ldGVyTmFtZXMsICRjYWxsZXIpOworICAgICAgICAgICAgICAgICRjb250ZW50ID0gIiR7
aW1wbGVtZW50ZWRCeX06OiIgLiAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkZnVuY3Rpb25O
YW1lKSAuICIoIiAuIGpvaW4oIiwgIiwgQHBhcmFtZXRlck5hbWVzKSAuICIpIjsKKyAgICAgICAg
ICAgIH0gZWxzaWYgKCRzdmdQcm9wZXJ0eVR5cGUpIHsKICAgICAgICAgICAgICAgICAkaW1wbElu
Y2x1ZGVzeyJFeGNlcHRpb25Db2RlLmgifSA9IDE7CiAgICAgICAgICAgICAgICAgcHVzaChAZnVu
Y3Rpb25Db250ZW50LCAiICAgIGlmIChJTVBMLT5yb2xlKCkgPT0gV2ViQ29yZTo6QW5pbVZhbFJv
bGUpIHtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9uQ29udGVudCwgIiAgICAg
ICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKFdlYkNvcmU6Ok5PX01PRElGSUNBVElPTl9BTExP
V0VEX0VSUik7XG4iKTsKQEAgLTE2MjAsOSArMTYyNCw5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9u
Q29udGVudCwgIiAgICB9XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBmdW5jdGlvbkNvbnRl
bnQsICIgICAgJHN2Z1Byb3BlcnR5VHlwZSYgcG9kSW1wbCA9IElNUEwtPnByb3BlcnR5UmVmZXJl
bmNlKCk7XG4iKTsKLSAgICAgICAgICAgICAgICAkY29udGVudCA9ICJwb2RJbXBsLiRjb250ZW50
IjsgCisgICAgICAgICAgICAgICAgJGNvbnRlbnQgPSAicG9kSW1wbC4iIC4gJGNvZGVHZW5lcmF0
b3ItPldLX2xjZmlyc3QoJGZ1bmN0aW9uTmFtZSkgLiAiKCIgLiBqb2luKCIsICIsIEBwYXJhbWV0
ZXJOYW1lcykgLiAiKSI7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICRj
b250ZW50ID0gJGNhbGxlciAuICItPiRjb250ZW50IjsKKyAgICAgICAgICAgICAgICAkY29udGVu
dCA9ICIkY2FsbGVyLT4iIC4gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGZ1bmN0aW9uTmFt
ZSkgLiAiKCIgLiBqb2luKCIsICIsIEBwYXJhbWV0ZXJOYW1lcykgLiAiKSI7CiAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgIGlmICgkcmV0dXJuVHlwZSBlcSAidm9pZCIpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXgg
ZWE5NTU2NjA5NWQ3YTU2MzBkMWNiMzc3ZmRmZWE3MTMzOTkyMjNkNy4uYzAxNmNmOWEwZGFhYzlh
MGMyYTBmNjA0ZGJlZDk2Njg5NzBhZDMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTMxODIsMTAgKzMxODIsMjIgQEAg
c3ViIEdlbmVyYXRlRnVuY3Rpb25DYWxsU3RyaW5nKCkKICAgICAgICAgJG5hbWUgPSAkZnVuY3Rp
b24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGF0aW9uRnVuY3Rp
b24ifTsKICAgICB9CiAKLSAgICBteSBAYXJndW1lbnRzOwogICAgIG15ICRpbmRleCA9IDA7CiAg
ICAgbXkgJGhhc1NjcmlwdFN0YXRlID0gMDsKIAorICAgIG15IEBhcmd1bWVudHM7CisgICAgbXkg
JGZ1bmN0aW9uTmFtZTsKKyAgICBpZiAoJGZ1bmN0aW9uLT5pc1N0YXRpYykgeworICAgICAgICAk
ZnVuY3Rpb25OYW1lID0gIiR7aW1wbENsYXNzTmFtZX06OiR7bmFtZX0iOworICAgIH0gZWxzaWYg
KCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRC
eSJ9KSB7CisgICAgICAgIG15ICRpbXBsZW1lbnRlZEJ5ID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In07CisgICAgICAgIEFkZFRvSW1w
bEluY2x1ZGVzKCIke2ltcGxlbWVudGVkQnl9LmgiKTsKKyAgICAgICAgdW5zaGlmdChAYXJndW1l
bnRzLCAiaW1wIik7CisgICAgICAgICRmdW5jdGlvbk5hbWUgPSAiJHtpbXBsZW1lbnRlZEJ5fTo6
JHtuYW1lfSI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJpbXAtPiR7
bmFtZX0iOworICAgIH0KKwogICAgIG15ICRjYWxsV2l0aCA9ICRmdW5jdGlvbi0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifTsKICAgICBpZiAoJGNhbGxXaXRoKSB7
CiAgICAgICAgIG15ICRjYWxsV2l0aEFyZyA9ICJDT01QSUxFX0FTU0VSVChmYWxzZSkiOwpAQCAt
MzIzNSw3ICszMjQ3LDcgQEAgc3ViIEdlbmVyYXRlRnVuY3Rpb25DYWxsU3RyaW5nKCkKICAgICAg
ICAgcHVzaCBAYXJndW1lbnRzLCAiZWMiOwogICAgIH0KIAotICAgIG15ICRmdW5jdGlvblN0cmlu
ZyA9ICgkZnVuY3Rpb24tPmlzU3RhdGljID8gIiR7aW1wbENsYXNzTmFtZX06OiR7bmFtZX0oIiA6
ICJpbXAtPiR7bmFtZX0oIikgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiOworICAgIG15
ICRmdW5jdGlvblN0cmluZyA9ICIkZnVuY3Rpb25OYW1lKCIgLiBqb2luKCIsICIsIEBhcmd1bWVu
dHMpIC4gIikiOwogCiAgICAgbXkgJHJldHVybiA9ICJyZXN1bHQiOwogICAgIG15ICRyZXR1cm5J
c1JlZiA9IElzUmVmUHRyVHlwZSgkcmV0dXJuVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbAppbmRleCA0YThhOTU1ODRl
NWEwYTcxZGViNTBkYzI2MjMyNzZhZTcxZmIxYzcwLi5jYjUxZjJjNmQ3NTE3Mjg5ZTQ1MDg0MTk2
MDk5ZDQ1ZDJjZGQ3MjhmIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwKQEAgLTE1OSw2ICsxNTksMTggQEAgZm9yZWFjaCBt
eSAkaWRsRmlsZSAoQHN1cHBsZW1lbnRlZElkbEZpbGVzKSB7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIHB1c2goQHskdGFyZ2V0RGF0YU5vZGUtPmF0dHJpYnV0ZXN9LCAkYXR0
cmlidXRlKTsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rp
b24gKEB7JGRhdGFOb2RlLT5mdW5jdGlvbnN9KSB7CisgICAgICAgICAgICAgICAgIyBSZWNvcmQg
dGhhdCB0aGlzIGF0dHJpYnV0ZSBpcyBpbXBsZW1lbnRlZCBieSAkaW50ZXJmYWNlTmFtZS4KKyAg
ICAgICAgICAgICAgICAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkltcGxlbWVudGVkQnkifSA9ICRpbnRlcmZhY2VOYW1lOworCisgICAgICAgICAgICAgICAgIyBB
ZGQgaW50ZXJmYWNlLXdpZGUgZXh0ZW5kZWQgYXR0cmlidXRlcyB0byBlYWNoIGF0dHJpYnV0ZS4K
KyAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICRleHRlbmRlZEF0dHJpYnV0ZU5hbWUgKGtleXMg
JXskZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlc30pIHsKKyAgICAgICAgICAgICAgICAgICAg
bmV4dCBpZiAoJGV4dGVuZGVkQXR0cmlidXRlTmFtZSBlcSAiU3VwcGxlbWVudGFsIik7CisgICAg
ICAgICAgICAgICAgICAgICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnskZXh0ZW5kZWRBdHRyaWJ1dGVOYW1lfSA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57JGV4dGVuZGVkQXR0cmlidXRlTmFtZX07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIHB1c2goQHskdGFyZ2V0RGF0YU5vZGUtPmZ1bmN0aW9uc30sICRmdW5jdGlvbik7Cisg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RJbnRlcmZhY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0SW50ZXJm
YWNlLmNwcAppbmRleCBkNjEyMTIxMDk3ZTRjM2I1OGE3OGUyMDRhMjQ4Nzc0ZWNhNzE1ZWRjLi4y
NDZhZTM2MmMyNzU0MjZkOTFkNWZlMWFiMWFjZjYwMWEwZmIwZjI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RJbnRlcmZhY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9N
VGVzdEludGVyZmFjZS5jcHAKQEAgLTI2LDggKzI2LDEwIEBACiAKICNpbmNsdWRlICJLVVJMLmgi
CiAjaW5jbHVkZSAiVGVzdEludGVyZmFjZS5oIgorI2luY2x1ZGUgIlRlc3RPYmouaCIKICNpbmNs
dWRlICJUZXN0U3VwcGxlbWVudGFsLmgiCiAjaW5jbHVkZSAiV2ViRE9NU3RyaW5nLmgiCisjaW5j
bHVkZSAiV2ViRE9NVGVzdE9iai5oIgogI2luY2x1ZGUgIldlYkV4Y2VwdGlvbkhhbmRsZXIuaCIK
ICNpbmNsdWRlICJ3dGYvdGV4dC9BdG9taWNTdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvR2V0UHRy
Lmg+CkBAIC0xMDYsNiArMTA4LDMzIEBAIHZvaWQgV2ViRE9NVGVzdEludGVyZmFjZTo6c2V0U3Ry
Mihjb25zdCBXZWJET01TdHJpbmcmIG5ld1N0cjIpCiB9CiAKICNlbmRpZgorCisjaWYgRU5BQkxF
KENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCit2b2lkIFdlYkRPTVRlc3RJbnRl
cmZhY2U6OnN1cHBsZW1lbnRhbE1ldGhvZDEoKQoreworICAgIGlmICghaW1wbCgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxNZXRob2QxKGlt
cGwoKSk7Cit9CisKKyNlbmRpZgorCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJM
RShDb25kaXRpb24xMikKK1dlYkRPTVRlc3RPYmogV2ViRE9NVGVzdEludGVyZmFjZTo6c3VwcGxl
bWVudGFsTWV0aG9kMihjb25zdCBXZWJET01TdHJpbmcmIHN0ckFyZywgY29uc3QgV2ViRE9NVGVz
dE9iaiYgb2JqQXJnKQoreworICAgIGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm4gV2ViRE9N
VGVzdE9iaigpOworCisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgV2Vi
RE9NVGVzdE9iaiByZXN1bHQgPSB0b1dlYktpdChXVEY6OmdldFB0cihUZXN0U3VwcGxlbWVudGFs
OjpzdXBwbGVtZW50YWxNZXRob2QyKGltcGwoKSwgc3RyQXJnLCB0b1dlYkNvcmUob2JqQXJnKSwg
ZWMpKSk7CisgICAgd2ViRE9NUmFpc2VFcnJvcihzdGF0aWNfY2FzdDxXZWJET01FeGNlcHRpb25D
b2RlPihlYykpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNlbmRpZgorCiBXZWJDb3JlOjpU
ZXN0SW50ZXJmYWNlKiB0b1dlYkNvcmUoY29uc3QgV2ViRE9NVGVzdEludGVyZmFjZSYgd3JhcHBl
cikKIHsKICAgICByZXR1cm4gd3JhcHBlci5pbXBsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RJbnRlcmZhY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEludGVyZmFj
ZS5oCmluZGV4IDVhYTAzYzc5NTA5OGMyNzRhZjY3MGMzNDcwNTE4NzgyYmIxNmUxNmMuLjgzNDk3
NjAwOTZlZDRjYzcxZWM1ZDczYzdjMjk5MmU0MzgxNzQzMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEludGVyZmFjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdElu
dGVyZmFjZS5oCkBAIC0zMiw2ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFRl
c3RJbnRlcmZhY2U7CiB9OwogCitjbGFzcyBXZWJET01UZXN0T2JqOwogCiBjbGFzcyBXZWJET01U
ZXN0SW50ZXJmYWNlIDogcHVibGljIFdlYkRPTU9iamVjdCB7CiBwdWJsaWM6CkBAIC00OSw2ICs1
MCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFN0cjIoY29uc3QgV2ViRE9NU3RyaW5nJik7CiAj
ZW5kaWYKIAorICAgIHZvaWQgc3VwcGxlbWVudGFsTWV0aG9kMSgpOworICAgIFdlYkRPTVRlc3RP
Ymogc3VwcGxlbWVudGFsTWV0aG9kMihjb25zdCBXZWJET01TdHJpbmcmIHN0ckFyZywgY29uc3Qg
V2ViRE9NVGVzdE9iaiYgb2JqQXJnKTsKKwogICAgIFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UqIGlt
cGwoKSBjb25zdDsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0
SW50ZXJmYWNlLmNwcAppbmRleCA1ZjhmYWZlZDMxNjI1YmQyYWMwZGE2ZDFhNDZmZmQ2Mjg5ZjQ3
MWMyLi42ZDVhZDZkNGNiY2MzOWNiN2I2NWMyNGEzNTliYjRmYzc5OWQwMTViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01U
ZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvR09iamVjdC9XZWJLaXRET01UZXN0SW50ZXJmYWNlLmNwcApAQCAtMjksMTEgKzI5LDE0IEBA
CiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNT
dGF0ZS5oIgogI2luY2x1ZGUgIlRlc3RJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJUZXN0T2JqLmgi
CiAjaW5jbHVkZSAiVGVzdFN1cHBsZW1lbnRhbC5oIgogI2luY2x1ZGUgIldlYktpdERPTUJpbmRp
bmcuaCIKICNpbmNsdWRlICJnb2JqZWN0L0NvbnZlcnRUb1VURjhTdHJpbmcuaCIKICNpbmNsdWRl
ICJ3ZWJraXQvV2ViS2l0RE9NVGVzdEludGVyZmFjZS5oIgogI2luY2x1ZGUgIndlYmtpdC9XZWJL
aXRET01UZXN0SW50ZXJmYWNlUHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01U
ZXN0T2JqLmgiCisjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTVRlc3RPYmpQcml2YXRlLmgiCiAj
aW5jbHVkZSAid2Via2l0ZGVmaW5lcy5oIgogI2luY2x1ZGUgIndlYmtpdGdsb2JhbHNwcml2YXRl
LmgiCiAjaW5jbHVkZSAid2Via2l0bWFyc2hhbC5oIgpAQCAtNTIsNiArNTUsNDUgQEAgV2ViS2l0
RE9NVGVzdEludGVyZmFjZSoga2l0KFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UqIG9iaikKICAgICAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdCAvLwogCit2b2lkCit3ZWJraXRfZG9tX3Rlc3RfaW50ZXJm
YWNlX3N1cHBsZW1lbnRhbF9tZXRob2QxKFdlYktpdERPTVRlc3RJbnRlcmZhY2UqIHNlbGYpCit7
CisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisgICAgZ19y
ZXR1cm5faWZfZmFpbChzZWxmKTsKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7CisgICAgV2ViQ29yZTo6VGVzdEludGVyZmFjZSAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUo
c2VsZik7CisgICAgVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsTWV0aG9kMShpdGVtKTsK
KyNlbmRpZiAvKiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikgKi8K
K30KKworV2ViS2l0RE9NVGVzdE9iaioKK3dlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2Vfc3VwcGxl
bWVudGFsX21ldGhvZDIoV2ViS2l0RE9NVGVzdEludGVyZmFjZSogc2VsZiwgY29uc3QgZ2NoYXIq
IHN0cl9hcmcsIFdlYktpdERPTVRlc3RPYmoqIG9ial9hcmcsIEdFcnJvciAqKmVycm9yKQorewor
I2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKKyAgICBXZWJDb3JlOjpUZXN0SW50ZXJmYWNlICogaXRlbSA9IFdlYktpdDo6
Y29yZShzZWxmKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChzdHJfYXJnLCAwKTsKKyAgICBn
X3JldHVybl92YWxfaWZfZmFpbChvYmpfYXJnLCAwKTsKKyAgICBXVEY6OlN0cmluZyBjb252ZXJ0
ZWRfc3RyX2FyZyA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChzdHJfYXJnKTsKKyAgICBXZWJDb3Jl
OjpUZXN0T2JqICogY29udmVydGVkX29ial9hcmcgPSBOVUxMOworICAgIGlmIChvYmpfYXJnICE9
IE5VTEwpIHsKKyAgICAgICAgY29udmVydGVkX29ial9hcmcgPSBXZWJLaXQ6OmNvcmUob2JqX2Fy
Zyk7CisgICAgICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvbnZlcnRlZF9vYmpfYXJnLCAwKTsK
KyAgICB9CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgUGFzc1JlZlB0
cjxXZWJDb3JlOjpUZXN0T2JqPiBnX3JlcyA9IFdURjo6Z2V0UHRyKFRlc3RTdXBwbGVtZW50YWw6
OnN1cHBsZW1lbnRhbE1ldGhvZDIoaXRlbSwgY29udmVydGVkX3N0cl9hcmcsIGNvbnZlcnRlZF9v
YmpfYXJnLCBlYykpOworICAgIGlmIChlYykgeworICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25D
b2RlRGVzY3JpcHRpb24gZWNkZXNjKGVjKTsKKyAgICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJhbChl
cnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIpLCBlY2Rlc2MuY29kZSwgZWNk
ZXNjLm5hbWUpOworICAgIH0KKyAgICBXZWJLaXRET01UZXN0T2JqKiByZXMgPSBXZWJLaXQ6Omtp
dChnX3Jlcy5nZXQoKSk7CisgICAgcmV0dXJuIHJlczsKKyNlbHNlCisgICAgcmV0dXJuIE5VTEw7
CisjZW5kaWYgLyogRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpICov
Cit9CisKIGdjaGFyKgogd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9nZXRfc3RyMShXZWJLaXRE
T01UZXN0SW50ZXJmYWNlKiBzZWxmKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZS5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdElu
dGVyZmFjZS5oCmluZGV4IDdjMzY1MDU4YjliODQ0MTJiZWI3YmRiYzc1OGQ3MDU1YzQwZWFjZjEu
LmE3MDZhN2ExYjQ5YjFiOWZmNzBkMzUzMjFiNjllNDJkODBkZGM4Y2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJ
bnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09i
amVjdC9XZWJLaXRET01UZXN0SW50ZXJmYWNlLmgKQEAgLTQ3LDYgKzQ3LDI5IEBAIFdFQktJVF9B
UEkgR1R5cGUKIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfZ2V0X3R5cGUgKHZvaWQpOwogCiAv
KioKKyAqIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2Vfc3VwcGxlbWVudGFsX21ldGhvZDE6Cisg
KiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdEludGVyZmFjZQorICoKKyAqIFJldHVybnM6CisgKgor
KiovCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2Vfc3VwcGxlbWVu
dGFsX21ldGhvZDEoV2ViS2l0RE9NVGVzdEludGVyZmFjZSogc2VsZik7CisKKy8qKgorICogd2Vi
a2l0X2RvbV90ZXN0X2ludGVyZmFjZV9zdXBwbGVtZW50YWxfbWV0aG9kMjoKKyAqIEBzZWxmOiBB
ICNXZWJLaXRET01UZXN0SW50ZXJmYWNlCisgKiBAc3RyX2FyZzogQSAjZ2NoYXIKKyAqIEBvYmpf
YXJnOiBBICNXZWJLaXRET01UZXN0T2JqCisgKiBAZXJyb3I6ICNHRXJyb3IKKyAqCisgKiBSZXR1
cm5zOiAodHJhbnNmZXIgbm9uZSk6CisgKgorKiovCitXRUJLSVRfQVBJIFdlYktpdERPTVRlc3RP
YmoqCit3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX3N1cHBsZW1lbnRhbF9tZXRob2QyKFdlYktp
dERPTVRlc3RJbnRlcmZhY2UqIHNlbGYsIGNvbnN0IGdjaGFyKiBzdHJfYXJnLCBXZWJLaXRET01U
ZXN0T2JqKiBvYmpfYXJnLCBHRXJyb3IgKiplcnJvcik7CisKKy8qKgogICogd2Via2l0X2RvbV90
ZXN0X2ludGVyZmFjZV9nZXRfc3RyMToKICAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0SW50ZXJm
YWNlCiAgKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAppbmRleCAwNzA3YzhiMTAzMzg3YzA0MDZlMGZh
NzViOTU1OWJlMTE5ZjM4ZDBjLi5lMjYwMDVmNzk5NzgxMzNlYjRhYTMyMGE3NTRjNTQ2YjA3NzEz
Nzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcApAQCAtMjcsNyArMjcsOSBAQAogI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJK
U1Rlc3RJbnRlcmZhY2VDdXN0b20uaCIKKyNpbmNsdWRlICJKU1Rlc3RPYmouaCIKICNpbmNsdWRl
ICJUZXN0SW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiVGVzdE9iai5oIgogI2luY2x1ZGUgIlRlc3RT
dXBwbGVtZW50YWwuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CiAjaW5jbHVkZSA8d3Rm
L0dldFB0ci5oPgpAQCAtMTI5LDEwICsxMzEsMTYgQEAgQ29uc3RydWN0VHlwZSBKU1Rlc3RJbnRl
cmZhY2VDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXQK
IAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZVRh
YmxlVmFsdWVzW10gPQogeworI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRp
dGlvbjEyKQorICAgIHsgInN1cHBsZW1lbnRhbE1ldGhvZDEiLCBEb250RGVsZXRlIHwgSlNDOjpG
dW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RJbnRl
cmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDEpLCAoaW50cHRyX3QpMCwg
Tm9JbnRyaW5zaWMgfSwKKyNlbmRpZgorI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxF
KENvbmRpdGlvbjEyKQorICAgIHsgInN1cHBsZW1lbnRhbE1ldGhvZDIiLCBEb250RGVsZXRlIHwg
SlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rl
c3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDIpLCAoaW50cHRy
X3QpMiwgTm9JbnRyaW5zaWMgfSwKKyNlbmRpZgogICAgIHsgMCwgMCwgMCwgMCwgTm9JbnRyaW5z
aWMgfQogfTsKIAotc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5
cGVUYWJsZSA9IHsgMSwgMCwgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlVGFibGVWYWx1ZXMsIDAg
fTsKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlVGFibGUg
PSB7IDUsIDMsIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZVRhYmxlVmFsdWVzLCAwIH07CiBjb25z
dCBDbGFzc0luZm8gSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0SW50
ZXJmYWNlUHJvdG90eXBlIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdEludGVyZmFjZVByb3RvdHlw
ZVRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSkg
fTsKIAogSlNPYmplY3QqIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZTo6c2VsZihFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCkBAIC0xNDAsNiArMTQ4LDE4IEBA
IEpTT2JqZWN0KiBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGU6OnNlbGYoRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rl
c3RJbnRlcmZhY2U+KGV4ZWMsIGdsb2JhbE9iamVjdCk7CiB9CiAKK2Jvb2wgSlNUZXN0SW50ZXJm
YWNlUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQoreworICAgIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqPihjZWxsKTsKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVu
Y3Rpb25TbG90PEpTT2JqZWN0PihleGVjLCAmSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlVGFibGUs
IHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK2Jvb2wgSlNUZXN0SW50ZXJm
YWNlUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK3sKKyAgICBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKj4ob2JqZWN0KTsK
KyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEpTT2JqZWN0PihleGVjLCAm
SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlVGFibGUsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwg
ZGVzY3JpcHRvcik7Cit9CisKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RJbnRlcmZhY2U6OnNfaW5m
byA9IHsgIlRlc3RJbnRlcmZhY2UiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0SW50ZXJmYWNlVGFi
bGUsIDAgLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEludGVyZmFjZSkgfTsKIAogSlNUZXN0
SW50ZXJmYWNlOjpKU1Rlc3RJbnRlcmZhY2UoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8VGVzdEludGVyZmFjZT4gaW1wbCkK
QEAgLTI1Myw2ICsyNzMsNTAgQEAgSlNWYWx1ZSBKU1Rlc3RJbnRlcmZhY2U6OmdldENvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICByZXR1cm4g
Z2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3I+KGV4ZWMsIHN0YXRp
Y19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKKyNpZiBFTkFC
TEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxN
ZXRob2QxKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
Pmhvc3RUaGlzVmFsdWUoKTsKKyAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cygmSlNUZXN0SW50
ZXJmYWNlOjpzX2luZm8pKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsK
KyAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RJbnRl
cmZhY2UqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RJbnRlcmZhY2U6OnNfaW5mbyk7CisgICAgVGVzdEludGVy
ZmFjZSogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RJbnRlcmZhY2UqPihjYXN0ZWRUaGlzLT5pbXBs
KCkpOworICAgIFRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbE1ldGhvZDEoaW1wbCk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKworI2VuZGlmCisK
KyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBw
bGVtZW50YWxNZXRob2QyKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKKyAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cygm
SlNUZXN0SW50ZXJmYWNlOjpzX2luZm8pKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjKTsKKyAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxK
U1Rlc3RJbnRlcmZhY2UqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKKyAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RJbnRlcmZhY2U6OnNfaW5mbyk7CisgICAg
VGVzdEludGVyZmFjZSogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RJbnRlcmZhY2UqPihjYXN0ZWRU
aGlzLT5pbXBsKCkpOworICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQorICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiTm90IGVu
b3VnaCBhcmd1bWVudHMiKSk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9IHN0YXRpY19jYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOworICAgIGlmICghc2NyaXB0Q29udGV4dCkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBjb25zdCBTdHJpbmcmIHN0ckFyZyh1c3RyaW5n
VG9TdHJpbmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgTWlzc2luZ0lzVW5kZWZp
bmVkKS5pc0VtcHR5KCkgPyBVU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVj
LCAwLCBNaXNzaW5nSXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpKSk7CisgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOworICAgIFRlc3RPYmoqIG9iakFyZyh0b1Rlc3RPYmooTUFZQkVfTUlTU0lOR19QQVJB
TUVURVIoZXhlYywgMSwgTWlzc2luZ0lzVW5kZWZpbmVkKSkpOworICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKKworICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmds
b2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxN
ZXRob2QyKGltcGwsIHNjcmlwdENvbnRleHQsIHN0ckFyZywgb2JqQXJnLCBlYykpKTsKKyAgICBz
ZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKK30KKworI2VuZGlmCisKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc09ic2VydmFibGUoSlNU
ZXN0SW50ZXJmYWNlKiBqc1Rlc3RJbnRlcmZhY2UpCiB7CiAgICAgaWYgKGpzVGVzdEludGVyZmFj
ZS0+aGFzQ3VzdG9tUHJvcGVydGllcygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCmluZGV4IDk4YjU2ZDgw
NTVjOTc4N2Q4MDAzZjU2NDFjYzk1ZDgyYTg0MDI5NjMuLmE0NDNiOTAzZTIwMWVlZmJjYzAzNTBm
NjVjNGQ2Y2ZiNDg5Y2JiOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgKQEAgLTEwMiw2ICsxMDIsOCBA
QCBwdWJsaWM6CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5m
bzsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6
OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlTbG90Jik7
CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3Qq
LCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlE
ZXNjcmlwdG9yJik7CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBK
U0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZv
KTsKQEAgLTExMCw3ICsxMTIsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEpTVGVzdEludGVy
ZmFjZVByb3RvdHlwZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpIDogSlNDOjpKU05vbkZpbmFsT2Jq
ZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkgeyB9CiBwcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpPdmVycmlkZXNHZXRP
d25Qcm9wZXJ0eVNsb3QgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIH07CiAKIGNsYXNzIEpTVGVz
dEludGVyZmFjZUNvbnN0cnVjdG9yIDogcHVibGljIERPTUNvbnN0cnVjdG9yT2JqZWN0IHsKQEAg
LTE0MCw2ICsxNDIsMTAgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBKU0M6OkNvbnN0cnVjdFR5
cGUgZ2V0Q29uc3RydWN0RGF0YShKU0M6OkpTQ2VsbCosIEpTQzo6Q29uc3RydWN0RGF0YSYpOwog
fTsKIAorLy8gRnVuY3Rpb25zCisKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDEoSlNDOjpF
eGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRl
cmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDIoSlNDOjpFeGVjU3RhdGUq
KTsKIC8vIEF0dHJpYnV0ZXMKIAogSlNDOjpKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN0cjEoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVz
dEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMv
RE9NVGVzdEludGVyZmFjZS5oCmluZGV4IDIzNDI1OWI0NTQwOWNhMzNlNmE3MjJkOTI3MzEwYTg2
YjU1NTQzMmMuLjdjY2VkNWU4ZjE0ZjJiMTE2YmQyNDhlYWU0YmVlOGNiODQwZmNhYmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJ
bnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2Jq
Qy9ET01UZXN0SW50ZXJmYWNlLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIFdFQktJVF9WRVJT
SU9OX01BWF9BTExPV0VEID49IFdFQktJVF9WRVJTSU9OX0xBVEVTVAogCitAY2xhc3MgRE9NVGVz
dE9iajsKIEBjbGFzcyBOU1N0cmluZzsKIAogQGludGVyZmFjZSBET01UZXN0SW50ZXJmYWNlIDog
RE9NT2JqZWN0CkBAIC00Miw2ICs0Myw4IEBACiAtIChOU1N0cmluZyAqKXN0cjM7CiAtICh2b2lk
KXNldFN0cjM6KE5TU3RyaW5nICopbmV3U3RyMzsKICNlbmRpZgorLSAodm9pZClzdXBwbGVtZW50
YWxNZXRob2QxOworLSAoRE9NVGVzdE9iaiAqKXN1cHBsZW1lbnRhbE1ldGhvZDI6KE5TU3RyaW5n
ICopc3RyQXJnIG9iakFyZzooRE9NVGVzdE9iaiAqKW9iakFyZzsKIEBlbmQKIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01U
ZXN0SW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09i
akMvRE9NVGVzdEludGVyZmFjZS5tbQppbmRleCBmNDY5Y2YxMGFmODRmNWI5YjFhMmM2OThiMTMy
MTFjNzk3OTBlMTUyLi4yNWVkNDhkMGFmYzI4MTdiNjY1YjQyMDdmN2U4ZDQzNWQxNjM5ZDM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01U
ZXN0SW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9PYmpDL0RPTVRlc3RJbnRlcmZhY2UubW0KQEAgLTM5LDEwICszOSwxMiBAQAogI2ltcG9ydCAi
RE9NTm9kZUludGVybmFsLmgiCiAjaW1wb3J0ICJET01TdHlsZVNoZWV0SW50ZXJuYWwuaCIKICNp
bXBvcnQgIkRPTVRlc3RJbnRlcmZhY2VJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NVGVzdE9iaklu
dGVybmFsLmgiCiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgogI2ltcG9ydCAiSlNNYWlu
VGhyZWFkRXhlY1N0YXRlLmgiCiAjaW1wb3J0ICJLVVJMLmgiCiAjaW1wb3J0ICJUZXN0SW50ZXJm
YWNlLmgiCisjaW1wb3J0ICJUZXN0T2JqLmgiCiAjaW1wb3J0ICJUZXN0U3VwcGxlbWVudGFsLmgi
CiAjaW1wb3J0ICJUaHJlYWRDaGVjay5oIgogI2ltcG9ydCAiV2ViQ29yZU9iakNFeHRyYXMuaCIK
QEAgLTEwNiw2ICsxMDgsMjkgQEAKIH0KICNlbmRpZgogCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9u
MTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKy0gKHZvaWQpc3VwcGxlbWVudGFsTWV0aG9kMQor
eworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBUZXN0U3Vw
cGxlbWVudGFsOjpzdXBwbGVtZW50YWxNZXRob2QxKElNUEwpOworfQorCisjZW5kaWYKKworCisj
aWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCistIChET01UZXN0
T2JqICopc3VwcGxlbWVudGFsTWV0aG9kMjooTlNTdHJpbmcgKilzdHJBcmcgb2JqQXJnOihET01U
ZXN0T2JqICopb2JqQXJnCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIERPTVRlc3RPYmog
KnJlc3VsdCA9IGtpdChXVEY6OmdldFB0cihUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxN
ZXRob2QyKElNUEwsIHN0ckFyZywgY29yZShvYmpBcmcpLCBlYykpKTsKKyAgICBXZWJDb3JlOjpy
YWlzZU9uRE9NRXJyb3IoZWMpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNlbmRpZgorCiBA
ZW5kCiAKIFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UqIGNvcmUoRE9NVGVzdEludGVyZmFjZSAqd3Jh
cHBlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9U
ZXN0U3VwcGxlbWVudGFsLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9UZXN0U3VwcGxlbWVudGFsLmlkbAppbmRleCA0NjZmZGQ1MWE4ZDZlNzhjZjMzMjBlYWVlZjE4
NmI5Y2ZiMjZmZjMyLi4wZDdiZTAyY2ZjNWQ5YTAzNzIyYWE2OGQyOGFjNTcxZGEzYTJhODg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFN1cHBs
ZW1lbnRhbC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3RTdXBwbGVtZW50YWwuaWRsCkBAIC0zNiw1ICszNiw4IEBAIG1vZHVsZSB0ZXN0IHsKICAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBzdHIxOwogICAgICAgICBhdHRyaWJ1dGUg
RE9NU3RyaW5nIHN0cjI7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ3VzdG9tR2V0dGVyLCBDdXN0b21T
ZXR0ZXJdIERPTVN0cmluZyBzdHIzOworCisgICAgICAgIHZvaWQgc3VwcGxlbWVudGFsTWV0aG9k
MSgpOworICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gVGVzdE9iaiBz
dXBwbGVtZW50YWxNZXRob2QyKGluIERPTVN0cmluZyBzdHJBcmcsIGluIFRlc3RPYmogb2JqQXJn
KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcApp
bmRleCA1MzU4YjVlY2I0OTMxYjVjYjgzMDNiNzkzMTk3MzRhZmFjNzU4NGM1Li43YzA1ODUyNTM5
ZTEzZjI5MTRkZGQ2NzlhN2I4ZGQ3MDE0NzRkY2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcApA
QCAtMzIsNyArMzIsMTEgQEAKICNpbmNsdWRlICJWOERPTVdyYXBwZXIuaCIKICNpbmNsdWRlICJW
OElzb2xhdGVkQ29udGV4dC5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlICJWOFRl
c3RPYmouaCIKICNpbmNsdWRlICJWOFRlc3RTdXBwbGVtZW50YWwuaCIKKyNpbmNsdWRlIDx3dGYv
R2V0UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTc4LDYgKzgyLDQ1IEBAIHN0YXRpYyB2b2lkIHN0cjJBdHRyU2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1CiAKICNlbmRpZiAv
LyBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKIAorI2lmIEVOQUJM
RShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorCitzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRhbE1ldGhvZDFDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLlRlc3RJbnRlcmZhY2Uuc3VwcGxlbWVu
dGFsTWV0aG9kMSIpOworICAgIFRlc3RJbnRlcmZhY2UqIGltcCA9IFY4VGVzdEludGVyZmFjZTo6
dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CisgICAgVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVu
dGFsTWV0aG9kMShpbXApOworICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKK30K
KworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQor
CisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisKK3N0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFsTWV0aG9kMkNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uVGVzdEludGVyZmFj
ZS5zdXBwbGVtZW50YWxNZXRob2QyIik7CisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAyKQorICAg
ICAgICByZXR1cm4gdGhyb3dFcnJvcigiTm90IGVub3VnaCBhcmd1bWVudHMiLCBWOFByb3h5OjpU
eXBlRXJyb3IpOworICAgIFRlc3RJbnRlcmZhY2UqIGltcCA9IFY4VGVzdEludGVyZmFjZTo6dG9O
YXRpdmUoYXJncy5Ib2xkZXIoKSk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgewor
ICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0soVjhQYXJhbWV0ZXI8Piwg
c3RyQXJnLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBNaXNzaW5nSXNVbmRlZmlu
ZWQpKTsKKyAgICBFWENFUFRJT05fQkxPQ0soVGVzdE9iaiosIG9iakFyZywgVjhUZXN0T2JqOjpI
YXNJbnN0YW5jZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAxLCBNaXNzaW5nSXNVbmRl
ZmluZWQpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2Fz
dChNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAxLCBNaXNzaW5nSXNVbmRlZmluZWQpKSkg
OiAwKTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0gZ2V0U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghc2NyaXB0Q29udGV4dCkKKyAgICAgICAg
cmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICBSZWZQdHI8VGVzdE9iaj4gcmVzdWx0ID0gVGVz
dFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsTWV0aG9kMihpbXAsIHNjcmlwdENvbnRleHQsIHN0
ckFyZywgb2JqQXJnLCBlYyk7CisgICAgaWYgKFVOTElLRUxZKGVjKSkKKyAgICAgICAgZ290byBm
YWlsOworICAgIHJldHVybiB0b1Y4KHJlc3VsdC5yZWxlYXNlKCkpOworICAgIH0KKyAgICBmYWls
OgorICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYyk7CisgICAgcmV0dXJuIHY4OjpIYW5k
bGU8djg6OlZhbHVlPigpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjExKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMTIpCisKIH0gLy8gbmFtZXNwYWNlIFRlc3RJbnRlcmZhY2VJbnRlcm5h
bAogCiBzdGF0aWMgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSBUZXN0SW50ZXJmYWNlQXR0cnNbXSA9
IHsKQEAgLTk1LDYgKzEzOCwxMiBAQCBzdGF0aWMgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSBUZXN0
SW50ZXJmYWNlQXR0cnNbXSA9IHsKICNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVO
QUJMRShDb25kaXRpb24xMikKIH07CiAKK3N0YXRpYyBjb25zdCBCYXRjaGVkQ2FsbGJhY2sgVGVz
dEludGVyZmFjZUNhbGxiYWNrc1tdID0geworI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5B
QkxFKENvbmRpdGlvbjEyKQorICAgIHsic3VwcGxlbWVudGFsTWV0aG9kMSIsIFRlc3RJbnRlcmZh
Y2VJbnRlcm5hbDo6c3VwcGxlbWVudGFsTWV0aG9kMUNhbGxiYWNrfSwKKyNlbmRpZgorfTsKKwog
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdEludGVyZmFjZTo6Y29uc3RydWN0b3JDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLlRlc3RJ
bnRlcmZhY2UuQ29uc3RydWN0b3IiKTsKQEAgLTEzNSwxMSArMTg0LDIzIEBAIHN0YXRpYyB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0SW50ZXJmYWNl
VGVtcGxhdGUodjg6CiAgICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1
cmU7CiAgICAgZGVmYXVsdFNpZ25hdHVyZSA9IGNvbmZpZ3VyZVRlbXBsYXRlKGRlc2MsICJUZXN0
SW50ZXJmYWNlIiwgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4VGVz
dEludGVyZmFjZTo6aW50ZXJuYWxGaWVsZENvdW50LAogICAgICAgICBUZXN0SW50ZXJmYWNlQXR0
cnMsIFdURl9BUlJBWV9MRU5HVEgoVGVzdEludGVyZmFjZUF0dHJzKSwKLSAgICAgICAgMCwgMCk7
CisgICAgICAgIFRlc3RJbnRlcmZhY2VDYWxsYmFja3MsIFdURl9BUlJBWV9MRU5HVEgoVGVzdElu
dGVyZmFjZUNhbGxiYWNrcykpOwogICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJlKTsg
Ly8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KICAgICBkZXNjLT5TZXRDYWxs
SGFuZGxlcihWOFRlc3RJbnRlcmZhY2U6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOworICAgIHY4OjpM
b2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IGluc3RhbmNlID0gZGVzYy0+SW5zdGFuY2VUZW1wbGF0
ZSgpOworICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IHByb3RvID0gZGVzYy0+UHJv
dG90eXBlVGVtcGxhdGUoKTsKKyAgICBVTlVTRURfUEFSQU0oaW5zdGFuY2UpOyAvLyBJbiBzb21l
IGNhc2VzLCBpdCB3aWxsIG5vdCBiZSB1c2VkLgorICAgIFVOVVNFRF9QQVJBTShwcm90byk7IC8v
IEluIHNvbWUgY2FzZXMsIGl0IHdpbGwgbm90IGJlIHVzZWQuCiAgICAgCiAKKyAgICAvLyBDdXN0
b20gU2lnbmF0dXJlICdzdXBwbGVtZW50YWxNZXRob2QyJworICAgIGNvbnN0IGludCBzdXBwbGVt
ZW50YWxNZXRob2QyQXJnYyA9IDI7CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gc3VwcGxlbWVudGFsTWV0aG9kMkFyZ3Zbc3VwcGxlbWVudGFsTWV0aG9kMkFyZ2NdID0geyB2
ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RPYmo6OkdldFJhd1RlbXBs
YXRlKCkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IHN1cHBsZW1lbnRhbE1ldGhv
ZDJTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgc3VwcGxlbWVudGFsTWV0aG9k
MkFyZ2MsIHN1cHBsZW1lbnRhbE1ldGhvZDJBcmd2KTsKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEp
IHx8IEVOQUJMRShDb25kaXRpb24xMikKKyAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ldygi
c3VwcGxlbWVudGFsTWV0aG9kMiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RJbnRl
cmZhY2VJbnRlcm5hbDo6c3VwcGxlbWVudGFsTWV0aG9kMkNhbGxiYWNrLCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4oKSwgc3VwcGxlbWVudGFsTWV0aG9kMlNpZ25hdHVyZSkpOworI2VuZGlmIC8vIEVO
QUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorCiAgICAgLy8gQ3VzdG9t
IHRvU3RyaW5nIHRlbXBsYXRlCiAgICAgZGVzYy0+U2V0KGdldFRvU3RyaW5nTmFtZSgpLCBnZXRU
b1N0cmluZ1RlbXBsYXRlKCkpOwogICAgIHJldHVybiBkZXNjOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuY3BwCmluZGV4IDViN2I5NTIwMTA3MjhjOTliYzg2OGMzYzc1NWE4YjhjZTYzZmVmMDEuLjA5
MzI2NmVjYTVkOWFmODIxM2ZkMzk3OGUyNmYwOTZjNjhjNGVlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5jcHAKQEAgLTEzODEsMjMgKzEzODEsNiBAQCBkb3VibGUgRE9NV2luZG93OjpkZXZp
Y2VQaXhlbFJhdGlvKCkgY29uc3QKICAgICByZXR1cm4gcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3Io
KTsKIH0KIAotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi1QYXNzUmVmUHRyPERhdGFiYXNlPiBE
T01XaW5kb3c6Om9wZW5EYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
dmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0
ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+IGNyZWF0aW9uQ2FsbGJhY2ssIEV4
Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmICghaXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZyYW1l
KCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgUmVmUHRyPERhdGFiYXNlPiBkYXRhYmFzZSA9
IDA7Ci0gICAgaWYgKG1fZnJhbWUgJiYgQWJzdHJhY3REYXRhYmFzZTo6aXNBdmFpbGFibGUoKSAm
JiBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NEYXRhYmFz
ZSgpKQotICAgICAgICBkYXRhYmFzZSA9IERhdGFiYXNlOjpvcGVuRGF0YWJhc2UobV9mcmFtZS0+
ZG9jdW1lbnQoKSwgbmFtZSwgdmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUsIGNy
ZWF0aW9uQ2FsbGJhY2ssIGVjKTsKLQotICAgIGlmICghZGF0YWJhc2UgJiYgIWVjKQotICAgICAg
ICBlYyA9IFNFQ1VSSVRZX0VSUjsKLQotICAgIHJldHVybiBkYXRhYmFzZTsKLX0KLSNlbmRpZgot
CiB2b2lkIERPTVdpbmRvdzo6c2Nyb2xsQnkoaW50IHgsIGludCB5KSBjb25zdAogewogICAgIGlm
ICghaXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZyYW1lKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaApp
bmRleCA2YmQyYjcwZmYzMzMxNWFlZjdmOTYzMTA1MTI3M2MzNjYxMDBlZTVlLi5jYzI5N2Y3OTdj
Zjc1MmFmNDk0NTQ4ZmMyMmRlMGRhMDc3ZWE0NGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgK
QEAgLTM1NSwxMCArMzU1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBET01VUkwq
IHdlYmtpdFVSTCgpIGNvbnN0OwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQot
ICAgICAgICBQYXNzUmVmUHRyPERhdGFiYXNlPiBvcGVuRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVu
c2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwgUGFzc1JlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiBj
cmVhdGlvbkNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShE
RVZJQ0VfT1JJRU5UQVRJT04pCiAgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVO
RVIoZGV2aWNlbW90aW9uKTsKICAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5F
UihkZXZpY2VvcmllbnRhdGlvbik7CkBAIC00MTgsMTUgKzQxNCwxNSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIFBlcmZvcm1hbmNlKiBwZXJmb3JtYW5jZSgpIGNvbnN0OwogI2VuZGlm
CiAKLSAgICBwcml2YXRlOgotICAgICAgICBleHBsaWNpdCBET01XaW5kb3coRnJhbWUqKTsKLQog
ICAgICAgICAvLyBGSVhNRTogV2hlbiB0aGlzIERPTVdpbmRvdyBpcyBubyBsb25nZXIgdGhlIGFj
dGl2ZSBET01XaW5kb3cgKGkuZS4sCiAgICAgICAgIC8vIHdoZW4gaXRzIGRvY3VtZW50IGlzIG5v
IGxvbmdlciB0aGUgZG9jdW1lbnQgdGhhdCBpcyBkaXNwbGF5ZWQgaW4gaXRzCiAgICAgICAgIC8v
IGZyYW1lKSwgd2Ugd291bGQgbGlrZSB0byB6ZXJvIG91dCBtX2ZyYW1lIHRvIGF2b2lkIGJlaW5n
IGNvbmZ1c2VkCiAgICAgICAgIC8vIGJ5IHRoZSBkb2N1bWVudCB0aGF0IGlzIGN1cnJlbnRseSBh
Y3RpdmUgaW4gbV9mcmFtZS4KICAgICAgICAgYm9vbCBpc0N1cnJlbnRseURpc3BsYXllZEluRnJh
bWUoKSBjb25zdDsKIAorICAgIHByaXZhdGU6CisgICAgICAgIGV4cGxpY2l0IERPTVdpbmRvdyhG
cmFtZSopOworCiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7
IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0K
ICAgICAgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuaWRsCmluZGV4IDg0MTRmNzVmM2RiYzhiOTQzN2ExYTY5OGY1YzIx
ZTQxNzdiMGU2MWIuLjljYThiZDNjZjU5YTFhYzNlMzhmY2YxMjQyNjI0NDJjNWQxNWQwNWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKQEAgLTE2MywxMCArMTYzLDYgQEAgbW9kdWxlIHdp
bmRvdyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gV2ViS2l0UG9pbnQgcCk7CiAK
ICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtFbmFibGVkQXRSdW50aW1lXSBET01BcHBsaWNh
dGlvbkNhY2hlIGFwcGxpY2F0aW9uQ2FjaGU7Ci0jaWYgZGVmaW5lZChFTkFCTEVfU1FMX0RBVEFC
QVNFKSAmJiBFTkFCTEVfU1FMX0RBVEFCQVNFCi0gICAgICAgIFtFbmFibGVkQXRSdW50aW1lXSBE
YXRhYmFzZSBvcGVuRGF0YWJhc2UoaW4gRE9NU3RyaW5nIG5hbWUsIGluIERPTVN0cmluZyB2ZXJz
aW9uLCBpbiBET01TdHJpbmcgZGlzcGxheU5hbWUsIGluIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVk
U2l6ZSwgaW4gW0NhbGxiYWNrLCBPcHRpb25hbF0gRGF0YWJhc2VDYWxsYmFjayBjcmVhdGlvbkNh
bGxiYWNrKQotICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7Ci0jZW5kaWYKIAogICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0VuYWJsZWRBdFJ1bnRpbWVdIFN0b3JhZ2Ugc2Vzc2lv
blN0b3JhZ2UKICAgICAgICAgICAgIGdldHRlciByYWlzZXMoRE9NRXhjZXB0aW9uKTsKQEAgLTc5
NCw5ICs3OTAsNiBAQCBtb2R1bGUgd2luZG93IHsKICNlbmRpZgogI2VuZGlmCiAKLSAgICAgICAg
YXR0cmlidXRlIFtDb25kaXRpb25hbD1TUUxfREFUQUJBU0VdIFNRTEV4Y2VwdGlvbkNvbnN0cnVj
dG9yIFNRTEV4Y2VwdGlvbjsKLQotCiAgICAgICAgIGF0dHJpYnV0ZSBET01Gb3JtRGF0YUNvbnN0
cnVjdG9yIEZvcm1EYXRhOwogCiAgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9QkxPQnxG
SUxFX1NZU1RFTV0gRmlsZUVycm9yQ29uc3RydWN0b3IgRmlsZUVycm9yOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9ET01XaW5kb3dTUUxEYXRhYmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0RPTVdpbmRvd1NRTERhdGFiYXNlLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NzEw
OTU5NWE4MTQwZWE3NjBlOThjMjcwZjUwNjlhNmJkNjYyNzA3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9ET01XaW5kb3dTUUxEYXRhYmFzZS5jcHAKQEAgLTAsMCAr
MSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRE9NV2luZG93U1FMRGF0YWJh
c2UuaCIKKworI2luY2x1ZGUgIkFic3RyYWN0RGF0YWJhc2UuaCIKKyNpbmNsdWRlICJET01XaW5k
b3cuaCIKKyNpbmNsdWRlICJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQ2FsbGJhY2su
aCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAi
U2VjdXJpdHlPcmlnaW4uaCIKKworI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxEYXRhYmFzZT4gRE9NV2luZG93U1FMRGF0YWJhc2U6
Om9wZW5EYXRhYmFzZShET01XaW5kb3cqIGltcCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIHZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcg
ZXN0aW1hdGVkU2l6ZSwgUGFzc1JlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiBjcmVhdGlvbkNhbGxi
YWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIWltcC0+aXNDdXJyZW50bHlEaXNw
bGF5ZWRJbkZyYW1lKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRyPERhdGFiYXNl
PiBkYXRhYmFzZSA9IDA7CisgICAgaWYgKGltcC0+ZnJhbWUoKSAmJiBBYnN0cmFjdERhdGFiYXNl
Ojppc0F2YWlsYWJsZSgpICYmIGltcC0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmln
aW4oKS0+Y2FuQWNjZXNzRGF0YWJhc2UoKSkKKyAgICAgICAgZGF0YWJhc2UgPSBEYXRhYmFzZTo6
b3BlbkRhdGFiYXNlKGltcC0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSwgbmFtZSwgdmVyc2lvbiwgZGlz
cGxheU5hbWUsIGVzdGltYXRlZFNpemUsIGNyZWF0aW9uQ2FsbGJhY2ssIGVjKTsKKworICAgIGlm
ICghZGF0YWJhc2UgJiYgIWVjKQorICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKKworICAgIHJl
dHVybiBkYXRhYmFzZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKFNRTF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
RE9NV2luZG93U1FMRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRE9NV2luZG93
U1FMRGF0YWJhc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNmE4NjBiNjI0ZmNmMTFhNGM4YTI2YmFmYWU0NGZi
ZGRlNjUxNTgyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9ET01X
aW5kb3dTUUxEYXRhYmFzZS5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBET01XaW5kb3dTUUxE
YXRhYmFzZV9oCisjZGVmaW5lIERPTVdpbmRvd1NRTERhdGFiYXNlX2gKKworI2lmIEVOQUJMRShT
UUxfREFUQUJBU0UpCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBET01XaW5kb3c7CitjbGFzcyBEYXRhYmFzZTsKK2NsYXNzIERhdGFiYXNl
Q2FsbGJhY2s7CitjbGFzcyBGcmFtZTsKKworY2xhc3MgRE9NV2luZG93U1FMRGF0YWJhc2Ugewor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERhdGFiYXNlPiBvcGVuRGF0YWJhc2UoRE9N
V2luZG93KiBpbXAsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBj
b25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIFBh
c3NSZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4gY3JlYXRpb25DYWxsYmFjaywgRXhjZXB0aW9uQ29k
ZSYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNR
TF9EQVRBQkFTRSkKKworI2VuZGlmIC8vIERPTVdpbmRvd1NRTERhdGFiYXNlX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRE9NV2luZG93U1FMRGF0YWJhc2UuaWRsIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9ET01XaW5kb3dTUUxEYXRhYmFzZS5pZGwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Njc4MDM1ODY3ZDcwNDI1Y2E3OGFiNzgyZmM0MWQ5ZGYzNTk5ZjNlMQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRE9NV2luZG93U1FMRGF0YWJhc2UuaWRsCkBAIC0w
LDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworbW9kdWxlIHdpbmRvdyB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBD
b25kaXRpb25hbD1TUUxfREFUQUJBU0UsCisgICAgICAgIFN1cHBsZW1lbnRhbD1ET01XaW5kb3cK
KyAgICBdIERPTVdpbmRvd1NRTERhdGFiYXNlIHsKKyAgICAgICAgW0VuYWJsZWRBdFJ1bnRpbWVd
IERhdGFiYXNlIG9wZW5EYXRhYmFzZShpbiBET01TdHJpbmcgbmFtZSwgaW4gRE9NU3RyaW5nIHZl
cnNpb24sIGluIERPTVN0cmluZyBkaXNwbGF5TmFtZSwgaW4gdW5zaWduZWQgbG9uZyBlc3RpbWF0
ZWRTaXplLCBpbiBbQ2FsbGJhY2ssIE9wdGlvbmFsXSBEYXRhYmFzZUNhbGxiYWNrIGNyZWF0aW9u
Q2FsbGJhY2spCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgYXR0
cmlidXRlIFNRTEV4Y2VwdGlvbkNvbnN0cnVjdG9yIFNRTEV4Y2VwdGlvbjsKKyAgICB9OworCit9
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>