<?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>232010</bug_id>
          
          <creation_ts>2021-10-20 05:39:06 -0700</creation_ts>
          <short_desc>Add support for WPT&apos;s per-test reftest fuzzy specification to WebKitTestRunner</short_desc>
          <delta_ts>2021-10-26 02:26:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>Safari Technology Preview</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>LATER</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="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gsnedders</cc>
    
    <cc>jbedard</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1806579</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-10-20 05:39:06 -0700</bug_when>
    <thetext>https://web-platform-tests.org/writing-tests/reftests.html describes the WPT&apos;s per-test fuzziness specification of the form:

  &lt;meta name=fuzzy content=&quot;maxDifference=15;totalPixels=300&quot;&gt;

This bug tracks adding basic support for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806605</commentid>
    <comment_count>1</comment_count>
      <attachid>441878</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-10-20 06:56:57 -0700</bug_when>
    <thetext>Created attachment 441878
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806759</commentid>
    <comment_count>2</comment_count>
      <attachid>441878</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-10-20 12:09:11 -0700</bug_when>
    <thetext>Comment on attachment 441878
Patch

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

Looks good.

The test failures seen on EWS seem like they could be related to this change. I won’d say review+ until we understand that.

&gt; Tools/ImageDiff/ImageDiff.cpp:183
&gt; +                float difference = roundf((*result).percentageDifference * 100.0f) / 100.0f;

I suggest using std::round here instead of roundf. Both are the same function with a different name.

&gt; Tools/ImageDiff/ImageDiff.cpp:184
&gt;                  difference = std::max&lt;float&gt;(difference, 0.01f); // round to 2 decimal places

No need for the &lt;float&gt; here.

&gt; Tools/ImageDiff/PlatformImage.h:61
&gt; +        float percentageDifference;
&gt; +        unsigned long pixelsDifferent;
&gt; +        unsigned long maxChannelDifference;

Consider initializing these all to zero here?

&gt; Tools/TestRunnerShared/ReftestFunctions.h:28
&gt; +#include &lt;wtf/text/WTFString.h&gt;

Only Forward.h is needed to compile a function with String as a return value.

&gt; Tools/TestRunnerShared/ReftestFunctions.h:36
&gt; +String getFuzzyMatchingTolerance(JSGlobalContextRef);

WebKit coding style says we don’t name functions like this with the word &quot;get&quot;. Is String really the type we want to use for strings here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807068</commentid>
    <comment_count>3</comment_count>
      <attachid>442002</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-10-21 03:09:51 -0700</bug_when>
    <thetext>Created attachment 442002
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807081</commentid>
    <comment_count>4</comment_count>
      <attachid>442007</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-10-21 04:28:40 -0700</bug_when>
    <thetext>Created attachment 442007
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807084</commentid>
    <comment_count>5</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-10-21 04:41:15 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; Comment on attachment 441878 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=441878&amp;action=review
&gt; 
&gt; Looks good.

Thank you for the review.
 
&gt; The test failures seen on EWS seem like they could be related to this
&gt; change. I won’d say review+ until we understand that.

The WebKit 1 failures were due to a lack of an implementation in DumpRenderTree. The new version of the patch adds that. It seems like the failures on iOS are just due to the fact that the tolerance for the WPT tests is set too low. I&apos;ve also marked those as failing now and will try to fix these upstream in another bug.

&gt; &gt; Tools/ImageDiff/ImageDiff.cpp:183
&gt; &gt; +                float difference = roundf((*result).percentageDifference * 100.0f) / 100.0f;
&gt; 
&gt; I suggest using std::round here instead of roundf. Both are the same
&gt; function with a different name.

That makes sense. This code is a bit old, so it probably needs to be updated quite a bit. I&apos;ve made this change.

&gt; 
&gt; &gt; Tools/ImageDiff/ImageDiff.cpp:184
&gt; &gt;                  difference = std::max&lt;float&gt;(difference, 0.01f); // round to 2 decimal places
&gt; 
&gt; No need for the &lt;float&gt; here.

Fixed.

&gt; 
&gt; &gt; Tools/ImageDiff/PlatformImage.h:61
&gt; &gt; +        float percentageDifference;
&gt; &gt; +        unsigned long pixelsDifferent;
&gt; &gt; +        unsigned long maxChannelDifference;
&gt; 
&gt; Consider initializing these all to zero here?

That makes sense to me. I&apos;ve added initializers for these.

&gt; 
&gt; &gt; Tools/TestRunnerShared/ReftestFunctions.h:28
&gt; &gt; +#include &lt;wtf/text/WTFString.h&gt;
&gt; 
&gt; Only Forward.h is needed to compile a function with String as a return value.
&gt; 
&gt; &gt; Tools/TestRunnerShared/ReftestFunctions.h:36
&gt; &gt; +String getFuzzyMatchingTolerance(JSGlobalContextRef);
&gt; 
&gt; WebKit coding style says we don’t name functions like this with the word
&gt; &quot;get&quot;. Is String really the type we want to use for strings here?

Oh, that&apos;s right. I&apos;ve fixed the name of this function and agree that maybe WTFString isn&apos;t the best type to use here. I&apos;ve switched to using std::string, which should also work well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808805</commentid>
    <comment_count>6</comment_count>
      <attachid>442007</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-10-26 02:26:30 -0700</bug_when>
    <thetext>Comment on attachment 442007
Patch

This patch is being superseded by work done for smfr and gsnedders.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441878</attachid>
            <date>2021-10-20 06:56:57 -0700</date>
            <delta_ts>2021-10-21 03:09:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232010-20211020155655.patch</filename>
            <type>text/plain</type>
            <size>34417</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MzUwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWI5YTk1ZDYyNjVmMDAzNmJlN2VjZjBhNjFmODYyZjBk
