<?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>22602</bug_id>
          
          <creation_ts>2008-12-02 14:17:55 -0800</creation_ts>
          <short_desc>Enable Java in DumpRenderTree</short_desc>
          <delta_ts>2010-02-23 17:23:39 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pam Greene (IRC:pamg)">pam</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>101071</commentid>
    <comment_count>0</comment_count>
    <who name="Pam Greene (IRC:pamg)">pam</who>
    <bug_when>2008-12-02 14:17:55 -0800</bug_when>
    <thetext>DumpRenderTree currently has Java disabled.  If it&apos;s enabled, however, and a test is run that contains an &lt;applet&gt; element, DRT hangs.

For a test case, see the new layout test java-applet-calls.html attached to bug 22601.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101073</commentid>
    <comment_count>1</comment_count>
      <attachid>25682</attachid>
    <who name="Pam Greene (IRC:pamg)">pam</who>
    <bug_when>2008-12-02 14:23:18 -0800</bug_when>
    <thetext>Created attachment 25682
Hypothetical patch to allow Java to be enabled

This patch would allow a layout test to enable Java by calling layoutTestController.setJavaEnabled(true). But when a test (specifically, the one in bug 22601) does that, DRT hangs.  (Commenting out the line in DumpRenderTreemac.mm that disables Java in the first place has the same effect, so I assume it has nothing to do with this patch itself.)

