<?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>166484</bug_id>
          
          <creation_ts>2016-12-26 14:17:13 -0800</creation_ts>
          <short_desc>Add the support for ShadowRoot.delegateFocus</short_desc>
          <delta_ts>2020-07-27 18:19:46 -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>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>macOS 10.12</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=203869</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=214859</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>202432</dependson>
    
    <dependson>202497</dependson>
          <blocked>148695</blocked>
    
    <blocked>202875</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Damiaan Dufaux">damiaan</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jan</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>rakina</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1262777</commentid>
    <comment_count>0</comment_count>
      <attachid>297772</attachid>
    <who name="Damiaan Dufaux">damiaan</who>
    <bug_when>2016-12-26 14:17:13 -0800</bug_when>
    <thetext>Created attachment 297772
A web page to reproduce the problem

Overview: As specified in the shadow dom specification (http://w3c.github.io/webcomponents/spec/shadow/#focus): &quot;A shadow host can delegate focus to its shadow root by assigning a boolean delegatesFocus flag to be true in ShadowRootInit dictionary&quot;. But this feature is not working.

Steps to Reproduce:
 - open the attached file (delegateFocus.html) in the latest nightly build
 - click on the text &quot;Hello world&quot;

Actual Results: nothing happens

Expected Results: The input field should receive focus.

Build date: December 20, 2016 5:14 PM GMT
Platform: macOS Sierra 10.12.2 (16C67)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1262874</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-12-27 15:39:54 -0800</bug_when>
    <thetext>&lt;rdar://problem/29816058&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561081</commentid>
    <comment_count>2</comment_count>
      <attachid>376241</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-08-14 00:14:07 -0700</bug_when>
    <thetext>Created attachment 376241
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561082</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-14 00:15:38 -0700</bug_when>
    <thetext>Attachment 376241 did not pass style-queue:


ERROR: Source/WebCore/dom/Element.cpp:2837:  &apos;newTarget&apos; is incorrectly named. It should be named &apos;protectedThis&apos;.  [readability/naming/protected] [4]
Total errors found: 1 in 30 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579368</commentid>
    <comment_count>4</comment_count>
      <attachid>380813</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-10-11 20:18:25 -0700</bug_when>
    <thetext>Created attachment 380813
Adds the support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579388</commentid>
    <comment_count>5</comment_count>
      <attachid>380813</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-10-11 22:20:17 -0700</bug_when>
    <thetext>Comment on attachment 380813
Adds the support

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

&gt; Source/WebCore/dom/ShadowRoot.cpp:59
&gt; +ShadowRoot::ShadowRoot(Document&amp; document, ShadowRootMode type, bool delegatesFocus)

Please use enum in the interface. The member can be bool.

&gt; Source/WebCore/dom/ShadowRoot.h:45
&gt; +    enum class FocusDelegation { Yes, No };

You even have one, you are just not using it!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579389</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-10-11 22:40:35 -0700</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #5)
&gt; Comment on attachment 380813 [details]
&gt; Adds the support
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=380813&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/ShadowRoot.cpp:59
&gt; &gt; +ShadowRoot::ShadowRoot(Document&amp; document, ShadowRootMode type, bool delegatesFocus)
&gt; 
&gt; Please use enum in the interface. The member can be bool.

Yeah, I guess I added enum after I had added this argument!

&gt; 
&gt; &gt; Source/WebCore/dom/ShadowRoot.h:45
&gt; &gt; +    enum class FocusDelegation { Yes, No };
&gt; 
&gt; You even have one, you are just not using it!

Will do. I also forgot to specify the width again (uint8_t) :( Will fix that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579397</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-10-11 23:09:06 -0700</bug_when>
    <thetext>Committed r251043: &lt;https://trac.webkit.org/changeset/251043&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579405</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-10-11 23:49:01 -0700</bug_when>
    <thetext>Landed the windows build fix in https://trac.webkit.org/changeset/251044.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584359</commentid>
    <comment_count>9</comment_count>
    <who name="Rakina Zata Amni">rakina</who>
    <bug_when>2019-10-27 17:04:55 -0700</bug_when>
    <thetext>FYI there&apos;s one new addition for the spec, to keep the focused element if it&apos;s a flat-tree descendant of the host: https://github.com/whatwg/html/pull/5039</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587582</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-05 16:24:54 -0800</bug_when>
    <thetext>(In reply to Rakina Zata Amni from comment #9)
&gt; FYI there&apos;s one new addition for the spec, to keep the focused element if
&gt; it&apos;s a flat-tree descendant of the host:
&gt; https://github.com/whatwg/html/pull/5039

This kind of already works in WebKit but fixing it fully in https://bugs.webkit.org/show_bug.cgi?id=203869.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>297772</attachid>
            <date>2016-12-26 14:17:13 -0800</date>
            <delta_ts>2016-12-26 14:17:13 -0800</delta_ts>
            <desc>A web page to reproduce the problem</desc>
            <filename>delegateFocus.html</filename>
            <type>text/html</type>
            <size>565</size>
            <attacher name="Damiaan Dufaux">damiaan</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KCTx0aXRsZT5kZWxlZ2F0ZUZvY3VzIGluIHNo
YWRvdyBkb208L3RpdGxlPgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWNsYXNz
IHhGb2N1cyBleHRlbmRzIEhUTUxFbGVtZW50IHsKCQkJY29uc3RydWN0b3IoKSB7CgkJCQlzdXBl
cigpCgoJCQkJY29uc3QgcGFyYWdyYXBoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpCgkJ
CQlwYXJhZ3JhcGguaW5uZXJUZXh0ID0gIkhlbGxvIHdvcmxkIgoKCQkgICAgICAgIGNvbnN0IHNo
YWRvdyA9IHRoaXMuYXR0YWNoU2hhZG93KHttb2RlOiAnb3BlbicsIGRlbGVnYXRlc0ZvY3VzOiB0
cnVlfSkKCQkgICAgICAgIHNoYWRvdy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdpbnB1dCcpKQoJCSAgICAgICAgc2hhZG93LmFwcGVuZENoaWxkKHBhcmFncmFwaCkKCQkJfQoJ
CX0KCgkJY3VzdG9tRWxlbWVudHMuZGVmaW5lKCd4LWZvY3VzJywgeEZvY3VzKQoJPC9zY3JpcHQ+
CjwvaGVhZD4KPGJvZHk+Cgk8eC1mb2N1cz48L3gtZm9jdXM+CjwvYm9keT4KPC9odG1sPg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376241</attachid>
            <date>2019-08-14 00:14:07 -0700</date>
            <delta_ts>2019-10-11 20:18:24 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>wip166484.patch</filename>
            <type>text/plain</type>
            <size>54358</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCShyZXZpc2lvbiAyNDg2
MzApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTI0Myw4ICsxMjQzLDE3IEBACiAgICAgcmV0dXJuIGxpbmtNYXRjaFR5cGU7CiB9
CiAKLXN0YXRpYyBib29sIGlzRnJhbWVGb2N1c2VkKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCitz
dGF0aWMgaW5saW5lIGJvb2wgaXNFbGVtZW50Q29uc2lkZXJlZEZvY3VzZWQoY29uc3QgRWxlbWVu
dCYgZWxlbWVudCkKIHsKKyAgICBpZiAoZWxlbWVudC5mb2N1c2VkKCkpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgYXV0byogc2hhZG93Um9vdCA9IGVsZW1lbnQuc2hhZG93Um9vdCgpOwor
ICAgIHJldHVybiBzaGFkb3dSb290ICYmIHNoYWRvd1Jvb3QtPmNvbnRhaW5zRGVsZWdhdGVkRm9j
dXMoKTsKK30KKworc3RhdGljIGlubGluZSBib29sIGlzRnJhbWVGb2N1c2VkKGNvbnN0IEVsZW1l
bnQmIGVsZW1lbnQpCit7CiAgICAgcmV0dXJuIGVsZW1lbnQuZG9jdW1lbnQoKS5mcmFtZSgpICYm
IGVsZW1lbnQuZG9jdW1lbnQoKS5mcmFtZSgpLT5zZWxlY3Rpb24oKS5pc0ZvY3VzZWRBbmRBY3Rp
dmUoKTsKIH0KIApAQCAtMTI1Miw3ICsxMjYxLDggQEAKIHsKICAgICBpZiAoSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpmb3JjZVBzZXVkb1N0YXRlKGVsZW1lbnQsIENTU1NlbGVjdG9yOjpQc2V1
ZG9DbGFzc0ZvY3VzKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGVsZW1lbnQu
Zm9jdXNlZCgpICYmIGlzRnJhbWVGb2N1c2VkKGVsZW1lbnQpOworCisgICAgcmV0dXJuIGlzRWxl
bWVudENvbnNpZGVyZWRGb2N1c2VkKGVsZW1lbnQpICYmIGlzRnJhbWVGb2N1c2VkKGVsZW1lbnQp
OwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyNDg2MzApCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MCw3
ICsyNzAsMTMgQEAKIAogYm9vbCBFbGVtZW50Ojppc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJk
RXZlbnQqKSBjb25zdAogewotICAgIHJldHVybiBpc0ZvY3VzYWJsZSgpICYmIHRhYkluZGV4KCkg
Pj0gMDsKKyAgICBpZiAoIWlzRm9jdXNhYmxlKCkgfHwgdGFiSW5kZXgoKSA8IDApCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAoYXV0byogcm9vdCA9IHNoYWRvd1Jvb3QoKSkgeworICAg
ICAgICBpZiAocm9vdC0+ZGVsZWdhdGVzRm9jdXMoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgRWxlbWVudDo6aXNNb3VzZUZv
Y3VzYWJsZSgpIGNvbnN0CkBAIC02NzAsNiArNjc2LDE0IEBACiAgICAgZG9jdW1lbnQoKS51c2Vy
QWN0aW9uRWxlbWVudHMoKS5zZXRGb2N1c2VkKCp0aGlzLCBmbGFnKTsKICAgICBpbnZhbGlkYXRl
U3R5bGVGb3JTdWJ0cmVlKCk7CiAKKyAgICAvLyBEb24ndCB2aXNpdCBzbG90dGVkIGVsZW1lbnRz
IG9uIHB1cnBvc2UuCisgICAgYm9vbCBkZWxlZ2F0aW5nRm9jdXMgPSB0cnVlOworICAgIGZvciAo
YXV0byogcm9vdCA9IGNvbnRhaW5pbmdTaGFkb3dSb290KCk7IHJvb3Q7IHJvb3QgPSByb290LT5o
b3N0KCktPmNvbnRhaW5pbmdTaGFkb3dSb290KCkpIHsKKyAgICAgICAgaWYgKCFyb290LT5kZWxl
Z2F0ZXNGb2N1cygpKQorICAgICAgICAgICAgZGVsZWdhdGluZ0ZvY3VzID0gZmFsc2U7CisgICAg
ICAgIHJvb3QtPnNldENvbnRhaW5zRGVsZWdhdGVkRm9jdXMoZmxhZyAmJiBkZWxlZ2F0aW5nRm9j
dXMpOworICAgIH0KKwogICAgIGZvciAoRWxlbWVudCogZWxlbWVudCA9IHRoaXM7IGVsZW1lbnQ7
IGVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50SW5Db21wb3NlZFRyZWUoKSkKICAgICAg
ICAgZWxlbWVudC0+c2V0SGFzRm9jdXNXaXRoaW4oZmxhZyk7CiB9CkBAIC0yMjY3LDcgKzIyODEs
NyBAQAogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKICAg
ICBpZiAoaW5pdC5tb2RlID09IFNoYWRvd1Jvb3RNb2RlOjpVc2VyQWdlbnQpCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKLSAgICBhdXRvIHNoYWRvdyA9IFNoYWRvd1Jv
b3Q6OmNyZWF0ZShkb2N1bWVudCgpLCBpbml0Lm1vZGUpOworICAgIGF1dG8gc2hhZG93ID0gU2hh
ZG93Um9vdDo6Y3JlYXRlKGRvY3VtZW50KCksIGluaXQubW9kZSwgaW5pdC5kZWxlZ2F0ZXNGb2N1
cyk7CiAgICAgYXV0byYgcmVzdWx0ID0gc2hhZG93LmdldCgpOwogICAgIGFkZFNoYWRvd1Jvb3Qo
V1RGTW92ZShzaGFkb3cpKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMjgyMCwxMCArMjgzNCwz
MSBAQAogICAgIGlmICghaXNDb25uZWN0ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYg
KGRvY3VtZW50KCkuZm9jdXNlZEVsZW1lbnQoKSA9PSB0aGlzKSB7Ci0gICAgICAgIGlmIChkb2N1
bWVudCgpLnBhZ2UoKSkKLSAgICAgICAgICAgIGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5j
bGllbnQoKS5lbGVtZW50RGlkUmVmb2N1cygqdGhpcyk7CisgICAgUmVmUHRyPEVsZW1lbnQ+IG5l
d1RhcmdldCA9IHRoaXM7CisgICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWYodGhpcy0+ZG9jdW1l
bnQoKSk7CiAKKyAgICBpZiAoZG9jdW1lbnQtPmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpKSB7Cisg
ICAgICAgIGRvY3VtZW50LT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisKKyAgICAgICAgaWYgKGF1
dG8qIHJvb3QgPSBzaGFkb3dSb290KCkpIHsKKyAgICAgICAgICAgIGlmIChyb290LT5kZWxlZ2F0
ZXNGb2N1cygpKSB7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQt
PmZyYW1lKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZS0+
cGFnZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvKiBlbGVtZW50ID0gcGFnZS0+
Zm9jdXNDb250cm9sbGVyKCkuZmluZEZpcnN0Rm9jdXNhYmxlRWxlbWVudEluU2hhZG93Um9vdCgq
cm9vdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICAgICAgbmV3VGFy
Z2V0ID0gZWxlbWVudDsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCZu
ZXdUYXJnZXQtPmRvY3VtZW50KCkgPT0gZG9jdW1lbnQucHRyKCkpOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorCisgICAgaWYgKGRvY3VtZW50LT5mb2N1c2VkRWxlbWVudCgpID09IG5ld1RhcmdldCkgewor
ICAgICAgICBpZiAoZG9jdW1lbnQtPnBhZ2UoKSkKKyAgICAgICAgICAgIGRvY3VtZW50LT5wYWdl
KCktPmNocm9tZSgpLmNsaWVudCgpLmVsZW1lbnREaWRSZWZvY3VzKCpuZXdUYXJnZXQpOworCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI4MzAsMjYgKzI4NjUsMjMgQEAKICAgICAvLyBJ
ZiB0aGUgc3R5bGVzaGVldHMgaGF2ZSBhbHJlYWR5IGJlZW4gbG9hZGVkIHdlIGNhbiByZWxpYWJs
eSBjaGVjayBpc0ZvY3VzYWJsZS4KICAgICAvLyBJZiBub3QsIHdlIGNvbnRpbnVlIGFuZCBzZXQg
dGhlIGZvY3VzZWQgbm9kZSBvbiB0aGUgZm9jdXMgY29udHJvbGxlciBiZWxvdyBzbwogICAgIC8v
IHRoYXQgaXQgY2FuIGJlIHVwZGF0ZWQgc29vbiBhZnRlciBhdHRhY2guIAotICAgIGlmIChkb2N1
bWVudCgpLmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpKSB7Ci0gICAgICAgIGRvY3VtZW50KCkudXBk
YXRlU3R5bGVJZk5lZWRlZCgpOwotICAgICAgICBpZiAoIWlzRm9jdXNhYmxlKCkpCisgICAgaWYg
KGRvY3VtZW50LT5oYXZlU3R5bGVzaGVldHNMb2FkZWQoKSkgeworICAgICAgICBpZiAoIW5ld1Rh
cmdldC0+aXNGb2N1c2FibGUoKSB8fCAmbmV3VGFyZ2V0LT5kb2N1bWVudCgpICE9IGRvY3VtZW50
LnB0cigpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghc3VwcG9ydHNG
b2N1cygpKQorICAgIGlmICghbmV3VGFyZ2V0LT5zdXBwb3J0c0ZvY3VzKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFJlZlB0cjxOb2RlPiBwcm90ZWN0OwotICAgIGlmIChQYWdlKiBwYWdlID0g
ZG9jdW1lbnQoKS5wYWdlKCkpIHsKLSAgICAgICAgYXV0byYgZnJhbWUgPSAqZG9jdW1lbnQoKS5m
cmFtZSgpOwotICAgICAgICBpZiAoIWZyYW1lLmhhc0hhZFVzZXJJbnRlcmFjdGlvbigpICYmICFm
cmFtZS5pc01haW5GcmFtZSgpICYmICFkb2N1bWVudCgpLnRvcERvY3VtZW50KCkuc2VjdXJpdHlP
cmlnaW4oKS5jYW5BY2Nlc3MoZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpKSkKKyAgICBpZiAo
UGFnZSogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCkpIHsKKyAgICAgICAgYXV0byYgZnJhbWUgPSAq
ZG9jdW1lbnQtPmZyYW1lKCk7CisgICAgICAgIGlmICghZnJhbWUuaGFzSGFkVXNlckludGVyYWN0
aW9uKCkgJiYgIWZyYW1lLmlzTWFpbkZyYW1lKCkgJiYgIWRvY3VtZW50LT50b3BEb2N1bWVudCgp
LnNlY3VyaXR5T3JpZ2luKCkuY2FuQWNjZXNzKGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKSkK
ICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAvLyBGb2N1cyBhbmQgY2hhbmdlIGV2ZW50
IGhhbmRsZXJzIGNhbiBjYXVzZSB1cyB0byBsb3NlIG91ciBsYXN0IHJlZi4KICAgICAgICAgLy8g
SWYgYSBmb2N1cyBldmVudCBoYW5kbGVyIGNoYW5nZXMgdGhlIGZvY3VzIHRvIGEgZGlmZmVyZW50
IG5vZGUgaXQKICAgICAgICAgLy8gZG9lcyBub3QgbWFrZSBzZW5zZSB0byBjb250aW51ZSBhbmQg
dXBkYXRlIGFwcGVhcmVuY2UuCi0gICAgICAgIHByb3RlY3QgPSB0aGlzOwotICAgICAgICBpZiAo
IXBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLnNldEZvY3VzZWRFbGVtZW50KHRoaXMsICpkb2N1bWVu
dCgpLmZyYW1lKCksIGRpcmVjdGlvbikpCisgICAgICAgIGlmICghcGFnZS0+Zm9jdXNDb250cm9s
bGVyKCkuc2V0Rm9jdXNlZEVsZW1lbnQobmV3VGFyZ2V0LmdldCgpLCAqZG9jdW1lbnQtPmZyYW1l
KCksIGRpcmVjdGlvbikpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yODU4LDcg
KzI4OTAsNyBAQAogICAgIC8vIEZvY3VzaW5nIGEgZm9ybSBlbGVtZW50IHRyaWdnZXJzIGFuaW1h
dGlvbiBpbiBVSUtpdCB0byBzY3JvbGwgdG8gdGhlIHJpZ2h0IHBvc2l0aW9uLgogICAgIC8vIENh
bGxpbmcgdXBkYXRlRm9jdXNBcHBlYXJhbmNlKCkgd291bGQgZ2VuZXJhdGUgYW4gdW5uZWNlc3Nh
cnkgY2FsbCB0byBTY3JvbGxWaWV3OjpzZXRTY3JvbGxQb3NpdGlvbigpLAogICAgIC8vIHdoaWNo
IHdvdWxkIGp1bXAgdXMgYXJvdW5kIGR1cmluZyB0aGlzIGFuaW1hdGlvbi4gU2VlIDxyZGFyOi8v
cHJvYmxlbS82Njk5NzQxPi4KLSAgICBib29sIGlzRm9ybUNvbnRyb2wgPSBpczxIVE1MRm9ybUNv
bnRyb2xFbGVtZW50PigqdGhpcyk7CisgICAgYm9vbCBpc0Zvcm1Db250cm9sID0gaXM8SFRNTEZv
cm1Db250cm9sRWxlbWVudD4obmV3VGFyZ2V0KTsKICAgICBpZiAoaXNGb3JtQ29udHJvbCkKICAg
ICAgICAgcmV2ZWFsTW9kZSA9IFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbFVwVG9NYWluRnJh
bWU7CiAjZW5kaWYKQEAgLTI4NzAsNiArMjkwMiw3IEBACiAgICAgdGFyZ2V0LT51cGRhdGVGb2N1
c0FwcGVhcmFuY2UocmVzdG9yZVByZXZpb3VzU2VsZWN0aW9uID8gU2VsZWN0aW9uUmVzdG9yYXRp
b25Nb2RlOjpSZXN0b3JlIDogU2VsZWN0aW9uUmVzdG9yYXRpb25Nb2RlOjpTZXREZWZhdWx0LCBy
ZXZlYWxNb2RlKTsKIH0KIAorLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jZm9jdXMt
cHJvY2Vzc2luZy1tb2RlbAogUmVmUHRyPEVsZW1lbnQ+IEVsZW1lbnQ6OmZvY3VzQXBwZWFyYW5j
ZVVwZGF0ZVRhcmdldCgpCiB7CiAgICAgcmV0dXJuIHRoaXM7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmgJKHJldmlzaW9uIDI0ODYzMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI5MCw2ICsyOTAsNyBAQAogCiAgICAgc3RydWN0IFNoYWRvd1Jvb3RJ
bml0IHsKICAgICAgICAgU2hhZG93Um9vdE1vZGUgbW9kZTsKKyAgICAgICAgYm9vbCBkZWxlZ2F0
ZXNGb2N1cyB7IGZhbHNlIH07CiAgICAgfTsKICAgICBFeGNlcHRpb25PcjxTaGFkb3dSb290Jj4g
YXR0YWNoU2hhZG93KGNvbnN0IFNoYWRvd1Jvb3RJbml0Jik7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5pZGwJKHJldmlzaW9uIDI0ODYzMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDYgKzE1MCw3IEBACiAKIGRpY3Rpb25hcnkgU2hh
ZG93Um9vdEluaXQgewogICAgIHJlcXVpcmVkIFNoYWRvd1Jvb3RNb2RlIG1vZGU7CisgICAgYm9v
bGVhbiBkZWxlZ2F0ZXNGb2N1cyA9IGZhbHNlOwogfTsKIAogRWxlbWVudCBpbXBsZW1lbnRzIEFj
Y2Vzc2liaWxpdHlSb2xlOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAkocmV2aXNp
b24gMjQ4NjMwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NCw5ICs1NCwxMCBAQAogCiBDT01QSUxFX0FTU0VSVChzaXplb2YoU2hhZG93
Um9vdCkgPT0gc2l6ZW9mKFNhbWVTaXplQXNTaGFkb3dSb290KSwgc2hhZG93cm9vdF9zaG91bGRf
c3RheV9zbWFsbCk7CiAKLVNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QoRG9jdW1lbnQmIGRvY3VtZW50
LCBTaGFkb3dSb290TW9kZSB0eXBlKQorU2hhZG93Um9vdDo6U2hhZG93Um9vdChEb2N1bWVudCYg
ZG9jdW1lbnQsIFNoYWRvd1Jvb3RNb2RlIHR5cGUsIGJvb2wgZGVsZWdhdGVzRm9jdXMpCiAgICAg
OiBEb2N1bWVudEZyYWdtZW50KGRvY3VtZW50LCBDcmVhdGVTaGFkb3dSb290KQogICAgICwgVHJl
ZVNjb3BlKCp0aGlzLCBkb2N1bWVudCkKKyAgICAsIG1fZGVsZWdhdGVzRm9jdXMoZGVsZWdhdGVz
Rm9jdXMpCiAgICAgLCBtX3R5cGUodHlwZSkKICAgICAsIG1fc3R5bGVTY29wZShzdGQ6Om1ha2Vf
dW5pcXVlPFN0eWxlOjpTY29wZT4oKnRoaXMpKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd1Jvb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9v
dC5oCShyZXZpc2lvbiAyNDg2MzApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MCw5ICs0MCwxMiBAQAogY2xhc3MgU2hhZG93Um9vdCBmaW5h
bCA6IHB1YmxpYyBEb2N1bWVudEZyYWdtZW50LCBwdWJsaWMgVHJlZVNjb3BlIHsKICAgICBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEKFNoYWRvd1Jvb3QpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
U2hhZG93Um9vdD4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgU2hhZG93Um9vdE1vZGUgdHlw
ZSkKKworICAgIGVudW0gY2xhc3MgRm9jdXNEZWxlZ2F0aW9uIHsgWWVzLCBObyB9OworCisgICAg
c3RhdGljIFJlZjxTaGFkb3dSb290PiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBTaGFkb3dS
b290TW9kZSB0eXBlLCBib29sIGRlbGVnYXRlc0ZvY3VzID0gZmFsc2UpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFkb3dSb290KGRvY3VtZW50LCB0eXBlKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYWRvd1Jvb3QoZG9jdW1lbnQsIHR5cGUsIGRlbGVn
YXRlc0ZvY3VzKSk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlZjxTaGFkb3dSb290PiBjcmVhdGUo
RG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8U2xvdEFzc2lnbm1lbnQ+JiYgYXNz
aWdubWVudCkKQEAgLTYwLDYgKzYzLDEwIEBACiAgICAgYm9vbCByZXNldFN0eWxlSW5oZXJpdGFu
Y2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZTsgfQogICAgIHZvaWQg
c2V0UmVzZXRTdHlsZUluaGVyaXRhbmNlKGJvb2wpOwogCisgICAgYm9vbCBkZWxlZ2F0ZXNGb2N1
cygpIGNvbnN0IHsgcmV0dXJuIG1fZGVsZWdhdGVzRm9jdXM7IH0KKyAgICBib29sIGNvbnRhaW5z
RGVsZWdhdGVkRm9jdXMoKSBjb25zdCB7IHJldHVybiBtX2NvbnRhaW5zRGVsZWdhdGVkRm9jdXM7
IH0KKyAgICB2b2lkIHNldENvbnRhaW5zRGVsZWdhdGVkRm9jdXMoYm9vbCBmbGFnKSB7IG1fY29u
dGFpbnNEZWxlZ2F0ZWRGb2N1cyA9IGZsYWc7IH0KKwogICAgIEVsZW1lbnQqIGhvc3QoKSBjb25z
dCB7IHJldHVybiBtX2hvc3Q7IH0KICAgICB2b2lkIHNldEhvc3QoRWxlbWVudCogaG9zdCkgeyBt
X2hvc3QgPSBob3N0OyB9CiAKQEAgLTkzLDcgKzEwMCw3IEBACiAgICAgdm9pZCBtb3ZlU2hhZG93
Um9vdFRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmKTsKIAogcHJvdGVjdGVkOgotICAgIFNoYWRvd1Jv
b3QoRG9jdW1lbnQmLCBTaGFkb3dSb290TW9kZSk7CisgICAgU2hhZG93Um9vdChEb2N1bWVudCYs
IFNoYWRvd1Jvb3RNb2RlLCBib29sIGRlbGVnYXRlc0ZvY3VzKTsKIAogICAgIFNoYWRvd1Jvb3Qo
RG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8U2xvdEFzc2lnbm1lbnQ+JiYpOwogCkBAIC0xMDks
NiArMTE2LDggQEAKIAogICAgIGJvb2wgbV9yZXNldFN0eWxlSW5oZXJpdGFuY2UgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV9oYXNCZWd1bkRlbGV0aW5nRGV0YWNoZWRDaGlsZHJlbiB7IGZhbHNlIH07
CisgICAgYm9vbCBtX2RlbGVnYXRlc0ZvY3VzIHsgZmFsc2UgfTsKKyAgICBib29sIG1fY29udGFp
bnNEZWxlZ2F0ZWRGb2N1cyB7IGZhbHNlIH07CiAgICAgU2hhZG93Um9vdE1vZGUgbV90eXBlIHsg
U2hhZG93Um9vdE1vZGU6OlVzZXJBZ2VudCB9OwogCiAgICAgRWxlbWVudCogbV9ob3N0IHsgbnVs
bHB0ciB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAkocmV2
aXNpb24gMjQ4NjMwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02NjIsNiArNjYyLDExIEBACiAgICAgcmV0dXJuIHByZXZpb3Vz
Rm9jdXNhYmxlRWxlbWVudE9yU2NvcGVPd25lcihGb2N1c05hdmlnYXRpb25TY29wZTo6c2NvcGVP
ZihzdGFydCksICZzdGFydCwgbnVsbHB0cik7CiB9CiAKK0VsZW1lbnQqIEZvY3VzQ29udHJvbGxl
cjo6ZmluZEZpcnN0Rm9jdXNhYmxlRWxlbWVudEluU2hhZG93Um9vdChTaGFkb3dSb290JiBzaGFk
b3dSb290KQoreworICAgIHJldHVybiBuZXh0Rm9jdXNhYmxlRWxlbWVudFdpdGhpblNjb3BlKEZv
Y3VzTmF2aWdhdGlvblNjb3BlOjpzY29wZU9mKHNoYWRvd1Jvb3QpLCBudWxscHRyLCBudWxscHRy
KTsKK30KKwogRWxlbWVudCogRm9jdXNDb250cm9sbGVyOjpuZXh0Rm9jdXNhYmxlRWxlbWVudE9y
U2NvcGVPd25lcihjb25zdCBGb2N1c05hdmlnYXRpb25TY29wZSYgc2NvcGUsIE5vZGUqIHN0YXJ0
LCBLZXlib2FyZEV2ZW50KiBldmVudCkKIHsKICAgICBpbnQgc3RhcnRUYWJJbmRleCA9IDA7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmgJKHJldmlzaW9uIDI0ODYzMCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQzLDYgKzQzLDcgQEAKIGNsYXNzIEtleWJvYXJkRXZlbnQ7CiBjbGFzcyBOb2RlOwogY2xh
c3MgUGFnZTsKK2NsYXNzIFNoYWRvd1Jvb3Q7CiBjbGFzcyBUcmVlU2NvcGU7CiAKIHN0cnVjdCBG
b2N1c0NhbmRpZGF0ZTsKQEAgLTc1LDYgKzc2LDggQEAKICAgICBXRUJDT1JFX0VYUE9SVCBFbGVt
ZW50KiBuZXh0Rm9jdXNhYmxlRWxlbWVudChOb2RlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgRWxl
bWVudCogcHJldmlvdXNGb2N1c2FibGVFbGVtZW50KE5vZGUmKTsKIAorICAgIEVsZW1lbnQqIGZp
bmRGaXJzdEZvY3VzYWJsZUVsZW1lbnRJblNoYWRvd1Jvb3QoU2hhZG93Um9vdCYpOworCiAgICAg
dm9pZCBzZXRGb2N1c2VkRWxlbWVudE5lZWRzUmVwYWludCgpOwogICAgIFNlY29uZHMgdGltZVNp
bmNlRm9jdXNXYXNTZXQoKSBjb25zdDsKIApJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9yZXNvdXJjZXMvdGVzdGRyaXZlci12ZW5kb3IuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9yZXNv
dXJjZXMvdGVzdGRyaXZlci12ZW5kb3IuanMJKHJldmlzaW9uIDI0ODYzMCkKKysrIExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvcmVzb3VyY2VzL3Rlc3Rkcml2ZXIt
dmVuZG9yLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsNiArMTM2LDQ4IEBACiBpZiAod2luZG93
LnRlc3RfZHJpdmVyX2ludGVybmFsID09PSB1bmRlZmluZWQpCiAgICAgd2luZG93LnRlc3RfZHJp
dmVyX2ludGVybmFsID0geyB9OwogCit3aW5kb3cudGVzdF9kcml2ZXJfaW50ZXJuYWwuc2VuZF9r
ZXlzID0gZnVuY3Rpb24oZWxlbWVudCwga2V5cykKK3sKKyAgICBpZiAoIXdpbmRvdy5ldmVudFNl
bmRlcikKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcigid2luZG93LmV2
ZW50U2VuZGVyIGlzIHVuZGVmaW5lZC4iKSk7CisKKyAgICAvLyBodHRwczovL3NlbGVuaXVtaHEu
Z2l0aHViLmlvL3NlbGVuaXVtL2RvY3MvYXBpL3B5L3dlYmRyaXZlci9zZWxlbml1bS53ZWJkcml2
ZXIuY29tbW9uLmtleXMuaHRtbAorICAgIC8vIEZJWE1FOiBBZGQgbW9yZSBjYXNlcy4KKyAgICAv
LyBGSVhNRTogQWRkIHRoZSBzdXBwb3J0IGZvciBtb2RpZmllciBrZXlzLgorICAgIGNvbnN0IFNl
bGVuaXVtQ2hhckNvZGVUb0V2ZW50U2VuZGVyS2V5ID0geworICAgICAgICAweEUwMDM6ICdkZWxl
dGUnLAorICAgICAgICAweEUwMDQ6ICdcdCcsCisgICAgICAgIDB4RTAwRDogJyAnLAorICAgICAg
ICAweEUwMTI6ICdsZWZ0QXJyb3cnLAorICAgICAgICAweEUwMTM6ICd1cEFycm93JywKKyAgICAg
ICAgMHhFMDE0OiAncmlnaHRBcnJvdycsCisgICAgICAgIDB4RTAxNTogJ2Rvd25BcnJvdycsCisg
ICAgfTsKKworICAgIGZ1bmN0aW9uIGNvbnZlcnRTZWxlbml1bUtleUNvZGUoa2V5KQorICAgIHsK
KyAgICAgICAgY29uc3QgY29kZSA9IGtleS5jaGFyQ29kZUF0KDApOworICAgICAgICByZXR1cm4g
U2VsZW5pdW1DaGFyQ29kZVRvRXZlbnRTZW5kZXJLZXlbY29kZV0gfHwga2V5OworICAgIH0KKwor
ICAgIGNvbnN0IGtleUxpc3QgPSBbXTsKKyAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKQorICAg
ICAgICBrZXlMaXN0LnB1c2goY29udmVydFNlbGVuaXVtS2V5Q29kZShrZXkpKTsKKworICAgIGlm
ICh0ZXN0UnVubmVyLmlzSU9TRmFtaWx5ICYmIHRlc3RSdW5uZXIuaXNXZWJLaXQyKSB7CisgICAg
ICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geworICAgICAgICAgICAgdGVzdFJ1
bm5lci5ydW5VSVNjcmlwdChgCisgICAgICAgICAgICAgICAgY29uc3Qga2V5TGlzdCA9IEpTT04u
cGFyc2UoJyR7SlNPTi5zdHJpbmdpZnkoa2V5TGlzdCl9Jyk7CisgICAgICAgICAgICAgICAgZm9y
IChjb25zdCBrZXkgb2Yga2V5TGlzdCkKKyAgICAgICAgICAgICAgICAgICAgdWlDb250cm9sbGVy
LmtleURvd24oa2V5KTtgLCByZXNvbHZlKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZm9y
IChjb25zdCBrZXkgb2Yga2V5TGlzdCkKKyAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bihrZXkp
OworICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKK30KKwogd2luZG93LnRlc3RfZHJpdmVy
X2ludGVybmFsLmFjdGlvbl9zZXF1ZW5jZSA9IGZ1bmN0aW9uKHNvdXJjZXMpCiB7CiAgICAgLy8g
aHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmRyaXZlci8jcHJvY2Vzc2luZy1hY3Rpb25zICAgIApJ
bmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zaGFkb3ct
ZG9tL2ZvY3VzL2ZvY3VzLW1ldGhvZC1kZWxlZ2F0ZXNGb2N1cy1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zaGFk
b3ctZG9tL2ZvY3VzL2ZvY3VzLW1ldGhvZC1kZWxlZ2F0ZXNGb2N1cy1leHBlY3RlZC50eHQJKG5v
bmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zaGFkb3ctZG9tL2ZvY3VzL2ZvY3VzLW1ldGhvZC1kZWxlZ2F0ZXNGb2N1cy1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOCBAQAorc2xvdHRlZFRvU2Vjb25kU2xvdAor
c2xvdHRlZFRvRmlyc3RTbG90CitvdXRzaWRlCisKK1BBU1MgZm9jdXMoKSBvbiBob3N0IHdpdGgg
ZGVsZWdhdGVzRm9jdXMsIGFsbCB0YWJpbmRleD0wIAorUEFTUyBmb2N1cygpIG9uIGhvc3Qgd2l0
aCBkZWxlZ2F0ZXNGb2N1cyAmIHRhYmluZGV4ID0tMSwgYWxsIG90aGVyIHRhYmluZGV4PTAgCitQ
QVNTIGZvY3VzKCkgb24gaG9zdCB3aXRoIGRlbGVnYXRlc0ZvY3VzICYgbm8gdGFiaW5kZXgsIGFs
bCBvdGhlciB0YWJpbmRleD0wIAorUEFTUyBmb2N1cygpIG9uIGhvc3Qgd2l0aCBkZWxlZ2F0ZXNG
b2N1cyAmIHRhYmluZGV4ID0gMCwgYWxsIG90aGVyIHRhYmluZGV4PS0xIAorUEFTUyBmb2N1cygp
IG9uIGhvc3Qgd2l0aCBkZWxlZ2F0ZXNGb2N1cywgYWxsIHdpdGhvdXQgdGFiaW5kZXggCitQQVNT
IGZvY3VzKCkgb24gaG9zdCB3aXRoIGRlbGVnYXRlc0ZvY3VzLCBhbGwgdGFiaW5kZXg9LTEgCitQ
QVNTIGZvY3VzKCkgb24gaG9zdCB3aXRoIGRlbGVnYXRlc0ZvY3VzICYgdGFiaW5kZXg9MCwgI2Jl
bG93U2xvdHMgd2l0aCB0YWJpbmRleD0wIAorUEFTUyBmb2N1cygpIG9uIGhvc3Qgd2l0aCBkZWxl
Z2F0ZXNGb2N1cyAmIHRhYmluZGV4PTAsICNvdXRzaWRlIHdpdGggdGFiaW5kZXg9MCAKK1BBU1Mg
Zm9jdXMoKSBvbiBob3N0IHdpdGggZGVsZWdhdGVzRm9jdXMgJiB0YWJpbmRleD0wLCAjYWJvdmVT
bG90cyBhbmQgI2JlbG93U2xvdHMgd2l0aCB0YWJpbmRleD0wIAorUEFTUyBmb2N1cygpIG9uIGhv
c3Qgd2l0aCBkZWxlZ2F0ZXNGb2N1cyAmIHRhYmluZGV4PTAsICNhYm92ZVNsb3RzIHdpdGggdGFi
aW5kZXg9MCwgI2JlbG93U2xvdHMgd2l0aCB0YWJpbmRleD0xIAorUEFTUyBmb2N1cygpIG9uIGhv
c3Qgd2l0aCBkZWxlZ2F0ZXNGb2N1cyAmIHRhYmluZGV4PTAsICNmaXJzdFNsb3QsICNzbG90dGVk
VG9GaXJzdFNsb3QsICNzZWNvbmRTbG90LCAjc2xvdHRlZFRvU2Vjb25kU2xvdCB3aXRoIHRhYmlu
ZGV4PTAgCitQQVNTIGZvY3VzKCkgb24gaG9zdCB3aXRoIGRlbGVnYXRlc0ZvY3VzICYgdGFiaW5k
ZXg9MCwgI2ZpcnN0U2xvdCB3aXRoIHRhYmluZGV4PTEsICNzbG90dGVkVG9GaXJzdFNsb3QgYW5k
ICNhYm92ZVNsb3RzIHdpdGggdGFiaW5kZXg9MCAKK1BBU1MgZm9jdXMoKSBvbiBob3N0IHdpdGgg
ZGVsZWdhdGVzRm9jdXMgJiB0YWJpbmRleD0wLCAjc2xvdHRlZFRvZmlyc3RTbG90IHdpdGggdGFi
aW5kZXg9MSwgI2Fib3ZlU2xvdHMgd2l0aCB0YWJpbmRleD0wIAorCkluZGV4OiBMYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NoYWRvdy1kb20vZm9jdXMvZm9jdXMt
bWV0aG9kLWRlbGVnYXRlc0ZvY3VzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zaGFkb3ctZG9tL2ZvY3VzL2ZvY3VzLW1ldGhv
ZC1kZWxlZ2F0ZXNGb2N1cy5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2hhZG93LWRvbS9mb2N1cy9mb2N1cy1tZXRob2Qt
ZGVsZWdhdGVzRm9jdXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI4OSBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+SFRNTCBUZXN0OiBm
b2N1cyBvbiBzaGFkb3cgaG9zdCB3aXRoIGRlbGVnYXRlc0ZvY3VzPC90aXRsZT4KKzxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3Rkcml2ZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJj
ZXMvdGVzdGRyaXZlci12ZW5kb3IuanMiPjwvc2NyaXB0PgorCis8Ym9keT4KKzxkaXYgaWQ9Imhv
c3QiPgorICA8ZGl2IGlkPSJzbG90dGVkVG9TZWNvbmRTbG90IiBzbG90PSJzZWNvbmRTbG90Ij5z
bG90dGVkVG9TZWNvbmRTbG90PC9kaXY+CisgIDxkaXYgaWQ9InNsb3R0ZWRUb0ZpcnN0U2xvdCIg
c2xvdD0iZmlyc3RTbG90Ij5zbG90dGVkVG9GaXJzdFNsb3Q8L2Rpdj4KKzwvZGl2PgorPGRpdiBp
ZD0ib3V0c2lkZSI+b3V0c2lkZTwvZGl2PgorPC9ib2R5PgorCis8c2NyaXB0PgorY29uc3QgaG9z
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJob3N0Iik7Citjb25zdCBzbG90dGVkVG9TZWNv
bmRTbG90ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNsb3R0ZWRUb1NlY29uZFNsb3QiKTsK
K2NvbnN0IHNsb3R0ZWRUb0ZpcnN0U2xvdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzbG90
dGVkVG9GaXJzdFNsb3QiKTsKK2NvbnN0IG91dHNpZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgib3V0c2lkZSIpOworCitjb25zdCBzaGFkb3dSb290ID0gaG9zdC5hdHRhY2hTaGFkb3coeyBt
b2RlOiAib3BlbiIsIGRlbGVnYXRlc0ZvY3VzOiB0cnVlIH0pOworY29uc3QgYWJvdmVTbG90cyA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworYWJvdmVTbG90cy5pbm5lclRleHQgPSAi
YWJvdmVTbG90cyI7Citjb25zdCBmaXJzdFNsb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJz
bG90Iik7CitmaXJzdFNsb3QubmFtZSA9ICJmaXJzdFNsb3QiOworY29uc3Qgc2Vjb25kU2xvdCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNsb3QiKTsKK3NlY29uZFNsb3QubmFtZSA9ICJzZWNv
bmRTbG90IjsKK2NvbnN0IGJlbG93U2xvdHMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKK2JlbG93U2xvdHMuaW5uZXJUZXh0ID0gImJlbG93U2xvdHMiOworc2hhZG93Um9vdC5hcHBl
bmRDaGlsZChhYm92ZVNsb3RzKTsKK3NoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQoZmlyc3RTbG90KTsK
K3NoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQoc2Vjb25kU2xvdCk7CitzaGFkb3dSb290LmFwcGVuZENo
aWxkKGJlbG93U2xvdHMpOworCitjb25zdCBlbGVtZW50c0luRmxhdFRyZWVPcmRlciA9IFtob3N0
LCBhYm92ZVNsb3RzLCBmaXJzdFNsb3QsCisgIHNsb3R0ZWRUb0ZpcnN0U2xvdCwgc2Vjb25kU2xv
dCwgc2xvdHRlZFRvU2Vjb25kU2xvdCwgYmVsb3dTbG90cywgb3V0c2lkZV07CisKKy8vIEZpbmFs
IHN0cnVjdHVyZToKKy8vIDxkaXYgI2hvc3Q+IChkZWxlZ2F0ZXNGb2N1cz10cnVlKQorLy8gICAg
I3NoYWRvd1Jvb3QKKy8vICAgICAgPGRpdiAjYWJvdmVTbG90cz4KKy8vICAgICAgPHNsb3QgI2Zp
cnN0U2xvdD4KKy8vICAgICAgICAoc2xvdHRlZCkgPGRpdiAjc2xvdHRlZFRvRmlyc3RTbG90Pgor
Ly8gICAgICA8c2xvdCAjc2Vjb25kU2xvdD4KKy8vICAgICAgICAoc2xvdHRlZCkgPGRpdiAjc2xv
dHRlZFRvU2Vjb25kU2xvdD4KKy8vICAgICAgPGRpdiAjYmVsb3dTbG90cz4KKy8vIDxkaXYgI291
dHNpZGU+CisKK2Z1bmN0aW9uIHNldFRhYkluZGV4KGVsZW1lbnRzLCB2YWx1ZSkgeworICBmb3Ig
KGNvbnN0IGVsIG9mIGVsZW1lbnRzKSB7CisgICAgZWwudGFiSW5kZXggPSB2YWx1ZTsKKyAgfQor
fQorCitmdW5jdGlvbiBzZXRBbGxUYWJJbmRleCh2YWx1ZSkgeworICBzZXRUYWJJbmRleChlbGVt
ZW50c0luRmxhdFRyZWVPcmRlciwgdmFsdWUpOworfQorCitmdW5jdGlvbiByZW1vdmVBbGxUYWJJ
bmRleCgpIHsKKyAgZm9yIChjb25zdCBlbCBvZiBlbGVtZW50c0luRmxhdFRyZWVPcmRlcikgewor
ICAgIGVsLnJlbW92ZUF0dHJpYnV0ZSgidGFiaW5kZXgiKTsKKyAgfQorfQorCitmdW5jdGlvbiBy
ZXNldEZvY3VzKCkgeworICByZW1vdmVBbGxUYWJJbmRleCgpOworICBpZiAoc2hhZG93Um9vdC5h
Y3RpdmVFbGVtZW50KQorICAgIHNoYWRvd1Jvb3QuYWN0aXZlRWxlbWVudC5ibHVyKCk7CisgIGlm
IChkb2N1bWVudC5hY3RpdmVFbGVtZW50KQorICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuYmx1
cigpOworfQorCit0ZXN0KCgpID0+IHsKKyAgcmVzZXRGb2N1cygpOworICBzZXRBbGxUYWJJbmRl
eCgwKTsKKyAgLy8gU3RydWN0dXJlOgorICAvLyA8ZGl2ICNob3N0PiAoZGVsZWdhdGVzRm9jdXM9
dHJ1ZSkgdGFiaW5kZXg9MAorICAvLyAgICAjc2hhZG93Um9vdAorICAvLyAgICAgIDxkaXYgI2Fi
b3ZlU2xvdHM+IHRhYmluZGV4PTAKKyAgLy8gICAgICA8c2xvdCAjZmlyc3RTbG90PiB0YWJpbmRl
eD0wCisgIC8vICAgICAgICAoc2xvdHRlZCkgPGRpdiAjc2xvdHRlZFRvRmlyc3RTbG90PiB0YWJp
bmRleD0wCisgIC8vICAgICAgPHNsb3QgI3NlY29uZFNsb3Q+IHRhYmluZGV4PTAKKyAgLy8gICAg
ICAgIChzbG90dGVkKSA8ZGl2ICNzbG90dGVkVG9TZWNvbmRTbG90PiB0YWJpbmRleD0wCisgIC8v
ICAgICAgPGRpdiAjYmVsb3dTbG90cz4gdGFiaW5kZXg9MAorICAvLyA8ZGl2ICNvdXRzaWRlPiB0
YWJpbmRleD0wCisgIC8vIGZsYXR0ZW5lZCB0YWJpbmRleC1vcmRlcmVkIGZvY3VzIG5hdmlnYXRp
b24gc2NvcGUgb2YgI2hvc3Q6CisgIC8vIFthYm92ZVNsb3RzLCBzbG90dGVkVG9GaXJzdFNsb3Qs
IHNsb3R0ZWRUb1NlY29uZFNsb3QsIGJlbG93U2xvdHNdCisgIGhvc3QuZm9jdXMoKTsKKyAgYXNz
ZXJ0X2VxdWFscyhzaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQsIGFib3ZlU2xvdHMpOworICBhc3Nl
cnRfZXF1YWxzKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQsIGhvc3QpOworfSwgImZvY3VzKCkgb24g
aG9zdCB3aXRoIGRlbGVnYXRlc0ZvY3VzLCBhbGwgdGFiaW5kZXg9MCIpOworCit0ZXN0KCgpID0+
IHsKKyAgcmVzZXRGb2N1cygpOworICBzZXRBbGxUYWJJbmRleCgwKTsKKyAgc2V0VGFiSW5kZXgo
W2hvc3RdLCAtMSk7CisgIC8vIGZsYXR0ZW5lZCB0YWJpbmRleC1vcmRlcmVkIGZvY3VzIG5hdmln
YXRpb24gc2NvcGUgb2YgI2hvc3Q6CisgIC8vIFthYm92ZVNsb3RzLCBzbG90dGVkVG9GaXJzdFNs
b3QsIHNsb3R0ZWRUb1NlY29uZFNsb3QsIGJlbG93U2xvdHNdCisgIGhvc3QuZm9jdXMoKTsKKyAg
YXNzZXJ0X2VxdWFscyhzaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQsIGFib3ZlU2xvdHMpOworICBh
c3NlcnRfZXF1YWxzKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQsIGhvc3QpOworfSwgImZvY3VzKCkg
b24gaG9zdCB3aXRoIGRlbGVnYXRlc0ZvY3VzICYgdGFiaW5kZXggPS0xLCBhbGwgb3RoZXIgdGFi
aW5kZXg9MCIpOworCit0ZXN0KCgpID0+IHsKKyAgcmVzZXRGb2N1cygpOworICBzZXRUYWJJbmRl
eChbYWJvdmVTbG90cywgc2xvdHRlZFRvRmlyc3RTbG90LCBzbG90dGVkVG9TZWNvbmRTbG90LCBi
ZWxvd1Nsb3RzXSwgMCk7CisgIC8vIGZsYXR0ZW5lZCB0YWJpbmRleC1vcmRlcmVkIGZvY3VzIG5h
dmlnYXRpb24gc2NvcGUgb2YgI2hvc3Q6CisgIC8vIFthYm92ZVNsb3RzLCBzbG90dGVkVG9GaXJz
dFNsb3QsIHNsb3R0ZWRUb1NlY29uZFNsb3QsIGJlbG93U2xvdHNdCisgIGhvc3QuZm9jdXMoKTsK
KyAgYXNzZXJ0X2VxdWFscyhzaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQsIGFib3ZlU2xvdHMpOwor
ICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQsIGhvc3QpOworfSwgImZvY3Vz
KCkgb24gaG9zdCB3aXRoIGRlbGVnYXRlc0ZvY3VzICYgbm8gdGFiaW5kZXgsIGFsbCBvdGhlciB0
YWJpbmRleD0wIik7CisKK3Rlc3QoKCkgPT4geworICByZXNldEZvY3VzKCk7CisgIHNldEFsbFRh
YkluZGV4KC0xKTsKKyAgc2V0VGFiSW5kZXgoW2hvc3RdLCAwKTsKKyAgLy8gZmxhdHRlbmVkIHRh
YmluZGV4LW9yZGVyZWQgZm9jdXMgbmF2aWdhdGlvbiBzY29wZSBvZiAjaG9zdDogW10KKyAgaG9z
dC5mb2N1cygpOworICBhc3NlcnRfZXF1YWxzKHNoYWRvd1Jvb3QuYWN0aXZlRWxlbWVudCwgbnVs
bCk7CisgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCwgZG9jdW1lbnQuYm9k
eSk7Cit9LCAiZm9jdXMoKSBvbiBob3N0IHdpdGggZGVsZWdhdGVzRm9jdXMgJiB0YWJpbmRleCA9
IDAsIGFsbCBvdGhlciB0YWJpbmRleD0tMSIpOworCit0ZXN0KCgpID0+IHsKKyAgcmVzZXRGb2N1
cygpOworICByZW1vdmVBbGxUYWJJbmRleCgpOworICAvLyBmbGF0dGVuZWQgdGFiaW5kZXgtb3Jk
ZXJlZCBmb2N1cyBuYXZpZ2F0aW9uIHNjb3BlIG9mICNob3N0OiBbXQorICBob3N0LmZvY3VzKCk7
CisgIGFzc2VydF9lcXVhbHMoc2hhZG93Um9vdC5hY3RpdmVFbGVtZW50LCBudWxsKTsKKyAgYXNz
ZXJ0X2VxdWFscyhkb2N1bWVudC5hY3RpdmVFbGVtZW50LCBkb2N1bWVudC5ib2R5KTsKK30sICJm
b2N1cygpIG9uIGhvc3Qgd2l0aCBkZWxlZ2F0ZXNGb2N1cywgYWxsIHdpdGhvdXQgdGFiaW5kZXgi
KTsKKwordGVzdCgoKSA9PiB7CisgIHJlc2V0Rm9jdXMoKTsKKyAgLy8gZmxhdHRlbmVkIHRhYmlu
ZGV4LW9yZGVyZWQgZm9jdXMgbmF2aWdhdGlvbiBzY29wZSBvZiAjaG9zdDogW10KKyAgc2V0QWxs
VGFiSW5kZXgoLTEpOworICBob3N0LmZvY3VzKCk7CisgIGFzc2VydF9lcXVhbHMoc2hhZG93Um9v
dC5hY3RpdmVFbGVtZW50LCBudWxsKTsKKyAgYXNzZXJ0X2VxdWFscyhkb2N1bWVudC5hY3RpdmVF
bGVtZW50LCBkb2N1bWVudC5ib2R5KTsKK30sICJmb2N1cygpIG9uIGhvc3Qgd2l0aCBkZWxlZ2F0
ZXNGb2N1cywgYWxsIHRhYmluZGV4PS0xIik7CisKK3Rlc3QoKCkgPT4geworICByZXNldEZvY3Vz
KCk7CisgIHNldEFsbFRhYkluZGV4KC0xKTsKKyAgc2V0VGFiSW5kZXgoW2hvc3QsIGJlbG93U2xv
dHNdLCAwKTsKKyAgLy8gU3RydWN0dXJlOgorICAvLyA8ZGl2ICNob3N0PiAoZGVsZWdhdGVzRm9j
dXM9dHJ1ZSkgdGFiaW5kZXg9MAorICAvLyAgICAjc2hhZG93Um9vdAorICAvLyAgICAgIDxkaXYg
I2Fib3ZlU2xvdHM+CisgIC8vICAgICAgPHNsb3QgI2ZpcnN0U2xvdD4KKyAgLy8gICAgICAgIChz
bG90dGVkKSA8ZGl2ICNzbG90dGVkVG9GaXJzdFNsb3Q+CisgIC8vICAgICAgPHNsb3QgI3NlY29u
ZFNsb3Q+CisgIC8vICAgICAgICAoc2xvdHRlZCkgPGRpdiAjc2xvdHRlZFRvU2Vjb25kU2xvdD4K
KyAgLy8gICAgICA8ZGl2ICNiZWxvd1Nsb3RzPiB0YWJpbmRleD0wCisgIC8vIDxkaXYgI291dHNp
ZGU+CisgIC8vIGZsYXR0ZW5lZCB0YWJpbmRleC1vcmRlcmVkIGZvY3VzIG5hdmlnYXRpb24gc2Nv
cGUgb2YgI2hvc3Q6CisgIC8vIFtiZWxvd1Nsb3RzXQorICBob3N0LmZvY3VzKCk7CisgIGFzc2Vy
dF9lcXVhbHMoc2hhZG93Um9vdC5hY3RpdmVFbGVtZW50LCBiZWxvd1Nsb3RzKTsKKyAgYXNzZXJ0
X2VxdWFscyhkb2N1bWVudC5hY3RpdmVFbGVtZW50LCBob3N0KTsKK30sICJmb2N1cygpIG9uIGhv
c3Qgd2l0aCBkZWxlZ2F0ZXNGb2N1cyAmIHRhYmluZGV4PTAsICNiZWxvd1Nsb3RzIHdpdGggdGFi
aW5kZXg9MCIpOworCit0ZXN0KCgpID0+IHsKKyAgcmVzZXRGb2N1cygpOworICBzZXRBbGxUYWJJ
bmRleCgtMSk7CisgIHNldFRhYkluZGV4KFtob3N0LCBvdXRzaWRlXSwgMCk7CisgIC8vIFN0cnVj
dHVyZToKKyAgLy8gPGRpdiAjaG9zdD4gKGRlbGVnYXRlc0ZvY3VzPXRydWUpIHRhYmluZGV4PTAK
KyAgLy8gICAgI3NoYWRvd1Jvb3QKKyAgLy8gICAgICA8ZGl2ICNhYm92ZVNsb3RzPgorICAvLyAg
ICAgIDxzbG90ICNmaXJzdFNsb3Q+CisgIC8vICAgICAgICAoc2xvdHRlZCkgPGRpdiAjc2xvdHRl
ZFRvRmlyc3RTbG90PgorICAvLyAgICAgIDxzbG90ICNzZWNvbmRTbG90PgorICAvLyAgICAgICAg
KHNsb3R0ZWQpIDxkaXYgI3Nsb3R0ZWRUb1NlY29uZFNsb3Q+CisgIC8vICAgICAgPGRpdiAjYmVs
b3dTbG90cz4KKyAgLy8gPGRpdiAjb3V0c2lkZT4gdGFiaW5kZXg9MAorICAvLyBmbGF0dGVuZWQg
dGFiaW5kZXgtb3JkZXJlZCBmb2N1cyBuYXZpZ2F0aW9uIHNjb3BlIG9mICNob3N0OgorICAvLyBb
XQorICBob3N0LmZvY3VzKCk7CisgIGFzc2VydF9lcXVhbHMoc2hhZG93Um9vdC5hY3RpdmVFbGVt
ZW50LCBudWxsKTsKKyAgYXNzZXJ0X2VxdWFscyhkb2N1bWVudC5hY3RpdmVFbGVtZW50LCBkb2N1
bWVudC5ib2R5KTsKK30sICJmb2N1cygpIG9uIGhvc3Qgd2l0aCBkZWxlZ2F0ZXNGb2N1cyAmIHRh
YmluZGV4PTAsICNvdXRzaWRlIHdpdGggdGFiaW5kZXg9MCIpOworCit0ZXN0KCgpID0+IHsKKyAg
cmVzZXRGb2N1cygpOworICBzZXRUYWJJbmRleChbaG9zdCwgYWJvdmVTbG90cywgYmVsb3dTbG90
c10sIDApOworICAvLyBTdHJ1Y3R1cmU6CisgIC8vIDxkaXYgI2hvc3Q+IChkZWxlZ2F0ZXNGb2N1
cz10cnVlKSB0YWJpbmRleD0wCisgIC8vICAgICNzaGFkb3dSb290CisgIC8vICAgICAgPGRpdiAj
YWJvdmVTbG90cz4gdGFiaW5kZXg9MAorICAvLyAgICAgIDxzbG90ICNmaXJzdFNsb3Q+CisgIC8v
ICAgICAgICAoc2xvdHRlZCkgPGRpdiAjc2xvdHRlZFRvRmlyc3RTbG90PgorICAvLyAgICAgIDxz
bG90ICNzZWNvbmRTbG90PgorICAvLyAgICAgICAgKHNsb3R0ZWQpIDxkaXYgI3Nsb3R0ZWRUb1Nl
Y29uZFNsb3Q+CisgIC8vICAgICAgPGRpdiAjYmVsb3dTbG90cz4gdGFiaW5kZXg9MAorICAvLyA8
ZGl2ICNvdXRzaWRlPgorICAvLyBmbGF0dGVuZWQgdGFiaW5kZXgtb3JkZXJlZCBmb2N1cyBuYXZp
Z2F0aW9uIHNjb3BlIG9mICNob3N0OgorICAvLyBbYWJvdmVTbG90cywgYmVsb3dTbG90c10KKyAg
aG9zdC5mb2N1cygpOworICBhc3NlcnRfZXF1YWxzKHNoYWRvd1Jvb3QuYWN0aXZlRWxlbWVudCwg
YWJvdmVTbG90cyk7CisgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCwgaG9z
dCk7Cit9LCAiZm9jdXMoKSBvbiBob3N0IHdpdGggZGVsZWdhdGVzRm9jdXMgJiB0YWJpbmRleD0w
LCAjYWJvdmVTbG90cyBhbmQgI2JlbG93U2xvdHMgd2l0aCB0YWJpbmRleD0wIik7CisKK3Rlc3Qo
KCkgPT4geworICByZXNldEZvY3VzKCk7CisgIHNldEFsbFRhYkluZGV4KC0xKTsKKyAgc2V0VGFi
SW5kZXgoW2hvc3QsIGFib3ZlU2xvdHNdLCAwKTsKKyAgc2V0VGFiSW5kZXgoW2JlbG93U2xvdHNd
LCAxKTsKKyAgLy8gU3RydWN0dXJlOgorICAvLyA8ZGl2ICNob3N0PiAoZGVsZWdhdGVzRm9jdXM9
dHJ1ZSkgdGFiaW5kZXg9MAorICAvLyAgICAjc2hhZG93Um9vdAorICAvLyAgICAgIDxkaXYgI2Fi
b3ZlU2xvdHM+IHRhYmluZGV4PTAKKyAgLy8gICAgICA8c2xvdCAjZmlyc3RTbG90PgorICAvLyAg
ICAgICAgKHNsb3R0ZWQpIDxkaXYgI3Nsb3R0ZWRUb0ZpcnN0U2xvdD4KKyAgLy8gICAgICA8c2xv
dCAjc2Vjb25kU2xvdD4KKyAgLy8gICAgICAgIChzbG90dGVkKSA8ZGl2ICNzbG90dGVkVG9TZWNv
bmRTbG90PgorICAvLyAgICAgIDxkaXYgI2JlbG93U2xvdHM+IHRhYmluZGV4PTEKKyAgLy8gPGRp
diAjb3V0c2lkZT4KKyAgLy8gZmxhdHRlbmVkIHRhYmluZGV4LW9yZGVyZWQgZm9jdXMgbmF2aWdh
dGlvbiBzY29wZSBvZiAjaG9zdDoKKyAgLy8gW2JlbG93U2xvdHMsIGFib3ZlU2xvdHNdCisgIGhv
c3QuZm9jdXMoKTsKKyAgYXNzZXJ0X2VxdWFscyhzaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQsIGJl
bG93U2xvdHMpOworICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQsIGhvc3Qp
OworfSwgImZvY3VzKCkgb24gaG9zdCB3aXRoIGRlbGVnYXRlc0ZvY3VzICYgdGFiaW5kZXg9MCwg
I2Fib3ZlU2xvdHMgd2l0aCB0YWJpbmRleD0wLCAjYmVsb3dTbG90cyB3aXRoIHRhYmluZGV4PTEi
KTsKKwordGVzdCgoKSA9PiB7CisgIHJlc2V0Rm9jdXMoKTsKKyAgc2V0VGFiSW5kZXgoW2hvc3Qs
IGZpcnN0U2xvdCwgc2xvdHRlZFRvRmlyc3RTbG90LCBzZWNvbmRTbG90LCBzbG90dGVkVG9TZWNv
bmRTbG90XSwgMCk7CisgIC8vIFN0cnVjdHVyZToKKyAgLy8gPGRpdiAjaG9zdD4gKGRlbGVnYXRl
c0ZvY3VzPXRydWUpIHRhYmluZGV4PTAKKyAgLy8gICAgI3NoYWRvd1Jvb3QKKyAgLy8gICAgICA8
ZGl2ICNhYm92ZVNsb3RzPgorICAvLyAgICAgIDxzbG90ICNmaXJzdFNsb3Q+IHRhYmluZGV4PTAK
KyAgLy8gICAgICAgIChzbG90dGVkKSA8ZGl2ICNzbG90dGVkVG9GaXJzdFNsb3Q+IHRhYmluZGV4
PTAKKyAgLy8gICAgICA8c2xvdCAjc2Vjb25kU2xvdD4gdGFiaW5kZXg9MAorICAvLyAgICAgICAg
KHNsb3R0ZWQpIDxkaXYgI3Nsb3R0ZWRUb1NlY29uZFNsb3Q+IHRhYmluZGV4PTAKKyAgLy8gICAg
ICA8ZGl2ICNiZWxvd1Nsb3RzPgorICAvLyA8ZGl2ICNvdXRzaWRlPgorICAvLyBmbGF0dGVuZWQg
dGFiaW5kZXgtb3JkZXJlZCBmb2N1cyBuYXZpZ2F0aW9uIHNjb3BlIG9mICNob3N0OgorICAvLyBb
c2xvdHRlZFRvRmlyc3RTbG90LCBzbG90dGVkVG9TZWNvbmRTbG90XQorICBob3N0LmZvY3VzKCk7
CisgIGFzc2VydF9lcXVhbHMoc2hhZG93Um9vdC5hY3RpdmVFbGVtZW50LCBudWxsKTsKKyAgYXNz
ZXJ0X2VxdWFscyhkb2N1bWVudC5hY3RpdmVFbGVtZW50LCBzbG90dGVkVG9GaXJzdFNsb3QpOwor
fSwgImZvY3VzKCkgb24gaG9zdCB3aXRoIGRlbGVnYXRlc0ZvY3VzICYgdGFiaW5kZXg9MCwgI2Zp
cnN0U2xvdCwgI3Nsb3R0ZWRUb0ZpcnN0U2xvdCwgI3NlY29uZFNsb3QsICNzbG90dGVkVG9TZWNv
bmRTbG90IHdpdGggdGFiaW5kZXg9MCIpOworCit0ZXN0KCgpID0+IHsKKyAgcmVzZXRGb2N1cygp
OworICBzZXRUYWJJbmRleChbZmlyc3RTbG90XSwgMSk7CisgIHNldFRhYkluZGV4KFtob3N0LCBh
Ym92ZVNsb3RzLCBzbG90dGVkVG9GaXJzdFNsb3RdLCAwKTsKKyAgLy8gU3RydWN0dXJlOgorICAv
LyA8ZGl2ICNob3N0PiAoZGVsZWdhdGVzRm9jdXM9dHJ1ZSkgdGFiaW5kZXg9MAorICAvLyAgICAj
c2hhZG93Um9vdAorICAvLyAgICAgIDxkaXYgI2Fib3ZlU2xvdHM+IHRhYmluZGV4PTAKKyAgLy8g
ICAgICA8c2xvdCAjZmlyc3RTbG90PiB0YWJpbmRleD0xCisgIC8vICAgICAgICAoc2xvdHRlZCkg
PGRpdiAjc2xvdHRlZFRvRmlyc3RTbG90PiB0YWJpbmRleD0wCisgIC8vICAgICAgPHNsb3QgI3Nl
Y29uZFNsb3Q+CisgIC8vICAgICAgICAoc2xvdHRlZCkgPGRpdiAjc2xvdHRlZFRvU2Vjb25kU2xv
dD4KKyAgLy8gICAgICA8ZGl2ICNiZWxvd1Nsb3RzPgorICAvLyA8ZGl2ICNvdXRzaWRlPgorICAv
LyBmbGF0dGVuZWQgdGFiaW5kZXgtb3JkZXJlZCBmb2N1cyBuYXZpZ2F0aW9uIHNjb3BlIG9mICNo
b3N0OgorICAvLyBbc2xvdHRlZFRvRmlyc3RTbG90LCBhYm92ZVNsb3RzXQorICBob3N0LmZvY3Vz
KCk7CisgIGFzc2VydF9lcXVhbHMoc2hhZG93Um9vdC5hY3RpdmVFbGVtZW50LCBudWxsKTsKKyAg
YXNzZXJ0X2VxdWFscyhkb2N1bWVudC5hY3RpdmVFbGVtZW50LCBzbG90dGVkVG9GaXJzdFNsb3Qp
OworfSwgImZvY3VzKCkgb24gaG9zdCB3aXRoIGRlbGVnYXRlc0ZvY3VzICYgdGFiaW5kZXg9MCwg
I2ZpcnN0U2xvdCB3aXRoIHRhYmluZGV4PTEsICNzbG90dGVkVG9GaXJzdFNsb3QgYW5kICNhYm92
ZVNsb3RzIHdpdGggdGFiaW5kZXg9MCIpOworCit0ZXN0KCgpID0+IHsKKyAgcmVzZXRGb2N1cygp
OworICBzZXRUYWJJbmRleChbc2xvdHRlZFRvRmlyc3RTbG90XSwgMSk7CisgIHNldFRhYkluZGV4
KFtob3N0LCBhYm92ZVNsb3RzXSwgMCk7CisgIC8vIFN0cnVjdHVyZToKKyAgLy8gPGRpdiAjaG9z
dD4gKGRlbGVnYXRlc0ZvY3VzPXRydWUpIHRhYmluZGV4PTAKKyAgLy8gICAgI3NoYWRvd1Jvb3QK
KyAgLy8gICAgICA8ZGl2ICNhYm92ZVNsb3RzPiB0YWJpbmRleD0wCisgIC8vICAgICAgPHNsb3Qg
I2ZpcnN0U2xvdD4KKyAgLy8gICAgICAgIChzbG90dGVkKSA8ZGl2ICNzbG90dGVkVG9GaXJzdFNs
b3Q+IHRhYmluZGV4PTEKKyAgLy8gICAgICA8c2xvdCAjc2Vjb25kU2xvdD4KKyAgLy8gICAgICAg
IChzbG90dGVkKSA8ZGl2ICNzbG90dGVkVG9TZWNvbmRTbG90PgorICAvLyAgICAgIDxkaXYgI2Jl
bG93U2xvdHM+CisgIC8vIDxkaXYgI291dHNpZGU+CisgIC8vIGZsYXR0ZW5lZCB0YWJpbmRleC1v
cmRlcmVkIGZvY3VzIG5hdmlnYXRpb24gc2NvcGUgb2YgI2hvc3Q6CisgIC8vIFthYm92ZVNsb3Rz
LCBzbG90dGVkVG9GaXJzdFNsb3RdCisgIGhvc3QuZm9jdXMoKTsKKyAgYXNzZXJ0X2VxdWFscyhz
aGFkb3dSb290LmFjdGl2ZUVsZW1lbnQsIGFib3ZlU2xvdHMpOworICBhc3NlcnRfZXF1YWxzKGRv
Y3VtZW50LmFjdGl2ZUVsZW1lbnQsIGhvc3QpOworfSwgImZvY3VzKCkgb24gaG9zdCB3aXRoIGRl
bGVnYXRlc0ZvY3VzICYgdGFiaW5kZXg9MCwgI3Nsb3R0ZWRUb2ZpcnN0U2xvdCB3aXRoIHRhYmlu
ZGV4PTEsICNhYm92ZVNsb3RzIHdpdGggdGFiaW5kZXg9MCIpOworPC9zY3JpcHQ+CkluZGV4OiBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NoYWRvdy1kb20vZm9j
dXMvZm9jdXMtdGFiaW5kZXgtb3JkZXItc2hhZG93LW5lZ2F0aXZlLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3No
YWRvdy1kb20vZm9jdXMvZm9jdXMtdGFiaW5kZXgtb3JkZXItc2hhZG93LW5lZ2F0aXZlLWV4cGVj
dGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3NoYWRvdy1kb20vZm9jdXMvZm9jdXMtdGFiaW5kZXgtb3JkZXItc2hhZG93
LW5lZ2F0aXZlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcgQEAKK2Fi
b3ZlSG9zdAorc2xvdHRlZCBiZWxvdworc2xvdHRlZCBhYm92ZQorYmVsb3dIb3N0CisKK1BBU1Mg
T3JkZXIgd2hlbiBhbGwgZWxlbWVudHMgaW4gc2hhZG93IHRyZWUgaGFzIG5lZ2F0aXZlIHRhYmlu
ZGV4IAorCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3NoYWRvdy1kb20vZm9jdXMvZm9jdXMtdGFiaW5kZXgtb3JkZXItc2hhZG93LW5lZ2F0aXZlLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zaGFkb3ctZG9tL2ZvY3VzL2ZvY3VzLXRhYmluZGV4LW9yZGVyLXNoYWRvdy1uZWdhdGl2
ZS5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc2hhZG93LWRvbS9mb2N1cy9mb2N1cy10YWJpbmRleC1vcmRlci1zaGFkb3ct
bmVnYXRpdmUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM0IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5IVE1MIFRlc3Q6IGZvY3VzIC0g
dGhlIHNlcXVlbnRpYWwgZm9jdXMgbmF2aWdhdGlvbiBvcmRlciB3aXRoIHNoYWRvdyBkb20gYW5k
IG5lZ2F0aXZlIHRhYmluZGV4IGluIHNoYWRvdyBzY29wZTwvdGl0bGU+Cis8bGluayByZWw9Imhl
bHAiIGhyZWY9Imh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2ludGVyYWN0
aW9uLmh0bWwjc2VxdWVudGlhbC1mb2N1cy1uYXZpZ2F0aW9uIj4KKzxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3Rkcml2ZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGRy
aXZlci12ZW5kb3IuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ct
dXRpbHMuanMiPjwvc2NyaXB0PgorPGJvZHk+Cis8c2NyaXB0PgorLy8gU3RydWN0dXJlOgorLy8g
PGRpdiAjYWJvdmVIb3N0IHRhYmluZGV4PTA+CisvLyA8ZGl2ICNob3N0IHRhYmluZGV4PTA+Cisv
LyAgICAjc2hhZG93Um9vdAorLy8gICAgICA8ZGl2ICNhYm92ZVNsb3QgdGFiaW5kZXg9LTE+Cisv
LyAgICAgIDxzbG90ICNzbG90QWJvdmUgdGFiaW5kZXg9LTE+CisvLyAgICAgICAgKHNsb3R0ZWQp
IDxkaXYgI3Nsb3R0ZWRBYm92ZSB0YWJpbmRleD0tMT4KKy8vICAgICAgPHNsb3QgI3Nsb3RCZWxv
dyB0YWJpbmRleD0tMT4KKy8vICAgICAgICAoc2xvdHRlZCkgPGRpdiAjc2xvdHRlZEJlbG93IHRh
YmluZGV4PS0xPgorLy8gICAgICA8ZGl2ICNiZWxvd1Nsb3QgdGFiaW5kZXg9LTE+CisvLyA8ZGl2
ICNiZWxvd0hvc3QgdGFiaW5kZXg9MD4KKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IGVs
ZW1lbnRzSW5GbGF0VHJlZU9yZGVyOworICBsZXQgW2Fib3ZlSG9zdCwgaG9zdCwgYWJvdmVTbG90
LCBzbG90QWJvdmUsIHNsb3R0ZWRBYm92ZSwgc2xvdEJlbG93LCBzbG90dGVkQmVsb3csIGJlbG93
U2xvdCwgYmVsb3dIb3N0XSA9CisgICAgZWxlbWVudHNJbkZsYXRUcmVlT3JkZXIgPSBwcmVwYXJl
RE9NKGRvY3VtZW50LmJvZHksIGZhbHNlKTsKKyAgc2V0VGFiSW5kZXgoZWxlbWVudHNJbkZsYXRU
cmVlT3JkZXIsIC0xKTsKKyAgc2V0VGFiSW5kZXgoW2Fib3ZlSG9zdCwgaG9zdCwgYmVsb3dIb3N0
XSwgMCk7CisgIHJlc2V0Rm9jdXMoKTsKKyAgcmV0dXJuIGFzc2VydEZvY3VzT3JkZXIoW2Fib3Zl
SG9zdCwgaG9zdCwgYmVsb3dIb3N0XSk7Cit9LCAiT3JkZXIgd2hlbiBhbGwgZWxlbWVudHMgaW4g
c2hhZG93IHRyZWUgaGFzIG5lZ2F0aXZlIHRhYmluZGV4Iik7Cis8L3NjcmlwdD4KKzwvYm9keT4K
SW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2hhZG93
LWRvbS9mb2N1cy9mb2N1cy10YWJpbmRleC1vcmRlci1zaGFkb3ctc2xvdC1vbmUtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc2hhZG93LWRvbS9mb2N1cy9mb2N1cy10YWJpbmRleC1vcmRlci1zaGFkb3ctc2xvdC1v
bmUtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc2hhZG93LWRvbS9mb2N1cy9mb2N1cy10YWJpbmRleC1vcmRl
ci1zaGFkb3ctc2xvdC1vbmUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NyBAQAorYWJvdmVIb3N0CitzbG90dGVkIGJlbG93CitzbG90dGVkIGFib3ZlCitiZWxvd0hvc3QK
KworUEFTUyBPcmRlciB3aGVuIGFsbCB0YWJpbmRleD0wLCBleGNlcHQgZm9yIG9uZSBzbG90IHRo
YXQgaGFzIHRhYmluZGV4PTEgCisKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc2hhZG93LWRvbS9mb2N1cy9mb2N1cy10YWJpbmRleC1vcmRlci1zaGFk
b3ctc2xvdC1vbmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3NoYWRvdy1kb20vZm9jdXMvZm9jdXMtdGFiaW5kZXgtb3JkZXIt
c2hhZG93LXNsb3Qtb25lLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zaGFkb3ctZG9tL2ZvY3VzL2ZvY3VzLXRhYmluZGV4
LW9yZGVyLXNoYWRvdy1zbG90LW9uZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzcg
QEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPkhUTUwg
VGVzdDogZm9jdXMgLSB0aGUgc2VxdWVudGlhbCBmb2N1cyBuYXZpZ2F0aW9uIG9yZGVyIHdpdGgg
c2hhZG93IGRvbSBhbmQgYWxsIHRhYmluZGV4PTAgZXhjZXB0IGZvciBvbmUgb2YgdGhlIHNsb3Q8
L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2h0bWwuc3BlYy53aGF0d2cu
b3JnL211bHRpcGFnZS9pbnRlcmFjdGlvbi5odG1sI3NlcXVlbnRpYWwtZm9jdXMtbmF2aWdhdGlv
biI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0ZHJpdmVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3Rkcml2ZXItdmVuZG9yLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvc2hhZG93LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxib2R5PgorPHNjcmlw
dD4KKy8vIFN0cnVjdHVyZToKKy8vIDxkaXYgI2Fib3ZlSG9zdCB0YWJpbmRleD0wPgorLy8gPGRp
diAjaG9zdCB0YWJpbmRleD0wPgorLy8gICAgI3NoYWRvd1Jvb3QKKy8vICAgICAgPGRpdiAjYWJv
dmVTbG90IHRhYmluZGV4PTA+CisvLyAgICAgIDxzbG90ICNzbG90QWJvdmUgdGFiaW5kZXg9MD4K
Ky8vICAgICAgICAoc2xvdHRlZCkgPGRpdiAjc2xvdHRlZEFib3ZlIHRhYmluZGV4PTA+CisvLyAg
ICAgIDxzbG90ICNzbG90QmVsb3cgdGFiaW5kZXg9MT4KKy8vICAgICAgICAoc2xvdHRlZCkgPGRp
diAjc2xvdHRlZEJlbG93IHRhYmluZGV4PTA+CisvLyAgICAgIDxkaXYgI2JlbG93U2xvdCB0YWJp
bmRleD0wPgorLy8gPGRpdiAjYmVsb3dIb3N0IHRhYmluZGV4PTA+CisKK3Byb21pc2VfdGVzdCgo
KSA9PiB7CisgIGxldCBlbGVtZW50c0luRmxhdFRyZWVPcmRlcjsKKyAgbGV0IFthYm92ZUhvc3Qs
IGhvc3QsIGFib3ZlU2xvdCwgc2xvdEFib3ZlLCBzbG90dGVkQWJvdmUsIHNsb3RCZWxvdywgc2xv
dHRlZEJlbG93LCBiZWxvd1Nsb3QsIGJlbG93SG9zdF0gPQorICAgIGVsZW1lbnRzSW5GbGF0VHJl
ZU9yZGVyID0gcHJlcGFyZURPTShkb2N1bWVudC5ib2R5LCBmYWxzZSk7CisgIHNldFRhYkluZGV4
KGVsZW1lbnRzSW5GbGF0VHJlZU9yZGVyLCAwKTsKKyAgc2xvdEJlbG93LnRhYkluZGV4ID0gMTsK
KyAgcmVzZXRGb2N1cygpOworICAvLyBGb2N1cyBzaG91bGQgbW92ZSBmaXJzdCBhY2NvcmRpbmcg
dG8gZmxhdCB0cmVlIG9yZGVyIHRvICNhYm92ZUhvc3QgYW5kICNob3N0LCB0aGVuIGludG8gI2hv
c3QncyBmb2N1cyBzY29wZS4KKyAgLy8gSXQgd2lsbCB0aGVuIG1vdmUgdG8gI3Nsb3R0ZWRCZWxv
dyBiZWNhdXNlICNzbG90QmVsb3cgaGFzIHRhYmluZGV4PTEgKHRob3VnaCB3ZSBhY3R1YWxseSB3
b24ndCBmb2N1cyBvbiB0aGUgc2xvdCksCisgIC8vIGFuZCB0aGVuIGJhY2sgdG8gI2hvc3QncyBm
b2N1cyBzY29wZSBhZ2FpbiwgZmluYWxseSBnZXR0aW5nIG91dCB0byB0aGUgZG9jdW1lbnQgZm9j
dXMgc2NvcGUuCisgIHJldHVybiBhc3NlcnRGb2N1c09yZGVyKFthYm92ZUhvc3QsIGhvc3QsIHNs
b3R0ZWRCZWxvdywgYWJvdmVTbG90LCBzbG90dGVkQWJvdmUsIGJlbG93U2xvdCwgYmVsb3dIb3N0
XSk7Cit9LCAiT3JkZXIgd2hlbiBhbGwgdGFiaW5kZXg9MCwgZXhjZXB0IGZvciBvbmUgc2xvdCB0
aGF0IGhhcyB0YWJpbmRleD0xIik7Cis8L3NjcmlwdD4KKzwvYm9keT4KSW5kZXg6IExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2hhZG93LWRvbS9mb2N1cy9mb2N1
cy10YWJpbmRleC1vcmRlci1zaGFkb3ctdmFyeWluZy10YWJpbmRleC1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
aGFkb3ctZG9tL2ZvY3VzL2ZvY3VzLXRhYmluZGV4LW9yZGVyLXNoYWRvdy12YXJ5aW5nLXRhYmlu
ZGV4LWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NoYWRvdy1kb20vZm9jdXMvZm9jdXMtdGFiaW5kZXgtb3Jk
ZXItc2hhZG93LXZhcnlpbmctdGFiaW5kZXgtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNyBAQAorYWJvdmVIb3N0CitzbG90dGVkIGJlbG93CitzbG90dGVkIGFib3ZlCiti
ZWxvd0hvc3QKKworUEFTUyBPcmRlciB3aXRoIHZhcmlvdXMgdGFiaW5kZXggdmFsdWVzIAorCklu
ZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NoYWRvdy1k
b20vZm9jdXMvZm9jdXMtdGFiaW5kZXgtb3JkZXItc2hhZG93LXZhcnlpbmctdGFiaW5kZXguaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3NoYWRvdy1kb20vZm9jdXMvZm9jdXMtdGFiaW5kZXgtb3JkZXItc2hhZG93LXZhcnlpbmct
dGFiaW5kZXguaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3NoYWRvdy1kb20vZm9jdXMvZm9jdXMtdGFiaW5kZXgtb3JkZXIt
c2hhZG93LXZhcnlpbmctdGFiaW5kZXguaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM2
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5IVE1M
IFRlc3Q6IGZvY3VzIC0gdGhlIHNlcXVlbnRpYWwgZm9jdXMgbmF2aWdhdGlvbiBvcmRlciB3aXRo
IHNoYWRvdyBkb20gd2l0aCB2YXJ5aW5nIHRhYmluZGV4IHZhbHVlczwvdGl0bGU+Cis8bGluayBy
ZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2lu
dGVyYWN0aW9uLmh0bWwjc2VxdWVudGlhbC1mb2N1cy1uYXZpZ2F0aW9uIj4KKzxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3Rkcml2ZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGRyaXZlci12ZW5kb3IuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9z
aGFkb3ctdXRpbHMuanMiPjwvc2NyaXB0PgorPGJvZHk+Cis8c2NyaXB0PgorLy8gU3RydWN0dXJl
OgorLy8gPGRpdiAjYWJvdmVIb3N0IHRhYmluZGV4PTM+CisvLyA8ZGl2ICNob3N0IHRhYmluZGV4
PTM+CisvLyAgICAjc2hhZG93Um9vdAorLy8gICAgICA8ZGl2ICNhYm92ZVNsb3QgdGFiaW5kZXg9
Mj4KKy8vICAgICAgPHNsb3QgI3Nsb3RBYm92ZSB0YWJpbmRleD0xPgorLy8gICAgICAgIChzbG90
dGVkKSA8ZGl2ICNzbG90dGVkQWJvdmUgdGFiaW5kZXg9ND4KKy8vICAgICAgPHNsb3QgI3Nsb3RC
ZWxvdyB0YWJpbmRleD0xPgorLy8gICAgICAgIChzbG90dGVkKSA8ZGl2ICNzbG90dGVkQmVsb3cg
dGFiaW5kZXg9ND4KKy8vICAgICAgPGRpdiAjYmVsb3dTbG90IHRhYmluZGV4PTI+CisvLyA8ZGl2
ICNiZWxvd0hvc3QgdGFiaW5kZXg9Mz4KKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IGVs
ZW1lbnRzSW5GbGF0VHJlZU9yZGVyOworICBsZXQgW2Fib3ZlSG9zdCwgaG9zdCwgYWJvdmVTbG90
LCBzbG90QWJvdmUsIHNsb3R0ZWRBYm92ZSwgc2xvdEJlbG93LCBzbG90dGVkQmVsb3csIGJlbG93
U2xvdCwgYmVsb3dIb3N0XSA9CisgICAgZWxlbWVudHNJbkZsYXRUcmVlT3JkZXIgPSBwcmVwYXJl
RE9NKGRvY3VtZW50LmJvZHksIGZhbHNlKTsKKyAgc2V0VGFiSW5kZXgoW3Nsb3RBYm92ZSwgc2xv
dEJlbG93XSwgMSk7CisgIHNldFRhYkluZGV4KFthYm92ZVNsb3QsIGJlbG93U2xvdF0sIDIpOwor
ICBzZXRUYWJJbmRleChbYWJvdmVIb3N0LCBob3N0LCBiZWxvd0hvc3RdLCAzKTsKKyAgc2V0VGFi
SW5kZXgoW3Nsb3R0ZWRBYm92ZSwgc2xvdHRlZEJlbG93XSwgNCk7CisgIHJlc2V0Rm9jdXMoKTsK
KyAgcmV0dXJuIGFzc2VydEZvY3VzT3JkZXIoW2Fib3ZlSG9zdCwgaG9zdCwgc2xvdHRlZEFib3Zl
LCBzbG90dGVkQmVsb3csIGFib3ZlU2xvdCwgYmVsb3dTbG90LCBiZWxvd0hvc3RdKTsKK30sICJP
cmRlciB3aXRoIHZhcmlvdXMgdGFiaW5kZXggdmFsdWVzIik7Cis8L3NjcmlwdD4KKzwvYm9keT4K
SW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2hhZG93
LWRvbS9mb2N1cy9mb2N1cy10YWJpbmRleC1vcmRlci1zaGFkb3ctemVyby1kZWxlZ2F0ZXNGb2N1
cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zaGFkb3ctZG9tL2ZvY3VzL2ZvY3VzLXRhYmluZGV4LW9yZGVyLXNo
YWRvdy16ZXJvLWRlbGVnYXRlc0ZvY3VzLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NoYWRvdy1kb20vZm9j
dXMvZm9jdXMtdGFiaW5kZXgtb3JkZXItc2hhZG93LXplcm8tZGVsZWdhdGVzRm9jdXMtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNyBAQAorYWJvdmVIb3N0CitzbG90dGVk
IGJlbG93CitzbG90dGVkIGFib3ZlCitiZWxvd0hvc3QKKworUEFTUyBPcmRlciB3aGVuIGFsbCB0
YWJpbmRleD0wIGlzIGFuZCBkZWxlZ2F0ZXNGb2N1cyA9IHRydWUgCisKSW5kZXg6IExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2hhZG93LWRvbS9mb2N1cy9mb2N1
cy10YWJpbmRleC1vcmRlci1zaGFkb3ctemVyby1kZWxlZ2F0ZXNGb2N1cy5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2hhZG93
LWRvbS9mb2N1cy9mb2N1cy10YWJpbmRleC1vcmRlci1zaGFkb3ctemVyby1kZWxlZ2F0ZXNGb2N1
cy5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc2hhZG93LWRvbS9mb2N1cy9mb2N1cy10YWJpbmRleC1vcmRlci1zaGFkb3ct
emVyby1kZWxlZ2F0ZXNGb2N1cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQgQEAK
KzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPkhUTUwgVGVz
dDogZm9jdXMgLSB0aGUgc2VxdWVudGlhbCBmb2N1cyBuYXZpZ2F0aW9uIG9yZGVyIHdpdGggc2hh
ZG93IGRvbSB0aGF0IGRlbGVnYXRlcyBmb2N1cyBhbmQgYWxsIHRhYmluZGV4PTA8L3RpdGxlPgor
PGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRp
cGFnZS9pbnRlcmFjdGlvbi5odG1sI3NlcXVlbnRpYWwtZm9jdXMtbmF2aWdhdGlvbiI+Cis8c2Ny
aXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iL3Jlc291cmNlcy90ZXN0ZHJpdmVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3Rkcml2ZXItdmVuZG9yLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvc2hhZG93LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxib2R5PgorPHNjcmlwdD4KKy8vIFN0
cnVjdHVyZToKKy8vIDxkaXYgI2Fib3ZlSG9zdCB0YWJpbmRleD0wPgorLy8gPGRpdiAjaG9zdCB0
YWJpbmRleD0wPgorLy8gICAgI3NoYWRvd1Jvb3QgKGRlbGVnYXRlc0ZvY3VzKQorLy8gICAgICA8
ZGl2ICNhYm92ZVNsb3QgdGFiaW5kZXg9MD4KKy8vICAgICAgPHNsb3QgI3Nsb3RBYm92ZSB0YWJp
bmRleD0wPgorLy8gICAgICAgIChzbG90dGVkKSA8ZGl2ICNzbG90dGVkQWJvdmUgdGFiaW5kZXg9
MD4KKy8vICAgICAgPHNsb3QgI3Nsb3RCZWxvdyB0YWJpbmRleD0wPgorLy8gICAgICAgIChzbG90
dGVkKSA8ZGl2ICNzbG90dGVkQmVsb3cgdGFiaW5kZXg9MD4KKy8vICAgICAgPGRpdiAjYmVsb3dT
bG90IHRhYmluZGV4PTA+CisvLyA8ZGl2ICNiZWxvd0hvc3QgdGFiaW5kZXg9MD4KKworcHJvbWlz
ZV90ZXN0KCgpID0+IHsKKyAgbGV0IGVsZW1lbnRzSW5GbGF0VHJlZU9yZGVyOworICBsZXQgW2Fi
b3ZlSG9zdCwgaG9zdCwgYWJvdmVTbG90LCBzbG90QWJvdmUsIHNsb3R0ZWRBYm92ZSwgc2xvdEJl
bG93LCBzbG90dGVkQmVsb3csIGJlbG93U2xvdCwgYmVsb3dIb3N0XSA9IGVsZW1lbnRzSW5GbGF0
VHJlZU9yZGVyID0gcHJlcGFyZURPTShkb2N1bWVudC5ib2R5LCB0cnVlKTsKKyAgc2V0VGFiSW5k
ZXgoZWxlbWVudHNJbkZsYXRUcmVlT3JkZXIsIDApOworICByZXNldEZvY3VzKCk7CisgIC8vIEZv
Y3VzIHNob3VsZCBtb3ZlIGluIGZsYXQgdHJlZSBvcmRlciBzaW5jZSBldmVyeSBvbmUgb2YgdGhl
bSBoYXMgdGFiaW5kZXggPT0wLAorICAvLyBidXQgZG9lc24ndCBpbmNsdWRlIHNsb3RzIGFuZCAj
aG9zdC4KKyAgcmV0dXJuIGFzc2VydEZvY3VzT3JkZXIoZWxlbWVudHNJbkZsYXRUcmVlT3JkZXIu
ZmlsdGVyKGVsID0+IChlbCAhPT0gc2xvdEFib3ZlICYmIGVsICE9PSBzbG90QmVsb3cgJiYgZWwg
IT09IGhvc3QpKSk7Cit9LCAiT3JkZXIgd2hlbiBhbGwgdGFiaW5kZXg9MCBpcyBhbmQgZGVsZWdh
dGVzRm9jdXMgPSB0cnVlIik7Cis8L3NjcmlwdD4KKzwvYm9keT4KSW5kZXg6IExheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2hhZG93LWRvbS9mb2N1cy9mb2N1cy10
YWJpbmRleC1vcmRlci1zaGFkb3ctemVyby1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zaGFkb3ctZG9tL2ZvY3Vz
L2ZvY3VzLXRhYmluZGV4LW9yZGVyLXNoYWRvdy16ZXJvLWV4cGVjdGVkLnR4dAkobm9uZXhpc3Rl
bnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NoYWRv
dy1kb20vZm9jdXMvZm9jdXMtdGFiaW5kZXgtb3JkZXItc2hhZG93LXplcm8tZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNyBAQAorYWJvdmVIb3N0CitzbG90dGVkIGJlbG93
CitzbG90dGVkIGFib3ZlCitiZWxvd0hvc3QKKworUEFTUyBPcmRlciB3aGVuIGFsbCB0YWJpbmRl
eD0wIGlzIGFuZCBkZWxlZ2F0ZXNGb2N1cyA9IGZhbHNlIAorCkluZGV4OiBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NoYWRvdy1kb20vZm9jdXMvZm9jdXMtdGFi
aW5kZXgtb3JkZXItc2hhZG93LXplcm8taG9zdC1uZWdhdGl2ZS1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zaGFk
b3ctZG9tL2ZvY3VzL2ZvY3VzLXRhYmluZGV4LW9yZGVyLXNoYWRvdy16ZXJvLWhvc3QtbmVnYXRp
dmUtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc2hhZG93LWRvbS9mb2N1cy9mb2N1cy10YWJpbmRleC1vcmRl
ci1zaGFkb3ctemVyby1ob3N0LW5lZ2F0aXZlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDcgQEAKK2Fib3ZlSG9zdAorc2xvdHRlZCBiZWxvdworc2xvdHRlZCBhYm92ZQor
YmVsb3dIb3N0CisKK1BBU1MgT3JkZXIgd2hlbiBhbGwgdGFiaW5kZXg9MCBleGNlcHQgZm9yIGhv
c3QsIHdoaWNoIGhhcyB0YWJpbmRleD0tMSAKKwpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zaGFkb3ctZG9tL2ZvY3VzL2ZvY3VzLXRhYmluZGV4LW9y
ZGVyLXNoYWRvdy16ZXJvLWhvc3QtbmVnYXRpdmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NoYWRvdy1kb20vZm9jdXMvZm9j
dXMtdGFiaW5kZXgtb3JkZXItc2hhZG93LXplcm8taG9zdC1uZWdhdGl2ZS5odG1sCShub25leGlz
dGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2hh
ZG93LWRvbS9mb2N1cy9mb2N1cy10YWJpbmRleC1vcmRlci1zaGFkb3ctemVyby1ob3N0LW5lZ2F0
aXZlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNSBAQAorPCFET0NUWVBFIGh0bWw+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+SFRNTCBUZXN0OiBmb2N1cyAtIHRoZSBz
ZXF1ZW50aWFsIGZvY3VzIG5hdmlnYXRpb24gb3JkZXIgd2l0aCBzaGFkb3cgZG9tIGFuZCBuZWdh
dGl2ZSBob3N0IHRhYmluZGV4PC90aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6
Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvaW50ZXJhY3Rpb24uaHRtbCNzZXF1ZW50
aWFsLWZvY3VzLW5hdmlnYXRpb24iPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBv
cnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGRyaXZlci5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0ZHJpdmVyLXZlbmRvci5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy11dGlscy5qcyI+PC9zY3Jp
cHQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisvLyBTdHJ1Y3R1cmU6CisvLyA8ZGl2ICNhYm92ZUhvc3Qg
dGFiaW5kZXg9MD4KKy8vIDxkaXYgI2hvc3QgdGFiaW5kZXg9LTE+CisvLyAgICAjc2hhZG93Um9v
dAorLy8gICAgICA8ZGl2ICNhYm92ZVNsb3QgdGFiaW5kZXg9MD4KKy8vICAgICAgPHNsb3QgI3Ns
b3RBYm92ZSB0YWJpbmRleD0wPgorLy8gICAgICAgIChzbG90dGVkKSA8ZGl2ICNzbG90dGVkQWJv
dmUgdGFiaW5kZXg9MD4KKy8vICAgICAgPHNsb3QgI3Nsb3RCZWxvdyB0YWJpbmRleD0wPgorLy8g
ICAgICAgIChzbG90dGVkKSA8ZGl2ICNzbG90dGVkQmVsb3cgdGFiaW5kZXg9MD4KKy8vICAgICAg
PGRpdiAjYmVsb3dTbG90IHRhYmluZGV4PTA+CisvLyA8ZGl2ICNiZWxvd0hvc3QgdGFiaW5kZXg9
MD4KKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IGVsZW1lbnRzSW5GbGF0VHJlZU9yZGVy
OworICBsZXQgW2Fib3ZlSG9zdCwgaG9zdCwgYWJvdmVTbG90LCBzbG90QWJvdmUsIHNsb3R0ZWRB
Ym92ZSwgc2xvdEJlbG93LCBzbG90dGVkQmVsb3csIGJlbG93U2xvdCwgYmVsb3dIb3N0XSA9Cisg
ICAgZWxlbWVudHNJbkZsYXRUcmVlT3JkZXIgPSBwcmVwYXJlRE9NKGRvY3VtZW50LmJvZHksIGZh
bHNlKTsKKyAgc2V0VGFiSW5kZXgoZWxlbWVudHNJbkZsYXRUcmVlT3JkZXIsIDApOworICBob3N0
LnRhYkluZGV4ID0gLTE7CisgIHJlc2V0Rm9jdXMoKTsKKyAgLy8gRm9jdXMgd2lsbGwgb25seSBt
b3ZlIHdpdGhpbiB0aGUgZm9jdXMgbmF2aWdhdGlvbiBzY29wZSBvZiB0aGUgZG9jdW1lbnQgKG5v
dCBnb2luZyB0byBnZXQgaW50byAjaG9zdCkuCisgIHJldHVybiBhc3NlcnRGb2N1c09yZGVyKFth
Ym92ZUhvc3QsIGJlbG93SG9zdF0pOworfSwgIk9yZGVyIHdoZW4gYWxsIHRhYmluZGV4PTAgZXhj
ZXB0IGZvciBob3N0LCB3aGljaCBoYXMgdGFiaW5kZXg9LTEiKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zaGFk
b3ctZG9tL2ZvY3VzL2ZvY3VzLXRhYmluZGV4LW9yZGVyLXNoYWRvdy16ZXJvLWhvc3Qtbm90LXNl
dC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zaGFkb3ctZG9tL2ZvY3VzL2ZvY3VzLXRhYmluZGV4LW9yZGVyLXNo
YWRvdy16ZXJvLWhvc3Qtbm90LXNldC1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zaGFkb3ctZG9tL2ZvY3Vz
L2ZvY3VzLXRhYmluZGV4LW9yZGVyLXNoYWRvdy16ZXJvLWhvc3Qtbm90LXNldC1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3IEBACithYm92ZUhvc3QKK3Nsb3R0ZWQgYmVs
b3cKK3Nsb3R0ZWQgYWJvdmUKK2JlbG93SG9zdAorCitQQVNTIE9yZGVyIHdoZW4gYWxsIHRhYmlu
ZGV4PTAgZXhjZXB0IGhvc3QgKHRhYmluZGV4IG5vdCBzZXQpIAorCkluZGV4OiBMYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NoYWRvdy1kb20vZm9jdXMvZm9jdXMt
dGFiaW5kZXgtb3JkZXItc2hhZG93LXplcm8taG9zdC1ub3Qtc2V0Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zaGFkb3ctZG9t
L2ZvY3VzL2ZvY3VzLXRhYmluZGV4LW9yZGVyLXNoYWRvdy16ZXJvLWhvc3Qtbm90LXNldC5odG1s
CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc2hhZG93LWRvbS9mb2N1cy9mb2N1cy10YWJpbmRleC1vcmRlci1zaGFkb3ctemVyby1o
b3N0LW5vdC1zZXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM3IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5IVE1MIFRlc3Q6IGZvY3Vz
IC0gdGhlIHNlcXVlbnRpYWwgZm9jdXMgbmF2aWdhdGlvbiBvcmRlciB3aXRoIHNoYWRvdyBkb20g
YW5kIG5vbi1mb2N1c2FibGUgaG9zdDwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0
dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2ludGVyYWN0aW9uLmh0bWwjc2Vx
dWVudGlhbC1mb2N1cy1uYXZpZ2F0aW9uIj4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Rkcml2ZXIu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGRyaXZlci12ZW5kb3Iu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctdXRpbHMuanMiPjwv
c2NyaXB0PgorPGJvZHk+Cis8c2NyaXB0PgorLy8gU3RydWN0dXJlOgorLy8gPGRpdiAjYWJvdmVI
b3N0IHRhYmluZGV4PTA+CisvLyA8ZGl2ICNob3N0PgorLy8gICAgI3NoYWRvd1Jvb3QKKy8vICAg
ICAgPGRpdiAjYWJvdmVTbG90IHRhYmluZGV4PTA+CisvLyAgICAgIDxzbG90ICNzbG90QWJvdmUg
dGFiaW5kZXg9MD4KKy8vICAgICAgICAoc2xvdHRlZCkgPGRpdiAjc2xvdHRlZEFib3ZlIHRhYmlu
ZGV4PTA+CisvLyAgICAgIDxzbG90ICNzbG90QmVsb3cgdGFiaW5kZXg9MD4KKy8vICAgICAgICAo
c2xvdHRlZCkgPGRpdiAjc2xvdHRlZEJlbG93IHRhYmluZGV4PTA+CisvLyAgICAgIDxkaXYgI2Jl
bG93U2xvdCB0YWJpbmRleD0wPgorLy8gPGRpdiAjYmVsb3dIb3N0IHRhYmluZGV4PTA+CisKK3By
b21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCBlbGVtZW50c0luRmxhdFRyZWVPcmRlcjsKKyAgbGV0
IFthYm92ZUhvc3QsIGhvc3QsIGFib3ZlU2xvdCwgc2xvdEFib3ZlLCBzbG90dGVkQWJvdmUsIHNs
b3RCZWxvdywgc2xvdHRlZEJlbG93LCBiZWxvd1Nsb3QsIGJlbG93SG9zdF0gPQorICAgIGVsZW1l
bnRzSW5GbGF0VHJlZU9yZGVyID0gcHJlcGFyZURPTShkb2N1bWVudC5ib2R5LCBmYWxzZSk7Cisg
IHNldFRhYkluZGV4KGVsZW1lbnRzSW5GbGF0VHJlZU9yZGVyLCAwKTsKKyAgcmVtb3ZlVGFiSW5k
ZXgoW2hvc3RdKTsKKyAgcmVzZXRGb2N1cygpOworICAvLyBGb2N1cyBzaG91bGQgbW92ZSBpbiBm
bGF0IHRyZWUgb3JkZXIgc2luY2UgZXZlcnkgb25lIG9mIHRoZW0gaGFzIHRhYmluZGV4ID09MCwK
KyAgLy8gYnV0IGRvZXNuJ3QgaW5jbHVkZSAjc2xvdCBzaW5jZSBpdCdzIG5vdCByZW5kZXJlZCBh
bmQgI2hvc3Qgc2luY2UgaXRzIHRhYmluZGV4IGlzIG5vdCBzZXQKKyAgLy8gKGJ1dCAjaG9zdCBp
cyBjb25zaWRlcmVkIGFzIDAgaW4gZm9jdXMgc2NvcGUgbmF2aWdhdGlvbiwga2VlcGluZyB0aGUg
ZmxhdCB0cmVlIG9yZGVyIGZvciB0aGUgc2hhZG93IHJvb3QncyBkZXNjZW5kYW50cykuCisgIHJl
dHVybiBhc3NlcnRGb2N1c09yZGVyKGVsZW1lbnRzSW5GbGF0VHJlZU9yZGVyLmZpbHRlcihlbCA9
PiAoZWwgIT09IHNsb3RBYm92ZSAmJiBlbCAhPT0gc2xvdEJlbG93ICYmIGVsICE9PSBob3N0KSkp
OworfSwgIk9yZGVyIHdoZW4gYWxsIHRhYmluZGV4PTAgZXhjZXB0IGhvc3QgKHRhYmluZGV4IG5v
dCBzZXQpIik7Cis8L3NjcmlwdD4KKzwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2hhZG93LWRvbS9mb2N1cy9mb2N1cy10YWJpbmRleC1v
cmRlci1zaGFkb3ctemVyby1ob3N0LW9uZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zaGFkb3ctZG9tL2ZvY3Vz
L2ZvY3VzLXRhYmluZGV4LW9yZGVyLXNoYWRvdy16ZXJvLWhvc3Qtb25lLWV4cGVjdGVkLnR4dAko
bm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3NoYWRvdy1kb20vZm9jdXMvZm9jdXMtdGFiaW5kZXgtb3JkZXItc2hhZG93LXplcm8taG9z
dC1vbmUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNyBAQAorYWJvdmVI
b3N0CitzbG90dGVkIGJlbG93CitzbG90dGVkIGFib3ZlCitiZWxvd0hvc3QKKworUEFTUyBPcmRl
ciB3aGVuIGFsbCB0YWJpbmRleD0wIGV4Y2VwdCBmb3IgaG9zdCwgd2hpY2ggaGFzIHRhYmluZGV4
PTEgCisKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c2hhZG93LWRvbS9mb2N1cy9mb2N1cy10YWJpbmRleC1vcmRlci1zaGFkb3ctemVyby1ob3N0LW9u
ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc2hhZG93LWRvbS9mb2N1cy9mb2N1cy10YWJpbmRleC1vcmRlci1zaGFkb3ctemVy
by1ob3N0LW9uZS5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc2hhZG93LWRvbS9mb2N1cy9mb2N1cy10YWJpbmRleC1vcmRl
ci1zaGFkb3ctemVyby1ob3N0LW9uZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzcg
QEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPkhUTUwg
VGVzdDogZm9jdXMgLSB0aGUgc2VxdWVudGlhbCBmb2N1cyBuYXZpZ2F0aW9uIG9yZGVyIHdpdGgg
c2hhZG93IGRvbSBhbmQgYWxsIHRhYmluZGV4PTAgZXhjZXB0IGhvc3QgKHRhYmluZGV4PTEpPC90
aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9y
Zy9tdWx0aXBhZ2UvaW50ZXJhY3Rpb24uaHRtbCNzZXF1ZW50aWFsLWZvY3VzLW5hdmlnYXRpb24i
PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGRyaXZlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iL3Jlc291cmNlcy90ZXN0ZHJpdmVyLXZlbmRvci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3NoYWRvdy11dGlscy5qcyI+PC9zY3JpcHQ+Cis8Ym9keT4KKzxzY3JpcHQ+
CisvLyBTdHJ1Y3R1cmU6CisvLyA8ZGl2ICNhYm92ZUhvc3QgdGFiaW5kZXg9MD4KKy8vIDxkaXYg
I2hvc3QgdGFiaW5kZXg9MT4KKy8vICAgICNzaGFkb3dSb290CisvLyAgICAgIDxkaXYgI2Fib3Zl
U2xvdCB0YWJpbmRleD0wPgorLy8gICAgICA8c2xvdCAjc2xvdEFib3ZlIHRhYmluZGV4PTA+Cisv
LyAgICAgICAgKHNsb3R0ZWQpIDxkaXYgI3Nsb3R0ZWRBYm92ZSB0YWJpbmRleD0wPgorLy8gICAg
ICA8c2xvdCAjc2xvdEJlbG93IHRhYmluZGV4PTA+CisvLyAgICAgICAgKHNsb3R0ZWQpIDxkaXYg
I3Nsb3R0ZWRCZWxvdyB0YWJpbmRleD0wPgorLy8gICAgICA8ZGl2ICNiZWxvd1Nsb3QgdGFiaW5k
ZXg9MD4KKy8vIDxkaXYgI2JlbG93SG9zdCB0YWJpbmRleD0wPgorCitwcm9taXNlX3Rlc3QoKCkg
PT4geworICBsZXQgZWxlbWVudHNJbkZsYXRUcmVlT3JkZXI7CisgIGxldCBbYWJvdmVIb3N0LCBo
b3N0LCBhYm92ZVNsb3QsIHNsb3RBYm92ZSwgc2xvdHRlZEFib3ZlLCBzbG90QmVsb3csIHNsb3R0
ZWRCZWxvdywgYmVsb3dTbG90LCBiZWxvd0hvc3RdID0KKyAgICBlbGVtZW50c0luRmxhdFRyZWVP
cmRlciA9IHByZXBhcmVET00oZG9jdW1lbnQuYm9keSwgZmFsc2UpOworICBzZXRUYWJJbmRleChl
bGVtZW50c0luRmxhdFRyZWVPcmRlciwgMCk7CisgIGhvc3QudGFiSW5kZXggPSAxOworICByZXNl
dEZvY3VzKCk7CisgIC8vIEZvY3VzIHNob3VsZCBtb3ZlIGZpcnN0IHRvICNob3N0IGJlY2F1c2Ug
aXQgaGFzIHRhYmluZGV4PTEsIGFuZCB0aGVuIHRvIHRoZSBjb250ZW50cyBvZiBpdHMgc2NvcGUK
KyAgLy8gKGUuZy4gdGhlIGNvbnRlbnRzIG9mIGl0cyBzaGFkb3cgdHJlZSkgaW4gZmxhdCB0cmVl
IG9yZGVyLCBhbmQgdGhlbiBvdXRzaWRlIHRvIHRoZSBkb2N1bWVudCBzY29wZQorICAvLyBhZ2Fp
biAoYWJvdmVIb3N0ICYgYmVsb3dIb3N0KS4KKyAgcmV0dXJuIGFzc2VydEZvY3VzT3JkZXIoW2hv
c3QsIGFib3ZlU2xvdCwgc2xvdHRlZEFib3ZlLCBzbG90dGVkQmVsb3csIGJlbG93U2xvdCwgYWJv
dmVIb3N0LCBiZWxvd0hvc3RdKTsKK30sICJPcmRlciB3aGVuIGFsbCB0YWJpbmRleD0wIGV4Y2Vw
dCBmb3IgaG9zdCwgd2hpY2ggaGFzIHRhYmluZGV4PTEiKTsKKzwvc2NyaXB0PgorPC9ib2R5PgpJ
bmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zaGFkb3ct
ZG9tL2ZvY3VzL2ZvY3VzLXRhYmluZGV4LW9yZGVyLXNoYWRvdy16ZXJvLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zaGFkb3ct
ZG9tL2ZvY3VzL2ZvY3VzLXRhYmluZGV4LW9yZGVyLXNoYWRvdy16ZXJvLmh0bWwJKG5vbmV4aXN0
ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zaGFk
b3ctZG9tL2ZvY3VzL2ZvY3VzLXRhYmluZGV4LW9yZGVyLXNoYWRvdy16ZXJvLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwzNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8dGl0bGU+SFRNTCBUZXN0OiBmb2N1cyAtIHRoZSBzZXF1ZW50aWFsIGZvY3Vz
IG5hdmlnYXRpb24gb3JkZXIgd2l0aCBzaGFkb3cgZG9tIGFuZCBhbGwgdGFiaW5kZXg9MDwvdGl0
bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcv
bXVsdGlwYWdlL2ludGVyYWN0aW9uLmh0bWwjc2VxdWVudGlhbC1mb2N1cy1uYXZpZ2F0aW9uIj4K
KzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Rkcml2ZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGRyaXZlci12ZW5kb3IuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9zaGFkb3ctdXRpbHMuanMiPjwvc2NyaXB0PgorPGJvZHk+Cis8c2NyaXB0Pgor
Ly8gU3RydWN0dXJlOgorLy8gPGRpdiAjYWJvdmVIb3N0IHRhYmluZGV4PTA+CisvLyA8ZGl2ICNo
b3N0IHRhYmluZGV4PTA+CisvLyAgICAjc2hhZG93Um9vdAorLy8gICAgICA8ZGl2ICNhYm92ZVNs
b3QgdGFiaW5kZXg9MD4KKy8vICAgICAgPHNsb3QgI3Nsb3RBYm92ZSB0YWJpbmRleD0wPgorLy8g
ICAgICAgIChzbG90dGVkKSA8ZGl2ICNzbG90dGVkQWJvdmUgdGFiaW5kZXg9MD4KKy8vICAgICAg
PHNsb3QgI3Nsb3RCZWxvdyB0YWJpbmRleD0wPgorLy8gICAgICAgIChzbG90dGVkKSA8ZGl2ICNz
bG90dGVkQmVsb3cgdGFiaW5kZXg9MD4KKy8vICAgICAgPGRpdiAjYmVsb3dTbG90IHRhYmluZGV4
PTA+CisvLyA8ZGl2ICNiZWxvd0hvc3QgdGFiaW5kZXg9MD4KKworcHJvbWlzZV90ZXN0KCgpID0+
IHsKKyAgbGV0IGVsZW1lbnRzSW5GbGF0VHJlZU9yZGVyOworICBsZXQgW2Fib3ZlSG9zdCwgaG9z
dCwgYWJvdmVTbG90LCBzbG90QWJvdmUsIHNsb3R0ZWRBYm92ZSwgc2xvdEJlbG93LCBzbG90dGVk
QmVsb3csIGJlbG93U2xvdCwgYmVsb3dIb3N0XSA9CisgICAgZWxlbWVudHNJbkZsYXRUcmVlT3Jk
ZXIgPSBwcmVwYXJlRE9NKGRvY3VtZW50LmJvZHksIGZhbHNlKTsKKyAgc2V0VGFiSW5kZXgoZWxl
bWVudHNJbkZsYXRUcmVlT3JkZXIsIDApOworICByZXNldEZvY3VzKCk7CisgIC8vIEZvY3VzIHNo
b3VsZCBtb3ZlIGluIGZsYXQgdHJlZSBvcmRlciBzaW5jZSBldmVyeSBvbmUgb2YgdGhlbSBoYXMg
dGFiaW5kZXg9PTAsCisgIC8vIGJ1dCBkb2Vzbid0IGluY2x1ZGUgc2xvdHMuCisgIHJldHVybiBh
c3NlcnRGb2N1c09yZGVyKGVsZW1lbnRzSW5GbGF0VHJlZU9yZGVyLmZpbHRlcihlbCA9PiAoZWwg
IT09IHNsb3RBYm92ZSAmJiBlbCAhPT0gc2xvdEJlbG93KSkpOworfSwgIk9yZGVyIHdoZW4gYWxs
IHRhYmluZGV4PTAgaXMgYW5kIGRlbGVnYXRlc0ZvY3VzID0gZmFsc2UiKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zaGFkb3ctZG9tL2ZvY3VzL3Jlc291cmNlcy9zaGFkb3ctdXRpbHMuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zaGFkb3ctZG9t
L2ZvY3VzL3Jlc291cmNlcy9zaGFkb3ctdXRpbHMuanMJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zaGFkb3ctZG9tL2ZvY3VzL3Jl
c291cmNlcy9zaGFkb3ctdXRpbHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3OSBAQAor
Ly8gU3RydWN0dXJlOgorLy8gPGRpdiAjYWJvdmVIb3N0PgorLy8gPGRpdiAjaG9zdD4KKy8vICAg
ICNzaGFkb3dSb290CisvLyAgICAgIDxkaXYgI2Fib3ZlU2xvdD4KKy8vICAgICAgPHNsb3QgI3Ns
b3RBYm92ZT4KKy8vICAgICAgICAoc2xvdHRlZCkgPGRpdiAjc2xvdHRlZEFib3ZlPgorLy8gICAg
ICA8c2xvdCAjc2xvdEJlbG93PgorLy8gICAgICAgIChzbG90dGVkKSA8ZGl2ICNzbG90dGVkQmVs
b3c+CisvLyAgICAgIDxkaXYgI2JlbG93U2xvdD4KKy8vIDxkaXYgI2JlbG93SG9zdD4KK2Z1bmN0
aW9uIHByZXBhcmVET00oY29udGFpbmVyLCBkZWxlZ2F0ZXNGb2N1cykgeworCisgIGNvbnN0IGFi
b3ZlSG9zdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICBhYm92ZUhvc3QuaW5u
ZXJUZXh0ID0gImFib3ZlSG9zdCI7CisgIGNvbnN0IGhvc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKKyAgaG9zdC5pZCA9ICJob3N0IjsKKyAgY29uc3Qgc2xvdHRlZEJlbG93ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgIHNsb3R0ZWRCZWxvdy5pbm5lclRleHQg
PSAic2xvdHRlZCBiZWxvdyI7CisgIHNsb3R0ZWRCZWxvdy5zbG90ID0gImJlbG93IjsKKyAgY29u
c3Qgc2xvdHRlZEFib3ZlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgIHNsb3R0
ZWRBYm92ZS5pbm5lclRleHQgPSAic2xvdHRlZCBhYm92ZSI7CisgIHNsb3R0ZWRBYm92ZS5zbG90
ID0gImFib3ZlIjsKKworICBjb25zdCBiZWxvd0hvc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKKyAgYmVsb3dIb3N0LmlubmVyVGV4dCA9ICJiZWxvd0hvc3QiOworICBjb250YWlu
ZXIuYXBwZW5kQ2hpbGQoYWJvdmVIb3N0KTsKKyAgY29udGFpbmVyLmFwcGVuZENoaWxkKGhvc3Qp
OworICBjb250YWluZXIuYXBwZW5kQ2hpbGQoYmVsb3dIb3N0KTsKKyAgaG9zdC5hcHBlbmRDaGls
ZChzbG90dGVkQmVsb3cpOworICBob3N0LmFwcGVuZENoaWxkKHNsb3R0ZWRBYm92ZSk7CisgIGNv
bnN0IHNoYWRvd1Jvb3QgPSBob3N0LmF0dGFjaFNoYWRvdyh7IG1vZGU6ICJvcGVuIiwgZGVsZWdh
dGVzRm9jdXM6IGRlbGVnYXRlc0ZvY3VzfSk7CisgIGNvbnN0IGFib3ZlU2xvdCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICBhYm92ZVNsb3QuaW5uZXJUZXh0ID0gImFib3ZlU2xv
dCI7CisKKyAgY29uc3Qgc2xvdEFib3ZlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2xvdCIp
OworICBzbG90QWJvdmUubmFtZSA9ICJhYm92ZSI7CisgIGNvbnN0IHNsb3RCZWxvdyA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoInNsb3QiKTsKKyAgc2xvdEJlbG93Lm5hbWUgPSAiYmVsb3ciOwor
CisgIGNvbnN0IGJlbG93U2xvdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICBi
ZWxvd1Nsb3QuaW5uZXJUZXh0ID0gImJlbG93U2xvdCI7CisgIHNoYWRvd1Jvb3QuYXBwZW5kQ2hp
bGQoYWJvdmVTbG90KTsKKyAgc2hhZG93Um9vdC5hcHBlbmRDaGlsZChzbG90QWJvdmUpOworICBz
aGFkb3dSb290LmFwcGVuZENoaWxkKHNsb3RCZWxvdyk7CisgIHNoYWRvd1Jvb3QuYXBwZW5kQ2hp
bGQoYmVsb3dTbG90KTsKKworICByZXR1cm4gW2Fib3ZlSG9zdCwgaG9zdCwgYWJvdmVTbG90LCBz
bG90QWJvdmUsIHNsb3R0ZWRBYm92ZSwgc2xvdEJlbG93LCBzbG90dGVkQmVsb3csIGJlbG93U2xv
dCwgYmVsb3dIb3N0XTsKK30KKworZnVuY3Rpb24gc2V0VGFiSW5kZXgoZWxlbWVudHMsIHZhbHVl
KSB7CisgIGZvciAoY29uc3QgZWwgb2YgZWxlbWVudHMpIHsKKyAgICBlbC50YWJJbmRleCA9IHZh
bHVlOworICB9Cit9CisKK2Z1bmN0aW9uIHJlbW92ZVRhYkluZGV4KGVsZW1lbnRzKSB7CisgIGZv
ciAoY29uc3QgZWwgb2YgZWxlbWVudHMpIHsKKyAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoInRhYmlu
ZGV4Iik7CisgIH0KK30KKworZnVuY3Rpb24gcmVzZXRGb2N1cygpIHsKKyAgZG9jdW1lbnQuYm9k
eS5mb2N1cygpOworfQorCitmdW5jdGlvbiBuYXZpZ2F0ZUZvY3VzRm9yd2FyZCgpIHsKKyAgLy8g
VEFCID0gJ1x1ZTAwNCcKKyAgcmV0dXJuIHRlc3RfZHJpdmVyLnNlbmRfa2V5cyhkb2N1bWVudC5i
b2R5LCAiXHVlMDA0Iik7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIGFzc2VydEZvY3VzT3JkZXIoZXhw
ZWN0ZWRPcmRlcikgeworICBjb25zdCBzaGFkb3dSb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImhvc3QiKS5zaGFkb3dSb290OworICBmb3IgKGNvbnN0IGVsIG9mIGV4cGVjdGVkT3JkZXIp
IHsKKyAgICBhd2FpdCBuYXZpZ2F0ZUZvY3VzRm9yd2FyZCgpOworICAgIGNvbnN0IGZvY3VzZWQg
PSBzaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQgPyBzaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQgOiBk
b2N1bWVudC5hY3RpdmVFbGVtZW50OworICAgIGFzc2VydF9lcXVhbHMoZm9jdXNlZCwgZWwpOwor
ICB9Cit9CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3NoYWRvdy1kb20vZm9jdXMtc2VsZWN0b3ItZGVsZWdhdGVzRm9jdXMtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c2hhZG93LWRvbS9mb2N1cy1zZWxlY3Rvci1kZWxlZ2F0ZXNGb2N1cy1leHBlY3RlZC50eHQJKG5v
bmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zaGFkb3ctZG9tL2ZvY3VzLXNlbGVjdG9yLWRlbGVnYXRlc0ZvY3VzLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDggQEAKK2ZvbworCitQQVNTIDpmb2N1cyBhcHBsaWVz
IHRvIGhvc3Qgd2l0aCBkZWxlZ2F0ZXNGb2N1cz10cnVlIHdoZW4gdGhlIHNoYWRvdyByb290J3Mg
ZGVzY2VuZGFudCBoYXMgZm9jdXMgCitQQVNTIDpmb2N1cyBkb2Vzbid0IGFwcGx5IHRvIGhvc3Qg
d2l0aCBkZWxlZ2F0ZXNGb2N1cz10cnVlIHdoZW4gc2xvdHRlZCBlbGVtZW50IGhhcyBmb2N1cyAK
K1BBU1MgOmZvY3VzIGRvZXNuJ3QgYXBwbHkgdG8gaG9zdCB3aXRoIGRlbGVnYXRlc0ZvY3VzPWZh
bHNlIHdoZW4gdGhlIHNoYWRvdyByb290J3MgZGVzY2VuZGFudCBoYXMgZm9jdXMgCitQQVNTIDpm
b2N1cyBhcHBsaWVzIHRvIGhvc3Qgd2l0aCBkZWxlZ2F0ZXNGb2N1cz10cnVlIHdoZW4gYW4gZWxl
bWVudCBpbiBhIG5lc3RlZCBzaGFkb3cgdHJlZSB3aXRoIGRlbGVnYXRlc0ZvY3VzPXRydWUgaXMg
Zm9jdXNlZCAKK1BBU1MgOmZvY3VzIGRvZXNuJ3QgYXBwbHkgdG8gaG9zdCB3aXRoIGRlbGVnYXRl
c0ZvY3VzPXRydWUgd2hlbiBhbiBlbGVtZW50IGluIGEgbmVzdGVkIHNoYWRvdyB0cmVlIHdpdGgg
ZGVsZWdhdGVzRm9jdXM9ZmFsc2UgaXMgZm9jdXNlZCAKKwpJbmRleDogTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zaGFkb3ctZG9tL2ZvY3VzLXNlbGVjdG9yLWRl
bGVnYXRlc0ZvY3VzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zaGFkb3ctZG9tL2ZvY3VzLXNlbGVjdG9yLWRlbGVnYXRlc0Zv
Y3VzLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zaGFkb3ctZG9tL2ZvY3VzLXNlbGVjdG9yLWRlbGVnYXRlc0ZvY3VzLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCIgLz4KKyAgPHRpdGxlPkNTUyBUZXN0
IChTZWxlY3RvcnMpOiA6Zm9jdXMgYmVoYXZpb3Igd2l0aCBzaGFkb3cgaG9zdHMgJiBkZWxlZ2F0
ZXNGb2N1cyA8L3RpdGxlPgorICA8bGluayByZWw9ImF1dGhvciIgdGl0bGU9IlJha2luYSBaYXRh
IEFtbmkiIGhyZWY9InJha2luYUBjaHJvbWl1bS5vcmciIC8+CisgIDxsaW5rIHJlbD0iaGVscCIg
aHJlZj0iaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc2VtYW50aWNzLW90
aGVyLmh0bWwjc2VsZWN0b3ItZm9jdXMiIC8+CisgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
ZHJpdmVyLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGRyaXZl
ci12ZW5kb3IuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKzxzY3JpcHQ+CitmdW5j
dGlvbiByZXNldEZvY3VzKCkgeworICBkb2N1bWVudC5ib2R5LmZvY3VzKCk7Cit9CisKK2Z1bmN0
aW9uIGNyZWF0ZUZvY3VzYWJsZURpdigpIHsKKyAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7CisgIGRpdi5pbm5lclRleHQgPSAiZm9vIjsKKyAgZGl2LnRhYkluZGV4
ID0gMDsKKyAgcmV0dXJuIGRpdjsKK30KKworZnVuY3Rpb24gY3JlYXRlU2hhZG93SG9zdChkZWxl
Z2F0ZXNGb2N1cywgY29udGFpbmVyKSB7CisgIGNvbnN0IGhvc3QgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKKyAgaG9zdC5hdHRhY2hTaGFkb3coeyBtb2RlOiAib3BlbiIsIGRlbGVn
YXRlc0ZvY3VzOiBkZWxlZ2F0ZXNGb2N1cyB9KTsKKyAgY29udGFpbmVyLmFwcGVuZENoaWxkKGhv
c3QpOworICByZXR1cm4gaG9zdDsKK30KKwordGVzdCgoKSA9PiB7CisgIHJlc2V0Rm9jdXMoKTsK
KyAgY29uc3QgaG9zdCA9IGNyZWF0ZVNoYWRvd0hvc3QodHJ1ZSwgZG9jdW1lbnQuYm9keSk7Cisg
IGNvbnN0IHNoYWRvd0NoaWxkID0gY3JlYXRlRm9jdXNhYmxlRGl2KCk7CisgIGhvc3Quc2hhZG93
Um9vdC5hcHBlbmRDaGlsZChzaGFkb3dDaGlsZCk7CisKKyAgc2hhZG93Q2hpbGQuZm9jdXMoKTsK
KyAgYXNzZXJ0X3RydWUoc2hhZG93Q2hpbGQubWF0Y2hlcygiOmZvY3VzIikpOworICBhc3NlcnRf
dHJ1ZShob3N0Lm1hdGNoZXMoIjpmb2N1cyIpKTsKK30sICI6Zm9jdXMgYXBwbGllcyB0byBob3N0
IHdpdGggZGVsZWdhdGVzRm9jdXM9dHJ1ZSB3aGVuIHRoZSBzaGFkb3cgcm9vdCdzIGRlc2NlbmRh
bnQgaGFzIGZvY3VzIik7CisKK3Rlc3QoKCkgPT4geworICByZXNldEZvY3VzKCk7CisgIGNvbnN0
IGhvc3QgPSBjcmVhdGVTaGFkb3dIb3N0KHRydWUsIGRvY3VtZW50LmJvZHkpOworICBjb25zdCBz
bG90dGVkID0gY3JlYXRlRm9jdXNhYmxlRGl2KCk7CisgIGhvc3Quc2hhZG93Um9vdC5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzbG90IikpOworICBob3N0LmFwcGVuZENoaWxk
KHNsb3R0ZWQpOworCisgIHNsb3R0ZWQuZm9jdXMoKTsKKyAgYXNzZXJ0X3RydWUoc2xvdHRlZC5t
YXRjaGVzKCI6Zm9jdXMiKSk7CisgIGFzc2VydF9mYWxzZShob3N0Lm1hdGNoZXMoIjpmb2N1cyIp
KTsKK30sICI6Zm9jdXMgZG9lc24ndCBhcHBseSB0byBob3N0IHdpdGggZGVsZWdhdGVzRm9jdXM9
dHJ1ZSB3aGVuIHNsb3R0ZWQgZWxlbWVudCBoYXMgZm9jdXMiKTsKKwordGVzdCgoKSA9PiB7Cisg
IGNvbnN0IGhvc3QgPSBjcmVhdGVTaGFkb3dIb3N0KGZhbHNlLCBkb2N1bWVudC5ib2R5KTsKKyAg
Y29uc3Qgc2hhZG93Q2hpbGQgPSBjcmVhdGVGb2N1c2FibGVEaXYoKTsKKyAgaG9zdC5zaGFkb3dS
b290LmFwcGVuZENoaWxkKHNoYWRvd0NoaWxkKTsKKworICBzaGFkb3dDaGlsZC5mb2N1cygpOwor
ICBhc3NlcnRfdHJ1ZShzaGFkb3dDaGlsZC5tYXRjaGVzKCI6Zm9jdXMiKSk7CisgIGFzc2VydF9m
YWxzZShob3N0Lm1hdGNoZXMoIjpmb2N1cyIpKTsKK30sICI6Zm9jdXMgZG9lc24ndCBhcHBseSB0
byBob3N0IHdpdGggZGVsZWdhdGVzRm9jdXM9ZmFsc2Ugd2hlbiB0aGUgc2hhZG93IHJvb3QncyBk
ZXNjZW5kYW50IGhhcyBmb2N1cyIpOworCit0ZXN0KCgpID0+IHsKKyAgcmVzZXRGb2N1cygpOwor
ICBjb25zdCBob3N0ID0gY3JlYXRlU2hhZG93SG9zdCh0cnVlLCBkb2N1bWVudC5ib2R5KTsKKyAg
Y29uc3QgbmVzdGVkSG9zdCA9IGNyZWF0ZVNoYWRvd0hvc3QodHJ1ZSwgaG9zdC5zaGFkb3dSb290
KTsKKyAgY29uc3QgbmVzdGVkU2hhZG93Q2hpbGQgPSBjcmVhdGVGb2N1c2FibGVEaXYoKTsKKyAg
bmVzdGVkSG9zdC5zaGFkb3dSb290LmFwcGVuZENoaWxkKG5lc3RlZFNoYWRvd0NoaWxkKTsKKwor
ICBuZXN0ZWRTaGFkb3dDaGlsZC5mb2N1cygpOworICBhc3NlcnRfdHJ1ZShuZXN0ZWRTaGFkb3dD
aGlsZC5tYXRjaGVzKCI6Zm9jdXMiKSk7CisgIGFzc2VydF90cnVlKG5lc3RlZEhvc3QubWF0Y2hl
cygiOmZvY3VzIikpOworICBhc3NlcnRfdHJ1ZShob3N0Lm1hdGNoZXMoIjpmb2N1cyIpKTsKK30s
ICI6Zm9jdXMgYXBwbGllcyB0byBob3N0IHdpdGggZGVsZWdhdGVzRm9jdXM9dHJ1ZSB3aGVuIGFu
IGVsZW1lbnQgaW4gYSBuZXN0ZWQgc2hhZG93IHRyZWUgd2l0aCBkZWxlZ2F0ZXNGb2N1cz10cnVl
IGlzIGZvY3VzZWQiKTsKKwordGVzdCgoKSA9PiB7CisgIHJlc2V0Rm9jdXMoKTsKKyAgY29uc3Qg
aG9zdCA9IGNyZWF0ZVNoYWRvd0hvc3QodHJ1ZSwgZG9jdW1lbnQuYm9keSk7CisgIGNvbnN0IG5l
c3RlZEhvc3QgPSBjcmVhdGVTaGFkb3dIb3N0KGZhbHNlLCBob3N0LnNoYWRvd1Jvb3QpOworICBj
b25zdCBuZXN0ZWRTaGFkb3dDaGlsZCA9IGNyZWF0ZUZvY3VzYWJsZURpdigpOworICBuZXN0ZWRI
b3N0LnNoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQobmVzdGVkU2hhZG93Q2hpbGQpOworCisgIG5lc3Rl
ZFNoYWRvd0NoaWxkLmZvY3VzKCk7CisgIGFzc2VydF90cnVlKG5lc3RlZFNoYWRvd0NoaWxkLm1h
dGNoZXMoIjpmb2N1cyIpKTsKKyAgYXNzZXJ0X2ZhbHNlKG5lc3RlZEhvc3QubWF0Y2hlcygiOmZv
Y3VzIikpOworICBhc3NlcnRfZmFsc2UoaG9zdC5tYXRjaGVzKCI6Zm9jdXMiKSk7Cit9LCAiOmZv
Y3VzIGRvZXNuJ3QgYXBwbHkgdG8gaG9zdCB3aXRoIGRlbGVnYXRlc0ZvY3VzPXRydWUgd2hlbiBh
biBlbGVtZW50IGluIGEgbmVzdGVkIHNoYWRvdyB0cmVlIHdpdGggZGVsZWdhdGVzRm9jdXM9ZmFs
c2UgaXMgZm9jdXNlZCIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380813</attachid>
            <date>2019-10-11 20:18:25 -0700</date>
            <delta_ts>2019-10-11 22:20:17 -0700</delta_ts>
            <desc>Adds the support</desc>
            <filename>bug-166484-20191011201825.patch</filename>
            <type>text/plain</type>
            <size>45356</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MDgxNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDE5LTEwLTExICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCB0aGUgc3VwcG9ydCBmb3Ig
U2hhZG93Um9vdC5kZWxlZ2F0ZUZvY3VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjY0ODQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5ODE2MDU4
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxl
bWVudCBkZWxlZ2F0ZXNGb2N1cyBhcyBzcGVjaWZpZWQgaW4gaHR0cHM6Ly9naXRodWIuY29tL3do
YXR3Zy9odG1sL3B1bGwvNDc5NgorCisgICAgICAgIFdoZW4gdGhlIHNoYWRvdyByb290IG9mIGFu
IGVsZW1lbnQgaGFzIGRlbGVnYXRlcyBmb2N1cyBmbGFnIHNldCwgZm9jdXNpbmcgb24gdGhlIHNo
YWRvdyBob3N0IHdvdWxkIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgImRlbGVnYXRlcyIgZm9jdXMg
dG8gdGhlIGZpcnN0IGZvY3VzYWJsZSBlbGVtZW50IGluIHRoZSBzaGFkb3cgdHJlZSBpbnN0ZWFk
LgorCisgICAgICAgIFRoZSBmaXJzdCBmb2N1c2FibGUgZWxlbWVudCBpcyBkZXRlcm1pbmVkIGFz
IHRoZSBmaXJzdCBlbGVtZW50IHRoYXQgaXMgcHJvZ3JhbWF0aWNhbGx5IGZvY3VzYWJsZSBvciBt
b3VzZSBmb2N1c2FibGUKKyAgICAgICAgaW4gdGhlIGZsYXQgdHJlZSAoY29tcG9zZWQgdHJlZSBp
biBXZWJLaXQncyB0ZXJtaW5vbG9neSkgaW4gdGhlIGNhc2Ugb2YgdGhlIGVsZW1lbnQgZ2V0dGlu
ZyBmb2N1c2VkIHZpYSBET00gQVBJLAorICAgICAgICBFbGVtZW50LnByb3RvdHlwZS5mb2N1cywg
YnkgdmlhIG1vdXNlIGRvd24uIEluIHRoZSBjYXNlIG9mIHNlcXVlbnRpYWwgZm9jdXMgbmF2aWdh
dGlvbiAodmlhIHRhYiBrZXkpLCBpdCdzIHRoZQorICAgICAgICBmaXJzdCBrZXlib2FyZCBmb2N1
c2FibGUgZWxlbWVudCBpbiB0aGUgdGFiSW5kZXggb3JkZXIuCisKKyAgICAgICAgVGVzdHM6IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2hhZG93LWRvbS9mb2N1cy9jbGljay1mb2N1
cy1kZWxlZ2F0ZXNGb2N1cy1jbGljay1tZXRob2QuaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zaGFkb3ctZG9tL2ZvY3VzL2NsaWNrLWZvY3VzLWRl
bGVnYXRlc0ZvY3VzLXRhYmluZGV4LXZhcmllcy5odG1sCisgICAgICAgICAgICAgICBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NoYWRvdy1kb20vZm9jdXMvY2xpY2stZm9jdXMtZGVs
ZWdhdGVzRm9jdXMtdGFiaW5kZXgtemVyby5odG1sCisgICAgICAgICAgICAgICBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NoYWRvdy1kb20vZm9jdXMvZm9jdXMtbWV0aG9kLWRlbGVn
YXRlc0ZvY3VzLmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc2hhZG93LWRvbS9mb2N1cy9mb2N1cy10YWJpbmRleC1vcmRlci1zaGFkb3ctbmVnYXRp
dmUtZGVsZWdhdGVzRm9jdXMuaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zaGFkb3ctZG9tL2ZvY3VzL2ZvY3VzLXRhYmluZGV4LW9yZGVyLXNoYWRv
dy12YXJ5aW5nLWRlbGVnYXRlc0ZvY3VzLmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc2hhZG93LWRvbS9mb2N1cy9mb2N1cy10YWJpbmRleC1vcmRl
ci1zaGFkb3ctemVyby1kZWxlZ2F0ZXNGb2N1cy5odG1sCisKKyAgICAgICAgKiBkb20vRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojppc0tleWJvYXJkRm9jdXNhYmxlIGNv
bnN0KTogQSBzaGFkb3cgaG9zdCB3aXRoIHRoZSBkZWxlZ2F0ZXMgZm9jdXMgZmxhZyBpcyBub3Qg
Y29uc2lkZXJlZCBhcworICAgICAgICBrZXlib2FyZCBmb2N1c2FibGUuIFRoZSByZXN0IGlzIHRh
a2VuIGNhcmUgb2YgYnkgdGhlIGV4aXN0aW5nIGxvZ2ljIGluIEZvY3VzQ29udHJvbGxlci4KKyAg
ICAgICAgKFdlYkNvcmU6OmlzUHJvZ3JhbWF0aWNhbGx5Rm9jdXNhYmxlKTogRXh0cmFjdGVkIGZy
b20gRWxlbWVudDo6Zm9jdXMuCisgICAgICAgIChXZWJDb3JlOjpmaW5kRmlyc3RQcm9ncmFtYXRp
Y2FsbHlGb2N1c2FibGVFbGVtZW50SW5Db21wb3NlZFRyZWUpOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnQ6OmZvY3VzKTogQWRkZWQgdGhlIHN1cHBvcnQgZm9yIGRlbGVnYXRlc0Zv
Y3VzLgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dS
b290SW5pdDo6ZGVsZWdhdGVzRm9jdXMpOiBBZGRlZC4KKyAgICAgICAgKiBkb20vRWxlbWVudC5p
ZGw6IERpdHRvLgorICAgICAgICAqIGRvbS9TaGFkb3dSb290LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QpOiBBZGRlZCBkZWxlZ2F0ZXNGb2N1cyB0byB0aGUg
Y29uc3RydWN0b3IuCisgICAgICAgICogZG9tL1NoYWRvd1Jvb3QuaDoKKyAgICAgICAgKiBwYWdl
L0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaW5kRmlyc3RNb3VzZUZvY3Vz
YWJsZUVsZW1lbnRJbkNvbXBvc2VkVHJlZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpkaXNwYXRjaE1vdXNlRXZlbnQpOiBBZGRlZCB0aGUgc3VwcG9ydCBmb3IgZGVs
ZWdhdGVzRm9jdXMuIFVzZXMgdGhlIGZpcnN0IG1vdXNlIGZvY3VzYWJsZQorICAgICAgICBlbGVt
ZW50IGluIHRoZSBmbGF0IHRyZWUgKGNvbXBvc2VkIHRyZWUpIG9yZGVyLgorICAgICAgICAqIHBh
Z2UvRm9jdXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxl
cjo6ZmluZEZpcnN0Rm9jdXNhYmxlRWxlbWVudEluU2hhZG93Um9vdCk6CisgICAgICAgICogcGFn
ZS9Gb2N1c0NvbnRyb2xsZXIuaDoKKwogMjAxOS0xMC0wNyAgSmlld2VuIFRhbiAgPGppZXdlbl90
YW5AYXBwbGUuY29tPgogCiAgICAgICAgIE9ubHkgd3JhcHBpbmcgQ3J5cHRvS2V5cyBmb3IgSURC
IGR1cmluZyBzZXJpYWxpemF0aW9uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCShyZXZpc2lv
biAyNTA4MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRl
ICJDbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oIgogI2luY2x1ZGUgIkNvbXBvc2VkVHJlZUFuY2Vz
dG9ySXRlcmF0b3IuaCIKKyNpbmNsdWRlICJDb21wb3NlZFRyZWVJdGVyYXRvci5oIgogI2luY2x1
ZGUgIkNvbnRhaW5lck5vZGVBbGdvcml0aG1zLmgiCiAjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudFJl
YWN0aW9uUXVldWUuaCIKICNpbmNsdWRlICJDdXN0b21FbGVtZW50UmVnaXN0cnkuaCIKQEAgLTI3
Nyw3ICsyNzgsMTMgQEAgdm9pZCBFbGVtZW50OjpzZXRUYWJJbmRleEZvckJpbmRpbmdzKGludAog
CiBib29sIEVsZW1lbnQ6OmlzS2V5Ym9hcmRGb2N1c2FibGUoS2V5Ym9hcmRFdmVudCopIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIGlzRm9jdXNhYmxlKCkgJiYgIXNob3VsZEJlSWdub3JlZEluU2VxdWVu
dGlhbEZvY3VzTmF2aWdhdGlvbigpICYmIHRhYkluZGV4U2V0RXhwbGljaXRseSgpLnZhbHVlT3Io
MCkgPj0gMDsKKyAgICBpZiAoIShpc0ZvY3VzYWJsZSgpICYmICFzaG91bGRCZUlnbm9yZWRJblNl
cXVlbnRpYWxGb2N1c05hdmlnYXRpb24oKSAmJiB0YWJJbmRleFNldEV4cGxpY2l0bHkoKS52YWx1
ZU9yKDApID49IDApKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGF1dG8qIHJvb3Qg
PSBzaGFkb3dSb290KCkpIHsKKyAgICAgICAgaWYgKHJvb3QtPmRlbGVnYXRlc0ZvY3VzKCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOwogfQogCiBi
b29sIEVsZW1lbnQ6OmlzTW91c2VGb2N1c2FibGUoKSBjb25zdApAQCAtMjMyNyw3ICsyMzM0LDcg
QEAgRXhjZXB0aW9uT3I8U2hhZG93Um9vdCY+IEVsZW1lbnQ6OmF0dGFjaAogICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKICAgICBpZiAoaW5pdC5tb2RlID09
IFNoYWRvd1Jvb3RNb2RlOjpVc2VyQWdlbnQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBU
eXBlRXJyb3IgfTsKLSAgICBhdXRvIHNoYWRvdyA9IFNoYWRvd1Jvb3Q6OmNyZWF0ZShkb2N1bWVu
dCgpLCBpbml0Lm1vZGUpOworICAgIGF1dG8gc2hhZG93ID0gU2hhZG93Um9vdDo6Y3JlYXRlKGRv
Y3VtZW50KCksIGluaXQubW9kZSwgaW5pdC5kZWxlZ2F0ZXNGb2N1cyk7CiAgICAgYXV0byYgcmVz
dWx0ID0gc2hhZG93LmdldCgpOwogICAgIGFkZFNoYWRvd1Jvb3QoV1RGTW92ZShzaGFkb3cpKTsK
ICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMjg3NSw0MSArMjg4Miw3NiBAQCBib29sIEVsZW1lbnQ6
Omhhc0F0dHJpYnV0ZU5TKGNvbnN0IEF0b21TCiAgICAgcmV0dXJuIGVsZW1lbnREYXRhKCktPmZp
bmRBdHRyaWJ1dGVCeU5hbWUocU5hbWUpOwogfQogCitzdGF0aWMgYm9vbCBpc1Byb2dyYW1hdGlj
YWxseUZvY3VzYWJsZShFbGVtZW50JiBlbGVtZW50KQoreworICAgIFNjcmlwdERpc2FsbG93ZWRT
Y29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93ZWRTY29wZTsKKyAgICAvLyBJZiB0aGUg
c3R5bGVzaGVldHMgaGF2ZSBhbHJlYWR5IGJlZW4gbG9hZGVkIHdlIGNhbiByZWxpYWJseSBjaGVj
ayBpc0ZvY3VzYWJsZS4KKyAgICAvLyBJZiBub3QsIHdlIGNvbnRpbnVlIGFuZCBzZXQgdGhlIGZv
Y3VzZWQgbm9kZSBvbiB0aGUgZm9jdXMgY29udHJvbGxlciBiZWxvdyBzbyB0aGF0IGl0IGNhbiBi
ZSB1cGRhdGVkIHNvb24gYWZ0ZXIgYXR0YWNoLgorICAgIGlmIChlbGVtZW50LmRvY3VtZW50KCku
aGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkpIHsKKyAgICAgICAgaWYgKCFlbGVtZW50LmlzRm9jdXNh
YmxlKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiBlbGVt
ZW50LnN1cHBvcnRzRm9jdXMoKTsKK30KKworc3RhdGljIFJlZlB0cjxFbGVtZW50PiBmaW5kRmly
c3RQcm9ncmFtYXRpY2FsbHlGb2N1c2FibGVFbGVtZW50SW5Db21wb3NlZFRyZWUoRWxlbWVudCYg
aG9zdCkKK3sKKyAgICBBU1NFUlQoaG9zdC5zaGFkb3dSb290KCkpOworICAgIGZvciAoYXV0byYg
bm9kZSA6IGNvbXBvc2VkVHJlZURlc2NlbmRhbnRzKGhvc3QpKSB7CisgICAgICAgIGlmICghaXM8
RWxlbWVudD4obm9kZSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgYXV0byYgZWxl
bWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpOworICAgICAgICBpZiAoaXNQcm9ncmFtYXRp
Y2FsbHlGb2N1c2FibGUoZWxlbWVudCkpCisgICAgICAgICAgICByZXR1cm4gJmVsZW1lbnQ7Cisg
ICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCiB2b2lkIEVsZW1lbnQ6OmZvY3VzKGJvb2wg
cmVzdG9yZVByZXZpb3VzU2VsZWN0aW9uLCBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAg
ICAgaWYgKCFpc0Nvbm5lY3RlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoZG9jdW1l
bnQoKS5mb2N1c2VkRWxlbWVudCgpID09IHRoaXMpIHsKLSAgICAgICAgaWYgKGRvY3VtZW50KCku
cGFnZSgpKQotICAgICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgp
LmVsZW1lbnREaWRSZWZvY3VzKCp0aGlzKTsKKyAgICBhdXRvIGRvY3VtZW50ID0gbWFrZVJlZih0
aGlzLT5kb2N1bWVudCgpKTsKKyAgICBpZiAoZG9jdW1lbnQtPmZvY3VzZWRFbGVtZW50KCkgPT0g
dGhpcykgeworICAgICAgICBpZiAoZG9jdW1lbnQtPnBhZ2UoKSkKKyAgICAgICAgICAgIGRvY3Vt
ZW50LT5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmVsZW1lbnREaWRSZWZvY3VzKCp0aGlzKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJlZlB0cjxFbGVtZW50PiBuZXdUYXJnZXQg
PSB0aGlzOworICAgIGlmIChkb2N1bWVudC0+aGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkpCisgICAg
ICAgIGRvY3VtZW50LT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAKKyAgICBpZiAoJm5ld1Rhcmdl
dC0+ZG9jdW1lbnQoKSAhPSBkb2N1bWVudC5wdHIoKSkKICAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKGF1dG8gcm9vdCA9IG1ha2VSZWZQdHIoc2hhZG93Um9vdCgpKSkgeworICAgICAgICBpZiAo
cm9vdC0+ZGVsZWdhdGVzRm9jdXMoKSkgeworICAgICAgICAgICAgbmV3VGFyZ2V0ID0gZmluZEZp
cnN0UHJvZ3JhbWF0aWNhbGx5Rm9jdXNhYmxlRWxlbWVudEluQ29tcG9zZWRUcmVlKCp0aGlzKTsg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICghbmV3VGFyZ2V0KQorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQogICAgIH0KIAotICAgIC8vIElmIHRoZSBzdHlsZXNoZWV0cyBo
YXZlIGFscmVhZHkgYmVlbiBsb2FkZWQgd2UgY2FuIHJlbGlhYmx5IGNoZWNrIGlzRm9jdXNhYmxl
LgotICAgIC8vIElmIG5vdCwgd2UgY29udGludWUgYW5kIHNldCB0aGUgZm9jdXNlZCBub2RlIG9u
IHRoZSBmb2N1cyBjb250cm9sbGVyIGJlbG93IHNvCi0gICAgLy8gdGhhdCBpdCBjYW4gYmUgdXBk
YXRlZCBzb29uIGFmdGVyIGF0dGFjaC4gCi0gICAgaWYgKGRvY3VtZW50KCkuaGF2ZVN0eWxlc2hl
ZXRzTG9hZGVkKCkpIHsKLSAgICAgICAgZG9jdW1lbnQoKS51cGRhdGVTdHlsZUlmTmVlZGVkKCk7
Ci0gICAgICAgIGlmICghaXNGb2N1c2FibGUoKSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICBp
ZiAoZG9jdW1lbnQtPmZvY3VzZWRFbGVtZW50KCkgPT0gbmV3VGFyZ2V0KSB7CisgICAgICAgIGlm
IChkb2N1bWVudC0+cGFnZSgpKQorICAgICAgICAgICAgZG9jdW1lbnQtPnBhZ2UoKS0+Y2hyb21l
KCkuY2xpZW50KCkuZWxlbWVudERpZFJlZm9jdXMoKm5ld1RhcmdldCk7CisgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBpZiAoIXN1cHBvcnRzRm9jdXMoKSkKKyAgICBpZiAoIWlzUHJvZ3Jh
bWF0aWNhbGx5Rm9jdXNhYmxlKCpuZXdUYXJnZXQpKQogICAgICAgICByZXR1cm47CiAKLSAgICBS
ZWZQdHI8Tm9kZT4gcHJvdGVjdDsKLSAgICBpZiAoUGFnZSogcGFnZSA9IGRvY3VtZW50KCkucGFn
ZSgpKSB7Ci0gICAgICAgIGF1dG8mIGZyYW1lID0gKmRvY3VtZW50KCkuZnJhbWUoKTsKLSAgICAg
ICAgaWYgKCFmcmFtZS5oYXNIYWRVc2VySW50ZXJhY3Rpb24oKSAmJiAhZnJhbWUuaXNNYWluRnJh
bWUoKSAmJiAhZG9jdW1lbnQoKS50b3BEb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkuY2FuQWNj
ZXNzKGRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKSkpCisgICAgaWYgKFBhZ2UqIHBhZ2UgPSBk
b2N1bWVudC0+cGFnZSgpKSB7CisgICAgICAgIGF1dG8mIGZyYW1lID0gKmRvY3VtZW50LT5mcmFt
ZSgpOworICAgICAgICBpZiAoIWZyYW1lLmhhc0hhZFVzZXJJbnRlcmFjdGlvbigpICYmICFmcmFt
ZS5pc01haW5GcmFtZSgpICYmICFkb2N1bWVudC0+dG9wRG9jdW1lbnQoKS5zZWN1cml0eU9yaWdp
bigpLmNhbkFjY2Vzcyhkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSkpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICAgICAgLy8gRm9jdXMgYW5kIGNoYW5nZSBldmVudCBoYW5kbGVycyBjYW4g
Y2F1c2UgdXMgdG8gbG9zZSBvdXIgbGFzdCByZWYuCiAgICAgICAgIC8vIElmIGEgZm9jdXMgZXZl
bnQgaGFuZGxlciBjaGFuZ2VzIHRoZSBmb2N1cyB0byBhIGRpZmZlcmVudCBub2RlIGl0CiAgICAg
ICAgIC8vIGRvZXMgbm90IG1ha2Ugc2Vuc2UgdG8gY29udGludWUgYW5kIHVwZGF0ZSBhcHBlYXJl
bmNlLgotICAgICAgICBwcm90ZWN0ID0gdGhpczsKLSAgICAgICAgaWYgKCFwYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS5zZXRGb2N1c2VkRWxlbWVudCh0aGlzLCAqZG9jdW1lbnQoKS5mcmFtZSgpLCBk
aXJlY3Rpb24pKQorICAgICAgICBpZiAoIXBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLnNldEZvY3Vz
ZWRFbGVtZW50KG5ld1RhcmdldC5nZXQoKSwgKmRvY3VtZW50LT5mcmFtZSgpLCBkaXJlY3Rpb24p
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjkxOCw3ICsyOTYwLDcgQEAgdm9p
ZCBFbGVtZW50Ojpmb2N1cyhib29sIHJlc3RvcmVQcmV2aW91cwogICAgIC8vIEZvY3VzaW5nIGEg
Zm9ybSBlbGVtZW50IHRyaWdnZXJzIGFuaW1hdGlvbiBpbiBVSUtpdCB0byBzY3JvbGwgdG8gdGhl
IHJpZ2h0IHBvc2l0aW9uLgogICAgIC8vIENhbGxpbmcgdXBkYXRlRm9jdXNBcHBlYXJhbmNlKCkg
d291bGQgZ2VuZXJhdGUgYW4gdW5uZWNlc3NhcnkgY2FsbCB0byBTY3JvbGxWaWV3OjpzZXRTY3Jv
bGxQb3NpdGlvbigpLAogICAgIC8vIHdoaWNoIHdvdWxkIGp1bXAgdXMgYXJvdW5kIGR1cmluZyB0
aGlzIGFuaW1hdGlvbi4gU2VlIDxyZGFyOi8vcHJvYmxlbS82Njk5NzQxPi4KLSAgICBib29sIGlz
Rm9ybUNvbnRyb2wgPSBpczxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PigqdGhpcyk7CisgICAgYm9v
bCBpc0Zvcm1Db250cm9sID0gaXM8SFRNTEZvcm1Db250cm9sRWxlbWVudD4obmV3VGFyZ2V0KTsK
ICAgICBpZiAoaXNGb3JtQ29udHJvbCkKICAgICAgICAgcmV2ZWFsTW9kZSA9IFNlbGVjdGlvblJl
dmVhbE1vZGU6OlJldmVhbFVwVG9NYWluRnJhbWU7CiAjZW5kaWYKQEAgLTI5MzAsNiArMjk3Miw3
IEBAIHZvaWQgRWxlbWVudDo6Zm9jdXMoYm9vbCByZXN0b3JlUHJldmlvdXMKICAgICB0YXJnZXQt
PnVwZGF0ZUZvY3VzQXBwZWFyYW5jZShyZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24gPyBTZWxlY3Rp
b25SZXN0b3JhdGlvbk1vZGU6OlJlc3RvcmUgOiBTZWxlY3Rpb25SZXN0b3JhdGlvbk1vZGU6OlNl
dERlZmF1bHQsIHJldmVhbE1vZGUpOwogfQogCisvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cu
b3JnLyNmb2N1cy1wcm9jZXNzaW5nLW1vZGVsCiBSZWZQdHI8RWxlbWVudD4gRWxlbWVudDo6Zm9j
dXNBcHBlYXJhbmNlVXBkYXRlVGFyZ2V0KCkKIHsKICAgICByZXR1cm4gdGhpczsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaAkocmV2aXNpb24gMjUwODE1KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjkwLDYgKzI5MCw3IEBAIHB1YmxpYzoKIAogICAg
IHN0cnVjdCBTaGFkb3dSb290SW5pdCB7CiAgICAgICAgIFNoYWRvd1Jvb3RNb2RlIG1vZGU7Cisg
ICAgICAgIGJvb2wgZGVsZWdhdGVzRm9jdXMgeyBmYWxzZSB9OwogICAgIH07CiAgICAgRXhjZXB0
aW9uT3I8U2hhZG93Um9vdCY+IGF0dGFjaFNoYWRvdyhjb25zdCBTaGFkb3dSb290SW5pdCYpOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCShyZXZpc2lvbiAyNTA4MTUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTE1MSw2ICsxNTEsNyBA
QAogCiBkaWN0aW9uYXJ5IFNoYWRvd1Jvb3RJbml0IHsKICAgICByZXF1aXJlZCBTaGFkb3dSb290
TW9kZSBtb2RlOworICAgIGJvb2xlYW4gZGVsZWdhdGVzRm9jdXMgPSBmYWxzZTsKIH07CiAKIEVs
ZW1lbnQgaW1wbGVtZW50cyBBY2Nlc3NpYmlsaXR5Um9sZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dSb290LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93Um9vdC5jcHAJKHJldmlzaW9uIDI1MDgxNSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dSb290LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsOSArNTYsMTAgQEAgc3RydWN0IFNhbWVT
aXplQXNTaGFkb3dSb290IDogcHVibGljIERvYwogCiBDT01QSUxFX0FTU0VSVChzaXplb2YoU2hh
ZG93Um9vdCkgPT0gc2l6ZW9mKFNhbWVTaXplQXNTaGFkb3dSb290KSwgc2hhZG93cm9vdF9zaG91
bGRfc3RheV9zbWFsbCk7CiAKLVNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBTaGFkb3dSb290TW9kZSB0eXBlKQorU2hhZG93Um9vdDo6U2hhZG93Um9vdChEb2N1bWVu
dCYgZG9jdW1lbnQsIFNoYWRvd1Jvb3RNb2RlIHR5cGUsIGJvb2wgZGVsZWdhdGVzRm9jdXMpCiAg
ICAgOiBEb2N1bWVudEZyYWdtZW50KGRvY3VtZW50LCBDcmVhdGVTaGFkb3dSb290KQogICAgICwg
VHJlZVNjb3BlKCp0aGlzLCBkb2N1bWVudCkKKyAgICAsIG1fZGVsZWdhdGVzRm9jdXMoZGVsZWdh
dGVzRm9jdXMpCiAgICAgLCBtX3R5cGUodHlwZSkKICAgICAsIG1fc3R5bGVTY29wZShtYWtlVW5p
cXVlPFN0eWxlOjpTY29wZT4oKnRoaXMpKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd1Jvb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5o
CShyZXZpc2lvbiAyNTA4MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MSw5ICs0MSwxMiBAQCBjbGFzcyBTdHlsZVNoZWV0TGlzdDsKIGNs
YXNzIFNoYWRvd1Jvb3QgZmluYWwgOiBwdWJsaWMgRG9jdW1lbnRGcmFnbWVudCwgcHVibGljIFRy
ZWVTY29wZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChTaGFkb3dSb290KTsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPFNoYWRvd1Jvb3Q+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQs
IFNoYWRvd1Jvb3RNb2RlIHR5cGUpCisKKyAgICBlbnVtIGNsYXNzIEZvY3VzRGVsZWdhdGlvbiB7
IFllcywgTm8gfTsKKworICAgIHN0YXRpYyBSZWY8U2hhZG93Um9vdD4gY3JlYXRlKERvY3VtZW50
JiBkb2N1bWVudCwgU2hhZG93Um9vdE1vZGUgdHlwZSwgYm9vbCBkZWxlZ2F0ZXNGb2N1cyA9IGZh
bHNlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhZG93Um9vdChkb2N1
bWVudCwgdHlwZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFkb3dSb290KGRv
Y3VtZW50LCB0eXBlLCBkZWxlZ2F0ZXNGb2N1cykpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZWY8
U2hhZG93Um9vdD4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFNs
b3RBc3NpZ25tZW50PiYmIGFzc2lnbm1lbnQpCkBAIC02MSw2ICs2NCw3IEBAIHB1YmxpYzoKICAg
ICBib29sIHJlc2V0U3R5bGVJbmhlcml0YW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzZXRTdHls
ZUluaGVyaXRhbmNlOyB9CiAgICAgdm9pZCBzZXRSZXNldFN0eWxlSW5oZXJpdGFuY2UoYm9vbCk7
CiAKKyAgICBib29sIGRlbGVnYXRlc0ZvY3VzKCkgY29uc3QgeyByZXR1cm4gbV9kZWxlZ2F0ZXNG
b2N1czsgfQogICAgIGJvb2wgY29udGFpbnNGb2N1c2VkRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGFpbnNGb2N1c2VkRWxlbWVudDsgfQogICAgIHZvaWQgc2V0Q29udGFpbnNGb2N1c2Vk
RWxlbWVudChib29sIGZsYWcpIHsgbV9jb250YWluc0ZvY3VzZWRFbGVtZW50ID0gZmxhZzsgfQog
CkBAIC05OSwxMiArMTAzLDEwIEBAIHB1YmxpYzoKICAgICBjb25zdCBIYXNoTWFwPEF0b21TdHJp
bmcsIEF0b21TdHJpbmc+JiBwYXJ0TWFwcGluZ3MoKSBjb25zdDsKICAgICB2b2lkIGludmFsaWRh
dGVQYXJ0TWFwcGluZ3MoKTsKIAotcHJvdGVjdGVkOgotICAgIFNoYWRvd1Jvb3QoRG9jdW1lbnQm
LCBTaGFkb3dSb290TW9kZSk7Ci0KK3ByaXZhdGU6CisgICAgU2hhZG93Um9vdChEb2N1bWVudCYs
IFNoYWRvd1Jvb3RNb2RlLCBib29sIGRlbGVnYXRlc0ZvY3VzKTsKICAgICBTaGFkb3dSb290KERv
Y3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFNsb3RBc3NpZ25tZW50PiYmKTsKIAotcHJpdmF0ZToK
ICAgICBib29sIGNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUpIGNvbnN0IG92ZXJyaWRlOwogCiAg
ICAgUmVmPE5vZGU+IGNsb25lTm9kZUludGVybmFsKERvY3VtZW50JiwgQ2xvbmluZ09wZXJhdGlv
bikgb3ZlcnJpZGU7CkBAIC0xMTYsNiArMTE4LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9y
ZXNldFN0eWxlSW5oZXJpdGFuY2UgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNCZWd1bkRlbGV0
aW5nRGV0YWNoZWRDaGlsZHJlbiB7IGZhbHNlIH07CisgICAgYm9vbCBtX2RlbGVnYXRlc0ZvY3Vz
IHsgZmFsc2UgfTsKICAgICBib29sIG1fY29udGFpbnNGb2N1c2VkRWxlbWVudCB7IGZhbHNlIH07
CiAgICAgU2hhZG93Um9vdE1vZGUgbV90eXBlIHsgU2hhZG93Um9vdE1vZGU6OlVzZXJBZ2VudCB9
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAyNTA4
MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJv
bWVDbGllbnQuaCIKICNpbmNsdWRlICJDb21wb3NlZFRyZWVBbmNlc3Rvckl0ZXJhdG9yLmgiCisj
aW5jbHVkZSAiQ29tcG9zZWRUcmVlSXRlcmF0b3IuaCIKICNpbmNsdWRlICJDdXJzb3JMaXN0Lmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRHJhZ0Nv
bnRyb2xsZXIuaCIKQEAgLTI2MjMsNiArMjYyNCwxOSBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6dXBk
YXRlTW91c2VFdmVudFRhcmdlCiAgICAgfQogfQogCitzdGF0aWMgUmVmUHRyPEVsZW1lbnQ+IGZp
bmRGaXJzdE1vdXNlRm9jdXNhYmxlRWxlbWVudEluQ29tcG9zZWRUcmVlKEVsZW1lbnQmIGhvc3Qp
Cit7CisgICAgQVNTRVJUKGhvc3Quc2hhZG93Um9vdCgpKTsKKyAgICBmb3IgKGF1dG8mIG5vZGUg
OiBjb21wb3NlZFRyZWVEZXNjZW5kYW50cyhob3N0KSkgeworICAgICAgICBpZiAoIWlzPEVsZW1l
bnQ+KG5vZGUpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGF1dG8mIGVsZW1lbnQg
PSBkb3duY2FzdDxFbGVtZW50Pihub2RlKTsKKyAgICAgICAgaWYgKGVsZW1lbnQuaXNNb3VzZUZv
Y3VzYWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuICZlbGVtZW50OworICAgIH0KKyAgICByZXR1
cm4gbnVsbHB0cjsKK30KKwogYm9vbCBFdmVudEhhbmRsZXI6OmRpc3BhdGNoTW91c2VFdmVudChj
b25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIE5vZGUqIHRhcmdldE5vZGUsIGJvb2wgLypjYW5j
ZWxhYmxlKi8sIGludCBjbGlja0NvdW50LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRm
b3JtTW91c2VFdmVudCwgYm9vbCBzZXRVbmRlcikKIHsKICAgICBSZWY8RnJhbWU+IHByb3RlY3Rl
ZEZyYW1lKG1fZnJhbWUpOwpAQCAtMjY1NCw2ICsyNjY4LDEyIEBAIGJvb2wgRXZlbnRIYW5kbGVy
OjpkaXNwYXRjaE1vdXNlRXZlbnQoY28KICAgICAvLyBXYWxrIHVwIHRoZSBET00gdHJlZSB0byBz
ZWFyY2ggZm9yIGFuIGVsZW1lbnQgdG8gZm9jdXMuCiAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1l
bnQ7CiAgICAgZm9yIChlbGVtZW50ID0gbV9lbGVtZW50VW5kZXJNb3VzZS5nZXQoKTsgZWxlbWVu
dDsgZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnRJbkNvbXBvc2VkVHJlZSgpKSB7Cisg
ICAgICAgIGlmIChhdXRvKiBzaGFkb3dSb290ID0gZWxlbWVudC0+c2hhZG93Um9vdCgpKSB7Cisg
ICAgICAgICAgICBpZiAoc2hhZG93Um9vdC0+ZGVsZWdhdGVzRm9jdXMoKSkgeworICAgICAgICAg
ICAgICAgIGVsZW1lbnQgPSBmaW5kRmlyc3RNb3VzZUZvY3VzYWJsZUVsZW1lbnRJbkNvbXBvc2Vk
VHJlZSgqZWxlbWVudCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KICAgICAgICAgaWYgKGVsZW1lbnQtPmlzTW91c2VGb2N1c2FibGUoKSkKICAgICAg
ICAgICAgIGJyZWFrOwogICAgIH0KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwko
cmV2aXNpb24gMjUxMDM3KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE5LTEwLTExICBSeW9zdWtlIE5pd2Eg
IDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCB0aGUgc3VwcG9ydCBmb3IgU2hhZG93
Um9vdC5kZWxlZ2F0ZUZvY3VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjY0ODQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5ODE2MDU4PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcG9ydCBXM0Mg
dGVzdHMgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdC9wdWxs
LzE4MDM1L2NvbW1pdHMvYThhODlmMjI0ZjIxNzA3MjMxNzBhNDUyY2IxOGI0NmNhZmI3MjNiNi4K
KworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9yZXNvdXJjZXMvdGVzdGRyaXZlci12ZW5k
b3IuanM6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3NoYWRvdy1kb20vZm9jdXMvY2xp
Y2stZm9jdXMtZGVsZWdhdGVzRm9jdXMtY2xpY2stbWV0aG9kLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3NoYWRvdy1kb20vZm9jdXMvY2xpY2stZm9j
dXMtZGVsZWdhdGVzRm9jdXMtY2xpY2stbWV0aG9kLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9zaGFkb3ctZG9tL2ZvY3VzL2NsaWNrLWZvY3VzLWRlbGVnYXRlc0Zv
Y3VzLXRhYmluZGV4LXZhcmllcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1w
bGF0Zm9ybS10ZXN0cy9zaGFkb3ctZG9tL2ZvY3VzL2NsaWNrLWZvY3VzLWRlbGVnYXRlc0ZvY3Vz
LXRhYmluZGV4LXZhcmllcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVz
dHMvc2hhZG93LWRvbS9mb2N1cy9jbGljay1mb2N1cy1kZWxlZ2F0ZXNGb2N1cy10YWJpbmRleC16
ZXJvLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3No
YWRvdy1kb20vZm9jdXMvY2xpY2stZm9jdXMtZGVsZWdhdGVzRm9jdXMtdGFiaW5kZXgtemVyby5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc2hhZG93LWRvbS9mb2N1
cy9mb2N1cy1tZXRob2QtZGVsZWdhdGVzRm9jdXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc2hhZG93LWRvbS9mb2N1cy9mb2N1cy1tZXRob2QtZGVs
ZWdhdGVzRm9jdXMuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3No
YWRvdy1kb20vZm9jdXMvZm9jdXMtdGFiaW5kZXgtb3JkZXItc2hhZG93LW5lZ2F0aXZlLWRlbGVn
YXRlc0ZvY3VzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL3NoYWRvdy1kb20vZm9jdXMvZm9jdXMtdGFiaW5kZXgtb3JkZXItc2hhZG93LW5lZ2F0aXZl
LWRlbGVnYXRlc0ZvY3VzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0
cy9zaGFkb3ctZG9tL2ZvY3VzL2ZvY3VzLXRhYmluZGV4LW9yZGVyLXNoYWRvdy12YXJ5aW5nLWRl
bGVnYXRlc0ZvY3VzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL3NoYWRvdy1kb20vZm9jdXMvZm9jdXMtdGFiaW5kZXgtb3JkZXItc2hhZG93LXZhcnlp
bmctZGVsZWdhdGVzRm9jdXMuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL3NoYWRvdy1kb20vZm9jdXMvZm9jdXMtdGFiaW5kZXgtb3JkZXItc2hhZG93LXplcm8tZGVs
ZWdhdGVzRm9jdXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0t
dGVzdHMvc2hhZG93LWRvbS9mb2N1cy9mb2N1cy10YWJpbmRleC1vcmRlci1zaGFkb3ctemVyby1k
ZWxlZ2F0ZXNGb2N1cy5odG1sOiBBZGRlZC4KKwogMjAxOS0xMC0xMCAgQ2FybG9zIEFsYmVydG8g
TG9wZXogUGVyZXogIDxjbG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBJbXBvcnQgY3NzL2Nz
cy1pbWFnZXMgV1BUIHRlc3RzCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Jlc291cmNlcy90ZXN0ZHJpdmVyLXZlbmRvci5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Jlc291cmNlcy90
ZXN0ZHJpdmVyLXZlbmRvci5qcwkocmV2aXNpb24gMjUwODE1KQorKysgTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9yZXNvdXJjZXMvdGVzdGRyaXZlci12ZW5kb3Iu
anMJKHdvcmtpbmcgY29weSkKQEAgLTE3OCw2ICsxNzgsMjcgQEAgd2luZG93LnRlc3RfZHJpdmVy
X2ludGVybmFsLnNlbmRfa2V5cyA9IAogICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKIH0K
IAord2luZG93LnRlc3RfZHJpdmVyX2ludGVybmFsLmNsaWNrID0gZnVuY3Rpb24gKGVsZW1lbnQs
IGNvb3JkcykKK3sKKyAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikKKyAgICAgICAgcmV0dXJu
IFByb21pc2UucmVqZWN0KG5ldyBFcnJvcigid2luZG93LmV2ZW50U2VuZGVyIGlzIHVuZGVmaW5l
ZC4iKSk7CisKKyAgICBpZiAodGVzdFJ1bm5lci5pc0lPU0ZhbWlseSAmJiB0ZXN0UnVubmVyLmlz
V2ViS2l0MikgeworICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYAorICAgICAgICAgICAgICAgIHVpQ29u
dHJvbGxlci5zaW5nbGVUYXBBdFBvaW50KCR7Y29vcmRzLnh9LCAke2Nvb3Jkcy55fSwgZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBsZXRl
KCk7CisgICAgICAgICAgICAgICAgfSk7YCwgcmVzb2x2ZSk7CisgICAgICAgIH0pOworICAgIH0K
KworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGNvb3Jkcy54LCBjb29yZHMueSk7CisgICAg
ZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworCisg
ICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOworfQorCiB3aW5kb3cudGVzdF9kcml2ZXJfaW50
ZXJuYWwuYWN0aW9uX3NlcXVlbmNlID0gZnVuY3Rpb24oc291cmNlcykKIHsKICAgICAvLyBodHRw
czovL3czYy5naXRodWIuaW8vd2ViZHJpdmVyLyNwcm9jZXNzaW5nLWFjdGlvbnMgICAgCkluZGV4
OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NoYWRvdy1kb20v
Zm9jdXMvY2xpY2stZm9jdXMtZGVsZWdhdGVzRm9jdXMtY2xpY2stbWV0aG9kLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3NoYWRvdy1kb20vZm9jdXMvY2xpY2stZm9jdXMtZGVsZWdhdGVzRm9jdXMtY2xpY2stbWV0
aG9kLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NoYWRvdy1kb20vZm9jdXMvY2xpY2stZm9jdXMtZGVsZWdh
dGVzRm9jdXMtY2xpY2stbWV0aG9kLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDYgQEAKK3Nsb3R0ZWQKK291dHNpZGUKKworUEFTUyBjYWxsIGNsaWNrKCkgb24gaG9zdCB3
aXRoIGRlbGVnYXRlc0ZvY3VzLCBhbGwgdGFiaW5kZXg9MCAKK1BBU1MgY2FsbCBjbGljaygpIG9u
IHNsb3R0ZWQgZWxlbWVudCBpbiBkZWxlZ2F0ZXNGb2N1cyBzaGFkb3cgdHJlZSwgYWxsIHRhYmlu
ZGV4PTAgCisKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc2hhZG93LWRvbS9mb2N1cy9jbGljay1mb2N1cy1kZWxlZ2F0ZXNGb2N1cy1jbGljay1tZXRo
b2QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3NoYWRvdy1kb20vZm9jdXMvY2xpY2stZm9jdXMtZGVsZWdhdGVzRm9jdXMtY2xp
Y2stbWV0aG9kLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zaGFkb3ctZG9tL2ZvY3VzL2NsaWNrLWZvY3VzLWRlbGVnYXRl
c0ZvY3VzLWNsaWNrLW1ldGhvZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjcgQEAK
KzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPkhUTUwgVGVz
dDogY2xpY2sgb24gc2hhZG93IGhvc3Qgd2l0aCBkZWxlZ2F0ZXNGb2N1czwvdGl0bGU+Cis8c2Ny
aXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iL3Jlc291cmNlcy90ZXN0ZHJpdmVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3Rkcml2ZXItdmVuZG9yLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvc2hhZG93LXV0aWxzLmpzIj48L3NjcmlwdD4KKworPGJvZHk+Cis8ZGl2IGlkPSJob3N0
Ij4KKyAgPGRpdiBpZD0ic2xvdHRlZCI+c2xvdHRlZDwvZGl2PgorPC9kaXY+Cis8ZGl2IGlkPSJv
dXRzaWRlIj5vdXRzaWRlPC9kaXY+Cis8L2JvZHk+CisKKzxzY3JpcHQ+Citjb25zdCBob3N0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhvc3QiKTsKK2NvbnN0IHNsb3R0ZWQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgic2xvdHRlZCIpOworCitjb25zdCBzaGFkb3dSb290ID0gaG9zdC5h
dHRhY2hTaGFkb3coeyBtb2RlOiAib3BlbiIsIGRlbGVnYXRlc0ZvY3VzOiB0cnVlIH0pOworY29u
c3QgYWJvdmVTbG90ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CithYm92ZVNsb3Qu
aW5uZXJUZXh0ID0gImFib3ZlU2xvdCI7Citjb25zdCBzbG90ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgic2xvdCIpOworc2hhZG93Um9vdC5hcHBlbmRDaGlsZChhYm92ZVNsb3QpOworc2hhZG93
Um9vdC5hcHBlbmRDaGlsZChzbG90KTsKKworY29uc3QgZWxlbWVudHNJbkZsYXRUcmVlT3JkZXIg
PSBbaG9zdCwgYWJvdmVTbG90LCBzbG90LCBzbG90dGVkLCBvdXRzaWRlXTsKKworLy8gRmluYWwg
c3RydWN0dXJlOgorLy8gPGRpdiAjaG9zdD4gKGRlbGVnYXRlc0ZvY3VzPXRydWUpCisvLyAgICAj
c2hhZG93Um9vdAorLy8gICAgICA8ZGl2ICNhYm92ZVNsb3Q+CisvLyAgICAgIDxzbG90ICNzbG90
PgorLy8gICAgICAgIChzbG90dGVkKSA8ZGl2ICNzbG90dGVkPgorLy8gPGRpdiAjb3V0c2lkZT4K
KworZnVuY3Rpb24gc2V0QWxsVGFiSW5kZXgodmFsdWUpIHsKKyAgc2V0VGFiSW5kZXgoZWxlbWVu
dHNJbkZsYXRUcmVlT3JkZXIsIHZhbHVlKTsKK30KKworZnVuY3Rpb24gcmVtb3ZlQWxsVGFiSW5k
ZXgoKSB7CisgIHJlbW92ZVRhYkluZGV4KGVsZW1lbnRzSW5GbGF0VHJlZU9yZGVyKTsKK30KKwor
ZnVuY3Rpb24gcmVzZXRUYWJJbmRleEFuZEZvY3VzKCkgeworICByZW1vdmVBbGxUYWJJbmRleCgp
OworICByZXNldEZvY3VzKGRvY3VtZW50KTsKKyAgcmVzZXRGb2N1cyhzaGFkb3dSb290KTsKK30K
KwordGVzdCgoKSA9PiB7CisgIHJlc2V0VGFiSW5kZXhBbmRGb2N1cygpOworICBzZXRBbGxUYWJJ
bmRleCgwKTsKKyAgaG9zdC5jbGljaygpOworICBhc3NlcnRfZXF1YWxzKHNoYWRvd1Jvb3QuYWN0
aXZlRWxlbWVudCwgbnVsbCk7CisgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuYWN0aXZlRWxlbWVu
dCwgZG9jdW1lbnQuYm9keSk7Cit9LCAiY2FsbCBjbGljaygpIG9uIGhvc3Qgd2l0aCBkZWxlZ2F0
ZXNGb2N1cywgYWxsIHRhYmluZGV4PTAiKTsKKwordGVzdCgoKSA9PiB7CisgIHJlc2V0VGFiSW5k
ZXhBbmRGb2N1cygpOworICBzZXRBbGxUYWJJbmRleCgwKTsKKyAgc2xvdHRlZC5jbGljaygpOwor
ICBhc3NlcnRfZXF1YWxzKHNoYWRvd1Jvb3QuYWN0aXZlRWxlbWVudCwgbnVsbCk7CisgIGFzc2Vy
dF9lcXVhbHMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCwgZG9jdW1lbnQuYm9keSk7Cit9LCAiY2Fs
bCBjbGljaygpIG9uIHNsb3R0ZWQgZWxlbWVudCBpbiBkZWxlZ2F0ZXNGb2N1cyBzaGFkb3cgdHJl
ZSwgYWxsIHRhYmluZGV4PTAiKTsKKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zaGFkb3ctZG9tL2ZvY3VzL2NsaWNrLWZvY3VzLWRl
bGVnYXRlc0ZvY3VzLXRhYmluZGV4LXZhcmllcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zaGFkb3ctZG9tL2Zv
Y3VzL2NsaWNrLWZvY3VzLWRlbGVnYXRlc0ZvY3VzLXRhYmluZGV4LXZhcmllcy1leHBlY3RlZC50
eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zaGFkb3ctZG9tL2ZvY3VzL2NsaWNrLWZvY3VzLWRlbGVnYXRlc0ZvY3VzLXRhYmlu
ZGV4LXZhcmllcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1IEBACitz
bG90dGVkCitvdXRzaWRlCisKK1BBU1MgY2xpY2sgb24gaG9zdCB3aXRoIGRlbGVnYXRlc0ZvY3Vz
LCAjYWJvdmVTbG90IHRhYmluZGV4ID0gMiwgI3Nsb3QgYW5kICNzbG90dGVkIHRhYmluZGV4ID0g
MSAKKwpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
aGFkb3ctZG9tL2ZvY3VzL2NsaWNrLWZvY3VzLWRlbGVnYXRlc0ZvY3VzLXRhYmluZGV4LXZhcmll
cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc2hhZG93LWRvbS9mb2N1cy9jbGljay1mb2N1cy1kZWxlZ2F0ZXNGb2N1cy10YWJp
bmRleC12YXJpZXMuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NoYWRvdy1kb20vZm9jdXMvY2xpY2stZm9jdXMtZGVsZWdh
dGVzRm9jdXMtdGFiaW5kZXgtdmFyaWVzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2
OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+SFRN
TCBUZXN0OiBjbGljayBvbiBzaGFkb3cgaG9zdCB3aXRoIGRlbGVnYXRlc0ZvY3VzPC90aXRsZT4K
KzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Rkcml2ZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGRyaXZlci12ZW5kb3IuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9zaGFkb3ctdXRpbHMuanMiPjwvc2NyaXB0PgorCis8Ym9keT4KKzxkaXYgaWQ9
Imhvc3QiPgorICA8ZGl2IGlkPSJzbG90dGVkIj5zbG90dGVkPC9kaXY+Cis8L2Rpdj4KKzxkaXYg
aWQ9Im91dHNpZGUiPm91dHNpZGU8L2Rpdj4KKzwvYm9keT4KKworPHNjcmlwdD4KK2NvbnN0IGhv
c3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaG9zdCIpOworY29uc3Qgc2xvdHRlZCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJzbG90dGVkIik7CisKK2NvbnN0IHNoYWRvd1Jvb3QgPSBo
b3N0LmF0dGFjaFNoYWRvdyh7IG1vZGU6ICJvcGVuIiwgZGVsZWdhdGVzRm9jdXM6IHRydWUgfSk7
Citjb25zdCBhYm92ZVNsb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2Fib3Zl
U2xvdC5pbm5lclRleHQgPSAiYWJvdmVTbG90IjsKK2NvbnN0IHNsb3QgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJzbG90Iik7CisvLyBBZGQgYW4gdW5mb2N1c2FibGUgc3BhY2VyLCBiZWNhdXNl
IHRlc3RfZHJpdmVyLmNsaWNrIHdpbGwgY2xpY2sgb24gdGhlCisvLyBjZW50ZXIgcG9pbnQgb2Yg
I2hvc3QsIGFuZCB3ZSBkb24ndCB3YW50IHRoZSBjbGljayB0byBsYW5kIG9uICNhYm92ZVNsb3QK
Ky8vIG9yICNzbG90LgorY29uc3Qgc3BhY2VyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7CitzcGFjZXIuc3R5bGUgPSAiaGVpZ2h0OiAxMDAwcHg7IjsKK3NoYWRvd1Jvb3QuYXBwZW5k
Q2hpbGQoc3BhY2VyKTsKK3NoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQoYWJvdmVTbG90KTsKK3NoYWRv
d1Jvb3QuYXBwZW5kQ2hpbGQoc2xvdCk7CisKK2NvbnN0IGVsZW1lbnRzSW5GbGF0VHJlZU9yZGVy
ID0gW2hvc3QsIGFib3ZlU2xvdCwgc3BhY2VyLCBzbG90LCBzbG90dGVkLCBvdXRzaWRlXTsKKwor
Ly8gRmluYWwgc3RydWN0dXJlOgorLy8gPGRpdiAjaG9zdD4gKGRlbGVnYXRlc0ZvY3VzPXRydWUp
CisvLyAgICAjc2hhZG93Um9vdAorLy8gICAgICA8ZGl2ICNzcGFjZXI+CisvLyAgICAgIDxkaXYg
I2Fib3ZlU2xvdD4KKy8vICAgICAgPHNsb3QgI3Nsb3Q+CisvLyAgICAgICAgKHNsb3R0ZWQpIDxk
aXYgI3Nsb3R0ZWQ+CisvLyA8ZGl2ICNvdXRzaWRlPgorCitmdW5jdGlvbiBzZXRBbGxUYWJJbmRl
eCh2YWx1ZSkgeworICBzZXRUYWJJbmRleChlbGVtZW50c0luRmxhdFRyZWVPcmRlciwgdmFsdWUp
OworfQorCitmdW5jdGlvbiByZW1vdmVBbGxUYWJJbmRleCgpIHsKKyAgcmVtb3ZlVGFiSW5kZXgo
ZWxlbWVudHNJbkZsYXRUcmVlT3JkZXIpOworfQorCitmdW5jdGlvbiByZXNldFRhYkluZGV4QW5k
Rm9jdXMoKSB7CisgIHJlbW92ZUFsbFRhYkluZGV4KCk7CisgIHJlc2V0Rm9jdXMoZG9jdW1lbnQp
OworICByZXNldEZvY3VzKHNoYWRvd1Jvb3QpOworfQorCitwcm9taXNlX3Rlc3QoYXN5bmMgKCkg
PT4geworICByZXNldFRhYkluZGV4QW5kRm9jdXMoKTsKKyAgc2V0VGFiSW5kZXgoW2Fib3ZlU2xv
dF0sIDIpOworICBzZXRUYWJJbmRleChbc2xvdCwgc2xvdHRlZF0sIDEpOworICBhd2FpdCB0ZXN0
X2RyaXZlci5jbGljayhob3N0KTsKKyAgYXNzZXJ0X2VxdWFscyhzaGFkb3dSb290LmFjdGl2ZUVs
ZW1lbnQsIGFib3ZlU2xvdCk7CisgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuYWN0aXZlRWxlbWVu
dCwgaG9zdCk7Cit9LCAiY2xpY2sgb24gaG9zdCB3aXRoIGRlbGVnYXRlc0ZvY3VzLCAjYWJvdmVT
bG90IHRhYmluZGV4ID0gMiwgI3Nsb3QgYW5kICNzbG90dGVkIHRhYmluZGV4ID0gMSIpOworCis8
L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc2hhZG93LWRvbS9mb2N1cy9jbGljay1mb2N1cy1kZWxlZ2F0ZXNGb2N1cy10YWJpbmRleC16
ZXJvLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3NoYWRvdy1kb20vZm9jdXMvY2xpY2stZm9jdXMtZGVsZWdhdGVz
Rm9jdXMtdGFiaW5kZXgtemVyby1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zaGFkb3ctZG9tL2ZvY3VzL2Ns
aWNrLWZvY3VzLWRlbGVnYXRlc0ZvY3VzLXRhYmluZGV4LXplcm8tZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNSBAQAorc2xvdHRlZAorb3V0c2lkZQorCitQQVNTIGNsaWNr
IG9uIGhvc3Qgd2l0aCBkZWxlZ2F0ZXNGb2N1cywgYWxsIHRhYmluZGV4PTAgZXhjZXB0IHNwYWNl
ciAKKwpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
aGFkb3ctZG9tL2ZvY3VzL2NsaWNrLWZvY3VzLWRlbGVnYXRlc0ZvY3VzLXRhYmluZGV4LXplcm8u
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3NoYWRvdy1kb20vZm9jdXMvY2xpY2stZm9jdXMtZGVsZWdhdGVzRm9jdXMtdGFiaW5k
ZXgtemVyby5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc2hhZG93LWRvbS9mb2N1cy9jbGljay1mb2N1cy1kZWxlZ2F0ZXNG
b2N1cy10YWJpbmRleC16ZXJvLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2OCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+SFRNTCBUZXN0
OiBjbGljayBvbiBzaGFkb3cgaG9zdCB3aXRoIGRlbGVnYXRlc0ZvY3VzPC90aXRsZT4KKzxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3Rkcml2ZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGRyaXZlci12ZW5kb3IuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy9zaGFkb3ctdXRpbHMuanMiPjwvc2NyaXB0PgorCis8Ym9keT4KKzxkaXYgaWQ9Imhvc3Qi
PgorICA8ZGl2IGlkPSJzbG90dGVkIj5zbG90dGVkPC9kaXY+Cis8L2Rpdj4KKzxkaXYgaWQ9Im91
dHNpZGUiPm91dHNpZGU8L2Rpdj4KKzwvYm9keT4KKworPHNjcmlwdD4KK2NvbnN0IGhvc3QgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaG9zdCIpOworY29uc3Qgc2xvdHRlZCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJzbG90dGVkIik7CisKK2NvbnN0IHNoYWRvd1Jvb3QgPSBob3N0LmF0
dGFjaFNoYWRvdyh7IG1vZGU6ICJvcGVuIiwgZGVsZWdhdGVzRm9jdXM6IHRydWUgfSk7Citjb25z
dCBhYm92ZVNsb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2Fib3ZlU2xvdC5p
bm5lclRleHQgPSAiYWJvdmVTbG90IjsKK2NvbnN0IHNsb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJzbG90Iik7CisvLyBBZGQgYW4gdW5mb2N1c2FibGUgc3BhY2VyLCBiZWNhdXNlIHRlc3Rf
ZHJpdmVyLmNsaWNrIHdpbGwgY2xpY2sgb24gdGhlCisvLyBjZW50ZXIgcG9pbnQgb2YgI2hvc3Qs
IGFuZCB3ZSBkb24ndCB3YW50IHRoZSBjbGljayB0byBsYW5kIG9uICNhYm92ZVNsb3QKKy8vIG9y
ICNzbG90LgorY29uc3Qgc3BhY2VyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Citz
cGFjZXIuc3R5bGUgPSAiaGVpZ2h0OiAxMDAwcHg7IjsKK3NoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQo
c3BhY2VyKTsKK3NoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQoYWJvdmVTbG90KTsKK3NoYWRvd1Jvb3Qu
YXBwZW5kQ2hpbGQoc2xvdCk7CisKK2NvbnN0IGVsZW1lbnRzSW5GbGF0VHJlZU9yZGVyID0gW2hv
c3QsIGFib3ZlU2xvdCwgc3BhY2VyLCBzbG90LCBzbG90dGVkLCBvdXRzaWRlXTsKKworLy8gRmlu
YWwgc3RydWN0dXJlOgorLy8gPGRpdiAjaG9zdD4gKGRlbGVnYXRlc0ZvY3VzPXRydWUpCisvLyAg
ICAjc2hhZG93Um9vdAorLy8gICAgICA8ZGl2ICNzcGFjZXI+CisvLyAgICAgIDxkaXYgI2Fib3Zl
U2xvdD4KKy8vICAgICAgPHNsb3QgI3Nsb3Q+CisvLyAgICAgICAgKHNsb3R0ZWQpIDxkaXYgI3Ns
b3R0ZWQ+CisvLyA8ZGl2ICNvdXRzaWRlPgorCitmdW5jdGlvbiBzZXRBbGxUYWJJbmRleCh2YWx1
ZSkgeworICBzZXRUYWJJbmRleChlbGVtZW50c0luRmxhdFRyZWVPcmRlciwgdmFsdWUpOworfQor
CitmdW5jdGlvbiByZW1vdmVBbGxUYWJJbmRleCgpIHsKKyAgcmVtb3ZlVGFiSW5kZXgoZWxlbWVu
dHNJbkZsYXRUcmVlT3JkZXIpOworfQorCitmdW5jdGlvbiByZXNldFRhYkluZGV4QW5kRm9jdXMo
KSB7CisgIHJlbW92ZUFsbFRhYkluZGV4KCk7CisgIHJlc2V0Rm9jdXMoZG9jdW1lbnQpOworICBy
ZXNldEZvY3VzKHNoYWRvd1Jvb3QpOworfQorCitwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4gewor
ICByZXNldFRhYkluZGV4QW5kRm9jdXMoKTsKKyAgc2V0QWxsVGFiSW5kZXgoMCk7CisgIHJlbW92
ZVRhYkluZGV4KFtzcGFjZXJdKTsKKyAgYXdhaXQgdGVzdF9kcml2ZXIuY2xpY2soaG9zdCk7Cisg
IGFzc2VydF9lcXVhbHMoc2hhZG93Um9vdC5hY3RpdmVFbGVtZW50LCBhYm92ZVNsb3QpOworICBh
c3NlcnRfZXF1YWxzKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQsIGhvc3QpOworfSwgImNsaWNrIG9u
IGhvc3Qgd2l0aCBkZWxlZ2F0ZXNGb2N1cywgYWxsIHRhYmluZGV4PTAgZXhjZXB0IHNwYWNlciIp
OworCis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc2hhZG93LWRvbS9mb2N1cy9mb2N1cy1tZXRob2QtZGVsZWdhdGVzRm9jdXMtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc2hhZG93LWRvbS9mb2N1cy9mb2N1cy1tZXRob2QtZGVsZWdhdGVzRm9jdXMt
ZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc2hhZG93LWRvbS9mb2N1cy9mb2N1cy1tZXRob2QtZGVsZWdhdGVz
Rm9jdXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTYgQEAKK3Nsb3R0
ZWRUb1NlY29uZFNsb3QKK3Nsb3R0ZWRUb0ZpcnN0U2xvdAorb3V0c2lkZQorCitQQVNTIGZvY3Vz
KCkgb24gaG9zdCB3aXRoIGRlbGVnYXRlc0ZvY3VzLCBhbGwgdGFiaW5kZXg9MCAKK1BBU1MgZm9j
dXMoKSBvbiBob3N0IHdpdGggZGVsZWdhdGVzRm9jdXMgJiB0YWJpbmRleCA9LTEsIGFsbCBvdGhl
ciB0YWJpbmRleD0wIAorUEFTUyBmb2N1cygpIG9uIGhvc3Qgd2l0aCBkZWxlZ2F0ZXNGb2N1cyAm
IG5vIHRhYmluZGV4LCBhbGwgb3RoZXIgdGFiaW5kZXg9MCAKK1BBU1MgZm9jdXMoKSBvbiBob3N0
IHdpdGggZGVsZWdhdGVzRm9jdXMgJiB0YWJpbmRleCA9IDAsIGFsbCBvdGhlciB0YWJpbmRleD0t
MSAKK1BBU1MgZm9jdXMoKSBvbiBob3N0IHdpdGggZGVsZWdhdGVzRm9jdXMsIGFsbCB3aXRob3V0
IHRhYmluZGV4IAorUEFTUyBmb2N1cygpIG9uIGhvc3Qgd2l0aCBkZWxlZ2F0ZXNGb2N1cywgYWxs
IHRhYmluZGV4PS0xIAorUEFTUyBmb2N1cygpIG9uIGhvc3Qgd2l0aCBkZWxlZ2F0ZXNGb2N1cyAm
IHRhYmluZGV4PTAsICNiZWxvd1Nsb3RzIHdpdGggdGFiaW5kZXg9MCAKK1BBU1MgZm9jdXMoKSBv
biBob3N0IHdpdGggZGVsZWdhdGVzRm9jdXMgJiB0YWJpbmRleD0wLCAjb3V0c2lkZSB3aXRoIHRh
YmluZGV4PTAgCitQQVNTIGZvY3VzKCkgb24gaG9zdCB3aXRoIGRlbGVnYXRlc0ZvY3VzICYgdGFi
aW5kZXg9MCwgI2Fib3ZlU2xvdHMgYW5kICNiZWxvd1Nsb3RzIHdpdGggdGFiaW5kZXg9MCAKK1BB
U1MgZm9jdXMoKSBvbiBob3N0IHdpdGggZGVsZWdhdGVzRm9jdXMgJiB0YWJpbmRleD0wLCAjYWJv
dmVTbG90cyB3aXRoIHRhYmluZGV4PTAgYW5kICNiZWxvd1Nsb3RzIHdpdGggdGFiaW5kZXg9MSAK
K1BBU1MgZm9jdXMoKSBvbiBob3N0IHdpdGggZGVsZWdhdGVzRm9jdXMgJiB0YWJpbmRleD0wLCAj
c2xvdHRlZFRvRmlyc3RTbG90LCAjc2xvdHRlZFRvU2Vjb25kU2xvdCwgI2JlbG93U2xvdHMgIHdp
dGggdGFiaW5kZXg9MCAKKwpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zaGFkb3ctZG9tL2ZvY3VzL2ZvY3VzLW1ldGhvZC1kZWxlZ2F0ZXNGb2N1cy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc2hhZG93LWRvbS9mb2N1cy9mb2N1cy1tZXRob2QtZGVsZWdhdGVzRm9jdXMuaHRtbAko
bm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3NoYWRvdy1kb20vZm9jdXMvZm9jdXMtbWV0aG9kLWRlbGVnYXRlc0ZvY3VzLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwyMzEgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPHRpdGxlPkhUTUwgVGVzdDogZm9jdXMoKSBvbiBzaGFkb3cgaG9zdCB3
aXRoIGRlbGVnYXRlc0ZvY3VzPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Rkcml2ZXIu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGRyaXZlci12ZW5kb3Iu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctdXRpbHMuanMiPjwv
c2NyaXB0PgorCis8Ym9keT4KKzxkaXYgaWQ9Imhvc3QiPgorICA8ZGl2IGlkPSJzbG90dGVkVG9T
ZWNvbmRTbG90IiBzbG90PSJzZWNvbmRTbG90Ij5zbG90dGVkVG9TZWNvbmRTbG90PC9kaXY+Cisg
IDxkaXYgaWQ9InNsb3R0ZWRUb0ZpcnN0U2xvdCIgc2xvdD0iZmlyc3RTbG90Ij5zbG90dGVkVG9G
aXJzdFNsb3Q8L2Rpdj4KKzwvZGl2PgorPGRpdiBpZD0ib3V0c2lkZSI+b3V0c2lkZTwvZGl2Pgor
PC9ib2R5PgorCis8c2NyaXB0PgorY29uc3QgaG9zdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJob3N0Iik7Citjb25zdCBzbG90dGVkVG9TZWNvbmRTbG90ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInNsb3R0ZWRUb1NlY29uZFNsb3QiKTsKK2NvbnN0IHNsb3R0ZWRUb0ZpcnN0U2xvdCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzbG90dGVkVG9GaXJzdFNsb3QiKTsKK2NvbnN0IG91
dHNpZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0c2lkZSIpOworCitjb25zdCBzaGFk
b3dSb290ID0gaG9zdC5hdHRhY2hTaGFkb3coeyBtb2RlOiAib3BlbiIsIGRlbGVnYXRlc0ZvY3Vz
OiB0cnVlIH0pOworY29uc3QgYWJvdmVTbG90cyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOworYWJvdmVTbG90cy5pbm5lclRleHQgPSAiYWJvdmVTbG90cyI7Citjb25zdCBmaXJzdFNs
b3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzbG90Iik7CitmaXJzdFNsb3QubmFtZSA9ICJm
aXJzdFNsb3QiOworY29uc3Qgc2Vjb25kU2xvdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNs
b3QiKTsKK3NlY29uZFNsb3QubmFtZSA9ICJzZWNvbmRTbG90IjsKK2NvbnN0IGJlbG93U2xvdHMg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2JlbG93U2xvdHMuaW5uZXJUZXh0ID0g
ImJlbG93U2xvdHMiOworc2hhZG93Um9vdC5hcHBlbmRDaGlsZChhYm92ZVNsb3RzKTsKK3NoYWRv
d1Jvb3QuYXBwZW5kQ2hpbGQoZmlyc3RTbG90KTsKK3NoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQoc2Vj
b25kU2xvdCk7CitzaGFkb3dSb290LmFwcGVuZENoaWxkKGJlbG93U2xvdHMpOworCitjb25zdCBl
bGVtZW50c0luRmxhdFRyZWVPcmRlciA9IFtob3N0LCBhYm92ZVNsb3RzLCBmaXJzdFNsb3QsCisg
IHNsb3R0ZWRUb0ZpcnN0U2xvdCwgc2Vjb25kU2xvdCwgc2xvdHRlZFRvU2Vjb25kU2xvdCwgYmVs
b3dTbG90cywgb3V0c2lkZV07CisKKy8vIEZpbmFsIHN0cnVjdHVyZToKKy8vIDxkaXYgI2hvc3Q+
IChkZWxlZ2F0ZXNGb2N1cz10cnVlKQorLy8gICAgI3NoYWRvd1Jvb3QKKy8vICAgICAgPGRpdiAj
YWJvdmVTbG90cz4KKy8vICAgICAgPHNsb3QgI2ZpcnN0U2xvdD4KKy8vICAgICAgICAoc2xvdHRl
ZCkgPGRpdiAjc2xvdHRlZFRvRmlyc3RTbG90PgorLy8gICAgICA8c2xvdCAjc2Vjb25kU2xvdD4K
Ky8vICAgICAgICAoc2xvdHRlZCkgPGRpdiAjc2xvdHRlZFRvU2Vjb25kU2xvdD4KKy8vICAgICAg
PGRpdiAjYmVsb3dTbG90cz4KKy8vIDxkaXYgI291dHNpZGU+CisKKworZnVuY3Rpb24gc2V0QWxs
VGFiSW5kZXgodmFsdWUpIHsKKyAgc2V0VGFiSW5kZXgoZWxlbWVudHNJbkZsYXRUcmVlT3JkZXIs
IHZhbHVlKTsKK30KKworZnVuY3Rpb24gcmVtb3ZlQWxsVGFiSW5kZXgoKSB7CisgIHJlbW92ZVRh
YkluZGV4KGVsZW1lbnRzSW5GbGF0VHJlZU9yZGVyKTsKK30KKworZnVuY3Rpb24gcmVzZXRUYWJJ
bmRleEFuZEZvY3VzKCkgeworICByZW1vdmVBbGxUYWJJbmRleCgpOworICByZXNldEZvY3VzKGRv
Y3VtZW50KTsKKyAgcmVzZXRGb2N1cyhzaGFkb3dSb290KTsKK30KKwordGVzdCgoKSA9PiB7Cisg
IHJlc2V0VGFiSW5kZXhBbmRGb2N1cygpOworICBzZXRBbGxUYWJJbmRleCgwKTsKKyAgLy8gU3Ry
dWN0dXJlOgorICAvLyA8ZGl2ICNob3N0PiAoZGVsZWdhdGVzRm9jdXM9dHJ1ZSkgdGFiaW5kZXg9
MAorICAvLyAgICAjc2hhZG93Um9vdAorICAvLyAgICAgIDxkaXYgI2Fib3ZlU2xvdHM+IHRhYmlu
ZGV4PTAKKyAgLy8gICAgICA8c2xvdCAjZmlyc3RTbG90PiB0YWJpbmRleD0wCisgIC8vICAgICAg
ICAoc2xvdHRlZCkgPGRpdiAjc2xvdHRlZFRvRmlyc3RTbG90PiB0YWJpbmRleD0wCisgIC8vICAg
ICAgPHNsb3QgI3NlY29uZFNsb3Q+IHRhYmluZGV4PTAKKyAgLy8gICAgICAgIChzbG90dGVkKSA8
ZGl2ICNzbG90dGVkVG9TZWNvbmRTbG90PiB0YWJpbmRleD0wCisgIC8vICAgICAgPGRpdiAjYmVs
b3dTbG90cz4gdGFiaW5kZXg9MAorICAvLyA8ZGl2ICNvdXRzaWRlPiB0YWJpbmRleD0wCisgIC8v
IEZpcnN0IGZvY3VzYWJsZSA9ICNhYm92ZVNsb3RzCisgIGhvc3QuZm9jdXMoKTsKKyAgYXNzZXJ0
X2VxdWFscyhzaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQsIGFib3ZlU2xvdHMpOworICBhc3NlcnRf
ZXF1YWxzKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQsIGhvc3QpOworfSwgImZvY3VzKCkgb24gaG9z
dCB3aXRoIGRlbGVnYXRlc0ZvY3VzLCBhbGwgdGFiaW5kZXg9MCIpOworCit0ZXN0KCgpID0+IHsK
KyAgcmVzZXRUYWJJbmRleEFuZEZvY3VzKCk7CisgIHNldEFsbFRhYkluZGV4KDApOworICBzZXRU
YWJJbmRleChbaG9zdF0sIC0xKTsKKyAgLy8gRmlyc3QgZm9jdXNhYmxlID0gI2Fib3ZlU2xvdHMK
KyAgaG9zdC5mb2N1cygpOworICBhc3NlcnRfZXF1YWxzKHNoYWRvd1Jvb3QuYWN0aXZlRWxlbWVu
dCwgYWJvdmVTbG90cyk7CisgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCwg
aG9zdCk7Cit9LCAiZm9jdXMoKSBvbiBob3N0IHdpdGggZGVsZWdhdGVzRm9jdXMgJiB0YWJpbmRl
eCA9LTEsIGFsbCBvdGhlciB0YWJpbmRleD0wIik7CisKK3Rlc3QoKCkgPT4geworICByZXNldFRh
YkluZGV4QW5kRm9jdXMoKTsKKyAgc2V0VGFiSW5kZXgoW2Fib3ZlU2xvdHMsIHNsb3R0ZWRUb0Zp
cnN0U2xvdCwgc2xvdHRlZFRvU2Vjb25kU2xvdCwgYmVsb3dTbG90c10sIDApOworICAvLyBGaXJz
dCBmb2N1c2FibGUgPSAjYWJvdmVTbG90cworICBob3N0LmZvY3VzKCk7CisgIGFzc2VydF9lcXVh
bHMoc2hhZG93Um9vdC5hY3RpdmVFbGVtZW50LCBhYm92ZVNsb3RzKTsKKyAgYXNzZXJ0X2VxdWFs
cyhkb2N1bWVudC5hY3RpdmVFbGVtZW50LCBob3N0KTsKK30sICJmb2N1cygpIG9uIGhvc3Qgd2l0
aCBkZWxlZ2F0ZXNGb2N1cyAmIG5vIHRhYmluZGV4LCBhbGwgb3RoZXIgdGFiaW5kZXg9MCIpOwor
Cit0ZXN0KCgpID0+IHsKKyAgcmVzZXRUYWJJbmRleEFuZEZvY3VzKCk7CisgIHNldEFsbFRhYklu
ZGV4KC0xKTsKKyAgc2V0VGFiSW5kZXgoW2hvc3RdLCAwKTsKKyAgLy8gRmlyc3QgZm9jdXNhYmxl
ID0gI2Fib3ZlU2xvdHMKKyAgaG9zdC5mb2N1cygpOworICBhc3NlcnRfZXF1YWxzKHNoYWRvd1Jv
b3QuYWN0aXZlRWxlbWVudCwgYWJvdmVTbG90cyk7CisgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQu
YWN0aXZlRWxlbWVudCwgaG9zdCk7Cit9LCAiZm9jdXMoKSBvbiBob3N0IHdpdGggZGVsZWdhdGVz
Rm9jdXMgJiB0YWJpbmRleCA9IDAsIGFsbCBvdGhlciB0YWJpbmRleD0tMSIpOworCit0ZXN0KCgp
ID0+IHsKKyAgcmVzZXRUYWJJbmRleEFuZEZvY3VzKCk7CisgIHJlbW92ZUFsbFRhYkluZGV4KCk7
CisgIC8vIE5vIGZvY3VzYWJsZSBlbGVtZW50IHVuZGVyICNob3N0IGluIHRoZSBmbGF0IHRyZWUu
CisgIGhvc3QuZm9jdXMoKTsKKyAgYXNzZXJ0X2VxdWFscyhzaGFkb3dSb290LmFjdGl2ZUVsZW1l
bnQsIG51bGwpOworICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQsIGRvY3Vt
ZW50LmJvZHkpOworfSwgImZvY3VzKCkgb24gaG9zdCB3aXRoIGRlbGVnYXRlc0ZvY3VzLCBhbGwg
d2l0aG91dCB0YWJpbmRleCIpOworCit0ZXN0KCgpID0+IHsKKyAgcmVzZXRUYWJJbmRleEFuZEZv
Y3VzKCk7CisgIC8vIEZpcnN0IGZvY3VzYWJsZSA9ICNhYm92ZVNsb3RzCisgIHNldEFsbFRhYklu
ZGV4KC0xKTsKKyAgaG9zdC5mb2N1cygpOworICBhc3NlcnRfZXF1YWxzKHNoYWRvd1Jvb3QuYWN0
aXZlRWxlbWVudCwgYWJvdmVTbG90cyk7CisgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuYWN0aXZl
RWxlbWVudCwgaG9zdCk7Cit9LCAiZm9jdXMoKSBvbiBob3N0IHdpdGggZGVsZWdhdGVzRm9jdXMs
IGFsbCB0YWJpbmRleD0tMSIpOworCit0ZXN0KCgpID0+IHsKKyAgcmVzZXRUYWJJbmRleEFuZEZv
Y3VzKCk7CisgIHJlbW92ZUFsbFRhYkluZGV4KCk7CisgIHNldFRhYkluZGV4KFtob3N0LCBiZWxv
d1Nsb3RzXSwgMCk7CisgIC8vIFN0cnVjdHVyZToKKyAgLy8gPGRpdiAjaG9zdD4gKGRlbGVnYXRl
c0ZvY3VzPXRydWUpIHRhYmluZGV4PTAKKyAgLy8gICAgI3NoYWRvd1Jvb3QKKyAgLy8gICAgICA8
ZGl2ICNhYm92ZVNsb3RzPgorICAvLyAgICAgIDxzbG90ICNmaXJzdFNsb3Q+CisgIC8vICAgICAg
ICAoc2xvdHRlZCkgPGRpdiAjc2xvdHRlZFRvRmlyc3RTbG90PgorICAvLyAgICAgIDxzbG90ICNz
ZWNvbmRTbG90PgorICAvLyAgICAgICAgKHNsb3R0ZWQpIDxkaXYgI3Nsb3R0ZWRUb1NlY29uZFNs
b3Q+CisgIC8vICAgICAgPGRpdiAjYmVsb3dTbG90cz4gdGFiaW5kZXg9MAorICAvLyA8ZGl2ICNv
dXRzaWRlPgorICAvLyBGaXJzdCBmb2N1c2FibGUgPSAjYmVsb3dTbG90cworICBob3N0LmZvY3Vz
KCk7CisgIGFzc2VydF9lcXVhbHMoc2hhZG93Um9vdC5hY3RpdmVFbGVtZW50LCBiZWxvd1Nsb3Rz
KTsKKyAgYXNzZXJ0X2VxdWFscyhkb2N1bWVudC5hY3RpdmVFbGVtZW50LCBob3N0KTsKK30sICJm
b2N1cygpIG9uIGhvc3Qgd2l0aCBkZWxlZ2F0ZXNGb2N1cyAmIHRhYmluZGV4PTAsICNiZWxvd1Ns
b3RzIHdpdGggdGFiaW5kZXg9MCIpOworCit0ZXN0KCgpID0+IHsKKyAgcmVzZXRUYWJJbmRleEFu
ZEZvY3VzKCk7CisgIHJlbW92ZUFsbFRhYkluZGV4KCk7CisgIHNldFRhYkluZGV4KFtob3N0LCBv
dXRzaWRlXSwgMCk7CisgIC8vIFN0cnVjdHVyZToKKyAgLy8gPGRpdiAjaG9zdD4gKGRlbGVnYXRl
c0ZvY3VzPXRydWUpIHRhYmluZGV4PTAKKyAgLy8gICAgI3NoYWRvd1Jvb3QKKyAgLy8gICAgICA8
ZGl2ICNhYm92ZVNsb3RzPgorICAvLyAgICAgIDxzbG90ICNmaXJzdFNsb3Q+CisgIC8vICAgICAg
ICAoc2xvdHRlZCkgPGRpdiAjc2xvdHRlZFRvRmlyc3RTbG90PgorICAvLyAgICAgIDxzbG90ICNz
ZWNvbmRTbG90PgorICAvLyAgICAgICAgKHNsb3R0ZWQpIDxkaXYgI3Nsb3R0ZWRUb1NlY29uZFNs
b3Q+CisgIC8vICAgICAgPGRpdiAjYmVsb3dTbG90cz4KKyAgLy8gPGRpdiAjb3V0c2lkZT4gdGFi
aW5kZXg9MAorICAvLyBObyBmb2N1c2FibGUgZWxlbWVudCB1bmRlciAjaG9zdCBpbiB0aGUgZmxh
dCB0cmVlLgorICBob3N0LmZvY3VzKCk7CisgIGFzc2VydF9lcXVhbHMoc2hhZG93Um9vdC5hY3Rp
dmVFbGVtZW50LCBudWxsKTsKKyAgYXNzZXJ0X2VxdWFscyhkb2N1bWVudC5hY3RpdmVFbGVtZW50
LCBkb2N1bWVudC5ib2R5KTsKK30sICJmb2N1cygpIG9uIGhvc3Qgd2l0aCBkZWxlZ2F0ZXNGb2N1
cyAmIHRhYmluZGV4PTAsICNvdXRzaWRlIHdpdGggdGFiaW5kZXg9MCIpOworCit0ZXN0KCgpID0+
IHsKKyAgcmVzZXRUYWJJbmRleEFuZEZvY3VzKCk7CisgIHNldFRhYkluZGV4KFtob3N0LCBhYm92
ZVNsb3RzLCBiZWxvd1Nsb3RzXSwgMCk7CisgIC8vIFN0cnVjdHVyZToKKyAgLy8gPGRpdiAjaG9z
dD4gKGRlbGVnYXRlc0ZvY3VzPXRydWUpIHRhYmluZGV4PTAKKyAgLy8gICAgI3NoYWRvd1Jvb3QK
KyAgLy8gICAgICA8ZGl2ICNhYm92ZVNsb3RzPiB0YWJpbmRleD0wCisgIC8vICAgICAgPHNsb3Qg
I2ZpcnN0U2xvdD4KKyAgLy8gICAgICAgIChzbG90dGVkKSA8ZGl2ICNzbG90dGVkVG9GaXJzdFNs
b3Q+CisgIC8vICAgICAgPHNsb3QgI3NlY29uZFNsb3Q+CisgIC8vICAgICAgICAoc2xvdHRlZCkg
PGRpdiAjc2xvdHRlZFRvU2Vjb25kU2xvdD4KKyAgLy8gICAgICA8ZGl2ICNiZWxvd1Nsb3RzPiB0
YWJpbmRleD0wCisgIC8vIDxkaXYgI291dHNpZGU+CisgIC8vIEZpcnN0IGZvY3VzYWJsZSA9ICNh
Ym92ZVNsb3RzCisgIGhvc3QuZm9jdXMoKTsKKyAgYXNzZXJ0X2VxdWFscyhzaGFkb3dSb290LmFj
dGl2ZUVsZW1lbnQsIGFib3ZlU2xvdHMpOworICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmFjdGl2
ZUVsZW1lbnQsIGhvc3QpOworfSwgImZvY3VzKCkgb24gaG9zdCB3aXRoIGRlbGVnYXRlc0ZvY3Vz
ICYgdGFiaW5kZXg9MCwgI2Fib3ZlU2xvdHMgYW5kICNiZWxvd1Nsb3RzIHdpdGggdGFiaW5kZXg9
MCIpOworCit0ZXN0KCgpID0+IHsKKyAgcmVzZXRUYWJJbmRleEFuZEZvY3VzKCk7CisgIHNldFRh
YkluZGV4KFtob3N0LCBhYm92ZVNsb3RzXSwgMCk7CisgIHNldFRhYkluZGV4KFtiZWxvd1Nsb3Rz
XSwgMSk7CisgIC8vIFN0cnVjdHVyZToKKyAgLy8gPGRpdiAjaG9zdD4gKGRlbGVnYXRlc0ZvY3Vz
PXRydWUpIHRhYmluZGV4PTAKKyAgLy8gICAgI3NoYWRvd1Jvb3QKKyAgLy8gICAgICA8ZGl2ICNh
Ym92ZVNsb3RzPiB0YWJpbmRleD0wCisgIC8vICAgICAgPHNsb3QgI2ZpcnN0U2xvdD4KKyAgLy8g
ICAgICAgIChzbG90dGVkKSA8ZGl2ICNzbG90dGVkVG9GaXJzdFNsb3Q+CisgIC8vICAgICAgPHNs
b3QgI3NlY29uZFNsb3Q+CisgIC8vICAgICAgICAoc2xvdHRlZCkgPGRpdiAjc2xvdHRlZFRvU2Vj
b25kU2xvdD4KKyAgLy8gICAgICA8ZGl2ICNiZWxvd1Nsb3RzPiB0YWJpbmRleD0xCisgIC8vIDxk
aXYgI291dHNpZGU+CisgIC8vIEZpcnN0IGZvY3VzYWJsZSA9ICNhYm92ZVNsb3RzCisgIGhvc3Qu
Zm9jdXMoKTsKKyAgYXNzZXJ0X2VxdWFscyhzaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQsIGFib3Zl
U2xvdHMpOworICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQsIGhvc3QpOwor
fSwgImZvY3VzKCkgb24gaG9zdCB3aXRoIGRlbGVnYXRlc0ZvY3VzICYgdGFiaW5kZXg9MCwgI2Fi
b3ZlU2xvdHMgd2l0aCB0YWJpbmRleD0wIGFuZCAjYmVsb3dTbG90cyB3aXRoIHRhYmluZGV4PTEi
KTsKKyAgCit0ZXN0KCgpID0+IHsKKyAgcmVzZXRUYWJJbmRleEFuZEZvY3VzKCk7CisgIHNldFRh
YkluZGV4KFtob3N0LCBzbG90dGVkVG9GaXJzdFNsb3QsIHNsb3R0ZWRUb1NlY29uZFNsb3QsIGJl
bG93U2xvdHNdLCAwKTsKKyAgLy8gU3RydWN0dXJlOgorICAvLyA8ZGl2ICNob3N0PiAoZGVsZWdh
dGVzRm9jdXM9dHJ1ZSkgdGFiaW5kZXg9MAorICAvLyAgICAjc2hhZG93Um9vdAorICAvLyAgICAg
IDxkaXYgI2Fib3ZlU2xvdHM+CisgIC8vICAgICAgPHNsb3QgI2ZpcnN0U2xvdD4KKyAgLy8gICAg
ICAgIChzbG90dGVkKSA8ZGl2ICNzbG90dGVkVG9GaXJzdFNsb3Q+IHRhYmluZGV4PTAKKyAgLy8g
ICAgICA8c2xvdCAjc2Vjb25kU2xvdD4KKyAgLy8gICAgICAgIChzbG90dGVkKSA8ZGl2ICNzbG90
dGVkVG9TZWNvbmRTbG90PiB0YWJpbmRleD0wCisgIC8vICAgICAgPGRpdiAjYmVsb3dTbG90cz4g
dGFiaW5kZXg9MAorICAvLyA8ZGl2ICNvdXRzaWRlPgorICAvLyBGaXJzdCBmb2N1c2FibGUgPSAj
c2xvdHRlZFRvRmlyc3RTbG90CisgIGhvc3QuZm9jdXMoKTsKKyAgYXNzZXJ0X2VxdWFscyhzaGFk
b3dSb290LmFjdGl2ZUVsZW1lbnQsIG51bGwpOworICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmFj
dGl2ZUVsZW1lbnQsIHNsb3R0ZWRUb0ZpcnN0U2xvdCk7Cit9LCAiZm9jdXMoKSBvbiBob3N0IHdp
dGggZGVsZWdhdGVzRm9jdXMgJiB0YWJpbmRleD0wLCAjc2xvdHRlZFRvRmlyc3RTbG90LCAjc2xv
dHRlZFRvU2Vjb25kU2xvdCwgI2JlbG93U2xvdHMgIHdpdGggdGFiaW5kZXg9MCIpOworCis8L3Nj
cmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c2hhZG93LWRvbS9mb2N1cy9mb2N1cy10YWJpbmRleC1vcmRlci1zaGFkb3ctbmVnYXRpdmUtZGVs
ZWdhdGVzRm9jdXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2hhZG93LWRvbS9mb2N1cy9mb2N1cy10YWJpbmRl
eC1vcmRlci1zaGFkb3ctbmVnYXRpdmUtZGVsZWdhdGVzRm9jdXMtZXhwZWN0ZWQudHh0CShub25l
eGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c2hhZG93LWRvbS9mb2N1cy9mb2N1cy10YWJpbmRleC1vcmRlci1zaGFkb3ctbmVnYXRpdmUtZGVs
ZWdhdGVzRm9jdXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNyBAQAor
YWJvdmVIb3N0CitzbG90dGVkIGJlbG93CitzbG90dGVkIGFib3ZlCitiZWxvd0hvc3QKKworUEFT
UyBPcmRlciB3aGVuIGFsbCB0YWJpbmRleD0tMSBpcyBhbmQgZGVsZWdhdGVzRm9jdXMgPSB0cnVl
IAorCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3No
YWRvdy1kb20vZm9jdXMvZm9jdXMtdGFiaW5kZXgtb3JkZXItc2hhZG93LW5lZ2F0aXZlLWRlbGVn
YXRlc0ZvY3VzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zaGFkb3ctZG9tL2ZvY3VzL2ZvY3VzLXRhYmluZGV4LW9yZGVyLXNo
YWRvdy1uZWdhdGl2ZS1kZWxlZ2F0ZXNGb2N1cy5odG1sCShub25leGlzdGVudCkKKysrIExheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2hhZG93LWRvbS9mb2N1cy9m
b2N1cy10YWJpbmRleC1vcmRlci1zaGFkb3ctbmVnYXRpdmUtZGVsZWdhdGVzRm9jdXMuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5IVE1MIFRlc3Q6IGZvY3VzIC0gdGhlIHNlcXVlbnRpYWwg
Zm9jdXMgbmF2aWdhdGlvbiBvcmRlciB3aXRoIHNoYWRvdyBkb20gdGhhdCBkZWxlZ2F0ZXMgZm9j
dXMgYW5kIGFsbCB0YWJpbmRleD0tMSBpbiBzaGFkb3cgdHJlZTwvdGl0bGU+Cis8bGluayByZWw9
ImhlbHAiIGhyZWY9Imh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2ludGVy
YWN0aW9uLmh0bWwjc2VxdWVudGlhbC1mb2N1cy1uYXZpZ2F0aW9uIj4KKzxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3Rkcml2ZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGRyaXZlci12ZW5kb3IuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFk
b3ctdXRpbHMuanMiPjwvc2NyaXB0PgorPGJvZHk+Cis8c2NyaXB0PgorLy8gU3RydWN0dXJlOgor
Ly8gPGRpdiAjYWJvdmVIb3N0IHRhYmluZGV4PTA+CisvLyA8ZGl2ICNob3N0IHRhYmluZGV4PTA+
CisvLyAgICAjc2hhZG93Um9vdCAoZGVsZWdhdGVzRm9jdXMpCisvLyAgICAgIDxkaXYgI2Fib3Zl
U2xvdCB0YWJpbmRleD0tMT4KKy8vICAgICAgPHNsb3QgI3Nsb3RBYm92ZSB0YWJpbmRleD0tMT4K
Ky8vICAgICAgICAoc2xvdHRlZCkgPGRpdiAjc2xvdHRlZEFib3ZlIHRhYmluZGV4PS0xPgorLy8g
ICAgICA8c2xvdCAjc2xvdEJlbG93IHRhYmluZGV4PS0xPgorLy8gICAgICAgIChzbG90dGVkKSA8
ZGl2ICNzbG90dGVkQmVsb3cgdGFiaW5kZXg9LTE+CisvLyAgICAgIDxkaXYgI2JlbG93U2xvdCB0
YWJpbmRleD0tMT4KKy8vIDxkaXYgI2JlbG93SG9zdCB0YWJpbmRleD0wPgorCitwcm9taXNlX3Rl
c3QoKCkgPT4geworICBsZXQgZWxlbWVudHNJbkZsYXRUcmVlT3JkZXI7CisgIGxldCBbYWJvdmVI
b3N0LCBob3N0LCBhYm92ZVNsb3QsIHNsb3RBYm92ZSwgc2xvdHRlZEFib3ZlLCBzbG90QmVsb3cs
IHNsb3R0ZWRCZWxvdywgYmVsb3dTbG90LCBiZWxvd0hvc3RdID0gZWxlbWVudHNJbkZsYXRUcmVl
T3JkZXIgPSBwcmVwYXJlRE9NKGRvY3VtZW50LmJvZHksIHRydWUpOworICBzZXRUYWJJbmRleChl
bGVtZW50c0luRmxhdFRyZWVPcmRlciwgLTEpOworICBzZXRUYWJJbmRleChbYWJvdmVIb3N0LCBo
b3N0LCBiZWxvd0hvc3RdLCAwKTsKKyAgcmVzZXRGb2N1cygpOworICAvLyBGb2N1cyBzaG91bGQg
b25seSBsYW5kIG9uICNhYm92ZUhvc3QgYW5kICNiZWxvd0hvc3QgKGFsbCBvdGhlcnMgYXJlIG5v
bi1zZXF1ZW50aWFsbHkgZm9jdXNhYmxlKS4KKyAgcmV0dXJuIGFzc2VydEZvY3VzT3JkZXIoW2Fi
b3ZlSG9zdCwgYmVsb3dIb3N0XSk7Cit9LCAiT3JkZXIgd2hlbiBhbGwgdGFiaW5kZXg9LTEgaXMg
YW5kIGRlbGVnYXRlc0ZvY3VzID0gdHJ1ZSIpOworPC9zY3JpcHQ+Cis8L2JvZHk+CkluZGV4OiBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NoYWRvdy1kb20vZm9j
dXMvZm9jdXMtdGFiaW5kZXgtb3JkZXItc2hhZG93LXZhcnlpbmctZGVsZWdhdGVzRm9jdXMtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc2hhZG93LWRvbS9mb2N1cy9mb2N1cy10YWJpbmRleC1vcmRlci1zaGFkb3ct
dmFyeWluZy1kZWxlZ2F0ZXNGb2N1cy1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zaGFkb3ctZG9tL2ZvY3Vz
L2ZvY3VzLXRhYmluZGV4LW9yZGVyLXNoYWRvdy12YXJ5aW5nLWRlbGVnYXRlc0ZvY3VzLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcgQEAKK2Fib3ZlSG9zdAorc2xvdHRl
ZCBiZWxvdworc2xvdHRlZCBhYm92ZQorYmVsb3dIb3N0CisKK1BBU1MgT3JkZXIgd2hlbiB0YWJp
bmRleCB2YXJpZXMgYW5kIGRlbGVnYXRlc0ZvY3VzID0gdHJ1ZSAKKwpJbmRleDogTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zaGFkb3ctZG9tL2ZvY3VzL2ZvY3Vz
LXRhYmluZGV4LW9yZGVyLXNoYWRvdy12YXJ5aW5nLWRlbGVnYXRlc0ZvY3VzLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zaGFk
b3ctZG9tL2ZvY3VzL2ZvY3VzLXRhYmluZGV4LW9yZGVyLXNoYWRvdy12YXJ5aW5nLWRlbGVnYXRl
c0ZvY3VzLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zaGFkb3ctZG9tL2ZvY3VzL2ZvY3VzLXRhYmluZGV4LW9yZGVyLXNo
YWRvdy12YXJ5aW5nLWRlbGVnYXRlc0ZvY3VzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwzNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+
SFRNTCBUZXN0OiBmb2N1cyAtIHRoZSBzZXF1ZW50aWFsIGZvY3VzIG5hdmlnYXRpb24gb3JkZXIg
d2l0aCBzaGFkb3cgZG9tIHRoYXQgZGVsZWdhdGVzIGZvY3VzIGFuZCB0YWJpbmRleCBpbiBzaGFk
b3cgdHJlZSB2YXJpZXM8L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2h0
bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9pbnRlcmFjdGlvbi5odG1sI3NlcXVlbnRpYWwt
Zm9jdXMtbmF2aWdhdGlvbiI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0ZHJpdmVyLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Rkcml2ZXItdmVuZG9yLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZG93LXV0aWxzLmpzIj48L3NjcmlwdD4K
Kzxib2R5PgorPHNjcmlwdD4KKy8vIFN0cnVjdHVyZToKKy8vIDxkaXYgI2Fib3ZlSG9zdCB0YWJp
bmRleD0wPgorLy8gPGRpdiAjaG9zdCB0YWJpbmRleD0wPgorLy8gICAgI3NoYWRvd1Jvb3QgKGRl
bGVnYXRlc0ZvY3VzKQorLy8gICAgICA8ZGl2ICNhYm92ZVNsb3QgdGFiaW5kZXg9MD4KKy8vICAg
ICAgPHNsb3QgI3Nsb3RBYm92ZSB0YWJpbmRleD0xPgorLy8gICAgICAgIChzbG90dGVkKSA8ZGl2
ICNzbG90dGVkQWJvdmUgdGFiaW5kZXg9Mz4KKy8vICAgICAgPHNsb3QgI3Nsb3RCZWxvdyB0YWJp
bmRleD0yPgorLy8gICAgICAgIChzbG90dGVkKSA8ZGl2ICNzbG90dGVkQmVsb3cgdGFiaW5kZXg9
MT4KKy8vICAgICAgPGRpdiAjYmVsb3dTbG90IHRhYmluZGV4PS0xPgorLy8gPGRpdiAjYmVsb3dI
b3N0IHRhYmluZGV4PTA+CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCBlbGVtZW50c0lu
RmxhdFRyZWVPcmRlcjsKKyAgbGV0IFthYm92ZUhvc3QsIGhvc3QsIGFib3ZlU2xvdCwgc2xvdEFi
b3ZlLCBzbG90dGVkQWJvdmUsIHNsb3RCZWxvdywgc2xvdHRlZEJlbG93LCBiZWxvd1Nsb3QsIGJl
bG93SG9zdF0gPSBlbGVtZW50c0luRmxhdFRyZWVPcmRlciA9IHByZXBhcmVET00oZG9jdW1lbnQu
Ym9keSwgdHJ1ZSk7CisgIHNldFRhYkluZGV4KGVsZW1lbnRzSW5GbGF0VHJlZU9yZGVyLCAtMSk7
CisgIHNldFRhYkluZGV4KFthYm92ZUhvc3QsIGhvc3QsIGFib3ZlU2xvdCwgYmVsb3dIb3N0XSwg
MCk7CisgIHNldFRhYkluZGV4KFtzbG90QWJvdmUsIHNsb3R0ZWRCZWxvd10sIDEpOworICBzZXRU
YWJJbmRleChbc2xvdEJlbG93XSwgMik7CisgIHNldFRhYkluZGV4KFtzbG90dGVkQWJvdmVdLCAz
KTsKKyAgcmVzZXRGb2N1cygpOworICByZXR1cm4gYXNzZXJ0Rm9jdXNPcmRlcihbYWJvdmVIb3N0
LCBzbG90dGVkQWJvdmUsIHNsb3R0ZWRCZWxvdywgYWJvdmVTbG90LCBiZWxvd0hvc3RdKTsKK30s
ICJPcmRlciB3aGVuIHRhYmluZGV4IHZhcmllcyBhbmQgZGVsZWdhdGVzRm9jdXMgPSB0cnVlIik7
Cis8L3NjcmlwdD4KKzwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc2hhZG93LWRvbS9mb2N1cy9mb2N1cy10YWJpbmRleC1vcmRlci1zaGFk
b3ctemVyby1kZWxlZ2F0ZXNGb2N1cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zaGFkb3ctZG9tL2ZvY3VzL2Zv
Y3VzLXRhYmluZGV4LW9yZGVyLXNoYWRvdy16ZXJvLWRlbGVnYXRlc0ZvY3VzLWV4cGVjdGVkLnR4
dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3NoYWRvdy1kb20vZm9jdXMvZm9jdXMtdGFiaW5kZXgtb3JkZXItc2hhZG93LXplcm8t
ZGVsZWdhdGVzRm9jdXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNyBA
QAorYWJvdmVIb3N0CitzbG90dGVkIGJlbG93CitzbG90dGVkIGFib3ZlCitiZWxvd0hvc3QKKwor
UEFTUyBPcmRlciB3aGVuIGFsbCB0YWJpbmRleD0wIGlzIGFuZCBkZWxlZ2F0ZXNGb2N1cyA9IHRy
dWUgCisKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c2hhZG93LWRvbS9mb2N1cy9mb2N1cy10YWJpbmRleC1vcmRlci1zaGFkb3ctemVyby1kZWxlZ2F0
ZXNGb2N1cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc2hhZG93LWRvbS9mb2N1cy9mb2N1cy10YWJpbmRleC1vcmRlci1zaGFk
b3ctemVyby1kZWxlZ2F0ZXNGb2N1cy5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2hhZG93LWRvbS9mb2N1cy9mb2N1cy10
YWJpbmRleC1vcmRlci1zaGFkb3ctemVyby1kZWxlZ2F0ZXNGb2N1cy5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMzQgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPHRpdGxlPkhUTUwgVGVzdDogZm9jdXMgLSB0aGUgc2VxdWVudGlhbCBmb2N1cyBuYXZp
Z2F0aW9uIG9yZGVyIHdpdGggc2hhZG93IGRvbSB0aGF0IGRlbGVnYXRlcyBmb2N1cyBhbmQgYWxs
IHRhYmluZGV4PTA8L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2h0bWwu
c3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9pbnRlcmFjdGlvbi5odG1sI3NlcXVlbnRpYWwtZm9j
dXMtbmF2aWdhdGlvbiI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0ZHJpdmVyLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Rkcml2ZXItdmVuZG9yLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZG93LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxi
b2R5PgorPHNjcmlwdD4KKy8vIFN0cnVjdHVyZToKKy8vIDxkaXYgI2Fib3ZlSG9zdCB0YWJpbmRl
eD0wPgorLy8gPGRpdiAjaG9zdCB0YWJpbmRleD0wPgorLy8gICAgI3NoYWRvd1Jvb3QgKGRlbGVn
YXRlc0ZvY3VzKQorLy8gICAgICA8ZGl2ICNhYm92ZVNsb3QgdGFiaW5kZXg9MD4KKy8vICAgICAg
PHNsb3QgI3Nsb3RBYm92ZSB0YWJpbmRleD0wPgorLy8gICAgICAgIChzbG90dGVkKSA8ZGl2ICNz
bG90dGVkQWJvdmUgdGFiaW5kZXg9MD4KKy8vICAgICAgPHNsb3QgI3Nsb3RCZWxvdyB0YWJpbmRl
eD0wPgorLy8gICAgICAgIChzbG90dGVkKSA8ZGl2ICNzbG90dGVkQmVsb3cgdGFiaW5kZXg9MD4K
Ky8vICAgICAgPGRpdiAjYmVsb3dTbG90IHRhYmluZGV4PTA+CisvLyA8ZGl2ICNiZWxvd0hvc3Qg
dGFiaW5kZXg9MD4KKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IGVsZW1lbnRzSW5GbGF0
VHJlZU9yZGVyOworICBsZXQgW2Fib3ZlSG9zdCwgaG9zdCwgYWJvdmVTbG90LCBzbG90QWJvdmUs
IHNsb3R0ZWRBYm92ZSwgc2xvdEJlbG93LCBzbG90dGVkQmVsb3csIGJlbG93U2xvdCwgYmVsb3dI
b3N0XSA9IGVsZW1lbnRzSW5GbGF0VHJlZU9yZGVyID0gcHJlcGFyZURPTShkb2N1bWVudC5ib2R5
LCB0cnVlKTsKKyAgc2V0VGFiSW5kZXgoZWxlbWVudHNJbkZsYXRUcmVlT3JkZXIsIDApOworICBy
ZXNldEZvY3VzKCk7CisgIC8vIEZvY3VzIHNob3VsZCBtb3ZlIGluIGZsYXQgdHJlZSBvcmRlciBz
aW5jZSBldmVyeSBvbmUgb2YgdGhlbSBoYXMgdGFiaW5kZXggPT0wLAorICAvLyBidXQgZG9lc24n
dCBpbmNsdWRlIHNsb3RzIGFuZCAjaG9zdC4KKyAgcmV0dXJuIGFzc2VydEZvY3VzT3JkZXIoW2Fi
b3ZlSG9zdCwgYWJvdmVTbG90LCBzbG90dGVkQWJvdmUsIHNsb3R0ZWRCZWxvdywgYmVsb3dTbG90
LCBiZWxvd0hvc3RdKTsKK30sICJPcmRlciB3aGVuIGFsbCB0YWJpbmRleD0wIGlzIGFuZCBkZWxl
Z2F0ZXNGb2N1cyA9IHRydWUiKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgo=
</data>
<flag name="review"
          id="396572"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>