OTcxMDY2Yy4uZThlZjcyNTE0MDg5NjY3NjVhMDkxMDlmNTY0MTNhNzMzY2JkZmRlYiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUy
IEBACisyMDIxLTEwLTIwICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4K
KworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgV1BUJ3MgcGVyLXRlc3QgcmVmdGVzdCBmdXp6eSBz
cGVjaWZpY2F0aW9uIHRvIFdlYktpdFRlc3RSdW5uZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjAxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBXUFQgZnV6enkgbWF0Y2hp
bmcgc3ludGF4LCB3aGljaCBhbGxvd3MgaW5kaXZpZHVhbCBXUFQgcmVmdGVzdHMKKyAgICAgICAg
dG8gYWRqdXN0IHRoZSB0b2xlcmFuY2UgcGFzc2VkIHRvIEltYWdlRGlmZi4gVGhpcyBhbHNvIGFk
ZHMgYW4gYWx0ZXJuYXRpdmUgd2F5CisgICAgICAgIHRvIHNwZWNpZnkgdG9sZXJhbmNlIGZvciBJ
bWFnZURpZmYuIEluIGFkZGl0aW9uIHRvIHRoZSB0cmFkaXRpb25hbCBwZXJjZW50CisgICAgICAg
IGRpZmZlcmVuY2UsIHRoaXMgYWRkcyBzdXBwb3J0IGZvciBXUFQgc3R5bGU6IHR3byByYW5nZXMg
c3BlY2lmeWluZyB0aGUKKyAgICAgICAgbnVtYmVyIG9mIHBpeGVscyBkaWZmZXJlbnQgYXMgd2Vs
bCBhcyB0aGUgbWF4aW11bSBkaWZmZXJlbmNlIG9uIGFueQorICAgICAgICBpbmRpdmlkdWFsIGNv
bG9yIGNoYW5uZWwuCisKKyAgICAgICAgKiBJbWFnZURpZmYvSW1hZ2VEaWZmLmNwcDoKKyAgICAg
ICAgKHNwbGl0U3RyaW5nKToKKyAgICAgICAgKHBhcnNlUGl4ZWxUb2xlcmFuY2VSYW5nZSk6Cisg
ICAgICAgIChwYXJzZVRvbGVyYW5jZSk6CisgICAgICAgICh3aXRoaW5Ub2xlcmFuY2UpOgorICAg
ICAgICAobWFpbik6CisgICAgICAgICogSW1hZ2VEaWZmL1BsYXRmb3JtSW1hZ2UuY3BwOgorICAg
ICAgICAoSW1hZ2VEaWZmOjpQbGF0Zm9ybUltYWdlOjpkaWZmZXJlbmNlKToKKyAgICAgICAgKiBJ
bWFnZURpZmYvUGxhdGZvcm1JbWFnZS5oOgorICAgICAgICAqIEltYWdlRGlmZi9jZy9Db25maWd1
cmF0aW9ucy9CYXNlLnhjY29uZmlnOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5lci5weToKKyAgICAgICAgKFNpbmds
ZVRlc3RSdW5uZXIuX2NvbXBhcmVfaW1hZ2UpOgorICAgICAgICAoU2luZ2xlVGVzdFJ1bm5lci5f
Y29tcGFyZV9vdXRwdXRfd2l0aF9yZWZlcmVuY2UpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvcG9ydC9kcml2ZXIucHk6CisgICAgICAgIChEcml2ZXJPdXRwdXQuX19pbml0X18pOgorICAg
ICAgICAoRHJpdmVyLnJ1bl90ZXN0KToKKyAgICAgICAgKERyaXZlci5fcmVhZF9vcHRpb25hbF9p
bWFnZV9ibG9jayk6CisgICAgICAgIChEcml2ZXIuX3Byb2Nlc3Nfc3Rkb3V0X2xpbmUpOgorICAg
ICAgICAoQ29udGVudEJsb2NrLl9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3BvcnQvZHJpdmVyX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvUmVm
dGVzdEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXVFI6OmdldEZ1enp5TWF0Y2hpbmdUb2xlcmFu
Y2UpOgorICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvUmVmdGVzdEZ1bmN0aW9ucy5oOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3Bw
OgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6YmVnaW5UZXN0aW5nKToKKyAgICAgICAg
KFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmRvbmUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRC
dW5kbGU6OnNldFBpeGVsUmVzdWx0VG9sZXJhbmNlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXVFI6
OkluamVjdGVkQnVuZGxlUGFnZTo6ZHVtcCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpjb21wYXJl
QWN0dWFsSGFzaFRvRXhwZWN0ZWRBbmREdW1wUmVzdWx0cyk6CisgICAgICAgIChXVFI6OlRlc3RJ
bnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oOgorCiAyMDIxLTEwLTE3ICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHRlc3RzIGZvciBX
VEY6Ok9TT2JqZWN0UHRyL2Fkb3B0T1NPYmplY3QgaW4gQ29jb2Egd2l0aCBhbmQgd2l0aG91dCBB
UkMKZGlmZiAtLWdpdCBhL1Rvb2xzL0ltYWdlRGlmZi9JbWFnZURpZmYuY3BwIGIvVG9vbHMvSW1h
Z2VEaWZmL0ltYWdlRGlmZi5jcHAKaW5kZXggOTg0OWY2ZmQ1ZDBiMGJlNDJjZDQ2YzJkOWI3OWU3
YmNiN2Q4NDFiNS4uZjk5NzBkNTRlMjFjYzJhODk3ODkyM2I2YTExM2M5MTQwNTQ1ZjEzYyAxMDA2
NDQKLS0tIGEvVG9vbHMvSW1hZ2VEaWZmL0ltYWdlRGlmZi5jcHAKKysrIGIvVG9vbHMvSW1hZ2VE
aWZmL0ltYWdlRGlmZi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE3IElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcsIDIwMjEgSWdhbGlhIFMuTC4K
ICAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgQmVuIExhIE1vbmljYSA8YmVuLmxhbW9u
aWNhQGdtYWlsLmNvbT4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTMwLDkgKzMwLDEz
IEBACiAKICNpbmNsdWRlICJQbGF0Zm9ybUltYWdlLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgor
I2luY2x1ZGUgPGNzdGRpbz4KICNpbmNsdWRlIDxjc3RkbGliPgotI2luY2x1ZGUgPHN0ZGlvLmg+
Ci0jaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8Y3N0cmluZz4KKyNpbmNsdWRlIDxvcHRp
b25hbD4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dmFyaWFudD4KKyNpbmNsdWRlIDx2
ZWN0b3I+CiAKICNpZmRlZiBfV0lOMzIKICNpbmNsdWRlIDxmY250bC5oPgpAQCAtNDgsNiArNTIs
NjggQEAgdXNpbmcgbmFtZXNwYWNlIEltYWdlRGlmZjsKICNkZWZpbmUgRk9STUFUX1NJWkVfVCAi
enUiCiAjZW5kaWYKIAorc3RydWN0IFBpeGVsVG9sZXJhbmNlIHsKKyAgICBzdGQ6OnBhaXI8dW5z
aWduZWQgbG9uZywgdW5zaWduZWQgbG9uZz4gbWF4Q2hhbm5lbERpZmZlcmVuY2VSYW5nZTsKKyAg
ICBzdGQ6OnBhaXI8dW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZz4gdG90YWxQaXhlbHNEaWZm
ZXJlbnRSYW5nZTsKK307CisKK3N0YXRpYyBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gc3BsaXRT
dHJpbmcoc3RkOjpzdHJpbmcgc3RyaW5nLCBzdGQ6OnN0cmluZyBkZWxpbWl0ZXIpCit7CisgICAg
c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHJldHVyblZhbHVlOworICAgIHNpemVfdCBzdGFydE9m
ZnNldCA9IDA7CisgICAgc2l6ZV90IGZvdW5kUG9zaXRpb24gPSBzdHJpbmcuZmluZChkZWxpbWl0
ZXIsIDApOworICAgIHdoaWxlIChmb3VuZFBvc2l0aW9uICE9IHN0ZDo6c3RyaW5nOjpucG9zKSB7
CisgICAgICAgIHJldHVyblZhbHVlLnB1c2hfYmFjayhzdHJpbmcuc3Vic3RyKHN0YXJ0T2Zmc2V0
LCBmb3VuZFBvc2l0aW9uIC0gc3RhcnRPZmZzZXQpKTsKKyAgICAgICAgc3RhcnRPZmZzZXQgPSBm
b3VuZFBvc2l0aW9uICsgMTsKKyAgICAgICAgZm91bmRQb3NpdGlvbiA9IHN0cmluZy5maW5kKGRl
bGltaXRlciwgc3RhcnRPZmZzZXQpOworICAgIH0KKyAgICByZXR1cm5WYWx1ZS5wdXNoX2JhY2so
c3RyaW5nLnN1YnN0cihzdGFydE9mZnNldCwgc3RkOjpzdHJpbmc6Om5wb3MpKTsKKyAgICByZXR1
cm4gcmV0dXJuVmFsdWU7Cit9CisKK3N0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVk
PiBwYXJzZVBpeGVsVG9sZXJhbmNlUmFuZ2Uoc3RkOjpzdHJpbmcgaW5wdXQpCit7CisgICAgYXV0
byBwYXJ0cyA9IHNwbGl0U3RyaW5nKGlucHV0LCAiLSIpOworICAgIGF1dG8gZmlyc3ROdW1iZXIg
PSBzdGQ6OnN0b3VsKHBhcnRzWzBdKTsKKyAgICBpZiAocGFydHMuc2l6ZSgpIDwgMikKKyAgICAg
ICAgcmV0dXJuIHsgMCwgZmlyc3ROdW1iZXIgfTsKKyAgICByZXR1cm4geyBmaXJzdE51bWJlciwg
c3RkOjpzdG91bChwYXJ0c1sxXSkgfTsKK30KKworCitzdGF0aWMgc3RkOjp2YXJpYW50PFBpeGVs
VG9sZXJhbmNlLCBmbG9hdD4gcGFyc2VUb2xlcmFuY2Uoc3RkOjpzdHJpbmcgaW5wdXQpCit7Cisg
ICAgaWYgKGlucHV0LmZpbmQoIjsiKSA9PSBzdGQ6OnN0cmluZzo6bnBvcykKKyAgICAgICAgcmV0
dXJuIHsgc3RydG9mKGlucHV0LmNfc3RyKCksIDApIH07CisKKyAgICAvLyBSZW1vdmUgd2hpdGVz
cGFjZSBmcm9tIHRoZSBpbnB1dCBzdHJpbmcuCisgICAgaW5wdXQuZXJhc2UocmVtb3ZlX2lmKGlu
cHV0LmJlZ2luKCksIGlucHV0LmVuZCgpLCBpc3NwYWNlKSwgaW5wdXQuZW5kKCkpOworCisgICAg
YXV0byBwYXJ0cyA9IHNwbGl0U3RyaW5nKGlucHV0LCAiOyIpOworICAgIGlmIChwYXJ0cy5zaXpl
KCkgPCAyKQorICAgICAgICByZXR1cm4geyAwLjBmIH07CisKKyAgICBhdXRvIGRpZmZlcmVuY2VS
YW5nZSA9IHBhcnNlUGl4ZWxUb2xlcmFuY2VSYW5nZShwYXJ0c1swXSk7CisgICAgYXV0byBwaXhl
bFJhbmdlID0gcGFyc2VQaXhlbFRvbGVyYW5jZVJhbmdlKHBhcnRzWzFdKTsKKworICAgIHJldHVy
biAgeyBQaXhlbFRvbGVyYW5jZSB7IGRpZmZlcmVuY2VSYW5nZSwgcGl4ZWxSYW5nZSB9IH07Cit9
CisKK2Jvb2wgd2l0aGluVG9sZXJhbmNlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1JbWFn
ZTo6RGlmZmVyZW5jZVJlc3VsdD4mIG9wdGlvbmFsUmVzdWx0LCBzdGQ6OnZhcmlhbnQ8UGl4ZWxU
b2xlcmFuY2UsIGZsb2F0PiB0b2xlcmFuY2UpCit7CisgICAgaWYgKCFvcHRpb25hbFJlc3VsdCkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBjb25zdCBhdXRvJiByZXN1bHQgPSAqb3B0aW9u
YWxSZXN1bHQ7CisgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8ZmxvYXQ+KHRvbGVyYW5j
ZSkpCisgICAgICAgIHJldHVybiBzdGQ6OmdldDxmbG9hdD4odG9sZXJhbmNlKSA+PSByZXN1bHQu
cGVyY2VudGFnZURpZmZlcmVuY2U7CisKKyAgICBjb25zdCBhdXRvJiBwaXhlbFRvbGVyYW5jZSA9
IHN0ZDo6Z2V0PFBpeGVsVG9sZXJhbmNlPih0b2xlcmFuY2UpOworICAgIHJldHVybiByZXN1bHQu
cGl4ZWxzRGlmZmVyZW50ID49IHBpeGVsVG9sZXJhbmNlLnRvdGFsUGl4ZWxzRGlmZmVyZW50UmFu
Z2UuZmlyc3QgJiYgcmVzdWx0LnBpeGVsc0RpZmZlcmVudCA8PSBwaXhlbFRvbGVyYW5jZS50b3Rh
bFBpeGVsc0RpZmZlcmVudFJhbmdlLnNlY29uZAorICAgICAgICAmJiByZXN1bHQubWF4Q2hhbm5l
bERpZmZlcmVuY2UgPj0gcGl4ZWxUb2xlcmFuY2UubWF4Q2hhbm5lbERpZmZlcmVuY2VSYW5nZS5m
aXJzdAorICAgICAgICAmJiByZXN1bHQubWF4Q2hhbm5lbERpZmZlcmVuY2UgPD0gcGl4ZWxUb2xl
cmFuY2UubWF4Q2hhbm5lbERpZmZlcmVuY2VSYW5nZS5zZWNvbmQ7Cit9CisKIGludCBtYWluKGlu
dCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10pCiB7CiAjaWZkZWYgX1dJTjMyCkBAIC01NSwxMyAr
MTIxLDEzIEBAIGludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10pCiAgICAgX3Nl
dG1vZGUoMSwgX09fQklOQVJZKTsKICNlbmRpZgogCi0gICAgZmxvYXQgdG9sZXJhbmNlID0gMC4w
ZjsKKyAgICBzdGQ6OnZhcmlhbnQ8UGl4ZWxUb2xlcmFuY2UsIGZsb2F0PiB0b2xlcmFuY2UgPSB7
IDAuMGYgfTsKIAogICAgIGZvciAoaW50IGkgPSAxOyBpIDwgYXJnYzsgKytpKSB7CiAgICAgICAg
IGlmICghc3RyY21wKGFyZ3ZbaV0sICItdCIpIHx8ICFzdHJjbXAoYXJndltpXSwgIi0tdG9sZXJh
bmNlIikpIHsKICAgICAgICAgICAgIGlmIChpID49IGFyZ2MgLSAxKQogICAgICAgICAgICAgICAg
IGV4aXQoMSk7Ci0gICAgICAgICAgICB0b2xlcmFuY2UgPSBzdHJ0b2YoYXJndltpICsgMV0sIDAp
OworICAgICAgICAgICAgdG9sZXJhbmNlID0gcGFyc2VUb2xlcmFuY2UoYXJndltpICsgMV0pOwog
ICAgICAgICAgICAgKytpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KQEAgLTEx
MiwyMSArMTc4LDE0IEBAIGludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10pCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgZmxvYXQgZGlmZmVyZW5jZSA9IDEwMC4wZjsKLSAgICAgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxQbGF0Zm9ybUltYWdlPiBkaWZmSW1hZ2UgPSBhY3R1YWxJbWFnZS0+ZGlmZmVyZW5j
ZSgqYmFzZWxpbmVJbWFnZSwgZGlmZmVyZW5jZSk7Ci0gICAgICAgICAgICBpZiAoZGlmZmVyZW5j
ZSA8PSB0b2xlcmFuY2UpCi0gICAgICAgICAgICAgICAgZGlmZmVyZW5jZSA9IDAuMGY7Ci0gICAg
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBkaWZmZXJlbmNlID0gcm91bmRmKGRpZmZl
cmVuY2UgKiAxMDAuMGYpIC8gMTAwLjBmOworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBhY3R1
YWxJbWFnZS0+ZGlmZmVyZW5jZSgqYmFzZWxpbmVJbWFnZSk7CisgICAgICAgICAgICBpZiAoIXdp
dGhpblRvbGVyYW5jZShyZXN1bHQsIHRvbGVyYW5jZSkpIHsKKyAgICAgICAgICAgICAgICBmbG9h
dCBkaWZmZXJlbmNlID0gcm91bmRmKCgqcmVzdWx0KS5wZXJjZW50YWdlRGlmZmVyZW5jZSAqIDEw
MC4wZikgLyAxMDAuMGY7CiAgICAgICAgICAgICAgICAgZGlmZmVyZW5jZSA9IHN0ZDo6bWF4PGZs
b2F0PihkaWZmZXJlbmNlLCAwLjAxZik7IC8vIHJvdW5kIHRvIDIgZGVjaW1hbCBwbGFjZXMKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGRpZmZlcmVuY2UgPiAwLjBmKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKGRpZmZJbWFnZSkKLSAgICAgICAgICAgICAgICAgICAgZGlmZkltYWdl
LT53cml0ZUFzUE5HVG9TdGRvdXQoKTsKKyAgICAgICAgICAgICAgICAoKnJlc3VsdCkuZGlmZklt
YWdlLT53cml0ZUFzUE5HVG9TdGRvdXQoKTsKICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZG91
dCwgImRpZmY6ICUwMS4yZiUlIGZhaWxlZFxuIiwgZGlmZmVyZW5jZSk7CiAgICAgICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZG91dCwgImRpZmY6ICUwMS4yZiUlIHBh
c3NlZFxuIiwgZGlmZmVyZW5jZSk7CisgICAgICAgICAgICAgICAgZnByaW50ZihzdGRvdXQsICJk
aWZmOiAlMDEuMmYlJSBwYXNzZWRcbiIsIDAuMCk7CiAKICAgICAgICAgICAgIGFjdHVhbEltYWdl
ID0gbnVsbHB0cjsKICAgICAgICAgICAgIGJhc2VsaW5lSW1hZ2UgPSBudWxscHRyOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvSW1hZ2VEaWZmL1BsYXRmb3JtSW1hZ2UuY3BwIGIvVG9vbHMvSW1hZ2VEaWZm
L1BsYXRmb3JtSW1hZ2UuY3BwCmluZGV4IDRjOTljNzY1OTlmODMyOGZlNDQyZGQzZGQxMDYyOGQ3
OGNmN2YyMDEuLjczNGE2MGI0Njk0OWZiN2EzNmQ1YWFlNzc1OTYwZGE5ZmQ2ZWZlMmMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0ltYWdlRGlmZi9QbGF0Zm9ybUltYWdlLmNwcAorKysgYi9Ub29scy9JbWFn
ZURpZmYvUGxhdGZvcm1JbWFnZS5jcHAKQEAgLTQwLDIxICs0MCwzMiBAQCBib29sIFBsYXRmb3Jt
SW1hZ2U6OmlzQ29tcGF0aWJsZShjb25zdCBQbGF0Zm9ybUltYWdlJiBvdGhlcikgY29uc3QKICAg
ICAgICAgJiYgaGFzQWxwaGEoKSA9PSBvdGhlci5oYXNBbHBoYSgpOwogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8UGxhdGZvcm1JbWFnZT4gUGxhdGZvcm1JbWFnZTo6ZGlmZmVyZW5jZShjb25zdCBQbGF0
Zm9ybUltYWdlJiBvdGhlciwgZmxvYXQmIHBlcmNlbnRhZ2VEaWZmZXJlbmNlKQorc3RkOjpvcHRp
b25hbDxQbGF0Zm9ybUltYWdlOjpEaWZmZXJlbmNlUmVzdWx0PiBQbGF0Zm9ybUltYWdlOjpkaWZm
ZXJlbmNlKGNvbnN0IFBsYXRmb3JtSW1hZ2UmIG90aGVyKQogewogICAgIHNpemVfdCB3aWR0aCA9
IHRoaXMtPndpZHRoKCk7CiAgICAgc2l6ZV90IGhlaWdodCA9IHRoaXMtPmhlaWdodCgpOwogCiAg
ICAgLy8gQ29tcGFyZSB0aGUgY29udGVudCBvZiB0aGUgMiBiaXRtYXBzCiAgICAgdm9pZCogZGlm
ZkJ1ZmZlciA9IG1hbGxvYyh3aWR0aCAqIGhlaWdodCk7Ci0gICAgZmxvYXQgY291bnQgPSAwLjBm
OworICAgIHVuc2lnbmVkIG51bVBpeGVsc0RpZmZlcmVudCA9IDA7CiAgICAgZmxvYXQgc3VtID0g
MC4wZjsKICAgICBmbG9hdCBtYXhEaXN0YW5jZSA9IDAuMGY7CisKKyAgICAvLyBUaGlzIGlzIHRo
ZSBtYXhpbXVtIGRpc3RhbmNlIG9mIGVhY2ggaW5kaXZpZHVhbCA4LWJpdCBjaGFubmVsLCBzbwor
ICAgIC8vIHRoaXMgd2lsbCBiZSBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDI1NS4KKyAgICBpbnQg
bWF4Q2hhbm5lbERpZmZlcmVuY2UgPSAwOworCiAgICAgdW5zaWduZWQgY2hhciogYmFzZVBpeGVs
ID0gdGhpcy0+cGl4ZWxzKCk7CiAgICAgdW5zaWduZWQgY2hhciogcGl4ZWwgPSBvdGhlci5waXhl
bHMoKTsKICAgICB1bnNpZ25lZCBjaGFyKiBkaWZmUGl4ZWwgPSByZWludGVycHJldF9jYXN0PHVu
c2lnbmVkIGNoYXIqPihkaWZmQnVmZmVyKTsKICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhl
aWdodDsgKyt5KSB7CiAgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgd2lkdGg7ICsreCkg
eworICAgICAgICAgICAgLy8gVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgV1BUIGNo
YW5uZWwgZGlmZmVyZW5jZSBhbGdvcml0aG0gZGVzY3JpYmVkIGF0OgorICAgICAgICAgICAgLy8g
aHR0cHM6Ly93ZWItcGxhdGZvcm0tdGVzdHMub3JnL3dyaXRpbmctdGVzdHMvcmVmdGVzdHMuaHRt
bAorICAgICAgICAgICAgLy8gVGhpcyBleHBsaWNpdGx5IGlnbm9yZXMgdGhlIGFscGhhIGNoYW5u
ZWwuCisgICAgICAgICAgICBtYXhDaGFubmVsRGlmZmVyZW5jZSA9IHN0ZDo6bWF4KHsgbWF4Q2hh
bm5lbERpZmZlcmVuY2UsIHN0ZDo6YWJzKHBpeGVsWzBdIC0gYmFzZVBpeGVsWzBdKSwKKyAgICAg
ICAgICAgICAgICBzdGQ6OmFicyhwaXhlbFsxXSAtIGJhc2VQaXhlbFsxXSksIHN0ZDo6YWJzKHBp
eGVsWzJdIC0gYmFzZVBpeGVsWzJdKSB9KTsKKwogICAgICAgICAgICAgZmxvYXQgcmVkID0gKHBp
eGVsWzBdIC0gYmFzZVBpeGVsWzBdKSAvIHN0ZDo6bWF4PGZsb2F0PigyNTUgLSBiYXNlUGl4ZWxb
MF0sIGJhc2VQaXhlbFswXSk7CiAgICAgICAgICAgICBmbG9hdCBncmVlbiA9IChwaXhlbFsxXSAt
IGJhc2VQaXhlbFsxXSkgLyBzdGQ6Om1heDxmbG9hdD4oMjU1IC0gYmFzZVBpeGVsWzFdLCBiYXNl
UGl4ZWxbMV0pOwogICAgICAgICAgICAgZmxvYXQgYmx1ZSA9IChwaXhlbFsyXSAtIGJhc2VQaXhl
bFsyXSkgLyBzdGQ6Om1heDxmbG9hdD4oMjU1IC0gYmFzZVBpeGVsWzJdLCBiYXNlUGl4ZWxbMl0p
OwpAQCAtNjQsNyArNzUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1JbWFnZT4gUGxhdGZv
cm1JbWFnZTo6ZGlmZmVyZW5jZShjb25zdCBQbGF0Zm9ybUltYWdlJiBvdAogICAgICAgICAgICAg
KmRpZmZQaXhlbCsrID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oZGlzdGFuY2UgKiAyNTUu
MGYpOwogCiAgICAgICAgICAgICBpZiAoZGlzdGFuY2UgPj0gMS4wZiAvIDI1NS4wZikgewotICAg
ICAgICAgICAgICAgIGNvdW50ICs9IDEuMGY7CisgICAgICAgICAgICAgICAgbnVtUGl4ZWxzRGlm
ZmVyZW50ICs9IDE7CiAgICAgICAgICAgICAgICAgc3VtICs9IGRpc3RhbmNlOwogICAgICAgICAg
ICAgICAgIGlmIChkaXN0YW5jZSA+IG1heERpc3RhbmNlKQogICAgICAgICAgICAgICAgICAgICBt
YXhEaXN0YW5jZSA9IGRpc3RhbmNlOwpAQCAtNzYsMTQgKzg3LDEzIEBAIHN0ZDo6dW5pcXVlX3B0
cjxQbGF0Zm9ybUltYWdlPiBQbGF0Zm9ybUltYWdlOjpkaWZmZXJlbmNlKGNvbnN0IFBsYXRmb3Jt
SW1hZ2UmIG90CiAgICAgfQogCiAgICAgLy8gQ29tcHV0ZSB0aGUgZGlmZmVyZW5jZSBhcyBhIHBl
cmNlbnRhZ2UgY29tYmluaW5nIGJvdGggdGhlIG51bWJlciBvZiBkaWZmZXJlbnQgcGl4ZWxzIGFu
ZCB0aGVpciBkaWZmZXJlbmNlIGFtb3VudCBpLmUuIHRoZSBhdmVyYWdlIGRpc3RhbmNlIG92ZXIg
dGhlIGVudGlyZSBpbWFnZQotICAgIGlmIChjb3VudCA+IDAuMGYpCisgICAgZmxvYXQgcGVyY2Vu
dGFnZURpZmZlcmVuY2UgPSAwLjBmOworICAgIGlmIChudW1QaXhlbHNEaWZmZXJlbnQpCiAgICAg
ICAgIHBlcmNlbnRhZ2VEaWZmZXJlbmNlID0gMTAwLjBmICogc3VtIC8gKGhlaWdodCAqIHdpZHRo
KTsKLSAgICBlbHNlCi0gICAgICAgIHBlcmNlbnRhZ2VEaWZmZXJlbmNlID0gMC4wZjsKIAogICAg
IGlmICghcGVyY2VudGFnZURpZmZlcmVuY2UpIHsKICAgICAgICAgZnJlZShkaWZmQnVmZmVyKTsK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAg
ICAgLy8gR2VuZXJhdGUgYSBub3JtYWxpemVkIGRpZmYgaW1hZ2UgaWYgdGhlcmUgaXMgYW55IGRp
ZmZlcmVuY2UKQEAgLTkzLDcgKzEwMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUltYWdl
PiBQbGF0Zm9ybUltYWdlOjpkaWZmZXJlbmNlKGNvbnN0IFBsYXRmb3JtSW1hZ2UmIG90CiAgICAg
ICAgICAgICBkaWZmUGl4ZWxbcF0gLz0gbWF4RGlzdGFuY2U7CiAgICAgfQogCi0gICAgcmV0dXJu
IFBsYXRmb3JtSW1hZ2U6OmNyZWF0ZUZyb21EaWZmRGF0YShkaWZmQnVmZmVyLCB3aWR0aCwgaGVp
Z2h0KTsKKyAgICByZXR1cm4geyB7IFBsYXRmb3JtSW1hZ2U6OmNyZWF0ZUZyb21EaWZmRGF0YShk
aWZmQnVmZmVyLCB3aWR0aCwgaGVpZ2h0KSwgcGVyY2VudGFnZURpZmZlcmVuY2UsIG51bVBpeGVs
c0RpZmZlcmVudCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1heENoYW5uZWxEaWZmZXJlbmNlKSB9
IH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEltYWdlRGlmZgpkaWZmIC0tZ2l0IGEvVG9vbHMvSW1h
Z2VEaWZmL1BsYXRmb3JtSW1hZ2UuaCBiL1Rvb2xzL0ltYWdlRGlmZi9QbGF0Zm9ybUltYWdlLmgK
aW5kZXggYTYzMmYzNGU4NDU1Mzg1ZDc2OTZhMTMyZDk3MmYxNDA2OTczMGIzYi4uMzcxYzBkOWY0
OTMxOTYwYTU3ZDQxZGVkMzE0MTU5ZTgzOTBiOTM3YSAxMDA2NDQKLS0tIGEvVG9vbHMvSW1hZ2VE
aWZmL1BsYXRmb3JtSW1hZ2UuaAorKysgYi9Ub29scy9JbWFnZURpZmYvUGxhdGZvcm1JbWFnZS5o
CkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlIDxjbWF0aD4KICNpbmNsdWRlIDxtZW1vcnk+
CisjaW5jbHVkZSA8b3B0aW9uYWw+CiAKICNpZiBkZWZpbmVkKFVTRV9DQUlSTykgJiYgVVNFX0NB
SVJPCiB0eXBlZGVmIHN0cnVjdCBfY2Fpcm9fc3VyZmFjZSBjYWlyb19zdXJmYWNlX3Q7CkBAIC01
Miw3ICs1MywxNSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNBbHBoYSgpIGNvbnN0OwogICAgIHVu
c2lnbmVkIGNoYXIqIHBpeGVscygpIGNvbnN0OwogICAgIGJvb2wgaXNDb21wYXRpYmxlKGNvbnN0
IFBsYXRmb3JtSW1hZ2UmKSBjb25zdDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1JbWFn
ZT4gZGlmZmVyZW5jZShjb25zdCBQbGF0Zm9ybUltYWdlJiwgZmxvYXQmIHBlcmNlbnRhZ2VEaWZm
ZXJlbmNlKTsKKworICAgIHN0cnVjdCBEaWZmZXJlbmNlUmVzdWx0IHsKKyAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFBsYXRmb3JtSW1hZ2U+IGRpZmZJbWFnZTsKKyAgICAgICAgZmxvYXQgcGVyY2Vu
dGFnZURpZmZlcmVuY2U7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgcGl4ZWxzRGlmZmVyZW50Owor
ICAgICAgICB1bnNpZ25lZCBsb25nIG1heENoYW5uZWxEaWZmZXJlbmNlOworICAgIH07CisKKyAg
ICBzdGQ6Om9wdGlvbmFsPERpZmZlcmVuY2VSZXN1bHQ+IGRpZmZlcmVuY2UoY29uc3QgUGxhdGZv
cm1JbWFnZSYpOwogICAgIHZvaWQgd3JpdGVBc1BOR1RvU3Rkb3V0KCk7CiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Ub29scy9JbWFnZURpZmYvY2cvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZp
ZyBiL1Rvb2xzL0ltYWdlRGlmZi9jZy9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCmluZGV4
IDc3MmNkZDE5MmM2YTcxM2RkMTIzNDZkNmRhNzk4ZDRjZTZjODM3NDkuLmI1OTE0YzU5NWYzYzFl
MjQ2ODI0MWIyNGUzMjUzODI4MGEyMTkzOGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0ltYWdlRGlmZi9j
Zy9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCisrKyBiL1Rvb2xzL0ltYWdlRGlmZi9jZy9D
b25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCkBAIC0zMSw3ICszMSw3IEBAIFVTRV9JTlRFUk5B
TF9TREtfUmVsZWFzZSA9ICQoSEFWRV9JTlRFUk5BTF9TREspOwogCiBBTFdBWVNfU0VBUkNIX1VT
RVJfUEFUSFMgPSBOTzsKIAotQ0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251KysxNDsK
K0NMQU5HX0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9IGdudSsrMXo7CiBDTEFOR19DWFhfTElCUkFS
WSA9IGxpYmMrKzsKIENMQU5HX0VOQUJMRV9PQkpDX1dFQUsgPSBZRVM7CiBDTEFOR19XQVJOX0NY
WDBYX0VYVEVOU0lPTlMgPSBOTzsKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5lci5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5l
ci5weQppbmRleCBkMTdhY2ZkMDE4OWU4NDUxZTg4ZjY2ZTNiNmI2NmNlNTdmN2Y2NTFiLi5iNjRi
OGNjZWYyZDA3YmJjYzU0Y2JiYjcyMmQ3ZDE5Njk0ZjA1MGRmIDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9zaW5nbGVfdGVzdF9ydW5u
ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxl
cnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5CkBAIC0yOTMsNyArMjkzLDcgQEAgY2xhc3MgU2luZ2xl
VGVzdFJ1bm5lcihvYmplY3QpOgogICAgICAgICBlbGlmIG5vdCBleHBlY3RlZF9kcml2ZXJfb3V0
cHV0LmltYWdlX2hhc2g6CiAgICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJl
cy5GYWlsdXJlTWlzc2luZ0ltYWdlSGFzaCgpKQogICAgICAgICBlbGlmIGRyaXZlcl9vdXRwdXQu
aW1hZ2VfaGFzaCAhPSBleHBlY3RlZF9kcml2ZXJfb3V0cHV0LmltYWdlX2hhc2g6Ci0gICAgICAg
ICAgICBkaWZmX3Jlc3VsdCA9IHNlbGYuX3BvcnQuZGlmZl9pbWFnZShleHBlY3RlZF9kcml2ZXJf
b3V0cHV0LmltYWdlLCBkcml2ZXJfb3V0cHV0LmltYWdlKQorICAgICAgICAgICAgZGlmZl9yZXN1
bHQgPSBzZWxmLl9wb3J0LmRpZmZfaW1hZ2UoZXhwZWN0ZWRfZHJpdmVyX291dHB1dC5pbWFnZSwg
ZHJpdmVyX291dHB1dC5pbWFnZSwgdG9sZXJhbmNlPWRyaXZlcl9vdXRwdXQucGl4ZWxfdG9sZXJh
bmNlKQogICAgICAgICAgICAgZXJyb3Jfc3RyaW5nID0gZGlmZl9yZXN1bHRbMl0KICAgICAgICAg
ICAgIGlmIGVycm9yX3N0cmluZzoKICAgICAgICAgICAgICAgICBfbG9nLndhcm5pbmcoJyAgJXMg
OiAlcycgJSAoc2VsZi5fdGVzdF9uYW1lLCBlcnJvcl9zdHJpbmcpKQpAQCAtMzU2LDggKzM1Niwx
NCBAQCBjbGFzcyBTaW5nbGVUZXN0UnVubmVyKG9iamVjdCk6CiAgICAgICAgICAgICBpZiByZWZl
cmVuY2VfZHJpdmVyX291dHB1dC5pbWFnZV9oYXNoID09IGFjdHVhbF9kcml2ZXJfb3V0cHV0Lmlt
YWdlX2hhc2g6CiAgICAgICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVyZXMu
RmFpbHVyZVJlZnRlc3RNaXNtYXRjaERpZE5vdE9jY3VyKHJlZmVyZW5jZV9maWxlbmFtZSkpCiAg
ICAgICAgIGVsaWYgcmVmZXJlbmNlX2RyaXZlcl9vdXRwdXQuaW1hZ2VfaGFzaCAhPSBhY3R1YWxf
ZHJpdmVyX291dHB1dC5pbWFnZV9oYXNoOgotICAgICAgICAgICAgIyBJbWFnZURpZmYgaGFzIGEg
aGFyZCBjb2RlZCBjb2xvciBkaXN0YW5jZSB0aHJlc2hvbGQgZXZlbiB0aG91Z2ggdG9sZXJhbmNl
PTAgaXMgc3BlY2lmaWVkLgotICAgICAgICAgICAgZGlmZl9yZXN1bHQgPSBzZWxmLl9wb3J0LmRp
ZmZfaW1hZ2UocmVmZXJlbmNlX2RyaXZlcl9vdXRwdXQuaW1hZ2UsIGFjdHVhbF9kcml2ZXJfb3V0
cHV0LmltYWdlLCB0b2xlcmFuY2U9MCkKKyAgICAgICAgICAgICMgRm9yIHJlZmVyZW5jZSB0ZXN0
cyB3ZSBvdmVycmlkZSB0aGUgcG9ydC1kZWZhdWx0IHRvbGVyYW5jZS4gSWYgdGhlIHRlc3RzIGRv
bid0CisgICAgICAgICAgICAjIHNwZWNpZnkgYSB0b2xlcmFuY2UsIHRoZSBpbWFnZXMgc2hvdWxk
IGFsd2F5cyBtYXRjaC4gSW1hZ2VEaWZmIGFsc28gaGFzIGEgaGFyZCBjb2RlZAorICAgICAgICAg
ICAgIyBjb2xvciBkaXN0YW5jZSB0aHJlc2hvbGQgZXZlbiB0aG91Z2ggdG9sZXJhbmNlPTAgaXMg
c3BlY2lmaWVkLgorICAgICAgICAgICAgdG9sZXJhbmNlID0gYWN0dWFsX2RyaXZlcl9vdXRwdXQu
cGl4ZWxfdG9sZXJhbmNlCisgICAgICAgICAgICBpZiBub3QgdG9sZXJhbmNlOgorICAgICAgICAg
ICAgICAgIHRvbGVyYW5jZSA9ICIwIgorCisgICAgICAgICAgICBkaWZmX3Jlc3VsdCA9IHNlbGYu
X3BvcnQuZGlmZl9pbWFnZShyZWZlcmVuY2VfZHJpdmVyX291dHB1dC5pbWFnZSwgYWN0dWFsX2Ry
aXZlcl9vdXRwdXQuaW1hZ2UsIHRvbGVyYW5jZSkKICAgICAgICAgICAgIGVycm9yX3N0cmluZyA9
IGRpZmZfcmVzdWx0WzJdCiAgICAgICAgICAgICBpZiBlcnJvcl9zdHJpbmc6CiAgICAgICAgICAg
ICAgICAgX2xvZy53YXJuaW5nKCcgICVzIDogJXMnICUgKHNlbGYuX3Rlc3RfbmFtZSwgZXJyb3Jf
c3RyaW5nKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXIu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyLnB5CmluZGV4IDY1NjhmZmE3
MTQ3ZGI3Y2U0OGVmZTkyYTA2MTY3ODBiMmUzZDI1ODQuLmE1YzZmNTNmOTMxYmQ0NmIwMWNiMTMz
ZTc4YzliMGJmYzc4M2JiNDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC9kcml2ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2RyaXZlci5weQpA
QCAtODQsMTIgKzg0LDE0IEBAIGNsYXNzIERyaXZlck91dHB1dChvYmplY3QpOgogICAgIG1ldHJp
Y3NfcGF0dGVybnMuYXBwZW5kKChyZS5jb21waWxlKCdzY3JvbGxlZCB0byBbMC05XSssWzAtOV0r
JyksICdzY3JvbGxlZCcpKQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRleHQsIGltYWdlLCBp
bWFnZV9oYXNoLCBhdWRpbywgY3Jhc2g9RmFsc2UsCi0gICAgICAgICAgICB0ZXN0X3RpbWU9MCwg
bWVhc3VyZW1lbnRzPU5vbmUsIHRpbWVvdXQ9RmFsc2UsIGVycm9yPScnLCBjcmFzaGVkX3Byb2Nl
c3NfbmFtZT0nPz8nLAotICAgICAgICAgICAgY3Jhc2hlZF9waWQ9Tm9uZSwgY3Jhc2hfbG9nPU5v
bmUsIHBpZD1Ob25lKToKKyAgICAgICAgICAgICAgICAgdGVzdF90aW1lPTAsIG1lYXN1cmVtZW50
cz1Ob25lLCB0aW1lb3V0PUZhbHNlLCBlcnJvcj0nJywgY3Jhc2hlZF9wcm9jZXNzX25hbWU9Jz8/
JywKKyAgICAgICAgICAgICAgICAgY3Jhc2hlZF9waWQ9Tm9uZSwgY3Jhc2hfbG9nPU5vbmUsIHBp
ZD1Ob25lLAorICAgICAgICAgICAgICAgICBwaXhlbF90b2xlcmFuY2U9Tm9uZSk6CiAgICAgICAg
ICMgRklYTUU6IEFyZ3MgY291bGQgYmUgcmVuYW1lZCB0byBiZXR0ZXIgY2xhcmlmeSB3aGF0IHRo
ZXkgZG8uCiAgICAgICAgIHNlbGYudGV4dCA9IHN0cmluZ191dGlscy5kZWNvZGUodGV4dCwgdGFy
Z2V0X3R5cGU9c3RyKSBpZiB0ZXh0IGVsc2UgTm9uZQogICAgICAgICBzZWxmLmltYWdlID0gaW1h
Z2UgICMgTWF5IGJlIGVtcHR5LXN0cmluZyBpZiB0aGUgdGVzdCBjcmFzaGVzLgogICAgICAgICBz
ZWxmLmltYWdlX2hhc2ggPSBpbWFnZV9oYXNoCisgICAgICAgIHNlbGYucGl4ZWxfdG9sZXJhbmNl
ID0gcGl4ZWxfdG9sZXJhbmNlCiAgICAgICAgIHNlbGYuaW1hZ2VfZGlmZiA9IE5vbmUgICMgaW1h
Z2VfZGlmZiBnZXRzIGZpbGxlZCBpbiBhZnRlciBjb25zdHJ1Y3Rpb24uCiAgICAgICAgIHNlbGYu
YXVkaW8gPSBzdHJpbmdfdXRpbHMuZW5jb2RlKGF1ZGlvKSBpZiBhdWRpbyBlbHNlIE5vbmUgICMg
QmluYXJ5IGZvcm1hdCBpcyBwb3J0LWRlcGVuZGVudC4KICAgICAgICAgc2VsZi5jcmFzaCA9IGNy
YXNoCkBAIC0yMjgsNyArMjMwLDcgQEAgY2xhc3MgRHJpdmVyKG9iamVjdCk6CiAKICAgICAgICAg
c2VsZi5fc2VydmVyX3Byb2Nlc3Mud3JpdGUoY29tbWFuZCkKICAgICAgICAgdGV4dCwgYXVkaW8g
PSBzZWxmLl9yZWFkX2ZpcnN0X2Jsb2NrKGRlYWRsaW5lLCBkcml2ZXJfaW5wdXQudGVzdF9uYW1l
KSAgIyBGaXJzdCBibG9jayBpcyBlaXRoZXIgdGV4dCBvciBhdWRpbwotICAgICAgICBpbWFnZSwg
YWN0dWFsX2ltYWdlX2hhc2ggPSBzZWxmLl9yZWFkX29wdGlvbmFsX2ltYWdlX2Jsb2NrKGRlYWRs
aW5lLCBkcml2ZXJfaW5wdXQudGVzdF9uYW1lKSAgIyBUaGUgc2Vjb25kIChvcHRpb25hbCkgYmxv
Y2sgaXMgaW1hZ2UgZGF0YS4KKyAgICAgICAgaW1hZ2UsIGFjdHVhbF9pbWFnZV9oYXNoLCBwaXhl
bF90b2xlcmFuY2UgPSBzZWxmLl9yZWFkX29wdGlvbmFsX2ltYWdlX2Jsb2NrKGRlYWRsaW5lLCBk
cml2ZXJfaW5wdXQudGVzdF9uYW1lKSAgIyBUaGUgc2Vjb25kIChvcHRpb25hbCkgYmxvY2sgaXMg
aW1hZ2UgZGF0YS4KICAgICAgICAgdGV4dCA9IHN0cmluZ191dGlscy5kZWNvZGUodGV4dCwgdGFy
Z2V0X3R5cGU9c3RyKQogCiAgICAgICAgIGNyYXNoZWQgPSBzZWxmLmhhc19jcmFzaGVkKCkKQEAg
LTI2MywxMCArMjY1LDExIEBAIGNsYXNzIERyaXZlcihvYmplY3QpOgogICAgICAgICAgICAgICAg
ICAgICBjcmFzaF9sb2cgKz0gJ1xuc3Rkb3V0OlxuJXNcbnN0ZGVycjpcbiVzXG4nICUgKHRleHQs
IHNlbGYuZXJyb3JfZnJvbV90ZXN0KQogCiAgICAgICAgIHJldHVybiBEcml2ZXJPdXRwdXQodGV4
dCwgaW1hZ2UsIGFjdHVhbF9pbWFnZV9oYXNoLCBhdWRpbywKLSAgICAgICAgICAgIGNyYXNoPWNy
YXNoZWQsIHRlc3RfdGltZT10aW1lLnRpbWUoKSAtIHRlc3RfYmVnaW5fdGltZSwgbWVhc3VyZW1l
bnRzPXNlbGYuX21lYXN1cmVtZW50cywKLSAgICAgICAgICAgIHRpbWVvdXQ9dGltZWRfb3V0IG9y
IGRyaXZlcl90aW1lZF9vdXQsIGVycm9yPXNlbGYuZXJyb3JfZnJvbV90ZXN0LAotICAgICAgICAg
ICAgY3Jhc2hlZF9wcm9jZXNzX25hbWU9c2VsZi5fY3Jhc2hlZF9wcm9jZXNzX25hbWUsCi0gICAg
ICAgICAgICBjcmFzaGVkX3BpZD1zZWxmLl9jcmFzaGVkX3BpZCwgY3Jhc2hfbG9nPWNyYXNoX2xv
ZywgcGlkPXBpZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmFzaD1jcmFzaGVkLCB0
ZXN0X3RpbWU9dGltZS50aW1lKCkgLSB0ZXN0X2JlZ2luX3RpbWUsIG1lYXN1cmVtZW50cz1zZWxm
Ll9tZWFzdXJlbWVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD10aW1l
ZF9vdXQgb3IgZHJpdmVyX3RpbWVkX291dCwgZXJyb3I9c2VsZi5lcnJvcl9mcm9tX3Rlc3QsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jhc2hlZF9wcm9jZXNzX25hbWU9c2VsZi5fY3Jh
c2hlZF9wcm9jZXNzX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jhc2hlZF9w
aWQ9c2VsZi5fY3Jhc2hlZF9waWQsIGNyYXNoX2xvZz1jcmFzaF9sb2csIHBpZD1waWQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxfdG9sZXJhbmNlPXBpeGVsX3RvbGVyYW5jZSkK
IAogICAgIGRlZiBkb19wb3N0X3Rlc3RzX3dvcmsoc2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxm
Ll9zZXJ2ZXJfcHJvY2VzczoKQEAgLTY1MSwxMSArNjU0LDExIEBAIGNsYXNzIERyaXZlcihvYmpl
Y3QpOgogICAgICAgICByZXR1cm4gKGJsb2NrLmRlY29kZWRfY29udGVudCwgTm9uZSkKIAogICAg
IGRlZiBfcmVhZF9vcHRpb25hbF9pbWFnZV9ibG9jayhzZWxmLCBkZWFkbGluZSwgdGVzdF9uYW1l
KToKLSAgICAgICAgIyByZXR1cm5zIChpbWFnZSwgYWN0dWFsX2ltYWdlX2hhc2gpCisgICAgICAg
ICMgcmV0dXJucyAoaW1hZ2UsIGFjdHVhbF9pbWFnZV9oYXNoLCBwaXhlbF90b2xlcmFuY2UpCiAg
ICAgICAgIGJsb2NrID0gc2VsZi5fcmVhZF9ibG9jayhkZWFkbGluZSwgdGVzdF9uYW1lLCB3YWl0
X2Zvcl9zdGRlcnJfZW9mPVRydWUpCiAgICAgICAgIGlmIGJsb2NrLmNvbnRlbnQgYW5kIGJsb2Nr
LmNvbnRlbnRfdHlwZSA9PSAnaW1hZ2UvcG5nJzoKLSAgICAgICAgICAgIHJldHVybiAoYmxvY2su
ZGVjb2RlZF9jb250ZW50IGlmIGJsb2NrLmVuY29kaW5nID09ICdiYXNlNjQnIGVsc2UgYmxvY2su
Y29udGVudCwgYmxvY2suY29udGVudF9oYXNoKQotICAgICAgICByZXR1cm4gKE5vbmUsIGJsb2Nr
LmNvbnRlbnRfaGFzaCkKKyAgICAgICAgICAgIHJldHVybiAoYmxvY2suZGVjb2RlZF9jb250ZW50
IGlmIGJsb2NrLmVuY29kaW5nID09ICdiYXNlNjQnIGVsc2UgYmxvY2suY29udGVudCwgYmxvY2su
Y29udGVudF9oYXNoLCBibG9jay5waXhlbF90b2xlcmFuY2UpCisgICAgICAgIHJldHVybiAoTm9u
ZSwgYmxvY2suY29udGVudF9oYXNoLCBibG9jay5waXhlbF90b2xlcmFuY2UpCiAKICAgICBkZWYg
X3JlYWRfaGVhZGVyKHNlbGYsIGJsb2NrLCBsaW5lLCBoZWFkZXJfdGV4dCwgaGVhZGVyX2F0dHIs
IGhlYWRlcl9maWx0ZXI9Tm9uZSk6CiAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aChoZWFkZXJf
dGV4dCkgYW5kIGdldGF0dHIoYmxvY2ssIGhlYWRlcl9hdHRyKSBpcyBOb25lOgpAQCAtNjcxLDYg
KzY3NCw3IEBAIGNsYXNzIERyaXZlcihvYmplY3QpOgogICAgICAgICAgICAgKGInQ29udGVudC1U
eXBlOiAnLCAnY29udGVudF90eXBlJywgTm9uZSksCiAgICAgICAgICAgICAoYidDb250ZW50LVRy
YW5zZmVyLUVuY29kaW5nOiAnLCAnZW5jb2RpbmcnLCBOb25lKSwKICAgICAgICAgICAgIChiJ0Nv
bnRlbnQtTGVuZ3RoOiAnLCAnX2NvbnRlbnRfbGVuZ3RoJywgaW50KSwKKyAgICAgICAgICAgIChi
J1BpeGVsLVRvbGVyYW5jZTogJywgJ3BpeGVsX3RvbGVyYW5jZScsIE5vbmUpLAogICAgICAgICAg
ICAgKGInQWN0dWFsSGFzaDogJywgJ2NvbnRlbnRfaGFzaCcsIE5vbmUpLAogICAgICAgICAgICAg
KGInRHVtcE1hbGxvYzogJywgJ21hbGxvYycsIE5vbmUpLAogICAgICAgICAgICAgKGInRHVtcEpT
SGVhcDogJywgJ2pzX2hlYXAnLCBOb25lKSwKQEAgLTc2Niw2ICs3NzAsNyBAQCBjbGFzcyBDb250
ZW50QmxvY2sob2JqZWN0KToKICAgICAgICAgc2VsZi5jb250ZW50X3R5cGUgPSBOb25lCiAgICAg
ICAgIHNlbGYuZW5jb2RpbmcgPSBOb25lCiAgICAgICAgIHNlbGYuY29udGVudF9oYXNoID0gTm9u
ZQorICAgICAgICBzZWxmLnBpeGVsX3RvbGVyYW5jZSA9IE5vbmUKICAgICAgICAgc2VsZi5fY29u
dGVudF9sZW5ndGggPSBOb25lCiAgICAgICAgICMgQ29udGVudCBpcyB0cmVhdGVkIGFzIGJpbmFy
eSBkYXRhIGV2ZW4gdGhvdWdoIHRoZSB0ZXh0IG91dHB1dCBpcyB1c3VhbGx5IFVURi04LgogICAg
ICAgICBzZWxmLmNvbnRlbnQgPSBiJycKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvcG9ydC9kcml2ZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQv
ZHJpdmVyX3VuaXR0ZXN0LnB5CmluZGV4IDg1YzgwM2NmZWI0NTZkMzJhZmM4ZGNmZWI2MzczZDkw
YjU0ZGNjMzUuLjU5ZjY4ZTA5NWMxZWQ1OWJjNTAwNDk0M2UzMTdlNjg0YTNlNzc3YjAgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXJfdW5pdHRlc3QucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2RyaXZlcl91bml0dGVzdC5weQpAQCAtMTc2
LDYgKzE3Niw3IEBAIGNsYXNzIERyaXZlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAg
ICAgICAgJ0FjdHVhbEhhc2g6IGFjdHVhbCcsCiAgICAgICAgICAgICAnRXhwZWN0ZWRIYXNoOiBl
eHBlY3RlZCcsCiAgICAgICAgICAgICAnQ29udGVudC1UeXBlOiBpbWFnZS9wbmcnLAorICAgICAg
ICAgICAgJ1BpeGVsLVRvbGVyYW5jZTogMC0xMDsyMDAtMzAwJywKICAgICAgICAgICAgICdDb250
ZW50LUxlbmd0aDogOScsCiAgICAgICAgICAgICAiMTIzNDU2NzgiLAogICAgICAgICAgICAgIiNF
T0YiLApAQCAtMTgzLDYgKzE4NCw3IEBAIGNsYXNzIERyaXZlclRlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgogICAgICAgICBjb250ZW50X2Jsb2NrID0gZHJpdmVyLl9yZWFkX2Jsb2NrKDAsICIiKQog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRlbnRfYmxvY2suY29udGVudF90eXBlLCAnaW1h
Z2UvcG5nJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb250ZW50X2Jsb2NrLmNvbnRlbnRf
aGFzaCwgJ2FjdHVhbCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udGVudF9ibG9jay5w
aXhlbF90b2xlcmFuY2UsICcwLTEwOzIwMC0zMDAnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGNvbnRlbnRfYmxvY2suY29udGVudCwgYicxMjM0NTY3OFxuJykKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChjb250ZW50X2Jsb2NrLmRlY29kZWRfY29udGVudCwgJzEyMzQ1Njc4XG4nKQogICAg
ICAgICBkcml2ZXIuX3NlcnZlcl9wcm9jZXNzID0gTm9uZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFJ1bm5lclNoYXJlZC9SZWZ0ZXN0RnVuY3Rpb25zLmNwcCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFy
ZWQvUmVmdGVzdEZ1bmN0aW9ucy5jcHAKaW5kZXggZDM1YzI5MmY0YTE1NjhlMDJlZjVjNmNkMzRj
MDE5NzQzNDRhYTJkNi4uZTk0MTNmN2RjZDliNzRkZjRlYWMyOTk4YjNkMTE1MGM2YmFhZDE4ZCAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9SZWZ0ZXN0RnVuY3Rpb25zLmNwcAor
KysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1JlZnRlc3RGdW5jdGlvbnMuY3BwCkBAIC0yNyw2
ICsyNyw3IEBACiAjaW5jbHVkZSAiUmVmdGVzdEZ1bmN0aW9ucy5oIgogCiAjaW5jbHVkZSAiSlNC
YXNpY3MuaCIKKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdUUiB7
CiAKQEAgLTQ5LDQgKzUwLDM4IEBAIGJvb2wgaGFzUmVmdGVzdFdhaXRBdHRyaWJ1dGUoSlNHbG9i
YWxDb250ZXh0UmVmIGNvbnRleHQpCiAgICAgcmV0dXJuIEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4
dCwgY2FsbChjb250ZXh0LCBjbGFzc0xpc3QsICJjb250YWlucyIsIHsgbWFrZVZhbHVlKGNvbnRl
eHQsICJyZWZ0ZXN0LXdhaXQiKSB9KSk7CiB9CiAKK1N0cmluZyBnZXRGdXp6eU1hdGNoaW5nVG9s
ZXJhbmNlKEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0KQoreworICAgIGlmICghY29udGV4dCkK
KyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gZG9jdW1lbnRFbGVtZW50ID0gb2JqZWN0
UHJvcGVydHkoY29udGV4dCwgSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KGNvbnRleHQpLCAiZG9j
dW1lbnQiKTsKKyAgICBhdXRvIG1ldGFUYWcgPSBjYWxsKGNvbnRleHQsIGRvY3VtZW50RWxlbWVu
dCwgInF1ZXJ5U2VsZWN0b3IiLCB7IG1ha2VWYWx1ZShjb250ZXh0LCAibWV0YVtuYW1lPSdmdXp6
eSddIikgfSk7CisgICAgaWYgKCFKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwgbWV0YVRhZykpCisg
ICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIG1ldGFUYWdPYmplY3QgPSBKU1ZhbHVlVG9P
YmplY3QoY29udGV4dCwgbWV0YVRhZywgbnVsbHB0cik7CisgICAgYXV0byBjb250ZW50ID0gcHJv
cGVydHkoY29udGV4dCwgbWV0YVRhZ09iamVjdCwgImNvbnRlbnQiKTsKKyAgICBpZiAoIUpTVmFs
dWVJc1N0cmluZyhjb250ZXh0LCBjb250ZW50KSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAg
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBjb250ZW50SlNTdHJpbmcgPSBhZG9wdChKU1ZhbHVl
VG9TdHJpbmdDb3B5KGNvbnRleHQsIGNvbnRlbnQsIG51bGxwdHIpKTsKKyAgICBzaXplX3QgY29u
dGVudFN0cmluZ1NpemUgPSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoY29udGVu
dEpTU3RyaW5nLmdldCgpKSArIDE7CisgICAgYXV0byBjb250ZW50QnVmZmVyID0gbWFrZVVuaXF1
ZUFycmF5PGNoYXI+KGNvbnRlbnRTdHJpbmdTaXplKTsKKyAgICBKU1N0cmluZ0dldFVURjhDU3Ry
aW5nKGNvbnRlbnRKU1N0cmluZy5nZXQoKSwgY29udGVudEJ1ZmZlci5nZXQoKSwgY29udGVudFN0
cmluZ1NpemUpOworCisgICAgYXV0byByZXR1cm5TdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KGNv
bnRlbnRCdWZmZXIuZ2V0KCkpLnN0cmlwV2hpdGVTcGFjZSgpOworICAgIHJldHVyblN0cmluZy5y
ZXBsYWNlKCJtYXhEaWZmZXJlbmNlPSIsICIiKTsKKyAgICByZXR1cm5TdHJpbmcucmVwbGFjZSgi
dG90YWxQaXhlbHM9IiwgIiIpOworCisgICAgLy8gU3RyaXAgb3V0IGFueSByZWZlcmVuY2UgZmls
ZSBuYW1lIGZyb20gdGhlIGZ1enppbmVzcyBzcGVjaWZpZXIuCisgICAgLy8gRklYTUU6IEluc3Rl
YWQgb2YgdXNpbmcgdGhlIGZpcnN0IGZ1enppbmVzcyBzcGVjaWZpZXIgZm9yIGFsbCByZWZlcmVu
Y2UgZmlsZXMsIHRoaXMgY29kZQorICAgIC8vIHNob3VsZCBmaW5kIHRoZSBjb3JyZWN0IG9uZSBi
YXNlZCBvbiB0aGUgbmFtZSB0aGF0IGlzIHN0cmlwcGVkIG91dCBiZWxvdy4KKyAgICBhdXRvIGNv
bG9uTG9jYXRpb24gPSByZXR1cm5TdHJpbmcuZmluZCgiOiIpOworICAgIGlmIChjb2xvbkxvY2F0
aW9uICE9IG5vdEZvdW5kKQorICAgICAgICByZXR1cm5TdHJpbmcgPSByZXR1cm5TdHJpbmcuc3Vi
c3RyaW5nKGNvbG9uTG9jYXRpb24gKyAxKTsKKworICAgIHJldHVybiByZXR1cm5TdHJpbmc7Cit9
CisKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvUmVmdGVzdEZ1bmN0aW9u
cy5oIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9SZWZ0ZXN0RnVuY3Rpb25zLmgKaW5kZXggOWI2
ZmQ3OTU3ZjBiOTA1MWM5MDQ5YjAzMzNjZjEwODk5ZjVkOTE1My4uN2YxY2UxNDYxNWIxOTM5Yjk5
ZjBjZTI1NzQyNDgzOTM4MWJkOGY0YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJl
ZC9SZWZ0ZXN0RnVuY3Rpb25zLmgKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9SZWZ0ZXN0
RnVuY3Rpb25zLmgKQEAgLTI1LDExICsyNSwxNCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCiB0eXBlZGVmIHN0cnVjdCBPcGFxdWVKU0NvbnRl
eHQqIEpTR2xvYmFsQ29udGV4dFJlZjsKIAogbmFtZXNwYWNlIFdUUiB7CiAKIHZvaWQgc2VuZFRl
c3RSZW5kZXJlZEV2ZW50KEpTR2xvYmFsQ29udGV4dFJlZik7CiBib29sIGhhc1JlZnRlc3RXYWl0
QXR0cmlidXRlKEpTR2xvYmFsQ29udGV4dFJlZik7CitTdHJpbmcgZ2V0RnV6enlNYXRjaGluZ1Rv
bGVyYW5jZShKU0dsb2JhbENvbnRleHRSZWYpOwogCiB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDAy
MmJlNDM5MTM1OGI4ZDA5YThmN2U5ZDcwZTc5ZGVlYjY0ODgwNzUuLmM0NWJjZGFiMGNlMjc4YzY0
ODc2ODRmNDQxNmMwYWU4ZGViZjEyODEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC00OTksNiArNDk5
LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6YmVnaW5UZXN0aW5nKFdLRGljdGlvbmFyeVJlZiBz
ZXR0aW5ncywgQmVnaW5nVGVzdGluZ01vZGUgdGUKICAgICBtX3RpbWVvdXQgPSBTZWNvbmRzOjpm
cm9tTWlsbGlzZWNvbmRzKHVpbnQ2NFZhbHVlKHNldHRpbmdzLCAiVGltZW91dCIpKTsKICAgICBt
X2R1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciA9IGJvb2xlYW5WYWx1ZShzZXR0aW5ncywgIkR1bXBK
U0NvbnNvbGVMb2dJblN0ZEVyciIpOwogCisgICAgbV9waXhlbFJlc3VsdFRvbGVyYW5jZSA9ICIi
OwogICAgIG1fcGl4ZWxSZXN1bHQuY2xlYXIoKTsKICAgICBtX3JlcGFpbnRSZWN0cy5jbGVhcigp
OwogCkBAIC01NjEsOCArNTYyLDEwIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRvbmUoKQogICAg
IGF1dG8gYm9keSA9IGFkb3B0V0soV0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpKTsKIAogICAg
IHNldFZhbHVlKGJvZHksICJQaXhlbFJlc3VsdElzUGVuZGluZyIsIG1fcGl4ZWxSZXN1bHRJc1Bl
bmRpbmcpOworICAgIHNldFZhbHVlKGJvZHksICJQaXhlbFJlc3VsdFRvbGVyYW5jZSIsIG1fcGl4
ZWxSZXN1bHRUb2xlcmFuY2UpOwogICAgIGlmICghbV9waXhlbFJlc3VsdElzUGVuZGluZykKICAg
ICAgICAgc2V0VmFsdWUoYm9keSwgIlBpeGVsUmVzdWx0IiwgbV9waXhlbFJlc3VsdCk7CisKICAg
ICBzZXRWYWx1ZShib2R5LCAiUmVwYWludFJlY3RzIiwgbV9yZXBhaW50UmVjdHMpOwogICAgIHNl
dFZhbHVlKGJvZHksICJBdWRpb1Jlc3VsdCIsIG1fYXVkaW9SZXN1bHQpOwogCmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgK
aW5kZXggY2ZiYWQwNDkwYzE2Yjk3NjJjYzEyOWExNjI5YmM2ZmQwODRiZDhiOC4uMTI4NmExMjYz
YjgxZDlkOGI4NDE5MGEwN2UyMjIzY2UxMDU0M2ZjMCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaApAQCAtNzAsNiAr
NzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkb25lKCk7CiAgICAgdm9pZCBzZXRBdWRpb1Jlc3Vs
dChXS0RhdGFSZWYgYXVkaW9EYXRhKSB7IG1fYXVkaW9SZXN1bHQgPSBhdWRpb0RhdGE7IH0KICAg
ICB2b2lkIHNldFBpeGVsUmVzdWx0KFdLSW1hZ2VSZWYgaW1hZ2UpIHsgbV9waXhlbFJlc3VsdCA9
IGltYWdlOyBtX3BpeGVsUmVzdWx0SXNQZW5kaW5nID0gZmFsc2U7IH0KKyAgICB2b2lkIHNldFBp
eGVsUmVzdWx0VG9sZXJhbmNlKGNvbnN0IFN0cmluZyYgdG9sZXJhbmNlKSB7IG1fcGl4ZWxSZXN1
bHRUb2xlcmFuY2UgPSB0b2xlcmFuY2U7IH0KICAgICB2b2lkIHNldFBpeGVsUmVzdWx0SXNQZW5k
aW5nKGJvb2wgaXNQZW5kaW5nKSB7IG1fcGl4ZWxSZXN1bHRJc1BlbmRpbmcgPSBpc1BlbmRpbmc7
IH0KICAgICB2b2lkIHNldFJlcGFpbnRSZWN0cyhXS0FycmF5UmVmIHJlY3RzKSB7IG1fcmVwYWlu
dFJlY3RzID0gcmVjdHM7IH0KIApAQCAtMTk4LDYgKzE5OSw3IEBAIHByaXZhdGU6CiAKICAgICBX
S1JldGFpblB0cjxXS0RhdGFSZWY+IG1fYXVkaW9SZXN1bHQ7CiAgICAgV0tSZXRhaW5QdHI8V0tJ
bWFnZVJlZj4gbV9waXhlbFJlc3VsdDsKKyAgICBTdHJpbmcgbV9waXhlbFJlc3VsdFRvbGVyYW5j
ZTsKICAgICBXS1JldGFpblB0cjxXS0FycmF5UmVmPiBtX3JlcGFpbnRSZWN0czsKIAogICAgIFZl
Y3RvcjxTdHJpbmc+IG1fYWxsb3dlZEhvc3RzOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCmluZGV4
IDNjNzQxMjdjZmJlMGRhNDYzZjcxY2E2MDBhNWNhYzMwODY2YmY0YTIuLjA0YjEwNzE5MjkzMjFm
ZDIxOWNiMDQ4MDgzNWRhOTFmYjY3ODJlM2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKQEAg
LTgyNSw2ICs4MjUsOCBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZHVtcCgpCiAgICAgICAg
IGluamVjdGVkQnVuZGxlLmR1bXBCYWNrRm9yd2FyZExpc3RzRm9yQWxsUGFnZXMoc3RyaW5nQnVp
bGRlcik7CiAKICAgICBpZiAoaW5qZWN0ZWRCdW5kbGUuc2hvdWxkRHVtcFBpeGVscygpICYmIGlu
amVjdGVkQnVuZGxlLnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcFBpeGVscygpKSB7CisgICAgICAg
IGluamVjdGVkQnVuZGxlLnNldFBpeGVsUmVzdWx0VG9sZXJhbmNlKGdldEZ1enp5TWF0Y2hpbmdU
b2xlcmFuY2UoV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KGZyYW1lKSkpOworCiAg
ICAgICAgIGJvb2wgc2hvdWxkQ3JlYXRlU25hcHNob3QgPSBpbmplY3RlZEJ1bmRsZS50ZXN0UnVu
bmVyKCktPmlzUHJpbnRpbmcoKTsKICAgICAgICAgaWYgKHNob3VsZENyZWF0ZVNuYXBzaG90KSB7
CiAgICAgICAgICAgICBXS1NuYXBzaG90T3B0aW9ucyBvcHRpb25zID0ga1dLU25hcHNob3RPcHRp
b25zU2hhcmVhYmxlOwpAQCAtODM3LDcgKzgzOSw2IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdl
OjpkdW1wKCkKICAgICAgICAgICAgICAgICBpZiAoaW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigp
LT5zaG91bGREdW1wU2VsZWN0aW9uUmVjdCgpKQogICAgICAgICAgICAgICAgICAgICBvcHRpb25z
IHw9IGtXS1NuYXBzaG90T3B0aW9uc1BhaW50U2VsZWN0aW9uUmVjdGFuZ2xlOwogICAgICAgICAg
ICAgfQotCiAgICAgICAgICAgICBpbmplY3RlZEJ1bmRsZS5zZXRQaXhlbFJlc3VsdChhZG9wdFdL
KFdLQnVuZGxlUGFnZUNyZWF0ZVNuYXBzaG90V2l0aE9wdGlvbnMobV9wYWdlLCBzbmFwc2hvdFJl
Y3QsIG9wdGlvbnMpKS5nZXQoKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgaW5qZWN0
ZWRCdW5kbGUuc2V0UGl4ZWxSZXN1bHRJc1BlbmRpbmcodHJ1ZSk7CmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IDM0NTA2OTMwMDk5MmZiM2UwNzEzZTgzMmM0
MTdmYzUxYzA4OGYwOGMuLmE1OTRiY2Q2MTRiZDRkMTU2ZWM5ZmY3NmE0MzJiY2YyYmYxMzA5ZDIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0yODYsNiAr
Mjg2LDkgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZHVtcEF1ZGlvKFdLRGF0YVJlZiBhdWRpb0Rh
dGEpCiAKIGJvb2wgVGVzdEludm9jYXRpb246OmNvbXBhcmVBY3R1YWxIYXNoVG9FeHBlY3RlZEFu
ZER1bXBSZXN1bHRzKGNvbnN0IGNoYXIgYWN0dWFsSGFzaFszM10pCiB7CisgICAgaWYgKG1fcGl4
ZWxSZXN1bHRUb2xlcmFuY2UgJiYgV0tTdHJpbmdHZXRMZW5ndGgobV9waXhlbFJlc3VsdFRvbGVy
YW5jZS5nZXQoKSkpCisgICAgICAgIGZwcmludGYoc3Rkb3V0LCAiUGl4ZWwtVG9sZXJhbmNlOiAl
c1xuIiwgdG9TVEQobV9waXhlbFJlc3VsdFRvbGVyYW5jZS5nZXQoKSkuY19zdHIoKSk7CisKICAg
ICAvLyBDb21wdXRlIHRoZSBoYXNoIG9mIHRoZSBiaXRtYXAgY29udGV4dCBwaXhlbHMKICAgICBm
cHJpbnRmKHN0ZG91dCwgIlxuQWN0dWFsSGFzaDogJXNcbiIsIGFjdHVhbEhhc2gpOwogCkBAIC0z
MjIsOCArMzI1LDEwIEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lCiAgICAgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJEb25lIikpIHsKICAgICAgICAgYXV0
byBtZXNzYWdlQm9keURpY3Rpb25hcnkgPSBkaWN0aW9uYXJ5VmFsdWUobWVzc2FnZUJvZHkpOwog
ICAgICAgICBtX3BpeGVsUmVzdWx0SXNQZW5kaW5nID0gYm9vbGVhblZhbHVlKG1lc3NhZ2VCb2R5
RGljdGlvbmFyeSwgIlBpeGVsUmVzdWx0SXNQZW5kaW5nIik7CisgICAgICAgIG1fcGl4ZWxSZXN1
bHRUb2xlcmFuY2UgPSBzdHJpbmdWYWx1ZShtZXNzYWdlQm9keURpY3Rpb25hcnksICJQaXhlbFJl
c3VsdFRvbGVyYW5jZSIpOwogICAgICAgICBpZiAoIW1fcGl4ZWxSZXN1bHRJc1BlbmRpbmcpIHsK
ICAgICAgICAgICAgIG1fcGl4ZWxSZXN1bHQgPSBzdGF0aWNfY2FzdDxXS0ltYWdlUmVmPih2YWx1
ZShtZXNzYWdlQm9keURpY3Rpb25hcnksICJQaXhlbFJlc3VsdCIpKTsKKwogICAgICAgICAgICAg
QVNTRVJUKCFtX3BpeGVsUmVzdWx0IHx8IG1fZHVtcFBpeGVscyk7CiAgICAgICAgIH0KICAgICAg
ICAgbV9yZXBhaW50UmVjdHMgPSBzdGF0aWNfY2FzdDxXS0FycmF5UmVmPih2YWx1ZShtZXNzYWdl
Qm9keURpY3Rpb25hcnksICJSZXBhaW50UmVjdHMiKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmgKaW5kZXggZGYzOTkzMmEwOGMxMTY3OTY3NTdkYjljYjY2ZjgzN2RlNjI1
ODU4NC4uODZjYjBmYTNjODJlY2U1MTg0ZmQ5ZjJjYmM3M2UyOWE2MGY5YzY5OSAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaApAQCAtMTc0LDYgKzE3NCw3IEBAIHByaXZh
dGU6CiAgICAgU3RyaW5nIG1fc2F2ZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogICAgIFdLUmV0
YWluUHRyPFdLRGF0YVJlZj4gbV9hdWRpb1Jlc3VsdDsKICAgICBXS1JldGFpblB0cjxXS0ltYWdl
UmVmPiBtX3BpeGVsUmVzdWx0OworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtX3BpeGVs
UmVzdWx0VG9sZXJhbmNlOwogICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IG1fcmVwYWludFJl
Y3RzOwogICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxVSVNjcmlwdENvbnRleHQ+IG1fVUlTY3Jp
cHRDb250ZXh0OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDdmYzJlZTM5NGQ1NDk5YmRiMWU2NTY5YzEzMWQ5YzljYjViYTI3
YTAuLmY0Yjk3NzBlZGU1MWI1NmVhNzFmYTMwYjExN2RlMjU5MzU2NTk3MzcgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAyMS0xMC0yMCAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIFdQVCdzIHBlci10ZXN0IHJlZnRlc3Qg
ZnV6enkgc3BlY2lmaWNhdGlvbiB0byBXZWJLaXRUZXN0UnVubmVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzIwMTAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6IFVuc2tp
cCBzb21lIG5ld2x5IHBhc3NpbmcgdGVzdHMuCisKIDIwMjEtMTAtMTcgIERlYW4gSmFja3NvbiAg
PGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJYUl0gU3R1YnMgZm9yIFdlYlhSIEhhbmQg
SW5wdXQgTW9kdWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBmN2E3YjkyNDBhNzllN2M1NmU0MmY2
YmU1MjMyNDA2M2Y0ODY3Y2NlLi41ZWUwN2NhNDMzNmQ3MjA5ODQwODkwMzk4MjQ1Yjk4NWE5MjM0
Nzg1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91
dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTM5MzAsNyArMzkzMCw2IEBAIHdlYmtpdC5vcmcv
Yi8yMzAwODAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9y
bXMvdHJhbnNmb3JtCiB3ZWJraXQub3JnL2IvMjMwMDgwIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS10cmFuc2xhdGUtYmFja2dyb3Vu
ZC0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIzMDA4MCBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0t
dHJhbnNsYXRlLWJhY2tncm91bmQtMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtp
dC5vcmcvYi8yMzAwODAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRy
YW5zZm9ybXMvdHJhbnNmb3JtLXRyYW5zbGF0ZXgtMDA2Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KLXdlYmtpdC5vcmcvYi8yMzAwODAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtM2QtbWF0cml4M2QtMDAxLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMzAwODAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtM2QtcGVyc3BlY3RpdmUtMDAyLmh0
bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIzMDA4MCBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0zZC1w
ZXJzcGVjdGl2ZS0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIz
MDA4MCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90
cmFuc2Zvcm0zZC1wZXJzcGVjdGl2ZS0wMDQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQpAQCAt
NDU0NSwyMSArNDU0NCwxMCBAQCB3ZWJraXQub3JnL2IvMjE0NDU1IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb2xvci1hZGp1c3QvcmVuZGVyaQogd2Via2l0Lm9yZy9i
LzIxNDQ1NiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaW1hZ2VzL2Nv
bmljLWdyYWRpZW50LWFuZ2xlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcv
Yi8yMTQ0NTYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy9j
b25pYy1ncmFkaWVudC1hbmdsZS1uZWdhdGl2ZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3
ZWJraXQub3JnL2IvMjE0NDU2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1pbWFnZXMvY29uaWMtZ3JhZGllbnQtY2VudGVyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
LXdlYmtpdC5vcmcvYi8yMTQ0NTYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLWltYWdlcy9pbWFnZS1vcmllbnRhdGlvbi9pbWFnZS1vcmllbnRhdGlvbi1iYWNrZ3JvdW5k
LWltYWdlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMTQ0NTYgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy9pbWFnZS1vcmllbnRh
dGlvbi9pbWFnZS1vcmllbnRhdGlvbi1iYWNrZ3JvdW5kLXByb3BlcnRpZXMuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIxNDQ1NiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtaW1hZ2VzL2ltYWdlLW9yaWVudGF0aW9uL2ltYWdlLW9yaWVudGF0
aW9uLWRlZmF1bHQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIxNDQ1
NiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaW1hZ2VzL2ltYWdlLW9y
aWVudGF0aW9uL2ltYWdlLW9yaWVudGF0aW9uLWZyb20taW1hZ2UtY29tcG9zaXRlZC1keW5hbWlj
MS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjE0NDU2IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMvaW1hZ2Utb3JpZW50YXRpb24v
aW1hZ2Utb3JpZW50YXRpb24tZnJvbS1pbWFnZS1jb21wb3NpdGVkLWR5bmFtaWMyLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMTQ0NTYgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy9pbWFnZS1vcmllbnRhdGlvbi9pbWFnZS1vcmll
bnRhdGlvbi1mcm9tLWltYWdlLWNvbXBvc2l0ZWQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQog
d2Via2l0Lm9yZy9iLzIxNDQ1NiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtaW1hZ2VzL2ltYWdlLW9yaWVudGF0aW9uL2ltYWdlLW9yaWVudGF0aW9uLWZyb20taW1hZ2Ut
Y29udGVudC1pbWFnZXMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIx
NDQ1NiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaW1hZ2VzL2ltYWdl
LW9yaWVudGF0aW9uL2ltYWdlLW9yaWVudGF0aW9uLWZyb20taW1hZ2UtZHluYW1pYzEuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIxNDQ1NiBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaW1hZ2VzL2ltYWdlLW9yaWVudGF0aW9uL2ltYWdlLW9y
aWVudGF0aW9uLWZyb20taW1hZ2UtZHluYW1pYzIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQog
d2Via2l0Lm9yZy9iLzIxNDQ1NiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtaW1hZ2VzL2ltYWdlLW9yaWVudGF0aW9uL2ltYWdlLW9yaWVudGF0aW9uLWZyb20taW1hZ2Ut
ZW1iZWRkZWQtY29udGVudC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2Iv
MjE0NDU2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMvaW1h
Z2Utb3JpZW50YXRpb24vaW1hZ2Utb3JpZW50YXRpb24tZnJvbS1pbWFnZS5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjE0NDU2IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMvaW1hZ2Utb3JpZW50YXRpb24vaW1hZ2Utb3JpZW50YXRp
b24tbGlzdC1zdHlsZS1pbWFnZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3Jn
L2IvMjE0NDU2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMv
aW1hZ2Utb3JpZW50YXRpb24vaW1hZ2Utb3JpZW50YXRpb24tbm9uZS1jb250ZW50LWltYWdlcy5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjE0NDU2IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMvaW1hZ2Utb3JpZW50YXRpb24vaW1h
Z2Utb3JpZW50YXRpb24tbm9uZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3Jn
L2IvMjE0NDU2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMv
aW1hZ2Utb3JpZW50YXRpb24vaW1hZ2Utb3JpZW50YXRpb24tbm9uZS1pbWFnZS1kb2N1bWVudC5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjE0NDU2IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMvaW1hZ2Utb3JpZW50YXRpb24vc3Zn
LWltYWdlLW9yaWVudGF0aW9uLWFzcGVjdC1yYXRpby5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
CiB3ZWJraXQub3JnL2IvMjE0NDU2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1pbWFnZXMvaW1hZ2Utb3JpZW50YXRpb24vc3ZnLWltYWdlLW9yaWVudGF0aW9uLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMTQ0NTYgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy9pbWFnZS1vcmllbnRhdGlvbi9zdmctaW1h
Z2Utb3JpZW50YXRpb24tbm9uZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442002</attachid>
            <date>2021-10-21 03:09:51 -0700</date>
            <delta_ts>2021-10-21 04:28:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232010-20211021120949.patch</filename>
            <type>text/plain</type>
            <size>41563</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MzUwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWI5YTk1ZDYyNjVmMDAzNmJlN2VjZjBhNjFmODYyZjBk