Java was disabled in DRT in r10323, but I don&apos;t see details about why, nor do I know where to start looking to track this down.  (Or if it&apos;s worth the effort.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193172</commentid>
    <comment_count>2</comment_count>
      <attachid>49339</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-02-23 16:14:49 -0800</bug_when>
    <thetext>Created attachment 49339
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193181</commentid>
    <comment_count>3</comment_count>
      <attachid>49339</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2010-02-23 17:00:50 -0800</bug_when>
    <thetext>Comment on attachment 49339
proposed patch

&gt; Index: WebKitTools/DumpRenderTree/DumpRenderTree.h
&gt; ===================================================================
&gt; --- WebKitTools/DumpRenderTree/DumpRenderTree.h	(revision 55174)
&gt; +++ WebKitTools/DumpRenderTree/DumpRenderTree.h	(working copy)
&gt; @@ -53,6 +53,7 @@ std::wstring urlSuitableForTestResult(co
&gt;  class LayoutTestController;
&gt;  
&gt;  extern volatile bool done;
&gt; +void exitApplicationRunLoop();

It looks like this is no longer used outside of DumpRenderTreeMac.mm.  It can be removed from this header and marked as static.

&gt; Index: WebKitTools/DumpRenderTree/LayoutTestController.cpp
&gt; ===================================================================
&gt; --- WebKitTools/DumpRenderTree/LayoutTestController.cpp	(revision 55174)
&gt; +++ WebKitTools/DumpRenderTree/LayoutTestController.cpp	(working copy)
&gt; @@ -1278,6 +1278,15 @@ static JSValueRef apiTestNewWindowDataLo
&gt;      return JSValueMakeUndefined(context);
&gt;  }
&gt;  
&gt; +
&gt; +static JSValueRef enableJavaCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
&gt; +{
&gt; +    LayoutTestController* controller = static_cast&lt;LayoutTestController*&gt;(JSObjectGetPrivate(thisObject));
&gt; +    controller-&gt;setJavaEnabled(true);
&gt; +
&gt; +    return JSValueMakeUndefined(context);
&gt; +}

Can the tests make use of LayoutTestController.overridePreference rather than these Java-specific methods?  It is what is used to enable the WebGL preference in each of those tests.

&gt; +void exitApplicationRunLoop()
&gt; +{
&gt; +    [[NSApplication sharedApplication] stop:nil];
&gt; +    [[NSApplication sharedApplication] postEvent:[NSEvent otherEventWithType:NSApplicationDefined location:NSMakePoint(0, 0) modifierFlags:0 timestamp:0 windowNumber:0 context:0 subtype:0 data1:0 data2:0] atStart:NO];
&gt; +}

The postEvent: call here is a little bit mysterious until you realize that the run loop is blocked waiting on an event.  A comment could make this less mysterious.

&gt; Index: WebKitTools/Scripts/run-webkit-tests
&gt; ===================================================================
&gt; --- WebKitTools/Scripts/run-webkit-tests	(revision 55174)
&gt; +++ WebKitTools/Scripts/run-webkit-tests	(working copy)
&gt; @@ -398,6 +398,16 @@ $expectedDirectory = $ENV{&quot;WebKitExpecte
&gt;  $testResultsDirectory = File::Spec-&gt;rel2abs($testResultsDirectory);
&gt;  my $testResults = File::Spec-&gt;catfile($testResultsDirectory, &quot;results.html&quot;);
&gt;  
&gt; +if (isAppleMacWebKit()) {
&gt; +    print STDERR &quot;Compiling Java tests\n&quot;;
&gt; +    my $javaTestsDirectory = catdir($testDirectory, &quot;java&quot;);
&gt; +
&gt; +    if (system(&quot;/usr/bin/make -C $javaTestsDirectory&quot;)) {
&gt; +        exit 1;
&gt; +    }
&gt; +}

This will break if $testDirectory happens to contain a space or shell meta-character.  You can avoid this by using: system “/usr/bin/make”, “-C”, $javaTestsDirectory

&gt; +        * java/Makefile: Added. Compile all .java files in the directory.

Please make sure that you add .class files to the svn:ignore property.


&gt; Index: LayoutTests/java/Makefile
&gt; ===================================================================
&gt; --- LayoutTests/java/Makefile	(revision 0)
&gt; +++ LayoutTests/java/Makefile	(revision 0)
&gt; @@ -0,0 +1,41 @@
&gt; +# Copyright (C) 2010 Apple Inc. All rights reserved.
&gt; +#
&gt; +# Redistribution and use in source and binary forms, with or without
&gt; +# modification, are permitted provided that the following conditions
&gt; +# are met:
&gt; +#
&gt; +# 1.  Redistributions of source code must retain the above copyright
&gt; +#     notice, this list of conditions and the following disclaimer. 
&gt; +# 2.  Redistributions in binary form must reproduce the above copyright
&gt; +#     notice, this list of conditions and the following disclaimer in the
&gt; +#     documentation and/or other materials provided with the distribution. 
&gt; +# 3.  Neither the name of Apple Computer, Inc. (&quot;Apple&quot;) nor the names of
&gt; +#     its contributors may be used to endorse or promote products derived
&gt; +#     from this software without specific prior written permission. 

This looks like the old license header.

r=me, but I’d suggest checking whether you can use overridePreference rather than introducing a new call on LayoutTestController.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193194</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-02-23 17:23:39 -0800</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/changeset/55177&gt;, addressing review comments. I forgot about overridePreference!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25682</attachid>
            <date>2008-12-02 14:23:18 -0800</date>
            <delta_ts>2010-02-23 16:14:49 -0800</delta_ts>
            <desc>Hypothetical patch to allow Java to be enabled</desc>
            <filename>enable-java.txt</filename>
            <type>text/plain</type>
            <size>4585</size>
            <attacher name="Pam Greene (IRC:pamg)">pam</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM4OTE2
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDgtMTIt
MDIgIFBhbWVsYSBHcmVlbmUgIDxwYW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoc2V0SmF2YUVuYWJsZWRDYWxsYmFjayk6IGFkZGVk
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKTogYWRkZWQg
InNldEphdmFFbmFibGVkIgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmg6IGFkZGVkIHNldEphdmFFbmFibGVkCisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
bWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldEphdmFFbmFibGVkKTogYWRkZWQKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93
aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldEphdmFFbmFibGVkKTogYWRkZWQKKwogMjAwOC0xMi0wMiAgRXJpYyBTZWlkZWwg
IDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgS2lsemVyLgpJ
bmRleDogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMzg4
NjEpCisrKyBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI3MSw2ICsyNzEsMTUgQEAgc3RhdGljIEpTVmFsdWVSZWYgY2xlYXJQZXJzaXN0
ZW50VXNlclN0eQogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0K
IAorc3RhdGljIEpTVmFsdWVSZWYgc2V0SmF2YUVuYWJsZWRDYWxsYmFjayhKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNp
emVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVl
UmVmKiBleGNlcHRpb24pCit7CisgICAgLy8gSGFzIG1hYyAmIHdpbmRvd3MgaW1wbGVtZW50YXRp
b24KKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nh
c3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkp
OworICAgIGNvbnRyb2xsZXItPnNldEphdmFFbmFibGVkKEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4
dCwgYXJndW1lbnRzWzBdKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29u
dGV4dCk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIGRlY29kZUhvc3ROYW1lQ2FsbGJhY2soSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlz
T2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNb
XSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIC8vIEhhcyBtYWMgaW1wbGVtZW50YXRp
b24KQEAgLTc5Niw2ICs4MDUsNyBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6CiAgICAgICAgIHsgInNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0ZSIs
IHNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0ZUNhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAg
ICAgICAgIHsgInNldEN1c3RvbVBvbGljeURlbGVnYXRlIiwgc2V0Q3VzdG9tUG9saWN5RGVsZWdh
dGVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXREYXRhYmFzZVF1b3RhIiwgc2V0RGF0
YWJhc2VRdW90YUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sIAorICAgICAgICB7ICJzZXRKYXZhRW5hYmxlZCIs
IHNldEphdmFFbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0SmF2YVNjcmlw
dFByb2ZpbGluZ0VuYWJsZWQiLCBzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZENhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE1haW5GcmFtZUlzRmlyc3RSZXNwb25kZXIiLCBzZXRN
YWluRnJhbWVJc0ZpcnN0UmVzcG9uZGVyQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0
UGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb24iLCBzZXRQZXJzaXN0ZW50VXNlclN0eWxl
U2hlZXRMb2NhdGlvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCkluZGV4OiBEdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIER1bXBSZW5kZXJUcmVlL0xheW91dFRl
c3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDM4ODYxKQorKysgRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKEpTU3RyaW5nUmVmIHBhdGgpOwog
ICAgIHZvaWQgc2V0UGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oSlNTdHJpbmdSZWYg
cGF0aCk7CiAgICAgdm9pZCBjbGVhclBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldCgpOworICAgIHZv
aWQgc2V0SmF2YUVuYWJsZWQoYm9vbCBmbGFnKTsKICAgICBpbnQgd2luZG93Q291bnQoKTsKICAg
ICAKICAgICBib29sIGVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZChKU1N0
cmluZ1JlZiBpZCk7CkluZGV4OiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xs
ZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250
cm9sbGVyTWFjLm1tCShyZXZpc2lvbiAzODg2MSkKKysrIER1bXBSZW5kZXJUcmVlL21hYy9MYXlv
dXRUZXN0Q29udHJvbGxlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQ0LDYgKzI0NCwxMSBA
QCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhclBlcnNpc3RlCiAgICAgOjpzZXRQZXJz
aXN0ZW50VXNlclN0eWxlU2hlZXRMb2NhdGlvbigwKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0SmF2YUVuYWJsZWQoYm9vbCBmbGFnKQoreworICAgIFtbV2ViUHJlZmVyZW5j
ZXMgc3RhbmRhcmRQcmVmZXJlbmNlc10gc2V0SmF2YUVuYWJsZWQ6ZmxhZ107Cit9CisKIHZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFdpbmRvd0lzS2V5KGJvb2wgd2luZG93SXNLZXkpCiB7
CiAgICAgbV93aW5kb3dJc0tleSA9IHdpbmRvd0lzS2V5OwpJbmRleDogRHVtcFJlbmRlclRyZWUv
d2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBEdW1wUmVuZGVy
VHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCShyZXZpc2lvbiAzODg2MSkKKysr
IER1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ5MSw2ICs0OTEsMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xl
YXJQZXJzaXN0ZQogICAgIDo6c2V0UGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oMCk7
CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEphdmFFbmFibGVkKGJvb2wgZmxh
ZykKK3sKKyAgICBwcmVmZXJlbmNlcy0+c2V0SmF2YUVuYWJsZWQoZmxhZyk7Cit9CisKIHZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFdpbmRvd0lzS2V5KGJvb2wgZmxhZykKIHsKICAgICBD
T01QdHI8SVdlYlZpZXc+IHdlYlZpZXc7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49339</attachid>
            <date>2010-02-23 16:14:49 -0800</date>
            <delta_ts>2010-02-23 17:00:50 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>EnableJavaTests.txt</filename>
            <type>text/plain</type>
            <size>24278</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU1MTc0KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTAtMDItMjMgIEFsZXhleSBQcm9za3VyeWFr
b3YgIDxhcEBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjAy
CisgICAgICAgIEVuYWJsZSBKYXZhIGluIER1bXBSZW5kZXJUcmVlIChvbiBNYWMpCisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5oOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKGV4aXRBcHBsaWNhdGlvblJ1
bkxvb3ApOgorICAgICAgICAoZHVtcCk6CisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAgRHVt
cFJlbmRlclRyZWUgbm93IHJ1bnMgYW4gTlNBcHBsaWNhdGlvbiwgbm90IGp1c3QgYW4gZXZlbnQg
bG9vcC4gVGhpcyB3YXksIHRoZSBKYXZhIHBsdWctaW4KKyAgICAgICAgY2FuIHN0YXJ0IHdpdGhv
dXQgZnJlZXppbmcuCisKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKGVuYWJsZUphdmFDYWxsYmFjayk6CisgICAgICAgIChMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21h
Yy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjpzZXRKYXZhRW5hYmxlZCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0
VGVzdENvbnRyb2xsZXJRdC5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
SmF2YUVuYWJsZWQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250
cm9sbGVyUXQuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRy
b2xsZXJXaW4uY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEphdmFFbmFi
bGVkKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4
LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRKYXZhRW5hYmxlZCk6Cisg
ICAgICAgIEFkZGVkIGEgbmV3IG1ldGhvZCBmb3IgZW5hYmxpbmcgSmF2YS4gQ2FuJ3QgZW5hYmxl
IGl0IGV2ZXJ5d2hlcmUgYmVjYXVzZSBXM0MgSFRNTCB0ZXN0cworICAgICAgICB3b3VsZCBmYWls
LCBzZWUgcjEwMzIzLgorCisgICAgICAgICogU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzOiBDb21w
aWxlIGphdmEgc291cmNlcyBpbiBMYXlwdXRUZXN0cy9qYXZhLgorCiAyMDEwLTAyLTIzICBKZXN1
cyBTYW5jaGV6LVBhbGVuY2lhICA8amVzdXMucGFsZW5jaWFAb3BlbmJvc3NhLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KSW5kZXg6IFdlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuaAkocmV2aXNpb24gNTUxNzQp
CisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC01Myw2ICs1Myw3IEBAIHN0ZDo6d3N0cmluZyB1cmxTdWl0YWJsZUZvclRlc3RS
ZXN1bHQoY28KIGNsYXNzIExheW91dFRlc3RDb250cm9sbGVyOwogCiBleHRlcm4gdm9sYXRpbGUg
Ym9vbCBkb25lOwordm9pZCBleGl0QXBwbGljYXRpb25SdW5Mb29wKCk7CiAKIC8vIEZJWE1FOiBU
aGlzIGlzIGEgYmFkIGFic3RyYWN0aW9uLiAgV2Ugc2hvdWxkIGluc3RlZCBwYXNzIHRoaXMgdG8g
b3RoZXIgY29udHJvbGxlciBvYmplY3RzIHdoaWNoIG5lZWQgYWNjZXNzIHRvIGl0LgogZXh0ZXJu
IExheW91dFRlc3RDb250cm9sbGVyKiBnTGF5b3V0VGVzdENvbnRyb2xsZXI7CkluZGV4OiBXZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
CShyZXZpc2lvbiA1NTE3NCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRl
c3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3OCw2ICsxMjc4LDE1IEBAIHN0
YXRpYyBKU1ZhbHVlUmVmIGFwaVRlc3ROZXdXaW5kb3dEYXRhTG8KICAgICByZXR1cm4gSlNWYWx1
ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKKworc3RhdGljIEpTVmFsdWVSZWYgZW5hYmxl
SmF2YUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwg
SlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFs
dWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBMYXlvdXRU
ZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9s
bGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5z
ZXRKYXZhRW5hYmxlZCh0cnVlKTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChj
b250ZXh0KTsKK30KKwogLy8gU3RhdGljIFZhbHVlcwogCiBzdGF0aWMgSlNWYWx1ZVJlZiBnZXRH
bG9iYWxGbGFnQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNP
YmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQpA
QCAtMTQ1Miw2ICsxNDYxLDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OgogICAgICAgICB7ICJ3YWl0VW50aWxEb25lIiwgd2FpdFVudGlsRG9uZUNhbGxiYWNrLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCiAgICAgICAgIHsgIndpbmRvd0NvdW50Iiwgd2luZG93Q291bnRDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAogICAgICAgICB7ICJ3aGl0ZUxpc3RBY2Nlc3NGcm9tT3JpZ2luIiwgd2hpdGVMaXN0QWNj
ZXNzRnJvbU9yaWdpbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgImVuYWJsZUphdmEiLCBl
bmFibGVKYXZhQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAwLCAwLCAwIH0KICAgICB9Owog
CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmgJKHJldmlzaW9uIDU1MTc0KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzYsOSArNzYsMTAgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUoYm9vbCBzZXREZWxlZ2F0
ZSwgYm9vbCBwZXJtaXNzaXZlKTsKICAgICB2b2lkIHNldERhdGFiYXNlUXVvdGEodW5zaWduZWQg
bG9uZyBsb25nIHF1b3RhKTsKICAgICB2b2lkIHNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5G
b3JVUkxTY2hlbWUoYm9vbCBmb3JiaWRkZW4sIEpTU3RyaW5nUmVmIHNjaGVtZSk7Ci0gICAgdm9p
ZCBzZXRJY29uRGF0YWJhc2VFbmFibGVkKGJvb2wgaWNvbkRhdGFiYXNlRW5hYmxlZCk7Ci0gICAg
dm9pZCBzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZChib29sIHByb2ZpbGluZ0VuYWJsZWQp
OwotICAgIHZvaWQgc2V0TWFpbkZyYW1lSXNGaXJzdFJlc3BvbmRlcihib29sIGZsYWcpOworICAg
IHZvaWQgc2V0SWNvbkRhdGFiYXNlRW5hYmxlZChib29sKTsKKyAgICB2b2lkIHNldEphdmFTY3Jp
cHRQcm9maWxpbmdFbmFibGVkKGJvb2wpOworICAgIHZvaWQgc2V0SmF2YUVuYWJsZWQoYm9vbCk7
CisgICAgdm9pZCBzZXRNYWluRnJhbWVJc0ZpcnN0UmVzcG9uZGVyKGJvb2wpOwogICAgIHZvaWQg
c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoaW50IGNvZGUsIEpTU3RyaW5nUmVmIG1lc3NhZ2UpOwog
ICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3Vi
bGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpOwogICAgIHZvaWQgc2V0UGVyc2lzdGVudFVz
ZXJTdHlsZVNoZWV0TG9jYXRpb24oSlNTdHJpbmdSZWYgcGF0aCk7CkluZGV4OiBXZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCShyZXZpc2lvbiA1
NTE3NCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5t
bQkod29ya2luZyBjb3B5KQpAQCAtNTgxLDYgKzU4MSwxMiBAQCBzdGF0aWMgdm9pZCBydW5UZXN0
aW5nU2VydmVyTG9vcCgpCiAgICAgfQogfQogCit2b2lkIGV4aXRBcHBsaWNhdGlvblJ1bkxvb3Ao
KQoreworICAgIFtbTlNBcHBsaWNhdGlvbiBzaGFyZWRBcHBsaWNhdGlvbl0gc3RvcDpuaWxdOwor
ICAgIFtbTlNBcHBsaWNhdGlvbiBzaGFyZWRBcHBsaWNhdGlvbl0gcG9zdEV2ZW50OltOU0V2ZW50
IG90aGVyRXZlbnRXaXRoVHlwZTpOU0FwcGxpY2F0aW9uRGVmaW5lZCBsb2NhdGlvbjpOU01ha2VQ
b2ludCgwLCAwKSBtb2RpZmllckZsYWdzOjAgdGltZXN0YW1wOjAgd2luZG93TnVtYmVyOjAgY29u
dGV4dDowIHN1YnR5cGU6MCBkYXRhMTowIGRhdGEyOjBdIGF0U3RhcnQ6Tk9dOworfQorCiBzdGF0
aWMgdm9pZCBwcmVwYXJlQ29uc2lzdGVudFRlc3RpbmdFbnZpcm9ubWVudCgpCiB7CiAgICAgcG9z
ZUFzQ2xhc3MoIkR1bXBSZW5kZXJUcmVlUGFzdGVib2FyZCIsICJOU1Bhc3RlYm9hcmQiKTsKQEAg
LTExMDksNiArMTExNSw3IEBAIHZvaWQgZHVtcCgpCiAgICAgZmZsdXNoKHN0ZGVycik7CiAKICAg
ICBkb25lID0gWUVTOworICAgIGV4aXRBcHBsaWNhdGlvblJ1bkxvb3AoKTsKIH0KIAogc3RhdGlj
IGJvb2wgc2hvdWxkTG9nRnJhbWVMb2FkRGVsZWdhdGVzKGNvbnN0IGNoYXIqIHBhdGhPclVSTCkK
QEAgLTEyMjUsMTEgKzEyMzIsMTEgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBzdHJpbmcm
IHRlc3RQYQogICAgIE5TQXV0b3JlbGVhc2VQb29sICpwb29sID0gW1tOU0F1dG9yZWxlYXNlUG9v
bCBhbGxvY10gaW5pdF07CiAgICAgW21haW5GcmFtZSBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0
IHJlcXVlc3RXaXRoVVJMOnVybF1dOwogICAgIFtwb29sIHJlbGVhc2VdOwotICAgIHdoaWxlICgh
ZG9uZSkgewotICAgICAgICBwb29sID0gW1tOU0F1dG9yZWxlYXNlUG9vbCBhbGxvY10gaW5pdF07
Ci0gICAgICAgIFtbTlNSdW5Mb29wIGN1cnJlbnRSdW5Mb29wXSBydW5Nb2RlOk5TRGVmYXVsdFJ1
bkxvb3BNb2RlIGJlZm9yZURhdGU6W05TRGF0ZSBkaXN0YW50UGFzdF1dOwotICAgICAgICBbcG9v
bCByZWxlYXNlXTsKLSAgICB9CisKKyAgICBwb29sID0gW1tOU0F1dG9yZWxlYXNlUG9vbCBhbGxv
Y10gaW5pdF07CisgICAgW1tOU0FwcGxpY2F0aW9uIHNoYXJlZEFwcGxpY2F0aW9uXSBydW5dOwor
ICAgIEFTU0VSVChkb25lKTsKKyAgICBbcG9vbCByZWxlYXNlXTsKIAogICAgIHBvb2wgPSBbW05T
QXV0b3JlbGVhc2VQb29sIGFsbG9jXSBpbml0XTsKICAgICBbRXZlbnRTZW5kaW5nQ29udHJvbGxl
ciBjbGVhclNhdmVkRXZlbnRzXTsKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0JKHJldmlzaW9uIDU1
MTc0KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9s
bGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMDAsNiArMzAwLDExIEBAIHZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldEljb25EYXRhYmEKICAgICBbc2hhcmVkV2ViSWNvbkRhdGFiYXNl
IHNldEVuYWJsZWQ6aWNvbkRhdGFiYXNlRW5hYmxlZF07CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldEphdmFFbmFibGVkKGJvb2wgamF2YUVuYWJsZWQpCit7CisgICAgW1tbbWFp
bkZyYW1lIHdlYlZpZXddIHByZWZlcmVuY2VzXSBzZXRKYXZhRW5hYmxlZDpqYXZhRW5hYmxlZF07
Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEphdmFTY3JpcHRQcm9maWxpbmdF
bmFibGVkKGJvb2wgcHJvZmlsaW5nRW5hYmxlZCkKIHsKICAgICBbW1ttYWluRnJhbWUgd2ViVmll
d10gcHJlZmVyZW5jZXNdIHNldERldmVsb3BlckV4dHJhc0VuYWJsZWQ6cHJvZmlsaW5nRW5hYmxl
ZF07CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJv
bGxlclF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9M
YXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAkocmV2aXNpb24gNTUxNzQpCisrKyBXZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzIzLDYgKzMyMywxMSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRB
bGxvd0ZpbGVBCiAgICAgbV9kcnQtPndlYlBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0QXR0cmlidXRl
KFFXZWJTZXR0aW5nczo6TG9jYWxDb250ZW50Q2FuQWNjZXNzRmlsZVVybHMsIGVuYWJsZWQpOwog
fQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRKYXZhRW5hYmxlZChib29sKQorewor
ICAgIC8vIE5vdCBpbXBsZW1lbnRlZC4KK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoYm9vbCBlbmFibGUpCiB7CiAgICAgbV90b3BM
b2FkaW5nRnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5n
czo6RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCwgdHJ1ZSk7CkluZGV4OiBXZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCShyZXZp
c2lvbiA1NTE3NCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RD
b250cm9sbGVyUXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTIxLDYgKzEyMSw3IEBAIHB1YmxpYyBz
bG90czoKICAgICB2b2lkIHNldEZyYW1lU2V0RmxhdHRlbmluZ0VuYWJsZWQoYm9vbCBlbmFibGUp
OwogICAgIHZvaWQgc2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCBlbmFi
bGUpOwogICAgIHZvaWQgc2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wgZW5hYmxl
KTsKKyAgICB2b2lkIHNldEphdmFFbmFibGVkKGJvb2wgZW5hYmxlKTsKICAgICB2b2lkIHNldEph
dmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKGJvb2wgZW5hYmxlKTsKICAgICB2b2lkIHNldFRpbWVs
aW5lUHJvZmlsaW5nRW5hYmxlZChib29sIGVuYWJsZSk7CiAgICAgdm9pZCBzZXRGaXhlZENvbnRl
bnRzU2l6ZShpbnQgd2lkdGgsIGludCBoZWlnaHQpOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3Bw
CShyZXZpc2lvbiA1NTE3NCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlv
dXRUZXN0Q29udHJvbGxlcldpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3OCw2ICs2NzgsMTIg
QEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0U21hcnRJbnNlcgogICAgIHZpZXdFZGl0
aW5nLT5zZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoZmxhZyA/IFRSVUUgOiBGQUxTRSk7CiB9
CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEphdmFFbmFibGVkKGJvb2wpCit7Cisg
ICAgLy8gV2luZG93cyBkb2Vzbid0IGhhdmUgSmF2YSBieSBkZWZhdWx0LCBzbyB3ZSBkb24ndCBy
dW4gdGVzdHMuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIHZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKGJvb2wgZmxhZykKIHsK
ICAgICBDT01QdHI8SVdlYlZpZXc+IHdlYlZpZXc7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAkocmV2
aXNpb24gNTUxNzQpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0
Q29udHJvbGxlcld4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDYgKzE0MywxMSBAQCB2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpzZXRTbWFydEluc2VyCiAgICAgLy8gRklYTUU6IGltcGxl
bWVudAogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRKYXZhRW5hYmxlZChib29s
IGZsYWcpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorfQorCiB2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZChib29sIGZsYWcpCiB7CiB9
CkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzCShyZXZpc2lvbiA1NTE3NCkK
KysrIFdlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cwkod29ya2luZyBjb3B5KQpA
QCAtMzk4LDYgKzM5OCwxNiBAQCAkZXhwZWN0ZWREaXJlY3RvcnkgPSAkRU5WeyJXZWJLaXRFeHBl
Y3RlCiAkdGVzdFJlc3VsdHNEaXJlY3RvcnkgPSBGaWxlOjpTcGVjLT5yZWwyYWJzKCR0ZXN0UmVz
dWx0c0RpcmVjdG9yeSk7CiBteSAkdGVzdFJlc3VsdHMgPSBGaWxlOjpTcGVjLT5jYXRmaWxlKCR0
ZXN0UmVzdWx0c0RpcmVjdG9yeSwgInJlc3VsdHMuaHRtbCIpOwogCitpZiAoaXNBcHBsZU1hY1dl
YktpdCgpKSB7CisgICAgcHJpbnQgU1RERVJSICJDb21waWxpbmcgSmF2YSB0ZXN0c1xuIjsKKyAg
ICBteSAkamF2YVRlc3RzRGlyZWN0b3J5ID0gY2F0ZGlyKCR0ZXN0RGlyZWN0b3J5LCAiamF2YSIp
OworCisgICAgaWYgKHN5c3RlbSgiL3Vzci9iaW4vbWFrZSAtQyAkamF2YVRlc3RzRGlyZWN0b3J5
IikpIHsKKyAgICAgICAgZXhpdCAxOworICAgIH0KK30KKworCiBwcmludCAiUnVubmluZyB0ZXN0
cyBmcm9tICR0ZXN0RGlyZWN0b3J5XG4iOwogaWYgKCRwaXhlbFRlc3RzKSB7CiAgICAgcHJpbnQg
IkVuYWJsaW5nIHBpeGVsIHRlc3RzIHdpdGggYSB0b2xlcmFuY2Ugb2YgJHRvbGVyYW5jZSVcbiI7
CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiA1NTE3NCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDEwLTAyLTIzICBBbGV4ZXkgUHJvc2t1cnlh
a292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYw
MgorICAgICAgICBFbmFibGUgSmF2YSBpbiBEdW1wUmVuZGVyVHJlZSAob24gTWFjKQorCisgICAg
ICAgICogZmFzdC9kb20vamF2YS1hcHBsZXQtY2FsbHMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgor
ICAgICAgICAqIGZhc3QvZG9tL2phdmEtYXBwbGV0LWNhbGxzLmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogZmFzdC9kb20vcmVzb3VyY2VzL1Rlc3RBcHBsZXQuY2xhc3M6IFJlbW92ZWQuCisgICAg
ICAgICogZmFzdC9kb20vcmVzb3VyY2VzL1Rlc3RBcHBsZXQuamF2YTogUmVtb3ZlZC4KKyAgICAg
ICAgVGhpcyB0ZXN0IHdhcyBhZGRlZCBpbiBhIGZhaWxpbmcgZm9ybSwgZXZlbiB0aG91Z2ggaXQg
bmV2ZXIgd29ya2VkLiBUaGUgbmV3IHRlc3RzIGNvdmVyCisgICAgICAgIGV2ZXJ5dGhpbmcgaXQg
d2FzIG1lYW50IHRvIGNvdmVyLgorCisgICAgICAgICogamF2YS9TaGFyZWRBcHBsZXQuamF2YTog
QWRkZWQuIFRoaXMgY2xhc3Mgd2lsbCBoYXZlIG1ldGhvZHMgZm9yIHNpbXBsZSB0ZXN0cywgYnV0
IGl0J3MKKyAgICAgICAgYWxzbyBwb3NzaWJsZSB0byBqdXN0IGFkZCBuZXcgc291cmNlIGZpbGVz
LgorCisgICAgICAgICogamF2YS9NYWtlZmlsZTogQWRkZWQuIENvbXBpbGUgYWxsIC5qYXZhIGZp
bGVzIGluIHRoZSBkaXJlY3RvcnkuCisKKyAgICAgICAgKiBqYXZhOiBBZGRlZC4KKyAgICAgICAg
KiBqYXZhL2FyZ3VtZW50LXRvLW9iamVjdC10eXBlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogamF2YS9hcmd1bWVudC10by1vYmplY3QtdHlwZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBqYXZhL2FycmF5LXJldHVybi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGphdmEv
YXJyYXktcmV0dXJuLmh0bWw6IEFkZGVkLgorICAgICAgICBBZGRlZCB0ZXN0cyBmb3IgcmVjZW50
bHkgZml4ZWQgYnVncy4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVkOgorICAgICAg
ICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vd2luL1NraXBwZWQ6
CisgICAgICAgIEphdmEgdGVzdHMgb25seSB3b3JrIG9uIE1hYyBjdXJyZW50bHkuCisKIDIwMTAt
MDItMjMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFRpbSBIYXRjaGVyIGFuZCBQYXZlbCBGZWxkbWFuLgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vamF2YS1hcHBsZXQtY2FsbHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL2phdmEtYXBwbGV0LWNhbGxzLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gNTUxNzQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9qYXZhLWFwcGxldC1jYWxscy1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzAsMCBAQAotUmVxdWlyZXMgSmF2YSBw
bHVnaW4gaW5zdGFsbGVkIGFuZCBlbmFibGVkLiBUaGlzIHRlc3RzIHRoYXQgY2FsbGluZyBmdW5j
dGlvbnMgb24gSmF2YSBBcHBsZXQgd29ya3MuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
LQotCi0gRkFJTCBkb2N1bWVudC50ZXN0YXBwbGV0LmdldFN0cmluZygpID09ICdhYmNkZWZnJyBz
aG91bGQgYmUgdHJ1ZS4gVGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUmVzdWx0IG9mIGV4cHJl
c3Npb24gJ2RvY3VtZW50LnRlc3RhcHBsZXQuZ2V0U3RyaW5nJyBbdW5kZWZpbmVkXSBpcyBub3Qg
YSBmdW5jdGlvbi4KLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01Q
TEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9qYXZhLWFwcGxldC1jYWxscy5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2phdmEtYXBwbGV0LWNhbGxzLmh0
bWwJKHJldmlzaW9uIDU1MTc0KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vamF2YS1hcHBsZXQt
Y2FsbHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwzNCArMCwwIEBACi08aHRtbD4KLTxoZWFk
PgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotCi08
QVBQTEVUIENPREVCQVNFPSJyZXNvdXJjZXMiIENPREU9IlRlc3RBcHBsZXQiIFdJRFRIPTEgSEVJ
R0hUPTEgTkFNRT0idGVzdGFwcGxldCI+Ci08L0FQUExFVD4KLQotPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Ci0KLTxzY3JpcHQ+Ci1kZXNjcmlwdGlvbignUmVxdWlyZXMgSmF2YSBwbHVnaW4gaW5z
dGFsbGVkIGFuZCBlbmFibGVkLiAgVGhpcyB0ZXN0cyB0aGF0IGNhbGxpbmcgZnVuY3Rpb25zIG9u
IEphdmEgQXBwbGV0IHdvcmtzLicpOwotCi10cnkgewotICAgIGRvY3VtZW50LnRlc3RhcHBsZXQu
c2V0U3RyaW5nKCJhYmNkZWZnIik7Ci19IGNhdGNoIChlKSB7Ci0gICAgLy8gRG8gbm90aGluZy4K
LX0KLQotLy8gVGhlIGFwcGxldCBtYXkgcmV0dXJuICdhYmNkZWZnJyBhcyBhbiBvYmplY3QgcmF0
aGVyIHRoYW4gYSBzdHJpbmcsIHNvCi0vLyB3ZSdsbCBsZXQgSmF2YVNjcmlwdCBkbyB0aGUgY29t
cGFyaXNvbiBiZWZvcmUgZXZhbHVhdGluZyBpdC4KLXNob3VsZEJlVHJ1ZSgiZG9jdW1lbnQudGVz
dGFwcGxldC5nZXRTdHJpbmcoKSA9PSAnYWJjZGVmZyciKTsKLQotdmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KLQotCi0KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9UZXN0QXBwbGV0LmNsYXNzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
Q2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5
cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L3Jlc291cmNlcy9UZXN0QXBwbGV0LmphdmEKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vcmVzb3VyY2VzL1Rlc3RBcHBsZXQuamF2YQkocmV2aXNpb24gNTUxNzQpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvVGVzdEFwcGxldC5qYXZhCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDQyICswLDAgQEAKLS8qDQotICogQ29weXJpZ2h0IChDKSAyMDA4IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotICoNCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCi0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMN
Ci0gKiBhcmUgbWV0Og0KLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
DQotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQ0KLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQotICoNCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQNCi0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUNCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVINCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IN
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwNCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sDQotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SDQotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQ0KLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVA0KLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQotICov
DQotDQotLyogU291cmNlIGZvciBhIHRlc3QgYXBwbGV0IHVzZWQgYnkgbGF5b3V0IHRlc3RzLiAq
Lw0KLQ0KLWltcG9ydCBqYXZhLmFwcGxldC4qOw0KLQ0KLXB1YmxpYyBjbGFzcyBUZXN0QXBwbGV0
IGV4dGVuZHMgQXBwbGV0IHsNCi0gICAgcHJpdmF0ZSBTdHJpbmcgc3RyOw0KLQ0KLSAgICBwdWJs
aWMgdm9pZCBpbml0KCkge30NCi0NCi0gICAgcHVibGljIHZvaWQgc2V0U3RyaW5nKFN0cmluZyBz
dHIpIHsNCi0gICAgICAgIHRoaXMuc3RyID0gc3RyOw0KLSAgICB9DQotDQotICAgIHB1YmxpYyBT
dHJpbmcgZ2V0U3RyaW5nKCkgew0KLSAgICAgICAgcmV0dXJuIHN0cjsNCi0gICAgfQ0KLX0NCklu
ZGV4OiBMYXlvdXRUZXN0cy9qYXZhL01ha2VmaWxlCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2phdmEvTWFrZWZpbGUJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qYXZhL01ha2VmaWxl
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQxIEBACisjIENvcHlyaWdodCAoQykgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorIyAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorIyAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgor
IyAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZAorIyAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyMgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisjIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K0pDID0gamF2YWMKK0pGTEFHUyA9CisuU1VGRklYRVM6IC5qYXZhIC5jbGFzcworCisuamF2YS5j
bGFzczoKKwkkKEpDKSAkKEpGTEFHUykgJCouamF2YQorCitDTEFTU0VTID0gJCh3aWxkY2FyZCAq
LmphdmEpCisKK2RlZmF1bHQ6IGNsYXNzZXMKKworY2xhc3NlczogJChDTEFTU0VTOi5qYXZhPS5j
bGFzcykKKworY2xlYW46CisJJChSTSkgKi5jbGFzcwpJbmRleDogTGF5b3V0VGVzdHMvamF2YS9T
aGFyZWRBcHBsZXQuamF2YQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qYXZhL1NoYXJlZEFw
cGxldC5qYXZhCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvamF2YS9TaGFyZWRBcHBsZXQu
amF2YQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMSBAQAoraW1wb3J0IGphdmEuYXBwbGV0LkFw
cGxldDsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworcHVibGljIGNsYXNzIFNoYXJlZEFwcGxldCBl
eHRlbmRzIEFwcGxldAoreworICAgIHB1YmxpYyBTdHJpbmcgb2JqZWN0VG9TdHJpbmcoT2JqZWN0
IG9iaikgeworICAgICAgICByZXR1cm4gb2JqLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgcHVi
bGljIFN0cmluZ1tdIHN0cmluZ0FycmF5KCkgeworICAgICAgICByZXR1cm4gbmV3IFN0cmluZ1td
IHsgIk9uZSIsICJUd28iLCAiVGhyZWUiIH07CisgICAgfQorCisgICAgcHVibGljIExpc3Q8U3Ry
aW5nPiBzdHJpbmdMaXN0KCkgeworICAgICAgICBMaXN0PFN0cmluZz4gcmVzdWx0ID0gbmV3IEFy
cmF5TGlzdDxTdHJpbmc+KCk7CisgICAgICAgIHJlc3VsdC5hZGQoIk9uZSIpOworICAgICAgICBy
ZXN1bHQuYWRkKCJUd28iKTsKKyAgICAgICAgcmVzdWx0LmFkZCgiVGhyZWUiKTsKKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICB9Cit9CkluZGV4OiBMYXlvdXRUZXN0cy9qYXZhL2FyZ3VtZW50
LXRvLW9iamVjdC10eXBlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9q
YXZhL2FyZ3VtZW50LXRvLW9iamVjdC10eXBlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2phdmEvYXJndW1lbnQtdG8tb2JqZWN0LXR5cGUtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKK1Rlc3QgZm9yIGJ1ZyAzNTIwMjogQ2FsbGluZyBK
YXZhIG1ldGhvZCB3aGljaCBhY2NlcHRzIE9iamVjdCBhbHdheXMgcGFzc2VzIGEgbnVsbCBhcmd1
bWVudC4KKworUEFTUyBkb2N1bWVudC5qYXZhVGVzdC5vYmplY3RUb1N0cmluZygiUNCQU1MiKSA9
PSAiUNCQU1MiIGlzIHRydWUKK1BBU1MgZG9jdW1lbnQuamF2YVRlc3Qub2JqZWN0VG9TdHJpbmco
dW5kZWZpbmVkKSA9PSAidW5kZWZpbmVkIiBpcyB0cnVlCitQQVNTIGRvY3VtZW50LmphdmFUZXN0
Lm9iamVjdFRvU3RyaW5nKDUpID09ICI1LjAiIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorIApJbmRleDogTGF5b3V0VGVzdHMvamF2YS9h
cmd1bWVudC10by1vYmplY3QtdHlwZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ph
dmEvYXJndW1lbnQtdG8tb2JqZWN0LXR5cGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2phdmEvYXJndW1lbnQtdG8tb2JqZWN0LXR5cGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwzMSBAQAorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmVuYWJsZUphdmEoKTsKKzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+CisKKzxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zNTIwMiI+YnVnIDM1MjAyPC9hPjoKK0NhbGxpbmcgSmF2YSBtZXRo
b2Qgd2hpY2ggYWNjZXB0cyBPYmplY3QgYWx3YXlzIHBhc3NlcyBhIG51bGwgYXJndW1lbnQuPC9w
PgorCis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxlbWJlZCBuYW1lPSJwbGciIHR5cGU9ImFw
cGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiPjwvZW1iZWQ+Cis8QVBQTEVUIENPREU9
IlNoYXJlZEFwcGxldC5jbGFzcyIgTkFNRT0iamF2YVRlc3QiIFdJRFRIPTE1MCBIRUlHSFQ9MjUg
TUFZU0NSSVBUPjwvQVBQTEVUPgorPHNjcmlwdD4KKworLy8gVGhlIHJldHVybmVkIHJlc3VsdCBz
aG91bGQgYmUgYSBwcmltaXRpdmUsIGJ1dCBXZWJLaXQgbWFrZXMgYSBzdHJpbmcgb2JqZWN0IG91
dCBvZiBpdC4KKy8vIFVudGlsIHRoaXMgaXMgZml4ZWQsIGNoZWNraW5nIHRoZSByZXN1bHQgd2l0
aCA9PSBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gc2hvdWxkQmUuCitzaG91bGRCZSgnZG9jdW1lbnQu
amF2YVRlc3Qub2JqZWN0VG9TdHJpbmcoIlDQkFNTIikgPT0gIlDQkFNTIicsICd0cnVlJyk7Citz
aG91bGRCZSgnZG9jdW1lbnQuamF2YVRlc3Qub2JqZWN0VG9TdHJpbmcodW5kZWZpbmVkKSA9PSAi
dW5kZWZpbmVkIicsICd0cnVlJyk7CitzaG91bGRCZSgnZG9jdW1lbnQuamF2YVRlc3Qub2JqZWN0
VG9TdHJpbmcoNSkgPT0gIjUuMCInLCAndHJ1ZScpOworCitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0
cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2phdmEvYXJyYXktcmV0dXJuLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9qYXZhL2FycmF5LXJldHVybi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9qYXZhL2FycmF5LXJldHVybi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTAgQEAKK1Rlc3QgZm9yIGJ1ZyAyMzc0MjogQXBwbGV0IG1ldGhvZHMgY2FuIG5vdCByZXR1
cm4gYXJyYXlzIHRvIEpTLgorCitQQVNTIHN0cmluZ0FycmF5Lmxlbmd0aCBpcyAzCitQQVNTIHN0
cmluZ0FycmF5WzBdID09ICJPbmUiIGlzIHRydWUKK1BBU1Mgc3RyaW5nTGlzdC5nZXRDbGFzcygp
LmdldFNpbXBsZU5hbWUoKSA9PSAiQXJyYXlMaXN0IiBpcyB0cnVlCitQQVNTIHN0cmluZ0xpc3Qu
Z2V0KDApID09ICJPbmUiIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorIApJbmRleDogTGF5b3V0VGVzdHMvamF2YS9hcnJheS1yZXR1cm4u
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qYXZhL2FycmF5LXJldHVybi5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvamF2YS9hcnJheS1yZXR1cm4uaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwzMyBAQAorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmVuYWJsZUphdmEoKTsKKzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzc0MiI+YnVnIDIzNzQyPC9hPjoKK0FwcGxl
dCBtZXRob2RzIGNhbiBub3QgcmV0dXJuIGFycmF5cyB0byBKUy48L3A+CisKKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPGVtYmVkIG5hbWU9InBsZyIgdHlwZT0iYXBwbGljYXRpb24veC13ZWJr
aXQtdGVzdC1uZXRzY2FwZSI+PC9lbWJlZD4KKzxBUFBMRVQgQ09ERT0iU2hhcmVkQXBwbGV0LmNs
YXNzIiBOQU1FPSJqYXZhVGVzdCIgV0lEVEg9MTUwIEhFSUdIVD0yNSBNQVlTQ1JJUFQ+PC9BUFBM
RVQ+Cis8c2NyaXB0PgorCit2YXIgc3RyaW5nQXJyYXkgPSBkb2N1bWVudC5qYXZhVGVzdC5zdHJp
bmdBcnJheSgpOwordmFyIHN0cmluZ0xpc3QgPSBkb2N1bWVudC5qYXZhVGVzdC5zdHJpbmdMaXN0
KCk7CisKK3Nob3VsZEJlKCdzdHJpbmdBcnJheS5sZW5ndGgnLCAnMycpOworc2hvdWxkQmUoJ3N0
cmluZ0FycmF5WzBdID09ICJPbmUiJywgJ3RydWUnKTsKK3Nob3VsZEJlKCdzdHJpbmdMaXN0Lmdl
dENsYXNzKCkuZ2V0U2ltcGxlTmFtZSgpID09ICJBcnJheUxpc3QiJywgJ3RydWUnKTsKK3Nob3Vs
ZEJlKCdzdHJpbmdMaXN0LmdldCgwKSA9PSAiT25lIicsICd0cnVlJyk7CisKK3N1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQJKHJldmlzaW9uIDU1MTc0KQorKysgTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTU4ODEsMyArNTg4MSw1IEBA
IGZhc3QvZm9ybXMvcmVzdG9yZS1zZWxlY3Rpb24tYWZ0ZXItbGF5b3UKICMgU2VlIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTMwMAogaHR0cC90ZXN0cy9sb2FkaW5n
LzMwNy1hZnRlci0zMDMtYWZ0ZXItcG9zdC5odG1sCiAKKyMgRHVtcFJlbmRlclRyZWUgY29kZSB0
byBlbmFibGUgSmF2YSBpcyBjdXJyZW50bHkgYSBuby1vcAoramF2YQpJbmRleDogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vcXQvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9xdC9Ta2lwcGVkCShyZXZpc2lvbiA1NTE3NCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3F0
L1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTUwOTEsMyArNTA5MSw2IEBAIGVkaXRpbmcvc2Vs
ZWN0aW9uL2V4dGVuZC1hZnRlci1tb3VzZS1zZWwKICMgTmVlZHMgdG8gbWFrZSBzdXJlIHRoZSBy
ZWRpcmVjdC1jaGFpbiBzY2VuYXJpbyBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzE0MTAgd29ya3MKICMgU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNTMwMQogaHR0cC90ZXN0cy9sb2FkaW5nLzMwNy1hZnRlci0zMDMtYWZ0ZXIt
cG9zdC5odG1sCisKKyMgRHVtcFJlbmRlclRyZWUgY29kZSB0byBlbmFibGUgSmF2YSBpcyBjdXJy
ZW50bHkgYSBuby1vcAoramF2YQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBw
ZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQJKHJldmlz
aW9uIDU1MTc0KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQJKHdvcmtpbmcg
Y29weSkKQEAgLTc2NCwzICs3NjQsNiBAQCB3ZWJzb2NrZXQvdGVzdHMvc2ltcGxlLXN0cmVzcy5o
dG1sCiAKICMgTmVlZHMgcGxhdGZvcm0gc3BlY2lmaWMgQVBJIGltcGxlbWVudGVkIGluIERSVCwg
cHJvYmFibHkgbm90IHJlbGV2YW50IGZvciBub24tTWFjIGFuZCBub24tV2luZG93cyBwb3J0cwog
ZmFzdC9sb2FkZXIvYXBpLXRlc3QtbmV3LXdpbmRvdy1kYXRhLWxvYWQtYmFzZS11cmwuaHRtbAor
CisjIER1bXBSZW5kZXJUcmVlIGNvZGUgdG8gZW5hYmxlIEphdmEgaXMgY3VycmVudGx5IGEgbm8t
b3AuIFdpbmRvd3MgZG9lc24ndCBjb21lIHdpdGggSmF2YSBieSBkZWZhdWx0LgoramF2YQo=
</data>
<flag name="review"
          id="32186"
          type_id="1"
          status="+"
          setter="mrowe"
    />
          </attachment>
      

    </bug>

</bugzilla>