OTcxMDY2Yy4uYzVkNmYxOGI0MTE3ZTY0NTgzMTYyNmYxZjM4ZmM3NmNkMTg1ZjIzYyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5
IEBACisyMDIxLTEwLTIxICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4K
KworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgV1BUJ3MgcGVyLXRlc3QgcmVmdGVzdCBmdXp6eSBz
cGVjaWZpY2F0aW9uIHRvIFdlYktpdFRlc3RSdW5uZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjAxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBXUFQgZnV6enkgbWF0Y2hp
bmcgc3ludGF4LCB3aGljaCBhbGxvd3MgaW5kaXZpZHVhbCBXUFQgcmVmdGVzdHMKKyAgICAgICAg
dG8gYWRqdXN0IHRoZSB0b2xlcmFuY2UgcGFzc2VkIHRvIEltYWdlRGlmZi4gVGhpcyBhbHNvIGFk
ZHMgYW4gYWx0ZXJuYXRpdmUgd2F5CisgICAgICAgIHRvIHNwZWNpZnkgdG9sZXJhbmNlIGZvciBJ
bWFnZURpZmYuIEluIGFkZGl0aW9uIHRvIHRoZSB0cmFkaXRpb25hbCBwZXJjZW50CisgICAgICAg
IGRpZmZlcmVuY2UsIHRoaXMgYWRkcyBzdXBwb3J0IGZvciBXUFQgc3R5bGU6IHR3byByYW5nZXMg
c3BlY2lmeWluZyB0aGUKKyAgICAgICAgbnVtYmVyIG9mIHBpeGVscyBkaWZmZXJlbnQgYXMgd2Vs
bCBhcyB0aGUgbWF4aW11bSBkaWZmZXJlbmNlIG9uIGFueQorICAgICAgICBpbmRpdmlkdWFsIGNv
bG9yIGNoYW5uZWwuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9QaXhlbER1bXBTdXBwb3J0
LmNwcDoKKyAgICAgICAgKGR1bXBXZWJWaWV3QXNQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVk
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9QaXhlbER1bXBTdXBwb3J0Lmg6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoZHVtcCk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAg
ICAgKGR1bXApOgorICAgICAgICAqIEltYWdlRGlmZi9JbWFnZURpZmYuY3BwOgorICAgICAgICAo
c3BsaXRTdHJpbmcpOgorICAgICAgICAocGFyc2VQaXhlbFRvbGVyYW5jZVJhbmdlKToKKyAgICAg
ICAgKHBhcnNlVG9sZXJhbmNlKToKKyAgICAgICAgKHdpdGhpblRvbGVyYW5jZSk6CisgICAgICAg
IChtYWluKToKKyAgICAgICAgKiBJbWFnZURpZmYvUGxhdGZvcm1JbWFnZS5jcHA6CisgICAgICAg
IChJbWFnZURpZmY6OlBsYXRmb3JtSW1hZ2U6OmRpZmZlcmVuY2UpOgorICAgICAgICAqIEltYWdl
RGlmZi9QbGF0Zm9ybUltYWdlLmg6CisgICAgICAgICogSW1hZ2VEaWZmL2NnL0NvbmZpZ3VyYXRp
b25zL0Jhc2UueGNjb25maWc6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5OgorICAgICAgICAoU2luZ2xlVGVz
dFJ1bm5lci5fY29tcGFyZV9pbWFnZSk6CisgICAgICAgIChTaW5nbGVUZXN0UnVubmVyLl9jb21w
YXJlX291dHB1dF93aXRoX3JlZmVyZW5jZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9w
b3J0L2RyaXZlci5weToKKyAgICAgICAgKERyaXZlck91dHB1dC5fX2luaXRfXyk6CisgICAgICAg
IChEcml2ZXIucnVuX3Rlc3QpOgorICAgICAgICAoRHJpdmVyLl9yZWFkX29wdGlvbmFsX2ltYWdl
X2Jsb2NrKToKKyAgICAgICAgKERyaXZlci5fcHJvY2Vzc19zdGRvdXRfbGluZSk6CisgICAgICAg
IChDb250ZW50QmxvY2suX19pbml0X18pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9y
dC9kcml2ZXJfdW5pdHRlc3QucHk6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9SZWZ0ZXN0
RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdUUjo6ZnV6enlNYXRjaGluZ1RvbGVyYW5jZSk6Cisg
ICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9SZWZ0ZXN0RnVuY3Rpb25zLmg6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAg
ICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpiZWdpblRlc3RpbmcpOgorICAgICAgICAoV1RSOjpJ
bmplY3RlZEJ1bmRsZTo6ZG9uZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6
c2V0UGl4ZWxSZXN1bHRUb2xlcmFuY2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0
ZWRCdW5kbGVQYWdlOjpkdW1wKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmNvbXBhcmVBY3R1YWxI
YXNoVG9FeHBlY3RlZEFuZER1bXBSZXN1bHRzKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRp
b246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmg6CisKIDIwMjEtMTAtMTcgIERhdmlkIEtpbHpl
ciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgdGVzdHMgZm9yIFdURjo6T1NP
YmplY3RQdHIvYWRvcHRPU09iamVjdCBpbiBDb2NvYSB3aXRoIGFuZCB3aXRob3V0IEFSQwpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvUGl4ZWxEdW1wU3VwcG9ydC5jcHAgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9QaXhlbER1bXBTdXBwb3J0LmNwcAppbmRleCA4ZDhhNmVmMmE5MGM2
MjhjOWNmZjc5MWE3MzNiYjFlM2RhZWMzZjMyLi4zNzBlZWMxZWFhMjM4MzdhYTdkOTA5ODc5YmNh
MjU2ODljNDE2NTcxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9QaXhlbER1bXBT
dXBwb3J0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9QaXhlbER1bXBTdXBwb3J0LmNw
cApAQCAtNDUsNyArNDUsNyBAQAogI2luY2x1ZGUgIlBpeGVsRHVtcFN1cHBvcnREaXJlY3QyRC5o
IgogI2VuZGlmCiAKLXZvaWQgZHVtcFdlYlZpZXdBc1BpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0
ZWQoY29uc3Qgc3RkOjpzdHJpbmcmIGV4cGVjdGVkSGFzaCkKK3ZvaWQgZHVtcFdlYlZpZXdBc1Bp
eGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQoY29uc3Qgc3RkOjpzdHJpbmcmIGV4cGVjdGVkSGFz
aCwgY29uc3Qgc3RkOjpzdHJpbmcmIGZ1enp5TWF0Y2hpbmdUb2xlcmFuY2UpCiB7CiAgICAgUmVm
UHRyPEJpdG1hcENvbnRleHQ+IGNvbnRleHQ7CiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNzIsNiAr
NzIsOSBAQCB2b2lkIGR1bXBXZWJWaWV3QXNQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKGNv
bnN0IHN0ZDo6c3RyaW5nJiBleHBlY3RlZEhhc2gpCiAgICAgICAgICAgICBkdW1wSW1hZ2UgPSBm
YWxzZTsKICAgICB9CiAKKyAgICBpZiAoZnV6enlNYXRjaGluZ1RvbGVyYW5jZS5zaXplKCkpCisg
ICAgICAgIHByaW50ZigiUGl4ZWwtVG9sZXJhbmNlOiAlc1xuIiwgZnV6enlNYXRjaGluZ1RvbGVy
YW5jZS5jX3N0cigpKTsKKwogICAgIGlmIChkdW1wSW1hZ2UpCiAgICAgICAgIGR1bXBCaXRtYXAo
Y29udGV4dC5nZXQoKSwgYWN0dWFsSGFzaCk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9QaXhlbER1bXBTdXBwb3J0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9QaXhlbER1
bXBTdXBwb3J0LmgKaW5kZXggYmQzYjAxZWRjOWRmNTJiYzFlZjY3OWVhYmRmMDQ1YjM3NzM2MzA0
Mi4uZDQwMTc2ODAzOTE1OTdkODAwOGMzNjdhOWFmMzk5NzVhNjE3ZTQwYyAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvUGl4ZWxEdW1wU3VwcG9ydC5oCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL1BpeGVsRHVtcFN1cHBvcnQuaApAQCAtMzcsNSArMzcsNSBAQCB2b2lkIGNvbXB1
dGVTSEExSGFzaFN0cmluZ0ZvckJpdG1hcENvbnRleHQoQml0bWFwQ29udGV4dCosIGNoYXIgaGFz
aFN0cmluZ1szM10pOwogUmVmUHRyPEJpdG1hcENvbnRleHQ+IGNyZWF0ZVBhZ2VkQml0bWFwQ29u
dGV4dCgpOwogUmVmUHRyPEJpdG1hcENvbnRleHQ+IGNyZWF0ZUJpdG1hcENvbnRleHRGcm9tV2Vi
Vmlldyhib29sIG9uc2NyZWVuLCBib29sIGluY3JlbWVudGFsUmVwYWludCwgYm9vbCBzd2VlcEhv
cml6b250YWxseSwgYm9vbCBkcmF3U2VsZWN0aW9uUmVjdCk7CiB2b2lkIGR1bXBCaXRtYXAoQml0
bWFwQ29udGV4dCosIGNvbnN0IGNoYXIqIGNoZWNrc3VtKTsKLXZvaWQgZHVtcFdlYlZpZXdBc1Bp
eGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQoY29uc3Qgc3RkOjpzdHJpbmcmIGV4cGVjdGVkSGFz
aCk7Cit2b2lkIGR1bXBXZWJWaWV3QXNQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKGNvbnN0
IHN0ZDo6c3RyaW5nJiBleHBlY3RlZEhhc2gsIGNvbnN0IHN0ZDo6c3RyaW5nJiBmdXp6eU1hdGNo
aW5nVG9sZXJhbmNlKTsKIHZvaWQgcHJpbnRQTkcoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwg
Y29uc3Qgc2l6ZV90IGRhdGFMZW5ndGgsIGNvbnN0IGNoYXIqIGNoZWNrc3VtKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbSBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQppbmRleCBjMWZiNjE1MTlkMTg1Yjcz
OGJmM2Y0MDY4ODZiOTc4YmVjN2M2NGI2Li5iOTFkM2YyMTUzMzEzMWE1NWZlZTBiNzAwNjg5MTVh
ODg2MGFjNGE5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRl
clRyZWUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1t
CkBAIC00OSw2ICs0OSw3IEBACiAjaW1wb3J0ICJQaXhlbER1bXBTdXBwb3J0LmgiCiAjaW1wb3J0
ICJQb2xpY3lEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiUG9zZUFzQ2xhc3MuaCIKKyNpbXBvcnQgIlJl
ZnRlc3RGdW5jdGlvbnMuaCIKICNpbXBvcnQgIlJlc291cmNlTG9hZERlbGVnYXRlLmgiCiAjaW1w
b3J0ICJUZXN0Q29tbWFuZC5oIgogI2ltcG9ydCAiVGVzdEZlYXR1cmVzLmgiCkBAIC0xNjY1LDcg
KzE2NjYsNyBAQCB2b2lkIGR1bXAoKQogCiAgICAgaWYgKGR1bXBQaXhlbHNGb3JDdXJyZW50VGVz
dCAmJiBnVGVzdFJ1bm5lci0+Z2VuZXJhdGVQaXhlbFJlc3VsdHMoKSkKICAgICAgICAgLy8gRklY
TUU6IHdoZW4gaXNQcmludGluZyBpcyBzZXQsIGR1bXAgdGhlIGltYWdlIHdpdGggcGFnZSBzZXBh
cmF0b3JzLgotICAgICAgICBkdW1wV2ViVmlld0FzUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3Rl
ZChnVGVzdFJ1bm5lci0+ZXhwZWN0ZWRQaXhlbEhhc2goKSk7CisgICAgICAgIGR1bXBXZWJWaWV3
QXNQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKGdUZXN0UnVubmVyLT5leHBlY3RlZFBpeGVs
SGFzaCgpLCBXVFI6OmZ1enp5TWF0Y2hpbmdUb2xlcmFuY2UoW21haW5GcmFtZSBnbG9iYWxDb250
ZXh0XSkpOwogCiAgICAgcHV0cygiI0VPRiIpOyAgIC8vIHRlcm1pbmF0ZSB0aGUgKHBvc3NpYmx5
IGVtcHR5KSBwaXhlbHMgYmxvY2sKICAgICBmZmx1c2goc3Rkb3V0KTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4IDRkNzM5Yjc2YTQ4MjZmZDA5ZTc5
YTFlN2YxZDZkOTQ0ZDM1YzA0MjguLjQyYmZkZTJmY2UyNDNlZjA0YzYwNWMzYTNiODY4YTMwZDA5
ZWM1NzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJl
ZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcApA
QCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkphdmFTY3JpcHRUaHJlYWRpbmcuaCIKICNpbmNs
dWRlICJQaXhlbER1bXBTdXBwb3J0LmgiCiAjaW5jbHVkZSAiUG9saWN5RGVsZWdhdGUuaCIKKyNp
bmNsdWRlICJSZWZ0ZXN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkRGVsZWdh
dGUuaCIKICNpbmNsdWRlICJUZXN0Q29tbWFuZC5oIgogI2luY2x1ZGUgIlRlc3RGZWF0dXJlcy5o
IgpAQCAtNzgxLDcgKzc4Miw3IEBAIHZvaWQgZHVtcCgpCiAKICAgICBpZiAoZHVtcFBpeGVsc0Zv
ckN1cnJlbnRUZXN0ICYmIDo6Z1Rlc3RSdW5uZXItPmdlbmVyYXRlUGl4ZWxSZXN1bHRzKCkpIHsK
ICAgICAgICAgLy8gRklYTUU6IHdoZW4gaXNQcmludGluZyBpcyBzZXQsIGR1bXAgdGhlIGltYWdl
IHdpdGggcGFnZSBzZXBhcmF0b3JzLgotICAgICAgICBkdW1wV2ViVmlld0FzUGl4ZWxzQW5kQ29t
cGFyZVdpdGhFeHBlY3RlZChnVGVzdFJ1bm5lci0+ZXhwZWN0ZWRQaXhlbEhhc2goKSk7CisgICAg
ICAgIGR1bXBXZWJWaWV3QXNQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKGdUZXN0UnVubmVy
LT5leHBlY3RlZFBpeGVsSGFzaCgpLCBXVFI6OmZ1enp5TWF0Y2hpbmdUb2xlcmFuY2UoZnJhbWUt
Pmdsb2JhbENvbnRleHQoKSkpOwogICAgIH0KIAogICAgIGZwdXRzKCIjRU9GXG4iLCB0ZXN0UmVz
dWx0KTsgLy8gdGVybWluYXRlIHRoZSAocG9zc2libHkgZW1wdHkpIHBpeGVscyBibG9jawpkaWZm
IC0tZ2l0IGEvVG9vbHMvSW1hZ2VEaWZmL0ltYWdlRGlmZi5jcHAgYi9Ub29scy9JbWFnZURpZmYv
SW1hZ2VEaWZmLmNwcAppbmRleCA5ODQ5ZjZmZDVkMGIwYmU0MmNkNDZjMmQ5Yjc5ZTdiY2I3ZDg0
MWI1Li5hMGViNGYxMDQwN2U4OGRmOGEwODM4ZTFkMDRjMTE3MmI3MjVlYTNhIDEwMDY0NAotLS0g
YS9Ub29scy9JbWFnZURpZmYvSW1hZ2VEaWZmLmNwcAorKysgYi9Ub29scy9JbWFnZURpZmYvSW1h
Z2VEaWZmLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgSWdh
bGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAxNywgMjAyMSBJZ2FsaWEgUy5MLgogICogQ29w
eXJpZ2h0IChDKSAyMDA1LCAyMDA3LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAwNSBCZW4gTGEgTW9uaWNhIDxiZW4ubGFtb25pY2FAZ21h
aWwuY29tPi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtMzAsOSArMzAsMTMgQEAKIAog
I2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2UuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVk
ZSA8Y3N0ZGlvPgogI2luY2x1ZGUgPGNzdGRsaWI+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNs
dWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxjc3RyaW5nPgorI2luY2x1ZGUgPG9wdGlvbmFsPgor
I2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx2YXJpYW50PgorI2luY2x1ZGUgPHZlY3Rvcj4K
IAogI2lmZGVmIF9XSU4zMgogI2luY2x1ZGUgPGZjbnRsLmg+CkBAIC00OCw2ICs1Miw2OCBAQCB1
c2luZyBuYW1lc3BhY2UgSW1hZ2VEaWZmOwogI2RlZmluZSBGT1JNQVRfU0laRV9UICJ6dSIKICNl
bmRpZgogCitzdHJ1Y3QgUGl4ZWxUb2xlcmFuY2UgeworICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCBs
b25nLCB1bnNpZ25lZCBsb25nPiBtYXhDaGFubmVsRGlmZmVyZW5jZVJhbmdlOworICAgIHN0ZDo6
cGFpcjx1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nPiB0b3RhbFBpeGVsc0RpZmZlcmVudFJh
bmdlOworfTsKKworc3RhdGljIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBzcGxpdFN0cmluZyhz
dGQ6OnN0cmluZyBzdHJpbmcsIHN0ZDo6c3RyaW5nIGRlbGltaXRlcikKK3sKKyAgICBzdGQ6OnZl
Y3RvcjxzdGQ6OnN0cmluZz4gcmV0dXJuVmFsdWU7CisgICAgc2l6ZV90IHN0YXJ0T2Zmc2V0ID0g
MDsKKyAgICBzaXplX3QgZm91bmRQb3NpdGlvbiA9IHN0cmluZy5maW5kKGRlbGltaXRlciwgMCk7
CisgICAgd2hpbGUgKGZvdW5kUG9zaXRpb24gIT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKKyAgICAg
ICAgcmV0dXJuVmFsdWUucHVzaF9iYWNrKHN0cmluZy5zdWJzdHIoc3RhcnRPZmZzZXQsIGZvdW5k
UG9zaXRpb24gLSBzdGFydE9mZnNldCkpOworICAgICAgICBzdGFydE9mZnNldCA9IGZvdW5kUG9z
aXRpb24gKyAxOworICAgICAgICBmb3VuZFBvc2l0aW9uID0gc3RyaW5nLmZpbmQoZGVsaW1pdGVy
LCBzdGFydE9mZnNldCk7CisgICAgfQorICAgIHJldHVyblZhbHVlLnB1c2hfYmFjayhzdHJpbmcu
c3Vic3RyKHN0YXJ0T2Zmc2V0LCBzdGQ6OnN0cmluZzo6bnBvcykpOworICAgIHJldHVybiByZXR1
cm5WYWx1ZTsKK30KKworc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IHBhcnNl
UGl4ZWxUb2xlcmFuY2VSYW5nZShzdGQ6OnN0cmluZyBpbnB1dCkKK3sKKyAgICBhdXRvIHBhcnRz
ID0gc3BsaXRTdHJpbmcoaW5wdXQsICItIik7CisgICAgYXV0byBmaXJzdE51bWJlciA9IHN0ZDo6
c3RvdWwocGFydHNbMF0pOworICAgIGlmIChwYXJ0cy5zaXplKCkgPCAyKQorICAgICAgICByZXR1
cm4geyAwLCBmaXJzdE51bWJlciB9OworICAgIHJldHVybiB7IGZpcnN0TnVtYmVyLCBzdGQ6OnN0
b3VsKHBhcnRzWzFdKSB9OworfQorCisKK3N0YXRpYyBzdGQ6OnZhcmlhbnQ8UGl4ZWxUb2xlcmFu
Y2UsIGZsb2F0PiBwYXJzZVRvbGVyYW5jZShzdGQ6OnN0cmluZyBpbnB1dCkKK3sKKyAgICBpZiAo
aW5wdXQuZmluZCgiOyIpID09IHN0ZDo6c3RyaW5nOjpucG9zKQorICAgICAgICByZXR1cm4geyBz
dHJ0b2YoaW5wdXQuY19zdHIoKSwgMCkgfTsKKworICAgIC8vIFJlbW92ZSB3aGl0ZXNwYWNlIGZy
b20gdGhlIGlucHV0IHN0cmluZy4KKyAgICBpbnB1dC5lcmFzZShyZW1vdmVfaWYoaW5wdXQuYmVn
aW4oKSwgaW5wdXQuZW5kKCksIGlzc3BhY2UpLCBpbnB1dC5lbmQoKSk7CisKKyAgICBhdXRvIHBh
cnRzID0gc3BsaXRTdHJpbmcoaW5wdXQsICI7Iik7CisgICAgaWYgKHBhcnRzLnNpemUoKSA8IDIp
CisgICAgICAgIHJldHVybiB7IDAuMGYgfTsKKworICAgIGF1dG8gZGlmZmVyZW5jZVJhbmdlID0g
cGFyc2VQaXhlbFRvbGVyYW5jZVJhbmdlKHBhcnRzWzBdKTsKKyAgICBhdXRvIHBpeGVsUmFuZ2Ug
PSBwYXJzZVBpeGVsVG9sZXJhbmNlUmFuZ2UocGFydHNbMV0pOworCisgICAgcmV0dXJuICB7IFBp
eGVsVG9sZXJhbmNlIHsgZGlmZmVyZW5jZVJhbmdlLCBwaXhlbFJhbmdlIH0gfTsKK30KKworYm9v
bCB3aXRoaW5Ub2xlcmFuY2UoY29uc3Qgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybUltYWdlOjpEaWZm
ZXJlbmNlUmVzdWx0PiYgb3B0aW9uYWxSZXN1bHQsIHN0ZDo6dmFyaWFudDxQaXhlbFRvbGVyYW5j
ZSwgZmxvYXQ+IHRvbGVyYW5jZSkKK3sKKyAgICBpZiAoIW9wdGlvbmFsUmVzdWx0KQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIGNvbnN0IGF1dG8mIHJlc3VsdCA9ICpvcHRpb25hbFJlc3Vs
dDsKKyAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxmbG9hdD4odG9sZXJhbmNlKSkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6Z2V0PGZsb2F0Pih0b2xlcmFuY2UpID49IHJlc3VsdC5wZXJjZW50
YWdlRGlmZmVyZW5jZTsKKworICAgIGNvbnN0IGF1dG8mIHBpeGVsVG9sZXJhbmNlID0gc3RkOjpn
ZXQ8UGl4ZWxUb2xlcmFuY2U+KHRvbGVyYW5jZSk7CisgICAgcmV0dXJuIHJlc3VsdC5waXhlbHNE
aWZmZXJlbnQgPj0gcGl4ZWxUb2xlcmFuY2UudG90YWxQaXhlbHNEaWZmZXJlbnRSYW5nZS5maXJz
dCAmJiByZXN1bHQucGl4ZWxzRGlmZmVyZW50IDw9IHBpeGVsVG9sZXJhbmNlLnRvdGFsUGl4ZWxz
RGlmZmVyZW50UmFuZ2Uuc2Vjb25kCisgICAgICAgICYmIHJlc3VsdC5tYXhDaGFubmVsRGlmZmVy
ZW5jZSA+PSBwaXhlbFRvbGVyYW5jZS5tYXhDaGFubmVsRGlmZmVyZW5jZVJhbmdlLmZpcnN0Cisg
ICAgICAgICYmIHJlc3VsdC5tYXhDaGFubmVsRGlmZmVyZW5jZSA8PSBwaXhlbFRvbGVyYW5jZS5t
YXhDaGFubmVsRGlmZmVyZW5jZVJhbmdlLnNlY29uZDsKK30KKwogaW50IG1haW4oaW50IGFyZ2Ms
IGNvbnN0IGNoYXIqIGFyZ3ZbXSkKIHsKICNpZmRlZiBfV0lOMzIKQEAgLTU1LDEzICsxMjEsMTMg
QEAgaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3ZbXSkKICAgICBfc2V0bW9kZSgx
LCBfT19CSU5BUlkpOwogI2VuZGlmCiAKLSAgICBmbG9hdCB0b2xlcmFuY2UgPSAwLjBmOworICAg
IHN0ZDo6dmFyaWFudDxQaXhlbFRvbGVyYW5jZSwgZmxvYXQ+IHRvbGVyYW5jZSA9IHsgMC4wZiB9
OwogCiAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBhcmdjOyArK2kpIHsKICAgICAgICAgaWYgKCFz
dHJjbXAoYXJndltpXSwgIi10IikgfHwgIXN0cmNtcChhcmd2W2ldLCAiLS10b2xlcmFuY2UiKSkg
ewogICAgICAgICAgICAgaWYgKGkgPj0gYXJnYyAtIDEpCiAgICAgICAgICAgICAgICAgZXhpdCgx
KTsKLSAgICAgICAgICAgIHRvbGVyYW5jZSA9IHN0cnRvZihhcmd2W2kgKyAxXSwgMCk7CisgICAg
ICAgICAgICB0b2xlcmFuY2UgPSBwYXJzZVRvbGVyYW5jZShhcmd2W2kgKyAxXSk7CiAgICAgICAg
ICAgICArK2k7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpAQCAtMTEyLDIxICsx
NzgsMTYgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3ZbXSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICBmbG9hdCBkaWZmZXJlbmNlID0gMTAwLjBmOwotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFBsYXRmb3JtSW1hZ2U+IGRpZmZJbWFnZSA9IGFjdHVhbEltYWdlLT5kaWZmZXJlbmNlKCpiYXNl
bGluZUltYWdlLCBkaWZmZXJlbmNlKTsKLSAgICAgICAgICAgIGlmIChkaWZmZXJlbmNlIDw9IHRv
bGVyYW5jZSkKLSAgICAgICAgICAgICAgICBkaWZmZXJlbmNlID0gMC4wZjsKLSAgICAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgICAgIGRpZmZlcmVuY2UgPSByb3VuZGYoZGlmZmVyZW5jZSAq
IDEwMC4wZikgLyAxMDAuMGY7Ci0gICAgICAgICAgICAgICAgZGlmZmVyZW5jZSA9IHN0ZDo6bWF4
PGZsb2F0PihkaWZmZXJlbmNlLCAwLjAxZik7IC8vIHJvdW5kIHRvIDIgZGVjaW1hbCBwbGFjZXMK
KyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gYWN0dWFsSW1hZ2UtPmRpZmZlcmVuY2UoKmJhc2Vs
aW5lSW1hZ2UpOworICAgICAgICAgICAgY29uc3QgY2hhciogbWVzc2FnZSA9ICJwYXNzZWQiOwor
ICAgICAgICAgICAgaWYgKCF3aXRoaW5Ub2xlcmFuY2UocmVzdWx0LCB0b2xlcmFuY2UpKSB7Cisg
ICAgICAgICAgICAgICAgKCpyZXN1bHQpLmRpZmZJbWFnZS0+d3JpdGVBc1BOR1RvU3Rkb3V0KCk7
CisgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICJmYWlsZWQiOwogICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICBpZiAoZGlmZmVyZW5jZSA+IDAuMGYpIHsKLSAgICAgICAgICAgICAgICBpZiAo
ZGlmZkltYWdlKQotICAgICAgICAgICAgICAgICAgICBkaWZmSW1hZ2UtPndyaXRlQXNQTkdUb1N0
ZG91dCgpOwotICAgICAgICAgICAgICAgIGZwcmludGYoc3Rkb3V0LCAiZGlmZjogJTAxLjJmJSUg
ZmFpbGVkXG4iLCBkaWZmZXJlbmNlKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
ICAgIGZwcmludGYoc3Rkb3V0LCAiZGlmZjogJTAxLjJmJSUgcGFzc2VkXG4iLCBkaWZmZXJlbmNl
KTsKKyAgICAgICAgICAgIC8vIFJvdW5kIGFueSBkaWZmZXJlbmNlIHRvIHR3byBkZWNpbWFsIHBs
YWNlcyBhbmQgbWFrZSBzdXJlIGl0J3MgYXQgbGVhc3QgMC4wMSUuCisgICAgICAgICAgICBmbG9h
dCBkaWZmZXJlbmNlID0gcmVzdWx0ID8gc3RkOjptYXgoc3RkOjpyb3VuZCgoKnJlc3VsdCkucGVy
Y2VudGFnZURpZmZlcmVuY2UgKiAxMDAuMGYpIC8gMTAwLjBmLCAwLjAxZikgOiAwLjA7CisgICAg
ICAgICAgICBmcHJpbnRmKHN0ZG91dCwgImRpZmY6ICUwMS4yZiUlICVzXG4iLCBkaWZmZXJlbmNl
LCBtZXNzYWdlKTsKIAogICAgICAgICAgICAgYWN0dWFsSW1hZ2UgPSBudWxscHRyOwogICAgICAg
ICAgICAgYmFzZWxpbmVJbWFnZSA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Ub29scy9JbWFnZURp
ZmYvUGxhdGZvcm1JbWFnZS5jcHAgYi9Ub29scy9JbWFnZURpZmYvUGxhdGZvcm1JbWFnZS5jcHAK
aW5kZXggNGM5OWM3NjU5OWY4MzI4ZmU0NDJkZDNkZDEwNjI4ZDc4Y2Y3ZjIwMS4uNzM0YTYwYjQ2
OTQ5ZmI3YTM2ZDVhYWU3NzU5NjBkYTlmZDZlZmUyYyAxMDA2NDQKLS0tIGEvVG9vbHMvSW1hZ2VE
aWZmL1BsYXRmb3JtSW1hZ2UuY3BwCisrKyBiL1Rvb2xzL0ltYWdlRGlmZi9QbGF0Zm9ybUltYWdl
LmNwcApAQCAtNDAsMjEgKzQwLDMyIEBAIGJvb2wgUGxhdGZvcm1JbWFnZTo6aXNDb21wYXRpYmxl
KGNvbnN0IFBsYXRmb3JtSW1hZ2UmIG90aGVyKSBjb25zdAogICAgICAgICAmJiBoYXNBbHBoYSgp
ID09IG90aGVyLmhhc0FscGhhKCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUltYWdl
PiBQbGF0Zm9ybUltYWdlOjpkaWZmZXJlbmNlKGNvbnN0IFBsYXRmb3JtSW1hZ2UmIG90aGVyLCBm
bG9hdCYgcGVyY2VudGFnZURpZmZlcmVuY2UpCitzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtSW1hZ2U6
OkRpZmZlcmVuY2VSZXN1bHQ+IFBsYXRmb3JtSW1hZ2U6OmRpZmZlcmVuY2UoY29uc3QgUGxhdGZv
cm1JbWFnZSYgb3RoZXIpCiB7CiAgICAgc2l6ZV90IHdpZHRoID0gdGhpcy0+d2lkdGgoKTsKICAg
ICBzaXplX3QgaGVpZ2h0ID0gdGhpcy0+aGVpZ2h0KCk7CiAKICAgICAvLyBDb21wYXJlIHRoZSBj
b250ZW50IG9mIHRoZSAyIGJpdG1hcHMKICAgICB2b2lkKiBkaWZmQnVmZmVyID0gbWFsbG9jKHdp
ZHRoICogaGVpZ2h0KTsKLSAgICBmbG9hdCBjb3VudCA9IDAuMGY7CisgICAgdW5zaWduZWQgbnVt
UGl4ZWxzRGlmZmVyZW50ID0gMDsKICAgICBmbG9hdCBzdW0gPSAwLjBmOwogICAgIGZsb2F0IG1h
eERpc3RhbmNlID0gMC4wZjsKKworICAgIC8vIFRoaXMgaXMgdGhlIG1heGltdW0gZGlzdGFuY2Ug
b2YgZWFjaCBpbmRpdmlkdWFsIDgtYml0IGNoYW5uZWwsIHNvCisgICAgLy8gdGhpcyB3aWxsIGJl
IGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgMjU1LgorICAgIGludCBtYXhDaGFubmVsRGlmZmVyZW5j
ZSA9IDA7CisKICAgICB1bnNpZ25lZCBjaGFyKiBiYXNlUGl4ZWwgPSB0aGlzLT5waXhlbHMoKTsK
ICAgICB1bnNpZ25lZCBjaGFyKiBwaXhlbCA9IG90aGVyLnBpeGVscygpOwogICAgIHVuc2lnbmVk
IGNoYXIqIGRpZmZQaXhlbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGRpZmZC
dWZmZXIpOwogICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyArK3kpIHsKICAgICAg
ICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCB3aWR0aDsgKyt4KSB7CisgICAgICAgICAgICAvLyBU
aGlzIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBXUFQgY2hhbm5lbCBkaWZmZXJlbmNlIGFs
Z29yaXRobSBkZXNjcmliZWQgYXQ6CisgICAgICAgICAgICAvLyBodHRwczovL3dlYi1wbGF0Zm9y
bS10ZXN0cy5vcmcvd3JpdGluZy10ZXN0cy9yZWZ0ZXN0cy5odG1sCisgICAgICAgICAgICAvLyBU
aGlzIGV4cGxpY2l0bHkgaWdub3JlcyB0aGUgYWxwaGEgY2hhbm5lbC4KKyAgICAgICAgICAgIG1h
eENoYW5uZWxEaWZmZXJlbmNlID0gc3RkOjptYXgoeyBtYXhDaGFubmVsRGlmZmVyZW5jZSwgc3Rk
OjphYnMocGl4ZWxbMF0gLSBiYXNlUGl4ZWxbMF0pLAorICAgICAgICAgICAgICAgIHN0ZDo6YWJz
KHBpeGVsWzFdIC0gYmFzZVBpeGVsWzFdKSwgc3RkOjphYnMocGl4ZWxbMl0gLSBiYXNlUGl4ZWxb
Ml0pIH0pOworCiAgICAgICAgICAgICBmbG9hdCByZWQgPSAocGl4ZWxbMF0gLSBiYXNlUGl4ZWxb
MF0pIC8gc3RkOjptYXg8ZmxvYXQ+KDI1NSAtIGJhc2VQaXhlbFswXSwgYmFzZVBpeGVsWzBdKTsK
ICAgICAgICAgICAgIGZsb2F0IGdyZWVuID0gKHBpeGVsWzFdIC0gYmFzZVBpeGVsWzFdKSAvIHN0
ZDo6bWF4PGZsb2F0PigyNTUgLSBiYXNlUGl4ZWxbMV0sIGJhc2VQaXhlbFsxXSk7CiAgICAgICAg
ICAgICBmbG9hdCBibHVlID0gKHBpeGVsWzJdIC0gYmFzZVBpeGVsWzJdKSAvIHN0ZDo6bWF4PGZs
b2F0PigyNTUgLSBiYXNlUGl4ZWxbMl0sIGJhc2VQaXhlbFsyXSk7CkBAIC02NCw3ICs3NSw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUltYWdlPiBQbGF0Zm9ybUltYWdlOjpkaWZmZXJlbmNl
KGNvbnN0IFBsYXRmb3JtSW1hZ2UmIG90CiAgICAgICAgICAgICAqZGlmZlBpeGVsKysgPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihkaXN0YW5jZSAqIDI1NS4wZik7CiAKICAgICAgICAgICAg
IGlmIChkaXN0YW5jZSA+PSAxLjBmIC8gMjU1LjBmKSB7Ci0gICAgICAgICAgICAgICAgY291bnQg
Kz0gMS4wZjsKKyAgICAgICAgICAgICAgICBudW1QaXhlbHNEaWZmZXJlbnQgKz0gMTsKICAgICAg
ICAgICAgICAgICBzdW0gKz0gZGlzdGFuY2U7CiAgICAgICAgICAgICAgICAgaWYgKGRpc3RhbmNl
ID4gbWF4RGlzdGFuY2UpCiAgICAgICAgICAgICAgICAgICAgIG1heERpc3RhbmNlID0gZGlzdGFu
Y2U7CkBAIC03NiwxNCArODcsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtSW1hZ2U+IFBs
YXRmb3JtSW1hZ2U6OmRpZmZlcmVuY2UoY29uc3QgUGxhdGZvcm1JbWFnZSYgb3QKICAgICB9CiAK
ICAgICAvLyBDb21wdXRlIHRoZSBkaWZmZXJlbmNlIGFzIGEgcGVyY2VudGFnZSBjb21iaW5pbmcg
Ym90aCB0aGUgbnVtYmVyIG9mIGRpZmZlcmVudCBwaXhlbHMgYW5kIHRoZWlyIGRpZmZlcmVuY2Ug
YW1vdW50IGkuZS4gdGhlIGF2ZXJhZ2UgZGlzdGFuY2Ugb3ZlciB0aGUgZW50aXJlIGltYWdlCi0g
ICAgaWYgKGNvdW50ID4gMC4wZikKKyAgICBmbG9hdCBwZXJjZW50YWdlRGlmZmVyZW5jZSA9IDAu
MGY7CisgICAgaWYgKG51bVBpeGVsc0RpZmZlcmVudCkKICAgICAgICAgcGVyY2VudGFnZURpZmZl
cmVuY2UgPSAxMDAuMGYgKiBzdW0gLyAoaGVpZ2h0ICogd2lkdGgpOwotICAgIGVsc2UKLSAgICAg
ICAgcGVyY2VudGFnZURpZmZlcmVuY2UgPSAwLjBmOwogCiAgICAgaWYgKCFwZXJjZW50YWdlRGlm
ZmVyZW5jZSkgewogICAgICAgICBmcmVlKGRpZmZCdWZmZXIpOwotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKICAgICAvLyBHZW5lcmF0ZSBhIG5v
cm1hbGl6ZWQgZGlmZiBpbWFnZSBpZiB0aGVyZSBpcyBhbnkgZGlmZmVyZW5jZQpAQCAtOTMsNyAr
MTAzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtSW1hZ2U+IFBsYXRmb3JtSW1hZ2U6OmRp
ZmZlcmVuY2UoY29uc3QgUGxhdGZvcm1JbWFnZSYgb3QKICAgICAgICAgICAgIGRpZmZQaXhlbFtw
XSAvPSBtYXhEaXN0YW5jZTsKICAgICB9CiAKLSAgICByZXR1cm4gUGxhdGZvcm1JbWFnZTo6Y3Jl
YXRlRnJvbURpZmZEYXRhKGRpZmZCdWZmZXIsIHdpZHRoLCBoZWlnaHQpOworICAgIHJldHVybiB7
IHsgUGxhdGZvcm1JbWFnZTo6Y3JlYXRlRnJvbURpZmZEYXRhKGRpZmZCdWZmZXIsIHdpZHRoLCBo
ZWlnaHQpLCBwZXJjZW50YWdlRGlmZmVyZW5jZSwgbnVtUGl4ZWxzRGlmZmVyZW50LCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4obWF4Q2hhbm5lbERpZmZlcmVuY2UpIH0gfTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgSW1hZ2VEaWZmCmRpZmYgLS1naXQgYS9Ub29scy9JbWFnZURpZmYvUGxhdGZvcm1JbWFn
ZS5oIGIvVG9vbHMvSW1hZ2VEaWZmL1BsYXRmb3JtSW1hZ2UuaAppbmRleCBhNjMyZjM0ZTg0NTUz
ODVkNzY5NmExMzJkOTcyZjE0MDY5NzMwYjNiLi4zNGVmNWQzZGQ2NzhmNjRjYmE0NGVmNDUxY2My
N2VkMmFmZGQyN2I0IDEwMDY0NAotLS0gYS9Ub29scy9JbWFnZURpZmYvUGxhdGZvcm1JbWFnZS5o
CisrKyBiL1Rvb2xzL0ltYWdlRGlmZi9QbGF0Zm9ybUltYWdlLmgKQEAgLTI1LDYgKzI1LDcgQEAK
IAogI2luY2x1ZGUgPGNtYXRoPgogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDxvcHRpb25h
bD4KIAogI2lmIGRlZmluZWQoVVNFX0NBSVJPKSAmJiBVU0VfQ0FJUk8KIHR5cGVkZWYgc3RydWN0
IF9jYWlyb19zdXJmYWNlIGNhaXJvX3N1cmZhY2VfdDsKQEAgLTUyLDcgKzUzLDE1IEBAIHB1Ymxp
YzoKICAgICBib29sIGhhc0FscGhhKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgY2hhciogcGl4ZWxz
KCkgY29uc3Q7CiAgICAgYm9vbCBpc0NvbXBhdGlibGUoY29uc3QgUGxhdGZvcm1JbWFnZSYpIGNv
bnN0OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUltYWdlPiBkaWZmZXJlbmNlKGNvbnN0
IFBsYXRmb3JtSW1hZ2UmLCBmbG9hdCYgcGVyY2VudGFnZURpZmZlcmVuY2UpOworCisgICAgc3Ry
dWN0IERpZmZlcmVuY2VSZXN1bHQgeworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1J
bWFnZT4gZGlmZkltYWdlOworICAgICAgICBmbG9hdCBwZXJjZW50YWdlRGlmZmVyZW5jZSB7IDAu
MCB9OworICAgICAgICB1bnNpZ25lZCBsb25nIHBpeGVsc0RpZmZlcmVudCB7IDAgfTsKKyAgICAg
ICAgdW5zaWduZWQgbG9uZyBtYXhDaGFubmVsRGlmZmVyZW5jZSB7IDAgfTsKKyAgICB9OworCisg
ICAgc3RkOjpvcHRpb25hbDxEaWZmZXJlbmNlUmVzdWx0PiBkaWZmZXJlbmNlKGNvbnN0IFBsYXRm
b3JtSW1hZ2UmKTsKICAgICB2b2lkIHdyaXRlQXNQTkdUb1N0ZG91dCgpOwogCiBwcml2YXRlOgpk
aWZmIC0tZ2l0IGEvVG9vbHMvSW1hZ2VEaWZmL2NnL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25m
aWcgYi9Ub29scy9JbWFnZURpZmYvY2cvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZwppbmRl
eCA3NzJjZGQxOTJjNmE3MTNkZDEyMzQ2ZDZkYTc5OGQ0Y2U2YzgzNzQ5Li5iNTkxNGM1OTVmM2Mx
ZTI0NjgyNDFiMjRlMzI1MzgyODBhMjE5MzhkIDEwMDY0NAotLS0gYS9Ub29scy9JbWFnZURpZmYv
Y2cvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZworKysgYi9Ub29scy9JbWFnZURpZmYvY2cv
Q29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZwpAQCAtMzEsNyArMzEsNyBAQCBVU0VfSU5URVJO
QUxfU0RLX1JlbGVhc2UgPSAkKEhBVkVfSU5URVJOQUxfU0RLKTsKIAogQUxXQVlTX1NFQVJDSF9V
U0VSX1BBVEhTID0gTk87CiAKLUNMQU5HX0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9IGdudSsrMTQ7
CitDTEFOR19DWFhfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnUrKzF6OwogQ0xBTkdfQ1hYX0xJQlJB
UlkgPSBsaWJjKys7CiBDTEFOR19FTkFCTEVfT0JKQ19XRUFLID0gWUVTOwogQ0xBTkdfV0FSTl9D
WFgwWF9FWFRFTlNJT05TID0gTk87CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9zaW5nbGVfdGVzdF9ydW5uZXIucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9zaW5nbGVfdGVzdF9ydW5u
ZXIucHkKaW5kZXggZDE3YWNmZDAxODllODQ1MWU4OGY2NmUzYjZiNjZjZTU3ZjdmNjUxYi4uYjY0
YjhjY2VmMmQwN2JiY2M1NGNiYmI3MjJkN2QxOTY5NGYwNTBkZiAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVu
bmVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xs
ZXJzL3NpbmdsZV90ZXN0X3J1bm5lci5weQpAQCAtMjkzLDcgKzI5Myw3IEBAIGNsYXNzIFNpbmds
ZVRlc3RSdW5uZXIob2JqZWN0KToKICAgICAgICAgZWxpZiBub3QgZXhwZWN0ZWRfZHJpdmVyX291
dHB1dC5pbWFnZV9oYXNoOgogICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVy
ZXMuRmFpbHVyZU1pc3NpbmdJbWFnZUhhc2goKSkKICAgICAgICAgZWxpZiBkcml2ZXJfb3V0cHV0
LmltYWdlX2hhc2ggIT0gZXhwZWN0ZWRfZHJpdmVyX291dHB1dC5pbWFnZV9oYXNoOgotICAgICAg
ICAgICAgZGlmZl9yZXN1bHQgPSBzZWxmLl9wb3J0LmRpZmZfaW1hZ2UoZXhwZWN0ZWRfZHJpdmVy
X291dHB1dC5pbWFnZSwgZHJpdmVyX291dHB1dC5pbWFnZSkKKyAgICAgICAgICAgIGRpZmZfcmVz
dWx0ID0gc2VsZi5fcG9ydC5kaWZmX2ltYWdlKGV4cGVjdGVkX2RyaXZlcl9vdXRwdXQuaW1hZ2Us
IGRyaXZlcl9vdXRwdXQuaW1hZ2UsIHRvbGVyYW5jZT1kcml2ZXJfb3V0cHV0LnBpeGVsX3RvbGVy
YW5jZSkKICAgICAgICAgICAgIGVycm9yX3N0cmluZyA9IGRpZmZfcmVzdWx0WzJdCiAgICAgICAg
ICAgICBpZiBlcnJvcl9zdHJpbmc6CiAgICAgICAgICAgICAgICAgX2xvZy53YXJuaW5nKCcgICVz
IDogJXMnICUgKHNlbGYuX3Rlc3RfbmFtZSwgZXJyb3Jfc3RyaW5nKSkKQEAgLTM1Niw4ICszNTYs
MTQgQEAgY2xhc3MgU2luZ2xlVGVzdFJ1bm5lcihvYmplY3QpOgogICAgICAgICAgICAgaWYgcmVm
ZXJlbmNlX2RyaXZlcl9vdXRwdXQuaW1hZ2VfaGFzaCA9PSBhY3R1YWxfZHJpdmVyX291dHB1dC5p
bWFnZV9oYXNoOgogICAgICAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZCh0ZXN0X2ZhaWx1cmVz
LkZhaWx1cmVSZWZ0ZXN0TWlzbWF0Y2hEaWROb3RPY2N1cihyZWZlcmVuY2VfZmlsZW5hbWUpKQog
ICAgICAgICBlbGlmIHJlZmVyZW5jZV9kcml2ZXJfb3V0cHV0LmltYWdlX2hhc2ggIT0gYWN0dWFs
X2RyaXZlcl9vdXRwdXQuaW1hZ2VfaGFzaDoKLSAgICAgICAgICAgICMgSW1hZ2VEaWZmIGhhcyBh
IGhhcmQgY29kZWQgY29sb3IgZGlzdGFuY2UgdGhyZXNob2xkIGV2ZW4gdGhvdWdoIHRvbGVyYW5j
ZT0wIGlzIHNwZWNpZmllZC4KLSAgICAgICAgICAgIGRpZmZfcmVzdWx0ID0gc2VsZi5fcG9ydC5k
aWZmX2ltYWdlKHJlZmVyZW5jZV9kcml2ZXJfb3V0cHV0LmltYWdlLCBhY3R1YWxfZHJpdmVyX291
dHB1dC5pbWFnZSwgdG9sZXJhbmNlPTApCisgICAgICAgICAgICAjIEZvciByZWZlcmVuY2UgdGVz
dHMgd2Ugb3ZlcnJpZGUgdGhlIHBvcnQtZGVmYXVsdCB0b2xlcmFuY2UuIElmIHRoZSB0ZXN0cyBk
b24ndAorICAgICAgICAgICAgIyBzcGVjaWZ5IGEgdG9sZXJhbmNlLCB0aGUgaW1hZ2VzIHNob3Vs
ZCBhbHdheXMgbWF0Y2guIEltYWdlRGlmZiBhbHNvIGhhcyBhIGhhcmQgY29kZWQKKyAgICAgICAg
ICAgICMgY29sb3IgZGlzdGFuY2UgdGhyZXNob2xkIGV2ZW4gdGhvdWdoIHRvbGVyYW5jZT0wIGlz
IHNwZWNpZmllZC4KKyAgICAgICAgICAgIHRvbGVyYW5jZSA9IGFjdHVhbF9kcml2ZXJfb3V0cHV0
LnBpeGVsX3RvbGVyYW5jZQorICAgICAgICAgICAgaWYgbm90IHRvbGVyYW5jZToKKyAgICAgICAg
ICAgICAgICB0b2xlcmFuY2UgPSAiMCIKKworICAgICAgICAgICAgZGlmZl9yZXN1bHQgPSBzZWxm
Ll9wb3J0LmRpZmZfaW1hZ2UocmVmZXJlbmNlX2RyaXZlcl9vdXRwdXQuaW1hZ2UsIGFjdHVhbF9k
cml2ZXJfb3V0cHV0LmltYWdlLCB0b2xlcmFuY2UpCiAgICAgICAgICAgICBlcnJvcl9zdHJpbmcg
PSBkaWZmX3Jlc3VsdFsyXQogICAgICAgICAgICAgaWYgZXJyb3Jfc3RyaW5nOgogICAgICAgICAg
ICAgICAgIF9sb2cud2FybmluZygnICAlcyA6ICVzJyAlIChzZWxmLl90ZXN0X25hbWUsIGVycm9y
X3N0cmluZykpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVy
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2RyaXZlci5weQppbmRleCA2NTY4ZmZh
NzE0N2RiN2NlNDhlZmU5MmEwNjE2NzgwYjJlM2QyNTg0Li5hNWM2ZjUzZjkzMWJkNDZiMDFjYjEz
M2U3OGM5YjBiZmM3ODNiYjQ5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvZHJpdmVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXIucHkK
QEAgLTg0LDEyICs4NCwxNCBAQCBjbGFzcyBEcml2ZXJPdXRwdXQob2JqZWN0KToKICAgICBtZXRy
aWNzX3BhdHRlcm5zLmFwcGVuZCgocmUuY29tcGlsZSgnc2Nyb2xsZWQgdG8gWzAtOV0rLFswLTld
KycpLCAnc2Nyb2xsZWQnKSkKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXh0LCBpbWFnZSwg
aW1hZ2VfaGFzaCwgYXVkaW8sIGNyYXNoPUZhbHNlLAotICAgICAgICAgICAgdGVzdF90aW1lPTAs
IG1lYXN1cmVtZW50cz1Ob25lLCB0aW1lb3V0PUZhbHNlLCBlcnJvcj0nJywgY3Jhc2hlZF9wcm9j
ZXNzX25hbWU9Jz8/JywKLSAgICAgICAgICAgIGNyYXNoZWRfcGlkPU5vbmUsIGNyYXNoX2xvZz1O
b25lLCBwaWQ9Tm9uZSk6CisgICAgICAgICAgICAgICAgIHRlc3RfdGltZT0wLCBtZWFzdXJlbWVu
dHM9Tm9uZSwgdGltZW91dD1GYWxzZSwgZXJyb3I9JycsIGNyYXNoZWRfcHJvY2Vzc19uYW1lPSc/
PycsCisgICAgICAgICAgICAgICAgIGNyYXNoZWRfcGlkPU5vbmUsIGNyYXNoX2xvZz1Ob25lLCBw
aWQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgcGl4ZWxfdG9sZXJhbmNlPU5vbmUpOgogICAgICAg
ICAjIEZJWE1FOiBBcmdzIGNvdWxkIGJlIHJlbmFtZWQgdG8gYmV0dGVyIGNsYXJpZnkgd2hhdCB0
aGV5IGRvLgogICAgICAgICBzZWxmLnRleHQgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKHRleHQsIHRh
cmdldF90eXBlPXN0cikgaWYgdGV4dCBlbHNlIE5vbmUKICAgICAgICAgc2VsZi5pbWFnZSA9IGlt
YWdlICAjIE1heSBiZSBlbXB0eS1zdHJpbmcgaWYgdGhlIHRlc3QgY3Jhc2hlcy4KICAgICAgICAg
c2VsZi5pbWFnZV9oYXNoID0gaW1hZ2VfaGFzaAorICAgICAgICBzZWxmLnBpeGVsX3RvbGVyYW5j
ZSA9IHBpeGVsX3RvbGVyYW5jZQogICAgICAgICBzZWxmLmltYWdlX2RpZmYgPSBOb25lICAjIGlt
YWdlX2RpZmYgZ2V0cyBmaWxsZWQgaW4gYWZ0ZXIgY29uc3RydWN0aW9uLgogICAgICAgICBzZWxm
LmF1ZGlvID0gc3RyaW5nX3V0aWxzLmVuY29kZShhdWRpbykgaWYgYXVkaW8gZWxzZSBOb25lICAj
IEJpbmFyeSBmb3JtYXQgaXMgcG9ydC1kZXBlbmRlbnQuCiAgICAgICAgIHNlbGYuY3Jhc2ggPSBj
cmFzaApAQCAtMjI4LDcgKzIzMCw3IEBAIGNsYXNzIERyaXZlcihvYmplY3QpOgogCiAgICAgICAg
IHNlbGYuX3NlcnZlcl9wcm9jZXNzLndyaXRlKGNvbW1hbmQpCiAgICAgICAgIHRleHQsIGF1ZGlv
ID0gc2VsZi5fcmVhZF9maXJzdF9ibG9jayhkZWFkbGluZSwgZHJpdmVyX2lucHV0LnRlc3RfbmFt
ZSkgICMgRmlyc3QgYmxvY2sgaXMgZWl0aGVyIHRleHQgb3IgYXVkaW8KLSAgICAgICAgaW1hZ2Us
IGFjdHVhbF9pbWFnZV9oYXNoID0gc2VsZi5fcmVhZF9vcHRpb25hbF9pbWFnZV9ibG9jayhkZWFk
bGluZSwgZHJpdmVyX2lucHV0LnRlc3RfbmFtZSkgICMgVGhlIHNlY29uZCAob3B0aW9uYWwpIGJs
b2NrIGlzIGltYWdlIGRhdGEuCisgICAgICAgIGltYWdlLCBhY3R1YWxfaW1hZ2VfaGFzaCwgcGl4
ZWxfdG9sZXJhbmNlID0gc2VsZi5fcmVhZF9vcHRpb25hbF9pbWFnZV9ibG9jayhkZWFkbGluZSwg
ZHJpdmVyX2lucHV0LnRlc3RfbmFtZSkgICMgVGhlIHNlY29uZCAob3B0aW9uYWwpIGJsb2NrIGlz
IGltYWdlIGRhdGEuCiAgICAgICAgIHRleHQgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKHRleHQsIHRh
cmdldF90eXBlPXN0cikKIAogICAgICAgICBjcmFzaGVkID0gc2VsZi5oYXNfY3Jhc2hlZCgpCkBA
IC0yNjMsMTAgKzI2NSwxMSBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToKICAgICAgICAgICAgICAg
ICAgICAgY3Jhc2hfbG9nICs9ICdcbnN0ZG91dDpcbiVzXG5zdGRlcnI6XG4lc1xuJyAlICh0ZXh0
LCBzZWxmLmVycm9yX2Zyb21fdGVzdCkKIAogICAgICAgICByZXR1cm4gRHJpdmVyT3V0cHV0KHRl
eHQsIGltYWdlLCBhY3R1YWxfaW1hZ2VfaGFzaCwgYXVkaW8sCi0gICAgICAgICAgICBjcmFzaD1j
cmFzaGVkLCB0ZXN0X3RpbWU9dGltZS50aW1lKCkgLSB0ZXN0X2JlZ2luX3RpbWUsIG1lYXN1cmVt
ZW50cz1zZWxmLl9tZWFzdXJlbWVudHMsCi0gICAgICAgICAgICB0aW1lb3V0PXRpbWVkX291dCBv
ciBkcml2ZXJfdGltZWRfb3V0LCBlcnJvcj1zZWxmLmVycm9yX2Zyb21fdGVzdCwKLSAgICAgICAg
ICAgIGNyYXNoZWRfcHJvY2Vzc19uYW1lPXNlbGYuX2NyYXNoZWRfcHJvY2Vzc19uYW1lLAotICAg
ICAgICAgICAgY3Jhc2hlZF9waWQ9c2VsZi5fY3Jhc2hlZF9waWQsIGNyYXNoX2xvZz1jcmFzaF9s
b2csIHBpZD1waWQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jhc2g9Y3Jhc2hlZCwg
dGVzdF90aW1lPXRpbWUudGltZSgpIC0gdGVzdF9iZWdpbl90aW1lLCBtZWFzdXJlbWVudHM9c2Vs
Zi5fbWVhc3VyZW1lbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9dGlt
ZWRfb3V0IG9yIGRyaXZlcl90aW1lZF9vdXQsIGVycm9yPXNlbGYuZXJyb3JfZnJvbV90ZXN0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyYXNoZWRfcHJvY2Vzc19uYW1lPXNlbGYuX2Ny
YXNoZWRfcHJvY2Vzc19uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyYXNoZWRf
cGlkPXNlbGYuX2NyYXNoZWRfcGlkLCBjcmFzaF9sb2c9Y3Jhc2hfbG9nLCBwaWQ9cGlkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVsX3RvbGVyYW5jZT1waXhlbF90b2xlcmFuY2Up
CiAKICAgICBkZWYgZG9fcG9zdF90ZXN0c193b3JrKHNlbGYpOgogICAgICAgICBpZiBub3Qgc2Vs
Zi5fc2VydmVyX3Byb2Nlc3M6CkBAIC02NTEsMTEgKzY1NCwxMSBAQCBjbGFzcyBEcml2ZXIob2Jq
ZWN0KToKICAgICAgICAgcmV0dXJuIChibG9jay5kZWNvZGVkX2NvbnRlbnQsIE5vbmUpCiAKICAg
ICBkZWYgX3JlYWRfb3B0aW9uYWxfaW1hZ2VfYmxvY2soc2VsZiwgZGVhZGxpbmUsIHRlc3RfbmFt
ZSk6Ci0gICAgICAgICMgcmV0dXJucyAoaW1hZ2UsIGFjdHVhbF9pbWFnZV9oYXNoKQorICAgICAg
ICAjIHJldHVybnMgKGltYWdlLCBhY3R1YWxfaW1hZ2VfaGFzaCwgcGl4ZWxfdG9sZXJhbmNlKQog
ICAgICAgICBibG9jayA9IHNlbGYuX3JlYWRfYmxvY2soZGVhZGxpbmUsIHRlc3RfbmFtZSwgd2Fp
dF9mb3Jfc3RkZXJyX2VvZj1UcnVlKQogICAgICAgICBpZiBibG9jay5jb250ZW50IGFuZCBibG9j
ay5jb250ZW50X3R5cGUgPT0gJ2ltYWdlL3BuZyc6Ci0gICAgICAgICAgICByZXR1cm4gKGJsb2Nr
LmRlY29kZWRfY29udGVudCBpZiBibG9jay5lbmNvZGluZyA9PSAnYmFzZTY0JyBlbHNlIGJsb2Nr
LmNvbnRlbnQsIGJsb2NrLmNvbnRlbnRfaGFzaCkKLSAgICAgICAgcmV0dXJuIChOb25lLCBibG9j
ay5jb250ZW50X2hhc2gpCisgICAgICAgICAgICByZXR1cm4gKGJsb2NrLmRlY29kZWRfY29udGVu
dCBpZiBibG9jay5lbmNvZGluZyA9PSAnYmFzZTY0JyBlbHNlIGJsb2NrLmNvbnRlbnQsIGJsb2Nr
LmNvbnRlbnRfaGFzaCwgYmxvY2sucGl4ZWxfdG9sZXJhbmNlKQorICAgICAgICByZXR1cm4gKE5v
bmUsIGJsb2NrLmNvbnRlbnRfaGFzaCwgYmxvY2sucGl4ZWxfdG9sZXJhbmNlKQogCiAgICAgZGVm
IF9yZWFkX2hlYWRlcihzZWxmLCBibG9jaywgbGluZSwgaGVhZGVyX3RleHQsIGhlYWRlcl9hdHRy
LCBoZWFkZXJfZmlsdGVyPU5vbmUpOgogICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoaGVhZGVy
X3RleHQpIGFuZCBnZXRhdHRyKGJsb2NrLCBoZWFkZXJfYXR0cikgaXMgTm9uZToKQEAgLTY3MSw2
ICs2NzQsNyBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToKICAgICAgICAgICAgIChiJ0NvbnRlbnQt
VHlwZTogJywgJ2NvbnRlbnRfdHlwZScsIE5vbmUpLAogICAgICAgICAgICAgKGInQ29udGVudC1U
cmFuc2Zlci1FbmNvZGluZzogJywgJ2VuY29kaW5nJywgTm9uZSksCiAgICAgICAgICAgICAoYidD
b250ZW50LUxlbmd0aDogJywgJ19jb250ZW50X2xlbmd0aCcsIGludCksCisgICAgICAgICAgICAo
YidQaXhlbC1Ub2xlcmFuY2U6ICcsICdwaXhlbF90b2xlcmFuY2UnLCBOb25lKSwKICAgICAgICAg
ICAgIChiJ0FjdHVhbEhhc2g6ICcsICdjb250ZW50X2hhc2gnLCBOb25lKSwKICAgICAgICAgICAg
IChiJ0R1bXBNYWxsb2M6ICcsICdtYWxsb2MnLCBOb25lKSwKICAgICAgICAgICAgIChiJ0R1bXBK
U0hlYXA6ICcsICdqc19oZWFwJywgTm9uZSksCkBAIC03NjYsNiArNzcwLDcgQEAgY2xhc3MgQ29u
dGVudEJsb2NrKG9iamVjdCk6CiAgICAgICAgIHNlbGYuY29udGVudF90eXBlID0gTm9uZQogICAg
ICAgICBzZWxmLmVuY29kaW5nID0gTm9uZQogICAgICAgICBzZWxmLmNvbnRlbnRfaGFzaCA9IE5v
bmUKKyAgICAgICAgc2VsZi5waXhlbF90b2xlcmFuY2UgPSBOb25lCiAgICAgICAgIHNlbGYuX2Nv
bnRlbnRfbGVuZ3RoID0gTm9uZQogICAgICAgICAjIENvbnRlbnQgaXMgdHJlYXRlZCBhcyBiaW5h
cnkgZGF0YSBldmVuIHRob3VnaCB0aGUgdGV4dCBvdXRwdXQgaXMgdXN1YWxseSBVVEYtOC4KICAg
ICAgICAgc2VsZi5jb250ZW50ID0gYicnCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3BvcnQvZHJpdmVyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0
L2RyaXZlcl91bml0dGVzdC5weQppbmRleCA4NWM4MDNjZmViNDU2ZDMyYWZjOGRjZmViNjM3M2Q5
MGI1NGRjYzM1Li41OWY2OGUwOTVjMWVkNTliYzUwMDQ5NDNlMzE3ZTY4NGEzZTc3N2IwIDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyX3VuaXR0ZXN0LnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXJfdW5pdHRlc3QucHkKQEAgLTE3
Niw2ICsxNzYsNyBAQCBjbGFzcyBEcml2ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAg
ICAgICAgICdBY3R1YWxIYXNoOiBhY3R1YWwnLAogICAgICAgICAgICAgJ0V4cGVjdGVkSGFzaDog
ZXhwZWN0ZWQnLAogICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZTogaW1hZ2UvcG5nJywKKyAgICAg
ICAgICAgICdQaXhlbC1Ub2xlcmFuY2U6IDAtMTA7MjAwLTMwMCcsCiAgICAgICAgICAgICAnQ29u
dGVudC1MZW5ndGg6IDknLAogICAgICAgICAgICAgIjEyMzQ1Njc4IiwKICAgICAgICAgICAgICIj
RU9GIiwKQEAgLTE4Myw2ICsxODQsNyBAQCBjbGFzcyBEcml2ZXJUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKICAgICAgICAgY29udGVudF9ibG9jayA9IGRyaXZlci5fcmVhZF9ibG9jaygwLCAiIikK
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb250ZW50X2Jsb2NrLmNvbnRlbnRfdHlwZSwgJ2lt
YWdlL3BuZycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udGVudF9ibG9jay5jb250ZW50
X2hhc2gsICdhY3R1YWwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRlbnRfYmxvY2su
cGl4ZWxfdG9sZXJhbmNlLCAnMC0xMDsyMDAtMzAwJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjb250ZW50X2Jsb2NrLmNvbnRlbnQsIGInMTIzNDU2NzhcbicpCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoY29udGVudF9ibG9jay5kZWNvZGVkX2NvbnRlbnQsICcxMjM0NTY3OFxuJykKICAg
ICAgICAgZHJpdmVyLl9zZXJ2ZXJfcHJvY2VzcyA9IE5vbmUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RSdW5uZXJTaGFyZWQvUmVmdGVzdEZ1bmN0aW9ucy5jcHAgYi9Ub29scy9UZXN0UnVubmVyU2hh
cmVkL1JlZnRlc3RGdW5jdGlvbnMuY3BwCmluZGV4IGQzNWMyOTJmNGExNTY4ZTAyZWY1YzZjZDM0
YzAxOTc0MzQ0YWEyZDYuLjNmMWQ3MDdmMzEzMzIzN2U1ZDYyNWVhNDFlNzQzMjhhMmRhZDc2MjUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvUmVmdGVzdEZ1bmN0aW9ucy5jcHAK
KysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9SZWZ0ZXN0RnVuY3Rpb25zLmNwcApAQCAtMjcs
NiArMjcsNyBAQAogI2luY2x1ZGUgIlJlZnRlc3RGdW5jdGlvbnMuaCIKIAogI2luY2x1ZGUgIkpT
QmFzaWNzLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXVFIg
ewogCkBAIC00OSw0ICs1MCw0NSBAQCBib29sIGhhc1JlZnRlc3RXYWl0QXR0cmlidXRlKEpTR2xv
YmFsQ29udGV4dFJlZiBjb250ZXh0KQogICAgIHJldHVybiBKU1ZhbHVlVG9Cb29sZWFuKGNvbnRl
eHQsIGNhbGwoY29udGV4dCwgY2xhc3NMaXN0LCAiY29udGFpbnMiLCB7IG1ha2VWYWx1ZShjb250
ZXh0LCAicmVmdGVzdC13YWl0IikgfSkpOwogfQogCitzdGQ6OnN0cmluZyBmdXp6eU1hdGNoaW5n
VG9sZXJhbmNlKEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0KQoreworICAgIGlmICghY29udGV4
dCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gZG9jdW1lbnRFbGVtZW50ID0gb2Jq
ZWN0UHJvcGVydHkoY29udGV4dCwgSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KGNvbnRleHQpLCAi
ZG9jdW1lbnQiKTsKKyAgICBhdXRvIG1ldGFUYWcgPSBjYWxsKGNvbnRleHQsIGRvY3VtZW50RWxl
bWVudCwgInF1ZXJ5U2VsZWN0b3IiLCB7IG1ha2VWYWx1ZShjb250ZXh0LCAibWV0YVtuYW1lPSdm
dXp6eSddIikgfSk7CisgICAgaWYgKCFKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwgbWV0YVRhZykp
CisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIG1ldGFUYWdPYmplY3QgPSBKU1ZhbHVl
VG9PYmplY3QoY29udGV4dCwgbWV0YVRhZywgbnVsbHB0cik7CisgICAgYXV0byBjb250ZW50ID0g
cHJvcGVydHkoY29udGV4dCwgbWV0YVRhZ09iamVjdCwgImNvbnRlbnQiKTsKKyAgICBpZiAoIUpT
VmFsdWVJc1N0cmluZyhjb250ZXh0LCBjb250ZW50KSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKwor
ICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBjb250ZW50SlNTdHJpbmcgPSBhZG9wdChKU1Zh
bHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGNvbnRlbnQsIG51bGxwdHIpKTsKKyAgICBzaXplX3Qg
Y29udGVudFN0cmluZ1NpemUgPSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoY29u
dGVudEpTU3RyaW5nLmdldCgpKSArIDE7CisgICAgYXV0byBjb250ZW50QnVmZmVyID0gbWFrZVVu
aXF1ZUFycmF5PGNoYXI+KGNvbnRlbnRTdHJpbmdTaXplKTsKKyAgICBKU1N0cmluZ0dldFVURjhD
U3RyaW5nKGNvbnRlbnRKU1N0cmluZy5nZXQoKSwgY29udGVudEJ1ZmZlci5nZXQoKSwgY29udGVu
dFN0cmluZ1NpemUpOworCisgICAgYXV0byByZXR1cm5TdHJpbmcgPSBzdGQ6OnN0cmluZyhjb250
ZW50QnVmZmVyLmdldCgpKTsKKyAgICByZXR1cm5TdHJpbmcuZXJhc2Uoc3RkOjpyZW1vdmVfaWYo
cmV0dXJuU3RyaW5nLmJlZ2luKCksIHJldHVyblN0cmluZy5lbmQoKSwgaXNzcGFjZSksIHJldHVy
blN0cmluZy5lbmQoKSk7CisKKyAgICBhdXRvIG9mZnNldCA9IHJldHVyblN0cmluZy5maW5kKCJt
YXhEaWZmZXJlbmNlPSIpOworICAgIGlmIChvZmZzZXQgIT0gc3RkOjpzdHJpbmc6Om5wb3MpCisg
ICAgICAgIHJldHVyblN0cmluZy5lcmFzZShvZmZzZXQsIDE0KTsKKworICAgIG9mZnNldCA9IHJl
dHVyblN0cmluZy5maW5kKCJ0b3RhbFBpeGVscz0iKTsKKyAgICBpZiAob2Zmc2V0ICE9IHN0ZDo6
c3RyaW5nOjpucG9zKQorICAgICAgICByZXR1cm5TdHJpbmcuZXJhc2Uob2Zmc2V0LCAxMik7CisK
KyAgICAvLyBTdHJpcCBvdXQgYW55IHJlZmVyZW5jZSBmaWxlIG5hbWUgZnJvbSB0aGUgZnV6emlu
ZXNzIHNwZWNpZmllci4KKyAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiB1c2luZyB0aGUgZmlyc3Qg
ZnV6emluZXNzIHNwZWNpZmllciBmb3IgYWxsIHJlZmVyZW5jZSBmaWxlcywgdGhpcyBjb2RlCisg
ICAgLy8gc2hvdWxkIGZpbmQgdGhlIGNvcnJlY3Qgb25lIGJhc2VkIG9uIHRoZSBuYW1lIHRoYXQg
aXMgc3RyaXBwZWQgb3V0IGJlbG93LgorICAgIG9mZnNldCA9IHJldHVyblN0cmluZy5maW5kKCI6
Iik7CisgICAgaWYgKG9mZnNldCAhPSBzdGQ6OnN0cmluZzo6bnBvcykKKyAgICAgICAgcmV0dXJu
U3RyaW5nID0gcmV0dXJuU3RyaW5nLmVyYXNlKDAsIG9mZnNldCArIDEpOworCisgICAgcmV0dXJu
IHJldHVyblN0cmluZzsKK30KKwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJl
ZC9SZWZ0ZXN0RnVuY3Rpb25zLmggYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1JlZnRlc3RGdW5j
dGlvbnMuaAppbmRleCA5YjZmZDc5NTdmMGI5MDUxYzkwNDliMDMzM2NmMTA4OTlmNWQ5MTUzLi44
M2E1YTU2NzdiOTM1ZjRlNDNmYzA3Mjk4MTYwZTZhNTU4OTU4OTljIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0UnVubmVyU2hhcmVkL1JlZnRlc3RGdW5jdGlvbnMuaAorKysgYi9Ub29scy9UZXN0UnVu
bmVyU2hhcmVkL1JlZnRlc3RGdW5jdGlvbnMuaApAQCAtMjUsMTEgKzI1LDE0IEBACiAKICNwcmFn
bWEgb25jZQogCisjaW5jbHVkZSA8c3RyaW5nPgorCiB0eXBlZGVmIHN0cnVjdCBPcGFxdWVKU0Nv
bnRleHQqIEpTR2xvYmFsQ29udGV4dFJlZjsKIAogbmFtZXNwYWNlIFdUUiB7CiAKIHZvaWQgc2Vu
ZFRlc3RSZW5kZXJlZEV2ZW50KEpTR2xvYmFsQ29udGV4dFJlZik7CiBib29sIGhhc1JlZnRlc3RX
YWl0QXR0cmlidXRlKEpTR2xvYmFsQ29udGV4dFJlZik7CitzdGQ6OnN0cmluZyBmdXp6eU1hdGNo
aW5nVG9sZXJhbmNlKEpTR2xvYmFsQ29udGV4dFJlZik7CiAKIH0KZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5k
ZXggMDIyYmU0MzkxMzU4YjhkMDlhOGY3ZTlkNzBlNzlkZWViNjQ4ODA3NS4uYzQ1YmNkYWIwY2Uy
NzhjNjQ4NzY4NGY0NDE2YzBhZThkZWJmMTI4MSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTQ5OSw2
ICs0OTksNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpiZWdpblRlc3RpbmcoV0tEaWN0aW9uYXJ5
UmVmIHNldHRpbmdzLCBCZWdpbmdUZXN0aW5nTW9kZSB0ZQogICAgIG1fdGltZW91dCA9IFNlY29u
ZHM6OmZyb21NaWxsaXNlY29uZHModWludDY0VmFsdWUoc2V0dGluZ3MsICJUaW1lb3V0IikpOwog
ICAgIG1fZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyID0gYm9vbGVhblZhbHVlKHNldHRpbmdzLCAi
RHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIik7CiAKKyAgICBtX3BpeGVsUmVzdWx0VG9sZXJhbmNl
ID0gIiI7CiAgICAgbV9waXhlbFJlc3VsdC5jbGVhcigpOwogICAgIG1fcmVwYWludFJlY3RzLmNs
ZWFyKCk7CiAKQEAgLTU2MSw4ICs1NjIsMTAgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZG9uZSgp
CiAgICAgYXV0byBib2R5ID0gYWRvcHRXSyhXS011dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCkpOwog
CiAgICAgc2V0VmFsdWUoYm9keSwgIlBpeGVsUmVzdWx0SXNQZW5kaW5nIiwgbV9waXhlbFJlc3Vs
dElzUGVuZGluZyk7CisgICAgc2V0VmFsdWUoYm9keSwgIlBpeGVsUmVzdWx0VG9sZXJhbmNlIiwg
bV9waXhlbFJlc3VsdFRvbGVyYW5jZSk7CiAgICAgaWYgKCFtX3BpeGVsUmVzdWx0SXNQZW5kaW5n
KQogICAgICAgICBzZXRWYWx1ZShib2R5LCAiUGl4ZWxSZXN1bHQiLCBtX3BpeGVsUmVzdWx0KTsK
KwogICAgIHNldFZhbHVlKGJvZHksICJSZXBhaW50UmVjdHMiLCBtX3JlcGFpbnRSZWN0cyk7CiAg
ICAgc2V0VmFsdWUoYm9keSwgIkF1ZGlvUmVzdWx0IiwgbV9hdWRpb1Jlc3VsdCk7CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGUuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGUuaAppbmRleCBjZmJhZDA0OTBjMTZiOTc2MmNjMTI5YTE2MjliYzZmZDA4NGJkOGI4Li4xMjg2
YTEyNjNiODFkOWQ4Yjg0MTkwYTA3ZTIyMjNjZTEwNTQzZmMwIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCkBAIC03
MCw2ICs3MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRvbmUoKTsKICAgICB2b2lkIHNldEF1ZGlv
UmVzdWx0KFdLRGF0YVJlZiBhdWRpb0RhdGEpIHsgbV9hdWRpb1Jlc3VsdCA9IGF1ZGlvRGF0YTsg
fQogICAgIHZvaWQgc2V0UGl4ZWxSZXN1bHQoV0tJbWFnZVJlZiBpbWFnZSkgeyBtX3BpeGVsUmVz
dWx0ID0gaW1hZ2U7IG1fcGl4ZWxSZXN1bHRJc1BlbmRpbmcgPSBmYWxzZTsgfQorICAgIHZvaWQg
c2V0UGl4ZWxSZXN1bHRUb2xlcmFuY2UoY29uc3QgU3RyaW5nJiB0b2xlcmFuY2UpIHsgbV9waXhl
bFJlc3VsdFRvbGVyYW5jZSA9IHRvbGVyYW5jZTsgfQogICAgIHZvaWQgc2V0UGl4ZWxSZXN1bHRJ
c1BlbmRpbmcoYm9vbCBpc1BlbmRpbmcpIHsgbV9waXhlbFJlc3VsdElzUGVuZGluZyA9IGlzUGVu
ZGluZzsgfQogICAgIHZvaWQgc2V0UmVwYWludFJlY3RzKFdLQXJyYXlSZWYgcmVjdHMpIHsgbV9y
ZXBhaW50UmVjdHMgPSByZWN0czsgfQogCkBAIC0xOTgsNiArMTk5LDcgQEAgcHJpdmF0ZToKIAog
ICAgIFdLUmV0YWluUHRyPFdLRGF0YVJlZj4gbV9hdWRpb1Jlc3VsdDsKICAgICBXS1JldGFpblB0
cjxXS0ltYWdlUmVmPiBtX3BpeGVsUmVzdWx0OworICAgIFN0cmluZyBtX3BpeGVsUmVzdWx0VG9s
ZXJhbmNlOwogICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IG1fcmVwYWludFJlY3RzOwogCiAg
ICAgVmVjdG9yPFN0cmluZz4gbV9hbGxvd2VkSG9zdHM7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAK
aW5kZXggM2M3NDEyN2NmYmUwZGE0NjNmNzFjYTYwMGE1Y2FjMzA4NjZiZjRhMi4uMDhhZTY4ODky
ZTVjYjQ4YmI1NGQxYjFkYWRlNmQ2NThkN2U0MDgwMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNw
cApAQCAtODI1LDYgKzgyNSw4IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkdW1wKCkKICAg
ICAgICAgaW5qZWN0ZWRCdW5kbGUuZHVtcEJhY2tGb3J3YXJkTGlzdHNGb3JBbGxQYWdlcyhzdHJp
bmdCdWlsZGVyKTsKIAogICAgIGlmIChpbmplY3RlZEJ1bmRsZS5zaG91bGREdW1wUGl4ZWxzKCkg
JiYgaW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5zaG91bGREdW1wUGl4ZWxzKCkpIHsKKyAg
ICAgICAgaW5qZWN0ZWRCdW5kbGUuc2V0UGl4ZWxSZXN1bHRUb2xlcmFuY2UoU3RyaW5nOjpmcm9t
VVRGOChmdXp6eU1hdGNoaW5nVG9sZXJhbmNlKFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29u
dGV4dChmcmFtZSkpLmNfc3RyKCkpKTsKKwogICAgICAgICBib29sIHNob3VsZENyZWF0ZVNuYXBz
aG90ID0gaW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5pc1ByaW50aW5nKCk7CiAgICAgICAg
IGlmIChzaG91bGRDcmVhdGVTbmFwc2hvdCkgewogICAgICAgICAgICAgV0tTbmFwc2hvdE9wdGlv
bnMgb3B0aW9ucyA9IGtXS1NuYXBzaG90T3B0aW9uc1NoYXJlYWJsZTsKQEAgLTgzNyw3ICs4Mzks
NiBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZHVtcCgpCiAgICAgICAgICAgICAgICAgaWYg
KGluamVjdGVkQnVuZGxlLnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcFNlbGVjdGlvblJlY3QoKSkK
ICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyB8PSBrV0tTbmFwc2hvdE9wdGlvbnNQYWludFNl
bGVjdGlvblJlY3RhbmdsZTsKICAgICAgICAgICAgIH0KLQogICAgICAgICAgICAgaW5qZWN0ZWRC
dW5kbGUuc2V0UGl4ZWxSZXN1bHQoYWRvcHRXSyhXS0J1bmRsZVBhZ2VDcmVhdGVTbmFwc2hvdFdp
dGhPcHRpb25zKG1fcGFnZSwgc25hcHNob3RSZWN0LCBvcHRpb25zKSkuZ2V0KCkpOwogICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgIGluamVjdGVkQnVuZGxlLnNldFBpeGVsUmVzdWx0SXNQZW5k
aW5nKHRydWUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2Nh
dGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRl
eCAzNDUwNjkzMDA5OTJmYjNlMDcxM2U4MzJjNDE3ZmM1MWMwODhmMDhjLi5hNTk0YmNkNjE0YmQ0
ZDE1NmVjOWZmNzZhNDMyYmNmMmJmMTMwOWQyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcApAQCAtMjg2LDYgKzI4Niw5IEBAIHZvaWQgVGVzdEludm9jYXRpb246
OmR1bXBBdWRpbyhXS0RhdGFSZWYgYXVkaW9EYXRhKQogCiBib29sIFRlc3RJbnZvY2F0aW9uOjpj
b21wYXJlQWN0dWFsSGFzaFRvRXhwZWN0ZWRBbmREdW1wUmVzdWx0cyhjb25zdCBjaGFyIGFjdHVh
bEhhc2hbMzNdKQogeworICAgIGlmIChtX3BpeGVsUmVzdWx0VG9sZXJhbmNlICYmIFdLU3RyaW5n
R2V0TGVuZ3RoKG1fcGl4ZWxSZXN1bHRUb2xlcmFuY2UuZ2V0KCkpKQorICAgICAgICBmcHJpbnRm
KHN0ZG91dCwgIlBpeGVsLVRvbGVyYW5jZTogJXNcbiIsIHRvU1REKG1fcGl4ZWxSZXN1bHRUb2xl
cmFuY2UuZ2V0KCkpLmNfc3RyKCkpOworCiAgICAgLy8gQ29tcHV0ZSB0aGUgaGFzaCBvZiB0aGUg
Yml0bWFwIGNvbnRleHQgcGl4ZWxzCiAgICAgZnByaW50ZihzdGRvdXQsICJcbkFjdHVhbEhhc2g6
ICVzXG4iLCBhY3R1YWxIYXNoKTsKIApAQCAtMzIyLDggKzMyNSwxMCBAQCB2b2lkIFRlc3RJbnZv
Y2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBt
ZXNzYWdlTmFtZQogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VO
YW1lLCAiRG9uZSIpKSB7CiAgICAgICAgIGF1dG8gbWVzc2FnZUJvZHlEaWN0aW9uYXJ5ID0gZGlj
dGlvbmFyeVZhbHVlKG1lc3NhZ2VCb2R5KTsKICAgICAgICAgbV9waXhlbFJlc3VsdElzUGVuZGlu
ZyA9IGJvb2xlYW5WYWx1ZShtZXNzYWdlQm9keURpY3Rpb25hcnksICJQaXhlbFJlc3VsdElzUGVu
ZGluZyIpOworICAgICAgICBtX3BpeGVsUmVzdWx0VG9sZXJhbmNlID0gc3RyaW5nVmFsdWUobWVz
c2FnZUJvZHlEaWN0aW9uYXJ5LCAiUGl4ZWxSZXN1bHRUb2xlcmFuY2UiKTsKICAgICAgICAgaWYg
KCFtX3BpeGVsUmVzdWx0SXNQZW5kaW5nKSB7CiAgICAgICAgICAgICBtX3BpeGVsUmVzdWx0ID0g
c3RhdGljX2Nhc3Q8V0tJbWFnZVJlZj4odmFsdWUobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCAiUGl4
ZWxSZXN1bHQiKSk7CisKICAgICAgICAgICAgIEFTU0VSVCghbV9waXhlbFJlc3VsdCB8fCBtX2R1
bXBQaXhlbHMpOwogICAgICAgICB9CiAgICAgICAgIG1fcmVwYWludFJlY3RzID0gc3RhdGljX2Nh
c3Q8V0tBcnJheVJlZj4odmFsdWUobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCAiUmVwYWludFJlY3Rz
IikpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5o
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCmluZGV4IGRmMzk5MzJh
MDhjMTE2Nzk2NzU3ZGI5Y2I2NmY4MzdkZTYyNTg1ODQuLjg2Y2IwZmEzYzgyZWNlNTE4NGZkOWYy
Y2JjNzNlMjlhNjBmOWM2OTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dEludm9jYXRpb24uaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9u
LmgKQEAgLTE3NCw2ICsxNzQsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX3NhdmVkUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljczsKICAgICBXS1JldGFpblB0cjxXS0RhdGFSZWY+IG1fYXVkaW9SZXN1
bHQ7CiAgICAgV0tSZXRhaW5QdHI8V0tJbWFnZVJlZj4gbV9waXhlbFJlc3VsdDsKKyAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gbV9waXhlbFJlc3VsdFRvbGVyYW5jZTsKICAgICBXS1JldGFp
blB0cjxXS0FycmF5UmVmPiBtX3JlcGFpbnRSZWN0czsKICAgICAKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8VUlTY3JpcHRDb250ZXh0PiBtX1VJU2NyaXB0Q29udGV4dDsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3ZmMyZWUzOTRk
NTQ5OWJkYjFlNjU2OWMxMzFkOWM5Y2I1YmEyN2EwLi5jZjAxMmQxOTAxZDJlNDA2ZjcxMDg2YWU1
MzM0ZTBkZDYwMjIxNzI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMTAtMjEgIE1hcnRp
biBSb2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBzdXBwb3J0
IGZvciBXUFQncyBwZXItdGVzdCByZWZ0ZXN0IGZ1enp5IHNwZWNpZmljYXRpb24gdG8gV2ViS2l0
VGVzdFJ1bm5lcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMyMDEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBUZXN0RXhwZWN0YXRpb25zOiBNYXJrIHNvbWUgdGVzdHMgYXMgbmV3bHkgcGFzc2luZy4K
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnM6IE1hcmsgc29tZSB0
ZXN0cyBhcyBmYWlsaW5nLCBiZWNhdXNlIHRoZQorICAgICAgICBwaXhlbCB0b2xlcmFuY2UgbmVl
ZHMgdG8gYmUgaW5jcmVhc2VkIGluIFdQVCBmb3IgaU9TIHBsYXRmb3Jtcy4KKwogMjAyMS0xMC0x
NyAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYlhSXSBTdHVi
cyBmb3IgV2ViWFIgSGFuZCBJbnB1dCBNb2R1bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rl
c3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGY3YTdi
OTI0MGE3OWU3YzU2ZTQyZjZiZTUyMzI0MDYzZjQ4NjdjY2UuLjVlZTA3Y2E0MzM2ZDcyMDk4NDA4
OTAzOTgyNDViOTg1YTkyMzQ3ODUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3Rh
dGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzkzMCw3ICszOTMw
LDYgQEAgd2Via2l0Lm9yZy9iLzIzMDA4MCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0KIHdlYmtpdC5vcmcvYi8yMzAwODAgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLXRy
YW5zbGF0ZS1iYWNrZ3JvdW5kLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQu
b3JnL2IvMjMwMDgwIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFu
c2Zvcm1zL3RyYW5zZm9ybS10cmFuc2xhdGUtYmFja2dyb3VuZC0wMDIuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIzMDA4MCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tdHJhbnNsYXRleC0wMDYuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzMDA4MCBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0zZC1tYXRyaXgzZC0w
MDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIzMDA4MCBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0zZC1w
ZXJzcGVjdGl2ZS0wMDIuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3Jn
L2IvMjMwMDgwIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zv
cm1zL3RyYW5zZm9ybTNkLXBlcnNwZWN0aXZlLTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
CiB3ZWJraXQub3JnL2IvMjMwMDgwIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybTNkLXBlcnNwZWN0aXZlLTAwNC5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCkBAIC00NTQ1LDIxICs0NTQ0LDEwIEBAIHdlYmtpdC5vcmcvYi8yMTQ0NTUg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9yLWFkanVzdC9yZW5k
ZXJpCiB3ZWJraXQub3JnL2IvMjE0NDU2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1pbWFnZXMvY29uaWMtZ3JhZGllbnQtYW5nbGUuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQogd2Via2l0Lm9yZy9iLzIxNDQ1NiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtaW1hZ2VzL2NvbmljLWdyYWRpZW50LWFuZ2xlLW5lZ2F0aXZlLmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMTQ0NTYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy9jb25pYy1ncmFkaWVudC1jZW50ZXIuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIxNDQ1NiBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtaW1hZ2VzL2ltYWdlLW9yaWVudGF0aW9uL2ltYWdlLW9yaWVu
dGF0aW9uLWJhY2tncm91bmQtaW1hZ2UuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0
Lm9yZy9iLzIxNDQ1NiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaW1h
Z2VzL2ltYWdlLW9yaWVudGF0aW9uL2ltYWdlLW9yaWVudGF0aW9uLWJhY2tncm91bmQtcHJvcGVy
dGllcy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjE0NDU2IGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMvaW1hZ2Utb3JpZW50YXRp
b24vaW1hZ2Utb3JpZW50YXRpb24tZGVmYXVsdC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13
ZWJraXQub3JnL2IvMjE0NDU2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1pbWFnZXMvaW1hZ2Utb3JpZW50YXRpb24vaW1hZ2Utb3JpZW50YXRpb24tZnJvbS1pbWFnZS1j
b21wb3NpdGVkLWR5bmFtaWMxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcv
Yi8yMTQ0NTYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy9p
bWFnZS1vcmllbnRhdGlvbi9pbWFnZS1vcmllbnRhdGlvbi1mcm9tLWltYWdlLWNvbXBvc2l0ZWQt
ZHluYW1pYzIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIxNDQ1NiBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaW1hZ2VzL2ltYWdlLW9yaWVu
dGF0aW9uL2ltYWdlLW9yaWVudGF0aW9uLWZyb20taW1hZ2UtY29tcG9zaXRlZC5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjE0NDU2IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMvaW1hZ2Utb3JpZW50YXRpb24vaW1hZ2Utb3JpZW50
YXRpb24tZnJvbS1pbWFnZS1jb250ZW50LWltYWdlcy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci13ZWJraXQub3JnL2IvMjE0NDU2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1pbWFnZXMvaW1hZ2Utb3JpZW50YXRpb24vaW1hZ2Utb3JpZW50YXRpb24tZnJvbS1pbWFn
ZS1keW5hbWljMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjE0NDU2
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMvaW1hZ2Utb3Jp
ZW50YXRpb24vaW1hZ2Utb3JpZW50YXRpb24tZnJvbS1pbWFnZS1keW5hbWljMi5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjE0NDU2IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMvaW1hZ2Utb3JpZW50YXRpb24vaW1hZ2Utb3JpZW50
YXRpb24tZnJvbS1pbWFnZS1lbWJlZGRlZC1jb250ZW50Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KLXdlYmtpdC5vcmcvYi8yMTQ0NTYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLWltYWdlcy9pbWFnZS1vcmllbnRhdGlvbi9pbWFnZS1vcmllbnRhdGlvbi1mcm9tLWlt
YWdlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMTQ0NTYgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy9pbWFnZS1vcmllbnRhdGlv
bi9pbWFnZS1vcmllbnRhdGlvbi1saXN0LXN0eWxlLWltYWdlLmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KIHdlYmtpdC5vcmcvYi8yMTQ0NTYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLWltYWdlcy9pbWFnZS1vcmllbnRhdGlvbi9pbWFnZS1vcmllbnRhdGlvbi1ub25l
LWNvbnRlbnQtaW1hZ2VzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8y
MTQ0NTYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy9pbWFn
ZS1vcmllbnRhdGlvbi9pbWFnZS1vcmllbnRhdGlvbi1ub25lLmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KLXdlYmtpdC5vcmcvYi8yMTQ0NTYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLWltYWdlcy9pbWFnZS1vcmllbnRhdGlvbi9pbWFnZS1vcmllbnRhdGlvbi1ub25l
LWltYWdlLWRvY3VtZW50Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8y
MTQ0NTYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy9pbWFn
ZS1vcmllbnRhdGlvbi9zdmctaW1hZ2Utb3JpZW50YXRpb24tYXNwZWN0LXJhdGlvLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMTQ0NTYgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy9pbWFnZS1vcmllbnRhdGlvbi9zdmctaW1hZ2Ut
b3JpZW50YXRpb24uaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIxNDQ1
NiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaW1hZ2VzL2ltYWdlLW9y
aWVudGF0aW9uL3N2Zy1pbWFnZS1vcmllbnRhdGlvbi1ub25lLmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVj
dGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCAxM2Y0ZWMwYzljMzViODUyNGFiZDdlODlkZmQxNTM4YTgwYTliY2ZlLi44MDY4NjNkNzcw
YzhhZTVkN2NmMjYxOTI0NzlkNGU3ZDJkYmJhNGJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC0yMjA5LDMgKzIyMDksMTUgQEAgd2Via2l0
Lm9yZy9iLzIzMTcxNCBmYXN0L3Njcm9sbGluZy9pb3MvY2xpY2stZXZlbnRzLWR1cmluZy1tb21l
bnR1bS1zY3JvbGwtaW4tb3YKIAogd2Via2l0Lm9yZy9iLzIzMTc4MCBbIERlYnVnIF0gaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvc2ltdWxjYXN0L2Jhc2ljLmh0dHBzLmh0
bWwgWyBQYXNzIEZhaWx1cmUgXQogCit3ZWJraXQub3JnL2IvMjMyMDcyIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMvaW1hZ2Utb3JpZW50YXRpb24vaW1hZ2Ut
b3JpZW50YXRpb24tYmFja2dyb3VuZC1pbWFnZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3
ZWJraXQub3JnL2IvMjMyMDcyIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1pbWFnZXMvaW1hZ2Utb3JpZW50YXRpb24vaW1hZ2Utb3JpZW50YXRpb24tZGVmYXVsdC5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjMyMDcyIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMvaW1hZ2Utb3JpZW50YXRpb24vaW1hZ2Ut
b3JpZW50YXRpb24tZnJvbS1pbWFnZS1jb21wb3NpdGVkLWR5bmFtaWMxLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMzIwNzIgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWltYWdlcy9pbWFnZS1vcmllbnRhdGlvbi9pbWFnZS1vcmllbnRhdGlv
bi1mcm9tLWltYWdlLWNvbXBvc2l0ZWQtZHluYW1pYzIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQord2Via2l0Lm9yZy9iLzIzMjA3MiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtaW1hZ2VzL2ltYWdlLW9yaWVudGF0aW9uL2ltYWdlLW9yaWVudGF0aW9uLWZyb20taW1h
Z2UtY29tcG9zaXRlZC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjMy
MDcyIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMvaW1hZ2Ut
b3JpZW50YXRpb24vaW1hZ2Utb3JpZW50YXRpb24tZnJvbS1pbWFnZS1keW5hbWljMS5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjMyMDcyIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMvaW1hZ2Utb3JpZW50YXRpb24vaW1hZ2Utb3Jp
ZW50YXRpb24tZnJvbS1pbWFnZS1keW5hbWljMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3
ZWJraXQub3JnL2IvMjMyMDcyIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1pbWFnZXMvaW1hZ2Utb3JpZW50YXRpb24vaW1hZ2Utb3JpZW50YXRpb24tZnJvbS1pbWFnZS5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjMyMDcyIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMvaW1hZ2Utb3JpZW50YXRpb24vaW1h
Z2Utb3JpZW50YXRpb24tbGlzdC1zdHlsZS1pbWFnZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Cit3ZWJraXQub3JnL2IvMjMyMDcyIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1pbWFnZXMvaW1hZ2Utb3JpZW50YXRpb24vaW1hZ2Utb3JpZW50YXRpb24tbm9uZS1pbWFn
ZS1kb2N1bWVudC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjMyMDcy
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMvaW1hZ2Utb3Jp
ZW50YXRpb24vaW1hZ2Utb3JpZW50YXRpb24tbm9uZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Cit3ZWJraXQub3JnL2IvMjMyMDcyIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybTNkLW1hdHJpeDNkLTAwMS5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442007</attachid>
            <date>2021-10-21 04:28:40 -0700</date>
            <delta_ts>2021-10-26 02:26:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232010-20211021132837.patch</filename>
            <type>text/plain</type>
            <size>41718</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NTk5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWMxZmFhNjhlMjcyMWViOTk3YzVkODI1YWRlMjVlM2M2
MjA0YzZiNy4uYzM5OGU3Njg1NmYxOWJiOWQwMDRjNDNmMjY0YmY2MTc4YzAyYzE4ZCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5
IEBACisyMDIxLTEwLTIxICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4K
KworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgV1BUJ3MgcGVyLXRlc3QgcmVmdGVzdCBmdXp6eSBz
cGVjaWZpY2F0aW9uIHRvIFdlYktpdFRlc3RSdW5uZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjAxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBXUFQgZnV6enkgbWF0Y2hp
bmcgc3ludGF4LCB3aGljaCBhbGxvd3MgaW5kaXZpZHVhbCBXUFQgcmVmdGVzdHMKKyAgICAgICAg
dG8gYWRqdXN0IHRoZSB0b2xlcmFuY2UgcGFzc2VkIHRvIEltYWdlRGlmZi4gVGhpcyBhbHNvIGFk
ZHMgYW4gYWx0ZXJuYXRpdmUgd2F5CisgICAgICAgIHRvIHNwZWNpZnkgdG9sZXJhbmNlIGZvciBJ
bWFnZURpZmYuIEluIGFkZGl0aW9uIHRvIHRoZSB0cmFkaXRpb25hbCBwZXJjZW50CisgICAgICAg
IGRpZmZlcmVuY2UsIHRoaXMgYWRkcyBzdXBwb3J0IGZvciBXUFQgc3R5bGU6IHR3byByYW5nZXMg
c3BlY2lmeWluZyB0aGUKKyAgICAgICAgbnVtYmVyIG9mIHBpeGVscyBkaWZmZXJlbnQgYXMgd2Vs
bCBhcyB0aGUgbWF4aW11bSBkaWZmZXJlbmNlIG9uIGFueQorICAgICAgICBpbmRpdmlkdWFsIGNv
bG9yIGNoYW5uZWwuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9QaXhlbER1bXBTdXBwb3J0
LmNwcDoKKyAgICAgICAgKGR1bXBXZWJWaWV3QXNQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVk
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9QaXhlbER1bXBTdXBwb3J0Lmg6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoZHVtcCk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAg
ICAgKGR1bXApOgorICAgICAgICAqIEltYWdlRGlmZi9JbWFnZURpZmYuY3BwOgorICAgICAgICAo
c3BsaXRTdHJpbmcpOgorICAgICAgICAocGFyc2VQaXhlbFRvbGVyYW5jZVJhbmdlKToKKyAgICAg
ICAgKHBhcnNlVG9sZXJhbmNlKToKKyAgICAgICAgKHdpdGhpblRvbGVyYW5jZSk6CisgICAgICAg
IChtYWluKToKKyAgICAgICAgKiBJbWFnZURpZmYvUGxhdGZvcm1JbWFnZS5jcHA6CisgICAgICAg
IChJbWFnZURpZmY6OlBsYXRmb3JtSW1hZ2U6OmRpZmZlcmVuY2UpOgorICAgICAgICAqIEltYWdl
RGlmZi9QbGF0Zm9ybUltYWdlLmg6CisgICAgICAgICogSW1hZ2VEaWZmL2NnL0NvbmZpZ3VyYXRp
b25zL0Jhc2UueGNjb25maWc6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5OgorICAgICAgICAoU2luZ2xlVGVz
dFJ1bm5lci5fY29tcGFyZV9pbWFnZSk6CisgICAgICAgIChTaW5nbGVUZXN0UnVubmVyLl9jb21w
YXJlX291dHB1dF93aXRoX3JlZmVyZW5jZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9w
b3J0L2RyaXZlci5weToKKyAgICAgICAgKERyaXZlck91dHB1dC5fX2luaXRfXyk6CisgICAgICAg
IChEcml2ZXIucnVuX3Rlc3QpOgorICAgICAgICAoRHJpdmVyLl9yZWFkX29wdGlvbmFsX2ltYWdl
X2Jsb2NrKToKKyAgICAgICAgKERyaXZlci5fcHJvY2Vzc19zdGRvdXRfbGluZSk6CisgICAgICAg
IChDb250ZW50QmxvY2suX19pbml0X18pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9y
dC9kcml2ZXJfdW5pdHRlc3QucHk6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9SZWZ0ZXN0
RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdUUjo6ZnV6enlNYXRjaGluZ1RvbGVyYW5jZSk6Cisg
ICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9SZWZ0ZXN0RnVuY3Rpb25zLmg6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAg
ICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpiZWdpblRlc3RpbmcpOgorICAgICAgICAoV1RSOjpJ
bmplY3RlZEJ1bmRsZTo6ZG9uZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6
c2V0UGl4ZWxSZXN1bHRUb2xlcmFuY2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0
ZWRCdW5kbGVQYWdlOjpkdW1wKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmNvbXBhcmVBY3R1YWxI
YXNoVG9FeHBlY3RlZEFuZER1bXBSZXN1bHRzKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRp
b246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmg6CisKIDIwMjEtMTAtMjEgIFNhbSBTbmVkZG9u
ICA8Z3NuZWRkZXJzQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIGxheW91dF90ZXN0X2ZpbmRl
ciB0byBsYXlvdXRfdGVzdF9maW5kZXJfbGVnYWN5CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9QaXhlbER1bXBTdXBwb3J0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1BpeGVs
RHVtcFN1cHBvcnQuY3BwCmluZGV4IDhkOGE2ZWYyYTkwYzYyOGM5Y2ZmNzkxYTczM2JiMWUzZGFl
YzNmMzIuLjM3MGVlYzFlYWEyMzgzN2FhN2Q5MDk4NzliY2EyNTY4OWM0MTY1NzEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1BpeGVsRHVtcFN1cHBvcnQuY3BwCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL1BpeGVsRHVtcFN1cHBvcnQuY3BwCkBAIC00NSw3ICs0NSw3IEBACiAj
aW5jbHVkZSAiUGl4ZWxEdW1wU3VwcG9ydERpcmVjdDJELmgiCiAjZW5kaWYKIAotdm9pZCBkdW1w
V2ViVmlld0FzUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZChjb25zdCBzdGQ6OnN0cmluZyYg
ZXhwZWN0ZWRIYXNoKQordm9pZCBkdW1wV2ViVmlld0FzUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBl
Y3RlZChjb25zdCBzdGQ6OnN0cmluZyYgZXhwZWN0ZWRIYXNoLCBjb25zdCBzdGQ6OnN0cmluZyYg
ZnV6enlNYXRjaGluZ1RvbGVyYW5jZSkKIHsKICAgICBSZWZQdHI8Qml0bWFwQ29udGV4dD4gY29u
dGV4dDsKICNpZiBQTEFURk9STShNQUMpCkBAIC03Miw2ICs3Miw5IEBAIHZvaWQgZHVtcFdlYlZp
ZXdBc1BpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQoY29uc3Qgc3RkOjpzdHJpbmcmIGV4cGVj
dGVkSGFzaCkKICAgICAgICAgICAgIGR1bXBJbWFnZSA9IGZhbHNlOwogICAgIH0KIAorICAgIGlm
IChmdXp6eU1hdGNoaW5nVG9sZXJhbmNlLnNpemUoKSkKKyAgICAgICAgcHJpbnRmKCJQaXhlbC1U
b2xlcmFuY2U6ICVzXG4iLCBmdXp6eU1hdGNoaW5nVG9sZXJhbmNlLmNfc3RyKCkpOworCiAgICAg
aWYgKGR1bXBJbWFnZSkKICAgICAgICAgZHVtcEJpdG1hcChjb250ZXh0LmdldCgpLCBhY3R1YWxI
YXNoKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1BpeGVsRHVtcFN1cHBv
cnQuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1BpeGVsRHVtcFN1cHBvcnQuaAppbmRleCBiZDNi
MDFlZGM5ZGY1MmJjMWVmNjc5ZWFiZGYwNDViMzc3MzYzMDQyLi5kNDAxNzY4MDM5MTU5N2Q4MDA4
YzM2N2E5YWYzOTk3NWE2MTdlNDBjIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9Q
aXhlbER1bXBTdXBwb3J0LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvUGl4ZWxEdW1wU3Vw
cG9ydC5oCkBAIC0zNyw1ICszNyw1IEBAIHZvaWQgY29tcHV0ZVNIQTFIYXNoU3RyaW5nRm9yQml0
bWFwQ29udGV4dChCaXRtYXBDb250ZXh0KiwgY2hhciBoYXNoU3RyaW5nWzMzXSk7CiBSZWZQdHI8
Qml0bWFwQ29udGV4dD4gY3JlYXRlUGFnZWRCaXRtYXBDb250ZXh0KCk7CiBSZWZQdHI8Qml0bWFw
Q29udGV4dD4gY3JlYXRlQml0bWFwQ29udGV4dEZyb21XZWJWaWV3KGJvb2wgb25zY3JlZW4sIGJv
b2wgaW5jcmVtZW50YWxSZXBhaW50LCBib29sIHN3ZWVwSG9yaXpvbnRhbGx5LCBib29sIGRyYXdT
ZWxlY3Rpb25SZWN0KTsKIHZvaWQgZHVtcEJpdG1hcChCaXRtYXBDb250ZXh0KiwgY29uc3QgY2hh
ciogY2hlY2tzdW0pOwotdm9pZCBkdW1wV2ViVmlld0FzUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBl
Y3RlZChjb25zdCBzdGQ6OnN0cmluZyYgZXhwZWN0ZWRIYXNoKTsKK3ZvaWQgZHVtcFdlYlZpZXdB
c1BpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQoY29uc3Qgc3RkOjpzdHJpbmcmIGV4cGVjdGVk
SGFzaCwgY29uc3Qgc3RkOjpzdHJpbmcmIGZ1enp5TWF0Y2hpbmdUb2xlcmFuY2UpOwogdm9pZCBw
cmludFBORyhjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCBjb25zdCBzaXplX3QgZGF0YUxlbmd0
aCwgY29uc3QgY2hhciogY2hlY2tzdW0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBS
ZW5kZXJUcmVlLm1tCmluZGV4IDVkMjAxMDU0MWUxYjQ0YjE3NGMyZTFjZGU1MjQ0MTI2OTI0NTVi
MGYuLjMzYWU4Nzk4NDExOTRkYWY1N2E0ZDY1YzVhOGFkMmEzZGVhMDFlMzUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTQ5LDYgKzQ5LDcgQEAKICNp
bXBvcnQgIlBpeGVsRHVtcFN1cHBvcnQuaCIKICNpbXBvcnQgIlBvbGljeURlbGVnYXRlLmgiCiAj
aW1wb3J0ICJQb3NlQXNDbGFzcy5oIgorI2ltcG9ydCAiUmVmdGVzdEZ1bmN0aW9ucy5oIgogI2lt
cG9ydCAiUmVzb3VyY2VMb2FkRGVsZWdhdGUuaCIKICNpbXBvcnQgIlRlc3RDb21tYW5kLmgiCiAj
aW1wb3J0ICJUZXN0RmVhdHVyZXMuaCIKQEAgLTE2NjYsNyArMTY2Nyw3IEBAIHZvaWQgZHVtcCgp
CiAKICAgICBpZiAoZHVtcFBpeGVsc0ZvckN1cnJlbnRUZXN0ICYmIGdUZXN0UnVubmVyLT5nZW5l
cmF0ZVBpeGVsUmVzdWx0cygpKQogICAgICAgICAvLyBGSVhNRTogd2hlbiBpc1ByaW50aW5nIGlz
IHNldCwgZHVtcCB0aGUgaW1hZ2Ugd2l0aCBwYWdlIHNlcGFyYXRvcnMuCi0gICAgICAgIGR1bXBX
ZWJWaWV3QXNQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKGdUZXN0UnVubmVyLT5leHBlY3Rl
ZFBpeGVsSGFzaCgpKTsKKyAgICAgICAgZHVtcFdlYlZpZXdBc1BpeGVsc0FuZENvbXBhcmVXaXRo
RXhwZWN0ZWQoZ1Rlc3RSdW5uZXItPmV4cGVjdGVkUGl4ZWxIYXNoKCksIFdUUjo6ZnV6enlNYXRj
aGluZ1RvbGVyYW5jZShbbWFpbkZyYW1lIGdsb2JhbENvbnRleHRdKSk7CiAKICAgICBwdXRzKCIj
RU9GIik7ICAgLy8gdGVybWluYXRlIHRoZSAocG9zc2libHkgZW1wdHkpIHBpeGVscyBibG9jawog
ICAgIGZmbHVzaChzdGRvdXQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0R1bXBSZW5kZXJUcmVlLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVy
VHJlZS5jcHAKaW5kZXggNGQ3MzliNzZhNDgyNmZkMDllNzlhMWU3ZjFkNmQ5NDRkMzVjMDQyOC4u
NDJiZmRlMmZjZTI0M2VmMDRjNjA1YzNhM2I4NjhhMzBkMDllYzU3OSAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5j
bHVkZSAiSmF2YVNjcmlwdFRocmVhZGluZy5oIgogI2luY2x1ZGUgIlBpeGVsRHVtcFN1cHBvcnQu
aCIKICNpbmNsdWRlICJQb2xpY3lEZWxlZ2F0ZS5oIgorI2luY2x1ZGUgIlJlZnRlc3RGdW5jdGlv
bnMuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIlRlc3RD
b21tYW5kLmgiCiAjaW5jbHVkZSAiVGVzdEZlYXR1cmVzLmgiCkBAIC03ODEsNyArNzgyLDcgQEAg
dm9pZCBkdW1wKCkKIAogICAgIGlmIChkdW1wUGl4ZWxzRm9yQ3VycmVudFRlc3QgJiYgOjpnVGVz
dFJ1bm5lci0+Z2VuZXJhdGVQaXhlbFJlc3VsdHMoKSkgewogICAgICAgICAvLyBGSVhNRTogd2hl
biBpc1ByaW50aW5nIGlzIHNldCwgZHVtcCB0aGUgaW1hZ2Ugd2l0aCBwYWdlIHNlcGFyYXRvcnMu
Ci0gICAgICAgIGR1bXBXZWJWaWV3QXNQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKGdUZXN0
UnVubmVyLT5leHBlY3RlZFBpeGVsSGFzaCgpKTsKKyAgICAgICAgZHVtcFdlYlZpZXdBc1BpeGVs
c0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQoZ1Rlc3RSdW5uZXItPmV4cGVjdGVkUGl4ZWxIYXNoKCks
IFdUUjo6ZnV6enlNYXRjaGluZ1RvbGVyYW5jZShmcmFtZS0+Z2xvYmFsQ29udGV4dCgpKSk7CiAg
ICAgfQogCiAgICAgZnB1dHMoIiNFT0ZcbiIsIHRlc3RSZXN1bHQpOyAvLyB0ZXJtaW5hdGUgdGhl
IChwb3NzaWJseSBlbXB0eSkgcGl4ZWxzIGJsb2NrCmRpZmYgLS1naXQgYS9Ub29scy9JbWFnZURp
ZmYvSW1hZ2VEaWZmLmNwcCBiL1Rvb2xzL0ltYWdlRGlmZi9JbWFnZURpZmYuY3BwCmluZGV4IDk4
NDlmNmZkNWQwYjBiZTQyY2Q0NmMyZDliNzllN2JjYjdkODQxYjUuLmEwZWI0ZjEwNDA3ZTg4ZGY4
YTA4MzhlMWQwNGMxMTcyYjcyNWVhM2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0ltYWdlRGlmZi9JbWFn
ZURpZmYuY3BwCisrKyBiL1Rvb2xzL0ltYWdlRGlmZi9JbWFnZURpZmYuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0
IChDKSAyMDE3LCAyMDIxIElnYWxpYSBTLkwuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDcs
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDA1IEJlbiBMYSBNb25pY2EgPGJlbi5sYW1vbmljYUBnbWFpbC5jb20+LiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCkBAIC0zMCw5ICszMCwxMyBAQAogCiAjaW5jbHVkZSAiUGxhdGZvcm1JbWFn
ZS5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxjc3RkaW8+CiAjaW5jbHVkZSA8
Y3N0ZGxpYj4KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1
ZGUgPGNzdHJpbmc+CisjaW5jbHVkZSA8b3B0aW9uYWw+CisjaW5jbHVkZSA8c3RyaW5nPgorI2lu
Y2x1ZGUgPHZhcmlhbnQ+CisjaW5jbHVkZSA8dmVjdG9yPgogCiAjaWZkZWYgX1dJTjMyCiAjaW5j
bHVkZSA8ZmNudGwuaD4KQEAgLTQ4LDYgKzUyLDY4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbWFnZURp
ZmY7CiAjZGVmaW5lIEZPUk1BVF9TSVpFX1QgInp1IgogI2VuZGlmCiAKK3N0cnVjdCBQaXhlbFRv
bGVyYW5jZSB7CisgICAgc3RkOjpwYWlyPHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmc+IG1h
eENoYW5uZWxEaWZmZXJlbmNlUmFuZ2U7CisgICAgc3RkOjpwYWlyPHVuc2lnbmVkIGxvbmcsIHVu
c2lnbmVkIGxvbmc+IHRvdGFsUGl4ZWxzRGlmZmVyZW50UmFuZ2U7Cit9OworCitzdGF0aWMgc3Rk
Ojp2ZWN0b3I8c3RkOjpzdHJpbmc+IHNwbGl0U3RyaW5nKHN0ZDo6c3RyaW5nIHN0cmluZywgc3Rk
OjpzdHJpbmcgZGVsaW1pdGVyKQoreworICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiByZXR1
cm5WYWx1ZTsKKyAgICBzaXplX3Qgc3RhcnRPZmZzZXQgPSAwOworICAgIHNpemVfdCBmb3VuZFBv
c2l0aW9uID0gc3RyaW5nLmZpbmQoZGVsaW1pdGVyLCAwKTsKKyAgICB3aGlsZSAoZm91bmRQb3Np
dGlvbiAhPSBzdGQ6OnN0cmluZzo6bnBvcykgeworICAgICAgICByZXR1cm5WYWx1ZS5wdXNoX2Jh
Y2soc3RyaW5nLnN1YnN0cihzdGFydE9mZnNldCwgZm91bmRQb3NpdGlvbiAtIHN0YXJ0T2Zmc2V0
KSk7CisgICAgICAgIHN0YXJ0T2Zmc2V0ID0gZm91bmRQb3NpdGlvbiArIDE7CisgICAgICAgIGZv
dW5kUG9zaXRpb24gPSBzdHJpbmcuZmluZChkZWxpbWl0ZXIsIHN0YXJ0T2Zmc2V0KTsKKyAgICB9
CisgICAgcmV0dXJuVmFsdWUucHVzaF9iYWNrKHN0cmluZy5zdWJzdHIoc3RhcnRPZmZzZXQsIHN0
ZDo6c3RyaW5nOjpucG9zKSk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitzdGF0aWMg
c3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gcGFyc2VQaXhlbFRvbGVyYW5jZVJhbmdlKHN0
ZDo6c3RyaW5nIGlucHV0KQoreworICAgIGF1dG8gcGFydHMgPSBzcGxpdFN0cmluZyhpbnB1dCwg
Ii0iKTsKKyAgICBhdXRvIGZpcnN0TnVtYmVyID0gc3RkOjpzdG91bChwYXJ0c1swXSk7CisgICAg
aWYgKHBhcnRzLnNpemUoKSA8IDIpCisgICAgICAgIHJldHVybiB7IDAsIGZpcnN0TnVtYmVyIH07
CisgICAgcmV0dXJuIHsgZmlyc3ROdW1iZXIsIHN0ZDo6c3RvdWwocGFydHNbMV0pIH07Cit9CisK
Kworc3RhdGljIHN0ZDo6dmFyaWFudDxQaXhlbFRvbGVyYW5jZSwgZmxvYXQ+IHBhcnNlVG9sZXJh
bmNlKHN0ZDo6c3RyaW5nIGlucHV0KQoreworICAgIGlmIChpbnB1dC5maW5kKCI7IikgPT0gc3Rk
OjpzdHJpbmc6Om5wb3MpCisgICAgICAgIHJldHVybiB7IHN0cnRvZihpbnB1dC5jX3N0cigpLCAw
KSB9OworCisgICAgLy8gUmVtb3ZlIHdoaXRlc3BhY2UgZnJvbSB0aGUgaW5wdXQgc3RyaW5nLgor
ICAgIGlucHV0LmVyYXNlKHJlbW92ZV9pZihpbnB1dC5iZWdpbigpLCBpbnB1dC5lbmQoKSwgaXNz
cGFjZSksIGlucHV0LmVuZCgpKTsKKworICAgIGF1dG8gcGFydHMgPSBzcGxpdFN0cmluZyhpbnB1
dCwgIjsiKTsKKyAgICBpZiAocGFydHMuc2l6ZSgpIDwgMikKKyAgICAgICAgcmV0dXJuIHsgMC4w
ZiB9OworCisgICAgYXV0byBkaWZmZXJlbmNlUmFuZ2UgPSBwYXJzZVBpeGVsVG9sZXJhbmNlUmFu
Z2UocGFydHNbMF0pOworICAgIGF1dG8gcGl4ZWxSYW5nZSA9IHBhcnNlUGl4ZWxUb2xlcmFuY2VS
YW5nZShwYXJ0c1sxXSk7CisKKyAgICByZXR1cm4gIHsgUGl4ZWxUb2xlcmFuY2UgeyBkaWZmZXJl
bmNlUmFuZ2UsIHBpeGVsUmFuZ2UgfSB9OworfQorCitib29sIHdpdGhpblRvbGVyYW5jZShjb25z
dCBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtSW1hZ2U6OkRpZmZlcmVuY2VSZXN1bHQ+JiBvcHRpb25h
bFJlc3VsdCwgc3RkOjp2YXJpYW50PFBpeGVsVG9sZXJhbmNlLCBmbG9hdD4gdG9sZXJhbmNlKQor
eworICAgIGlmICghb3B0aW9uYWxSZXN1bHQpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
Y29uc3QgYXV0byYgcmVzdWx0ID0gKm9wdGlvbmFsUmVzdWx0OworICAgIGlmIChzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPGZsb2F0Pih0b2xlcmFuY2UpKQorICAgICAgICByZXR1cm4gc3RkOjpnZXQ8
ZmxvYXQ+KHRvbGVyYW5jZSkgPj0gcmVzdWx0LnBlcmNlbnRhZ2VEaWZmZXJlbmNlOworCisgICAg
Y29uc3QgYXV0byYgcGl4ZWxUb2xlcmFuY2UgPSBzdGQ6OmdldDxQaXhlbFRvbGVyYW5jZT4odG9s
ZXJhbmNlKTsKKyAgICByZXR1cm4gcmVzdWx0LnBpeGVsc0RpZmZlcmVudCA+PSBwaXhlbFRvbGVy
YW5jZS50b3RhbFBpeGVsc0RpZmZlcmVudFJhbmdlLmZpcnN0ICYmIHJlc3VsdC5waXhlbHNEaWZm
ZXJlbnQgPD0gcGl4ZWxUb2xlcmFuY2UudG90YWxQaXhlbHNEaWZmZXJlbnRSYW5nZS5zZWNvbmQK
KyAgICAgICAgJiYgcmVzdWx0Lm1heENoYW5uZWxEaWZmZXJlbmNlID49IHBpeGVsVG9sZXJhbmNl
Lm1heENoYW5uZWxEaWZmZXJlbmNlUmFuZ2UuZmlyc3QKKyAgICAgICAgJiYgcmVzdWx0Lm1heENo
YW5uZWxEaWZmZXJlbmNlIDw9IHBpeGVsVG9sZXJhbmNlLm1heENoYW5uZWxEaWZmZXJlbmNlUmFu
Z2Uuc2Vjb25kOworfQorCiBpbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciogYXJndltdKQog
ewogI2lmZGVmIF9XSU4zMgpAQCAtNTUsMTMgKzEyMSwxMyBAQCBpbnQgbWFpbihpbnQgYXJnYywg
Y29uc3QgY2hhciogYXJndltdKQogICAgIF9zZXRtb2RlKDEsIF9PX0JJTkFSWSk7CiAjZW5kaWYK
IAotICAgIGZsb2F0IHRvbGVyYW5jZSA9IDAuMGY7CisgICAgc3RkOjp2YXJpYW50PFBpeGVsVG9s
ZXJhbmNlLCBmbG9hdD4gdG9sZXJhbmNlID0geyAwLjBmIH07CiAKICAgICBmb3IgKGludCBpID0g
MTsgaSA8IGFyZ2M7ICsraSkgewogICAgICAgICBpZiAoIXN0cmNtcChhcmd2W2ldLCAiLXQiKSB8
fCAhc3RyY21wKGFyZ3ZbaV0sICItLXRvbGVyYW5jZSIpKSB7CiAgICAgICAgICAgICBpZiAoaSA+
PSBhcmdjIC0gMSkKICAgICAgICAgICAgICAgICBleGl0KDEpOwotICAgICAgICAgICAgdG9sZXJh
bmNlID0gc3RydG9mKGFyZ3ZbaSArIDFdLCAwKTsKKyAgICAgICAgICAgIHRvbGVyYW5jZSA9IHBh
cnNlVG9sZXJhbmNlKGFyZ3ZbaSArIDFdKTsKICAgICAgICAgICAgICsraTsKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICB9CkBAIC0xMTIsMjEgKzE3OCwxNiBAQCBpbnQgbWFpbihpbnQg
YXJnYywgY29uc3QgY2hhciogYXJndltdKQogICAgICAgICAgICAgICAgIHJldHVybiBFWElUX0ZB
SUxVUkU7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGZsb2F0IGRpZmZlcmVuY2UgPSAx
MDAuMGY7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1JbWFnZT4gZGlmZklt
YWdlID0gYWN0dWFsSW1hZ2UtPmRpZmZlcmVuY2UoKmJhc2VsaW5lSW1hZ2UsIGRpZmZlcmVuY2Up
OwotICAgICAgICAgICAgaWYgKGRpZmZlcmVuY2UgPD0gdG9sZXJhbmNlKQotICAgICAgICAgICAg
ICAgIGRpZmZlcmVuY2UgPSAwLjBmOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgZGlmZmVyZW5jZSA9IHJvdW5kZihkaWZmZXJlbmNlICogMTAwLjBmKSAvIDEwMC4wZjsKLSAg
ICAgICAgICAgICAgICBkaWZmZXJlbmNlID0gc3RkOjptYXg8ZmxvYXQ+KGRpZmZlcmVuY2UsIDAu
MDFmKTsgLy8gcm91bmQgdG8gMiBkZWNpbWFsIHBsYWNlcworICAgICAgICAgICAgYXV0byByZXN1
bHQgPSBhY3R1YWxJbWFnZS0+ZGlmZmVyZW5jZSgqYmFzZWxpbmVJbWFnZSk7CisgICAgICAgICAg
ICBjb25zdCBjaGFyKiBtZXNzYWdlID0gInBhc3NlZCI7CisgICAgICAgICAgICBpZiAoIXdpdGhp
blRvbGVyYW5jZShyZXN1bHQsIHRvbGVyYW5jZSkpIHsKKyAgICAgICAgICAgICAgICAoKnJlc3Vs
dCkuZGlmZkltYWdlLT53cml0ZUFzUE5HVG9TdGRvdXQoKTsKKyAgICAgICAgICAgICAgICBtZXNz
YWdlID0gImZhaWxlZCI7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChkaWZmZXJl
bmNlID4gMC4wZikgewotICAgICAgICAgICAgICAgIGlmIChkaWZmSW1hZ2UpCi0gICAgICAgICAg
ICAgICAgICAgIGRpZmZJbWFnZS0+d3JpdGVBc1BOR1RvU3Rkb3V0KCk7Ci0gICAgICAgICAgICAg
ICAgZnByaW50ZihzdGRvdXQsICJkaWZmOiAlMDEuMmYlJSBmYWlsZWRcbiIsIGRpZmZlcmVuY2Up
OwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgZnByaW50ZihzdGRvdXQsICJk
aWZmOiAlMDEuMmYlJSBwYXNzZWRcbiIsIGRpZmZlcmVuY2UpOworICAgICAgICAgICAgLy8gUm91
bmQgYW55IGRpZmZlcmVuY2UgdG8gdHdvIGRlY2ltYWwgcGxhY2VzIGFuZCBtYWtlIHN1cmUgaXQn
cyBhdCBsZWFzdCAwLjAxJS4KKyAgICAgICAgICAgIGZsb2F0IGRpZmZlcmVuY2UgPSByZXN1bHQg
PyBzdGQ6Om1heChzdGQ6OnJvdW5kKCgqcmVzdWx0KS5wZXJjZW50YWdlRGlmZmVyZW5jZSAqIDEw
MC4wZikgLyAxMDAuMGYsIDAuMDFmKSA6IDAuMDsKKyAgICAgICAgICAgIGZwcmludGYoc3Rkb3V0
LCAiZGlmZjogJTAxLjJmJSUgJXNcbiIsIGRpZmZlcmVuY2UsIG1lc3NhZ2UpOwogCiAgICAgICAg
ICAgICBhY3R1YWxJbWFnZSA9IG51bGxwdHI7CiAgICAgICAgICAgICBiYXNlbGluZUltYWdlID0g
bnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Rvb2xzL0ltYWdlRGlmZi9QbGF0Zm9ybUltYWdlLmNwcCBi
L1Rvb2xzL0ltYWdlRGlmZi9QbGF0Zm9ybUltYWdlLmNwcAppbmRleCA0Yzk5Yzc2NTk5ZjgzMjhm
ZTQ0MmRkM2RkMTA2MjhkNzhjZjdmMjAxLi43MzRhNjBiNDY5NDlmYjdhMzZkNWFhZTc3NTk2MGRh
OWZkNmVmZTJjIDEwMDY0NAotLS0gYS9Ub29scy9JbWFnZURpZmYvUGxhdGZvcm1JbWFnZS5jcHAK
KysrIGIvVG9vbHMvSW1hZ2VEaWZmL1BsYXRmb3JtSW1hZ2UuY3BwCkBAIC00MCwyMSArNDAsMzIg
QEAgYm9vbCBQbGF0Zm9ybUltYWdlOjppc0NvbXBhdGlibGUoY29uc3QgUGxhdGZvcm1JbWFnZSYg
b3RoZXIpIGNvbnN0CiAgICAgICAgICYmIGhhc0FscGhhKCkgPT0gb3RoZXIuaGFzQWxwaGEoKTsK
IH0KIAotc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtSW1hZ2U+IFBsYXRmb3JtSW1hZ2U6OmRpZmZl
cmVuY2UoY29uc3QgUGxhdGZvcm1JbWFnZSYgb3RoZXIsIGZsb2F0JiBwZXJjZW50YWdlRGlmZmVy
ZW5jZSkKK3N0ZDo6b3B0aW9uYWw8UGxhdGZvcm1JbWFnZTo6RGlmZmVyZW5jZVJlc3VsdD4gUGxh
dGZvcm1JbWFnZTo6ZGlmZmVyZW5jZShjb25zdCBQbGF0Zm9ybUltYWdlJiBvdGhlcikKIHsKICAg
ICBzaXplX3Qgd2lkdGggPSB0aGlzLT53aWR0aCgpOwogICAgIHNpemVfdCBoZWlnaHQgPSB0aGlz
LT5oZWlnaHQoKTsKIAogICAgIC8vIENvbXBhcmUgdGhlIGNvbnRlbnQgb2YgdGhlIDIgYml0bWFw
cwogICAgIHZvaWQqIGRpZmZCdWZmZXIgPSBtYWxsb2Mod2lkdGggKiBoZWlnaHQpOwotICAgIGZs
b2F0IGNvdW50ID0gMC4wZjsKKyAgICB1bnNpZ25lZCBudW1QaXhlbHNEaWZmZXJlbnQgPSAwOwog
ICAgIGZsb2F0IHN1bSA9IDAuMGY7CiAgICAgZmxvYXQgbWF4RGlzdGFuY2UgPSAwLjBmOworCisg
ICAgLy8gVGhpcyBpcyB0aGUgbWF4aW11bSBkaXN0YW5jZSBvZiBlYWNoIGluZGl2aWR1YWwgOC1i
aXQgY2hhbm5lbCwgc28KKyAgICAvLyB0aGlzIHdpbGwgYmUgYSBudW1iZXIgYmV0d2VlbiAwIGFu
ZCAyNTUuCisgICAgaW50IG1heENoYW5uZWxEaWZmZXJlbmNlID0gMDsKKwogICAgIHVuc2lnbmVk
IGNoYXIqIGJhc2VQaXhlbCA9IHRoaXMtPnBpeGVscygpOwogICAgIHVuc2lnbmVkIGNoYXIqIHBp
eGVsID0gb3RoZXIucGl4ZWxzKCk7CiAgICAgdW5zaWduZWQgY2hhciogZGlmZlBpeGVsID0gcmVp
bnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oZGlmZkJ1ZmZlcik7CiAgICAgZm9yIChzaXpl
X3QgeSA9IDA7IHkgPCBoZWlnaHQ7ICsreSkgewogICAgICAgICBmb3IgKHNpemVfdCB4ID0gMDsg
eCA8IHdpZHRoOyArK3gpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgYW4gaW1wbGVtZW50YXRp
b24gb2YgdGhlIFdQVCBjaGFubmVsIGRpZmZlcmVuY2UgYWxnb3JpdGhtIGRlc2NyaWJlZCBhdDoK
KyAgICAgICAgICAgIC8vIGh0dHBzOi8vd2ViLXBsYXRmb3JtLXRlc3RzLm9yZy93cml0aW5nLXRl
c3RzL3JlZnRlc3RzLmh0bWwKKyAgICAgICAgICAgIC8vIFRoaXMgZXhwbGljaXRseSBpZ25vcmVz
IHRoZSBhbHBoYSBjaGFubmVsLgorICAgICAgICAgICAgbWF4Q2hhbm5lbERpZmZlcmVuY2UgPSBz
dGQ6Om1heCh7IG1heENoYW5uZWxEaWZmZXJlbmNlLCBzdGQ6OmFicyhwaXhlbFswXSAtIGJhc2VQ
aXhlbFswXSksCisgICAgICAgICAgICAgICAgc3RkOjphYnMocGl4ZWxbMV0gLSBiYXNlUGl4ZWxb
MV0pLCBzdGQ6OmFicyhwaXhlbFsyXSAtIGJhc2VQaXhlbFsyXSkgfSk7CisKICAgICAgICAgICAg
IGZsb2F0IHJlZCA9IChwaXhlbFswXSAtIGJhc2VQaXhlbFswXSkgLyBzdGQ6Om1heDxmbG9hdD4o
MjU1IC0gYmFzZVBpeGVsWzBdLCBiYXNlUGl4ZWxbMF0pOwogICAgICAgICAgICAgZmxvYXQgZ3Jl
ZW4gPSAocGl4ZWxbMV0gLSBiYXNlUGl4ZWxbMV0pIC8gc3RkOjptYXg8ZmxvYXQ+KDI1NSAtIGJh
c2VQaXhlbFsxXSwgYmFzZVBpeGVsWzFdKTsKICAgICAgICAgICAgIGZsb2F0IGJsdWUgPSAocGl4
ZWxbMl0gLSBiYXNlUGl4ZWxbMl0pIC8gc3RkOjptYXg8ZmxvYXQ+KDI1NSAtIGJhc2VQaXhlbFsy
XSwgYmFzZVBpeGVsWzJdKTsKQEAgLTY0LDcgKzc1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBsYXRm
b3JtSW1hZ2U+IFBsYXRmb3JtSW1hZ2U6OmRpZmZlcmVuY2UoY29uc3QgUGxhdGZvcm1JbWFnZSYg
b3QKICAgICAgICAgICAgICpkaWZmUGl4ZWwrKyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+
KGRpc3RhbmNlICogMjU1LjBmKTsKIAogICAgICAgICAgICAgaWYgKGRpc3RhbmNlID49IDEuMGYg
LyAyNTUuMGYpIHsKLSAgICAgICAgICAgICAgICBjb3VudCArPSAxLjBmOworICAgICAgICAgICAg
ICAgIG51bVBpeGVsc0RpZmZlcmVudCArPSAxOwogICAgICAgICAgICAgICAgIHN1bSArPSBkaXN0
YW5jZTsKICAgICAgICAgICAgICAgICBpZiAoZGlzdGFuY2UgPiBtYXhEaXN0YW5jZSkKICAgICAg
ICAgICAgICAgICAgICAgbWF4RGlzdGFuY2UgPSBkaXN0YW5jZTsKQEAgLTc2LDE0ICs4NywxMyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1JbWFnZT4gUGxhdGZvcm1JbWFnZTo6ZGlmZmVyZW5j
ZShjb25zdCBQbGF0Zm9ybUltYWdlJiBvdAogICAgIH0KIAogICAgIC8vIENvbXB1dGUgdGhlIGRp
ZmZlcmVuY2UgYXMgYSBwZXJjZW50YWdlIGNvbWJpbmluZyBib3RoIHRoZSBudW1iZXIgb2YgZGlm
ZmVyZW50IHBpeGVscyBhbmQgdGhlaXIgZGlmZmVyZW5jZSBhbW91bnQgaS5lLiB0aGUgYXZlcmFn
ZSBkaXN0YW5jZSBvdmVyIHRoZSBlbnRpcmUgaW1hZ2UKLSAgICBpZiAoY291bnQgPiAwLjBmKQor
ICAgIGZsb2F0IHBlcmNlbnRhZ2VEaWZmZXJlbmNlID0gMC4wZjsKKyAgICBpZiAobnVtUGl4ZWxz
RGlmZmVyZW50KQogICAgICAgICBwZXJjZW50YWdlRGlmZmVyZW5jZSA9IDEwMC4wZiAqIHN1bSAv
IChoZWlnaHQgKiB3aWR0aCk7Ci0gICAgZWxzZQotICAgICAgICBwZXJjZW50YWdlRGlmZmVyZW5j
ZSA9IDAuMGY7CiAKICAgICBpZiAoIXBlcmNlbnRhZ2VEaWZmZXJlbmNlKSB7CiAgICAgICAgIGZy
ZWUoZGlmZkJ1ZmZlcik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4g
eyB9OwogICAgIH0KIAogICAgIC8vIEdlbmVyYXRlIGEgbm9ybWFsaXplZCBkaWZmIGltYWdlIGlm
IHRoZXJlIGlzIGFueSBkaWZmZXJlbmNlCkBAIC05Myw3ICsxMDMsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8UGxhdGZvcm1JbWFnZT4gUGxhdGZvcm1JbWFnZTo6ZGlmZmVyZW5jZShjb25zdCBQbGF0Zm9y
bUltYWdlJiBvdAogICAgICAgICAgICAgZGlmZlBpeGVsW3BdIC89IG1heERpc3RhbmNlOwogICAg
IH0KIAotICAgIHJldHVybiBQbGF0Zm9ybUltYWdlOjpjcmVhdGVGcm9tRGlmZkRhdGEoZGlmZkJ1
ZmZlciwgd2lkdGgsIGhlaWdodCk7CisgICAgcmV0dXJuIHsgeyBQbGF0Zm9ybUltYWdlOjpjcmVh
dGVGcm9tRGlmZkRhdGEoZGlmZkJ1ZmZlciwgd2lkdGgsIGhlaWdodCksIHBlcmNlbnRhZ2VEaWZm
ZXJlbmNlLCBudW1QaXhlbHNEaWZmZXJlbnQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtYXhDaGFu
bmVsRGlmZmVyZW5jZSkgfSB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBJbWFnZURpZmYKZGlmZiAt
LWdpdCBhL1Rvb2xzL0ltYWdlRGlmZi9QbGF0Zm9ybUltYWdlLmggYi9Ub29scy9JbWFnZURpZmYv
UGxhdGZvcm1JbWFnZS5oCmluZGV4IGE2MzJmMzRlODQ1NTM4NWQ3Njk2YTEzMmQ5NzJmMTQwNjk3
MzBiM2IuLjM0ZWY1ZDNkZDY3OGY2NGNiYTQ0ZWY0NTFjYzI3ZWQyYWZkZDI3YjQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0ltYWdlRGlmZi9QbGF0Zm9ybUltYWdlLmgKKysrIGIvVG9vbHMvSW1hZ2VEaWZm
L1BsYXRmb3JtSW1hZ2UuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSA8Y21hdGg+CiAj
aW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPG9wdGlvbmFsPgogCiAjaWYgZGVmaW5lZChVU0Vf
Q0FJUk8pICYmIFVTRV9DQUlSTwogdHlwZWRlZiBzdHJ1Y3QgX2NhaXJvX3N1cmZhY2UgY2Fpcm9f
c3VyZmFjZV90OwpAQCAtNTIsNyArNTMsMTUgQEAgcHVibGljOgogICAgIGJvb2wgaGFzQWxwaGEo
KSBjb25zdDsKICAgICB1bnNpZ25lZCBjaGFyKiBwaXhlbHMoKSBjb25zdDsKICAgICBib29sIGlz
Q29tcGF0aWJsZShjb25zdCBQbGF0Zm9ybUltYWdlJikgY29uc3Q7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPFBsYXRmb3JtSW1hZ2U+IGRpZmZlcmVuY2UoY29uc3QgUGxhdGZvcm1JbWFnZSYsIGZsb2F0
JiBwZXJjZW50YWdlRGlmZmVyZW5jZSk7CisKKyAgICBzdHJ1Y3QgRGlmZmVyZW5jZVJlc3VsdCB7
CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUltYWdlPiBkaWZmSW1hZ2U7CisgICAg
ICAgIGZsb2F0IHBlcmNlbnRhZ2VEaWZmZXJlbmNlIHsgMC4wIH07CisgICAgICAgIHVuc2lnbmVk
IGxvbmcgcGl4ZWxzRGlmZmVyZW50IHsgMCB9OworICAgICAgICB1bnNpZ25lZCBsb25nIG1heENo
YW5uZWxEaWZmZXJlbmNlIHsgMCB9OworICAgIH07CisKKyAgICBzdGQ6Om9wdGlvbmFsPERpZmZl
cmVuY2VSZXN1bHQ+IGRpZmZlcmVuY2UoY29uc3QgUGxhdGZvcm1JbWFnZSYpOwogICAgIHZvaWQg
d3JpdGVBc1BOR1RvU3Rkb3V0KCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Ub29scy9JbWFn
ZURpZmYvY2cvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZyBiL1Rvb2xzL0ltYWdlRGlmZi9j
Zy9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCmluZGV4IDc3MmNkZDE5MmM2YTcxM2RkMTIz
NDZkNmRhNzk4ZDRjZTZjODM3NDkuLmI1OTE0YzU5NWYzYzFlMjQ2ODI0MWIyNGUzMjUzODI4MGEy
MTkzOGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0ltYWdlRGlmZi9jZy9Db25maWd1cmF0aW9ucy9CYXNl
LnhjY29uZmlnCisrKyBiL1Rvb2xzL0ltYWdlRGlmZi9jZy9Db25maWd1cmF0aW9ucy9CYXNlLnhj
Y29uZmlnCkBAIC0zMSw3ICszMSw3IEBAIFVTRV9JTlRFUk5BTF9TREtfUmVsZWFzZSA9ICQoSEFW
RV9JTlRFUk5BTF9TREspOwogCiBBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKIAotQ0xB
TkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251KysxNDsKK0NMQU5HX0NYWF9MQU5HVUFHRV9T
VEFOREFSRCA9IGdudSsrMXo7CiBDTEFOR19DWFhfTElCUkFSWSA9IGxpYmMrKzsKIENMQU5HX0VO
QUJMRV9PQkpDX1dFQUsgPSBZRVM7CiBDTEFOR19XQVJOX0NYWDBYX0VYVEVOU0lPTlMgPSBOTzsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xs
ZXJzL3NpbmdsZV90ZXN0X3J1bm5lci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5lci5weQppbmRleCBkMTdhY2ZkMDE4
OWU4NDUxZTg4ZjY2ZTNiNmI2NmNlNTdmN2Y2NTFiLi5iNjRiOGNjZWYyZDA3YmJjYzU0Y2JiYjcy
MmQ3ZDE5Njk0ZjA1MGRmIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9jb250cm9sbGVycy9zaW5nbGVfdGVzdF9ydW5uZXIucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVy
LnB5CkBAIC0yOTMsNyArMjkzLDcgQEAgY2xhc3MgU2luZ2xlVGVzdFJ1bm5lcihvYmplY3QpOgog
ICAgICAgICBlbGlmIG5vdCBleHBlY3RlZF9kcml2ZXJfb3V0cHV0LmltYWdlX2hhc2g6CiAgICAg
ICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlTWlzc2luZ0ltYWdl
SGFzaCgpKQogICAgICAgICBlbGlmIGRyaXZlcl9vdXRwdXQuaW1hZ2VfaGFzaCAhPSBleHBlY3Rl
ZF9kcml2ZXJfb3V0cHV0LmltYWdlX2hhc2g6Ci0gICAgICAgICAgICBkaWZmX3Jlc3VsdCA9IHNl
bGYuX3BvcnQuZGlmZl9pbWFnZShleHBlY3RlZF9kcml2ZXJfb3V0cHV0LmltYWdlLCBkcml2ZXJf
b3V0cHV0LmltYWdlKQorICAgICAgICAgICAgZGlmZl9yZXN1bHQgPSBzZWxmLl9wb3J0LmRpZmZf
aW1hZ2UoZXhwZWN0ZWRfZHJpdmVyX291dHB1dC5pbWFnZSwgZHJpdmVyX291dHB1dC5pbWFnZSwg
dG9sZXJhbmNlPWRyaXZlcl9vdXRwdXQucGl4ZWxfdG9sZXJhbmNlKQogICAgICAgICAgICAgZXJy
b3Jfc3RyaW5nID0gZGlmZl9yZXN1bHRbMl0KICAgICAgICAgICAgIGlmIGVycm9yX3N0cmluZzoK
ICAgICAgICAgICAgICAgICBfbG9nLndhcm5pbmcoJyAgJXMgOiAlcycgJSAoc2VsZi5fdGVzdF9u
YW1lLCBlcnJvcl9zdHJpbmcpKQpAQCAtMzU2LDggKzM1NiwxNCBAQCBjbGFzcyBTaW5nbGVUZXN0
UnVubmVyKG9iamVjdCk6CiAgICAgICAgICAgICBpZiByZWZlcmVuY2VfZHJpdmVyX291dHB1dC5p
bWFnZV9oYXNoID09IGFjdHVhbF9kcml2ZXJfb3V0cHV0LmltYWdlX2hhc2g6CiAgICAgICAgICAg
ICAgICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZVJlZnRlc3RNaXNtYXRj
aERpZE5vdE9jY3VyKHJlZmVyZW5jZV9maWxlbmFtZSkpCiAgICAgICAgIGVsaWYgcmVmZXJlbmNl
X2RyaXZlcl9vdXRwdXQuaW1hZ2VfaGFzaCAhPSBhY3R1YWxfZHJpdmVyX291dHB1dC5pbWFnZV9o
YXNoOgotICAgICAgICAgICAgIyBJbWFnZURpZmYgaGFzIGEgaGFyZCBjb2RlZCBjb2xvciBkaXN0
YW5jZSB0aHJlc2hvbGQgZXZlbiB0aG91Z2ggdG9sZXJhbmNlPTAgaXMgc3BlY2lmaWVkLgotICAg
ICAgICAgICAgZGlmZl9yZXN1bHQgPSBzZWxmLl9wb3J0LmRpZmZfaW1hZ2UocmVmZXJlbmNlX2Ry
aXZlcl9vdXRwdXQuaW1hZ2UsIGFjdHVhbF9kcml2ZXJfb3V0cHV0LmltYWdlLCB0b2xlcmFuY2U9
MCkKKyAgICAgICAgICAgICMgRm9yIHJlZmVyZW5jZSB0ZXN0cyB3ZSBvdmVycmlkZSB0aGUgcG9y
dC1kZWZhdWx0IHRvbGVyYW5jZS4gSWYgdGhlIHRlc3RzIGRvbid0CisgICAgICAgICAgICAjIHNw
ZWNpZnkgYSB0b2xlcmFuY2UsIHRoZSBpbWFnZXMgc2hvdWxkIGFsd2F5cyBtYXRjaC4gSW1hZ2VE
aWZmIGFsc28gaGFzIGEgaGFyZCBjb2RlZAorICAgICAgICAgICAgIyBjb2xvciBkaXN0YW5jZSB0
aHJlc2hvbGQgZXZlbiB0aG91Z2ggdG9sZXJhbmNlPTAgaXMgc3BlY2lmaWVkLgorICAgICAgICAg
ICAgdG9sZXJhbmNlID0gYWN0dWFsX2RyaXZlcl9vdXRwdXQucGl4ZWxfdG9sZXJhbmNlCisgICAg
ICAgICAgICBpZiBub3QgdG9sZXJhbmNlOgorICAgICAgICAgICAgICAgIHRvbGVyYW5jZSA9ICIw
IgorCisgICAgICAgICAgICBkaWZmX3Jlc3VsdCA9IHNlbGYuX3BvcnQuZGlmZl9pbWFnZShyZWZl
cmVuY2VfZHJpdmVyX291dHB1dC5pbWFnZSwgYWN0dWFsX2RyaXZlcl9vdXRwdXQuaW1hZ2UsIHRv
bGVyYW5jZSkKICAgICAgICAgICAgIGVycm9yX3N0cmluZyA9IGRpZmZfcmVzdWx0WzJdCiAgICAg
ICAgICAgICBpZiBlcnJvcl9zdHJpbmc6CiAgICAgICAgICAgICAgICAgX2xvZy53YXJuaW5nKCcg
ICVzIDogJXMnICUgKHNlbGYuX3Rlc3RfbmFtZSwgZXJyb3Jfc3RyaW5nKSkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3BvcnQvZHJpdmVyLnB5CmluZGV4IDY1NjhmZmE3MTQ3ZGI3Y2U0OGVmZTkyYTA2MTY3
ODBiMmUzZDI1ODQuLmE1YzZmNTNmOTMxYmQ0NmIwMWNiMTMzZTc4YzliMGJmYzc4M2JiNDkgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXIucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2RyaXZlci5weQpAQCAtODQsMTIgKzg0LDE0IEBAIGNs
YXNzIERyaXZlck91dHB1dChvYmplY3QpOgogICAgIG1ldHJpY3NfcGF0dGVybnMuYXBwZW5kKChy
ZS5jb21waWxlKCdzY3JvbGxlZCB0byBbMC05XSssWzAtOV0rJyksICdzY3JvbGxlZCcpKQogCiAg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIHRleHQsIGltYWdlLCBpbWFnZV9oYXNoLCBhdWRpbywgY3Jh
c2g9RmFsc2UsCi0gICAgICAgICAgICB0ZXN0X3RpbWU9MCwgbWVhc3VyZW1lbnRzPU5vbmUsIHRp
bWVvdXQ9RmFsc2UsIGVycm9yPScnLCBjcmFzaGVkX3Byb2Nlc3NfbmFtZT0nPz8nLAotICAgICAg
ICAgICAgY3Jhc2hlZF9waWQ9Tm9uZSwgY3Jhc2hfbG9nPU5vbmUsIHBpZD1Ob25lKToKKyAgICAg
ICAgICAgICAgICAgdGVzdF90aW1lPTAsIG1lYXN1cmVtZW50cz1Ob25lLCB0aW1lb3V0PUZhbHNl
LCBlcnJvcj0nJywgY3Jhc2hlZF9wcm9jZXNzX25hbWU9Jz8/JywKKyAgICAgICAgICAgICAgICAg
Y3Jhc2hlZF9waWQ9Tm9uZSwgY3Jhc2hfbG9nPU5vbmUsIHBpZD1Ob25lLAorICAgICAgICAgICAg
ICAgICBwaXhlbF90b2xlcmFuY2U9Tm9uZSk6CiAgICAgICAgICMgRklYTUU6IEFyZ3MgY291bGQg
YmUgcmVuYW1lZCB0byBiZXR0ZXIgY2xhcmlmeSB3aGF0IHRoZXkgZG8uCiAgICAgICAgIHNlbGYu
dGV4dCA9IHN0cmluZ191dGlscy5kZWNvZGUodGV4dCwgdGFyZ2V0X3R5cGU9c3RyKSBpZiB0ZXh0
IGVsc2UgTm9uZQogICAgICAgICBzZWxmLmltYWdlID0gaW1hZ2UgICMgTWF5IGJlIGVtcHR5LXN0
cmluZyBpZiB0aGUgdGVzdCBjcmFzaGVzLgogICAgICAgICBzZWxmLmltYWdlX2hhc2ggPSBpbWFn
ZV9oYXNoCisgICAgICAgIHNlbGYucGl4ZWxfdG9sZXJhbmNlID0gcGl4ZWxfdG9sZXJhbmNlCiAg
ICAgICAgIHNlbGYuaW1hZ2VfZGlmZiA9IE5vbmUgICMgaW1hZ2VfZGlmZiBnZXRzIGZpbGxlZCBp
biBhZnRlciBjb25zdHJ1Y3Rpb24uCiAgICAgICAgIHNlbGYuYXVkaW8gPSBzdHJpbmdfdXRpbHMu
ZW5jb2RlKGF1ZGlvKSBpZiBhdWRpbyBlbHNlIE5vbmUgICMgQmluYXJ5IGZvcm1hdCBpcyBwb3J0
LWRlcGVuZGVudC4KICAgICAgICAgc2VsZi5jcmFzaCA9IGNyYXNoCkBAIC0yMjgsNyArMjMwLDcg
QEAgY2xhc3MgRHJpdmVyKG9iamVjdCk6CiAKICAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3Mu
d3JpdGUoY29tbWFuZCkKICAgICAgICAgdGV4dCwgYXVkaW8gPSBzZWxmLl9yZWFkX2ZpcnN0X2Js
b2NrKGRlYWRsaW5lLCBkcml2ZXJfaW5wdXQudGVzdF9uYW1lKSAgIyBGaXJzdCBibG9jayBpcyBl
aXRoZXIgdGV4dCBvciBhdWRpbwotICAgICAgICBpbWFnZSwgYWN0dWFsX2ltYWdlX2hhc2ggPSBz
ZWxmLl9yZWFkX29wdGlvbmFsX2ltYWdlX2Jsb2NrKGRlYWRsaW5lLCBkcml2ZXJfaW5wdXQudGVz
dF9uYW1lKSAgIyBUaGUgc2Vjb25kIChvcHRpb25hbCkgYmxvY2sgaXMgaW1hZ2UgZGF0YS4KKyAg
ICAgICAgaW1hZ2UsIGFjdHVhbF9pbWFnZV9oYXNoLCBwaXhlbF90b2xlcmFuY2UgPSBzZWxmLl9y
ZWFkX29wdGlvbmFsX2ltYWdlX2Jsb2NrKGRlYWRsaW5lLCBkcml2ZXJfaW5wdXQudGVzdF9uYW1l
KSAgIyBUaGUgc2Vjb25kIChvcHRpb25hbCkgYmxvY2sgaXMgaW1hZ2UgZGF0YS4KICAgICAgICAg
dGV4dCA9IHN0cmluZ191dGlscy5kZWNvZGUodGV4dCwgdGFyZ2V0X3R5cGU9c3RyKQogCiAgICAg
ICAgIGNyYXNoZWQgPSBzZWxmLmhhc19jcmFzaGVkKCkKQEAgLTI2MywxMCArMjY1LDExIEBAIGNs
YXNzIERyaXZlcihvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICBjcmFzaF9sb2cgKz0gJ1xu
c3Rkb3V0OlxuJXNcbnN0ZGVycjpcbiVzXG4nICUgKHRleHQsIHNlbGYuZXJyb3JfZnJvbV90ZXN0
KQogCiAgICAgICAgIHJldHVybiBEcml2ZXJPdXRwdXQodGV4dCwgaW1hZ2UsIGFjdHVhbF9pbWFn
ZV9oYXNoLCBhdWRpbywKLSAgICAgICAgICAgIGNyYXNoPWNyYXNoZWQsIHRlc3RfdGltZT10aW1l
LnRpbWUoKSAtIHRlc3RfYmVnaW5fdGltZSwgbWVhc3VyZW1lbnRzPXNlbGYuX21lYXN1cmVtZW50
cywKLSAgICAgICAgICAgIHRpbWVvdXQ9dGltZWRfb3V0IG9yIGRyaXZlcl90aW1lZF9vdXQsIGVy
cm9yPXNlbGYuZXJyb3JfZnJvbV90ZXN0LAotICAgICAgICAgICAgY3Jhc2hlZF9wcm9jZXNzX25h
bWU9c2VsZi5fY3Jhc2hlZF9wcm9jZXNzX25hbWUsCi0gICAgICAgICAgICBjcmFzaGVkX3BpZD1z
ZWxmLl9jcmFzaGVkX3BpZCwgY3Jhc2hfbG9nPWNyYXNoX2xvZywgcGlkPXBpZCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjcmFzaD1jcmFzaGVkLCB0ZXN0X3RpbWU9dGltZS50aW1lKCkg
LSB0ZXN0X2JlZ2luX3RpbWUsIG1lYXN1cmVtZW50cz1zZWxmLl9tZWFzdXJlbWVudHMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD10aW1lZF9vdXQgb3IgZHJpdmVyX3RpbWVk
X291dCwgZXJyb3I9c2VsZi5lcnJvcl9mcm9tX3Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3Jhc2hlZF9wcm9jZXNzX25hbWU9c2VsZi5fY3Jhc2hlZF9wcm9jZXNzX25hbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jhc2hlZF9waWQ9c2VsZi5fY3Jhc2hlZF9waWQs
IGNyYXNoX2xvZz1jcmFzaF9sb2csIHBpZD1waWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGl4ZWxfdG9sZXJhbmNlPXBpeGVsX3RvbGVyYW5jZSkKIAogICAgIGRlZiBkb19wb3N0X3Rl
c3RzX3dvcmsoc2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxmLl9zZXJ2ZXJfcHJvY2VzczoKQEAg
LTY1MSwxMSArNjU0LDExIEBAIGNsYXNzIERyaXZlcihvYmplY3QpOgogICAgICAgICByZXR1cm4g
KGJsb2NrLmRlY29kZWRfY29udGVudCwgTm9uZSkKIAogICAgIGRlZiBfcmVhZF9vcHRpb25hbF9p
bWFnZV9ibG9jayhzZWxmLCBkZWFkbGluZSwgdGVzdF9uYW1lKToKLSAgICAgICAgIyByZXR1cm5z
IChpbWFnZSwgYWN0dWFsX2ltYWdlX2hhc2gpCisgICAgICAgICMgcmV0dXJucyAoaW1hZ2UsIGFj
dHVhbF9pbWFnZV9oYXNoLCBwaXhlbF90b2xlcmFuY2UpCiAgICAgICAgIGJsb2NrID0gc2VsZi5f
cmVhZF9ibG9jayhkZWFkbGluZSwgdGVzdF9uYW1lLCB3YWl0X2Zvcl9zdGRlcnJfZW9mPVRydWUp
CiAgICAgICAgIGlmIGJsb2NrLmNvbnRlbnQgYW5kIGJsb2NrLmNvbnRlbnRfdHlwZSA9PSAnaW1h
Z2UvcG5nJzoKLSAgICAgICAgICAgIHJldHVybiAoYmxvY2suZGVjb2RlZF9jb250ZW50IGlmIGJs
b2NrLmVuY29kaW5nID09ICdiYXNlNjQnIGVsc2UgYmxvY2suY29udGVudCwgYmxvY2suY29udGVu
dF9oYXNoKQotICAgICAgICByZXR1cm4gKE5vbmUsIGJsb2NrLmNvbnRlbnRfaGFzaCkKKyAgICAg
ICAgICAgIHJldHVybiAoYmxvY2suZGVjb2RlZF9jb250ZW50IGlmIGJsb2NrLmVuY29kaW5nID09
ICdiYXNlNjQnIGVsc2UgYmxvY2suY29udGVudCwgYmxvY2suY29udGVudF9oYXNoLCBibG9jay5w
aXhlbF90b2xlcmFuY2UpCisgICAgICAgIHJldHVybiAoTm9uZSwgYmxvY2suY29udGVudF9oYXNo
LCBibG9jay5waXhlbF90b2xlcmFuY2UpCiAKICAgICBkZWYgX3JlYWRfaGVhZGVyKHNlbGYsIGJs
b2NrLCBsaW5lLCBoZWFkZXJfdGV4dCwgaGVhZGVyX2F0dHIsIGhlYWRlcl9maWx0ZXI9Tm9uZSk6
CiAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aChoZWFkZXJfdGV4dCkgYW5kIGdldGF0dHIoYmxv
Y2ssIGhlYWRlcl9hdHRyKSBpcyBOb25lOgpAQCAtNjcxLDYgKzY3NCw3IEBAIGNsYXNzIERyaXZl
cihvYmplY3QpOgogICAgICAgICAgICAgKGInQ29udGVudC1UeXBlOiAnLCAnY29udGVudF90eXBl
JywgTm9uZSksCiAgICAgICAgICAgICAoYidDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiAnLCAn
ZW5jb2RpbmcnLCBOb25lKSwKICAgICAgICAgICAgIChiJ0NvbnRlbnQtTGVuZ3RoOiAnLCAnX2Nv
bnRlbnRfbGVuZ3RoJywgaW50KSwKKyAgICAgICAgICAgIChiJ1BpeGVsLVRvbGVyYW5jZTogJywg
J3BpeGVsX3RvbGVyYW5jZScsIE5vbmUpLAogICAgICAgICAgICAgKGInQWN0dWFsSGFzaDogJywg
J2NvbnRlbnRfaGFzaCcsIE5vbmUpLAogICAgICAgICAgICAgKGInRHVtcE1hbGxvYzogJywgJ21h
bGxvYycsIE5vbmUpLAogICAgICAgICAgICAgKGInRHVtcEpTSGVhcDogJywgJ2pzX2hlYXAnLCBO
b25lKSwKQEAgLTc2Niw2ICs3NzAsNyBAQCBjbGFzcyBDb250ZW50QmxvY2sob2JqZWN0KToKICAg
ICAgICAgc2VsZi5jb250ZW50X3R5cGUgPSBOb25lCiAgICAgICAgIHNlbGYuZW5jb2RpbmcgPSBO
b25lCiAgICAgICAgIHNlbGYuY29udGVudF9oYXNoID0gTm9uZQorICAgICAgICBzZWxmLnBpeGVs
X3RvbGVyYW5jZSA9IE5vbmUKICAgICAgICAgc2VsZi5fY29udGVudF9sZW5ndGggPSBOb25lCiAg
ICAgICAgICMgQ29udGVudCBpcyB0cmVhdGVkIGFzIGJpbmFyeSBkYXRhIGV2ZW4gdGhvdWdoIHRo
ZSB0ZXh0IG91dHB1dCBpcyB1c3VhbGx5IFVURi04LgogICAgICAgICBzZWxmLmNvbnRlbnQgPSBi
JycKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXJfdW5pdHRl
c3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyX3VuaXR0ZXN0LnB5Cmlu
ZGV4IDg1YzgwM2NmZWI0NTZkMzJhZmM4ZGNmZWI2MzczZDkwYjU0ZGNjMzUuLjU5ZjY4ZTA5NWMx
ZWQ1OWJjNTAwNDk0M2UzMTdlNjg0YTNlNzc3YjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcG9ydC9kcml2ZXJfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wb3J0L2RyaXZlcl91bml0dGVzdC5weQpAQCAtMTc2LDYgKzE3Niw3IEBAIGNsYXNzIERy
aXZlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgJ0FjdHVhbEhhc2g6IGFj
dHVhbCcsCiAgICAgICAgICAgICAnRXhwZWN0ZWRIYXNoOiBleHBlY3RlZCcsCiAgICAgICAgICAg
ICAnQ29udGVudC1UeXBlOiBpbWFnZS9wbmcnLAorICAgICAgICAgICAgJ1BpeGVsLVRvbGVyYW5j
ZTogMC0xMDsyMDAtMzAwJywKICAgICAgICAgICAgICdDb250ZW50LUxlbmd0aDogOScsCiAgICAg
ICAgICAgICAiMTIzNDU2NzgiLAogICAgICAgICAgICAgIiNFT0YiLApAQCAtMTgzLDYgKzE4NCw3
IEBAIGNsYXNzIERyaXZlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBjb250ZW50
X2Jsb2NrID0gZHJpdmVyLl9yZWFkX2Jsb2NrKDAsICIiKQogICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGNvbnRlbnRfYmxvY2suY29udGVudF90eXBlLCAnaW1hZ2UvcG5nJykKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjb250ZW50X2Jsb2NrLmNvbnRlbnRfaGFzaCwgJ2FjdHVhbCcpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udGVudF9ibG9jay5waXhlbF90b2xlcmFuY2UsICcwLTEw
OzIwMC0zMDAnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRlbnRfYmxvY2suY29udGVu
dCwgYicxMjM0NTY3OFxuJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb250ZW50X2Jsb2Nr
LmRlY29kZWRfY29udGVudCwgJzEyMzQ1Njc4XG4nKQogICAgICAgICBkcml2ZXIuX3NlcnZlcl9w
cm9jZXNzID0gTm9uZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9SZWZ0ZXN0
RnVuY3Rpb25zLmNwcCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvUmVmdGVzdEZ1bmN0aW9ucy5j
cHAKaW5kZXggZDM1YzI5MmY0YTE1NjhlMDJlZjVjNmNkMzRjMDE5NzQzNDRhYTJkNi4uM2YxZDcw
N2YzMTMzMjM3ZTVkNjI1ZWE0MWU3NDMyOGEyZGFkNzYyNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFJ1bm5lclNoYXJlZC9SZWZ0ZXN0RnVuY3Rpb25zLmNwcAorKysgYi9Ub29scy9UZXN0UnVubmVy
U2hhcmVkL1JlZnRlc3RGdW5jdGlvbnMuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAi
UmVmdGVzdEZ1bmN0aW9ucy5oIgogCiAjaW5jbHVkZSAiSlNCYXNpY3MuaCIKKyNpbmNsdWRlIDx3
dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdUUiB7CiAKQEAgLTQ5LDQgKzUwLDQ1IEBA
IGJvb2wgaGFzUmVmdGVzdFdhaXRBdHRyaWJ1dGUoSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQp
CiAgICAgcmV0dXJuIEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgY2FsbChjb250ZXh0LCBjbGFz
c0xpc3QsICJjb250YWlucyIsIHsgbWFrZVZhbHVlKGNvbnRleHQsICJyZWZ0ZXN0LXdhaXQiKSB9
KSk7CiB9CiAKK3N0ZDo6c3RyaW5nIGZ1enp5TWF0Y2hpbmdUb2xlcmFuY2UoSlNHbG9iYWxDb250
ZXh0UmVmIGNvbnRleHQpCit7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICByZXR1cm4geyB9
OworCisgICAgYXV0byBkb2N1bWVudEVsZW1lbnQgPSBvYmplY3RQcm9wZXJ0eShjb250ZXh0LCBK
U0NvbnRleHRHZXRHbG9iYWxPYmplY3QoY29udGV4dCksICJkb2N1bWVudCIpOworICAgIGF1dG8g
bWV0YVRhZyA9IGNhbGwoY29udGV4dCwgZG9jdW1lbnRFbGVtZW50LCAicXVlcnlTZWxlY3RvciIs
IHsgbWFrZVZhbHVlKGNvbnRleHQsICJtZXRhW25hbWU9J2Z1enp5J10iKSB9KTsKKyAgICBpZiAo
IUpTVmFsdWVJc09iamVjdChjb250ZXh0LCBtZXRhVGFnKSkKKyAgICAgICAgcmV0dXJuIHsgfTsK
KworICAgIGF1dG8gbWV0YVRhZ09iamVjdCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBtZXRh
VGFnLCBudWxscHRyKTsKKyAgICBhdXRvIGNvbnRlbnQgPSBwcm9wZXJ0eShjb250ZXh0LCBtZXRh
VGFnT2JqZWN0LCAiY29udGVudCIpOworICAgIGlmICghSlNWYWx1ZUlzU3RyaW5nKGNvbnRleHQs
IGNvbnRlbnQpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IGNvbnRlbnRKU1N0cmluZyA9IGFkb3B0KEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4
dCwgY29udGVudCwgbnVsbHB0cikpOworICAgIHNpemVfdCBjb250ZW50U3RyaW5nU2l6ZSA9IEpT
U3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShjb250ZW50SlNTdHJpbmcuZ2V0KCkpICsg
MTsKKyAgICBhdXRvIGNvbnRlbnRCdWZmZXIgPSBtYWtlVW5pcXVlQXJyYXk8Y2hhcj4oY29udGVu
dFN0cmluZ1NpemUpOworICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoY29udGVudEpTU3RyaW5n
LmdldCgpLCBjb250ZW50QnVmZmVyLmdldCgpLCBjb250ZW50U3RyaW5nU2l6ZSk7CisKKyAgICBh
dXRvIHJldHVyblN0cmluZyA9IHN0ZDo6c3RyaW5nKGNvbnRlbnRCdWZmZXIuZ2V0KCkpOworICAg
IHJldHVyblN0cmluZy5lcmFzZShzdGQ6OnJlbW92ZV9pZihyZXR1cm5TdHJpbmcuYmVnaW4oKSwg
cmV0dXJuU3RyaW5nLmVuZCgpLCBpc3NwYWNlKSwgcmV0dXJuU3RyaW5nLmVuZCgpKTsKKworICAg
IGF1dG8gb2Zmc2V0ID0gcmV0dXJuU3RyaW5nLmZpbmQoIm1heERpZmZlcmVuY2U9Iik7CisgICAg
aWYgKG9mZnNldCAhPSBzdGQ6OnN0cmluZzo6bnBvcykKKyAgICAgICAgcmV0dXJuU3RyaW5nLmVy
YXNlKG9mZnNldCwgMTQpOworCisgICAgb2Zmc2V0ID0gcmV0dXJuU3RyaW5nLmZpbmQoInRvdGFs
UGl4ZWxzPSIpOworICAgIGlmIChvZmZzZXQgIT0gc3RkOjpzdHJpbmc6Om5wb3MpCisgICAgICAg
IHJldHVyblN0cmluZy5lcmFzZShvZmZzZXQsIDEyKTsKKworICAgIC8vIFN0cmlwIG91dCBhbnkg
cmVmZXJlbmNlIGZpbGUgbmFtZSBmcm9tIHRoZSBmdXp6aW5lc3Mgc3BlY2lmaWVyLgorICAgIC8v
IEZJWE1FOiBJbnN0ZWFkIG9mIHVzaW5nIHRoZSBmaXJzdCBmdXp6aW5lc3Mgc3BlY2lmaWVyIGZv
ciBhbGwgcmVmZXJlbmNlIGZpbGVzLCB0aGlzIGNvZGUKKyAgICAvLyBzaG91bGQgZmluZCB0aGUg
Y29ycmVjdCBvbmUgYmFzZWQgb24gdGhlIG5hbWUgdGhhdCBpcyBzdHJpcHBlZCBvdXQgYmVsb3cu
CisgICAgb2Zmc2V0ID0gcmV0dXJuU3RyaW5nLmZpbmQoIjoiKTsKKyAgICBpZiAob2Zmc2V0ICE9
IHN0ZDo6c3RyaW5nOjpucG9zKQorICAgICAgICByZXR1cm5TdHJpbmcgPSByZXR1cm5TdHJpbmcu
ZXJhc2UoMCwgb2Zmc2V0ICsgMSk7CisKKyAgICByZXR1cm4gcmV0dXJuU3RyaW5nOworfQorCiB9
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1JlZnRlc3RGdW5jdGlvbnMuaCBi
L1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvUmVmdGVzdEZ1bmN0aW9ucy5oCmluZGV4IDliNmZkNzk1
N2YwYjkwNTFjOTA0OWIwMzMzY2YxMDg5OWY1ZDkxNTMuLjgzYTVhNTY3N2I5MzVmNGU0M2ZjMDcy
OTgxNjBlNmE1NTg5NTg5OWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvUmVm
dGVzdEZ1bmN0aW9ucy5oCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvUmVmdGVzdEZ1bmN0
aW9ucy5oCkBAIC0yNSwxMSArMjUsMTQgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxz
dHJpbmc+CisKIHR5cGVkZWYgc3RydWN0IE9wYXF1ZUpTQ29udGV4dCogSlNHbG9iYWxDb250ZXh0
UmVmOwogCiBuYW1lc3BhY2UgV1RSIHsKIAogdm9pZCBzZW5kVGVzdFJlbmRlcmVkRXZlbnQoSlNH
bG9iYWxDb250ZXh0UmVmKTsKIGJvb2wgaGFzUmVmdGVzdFdhaXRBdHRyaWJ1dGUoSlNHbG9iYWxD
b250ZXh0UmVmKTsKK3N0ZDo6c3RyaW5nIGZ1enp5TWF0Y2hpbmdUb2xlcmFuY2UoSlNHbG9iYWxD
b250ZXh0UmVmKTsKIAogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCAwMjJiZTQzOTEzNThiOGQwOWE4
ZjdlOWQ3MGU3OWRlZWI2NDg4MDc1Li5jNDViY2RhYjBjZTI3OGM2NDg3Njg0ZjQ0MTZjMGFlOGRl
YmYxMjgxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtNDk5LDYgKzQ5OSw3IEBAIHZvaWQgSW5qZWN0
ZWRCdW5kbGU6OmJlZ2luVGVzdGluZyhXS0RpY3Rpb25hcnlSZWYgc2V0dGluZ3MsIEJlZ2luZ1Rl
c3RpbmdNb2RlIHRlCiAgICAgbV90aW1lb3V0ID0gU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcyh1
aW50NjRWYWx1ZShzZXR0aW5ncywgIlRpbWVvdXQiKSk7CiAgICAgbV9kdW1wSlNDb25zb2xlTG9n
SW5TdGRFcnIgPSBib29sZWFuVmFsdWUoc2V0dGluZ3MsICJEdW1wSlNDb25zb2xlTG9nSW5TdGRF
cnIiKTsKIAorICAgIG1fcGl4ZWxSZXN1bHRUb2xlcmFuY2UgPSAiIjsKICAgICBtX3BpeGVsUmVz
dWx0LmNsZWFyKCk7CiAgICAgbV9yZXBhaW50UmVjdHMuY2xlYXIoKTsKIApAQCAtNTYxLDggKzU2
MiwxMCBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpkb25lKCkKICAgICBhdXRvIGJvZHkgPSBhZG9w
dFdLKFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7CiAKICAgICBzZXRWYWx1ZShib2R5LCAi
UGl4ZWxSZXN1bHRJc1BlbmRpbmciLCBtX3BpeGVsUmVzdWx0SXNQZW5kaW5nKTsKKyAgICBzZXRW
YWx1ZShib2R5LCAiUGl4ZWxSZXN1bHRUb2xlcmFuY2UiLCBtX3BpeGVsUmVzdWx0VG9sZXJhbmNl
KTsKICAgICBpZiAoIW1fcGl4ZWxSZXN1bHRJc1BlbmRpbmcpCiAgICAgICAgIHNldFZhbHVlKGJv
ZHksICJQaXhlbFJlc3VsdCIsIG1fcGl4ZWxSZXN1bHQpOworCiAgICAgc2V0VmFsdWUoYm9keSwg
IlJlcGFpbnRSZWN0cyIsIG1fcmVwYWludFJlY3RzKTsKICAgICBzZXRWYWx1ZShib2R5LCAiQXVk
aW9SZXN1bHQiLCBtX2F1ZGlvUmVzdWx0KTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCmluZGV4IGNmYmFkMDQ5MGMx
NmI5NzYyY2MxMjlhMTYyOWJjNmZkMDg0YmQ4YjguLjEyODZhMTI2M2I4MWQ5ZDhiODQxOTBhMDdl
MjIyM2NlMTA1NDNmYzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKQEAgLTcwLDYgKzcwLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZG9uZSgpOwogICAgIHZvaWQgc2V0QXVkaW9SZXN1bHQoV0tEYXRhUmVmIGF1ZGlv
RGF0YSkgeyBtX2F1ZGlvUmVzdWx0ID0gYXVkaW9EYXRhOyB9CiAgICAgdm9pZCBzZXRQaXhlbFJl
c3VsdChXS0ltYWdlUmVmIGltYWdlKSB7IG1fcGl4ZWxSZXN1bHQgPSBpbWFnZTsgbV9waXhlbFJl
c3VsdElzUGVuZGluZyA9IGZhbHNlOyB9CisgICAgdm9pZCBzZXRQaXhlbFJlc3VsdFRvbGVyYW5j
ZShjb25zdCBTdHJpbmcmIHRvbGVyYW5jZSkgeyBtX3BpeGVsUmVzdWx0VG9sZXJhbmNlID0gdG9s
ZXJhbmNlOyB9CiAgICAgdm9pZCBzZXRQaXhlbFJlc3VsdElzUGVuZGluZyhib29sIGlzUGVuZGlu
ZykgeyBtX3BpeGVsUmVzdWx0SXNQZW5kaW5nID0gaXNQZW5kaW5nOyB9CiAgICAgdm9pZCBzZXRS
ZXBhaW50UmVjdHMoV0tBcnJheVJlZiByZWN0cykgeyBtX3JlcGFpbnRSZWN0cyA9IHJlY3RzOyB9
CiAKQEAgLTE5OCw2ICsxOTksNyBAQCBwcml2YXRlOgogCiAgICAgV0tSZXRhaW5QdHI8V0tEYXRh
UmVmPiBtX2F1ZGlvUmVzdWx0OwogICAgIFdLUmV0YWluUHRyPFdLSW1hZ2VSZWY+IG1fcGl4ZWxS
ZXN1bHQ7CisgICAgU3RyaW5nIG1fcGl4ZWxSZXN1bHRUb2xlcmFuY2U7CiAgICAgV0tSZXRhaW5Q
dHI8V0tBcnJheVJlZj4gbV9yZXBhaW50UmVjdHM7CiAKICAgICBWZWN0b3I8U3RyaW5nPiBtX2Fs
bG93ZWRIb3N0czsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAppbmRleCAzYzc0MTI3Y2ZiZTBkYTQ2
M2Y3MWNhNjAwYTVjYWMzMDg2NmJmNGEyLi4wOGFlNjg4OTJlNWNiNDhiYjU0ZDFiMWRhZGU2ZDY1
OGQ3ZTQwODAzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCkBAIC04MjUsNiArODI1LDggQEAg
dm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmR1bXAoKQogICAgICAgICBpbmplY3RlZEJ1bmRsZS5k
dW1wQmFja0ZvcndhcmRMaXN0c0ZvckFsbFBhZ2VzKHN0cmluZ0J1aWxkZXIpOwogCiAgICAgaWYg
KGluamVjdGVkQnVuZGxlLnNob3VsZER1bXBQaXhlbHMoKSAmJiBpbmplY3RlZEJ1bmRsZS50ZXN0
UnVubmVyKCktPnNob3VsZER1bXBQaXhlbHMoKSkgeworICAgICAgICBpbmplY3RlZEJ1bmRsZS5z
ZXRQaXhlbFJlc3VsdFRvbGVyYW5jZShTdHJpbmc6OmZyb21VVEY4KGZ1enp5TWF0Y2hpbmdUb2xl
cmFuY2UoV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KGZyYW1lKSkuY19zdHIoKSkp
OworCiAgICAgICAgIGJvb2wgc2hvdWxkQ3JlYXRlU25hcHNob3QgPSBpbmplY3RlZEJ1bmRsZS50
ZXN0UnVubmVyKCktPmlzUHJpbnRpbmcoKTsKICAgICAgICAgaWYgKHNob3VsZENyZWF0ZVNuYXBz
aG90KSB7CiAgICAgICAgICAgICBXS1NuYXBzaG90T3B0aW9ucyBvcHRpb25zID0ga1dLU25hcHNo
b3RPcHRpb25zU2hhcmVhYmxlOwpAQCAtODM3LDcgKzgzOSw2IEBAIHZvaWQgSW5qZWN0ZWRCdW5k
bGVQYWdlOjpkdW1wKCkKICAgICAgICAgICAgICAgICBpZiAoaW5qZWN0ZWRCdW5kbGUudGVzdFJ1
bm5lcigpLT5zaG91bGREdW1wU2VsZWN0aW9uUmVjdCgpKQogICAgICAgICAgICAgICAgICAgICBv
cHRpb25zIHw9IGtXS1NuYXBzaG90T3B0aW9uc1BhaW50U2VsZWN0aW9uUmVjdGFuZ2xlOwogICAg
ICAgICAgICAgfQotCiAgICAgICAgICAgICBpbmplY3RlZEJ1bmRsZS5zZXRQaXhlbFJlc3VsdChh
ZG9wdFdLKFdLQnVuZGxlUGFnZUNyZWF0ZVNuYXBzaG90V2l0aE9wdGlvbnMobV9wYWdlLCBzbmFw
c2hvdFJlY3QsIG9wdGlvbnMpKS5nZXQoKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
aW5qZWN0ZWRCdW5kbGUuc2V0UGl4ZWxSZXN1bHRJc1BlbmRpbmcodHJ1ZSk7CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IDM0NTA2OTMwMDk5MmZiM2UwNzEz
ZTgzMmM0MTdmYzUxYzA4OGYwOGMuLmE1OTRiY2Q2MTRiZDRkMTU2ZWM5ZmY3NmE0MzJiY2YyYmYx
MzA5ZDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24u
Y3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0y
ODYsNiArMjg2LDkgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZHVtcEF1ZGlvKFdLRGF0YVJlZiBh
dWRpb0RhdGEpCiAKIGJvb2wgVGVzdEludm9jYXRpb246OmNvbXBhcmVBY3R1YWxIYXNoVG9FeHBl
Y3RlZEFuZER1bXBSZXN1bHRzKGNvbnN0IGNoYXIgYWN0dWFsSGFzaFszM10pCiB7CisgICAgaWYg
KG1fcGl4ZWxSZXN1bHRUb2xlcmFuY2UgJiYgV0tTdHJpbmdHZXRMZW5ndGgobV9waXhlbFJlc3Vs
dFRvbGVyYW5jZS5nZXQoKSkpCisgICAgICAgIGZwcmludGYoc3Rkb3V0LCAiUGl4ZWwtVG9sZXJh
bmNlOiAlc1xuIiwgdG9TVEQobV9waXhlbFJlc3VsdFRvbGVyYW5jZS5nZXQoKSkuY19zdHIoKSk7
CisKICAgICAvLyBDb21wdXRlIHRoZSBoYXNoIG9mIHRoZSBiaXRtYXAgY29udGV4dCBwaXhlbHMK
ICAgICBmcHJpbnRmKHN0ZG91dCwgIlxuQWN0dWFsSGFzaDogJXNcbiIsIGFjdHVhbEhhc2gpOwog
CkBAIC0zMjIsOCArMzI1LDEwIEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNz
YWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lCiAgICAgaWYgKFdL
U3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJEb25lIikpIHsKICAgICAg
ICAgYXV0byBtZXNzYWdlQm9keURpY3Rpb25hcnkgPSBkaWN0aW9uYXJ5VmFsdWUobWVzc2FnZUJv
ZHkpOwogICAgICAgICBtX3BpeGVsUmVzdWx0SXNQZW5kaW5nID0gYm9vbGVhblZhbHVlKG1lc3Nh
Z2VCb2R5RGljdGlvbmFyeSwgIlBpeGVsUmVzdWx0SXNQZW5kaW5nIik7CisgICAgICAgIG1fcGl4
ZWxSZXN1bHRUb2xlcmFuY2UgPSBzdHJpbmdWYWx1ZShtZXNzYWdlQm9keURpY3Rpb25hcnksICJQ
aXhlbFJlc3VsdFRvbGVyYW5jZSIpOwogICAgICAgICBpZiAoIW1fcGl4ZWxSZXN1bHRJc1BlbmRp
bmcpIHsKICAgICAgICAgICAgIG1fcGl4ZWxSZXN1bHQgPSBzdGF0aWNfY2FzdDxXS0ltYWdlUmVm
Pih2YWx1ZShtZXNzYWdlQm9keURpY3Rpb25hcnksICJQaXhlbFJlc3VsdCIpKTsKKwogICAgICAg
ICAgICAgQVNTRVJUKCFtX3BpeGVsUmVzdWx0IHx8IG1fZHVtcFBpeGVscyk7CiAgICAgICAgIH0K
ICAgICAgICAgbV9yZXBhaW50UmVjdHMgPSBzdGF0aWNfY2FzdDxXS0FycmF5UmVmPih2YWx1ZSht
ZXNzYWdlQm9keURpY3Rpb25hcnksICJSZXBhaW50UmVjdHMiKSk7CmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmggYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmgKaW5kZXggZGYzOTkzMmEwOGMxMTY3OTY3NTdkYjljYjY2Zjgz
N2RlNjI1ODU4NC4uODZjYjBmYTNjODJlY2U1MTg0ZmQ5ZjJjYmM3M2UyOWE2MGY5YzY5OSAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaApAQCAtMTc0LDYgKzE3NCw3IEBA
IHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc2F2ZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogICAg
IFdLUmV0YWluUHRyPFdLRGF0YVJlZj4gbV9hdWRpb1Jlc3VsdDsKICAgICBXS1JldGFpblB0cjxX
S0ltYWdlUmVmPiBtX3BpeGVsUmVzdWx0OworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBt
X3BpeGVsUmVzdWx0VG9sZXJhbmNlOwogICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IG1fcmVw
YWludFJlY3RzOwogICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxVSVNjcmlwdENvbnRleHQ+IG1f
VUlTY3JpcHRDb250ZXh0OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDhlMzNmMWI1MjZiNDJiZTYwMDY4MmQyODM0MzE1MzNh
NWU0ZjY1ZmMuLjMyZjFmMjViN2QwN2E1ZGU0ZmM3MWY4YjQyMzAxMWQzYTI0NzUwMDUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNCBAQAorMjAyMS0xMC0yMSAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29u
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIFdQVCdzIHBlci10ZXN0IHJl
ZnRlc3QgZnV6enkgc3BlY2lmaWNhdGlvbiB0byBXZWJLaXRUZXN0UnVubmVyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzIwMTAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6
IE1hcmsgc29tZSB0ZXN0cyBhcyBuZXdseSBwYXNzaW5nLgorICAgICAgICAqIHBsYXRmb3JtL2lv
cy13azIvVGVzdEV4cGVjdGF0aW9uczogTWFyayBzb21lIHRlc3RzIGFzIGZhaWxpbmcsIGJlY2F1
c2UgdGhlCisgICAgICAgIHBpeGVsIHRvbGVyYW5jZSBuZWVkcyB0byBiZSBpbmNyZWFzZWQgaW4g
V1BUIGZvciBpT1MgcGxhdGZvcm1zLgorCiAyMDIxLTEwLTIwICBBbnR0aSBLb2l2aXN0byAgPGFu
dHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBbIGlPUyBdIGZhc3QvaW5saW5lL2lubGluZS1iYWNr
Z3JvdW5kLWNsaXAtdGV4dC1tdWx0aWxpbmUuaHRtbCBpcyBpbWFnZSBmYWlsaW5nCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVj
dGF0aW9ucwppbmRleCA1NzgwYmY1ZGY5MjExZWIyNjExZTFiYmU1ZGEwMDMyNTZjYmFhMGJiLi4z
MTgwZWIwZDQ0YjJkNmYyN2VjZDg0MTQyMGYwYjkzOGY4NWIyZjczIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlv
bnMKQEAgLTQwNjIsNyArNDA2Miw2IEBAIHdlYmtpdC5vcmcvYi8yMzAwODAgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtCiB3ZWJraXQu
b3JnL2IvMjMwMDgwIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFu
c2Zvcm1zL3RyYW5zZm9ybS10cmFuc2xhdGUtYmFja2dyb3VuZC0wMDEuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIzMDA4MCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tdHJhbnNsYXRlLWJhY2tncm91bmQt
MDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMzAwODAgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLXRy
YW5zbGF0ZXgtMDA2Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzAw
ODAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJh
bnNmb3JtM2QtbWF0cml4M2QtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5v
cmcvYi8yMzAwODAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5z
Zm9ybXMvdHJhbnNmb3JtM2QtcGVyc3BlY3RpdmUtMDAyLmh0bWwgWyBQYXNzIEltYWdlT25seUZh
aWx1cmUgXQogd2Via2l0Lm9yZy9iLzIzMDA4MCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0zZC1wZXJzcGVjdGl2ZS0wMDMuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIzMDA4MCBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0zZC1wZXJzcGVjdGl2
ZS0wMDQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQpAQCAtNDUyNSwyMSArNDUyNCwxMCBAQCB3
ZWJraXQub3JnL2IvMjE0NDU1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1jb2xvci1hZGp1c3QvcmVuZGVyaQogd2Via2l0Lm9yZy9iLzIxNDQ1NiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaW1hZ2VzL2NvbmljLWdyYWRpZW50LWFuZ2xlLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMTQ0NTYgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy9jb25pYy1ncmFkaWVudC1hbmdsZS1u
ZWdhdGl2ZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjE0NDU2IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMvY29uaWMtZ3JhZGll
bnQtY2VudGVyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMTQ0NTYg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy9pbWFnZS1vcmll
bnRhdGlvbi9pbWFnZS1vcmllbnRhdGlvbi1iYWNrZ3JvdW5kLWltYWdlLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMTQ0NTYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWltYWdlcy9pbWFnZS1vcmllbnRhdGlvbi9pbWFnZS1vcmllbnRhdGlv
bi1iYWNrZ3JvdW5kLXByb3BlcnRpZXMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0
Lm9yZy9iLzIxNDQ1NiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaW1h
Z2VzL2ltYWdlLW9yaWVudGF0aW9uL2ltYWdlLW9yaWVudGF0aW9uLWRlZmF1bHQuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIxNDQ1NiBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtaW1hZ2VzL2ltYWdlLW9yaWVudGF0aW9uL2ltYWdlLW9yaWVu
dGF0aW9uLWZyb20taW1hZ2UtY29tcG9zaXRlZC1keW5hbWljMS5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjE0NDU2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1pbWFnZXMvaW1hZ2Utb3JpZW50YXRpb24vaW1hZ2Utb3JpZW50YXRpb24tZnJv
bS1pbWFnZS1jb21wb3NpdGVkLWR5bmFtaWMyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdl
YmtpdC5vcmcvYi8yMTQ0NTYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LWltYWdlcy9pbWFnZS1vcmllbnRhdGlvbi9pbWFnZS1vcmllbnRhdGlvbi1mcm9tLWltYWdlLWNv
bXBvc2l0ZWQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIxNDQ1NiBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaW1hZ2VzL2ltYWdlLW9yaWVu
dGF0aW9uL2ltYWdlLW9yaWVudGF0aW9uLWZyb20taW1hZ2UtY29udGVudC1pbWFnZXMuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIxNDQ1NiBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaW1hZ2VzL2ltYWdlLW9yaWVudGF0aW9uL2ltYWdlLW9y
aWVudGF0aW9uLWZyb20taW1hZ2UtZHluYW1pYzEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQot
d2Via2l0Lm9yZy9iLzIxNDQ1NiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtaW1hZ2VzL2ltYWdlLW9yaWVudGF0aW9uL2ltYWdlLW9yaWVudGF0aW9uLWZyb20taW1hZ2Ut
ZHluYW1pYzIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIxNDQ1NiBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaW1hZ2VzL2ltYWdlLW9yaWVu
dGF0aW9uL2ltYWdlLW9yaWVudGF0aW9uLWZyb20taW1hZ2UtZW1iZWRkZWQtY29udGVudC5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjE0NDU2IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMvaW1hZ2Utb3JpZW50YXRpb24vaW1hZ2Ut
b3JpZW50YXRpb24tZnJvbS1pbWFnZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMjE0NDU2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFn
ZXMvaW1hZ2Utb3JpZW50YXRpb24vaW1hZ2Utb3JpZW50YXRpb24tbGlzdC1zdHlsZS1pbWFnZS5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjE0NDU2IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMvaW1hZ2Utb3JpZW50YXRpb24vaW1h
Z2Utb3JpZW50YXRpb24tbm9uZS1jb250ZW50LWltYWdlcy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCi13ZWJraXQub3JnL2IvMjE0NDU2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1pbWFnZXMvaW1hZ2Utb3JpZW50YXRpb24vaW1hZ2Utb3JpZW50YXRpb24tbm9uZS5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjE0NDU2IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMvaW1hZ2Utb3JpZW50YXRpb24vaW1h
Z2Utb3JpZW50YXRpb24tbm9uZS1pbWFnZS1kb2N1bWVudC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCiB3ZWJraXQub3JnL2IvMjE0NDU2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1pbWFnZXMvaW1hZ2Utb3JpZW50YXRpb24vc3ZnLWltYWdlLW9yaWVudGF0aW9uLWFz
cGVjdC1yYXRpby5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjE0NDU2
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMvaW1hZ2Utb3Jp
ZW50YXRpb24vc3ZnLWltYWdlLW9yaWVudGF0aW9uLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
IHdlYmtpdC5vcmcvYi8yMTQ0NTYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLWltYWdlcy9pbWFnZS1vcmllbnRhdGlvbi9zdmctaW1hZ2Utb3JpZW50YXRpb24tbm9uZS5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2sy
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYjA0MzU3OWI4YWM4MWIzYWEyMGI5ZGQ4MzgwMjkzYTRk
ZDI3MzI0NS4uMDdlNWVmNGM0M2U5MjliMDY4MDYyODRiYjJiNjUxNWIzZjRkMzgyNCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjIzNCwz
ICsyMjM0LDE2IEBAIHdlYmtpdC5vcmcvYi8yMzE3MTQgZmFzdC9zY3JvbGxpbmcvaW9zL2NsaWNr
LWV2ZW50cy1kdXJpbmctbW9tZW50dW0tc2Nyb2xsLWluLW92CiB3ZWJraXQub3JnL2IvMjMxNzgw
IFsgRGVidWcgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9zaW11bGNh
c3QvYmFzaWMuaHR0cHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8yMzIw
NDggaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9hdHRyaWJ1dGlvbi1jb252ZXJz
aW9uLXRocm91Z2gtaW1hZ2UtcmVkaXJlY3QtaW4tbmV3LXdpbmRvdy5odG1sIFsgUGFzcyBDcmFz
aCBdCisKK3dlYmtpdC5vcmcvYi8yMzIwNzIgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLWltYWdlcy9pbWFnZS1vcmllbnRhdGlvbi9pbWFnZS1vcmllbnRhdGlvbi1iYWNr
Z3JvdW5kLWltYWdlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMzIw
NzIgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy9pbWFnZS1v
cmllbnRhdGlvbi9pbWFnZS1vcmllbnRhdGlvbi1kZWZhdWx0Lmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KK3dlYmtpdC5vcmcvYi8yMzIwNzIgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLWltYWdlcy9pbWFnZS1vcmllbnRhdGlvbi9pbWFnZS1vcmllbnRhdGlvbi1mcm9t
LWltYWdlLWNvbXBvc2l0ZWQtZHluYW1pYzEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Vi
a2l0Lm9yZy9iLzIzMjA3MiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
aW1hZ2VzL2ltYWdlLW9yaWVudGF0aW9uL2ltYWdlLW9yaWVudGF0aW9uLWZyb20taW1hZ2UtY29t
cG9zaXRlZC1keW5hbWljMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2Iv
MjMyMDcyIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMvaW1h
Z2Utb3JpZW50YXRpb24vaW1hZ2Utb3JpZW50YXRpb24tZnJvbS1pbWFnZS1jb21wb3NpdGVkLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMzIwNzIgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy9pbWFnZS1vcmllbnRhdGlvbi9pbWFn
ZS1vcmllbnRhdGlvbi1mcm9tLWltYWdlLWR5bmFtaWMxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KK3dlYmtpdC5vcmcvYi8yMzIwNzIgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLWltYWdlcy9pbWFnZS1vcmllbnRhdGlvbi9pbWFnZS1vcmllbnRhdGlvbi1mcm9tLWlt
YWdlLWR5bmFtaWMyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMzIw
NzIgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy9pbWFnZS1v
cmllbnRhdGlvbi9pbWFnZS1vcmllbnRhdGlvbi1mcm9tLWltYWdlLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMzIwNzIgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWltYWdlcy9pbWFnZS1vcmllbnRhdGlvbi9pbWFnZS1vcmllbnRhdGlvbi1s
aXN0LXN0eWxlLWltYWdlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8y
MzIwNzIgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy9pbWFn
ZS1vcmllbnRhdGlvbi9pbWFnZS1vcmllbnRhdGlvbi1ub25lLWltYWdlLWRvY3VtZW50Lmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMzIwNzIgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy9pbWFnZS1vcmllbnRhdGlvbi9pbWFnZS1v
cmllbnRhdGlvbi1ub25lLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8y
MzIwNzIgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMv
dHJhbnNmb3JtM2QtbWF0cml4M2QtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>